示例#1
0
void monitor_print_mem(int mem_index, int rows, int cols){
   int i,j;
  int pc = pc2int();
  clear();//move(0,0);

  mon_print_opcodeinfo0();
  mon_print_registers();
  mon_print_src_line(pc);
	
  printw("\n     ");
  for(i=0;i<cols;i++){
	printw("%02x ",(mem_index+i)%256);
  }
  i=0;
  for(j=0; j<rows; ++j) {
    printw("\n%04x ",	mem_index +j*cols);
    for(i=0; i<cols; ++i) {
	  if(pc==mem_index+ j*cols+i){
		printw("%02x ",conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
		//print_color(conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
	  //printf(RED "%02x " RESET ,conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
	  } else {
		printw("%02x ",conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
		//		mvprintw(0,0,"%02x",conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
		
		//print_color(conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
		//		printf("%02x ",	conv_bitstr2int(memory[mem_index + j*cols+i],0,7));
	  }
    }
  }
  printw("\n");
  doupdate();
  refresh();
}
示例#2
0
文件: parser.c 项目: monkeyinabox/cpu
//   ######## ##     ## ########  ###### 
//   ##        ##   ##  ##       ##    ##
//   ##         ## ##   ##       ##      
//   ######      ###    ######   ##      
//   ##         ## ##   ##       ##      
//   ##        ##   ##  ##       ##    ##
//   ######## ##     ## ########  ###### 
//  cp value into mem[pc] and exec
int execute_cmd(struct _6510_cpu* cpu, char memory[][9], char* string){
  int op, lb, hb;
  int pc=pc2int(cpu);
  sscanf(string, "x %2x %2x %2x", &op, &lb, &hb);
  int2register(op, (char*)&(memory[pc]));
  int2register(lb, (char*)&(memory[pc+1]));
  int2register(hb, (char*)&memory[pc+2]);  
  fetch(cpu, memory);
  exec(cpu, memory);
  print_cpu_dis(cpu,memory);
  return 1;  
}
示例#3
0
文件: parser.c 项目: monkeyinabox/cpu
int until_cmd(struct _6510_cpu* cpu, char memory[][9], char* string){
  int adr;
  //  char* buffer;
  sscanf(string, " %*s %4x ", &adr);
  if( !(adr>MEMORY_SIZE || adr < 0) ){
    while(adr!=pc2int(cpu)){
      fetch(cpu, memory);
      exec(cpu, memory);
      print_cpu_dis(cpu,memory);
    }
  }
  return 1;
}
示例#4
0
文件: vm_func.c 项目: Albatroce/epita
static void	read_mem_value(t_vm *vm, t_proc *proc)
{
  int		pc;

  pc = pc2int(proc->pc) % vm->size;
  if ((pc % 2) == (proc->rw->cur_pos % 2))
    proc->rw->inst[proc->rw->cur_pos / 2] |=
      proc->rw->cur_pos % 2 ?
      vm->mem[pc / 2] & 0x0f :
      vm->mem[pc / 2] & 0xf0;
  else
    proc->rw->inst[proc->rw->cur_pos / 2] |=
      proc->rw->cur_pos % 2 ?
      (vm->mem[pc / 2] & 0xf0) >> 4 :
      (vm->mem[pc / 2] & 0x0f) << 4;
}
示例#5
0
文件: func2.c 项目: Albatroce/epita
static void	my_store(t_func_arg *arg)
{
  int		pos;
  char		qrt;

  qrt = arg->proc->wbuf->buf[arg->proc->wbuf->place / 2];
  if (arg->proc->wbuf->place % 2)
    qrt <<= 4;
  pos = (pc2int(arg->proc->pc) +
	 neg_mod(reg2int(arg->proc->reg[arg->rx - 1]) + 3 -
		 arg->proc->wbuf->place, IDX_MOD));
  while (pos < 0)
    pos += arg->vm->size;
  pos %= arg->vm->size;
  add_write(pos, qrt, arg);
  (arg->proc->wbuf->place)--;
  if (arg->proc->wbuf->place < 3 - arg->proc->p)
    {
      arg->proc->wbuf->place = -1;
      arg->proc->cur_work = WAIT_AFTER;
      arg->proc->rw->delay = 0;
    }
}
示例#6
0
void print_cpu_dis(struct _6510_cpu* cpu, char memory[][9] ) {
  char dis_txt[] = "                                                                   \n";
  int pc = pc2int(cpu);
  //dis(cpu, (char*)memory[pc], dis_txt);
  dis(cpu, memory+pc, dis_txt);

  printf("AC XR YR SP NV-BDIZC         \n");
  printf("%02x %02x %02x %02x %c%c%c%c%c%c%c%c %s\n",
	 conv_bitstr2int(cpu->rega,0,7),
	 conv_bitstr2int(cpu->regx,0,7),
	 conv_bitstr2int(cpu->regy,0,7),
	 conv_bitstr2int(cpu->sp,0,7),

	 cpu->flags[NFLAG],
	 cpu->flags[OFLAG],
	 '-',
	 cpu->flags[BFLAG],
	 cpu->flags[DFLAG],
	 cpu->flags[IFLAG],
	 cpu->flags[ZFLAG],
    cpu->flags[CFLAG],
	 dis_txt 
	 );
}