Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void fz(int i, int as) { r_f=0; if(!(i&255)) r_f|=128; r_f|=as?0x40:0; };
- void LDrr_bb() { r_b=r_b; r_m=1; r_t=4; };
- void LDrr_bc() { r_b=r_c; r_m=1; r_t=4; };
- void LDrr_bd() { r_b=r_d; r_m=1; r_t=4; };
- void LDrr_be() { r_b=r_e; r_m=1; r_t=4; };
- void LDrr_bh() { r_b=r_h; r_m=1; r_t=4; };
- void LDrr_bl() { r_b=r_l; r_m=1; r_t=4; };
- void LDrr_ba() { r_b=r_a; r_m=1; r_t=4; };
- void LDrr_cb() { r_c=r_b; r_m=1; r_t=4; };
- void LDrr_cc() { r_c=r_c; r_m=1; r_t=4; };
- void LDrr_cd() { r_c=r_d; r_m=1; r_t=4; };
- void LDrr_ce() { r_c=r_e; r_m=1; r_t=4; };
- void LDrr_ch() { r_c=r_h; r_m=1; r_t=4; };
- void LDrr_cl() { r_c=r_l; r_m=1; r_t=4; };
- void LDrr_ca() { r_c=r_a; r_m=1; r_t=4; };
- void LDrr_db() { r_d=r_b; r_m=1; r_t=4; };
- void LDrr_dc() { r_d=r_c; r_m=1; r_t=4; };
- void LDrr_dd() { r_d=r_d; r_m=1; r_t=4; };
- void LDrr_de() { r_d=r_e; r_m=1; r_t=4; };
- void LDrr_dh() { r_d=r_h; r_m=1; r_t=4; };
- void LDrr_dl() { r_d=r_l; r_m=1; r_t=4; };
- void LDrr_da() { r_d=r_a; r_m=1; r_t=4; };
- void LDrr_eb() { r_e=r_b; r_m=1; r_t=4; };
- void LDrr_ec() { r_e=r_c; r_m=1; r_t=4; };
- void LDrr_ed() { r_e=r_d; r_m=1; r_t=4; };
- void LDrr_ee() { r_e=r_e; r_m=1; r_t=4; };
- void LDrr_eh() { r_e=r_h; r_m=1; r_t=4; };
- void LDrr_el() { r_e=r_l; r_m=1; r_t=4; };
- void LDrr_ea() { r_e=r_a; r_m=1; r_t=4; };
- void LDrr_hb() { r_h=r_b; r_m=1; r_t=4; };
- void LDrr_hc() { r_h=r_c; r_m=1; r_t=4; };
- void LDrr_hd() { r_h=r_d; r_m=1; r_t=4; };
- void LDrr_he() { r_h=r_e; r_m=1; r_t=4; };
- void LDrr_hh() { r_h=r_h; r_m=1; r_t=4; };
- void LDrr_hl() { r_h=r_l; r_m=1; r_t=4; };
- void LDrr_ha() { r_h=r_a; r_m=1; r_t=4; };
- void LDrr_lb() { r_l=r_b; r_m=1; r_t=4; };
- void LDrr_lc() { r_l=r_c; r_m=1; r_t=4; };
- void LDrr_ld() { r_l=r_d; r_m=1; r_t=4; };
- void LDrr_le() { r_l=r_e; r_m=1; r_t=4; };
- void LDrr_lh() { r_l=r_h; r_m=1; r_t=4; };
- void LDrr_ll() { r_l=r_l; r_m=1; r_t=4; };
- void LDrr_la() { r_l=r_a; r_m=1; r_t=4; };
- void LDrr_ab() { r_a=r_b; r_m=1; r_t=4; };
- void LDrr_ac() { r_a=r_c; r_m=1; r_t=4; };
- void LDrr_ad() { r_a=r_d; r_m=1; r_t=4; };
- void LDrr_ae() { r_a=r_e; r_m=1; r_t=4; };
- void LDrr_ah() { r_a=r_h; r_m=1; r_t=4; };
- void LDrr_al() { r_a=r_l; r_m=1; r_t=4; };
- void LDrr_aa() { r_a=r_a; r_m=1; r_t=4; };
- void LDrHLm_b() { r_b=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_c() { r_c=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_d() { r_d=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_e() { r_e=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_h() { r_h=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_l() { r_l=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDrHLm_a() { r_a=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
- void LDHLmr_b() { MMU_wb((r_h<<8)+r_l,r_b); r_m=2; r_t=8; };
- void LDHLmr_c() { MMU_wb((r_h<<8)+r_l,r_c); r_m=2; r_t=8; };
- void LDHLmr_d() { MMU_wb((r_h<<8)+r_l,r_d); r_m=2; r_t=8; };
- void LDHLmr_e() { MMU_wb((r_h<<8)+r_l,r_e); r_m=2; r_t=8; };
- void LDHLmr_h() { MMU_wb((r_h<<8)+r_l,r_h); r_m=2; r_t=8; };
- void LDHLmr_l() { MMU_wb((r_h<<8)+r_l,r_l); r_m=2; r_t=8; };
- void LDHLmr_a() { MMU_wb((r_h<<8)+r_l,r_a); r_m=2; r_t=8; };
- void LDrn_b() { r_b=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_c() { r_c=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_d() { r_d=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_e() { r_e=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_h() { r_h=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_l() { r_l=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDrn_a() { r_a=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
- void LDHLmn() { MMU_wb((r_h<<8)+r_l, MMU_rb(r_pc)); r_pc++; r_m=3; r_t=12; };
- void LDBCmA() { MMU_wb((r_b<<8)+r_c, r_a); r_m=2; r_t=8; };
- void LDDEmA() { MMU_wb((r_d<<8)+r_e, r_a); r_m=2; r_t=8; };
- void LDmmA() { MMU_wb(MMU_rw(r_pc), r_a); r_pc+=2; r_m=4; r_t=16; };
- void LDmmSP() { MMU_wb(MMU_rw(r_pc), r_sp); r_pc+=2; r_m=4; r_t=16; };
- void LDABCm() { r_a=MMU_rb((r_b<<8)+r_c); r_m=2; r_t=8; };
- void LDADEm() { r_a=MMU_rb((r_d<<8)+r_e); r_m=2; r_t=8; };
- void LDAmm() { r_a=MMU_rb(MMU_rw(r_pc)); r_pc+=2; r_m=4; r_t=16; };
- void LDBCnn() { r_c=MMU_rb(r_pc); r_b=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
- void LDDEnn() { r_e=MMU_rb(r_pc); r_d=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
- void LDHLnn() { r_l=MMU_rb(r_pc); r_h=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
- void LDSPnn() { r_sp=MMU_rw(r_pc); r_pc+=2; r_m=3; r_t=12; };
- void LDHLmm() { int i=MMU_rw(r_pc); r_pc+=2; r_l=MMU_rb(i); r_h=MMU_rb(i+1); r_m=5; r_t=20; };
- void LDmmHL() { int i=MMU_rw(r_pc); r_pc+=2; MMU_ww(i,(r_h<<8)+r_l); r_m=5; r_t=20; };
- void LDHLIA() { MMU_wb((r_h<<8)+r_l, r_a); r_l=(r_l+1)&255; if(!r_l) r_h=(r_h+1)&255; r_m=2; r_t=8; };
- void LDAHLI() { r_a=MMU_rb((r_h<<8)+r_l); r_l=(r_l+1)&255; if(!r_l) r_h=(r_h+1)&255; r_m=2; r_t=8; };
- void LDHLDA() { MMU_wb((r_h<<8)+r_l, r_a); r_l=(r_l-1)&255; if(r_l==255) r_h=(r_h-1)&255; r_m=2; r_t=8; };
- void LDAHLD() { r_a=MMU_rb((r_h<<8)+r_l); r_l=(r_l-1)&255; if(r_l==255) r_h=(r_h-1)&255; r_m=2; r_t=8; };
- void LDAIOn() { r_a=MMU_rb(0xFF00+MMU_rb(r_pc)); r_pc++; r_m=3; r_t=12; };
- void LDIOnA() { MMU_wb(0xFF00+MMU_rb(r_pc),r_a); r_pc++; r_m=3; r_t=12; };
- void LDAIOC() { r_a=MMU_rb(0xFF00+r_c); r_m=2; r_t=8; };
- void LDIOCA() { MMU_wb(0xFF00+r_c,r_a); r_m=2; r_t=8; };
- void LDHLSPn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; i+=r_sp; r_h=(i>>8)&255; r_l=i&255; r_m=3; r_t=12; };
- void SWAPr_b() { int tr=r_b; r_b=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_c() { int tr=r_c; r_c=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_d() { int tr=r_d; r_d=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_e() { int tr=r_e; r_e=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_h() { int tr=r_h; r_h=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_l() { int tr=r_l; r_l=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- void SWAPr_a() { int tr=r_a; r_a=MMU_rb((r_h<<8)+r_l); MMU_wb((r_h<<8)+r_l,tr); r_m=4; r_t=16; };
- /*--- Data processing ---*/
- void ADDr_b() { r_a+=r_b; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_c() { r_a+=r_c; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_d() { r_a+=r_d; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_e() { r_a+=r_e; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_h() { r_a+=r_h; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_l() { r_a+=r_l; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDr_a() { r_a+=r_a; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADDHL() { r_a+=MMU_rb((r_h<<8)+r_l); fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void ADDn() { r_a+=MMU_rb(r_pc); r_pc++; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void ADDHLBC() { r_hl=(r_h<<8)+r_l; r_hl+=(r_b<<8)+r_c; if(r_hl>65535) r_f|=0x10; else r_f&=0xEF; r_h=(r_hl>>8)&255; r_l=r_hl&255; r_m=3; r_t=12; };
- void ADDHLDE() { r_hl=(r_h<<8)+r_l; r_hl+=(r_d<<8)+r_e; if(r_hl>65535) r_f|=0x10; else r_f&=0xEF; r_h=(r_hl>>8)&255; r_l=r_hl&255; r_m=3; r_t=12; };
- void ADDHLHL() { r_hl=(r_h<<8)+r_l; r_hl+=(r_h<<8)+r_l; if(r_hl>65535) r_f|=0x10; else r_f&=0xEF; r_h=(r_hl>>8)&255; r_l=r_hl&255; r_m=3; r_t=12; };
- void ADDHLSP() { r_hl=(r_h<<8)+r_l; r_hl+=r_sp; if(r_hl>65535) r_f|=0x10; else r_f&=0xEF; r_h=(r_hl>>8)&255; r_l=r_hl&255; r_m=3; r_t=12; };
- void ADDSPn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_sp+=i; r_m=4; r_t=16; };
- void ADCr_b() { r_a+=r_b; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_c() { r_a+=r_c; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_d() { r_a+=r_d; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_e() { r_a+=r_e; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_h() { r_a+=r_h; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_l() { r_a+=r_l; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCr_a() { r_a+=r_a; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void ADCHL() { r_a+=MMU_rb((r_h<<8)+r_l); r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void ADCn() { r_a+=MMU_rb(r_pc); r_pc++; r_a+=(r_f&0x10)?1:0; fz(r_a, 0); if(r_a>255) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void SUBr_b() { r_a-=r_b; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_c() { r_a-=r_c; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_d() { r_a-=r_d; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_e() { r_a-=r_e; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_h() { r_a-=r_h; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_l() { r_a-=r_l; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBr_a() { r_a-=r_a; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SUBHL() { r_a-=MMU_rb((r_h<<8)+r_l); fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void SUBn() { r_a-=MMU_rb(r_pc); r_pc++; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void SBCr_b() { r_a-=r_b; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_c() { r_a-=r_c; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_d() { r_a-=r_d; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_e() { r_a-=r_e; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_h() { r_a-=r_h; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_l() { r_a-=r_l; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCr_a() { r_a-=r_a; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=1; r_t=4; };
- void SBCHL() { r_a-=MMU_rb((r_h<<8)+r_l); r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void SBCn() { r_a-=MMU_rb(r_pc); r_pc++; r_a-=(r_f&0x10)?1:0; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void CPr_b() { int i=r_a; i-=r_b; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_c() { int i=r_a; i-=r_c; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_d() { int i=r_a; i-=r_d; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_e() { int i=r_a; i-=r_e; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_h() { int i=r_a; i-=r_h; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_l() { int i=r_a; i-=r_l; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPr_a() { int i=r_a; i-=r_a; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=1; r_t=4; };
- void CPHL() { int i=r_a; i-=MMU_rb((r_h<<8)+r_l); fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=2; r_t=8; };
- void CPn() { int i=r_a; i-=MMU_rb(r_pc); r_pc++; fz(i,1); if(i<0) r_f|=0x10; i&=255; r_m=2; r_t=8; };
- void ANDr_b() { r_a&=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_c() { r_a&=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_d() { r_a&=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_e() { r_a&=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_h() { r_a&=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_l() { r_a&=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDr_a() { r_a&=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ANDHL() { r_a&=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void ANDn() { r_a&=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void ORr_b() { r_a|=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_c() { r_a|=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_d() { r_a|=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_e() { r_a|=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_h() { r_a|=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_l() { r_a|=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORr_a() { r_a|=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void ORHL() { r_a|=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void ORn() { r_a|=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void XORr_b() { r_a^=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_c() { r_a^=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_d() { r_a^=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_e() { r_a^=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_h() { r_a^=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_l() { r_a^=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORr_a() { r_a^=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void XORHL() { r_a^=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void XORn() { r_a^=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
- void INCr_b() { r_b++; r_b&=255; fz(r_b, 0); r_m=1; r_t=4; };
- void INCr_c() { r_c++; r_c&=255; fz(r_c, 0); r_m=1; r_t=4; };
- void INCr_d() { r_d++; r_d&=255; fz(r_d, 0); r_m=1; r_t=4; };
- void INCr_e() { r_e++; r_e&=255; fz(r_e, 0); r_m=1; r_t=4; };
- void INCr_h() { r_h++; r_h&=255; fz(r_h, 0); r_m=1; r_t=4; };
- void INCr_l() { r_l++; r_l&=255; fz(r_l, 0); r_m=1; r_t=4; };
- void INCr_a() { r_a++; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void INCHLm() { int i=MMU_rb((r_h<<8)+r_l)+1; i&=255; MMU_wb((r_h<<8)+r_l,i); fz(i, 0); r_m=3; r_t=12; };
- void DECr_b() { r_b--; r_b&=255; fz(r_b, 0); r_m=1; r_t=4; };
- void DECr_c() { r_c--; r_c&=255; fz(r_c, 0); r_m=1; r_t=4; };
- void DECr_d() { r_d--; r_d&=255; fz(r_d, 0); r_m=1; r_t=4; };
- void DECr_e() { r_e--; r_e&=255; fz(r_e, 0); r_m=1; r_t=4; };
- void DECr_h() { r_h--; r_h&=255; fz(r_h, 0); r_m=1; r_t=4; };
- void DECr_l() { r_l--; r_l&=255; fz(r_l, 0); r_m=1; r_t=4; };
- void DECr_a() { r_a--; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
- void DECHLm() { int i=MMU_rb((r_h<<8)+r_l)-1; i&=255; MMU_wb((r_h<<8)+r_l,i); fz(i, 0); r_m=3; r_t=12; };
- void INCBC() { r_c=(r_c+1)&255; if(!r_c) r_b=(r_b+1)&255; r_m=1; r_t=4; };
- void INCDE() { r_e=(r_e+1)&255; if(!r_e) r_d=(r_d+1)&255; r_m=1; r_t=4; };
- void INCHL() { r_l=(r_l+1)&255; if(!r_l) r_h=(r_h+1)&255; r_m=1; r_t=4; };
- void INCSP() { r_sp=(r_sp+1)&65535; r_m=1; r_t=4; };
- void DECBC() { r_c=(r_c-1)&255; if(r_c==255) r_b=(r_b-1)&255; r_m=1; r_t=4; };
- void DECDE() { r_e=(r_e-1)&255; if(r_e==255) r_d=(r_d-1)&255; r_m=1; r_t=4; };
- void DECHL() { r_l=(r_l-1)&255; if(r_l==255) r_h=(r_h-1)&255; r_m=1; r_t=4; };
- void DECSP() { r_sp=(r_sp-1)&65535; r_m=1; r_t=4; };
- /*--- Bit manipulation ---*/
- void BIT0b() { fz(r_b&0x01, 0); r_m=2; r_t=8; };
- void BIT0c() { fz(r_c&0x01, 0); r_m=2; r_t=8; };
- void BIT0d() { fz(r_d&0x01, 0); r_m=2; r_t=8; };
- void BIT0e() { fz(r_e&0x01, 0); r_m=2; r_t=8; };
- void BIT0h() { fz(r_h&0x01, 0); r_m=2; r_t=8; };
- void BIT0l() { fz(r_l&0x01, 0); r_m=2; r_t=8; };
- void BIT0a() { fz(r_a&0x01, 0); r_m=2; r_t=8; };
- void BIT0m() { fz(MMU_rb((r_h<<8)+r_l)&0x01, 0); r_m=3; r_t=12; };
- void BIT1b() { fz(r_b&0x02, 0); r_m=2; r_t=8; };
- void BIT1c() { fz(r_c&0x02, 0); r_m=2; r_t=8; };
- void BIT1d() { fz(r_d&0x02, 0); r_m=2; r_t=8; };
- void BIT1e() { fz(r_e&0x02, 0); r_m=2; r_t=8; };
- void BIT1h() { fz(r_h&0x02, 0); r_m=2; r_t=8; };
- void BIT1l() { fz(r_l&0x02, 0); r_m=2; r_t=8; };
- void BIT1a() { fz(r_a&0x02, 0); r_m=2; r_t=8; };
- void BIT1m() { fz(MMU_rb((r_h<<8)+r_l)&0x02, 0); r_m=3; r_t=12; };
- void BIT2b() { fz(r_b&0x04, 0); r_m=2; r_t=8; };
- void BIT2c() { fz(r_c&0x04, 0); r_m=2; r_t=8; };
- void BIT2d() { fz(r_d&0x04, 0); r_m=2; r_t=8; };
- void BIT2e() { fz(r_e&0x04, 0); r_m=2; r_t=8; };
- void BIT2h() { fz(r_h&0x04, 0); r_m=2; r_t=8; };
- void BIT2l() { fz(r_l&0x04, 0); r_m=2; r_t=8; };
- void BIT2a() { fz(r_a&0x04, 0); r_m=2; r_t=8; };
- void BIT2m() { fz(MMU_rb((r_h<<8)+r_l)&0x04, 0); r_m=3; r_t=12; };
- void BIT3b() { fz(r_b&0x08, 0); r_m=2; r_t=8; };
- void BIT3c() { fz(r_c&0x08, 0); r_m=2; r_t=8; };
- void BIT3d() { fz(r_d&0x08, 0); r_m=2; r_t=8; };
- void BIT3e() { fz(r_e&0x08, 0); r_m=2; r_t=8; };
- void BIT3h() { fz(r_h&0x08, 0); r_m=2; r_t=8; };
- void BIT3l() { fz(r_l&0x08, 0); r_m=2; r_t=8; };
- void BIT3a() { fz(r_a&0x08, 0); r_m=2; r_t=8; };
- void BIT3m() { fz(MMU_rb((r_h<<8)+r_l)&0x08, 0); r_m=3; r_t=12; };
- void BIT4b() { fz(r_b&0x10, 0); r_m=2; r_t=8; };
- void BIT4c() { fz(r_c&0x10, 0); r_m=2; r_t=8; };
- void BIT4d() { fz(r_d&0x10, 0); r_m=2; r_t=8; };
- void BIT4e() { fz(r_e&0x10, 0); r_m=2; r_t=8; };
- void BIT4h() { fz(r_h&0x10, 0); r_m=2; r_t=8; };
- void BIT4l() { fz(r_l&0x10, 0); r_m=2; r_t=8; };
- void BIT4a() { fz(r_a&0x10, 0); r_m=2; r_t=8; };
- void BIT4m() { fz(MMU_rb((r_h<<8)+r_l)&0x10, 0); r_m=3; r_t=12; };
- void BIT5b() { fz(r_b&0x20, 0); r_m=2; r_t=8; };
- void BIT5c() { fz(r_c&0x20, 0); r_m=2; r_t=8; };
- void BIT5d() { fz(r_d&0x20, 0); r_m=2; r_t=8; };
- void BIT5e() { fz(r_e&0x20, 0); r_m=2; r_t=8; };
- void BIT5h() { fz(r_h&0x20, 0); r_m=2; r_t=8; };
- void BIT5l() { fz(r_l&0x20, 0); r_m=2; r_t=8; };
- void BIT5a() { fz(r_a&0x20, 0); r_m=2; r_t=8; };
- void BIT5m() { fz(MMU_rb((r_h<<8)+r_l)&0x20, 0); r_m=3; r_t=12; };
- void BIT6b() { fz(r_b&0x40, 0); r_m=2; r_t=8; };
- void BIT6c() { fz(r_c&0x40, 0); r_m=2; r_t=8; };
- void BIT6d() { fz(r_d&0x40, 0); r_m=2; r_t=8; };
- void BIT6e() { fz(r_e&0x40, 0); r_m=2; r_t=8; };
- void BIT6h() { fz(r_h&0x40, 0); r_m=2; r_t=8; };
- void BIT6l() { fz(r_l&0x40, 0); r_m=2; r_t=8; };
- void BIT6a() { fz(r_a&0x40, 0); r_m=2; r_t=8; };
- void BIT6m() { fz(MMU_rb((r_h<<8)+r_l)&0x40, 0); r_m=3; r_t=12; };
- void BIT7b() { fz(r_b&0x80, 0); r_m=2; r_t=8; };
- void BIT7c() { fz(r_c&0x80, 0); r_m=2; r_t=8; };
- void BIT7d() { fz(r_d&0x80, 0); r_m=2; r_t=8; };
- void BIT7e() { fz(r_e&0x80, 0); r_m=2; r_t=8; };
- void BIT7h() { fz(r_h&0x80, 0); r_m=2; r_t=8; };
- void BIT7l() { fz(r_l&0x80, 0); r_m=2; r_t=8; };
- void BIT7a() { fz(r_a&0x80, 0); r_m=2; r_t=8; };
- void BIT7m() { fz(MMU_rb((r_h<<8)+r_l)&0x80, 0); r_m=3; r_t=12; };
- void RLA() { int ci=r_f&0x10?1:0; int co=r_a&0x80?0x10:0; r_a=(r_a<<1)+ci; r_a&=255; r_f=(r_f&0xEF)+co; r_m=1; r_t=4; };
- void RLCA() { int ci=r_a&0x80?1:0; int co=r_a&0x80?0x10:0; r_a=(r_a<<1)+ci; r_a&=255; r_f=(r_f&0xEF)+co; r_m=1; r_t=4; };
- void RRA() { int ci=r_f&0x10?0x80:0; int co=r_a&1?0x10:0; r_a=(r_a>>1)+ci; r_a&=255; r_f=(r_f&0xEF)+co; r_m=1; r_t=4; };
- void RRCA() { int ci=r_a&1?0x80:0; int co=r_a&1?0x10:0; r_a=(r_a>>1)+ci; r_a&=255; r_f=(r_f&0xEF)+co; r_m=1; r_t=4; };
- void RLr_b() { int ci=r_f&0x10?1:0; int co=r_b&0x80?0x10:0; r_b=(r_b<<1)+ci; r_b&=255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_c() { int ci=r_f&0x10?1:0; int co=r_c&0x80?0x10:0; r_c=(r_c<<1)+ci; r_c&=255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_d() { int ci=r_f&0x10?1:0; int co=r_d&0x80?0x10:0; r_d=(r_d<<1)+ci; r_d&=255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_e() { int ci=r_f&0x10?1:0; int co=r_e&0x80?0x10:0; r_e=(r_e<<1)+ci; r_e&=255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_h() { int ci=r_f&0x10?1:0; int co=r_h&0x80?0x10:0; r_h=(r_h<<1)+ci; r_h&=255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_l() { int ci=r_f&0x10?1:0; int co=r_l&0x80?0x10:0; r_l=(r_l<<1)+ci; r_l&=255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLr_a() { int ci=r_f&0x10?1:0; int co=r_a&0x80?0x10:0; r_a=(r_a<<1)+ci; r_a&=255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLHL() { int i=MMU_rb((r_h<<8)+r_l); int ci=r_f&0x10?1:0; int co=i&0x80?0x10:0; i=(i<<1)+ci; i&=255; fz(i, 0); MMU_wb((r_h<<8)+r_l,i); r_f=(r_f&0xEF)+co; r_m=4; r_t=16; };
- void RLCr_b() { int ci=r_b&0x80?1:0; int co=r_b&0x80?0x10:0; r_b=(r_b<<1)+ci; r_b&=255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_c() { int ci=r_c&0x80?1:0; int co=r_c&0x80?0x10:0; r_c=(r_c<<1)+ci; r_c&=255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_d() { int ci=r_d&0x80?1:0; int co=r_d&0x80?0x10:0; r_d=(r_d<<1)+ci; r_d&=255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_e() { int ci=r_e&0x80?1:0; int co=r_e&0x80?0x10:0; r_e=(r_e<<1)+ci; r_e&=255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_h() { int ci=r_h&0x80?1:0; int co=r_h&0x80?0x10:0; r_h=(r_h<<1)+ci; r_h&=255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_l() { int ci=r_l&0x80?1:0; int co=r_l&0x80?0x10:0; r_l=(r_l<<1)+ci; r_l&=255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCr_a() { int ci=r_a&0x80?1:0; int co=r_a&0x80?0x10:0; r_a=(r_a<<1)+ci; r_a&=255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RLCHL() { int i=MMU_rb((r_h<<8)+r_l); int ci=i&0x80?1:0; int co=i&0x80?0x10:0; i=(i<<1)+ci; i&=255; fz(i, 0); MMU_wb((r_h<<8)+r_l,i); r_f=(r_f&0xEF)+co; r_m=4; r_t=16; };
- void RRr_b() { int ci=r_f&0x10?0x80:0; int co=r_b&1?0x10:0; r_b=(r_b>>1)+ci; r_b&=255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_c() { int ci=r_f&0x10?0x80:0; int co=r_c&1?0x10:0; r_c=(r_c>>1)+ci; r_c&=255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_d() { int ci=r_f&0x10?0x80:0; int co=r_d&1?0x10:0; r_d=(r_d>>1)+ci; r_d&=255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_e() { int ci=r_f&0x10?0x80:0; int co=r_e&1?0x10:0; r_e=(r_e>>1)+ci; r_e&=255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_h() { int ci=r_f&0x10?0x80:0; int co=r_h&1?0x10:0; r_h=(r_h>>1)+ci; r_h&=255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_l() { int ci=r_f&0x10?0x80:0; int co=r_l&1?0x10:0; r_l=(r_l>>1)+ci; r_l&=255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRr_a() { int ci=r_f&0x10?0x80:0; int co=r_a&1?0x10:0; r_a=(r_a>>1)+ci; r_a&=255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRHL() { int i=MMU_rb((r_h<<8)+r_l); int ci=r_f&0x10?0x80:0; int co=i&1?0x10:0; i=(i>>1)+ci; i&=255; MMU_wb((r_h<<8)+r_l,i); fz(i, 0); r_f=(r_f&0xEF)+co; r_m=4; r_t=16; };
- void RRCr_b() { int ci=r_b&1?0x80:0; int co=r_b&1?0x10:0; r_b=(r_b>>1)+ci; r_b&=255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_c() { int ci=r_c&1?0x80:0; int co=r_c&1?0x10:0; r_c=(r_c>>1)+ci; r_c&=255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_d() { int ci=r_d&1?0x80:0; int co=r_d&1?0x10:0; r_d=(r_d>>1)+ci; r_d&=255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_e() { int ci=r_e&1?0x80:0; int co=r_e&1?0x10:0; r_e=(r_e>>1)+ci; r_e&=255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_h() { int ci=r_h&1?0x80:0; int co=r_h&1?0x10:0; r_h=(r_h>>1)+ci; r_h&=255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_l() { int ci=r_l&1?0x80:0; int co=r_l&1?0x10:0; r_l=(r_l>>1)+ci; r_l&=255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCr_a() { int ci=r_a&1?0x80:0; int co=r_a&1?0x10:0; r_a=(r_a>>1)+ci; r_a&=255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void RRCHL() { int i=MMU_rb((r_h<<8)+r_l); int ci=i&1?0x80:0; int co=i&1?0x10:0; i=(i>>1)+ci; i&=255; MMU_wb((r_h<<8)+r_l,i); fz(i, 0); r_f=(r_f&0xEF)+co; r_m=4; r_t=16; };
- void SLAr_b() { int co=r_b&0x80?0x10:0; r_b=(r_b<<1)&255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_c() { int co=r_c&0x80?0x10:0; r_c=(r_c<<1)&255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_d() { int co=r_d&0x80?0x10:0; r_d=(r_d<<1)&255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_e() { int co=r_e&0x80?0x10:0; r_e=(r_e<<1)&255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_h() { int co=r_h&0x80?0x10:0; r_h=(r_h<<1)&255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_l() { int co=r_l&0x80?0x10:0; r_l=(r_l<<1)&255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLAr_a() { int co=r_a&0x80?0x10:0; r_a=(r_a<<1)&255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_b() { int co=r_b&0x80?0x10:0; r_b=(r_b<<1)&255+1; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_c() { int co=r_c&0x80?0x10:0; r_c=(r_c<<1)&255+1; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_d() { int co=r_d&0x80?0x10:0; r_d=(r_d<<1)&255+1; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_e() { int co=r_e&0x80?0x10:0; r_e=(r_e<<1)&255+1; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_h() { int co=r_h&0x80?0x10:0; r_h=(r_h<<1)&255+1; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_l() { int co=r_l&0x80?0x10:0; r_l=(r_l<<1)&255+1; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SLLr_a() { int co=r_a&0x80?0x10:0; r_a=(r_a<<1)&255+1; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_b() { int ci=r_b&0x80; int co=r_b&1?0x10:0; r_b=((r_b>>1)+ci)&255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_c() { int ci=r_c&0x80; int co=r_c&1?0x10:0; r_c=((r_c>>1)+ci)&255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_d() { int ci=r_d&0x80; int co=r_d&1?0x10:0; r_d=((r_d>>1)+ci)&255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_e() { int ci=r_e&0x80; int co=r_e&1?0x10:0; r_e=((r_e>>1)+ci)&255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_h() { int ci=r_h&0x80; int co=r_h&1?0x10:0; r_h=((r_h>>1)+ci)&255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_l() { int ci=r_l&0x80; int co=r_l&1?0x10:0; r_l=((r_l>>1)+ci)&255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRAr_a() { int ci=r_a&0x80; int co=r_a&1?0x10:0; r_a=((r_a>>1)+ci)&255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_b() { int co=r_b&1?0x10:0; r_b=(r_b>>1)&255; fz(r_b, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_c() { int co=r_c&1?0x10:0; r_c=(r_c>>1)&255; fz(r_c, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_d() { int co=r_d&1?0x10:0; r_d=(r_d>>1)&255; fz(r_d, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_e() { int co=r_e&1?0x10:0; r_e=(r_e>>1)&255; fz(r_e, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_h() { int co=r_h&1?0x10:0; r_h=(r_h>>1)&255; fz(r_h, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_l() { int co=r_l&1?0x10:0; r_l=(r_l>>1)&255; fz(r_l, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void SRLr_a() { int co=r_a&1?0x10:0; r_a=(r_a>>1)&255; fz(r_a, 0); r_f=(r_f&0xEF)+co; r_m=2; r_t=8; };
- void CPL() { r_a = (~r_a)&255; fz(r_a,1); r_m=1; r_t=4; };
- void NEG() { r_a=0-r_a; fz(r_a,1); if(r_a<0) r_f|=0x10; r_a&=255; r_m=2; r_t=8; };
- void CCF() { int ci=r_f&0x10?0:0x10; r_f=(r_f&0xEF)+ci; r_m=1; r_t=4; };
- void SCF() { r_f|=0x10; r_m=1; r_t=4; };
- /*--- Stack ---*/
- void PUSHBC() { r_sp--; MMU_wb(r_sp,r_b); r_sp--; MMU_wb(r_sp,r_c); r_m=3; r_t=12; };
- void PUSHDE() { r_sp--; MMU_wb(r_sp,r_d); r_sp--; MMU_wb(r_sp,r_e); r_m=3; r_t=12; };
- void PUSHHL() { r_sp--; MMU_wb(r_sp,r_h); r_sp--; MMU_wb(r_sp,r_l); r_m=3; r_t=12; };
- void PUSHAF() { r_sp--; MMU_wb(r_sp,r_a); r_sp--; MMU_wb(r_sp,r_f); r_m=3; r_t=12; };
- void POPBC() { r_c=MMU_rb(r_sp); r_sp++; r_b=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
- void POPDE() { r_e=MMU_rb(r_sp); r_sp++; r_d=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
- void POPHL() { r_l=MMU_rb(r_sp); r_sp++; r_h=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
- void POPAF() { r_f=MMU_rb(r_sp); r_sp++; r_a=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
- /*--- Jump ---*/
- void JPnn() { r_pc = MMU_rw(r_pc); r_m=3; r_t=12; };
- void JPHL() { r_pc=r_hl; r_m=1; r_t=4; };
- void JPNZnn() { r_m=3; r_t=12; if((r_f&0x80)==0x00) { r_pc=MMU_rw(r_pc); r_m++; r_t+=4; } else r_pc+=2; };
- void JPZnn() { r_m=3; r_t=12; if((r_f&0x80)==0x80) { r_pc=MMU_rw(r_pc); r_m++; r_t+=4; } else r_pc+=2; };
- void JPNCnn() { r_m=3; r_t=12; if((r_f&0x10)==0x00) { r_pc=MMU_rw(r_pc); r_m++; r_t+=4; } else r_pc+=2; };
- void JPCnn() { r_m=3; r_t=12; if((r_f&0x10)==0x10) { r_pc=MMU_rw(r_pc); r_m++; r_t+=4; } else r_pc+=2; };
- void JRn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; r_pc+=i; r_m++; r_t+=4; };
- void JRNZn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; if((r_f&0x80)==0x00) { r_pc+=i; r_m++; r_t+=4; } };
- void JRZn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; if((r_f&0x80)==0x80) { r_pc+=i; r_m++; r_t+=4; } };
- void JRNCn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; if((r_f&0x10)==0x00) { r_pc+=i; r_m++; r_t+=4; } };
- void JRCn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; if((r_f&0x10)==0x10) { r_pc+=i; r_m++; r_t+=4; } };
- void DJNZn() { int i=MMU_rb(r_pc); if(i>127) i=-((~i+1)&255); r_pc++; r_m=2; r_t=8; r_b--; if(r_b) { r_pc+=i; r_m++; r_t+=4; } };
- void CALLnn() { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m=5; r_t=20; };
- void CALLNZnn() { r_m=3; r_t=12; if((r_f&0x80)==0x00) { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m+=2; r_t+=8; } else r_pc+=2; };
- void CALLZnn() { r_m=3; r_t=12; if((r_f&0x80)==0x80) { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m+=2; r_t+=8; } else r_pc+=2; };
- void CALLNCnn() { r_m=3; r_t=12; if((r_f&0x10)==0x00) { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m+=2; r_t+=8; } else r_pc+=2; };
- void CALLCnn() { r_m=3; r_t=12; if((r_f&0x10)==0x10) { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m+=2; r_t+=8; } else r_pc+=2; };
- void RET() { r_pc=MMU_rw(r_sp); r_sp+=2; r_m=3; r_t=12; };
- void RETI() { r_ime=1; r_pc=MMU_rw(r_sp); r_sp+=2; r_m=3; r_t=12; };
- void RETNZ() { r_m=1; r_t=4; if((r_f&0x80)==0x00) { r_pc=MMU_rw(r_sp); r_sp+=2; r_m+=2; r_t+=8; } };
- void RETZ() { r_m=1; r_t=4; if((r_f&0x80)==0x80) { r_pc=MMU_rw(r_sp); r_sp+=2; r_m+=2; r_t+=8; } };
- void RETNC() { r_m=1; r_t=4; if((r_f&0x10)==0x00) { r_pc=MMU_rw(r_sp); r_sp+=2; r_m+=2; r_t+=8; } };
- void RETC() { r_m=1; r_t=4; if((r_f&0x10)==0x10) { r_pc=MMU_rw(r_sp); r_sp+=2; r_m+=2; r_t+=8; } };
- void RST00() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x00; r_m=3; r_t=12; };
- void RST08() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x08; r_m=3; r_t=12; };
- void RST10() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x10; r_m=3; r_t=12; };
- void RST18() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x18; r_m=3; r_t=12; };
- void RST20() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x20; r_m=3; r_t=12; };
- void RST28() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x28; r_m=3; r_t=12; };
- void RST30() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x30; r_m=3; r_t=12; };
- void RST38() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x38; r_m=3; r_t=12; };
- void RST40() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x40; r_m=3; r_t=12; };
- void RST48() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x48; r_m=3; r_t=12; };
- void RST50() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x50; r_m=3; r_t=12; };
- void RST58() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x58; r_m=3; r_t=12; };
- void RST60() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x60; r_m=3; r_t=12; };
- void NOP() { r_m=1; r_t=4; };
- void HALT() { Z80_halt=1; r_m=1; r_t=4; };
- void DI() { r_ime=0; r_m=1; r_t=4; };
- void EI() { r_ime=1; r_m=1; r_t=4; };
- void XX() {
- /*Undefined map entry*/
- int opc = r_pc-1;
- Z80_stop=1;
- };
- void (*Z80_cbmap[256])() = {
- // CB00
- RLCr_b,
- RLCr_c,
- RLCr_d,
- RLCr_e,
- RLCr_h,
- RLCr_l,
- RLCHL,
- RLCr_a,
- RRCr_b,
- RRCr_c,
- RRCr_d,
- RRCr_e,
- RRCr_h,
- RRCr_l,
- RRCHL,
- RRCr_a,
- // CB10
- RLr_b,
- RLr_c,
- RLr_d,
- RLr_e,
- RLr_h,
- RLr_l,
- RLHL,
- RLr_a,
- RRr_b,
- RRr_c,
- RRr_d,
- RRr_e,
- RRr_h,
- RRr_l,
- RRHL,
- RRr_a,
- // CB20
- SLAr_b,
- SLAr_c,
- SLAr_d,
- SLAr_e,
- SLAr_h,
- SLAr_l,
- XX,
- SLAr_a,
- SRAr_b,
- SRAr_c,
- SRAr_d,
- SRAr_e,
- SRAr_h,
- SRAr_l,
- XX,
- SRAr_a,
- // CB30
- SWAPr_b,
- SWAPr_c,
- SWAPr_d,
- SWAPr_e,
- SWAPr_h,
- SWAPr_l,
- XX,
- SWAPr_a,
- SRLr_b,
- SRLr_c,
- SRLr_d,
- SRLr_e,
- SRLr_h,
- SRLr_l,
- XX,
- SRLr_a,
- // CB40
- BIT0b,
- BIT0c,
- BIT0d,
- BIT0e,
- BIT0h,
- BIT0l,
- BIT0m,
- BIT0a,
- BIT1b,
- BIT1c,
- BIT1d,
- BIT1e,
- BIT1h,
- BIT1l,
- BIT1m,
- BIT1a,
- // CB50
- BIT2b,
- BIT2c,
- BIT2d,
- BIT2e,
- BIT2h,
- BIT2l,
- BIT2m,
- BIT2a,
- BIT3b,
- BIT3c,
- BIT3d,
- BIT3e,
- BIT3h,
- BIT3l,
- BIT3m,
- BIT3a,
- // CB60
- BIT4b,
- BIT4c,
- BIT4d,
- BIT4e,
- BIT4h,
- BIT4l,
- BIT4m,
- BIT4a,
- BIT5b,
- BIT5c,
- BIT5d,
- BIT5e,
- BIT5h,
- BIT5l,
- BIT5m,
- BIT5a,
- // CB70
- BIT6b,
- BIT6c,
- BIT6d,
- BIT6e,
- BIT6h,
- BIT6l,
- BIT6m,
- BIT6a,
- BIT7b,
- BIT7c,
- BIT7d,
- BIT7e,
- BIT7h,
- BIT7l,
- BIT7m,
- BIT7a,
- // CB80
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CB90
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBA0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBB0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBC0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBD0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBE0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- // CBF0
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX,
- XX
- };
- void MAPcb() {
- int i=MMU_rb(r_pc); r_pc++;
- r_pc &= 65535;
- if(Z80_cbmap[i]) Z80_cbmap[i]();
- };
- void Z80_reset() {
- r_a=0; r_b=0; r_c=0; r_d=0; r_e=0; r_h=0; r_l=0; r_f=0;
- r_sp=0; r_pc=0; r_i=0; r_r=0;
- r_m=0; r_t=0;
- Z80_halt=0; Z80_stop=0;
- clock_m=0; clock_t=0;
- r_ime=1;
- };
- void (*Z80_map[256])() = {
- // 00
- NOP,
- LDBCnn,
- LDBCmA,
- INCBC,
- INCr_b,
- DECr_b,
- LDrn_b,
- RLCA,
- LDmmSP,
- ADDHLBC,
- LDABCm,
- DECBC,
- INCr_c,
- DECr_c,
- LDrn_c,
- RRCA,
- // 10
- DJNZn,
- LDDEnn,
- LDDEmA,
- INCDE,
- INCr_d,
- DECr_d,
- LDrn_d,
- RLA,
- JRn,
- ADDHLDE,
- LDADEm,
- DECDE,
- INCr_e,
- DECr_e,
- LDrn_e,
- RRA,
- // 20
- JRNZn,
- LDHLnn,
- LDHLIA,
- INCHL,
- INCr_h,
- DECr_h,
- LDrn_h,
- XX,
- JRZn,
- ADDHLHL,
- LDAHLI,
- DECHL,
- INCr_l,
- DECr_l,
- LDrn_l,
- CPL,
- // 30
- JRNCn,
- LDSPnn,
- LDHLDA,
- INCSP,
- INCHLm,
- DECHLm,
- LDHLmn,
- SCF,
- JRCn,
- ADDHLSP,
- LDAHLD,
- DECSP,
- INCr_a,
- DECr_a,
- LDrn_a,
- CCF,
- // 40
- LDrr_bb,
- LDrr_bc,
- LDrr_bd,
- LDrr_be,
- LDrr_bh,
- LDrr_bl,
- LDrHLm_b,
- LDrr_ba,
- LDrr_cb,
- LDrr_cc,
- LDrr_cd,
- LDrr_ce,
- LDrr_ch,
- LDrr_cl,
- LDrHLm_c,
- LDrr_ca,
- // 50
- LDrr_db,
- LDrr_dc,
- LDrr_dd,
- LDrr_de,
- LDrr_dh,
- LDrr_dl,
- LDrHLm_d,
- LDrr_da,
- LDrr_eb,
- LDrr_ec,
- LDrr_ed,
- LDrr_ee,
- LDrr_eh,
- LDrr_el,
- LDrHLm_e,
- LDrr_ea,
- // 60
- LDrr_hb,
- LDrr_hc,
- LDrr_hd,
- LDrr_he,
- LDrr_hh,
- LDrr_hl,
- LDrHLm_h,
- LDrr_ha,
- LDrr_lb,
- LDrr_lc,
- LDrr_ld,
- LDrr_le,
- LDrr_lh,
- LDrr_ll,
- LDrHLm_l,
- LDrr_la,
- // 70
- LDHLmr_b,
- LDHLmr_c,
- LDHLmr_d,
- LDHLmr_e,
- LDHLmr_h,
- LDHLmr_l,
- HALT,
- LDHLmr_a,
- LDrr_ab,
- LDrr_ac,
- LDrr_ad,
- LDrr_ae,
- LDrr_ah,
- LDrr_al,
- LDrHLm_a,
- LDrr_aa,
- // 80
- ADDr_b,
- ADDr_c,
- ADDr_d,
- ADDr_e,
- ADDr_h,
- ADDr_l,
- ADDHL,
- ADDr_a,
- ADCr_b,
- ADCr_c,
- ADCr_d,
- ADCr_e,
- ADCr_h,
- ADCr_l,
- ADCHL,
- ADCr_a,
- // 90
- SUBr_b,
- SUBr_c,
- SUBr_d,
- SUBr_e,
- SUBr_h,
- SUBr_l,
- SUBHL,
- SUBr_a,
- SBCr_b,
- SBCr_c,
- SBCr_d,
- SBCr_e,
- SBCr_h,
- SBCr_l,
- SBCHL,
- SBCr_a,
- // A0
- ANDr_b,
- ANDr_c,
- ANDr_d,
- ANDr_e,
- ANDr_h,
- ANDr_l,
- ANDHL,
- ANDr_a,
- XORr_b,
- XORr_c,
- XORr_d,
- XORr_e,
- XORr_h,
- XORr_l,
- XORHL,
- XORr_a,
- // B0
- ORr_b,
- ORr_c,
- ORr_d,
- ORr_e,
- ORr_h,
- ORr_l,
- ORHL,
- ORr_a,
- CPr_b,
- CPr_c,
- CPr_d,
- CPr_e,
- CPr_h,
- CPr_l,
- CPHL,
- CPr_a,
- // C0
- RETNZ,
- POPBC,
- JPNZnn,
- JPnn,
- CALLNZnn,
- PUSHBC,
- ADDn,
- RST00,
- RETZ,
- RET,
- JPZnn,
- MAPcb,
- CALLZnn,
- CALLnn,
- ADCn,
- RST08,
- // D0
- RETNC,
- POPDE,
- JPNCnn,
- XX,
- CALLNCnn,
- PUSHDE,
- SUBn,
- RST10,
- RETC,
- RETI,
- JPCnn,
- XX,
- CALLCnn,
- XX,
- SBCn,
- RST18,
- // E0
- LDIOnA,
- POPHL,
- LDIOCA,
- XX,
- XX,
- PUSHHL,
- ANDn,
- RST20,
- ADDSPn,
- JPHL,
- LDmmA,
- XX,
- XX,
- XX,
- ORn,
- RST28,
- // F0
- LDAIOn,
- POPAF,
- LDAIOC,
- DI,
- XX,
- PUSHAF,
- XORn,
- RST30,
- LDHLSPn,
- XX,
- LDAmm,
- EI,
- XX,
- XX,
- CPn,
- RST38
- };
- void Z80_exec() {
- r_r = (r_r+1) & 127;
- Z80_map[MMU_rb(r_pc++)]();
- r_pc &= 65535;
- clock_m += r_m; clock_t += r_t;
- if(MMU_inbios && r_pc == 0x0100) MMU_inbios=0;
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement