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 mov spc_s,spc_x,lsr #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]
92 ldr r0,[context,#iapu_extraram]
95 subs cycles,cycles,#168
96 ldrgeb opcode,[spc_pc],#1
97 ldrge pc,[opcodes,opcode,lsl #2]
107 ldr spc_ram,[context,#iapu_ram]
108 subs cycles,cycles,#84
109 ldrgeb opcode,[spc_pc],#1
110 ldrge pc,[opcodes,opcode,lsl #2]
117 ldr spc_ram,[context,#iapu_ram]
119 addeq spc_pc,spc_pc,#1
120 ldrnesb r0,[spc_pc],#1
121 addne spc_pc,spc_pc,r0
122 subne cycles,cycles,#42
123 subs cycles,cycles,#105
124 ldrgeb opcode,[spc_pc],#1
125 ldrge pc,[opcodes,opcode,lsl #2]
132 ldr spc_ram,[context,#iapu_ram]
134 and spc_p,spc_p,#0xff
135 orr spc_p,spc_p,spc_ya,lsl #24
136 subs cycles,cycles,#63
137 ldrgeb opcode,[spc_pc],#1
138 ldrge pc,[opcodes,opcode,lsl #2]
147 ldr spc_ram,[context,#iapu_ram]
149 and spc_p,spc_p,#0xff
150 orr spc_p,spc_p,spc_ya,lsl #24
151 subs cycles,cycles,#84
152 ldrgeb opcode,[spc_pc],#1
153 ldrge pc,[opcodes,opcode,lsl #2]
160 ldr spc_ram,[context,#iapu_ram]
162 and spc_p,spc_p,#0xff
163 orr spc_p,spc_p,spc_ya,lsl #24
164 subs cycles,cycles,#63
165 ldrgeb opcode,[spc_pc],#1
166 ldrge pc,[opcodes,opcode,lsl #2]
174 ldr r12,[context,#iapu_directpage]
179 ldr spc_ram,[context,#iapu_ram]
181 and spc_p,spc_p,#0xff
182 orr spc_p,spc_p,spc_ya,lsl #24
183 subs cycles,cycles,#126
184 ldrgeb opcode,[spc_pc],#1
185 ldrge pc,[opcodes,opcode,lsl #2]
192 and spc_p,spc_p,#0xff
193 orr spc_p,spc_p,spc_ya,lsl #24
194 subs cycles,cycles,#42
195 ldrgeb opcode,[spc_pc],#1
196 ldrge pc,[opcodes,opcode,lsl #2]
203 orr spc_x,spc_x,r0,lsl #24 @ save from harm
206 orr r0,r0,spc_x,lsr #24
207 and spc_x,spc_x,#0xff
208 and spc_p,spc_p,#0xff
209 orr spc_p,spc_p,r0,lsl #24
212 ldr spc_ram,[context,#iapu_ram]
213 subs cycles,cycles,#126
214 ldrgeb opcode,[spc_pc],#1
215 ldrge pc,[opcodes,opcode,lsl #2]
226 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
229 and spc_x,spc_x,#0xff
232 orrne spc_p,spc_p,#flag_c
233 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
234 subs cycles,cycles,#105
235 ldrgeb opcode,[spc_pc],#1
236 ldrge pc,[opcodes,opcode,lsl #2]
244 orrne spc_p,spc_p,#flag_c
245 biceq spc_p,spc_p,#flag_c
247 and spc_p,spc_p,#0xff
248 orr spc_p,spc_p,r0,lsl #24
251 ldr spc_ram,[context,#iapu_ram]
252 subs cycles,cycles,#84
253 ldrgeb opcode,[spc_pc],#1
254 ldrge pc,[opcodes,opcode,lsl #2]
265 orrne spc_p,spc_p,#flag_c
266 biceq spc_p,spc_p,#flag_c
268 and spc_p,spc_p,#0xff
269 orr spc_p,spc_p,r0,lsl #24
272 ldr spc_ram,[context,#iapu_ram]
273 subs cycles,cycles,#105
274 ldrgeb opcode,[spc_pc],#1
275 ldrge pc,[opcodes,opcode,lsl #2]
284 and spc_p,spc_p,#0x7d @ clear N & Z
287 strb spc_p,[r1,#0x100]
289 orr spc_p,spc_p,r0,lsl #24
290 subs cycles,cycles,#84
291 ldrgeb opcode,[spc_pc],#1
292 ldrge pc,[opcodes,opcode,lsl #2]
300 orr spc_x,spc_x,r0,lsl #16 @ save from memhandler
303 and spc_p,spc_p,#0xff
304 orr spc_p,spc_p,r2,lsl #24
307 and spc_x,spc_x,#0xff
309 ldr spc_ram,[context,#iapu_ram]
310 subs cycles,cycles,#126
311 ldrgeb opcode,[spc_pc],#1
312 ldrge pc,[opcodes,opcode,lsl #2]
317 sub r0,spc_pc,spc_ram
327 and spc_p,spc_p,#0x7d @ clear N & Z
330 strb spc_p,[r1,#0x100]
332 orr spc_p,spc_p,#flag_b
333 bic spc_p,spc_p,#flag_i
334 ldr r0,[context,#iapu_extraram]
336 add spc_pc,spc_ram,r0
337 subs cycles,cycles,#168
338 ldrgeb opcode,[spc_pc],#1
339 ldrge pc,[opcodes,opcode,lsl #2]
344 tst spc_p,#0x80000000
345 addne spc_pc,spc_pc,#1
346 ldreqsb r0,[spc_pc],#1
347 addeq spc_pc,spc_pc,r0
348 subeq cycles,cycles,#42
349 subs cycles,cycles,#42
350 ldrgeb opcode,[spc_pc],#1
351 ldrge pc,[opcodes,opcode,lsl #2]
356 sub r0,spc_pc,spc_ram
362 ldr r0,[context,#iapu_extraram]
364 add spc_pc,spc_ram,r0
365 subs cycles,cycles,#168
366 ldrgeb opcode,[spc_pc],#1
367 ldrge pc,[opcodes,opcode,lsl #2]
377 ldr spc_ram,[context,#iapu_ram]
378 subs cycles,cycles,#84
379 ldrgeb opcode,[spc_pc],#1
380 ldrge pc,[opcodes,opcode,lsl #2]
387 ldr spc_ram,[context,#iapu_ram]
389 addne spc_pc,spc_pc,#1
390 ldreqsb r0,[spc_pc],#1
391 addeq spc_pc,spc_pc,r0
392 subeq cycles,cycles,#42
393 subs cycles,cycles,#105
394 ldrgeb opcode,[spc_pc],#1
395 ldrge pc,[opcodes,opcode,lsl #2]
403 ldr spc_ram,[context,#iapu_ram]
405 and spc_p,spc_p,#0xff
406 orr spc_p,spc_p,spc_ya,lsl #24
407 subs cycles,cycles,#84
408 ldrgeb opcode,[spc_pc],#1
409 ldrge pc,[opcodes,opcode,lsl #2]
419 ldr spc_ram,[context,#iapu_ram]
421 and spc_p,spc_p,#0xff
422 orr spc_p,spc_p,spc_ya,lsl #24
423 subs cycles,cycles,#105
424 ldrgeb opcode,[spc_pc],#1
425 ldrge pc,[opcodes,opcode,lsl #2]
433 add r0,r0,spc_ya,lsr #8
435 ldr spc_ram,[context,#iapu_ram]
437 and spc_p,spc_p,#0xff
438 orr spc_p,spc_p,spc_ya,lsl #24
439 subs cycles,cycles,#105
440 ldrgeb opcode,[spc_pc],#1
441 ldrge pc,[opcodes,opcode,lsl #2]
447 ldr r12,[context,#iapu_directpage]
451 add r0,r0,spc_ya,lsr #8
453 ldr spc_ram,[context,#iapu_ram]
455 and spc_p,spc_p,#0xff
456 orr spc_p,spc_p,spc_ya,lsl #24
457 subs cycles,cycles,#126
458 ldrgeb opcode,[spc_pc],#1
459 ldrge pc,[opcodes,opcode,lsl #2]
468 and spc_p,spc_p,#0xff
469 orr spc_p,spc_p,r0,lsl #24
472 ldr spc_ram,[context,#iapu_ram]
473 subs cycles,cycles,#105
474 ldrgeb opcode,[spc_pc],#1
475 ldrge pc,[opcodes,opcode,lsl #2]
482 orr spc_x,spc_x,r0,lsl #24
485 orr r0,r0,spc_x,lsr #24
486 and spc_x,spc_x,#0xff
487 and spc_p,spc_p,#0xff
488 orr spc_p,spc_p,r0,lsl #24
491 ldr spc_ram,[context,#iapu_ram]
492 subs cycles,cycles,#105
493 ldrgeb opcode,[spc_pc],#1
494 ldrge pc,[opcodes,opcode,lsl #2]
508 and spc_p,spc_p,#0xff
509 orr spc_p,spc_p,r0,lsl #16
511 orrne spc_p,spc_p,#0x01000000
520 ldr spc_ram,[context,#iapu_ram]
521 subs cycles,cycles,#126
522 ldrgeb opcode,[spc_pc],#1
523 ldrge pc,[opcodes,opcode,lsl #2]
533 orrne spc_p,spc_p,#flag_c
534 biceq spc_p,spc_p,#flag_c
536 and spc_p,spc_p,#0xff
537 orr spc_p,spc_p,r0,lsl #24
540 ldr spc_ram,[context,#iapu_ram]
541 subs cycles,cycles,#105
542 ldrgeb opcode,[spc_pc],#1
543 ldrge pc,[opcodes,opcode,lsl #2]
549 orrne spc_p,spc_p,#flag_c
550 biceq spc_p,spc_p,#flag_c
552 and spc_ya,spc_ya,#0xff00
553 orr spc_ya,spc_ya,r0,lsl #1
554 and spc_p,spc_p,#0xff
555 orr spc_p,spc_p,spc_ya,lsl #24
556 subs cycles,cycles,#42
557 ldrgeb opcode,[spc_pc],#1
558 ldrge pc,[opcodes,opcode,lsl #2]
564 and spc_x,spc_x,#0xff
565 and spc_p,spc_p,#0xff
566 orr spc_p,spc_p,spc_x,lsl #24
567 subs cycles,cycles,#42
568 ldrgeb opcode,[spc_pc],#1
569 ldrge pc,[opcodes,opcode,lsl #2]
578 ldr spc_ram,[context,#iapu_ram]
580 orrge spc_p,spc_p,#flag_c
581 biclt spc_p,spc_p,#flag_c
582 and spc_p,spc_p,#0xff
583 orr spc_p,spc_p,r12,lsl #24
584 subs cycles,cycles,#84
585 ldrgeb opcode,[spc_pc],#1
586 ldrge pc,[opcodes,opcode,lsl #2]
602 ldr spc_ram,[context,#iapu_ram]
605 add spc_pc,spc_ram,r0
606 subs cycles,cycles,#126
607 ldrgeb opcode,[spc_pc],#1
608 ldrge pc,[opcodes,opcode,lsl #2]
613 bic spc_p,spc_p,#flag_d
614 str spc_ram,[context,#iapu_directpage]
615 subs cycles,cycles,#42
616 ldrgeb opcode,[spc_pc],#1
617 ldrge pc,[opcodes,opcode,lsl #2]
622 sub r0,spc_pc,spc_ram
628 ldr r0,[context,#iapu_extraram]
630 add spc_pc,spc_ram,r0
631 subs cycles,cycles,#168
632 ldrgeb opcode,[spc_pc],#1
633 ldrge pc,[opcodes,opcode,lsl #2]
643 ldr spc_ram,[context,#iapu_ram]
644 subs cycles,cycles,#84
645 ldrgeb opcode,[spc_pc],#1
646 ldrge pc,[opcodes,opcode,lsl #2]
653 ldr spc_ram,[context,#iapu_ram]
655 addeq spc_pc,spc_pc,#1
656 ldrnesb r0,[spc_pc],#1
657 addne spc_pc,spc_pc,r0
658 subne cycles,cycles,#42
659 subs cycles,cycles,#105
660 ldrgeb opcode,[spc_pc],#1
661 ldrge pc,[opcodes,opcode,lsl #2]
668 ldr spc_ram,[context,#iapu_ram]
671 and spc_p,spc_p,#0xff
672 orr spc_p,spc_p,spc_ya,lsl #24
673 subs cycles,cycles,#63
674 ldrgeb opcode,[spc_pc],#1
675 ldrge pc,[opcodes,opcode,lsl #2]
684 ldr spc_ram,[context,#iapu_ram]
687 and spc_p,spc_p,#0xff
688 orr spc_p,spc_p,spc_ya,lsl #24
689 subs cycles,cycles,#84
690 ldrgeb opcode,[spc_pc],#1
691 ldrge pc,[opcodes,opcode,lsl #2]
698 ldr spc_ram,[context,#iapu_ram]
701 and spc_p,spc_p,#0xff
702 orr spc_p,spc_p,spc_ya,lsl #24
703 subs cycles,cycles,#63
704 ldrgeb opcode,[spc_pc],#1
705 ldrge pc,[opcodes,opcode,lsl #2]
713 ldr r12,[context,#iapu_directpage]
718 ldr spc_ram,[context,#iapu_ram]
721 and spc_p,spc_p,#0xff
722 orr spc_p,spc_p,spc_ya,lsl #24
723 subs cycles,cycles,#126
724 ldrgeb opcode,[spc_pc],#1
725 ldrge pc,[opcodes,opcode,lsl #2]
733 and spc_p,spc_p,#0xff
734 orr spc_p,spc_p,spc_ya,lsl #24
735 subs cycles,cycles,#42
736 ldrgeb opcode,[spc_pc],#1
737 ldrge pc,[opcodes,opcode,lsl #2]
749 and spc_p,spc_p,#0xff
750 orr spc_p,spc_p,r0,lsl #24
753 ldr spc_ram,[context,#iapu_ram]
754 subs cycles,cycles,#126
755 ldrgeb opcode,[spc_pc],#1
756 ldrge pc,[opcodes,opcode,lsl #2]
767 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
770 and spc_x,spc_x,#0xff
773 orreq spc_p,spc_p,#flag_c
774 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
775 subs cycles,cycles,#105
776 ldrgeb opcode,[spc_pc],#1
777 ldrge pc,[opcodes,opcode,lsl #2]
788 orrne spc_p,spc_p,#flag_c
789 biceq spc_p,spc_p,#flag_c
790 and spc_p,spc_p,#0xff
791 orr spc_p,spc_p,r0,lsl #24
794 ldr spc_ram,[context,#iapu_ram]
795 subs cycles,cycles,#84
796 ldrgeb opcode,[spc_pc],#1
797 ldrge pc,[opcodes,opcode,lsl #2]
811 orrne spc_p,spc_p,#flag_c
812 biceq spc_p,spc_p,#flag_c
813 and spc_p,spc_p,#0xff
814 orr spc_p,spc_p,r0,lsl #24
817 ldr spc_ram,[context,#iapu_ram]
818 subs cycles,cycles,#105
819 ldrgeb opcode,[spc_pc],#1
820 ldrge pc,[opcodes,opcode,lsl #2]
826 strb spc_ya,[r1,#0x100]
828 subs cycles,cycles,#84
829 ldrgeb opcode,[spc_pc],#1
830 ldrge pc,[opcodes,opcode,lsl #2]
837 ldr spc_ram,[context,#iapu_ram]
840 addeq spc_pc,spc_pc,#1
841 ldrnesb r0,[spc_pc],#1
842 addne spc_pc,spc_pc,r0
843 subne cycles,cycles,#42
844 subs cycles,cycles,#105
845 ldrgeb opcode,[spc_pc],#1
846 ldrge pc,[opcodes,opcode,lsl #2]
853 subs cycles,cycles,#84
854 ldrgeb opcode,[spc_pc],#1
855 ldrge pc,[opcodes,opcode,lsl #2]
860 tst spc_p,#0x80000000
861 addeq spc_pc,spc_pc,#1
862 ldrnesb r0,[spc_pc],#1
863 addne spc_pc,spc_pc,r0
864 subne cycles,cycles,#42
865 subs cycles,cycles,#42
866 ldrgeb opcode,[spc_pc],#1
867 ldrge pc,[opcodes,opcode,lsl #2]
872 sub r0,spc_pc,spc_ram
878 ldr r0,[context,#iapu_extraram]
880 add spc_pc,spc_ram,r0
881 subs cycles,cycles,#168
882 ldrgeb opcode,[spc_pc],#1
883 ldrge pc,[opcodes,opcode,lsl #2]
893 ldr spc_ram,[context,#iapu_ram]
894 subs cycles,cycles,#84
895 ldrgeb opcode,[spc_pc],#1
896 ldrge pc,[opcodes,opcode,lsl #2]
903 ldr spc_ram,[context,#iapu_ram]
905 addne spc_pc,spc_pc,#1
906 ldreqsb r0,[spc_pc],#1
907 addeq spc_pc,spc_pc,r0
908 subeq cycles,cycles,#42
909 subs cycles,cycles,#105
910 ldrgeb opcode,[spc_pc],#1
911 ldrge pc,[opcodes,opcode,lsl #2]
919 ldr spc_ram,[context,#iapu_ram]
922 and spc_p,spc_p,#0xff
923 orr spc_p,spc_p,spc_ya,lsl #24
924 subs cycles,cycles,#84
925 ldrgeb opcode,[spc_pc],#1
926 ldrge pc,[opcodes,opcode,lsl #2]
936 ldr spc_ram,[context,#iapu_ram]
939 and spc_p,spc_p,#0xff
940 orr spc_p,spc_p,spc_ya,lsl #24
941 subs cycles,cycles,#105
942 ldrgeb opcode,[spc_pc],#1
943 ldrge pc,[opcodes,opcode,lsl #2]
951 add r0,r0,spc_ya,lsr #8
953 ldr spc_ram,[context,#iapu_ram]
956 and spc_p,spc_p,#0xff
957 orr spc_p,spc_p,spc_ya,lsl #24
958 subs cycles,cycles,#105
959 ldrgeb opcode,[spc_pc],#1
960 ldrge pc,[opcodes,opcode,lsl #2]
966 ldr r12,[context,#iapu_directpage]
970 add r0,r0,spc_ya,lsr #8
972 ldr spc_ram,[context,#iapu_ram]
975 and spc_p,spc_p,#0xff
976 orr spc_p,spc_p,spc_ya,lsl #24
977 subs cycles,cycles,#126
978 ldrgeb opcode,[spc_pc],#1
979 ldrge pc,[opcodes,opcode,lsl #2]
988 and spc_p,spc_p,#0xff
989 orr spc_p,spc_p,r0,lsl #24
992 ldr spc_ram,[context,#iapu_ram]
993 subs cycles,cycles,#105
994 ldrgeb opcode,[spc_pc],#1
995 ldrge pc,[opcodes,opcode,lsl #2]
1003 mov r0,spc_ya,lsr #8
1007 and spc_p,spc_p,#0xff
1008 orr spc_p,spc_p,r0,lsl #24
1011 ldr spc_ram,[context,#iapu_ram]
1012 subs cycles,cycles,#105
1013 ldrgeb opcode,[spc_pc],#1
1014 ldrge pc,[opcodes,opcode,lsl #2]
1028 and spc_p,spc_p,#0xff
1029 orr spc_p,spc_p,r0,lsl #16
1031 orrne spc_p,spc_p,#0x01000000
1040 ldr spc_ram,[context,#iapu_ram]
1041 subs cycles,cycles,#126
1042 ldrgeb opcode,[spc_pc],#1
1043 ldrge pc,[opcodes,opcode,lsl #2]
1055 orrne spc_p,spc_p,#flag_c
1056 biceq spc_p,spc_p,#flag_c
1057 and spc_p,spc_p,#0xff
1058 orr spc_p,spc_p,r0,lsl #24
1062 ldr spc_ram,[context,#iapu_ram]
1063 subs cycles,cycles,#105
1064 ldrgeb opcode,[spc_pc],#1
1065 ldrge pc,[opcodes,opcode,lsl #2]
1075 orrne spc_p,spc_p,#flag_c
1076 biceq spc_p,spc_p,#flag_c
1077 and spc_p,spc_p,#0xff
1078 orr spc_p,spc_p,r0,lsl #24
1080 mov spc_ya,spc_ya,lsr #8
1081 orr spc_ya,r0,spc_ya,lsl #8
1082 subs cycles,cycles,#42
1083 ldrgeb opcode,[spc_pc],#1
1084 ldrge pc,[opcodes,opcode,lsl #2]
1090 and spc_x,spc_x,#0xff
1091 and spc_p,spc_p,#0xff
1092 orr spc_p,spc_p,spc_x,lsl #24
1093 subs cycles,cycles,#42
1094 ldrgeb opcode,[spc_pc],#1
1095 ldrge pc,[opcodes,opcode,lsl #2]
1102 ldr spc_ram,[context,#iapu_ram]
1104 orrge spc_p,spc_p,#flag_c
1105 biclt spc_p,spc_p,#flag_c
1106 and spc_p,spc_p,#0xff
1107 orr spc_p,spc_p,r12,lsl #24
1108 subs cycles,cycles,#63
1109 ldrgeb opcode,[spc_pc],#1
1110 ldrge pc,[opcodes,opcode,lsl #2]
1116 ldrb r12,[spc_pc],#1
1117 orr r2,r2,r12,lsl #8
1118 sub r0,spc_pc,spc_ram
1119 add r1,spc_ram,spc_s
1124 add spc_pc,spc_ram,r2
1125 subs cycles,cycles,#168
1126 ldrgeb opcode,[spc_pc],#1
1127 ldrge pc,[opcodes,opcode,lsl #2]
1132 orr spc_p,spc_p,#flag_d
1133 add r0,spc_ram,#0x100
1134 str r0,[context,#iapu_directpage]
1135 subs cycles,cycles,#42
1136 ldrgeb opcode,[spc_pc],#1
1137 ldrge pc,[opcodes,opcode,lsl #2]
1142 sub r0,spc_pc,spc_ram
1143 add r1,spc_ram,spc_s
1148 ldr r0,[context,#iapu_extraram]
1150 add spc_pc,spc_ram,r0
1151 subs cycles,cycles,#168
1152 ldrgeb opcode,[spc_pc],#1
1153 ldrge pc,[opcodes,opcode,lsl #2]
1163 ldr spc_ram,[context,#iapu_ram]
1164 subs cycles,cycles,#84
1165 ldrgeb opcode,[spc_pc],#1
1166 ldrge pc,[opcodes,opcode,lsl #2]
1173 ldr spc_ram,[context,#iapu_ram]
1175 addeq spc_pc,spc_pc,#1
1176 ldrnesb r0,[spc_pc],#1
1177 addne spc_pc,spc_pc,r0
1178 subne cycles,cycles,#42
1179 subs cycles,cycles,#105
1180 ldrgeb opcode,[spc_pc],#1
1181 ldrge pc,[opcodes,opcode,lsl #2]
1188 ldr spc_ram,[context,#iapu_ram]
1189 eor spc_ya,spc_ya,r0
1190 and spc_p,spc_p,#0xff
1191 orr spc_p,spc_p,spc_ya,lsl #24
1192 subs cycles,cycles,#63
1193 ldrgeb opcode,[spc_pc],#1
1194 ldrge pc,[opcodes,opcode,lsl #2]
1200 ldrb r12,[spc_pc],#1
1201 orr r0,r0,r12,lsl #8
1203 ldr spc_ram,[context,#iapu_ram]
1204 eor spc_ya,spc_ya,r0
1205 and spc_p,spc_p,#0xff
1206 orr spc_p,spc_p,spc_ya,lsl #24
1207 subs cycles,cycles,#84
1208 ldrgeb opcode,[spc_pc],#1
1209 ldrge pc,[opcodes,opcode,lsl #2]
1216 ldr spc_ram,[context,#iapu_ram]
1217 eor spc_ya,spc_ya,r0
1218 and spc_p,spc_p,#0xff
1219 orr spc_p,spc_p,spc_ya,lsl #24
1220 subs cycles,cycles,#63
1221 ldrgeb opcode,[spc_pc],#1
1222 ldrge pc,[opcodes,opcode,lsl #2]
1230 ldr r12,[context,#iapu_directpage]
1233 orr r0,r0,r12,lsl #8
1235 ldr spc_ram,[context,#iapu_ram]
1236 eor spc_ya,spc_ya,r0
1237 and spc_p,spc_p,#0xff
1238 orr spc_p,spc_p,spc_ya,lsl #24
1239 subs cycles,cycles,#126
1240 ldrgeb opcode,[spc_pc],#1
1241 ldrge pc,[opcodes,opcode,lsl #2]
1247 eor spc_ya,spc_ya,r0
1248 and spc_p,spc_p,#0xff
1249 orr spc_p,spc_p,spc_ya,lsl #24
1250 subs cycles,cycles,#42
1251 ldrgeb opcode,[spc_pc],#1
1252 ldrge pc,[opcodes,opcode,lsl #2]
1264 and spc_p,spc_p,#0xff
1265 orr spc_p,spc_p,r0,lsl #24
1268 ldr spc_ram,[context,#iapu_ram]
1269 subs cycles,cycles,#126
1270 ldrgeb opcode,[spc_pc],#1
1271 ldrge pc,[opcodes,opcode,lsl #2]
1282 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
1284 mov r1,spc_x,lsr #29
1285 and spc_x,spc_x,#0xff
1288 biceq spc_p,spc_p,#flag_c
1289 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
1290 subs cycles,cycles,#84
1291 ldrgeb opcode,[spc_pc],#1
1292 ldrge pc,[opcodes,opcode,lsl #2]
1300 orrne spc_p,spc_p,#flag_c
1301 biceq spc_p,spc_p,#flag_c
1303 and spc_p,spc_p,#0xff
1304 orr spc_p,spc_p,r0,lsl #24
1307 ldr spc_ram,[context,#iapu_ram]
1308 subs cycles,cycles,#84
1309 ldrgeb opcode,[spc_pc],#1
1310 ldrge pc,[opcodes,opcode,lsl #2]
1316 ldrb r12,[spc_pc],#1
1317 orr r0,r0,r12,lsl #8
1321 orrne spc_p,spc_p,#flag_c
1322 biceq spc_p,spc_p,#flag_c
1324 and spc_p,spc_p,#0xff
1325 orr spc_p,spc_p,r0,lsl #24
1328 ldr spc_ram,[context,#iapu_ram]
1329 subs cycles,cycles,#105
1330 ldrgeb opcode,[spc_pc],#1
1331 ldrge pc,[opcodes,opcode,lsl #2]
1336 add r1,spc_ram,spc_s
1337 strb spc_x,[r1,#0x100]
1339 subs cycles,cycles,#84
1340 ldrgeb opcode,[spc_pc],#1
1341 ldrge pc,[opcodes,opcode,lsl #2]
1347 ldrb r12,[spc_pc],#1
1348 orr r0,r0,r12,lsl #8
1349 orr spc_x,spc_x,r0,lsl #16 @ save from memhandler
1352 and spc_p,spc_p,#0xff
1353 orr spc_p,spc_p,r2,lsl #24
1355 mov r1,spc_x,lsr #16
1356 and spc_x,spc_x,#0xff
1358 ldr spc_ram,[context,#iapu_ram]
1359 subs cycles,cycles,#126
1360 ldrgeb opcode,[spc_pc],#1
1361 ldrge pc,[opcodes,opcode,lsl #2]
1367 sub r0,spc_pc,spc_ram
1368 add r1,spc_ram,spc_s
1373 add spc_pc,spc_ram,r2
1374 add spc_pc,spc_pc,#0xff00
1375 subs cycles,cycles,#126
1376 ldrgeb opcode,[spc_pc],#1
1377 ldrge pc,[opcodes,opcode,lsl #2]
1382 tst spc_p,#0x00000040
1383 addne spc_pc,spc_pc,#1
1384 ldreqsb r0,[spc_pc],#1
1385 addeq spc_pc,spc_pc,r0
1386 subeq cycles,cycles,#42
1387 subs cycles,cycles,#42
1388 ldrgeb opcode,[spc_pc],#1
1389 ldrge pc,[opcodes,opcode,lsl #2]
1394 sub r0,spc_pc,spc_ram
1395 add r1,spc_ram,spc_s
1400 ldr r0,[context,#iapu_extraram]
1402 add spc_pc,spc_ram,r0
1403 subs cycles,cycles,#168
1404 ldrgeb opcode,[spc_pc],#1
1405 ldrge pc,[opcodes,opcode,lsl #2]
1415 ldr spc_ram,[context,#iapu_ram]
1416 subs cycles,cycles,#84
1417 ldrgeb opcode,[spc_pc],#1
1418 ldrge pc,[opcodes,opcode,lsl #2]
1425 ldr spc_ram,[context,#iapu_ram]
1427 addne spc_pc,spc_pc,#1
1428 ldreqsb r0,[spc_pc],#1
1429 addeq spc_pc,spc_pc,r0
1430 subeq cycles,cycles,#42
1431 subs cycles,cycles,#105
1432 ldrgeb opcode,[spc_pc],#1
1433 ldrge pc,[opcodes,opcode,lsl #2]
1441 ldr spc_ram,[context,#iapu_ram]
1442 eor spc_ya,spc_ya,r0
1443 and spc_p,spc_p,#0xff
1444 orr spc_p,spc_p,spc_ya,lsl #24
1445 subs cycles,cycles,#84
1446 ldrgeb opcode,[spc_pc],#1
1447 ldrge pc,[opcodes,opcode,lsl #2]
1453 ldrb r12,[spc_pc],#1
1454 orr r0,r0,r12,lsl #8
1457 ldr spc_ram,[context,#iapu_ram]
1458 eor spc_ya,spc_ya,r0
1459 and spc_p,spc_p,#0xff
1460 orr spc_p,spc_p,spc_ya,lsl #24
1461 subs cycles,cycles,#105
1462 ldrgeb opcode,[spc_pc],#1
1463 ldrge pc,[opcodes,opcode,lsl #2]
1469 ldrb r12,[spc_pc],#1
1470 orr r0,r0,r12,lsl #8
1471 add r0,r0,spc_ya,lsr #8
1473 ldr spc_ram,[context,#iapu_ram]
1474 eor spc_ya,spc_ya,r0
1475 and spc_p,spc_p,#0xff
1476 orr spc_p,spc_p,spc_ya,lsl #24
1477 subs cycles,cycles,#105
1478 ldrgeb opcode,[spc_pc],#1
1479 ldrge pc,[opcodes,opcode,lsl #2]
1485 ldr r12,[context,#iapu_directpage]
1488 orr r0,r0,r12,lsl #8
1489 add r0,r0,spc_ya,lsr #8
1491 ldr spc_ram,[context,#iapu_ram]
1492 eor spc_ya,spc_ya,r0
1493 and spc_p,spc_p,#0xff
1494 orr spc_p,spc_p,spc_ya,lsl #24
1495 subs cycles,cycles,#126
1496 ldrgeb opcode,[spc_pc],#1
1497 ldrge pc,[opcodes,opcode,lsl #2]
1506 and spc_p,spc_p,#0xff
1507 orr spc_p,spc_p,r0,lsl #24
1508 ldrb r1,[spc_pc,#-1]
1510 ldr spc_ram,[context,#iapu_ram]
1511 subs cycles,cycles,#105
1512 ldrgeb opcode,[spc_pc],#1
1513 ldrge pc,[opcodes,opcode,lsl #2]
1521 mov r0,spc_ya,lsr #8
1525 and spc_p,spc_p,#0xff
1526 orr spc_p,spc_p,r0,lsl #24
1529 ldr spc_ram,[context,#iapu_ram]
1530 subs cycles,cycles,#105
1531 ldrgeb opcode,[spc_pc],#1
1532 ldrge pc,[opcodes,opcode,lsl #2]
1543 ldr spc_ram,[context,#iapu_ram]
1547 orrge spc_p,spc_p,#flag_c
1548 biclt spc_p,spc_p,#flag_c
1549 and spc_p,spc_p,#0xff
1550 orr spc_p,spc_p,r0,lsl #16
1552 orrne spc_p,spc_p,#0x01000000
1553 subs cycles,cycles,#84
1554 ldrgeb opcode,[spc_pc],#1
1555 ldrge pc,[opcodes,opcode,lsl #2]
1564 orrne spc_p,spc_p,#flag_c
1565 biceq spc_p,spc_p,#flag_c
1567 and spc_p,spc_p,#0xff
1568 orr spc_p,spc_p,r0,lsl #24
1572 ldr spc_ram,[context,#iapu_ram]
1573 subs cycles,cycles,#105
1574 ldrgeb opcode,[spc_pc],#1
1575 ldrge pc,[opcodes,opcode,lsl #2]
1582 orrne spc_p,spc_p,#flag_c
1583 biceq spc_p,spc_p,#flag_c
1585 and spc_p,spc_p,#0xff
1586 orr spc_p,spc_p,r0,lsl #24
1587 mov spc_ya,spc_ya,lsr #8
1588 orr spc_ya,r0,spc_ya,lsl #8
1589 subs cycles,cycles,#42
1590 ldrgeb opcode,[spc_pc],#1
1591 ldrge pc,[opcodes,opcode,lsl #2]
1596 and spc_x,spc_ya,#0xff
1597 and spc_p,spc_p,#0xff
1598 orr spc_p,spc_p,spc_x,lsl #24
1599 subs cycles,cycles,#42
1600 ldrgeb opcode,[spc_pc],#1
1601 ldrge pc,[opcodes,opcode,lsl #2]
1607 ldrb r12,[spc_pc],#1
1608 orr r0,r0,r12,lsl #8
1610 ldr spc_ram,[context,#iapu_ram]
1611 mov r1,spc_ya,lsr #8
1613 orrge spc_p,spc_p,#flag_c
1614 biclt spc_p,spc_p,#flag_c
1615 and spc_p,spc_p,#0xff
1616 orr spc_p,spc_p,r12,lsl #24
1617 subs cycles,cycles,#84
1618 ldrgeb opcode,[spc_pc],#1
1619 ldrge pc,[opcodes,opcode,lsl #2]
1625 ldrb r12,[spc_pc],#1
1626 orr r0,r0,r12,lsl #8
1627 add spc_pc,spc_ram,r0
1628 subs cycles,cycles,#63
1629 ldrgeb opcode,[spc_pc],#1
1630 ldrge pc,[opcodes,opcode,lsl #2]
1635 bic spc_p,spc_p,#flag_c
1636 subs cycles,cycles,#42
1637 ldrgeb opcode,[spc_pc],#1
1638 ldrge pc,[opcodes,opcode,lsl #2]
1643 sub r0,spc_pc,spc_ram
1644 add r1,spc_ram,spc_s
1649 ldr r0,[context,#iapu_extraram]
1651 add spc_pc,spc_ram,r0
1652 subs cycles,cycles,#168
1653 ldrgeb opcode,[spc_pc],#1
1654 ldrge pc,[opcodes,opcode,lsl #2]
1664 ldr spc_ram,[context,#iapu_ram]
1665 subs cycles,cycles,#84
1666 ldrgeb opcode,[spc_pc],#1
1667 ldrge pc,[opcodes,opcode,lsl #2]
1674 ldr spc_ram,[context,#iapu_ram]
1676 addeq spc_pc,spc_pc,#1
1677 ldrnesb r0,[spc_pc],#1
1678 addne spc_pc,spc_pc,r0
1679 subne cycles,cycles,#42
1680 subs cycles,cycles,#105
1681 ldrgeb opcode,[spc_pc],#1
1682 ldrge pc,[opcodes,opcode,lsl #2]
1689 ldr spc_ram,[context,#iapu_ram]
1690 and r12,spc_ya,#0xff
1692 orrge spc_p,spc_p,#flag_c
1693 biclt spc_p,spc_p,#flag_c
1694 and spc_p,spc_p,#0xff
1695 orr spc_p,spc_p,r12,lsl #24
1696 subs cycles,cycles,#63
1697 ldrgeb opcode,[spc_pc],#1
1698 ldrge pc,[opcodes,opcode,lsl #2]
1704 ldrb r12,[spc_pc],#1
1705 orr r0,r0,r12,lsl #8
1707 ldr spc_ram,[context,#iapu_ram]
1708 and r12,spc_ya,#0xff
1710 orrge spc_p,spc_p,#flag_c
1711 biclt spc_p,spc_p,#flag_c
1712 and spc_p,spc_p,#0xff
1713 orr spc_p,spc_p,r12,lsl #24
1714 subs cycles,cycles,#84
1715 ldrgeb opcode,[spc_pc],#1
1716 ldrge pc,[opcodes,opcode,lsl #2]
1723 ldr spc_ram,[context,#iapu_ram]
1724 and r12,spc_ya,#0xff
1726 orrge spc_p,spc_p,#flag_c
1727 biclt spc_p,spc_p,#flag_c
1728 and spc_p,spc_p,#0xff
1729 orr spc_p,spc_p,r12,lsl #24
1730 subs cycles,cycles,#63
1731 ldrgeb opcode,[spc_pc],#1
1732 ldrge pc,[opcodes,opcode,lsl #2]
1740 ldr r12,[context,#iapu_directpage]
1743 orr r0,r0,r12,lsl #8
1745 ldr spc_ram,[context,#iapu_ram]
1746 and r12,spc_ya,#0xff
1748 orrge spc_p,spc_p,#flag_c
1749 biclt spc_p,spc_p,#flag_c
1750 and spc_p,spc_p,#0xff
1751 orr spc_p,spc_p,r12,lsl #24
1752 subs cycles,cycles,#126
1753 ldrgeb opcode,[spc_pc],#1
1754 ldrge pc,[opcodes,opcode,lsl #2]
1760 and r12,spc_ya,#0xff
1762 orrge spc_p,spc_p,#flag_c
1763 biclt spc_p,spc_p,#flag_c
1764 and spc_p,spc_p,#0xff
1765 orr spc_p,spc_p,r12,lsl #24
1766 subs cycles,cycles,#42
1767 ldrgeb opcode,[spc_pc],#1
1768 ldrge pc,[opcodes,opcode,lsl #2]
1775 orr spc_x,spc_x,r0,lsl #24
1778 ldr spc_ram,[context,#iapu_ram]
1779 mov r1,spc_x,lsr #24
1781 orrge spc_p,spc_p,#flag_c
1782 biclt spc_p,spc_p,#flag_c
1783 and spc_p,spc_p,#0xff
1784 orr spc_p,spc_p,r12,lsl #24
1785 and spc_x,spc_x,#0xff
1786 subs cycles,cycles,#126
1787 ldrgeb opcode,[spc_pc],#1
1788 ldrge pc,[opcodes,opcode,lsl #2]
1799 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
1801 mov r1,spc_x,lsr #29
1802 and spc_x,spc_x,#0xff
1805 bicne spc_p,spc_p,#flag_c
1806 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
1807 subs cycles,cycles,#84
1808 ldrgeb opcode,[spc_pc],#1
1809 ldrge pc,[opcodes,opcode,lsl #2]
1819 orrcs spc_p,spc_p,#flag_c
1820 biccc spc_p,spc_p,#flag_c
1821 and spc_p,spc_p,#0xff
1822 orr spc_p,spc_p,r0,lsl #24
1825 ldr spc_ram,[context,#iapu_ram]
1826 subs cycles,cycles,#84
1827 ldrgeb opcode,[spc_pc],#1
1828 ldrge pc,[opcodes,opcode,lsl #2]
1834 ldrb r12,[spc_pc],#1
1835 orr r0,r0,r12,lsl #8
1841 orrcs spc_p,spc_p,#flag_c
1842 biccc spc_p,spc_p,#flag_c
1843 and spc_p,spc_p,#0xff
1844 orr spc_p,spc_p,r0,lsl #24
1847 ldr spc_ram,[context,#iapu_ram]
1848 subs cycles,cycles,#105
1849 ldrgeb opcode,[spc_pc],#1
1850 ldrge pc,[opcodes,opcode,lsl #2]
1855 mov r0,spc_ya,lsr #8
1856 add r1,spc_ram,spc_s
1859 subs cycles,cycles,#84
1860 ldrgeb opcode,[spc_pc],#1
1861 ldrge pc,[opcodes,opcode,lsl #2]
1871 addeq spc_pc,spc_pc,#1
1872 ldrnesb r2,[spc_pc],#1
1873 addne spc_pc,spc_pc,r2
1874 subne cycles,cycles,#42
1876 ldr spc_ram,[context,#iapu_ram]
1877 subs cycles,cycles,#105
1878 ldrgeb opcode,[spc_pc],#1
1879 ldrge pc,[opcodes,opcode,lsl #2]
1885 add r1,spc_ram,spc_s
1889 add spc_pc,spc_ram,r0
1890 subs cycles,cycles,#105
1891 ldrgeb opcode,[spc_pc],#1
1892 ldrge pc,[opcodes,opcode,lsl #2]
1897 tst spc_p,#0x00000040
1898 addeq spc_pc,spc_pc,#1
1899 ldrnesb r0,[spc_pc],#1
1900 addne spc_pc,spc_pc,r0
1901 subne cycles,cycles,#42
1902 subs cycles,cycles,#42
1903 ldrgeb opcode,[spc_pc],#1
1904 ldrge pc,[opcodes,opcode,lsl #2]
1909 sub r0,spc_pc,spc_ram
1910 add r1,spc_ram,spc_s
1915 ldr r0,[context,#iapu_extraram]
1917 add spc_pc,spc_ram,r0
1918 subs cycles,cycles,#168
1919 ldrgeb opcode,[spc_pc],#1
1920 ldrge pc,[opcodes,opcode,lsl #2]
1930 ldr spc_ram,[context,#iapu_ram]
1931 subs cycles,cycles,#84
1932 ldrgeb opcode,[spc_pc],#1
1933 ldrge pc,[opcodes,opcode,lsl #2]
1940 ldr spc_ram,[context,#iapu_ram]
1942 addne spc_pc,spc_pc,#1
1943 ldreqsb r0,[spc_pc],#1
1944 addeq spc_pc,spc_pc,r0
1945 subeq cycles,cycles,#42
1946 subs cycles,cycles,#105
1947 ldrgeb opcode,[spc_pc],#1
1948 ldrge pc,[opcodes,opcode,lsl #2]
1956 ldr spc_ram,[context,#iapu_ram]
1957 and r12,spc_ya,#0xff
1959 orrge spc_p,spc_p,#flag_c
1960 biclt spc_p,spc_p,#flag_c
1961 and spc_p,spc_p,#0xff
1962 orr spc_p,spc_p,r12,lsl #24
1963 subs cycles,cycles,#84
1964 ldrgeb opcode,[spc_pc],#1
1965 ldrge pc,[opcodes,opcode,lsl #2]
1971 ldrb r12,[spc_pc],#1
1972 orr r0,r0,r12,lsl #8
1975 ldr spc_ram,[context,#iapu_ram]
1976 and r12,spc_ya,#0xff
1978 orrge spc_p,spc_p,#flag_c
1979 biclt spc_p,spc_p,#flag_c
1980 and spc_p,spc_p,#0xff
1981 orr spc_p,spc_p,r12,lsl #24
1982 subs cycles,cycles,#105
1983 ldrgeb opcode,[spc_pc],#1
1984 ldrge pc,[opcodes,opcode,lsl #2]
1990 ldrb r12,[spc_pc],#1
1991 orr r0,r0,r12,lsl #8
1992 add r0,r0,spc_ya,lsr #8
1994 ldr spc_ram,[context,#iapu_ram]
1995 and r12,spc_ya,#0xff
1997 orrge spc_p,spc_p,#flag_c
1998 biclt spc_p,spc_p,#flag_c
1999 and spc_p,spc_p,#0xff
2000 orr spc_p,spc_p,r12,lsl #24
2001 subs cycles,cycles,#105
2002 ldrgeb opcode,[spc_pc],#1
2003 ldrge pc,[opcodes,opcode,lsl #2]
2009 ldr r12,[context,#iapu_directpage]
2012 orr r0,r0,r12,lsl #8
2013 add r0,r0,spc_ya,lsr #8
2015 ldr spc_ram,[context,#iapu_ram]
2016 and r12,spc_ya,#0xff
2018 orrge spc_p,spc_p,#flag_c
2019 biclt spc_p,spc_p,#flag_c
2020 and spc_p,spc_p,#0xff
2021 orr spc_p,spc_p,r12,lsl #24
2022 subs cycles,cycles,#126
2023 ldrgeb opcode,[spc_pc],#1
2024 ldrge pc,[opcodes,opcode,lsl #2]
2031 ldr spc_ram,[context,#iapu_ram]
2034 orrge spc_p,spc_p,#flag_c
2035 biclt spc_p,spc_p,#flag_c
2036 and spc_p,spc_p,#0xff
2037 orr spc_p,spc_p,r12,lsl #24
2038 subs cycles,cycles,#105
2039 ldrgeb opcode,[spc_pc],#1
2040 ldrge pc,[opcodes,opcode,lsl #2]
2047 orr spc_x,spc_x,r0,lsl #24
2048 mov r0,spc_ya,lsr #8
2050 ldr spc_ram,[context,#iapu_ram]
2051 mov r1,spc_x,lsr #24
2053 orrge spc_p,spc_p,#flag_c
2054 biclt spc_p,spc_p,#flag_c
2055 and spc_p,spc_p,#0xff
2056 orr spc_p,spc_p,r12,lsl #24
2057 and spc_x,spc_x,#0xff
2058 subs cycles,cycles,#105
2059 ldrgeb opcode,[spc_pc],#1
2060 ldrge pc,[opcodes,opcode,lsl #2]
2071 ldr spc_ram,[context,#iapu_ram]
2076 orrne spc_p,spc_p,#flag_c
2077 biceq spc_p,spc_p,#flag_c
2078 bic r2,r0,#0x00ff0000
2084 orrne spc_p,spc_p,#flag_o
2085 biceq spc_p,spc_p,#flag_o
2088 orrne spc_p,spc_p,#flag_h
2089 biceq spc_p,spc_p,#flag_h
2091 and spc_p,spc_p,#0xff
2092 orr spc_p,spc_p,spc_ya,lsl #16
2094 orrne spc_p,spc_p,#0x01000000
2095 subs cycles,cycles,#105
2096 ldrgeb opcode,[spc_pc],#1
2097 ldrge pc,[opcodes,opcode,lsl #2]
2108 orrcs spc_p,spc_p,#flag_c
2109 biccc spc_p,spc_p,#flag_c
2110 and spc_p,spc_p,#0xff
2111 orr spc_p,spc_p,r0,lsl #24
2115 ldr spc_ram,[context,#iapu_ram]
2116 subs cycles,cycles,#105
2117 ldrgeb opcode,[spc_pc],#1
2118 ldrge pc,[opcodes,opcode,lsl #2]
2127 orrcs spc_p,spc_p,#flag_c
2128 biccc spc_p,spc_p,#flag_c
2129 and spc_p,spc_p,#0xff
2130 orr spc_p,spc_p,r0,lsl #24
2131 mov spc_ya,spc_ya,lsr #8
2132 orr spc_ya,r0,spc_ya,lsl #8
2133 subs cycles,cycles,#42
2134 ldrgeb opcode,[spc_pc],#1
2135 ldrge pc,[opcodes,opcode,lsl #2]
2140 and spc_ya,spc_ya,#0xff00
2141 orr spc_ya,spc_ya,spc_x
2142 and spc_p,spc_p,#0xff
2143 orr spc_p,spc_p,spc_ya,lsl #24
2144 subs cycles,cycles,#42
2145 ldrgeb opcode,[spc_pc],#1
2146 ldrge pc,[opcodes,opcode,lsl #2]
2153 ldr spc_ram,[context,#iapu_ram]
2154 mov r1,spc_ya,lsr #8
2156 orrge spc_p,spc_p,#flag_c
2157 biclt spc_p,spc_p,#flag_c
2158 and spc_p,spc_p,#0xff
2159 orr spc_p,spc_p,r12,lsl #24
2160 subs cycles,cycles,#63
2161 ldrgeb opcode,[spc_pc],#1
2162 ldrge pc,[opcodes,opcode,lsl #2]
2168 add spc_p,spc_ram,spc_s
2169 ldrb spc_p,[spc_p,#0x100]
2170 and r0,spc_p,#(flag_z|flag_n)
2172 orr spc_p,spc_p,r0,lsl #24
2174 addne r0,spc_ram,#0x100
2176 str r0,[context,#iapu_directpage]
2178 add r1,spc_ram,spc_s
2182 add spc_pc,spc_ram,r0
2183 subs cycles,cycles,#126
2184 ldrgeb opcode,[spc_pc],#1
2185 ldrge pc,[opcodes,opcode,lsl #2]
2190 orr spc_p,spc_p,#flag_c
2191 subs cycles,cycles,#42
2192 ldrgeb opcode,[spc_pc],#1
2193 ldrge pc,[opcodes,opcode,lsl #2]
2198 sub r0,spc_pc,spc_ram
2199 add r1,spc_ram,spc_s
2204 ldr r0,[context,#iapu_extraram]
2206 add spc_pc,spc_ram,r0
2207 subs cycles,cycles,#168
2208 ldrgeb opcode,[spc_pc],#1
2209 ldrge pc,[opcodes,opcode,lsl #2]
2219 ldr spc_ram,[context,#iapu_ram]
2220 subs cycles,cycles,#84
2221 ldrgeb opcode,[spc_pc],#1
2222 ldrge pc,[opcodes,opcode,lsl #2]
2229 ldr spc_ram,[context,#iapu_ram]
2231 addeq spc_pc,spc_pc,#1
2232 ldrnesb r0,[spc_pc],#1
2233 addne spc_pc,spc_pc,r0
2234 subne cycles,cycles,#42
2235 subs cycles,cycles,#105
2236 ldrgeb opcode,[spc_pc],#1
2237 ldrge pc,[opcodes,opcode,lsl #2]
2244 ldr spc_ram,[context,#iapu_ram]
2245 and r1,spc_ya,#0xff00
2246 and spc_ya,spc_ya,#0xff
2248 add spc_ya,spc_ya,r0
2250 addne spc_ya,spc_ya,#1
2251 movs r12,spc_ya,lsr #8
2252 orrne spc_p,spc_p,#flag_c
2253 biceq spc_p,spc_p,#flag_c
2257 orrne spc_p,spc_p,#flag_o
2258 biceq spc_p,spc_p,#flag_o
2261 orrne spc_p,spc_p,#flag_h
2262 biceq spc_p,spc_p,#flag_h
2263 and spc_p,spc_p,#0xff
2264 orr spc_p,spc_p,spc_ya,lsl #24
2265 and spc_ya,spc_ya,#0xff
2266 orr spc_ya,spc_ya,r1
2267 subs cycles,cycles,#63
2268 ldrgeb opcode,[spc_pc],#1
2269 ldrge pc,[opcodes,opcode,lsl #2]
2275 ldrb r12,[spc_pc],#1
2276 orr r0,r0,r12,lsl #8
2278 ldr spc_ram,[context,#iapu_ram]
2279 and r1,spc_ya,#0xff00
2280 and spc_ya,spc_ya,#0xff
2282 add spc_ya,spc_ya,r0
2284 addne spc_ya,spc_ya,#1
2285 movs r12,spc_ya,lsr #8
2286 orrne spc_p,spc_p,#flag_c
2287 biceq spc_p,spc_p,#flag_c
2291 orrne spc_p,spc_p,#flag_o
2292 biceq spc_p,spc_p,#flag_o
2295 orrne spc_p,spc_p,#flag_h
2296 biceq spc_p,spc_p,#flag_h
2297 and spc_p,spc_p,#0xff
2298 orr spc_p,spc_p,spc_ya,lsl #24
2299 and spc_ya,spc_ya,#0xff
2300 orr spc_ya,spc_ya,r1
2301 subs cycles,cycles,#84
2302 ldrgeb opcode,[spc_pc],#1
2303 ldrge pc,[opcodes,opcode,lsl #2]
2310 ldr spc_ram,[context,#iapu_ram]
2311 and r1,spc_ya,#0xff00
2312 and spc_ya,spc_ya,#0xff
2314 add spc_ya,spc_ya,r0
2316 addne spc_ya,spc_ya,#1
2317 movs r12,spc_ya,lsr #8
2318 orrne spc_p,spc_p,#flag_c
2319 biceq spc_p,spc_p,#flag_c
2323 orrne spc_p,spc_p,#flag_o
2324 biceq spc_p,spc_p,#flag_o
2327 orrne spc_p,spc_p,#flag_h
2328 biceq spc_p,spc_p,#flag_h
2329 and spc_p,spc_p,#0xff
2330 orr spc_p,spc_p,spc_ya,lsl #24
2331 and spc_ya,spc_ya,#0xff
2332 orr spc_ya,spc_ya,r1
2333 subs cycles,cycles,#63
2334 ldrgeb opcode,[spc_pc],#1
2335 ldrge pc,[opcodes,opcode,lsl #2]
2343 ldr r12,[context,#iapu_directpage]
2346 orr r0,r0,r12,lsl #8
2348 ldr spc_ram,[context,#iapu_ram]
2349 and r1,spc_ya,#0xff00
2350 and spc_ya,spc_ya,#0xff
2352 add spc_ya,spc_ya,r0
2354 addne spc_ya,spc_ya,#1
2355 movs r12,spc_ya,lsr #8
2356 orrne spc_p,spc_p,#flag_c
2357 biceq spc_p,spc_p,#flag_c
2361 orrne spc_p,spc_p,#flag_o
2362 biceq spc_p,spc_p,#flag_o
2365 orrne spc_p,spc_p,#flag_h
2366 biceq spc_p,spc_p,#flag_h
2367 and spc_p,spc_p,#0xff
2368 orr spc_p,spc_p,spc_ya,lsl #24
2369 and spc_ya,spc_ya,#0xff
2370 orr spc_ya,spc_ya,r1
2371 subs cycles,cycles,#126
2372 ldrgeb opcode,[spc_pc],#1
2373 ldrge pc,[opcodes,opcode,lsl #2]
2379 and r1,spc_ya,#0xff00
2380 and spc_ya,spc_ya,#0xff
2382 add spc_ya,spc_ya,r0
2384 addne spc_ya,spc_ya,#1
2385 movs r12,spc_ya,lsr #8
2386 orrne spc_p,spc_p,#flag_c
2387 biceq spc_p,spc_p,#flag_c
2391 orrne spc_p,spc_p,#flag_o
2392 biceq spc_p,spc_p,#flag_o
2395 orrne spc_p,spc_p,#flag_h
2396 biceq spc_p,spc_p,#flag_h
2397 and spc_p,spc_p,#0xff
2398 orr spc_p,spc_p,spc_ya,lsl #24
2399 and spc_ya,spc_ya,#0xff
2400 orr spc_ya,spc_ya,r1
2401 subs cycles,cycles,#42
2402 ldrgeb opcode,[spc_pc],#1
2403 ldrge pc,[opcodes,opcode,lsl #2]
2419 orrne spc_p,spc_p,#flag_c
2420 biceq spc_p,spc_p,#flag_c
2424 orrne spc_p,spc_p,#flag_o
2425 biceq spc_p,spc_p,#flag_o
2428 orrne spc_p,spc_p,#flag_h
2429 biceq spc_p,spc_p,#flag_h
2430 and spc_p,spc_p,#0xff
2431 orr spc_p,spc_p,r0,lsl #24
2434 ldr spc_ram,[context,#iapu_ram]
2435 subs cycles,cycles,#126
2436 ldrgeb opcode,[spc_pc],#1
2437 ldrge pc,[opcodes,opcode,lsl #2]
2448 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
2450 mov r1,spc_x,lsr #29
2451 and spc_x,spc_x,#0xff
2454 eorne spc_p,spc_p,#flag_c
2455 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
2456 subs cycles,cycles,#105
2457 ldrgeb opcode,[spc_pc],#1
2458 ldrge pc,[opcodes,opcode,lsl #2]
2466 and spc_p,spc_p,#0xff
2467 orr spc_p,spc_p,r0,lsl #24
2470 ldr spc_ram,[context,#iapu_ram]
2471 subs cycles,cycles,#84
2472 ldrgeb opcode,[spc_pc],#1
2473 ldrge pc,[opcodes,opcode,lsl #2]
2479 ldrb r12,[spc_pc],#1
2480 orr r0,r0,r12,lsl #8
2484 and spc_p,spc_p,#0xff
2485 orr spc_p,spc_p,r0,lsl #24
2488 ldr spc_ram,[context,#iapu_ram]
2489 subs cycles,cycles,#105
2490 ldrgeb opcode,[spc_pc],#1
2491 ldrge pc,[opcodes,opcode,lsl #2]
2497 and spc_ya,spc_ya,#0xff
2498 orr spc_ya,spc_ya,r0,lsl #8
2499 and spc_p,spc_p,#0xff
2500 orr spc_p,spc_p,r0,lsl #24
2501 subs cycles,cycles,#42
2502 ldrgeb opcode,[spc_pc],#1
2503 ldrge pc,[opcodes,opcode,lsl #2]
2509 add spc_p,spc_ram,spc_s
2510 ldrb spc_p,[spc_p,#0x100]
2511 and r0,spc_p,#(flag_z|flag_n)
2513 orr spc_p,spc_p,r0,lsl #24
2515 addne r0,spc_ram,#0x100
2517 str r0,[context,#iapu_directpage]
2518 subs cycles,cycles,#84
2519 ldrgeb opcode,[spc_pc],#1
2520 ldrge pc,[opcodes,opcode,lsl #2]
2528 ldr spc_ram,[context,#iapu_ram]
2529 subs cycles,cycles,#105
2530 ldrgeb opcode,[spc_pc],#1
2531 ldrge pc,[opcodes,opcode,lsl #2]
2536 tst spc_p,#0x00000001
2537 addne spc_pc,spc_pc,#1
2538 ldreqsb r0,[spc_pc],#1
2539 addeq spc_pc,spc_pc,r0
2540 subeq cycles,cycles,#42
2541 subs cycles,cycles,#42
2542 ldrgeb opcode,[spc_pc],#1
2543 ldrge pc,[opcodes,opcode,lsl #2]
2548 sub r0,spc_pc,spc_ram
2549 add r1,spc_ram,spc_s
2554 ldr r0,[context,#iapu_extraram]
2556 add spc_pc,spc_ram,r0
2557 subs cycles,cycles,#168
2558 ldrgeb opcode,[spc_pc],#1
2559 ldrge pc,[opcodes,opcode,lsl #2]
2569 ldr spc_ram,[context,#iapu_ram]
2570 subs cycles,cycles,#84
2571 ldrgeb opcode,[spc_pc],#1
2572 ldrge pc,[opcodes,opcode,lsl #2]
2579 ldr spc_ram,[context,#iapu_ram]
2581 addne spc_pc,spc_pc,#1
2582 ldreqsb r0,[spc_pc],#1
2583 addeq spc_pc,spc_pc,r0
2584 subeq cycles,cycles,#42
2585 subs cycles,cycles,#105
2586 ldrgeb opcode,[spc_pc],#1
2587 ldrge pc,[opcodes,opcode,lsl #2]
2595 ldr spc_ram,[context,#iapu_ram]
2596 and r1,spc_ya,#0xff00
2597 and spc_ya,spc_ya,#0xff
2599 add spc_ya,spc_ya,r0
2601 addne spc_ya,spc_ya,#1
2602 movs r12,spc_ya,lsr #8
2603 orrne spc_p,spc_p,#flag_c
2604 biceq spc_p,spc_p,#flag_c
2608 orrne spc_p,spc_p,#flag_o
2609 biceq spc_p,spc_p,#flag_o
2612 orrne spc_p,spc_p,#flag_h
2613 biceq spc_p,spc_p,#flag_h
2614 and spc_p,spc_p,#0xff
2615 orr spc_p,spc_p,spc_ya,lsl #24
2616 and spc_ya,spc_ya,#0xff
2617 orr spc_ya,spc_ya,r1
2618 subs cycles,cycles,#84
2619 ldrgeb opcode,[spc_pc],#1
2620 ldrge pc,[opcodes,opcode,lsl #2]
2626 ldrb r12,[spc_pc],#1
2627 orr r0,r0,r12,lsl #8
2630 ldr spc_ram,[context,#iapu_ram]
2631 and r1,spc_ya,#0xff00
2632 and spc_ya,spc_ya,#0xff
2634 add spc_ya,spc_ya,r0
2636 addne spc_ya,spc_ya,#1
2637 movs r12,spc_ya,lsr #8
2638 orrne spc_p,spc_p,#flag_c
2639 biceq spc_p,spc_p,#flag_c
2643 orrne spc_p,spc_p,#flag_o
2644 biceq spc_p,spc_p,#flag_o
2647 orrne spc_p,spc_p,#flag_h
2648 biceq spc_p,spc_p,#flag_h
2649 and spc_p,spc_p,#0xff
2650 orr spc_p,spc_p,spc_ya,lsl #24
2651 and spc_ya,spc_ya,#0xff
2652 orr spc_ya,spc_ya,r1
2653 subs cycles,cycles,#105
2654 ldrgeb opcode,[spc_pc],#1
2655 ldrge pc,[opcodes,opcode,lsl #2]
2661 ldrb r12,[spc_pc],#1
2662 orr r0,r0,r12,lsl #8
2663 add r0,r0,spc_ya,lsr #8
2665 ldr spc_ram,[context,#iapu_ram]
2666 and r1,spc_ya,#0xff00
2667 and spc_ya,spc_ya,#0xff
2669 add spc_ya,spc_ya,r0
2671 addne spc_ya,spc_ya,#1
2672 movs r12,spc_ya,lsr #8
2673 orrne spc_p,spc_p,#flag_c
2674 biceq spc_p,spc_p,#flag_c
2678 orrne spc_p,spc_p,#flag_o
2679 biceq spc_p,spc_p,#flag_o
2682 orrne spc_p,spc_p,#flag_h
2683 biceq spc_p,spc_p,#flag_h
2684 and spc_p,spc_p,#0xff
2685 orr spc_p,spc_p,spc_ya,lsl #24
2686 and spc_ya,spc_ya,#0xff
2687 orr spc_ya,spc_ya,r1
2688 subs cycles,cycles,#105
2689 ldrgeb opcode,[spc_pc],#1
2690 ldrge pc,[opcodes,opcode,lsl #2]
2696 ldr r12,[context,#iapu_directpage]
2699 orr r0,r0,r12,lsl #8
2700 add r0,r0,spc_ya,lsr #8
2702 ldr spc_ram,[context,#iapu_ram]
2703 and r1,spc_ya,#0xff00
2704 and spc_ya,spc_ya,#0xff
2706 add spc_ya,spc_ya,r0
2708 addne spc_ya,spc_ya,#1
2709 movs r12,spc_ya,lsr #8
2710 orrne spc_p,spc_p,#flag_c
2711 biceq spc_p,spc_p,#flag_c
2715 orrne spc_p,spc_p,#flag_o
2716 biceq spc_p,spc_p,#flag_o
2719 orrne spc_p,spc_p,#flag_h
2720 biceq spc_p,spc_p,#flag_h
2721 and spc_p,spc_p,#0xff
2722 orr spc_p,spc_p,spc_ya,lsl #24
2723 and spc_ya,spc_ya,#0xff
2724 orr spc_ya,spc_ya,r1
2725 subs cycles,cycles,#126
2726 ldrgeb opcode,[spc_pc],#1
2727 ldrge pc,[opcodes,opcode,lsl #2]
2740 orrne spc_p,spc_p,#flag_c
2741 biceq spc_p,spc_p,#flag_c
2745 orrne spc_p,spc_p,#flag_o
2746 biceq spc_p,spc_p,#flag_o
2749 orrne spc_p,spc_p,#flag_h
2750 biceq spc_p,spc_p,#flag_h
2751 and spc_p,spc_p,#0xff
2752 orr spc_p,spc_p,r0,lsl #24
2753 ldrb r1,[spc_pc,#-1]
2755 ldr spc_ram,[context,#iapu_ram]
2756 subs cycles,cycles,#105
2757 ldrgeb opcode,[spc_pc],#1
2758 ldrge pc,[opcodes,opcode,lsl #2]
2766 mov r0,spc_ya,lsr #8
2774 orrne spc_p,spc_p,#flag_c
2775 biceq spc_p,spc_p,#flag_c
2779 orrne spc_p,spc_p,#flag_o
2780 biceq spc_p,spc_p,#flag_o
2783 orrne spc_p,spc_p,#flag_h
2784 biceq spc_p,spc_p,#flag_h
2785 and spc_p,spc_p,#0xff
2786 orr spc_p,spc_p,r0,lsl #24
2789 ldr spc_ram,[context,#iapu_ram]
2790 subs cycles,cycles,#105
2791 ldrgeb opcode,[spc_pc],#1
2792 ldrge pc,[opcodes,opcode,lsl #2]
2803 ldr spc_ram,[context,#iapu_ram]
2807 orrge spc_p,spc_p,#flag_c
2808 biclt spc_p,spc_p,#flag_c
2815 orrne spc_p,spc_p,#flag_o
2816 biceq spc_p,spc_p,#flag_o
2819 bicne spc_p,spc_p,#flag_h
2820 orreq spc_p,spc_p,#flag_h
2822 and spc_p,spc_p,#0xff
2823 orr spc_p,spc_p,spc_ya,lsl #16
2825 orrne spc_p,spc_p,#0x01000000
2826 subs cycles,cycles,#105
2827 ldrgeb opcode,[spc_pc],#1
2828 ldrge pc,[opcodes,opcode,lsl #2]
2837 and spc_p,spc_p,#0xff
2838 orr spc_p,spc_p,r0,lsl #24
2842 ldr spc_ram,[context,#iapu_ram]
2843 subs cycles,cycles,#105
2844 ldrgeb opcode,[spc_pc],#1
2845 ldrge pc,[opcodes,opcode,lsl #2]
2852 and spc_p,spc_p,#0xff
2853 orr spc_p,spc_p,r0,lsl #24
2855 mov spc_ya,spc_ya,lsr #8
2856 orr spc_ya,r0,spc_ya,lsl #8
2857 subs cycles,cycles,#42
2858 ldrgeb opcode,[spc_pc],#1
2859 ldrge pc,[opcodes,opcode,lsl #2]
2865 and spc_p,spc_p,#0xff
2866 orr spc_p,spc_p,spc_x,lsl #24
2867 subs cycles,cycles,#42
2868 ldrgeb opcode,[spc_pc],#1
2869 ldrge pc,[opcodes,opcode,lsl #2]
2874 tst spc_x,spc_x @ div by 0?
2875 orreq spc_ya,spc_ya,#0xff00
2876 orreq spc_ya,spc_ya,#0x00ff
2877 orreq spc_p,spc_p,#flag_o
2879 bic spc_p,spc_p,#flag_o
2880 @ Divide spc_ya by spc_x
2884 @ Shift up divisor till it's just less than numerator
2886 cmp r1,spc_ya,lsr #1
2892 adc r3,r3,r3 ;@ Double r3 and add 1 if carry set
2893 subcs spc_ya,spc_ya,r1
2898 and spc_ya,spc_ya,#0xff
2900 orr spc_ya,r3,spc_ya,lsl #8
2902 and spc_p,spc_p,#0xff
2903 orr spc_p,spc_p,spc_ya,lsl #24
2904 subs cycles,cycles,#252
2905 ldrgeb opcode,[spc_pc],#1
2906 ldrge pc,[opcodes,opcode,lsl #2]
2913 orr r0,r1,r0,lsl #20
2914 and spc_ya,spc_ya,#0xff00
2915 orr spc_ya,spc_ya,r0,lsr #24
2916 and spc_p,spc_p,#0xff
2917 orr spc_p,spc_p,spc_ya,lsl #24
2918 subs cycles,cycles,#105
2919 ldrgeb opcode,[spc_pc],#1
2920 ldrge pc,[opcodes,opcode,lsl #2]
2925 orr spc_p,spc_p,#flag_i
2926 subs cycles,cycles,#63
2927 ldrgeb opcode,[spc_pc],#1
2928 ldrge pc,[opcodes,opcode,lsl #2]
2933 sub r0,spc_pc,spc_ram
2934 add r1,spc_ram,spc_s
2939 ldr r0,[context,#iapu_extraram]
2941 add spc_pc,spc_ram,r0
2942 subs cycles,cycles,#168
2943 ldrgeb opcode,[spc_pc],#1
2944 ldrge pc,[opcodes,opcode,lsl #2]
2954 ldr spc_ram,[context,#iapu_ram]
2955 subs cycles,cycles,#84
2956 ldrgeb opcode,[spc_pc],#1
2957 ldrge pc,[opcodes,opcode,lsl #2]
2964 ldr spc_ram,[context,#iapu_ram]
2966 addeq spc_pc,spc_pc,#1
2967 ldrnesb r0,[spc_pc],#1
2968 addne spc_pc,spc_pc,r0
2969 subne cycles,cycles,#42
2970 subs cycles,cycles,#105
2971 ldrgeb opcode,[spc_pc],#1
2972 ldrge pc,[opcodes,opcode,lsl #2]
2979 ldr spc_ram,[context,#iapu_ram]
2980 and r1,spc_ya,#0xff00
2981 and spc_ya,spc_ya,#0xff
2982 movs r12,spc_p,lsr #1
2984 orrge spc_p,spc_p,#flag_c
2985 biclt spc_p,spc_p,#flag_c
2990 orrne spc_p,spc_p,#flag_o
2991 biceq spc_p,spc_p,#flag_o
2994 orreq spc_p,spc_p,#flag_h
2995 bicne spc_p,spc_p,#flag_h
2997 and spc_p,spc_p,#0xff
2998 orr spc_p,spc_p,spc_ya,lsl #24
2999 and spc_ya,spc_ya,#0xff
3000 orr spc_ya,spc_ya,r1
3001 subs cycles,cycles,#63
3002 ldrgeb opcode,[spc_pc],#1
3003 ldrge pc,[opcodes,opcode,lsl #2]
3009 ldrb r12,[spc_pc],#1
3010 orr r0,r0,r12,lsl #8
3012 ldr spc_ram,[context,#iapu_ram]
3013 and r1,spc_ya,#0xff00
3014 and spc_ya,spc_ya,#0xff
3015 movs r12,spc_p,lsr #1
3017 orrge spc_p,spc_p,#flag_c
3018 biclt spc_p,spc_p,#flag_c
3023 orrne spc_p,spc_p,#flag_o
3024 biceq spc_p,spc_p,#flag_o
3027 orreq spc_p,spc_p,#flag_h
3028 bicne spc_p,spc_p,#flag_h
3030 and spc_p,spc_p,#0xff
3031 orr spc_p,spc_p,spc_ya,lsl #24
3032 and spc_ya,spc_ya,#0xff
3033 orr spc_ya,spc_ya,r1
3034 subs cycles,cycles,#84
3035 ldrgeb opcode,[spc_pc],#1
3036 ldrge pc,[opcodes,opcode,lsl #2]
3043 ldr spc_ram,[context,#iapu_ram]
3044 and r1,spc_ya,#0xff00
3045 and spc_ya,spc_ya,#0xff
3046 movs r12,spc_p,lsr #1
3048 orrge spc_p,spc_p,#flag_c
3049 biclt spc_p,spc_p,#flag_c
3054 orrne spc_p,spc_p,#flag_o
3055 biceq spc_p,spc_p,#flag_o
3058 orreq spc_p,spc_p,#flag_h
3059 bicne spc_p,spc_p,#flag_h
3061 and spc_p,spc_p,#0xff
3062 orr spc_p,spc_p,spc_ya,lsl #24
3063 and spc_ya,spc_ya,#0xff
3064 orr spc_ya,spc_ya,r1
3065 subs cycles,cycles,#63
3066 ldrgeb opcode,[spc_pc],#1
3067 ldrge pc,[opcodes,opcode,lsl #2]
3075 ldr r12,[context,#iapu_directpage]
3078 orr r0,r0,r12,lsl #8
3080 ldr spc_ram,[context,#iapu_ram]
3081 and r1,spc_ya,#0xff00
3082 and spc_ya,spc_ya,#0xff
3083 movs r12,spc_p,lsr #1
3085 orrge spc_p,spc_p,#flag_c
3086 biclt spc_p,spc_p,#flag_c
3091 orrne spc_p,spc_p,#flag_o
3092 biceq spc_p,spc_p,#flag_o
3095 orreq spc_p,spc_p,#flag_h
3096 bicne spc_p,spc_p,#flag_h
3098 and spc_p,spc_p,#0xff
3099 orr spc_p,spc_p,spc_ya,lsl #24
3100 and spc_ya,spc_ya,#0xff
3101 orr spc_ya,spc_ya,r1
3102 subs cycles,cycles,#126
3103 ldrgeb opcode,[spc_pc],#1
3104 ldrge pc,[opcodes,opcode,lsl #2]
3110 and r1,spc_ya,#0xff00
3111 and spc_ya,spc_ya,#0xff
3112 movs r12,spc_p,lsr #1
3114 orrge spc_p,spc_p,#flag_c
3115 biclt spc_p,spc_p,#flag_c
3120 orrne spc_p,spc_p,#flag_o
3121 biceq spc_p,spc_p,#flag_o
3124 orreq spc_p,spc_p,#flag_h
3125 bicne spc_p,spc_p,#flag_h
3127 and spc_p,spc_p,#0xff
3128 orr spc_p,spc_p,spc_ya,lsl #24
3129 and spc_ya,spc_ya,#0xff
3130 orr spc_ya,spc_ya,r1
3131 subs cycles,cycles,#42
3132 ldrgeb opcode,[spc_pc],#1
3133 ldrge pc,[opcodes,opcode,lsl #2]
3144 movs r12,spc_p,lsr #1
3146 orrge spc_p,spc_p,#flag_c
3147 biclt spc_p,spc_p,#flag_c
3152 orrne spc_p,spc_p,#flag_o
3153 biceq spc_p,spc_p,#flag_o
3156 orreq spc_p,spc_p,#flag_h
3157 bicne spc_p,spc_p,#flag_h
3159 and spc_p,spc_p,#0xff
3160 orr spc_p,spc_p,r0,lsl #24
3163 ldr spc_ram,[context,#iapu_ram]
3164 subs cycles,cycles,#126
3165 ldrgeb opcode,[spc_pc],#1
3166 ldrge pc,[opcodes,opcode,lsl #2]
3177 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
3179 mov r1,spc_x,lsr #29
3180 and spc_x,spc_x,#0xff
3183 orrne spc_p,spc_p,#flag_c
3184 biceq spc_p,spc_p,#flag_c
3185 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
3186 subs cycles,cycles,#84
3187 ldrgeb opcode,[spc_pc],#1
3188 ldrge pc,[opcodes,opcode,lsl #2]
3196 and spc_p,spc_p,#0xff
3197 orr spc_p,spc_p,r0,lsl #24
3200 ldr spc_ram,[context,#iapu_ram]
3201 subs cycles,cycles,#84
3202 ldrgeb opcode,[spc_pc],#1
3203 ldrge pc,[opcodes,opcode,lsl #2]
3209 ldrb r12,[spc_pc],#1
3210 orr r0,r0,r12,lsl #8
3214 and spc_p,spc_p,#0xff
3215 orr spc_p,spc_p,r0,lsl #24
3218 ldr spc_ram,[context,#iapu_ram]
3219 subs cycles,cycles,#105
3220 ldrgeb opcode,[spc_pc],#1
3221 ldrge pc,[opcodes,opcode,lsl #2]
3227 mov r1,spc_ya,lsr #8
3229 orrge spc_p,spc_p,#flag_c
3230 biclt spc_p,spc_p,#flag_c
3231 and spc_p,spc_p,#0xff
3232 orr spc_p,spc_p,r12,lsl #24
3233 subs cycles,cycles,#42
3234 ldrgeb opcode,[spc_pc],#1
3235 ldrge pc,[opcodes,opcode,lsl #2]
3241 add r0,spc_ram,spc_s
3243 and spc_ya,spc_ya,#0xff00
3244 orr spc_ya,spc_ya,r0
3245 subs cycles,cycles,#84
3246 ldrgeb opcode,[spc_pc],#1
3247 ldrge pc,[opcodes,opcode,lsl #2]
3255 ldr spc_ram,[context,#iapu_ram]
3257 and spc_x,spc_x,#0xff
3258 subs cycles,cycles,#84
3259 ldrgeb opcode,[spc_pc],#1
3260 ldrge pc,[opcodes,opcode,lsl #2]
3265 tst spc_p,#0x00000001
3266 addeq spc_pc,spc_pc,#1
3267 ldrnesb r0,[spc_pc],#1
3268 addne spc_pc,spc_pc,r0
3269 subne cycles,cycles,#42
3270 subs cycles,cycles,#42
3271 ldrgeb opcode,[spc_pc],#1
3272 ldrge pc,[opcodes,opcode,lsl #2]
3277 sub r0,spc_pc,spc_ram
3278 add r1,spc_ram,spc_s
3283 ldr r0,[context,#iapu_extraram]
3285 add spc_pc,spc_ram,r0
3286 subs cycles,cycles,#168
3287 ldrgeb opcode,[spc_pc],#1
3288 ldrge pc,[opcodes,opcode,lsl #2]
3298 ldr spc_ram,[context,#iapu_ram]
3299 subs cycles,cycles,#84
3300 ldrgeb opcode,[spc_pc],#1
3301 ldrge pc,[opcodes,opcode,lsl #2]
3308 ldr spc_ram,[context,#iapu_ram]
3310 addne spc_pc,spc_pc,#1
3311 ldreqsb r0,[spc_pc],#1
3312 addeq spc_pc,spc_pc,r0
3313 subeq cycles,cycles,#42
3314 subs cycles,cycles,#105
3315 ldrgeb opcode,[spc_pc],#1
3316 ldrge pc,[opcodes,opcode,lsl #2]
3324 ldr spc_ram,[context,#iapu_ram]
3325 and r1,spc_ya,#0xff00
3326 and spc_ya,spc_ya,#0xff
3327 movs r12,spc_p,lsr #1
3329 orrge spc_p,spc_p,#flag_c
3330 biclt spc_p,spc_p,#flag_c
3335 orrne spc_p,spc_p,#flag_o
3336 biceq spc_p,spc_p,#flag_o
3339 orreq spc_p,spc_p,#flag_h
3340 bicne spc_p,spc_p,#flag_h
3342 and spc_p,spc_p,#0xff
3343 orr spc_p,spc_p,spc_ya,lsl #24
3344 and spc_ya,spc_ya,#0xff
3345 orr spc_ya,spc_ya,r1
3346 subs cycles,cycles,#84
3347 ldrgeb opcode,[spc_pc],#1
3348 ldrge pc,[opcodes,opcode,lsl #2]
3354 ldrb r12,[spc_pc],#1
3355 orr r0,r0,r12,lsl #8
3358 ldr spc_ram,[context,#iapu_ram]
3359 and r1,spc_ya,#0xff00
3360 and spc_ya,spc_ya,#0xff
3361 movs r12,spc_p,lsr #1
3363 orrge spc_p,spc_p,#flag_c
3364 biclt spc_p,spc_p,#flag_c
3369 orrne spc_p,spc_p,#flag_o
3370 biceq spc_p,spc_p,#flag_o
3373 orreq spc_p,spc_p,#flag_h
3374 bicne spc_p,spc_p,#flag_h
3376 and spc_p,spc_p,#0xff
3377 orr spc_p,spc_p,spc_ya,lsl #24
3378 and spc_ya,spc_ya,#0xff
3379 orr spc_ya,spc_ya,r1
3380 subs cycles,cycles,#105
3381 ldrgeb opcode,[spc_pc],#1
3382 ldrge pc,[opcodes,opcode,lsl #2]
3388 ldrb r12,[spc_pc],#1
3389 orr r0,r0,r12,lsl #8
3390 add r0,r0,spc_ya,lsr #8
3392 ldr spc_ram,[context,#iapu_ram]
3393 and r1,spc_ya,#0xff00
3394 and spc_ya,spc_ya,#0xff
3395 movs r12,spc_p,lsr #1
3397 orrge spc_p,spc_p,#flag_c
3398 biclt spc_p,spc_p,#flag_c
3403 orrne spc_p,spc_p,#flag_o
3404 biceq spc_p,spc_p,#flag_o
3407 orreq spc_p,spc_p,#flag_h
3408 bicne spc_p,spc_p,#flag_h
3410 and spc_p,spc_p,#0xff
3411 orr spc_p,spc_p,spc_ya,lsl #24
3412 and spc_ya,spc_ya,#0xff
3413 orr spc_ya,spc_ya,r1
3414 subs cycles,cycles,#105
3415 ldrgeb opcode,[spc_pc],#1
3416 ldrge pc,[opcodes,opcode,lsl #2]
3422 ldr r12,[context,#iapu_directpage]
3425 orr r0,r0,r12,lsl #8
3426 add r0,r0,spc_ya,lsr #8
3428 ldr spc_ram,[context,#iapu_ram]
3429 and r1,spc_ya,#0xff00
3430 and spc_ya,spc_ya,#0xff
3431 movs r12,spc_p,lsr #1
3433 orrge spc_p,spc_p,#flag_c
3434 biclt spc_p,spc_p,#flag_c
3439 orrne spc_p,spc_p,#flag_o
3440 biceq spc_p,spc_p,#flag_o
3443 orreq spc_p,spc_p,#flag_h
3444 bicne spc_p,spc_p,#flag_h
3446 and spc_p,spc_p,#0xff
3447 orr spc_p,spc_p,spc_ya,lsl #24
3448 and spc_ya,spc_ya,#0xff
3449 orr spc_ya,spc_ya,r1
3450 subs cycles,cycles,#126
3451 ldrgeb opcode,[spc_pc],#1
3452 ldrge pc,[opcodes,opcode,lsl #2]
3460 movs r12,spc_p,lsr #1
3462 orrge spc_p,spc_p,#flag_c
3463 biclt spc_p,spc_p,#flag_c
3468 orrne spc_p,spc_p,#flag_o
3469 biceq spc_p,spc_p,#flag_o
3472 orreq spc_p,spc_p,#flag_h
3473 bicne spc_p,spc_p,#flag_h
3475 and spc_p,spc_p,#0xff
3476 orr spc_p,spc_p,r0,lsl #24
3477 ldrb r1,[spc_pc,#-1]
3479 ldr spc_ram,[context,#iapu_ram]
3480 subs cycles,cycles,#105
3481 ldrgeb opcode,[spc_pc],#1
3482 ldrge pc,[opcodes,opcode,lsl #2]
3490 mov r0,spc_ya,lsr #8
3493 movs r12,spc_p,lsr #1
3495 orrge spc_p,spc_p,#flag_c
3496 biclt spc_p,spc_p,#flag_c
3501 orrne spc_p,spc_p,#flag_o
3502 biceq spc_p,spc_p,#flag_o
3505 orreq spc_p,spc_p,#flag_h
3506 bicne spc_p,spc_p,#flag_h
3508 and spc_p,spc_p,#0xff
3509 orr spc_p,spc_p,r0,lsl #24
3512 ldr spc_ram,[context,#iapu_ram]
3513 subs cycles,cycles,#105
3514 ldrgeb opcode,[spc_pc],#1
3515 ldrge pc,[opcodes,opcode,lsl #2]
3526 ldr spc_ram,[context,#iapu_ram]
3527 orr spc_ya,spc_ya,r0,lsl #8
3528 and spc_p,spc_p,#0xff
3529 orr spc_p,spc_p,spc_ya,lsl #16
3531 orrne spc_p,spc_p,#0x01000000
3532 subs cycles,cycles,#105
3533 ldrgeb opcode,[spc_pc],#1
3534 ldrge pc,[opcodes,opcode,lsl #2]
3543 and spc_p,spc_p,#0xff
3544 orr spc_p,spc_p,r0,lsl #24
3548 ldr spc_ram,[context,#iapu_ram]
3549 subs cycles,cycles,#105
3550 ldrgeb opcode,[spc_pc],#1
3551 ldrge pc,[opcodes,opcode,lsl #2]
3558 and spc_p,spc_p,#0xff
3559 orr spc_p,spc_p,r0,lsl #24
3561 mov spc_ya,spc_ya,lsr #8
3562 orr spc_ya,r0,spc_ya,lsl #8
3563 subs cycles,cycles,#42
3564 ldrgeb opcode,[spc_pc],#1
3565 ldrge pc,[opcodes,opcode,lsl #2]
3571 subs cycles,cycles,#42
3572 ldrgeb opcode,[spc_pc],#1
3573 ldrge pc,[opcodes,opcode,lsl #2]
3588 orr spc_p,spc_p,#flag_c
3592 bic spc_p,spc_p,#flag_c
3594 and spc_ya,spc_ya,#0xff00
3595 orr spc_ya,spc_ya,r0
3596 and spc_p,spc_p,#0xff
3597 orr spc_p,spc_p,spc_ya,lsl #24
3598 subs cycles,cycles,#63
3599 ldrgeb opcode,[spc_pc],#1
3600 ldrge pc,[opcodes,opcode,lsl #2]
3607 ldr spc_ram,[context,#iapu_ram]
3608 and spc_ya,spc_ya,#0xff00
3609 orr spc_ya,spc_ya,r0
3611 and spc_x,spc_x,#0xff
3612 and spc_p,spc_p,#0xff
3613 orr spc_p,spc_p,spc_ya,lsl #24
3614 subs cycles,cycles,#84
3615 ldrgeb opcode,[spc_pc],#1
3616 ldrge pc,[opcodes,opcode,lsl #2]
3621 bic spc_p,spc_p,#flag_i
3622 subs cycles,cycles,#63
3623 ldrgeb opcode,[spc_pc],#1
3624 ldrge pc,[opcodes,opcode,lsl #2]
3629 sub r0,spc_pc,spc_ram
3630 add r1,spc_ram,spc_s
3635 ldr r0,[context,#iapu_extraram]
3637 add spc_pc,spc_ram,r0
3638 subs cycles,cycles,#168
3639 ldrgeb opcode,[spc_pc],#1
3640 ldrge pc,[opcodes,opcode,lsl #2]
3650 ldr spc_ram,[context,#iapu_ram]
3651 subs cycles,cycles,#84
3652 ldrgeb opcode,[spc_pc],#1
3653 ldrge pc,[opcodes,opcode,lsl #2]
3660 ldr spc_ram,[context,#iapu_ram]
3662 addeq spc_pc,spc_pc,#1
3663 ldrnesb r0,[spc_pc],#1
3664 addne spc_pc,spc_pc,r0
3665 subne cycles,cycles,#42
3666 subs cycles,cycles,#105
3667 ldrgeb opcode,[spc_pc],#1
3668 ldrge pc,[opcodes,opcode,lsl #2]
3676 ldr spc_ram,[context,#iapu_ram]
3677 subs cycles,cycles,#84
3678 ldrgeb opcode,[spc_pc],#1
3679 ldrge pc,[opcodes,opcode,lsl #2]
3685 ldrb r12,[spc_pc],#1
3686 orr r1,r1,r12,lsl #8
3689 ldr spc_ram,[context,#iapu_ram]
3690 subs cycles,cycles,#105
3691 ldrgeb opcode,[spc_pc],#1
3692 ldrge pc,[opcodes,opcode,lsl #2]
3700 ldr spc_ram,[context,#iapu_ram]
3701 subs cycles,cycles,#84
3702 ldrgeb opcode,[spc_pc],#1
3703 ldrge pc,[opcodes,opcode,lsl #2]
3711 ldr r12,[context,#iapu_directpage]
3714 orr r1,r1,r12,lsl #8
3717 ldr spc_ram,[context,#iapu_ram]
3718 subs cycles,cycles,#147
3719 ldrgeb opcode,[spc_pc],#1
3720 ldrge pc,[opcodes,opcode,lsl #2]
3727 orrge spc_p,spc_p,#flag_c
3728 biclt spc_p,spc_p,#flag_c
3729 and spc_p,spc_p,#0xff
3730 orr spc_p,spc_p,r12,lsl #24
3731 subs cycles,cycles,#42
3732 ldrgeb opcode,[spc_pc],#1
3733 ldrge pc,[opcodes,opcode,lsl #2]
3739 ldrb r12,[spc_pc],#1
3740 orr r1,r1,r12,lsl #8
3743 ldr spc_ram,[context,#iapu_ram]
3744 subs cycles,cycles,#105
3745 ldrgeb opcode,[spc_pc],#1
3746 ldrge pc,[opcodes,opcode,lsl #2]
3757 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
3760 mov r1,spc_x,lsr #29
3761 and spc_x,spc_x,#0xff
3769 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
3770 subs cycles,cycles,#126
3771 ldrgeb opcode,[spc_pc],#1
3772 ldrge pc,[opcodes,opcode,lsl #2]
3778 mov r0,spc_ya,lsr #8
3780 ldr spc_ram,[context,#iapu_ram]
3781 subs cycles,cycles,#84
3782 ldrgeb opcode,[spc_pc],#1
3783 ldrge pc,[opcodes,opcode,lsl #2]
3789 ldrb r12,[spc_pc],#1
3790 orr r1,r1,r12,lsl #8
3791 mov r0,spc_ya,lsr #8
3793 ldr spc_ram,[context,#iapu_ram]
3794 subs cycles,cycles,#105
3795 ldrgeb opcode,[spc_pc],#1
3796 ldrge pc,[opcodes,opcode,lsl #2]
3801 ldrb spc_x,[spc_pc],#1
3802 and spc_p,spc_p,#0xff
3803 orr spc_p,spc_p,spc_x,lsl #24
3804 subs cycles,cycles,#42
3805 ldrgeb opcode,[spc_pc],#1
3806 ldrge pc,[opcodes,opcode,lsl #2]
3812 add spc_x,spc_ram,spc_s
3813 ldrb spc_x,[spc_x,#0x100]
3814 subs cycles,cycles,#84
3815 ldrgeb opcode,[spc_pc],#1
3816 ldrge pc,[opcodes,opcode,lsl #2]
3821 mov r0,spc_ya,lsr #8
3822 and spc_ya,spc_ya,#0xff
3823 mul spc_ya,r0,spc_ya
3824 and spc_p,spc_p,#0xff
3825 orr spc_p,spc_p,spc_ya,lsl #16
3827 orrne spc_p,spc_p,#0x01000000
3828 subs cycles,cycles,#189
3829 ldrgeb opcode,[spc_pc],#1
3830 ldrge pc,[opcodes,opcode,lsl #2]
3835 tst spc_p,#0xFF000000
3836 addeq spc_pc,spc_pc,#1
3837 ldrnesb r0,[spc_pc],#1
3838 addne spc_pc,spc_pc,r0
3839 subne cycles,cycles,#42
3840 subs cycles,cycles,#42
3841 ldrgeb opcode,[spc_pc],#1
3842 ldrge pc,[opcodes,opcode,lsl #2]
3847 sub r0,spc_pc,spc_ram
3848 add r1,spc_ram,spc_s
3853 ldr r0,[context,#iapu_extraram]
3855 add spc_pc,spc_ram,r0
3856 subs cycles,cycles,#168
3857 ldrgeb opcode,[spc_pc],#1
3858 ldrge pc,[opcodes,opcode,lsl #2]
3868 ldr spc_ram,[context,#iapu_ram]
3869 subs cycles,cycles,#84
3870 ldrgeb opcode,[spc_pc],#1
3871 ldrge pc,[opcodes,opcode,lsl #2]
3878 ldr spc_ram,[context,#iapu_ram]
3880 addne spc_pc,spc_pc,#1
3881 ldreqsb r0,[spc_pc],#1
3882 addeq spc_pc,spc_pc,r0
3883 subeq cycles,cycles,#42
3884 subs cycles,cycles,#105
3885 ldrgeb opcode,[spc_pc],#1
3886 ldrge pc,[opcodes,opcode,lsl #2]
3895 ldr spc_ram,[context,#iapu_ram]
3896 subs cycles,cycles,#105
3897 ldrgeb opcode,[spc_pc],#1
3898 ldrge pc,[opcodes,opcode,lsl #2]
3904 ldrb r12,[spc_pc],#1
3905 orr r1,r1,r12,lsl #8
3909 ldr spc_ram,[context,#iapu_ram]
3910 subs cycles,cycles,#126
3911 ldrgeb opcode,[spc_pc],#1
3912 ldrge pc,[opcodes,opcode,lsl #2]
3918 ldrb r12,[spc_pc],#1
3919 orr r1,r1,r12,lsl #8
3920 add r1,r1,spc_ya,lsr #8
3923 ldr spc_ram,[context,#iapu_ram]
3924 subs cycles,cycles,#126
3925 ldrgeb opcode,[spc_pc],#1
3926 ldrge pc,[opcodes,opcode,lsl #2]
3932 ldr r12,[context,#iapu_directpage]
3935 orr r1,r1,r12,lsl #8
3936 add r1,r1,spc_ya,lsr #8
3939 ldr spc_ram,[context,#iapu_ram]
3940 subs cycles,cycles,#147
3941 ldrgeb opcode,[spc_pc],#1
3942 ldrge pc,[opcodes,opcode,lsl #2]
3950 ldr spc_ram,[context,#iapu_ram]
3951 subs cycles,cycles,#84
3952 ldrgeb opcode,[spc_pc],#1
3953 ldrge pc,[opcodes,opcode,lsl #2]
3959 add r1,r1,spc_ya,lsr #8
3962 ldr spc_ram,[context,#iapu_ram]
3963 subs cycles,cycles,#105
3964 ldrgeb opcode,[spc_pc],#1
3965 ldrge pc,[opcodes,opcode,lsl #2]
3975 mov r0,spc_ya,lsr #8
3977 ldr spc_ram,[context,#iapu_ram]
3978 subs cycles,cycles,#84
3979 ldrgeb opcode,[spc_pc],#1
3980 ldrge pc,[opcodes,opcode,lsl #2]
3987 mov r0,spc_ya,lsr #8
3989 ldr spc_ram,[context,#iapu_ram]
3990 subs cycles,cycles,#105
3991 ldrgeb opcode,[spc_pc],#1
3992 ldrge pc,[opcodes,opcode,lsl #2]
3997 mov r0,spc_ya,lsr #8
4000 and spc_p,spc_p,#0xff
4001 orr spc_p,spc_p,r0,lsl #24
4002 and spc_ya,spc_ya,#0xff
4003 orr spc_ya,spc_ya,r0,lsl #8
4004 subs cycles,cycles,#42
4005 ldrgeb opcode,[spc_pc],#1
4006 ldrge pc,[opcodes,opcode,lsl #2]
4011 and spc_ya,spc_ya,#0xff00
4012 orr spc_ya,spc_ya,spc_ya,lsr #8
4013 and spc_p,spc_p,#0xff
4014 orr spc_p,spc_p,spc_ya,lsl #24
4015 subs cycles,cycles,#42
4016 ldrgeb opcode,[spc_pc],#1
4017 ldrge pc,[opcodes,opcode,lsl #2]
4025 ldr spc_ram,[context,#iapu_ram]
4028 addeq spc_pc,spc_pc,#1
4029 ldrnesb r0,[spc_pc],#1
4030 addne spc_pc,spc_pc,r0
4031 subne cycles,cycles,#42
4032 subs cycles,cycles,#126
4033 ldrgeb opcode,[spc_pc],#1
4034 ldrge pc,[opcodes,opcode,lsl #2]
4045 orrhi spc_p,spc_p,#flag_c
4052 orrhi spc_p,spc_p,#flag_c
4059 orrhi spc_p,spc_p,#flag_c
4060 bicls spc_p,spc_p,#flag_c
4062 and spc_ya,spc_ya,#0xff00
4063 orr spc_ya,spc_ya,r0
4064 and spc_p,spc_p,#0xff
4065 orr spc_p,spc_p,spc_ya,lsl #24
4066 subs cycles,cycles,#63
4067 ldrgeb opcode,[spc_pc],#1
4068 ldrge pc,[opcodes,opcode,lsl #2]
4073 bic spc_p,spc_p,#(flag_o|flag_h)
4074 subs cycles,cycles,#42
4075 ldrgeb opcode,[spc_pc],#1
4076 ldrge pc,[opcodes,opcode,lsl #2]
4081 sub r0,spc_pc,spc_ram
4082 add r1,spc_ram,spc_s
4087 ldr r0,[context,#iapu_extraram]
4089 add spc_pc,spc_ram,r0
4090 subs cycles,cycles,#168
4091 ldrgeb opcode,[spc_pc],#1
4092 ldrge pc,[opcodes,opcode,lsl #2]
4102 ldr spc_ram,[context,#iapu_ram]
4103 subs cycles,cycles,#84
4104 ldrgeb opcode,[spc_pc],#1
4105 ldrge pc,[opcodes,opcode,lsl #2]
4112 ldr spc_ram,[context,#iapu_ram]
4114 addeq spc_pc,spc_pc,#1
4115 ldrnesb r0,[spc_pc],#1
4116 addne spc_pc,spc_pc,r0
4117 subne cycles,cycles,#42
4118 subs cycles,cycles,#105
4119 ldrgeb opcode,[spc_pc],#1
4120 ldrge pc,[opcodes,opcode,lsl #2]
4127 ldr spc_ram,[context,#iapu_ram]
4128 and spc_ya,spc_ya,#0xff00
4129 orr spc_ya,spc_ya,r0
4130 and spc_p,spc_p,#0xff
4131 orr spc_p,spc_p,spc_ya,lsl #24
4132 subs cycles,cycles,#63
4133 ldrgeb opcode,[spc_pc],#1
4134 ldrge pc,[opcodes,opcode,lsl #2]
4140 ldrb r12,[spc_pc],#1
4141 orr r0,r0,r12,lsl #8
4143 ldr spc_ram,[context,#iapu_ram]
4144 and spc_ya,spc_ya,#0xff00
4145 orr spc_ya,spc_ya,r0
4146 and spc_p,spc_p,#0xff
4147 orr spc_p,spc_p,spc_ya,lsl #24
4148 subs cycles,cycles,#84
4149 ldrgeb opcode,[spc_pc],#1
4150 ldrge pc,[opcodes,opcode,lsl #2]
4157 ldr spc_ram,[context,#iapu_ram]
4158 and spc_ya,spc_ya,#0xff00
4159 orr spc_ya,spc_ya,r0
4160 and spc_p,spc_p,#0xff
4161 orr spc_p,spc_p,spc_ya,lsl #24
4162 subs cycles,cycles,#63
4163 ldrgeb opcode,[spc_pc],#1
4164 ldrge pc,[opcodes,opcode,lsl #2]
4172 ldr r12,[context,#iapu_directpage]
4175 orr r0,r0,r12,lsl #8
4177 ldr spc_ram,[context,#iapu_ram]
4178 and spc_ya,spc_ya,#0xff00
4179 orr spc_ya,spc_ya,r0
4180 and spc_p,spc_p,#0xff
4181 orr spc_p,spc_p,spc_ya,lsl #24
4182 subs cycles,cycles,#126
4183 ldrgeb opcode,[spc_pc],#1
4184 ldrge pc,[opcodes,opcode,lsl #2]
4190 and spc_ya,spc_ya,#0xff00
4191 orr spc_ya,spc_ya,r0
4192 and spc_p,spc_p,#0xff
4193 orr spc_p,spc_p,spc_ya,lsl #24
4194 subs cycles,cycles,#42
4195 ldrgeb opcode,[spc_pc],#1
4196 ldrge pc,[opcodes,opcode,lsl #2]
4202 ldrb r12,[spc_pc],#1
4203 orr r0,r0,r12,lsl #8
4205 ldr spc_ram,[context,#iapu_ram]
4207 and spc_p,spc_p,#0xff
4208 orr spc_p,spc_p,spc_x,lsl #24
4209 subs cycles,cycles,#84
4210 ldrgeb opcode,[spc_pc],#1
4211 ldrge pc,[opcodes,opcode,lsl #2]
4222 orr spc_x,spc_x,r1,lsl #29 @ store membit where it can survive memhandler call
4225 mov r1,spc_x,lsr #29
4226 and spc_x,spc_x,#0xff
4232 ldr spc_ram,[context,#iapu_ram] @ restore what memhandler(s) messed up
4233 subs cycles,cycles,#105
4234 ldrgeb opcode,[spc_pc],#1
4235 ldrge pc,[opcodes,opcode,lsl #2]
4242 ldr spc_ram,[context,#iapu_ram]
4243 and spc_ya,spc_ya,#0xff
4244 orr spc_ya,spc_ya,r0,lsl #8
4245 and spc_p,spc_p,#0xff
4246 orr spc_p,spc_p,r0,lsl #24
4247 subs cycles,cycles,#63
4248 ldrgeb opcode,[spc_pc],#1
4249 ldrge pc,[opcodes,opcode,lsl #2]
4255 ldrb r12,[spc_pc],#1
4256 orr r0,r0,r12,lsl #8
4258 ldr spc_ram,[context,#iapu_ram]
4259 and spc_ya,spc_ya,#0xff
4260 orr spc_ya,spc_ya,r0,lsl #8
4261 and spc_p,spc_p,#0xff
4262 orr spc_p,spc_p,r0,lsl #24
4263 subs cycles,cycles,#84
4264 ldrgeb opcode,[spc_pc],#1
4265 ldrge pc,[opcodes,opcode,lsl #2]
4270 eor spc_p,spc_p,#flag_c
4271 subs cycles,cycles,#63
4272 ldrgeb opcode,[spc_pc],#1
4273 ldrge pc,[opcodes,opcode,lsl #2]
4279 add r0,spc_ram,spc_s
4281 and spc_ya,spc_ya,#0xff
4282 orr spc_ya,spc_ya,r0,lsl #8
4283 subs cycles,cycles,#84
4284 ldrgeb opcode,[spc_pc],#1
4285 ldrge pc,[opcodes,opcode,lsl #2]
4293 subs cycles,cycles,#63
4294 ldrgeb opcode,[spc_pc],#1
4295 ldrge pc,[opcodes,opcode,lsl #2]
4300 tst spc_p,#0xFF000000
4301 addne spc_pc,spc_pc,#1
4302 ldreqsb r0,[spc_pc],#1
4303 addeq spc_pc,spc_pc,r0
4304 subeq cycles,cycles,#42
4305 subs cycles,cycles,#42
4306 ldrgeb opcode,[spc_pc],#1
4307 ldrge pc,[opcodes,opcode,lsl #2]
4312 sub r0,spc_pc,spc_ram
4313 add r1,spc_ram,spc_s
4318 ldr r0,[context,#iapu_extraram]
4320 add spc_pc,spc_ram,r0
4321 subs cycles,cycles,#168
4322 ldrgeb opcode,[spc_pc],#1
4323 ldrge pc,[opcodes,opcode,lsl #2]
4333 ldr spc_ram,[context,#iapu_ram]
4334 subs cycles,cycles,#84
4335 ldrgeb opcode,[spc_pc],#1
4336 ldrge pc,[opcodes,opcode,lsl #2]
4343 ldr spc_ram,[context,#iapu_ram]
4345 addne spc_pc,spc_pc,#1
4346 ldreqsb r0,[spc_pc],#1
4347 addeq spc_pc,spc_pc,r0
4348 subeq cycles,cycles,#42
4349 subs cycles,cycles,#105
4350 ldrgeb opcode,[spc_pc],#1
4351 ldrge pc,[opcodes,opcode,lsl #2]
4359 ldr spc_ram,[context,#iapu_ram]
4360 and spc_ya,spc_ya,#0xff00
4361 orr spc_ya,spc_ya,r0
4362 and spc_p,spc_p,#0xff
4363 orr spc_p,spc_p,spc_ya,lsl #24
4364 subs cycles,cycles,#84
4365 ldrgeb opcode,[spc_pc],#1
4366 ldrge pc,[opcodes,opcode,lsl #2]
4372 ldrb r12,[spc_pc],#1
4373 orr r0,r0,r12,lsl #8
4376 ldr spc_ram,[context,#iapu_ram]
4377 and spc_ya,spc_ya,#0xff00
4378 orr spc_ya,spc_ya,r0
4379 and spc_p,spc_p,#0xff
4380 orr spc_p,spc_p,spc_ya,lsl #24
4381 subs cycles,cycles,#105
4382 ldrgeb opcode,[spc_pc],#1
4383 ldrge pc,[opcodes,opcode,lsl #2]
4389 ldrb r12,[spc_pc],#1
4390 orr r0,r0,r12,lsl #8
4391 add r0,r0,spc_ya,lsr #8
4393 ldr spc_ram,[context,#iapu_ram]
4394 and spc_ya,spc_ya,#0xff00
4395 orr spc_ya,spc_ya,r0
4396 and spc_p,spc_p,#0xff
4397 orr spc_p,spc_p,spc_ya,lsl #24
4398 subs cycles,cycles,#105
4399 ldrgeb opcode,[spc_pc],#1
4400 ldrge pc,[opcodes,opcode,lsl #2]
4406 ldr r12,[context,#iapu_directpage]
4409 orr r0,r0,r12,lsl #8
4410 add r0,r0,spc_ya,lsr #8
4412 ldr spc_ram,[context,#iapu_ram]
4413 and spc_ya,spc_ya,#0xff00
4414 orr spc_ya,spc_ya,r0
4415 and spc_p,spc_p,#0xff
4416 orr spc_p,spc_p,spc_ya,lsl #24
4417 subs cycles,cycles,#126
4418 ldrgeb opcode,[spc_pc],#1
4419 ldrge pc,[opcodes,opcode,lsl #2]
4426 ldr spc_ram,[context,#iapu_ram]
4428 and spc_p,spc_p,#0xff
4429 orr spc_p,spc_p,spc_x,lsl #24
4430 subs cycles,cycles,#63
4431 ldrgeb opcode,[spc_pc],#1
4432 ldrge pc,[opcodes,opcode,lsl #2]
4438 add r0,r0,spc_ya,lsr #8
4440 ldr spc_ram,[context,#iapu_ram]
4442 and spc_p,spc_p,#0xff
4443 orr spc_p,spc_p,spc_x,lsl #24
4444 subs cycles,cycles,#84
4445 ldrgeb opcode,[spc_pc],#1
4446 ldrge pc,[opcodes,opcode,lsl #2]
4455 ldr spc_ram,[context,#iapu_ram]
4456 subs cycles,cycles,#105
4457 ldrgeb opcode,[spc_pc],#1
4458 ldrge pc,[opcodes,opcode,lsl #2]
4466 ldr spc_ram,[context,#iapu_ram]
4467 and spc_ya,spc_ya,#0xff
4468 orr spc_ya,spc_ya,r0,lsl #8
4469 and spc_p,spc_p,#0xff
4470 orr spc_p,spc_p,r0,lsl #24
4471 subs cycles,cycles,#84
4472 ldrgeb opcode,[spc_pc],#1
4473 ldrge pc,[opcodes,opcode,lsl #2]
4478 mov r0,spc_ya,lsr #8
4481 and spc_p,spc_p,#0xff
4482 orr spc_p,spc_p,r0,lsl #24
4483 and spc_ya,spc_ya,#0xff
4484 orr spc_ya,spc_ya,r0,lsl #8
4485 subs cycles,cycles,#42
4486 ldrgeb opcode,[spc_pc],#1
4487 ldrge pc,[opcodes,opcode,lsl #2]
4492 and spc_ya,spc_ya,#0xff
4493 orr spc_ya,spc_ya,spc_ya,lsl #8
4494 and spc_p,spc_p,#0xff
4495 orr spc_p,spc_p,spc_ya,lsl #24
4496 subs cycles,cycles,#42
4497 ldrgeb opcode,[spc_pc],#1
4498 ldrge pc,[opcodes,opcode,lsl #2]
4503 sub spc_ya,spc_ya,#0x100
4504 mov spc_ya,spc_ya,lsl #16
4505 mov spc_ya,spc_ya,lsr #16
4506 movs r0,spc_ya,lsr #8
4507 addeq spc_pc,spc_pc,#1
4508 ldrnesb r0,[spc_pc],#1
4509 addne spc_pc,spc_pc,r0
4510 subne cycles,cycles,#42
4511 subs cycles,cycles,#84
4512 ldrgeb opcode,[spc_pc],#1
4513 ldrge pc,[opcodes,opcode,lsl #2]
4521 subs cycles,cycles,#63
4522 ldrgeb opcode,[spc_pc],#1
4523 ldrge pc,[opcodes,opcode,lsl #2]
4527 @ -------------------------- Jump Table --------------------------
4529 .long Apu00, Apu01, Apu02, Apu03, Apu04, Apu05, Apu06, Apu07 @ 00
4530 .long Apu08, Apu09, Apu0A, Apu0B, Apu0C, Apu0D, Apu0E, Apu0F @ 08
4531 .long Apu10, Apu11, Apu12, Apu13, Apu14, Apu15, Apu16, Apu17 @ 10
4532 .long Apu18, Apu19, Apu1A, Apu1B, Apu1C, Apu1D, Apu1E, Apu1F @ 18
4533 .long Apu20, Apu21, Apu22, Apu23, Apu24, Apu25, Apu26, Apu27 @ 20
4534 .long Apu28, Apu29, Apu2A, Apu2B, Apu2C, Apu2D, Apu2E, Apu2F @ 28
4535 .long Apu30, Apu31, Apu32, Apu33, Apu34, Apu35, Apu36, Apu37 @ 30
4536 .long Apu38, Apu39, Apu3A, Apu3B, Apu3C, Apu3D, Apu3E, Apu3F @ 38
4537 .long Apu40, Apu41, Apu42, Apu43, Apu44, Apu45, Apu46, Apu47 @ 40
4538 .long Apu48, Apu49, Apu4A, Apu4B, Apu4C, Apu4D, Apu4E, Apu4F @ 48
4539 .long Apu50, Apu51, Apu52, Apu53, Apu54, Apu55, Apu56, Apu57 @ 50
4540 .long Apu58, Apu59, Apu5A, Apu5B, Apu5C, Apu5D, Apu5E, Apu5F @ 58
4541 .long Apu60, Apu61, Apu62, Apu63, Apu64, Apu65, Apu66, Apu67 @ 60
4542 .long Apu68, Apu69, Apu6A, Apu6B, Apu6C, Apu6D, Apu6E, Apu6F @ 68
4543 .long Apu70, Apu71, Apu72, Apu73, Apu74, Apu75, Apu76, Apu77 @ 70
4544 .long Apu78, Apu79, Apu7A, Apu7B, Apu7C, Apu7D, Apu7E, Apu7F @ 78
4545 .long Apu80, Apu81, Apu82, Apu83, Apu84, Apu85, Apu86, Apu87 @ 80
4546 .long Apu88, Apu89, Apu8A, Apu8B, Apu8C, Apu8D, Apu8E, Apu8F @ 88
4547 .long Apu90, Apu91, Apu92, Apu93, Apu94, Apu95, Apu96, Apu97 @ 90
4548 .long Apu98, Apu99, Apu9A, Apu9B, Apu9C, Apu9D, Apu9E, Apu9F @ 98
4549 .long ApuA0, ApuA1, ApuA2, ApuA3, ApuA4, ApuA5, ApuA6, ApuA7 @ a0
4550 .long ApuA8, ApuA9, ApuAA, ApuAB, ApuAC, ApuAD, ApuAE, ApuAF @ a8
4551 .long ApuB0, ApuB1, ApuB2, ApuB3, ApuB4, ApuB5, ApuB6, ApuB7 @ b0
4552 .long ApuB8, ApuB9, ApuBA, ApuBB, ApuBC, ApuBD, ApuBE, ApuBF @ b8
4553 .long ApuC0, ApuC1, ApuC2, ApuC3, ApuC4, ApuC5, ApuC6, ApuC7 @ c0
4554 .long ApuC8, ApuC9, ApuCA, ApuCB, ApuCC, ApuCD, ApuCE, ApuCF @ c8
4555 .long ApuD0, ApuD1, ApuD2, ApuD3, ApuD4, ApuD5, ApuD6, ApuD7 @ d0
4556 .long ApuD8, ApuD9, ApuDA, ApuDB, ApuDC, ApuDD, ApuDE, ApuDF @ d8
4557 .long ApuE0, ApuE1, ApuE2, ApuE3, ApuE4, ApuE5, ApuE6, ApuE7 @ e0
4558 .long ApuE8, ApuE9, ApuEA, ApuEB, ApuEC, ApuED, ApuEE, ApuEF @ e8
4559 .long ApuF0, ApuF1, ApuF2, ApuF3, ApuF4, ApuF5, ApuF6, ApuF7 @ f0
4560 .long ApuF8, ApuF9, ApuFA, ApuFB, ApuFC, ApuFD, ApuFE, ApuFF @ f8