op_write.b 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. sta_addr(0x8d, regs.p.m, regs.a.w),
  2. stx_addr(0x8e, regs.p.x, regs.x.w),
  3. sty_addr(0x8c, regs.p.x, regs.y.w),
  4. stz_addr(0x9c, regs.p.m, 0x0000) {
  5. 1:aa.l = op_readpc();
  6. 2:aa.h = op_readpc();
  7. 3:if($1) last_cycle();
  8. op_writedbr(aa.w, $2);
  9. if($1) end;
  10. 4:last_cycle();
  11. op_writedbr(aa.w + 1, $2 >> 8);
  12. }
  13. sta_addrx(0x9d, regs.p.m, regs.a.w),
  14. stz_addrx(0x9e, regs.p.m, 0x0000) {
  15. 1:aa.l = op_readpc();
  16. 2:aa.h = op_readpc();
  17. 3:op_io();
  18. 4:if($1) last_cycle();
  19. op_writedbr(aa.w + regs.x.w, $2);
  20. if($1) end;
  21. 5:last_cycle();
  22. op_writedbr(aa.w + regs.x.w + 1, $2 >> 8);
  23. }
  24. sta_addry(0x99) {
  25. 1:aa.l = op_readpc();
  26. 2:aa.h = op_readpc();
  27. 3:op_io();
  28. 4:if(regs.p.m) last_cycle();
  29. op_writedbr(aa.w + regs.y.w, regs.a.l);
  30. if(regs.p.m) end;
  31. 5:last_cycle();
  32. op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
  33. }
  34. sta_long(0x8f) {
  35. 1:aa.l = op_readpc();
  36. 2:aa.h = op_readpc();
  37. 3:aa.b = op_readpc();
  38. 4:if(regs.p.m) last_cycle();
  39. op_writelong(aa.d, regs.a.l);
  40. if(regs.p.m) end;
  41. 5:last_cycle();
  42. op_writelong(aa.d + 1, regs.a.h);
  43. }
  44. sta_longx(0x9f) {
  45. 1:aa.l = op_readpc();
  46. 2:aa.h = op_readpc();
  47. 3:aa.b = op_readpc();
  48. 4:if(regs.p.m) last_cycle();
  49. op_writelong(aa.d + regs.x.w, regs.a.l);
  50. if(regs.p.m) end;
  51. 5:last_cycle();
  52. op_writelong(aa.d + regs.x.w + 1, regs.a.h);
  53. }
  54. sta_dp(0x85, regs.p.m, regs.a.w),
  55. stx_dp(0x86, regs.p.x, regs.x.w),
  56. sty_dp(0x84, regs.p.x, regs.y.w),
  57. stz_dp(0x64, regs.p.m, 0x0000) {
  58. 1:dp = op_readpc();
  59. 2:op_io_cond2();
  60. 3:if($1) last_cycle();
  61. op_writedp(dp, $2);
  62. if($1) end;
  63. 4:last_cycle();
  64. op_writedp(dp + 1, $2 >> 8);
  65. }
  66. sta_dpx(0x95, regs.p.m, regs.a.w),
  67. sty_dpx(0x94, regs.p.x, regs.y.w),
  68. stz_dpx(0x74, regs.p.m, 0x0000) {
  69. 1:dp = op_readpc();
  70. 2:op_io_cond2();
  71. 3:op_io();
  72. 4:if($1) last_cycle();
  73. op_writedp(dp + regs.x.w, $2);
  74. if($1) end;
  75. 5:last_cycle();
  76. op_writedp(dp + regs.x.w + 1, $2 >> 8);
  77. }
  78. stx_dpy(0x96) {
  79. 1:dp = op_readpc();
  80. 2:op_io_cond2();
  81. 3:op_io();
  82. 4:if(regs.p.x) last_cycle();
  83. op_writedp(dp + regs.y.w, regs.x.l);
  84. if(regs.p.x) end;
  85. 5:last_cycle();
  86. op_writedp(dp + regs.y.w + 1, regs.x.h);
  87. }
  88. sta_idp(0x92) {
  89. 1:dp = op_readpc();
  90. 2:op_io_cond2();
  91. 3:aa.l = op_readdp(dp);
  92. 4:aa.h = op_readdp(dp + 1);
  93. 5:if(regs.p.m) last_cycle();
  94. op_writedbr(aa.w, regs.a.l);
  95. if(regs.p.m) end;
  96. 6:last_cycle();
  97. op_writedbr(aa.w + 1, regs.a.h);
  98. }
  99. sta_ildp(0x87) {
  100. 1:dp = op_readpc();
  101. 2:op_io_cond2();
  102. 3:aa.l = op_readdp(dp);
  103. 4:aa.h = op_readdp(dp + 1);
  104. 5:aa.b = op_readdp(dp + 2);
  105. 6:if(regs.p.m) last_cycle();
  106. op_writelong(aa.d, regs.a.l);
  107. if(regs.p.m) end;
  108. 7:last_cycle();
  109. op_writelong(aa.d + 1, regs.a.h);
  110. }
  111. sta_idpx(0x81) {
  112. 1:dp = op_readpc();
  113. 2:op_io_cond2();
  114. 3:op_io();
  115. 4:aa.l = op_readdp(dp + regs.x.w);
  116. 5:aa.h = op_readdp(dp + regs.x.w + 1);
  117. 6:if(regs.p.m) last_cycle();
  118. op_writedbr(aa.w, regs.a.l);
  119. if(regs.p.m) end;
  120. 7:last_cycle();
  121. op_writedbr(aa.w + 1, regs.a.h);
  122. }
  123. sta_idpy(0x91) {
  124. 1:dp = op_readpc();
  125. 2:op_io_cond2();
  126. 3:aa.l = op_readdp(dp);
  127. 4:aa.h = op_readdp(dp + 1);
  128. 5:op_io();
  129. 6:if(regs.p.m) last_cycle();
  130. op_writedbr(aa.w + regs.y.w, regs.a.l);
  131. if(regs.p.m) end;
  132. 7:last_cycle();
  133. op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
  134. }
  135. sta_ildpy(0x97) {
  136. 1:dp = op_readpc();
  137. 2:op_io_cond2();
  138. 3:aa.l = op_readdp(dp);
  139. 4:aa.h = op_readdp(dp + 1);
  140. 5:aa.b = op_readdp(dp + 2);
  141. 6:if(regs.p.m) last_cycle();
  142. op_writelong(aa.d + regs.y.w, regs.a.l);
  143. if(regs.p.m) end;
  144. 7:last_cycle();
  145. op_writelong(aa.d + regs.y.w + 1, regs.a.h);
  146. }
  147. sta_sr(0x83) {
  148. 1:sp = op_readpc();
  149. 2:op_io();
  150. 3:if(regs.p.m) last_cycle();
  151. op_writesp(sp, regs.a.l);
  152. if(regs.p.m) end;
  153. 4:last_cycle();
  154. op_writesp(sp + 1, regs.a.h);
  155. }
  156. sta_isry(0x93) {
  157. 1:sp = op_readpc();
  158. 2:op_io();
  159. 3:aa.l = op_readsp(sp);
  160. 4:aa.h = op_readsp(sp + 1);
  161. 5:op_io();
  162. 6:if(regs.p.m) last_cycle();
  163. op_writedbr(aa.w + regs.y.w, regs.a.l);
  164. if(regs.p.m) end;
  165. 7:last_cycle();
  166. op_writedbr(aa.w + regs.y.w + 1, regs.a.h);
  167. }