Advertisement
Guest User

z80.c

a guest
Nov 14th, 2015
205
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 36.13 KB | None | 0 0
  1. void fz(int i, int as) { r_f=0; if(!(i&255)) r_f|=128; r_f|=as?0x40:0; };
  2.  
  3. void LDrr_bb() { r_b=r_b; r_m=1; r_t=4; };
  4. void LDrr_bc() { r_b=r_c; r_m=1; r_t=4; };
  5. void LDrr_bd() { r_b=r_d; r_m=1; r_t=4; };
  6. void LDrr_be() { r_b=r_e; r_m=1; r_t=4; };
  7. void LDrr_bh() { r_b=r_h; r_m=1; r_t=4; };
  8. void LDrr_bl() { r_b=r_l; r_m=1; r_t=4; };
  9. void LDrr_ba() { r_b=r_a; r_m=1; r_t=4; };
  10. void LDrr_cb() { r_c=r_b; r_m=1; r_t=4; };
  11. void LDrr_cc() { r_c=r_c; r_m=1; r_t=4; };
  12. void LDrr_cd() { r_c=r_d; r_m=1; r_t=4; };
  13. void LDrr_ce() { r_c=r_e; r_m=1; r_t=4; };
  14. void LDrr_ch() { r_c=r_h; r_m=1; r_t=4; };
  15. void LDrr_cl() { r_c=r_l; r_m=1; r_t=4; };
  16. void LDrr_ca() { r_c=r_a; r_m=1; r_t=4; };
  17. void LDrr_db() { r_d=r_b; r_m=1; r_t=4; };
  18. void LDrr_dc() { r_d=r_c; r_m=1; r_t=4; };
  19. void LDrr_dd() { r_d=r_d; r_m=1; r_t=4; };
  20. void LDrr_de() { r_d=r_e; r_m=1; r_t=4; };
  21. void LDrr_dh() { r_d=r_h; r_m=1; r_t=4; };
  22. void LDrr_dl() { r_d=r_l; r_m=1; r_t=4; };
  23. void LDrr_da() { r_d=r_a; r_m=1; r_t=4; };
  24. void LDrr_eb() { r_e=r_b; r_m=1; r_t=4; };
  25. void LDrr_ec() { r_e=r_c; r_m=1; r_t=4; };
  26. void LDrr_ed() { r_e=r_d; r_m=1; r_t=4; };
  27. void LDrr_ee() { r_e=r_e; r_m=1; r_t=4; };
  28. void LDrr_eh() { r_e=r_h; r_m=1; r_t=4; };
  29. void LDrr_el() { r_e=r_l; r_m=1; r_t=4; };
  30. void LDrr_ea() { r_e=r_a; r_m=1; r_t=4; };
  31. void LDrr_hb() { r_h=r_b; r_m=1; r_t=4; };
  32. void LDrr_hc() { r_h=r_c; r_m=1; r_t=4; };
  33. void LDrr_hd() { r_h=r_d; r_m=1; r_t=4; };
  34. void LDrr_he() { r_h=r_e; r_m=1; r_t=4; };
  35. void LDrr_hh() { r_h=r_h; r_m=1; r_t=4; };
  36. void LDrr_hl() { r_h=r_l; r_m=1; r_t=4; };
  37. void LDrr_ha() { r_h=r_a; r_m=1; r_t=4; };
  38. void LDrr_lb() { r_l=r_b; r_m=1; r_t=4; };
  39. void LDrr_lc() { r_l=r_c; r_m=1; r_t=4; };
  40. void LDrr_ld() { r_l=r_d; r_m=1; r_t=4; };
  41. void LDrr_le() { r_l=r_e; r_m=1; r_t=4; };
  42. void LDrr_lh() { r_l=r_h; r_m=1; r_t=4; };
  43. void LDrr_ll() { r_l=r_l; r_m=1; r_t=4; };
  44. void LDrr_la() { r_l=r_a; r_m=1; r_t=4; };
  45. void LDrr_ab() { r_a=r_b; r_m=1; r_t=4; };
  46. void LDrr_ac() { r_a=r_c; r_m=1; r_t=4; };
  47. void LDrr_ad() { r_a=r_d; r_m=1; r_t=4; };
  48. void LDrr_ae() { r_a=r_e; r_m=1; r_t=4; };
  49. void LDrr_ah() { r_a=r_h; r_m=1; r_t=4; };
  50. void LDrr_al() { r_a=r_l; r_m=1; r_t=4; };
  51. void LDrr_aa() { r_a=r_a; r_m=1; r_t=4; };
  52.  
  53. void LDrHLm_b() { r_b=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  54. void LDrHLm_c() { r_c=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  55. void LDrHLm_d() { r_d=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  56. void LDrHLm_e() { r_e=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  57. void LDrHLm_h() { r_h=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  58. void LDrHLm_l() { r_l=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  59. void LDrHLm_a() { r_a=MMU_rb((r_h<<8)+r_l); r_m=2; r_t=8; };
  60.  
  61.  
  62. void LDHLmr_b() { MMU_wb((r_h<<8)+r_l,r_b); r_m=2; r_t=8; };
  63. void LDHLmr_c() { MMU_wb((r_h<<8)+r_l,r_c); r_m=2; r_t=8; };
  64. void LDHLmr_d() { MMU_wb((r_h<<8)+r_l,r_d); r_m=2; r_t=8; };
  65. void LDHLmr_e() { MMU_wb((r_h<<8)+r_l,r_e); r_m=2; r_t=8; };
  66. void LDHLmr_h() { MMU_wb((r_h<<8)+r_l,r_h); r_m=2; r_t=8; };
  67. void LDHLmr_l() { MMU_wb((r_h<<8)+r_l,r_l); r_m=2; r_t=8; };
  68. void LDHLmr_a() { MMU_wb((r_h<<8)+r_l,r_a); r_m=2; r_t=8; };
  69.  
  70. void LDrn_b() { r_b=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  71. void LDrn_c() { r_c=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  72. void LDrn_d() { r_d=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  73. void LDrn_e() { r_e=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  74. void LDrn_h() { r_h=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  75. void LDrn_l() { r_l=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  76. void LDrn_a() { r_a=MMU_rb(r_pc); r_pc++; r_m=2; r_t=8; };
  77.  
  78. void LDHLmn() { MMU_wb((r_h<<8)+r_l, MMU_rb(r_pc)); r_pc++; r_m=3; r_t=12; };
  79.  
  80. void LDBCmA() { MMU_wb((r_b<<8)+r_c, r_a); r_m=2; r_t=8; };
  81. void LDDEmA() { MMU_wb((r_d<<8)+r_e, r_a); r_m=2; r_t=8; };
  82.  
  83. void LDmmA() { MMU_wb(MMU_rw(r_pc), r_a); r_pc+=2; r_m=4; r_t=16; };
  84.  
  85. void LDmmSP() { MMU_wb(MMU_rw(r_pc), r_sp); r_pc+=2; r_m=4; r_t=16; };
  86.  
  87. void LDABCm() { r_a=MMU_rb((r_b<<8)+r_c); r_m=2; r_t=8; };
  88. void LDADEm() { r_a=MMU_rb((r_d<<8)+r_e); r_m=2; r_t=8; };
  89.  
  90. void LDAmm() { r_a=MMU_rb(MMU_rw(r_pc)); r_pc+=2; r_m=4; r_t=16; };
  91.  
  92. void LDBCnn() { r_c=MMU_rb(r_pc); r_b=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
  93. void LDDEnn() { r_e=MMU_rb(r_pc); r_d=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
  94. void LDHLnn() { r_l=MMU_rb(r_pc); r_h=MMU_rb(r_pc+1); r_pc+=2; r_m=3; r_t=12; };
  95. void LDSPnn() { r_sp=MMU_rw(r_pc); r_pc+=2; r_m=3; r_t=12; };
  96.  
  97. 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; };
  98. 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; };
  99.  
  100. 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; };
  101. 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; };
  102.  
  103. 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; };
  104. 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; };
  105.  
  106. void LDAIOn() { r_a=MMU_rb(0xFF00+MMU_rb(r_pc)); r_pc++; r_m=3; r_t=12; };
  107. void LDIOnA() { MMU_wb(0xFF00+MMU_rb(r_pc),r_a); r_pc++; r_m=3; r_t=12; };
  108. void LDAIOC() { r_a=MMU_rb(0xFF00+r_c); r_m=2; r_t=8; };
  109. void LDIOCA() { MMU_wb(0xFF00+r_c,r_a); r_m=2; r_t=8; };
  110.  
  111. 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; };
  112.  
  113. 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; };
  114. 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; };
  115. 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; };
  116. 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; };
  117. 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; };
  118. 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; };
  119. 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; };
  120.  
  121. /*--- Data processing ---*/
  122. 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; };
  123. 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; };
  124. 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; };
  125. 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; };
  126. 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; };
  127. 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; };
  128. 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; };
  129. 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; };
  130. 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; };
  131. 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; };
  132. 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; };
  133. 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; };
  134. 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; };
  135. 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; };
  136.  
  137. 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; };
  138. 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; };
  139. 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; };
  140. 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; };
  141. 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; };
  142. 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; };
  143. 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; };
  144. 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; };
  145. 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; };
  146.  
  147. 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; };
  148. 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; };
  149. 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; };
  150. 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; };
  151. 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; };
  152. 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; };
  153. 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; };
  154. 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; };
  155. 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; };
  156.  
  157. 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; };
  158. 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; };
  159. 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; };
  160. 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; };
  161. 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; };
  162. 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; };
  163. 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; };
  164. 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; };
  165. 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; };
  166.  
  167. 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; };
  168. 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; };
  169. 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; };
  170. 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; };
  171. 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; };
  172. 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; };
  173. 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; };
  174. 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; };
  175. 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; };
  176.  
  177. void ANDr_b() { r_a&=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  178. void ANDr_c() { r_a&=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  179. void ANDr_d() { r_a&=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  180. void ANDr_e() { r_a&=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  181. void ANDr_h() { r_a&=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  182. void ANDr_l() { r_a&=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  183. void ANDr_a() { r_a&=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  184. void ANDHL() { r_a&=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  185. void ANDn() { r_a&=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  186.  
  187. void ORr_b() { r_a|=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  188. void ORr_c() { r_a|=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  189. void ORr_d() { r_a|=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  190. void ORr_e() { r_a|=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  191. void ORr_h() { r_a|=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  192. void ORr_l() { r_a|=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  193. void ORr_a() { r_a|=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  194. void ORHL() { r_a|=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  195. void ORn() { r_a|=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  196.  
  197. void XORr_b() { r_a^=r_b; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  198. void XORr_c() { r_a^=r_c; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  199. void XORr_d() { r_a^=r_d; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  200. void XORr_e() { r_a^=r_e; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  201. void XORr_h() { r_a^=r_h; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  202. void XORr_l() { r_a^=r_l; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  203. void XORr_a() { r_a^=r_a; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  204. void XORHL() { r_a^=MMU_rb((r_h<<8)+r_l); r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  205. void XORn() { r_a^=MMU_rb(r_pc); r_pc++; r_a&=255; fz(r_a, 0); r_m=2; r_t=8; };
  206.  
  207. void INCr_b() { r_b++; r_b&=255; fz(r_b, 0); r_m=1; r_t=4; };
  208. void INCr_c() { r_c++; r_c&=255; fz(r_c, 0); r_m=1; r_t=4; };
  209. void INCr_d() { r_d++; r_d&=255; fz(r_d, 0); r_m=1; r_t=4; };
  210. void INCr_e() { r_e++; r_e&=255; fz(r_e, 0); r_m=1; r_t=4; };
  211. void INCr_h() { r_h++; r_h&=255; fz(r_h, 0); r_m=1; r_t=4; };
  212. void INCr_l() { r_l++; r_l&=255; fz(r_l, 0); r_m=1; r_t=4; };
  213. void INCr_a() { r_a++; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  214. 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; };
  215.  
  216. void DECr_b() { r_b--; r_b&=255; fz(r_b, 0); r_m=1; r_t=4; };
  217. void DECr_c() { r_c--; r_c&=255; fz(r_c, 0); r_m=1; r_t=4; };
  218. void DECr_d() { r_d--; r_d&=255; fz(r_d, 0); r_m=1; r_t=4; };
  219. void DECr_e() { r_e--; r_e&=255; fz(r_e, 0); r_m=1; r_t=4; };
  220. void DECr_h() { r_h--; r_h&=255; fz(r_h, 0); r_m=1; r_t=4; };
  221. void DECr_l() { r_l--; r_l&=255; fz(r_l, 0); r_m=1; r_t=4; };
  222. void DECr_a() { r_a--; r_a&=255; fz(r_a, 0); r_m=1; r_t=4; };
  223. 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; };
  224.  
  225. void INCBC() { r_c=(r_c+1)&255; if(!r_c) r_b=(r_b+1)&255; r_m=1; r_t=4; };
  226. void INCDE() { r_e=(r_e+1)&255; if(!r_e) r_d=(r_d+1)&255; r_m=1; r_t=4; };
  227. void INCHL() { r_l=(r_l+1)&255; if(!r_l) r_h=(r_h+1)&255; r_m=1; r_t=4; };
  228. void INCSP() { r_sp=(r_sp+1)&65535; r_m=1; r_t=4; };
  229.  
  230. void DECBC() { r_c=(r_c-1)&255; if(r_c==255) r_b=(r_b-1)&255; r_m=1; r_t=4; };
  231. void DECDE() { r_e=(r_e-1)&255; if(r_e==255) r_d=(r_d-1)&255; r_m=1; r_t=4; };
  232. void DECHL() { r_l=(r_l-1)&255; if(r_l==255) r_h=(r_h-1)&255; r_m=1; r_t=4; };
  233. void DECSP() { r_sp=(r_sp-1)&65535; r_m=1; r_t=4; };
  234.  
  235. /*--- Bit manipulation ---*/
  236. void BIT0b() { fz(r_b&0x01, 0); r_m=2; r_t=8; };
  237. void BIT0c() { fz(r_c&0x01, 0); r_m=2; r_t=8; };
  238. void BIT0d() { fz(r_d&0x01, 0); r_m=2; r_t=8; };
  239. void BIT0e() { fz(r_e&0x01, 0); r_m=2; r_t=8; };
  240. void BIT0h() { fz(r_h&0x01, 0); r_m=2; r_t=8; };
  241. void BIT0l() { fz(r_l&0x01, 0); r_m=2; r_t=8; };
  242. void BIT0a() { fz(r_a&0x01, 0); r_m=2; r_t=8; };
  243. void BIT0m() { fz(MMU_rb((r_h<<8)+r_l)&0x01, 0); r_m=3; r_t=12; };
  244.  
  245. void BIT1b() { fz(r_b&0x02, 0); r_m=2; r_t=8; };
  246. void BIT1c() { fz(r_c&0x02, 0); r_m=2; r_t=8; };
  247. void BIT1d() { fz(r_d&0x02, 0); r_m=2; r_t=8; };
  248. void BIT1e() { fz(r_e&0x02, 0); r_m=2; r_t=8; };
  249. void BIT1h() { fz(r_h&0x02, 0); r_m=2; r_t=8; };
  250. void BIT1l() { fz(r_l&0x02, 0); r_m=2; r_t=8; };
  251. void BIT1a() { fz(r_a&0x02, 0); r_m=2; r_t=8; };
  252. void BIT1m() { fz(MMU_rb((r_h<<8)+r_l)&0x02, 0); r_m=3; r_t=12; };
  253.  
  254. void BIT2b() { fz(r_b&0x04, 0); r_m=2; r_t=8; };
  255. void BIT2c() { fz(r_c&0x04, 0); r_m=2; r_t=8; };
  256. void BIT2d() { fz(r_d&0x04, 0); r_m=2; r_t=8; };
  257. void BIT2e() { fz(r_e&0x04, 0); r_m=2; r_t=8; };
  258. void BIT2h() { fz(r_h&0x04, 0); r_m=2; r_t=8; };
  259. void BIT2l() { fz(r_l&0x04, 0); r_m=2; r_t=8; };
  260. void BIT2a() { fz(r_a&0x04, 0); r_m=2; r_t=8; };
  261. void BIT2m() { fz(MMU_rb((r_h<<8)+r_l)&0x04, 0); r_m=3; r_t=12; };
  262.  
  263. void BIT3b() { fz(r_b&0x08, 0); r_m=2; r_t=8; };
  264. void BIT3c() { fz(r_c&0x08, 0); r_m=2; r_t=8; };
  265. void BIT3d() { fz(r_d&0x08, 0); r_m=2; r_t=8; };
  266. void BIT3e() { fz(r_e&0x08, 0); r_m=2; r_t=8; };
  267. void BIT3h() { fz(r_h&0x08, 0); r_m=2; r_t=8; };
  268. void BIT3l() { fz(r_l&0x08, 0); r_m=2; r_t=8; };
  269. void BIT3a() { fz(r_a&0x08, 0); r_m=2; r_t=8; };
  270. void BIT3m() { fz(MMU_rb((r_h<<8)+r_l)&0x08, 0); r_m=3; r_t=12; };
  271.  
  272. void BIT4b() { fz(r_b&0x10, 0); r_m=2; r_t=8; };
  273. void BIT4c() { fz(r_c&0x10, 0); r_m=2; r_t=8; };
  274. void BIT4d() { fz(r_d&0x10, 0); r_m=2; r_t=8; };
  275. void BIT4e() { fz(r_e&0x10, 0); r_m=2; r_t=8; };
  276. void BIT4h() { fz(r_h&0x10, 0); r_m=2; r_t=8; };
  277. void BIT4l() { fz(r_l&0x10, 0); r_m=2; r_t=8; };
  278. void BIT4a() { fz(r_a&0x10, 0); r_m=2; r_t=8; };
  279. void BIT4m() { fz(MMU_rb((r_h<<8)+r_l)&0x10, 0); r_m=3; r_t=12; };
  280.  
  281. void BIT5b() { fz(r_b&0x20, 0); r_m=2; r_t=8; };
  282. void BIT5c() { fz(r_c&0x20, 0); r_m=2; r_t=8; };
  283. void BIT5d() { fz(r_d&0x20, 0); r_m=2; r_t=8; };
  284. void BIT5e() { fz(r_e&0x20, 0); r_m=2; r_t=8; };
  285. void BIT5h() { fz(r_h&0x20, 0); r_m=2; r_t=8; };
  286. void BIT5l() { fz(r_l&0x20, 0); r_m=2; r_t=8; };
  287. void BIT5a() { fz(r_a&0x20, 0); r_m=2; r_t=8; };
  288. void BIT5m() { fz(MMU_rb((r_h<<8)+r_l)&0x20, 0); r_m=3; r_t=12; };
  289.  
  290. void BIT6b() { fz(r_b&0x40, 0); r_m=2; r_t=8; };
  291. void BIT6c() { fz(r_c&0x40, 0); r_m=2; r_t=8; };
  292. void BIT6d() { fz(r_d&0x40, 0); r_m=2; r_t=8; };
  293. void BIT6e() { fz(r_e&0x40, 0); r_m=2; r_t=8; };
  294. void BIT6h() { fz(r_h&0x40, 0); r_m=2; r_t=8; };
  295. void BIT6l() { fz(r_l&0x40, 0); r_m=2; r_t=8; };
  296. void BIT6a() { fz(r_a&0x40, 0); r_m=2; r_t=8; };
  297. void BIT6m() { fz(MMU_rb((r_h<<8)+r_l)&0x40, 0); r_m=3; r_t=12; };
  298.  
  299. void BIT7b() { fz(r_b&0x80, 0); r_m=2; r_t=8; };
  300. void BIT7c() { fz(r_c&0x80, 0); r_m=2; r_t=8; };
  301. void BIT7d() { fz(r_d&0x80, 0); r_m=2; r_t=8; };
  302. void BIT7e() { fz(r_e&0x80, 0); r_m=2; r_t=8; };
  303. void BIT7h() { fz(r_h&0x80, 0); r_m=2; r_t=8; };
  304. void BIT7l() { fz(r_l&0x80, 0); r_m=2; r_t=8; };
  305. void BIT7a() { fz(r_a&0x80, 0); r_m=2; r_t=8; };
  306. void BIT7m() { fz(MMU_rb((r_h<<8)+r_l)&0x80, 0); r_m=3; r_t=12; };
  307.  
  308. 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; };
  309. 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; };
  310. 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; };
  311. 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; };
  312.  
  313. 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; };
  314. 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; };
  315. 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; };
  316. 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; };
  317. 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; };
  318. 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; };
  319. 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; };
  320. 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; };
  321.  
  322. 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; };
  323. 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; };
  324. 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; };
  325. 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; };
  326. 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; };
  327. 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; };
  328. 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; };
  329. 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; };
  330.  
  331. 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; };
  332. 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; };
  333. 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; };
  334. 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; };
  335. 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; };
  336. 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; };
  337. 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; };
  338. 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; };
  339.  
  340. 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; };
  341. 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; };
  342. 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; };
  343. 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; };
  344. 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; };
  345. 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; };
  346. 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; };
  347. 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; };
  348.  
  349. 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; };
  350. 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; };
  351. 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; };
  352. 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; };
  353. 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; };
  354. 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; };
  355. 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; };
  356.  
  357. 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; };
  358. 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; };
  359. 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; };
  360. 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; };
  361. 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; };
  362. 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; };
  363. 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; };
  364.  
  365. 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; };
  366. 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; };
  367. 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; };
  368. 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; };
  369. 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; };
  370. 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; };
  371. 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; };
  372.  
  373. 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; };
  374. 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; };
  375. 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; };
  376. 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; };
  377. 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; };
  378. 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; };
  379. 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; };
  380.  
  381. void CPL() { r_a = (~r_a)&255; fz(r_a,1); r_m=1; r_t=4; };
  382. 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; };
  383.  
  384. void CCF() { int ci=r_f&0x10?0:0x10; r_f=(r_f&0xEF)+ci; r_m=1; r_t=4; };
  385. void SCF() { r_f|=0x10; r_m=1; r_t=4; };
  386.  
  387. /*--- Stack ---*/
  388. void PUSHBC() { r_sp--; MMU_wb(r_sp,r_b); r_sp--; MMU_wb(r_sp,r_c); r_m=3; r_t=12; };
  389. void PUSHDE() { r_sp--; MMU_wb(r_sp,r_d); r_sp--; MMU_wb(r_sp,r_e); r_m=3; r_t=12; };
  390. void PUSHHL() { r_sp--; MMU_wb(r_sp,r_h); r_sp--; MMU_wb(r_sp,r_l); r_m=3; r_t=12; };
  391. void PUSHAF() { r_sp--; MMU_wb(r_sp,r_a); r_sp--; MMU_wb(r_sp,r_f); r_m=3; r_t=12; };
  392.  
  393. void POPBC() { r_c=MMU_rb(r_sp); r_sp++; r_b=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
  394. void POPDE() { r_e=MMU_rb(r_sp); r_sp++; r_d=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
  395. void POPHL() { r_l=MMU_rb(r_sp); r_sp++; r_h=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
  396. void POPAF() { r_f=MMU_rb(r_sp); r_sp++; r_a=MMU_rb(r_sp); r_sp++; r_m=3; r_t=12; };
  397.  
  398. /*--- Jump ---*/
  399. void JPnn() { r_pc = MMU_rw(r_pc); r_m=3; r_t=12; };
  400. void JPHL() { r_pc=r_hl; r_m=1; r_t=4; };
  401. 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; };
  402. 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; };
  403. 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; };
  404. 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; };
  405.  
  406. 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; };
  407. 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; } };
  408. 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; } };
  409. 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; } };
  410. 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; } };
  411.  
  412. 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; } };
  413.  
  414. void CALLnn() { r_sp-=2; MMU_ww(r_sp,r_pc+2); r_pc=MMU_rw(r_pc); r_m=5; r_t=20; };
  415. 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; };
  416. 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; };
  417. 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; };
  418. 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; };
  419.  
  420. void RET() { r_pc=MMU_rw(r_sp); r_sp+=2; r_m=3; r_t=12; };
  421. void RETI() { r_ime=1; r_pc=MMU_rw(r_sp); r_sp+=2; r_m=3; r_t=12; };
  422. 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; } };
  423. 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; } };
  424. 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; } };
  425. 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; } };
  426.  
  427. void RST00() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x00; r_m=3; r_t=12; };
  428. void RST08() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x08; r_m=3; r_t=12; };
  429. void RST10() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x10; r_m=3; r_t=12; };
  430. void RST18() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x18; r_m=3; r_t=12; };
  431. void RST20() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x20; r_m=3; r_t=12; };
  432. void RST28() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x28; r_m=3; r_t=12; };
  433. void RST30() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x30; r_m=3; r_t=12; };
  434. void RST38() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x38; r_m=3; r_t=12; };
  435. void RST40() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x40; r_m=3; r_t=12; };
  436. void RST48() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x48; r_m=3; r_t=12; };
  437. void RST50() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x50; r_m=3; r_t=12; };
  438. void RST58() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x58; r_m=3; r_t=12; };
  439. void RST60() { r_sp-=2; MMU_ww(r_sp,r_pc); r_pc=0x60; r_m=3; r_t=12; };
  440.  
  441. void NOP() { r_m=1; r_t=4; };
  442. void HALT() { Z80_halt=1; r_m=1; r_t=4; };
  443.  
  444. void DI() { r_ime=0; r_m=1; r_t=4; };
  445. void EI() { r_ime=1; r_m=1; r_t=4; };
  446.  
  447.  
  448.  
  449. void XX() {
  450.       /*Undefined map entry*/
  451.       int opc = r_pc-1;
  452.       Z80_stop=1;
  453. };
  454.  
  455. void (*Z80_cbmap[256])() = {
  456.   // CB00
  457.   RLCr_b,
  458.   RLCr_c,
  459.   RLCr_d,
  460.   RLCr_e,
  461.   RLCr_h,
  462.   RLCr_l,
  463.   RLCHL,
  464.   RLCr_a,
  465.   RRCr_b,
  466.   RRCr_c,
  467.   RRCr_d,
  468.   RRCr_e,
  469.   RRCr_h,
  470.   RRCr_l,
  471.   RRCHL,
  472.   RRCr_a,
  473.  
  474.   // CB10
  475.   RLr_b,
  476.   RLr_c,
  477.   RLr_d,
  478.   RLr_e,
  479.   RLr_h,
  480.   RLr_l,
  481.   RLHL,
  482.   RLr_a,
  483.   RRr_b,
  484.   RRr_c,
  485.   RRr_d,
  486.   RRr_e,
  487.   RRr_h,
  488.   RRr_l,
  489.   RRHL,
  490.   RRr_a,
  491.  
  492.   // CB20
  493.   SLAr_b,
  494.   SLAr_c,
  495.   SLAr_d,
  496.   SLAr_e,
  497.   SLAr_h,
  498.   SLAr_l,
  499.   XX,
  500.   SLAr_a,
  501.   SRAr_b,
  502.   SRAr_c,
  503.   SRAr_d,
  504.   SRAr_e,
  505.   SRAr_h,
  506.   SRAr_l,
  507.   XX,
  508.   SRAr_a,
  509.  
  510.   // CB30
  511.   SWAPr_b,
  512.   SWAPr_c,
  513.   SWAPr_d,
  514.   SWAPr_e,
  515.   SWAPr_h,
  516.   SWAPr_l,
  517.   XX,
  518.   SWAPr_a,
  519.   SRLr_b,
  520.   SRLr_c,
  521.   SRLr_d,
  522.   SRLr_e,
  523.   SRLr_h,
  524.   SRLr_l,
  525.   XX,
  526.   SRLr_a,
  527.  
  528.   // CB40
  529.   BIT0b,
  530.   BIT0c,
  531.   BIT0d,
  532.   BIT0e,
  533.   BIT0h,
  534.   BIT0l,
  535.   BIT0m,
  536.   BIT0a,
  537.   BIT1b,
  538.   BIT1c,
  539.   BIT1d,
  540.   BIT1e,
  541.   BIT1h,
  542.   BIT1l,
  543.   BIT1m,
  544.   BIT1a,
  545.  
  546.   // CB50
  547.   BIT2b,
  548.   BIT2c,
  549.   BIT2d,
  550.   BIT2e,
  551.   BIT2h,
  552.   BIT2l,
  553.   BIT2m,
  554.   BIT2a,
  555.   BIT3b,
  556.   BIT3c,
  557.   BIT3d,
  558.   BIT3e,
  559.   BIT3h,
  560.   BIT3l,
  561.   BIT3m,
  562.   BIT3a,
  563.  
  564.   // CB60
  565.   BIT4b,
  566.   BIT4c,
  567.   BIT4d,
  568.   BIT4e,
  569.   BIT4h,
  570.   BIT4l,
  571.   BIT4m,
  572.   BIT4a,
  573.   BIT5b,
  574.   BIT5c,
  575.   BIT5d,
  576.   BIT5e,
  577.   BIT5h,
  578.   BIT5l,
  579.   BIT5m,
  580.   BIT5a,
  581.  
  582.   // CB70
  583.   BIT6b,
  584.   BIT6c,
  585.   BIT6d,
  586.   BIT6e,
  587.   BIT6h,
  588.   BIT6l,
  589.   BIT6m,
  590.   BIT6a,
  591.   BIT7b,
  592.   BIT7c,
  593.   BIT7d,
  594.   BIT7e,
  595.   BIT7h,
  596.   BIT7l,
  597.   BIT7m,
  598.   BIT7a,
  599.  
  600.   // CB80
  601.   XX,
  602.   XX,
  603.   XX,
  604.   XX,
  605.   XX,
  606.   XX,
  607.   XX,
  608.   XX,
  609.   XX,
  610.   XX,
  611.   XX,
  612.   XX,
  613.   XX,
  614.   XX,
  615.   XX,
  616.   XX,
  617.  
  618.   // CB90
  619.   XX,
  620.   XX,
  621.   XX,
  622.   XX,
  623.   XX,
  624.   XX,
  625.   XX,
  626.   XX,
  627.   XX,
  628.   XX,
  629.   XX,
  630.   XX,
  631.   XX,
  632.   XX,
  633.   XX,
  634.   XX,
  635.  
  636.   // CBA0
  637.   XX,
  638.   XX,
  639.   XX,
  640.   XX,
  641.   XX,
  642.   XX,
  643.   XX,
  644.   XX,
  645.   XX,
  646.   XX,
  647.   XX,
  648.   XX,
  649.   XX,
  650.   XX,
  651.   XX,
  652.   XX,
  653.  
  654.   // CBB0
  655.   XX,
  656.   XX,
  657.   XX,
  658.   XX,
  659.   XX,
  660.   XX,
  661.   XX,
  662.   XX,
  663.   XX,
  664.   XX,
  665.   XX,
  666.   XX,
  667.   XX,
  668.   XX,
  669.   XX,
  670.   XX,
  671.  
  672.   // CBC0
  673.   XX,
  674.   XX,
  675.   XX,
  676.   XX,
  677.   XX,
  678.   XX,
  679.   XX,
  680.   XX,
  681.   XX,
  682.   XX,
  683.   XX,
  684.   XX,
  685.   XX,
  686.   XX,
  687.   XX,
  688.   XX,
  689.  
  690.   // CBD0
  691.   XX,
  692.   XX,
  693.   XX,
  694.   XX,
  695.   XX,
  696.   XX,
  697.   XX,
  698.   XX,
  699.   XX,
  700.   XX,
  701.   XX,
  702.   XX,
  703.   XX,
  704.   XX,
  705.   XX,
  706.   XX,
  707.  
  708.   // CBE0
  709.   XX,
  710.   XX,
  711.   XX,
  712.   XX,
  713.   XX,
  714.   XX,
  715.   XX,
  716.   XX,
  717.   XX,
  718.   XX,
  719.   XX,
  720.   XX,
  721.   XX,
  722.   XX,
  723.   XX,
  724.   XX,
  725.  
  726.   // CBF0
  727.   XX,
  728.   XX,
  729.   XX,
  730.   XX,
  731.   XX,
  732.   XX,
  733.   XX,
  734.   XX,
  735.   XX,
  736.   XX,
  737.   XX,
  738.   XX,
  739.   XX,
  740.   XX,
  741.   XX,
  742.   XX
  743. };
  744.  
  745. void MAPcb() {
  746.       int i=MMU_rb(r_pc); r_pc++;
  747.       r_pc &= 65535;
  748.       if(Z80_cbmap[i]) Z80_cbmap[i]();
  749. };
  750.  
  751. void Z80_reset() {
  752.     r_a=0; r_b=0; r_c=0; r_d=0; r_e=0; r_h=0; r_l=0; r_f=0;
  753.     r_sp=0; r_pc=0; r_i=0; r_r=0;
  754.     r_m=0; r_t=0;
  755.     Z80_halt=0; Z80_stop=0;
  756.     clock_m=0; clock_t=0;
  757.     r_ime=1;
  758. };
  759.  
  760. void (*Z80_map[256])() = {
  761.   // 00
  762.   NOP,
  763.   LDBCnn,
  764.   LDBCmA,
  765.   INCBC,
  766.   INCr_b,
  767.   DECr_b,
  768.   LDrn_b,
  769.   RLCA,
  770.   LDmmSP,
  771.   ADDHLBC,
  772.   LDABCm,
  773.   DECBC,
  774.   INCr_c,
  775.   DECr_c,
  776.   LDrn_c,
  777.   RRCA,
  778.  
  779.   // 10
  780.   DJNZn,
  781.   LDDEnn,
  782.   LDDEmA,
  783.   INCDE,
  784.   INCr_d,
  785.   DECr_d,
  786.   LDrn_d,
  787.   RLA,
  788.   JRn,
  789.   ADDHLDE,
  790.   LDADEm,
  791.   DECDE,
  792.   INCr_e,
  793.   DECr_e,
  794.   LDrn_e,
  795.   RRA,
  796.  
  797.   // 20
  798.   JRNZn,
  799.   LDHLnn,
  800.   LDHLIA,
  801.   INCHL,
  802.   INCr_h,
  803.   DECr_h,
  804.   LDrn_h,
  805.   XX,
  806.   JRZn,
  807.   ADDHLHL,
  808.   LDAHLI,
  809.   DECHL,
  810.   INCr_l,
  811.   DECr_l,
  812.   LDrn_l,
  813.   CPL,
  814.  
  815.   // 30
  816.   JRNCn,
  817.   LDSPnn,
  818.   LDHLDA,
  819.   INCSP,
  820.   INCHLm,
  821.   DECHLm,
  822.   LDHLmn,
  823.   SCF,
  824.   JRCn,
  825.   ADDHLSP,
  826.   LDAHLD,
  827.   DECSP,
  828.   INCr_a,
  829.   DECr_a,
  830.   LDrn_a,
  831.   CCF,
  832.  
  833.   // 40
  834.   LDrr_bb,
  835.   LDrr_bc,
  836.   LDrr_bd,
  837.   LDrr_be,
  838.   LDrr_bh,
  839.   LDrr_bl,
  840.   LDrHLm_b,
  841.   LDrr_ba,
  842.   LDrr_cb,
  843.   LDrr_cc,
  844.   LDrr_cd,
  845.   LDrr_ce,
  846.   LDrr_ch,
  847.   LDrr_cl,
  848.   LDrHLm_c,
  849.   LDrr_ca,
  850.  
  851.   // 50
  852.   LDrr_db,
  853.   LDrr_dc,
  854.   LDrr_dd,
  855.   LDrr_de,
  856.   LDrr_dh,
  857.   LDrr_dl,
  858.   LDrHLm_d,
  859.   LDrr_da,
  860.   LDrr_eb,
  861.   LDrr_ec,
  862.   LDrr_ed,
  863.   LDrr_ee,
  864.   LDrr_eh,
  865.   LDrr_el,
  866.   LDrHLm_e,
  867.   LDrr_ea,
  868.  
  869.   // 60
  870.   LDrr_hb,
  871.   LDrr_hc,
  872.   LDrr_hd,
  873.   LDrr_he,
  874.   LDrr_hh,
  875.   LDrr_hl,
  876.   LDrHLm_h,
  877.   LDrr_ha,
  878.   LDrr_lb,
  879.   LDrr_lc,
  880.   LDrr_ld,
  881.   LDrr_le,
  882.   LDrr_lh,
  883.   LDrr_ll,
  884.   LDrHLm_l,
  885.   LDrr_la,
  886.  
  887.   // 70
  888.   LDHLmr_b,
  889.   LDHLmr_c,
  890.   LDHLmr_d,
  891.   LDHLmr_e,
  892.   LDHLmr_h,
  893.   LDHLmr_l,
  894.   HALT,
  895.   LDHLmr_a,
  896.   LDrr_ab,
  897.   LDrr_ac,
  898.   LDrr_ad,
  899.   LDrr_ae,
  900.   LDrr_ah,
  901.   LDrr_al,
  902.   LDrHLm_a,
  903.   LDrr_aa,
  904.  
  905.   // 80
  906.   ADDr_b,
  907.   ADDr_c,
  908.   ADDr_d,
  909.   ADDr_e,
  910.   ADDr_h,
  911.   ADDr_l,
  912.   ADDHL,
  913.   ADDr_a,
  914.   ADCr_b,
  915.   ADCr_c,
  916.   ADCr_d,
  917.   ADCr_e,
  918.   ADCr_h,
  919.   ADCr_l,
  920.   ADCHL,
  921.   ADCr_a,
  922.  
  923.   // 90
  924.   SUBr_b,
  925.   SUBr_c,
  926.   SUBr_d,
  927.   SUBr_e,
  928.   SUBr_h,
  929.   SUBr_l,
  930.   SUBHL,
  931.   SUBr_a,
  932.   SBCr_b,
  933.   SBCr_c,
  934.   SBCr_d,
  935.   SBCr_e,
  936.   SBCr_h,
  937.   SBCr_l,
  938.   SBCHL,
  939.   SBCr_a,
  940.  
  941.   // A0
  942.   ANDr_b,
  943.   ANDr_c,
  944.   ANDr_d,
  945.   ANDr_e,
  946.   ANDr_h,
  947.   ANDr_l,
  948.   ANDHL,
  949.   ANDr_a,
  950.   XORr_b,
  951.   XORr_c,
  952.   XORr_d,
  953.   XORr_e,
  954.   XORr_h,
  955.   XORr_l,
  956.   XORHL,
  957.   XORr_a,
  958.  
  959.   // B0
  960.   ORr_b,
  961.   ORr_c,
  962.   ORr_d,
  963.   ORr_e,
  964.   ORr_h,
  965.   ORr_l,
  966.   ORHL,
  967.   ORr_a,
  968.   CPr_b,
  969.   CPr_c,
  970.   CPr_d,
  971.   CPr_e,
  972.   CPr_h,
  973.   CPr_l,
  974.   CPHL,
  975.   CPr_a,
  976.  
  977.   // C0
  978.   RETNZ,
  979.   POPBC,
  980.   JPNZnn,
  981.   JPnn,
  982.   CALLNZnn,
  983.   PUSHBC,
  984.   ADDn,
  985.   RST00,
  986.   RETZ,
  987.   RET,
  988.   JPZnn,
  989.   MAPcb,
  990.   CALLZnn,
  991.   CALLnn,
  992.   ADCn,
  993.   RST08,
  994.  
  995.   // D0
  996.   RETNC,
  997.   POPDE,
  998.   JPNCnn,
  999.   XX,
  1000.   CALLNCnn,
  1001.   PUSHDE,
  1002.   SUBn,
  1003.   RST10,
  1004.   RETC,
  1005.   RETI,
  1006.   JPCnn,
  1007.   XX,
  1008.   CALLCnn,
  1009.   XX,
  1010.   SBCn,
  1011.   RST18,
  1012.  
  1013.   // E0
  1014.   LDIOnA,
  1015.   POPHL,
  1016.   LDIOCA,
  1017.   XX,
  1018.   XX,
  1019.   PUSHHL,
  1020.   ANDn,
  1021.   RST20,
  1022.   ADDSPn,
  1023.   JPHL,
  1024.   LDmmA,
  1025.   XX,
  1026.   XX,
  1027.   XX,
  1028.   ORn,
  1029.   RST28,
  1030.  
  1031.   // F0
  1032.   LDAIOn,
  1033.   POPAF,
  1034.   LDAIOC,
  1035.   DI,
  1036.   XX,
  1037.   PUSHAF,
  1038.   XORn,
  1039.   RST30,
  1040.   LDHLSPn,
  1041.   XX,
  1042.   LDAmm,
  1043.   EI,
  1044.   XX,
  1045.   XX,
  1046.   CPn,
  1047.   RST38
  1048. };
  1049.  
  1050. void Z80_exec() {
  1051.     r_r = (r_r+1) & 127;
  1052.     Z80_map[MMU_rb(r_pc++)]();
  1053.     r_pc &= 65535;
  1054.     clock_m += r_m; clock_t += r_t;
  1055.     if(MMU_inbios && r_pc == 0x0100) MMU_inbios=0;
  1056. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement