Exemplo n.º 1
0
auto R65816::op_write_addrr_w(Reg16& reg, Reg16& idx) {
  aa.l = readPC();
  aa.h = readPC();
  idle();
  writeDB(aa.w + idx + 0, reg >> 0);
L writeDB(aa.w + idx + 1, reg >> 8);
}
Exemplo n.º 2
0
auto R65816::op_write_longr_w(Reg16& idx) {
  aa.l = readPC();
  aa.h = readPC();
  aa.b = readPC();
  writeLong(aa.d + idx + 0, r.a.l);
L writeLong(aa.d + idx + 1, r.a.h);
}
Exemplo n.º 3
0
auto R65816::op_jmp_iaddr() {
  aa.l = readPC();
  aa.h = readPC();
  rd.l = readAddr(aa.w + 0);
L rd.h = readAddr(aa.w + 1);
  r.pc.w = rd.w;
}
Exemplo n.º 4
0
auto R65816::op_jmp_iaddrx() {
  aa.l = readPC();
  aa.h = readPC();
  idle();
  rd.l = readPB(aa.w + r.x.w + 0);
L rd.h = readPB(aa.w + r.x.w + 1);
  r.pc.w = rd.w;
}
Exemplo n.º 5
0
auto R65816::op_jmp_iladdr() {
  aa.l = readPC();
  aa.h = readPC();
  rd.l = readAddr(aa.w + 0);
  rd.h = readAddr(aa.w + 1);
L rd.b = readAddr(aa.w + 2);
  r.pc.d = rd.d;
}
Exemplo n.º 6
0
auto R65816::op_jsr_addr() {
  aa.l = readPC();
  aa.h = readPC();
  idle();
  r.pc.w--;
  writeSP(r.pc.h);
L writeSP(r.pc.l);
  r.pc.w = aa.w;
}
Exemplo n.º 7
0
auto R65816::op_branch(bool flag, bool value) {
  if(flag != value) {
L   rd.l = readPC();
  } else {
    rd.l = readPC();
    aa.w = r.pc.d + (int8)rd.l;
    idle6(aa.w);
L   idle();
    r.pc.w = aa.w;
  }
}
Exemplo n.º 8
0
auto R65816::op_jsr_iaddrx() {
  aa.l = readPC();
  writeSPn(r.pc.h);
  writeSPn(r.pc.l);
  aa.h = readPC();
  idle();
  rd.l = readPB(aa.w + r.x.w + 0);
L rd.h = readPB(aa.w + r.x.w + 1);
  r.pc.w = rd.w;
E r.s.h = 0x01;
}
Exemplo n.º 9
0
auto R65816::op_jsr_long() {
  aa.l = readPC();
  aa.h = readPC();
  writeSPn(r.pc.b);
  idle();
  aa.b = readPC();
  r.pc.w--;
  writeSPn(r.pc.h);
L writeSPn(r.pc.l);
  r.pc.d = aa.d;
E r.s.h = 0x01;
}
Exemplo n.º 10
0
auto R65816::op_sta_idp_b() {
  dp = readPC();
  idle2();
  aa.l = readDP(dp + 0);
  aa.h = readDP(dp + 1);
L writeDB(aa.w, r.a.l);
}
Exemplo n.º 11
0
auto R65816::op_write_dpr_w(Reg16& reg, Reg16& idx) {
  dp = readPC();
  idle2();
  idle();
  writeDP(dp + idx + 0, reg >> 0);
L writeDP(dp + idx + 1, reg >> 8);
}
Exemplo n.º 12
0
auto R65816::op_bra() {
  rd.l = readPC();
  aa.w = r.pc.d + (int8)rd.l;
  idle6(aa.w);
L idle();
  r.pc.w = aa.w;
}
Exemplo n.º 13
0
auto R65816::op_sta_isry_b() {
  sp = readPC();
  idle();
  aa.l = readSP(sp + 0);
  aa.h = readSP(sp + 1);
  idle();
L writeDB(aa.w + r.y.w, r.a.l);
}
Exemplo n.º 14
0
auto R65816::op_sta_ildp_b() {
  dp = readPC();
  idle2();
  aa.l = readDPn(dp + 0);
  aa.h = readDPn(dp + 1);
  aa.b = readDPn(dp + 2);
L writeLong(aa.d, r.a.l);
}
Exemplo n.º 15
0
auto R65816::op_sta_ildpy_w() {
  dp = readPC();
  idle2();
  aa.l = readDPn(dp + 0);
  aa.h = readDPn(dp + 1);
  aa.b = readDPn(dp + 2);
  writeLong(aa.d + r.y.w + 0, r.a.l);
L writeLong(aa.d + r.y.w + 1, r.a.h);
}
Exemplo n.º 16
0
auto R65816::op_sta_idpy_w() {
  dp = readPC();
  idle2();
  aa.l = readDP(dp + 0);
  aa.h = readDP(dp + 1);
  idle();
  writeDB(aa.w + r.y.w + 0, r.a.l);
L writeDB(aa.w + r.y.w + 1, r.a.h);
}
Exemplo n.º 17
0
auto R65816::op_sta_sr_b() {
  sp = readPC();
  idle();
L writeSP(sp, r.a.l);
}
Exemplo n.º 18
0
auto R65816::op_sta_sr_w() {
  sp = readPC();
  idle();
  writeSP(sp + 0, r.a.l);
L writeSP(sp + 1, r.a.h);
}
Exemplo n.º 19
0
auto R65816::op_jmp_long() {
  rd.l = readPC();
  rd.h = readPC();
L rd.b = readPC();
  r.pc.d = rd.d;
}
Exemplo n.º 20
0
auto R65816::op_jmp_addr() {
  rd.l = readPC();
L rd.h = readPC();
  r.pc.w = rd.w;
}
Exemplo n.º 21
0
auto R65816::op_write_dpr_b(Reg16& reg, Reg16& idx) {
  dp = readPC();
  idle2();
  idle();
L writeDP(dp + idx, reg);
}
Exemplo n.º 22
0
auto R65816::op_write_dp_b(Reg16& reg) {
  dp = readPC();
  idle2();
L writeDP(dp, reg);
}
Exemplo n.º 23
0
void updateView(WINDOW * win){
	int i;
	int temp = 0;
	int x,y;

	y=START_Y;
	x=START_X+1;

	// print axis row
	for(i=0; i<16; i++){
		mvwprintw(win,y,x,"%X", temp++);
		x+=3;
	}
	temp = 0;
	x = START_X-2;
	y=START_Y+1;

	// print axis col
	for(i=0; i<16; i++){
		mvwprintw(win,y,x,"%X", temp++);
		y++;
	}
	y = START_Y;
	
	// Print memory
	for(i=0; i<256; i++){
		if(i%16==0){
			y++;
			x=START_X;
		}	
		if(highlight[section] == i && section == SECTION_MEMORY){
			wattron(win, A_REVERSE); 
			mvwprintw(win,y,x,"%.2X", readMemoryAt(m,i));
			wattroff(win, A_REVERSE);
		}else{
			mvwprintw(win,y,x,"%.2X", readMemoryAt(m,i));
		}
		x+=3;
	}

	// Print Registers
	x = START_X;
	y+=2;
	for(i=0; i<16; i++){
		mvwprintw(win,y,x,"R%X",i );
		x+= 3;
	}
	x = START_X;
	y++;
	for(i=0; i<16; i++){
		if(highlight[section] == i && section == SECTION_REGISTERS){
			wattron(win, A_REVERSE); 
			mvwprintw(win,y,x,"%.2X", readRegistersAt(m,i));
			wattroff(win, A_REVERSE); 
		}else{
			mvwprintw(win,y,x,"%.2X", readRegistersAt(m,i));
		}
		x+= 3;
	}
	x = START_X;
	y += 2;
	// print pc and ic
	mvwprintw(win,y,x,"PC : ");
	if(section == SECTION_PC){
		wattron(win, A_REVERSE); 
		mvwprintw(win,y,x+5,"%.2X", readPC(m));
		wattroff(win, A_REVERSE); 
	}else{
		mvwprintw(win,y,x+5,"%.2X", readPC(m));
	}
	
	x+= 12;
	mvwprintw(win,y,x,"IR : %.4X", readIR(m));
	x+= 20;
	mvwprintw(win,y,x,"STATUS : ");

	if(getStatus(m) == NORMAL){
		mvwprintw(win,y,x+9,"NORMAL");
	}else if(getStatus(m) == HALTED){
		mvwprintw(win,y,x+9,"HALTED");
	}
	else if(getStatus(m) == ERROR){
		mvwprintw(win,y,x+9,"ERROR ");
	}
	wrefresh(win);
}
Exemplo n.º 24
0
auto R65816::op_write_addrr_b(Reg16& reg, Reg16& idx) {
  aa.l = readPC();
  aa.h = readPC();
  idle();
L writeDB(aa.w + idx, reg);
}
Exemplo n.º 25
0
auto R65816::op_write_addr_w(Reg16& reg) {
  aa.l = readPC();
  aa.h = readPC();
  writeDB(aa.w + 0, reg >> 0);
L writeDB(aa.w + 1, reg >> 8);
}
Exemplo n.º 26
0
auto R65816::op_brl() {
  rd.l = readPC();
  rd.h = readPC();
L idle();
  r.pc.w = r.pc.d + (int16)rd.w;
}
Exemplo n.º 27
0
auto R65816::op_write_addr_b(Reg16& reg) {
  aa.l = readPC();
  aa.h = readPC();
L writeDB(aa.w, reg);
}
Exemplo n.º 28
0
auto R65816::op_write_dp_w(Reg16& reg) {
  dp = readPC();
  idle2();
  writeDP(dp + 0, reg >> 0);
L writeDP(dp + 1, reg >> 8);
}