4 @ notaz's SPC700 Emulator v0.11 - Assembler Output
6 @ (c) Copyright 2006 notaz, All rights reserved.
8 @ this is a rewrite of spc700.cpp in ARM asm, inspired by other asm CPU cores like
9 @ Cyclone and DrZ80. It is meant to be used in Snes9x emulator ports for ARM platforms.
11 @ the code is released under Snes9x license. See spcgen.c or any other source file
12 @ from Snes9x source tree.
16 .extern CPU @ for STOP and SLEEP
19 .extern S9xAPUGetByteZ
20 .extern S9xAPUSetByteZ
22 .global spc700_execute @ int cycles
23 .type spc700_execute, function
37 .equ iapu_directpage, 0x00
39 .equ iapu_extraram, 0x48
40 .equ iapu_allregs_load, 0x30
41 .equ iapu_allregs_save, 0x34
52 @ --------------------------- Framework --------------------------
53 spc700_execute: @ int cycles
55 ldr context,=IAPU @ Pointer to SIAPU struct
56 mov cycles,r0 @ Cycles
57 add r0,context,#iapu_allregs_load
58 ldmia r0,{opcodes,spc_pc,spc_ya,spc_p,spc_x,spc_ram}
59 uxtb spc_s,spc_x,ror #8
62 ldrb opcode,[spc_pc],#1 @ Fetch first opcode
63 ldr pc,[opcodes,opcode,lsl #2] @ Jump to opcode handler
66 @ We come back here after execution
68 orr spc_x,spc_x,spc_s,lsl #8
69 add r0,context,#iapu_allregs_save
70 stmia r0,{spc_pc,spc_ya,spc_p,spc_x}
79 subs cycles,cycles,#42
80 ldrgeb opcode,[spc_pc],#1
81 ldrge pc,[opcodes,opcode,lsl #2]
93 ldr r0,[context,#iapu_extraram]
96 subs cycles,cycles,#168
97 ldrgeb opcode,[spc_pc],#1
98 ldrge pc,[opcodes,opcode,lsl #2]
108 ldr spc_ram,[context,#iapu_ram]
109 subs cycles,cycles,#84
110 ldrgeb opcode,[spc_pc],#1
111 ldrge pc,[opcodes,opcode,lsl #2]
118 ldr spc_ram,[context,#iapu_ram]
120 addeq spc_pc,spc_pc,#1
121 ldrnesb r0,[spc_pc],#1
122 addne spc_pc,spc_pc,r0
123 subne cycles,cycles,#42
124 subs cycles,cycles,#105
125 ldrgeb opcode,[spc_pc],#1
126 ldrge pc,[opcodes,opcode,lsl #2]
133 ldr spc_ram,[context,#iapu_ram]
135 and spc_p,spc_p,#0xff
136 orr spc_p,spc_p,spc_ya,lsl #24
137 subs cycles,cycles,#63
138 ldrgeb opcode,[spc_pc],#1
139 ldrge pc,[opcodes,opcode,lsl #2]
148 ldr spc_ram,[context,#iapu_ram]
150 and spc_p,spc_p,#0xff
151 orr spc_p,spc_p,spc_ya,lsl #24
152 subs cycles,cycles,#84
153 ldrgeb opcode,[spc_pc],#1
154 ldrge pc,[opcodes,opcode,lsl #2]
161 ldr spc_ram,[context,#iapu_ram]
163 and spc_p,spc_p,#0xff
164 orr spc_p,spc_p,spc_ya,lsl #24
165 subs cycles,cycles,#63
166 ldrgeb opcode,[spc_pc],#1
167 ldrge pc,[opcodes,opcode,lsl #2]
175 ldr r12,[context,#iapu_directpage]
180 ldr spc_ram,[context,#iapu_ram]
182 and spc_p,spc_p,#0xff
183 orr spc_p,spc_p,spc_ya,lsl #24
184 subs cycles,cycles,#126
185 ldrgeb opcode,[spc_pc],#1
186 ldrge pc,[opcodes,opcode,lsl #2]
193 and spc_p,spc_p,#0xff
194 orr spc_p,spc_p,spc_ya,lsl #24
195 subs cycles,cycles,#42
196 ldrgeb opcode,[spc_pc],#1
197 ldrge pc,[opcodes,opcode,lsl #2]
204 orr spc_x,spc_x,r0,lsl #24 @ save from harm
207 orr r0,r0,spc_x,lsr #24
208 and spc_x,spc_x,#0xff
209 and spc_p,spc_p,#0xff
210 orr spc_p,spc_p,r0,lsl #24
213 ldr spc_ram,[context,#iapu_ram]
214 subs cycles,cycles,#126
215 ldrgeb opcode,[spc_pc],#1
216 ldrge pc,[opcodes,opcode,lsl #2]
227 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
230 and spc_x,spc_x,#0xff
233 orrne spc_p,spc_p,#flag_c
234 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
235 subs cycles,cycles,#105
236 ldrgeb opcode,[spc_pc],#1
237 ldrge pc,[opcodes,opcode,lsl #2]
245 orrne spc_p,spc_p,#flag_c
246 biceq spc_p,spc_p,#flag_c
248 and spc_p,spc_p,#0xff
249 orr spc_p,spc_p,r0,lsl #24
252 ldr spc_ram,[context,#iapu_ram]
253 subs cycles,cycles,#84
254 ldrgeb opcode,[spc_pc],#1
255 ldrge pc,[opcodes,opcode,lsl #2]
266 orrne spc_p,spc_p,#flag_c
267 biceq spc_p,spc_p,#flag_c
269 and spc_p,spc_p,#0xff
270 orr spc_p,spc_p,r0,lsl #24
273 ldr spc_ram,[context,#iapu_ram]
274 subs cycles,cycles,#105
275 ldrgeb opcode,[spc_pc],#1
276 ldrge pc,[opcodes,opcode,lsl #2]
285 and spc_p,spc_p,#0x7d @ clear N & Z
288 strb spc_p,[r1,#0x100]
290 orr spc_p,spc_p,r0,lsl #24
291 subs cycles,cycles,#84
292 ldrgeb opcode,[spc_pc],#1
293 ldrge pc,[opcodes,opcode,lsl #2]
301 orr spc_x,spc_x,r0,lsl #16 @ save from memhandler
304 and spc_p,spc_p,#0xff
305 orr spc_p,spc_p,r2,lsl #24
308 and spc_x,spc_x,#0xff
310 ldr spc_ram,[context,#iapu_ram]
311 subs cycles,cycles,#126
312 ldrgeb opcode,[spc_pc],#1
313 ldrge pc,[opcodes,opcode,lsl #2]
318 sub r0,spc_pc,spc_ram
328 and spc_p,spc_p,#0x7d @ clear N & Z
331 strb spc_p,[r1,#0x100]
333 orr spc_p,spc_p,#flag_b
334 bic spc_p,spc_p,#flag_i
335 ldr r0,[context,#iapu_extraram]
337 add spc_pc,spc_ram,r0
338 subs cycles,cycles,#168
339 ldrgeb opcode,[spc_pc],#1
340 ldrge pc,[opcodes,opcode,lsl #2]
345 tst spc_p,#0x80000000
346 addne spc_pc,spc_pc,#1
347 ldreqsb r0,[spc_pc],#1
348 addeq spc_pc,spc_pc,r0
349 subeq cycles,cycles,#42
350 subs cycles,cycles,#42
351 ldrgeb opcode,[spc_pc],#1
352 ldrge pc,[opcodes,opcode,lsl #2]
357 sub r0,spc_pc,spc_ram
363 ldr r0,[context,#iapu_extraram]
365 add spc_pc,spc_ram,r0
366 subs cycles,cycles,#168
367 ldrgeb opcode,[spc_pc],#1
368 ldrge pc,[opcodes,opcode,lsl #2]
378 ldr spc_ram,[context,#iapu_ram]
379 subs cycles,cycles,#84
380 ldrgeb opcode,[spc_pc],#1
381 ldrge pc,[opcodes,opcode,lsl #2]
388 ldr spc_ram,[context,#iapu_ram]
390 addne spc_pc,spc_pc,#1
391 ldreqsb r0,[spc_pc],#1
392 addeq spc_pc,spc_pc,r0
393 subeq cycles,cycles,#42
394 subs cycles,cycles,#105
395 ldrgeb opcode,[spc_pc],#1
396 ldrge pc,[opcodes,opcode,lsl #2]
404 ldr spc_ram,[context,#iapu_ram]
406 and spc_p,spc_p,#0xff
407 orr spc_p,spc_p,spc_ya,lsl #24
408 subs cycles,cycles,#84
409 ldrgeb opcode,[spc_pc],#1
410 ldrge pc,[opcodes,opcode,lsl #2]
420 ldr spc_ram,[context,#iapu_ram]
422 and spc_p,spc_p,#0xff
423 orr spc_p,spc_p,spc_ya,lsl #24
424 subs cycles,cycles,#105
425 ldrgeb opcode,[spc_pc],#1
426 ldrge pc,[opcodes,opcode,lsl #2]
434 add r0,r0,spc_ya,lsr #8
436 ldr spc_ram,[context,#iapu_ram]
438 and spc_p,spc_p,#0xff
439 orr spc_p,spc_p,spc_ya,lsl #24
440 subs cycles,cycles,#105
441 ldrgeb opcode,[spc_pc],#1
442 ldrge pc,[opcodes,opcode,lsl #2]
448 ldr r12,[context,#iapu_directpage]
452 add r0,r0,spc_ya,lsr #8
454 ldr spc_ram,[context,#iapu_ram]
456 and spc_p,spc_p,#0xff
457 orr spc_p,spc_p,spc_ya,lsl #24
458 subs cycles,cycles,#126
459 ldrgeb opcode,[spc_pc],#1
460 ldrge pc,[opcodes,opcode,lsl #2]
469 and spc_p,spc_p,#0xff
470 orr spc_p,spc_p,r0,lsl #24
473 ldr spc_ram,[context,#iapu_ram]
474 subs cycles,cycles,#105
475 ldrgeb opcode,[spc_pc],#1
476 ldrge pc,[opcodes,opcode,lsl #2]
483 orr spc_x,spc_x,r0,lsl #24
486 orr r0,r0,spc_x,lsr #24
487 and spc_x,spc_x,#0xff
488 and spc_p,spc_p,#0xff
489 orr spc_p,spc_p,r0,lsl #24
492 ldr spc_ram,[context,#iapu_ram]
493 subs cycles,cycles,#105
494 ldrgeb opcode,[spc_pc],#1
495 ldrge pc,[opcodes,opcode,lsl #2]
509 and spc_p,spc_p,#0xff
510 orr spc_p,spc_p,r0,lsl #16
512 orrne spc_p,spc_p,#0x01000000
521 ldr spc_ram,[context,#iapu_ram]
522 subs cycles,cycles,#126
523 ldrgeb opcode,[spc_pc],#1
524 ldrge pc,[opcodes,opcode,lsl #2]
534 orrne spc_p,spc_p,#flag_c
535 biceq spc_p,spc_p,#flag_c
537 and spc_p,spc_p,#0xff
538 orr spc_p,spc_p,r0,lsl #24
541 ldr spc_ram,[context,#iapu_ram]
542 subs cycles,cycles,#105
543 ldrgeb opcode,[spc_pc],#1
544 ldrge pc,[opcodes,opcode,lsl #2]
550 orrne spc_p,spc_p,#flag_c
551 biceq spc_p,spc_p,#flag_c
553 and spc_ya,spc_ya,#0xff00
554 orr spc_ya,spc_ya,r0,lsl #1
555 and spc_p,spc_p,#0xff
556 orr spc_p,spc_p,spc_ya,lsl #24
557 subs cycles,cycles,#42
558 ldrgeb opcode,[spc_pc],#1
559 ldrge pc,[opcodes,opcode,lsl #2]
565 and spc_x,spc_x,#0xff
566 and spc_p,spc_p,#0xff
567 orr spc_p,spc_p,spc_x,lsl #24
568 subs cycles,cycles,#42
569 ldrgeb opcode,[spc_pc],#1
570 ldrge pc,[opcodes,opcode,lsl #2]
579 ldr spc_ram,[context,#iapu_ram]
581 orrge spc_p,spc_p,#flag_c
582 biclt spc_p,spc_p,#flag_c
583 and spc_p,spc_p,#0xff
584 orr spc_p,spc_p,r12,lsl #24
585 subs cycles,cycles,#84
586 ldrgeb opcode,[spc_pc],#1
587 ldrge pc,[opcodes,opcode,lsl #2]
603 ldr spc_ram,[context,#iapu_ram]
606 add spc_pc,spc_ram,r0
607 subs cycles,cycles,#126
608 ldrgeb opcode,[spc_pc],#1
609 ldrge pc,[opcodes,opcode,lsl #2]
614 bic spc_p,spc_p,#flag_d
615 str spc_ram,[context,#iapu_directpage]
616 subs cycles,cycles,#42
617 ldrgeb opcode,[spc_pc],#1
618 ldrge pc,[opcodes,opcode,lsl #2]
623 sub r0,spc_pc,spc_ram
629 ldr r0,[context,#iapu_extraram]
631 add spc_pc,spc_ram,r0
632 subs cycles,cycles,#168
633 ldrgeb opcode,[spc_pc],#1
634 ldrge pc,[opcodes,opcode,lsl #2]
644 ldr spc_ram,[context,#iapu_ram]
645 subs cycles,cycles,#84
646 ldrgeb opcode,[spc_pc],#1
647 ldrge pc,[opcodes,opcode,lsl #2]
654 ldr spc_ram,[context,#iapu_ram]
656 addeq spc_pc,spc_pc,#1
657 ldrnesb r0,[spc_pc],#1
658 addne spc_pc,spc_pc,r0
659 subne cycles,cycles,#42
660 subs cycles,cycles,#105
661 ldrgeb opcode,[spc_pc],#1
662 ldrge pc,[opcodes,opcode,lsl #2]
669 ldr spc_ram,[context,#iapu_ram]
672 and spc_p,spc_p,#0xff
673 orr spc_p,spc_p,spc_ya,lsl #24
674 subs cycles,cycles,#63
675 ldrgeb opcode,[spc_pc],#1
676 ldrge pc,[opcodes,opcode,lsl #2]
685 ldr spc_ram,[context,#iapu_ram]
688 and spc_p,spc_p,#0xff
689 orr spc_p,spc_p,spc_ya,lsl #24
690 subs cycles,cycles,#84
691 ldrgeb opcode,[spc_pc],#1
692 ldrge pc,[opcodes,opcode,lsl #2]
699 ldr spc_ram,[context,#iapu_ram]
702 and spc_p,spc_p,#0xff
703 orr spc_p,spc_p,spc_ya,lsl #24
704 subs cycles,cycles,#63
705 ldrgeb opcode,[spc_pc],#1
706 ldrge pc,[opcodes,opcode,lsl #2]
714 ldr r12,[context,#iapu_directpage]
719 ldr spc_ram,[context,#iapu_ram]
722 and spc_p,spc_p,#0xff
723 orr spc_p,spc_p,spc_ya,lsl #24
724 subs cycles,cycles,#126
725 ldrgeb opcode,[spc_pc],#1
726 ldrge pc,[opcodes,opcode,lsl #2]
734 and spc_p,spc_p,#0xff
735 orr spc_p,spc_p,spc_ya,lsl #24
736 subs cycles,cycles,#42
737 ldrgeb opcode,[spc_pc],#1
738 ldrge pc,[opcodes,opcode,lsl #2]
750 and spc_p,spc_p,#0xff
751 orr spc_p,spc_p,r0,lsl #24
754 ldr spc_ram,[context,#iapu_ram]
755 subs cycles,cycles,#126
756 ldrgeb opcode,[spc_pc],#1
757 ldrge pc,[opcodes,opcode,lsl #2]
768 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
771 and spc_x,spc_x,#0xff
774 orreq spc_p,spc_p,#flag_c
775 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
776 subs cycles,cycles,#105
777 ldrgeb opcode,[spc_pc],#1
778 ldrge pc,[opcodes,opcode,lsl #2]
789 orrne spc_p,spc_p,#flag_c
790 biceq spc_p,spc_p,#flag_c
791 and spc_p,spc_p,#0xff
792 orr spc_p,spc_p,r0,lsl #24
795 ldr spc_ram,[context,#iapu_ram]
796 subs cycles,cycles,#84
797 ldrgeb opcode,[spc_pc],#1
798 ldrge pc,[opcodes,opcode,lsl #2]
812 orrne spc_p,spc_p,#flag_c
813 biceq spc_p,spc_p,#flag_c
814 and spc_p,spc_p,#0xff
815 orr spc_p,spc_p,r0,lsl #24
818 ldr spc_ram,[context,#iapu_ram]
819 subs cycles,cycles,#105
820 ldrgeb opcode,[spc_pc],#1
821 ldrge pc,[opcodes,opcode,lsl #2]
827 strb spc_ya,[r1,#0x100]
829 subs cycles,cycles,#84
830 ldrgeb opcode,[spc_pc],#1
831 ldrge pc,[opcodes,opcode,lsl #2]
838 ldr spc_ram,[context,#iapu_ram]
841 addeq spc_pc,spc_pc,#1
842 ldrnesb r0,[spc_pc],#1
843 addne spc_pc,spc_pc,r0
844 subne cycles,cycles,#42
845 subs cycles,cycles,#105
846 ldrgeb opcode,[spc_pc],#1
847 ldrge pc,[opcodes,opcode,lsl #2]
854 subs cycles,cycles,#84
855 ldrgeb opcode,[spc_pc],#1
856 ldrge pc,[opcodes,opcode,lsl #2]
861 tst spc_p,#0x80000000
862 addeq spc_pc,spc_pc,#1
863 ldrnesb r0,[spc_pc],#1
864 addne spc_pc,spc_pc,r0
865 subne cycles,cycles,#42
866 subs cycles,cycles,#42
867 ldrgeb opcode,[spc_pc],#1
868 ldrge pc,[opcodes,opcode,lsl #2]
873 sub r0,spc_pc,spc_ram
879 ldr r0,[context,#iapu_extraram]
881 add spc_pc,spc_ram,r0
882 subs cycles,cycles,#168
883 ldrgeb opcode,[spc_pc],#1
884 ldrge pc,[opcodes,opcode,lsl #2]
894 ldr spc_ram,[context,#iapu_ram]
895 subs cycles,cycles,#84
896 ldrgeb opcode,[spc_pc],#1
897 ldrge pc,[opcodes,opcode,lsl #2]
904 ldr spc_ram,[context,#iapu_ram]
906 addne spc_pc,spc_pc,#1
907 ldreqsb r0,[spc_pc],#1
908 addeq spc_pc,spc_pc,r0
909 subeq cycles,cycles,#42
910 subs cycles,cycles,#105
911 ldrgeb opcode,[spc_pc],#1
912 ldrge pc,[opcodes,opcode,lsl #2]
920 ldr spc_ram,[context,#iapu_ram]
923 and spc_p,spc_p,#0xff
924 orr spc_p,spc_p,spc_ya,lsl #24
925 subs cycles,cycles,#84
926 ldrgeb opcode,[spc_pc],#1
927 ldrge pc,[opcodes,opcode,lsl #2]
937 ldr spc_ram,[context,#iapu_ram]
940 and spc_p,spc_p,#0xff
941 orr spc_p,spc_p,spc_ya,lsl #24
942 subs cycles,cycles,#105
943 ldrgeb opcode,[spc_pc],#1
944 ldrge pc,[opcodes,opcode,lsl #2]
952 add r0,r0,spc_ya,lsr #8
954 ldr spc_ram,[context,#iapu_ram]
957 and spc_p,spc_p,#0xff
958 orr spc_p,spc_p,spc_ya,lsl #24
959 subs cycles,cycles,#105
960 ldrgeb opcode,[spc_pc],#1
961 ldrge pc,[opcodes,opcode,lsl #2]
967 ldr r12,[context,#iapu_directpage]
971 add r0,r0,spc_ya,lsr #8
973 ldr spc_ram,[context,#iapu_ram]
976 and spc_p,spc_p,#0xff
977 orr spc_p,spc_p,spc_ya,lsl #24
978 subs cycles,cycles,#126
979 ldrgeb opcode,[spc_pc],#1
980 ldrge pc,[opcodes,opcode,lsl #2]
989 and spc_p,spc_p,#0xff
990 orr spc_p,spc_p,r0,lsl #24
993 ldr spc_ram,[context,#iapu_ram]
994 subs cycles,cycles,#105
995 ldrgeb opcode,[spc_pc],#1
996 ldrge pc,[opcodes,opcode,lsl #2]
1004 mov r0,spc_ya,lsr #8
1008 and spc_p,spc_p,#0xff
1009 orr spc_p,spc_p,r0,lsl #24
1012 ldr spc_ram,[context,#iapu_ram]
1013 subs cycles,cycles,#105
1014 ldrgeb opcode,[spc_pc],#1
1015 ldrge pc,[opcodes,opcode,lsl #2]
1029 and spc_p,spc_p,#0xff
1030 orr spc_p,spc_p,r0,lsl #16
1032 orrne spc_p,spc_p,#0x01000000
1041 ldr spc_ram,[context,#iapu_ram]
1042 subs cycles,cycles,#126
1043 ldrgeb opcode,[spc_pc],#1
1044 ldrge pc,[opcodes,opcode,lsl #2]
1056 orrne spc_p,spc_p,#flag_c
1057 biceq spc_p,spc_p,#flag_c
1058 and spc_p,spc_p,#0xff
1059 orr spc_p,spc_p,r0,lsl #24
1063 ldr spc_ram,[context,#iapu_ram]
1064 subs cycles,cycles,#105
1065 ldrgeb opcode,[spc_pc],#1
1066 ldrge pc,[opcodes,opcode,lsl #2]
1076 orrne spc_p,spc_p,#flag_c
1077 biceq spc_p,spc_p,#flag_c
1078 and spc_p,spc_p,#0xff
1079 orr spc_p,spc_p,r0,lsl #24
1081 mov spc_ya,spc_ya,lsr #8
1082 orr spc_ya,r0,spc_ya,lsl #8
1083 subs cycles,cycles,#42
1084 ldrgeb opcode,[spc_pc],#1
1085 ldrge pc,[opcodes,opcode,lsl #2]
1091 and spc_x,spc_x,#0xff
1092 and spc_p,spc_p,#0xff
1093 orr spc_p,spc_p,spc_x,lsl #24
1094 subs cycles,cycles,#42
1095 ldrgeb opcode,[spc_pc],#1
1096 ldrge pc,[opcodes,opcode,lsl #2]
1103 ldr spc_ram,[context,#iapu_ram]
1105 orrge spc_p,spc_p,#flag_c
1106 biclt spc_p,spc_p,#flag_c
1107 and spc_p,spc_p,#0xff
1108 orr spc_p,spc_p,r12,lsl #24
1109 subs cycles,cycles,#63
1110 ldrgeb opcode,[spc_pc],#1
1111 ldrge pc,[opcodes,opcode,lsl #2]
1117 ldrb r12,[spc_pc],#1
1118 orr r2,r2,r12,lsl #8
1119 sub r0,spc_pc,spc_ram
1120 add r1,spc_ram,spc_s
1125 add spc_pc,spc_ram,r2
1126 subs cycles,cycles,#168
1127 ldrgeb opcode,[spc_pc],#1
1128 ldrge pc,[opcodes,opcode,lsl #2]
1133 orr spc_p,spc_p,#flag_d
1134 add r0,spc_ram,#0x100
1135 str r0,[context,#iapu_directpage]
1136 subs cycles,cycles,#42
1137 ldrgeb opcode,[spc_pc],#1
1138 ldrge pc,[opcodes,opcode,lsl #2]
1143 sub r0,spc_pc,spc_ram
1144 add r1,spc_ram,spc_s
1149 ldr r0,[context,#iapu_extraram]
1151 add spc_pc,spc_ram,r0
1152 subs cycles,cycles,#168
1153 ldrgeb opcode,[spc_pc],#1
1154 ldrge pc,[opcodes,opcode,lsl #2]
1164 ldr spc_ram,[context,#iapu_ram]
1165 subs cycles,cycles,#84
1166 ldrgeb opcode,[spc_pc],#1
1167 ldrge pc,[opcodes,opcode,lsl #2]
1174 ldr spc_ram,[context,#iapu_ram]
1176 addeq spc_pc,spc_pc,#1
1177 ldrnesb r0,[spc_pc],#1
1178 addne spc_pc,spc_pc,r0
1179 subne cycles,cycles,#42
1180 subs cycles,cycles,#105
1181 ldrgeb opcode,[spc_pc],#1
1182 ldrge pc,[opcodes,opcode,lsl #2]
1189 ldr spc_ram,[context,#iapu_ram]
1190 eor spc_ya,spc_ya,r0
1191 and spc_p,spc_p,#0xff
1192 orr spc_p,spc_p,spc_ya,lsl #24
1193 subs cycles,cycles,#63
1194 ldrgeb opcode,[spc_pc],#1
1195 ldrge pc,[opcodes,opcode,lsl #2]
1201 ldrb r12,[spc_pc],#1
1202 orr r0,r0,r12,lsl #8
1204 ldr spc_ram,[context,#iapu_ram]
1205 eor spc_ya,spc_ya,r0
1206 and spc_p,spc_p,#0xff
1207 orr spc_p,spc_p,spc_ya,lsl #24
1208 subs cycles,cycles,#84
1209 ldrgeb opcode,[spc_pc],#1
1210 ldrge pc,[opcodes,opcode,lsl #2]
1217 ldr spc_ram,[context,#iapu_ram]
1218 eor spc_ya,spc_ya,r0
1219 and spc_p,spc_p,#0xff
1220 orr spc_p,spc_p,spc_ya,lsl #24
1221 subs cycles,cycles,#63
1222 ldrgeb opcode,[spc_pc],#1
1223 ldrge pc,[opcodes,opcode,lsl #2]
1231 ldr r12,[context,#iapu_directpage]
1234 orr r0,r0,r12,lsl #8
1236 ldr spc_ram,[context,#iapu_ram]
1237 eor spc_ya,spc_ya,r0
1238 and spc_p,spc_p,#0xff
1239 orr spc_p,spc_p,spc_ya,lsl #24
1240 subs cycles,cycles,#126
1241 ldrgeb opcode,[spc_pc],#1
1242 ldrge pc,[opcodes,opcode,lsl #2]
1248 eor spc_ya,spc_ya,r0
1249 and spc_p,spc_p,#0xff
1250 orr spc_p,spc_p,spc_ya,lsl #24
1251 subs cycles,cycles,#42
1252 ldrgeb opcode,[spc_pc],#1
1253 ldrge pc,[opcodes,opcode,lsl #2]
1265 and spc_p,spc_p,#0xff
1266 orr spc_p,spc_p,r0,lsl #24
1269 ldr spc_ram,[context,#iapu_ram]
1270 subs cycles,cycles,#126
1271 ldrgeb opcode,[spc_pc],#1
1272 ldrge pc,[opcodes,opcode,lsl #2]
1283 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
1285 mov r1,spc_x,lsr #29
1286 and spc_x,spc_x,#0xff
1289 biceq spc_p,spc_p,#flag_c
1290 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
1291 subs cycles,cycles,#84
1292 ldrgeb opcode,[spc_pc],#1
1293 ldrge pc,[opcodes,opcode,lsl #2]
1301 orrne spc_p,spc_p,#flag_c
1302 biceq spc_p,spc_p,#flag_c
1304 and spc_p,spc_p,#0xff
1305 orr spc_p,spc_p,r0,lsl #24
1308 ldr spc_ram,[context,#iapu_ram]
1309 subs cycles,cycles,#84
1310 ldrgeb opcode,[spc_pc],#1
1311 ldrge pc,[opcodes,opcode,lsl #2]
1317 ldrb r12,[spc_pc],#1
1318 orr r0,r0,r12,lsl #8
1322 orrne spc_p,spc_p,#flag_c
1323 biceq spc_p,spc_p,#flag_c
1325 and spc_p,spc_p,#0xff
1326 orr spc_p,spc_p,r0,lsl #24
1329 ldr spc_ram,[context,#iapu_ram]
1330 subs cycles,cycles,#105
1331 ldrgeb opcode,[spc_pc],#1
1332 ldrge pc,[opcodes,opcode,lsl #2]
1337 add r1,spc_ram,spc_s
1338 strb spc_x,[r1,#0x100]
1340 subs cycles,cycles,#84
1341 ldrgeb opcode,[spc_pc],#1
1342 ldrge pc,[opcodes,opcode,lsl #2]
1348 ldrb r12,[spc_pc],#1
1349 orr r0,r0,r12,lsl #8
1350 orr spc_x,spc_x,r0,lsl #16 @ save from memhandler
1353 and spc_p,spc_p,#0xff
1354 orr spc_p,spc_p,r2,lsl #24
1356 mov r1,spc_x,lsr #16
1357 and spc_x,spc_x,#0xff
1359 ldr spc_ram,[context,#iapu_ram]
1360 subs cycles,cycles,#126
1361 ldrgeb opcode,[spc_pc],#1
1362 ldrge pc,[opcodes,opcode,lsl #2]
1368 sub r0,spc_pc,spc_ram
1369 add r1,spc_ram,spc_s
1374 add spc_pc,spc_ram,r2
1375 add spc_pc,spc_pc,#0xff00
1376 subs cycles,cycles,#126
1377 ldrgeb opcode,[spc_pc],#1
1378 ldrge pc,[opcodes,opcode,lsl #2]
1383 tst spc_p,#0x00000040
1384 addne spc_pc,spc_pc,#1
1385 ldreqsb r0,[spc_pc],#1
1386 addeq spc_pc,spc_pc,r0
1387 subeq cycles,cycles,#42
1388 subs cycles,cycles,#42
1389 ldrgeb opcode,[spc_pc],#1
1390 ldrge pc,[opcodes,opcode,lsl #2]
1395 sub r0,spc_pc,spc_ram
1396 add r1,spc_ram,spc_s
1401 ldr r0,[context,#iapu_extraram]
1403 add spc_pc,spc_ram,r0
1404 subs cycles,cycles,#168
1405 ldrgeb opcode,[spc_pc],#1
1406 ldrge pc,[opcodes,opcode,lsl #2]
1416 ldr spc_ram,[context,#iapu_ram]
1417 subs cycles,cycles,#84
1418 ldrgeb opcode,[spc_pc],#1
1419 ldrge pc,[opcodes,opcode,lsl #2]
1426 ldr spc_ram,[context,#iapu_ram]
1428 addne spc_pc,spc_pc,#1
1429 ldreqsb r0,[spc_pc],#1
1430 addeq spc_pc,spc_pc,r0
1431 subeq cycles,cycles,#42
1432 subs cycles,cycles,#105
1433 ldrgeb opcode,[spc_pc],#1
1434 ldrge pc,[opcodes,opcode,lsl #2]
1442 ldr spc_ram,[context,#iapu_ram]
1443 eor spc_ya,spc_ya,r0
1444 and spc_p,spc_p,#0xff
1445 orr spc_p,spc_p,spc_ya,lsl #24
1446 subs cycles,cycles,#84
1447 ldrgeb opcode,[spc_pc],#1
1448 ldrge pc,[opcodes,opcode,lsl #2]
1454 ldrb r12,[spc_pc],#1
1455 orr r0,r0,r12,lsl #8
1458 ldr spc_ram,[context,#iapu_ram]
1459 eor spc_ya,spc_ya,r0
1460 and spc_p,spc_p,#0xff
1461 orr spc_p,spc_p,spc_ya,lsl #24
1462 subs cycles,cycles,#105
1463 ldrgeb opcode,[spc_pc],#1
1464 ldrge pc,[opcodes,opcode,lsl #2]
1470 ldrb r12,[spc_pc],#1
1471 orr r0,r0,r12,lsl #8
1472 add r0,r0,spc_ya,lsr #8
1474 ldr spc_ram,[context,#iapu_ram]
1475 eor spc_ya,spc_ya,r0
1476 and spc_p,spc_p,#0xff
1477 orr spc_p,spc_p,spc_ya,lsl #24
1478 subs cycles,cycles,#105
1479 ldrgeb opcode,[spc_pc],#1
1480 ldrge pc,[opcodes,opcode,lsl #2]
1486 ldr r12,[context,#iapu_directpage]
1489 orr r0,r0,r12,lsl #8
1490 add r0,r0,spc_ya,lsr #8
1492 ldr spc_ram,[context,#iapu_ram]
1493 eor spc_ya,spc_ya,r0
1494 and spc_p,spc_p,#0xff
1495 orr spc_p,spc_p,spc_ya,lsl #24
1496 subs cycles,cycles,#126
1497 ldrgeb opcode,[spc_pc],#1
1498 ldrge pc,[opcodes,opcode,lsl #2]
1507 and spc_p,spc_p,#0xff
1508 orr spc_p,spc_p,r0,lsl #24
1509 ldrb r1,[spc_pc,#-1]
1511 ldr spc_ram,[context,#iapu_ram]
1512 subs cycles,cycles,#105
1513 ldrgeb opcode,[spc_pc],#1
1514 ldrge pc,[opcodes,opcode,lsl #2]
1522 mov r0,spc_ya,lsr #8
1526 and spc_p,spc_p,#0xff
1527 orr spc_p,spc_p,r0,lsl #24
1530 ldr spc_ram,[context,#iapu_ram]
1531 subs cycles,cycles,#105
1532 ldrgeb opcode,[spc_pc],#1
1533 ldrge pc,[opcodes,opcode,lsl #2]
1544 ldr spc_ram,[context,#iapu_ram]
1548 orrge spc_p,spc_p,#flag_c
1549 biclt spc_p,spc_p,#flag_c
1550 and spc_p,spc_p,#0xff
1551 orr spc_p,spc_p,r0,lsl #16
1553 orrne spc_p,spc_p,#0x01000000
1554 subs cycles,cycles,#84
1555 ldrgeb opcode,[spc_pc],#1
1556 ldrge pc,[opcodes,opcode,lsl #2]
1565 orrne spc_p,spc_p,#flag_c
1566 biceq spc_p,spc_p,#flag_c
1568 and spc_p,spc_p,#0xff
1569 orr spc_p,spc_p,r0,lsl #24
1573 ldr spc_ram,[context,#iapu_ram]
1574 subs cycles,cycles,#105
1575 ldrgeb opcode,[spc_pc],#1
1576 ldrge pc,[opcodes,opcode,lsl #2]
1583 orrne spc_p,spc_p,#flag_c
1584 biceq spc_p,spc_p,#flag_c
1586 and spc_p,spc_p,#0xff
1587 orr spc_p,spc_p,r0,lsl #24
1588 mov spc_ya,spc_ya,lsr #8
1589 orr spc_ya,r0,spc_ya,lsl #8
1590 subs cycles,cycles,#42
1591 ldrgeb opcode,[spc_pc],#1
1592 ldrge pc,[opcodes,opcode,lsl #2]
1597 and spc_x,spc_ya,#0xff
1598 and spc_p,spc_p,#0xff
1599 orr spc_p,spc_p,spc_x,lsl #24
1600 subs cycles,cycles,#42
1601 ldrgeb opcode,[spc_pc],#1
1602 ldrge pc,[opcodes,opcode,lsl #2]
1608 ldrb r12,[spc_pc],#1
1609 orr r0,r0,r12,lsl #8
1611 ldr spc_ram,[context,#iapu_ram]
1612 mov r1,spc_ya,lsr #8
1614 orrge spc_p,spc_p,#flag_c
1615 biclt spc_p,spc_p,#flag_c
1616 and spc_p,spc_p,#0xff
1617 orr spc_p,spc_p,r12,lsl #24
1618 subs cycles,cycles,#84
1619 ldrgeb opcode,[spc_pc],#1
1620 ldrge pc,[opcodes,opcode,lsl #2]
1626 ldrb r12,[spc_pc],#1
1627 orr r0,r0,r12,lsl #8
1628 add spc_pc,spc_ram,r0
1629 subs cycles,cycles,#63
1630 ldrgeb opcode,[spc_pc],#1
1631 ldrge pc,[opcodes,opcode,lsl #2]
1636 bic spc_p,spc_p,#flag_c
1637 subs cycles,cycles,#42
1638 ldrgeb opcode,[spc_pc],#1
1639 ldrge pc,[opcodes,opcode,lsl #2]
1644 sub r0,spc_pc,spc_ram
1645 add r1,spc_ram,spc_s
1650 ldr r0,[context,#iapu_extraram]
1652 add spc_pc,spc_ram,r0
1653 subs cycles,cycles,#168
1654 ldrgeb opcode,[spc_pc],#1
1655 ldrge pc,[opcodes,opcode,lsl #2]
1665 ldr spc_ram,[context,#iapu_ram]
1666 subs cycles,cycles,#84
1667 ldrgeb opcode,[spc_pc],#1
1668 ldrge pc,[opcodes,opcode,lsl #2]
1675 ldr spc_ram,[context,#iapu_ram]
1677 addeq spc_pc,spc_pc,#1
1678 ldrnesb r0,[spc_pc],#1
1679 addne spc_pc,spc_pc,r0
1680 subne cycles,cycles,#42
1681 subs cycles,cycles,#105
1682 ldrgeb opcode,[spc_pc],#1
1683 ldrge pc,[opcodes,opcode,lsl #2]
1690 ldr spc_ram,[context,#iapu_ram]
1691 and r12,spc_ya,#0xff
1693 orrge spc_p,spc_p,#flag_c
1694 biclt spc_p,spc_p,#flag_c
1695 and spc_p,spc_p,#0xff
1696 orr spc_p,spc_p,r12,lsl #24
1697 subs cycles,cycles,#63
1698 ldrgeb opcode,[spc_pc],#1
1699 ldrge pc,[opcodes,opcode,lsl #2]
1705 ldrb r12,[spc_pc],#1
1706 orr r0,r0,r12,lsl #8
1708 ldr spc_ram,[context,#iapu_ram]
1709 and r12,spc_ya,#0xff
1711 orrge spc_p,spc_p,#flag_c
1712 biclt spc_p,spc_p,#flag_c
1713 and spc_p,spc_p,#0xff
1714 orr spc_p,spc_p,r12,lsl #24
1715 subs cycles,cycles,#84
1716 ldrgeb opcode,[spc_pc],#1
1717 ldrge pc,[opcodes,opcode,lsl #2]
1724 ldr spc_ram,[context,#iapu_ram]
1725 and r12,spc_ya,#0xff
1727 orrge spc_p,spc_p,#flag_c
1728 biclt spc_p,spc_p,#flag_c
1729 and spc_p,spc_p,#0xff
1730 orr spc_p,spc_p,r12,lsl #24
1731 subs cycles,cycles,#63
1732 ldrgeb opcode,[spc_pc],#1
1733 ldrge pc,[opcodes,opcode,lsl #2]
1741 ldr r12,[context,#iapu_directpage]
1744 orr r0,r0,r12,lsl #8
1746 ldr spc_ram,[context,#iapu_ram]
1747 and r12,spc_ya,#0xff
1749 orrge spc_p,spc_p,#flag_c
1750 biclt spc_p,spc_p,#flag_c
1751 and spc_p,spc_p,#0xff
1752 orr spc_p,spc_p,r12,lsl #24
1753 subs cycles,cycles,#126
1754 ldrgeb opcode,[spc_pc],#1
1755 ldrge pc,[opcodes,opcode,lsl #2]
1761 and r12,spc_ya,#0xff
1763 orrge spc_p,spc_p,#flag_c
1764 biclt spc_p,spc_p,#flag_c
1765 and spc_p,spc_p,#0xff
1766 orr spc_p,spc_p,r12,lsl #24
1767 subs cycles,cycles,#42
1768 ldrgeb opcode,[spc_pc],#1
1769 ldrge pc,[opcodes,opcode,lsl #2]
1776 orr spc_x,spc_x,r0,lsl #24
1779 ldr spc_ram,[context,#iapu_ram]
1780 mov r1,spc_x,lsr #24
1782 orrge spc_p,spc_p,#flag_c
1783 biclt spc_p,spc_p,#flag_c
1784 and spc_p,spc_p,#0xff
1785 orr spc_p,spc_p,r12,lsl #24
1786 and spc_x,spc_x,#0xff
1787 subs cycles,cycles,#126
1788 ldrgeb opcode,[spc_pc],#1
1789 ldrge pc,[opcodes,opcode,lsl #2]
1800 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
1802 mov r1,spc_x,lsr #29
1803 and spc_x,spc_x,#0xff
1806 bicne spc_p,spc_p,#flag_c
1807 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
1808 subs cycles,cycles,#84
1809 ldrgeb opcode,[spc_pc],#1
1810 ldrge pc,[opcodes,opcode,lsl #2]
1820 orrcs spc_p,spc_p,#flag_c
1821 biccc spc_p,spc_p,#flag_c
1822 and spc_p,spc_p,#0xff
1823 orr spc_p,spc_p,r0,lsl #24
1826 ldr spc_ram,[context,#iapu_ram]
1827 subs cycles,cycles,#84
1828 ldrgeb opcode,[spc_pc],#1
1829 ldrge pc,[opcodes,opcode,lsl #2]
1835 ldrb r12,[spc_pc],#1
1836 orr r0,r0,r12,lsl #8
1842 orrcs spc_p,spc_p,#flag_c
1843 biccc spc_p,spc_p,#flag_c
1844 and spc_p,spc_p,#0xff
1845 orr spc_p,spc_p,r0,lsl #24
1848 ldr spc_ram,[context,#iapu_ram]
1849 subs cycles,cycles,#105
1850 ldrgeb opcode,[spc_pc],#1
1851 ldrge pc,[opcodes,opcode,lsl #2]
1856 mov r0,spc_ya,lsr #8
1857 add r1,spc_ram,spc_s
1860 subs cycles,cycles,#84
1861 ldrgeb opcode,[spc_pc],#1
1862 ldrge pc,[opcodes,opcode,lsl #2]
1872 addeq spc_pc,spc_pc,#1
1873 ldrnesb r2,[spc_pc],#1
1874 addne spc_pc,spc_pc,r2
1875 subne cycles,cycles,#42
1877 ldr spc_ram,[context,#iapu_ram]
1878 subs cycles,cycles,#105
1879 ldrgeb opcode,[spc_pc],#1
1880 ldrge pc,[opcodes,opcode,lsl #2]
1886 add r1,spc_ram,spc_s
1890 add spc_pc,spc_ram,r0
1891 subs cycles,cycles,#105
1892 ldrgeb opcode,[spc_pc],#1
1893 ldrge pc,[opcodes,opcode,lsl #2]
1898 tst spc_p,#0x00000040
1899 addeq spc_pc,spc_pc,#1
1900 ldrnesb r0,[spc_pc],#1
1901 addne spc_pc,spc_pc,r0
1902 subne cycles,cycles,#42
1903 subs cycles,cycles,#42
1904 ldrgeb opcode,[spc_pc],#1
1905 ldrge pc,[opcodes,opcode,lsl #2]
1910 sub r0,spc_pc,spc_ram
1911 add r1,spc_ram,spc_s
1916 ldr r0,[context,#iapu_extraram]
1918 add spc_pc,spc_ram,r0
1919 subs cycles,cycles,#168
1920 ldrgeb opcode,[spc_pc],#1
1921 ldrge pc,[opcodes,opcode,lsl #2]
1931 ldr spc_ram,[context,#iapu_ram]
1932 subs cycles,cycles,#84
1933 ldrgeb opcode,[spc_pc],#1
1934 ldrge pc,[opcodes,opcode,lsl #2]
1941 ldr spc_ram,[context,#iapu_ram]
1943 addne spc_pc,spc_pc,#1
1944 ldreqsb r0,[spc_pc],#1
1945 addeq spc_pc,spc_pc,r0
1946 subeq cycles,cycles,#42
1947 subs cycles,cycles,#105
1948 ldrgeb opcode,[spc_pc],#1
1949 ldrge pc,[opcodes,opcode,lsl #2]
1957 ldr spc_ram,[context,#iapu_ram]
1958 and r12,spc_ya,#0xff
1960 orrge spc_p,spc_p,#flag_c
1961 biclt spc_p,spc_p,#flag_c
1962 and spc_p,spc_p,#0xff
1963 orr spc_p,spc_p,r12,lsl #24
1964 subs cycles,cycles,#84
1965 ldrgeb opcode,[spc_pc],#1
1966 ldrge pc,[opcodes,opcode,lsl #2]
1972 ldrb r12,[spc_pc],#1
1973 orr r0,r0,r12,lsl #8
1976 ldr spc_ram,[context,#iapu_ram]
1977 and r12,spc_ya,#0xff
1979 orrge spc_p,spc_p,#flag_c
1980 biclt spc_p,spc_p,#flag_c
1981 and spc_p,spc_p,#0xff
1982 orr spc_p,spc_p,r12,lsl #24
1983 subs cycles,cycles,#105
1984 ldrgeb opcode,[spc_pc],#1
1985 ldrge pc,[opcodes,opcode,lsl #2]
1991 ldrb r12,[spc_pc],#1
1992 orr r0,r0,r12,lsl #8
1993 add r0,r0,spc_ya,lsr #8
1995 ldr spc_ram,[context,#iapu_ram]
1996 and r12,spc_ya,#0xff
1998 orrge spc_p,spc_p,#flag_c
1999 biclt spc_p,spc_p,#flag_c
2000 and spc_p,spc_p,#0xff
2001 orr spc_p,spc_p,r12,lsl #24
2002 subs cycles,cycles,#105
2003 ldrgeb opcode,[spc_pc],#1
2004 ldrge pc,[opcodes,opcode,lsl #2]
2010 ldr r12,[context,#iapu_directpage]
2013 orr r0,r0,r12,lsl #8
2014 add r0,r0,spc_ya,lsr #8
2016 ldr spc_ram,[context,#iapu_ram]
2017 and r12,spc_ya,#0xff
2019 orrge spc_p,spc_p,#flag_c
2020 biclt spc_p,spc_p,#flag_c
2021 and spc_p,spc_p,#0xff
2022 orr spc_p,spc_p,r12,lsl #24
2023 subs cycles,cycles,#126
2024 ldrgeb opcode,[spc_pc],#1
2025 ldrge pc,[opcodes,opcode,lsl #2]
2032 ldr spc_ram,[context,#iapu_ram]
2035 orrge spc_p,spc_p,#flag_c
2036 biclt spc_p,spc_p,#flag_c
2037 and spc_p,spc_p,#0xff
2038 orr spc_p,spc_p,r12,lsl #24
2039 subs cycles,cycles,#105
2040 ldrgeb opcode,[spc_pc],#1
2041 ldrge pc,[opcodes,opcode,lsl #2]
2048 orr spc_x,spc_x,r0,lsl #24
2049 mov r0,spc_ya,lsr #8
2051 ldr spc_ram,[context,#iapu_ram]
2052 mov r1,spc_x,lsr #24
2054 orrge spc_p,spc_p,#flag_c
2055 biclt spc_p,spc_p,#flag_c
2056 and spc_p,spc_p,#0xff
2057 orr spc_p,spc_p,r12,lsl #24
2058 and spc_x,spc_x,#0xff
2059 subs cycles,cycles,#105
2060 ldrgeb opcode,[spc_pc],#1
2061 ldrge pc,[opcodes,opcode,lsl #2]
2072 ldr spc_ram,[context,#iapu_ram]
2077 orrne spc_p,spc_p,#flag_c
2078 biceq spc_p,spc_p,#flag_c
2079 bic r2,r0,#0x00ff0000
2085 orrne spc_p,spc_p,#flag_o
2086 biceq spc_p,spc_p,#flag_o
2089 orrne spc_p,spc_p,#flag_h
2090 biceq spc_p,spc_p,#flag_h
2092 and spc_p,spc_p,#0xff
2093 orr spc_p,spc_p,spc_ya,lsl #16
2095 orrne spc_p,spc_p,#0x01000000
2096 subs cycles,cycles,#105
2097 ldrgeb opcode,[spc_pc],#1
2098 ldrge pc,[opcodes,opcode,lsl #2]
2109 orrcs spc_p,spc_p,#flag_c
2110 biccc spc_p,spc_p,#flag_c
2111 and spc_p,spc_p,#0xff
2112 orr spc_p,spc_p,r0,lsl #24
2116 ldr spc_ram,[context,#iapu_ram]
2117 subs cycles,cycles,#105
2118 ldrgeb opcode,[spc_pc],#1
2119 ldrge pc,[opcodes,opcode,lsl #2]
2128 orrcs spc_p,spc_p,#flag_c
2129 biccc spc_p,spc_p,#flag_c
2130 and spc_p,spc_p,#0xff
2131 orr spc_p,spc_p,r0,lsl #24
2132 mov spc_ya,spc_ya,lsr #8
2133 orr spc_ya,r0,spc_ya,lsl #8
2134 subs cycles,cycles,#42
2135 ldrgeb opcode,[spc_pc],#1
2136 ldrge pc,[opcodes,opcode,lsl #2]
2141 and spc_ya,spc_ya,#0xff00
2142 orr spc_ya,spc_ya,spc_x
2143 and spc_p,spc_p,#0xff
2144 orr spc_p,spc_p,spc_ya,lsl #24
2145 subs cycles,cycles,#42
2146 ldrgeb opcode,[spc_pc],#1
2147 ldrge pc,[opcodes,opcode,lsl #2]
2154 ldr spc_ram,[context,#iapu_ram]
2155 mov r1,spc_ya,lsr #8
2157 orrge spc_p,spc_p,#flag_c
2158 biclt spc_p,spc_p,#flag_c
2159 and spc_p,spc_p,#0xff
2160 orr spc_p,spc_p,r12,lsl #24
2161 subs cycles,cycles,#63
2162 ldrgeb opcode,[spc_pc],#1
2163 ldrge pc,[opcodes,opcode,lsl #2]
2169 add spc_p,spc_ram,spc_s
2170 ldrb spc_p,[spc_p,#0x100]
2171 and r0,spc_p,#(flag_z|flag_n)
2173 orr spc_p,spc_p,r0,lsl #24
2175 addne r0,spc_ram,#0x100
2177 str r0,[context,#iapu_directpage]
2179 add r1,spc_ram,spc_s
2183 add spc_pc,spc_ram,r0
2184 subs cycles,cycles,#126
2185 ldrgeb opcode,[spc_pc],#1
2186 ldrge pc,[opcodes,opcode,lsl #2]
2191 orr spc_p,spc_p,#flag_c
2192 subs cycles,cycles,#42
2193 ldrgeb opcode,[spc_pc],#1
2194 ldrge pc,[opcodes,opcode,lsl #2]
2199 sub r0,spc_pc,spc_ram
2200 add r1,spc_ram,spc_s
2205 ldr r0,[context,#iapu_extraram]
2207 add spc_pc,spc_ram,r0
2208 subs cycles,cycles,#168
2209 ldrgeb opcode,[spc_pc],#1
2210 ldrge pc,[opcodes,opcode,lsl #2]
2220 ldr spc_ram,[context,#iapu_ram]
2221 subs cycles,cycles,#84
2222 ldrgeb opcode,[spc_pc],#1
2223 ldrge pc,[opcodes,opcode,lsl #2]
2230 ldr spc_ram,[context,#iapu_ram]
2232 addeq spc_pc,spc_pc,#1
2233 ldrnesb r0,[spc_pc],#1
2234 addne spc_pc,spc_pc,r0
2235 subne cycles,cycles,#42
2236 subs cycles,cycles,#105
2237 ldrgeb opcode,[spc_pc],#1
2238 ldrge pc,[opcodes,opcode,lsl #2]
2245 ldr spc_ram,[context,#iapu_ram]
2246 and r1,spc_ya,#0xff00
2247 and spc_ya,spc_ya,#0xff
2249 add spc_ya,spc_ya,r0
2251 addne spc_ya,spc_ya,#1
2252 movs r12,spc_ya,lsr #8
2253 orrne spc_p,spc_p,#flag_c
2254 biceq spc_p,spc_p,#flag_c
2258 orrne spc_p,spc_p,#flag_o
2259 biceq spc_p,spc_p,#flag_o
2262 orrne spc_p,spc_p,#flag_h
2263 biceq spc_p,spc_p,#flag_h
2264 and spc_p,spc_p,#0xff
2265 orr spc_p,spc_p,spc_ya,lsl #24
2266 and spc_ya,spc_ya,#0xff
2267 orr spc_ya,spc_ya,r1
2268 subs cycles,cycles,#63
2269 ldrgeb opcode,[spc_pc],#1
2270 ldrge pc,[opcodes,opcode,lsl #2]
2276 ldrb r12,[spc_pc],#1
2277 orr r0,r0,r12,lsl #8
2279 ldr spc_ram,[context,#iapu_ram]
2280 and r1,spc_ya,#0xff00
2281 and spc_ya,spc_ya,#0xff
2283 add spc_ya,spc_ya,r0
2285 addne spc_ya,spc_ya,#1
2286 movs r12,spc_ya,lsr #8
2287 orrne spc_p,spc_p,#flag_c
2288 biceq spc_p,spc_p,#flag_c
2292 orrne spc_p,spc_p,#flag_o
2293 biceq spc_p,spc_p,#flag_o
2296 orrne spc_p,spc_p,#flag_h
2297 biceq spc_p,spc_p,#flag_h
2298 and spc_p,spc_p,#0xff
2299 orr spc_p,spc_p,spc_ya,lsl #24
2300 and spc_ya,spc_ya,#0xff
2301 orr spc_ya,spc_ya,r1
2302 subs cycles,cycles,#84
2303 ldrgeb opcode,[spc_pc],#1
2304 ldrge pc,[opcodes,opcode,lsl #2]
2311 ldr spc_ram,[context,#iapu_ram]
2312 and r1,spc_ya,#0xff00
2313 and spc_ya,spc_ya,#0xff
2315 add spc_ya,spc_ya,r0
2317 addne spc_ya,spc_ya,#1
2318 movs r12,spc_ya,lsr #8
2319 orrne spc_p,spc_p,#flag_c
2320 biceq spc_p,spc_p,#flag_c
2324 orrne spc_p,spc_p,#flag_o
2325 biceq spc_p,spc_p,#flag_o
2328 orrne spc_p,spc_p,#flag_h
2329 biceq spc_p,spc_p,#flag_h
2330 and spc_p,spc_p,#0xff
2331 orr spc_p,spc_p,spc_ya,lsl #24
2332 and spc_ya,spc_ya,#0xff
2333 orr spc_ya,spc_ya,r1
2334 subs cycles,cycles,#63
2335 ldrgeb opcode,[spc_pc],#1
2336 ldrge pc,[opcodes,opcode,lsl #2]
2344 ldr r12,[context,#iapu_directpage]
2347 orr r0,r0,r12,lsl #8
2349 ldr spc_ram,[context,#iapu_ram]
2350 and r1,spc_ya,#0xff00
2351 and spc_ya,spc_ya,#0xff
2353 add spc_ya,spc_ya,r0
2355 addne spc_ya,spc_ya,#1
2356 movs r12,spc_ya,lsr #8
2357 orrne spc_p,spc_p,#flag_c
2358 biceq spc_p,spc_p,#flag_c
2362 orrne spc_p,spc_p,#flag_o
2363 biceq spc_p,spc_p,#flag_o
2366 orrne spc_p,spc_p,#flag_h
2367 biceq spc_p,spc_p,#flag_h
2368 and spc_p,spc_p,#0xff
2369 orr spc_p,spc_p,spc_ya,lsl #24
2370 and spc_ya,spc_ya,#0xff
2371 orr spc_ya,spc_ya,r1
2372 subs cycles,cycles,#126
2373 ldrgeb opcode,[spc_pc],#1
2374 ldrge pc,[opcodes,opcode,lsl #2]
2380 and r1,spc_ya,#0xff00
2381 and spc_ya,spc_ya,#0xff
2383 add spc_ya,spc_ya,r0
2385 addne spc_ya,spc_ya,#1
2386 movs r12,spc_ya,lsr #8
2387 orrne spc_p,spc_p,#flag_c
2388 biceq spc_p,spc_p,#flag_c
2392 orrne spc_p,spc_p,#flag_o
2393 biceq spc_p,spc_p,#flag_o
2396 orrne spc_p,spc_p,#flag_h
2397 biceq spc_p,spc_p,#flag_h
2398 and spc_p,spc_p,#0xff
2399 orr spc_p,spc_p,spc_ya,lsl #24
2400 and spc_ya,spc_ya,#0xff
2401 orr spc_ya,spc_ya,r1
2402 subs cycles,cycles,#42
2403 ldrgeb opcode,[spc_pc],#1
2404 ldrge pc,[opcodes,opcode,lsl #2]
2420 orrne spc_p,spc_p,#flag_c
2421 biceq spc_p,spc_p,#flag_c
2425 orrne spc_p,spc_p,#flag_o
2426 biceq spc_p,spc_p,#flag_o
2429 orrne spc_p,spc_p,#flag_h
2430 biceq spc_p,spc_p,#flag_h
2431 and spc_p,spc_p,#0xff
2432 orr spc_p,spc_p,r0,lsl #24
2435 ldr spc_ram,[context,#iapu_ram]
2436 subs cycles,cycles,#126
2437 ldrgeb opcode,[spc_pc],#1
2438 ldrge pc,[opcodes,opcode,lsl #2]
2449 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
2451 mov r1,spc_x,lsr #29
2452 and spc_x,spc_x,#0xff
2455 eorne spc_p,spc_p,#flag_c
2456 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
2457 subs cycles,cycles,#105
2458 ldrgeb opcode,[spc_pc],#1
2459 ldrge pc,[opcodes,opcode,lsl #2]
2467 and spc_p,spc_p,#0xff
2468 orr spc_p,spc_p,r0,lsl #24
2471 ldr spc_ram,[context,#iapu_ram]
2472 subs cycles,cycles,#84
2473 ldrgeb opcode,[spc_pc],#1
2474 ldrge pc,[opcodes,opcode,lsl #2]
2480 ldrb r12,[spc_pc],#1
2481 orr r0,r0,r12,lsl #8
2485 and spc_p,spc_p,#0xff
2486 orr spc_p,spc_p,r0,lsl #24
2489 ldr spc_ram,[context,#iapu_ram]
2490 subs cycles,cycles,#105
2491 ldrgeb opcode,[spc_pc],#1
2492 ldrge pc,[opcodes,opcode,lsl #2]
2498 and spc_ya,spc_ya,#0xff
2499 orr spc_ya,spc_ya,r0,lsl #8
2500 and spc_p,spc_p,#0xff
2501 orr spc_p,spc_p,r0,lsl #24
2502 subs cycles,cycles,#42
2503 ldrgeb opcode,[spc_pc],#1
2504 ldrge pc,[opcodes,opcode,lsl #2]
2510 add spc_p,spc_ram,spc_s
2511 ldrb spc_p,[spc_p,#0x100]
2512 and r0,spc_p,#(flag_z|flag_n)
2514 orr spc_p,spc_p,r0,lsl #24
2516 addne r0,spc_ram,#0x100
2518 str r0,[context,#iapu_directpage]
2519 subs cycles,cycles,#84
2520 ldrgeb opcode,[spc_pc],#1
2521 ldrge pc,[opcodes,opcode,lsl #2]
2529 ldr spc_ram,[context,#iapu_ram]
2530 subs cycles,cycles,#105
2531 ldrgeb opcode,[spc_pc],#1
2532 ldrge pc,[opcodes,opcode,lsl #2]
2537 tst spc_p,#0x00000001
2538 addne spc_pc,spc_pc,#1
2539 ldreqsb r0,[spc_pc],#1
2540 addeq spc_pc,spc_pc,r0
2541 subeq cycles,cycles,#42
2542 subs cycles,cycles,#42
2543 ldrgeb opcode,[spc_pc],#1
2544 ldrge pc,[opcodes,opcode,lsl #2]
2549 sub r0,spc_pc,spc_ram
2550 add r1,spc_ram,spc_s
2555 ldr r0,[context,#iapu_extraram]
2557 add spc_pc,spc_ram,r0
2558 subs cycles,cycles,#168
2559 ldrgeb opcode,[spc_pc],#1
2560 ldrge pc,[opcodes,opcode,lsl #2]
2570 ldr spc_ram,[context,#iapu_ram]
2571 subs cycles,cycles,#84
2572 ldrgeb opcode,[spc_pc],#1
2573 ldrge pc,[opcodes,opcode,lsl #2]
2580 ldr spc_ram,[context,#iapu_ram]
2582 addne spc_pc,spc_pc,#1
2583 ldreqsb r0,[spc_pc],#1
2584 addeq spc_pc,spc_pc,r0
2585 subeq cycles,cycles,#42
2586 subs cycles,cycles,#105
2587 ldrgeb opcode,[spc_pc],#1
2588 ldrge pc,[opcodes,opcode,lsl #2]
2596 ldr spc_ram,[context,#iapu_ram]
2597 and r1,spc_ya,#0xff00
2598 and spc_ya,spc_ya,#0xff
2600 add spc_ya,spc_ya,r0
2602 addne spc_ya,spc_ya,#1
2603 movs r12,spc_ya,lsr #8
2604 orrne spc_p,spc_p,#flag_c
2605 biceq spc_p,spc_p,#flag_c
2609 orrne spc_p,spc_p,#flag_o
2610 biceq spc_p,spc_p,#flag_o
2613 orrne spc_p,spc_p,#flag_h
2614 biceq spc_p,spc_p,#flag_h
2615 and spc_p,spc_p,#0xff
2616 orr spc_p,spc_p,spc_ya,lsl #24
2617 and spc_ya,spc_ya,#0xff
2618 orr spc_ya,spc_ya,r1
2619 subs cycles,cycles,#84
2620 ldrgeb opcode,[spc_pc],#1
2621 ldrge pc,[opcodes,opcode,lsl #2]
2627 ldrb r12,[spc_pc],#1
2628 orr r0,r0,r12,lsl #8
2631 ldr spc_ram,[context,#iapu_ram]
2632 and r1,spc_ya,#0xff00
2633 and spc_ya,spc_ya,#0xff
2635 add spc_ya,spc_ya,r0
2637 addne spc_ya,spc_ya,#1
2638 movs r12,spc_ya,lsr #8
2639 orrne spc_p,spc_p,#flag_c
2640 biceq spc_p,spc_p,#flag_c
2644 orrne spc_p,spc_p,#flag_o
2645 biceq spc_p,spc_p,#flag_o
2648 orrne spc_p,spc_p,#flag_h
2649 biceq spc_p,spc_p,#flag_h
2650 and spc_p,spc_p,#0xff
2651 orr spc_p,spc_p,spc_ya,lsl #24
2652 and spc_ya,spc_ya,#0xff
2653 orr spc_ya,spc_ya,r1
2654 subs cycles,cycles,#105
2655 ldrgeb opcode,[spc_pc],#1
2656 ldrge pc,[opcodes,opcode,lsl #2]
2662 ldrb r12,[spc_pc],#1
2663 orr r0,r0,r12,lsl #8
2664 add r0,r0,spc_ya,lsr #8
2666 ldr spc_ram,[context,#iapu_ram]
2667 and r1,spc_ya,#0xff00
2668 and spc_ya,spc_ya,#0xff
2670 add spc_ya,spc_ya,r0
2672 addne spc_ya,spc_ya,#1
2673 movs r12,spc_ya,lsr #8
2674 orrne spc_p,spc_p,#flag_c
2675 biceq spc_p,spc_p,#flag_c
2679 orrne spc_p,spc_p,#flag_o
2680 biceq spc_p,spc_p,#flag_o
2683 orrne spc_p,spc_p,#flag_h
2684 biceq spc_p,spc_p,#flag_h
2685 and spc_p,spc_p,#0xff
2686 orr spc_p,spc_p,spc_ya,lsl #24
2687 and spc_ya,spc_ya,#0xff
2688 orr spc_ya,spc_ya,r1
2689 subs cycles,cycles,#105
2690 ldrgeb opcode,[spc_pc],#1
2691 ldrge pc,[opcodes,opcode,lsl #2]
2697 ldr r12,[context,#iapu_directpage]
2700 orr r0,r0,r12,lsl #8
2701 add r0,r0,spc_ya,lsr #8
2703 ldr spc_ram,[context,#iapu_ram]
2704 and r1,spc_ya,#0xff00
2705 and spc_ya,spc_ya,#0xff
2707 add spc_ya,spc_ya,r0
2709 addne spc_ya,spc_ya,#1
2710 movs r12,spc_ya,lsr #8
2711 orrne spc_p,spc_p,#flag_c
2712 biceq spc_p,spc_p,#flag_c
2716 orrne spc_p,spc_p,#flag_o
2717 biceq spc_p,spc_p,#flag_o
2720 orrne spc_p,spc_p,#flag_h
2721 biceq spc_p,spc_p,#flag_h
2722 and spc_p,spc_p,#0xff
2723 orr spc_p,spc_p,spc_ya,lsl #24
2724 and spc_ya,spc_ya,#0xff
2725 orr spc_ya,spc_ya,r1
2726 subs cycles,cycles,#126
2727 ldrgeb opcode,[spc_pc],#1
2728 ldrge pc,[opcodes,opcode,lsl #2]
2741 orrne spc_p,spc_p,#flag_c
2742 biceq spc_p,spc_p,#flag_c
2746 orrne spc_p,spc_p,#flag_o
2747 biceq spc_p,spc_p,#flag_o
2750 orrne spc_p,spc_p,#flag_h
2751 biceq spc_p,spc_p,#flag_h
2752 and spc_p,spc_p,#0xff
2753 orr spc_p,spc_p,r0,lsl #24
2754 ldrb r1,[spc_pc,#-1]
2756 ldr spc_ram,[context,#iapu_ram]
2757 subs cycles,cycles,#105
2758 ldrgeb opcode,[spc_pc],#1
2759 ldrge pc,[opcodes,opcode,lsl #2]
2767 mov r0,spc_ya,lsr #8
2775 orrne spc_p,spc_p,#flag_c
2776 biceq spc_p,spc_p,#flag_c
2780 orrne spc_p,spc_p,#flag_o
2781 biceq spc_p,spc_p,#flag_o
2784 orrne spc_p,spc_p,#flag_h
2785 biceq spc_p,spc_p,#flag_h
2786 and spc_p,spc_p,#0xff
2787 orr spc_p,spc_p,r0,lsl #24
2790 ldr spc_ram,[context,#iapu_ram]
2791 subs cycles,cycles,#105
2792 ldrgeb opcode,[spc_pc],#1
2793 ldrge pc,[opcodes,opcode,lsl #2]
2804 ldr spc_ram,[context,#iapu_ram]
2808 orrge spc_p,spc_p,#flag_c
2809 biclt spc_p,spc_p,#flag_c
2816 orrne spc_p,spc_p,#flag_o
2817 biceq spc_p,spc_p,#flag_o
2820 bicne spc_p,spc_p,#flag_h
2821 orreq spc_p,spc_p,#flag_h
2823 and spc_p,spc_p,#0xff
2824 orr spc_p,spc_p,spc_ya,lsl #16
2826 orrne spc_p,spc_p,#0x01000000
2827 subs cycles,cycles,#105
2828 ldrgeb opcode,[spc_pc],#1
2829 ldrge pc,[opcodes,opcode,lsl #2]
2838 and spc_p,spc_p,#0xff
2839 orr spc_p,spc_p,r0,lsl #24
2843 ldr spc_ram,[context,#iapu_ram]
2844 subs cycles,cycles,#105
2845 ldrgeb opcode,[spc_pc],#1
2846 ldrge pc,[opcodes,opcode,lsl #2]
2853 and spc_p,spc_p,#0xff
2854 orr spc_p,spc_p,r0,lsl #24
2856 mov spc_ya,spc_ya,lsr #8
2857 orr spc_ya,r0,spc_ya,lsl #8
2858 subs cycles,cycles,#42
2859 ldrgeb opcode,[spc_pc],#1
2860 ldrge pc,[opcodes,opcode,lsl #2]
2866 and spc_p,spc_p,#0xff
2867 orr spc_p,spc_p,spc_x,lsl #24
2868 subs cycles,cycles,#42
2869 ldrgeb opcode,[spc_pc],#1
2870 ldrge pc,[opcodes,opcode,lsl #2]
2875 tst spc_x,spc_x @ div by 0?
2876 orreq spc_ya,spc_ya,#0xff00
2877 orreq spc_ya,spc_ya,#0x00ff
2878 orreq spc_p,spc_p,#flag_o
2880 bic spc_p,spc_p,#flag_o
2881 @ Divide spc_ya by spc_x
2885 @ Shift up divisor till it's just less than numerator
2887 cmp r1,spc_ya,lsr #1
2893 adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
2894 subcs spc_ya,spc_ya,r1
2899 and spc_ya,spc_ya,#0xff
2901 orr spc_ya,r3,spc_ya,lsl #8
2903 and spc_p,spc_p,#0xff
2904 orr spc_p,spc_p,spc_ya,lsl #24
2905 subs cycles,cycles,#252
2906 ldrgeb opcode,[spc_pc],#1
2907 ldrge pc,[opcodes,opcode,lsl #2]
2914 orr r0,r1,r0,lsl #20
2915 and spc_ya,spc_ya,#0xff00
2916 orr spc_ya,spc_ya,r0,lsr #24
2917 and spc_p,spc_p,#0xff
2918 orr spc_p,spc_p,spc_ya,lsl #24
2919 subs cycles,cycles,#105
2920 ldrgeb opcode,[spc_pc],#1
2921 ldrge pc,[opcodes,opcode,lsl #2]
2926 orr spc_p,spc_p,#flag_i
2927 subs cycles,cycles,#63
2928 ldrgeb opcode,[spc_pc],#1
2929 ldrge pc,[opcodes,opcode,lsl #2]
2934 sub r0,spc_pc,spc_ram
2935 add r1,spc_ram,spc_s
2940 ldr r0,[context,#iapu_extraram]
2942 add spc_pc,spc_ram,r0
2943 subs cycles,cycles,#168
2944 ldrgeb opcode,[spc_pc],#1
2945 ldrge pc,[opcodes,opcode,lsl #2]
2955 ldr spc_ram,[context,#iapu_ram]
2956 subs cycles,cycles,#84
2957 ldrgeb opcode,[spc_pc],#1
2958 ldrge pc,[opcodes,opcode,lsl #2]
2965 ldr spc_ram,[context,#iapu_ram]
2967 addeq spc_pc,spc_pc,#1
2968 ldrnesb r0,[spc_pc],#1
2969 addne spc_pc,spc_pc,r0
2970 subne cycles,cycles,#42
2971 subs cycles,cycles,#105
2972 ldrgeb opcode,[spc_pc],#1
2973 ldrge pc,[opcodes,opcode,lsl #2]
2980 ldr spc_ram,[context,#iapu_ram]
2981 and r1,spc_ya,#0xff00
2982 and spc_ya,spc_ya,#0xff
2983 movs r12,spc_p,lsr #1
2985 orrge spc_p,spc_p,#flag_c
2986 biclt spc_p,spc_p,#flag_c
2991 orrne spc_p,spc_p,#flag_o
2992 biceq spc_p,spc_p,#flag_o
2995 orreq spc_p,spc_p,#flag_h
2996 bicne spc_p,spc_p,#flag_h
2998 and spc_p,spc_p,#0xff
2999 orr spc_p,spc_p,spc_ya,lsl #24
3000 and spc_ya,spc_ya,#0xff
3001 orr spc_ya,spc_ya,r1
3002 subs cycles,cycles,#63
3003 ldrgeb opcode,[spc_pc],#1
3004 ldrge pc,[opcodes,opcode,lsl #2]
3010 ldrb r12,[spc_pc],#1
3011 orr r0,r0,r12,lsl #8
3013 ldr spc_ram,[context,#iapu_ram]
3014 and r1,spc_ya,#0xff00
3015 and spc_ya,spc_ya,#0xff
3016 movs r12,spc_p,lsr #1
3018 orrge spc_p,spc_p,#flag_c
3019 biclt spc_p,spc_p,#flag_c
3024 orrne spc_p,spc_p,#flag_o
3025 biceq spc_p,spc_p,#flag_o
3028 orreq spc_p,spc_p,#flag_h
3029 bicne spc_p,spc_p,#flag_h
3031 and spc_p,spc_p,#0xff
3032 orr spc_p,spc_p,spc_ya,lsl #24
3033 and spc_ya,spc_ya,#0xff
3034 orr spc_ya,spc_ya,r1
3035 subs cycles,cycles,#84
3036 ldrgeb opcode,[spc_pc],#1
3037 ldrge pc,[opcodes,opcode,lsl #2]
3044 ldr spc_ram,[context,#iapu_ram]
3045 and r1,spc_ya,#0xff00
3046 and spc_ya,spc_ya,#0xff
3047 movs r12,spc_p,lsr #1
3049 orrge spc_p,spc_p,#flag_c
3050 biclt spc_p,spc_p,#flag_c
3055 orrne spc_p,spc_p,#flag_o
3056 biceq spc_p,spc_p,#flag_o
3059 orreq spc_p,spc_p,#flag_h
3060 bicne spc_p,spc_p,#flag_h
3062 and spc_p,spc_p,#0xff
3063 orr spc_p,spc_p,spc_ya,lsl #24
3064 and spc_ya,spc_ya,#0xff
3065 orr spc_ya,spc_ya,r1
3066 subs cycles,cycles,#63
3067 ldrgeb opcode,[spc_pc],#1
3068 ldrge pc,[opcodes,opcode,lsl #2]
3076 ldr r12,[context,#iapu_directpage]
3079 orr r0,r0,r12,lsl #8
3081 ldr spc_ram,[context,#iapu_ram]
3082 and r1,spc_ya,#0xff00
3083 and spc_ya,spc_ya,#0xff
3084 movs r12,spc_p,lsr #1
3086 orrge spc_p,spc_p,#flag_c
3087 biclt spc_p,spc_p,#flag_c
3092 orrne spc_p,spc_p,#flag_o
3093 biceq spc_p,spc_p,#flag_o
3096 orreq spc_p,spc_p,#flag_h
3097 bicne spc_p,spc_p,#flag_h
3099 and spc_p,spc_p,#0xff
3100 orr spc_p,spc_p,spc_ya,lsl #24
3101 and spc_ya,spc_ya,#0xff
3102 orr spc_ya,spc_ya,r1
3103 subs cycles,cycles,#126
3104 ldrgeb opcode,[spc_pc],#1
3105 ldrge pc,[opcodes,opcode,lsl #2]
3111 and r1,spc_ya,#0xff00
3112 and spc_ya,spc_ya,#0xff
3113 movs r12,spc_p,lsr #1
3115 orrge spc_p,spc_p,#flag_c
3116 biclt spc_p,spc_p,#flag_c
3121 orrne spc_p,spc_p,#flag_o
3122 biceq spc_p,spc_p,#flag_o
3125 orreq spc_p,spc_p,#flag_h
3126 bicne spc_p,spc_p,#flag_h
3128 and spc_p,spc_p,#0xff
3129 orr spc_p,spc_p,spc_ya,lsl #24
3130 and spc_ya,spc_ya,#0xff
3131 orr spc_ya,spc_ya,r1
3132 subs cycles,cycles,#42
3133 ldrgeb opcode,[spc_pc],#1
3134 ldrge pc,[opcodes,opcode,lsl #2]
3145 movs r12,spc_p,lsr #1
3147 orrge spc_p,spc_p,#flag_c
3148 biclt spc_p,spc_p,#flag_c
3153 orrne spc_p,spc_p,#flag_o
3154 biceq spc_p,spc_p,#flag_o
3157 orreq spc_p,spc_p,#flag_h
3158 bicne spc_p,spc_p,#flag_h
3160 and spc_p,spc_p,#0xff
3161 orr spc_p,spc_p,r0,lsl #24
3164 ldr spc_ram,[context,#iapu_ram]
3165 subs cycles,cycles,#126
3166 ldrgeb opcode,[spc_pc],#1
3167 ldrge pc,[opcodes,opcode,lsl #2]
3178 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
3180 mov r1,spc_x,lsr #29
3181 and spc_x,spc_x,#0xff
3184 orrne spc_p,spc_p,#flag_c
3185 biceq spc_p,spc_p,#flag_c
3186 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
3187 subs cycles,cycles,#84
3188 ldrgeb opcode,[spc_pc],#1
3189 ldrge pc,[opcodes,opcode,lsl #2]
3197 and spc_p,spc_p,#0xff
3198 orr spc_p,spc_p,r0,lsl #24
3201 ldr spc_ram,[context,#iapu_ram]
3202 subs cycles,cycles,#84
3203 ldrgeb opcode,[spc_pc],#1
3204 ldrge pc,[opcodes,opcode,lsl #2]
3210 ldrb r12,[spc_pc],#1
3211 orr r0,r0,r12,lsl #8
3215 and spc_p,spc_p,#0xff
3216 orr spc_p,spc_p,r0,lsl #24
3219 ldr spc_ram,[context,#iapu_ram]
3220 subs cycles,cycles,#105
3221 ldrgeb opcode,[spc_pc],#1
3222 ldrge pc,[opcodes,opcode,lsl #2]
3228 mov r1,spc_ya,lsr #8
3230 orrge spc_p,spc_p,#flag_c
3231 biclt spc_p,spc_p,#flag_c
3232 and spc_p,spc_p,#0xff
3233 orr spc_p,spc_p,r12,lsl #24
3234 subs cycles,cycles,#42
3235 ldrgeb opcode,[spc_pc],#1
3236 ldrge pc,[opcodes,opcode,lsl #2]
3242 add r0,spc_ram,spc_s
3244 and spc_ya,spc_ya,#0xff00
3245 orr spc_ya,spc_ya,r0
3246 subs cycles,cycles,#84
3247 ldrgeb opcode,[spc_pc],#1
3248 ldrge pc,[opcodes,opcode,lsl #2]
3256 ldr spc_ram,[context,#iapu_ram]
3258 and spc_x,spc_x,#0xff
3259 subs cycles,cycles,#84
3260 ldrgeb opcode,[spc_pc],#1
3261 ldrge pc,[opcodes,opcode,lsl #2]
3266 tst spc_p,#0x00000001
3267 addeq spc_pc,spc_pc,#1
3268 ldrnesb r0,[spc_pc],#1
3269 addne spc_pc,spc_pc,r0
3270 subne cycles,cycles,#42
3271 subs cycles,cycles,#42
3272 ldrgeb opcode,[spc_pc],#1
3273 ldrge pc,[opcodes,opcode,lsl #2]
3278 sub r0,spc_pc,spc_ram
3279 add r1,spc_ram,spc_s
3284 ldr r0,[context,#iapu_extraram]
3286 add spc_pc,spc_ram,r0
3287 subs cycles,cycles,#168
3288 ldrgeb opcode,[spc_pc],#1
3289 ldrge pc,[opcodes,opcode,lsl #2]
3299 ldr spc_ram,[context,#iapu_ram]
3300 subs cycles,cycles,#84
3301 ldrgeb opcode,[spc_pc],#1
3302 ldrge pc,[opcodes,opcode,lsl #2]
3309 ldr spc_ram,[context,#iapu_ram]
3311 addne spc_pc,spc_pc,#1
3312 ldreqsb r0,[spc_pc],#1
3313 addeq spc_pc,spc_pc,r0
3314 subeq cycles,cycles,#42
3315 subs cycles,cycles,#105
3316 ldrgeb opcode,[spc_pc],#1
3317 ldrge pc,[opcodes,opcode,lsl #2]
3325 ldr spc_ram,[context,#iapu_ram]
3326 and r1,spc_ya,#0xff00
3327 and spc_ya,spc_ya,#0xff
3328 movs r12,spc_p,lsr #1
3330 orrge spc_p,spc_p,#flag_c
3331 biclt spc_p,spc_p,#flag_c
3336 orrne spc_p,spc_p,#flag_o
3337 biceq spc_p,spc_p,#flag_o
3340 orreq spc_p,spc_p,#flag_h
3341 bicne spc_p,spc_p,#flag_h
3343 and spc_p,spc_p,#0xff
3344 orr spc_p,spc_p,spc_ya,lsl #24
3345 and spc_ya,spc_ya,#0xff
3346 orr spc_ya,spc_ya,r1
3347 subs cycles,cycles,#84
3348 ldrgeb opcode,[spc_pc],#1
3349 ldrge pc,[opcodes,opcode,lsl #2]
3355 ldrb r12,[spc_pc],#1
3356 orr r0,r0,r12,lsl #8
3359 ldr spc_ram,[context,#iapu_ram]
3360 and r1,spc_ya,#0xff00
3361 and spc_ya,spc_ya,#0xff
3362 movs r12,spc_p,lsr #1
3364 orrge spc_p,spc_p,#flag_c
3365 biclt spc_p,spc_p,#flag_c
3370 orrne spc_p,spc_p,#flag_o
3371 biceq spc_p,spc_p,#flag_o
3374 orreq spc_p,spc_p,#flag_h
3375 bicne spc_p,spc_p,#flag_h
3377 and spc_p,spc_p,#0xff
3378 orr spc_p,spc_p,spc_ya,lsl #24
3379 and spc_ya,spc_ya,#0xff
3380 orr spc_ya,spc_ya,r1
3381 subs cycles,cycles,#105
3382 ldrgeb opcode,[spc_pc],#1
3383 ldrge pc,[opcodes,opcode,lsl #2]
3389 ldrb r12,[spc_pc],#1
3390 orr r0,r0,r12,lsl #8
3391 add r0,r0,spc_ya,lsr #8
3393 ldr spc_ram,[context,#iapu_ram]
3394 and r1,spc_ya,#0xff00
3395 and spc_ya,spc_ya,#0xff
3396 movs r12,spc_p,lsr #1
3398 orrge spc_p,spc_p,#flag_c
3399 biclt spc_p,spc_p,#flag_c
3404 orrne spc_p,spc_p,#flag_o
3405 biceq spc_p,spc_p,#flag_o
3408 orreq spc_p,spc_p,#flag_h
3409 bicne spc_p,spc_p,#flag_h
3411 and spc_p,spc_p,#0xff
3412 orr spc_p,spc_p,spc_ya,lsl #24
3413 and spc_ya,spc_ya,#0xff
3414 orr spc_ya,spc_ya,r1
3415 subs cycles,cycles,#105
3416 ldrgeb opcode,[spc_pc],#1
3417 ldrge pc,[opcodes,opcode,lsl #2]
3423 ldr r12,[context,#iapu_directpage]
3426 orr r0,r0,r12,lsl #8
3427 add r0,r0,spc_ya,lsr #8
3429 ldr spc_ram,[context,#iapu_ram]
3430 and r1,spc_ya,#0xff00
3431 and spc_ya,spc_ya,#0xff
3432 movs r12,spc_p,lsr #1
3434 orrge spc_p,spc_p,#flag_c
3435 biclt spc_p,spc_p,#flag_c
3440 orrne spc_p,spc_p,#flag_o
3441 biceq spc_p,spc_p,#flag_o
3444 orreq spc_p,spc_p,#flag_h
3445 bicne spc_p,spc_p,#flag_h
3447 and spc_p,spc_p,#0xff
3448 orr spc_p,spc_p,spc_ya,lsl #24
3449 and spc_ya,spc_ya,#0xff
3450 orr spc_ya,spc_ya,r1
3451 subs cycles,cycles,#126
3452 ldrgeb opcode,[spc_pc],#1
3453 ldrge pc,[opcodes,opcode,lsl #2]
3461 movs r12,spc_p,lsr #1
3463 orrge spc_p,spc_p,#flag_c
3464 biclt spc_p,spc_p,#flag_c
3469 orrne spc_p,spc_p,#flag_o
3470 biceq spc_p,spc_p,#flag_o
3473 orreq spc_p,spc_p,#flag_h
3474 bicne spc_p,spc_p,#flag_h
3476 and spc_p,spc_p,#0xff
3477 orr spc_p,spc_p,r0,lsl #24
3478 ldrb r1,[spc_pc,#-1]
3480 ldr spc_ram,[context,#iapu_ram]
3481 subs cycles,cycles,#105
3482 ldrgeb opcode,[spc_pc],#1
3483 ldrge pc,[opcodes,opcode,lsl #2]
3491 mov r0,spc_ya,lsr #8
3494 movs r12,spc_p,lsr #1
3496 orrge spc_p,spc_p,#flag_c
3497 biclt spc_p,spc_p,#flag_c
3502 orrne spc_p,spc_p,#flag_o
3503 biceq spc_p,spc_p,#flag_o
3506 orreq spc_p,spc_p,#flag_h
3507 bicne spc_p,spc_p,#flag_h
3509 and spc_p,spc_p,#0xff
3510 orr spc_p,spc_p,r0,lsl #24
3513 ldr spc_ram,[context,#iapu_ram]
3514 subs cycles,cycles,#105
3515 ldrgeb opcode,[spc_pc],#1
3516 ldrge pc,[opcodes,opcode,lsl #2]
3527 ldr spc_ram,[context,#iapu_ram]
3528 orr spc_ya,spc_ya,r0,lsl #8
3529 and spc_p,spc_p,#0xff
3530 orr spc_p,spc_p,spc_ya,lsl #16
3532 orrne spc_p,spc_p,#0x01000000
3533 subs cycles,cycles,#105
3534 ldrgeb opcode,[spc_pc],#1
3535 ldrge pc,[opcodes,opcode,lsl #2]
3544 and spc_p,spc_p,#0xff
3545 orr spc_p,spc_p,r0,lsl #24
3549 ldr spc_ram,[context,#iapu_ram]
3550 subs cycles,cycles,#105
3551 ldrgeb opcode,[spc_pc],#1
3552 ldrge pc,[opcodes,opcode,lsl #2]
3559 and spc_p,spc_p,#0xff
3560 orr spc_p,spc_p,r0,lsl #24
3562 mov spc_ya,spc_ya,lsr #8
3563 orr spc_ya,r0,spc_ya,lsl #8
3564 subs cycles,cycles,#42
3565 ldrgeb opcode,[spc_pc],#1
3566 ldrge pc,[opcodes,opcode,lsl #2]
3572 subs cycles,cycles,#42
3573 ldrgeb opcode,[spc_pc],#1
3574 ldrge pc,[opcodes,opcode,lsl #2]
3589 orr spc_p,spc_p,#flag_c
3593 bic spc_p,spc_p,#flag_c
3595 and spc_ya,spc_ya,#0xff00
3596 orr spc_ya,spc_ya,r0
3597 and spc_p,spc_p,#0xff
3598 orr spc_p,spc_p,spc_ya,lsl #24
3599 subs cycles,cycles,#63
3600 ldrgeb opcode,[spc_pc],#1
3601 ldrge pc,[opcodes,opcode,lsl #2]
3608 ldr spc_ram,[context,#iapu_ram]
3609 and spc_ya,spc_ya,#0xff00
3610 orr spc_ya,spc_ya,r0
3612 and spc_x,spc_x,#0xff
3613 and spc_p,spc_p,#0xff
3614 orr spc_p,spc_p,spc_ya,lsl #24
3615 subs cycles,cycles,#84
3616 ldrgeb opcode,[spc_pc],#1
3617 ldrge pc,[opcodes,opcode,lsl #2]
3622 bic spc_p,spc_p,#flag_i
3623 subs cycles,cycles,#63
3624 ldrgeb opcode,[spc_pc],#1
3625 ldrge pc,[opcodes,opcode,lsl #2]
3630 sub r0,spc_pc,spc_ram
3631 add r1,spc_ram,spc_s
3636 ldr r0,[context,#iapu_extraram]
3638 add spc_pc,spc_ram,r0
3639 subs cycles,cycles,#168
3640 ldrgeb opcode,[spc_pc],#1
3641 ldrge pc,[opcodes,opcode,lsl #2]
3651 ldr spc_ram,[context,#iapu_ram]
3652 subs cycles,cycles,#84
3653 ldrgeb opcode,[spc_pc],#1
3654 ldrge pc,[opcodes,opcode,lsl #2]
3661 ldr spc_ram,[context,#iapu_ram]
3663 addeq spc_pc,spc_pc,#1
3664 ldrnesb r0,[spc_pc],#1
3665 addne spc_pc,spc_pc,r0
3666 subne cycles,cycles,#42
3667 subs cycles,cycles,#105
3668 ldrgeb opcode,[spc_pc],#1
3669 ldrge pc,[opcodes,opcode,lsl #2]
3677 ldr spc_ram,[context,#iapu_ram]
3678 subs cycles,cycles,#84
3679 ldrgeb opcode,[spc_pc],#1
3680 ldrge pc,[opcodes,opcode,lsl #2]
3686 ldrb r12,[spc_pc],#1
3687 orr r1,r1,r12,lsl #8
3690 ldr spc_ram,[context,#iapu_ram]
3691 subs cycles,cycles,#105
3692 ldrgeb opcode,[spc_pc],#1
3693 ldrge pc,[opcodes,opcode,lsl #2]
3701 ldr spc_ram,[context,#iapu_ram]
3702 subs cycles,cycles,#84
3703 ldrgeb opcode,[spc_pc],#1
3704 ldrge pc,[opcodes,opcode,lsl #2]
3712 ldr r12,[context,#iapu_directpage]
3715 orr r1,r1,r12,lsl #8
3718 ldr spc_ram,[context,#iapu_ram]
3719 subs cycles,cycles,#147
3720 ldrgeb opcode,[spc_pc],#1
3721 ldrge pc,[opcodes,opcode,lsl #2]
3728 orrge spc_p,spc_p,#flag_c
3729 biclt spc_p,spc_p,#flag_c
3730 and spc_p,spc_p,#0xff
3731 orr spc_p,spc_p,r12,lsl #24
3732 subs cycles,cycles,#42
3733 ldrgeb opcode,[spc_pc],#1
3734 ldrge pc,[opcodes,opcode,lsl #2]
3740 ldrb r12,[spc_pc],#1
3741 orr r1,r1,r12,lsl #8
3744 ldr spc_ram,[context,#iapu_ram]
3745 subs cycles,cycles,#105
3746 ldrgeb opcode,[spc_pc],#1
3747 ldrge pc,[opcodes,opcode,lsl #2]
3758 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
3761 mov r1,spc_x,lsr #29
3762 and spc_x,spc_x,#0xff
3770 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
3771 subs cycles,cycles,#126
3772 ldrgeb opcode,[spc_pc],#1
3773 ldrge pc,[opcodes,opcode,lsl #2]
3779 mov r0,spc_ya,lsr #8
3781 ldr spc_ram,[context,#iapu_ram]
3782 subs cycles,cycles,#84
3783 ldrgeb opcode,[spc_pc],#1
3784 ldrge pc,[opcodes,opcode,lsl #2]
3790 ldrb r12,[spc_pc],#1
3791 orr r1,r1,r12,lsl #8
3792 mov r0,spc_ya,lsr #8
3794 ldr spc_ram,[context,#iapu_ram]
3795 subs cycles,cycles,#105
3796 ldrgeb opcode,[spc_pc],#1
3797 ldrge pc,[opcodes,opcode,lsl #2]
3802 ldrb spc_x,[spc_pc],#1
3803 and spc_p,spc_p,#0xff
3804 orr spc_p,spc_p,spc_x,lsl #24
3805 subs cycles,cycles,#42
3806 ldrgeb opcode,[spc_pc],#1
3807 ldrge pc,[opcodes,opcode,lsl #2]
3813 add spc_x,spc_ram,spc_s
3814 ldrb spc_x,[spc_x,#0x100]
3815 subs cycles,cycles,#84
3816 ldrgeb opcode,[spc_pc],#1
3817 ldrge pc,[opcodes,opcode,lsl #2]
3822 mov r0,spc_ya,lsr #8
3823 and spc_ya,spc_ya,#0xff
3824 mul spc_ya,r0,spc_ya
3825 and spc_p,spc_p,#0xff
3826 orr spc_p,spc_p,spc_ya,lsl #16
3828 orrne spc_p,spc_p,#0x01000000
3829 subs cycles,cycles,#189
3830 ldrgeb opcode,[spc_pc],#1
3831 ldrge pc,[opcodes,opcode,lsl #2]
3836 tst spc_p,#0xFF000000
3837 addeq spc_pc,spc_pc,#1
3838 ldrnesb r0,[spc_pc],#1
3839 addne spc_pc,spc_pc,r0
3840 subne cycles,cycles,#42
3841 subs cycles,cycles,#42
3842 ldrgeb opcode,[spc_pc],#1
3843 ldrge pc,[opcodes,opcode,lsl #2]
3848 sub r0,spc_pc,spc_ram
3849 add r1,spc_ram,spc_s
3854 ldr r0,[context,#iapu_extraram]
3856 add spc_pc,spc_ram,r0
3857 subs cycles,cycles,#168
3858 ldrgeb opcode,[spc_pc],#1
3859 ldrge pc,[opcodes,opcode,lsl #2]
3869 ldr spc_ram,[context,#iapu_ram]
3870 subs cycles,cycles,#84
3871 ldrgeb opcode,[spc_pc],#1
3872 ldrge pc,[opcodes,opcode,lsl #2]
3879 ldr spc_ram,[context,#iapu_ram]
3881 addne spc_pc,spc_pc,#1
3882 ldreqsb r0,[spc_pc],#1
3883 addeq spc_pc,spc_pc,r0
3884 subeq cycles,cycles,#42
3885 subs cycles,cycles,#105
3886 ldrgeb opcode,[spc_pc],#1
3887 ldrge pc,[opcodes,opcode,lsl #2]
3896 ldr spc_ram,[context,#iapu_ram]
3897 subs cycles,cycles,#105
3898 ldrgeb opcode,[spc_pc],#1
3899 ldrge pc,[opcodes,opcode,lsl #2]
3905 ldrb r12,[spc_pc],#1
3906 orr r1,r1,r12,lsl #8
3910 ldr spc_ram,[context,#iapu_ram]
3911 subs cycles,cycles,#126
3912 ldrgeb opcode,[spc_pc],#1
3913 ldrge pc,[opcodes,opcode,lsl #2]
3919 ldrb r12,[spc_pc],#1
3920 orr r1,r1,r12,lsl #8
3921 add r1,r1,spc_ya,lsr #8
3924 ldr spc_ram,[context,#iapu_ram]
3925 subs cycles,cycles,#126
3926 ldrgeb opcode,[spc_pc],#1
3927 ldrge pc,[opcodes,opcode,lsl #2]
3933 ldr r12,[context,#iapu_directpage]
3936 orr r1,r1,r12,lsl #8
3937 add r1,r1,spc_ya,lsr #8
3940 ldr spc_ram,[context,#iapu_ram]
3941 subs cycles,cycles,#147
3942 ldrgeb opcode,[spc_pc],#1
3943 ldrge pc,[opcodes,opcode,lsl #2]
3951 ldr spc_ram,[context,#iapu_ram]
3952 subs cycles,cycles,#84
3953 ldrgeb opcode,[spc_pc],#1
3954 ldrge pc,[opcodes,opcode,lsl #2]
3960 add r1,r1,spc_ya,lsr #8
3963 ldr spc_ram,[context,#iapu_ram]
3964 subs cycles,cycles,#105
3965 ldrgeb opcode,[spc_pc],#1
3966 ldrge pc,[opcodes,opcode,lsl #2]
3976 mov r0,spc_ya,lsr #8
3978 ldr spc_ram,[context,#iapu_ram]
3979 subs cycles,cycles,#84
3980 ldrgeb opcode,[spc_pc],#1
3981 ldrge pc,[opcodes,opcode,lsl #2]
3988 mov r0,spc_ya,lsr #8
3990 ldr spc_ram,[context,#iapu_ram]
3991 subs cycles,cycles,#105
3992 ldrgeb opcode,[spc_pc],#1
3993 ldrge pc,[opcodes,opcode,lsl #2]
3998 mov r0,spc_ya,lsr #8
4001 and spc_p,spc_p,#0xff
4002 orr spc_p,spc_p,r0,lsl #24
4003 and spc_ya,spc_ya,#0xff
4004 orr spc_ya,spc_ya,r0,lsl #8
4005 subs cycles,cycles,#42
4006 ldrgeb opcode,[spc_pc],#1
4007 ldrge pc,[opcodes,opcode,lsl #2]
4012 and spc_ya,spc_ya,#0xff00
4013 orr spc_ya,spc_ya,spc_ya,lsr #8
4014 and spc_p,spc_p,#0xff
4015 orr spc_p,spc_p,spc_ya,lsl #24
4016 subs cycles,cycles,#42
4017 ldrgeb opcode,[spc_pc],#1
4018 ldrge pc,[opcodes,opcode,lsl #2]
4026 ldr spc_ram,[context,#iapu_ram]
4029 addeq spc_pc,spc_pc,#1
4030 ldrnesb r0,[spc_pc],#1
4031 addne spc_pc,spc_pc,r0
4032 subne cycles,cycles,#42
4033 subs cycles,cycles,#126
4034 ldrgeb opcode,[spc_pc],#1
4035 ldrge pc,[opcodes,opcode,lsl #2]
4046 orrhi spc_p,spc_p,#flag_c
4053 orrhi spc_p,spc_p,#flag_c
4060 orrhi spc_p,spc_p,#flag_c
4061 bicls spc_p,spc_p,#flag_c
4063 and spc_ya,spc_ya,#0xff00
4064 orr spc_ya,spc_ya,r0
4065 and spc_p,spc_p,#0xff
4066 orr spc_p,spc_p,spc_ya,lsl #24
4067 subs cycles,cycles,#63
4068 ldrgeb opcode,[spc_pc],#1
4069 ldrge pc,[opcodes,opcode,lsl #2]
4074 bic spc_p,spc_p,#(flag_o|flag_h)
4075 subs cycles,cycles,#42
4076 ldrgeb opcode,[spc_pc],#1
4077 ldrge pc,[opcodes,opcode,lsl #2]
4082 sub r0,spc_pc,spc_ram
4083 add r1,spc_ram,spc_s
4088 ldr r0,[context,#iapu_extraram]
4090 add spc_pc,spc_ram,r0
4091 subs cycles,cycles,#168
4092 ldrgeb opcode,[spc_pc],#1
4093 ldrge pc,[opcodes,opcode,lsl #2]
4103 ldr spc_ram,[context,#iapu_ram]
4104 subs cycles,cycles,#84
4105 ldrgeb opcode,[spc_pc],#1
4106 ldrge pc,[opcodes,opcode,lsl #2]
4113 ldr spc_ram,[context,#iapu_ram]
4115 addeq spc_pc,spc_pc,#1
4116 ldrnesb r0,[spc_pc],#1
4117 addne spc_pc,spc_pc,r0
4118 subne cycles,cycles,#42
4119 subs cycles,cycles,#105
4120 ldrgeb opcode,[spc_pc],#1
4121 ldrge pc,[opcodes,opcode,lsl #2]
4128 ldr spc_ram,[context,#iapu_ram]
4129 and spc_ya,spc_ya,#0xff00
4130 orr spc_ya,spc_ya,r0
4131 and spc_p,spc_p,#0xff
4132 orr spc_p,spc_p,spc_ya,lsl #24
4133 subs cycles,cycles,#63
4134 ldrgeb opcode,[spc_pc],#1
4135 ldrge pc,[opcodes,opcode,lsl #2]
4141 ldrb r12,[spc_pc],#1
4142 orr r0,r0,r12,lsl #8
4144 ldr spc_ram,[context,#iapu_ram]
4145 and spc_ya,spc_ya,#0xff00
4146 orr spc_ya,spc_ya,r0
4147 and spc_p,spc_p,#0xff
4148 orr spc_p,spc_p,spc_ya,lsl #24
4149 subs cycles,cycles,#84
4150 ldrgeb opcode,[spc_pc],#1
4151 ldrge pc,[opcodes,opcode,lsl #2]
4158 ldr spc_ram,[context,#iapu_ram]
4159 and spc_ya,spc_ya,#0xff00
4160 orr spc_ya,spc_ya,r0
4161 and spc_p,spc_p,#0xff
4162 orr spc_p,spc_p,spc_ya,lsl #24
4163 subs cycles,cycles,#63
4164 ldrgeb opcode,[spc_pc],#1
4165 ldrge pc,[opcodes,opcode,lsl #2]
4173 ldr r12,[context,#iapu_directpage]
4176 orr r0,r0,r12,lsl #8
4178 ldr spc_ram,[context,#iapu_ram]
4179 and spc_ya,spc_ya,#0xff00
4180 orr spc_ya,spc_ya,r0
4181 and spc_p,spc_p,#0xff
4182 orr spc_p,spc_p,spc_ya,lsl #24
4183 subs cycles,cycles,#126
4184 ldrgeb opcode,[spc_pc],#1
4185 ldrge pc,[opcodes,opcode,lsl #2]
4191 and spc_ya,spc_ya,#0xff00
4192 orr spc_ya,spc_ya,r0
4193 and spc_p,spc_p,#0xff
4194 orr spc_p,spc_p,spc_ya,lsl #24
4195 subs cycles,cycles,#42
4196 ldrgeb opcode,[spc_pc],#1
4197 ldrge pc,[opcodes,opcode,lsl #2]
4203 ldrb r12,[spc_pc],#1
4204 orr r0,r0,r12,lsl #8
4206 ldr spc_ram,[context,#iapu_ram]
4208 and spc_p,spc_p,#0xff
4209 orr spc_p,spc_p,spc_x,lsl #24
4210 subs cycles,cycles,#84
4211 ldrgeb opcode,[spc_pc],#1
4212 ldrge pc,[opcodes,opcode,lsl #2]
4223 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
4226 mov r1,spc_x,lsr #29
4227 and spc_x,spc_x,#0xff
4233 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
4234 subs cycles,cycles,#105
4235 ldrgeb opcode,[spc_pc],#1
4236 ldrge pc,[opcodes,opcode,lsl #2]
4243 ldr spc_ram,[context,#iapu_ram]
4244 and spc_ya,spc_ya,#0xff
4245 orr spc_ya,spc_ya,r0,lsl #8
4246 and spc_p,spc_p,#0xff
4247 orr spc_p,spc_p,r0,lsl #24
4248 subs cycles,cycles,#63
4249 ldrgeb opcode,[spc_pc],#1
4250 ldrge pc,[opcodes,opcode,lsl #2]
4256 ldrb r12,[spc_pc],#1
4257 orr r0,r0,r12,lsl #8
4259 ldr spc_ram,[context,#iapu_ram]
4260 and spc_ya,spc_ya,#0xff
4261 orr spc_ya,spc_ya,r0,lsl #8
4262 and spc_p,spc_p,#0xff
4263 orr spc_p,spc_p,r0,lsl #24
4264 subs cycles,cycles,#84
4265 ldrgeb opcode,[spc_pc],#1
4266 ldrge pc,[opcodes,opcode,lsl #2]
4271 eor spc_p,spc_p,#flag_c
4272 subs cycles,cycles,#63
4273 ldrgeb opcode,[spc_pc],#1
4274 ldrge pc,[opcodes,opcode,lsl #2]
4280 add r0,spc_ram,spc_s
4282 and spc_ya,spc_ya,#0xff
4283 orr spc_ya,spc_ya,r0,lsl #8
4284 subs cycles,cycles,#84
4285 ldrgeb opcode,[spc_pc],#1
4286 ldrge pc,[opcodes,opcode,lsl #2]
4294 subs cycles,cycles,#63
4295 ldrgeb opcode,[spc_pc],#1
4296 ldrge pc,[opcodes,opcode,lsl #2]
4301 tst spc_p,#0xFF000000
4302 addne spc_pc,spc_pc,#1
4303 ldreqsb r0,[spc_pc],#1
4304 addeq spc_pc,spc_pc,r0
4305 subeq cycles,cycles,#42
4306 subs cycles,cycles,#42
4307 ldrgeb opcode,[spc_pc],#1
4308 ldrge pc,[opcodes,opcode,lsl #2]
4313 sub r0,spc_pc,spc_ram
4314 add r1,spc_ram,spc_s
4319 ldr r0,[context,#iapu_extraram]
4321 add spc_pc,spc_ram,r0
4322 subs cycles,cycles,#168
4323 ldrgeb opcode,[spc_pc],#1
4324 ldrge pc,[opcodes,opcode,lsl #2]
4334 ldr spc_ram,[context,#iapu_ram]
4335 subs cycles,cycles,#84
4336 ldrgeb opcode,[spc_pc],#1
4337 ldrge pc,[opcodes,opcode,lsl #2]
4344 ldr spc_ram,[context,#iapu_ram]
4346 addne spc_pc,spc_pc,#1
4347 ldreqsb r0,[spc_pc],#1
4348 addeq spc_pc,spc_pc,r0
4349 subeq cycles,cycles,#42
4350 subs cycles,cycles,#105
4351 ldrgeb opcode,[spc_pc],#1
4352 ldrge pc,[opcodes,opcode,lsl #2]
4360 ldr spc_ram,[context,#iapu_ram]
4361 and spc_ya,spc_ya,#0xff00
4362 orr spc_ya,spc_ya,r0
4363 and spc_p,spc_p,#0xff
4364 orr spc_p,spc_p,spc_ya,lsl #24
4365 subs cycles,cycles,#84
4366 ldrgeb opcode,[spc_pc],#1
4367 ldrge pc,[opcodes,opcode,lsl #2]
4373 ldrb r12,[spc_pc],#1
4374 orr r0,r0,r12,lsl #8
4377 ldr spc_ram,[context,#iapu_ram]
4378 and spc_ya,spc_ya,#0xff00
4379 orr spc_ya,spc_ya,r0
4380 and spc_p,spc_p,#0xff
4381 orr spc_p,spc_p,spc_ya,lsl #24
4382 subs cycles,cycles,#105
4383 ldrgeb opcode,[spc_pc],#1
4384 ldrge pc,[opcodes,opcode,lsl #2]
4390 ldrb r12,[spc_pc],#1
4391 orr r0,r0,r12,lsl #8
4392 add r0,r0,spc_ya,lsr #8
4394 ldr spc_ram,[context,#iapu_ram]
4395 and spc_ya,spc_ya,#0xff00
4396 orr spc_ya,spc_ya,r0
4397 and spc_p,spc_p,#0xff
4398 orr spc_p,spc_p,spc_ya,lsl #24
4399 subs cycles,cycles,#105
4400 ldrgeb opcode,[spc_pc],#1
4401 ldrge pc,[opcodes,opcode,lsl #2]
4407 ldr r12,[context,#iapu_directpage]
4410 orr r0,r0,r12,lsl #8
4411 add r0,r0,spc_ya,lsr #8
4413 ldr spc_ram,[context,#iapu_ram]
4414 and spc_ya,spc_ya,#0xff00
4415 orr spc_ya,spc_ya,r0
4416 and spc_p,spc_p,#0xff
4417 orr spc_p,spc_p,spc_ya,lsl #24
4418 subs cycles,cycles,#126
4419 ldrgeb opcode,[spc_pc],#1
4420 ldrge pc,[opcodes,opcode,lsl #2]
4427 ldr spc_ram,[context,#iapu_ram]
4429 and spc_p,spc_p,#0xff
4430 orr spc_p,spc_p,spc_x,lsl #24
4431 subs cycles,cycles,#63
4432 ldrgeb opcode,[spc_pc],#1
4433 ldrge pc,[opcodes,opcode,lsl #2]
4439 add r0,r0,spc_ya,lsr #8
4441 ldr spc_ram,[context,#iapu_ram]
4443 and spc_p,spc_p,#0xff
4444 orr spc_p,spc_p,spc_x,lsl #24
4445 subs cycles,cycles,#84
4446 ldrgeb opcode,[spc_pc],#1
4447 ldrge pc,[opcodes,opcode,lsl #2]
4456 ldr spc_ram,[context,#iapu_ram]
4457 subs cycles,cycles,#105
4458 ldrgeb opcode,[spc_pc],#1
4459 ldrge pc,[opcodes,opcode,lsl #2]
4467 ldr spc_ram,[context,#iapu_ram]
4468 and spc_ya,spc_ya,#0xff
4469 orr spc_ya,spc_ya,r0,lsl #8
4470 and spc_p,spc_p,#0xff
4471 orr spc_p,spc_p,r0,lsl #24
4472 subs cycles,cycles,#84
4473 ldrgeb opcode,[spc_pc],#1
4474 ldrge pc,[opcodes,opcode,lsl #2]
4479 mov r0,spc_ya,lsr #8
4482 and spc_p,spc_p,#0xff
4483 orr spc_p,spc_p,r0,lsl #24
4484 and spc_ya,spc_ya,#0xff
4485 orr spc_ya,spc_ya,r0,lsl #8
4486 subs cycles,cycles,#42
4487 ldrgeb opcode,[spc_pc],#1
4488 ldrge pc,[opcodes,opcode,lsl #2]
4493 and spc_ya,spc_ya,#0xff
4494 orr spc_ya,spc_ya,spc_ya,lsl #8
4495 and spc_p,spc_p,#0xff
4496 orr spc_p,spc_p,spc_ya,lsl #24
4497 subs cycles,cycles,#42
4498 ldrgeb opcode,[spc_pc],#1
4499 ldrge pc,[opcodes,opcode,lsl #2]
4504 sub spc_ya,spc_ya,#0x100
4505 mov spc_ya,spc_ya,lsl #16
4506 mov spc_ya,spc_ya,lsr #16
4507 movs r0,spc_ya,lsr #8
4508 addeq spc_pc,spc_pc,#1
4509 ldrnesb r0,[spc_pc],#1
4510 addne spc_pc,spc_pc,r0
4511 subne cycles,cycles,#42
4512 subs cycles,cycles,#84
4513 ldrgeb opcode,[spc_pc],#1
4514 ldrge pc,[opcodes,opcode,lsl #2]
4522 subs cycles,cycles,#63
4523 ldrgeb opcode,[spc_pc],#1
4524 ldrge pc,[opcodes,opcode,lsl #2]
4528 @ -------------------------- Jump Table --------------------------
4530 .long Apu00, Apu01, Apu02, Apu03, Apu04, Apu05, Apu06, Apu07 @ 00
4531 .long Apu08, Apu09, Apu0A, Apu0B, Apu0C, Apu0D, Apu0E, Apu0F @ 08
4532 .long Apu10, Apu11, Apu12, Apu13, Apu14, Apu15, Apu16, Apu17 @ 10
4533 .long Apu18, Apu19, Apu1A, Apu1B, Apu1C, Apu1D, Apu1E, Apu1F @ 18
4534 .long Apu20, Apu21, Apu22, Apu23, Apu24, Apu25, Apu26, Apu27 @ 20
4535 .long Apu28, Apu29, Apu2A, Apu2B, Apu2C, Apu2D, Apu2E, Apu2F @ 28
4536 .long Apu30, Apu31, Apu32, Apu33, Apu34, Apu35, Apu36, Apu37 @ 30
4537 .long Apu38, Apu39, Apu3A, Apu3B, Apu3C, Apu3D, Apu3E, Apu3F @ 38
4538 .long Apu40, Apu41, Apu42, Apu43, Apu44, Apu45, Apu46, Apu47 @ 40
4539 .long Apu48, Apu49, Apu4A, Apu4B, Apu4C, Apu4D, Apu4E, Apu4F @ 48
4540 .long Apu50, Apu51, Apu52, Apu53, Apu54, Apu55, Apu56, Apu57 @ 50
4541 .long Apu58, Apu59, Apu5A, Apu5B, Apu5C, Apu5D, Apu5E, Apu5F @ 58
4542 .long Apu60, Apu61, Apu62, Apu63, Apu64, Apu65, Apu66, Apu67 @ 60
4543 .long Apu68, Apu69, Apu6A, Apu6B, Apu6C, Apu6D, Apu6E, Apu6F @ 68
4544 .long Apu70, Apu71, Apu72, Apu73, Apu74, Apu75, Apu76, Apu77 @ 70
4545 .long Apu78, Apu79, Apu7A, Apu7B, Apu7C, Apu7D, Apu7E, Apu7F @ 78
4546 .long Apu80, Apu81, Apu82, Apu83, Apu84, Apu85, Apu86, Apu87 @ 80
4547 .long Apu88, Apu89, Apu8A, Apu8B, Apu8C, Apu8D, Apu8E, Apu8F @ 88
4548 .long Apu90, Apu91, Apu92, Apu93, Apu94, Apu95, Apu96, Apu97 @ 90
4549 .long Apu98, Apu99, Apu9A, Apu9B, Apu9C, Apu9D, Apu9E, Apu9F @ 98
4550 .long ApuA0, ApuA1, ApuA2, ApuA3, ApuA4, ApuA5, ApuA6, ApuA7 @ a0
4551 .long ApuA8, ApuA9, ApuAA, ApuAB, ApuAC, ApuAD, ApuAE, ApuAF @ a8
4552 .long ApuB0, ApuB1, ApuB2, ApuB3, ApuB4, ApuB5, ApuB6, ApuB7 @ b0
4553 .long ApuB8, ApuB9, ApuBA, ApuBB, ApuBC, ApuBD, ApuBE, ApuBF @ b8
4554 .long ApuC0, ApuC1, ApuC2, ApuC3, ApuC4, ApuC5, ApuC6, ApuC7 @ c0
4555 .long ApuC8, ApuC9, ApuCA, ApuCB, ApuCC, ApuCD, ApuCE, ApuCF @ c8
4556 .long ApuD0, ApuD1, ApuD2, ApuD3, ApuD4, ApuD5, ApuD6, ApuD7 @ d0
4557 .long ApuD8, ApuD9, ApuDA, ApuDB, ApuDC, ApuDD, ApuDE, ApuDF @ d8
4558 .long ApuE0, ApuE1, ApuE2, ApuE3, ApuE4, ApuE5, ApuE6, ApuE7 @ e0
4559 .long ApuE8, ApuE9, ApuEA, ApuEB, ApuEC, ApuED, ApuEE, ApuEF @ e8
4560 .long ApuF0, ApuF1, ApuF2, ApuF3, ApuF4, ApuF5, ApuF6, ApuF7 @ f0
4561 .long ApuF8, ApuF9, ApuFA, ApuFB, ApuFC, ApuFD, ApuFE, ApuFF @ f8