1 ; 8080/Z80 Interpreter.
2 ; This is part of the Z80-CP/M emulator written by Sprite_tm.
5 ; Copyright (C) 2010 Sprite_tm
6 ; Copyright (C) 2010 Leo C.
7 ; Copyright (C) 2010 Horst S.
9 ; This file is part of avrcpm.
11 ; avrcpm is free software: you can redistribute it and/or modify it
12 ; under the terms of the GNU General Public License as published by
13 ; the Free Software Foundation, either version 3 of the License, or
14 ; (at your option) any later version.
16 ; avrcpm is distributed in the hope that it will be useful,
17 ; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 ; GNU General Public License for more details.
21 ; You should have received a copy of the GNU General Public License
22 ; along with avrcpm. If not, see <http://www.gnu.org/licenses/>.
28 #define OPC_TABSTART 0x1a00
30 #define OPC_TABSTART 0x1200
86 .equ IM_MASK = 0x03 ;Mask IM 0..2
91 .equ IFF1 = 2 ;IFF1 Flag
92 .equ IFF2 = 3 ;IFF2 Flag
109 sbr intstat,(1<<i_trace)
112 printstring "Ok, "CPUSTR"-CPU is live!"
118 cpi z_pch,DBG_TRACE_BOTTOM
120 cpi z_pch,DBG_TRACE_TOP
131 ;TODO: hier kommt die Interruptbehandlung rein
133 cpse intstat,_0 ;fast path if no trace, int, break, ...
137 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
139 ldi zh,high(opcjmp) ;
146 cpi z_pch,DBG_TRACE_BOTTOM
148 cpi z_pch,DBG_TRACE_TOP
154 cbr intstat,(1<<i_break)|(1<<i_halt)
156 printstring "Break detected! "
161 rjmp int_instr ;continue with normal instruction interpretation
164 ;--------------------------------------------------
178 .if OPC_TABSTART & 0x00ff
179 .error "OPC_TABSTART is not page aligned!"
181 .set opc_tabnext_ = OPC_TABSTART
182 .equ opc_tablow_ = opc_tabnext_
183 .equ opc_tabend_ = opc_tablow_ + (256 * numtabs_) + 128
184 .equ sz53p_table_pos = opc_tablow_ + (256 * numtabs_)
187 .set opcjmp_table_pos_ = opc_tabnext_
188 .set opc_tabnext_ = opc_tabnext_ + 256
190 .equ @0 = opcjmp_table_pos_
192 .set todo_table_pos_ = 0
196 ;--------------------------------------------------
197 ; Generate a table entry for one instruction
199 ; instr fetch, op, store
203 .set fetch_ = (do_@0 != do_fetch_nop) ; must call or jump to fetch phase
204 .set op_ = (do_@1 != do_op_nop) ; must call or jump to op phase
205 .set store_ = (do_@2 != do_store_nop) ; must jump to store phase
206 .set cnt_ = fetch_ + op_ + store_
210 .org opcjmp_table_pos_
211 .set opcjmp_table_pos_ = opcjmp_table_pos_ + 1
213 .if cnt_ == 0 ; nothing to do (nop)
214 ret ; go back to main
215 .elif cnt_ == 1 ; jump direct to action
217 .if (PC - do_@0) > 2047
220 rjmp do_@0 ; do op and return to main
224 .if (PC - do_@1) > 2047
227 rjmp do_@1 ; do op and return to main
231 .if (PC - do_@2) > 2047
234 rjmp do_@2 ; do op and return to main
240 .if (cnt_ > 1) || longdist_
242 .set labelexists_ = 0
243 .if defined (l_@0_@1_@2)
244 .set labelexists_ = 1
246 ; two or tree actions
247 .if labelexists_ ; same combination of fetch/op/store allready present?
248 .if (PC - l_@0_@1_@2) <= 2047
249 rjmp l_@0_@1_@2 ; generate a jump to action table
256 .if todo_table_pos_ == 0
257 .set todo_table_pos_ = opcjmp_table_pos_ - 2048
258 .if todo_table_pos_ < pc_save_
259 .set todo_table_pos_ = pc_save_
263 .if todo_table_pos_ < opc_tablow_
264 .if todo_table_pos_ + 2*cnt_ > opc_tablow_
265 .set todo_table_pos_ = opc_tabend_
273 .set todo_table_pos_ = PC
280 .equ l_@0_@1_@2 = todo_table_pos_ ; make a label
281 rjmp l_@0_@1_@2 ; generate a jump to action table
285 .if fetch_ ; must fetch
290 lcall do_@0 ; fetch and come back here
297 ljmp do_@0 ; do op and return to main
301 .if op_ ; must exec op
306 lcall do_@1 ; fetch and come back here
313 ljmp do_@1 ; do op and return to main
317 .if store_ ; must store
322 ljmp do_@2 ; store is allways last
326 .set todo_table_pos_ = PC
331 .if todo_table_pos_ == 0
343 ; ------------ Fetch phase stuff -----------------
346 .equ do_fetch_nop = do_x_nop
459 mem_read_ds opl, z_pc
464 mem_read_ds opl, z_pc
466 mem_read_ds oph, z_pc
478 ; ------------ Store phase stuff -----------------
481 .equ do_store_nop = do_x_nop
569 do_store_pcrel: ;add displacement to PC
590 printstring "Stack pop "
593 printstring ", SP is now "
610 printstring "Stack push "
613 printstring ", SP is now "
626 ; ------------ Operation phase stuff -----------------
628 ;----------------------------------------------------------------
632 ;| ZZZZZZZ 88888 000 |
638 ;| ZZZZZZZ 88888 000 |
640 ;| Z80 MICROPROCESSOR Instruction Set Summary |
642 ;----------------------------------------------------------------
643 ;----------------------------------------------------------------
644 ;|Mnemonic |SZHPNC|Description |Notes |
645 ;|----------+------+---------------------+----------------------|
646 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
647 ;|ADC HL,ss |**?V0*|Add with Carry |HL=HL+ss+CY |
648 ;|ADD A,s |***V0*|Add |A=A+s |
649 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
650 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
651 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
652 ;|AND s |**1P00|Logical AND |A=A&s |
653 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
654 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
655 ;|CALL nn |------|Unconditional Call |-[SP]=PC,PC=nn |
656 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY |
657 ;|CP s |***V1*|Compare |A-s |
658 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
659 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
660 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
661 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
662 ;|CPL |--1-1-|Complement |A=~A |
663 ;|DAA |***P-*|Decimal Adjust Acc. |A=BCD format |
664 ;|DEC s |***V1-|Decrement |s=s-1 |
665 ;|DEC xx |------|Decrement |xx=xx-1 |
666 ;|DEC ss |------|Decrement |ss=ss-1 |
667 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
668 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
669 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
670 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
671 ;|EX [SP],xx|------|Exchange |[SP]<->xx |
672 ;|EX AF,AF' |------|Exchange |AF<->AF' |
673 ;|EX DE,HL |------|Exchange |DE<->HL |
674 ;|EXX |------|Exchange |qq<->qq' (except AF)|
675 ;|HALT |------|Halt | |
676 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
677 ;|IN A,[n] |------|Input |A=[n] |
678 ;|IN r,[C] |***P0-|Input |r=[C] |
679 ;|INC r |***V0-|Increment |r=r+1 |
680 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
681 ;|INC xx |------|Increment |xx=xx+1 |
682 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
683 ;|INC ss |------|Increment |ss=ss+1 |
684 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
685 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
686 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
687 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
688 ;|JP [HL] |------|Unconditional Jump |PC=[HL] |
689 ;|JP [xx] |------|Unconditional Jump |PC=[xx] |
690 ;|JP nn |------|Unconditional Jump |PC=nn |
691 ;|JP cc,nn |------|Conditional Jump |If cc JP |
692 ;|JR e |------|Unconditional Jump |PC=PC+e |
693 ;|JR cc,e |------|Conditional Jump |If cc JR(cc=C,NC,NZ,Z)|
694 ;|LD dst,src|------|Load |dst=src |
695 ;|LD A,i |**0*0-|Load |A=i (i=I,R)|
696 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
697 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
698 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
699 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
700 ;|NEG |***V1*|Negate |A=-A |
701 ;|NOP |------|No Operation | |
702 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
703 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
704 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
705 ;|OUT [C],r |------|Output |[C]=r |
706 ;|OUT [n],A |------|Output |[n]=A |
707 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
708 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
709 ;|POP xx |------|Pop |xx=[SP]+ |
710 ;|POP qq |------|Pop |qq=[SP]+ |
711 ;|PUSH xx |------|Push |-[SP]=xx |
712 ;|PUSH qq |------|Push |-[SP]=qq |
713 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
714 ;|RET |------|Return |PC=[SP]+ |
715 ;|RET cc |------|Conditional Return |If cc RET |
716 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
717 ;|RETN |------|Return from NMI |PC=[SP]+ |
718 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
719 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
720 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
721 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
722 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
723 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
724 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
725 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
726 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
727 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
728 ;|RST p |------|Restart | (p=0H,8H,10H,...,38H)|
729 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
730 ;|SBC HL,ss |***V1*|Subtract with Carry |HL=HL-ss-CY |
731 ;|SCF |--0-01|Set Carry Flag |CY=1 |
732 ;|SET b,m |------|Set bit |m=mv{2^b} |
733 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
734 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
735 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
736 ;|SUB s |***V1*|Subtract |A=A-s |
737 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
738 ;|----------+------+--------------------------------------------|
739 ;| F |-*01? |Flag unaffected/affected/reset/set/unknown |
740 ;| S |S |Sign flag (Bit 7) |
741 ;| Z | Z |Zero flag (Bit 6) |
742 ;| HC | H |Half Carry flag (Bit 4) |
743 ;| P/V | P |Parity/Overflow flag (Bit 2, V=overflow) |
744 ;| N | N |Add/Subtract flag (Bit 1) |
745 ;| CY | C|Carry flag (Bit 0) |
746 ;|-----------------+--------------------------------------------|
747 ;| n |Immediate addressing |
748 ;| nn |Immediate extended addressing |
749 ;| e |Relative addressing (PC=PC+2+offset) |
750 ;| [nn] |Extended addressing |
751 ;| [xx+d] |Indexed addressing |
752 ;| r |Register addressing |
753 ;| [rr] |Register indirect addressing |
754 ;| |Implied addressing |
755 ;| b |Bit addressing |
756 ;| p |Modified page zero addressing (see RST) |
757 ;|-----------------+--------------------------------------------|
758 ;|DEFB n(,...) |Define Byte(s) |
759 ;|DEFB 'str'(,...) |Define Byte ASCII string(s) |
760 ;|DEFS nn |Define Storage Block |
761 ;|DEFW nn(,...) |Define Word(s) |
762 ;|-----------------+--------------------------------------------|
763 ;| A B C D E |Registers (8-bit) |
764 ;| AF BC DE HL |Register pairs (16-bit) |
765 ;| F |Flag register (8-bit) |
766 ;| I |Interrupt page address register (8-bit) |
767 ;| IX IY |Index registers (16-bit) |
768 ;| PC |Program Counter register (16-bit) |
769 ;| R |Memory Refresh register |
770 ;| SP |Stack Pointer register (16-bit) |
771 ;|-----------------+--------------------------------------------|
772 ;| b |One bit (0 to 7) |
773 ;| cc |Condition (C,M,NC,NZ,P,PE,PO,Z) |
774 ;| d |One-byte expression (-128 to +127) |
775 ;| dst |Destination s, ss, [BC], [DE], [HL], [nn] |
776 ;| e |One-byte expression (-126 to +129) |
777 ;| m |Any register r, [HL] or [xx+d] |
778 ;| n |One-byte expression (0 to 255) |
779 ;| nn |Two-byte expression (0 to 65535) |
780 ;| pp |Register pair BC, DE, IX or SP |
781 ;| qq |Register pair AF, BC, DE or HL |
782 ;| qq' |Alternative register pair AF, BC, DE or HL |
783 ;| r |Register A, B, C, D, E, H or L |
784 ;| rr |Register pair BC, DE, IY or SP |
785 ;| s |Any register r, value n, [HL] or [xx+d] |
786 ;| src |Source s, ss, [BC], [DE], [HL], nn, [nn] |
787 ;| ss |Register pair BC, DE, HL or SP |
788 ;| xx |Index register IX or IY |
789 ;|-----------------+--------------------------------------------|
790 ;| + - * / ^ |Add/subtract/multiply/divide/exponent |
791 ;| & ~ v x |Logical AND/NOT/inclusive OR/exclusive OR |
792 ;| <- -> |Rotate left/right |
793 ;| [ ] |Indirect addressing |
794 ;| [ ]+ -[ ] |Indirect addressing auto-increment/decrement|
795 ;| { } |Combination of operands |
796 ;| # |Also BC=BC-1,DE=DE-1 |
797 ;| ## |Only lower 4 bits of accumulator A used |
798 ;----------------------------------------------------------------
800 ;How the flags are supposed to work:
801 ;7 ZFL_S - Sign flag (=MSBit of result)
802 ;6 ZFL_Z - Zero flag. Is 1 when the result is 0
803 ;4 ZFL_H - Half-carry (carry from bit 3 to 4)
804 ;2 ZFL_P - Parity/2-complement Overflow
805 ;1 ZFL_N - Subtract - set if last op was a subtract
808 ;I sure hope I got the mapping between flags and instructions correct...
825 ; TODO: check Z80 flag settings
827 ;------------------------------------------------;
828 ; Load table value from flash indexed by source reg.
830 ; ldpmx dstreg,tablebase,indexreg
832 ; (6 words, 8 cycles)
835 ldi zh,high(@1*2) ; table must be page aligned
840 .macro do_z80_flags_V
842 bmov z_flags, ZFL_P, temp, AVR_V
846 .macro do_z80_flags_H
848 bmov z_flags, ZFL_H, temp, AVR_H
852 .macro do_z80_flags_set_N
854 ori z_flags, (1<<ZFL_N) ; Negation auf 1
858 .macro do_z80_flags_set_HN
860 ori z_flags,(1<<ZFL_N)|(1<<ZFL_H)
864 .macro do_z80_flags_clear_N
866 andi z_flags,~(1<<ZFL_N)
870 .macro do_z80_flags_clear_HN
872 andi z_flags,~((1<<ZFL_H)|(1<<ZFL_N))
877 .macro do_z80_flags_copy_HC
879 bmov z_flags, ZFL_H, z_flags, ZFL_H
883 .macro do_z80_flags_op_rotate
884 ; must not change avr carry flag!
886 andi z_flags, ~( (1<<ZFL_H) | (1<<ZFL_N) | (1<<ZFL_C) )
888 andi z_flags, ~( (1<<ZFL_C) )
892 .macro do_z80_flags_op_and
894 ori z_flags,(1<<ZFL_H)
898 .macro do_z80_flags_op_or
905 ;----------------------------------------------------------------
907 .equ do_op_nop = do_x_nop
912 printstring "Invalid opcode! "
918 ;----------------------------------------------------------------
919 ;|Mnemonic |SZHPNC|Description |Notes |
920 ;----------------------------------------------------------------
921 ;|HALT |------|Halt | |
928 sbr intstat,(1<<i_halt)
930 printstring "CPU halted! "
933 ;----------------------------------------------------------------
934 ;|Mnemonic |SZHPNC|Description |Notes |
935 ;----------------------------------------------------------------
936 ;|OUT [n],A |------|Output |[n]=A |
939 ;Interface with peripherials goes here :)
940 do_op_outa: ; out (opl),a
943 printstring "Port write: "
956 ;----------------------------------------------------------------
957 ;|Mnemonic |SZHPNC|Description |Notes |
958 ;----------------------------------------------------------------
959 ;|IN A,[n] |------|Input |A=[n] |
962 do_op_ina: ; in a,(opl)
965 printstring "Port read: ("
981 ;----------------------------------------------------------------
982 ;|Mnemonic |SZHPNC|Description |Notes |
983 ;----------------------------------------------------------------
984 ;|INC r |***V0-|Increment |r=r+1 |
985 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
986 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
987 ;|----------|SZHP C|---------- 8080 ----------------------------|
988 ;|INC r |**-P0-|Increment |r=r+1 |
989 ;|INC [HL] |**-P0-|Increment |[HL]=[HL]+1 |
996 andi z_flags,(1<<ZFL_C) ; preserve C-flag
997 ldpmx temp2, sz53p_tab, opl
999 bmov z_flags, ZFL_H, temp, AVR_H
1007 andi z_flags,(1<<ZFL_C) ; preserve C-flag
1008 ldpmx temp2, sz53p_tab, z_a
1010 bmov z_flags, ZFL_H, temp, AVR_H
1014 ;----------------------------------------------------------------
1015 ;|Mnemonic |SZHPNC|Description |Notes |
1016 ;----------------------------------------------------------------
1017 ;|DEC r |***V1-|Decrement |s=s-1 |
1018 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
1019 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
1020 ;|----------|SZHP C|---------- 8080 ----------------------------|
1021 ;|DEC r |**-P -|Increment |r=r+1 |
1022 ;|DEC [HL] |**-P -|Increment |[HL]=[HL]+1 |
1028 andi z_flags,(1<<ZFL_C) ; preserve C-flag
1029 ldpmx temp2, sz53p_tab, opl
1031 bmov z_flags, ZFL_H, temp, AVR_H
1040 andi z_flags,(1<<ZFL_C) ; preserve C-flag
1041 ldpmx temp2, sz53p_tab, z_a
1043 bmov z_flags, ZFL_H, temp, AVR_H
1048 ;----------------------------------------------------------------
1049 ;|Mnemonic |SZHPNC|Description |Notes |
1050 ;----------------------------------------------------------------
1051 ;|INC xx |------|Increment |xx=xx+1 |
1052 ;|INC ss |------|Increment |ss=ss+1 |
1060 ;----------------------------------------------------------------
1061 ;|Mnemonic |SZHPNC|Description |Notes |
1062 ;----------------------------------------------------------------
1063 ;|DEC xx |------|Decrement |xx=xx-1 |
1064 ;|DEC ss |------|Decrement |ss=ss-1 |
1072 ;----------------------------------------------------------------
1073 ;|Mnemonic |SZHPNC|Description |Notes |
1074 ;----------------------------------------------------------------
1075 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
1076 ;|----------|SZHP C|---------- 8080 ----------------------------|
1077 ;|RLCA |---- *|Rotate Left Circular |A=A<- |
1081 ;Rotate Left Cyclical. All bits move 1 to the
1082 ;left, the msb becomes c and lsb.
1083 do_z80_flags_op_rotate
1088 ori z_flags, (1<<ZFL_C)
1092 ;----------------------------------------------------------------
1093 ;|Mnemonic |SZHPNC|Description |Notes |
1094 ;----------------------------------------------------------------
1095 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
1096 ;|----------|SZHP C|---------- 8080 ----------------------------|
1097 ;|RRCA |---- *|Rotate Right Circular|A=->A |
1101 ;Rotate Right Cyclical. All bits move 1 to the
1102 ;right, the lsb becomes c and msb.
1103 do_z80_flags_op_rotate
1108 ori z_flags, (1<<ZFL_C)
1112 ;----------------------------------------------------------------
1113 ;|Mnemonic |SZHPNC|Description |Notes |
1114 ;----------------------------------------------------------------
1115 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
1116 ;|----------|SZHP C|---------- 8080 ----------------------------|
1117 ;|RRA |---- *|Rotate Right Acc. |A=->{CY,A} |
1121 ;Rotate Right. All bits move 1 to the right, the lsb
1122 ;becomes c, c becomes msb.
1123 clc ; get z80 carry to avr carry
1126 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1127 bmov z_flags,ZFL_C, z_a,0 ; Bit 0 --> CY
1131 ;----------------------------------------------------------------
1132 ;|Mnemonic |SZHPNC|Description |Notes |
1133 ;----------------------------------------------------------------
1134 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
1135 ;|----------|SZHP C|---------- 8080 ----------------------------|
1136 ;|RLA |---- *|Rotate Left Acc. |A={CY,A}<- |
1140 ;Rotate Left. All bits move 1 to the left, the msb
1141 ;becomes c, c becomes lsb.
1145 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1146 bmov z_flags,ZFL_C, z_a,7 ; Bit 7 --> CY
1150 ;----------------------------------------------------------------
1151 ;|Mnemonic |SZHPNC|Description |Notes |
1152 ;----------------------------------------------------------------
1153 ;|ADD A,s |***V0*|Add |A=A+s |
1154 ;|----------|SZHP C|---------- 8080 ----------------------------|
1155 ;|ADD A,s |***P *|Add |A=A+s |
1161 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P flag
1162 bmov z_flags,ZFL_C, temp,AVR_C
1163 bmov z_flags,ZFL_H, temp,AVR_H
1167 ;----------------------------------------------------------------
1168 ;|Mnemonic |SZHPNC|Description |Notes |
1169 ;----------------------------------------------------------------
1170 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
1171 ;|----------|SZHP C|---------- 8080 ----------------------------|
1172 ;|ADC A,s |***P *|Add with Carry |A=A+s+CY |
1181 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1182 bmov z_flags,ZFL_C, temp,AVR_C
1183 bmov z_flags,ZFL_H, temp,AVR_H
1187 ;----------------------------------------------------------------
1188 ;|Mnemonic |SZHPNC|Description |Notes |
1189 ;----------------------------------------------------------------
1190 ;|SUB s |***V1*|Subtract |A=A-s |
1191 ;|----------|SZHP C|---------- 8080 ----------------------------|
1192 ;|SUB s |***P *|Subtract |A=A-s |
1198 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1199 bmov z_flags,ZFL_C, temp,AVR_C
1200 bmov z_flags,ZFL_H, temp,AVR_H
1205 ;----------------------------------------------------------------
1206 ;|Mnemonic |SZHPNC|Description |Notes |
1207 ;----------------------------------------------------------------
1208 ;|CP s |***V1*|Compare |A-s |
1209 ;|----------|SZHP C|---------- 8080 ----------------------------|
1210 ;|CP s |***P *|Compare |A-s |
1217 ldpmx z_flags,sz53p_tab,temp2 ;S,Z,P
1218 bmov z_flags,ZFL_C, temp,AVR_C
1219 bmov z_flags,ZFL_H, temp,AVR_H
1224 ;----------------------------------------------------------------
1225 ;|Mnemonic |SZHPNC|Description |Notes |
1226 ;----------------------------------------------------------------
1227 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
1228 ;|----------|SZHP C|---------- 8080 ----------------------------|
1229 ;|SBC A,s |***P *|Subtract with Carry |A=A-s-CY |
1238 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1239 bmov z_flags,ZFL_C, temp,AVR_C
1240 bmov z_flags,ZFL_H, temp,AVR_H
1245 ;----------------------------------------------------------------
1246 ;|Mnemonic |SZHPNC|Description |Notes |
1247 ;----------------------------------------------------------------
1248 ;|AND s |**1P00|Logical AND |A=A&s |
1249 ;|----------|SZHP C|---------- 8080 ----------------------------|
1250 ;|AND s |**-P 0|Logical AND |A=A&s |
1255 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P,N,C
1260 ;----------------------------------------------------------------
1261 ;|Mnemonic |SZHPNC|Description |Notes |
1262 ;----------------------------------------------------------------
1263 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
1264 ;|----------|SZHP C|---------- 8080 ----------------------------|
1265 ;|OR s |**-P00|Logical inclusive OR |A=Avs |
1270 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1274 ;----------------------------------------------------------------
1275 ;|Mnemonic |SZHPNC|Description |Notes |
1276 ;----------------------------------------------------------------
1277 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
1278 ;|----------|SZHP C|---------- 8080 ----------------------------|
1279 ;|XOR s |**-P 0|Logical Exclusive OR |A=Axs |
1284 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1288 ;----------------------------------------------------------------
1289 ;|Mnemonic |SZHPNC|Description |Notes |
1290 ;----------------------------------------------------------------
1291 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
1292 ;|----------|SZHP C|---------- 8080 ----------------------------|
1293 ;|ADD HL,ss |---- *|Add |HL=HL+ss |
1304 bmov z_flags,ZFL_C, temp,AVR_C
1306 do_z80_flags_clear_N
1309 ;----------------------------------------------------------------
1310 ;|Mnemonic |SZHPNC|Description |Notes |
1311 ;----------------------------------------------------------------
1312 ;|LD dst,src|------|Load |dst=src |
1315 do_op_sthl: ;store hl to mem loc in opl:h
1324 ;----------------------------------------------------------------
1325 ;|Mnemonic |SZHPNC|Description |Notes |
1326 ;----------------------------------------------------------------
1327 ;|LD dst,src|------|Load |dst=src |
1337 ;----------------------------------------------------------------
1338 ;|Mnemonic |SZHPNC|Description |Notes |
1339 ;----------------------------------------------------------------
1340 ;|LD dst,src|------|Load |dst=src |
1347 ;----------------------------------------------------------------
1348 ;|Mnemonic |SZHPNC|Description |Notes |
1349 ;----------------------------------------------------------------
1350 ;|DAA |***P-*|Decimal Adjust Acc. | |
1351 ;|----------|SZHP C|---------- 8080 ----------------------------|
1355 ; Description (http://www.z80.info/z80syntx.htm#DAA):
1356 ; This instruction conditionally adjusts the accumulator for BCD addition
1357 ; and subtraction operations. For addition (ADD, ADC, INC) or subtraction
1358 ; (SUB, SBC, DEC, NEC), the following table indicates the operation performed:
1360 ; -------------------------------------------------------------------
1361 ; | |C Flag |HEX value in|H Flag |HEX val in | Number |C flag |
1362 ; | Oper |Before |upper digit |Before |lower digit| added |After |
1363 ; | |DAA |(bit 7-4) |DAA |(bit 3-0) | to A |DAA |
1364 ; |-------+-------+------------+-------+-----------+--------+-------|
1365 ; | | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1366 ; | ADD | 0 | 0-8 | 0 | A-F | 06 | 0 |
1367 ; | | 0 | 0-9 | 1 | 0-3 | 06 | 0 |
1368 ; | ADC | 0 | A-F | 0 | 0-9 | 60 | 1 |
1369 ; | | 0 | 9-F | 0 | A-F | 66 | 1 |
1370 ; | INC | 0 | A-F | 1 | 0-3 | 66 | 1 |
1371 ; | | 1 | 0-2 | 0 | 0-9 | 60 | 1 |
1372 ; | | 1 | 0-2 | 0 | A-F | 66 | 1 |
1373 ; | | 1 | 0-3 | 1 | 0-3 | 66 | 1 |
1374 ; |-------+-------+------------+-------+-----------+--------+-------|
1375 ; | SUB | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1376 ; | SBC | 0 | 0-8 | 1 | 6-F | FA | 0 |
1377 ; | DEC | 1 | 7-F | 0 | 0-9 | A0 | 1 |
1378 ; | NEG | 1 | 6-F | 1 | 6-F | 9A | 1 |
1379 ; -------------------------------------------------------------------
1381 ; The H flag is affected as follows:
1383 ; ---------------------
1384 ; | N | H | low |H' |
1386 ; |---+---+-------+---|
1387 ; | 0 | * | 0-9 | 0 |
1388 ; | 0 | * | a-f | 1 |
1390 ; | 1 | 1 | 6-f | 0 |
1391 ; | 1 | 1 | 0-5 | 1 |
1392 ; ---------------------
1396 ; P/V: Set if Acc. is even parity after operation, reset otherwise.
1397 ; Z: Set if Acc. is Zero after operation, reset otherwise.
1398 ; S: Set if most significant bit of Acc. is 1 after operation, reset otherwise.
1405 sbrc z_flags,ZFL_N ;if add-op
1406 rjmp op_da_sub ;then
1410 ldi temp2,0 ; new C and H flag
1411 sbrc z_flags,ZFL_H ; |
1412 rjmp op_da_a01 ; if (H flag ...
1415 cpi temp,0x0a ; or (lower nibble >= 0x0A))
1418 ldi oph,0x06 ; add 6 to lower nibble
1421 ori temp2,(1<<ZFL_H) ; set new H flag
1424 ori temp2,(1<<ZFL_C) ; set new H flag
1426 sbrc z_flags,ZFL_C ; |
1427 rjmp op_da_a12 ; if (C flag ...
1428 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1431 ldi oph,0x60 ; add 6 to lower nibble
1433 ori temp2,(1<<ZFL_C) ; set new C flag
1435 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1436 or z_flags,temp2 ; merge new C and H flag
1441 op_da_sub: ;else (sub-op)
1442 rcall do_op_inv ; TODO: ! Z80 DAA whith N flag set.
1449 ldi temp2,0 ;new C and H flag
1450 ldi oph,0 ;oph: what to add
1452 sbrc z_flags,ZFL_N ;if add-op
1453 rjmp op_da_sub ;then
1457 cpi temp,0x0a ; if (lower nibble >= 0x0A)
1459 ori oph,0x06 ; add 6
1460 ori temp2,(1<<ZFL_H) ; set new H flag
1462 sbrc z_flags,ZFL_C ; |
1463 rjmp op_da_a02 ; if (C flag ...
1464 cpi opl,0x90 ; |... or upper nibble >= 0x90)
1467 ori oph,0x60 ; add 0x60
1468 ori temp2,(1<<ZFL_C) ; set new C flag
1471 op_da_a10: ; else (lower nibble is 0x09 or lower)
1472 sbrc z_flags,ZFL_C ; |
1473 rjmp op_da_a12 ; if (C flag ...
1474 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1477 ori oph,0x60 ; add 0x60
1478 ori temp2,(1<<ZFL_C) ; set new C flag
1480 sbrs z_flags,ZFL_H ; if (H flag)
1482 ori oph,0x06 ; add 0x06
1485 cpi temp,0x06 ; if (lower nibble >= 0x0A)
1487 ori temp2,(1<<ZFL_H) ; set new H flag
1492 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1493 or z_flags,temp2 ; merge new C and H flag
1496 op_da_sub: ;else (sub-op)
1497 rcall do_op_inv ; TODO: !
1502 ;----------------------------------------------------------------
1503 ;|Mnemonic |SZHPNC|Description |Notes |
1504 ;----------------------------------------------------------------
1505 ;|SCF |--0-01|Set Carry Flag |CY=1 |
1506 ;|----------|SZHP C|---------- 8080 ----------------------------|
1510 do_z80_flags_clear_HN
1511 ori z_flags,(1<<ZFL_C)
1514 ;----------------------------------------------------------------
1515 ;|Mnemonic |SZHPNC|Description |Notes |
1516 ;----------------------------------------------------------------
1517 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY, HC=previous CY|
1518 ;|----------|SZHP C|---------- 8080 ----------------------------|
1519 ;|CCF |---- 1|Set Carry Flag |CY=1 |
1522 do_z80_flags_clear_N
1523 do_z80_flags_copy_HC
1528 ;----------------------------------------------------------------
1529 ;|Mnemonic |SZHPNC|Description |Notes |
1530 ;----------------------------------------------------------------
1531 ;|CPL |--1-1-|Complement |A=~A |
1532 ;|----------|SZHP C|---------- 8080 ----------------------------|
1533 ;|CPL |---- -|Complement |A=~A |
1542 ;----------------------------------------------------------------
1543 ;|Mnemonic |SZHPNC|Description |Notes |
1544 ;----------------------------------------------------------------
1545 ;|PUSH xx |------|Push |-[SP]=xx |
1546 ;|PUSH qq |------|Push |-[SP]=qq |
1559 printstring "Stack push "
1562 printstring ", SP is now "
1570 ;----------------------------------------------------------------
1571 ;|Mnemonic |SZHPNC|Description |Notes |
1572 ;----------------------------------------------------------------
1573 ;|POP xx |------|Pop |xx=[SP]+ |
1574 ;|POP qq |------|Pop |qq=[SP]+ |
1587 printstring "Stack pop "
1590 printstring ", SP is now "
1597 ;----------------------------------------------------------------
1598 ;|Mnemonic |SZHPNC|Description |Notes |
1599 ;----------------------------------------------------------------
1600 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
1601 ;|EX DE,HL |------|Exchange |DE<->HL |
1602 ;-----------------------------Z80--------------------------------
1612 ;----------------------------------------------------------------
1613 ;|Mnemonic |SZHPNC|Description |Notes |
1614 ;----------------------------------------------------------------
1615 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
1616 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
1622 andi temp,~((1<<IFF2) | (1<<IFF1))
1630 ori temp,(1<<IFF2) | (1<<IFF1)
1635 ;----------------------------------------------------------------
1636 ;|Mnemonic |SZHPNC|Description |Notes |
1637 ;----------------------------------------------------------------
1638 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1639 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1640 ;|RET cc |------|Conditional Return |If cc RET |
1647 pop temp ; direkt zurueck zu main
1650 ;----------------------------------------------------------------
1651 ;|Mnemonic |SZHPNC|Description |Notes |
1652 ;----------------------------------------------------------------
1653 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1654 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1655 ;|RET cc |------|Conditional Return |If cc RET |
1662 pop temp ; direkt zurueck zu main
1665 ;----------------------------------------------------------------
1666 ;|Mnemonic |SZHPNC|Description |Notes |
1667 ;----------------------------------------------------------------
1668 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1669 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1670 ;|RET cc |------|Conditional Return |If cc RET |
1677 pop temp ; direkt zuruech zu main
1680 ;----------------------------------------------------------------
1681 ;|Mnemonic |SZHPNC|Description |Notes |
1682 ;----------------------------------------------------------------
1683 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1684 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1685 ;|RET cc |------|Conditional Return |If cc RET |
1692 pop temp ; direkt zuruech zu main
1695 ;----------------------------------------------------------------
1696 ;|Mnemonic |SZHPNC|Description |Notes |
1697 ;----------------------------------------------------------------
1698 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1699 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1700 ;|RET cc |------|Conditional Return |If cc RET |
1707 pop temp ; direkt zuruech zu main
1710 ;----------------------------------------------------------------
1711 ;|Mnemonic |SZHPNC|Description |Notes |
1712 ;----------------------------------------------------------------
1713 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1714 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1715 ;|RET cc |------|Conditional Return |If cc RET |
1722 pop temp ; direkt zuruech zu main
1725 ;----------------------------------------------------------------
1726 ;|Mnemonic |SZHPNC|Description |Notes |
1727 ;----------------------------------------------------------------
1728 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1729 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1730 ;|RET cc |------|Conditional Return |If cc RET |
1733 do_op_ifp: ;sign positive, aka s=0
1737 pop temp ; direkt zuruech zu main
1740 ;----------------------------------------------------------------
1741 ;|Mnemonic |SZHPNC|Description |Notes |
1742 ;----------------------------------------------------------------
1743 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1744 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1745 ;|RET cc |------|Conditional Return |If cc RET |
1748 do_op_ifm: ;sign negative, aka s=1
1752 pop temp ; direkt zuruech zu main
1755 ;----------------------------------------------------------------
1759 ;----------------------------------------------------------------
1760 ;|Mnemonic |SZHPNC|Description |Notes |
1761 ;----------------------------------------------------------------
1762 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
1771 pop temp ; direkt zuruech zu main
1776 ;----------------------------------------------------------------
1777 ;|Mnemonic |SZHPNC|Description |Notes |
1778 ;----------------------------------------------------------------
1779 ;|EX AF,AF' |------|Exchange |AF<->AF' |
1791 ;----------------------------------------------------------------
1792 ;|Mnemonic |SZHPNC|Description |Notes |
1793 ;----------------------------------------------------------------
1794 ;|EXX |------|Exchange |qq<->qq' (except AF)|
1819 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1820 adiw z_pcl,1 ;++z_pc
1821 ldi zh,high(EDjmp) ;
1827 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1828 adiw z_pcl,1 ;++z_pc
1829 ldi zh,high(DDFDjmp) ;
1835 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1836 adiw z_pcl,1 ;++z_pc
1837 ldi zh,high(DDFDjmp) ;
1841 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1842 adiw z_pcl,1 ;++z_pc
1843 ldi zh,high(CBjmp) ;
1857 mem_read_s z_pc ;get displacement
1858 adiw z_pcl,1 ;++z_pc
1859 clr temp2 ;sign extend
1863 add xl,temp ;add displacement
1867 mem_read_ds zl,z_pc ;zl = opcode
1868 adiw z_pcl,1 ;++z_pc
1869 ldi zh,high(DDFDCBjmp) ;
1875 #else ; TODO: geht das so?
1885 ; ----------------------- Opcode decoding -------------------------
1887 ; Lookup table for Z80 opcodes. Translates the first byte of the instruction word into three
1888 ; operations: fetch, do something, store.
1889 ; The table is made of 256 words.
1893 instr fetch_nop, op_nop, store_nop ;00 ;NOP
1894 instr fetch_DIR16, op_nop, store_BC ;01 nn nn ;LD BC,nn
1895 instr fetch_nop, op_nop, store_MBC ;02 ;LD (BC),A
1896 instr fetch_BC, op_INC16, store_BC ;03 ;INC BC
1897 instr fetch_B, op_INC, store_B ;04 ;INC B
1898 instr fetch_B, op_DEC, store_B ;05 ;DEC B
1899 instr fetch_DIR8, op_nop, store_B ;06 ;LD B,n
1900 instr fetch_nop, op_RLCA, store_nop ;07 ;RLCA
1901 instr fetch_nop, op_EXAF, store_nop ;08 ;EX AF,AF'
1902 instr fetch_BC, op_ADDHL, store_nop ;09 ;ADD HL,BC
1903 instr fetch_MBC, op_nop, store_nop ;0A ;LD A,(BC)
1904 instr fetch_BC, op_DEC16, store_BC ;0B ;DEC BC
1905 instr fetch_C, op_INC, store_C ;0C ;INC C
1906 instr fetch_C, op_DEC, store_C ;0D ;DEC C
1907 instr fetch_DIR8, op_nop, store_C ;0E nn ;LD C,n
1908 instr fetch_nop, op_RRCA, store_nop ;0F ;RRCA
1909 instr fetch_DIR8, op_DJNZ, store_pcrel ;10 oo ;DJNZ o
1910 instr fetch_DIR16, op_nop, store_DE ;11 nn nn ;LD DE,nn
1911 instr fetch_nop, op_nop, store_MDE ;12 ;LD (DE),A
1912 instr fetch_DE, op_INC16, store_DE ;13 ;INC DE
1913 instr fetch_D, op_INC, store_D ;14 ;INC D
1914 instr fetch_D, op_DEC, store_D ;15 ;DEC D
1915 instr fetch_DIR8, op_nop, store_D ;16 nn ;LD D,n
1916 instr fetch_nop, op_RLA, store_nop ;17 ;RLA
1917 instr fetch_DIR8, op_nop, store_pcrel ;18 oo ;JR o
1918 instr fetch_DE, op_ADDHL, store_nop ;19 ;ADD HL,DE
1919 instr fetch_MDE, op_nop, store_nop ;1A ;LD A,(DE)
1920 instr fetch_DE, op_DEC16, store_DE ;1B ;DEC DE
1921 instr fetch_E, op_INC, store_E ;1C ;INC E
1922 instr fetch_E, op_DEC, store_E ;1D ;DEC E
1923 instr fetch_DIR8, op_nop, store_E ;1E nn ;LD E,n
1924 instr fetch_nop, op_RRA, store_nop ;1F ;RRA
1925 instr fetch_DIR8, op_IFNZ, store_pcrel ;20 oo ;JR NZ,o
1926 instr fetch_DIR16, op_nop, store_HL ;21 nn nn ;LD HL,nn
1927 instr fetch_DIR16, op_STHL, store_nop ;22 nn nn ;LD (nn),HL
1928 instr fetch_HL, op_INC16, store_HL ;23 ;INC HL
1929 instr fetch_H, op_INC, store_H ;24 ;INC H
1930 instr fetch_H, op_DEC, store_H ;25 ;DEC H
1931 instr fetch_DIR8, op_nop, store_H ;26 nn ;LD H,n
1932 instr fetch_A, op_DA, store_A ;27 ;DAA
1933 instr fetch_DIR8, op_IFZ, store_pcrel ;28 oo ;JR Z,o
1934 instr fetch_HL, op_ADDHL, store_nop ;29 ;ADD HL,HL
1935 instr fetch_DIR16, op_RMEM16, store_HL ;2A nn nn ;LD HL,(nn)
1936 instr fetch_HL, op_DEC16, store_HL ;2B ;DEC HL
1937 instr fetch_L, op_INC, store_L ;2C ;INC L
1938 instr fetch_L, op_DEC, store_L ;2D ;DEC L
1939 instr fetch_DIR8, op_nop, store_L ;2E nn ;LD L,n
1940 instr fetch_nop, op_CPL, store_nop ;2F ;CPL
1941 instr fetch_DIR8, op_IFNC, store_pcrel ;30 oo ;JR NC,o
1942 instr fetch_DIR16, op_nop, store_SP ;31 nn nn ;LD SP,nn
1943 instr fetch_DIR16, op_nop, store_AM ;32 nn nn ;LD (nn),A
1944 instr fetch_SP, op_INC16, store_SP ;33 ;INC SP
1945 instr fetch_MHL, op_INC, store_MHL ;34 ;INC (HL)
1946 instr fetch_MHL, op_DEC, store_MHL ;35 ;DEC (HL)
1947 instr fetch_DIR8, op_nop, store_MHL ;36 nn ;LD (HL),n
1948 instr fetch_nop, op_SCF, store_nop ;37 ;SCF
1949 instr fetch_DIR8, op_IFC, store_pcrel ;38 oo ;JR C,o
1950 instr fetch_SP, op_ADDHL, store_nop ;39 ;ADD HL,SP
1951 instr fetch_DIR16, op_RMEM8, store_A ;3A nn nn ;LD A,(nn)
1952 instr fetch_SP, op_DEC16, store_SP ;3B ;DEC SP
1953 instr fetch_nop, op_INCA, store_nop ;3C ;INC A
1954 instr fetch_nop, op_DECA, store_nop ;3D ;DEC A
1955 instr fetch_DIR8, op_nop, store_A ;3E nn ;LD A,n
1956 instr fetch_nop, op_CCF, store_nop ;3F ;CCF (Complement Carry Flag, gvd)
1957 instr fetch_nop, op_nop, store_nop ;40 ;LD B,B
1958 instr fetch_C, op_nop, store_B ;41 ;LD B,C
1959 instr fetch_D, op_nop, store_B ;42 ;LD B,D
1960 instr fetch_E, op_nop, store_B ;43 ;LD B,E
1961 instr fetch_H, op_nop, store_B ;44 ;LD B,H
1962 instr fetch_L, op_nop, store_B ;45 ;LD B,L
1963 instr fetch_MHL, op_nop, store_B ;46 ;LD B,(HL)
1964 instr fetch_A, op_nop, store_B ;47 ;LD B,A
1965 instr fetch_B, op_nop, store_C ;48 ;LD C,B
1966 instr fetch_nop, op_nop, store_nop ;49 ;LD C,C
1967 instr fetch_D, op_nop, store_C ;4A ;LD C,D
1968 instr fetch_E, op_nop, store_C ;4B ;LD C,E
1969 instr fetch_H, op_nop, store_C ;4C ;LD C,H
1970 instr fetch_L, op_nop, store_C ;4D ;LD C,L
1971 instr fetch_MHL, op_nop, store_C ;4E ;LD C,(HL)
1972 instr fetch_A, op_nop, store_C ;4F ;LD C,A
1973 instr fetch_B, op_nop, store_D ;50 ;LD D,B
1974 instr fetch_C, op_nop, store_D ;51 ;LD D,C
1975 instr fetch_nop, op_nop, store_nop ;52 ;LD D,D
1976 instr fetch_E, op_nop, store_D ;53 ;LD D,E
1977 instr fetch_H, op_nop, store_D ;54 ;LD D,H
1978 instr fetch_L, op_nop, store_D ;55 ;LD D,L
1979 instr fetch_MHL, op_nop, store_D ;56 ;LD D,(HL)
1980 instr fetch_A, op_nop, store_D ;57 ;LD D,A
1981 instr fetch_B, op_nop, store_E ;58 ;LD E,B
1982 instr fetch_C, op_nop, store_E ;59 ;LD E,C
1983 instr fetch_D, op_nop, store_E ;5A ;LD E,D
1984 instr fetch_nop, op_nop, store_nop ;5B ;LD E,E
1985 instr fetch_H, op_nop, store_E ;5C ;LD E,H
1986 instr fetch_L, op_nop, store_E ;5D ;LD E,L
1987 instr fetch_MHL, op_nop, store_E ;5E ;LD E,(HL)
1988 instr fetch_A, op_nop, store_E ;5F ;LD E,A
1989 instr fetch_B, op_nop, store_H ;60 ;LD H,B
1990 instr fetch_C, op_nop, store_H ;61 ;LD H,C
1991 instr fetch_D, op_nop, store_H ;62 ;LD H,D
1992 instr fetch_E, op_nop, store_H ;63 ;LD H,E
1993 instr fetch_nop, op_nop, store_nop ;64 ;LD H,H
1994 instr fetch_L, op_nop, store_H ;65 ;LD H,L
1995 instr fetch_MHL, op_nop, store_H ;66 ;LD H,(HL)
1996 instr fetch_A, op_nop, store_H ;67 ;LD H,A
1997 instr fetch_B, op_nop, store_L ;68 ;LD L,B
1998 instr fetch_C, op_nop, store_L ;69 ;LD L,C
1999 instr fetch_D, op_nop, store_L ;6A ;LD L,D
2000 instr fetch_E, op_nop, store_L ;6B ;LD L,E
2001 instr fetch_H, op_nop, store_L ;6C ;LD L,H
2002 instr fetch_nop, op_nop, store_nop ;6D ;LD L,L
2003 instr fetch_MHL, op_nop, store_L ;6E ;LD L,(HL)
2004 instr fetch_A, op_nop, store_L ;6F ;LD L,A
2005 instr fetch_B, op_nop, store_MHL ;70 ;LD (HL),B
2006 instr fetch_C, op_nop, store_MHL ;71 ;LD (HL),C
2007 instr fetch_D, op_nop, store_MHL ;72 ;LD (HL),D
2008 instr fetch_E, op_nop, store_MHL ;73 ;LD (HL),E
2009 instr fetch_H, op_nop, store_MHL ;74 ;LD (HL),H
2010 instr fetch_L, op_nop, store_MHL ;75 ;LD (HL),L
2011 instr fetch_nop, op_HALT, store_nop ;76 ;HALT
2012 instr fetch_A, op_nop, store_MHL ;77 ;LD (HL),A
2013 instr fetch_B, op_nop, store_A ;78 ;LD A,B
2014 instr fetch_C, op_nop, store_A ;79 ;LD A,C
2015 instr fetch_D, op_nop, store_A ;7A ;LD A,D
2016 instr fetch_E, op_nop, store_A ;7B ;LD A,E
2017 instr fetch_H, op_nop, store_A ;7C ;LD A,H
2018 instr fetch_L, op_nop, store_A ;7D ;LD A,L
2019 instr fetch_MHL, op_nop, store_A ;7E ;LD A,(HL)
2020 instr fetch_nop, op_nop, store_nop ;7F ;LD A,A
2021 instr fetch_B, op_ADDA, store_nop ;80 ;ADD A,B
2022 instr fetch_C, op_ADDA, store_nop ;81 ;ADD A,C
2023 instr fetch_D, op_ADDA, store_nop ;82 ;ADD A,D
2024 instr fetch_E, op_ADDA, store_nop ;83 ;ADD A,E
2025 instr fetch_H, op_ADDA, store_nop ;84 ;ADD A,H
2026 instr fetch_L, op_ADDA, store_nop ;85 ;ADD A,L
2027 instr fetch_MHL, op_ADDA, store_nop ;86 ;ADD A,(HL)
2028 instr fetch_A, op_ADDA, store_nop ;87 ;ADD A,A
2029 instr fetch_B, op_ADCA, store_nop ;88 ;ADC A,B
2030 instr fetch_C, op_ADCA, store_nop ;89 ;ADC A,C
2031 instr fetch_D, op_ADCA, store_nop ;8A ;ADC A,D
2032 instr fetch_E, op_ADCA, store_nop ;8B ;ADC A,E
2033 instr fetch_H, op_ADCA, store_nop ;8C ;ADC A,H
2034 instr fetch_L, op_ADCA, store_nop ;8D ;ADC A,L
2035 instr fetch_MHL, op_ADCA, store_nop ;8E ;ADC A,(HL)
2036 instr fetch_A, op_ADCA, store_nop ;8F ;ADC A,A
2037 instr fetch_B, op_SUBFA, store_nop ;90 ;SUB A,B
2038 instr fetch_C, op_SUBFA, store_nop ;91 ;SUB A,C
2039 instr fetch_D, op_SUBFA, store_nop ;92 ;SUB A,D
2040 instr fetch_E, op_SUBFA, store_nop ;93 ;SUB A,E
2041 instr fetch_H, op_SUBFA, store_nop ;94 ;SUB A,H
2042 instr fetch_L, op_SUBFA, store_nop ;95 ;SUB A,L
2043 instr fetch_MHL, op_SUBFA, store_nop ;96 ;SUB A,(HL)
2044 instr fetch_A, op_SUBFA, store_nop ;97 ;SUB A,A
2045 instr fetch_B, op_SBCFA, store_nop ;98 ;SBC A,B
2046 instr fetch_C, op_SBCFA, store_nop ;99 ;SBC A,C
2047 instr fetch_D, op_SBCFA, store_nop ;9A ;SBC A,D
2048 instr fetch_E, op_SBCFA, store_nop ;9B ;SBC A,E
2049 instr fetch_H, op_SBCFA, store_nop ;9C ;SBC A,H
2050 instr fetch_L, op_SBCFA, store_nop ;9D ;SBC A,L
2051 instr fetch_MHL, op_SBCFA, store_nop ;9E ;SBC A,(HL)
2052 instr fetch_A, op_SBCFA, store_nop ;9F ;SBC A,A
2053 instr fetch_B, op_ANDA, store_nop ;A0 ;AND A,B
2054 instr fetch_C, op_ANDA, store_nop ;A1 ;AND A,C
2055 instr fetch_D, op_ANDA, store_nop ;A2 ;AND A,D
2056 instr fetch_E, op_ANDA, store_nop ;A3 ;AND A,E
2057 instr fetch_H, op_ANDA, store_nop ;A4 ;AND A,H
2058 instr fetch_L, op_ANDA, store_nop ;A5 ;AND A,L
2059 instr fetch_MHL, op_ANDA, store_nop ;A6 ;AND A,(HL)
2060 instr fetch_A, op_ANDA, store_nop ;A7 ;AND A,A
2061 instr fetch_B, op_XORA, store_nop ;A8 ;XOR A,B
2062 instr fetch_C, op_XORA, store_nop ;A9 ;XOR A,C
2063 instr fetch_D, op_XORA, store_nop ;AA ;XOR A,D
2064 instr fetch_E, op_XORA, store_nop ;AB ;XOR A,E
2065 instr fetch_H, op_XORA, store_nop ;AC ;XOR A,H
2066 instr fetch_L, op_XORA, store_nop ;AD ;XOR A,L
2067 instr fetch_MHL, op_XORA, store_nop ;AE ;XOR A,(HL)
2068 instr fetch_A, op_XORA, store_nop ;AF ;XOR A,A
2069 instr fetch_B, op_ORA, store_nop ;B0 ;OR A,B
2070 instr fetch_C, op_ORA, store_nop ;B1 ;OR A,C
2071 instr fetch_D, op_ORA, store_nop ;B2 ;OR A,D
2072 instr fetch_E, op_ORA, store_nop ;B3 ;OR A,E
2073 instr fetch_H, op_ORA, store_nop ;B4 ;OR A,H
2074 instr fetch_L, op_ORA, store_nop ;B5 ;OR A,L
2075 instr fetch_MHL, op_ORA, store_nop ;B6 ;OR A,(HL)
2076 instr fetch_A, op_ORA, store_nop ;B7 ;OR A,A
2077 instr fetch_B, op_CPFA, store_nop ;B8 ;CP A,B
2078 instr fetch_C, op_CPFA, store_nop ;B9 ;CP A,C
2079 instr fetch_D, op_CPFA, store_nop ;BA ;CP A,D
2080 instr fetch_E, op_CPFA, store_nop ;BB ;CP A,E
2081 instr fetch_H, op_CPFA, store_nop ;BC ;CP A,H
2082 instr fetch_L, op_CPFA, store_nop ;BD ;CP A,L
2083 instr fetch_MHL, op_CPFA, store_nop ;BE ;CP A,(HL)
2084 instr fetch_A, op_CPFA, store_nop ;BF ;CP A,A
2085 instr fetch_nop, op_IFNZ, store_RET ;C0 ;RET NZ
2086 instr fetch_nop, op_POP16, store_BC ;C1 ;POP BC
2087 instr fetch_DIR16, op_IFNZ, store_PC ;C2 nn nn ;JP NZ,nn
2088 instr fetch_DIR16, op_nop, store_PC ;C3 nn nn ;JP nn
2089 instr fetch_DIR16, op_IFNZ, store_CALL ;C4 nn nn ;CALL NZ,nn
2090 instr fetch_BC, op_PUSH16, store_nop ;C5 ;PUSH BC
2091 instr fetch_DIR8, op_ADDA, store_nop ;C6 nn ;ADD A,n
2092 instr fetch_RST, op_nop, store_CALL ;C7 ;RST 0
2093 instr fetch_nop, op_IFZ, store_RET ;C8 ;RET Z
2094 instr fetch_nop, op_nop, store_RET ;C9 ;RET
2095 instr fetch_DIR16, op_IFZ, store_PC ;CA nn nn ;JP Z,nn
2096 instr fetch_nop, op_prefixCB, store_nop ;CB ;(CB opcode prefix)
2097 instr fetch_DIR16, op_IFZ, store_CALL ;CC nn nn ;CALL Z,nn
2098 instr fetch_DIR16, op_nop, store_CALL ;CD nn nn ;CALL nn
2099 instr fetch_DIR8, op_ADCA, store_nop ;CE nn ;ADC A,n
2100 instr fetch_RST, op_nop, store_CALL ;CF ;RST 8H
2101 instr fetch_nop, op_IFNC, store_RET ;D0 ;RET NC
2102 instr fetch_nop, op_POP16, store_DE ;D1 ;POP DE
2103 instr fetch_DIR16, op_IFNC, store_PC ;D2 nn nn ;JP NC,nn
2104 instr fetch_DIR8, op_OUTA, store_nop ;D3 nn ;OUT (n),A
2105 instr fetch_DIR16, op_IFNC, store_CALL ;D4 nn nn ;CALL NC,nn
2106 instr fetch_DE, op_PUSH16, store_nop ;D5 ;PUSH DE
2107 instr fetch_DIR8, op_SUBFA, store_nop ;D6 nn ;SUB n
2108 instr fetch_RST, op_nop, store_CALL ;D7 ;RST 10H
2109 instr fetch_nop, op_IFC, store_RET ;D8 ;RET C
2110 instr fetch_nop, op_EXX, store_nop ;D9 ;EXX
2111 instr fetch_DIR16, op_IFC, store_PC ;DA nn nn ;JP C,nn
2112 instr fetch_DIR8, op_INA, store_nop ;DB nn ;IN A,(n)
2113 instr fetch_DIR16, op_IFC, store_CALL ;DC nn nn ;CALL C,nn
2114 instr fetch_nop, op_prefixDD, store_nop ;DD ;(DD opcode prefix)
2115 instr fetch_DIR8, op_SBCFA, store_nop ;DE nn ;SBC A,n
2116 instr fetch_RST, op_nop, store_CALL ;DF ;RST 18H
2117 instr fetch_nop, op_IFPO, store_RET ;E0 ;RET PO
2118 instr fetch_nop, op_POP16, store_HL ;E1 ;POP HL
2119 instr fetch_DIR16, op_IFPO, store_PC ;E2 nn nn ;JP PO,nn
2120 instr fetch_MSP, op_EXHL, store_MSP ;E3 ;EX (SP),HL
2121 instr fetch_DIR16, op_IFPO, store_CALL ;E4 nn nn ;CALL PO,nn
2122 instr fetch_HL, op_PUSH16, store_nop ;E5 ;PUSH HL
2123 instr fetch_DIR8, op_ANDA, store_nop ;E6 nn ;AND n
2124 instr fetch_RST, op_nop, store_CALL ;E7 ;RST 20H
2125 instr fetch_nop, op_IFPE, store_RET ;E8 ;RET PE
2126 instr fetch_HL, op_nop, store_PC ;E9 ;JP HL
2127 instr fetch_DIR16, op_IFPE, store_PC ;EA nn nn ;JP PE,nn
2128 instr fetch_DE, op_EXHL, store_DE ;EB ;EX DE,HL
2129 instr fetch_DIR16, op_IFPE, store_CALL ;EC nn nn ;CALL PE,nn
2130 instr fetch_nop, op_prefixED, store_nop ;ED ;(ED opcode prefix)
2131 instr fetch_DIR8, op_XORA, store_nop ;EE nn ;XOR n
2132 instr fetch_RST, op_nop, store_CALL ;EF ;RST 28H
2133 instr fetch_nop, op_IFP, store_RET ;F0 ;RET P
2134 instr fetch_nop, op_POP16, store_AF ;F1 ;POP AF
2135 instr fetch_DIR16, op_IFP, store_PC ;F2 nn nn ;JP P,nn
2136 instr fetch_nop, op_DI, store_nop ;F3 ;DI
2137 instr fetch_DIR16, op_IFP, store_CALL ;F4 nn nn ;CALL P,nn
2138 instr fetch_AF, op_PUSH16, store_nop ;F5 ;PUSH AF
2139 instr fetch_DIR8, op_ORA, store_nop ;F6 nn ;OR n
2140 instr fetch_RST, op_nop, store_CALL ;F7 ;RST 30H
2141 instr fetch_nop, op_IFM, store_RET ;F8 ;RET M
2142 instr fetch_HL, op_nop, store_SP ;F9 ;LD SP,HL
2143 instr fetch_DIR16, op_IFM, store_PC ;FA nn nn ;JP M,nn
2144 instr fetch_nop, op_EI, store_nop ;FB ;EI
2145 instr fetch_DIR16, op_IFM, store_CALL ;FC nn nn ;CALL M,nn
2146 instr fetch_nop, op_prefixFD, store_nop ;FD ;(FD opcode prefix)
2147 instr fetch_DIR8, op_CPFA, store_nop ;FE nn ;CP n
2148 instr fetch_RST, op_nop, store_CALL ;FF ;RST 38H
2159 ;----------------------------------------------------------------
2160 ;|Mnemonic |SZHPNC|Description |Notes |
2161 ;----------------------------------------------------------------
2162 ;|IN r,[C] |***P0-|Input |r=[C] |
2165 do_op_in: ; in opl,(opl)
2168 printstring "Port read: ("
2177 bst z_flags,ZFL_C ;save Carry
2178 ldpmx z_flags,sz53p_tab,temp ;S,Z,P
2187 ;----------------------------------------------------------------
2188 ;|Mnemonic |SZHPNC|Description |Notes |
2189 ;----------------------------------------------------------------
2190 ;|OUT [C],r |------|Output |[C]=r |
2193 do_op_out: ; out (c),opl
2199 ;----------------------------------------------------------------
2200 ;|Mnemonic |SZHPNC|Description |Notes |
2201 ;----------------------------------------------------------------
2202 ;|LD dst,src|------|Load |dst=src |
2205 do_op_stbc: ;store bc to mem loc in opl:h
2214 ;----------------------------------------------------------------
2215 ;|Mnemonic |SZHPNC|Description |Notes |
2216 ;----------------------------------------------------------------
2217 ;|LD dst,src|------|Load |dst=src |
2220 do_op_stde: ;store de to mem loc in opl:h
2229 ;----------------------------------------------------------------
2230 ;|Mnemonic |SZHPNC|Description |Notes |
2231 ;----------------------------------------------------------------
2232 ;|LD dst,src|------|Load |dst=src |
2235 do_op_stsp: ;store sp to mem loc in opl:h
2242 ;----------------------------------------------------------------
2243 ;|Mnemonic |SZHPNC|Description |Notes |
2244 ;----------------------------------------------------------------
2245 ;|ADC HL,ss |***V0*|Add with Carry |HL=HL+ss+CY |
2255 in temp,sreg ; save lower Z
2260 and temp,temp2 ; 16bit Z
2261 ldi z_flags,0 ; clear N
2262 bmov z_flags,ZFL_C, temp2,AVR_C
2263 bmov z_flags,ZFL_P, temp2,AVR_V
2264 bmov z_flags,ZFL_H, temp2,AVR_H
2265 bmov z_flags,ZFL_Z, temp,AVR_Z
2266 bmov z_flags,ZFL_S, temp2,AVR_N
2269 ;----------------------------------------------------------------
2270 ;|Mnemonic |SZHPNC|Description |Notes |
2271 ;----------------------------------------------------------------
2272 ;|SBC HL,ss |***V1*|Subtract with carry |HL=HL-ss-CY |
2287 ldi z_flags,(1<<ZFL_N) ; set N
2288 bmov z_flags,ZFL_C, temp,AVR_C
2289 bmov z_flags,ZFL_P, temp,AVR_V
2290 bmov z_flags,ZFL_H, temp,AVR_H
2291 bmov z_flags,ZFL_Z, temp,AVR_Z
2292 bmov z_flags,ZFL_S, temp,AVR_N
2295 ;----------------------------------------------------------------
2296 ;|Mnemonic |SZHPNC|Description |Notes |
2297 ;----------------------------------------------------------------
2298 ;|NEG |***V1*|Negate A |A=0-A |
2306 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
2307 bmov z_flags,ZFL_C, temp,AVR_C
2308 bmov z_flags,ZFL_H, temp,AVR_H
2313 ;----------------------------------------------------------------
2314 ;|Mnemonic |SZHPNC|Description |Notes |
2315 ;----------------------------------------------------------------
2316 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
2317 ;|RETN |------|Return from NMI | Copy IFF2 to IFF1 |
2323 bmov temp,IFF1, temp,IFF2
2328 ;----------------------------------------------------------------
2329 ;|Mnemonic |SZHPNC|Description |Notes |
2330 ;----------------------------------------------------------------
2331 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
2353 ;----------------------------------------------------------------
2354 ;|Mnemonic |SZHPNC|Description |Notes |
2355 ;----------------------------------------------------------------
2356 ;|LD A,i |**0*0-|Load |(i=I,R) IFF2 --> P |
2357 ;|LD i,A |------|Load |(i=I,R) |
2366 bst z_flags,ZFL_C ;save C
2367 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2370 bmov z_flags,ZFL_P, temp,IFF2
2381 ;----------------------------------------------------------------
2382 ;|Mnemonic |SZHPNC|Description |Notes |
2383 ;----------------------------------------------------------------
2384 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
2385 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
2399 bst z_flags,ZFL_C ;save C
2400 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2416 bst z_flags,ZFL_C ;save C
2417 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2447 mem_read_ds opl, z_pc ;get displacement
2449 clr oph ;sign extend
2454 add xl,opl ;add displacement
2456 mem_read_d opl ;get operand
2495 mem_read_s z_pc ;get displacement
2497 clr temp2 ;sign extend
2502 add xl,temp ;add displacement
2504 mem_write_s opl ;store operand
2518 ;----------------------------------------------------------------
2519 ;|Mnemonic |SZHPNC|Description |Notes |
2520 ;----------------------------------------------------------------
2521 ;|LD dst,src|------|Load |dst=src |
2524 do_op_stxx: ;store xx to mem loc in opl:h
2541 ;----------------------------------------------------------------
2542 ;|Mnemonic |SZHPNC|Description |Notes |
2543 ;----------------------------------------------------------------
2544 ;|EX [SP],IX|------|Exchange |[SP]<->IX |
2545 ;|EX [SP],IY|------|Exchange |[SP]<->IY |
2564 ;----------------------------------------------------------------
2565 ;|Mnemonic |SZHPNC|Description |Notes |
2566 ;----------------------------------------------------------------
2567 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
2568 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
2590 bmov z_flags,ZFL_C, temp,AVR_C
2592 do_z80_flags_clear_N
2595 ;----------------------------------------------------------------
2596 ;|Mnemonic |SZHPNC|Description |Notes |
2597 ;----------------------------------------------------------------
2598 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
2599 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
2600 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
2601 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
2613 mem_write_ds x, temp
2615 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2619 sbr z_flags,(1<<ZFL_P)
2639 mem_write_ds x, temp
2650 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2662 mem_write_ds x, temp
2664 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2668 sbr z_flags,(1<<ZFL_P)
2687 mem_write_ds x, temp
2698 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2701 ;----------------------------------------------------------------
2702 ;|Mnemonic |SZHPNC|Description |Notes |
2703 ;----------------------------------------------------------------
2704 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
2705 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
2706 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
2707 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
2724 sbr z_flags,(1<<ZFL_P)
2745 sbr z_flags,(1<<ZFL_P)
2771 ;----------------------------------------------------------------
2772 ;|Mnemonic |SZHPNC|Description |Notes |
2773 ;----------------------------------------------------------------
2774 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
2775 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
2776 ;|SET b,m |------|Set bit |m=mv{2^b} |
2778 ; .org ((PC+255) & 0xff00) + 0x600
2807 ori z_flags,(1<<ZFL_H)
2808 andi z_flags,~((1<<ZFL_N) | (1<<ZFL_Z))
2809 bmov z_flags,ZFL_Z, temp,AVR_Z
2928 instr fetch_nop, op_nop, store_nop ;00 ;NOP
2929 instr fetch_nop, op_nop, store_nop ;01 ;NOP
2930 instr fetch_nop, op_nop, store_nop ;02 ;NOP
2931 instr fetch_nop, op_nop, store_nop ;03 ;NOP
2932 instr fetch_nop, op_nop, store_nop ;04 ;NOP
2933 instr fetch_nop, op_nop, store_nop ;05 ;NOP
2934 instr fetch_nop, op_nop, store_nop ;06 ;NOP
2935 instr fetch_nop, op_nop, store_nop ;07 ;NOP
2936 instr fetch_nop, op_nop, store_nop ;08 ;NOP
2937 instr fetch_nop, op_nop, store_nop ;09 ;NOP
2938 instr fetch_nop, op_nop, store_nop ;0A ;NOP
2939 instr fetch_nop, op_nop, store_nop ;0B ;NOP
2940 instr fetch_nop, op_nop, store_nop ;0C ;NOP
2941 instr fetch_nop, op_nop, store_nop ;0D ;NOP
2942 instr fetch_nop, op_nop, store_nop ;0E ;NOP
2943 instr fetch_nop, op_nop, store_nop ;0F ;NOP
2944 instr fetch_nop, op_nop, store_nop ;10 ;NOP
2945 instr fetch_nop, op_nop, store_nop ;11 ;NOP
2946 instr fetch_nop, op_nop, store_nop ;12 ;NOP
2947 instr fetch_nop, op_nop, store_nop ;13 ;NOP
2948 instr fetch_nop, op_nop, store_nop ;14 ;NOP
2949 instr fetch_nop, op_nop, store_nop ;15 ;NOP
2950 instr fetch_nop, op_nop, store_nop ;16 ;NOP
2951 instr fetch_nop, op_nop, store_nop ;17 ;NOP
2952 instr fetch_nop, op_nop, store_nop ;18 ;NOP
2953 instr fetch_nop, op_nop, store_nop ;19 ;NOP
2954 instr fetch_nop, op_nop, store_nop ;1A ;NOP
2955 instr fetch_nop, op_nop, store_nop ;1B ;NOP
2956 instr fetch_nop, op_nop, store_nop ;1C ;NOP
2957 instr fetch_nop, op_nop, store_nop ;1D ;NOP
2958 instr fetch_nop, op_nop, store_nop ;1E ;NOP
2959 instr fetch_nop, op_nop, store_nop ;1F ;NOP
2960 instr fetch_nop, op_nop, store_nop ;20 ;NOP
2961 instr fetch_nop, op_nop, store_nop ;21 ;NOP
2962 instr fetch_nop, op_nop, store_nop ;22 ;NOP
2963 instr fetch_nop, op_nop, store_nop ;23 ;NOP
2964 instr fetch_nop, op_nop, store_nop ;24 ;NOP
2965 instr fetch_nop, op_nop, store_nop ;25 ;NOP
2966 instr fetch_nop, op_nop, store_nop ;26 ;NOP
2967 instr fetch_nop, op_nop, store_nop ;27 ;NOP
2968 instr fetch_nop, op_nop, store_nop ;28 ;NOP
2969 instr fetch_nop, op_nop, store_nop ;29 ;NOP
2970 instr fetch_nop, op_nop, store_nop ;2A ;NOP
2971 instr fetch_nop, op_nop, store_nop ;2B ;NOP
2972 instr fetch_nop, op_nop, store_nop ;2C ;NOP
2973 instr fetch_nop, op_nop, store_nop ;2D ;NOP
2974 instr fetch_nop, op_nop, store_nop ;2E ;NOP
2975 instr fetch_nop, op_nop, store_nop ;2F ;NOP
2976 instr fetch_nop, op_nop, store_nop ;30 ;NOP
2977 instr fetch_nop, op_nop, store_nop ;31 ;NOP
2978 instr fetch_nop, op_nop, store_nop ;32 ;NOP
2979 instr fetch_nop, op_nop, store_nop ;33 ;NOP
2980 instr fetch_nop, op_nop, store_nop ;34 ;NOP
2981 instr fetch_nop, op_nop, store_nop ;35 ;NOP
2982 instr fetch_nop, op_nop, store_nop ;36 ;NOP
2983 instr fetch_nop, op_nop, store_nop ;37 ;NOP
2984 instr fetch_nop, op_nop, store_nop ;38 ;NOP
2985 instr fetch_nop, op_nop, store_nop ;39 ;NOP
2986 instr fetch_nop, op_nop, store_nop ;3A ;NOP
2987 instr fetch_nop, op_nop, store_nop ;3B ;NOP
2988 instr fetch_nop, op_nop, store_nop ;3C ;NOP
2989 instr fetch_nop, op_nop, store_nop ;3D ;NOP
2990 instr fetch_nop, op_nop, store_nop ;3E ;NOP
2991 instr fetch_nop, op_nop, store_nop ;3F ;NOP
2992 instr fetch_C, op_IN, store_B ;40 ;IN B,(C)
2993 instr fetch_B, op_OUT, store_nop ;41 ;OUT (C),B
2994 instr fetch_BC, op_SBCHL, store_nop ;42 ;SBC HL,BC
2995 instr fetch_DIR16, op_STBC, store_nop ;43 ;LD (nn),BC
2996 instr fetch_nop, op_NEG, store_nop ;44 ;NEG
2997 instr fetch_nop, op_retn, store_nop ;45 ;RETN
2998 instr fetch_nop, op_IM0, store_nop ;46 ;IM 0
2999 instr fetch_nop, op_ldia, store_nop ;47 ;LD I,A
3000 instr fetch_C, op_IN, store_C ;48 ;IN C,(C)
3001 instr fetch_C, op_OUT, store_nop ;49 ;OUT (C),C
3002 instr fetch_BC, op_ADCHL, store_nop ;4A ;ADC HL,BC
3003 instr fetch_DIR16, op_RMEM16, store_BC ;4B nn nn ;LD BC,(nn)
3004 instr fetch_nop, op_NEG, store_nop ;4C ;NEG
3005 instr fetch_nop, op_reti, store_nop ;4D ;RETI
3006 instr fetch_nop, op_IM0, store_nop ;4E ;IM 0
3007 instr fetch_nop, op_ldra, store_nop ;4F ;LD R,A
3008 instr fetch_C, op_IN, store_D ;50 ;IN D,(C)
3009 instr fetch_D, op_OUT, store_nop ;51 ;OUT (C),D
3010 instr fetch_DE, op_SBCHL, store_nop ;52 ;SBC HL,DE
3011 instr fetch_DIR16, op_STDE, store_nop ;53 nn nn ;LD (nn),DE
3012 instr fetch_nop, op_NEG, store_nop ;54 ;NEG
3013 instr fetch_nop, op_retn, store_nop ;55 ;RETN
3014 instr fetch_nop, op_IM1, store_nop ;56 ;IM 1
3015 instr fetch_nop, op_ldai, store_nop ;57 ;LD A,I
3016 instr fetch_C, op_IN, store_E ;58 ;IN E,(C)
3017 instr fetch_E, op_OUT, store_nop ;59 ;OUT (C),E
3018 instr fetch_DE, op_ADCHL, store_nop ;5A ;ADC HL,DE
3019 instr fetch_DIR16, op_RMEM16, store_DE ;5B nn nn ;LD DE,(nn)
3020 instr fetch_nop, op_NEG, store_nop ;5C ;NEG
3021 instr fetch_nop, op_retn, store_nop ;5D ;RETN
3022 instr fetch_nop, op_IM2, store_nop ;5E ;IM 2
3023 instr fetch_nop, op_ldar, store_nop ;5F ;LD A,R
3024 instr fetch_C, op_IN, store_H ;60 ;IN H,(C)
3025 instr fetch_H, op_OUT, store_nop ;61 ;OUT (C),H
3026 instr fetch_HL, op_SBCHL, store_nop ;62 ;SBC HL,HL
3027 instr fetch_DIR16, op_STHL, store_nop ;63 nn nn ;LD (nn),HL
3028 instr fetch_nop, op_NEG, store_nop ;64 ;NEG
3029 instr fetch_nop, op_retn, store_nop ;65 ;RETN
3030 instr fetch_nop, op_IM0, store_nop ;66 ;IM 0
3031 instr fetch_mhl, op_RRD, store_mhl ;67 ;RRD
3032 instr fetch_C, op_IN, store_L ;68 ;IN L,(C)
3033 instr fetch_L, op_OUT, store_nop ;69 ;OUT (C),L
3034 instr fetch_HL, op_ADCHL, store_nop ;6A ;ADC HL,HL
3035 instr fetch_DIR16, op_RMEM16, store_HL ;6B nn nn ;LD HL,(nn)
3036 instr fetch_nop, op_NEG, store_nop ;6C ;NEG
3037 instr fetch_nop, op_retn, store_nop ;6D ;RETN
3038 instr fetch_nop, op_IM0, store_nop ;6E ;IM 0
3039 instr fetch_mhl, op_RLD, store_mhl ;6F ;RLD
3040 instr fetch_C, op_IN, store_nop ;70 ;IN (C)
3041 instr fetch_0, op_OUT, store_nop ;71 ;OUT (C),0
3042 instr fetch_SP, op_SBCHL, store_nop ;72 ;SBC HL,SP
3043 instr fetch_DIR16, op_STSP, store_nop ;73 nn nn ;LD (nn),SP
3044 instr fetch_nop, op_NEG, store_nop ;74 ;NEG
3045 instr fetch_nop, op_retn, store_nop ;75 ;RETN
3046 instr fetch_nop, op_IM1, store_nop ;76 ;IM 1
3047 instr fetch_nop, op_nop, store_nop ;77 ;NOP
3048 instr fetch_C, op_IN, store_A ;78 ;IN A,(C)
3049 instr fetch_A, op_OUT, store_nop ;79 ;OUT (C),A
3050 instr fetch_SP, op_ADCHL, store_nop ;7A ;ADC HL,SP
3051 instr fetch_DIR16, op_RMEM16, store_SP ;7B nn nn ;LD SP,(nn)
3052 instr fetch_nop, op_NEG, store_nop ;7C ;NEG
3053 instr fetch_nop, op_retn, store_nop ;7D ;RETN
3054 instr fetch_nop, op_IM2, store_nop ;7E ;IM 2
3055 instr fetch_nop, op_nop, store_nop ;7F ;NOP
3056 instr fetch_nop, op_nop, store_nop ;80 ;NOP
3057 instr fetch_nop, op_nop, store_nop ;81 ;NOP
3058 instr fetch_nop, op_nop, store_nop ;82 ;NOP
3059 instr fetch_nop, op_nop, store_nop ;83 ;NOP
3060 instr fetch_nop, op_nop, store_nop ;84 ;NOP
3061 instr fetch_nop, op_nop, store_nop ;85 ;NOP
3062 instr fetch_nop, op_nop, store_nop ;86 ;NOP
3063 instr fetch_nop, op_nop, store_nop ;87 ;NOP
3064 instr fetch_nop, op_nop, store_nop ;88 ;NOP
3065 instr fetch_nop, op_nop, store_nop ;89 ;NOP
3066 instr fetch_nop, op_nop, store_nop ;8A ;NOP
3067 instr fetch_nop, op_nop, store_nop ;8B ;NOP
3068 instr fetch_nop, op_nop, store_nop ;8C ;NOP
3069 instr fetch_nop, op_nop, store_nop ;8D ;NOP
3070 instr fetch_nop, op_nop, store_nop ;8E ;NOP
3071 instr fetch_nop, op_nop, store_nop ;8F ;NOP
3072 instr fetch_nop, op_nop, store_nop ;90 ;NOP
3073 instr fetch_nop, op_nop, store_nop ;91 ;NOP
3074 instr fetch_nop, op_nop, store_nop ;92 ;NOP
3075 instr fetch_nop, op_nop, store_nop ;93 ;NOP
3076 instr fetch_nop, op_nop, store_nop ;94 ;NOP
3077 instr fetch_nop, op_nop, store_nop ;95 ;NOP
3078 instr fetch_nop, op_nop, store_nop ;96 ;NOP
3079 instr fetch_nop, op_nop, store_nop ;97 ;NOP
3080 instr fetch_nop, op_nop, store_nop ;98 ;NOP
3081 instr fetch_nop, op_nop, store_nop ;99 ;NOP
3082 instr fetch_nop, op_nop, store_nop ;9A ;NOP
3083 instr fetch_nop, op_nop, store_nop ;9B ;NOP
3084 instr fetch_nop, op_nop, store_nop ;9C ;NOP
3085 instr fetch_nop, op_nop, store_nop ;9D ;NOP
3086 instr fetch_nop, op_nop, store_nop ;9E ;NOP
3087 instr fetch_nop, op_nop, store_nop ;9F ;NOP
3088 instr fetch_nop, op_LDI, store_nop ;A0 ;LDI
3089 instr fetch_nop, op_CPI, store_nop ;A1 ;CPI
3090 instr fetch_nop, op_nop, store_nop ;A2 ; TODO:
3091 instr fetch_nop, op_nop, store_nop ;A3 ;
3092 instr fetch_nop, op_nop, store_nop ;A4 ;NOP
3093 instr fetch_nop, op_nop, store_nop ;A5 ;NOP
3094 instr fetch_nop, op_nop, store_nop ;A6 ;NOP
3095 instr fetch_nop, op_nop, store_nop ;A7 ;NOP
3096 instr fetch_nop, op_LDD, store_nop ;A8 ;LDD
3097 instr fetch_nop, op_CPD, store_nop ;A9 ;CPD
3098 instr fetch_nop, op_nop, store_nop ;AA ; TODO:
3099 instr fetch_nop, op_nop, store_nop ;AB ;
3100 instr fetch_nop, op_nop, store_nop ;AC ;NOP
3101 instr fetch_nop, op_nop, store_nop ;AD ;NOP
3102 instr fetch_nop, op_nop, store_nop ;AE ;NOP
3103 instr fetch_nop, op_nop, store_nop ;AF ;NOP
3104 instr fetch_nop, op_LDIR, store_nop ;B0 ;LDIR
3105 instr fetch_nop, op_CPIR, store_nop ;B1 ;CPIR
3106 instr fetch_nop, op_nop, store_nop ;B2 ;
3107 instr fetch_nop, op_nop, store_nop ;B3 ;
3108 instr fetch_nop, op_nop, store_nop ;B4 ;NOP
3109 instr fetch_nop, op_nop, store_nop ;B5 ;NOP
3110 instr fetch_nop, op_nop, store_nop ;B6 ;NOP
3111 instr fetch_nop, op_nop, store_nop ;B7 ;NOP
3112 instr fetch_nop, op_LDDR, store_nop ;B8 ;LDDR
3113 instr fetch_nop, op_CPDR, store_nop ;B9 ;CPDR
3114 instr fetch_nop, op_nop, store_nop ;BA ;
3115 instr fetch_nop, op_nop, store_nop ;BB ; TODO:
3116 instr fetch_nop, op_nop, store_nop ;BC ;NOP
3117 instr fetch_nop, op_nop, store_nop ;BD ;NOP
3118 instr fetch_nop, op_nop, store_nop ;BE ;NOP
3119 instr fetch_nop, op_nop, store_nop ;BF ;NOP
3120 instr fetch_nop, op_nop, store_nop ;C0 ;NOP
3121 instr fetch_nop, op_nop, store_nop ;C1 ;NOP
3122 instr fetch_nop, op_nop, store_nop ;C2 ;NOP
3123 instr fetch_nop, op_nop, store_nop ;C3 ;NOP
3124 instr fetch_nop, op_nop, store_nop ;C4 ;NOP
3125 instr fetch_nop, op_nop, store_nop ;C5 ;NOP
3126 instr fetch_nop, op_nop, store_nop ;C6 ;NOP
3127 instr fetch_nop, op_nop, store_nop ;C7 ;NOP
3128 instr fetch_nop, op_nop, store_nop ;C8 ;NOP
3129 instr fetch_nop, op_nop, store_nop ;C9 ;NOP
3130 instr fetch_nop, op_nop, store_nop ;CA ;NOP
3131 instr fetch_nop, op_nop, store_nop ;CB ;NOP
3132 instr fetch_nop, op_nop, store_nop ;CC ;NOP
3133 instr fetch_nop, op_nop, store_nop ;CD ;NOP
3134 instr fetch_nop, op_nop, store_nop ;CE ;NOP
3135 instr fetch_nop, op_nop, store_nop ;CF ;NOP
3136 instr fetch_nop, op_nop, store_nop ;D0 ;NOP
3137 instr fetch_nop, op_nop, store_nop ;D1 ;NOP
3138 instr fetch_nop, op_nop, store_nop ;D2 ;NOP
3139 instr fetch_nop, op_nop, store_nop ;D3 ;NOP
3140 instr fetch_nop, op_nop, store_nop ;D4 ;NOP
3141 instr fetch_nop, op_nop, store_nop ;D5 ;NOP
3142 instr fetch_nop, op_nop, store_nop ;D6 ;NOP
3143 instr fetch_nop, op_nop, store_nop ;D7 ;NOP
3144 instr fetch_nop, op_nop, store_nop ;D8 ;NOP
3145 instr fetch_nop, op_nop, store_nop ;D9 ;NOP
3146 instr fetch_nop, op_nop, store_nop ;DA ;NOP
3147 instr fetch_nop, op_nop, store_nop ;DB ;NOP
3148 instr fetch_nop, op_nop, store_nop ;DC ;NOP
3149 instr fetch_nop, op_nop, store_nop ;DD ;NOP
3150 instr fetch_nop, op_nop, store_nop ;DE ;NOP
3151 instr fetch_nop, op_nop, store_nop ;DF ;NOP
3152 instr fetch_nop, op_nop, store_nop ;E0 ;NOP
3153 instr fetch_nop, op_nop, store_nop ;E1 ;NOP
3154 instr fetch_nop, op_nop, store_nop ;E2 ;NOP
3155 instr fetch_nop, op_nop, store_nop ;E3 ;NOP
3156 instr fetch_nop, op_nop, store_nop ;E4 ;NOP
3157 instr fetch_nop, op_nop, store_nop ;E5 ;NOP
3158 instr fetch_nop, op_nop, store_nop ;E6 ;NOP
3159 instr fetch_nop, op_nop, store_nop ;E7 ;NOP
3160 instr fetch_nop, op_nop, store_nop ;E8 ;NOP
3161 instr fetch_nop, op_nop, store_nop ;E9 ;NOP
3162 instr fetch_nop, op_nop, store_nop ;EA ;NOP
3163 instr fetch_nop, op_nop, store_nop ;EB ;NOP
3164 instr fetch_nop, op_nop, store_nop ;EC ;NOP
3165 instr fetch_nop, op_nop, store_nop ;ED ;NOP
3166 instr fetch_nop, op_nop, store_nop ;EE ;NOP
3167 instr fetch_nop, op_nop, store_nop ;EF ;NOP
3168 instr fetch_nop, op_nop, store_nop ;F0 ;NOP
3169 instr fetch_nop, op_nop, store_nop ;F1 ;NOP
3170 instr fetch_nop, op_nop, store_nop ;F2 ;NOP
3171 instr fetch_nop, op_nop, store_nop ;F3 ;NOP
3172 instr fetch_nop, op_nop, store_nop ;F4 ;NOP
3173 instr fetch_nop, op_nop, store_nop ;F5 ;NOP
3174 instr fetch_nop, op_nop, store_nop ;F6 ;NOP
3175 instr fetch_nop, op_nop, store_nop ;F7 ;NOP
3176 instr fetch_nop, op_nop, store_nop ;F8 ;NOP
3177 instr fetch_nop, op_nop, store_nop ;F9 ;NOP
3178 instr fetch_nop, op_nop, store_nop ;FA ;NOP
3179 instr fetch_nop, op_nop, store_nop ;FB ;NOP
3180 instr fetch_nop, op_nop, store_nop ;FC ;NOP
3181 instr fetch_nop, op_nop, store_nop ;FD ;NOP
3182 instr fetch_nop, op_nop, store_nop ;FE ;NOP
3183 instr fetch_nop, op_nop, store_nop ;FF ;NOP
3188 instr fetch_nop, op_nop, store_nop ;00 ;
3189 instr fetch_nop, op_nop, store_nop ;01 ;
3190 instr fetch_nop, op_nop, store_nop ;02 ;
3191 instr fetch_nop, op_nop, store_nop ;03 ;
3192 instr fetch_nop, op_nop, store_nop ;04 ;
3193 instr fetch_nop, op_nop, store_nop ;05 ;
3194 instr fetch_nop, op_nop, store_nop ;06 ;
3195 instr fetch_nop, op_nop, store_nop ;07 ;
3196 instr fetch_nop, op_nop, store_nop ;08 ;
3197 instr fetch_BC, op_ADDxx, store_nop ;09 ;ADD xx,BC
3198 instr fetch_nop, op_nop, store_nop ;0A ;
3199 instr fetch_nop, op_nop, store_nop ;0B ;
3200 instr fetch_nop, op_nop, store_nop ;0C ;
3201 instr fetch_nop, op_nop, store_nop ;0D ;
3202 instr fetch_nop, op_nop, store_nop ;0E ;
3203 instr fetch_nop, op_nop, store_nop ;0F ;
3204 instr fetch_nop, op_nop, store_nop ;10 ;
3205 instr fetch_nop, op_nop, store_nop ;11 ;
3206 instr fetch_nop, op_nop, store_nop ;12 ;
3207 instr fetch_nop, op_nop, store_nop ;13 ;
3208 instr fetch_nop, op_nop, store_nop ;14 ;
3209 instr fetch_nop, op_nop, store_nop ;15 ;
3210 instr fetch_nop, op_nop, store_nop ;16 ;
3211 instr fetch_nop, op_nop, store_nop ;17 ;
3212 instr fetch_nop, op_nop, store_nop ;18 ;
3213 instr fetch_DE, op_ADDxx, store_nop ;19 ;ADD xx,DE
3214 instr fetch_nop, op_nop, store_nop ;1A ;
3215 instr fetch_nop, op_nop, store_nop ;1B ;
3216 instr fetch_nop, op_nop, store_nop ;1C ;
3217 instr fetch_nop, op_nop, store_nop ;1D ;
3218 instr fetch_nop, op_nop, store_nop ;1E ;
3219 instr fetch_nop, op_nop, store_nop ;1F ;
3220 instr fetch_nop, op_nop, store_nop ;20 ;
3221 instr fetch_DIR16, op_nop, store_xx ;21 ;LD xx,nn
3222 instr fetch_DIR16, op_STxx, store_nop ;22 ;LD (nn),xx
3223 instr fetch_xx, op_INC16, store_xx ;23 ;INC xx
3224 instr fetch_xh, op_INC, store_xh ;24 ;INC xh
3225 instr fetch_xh, op_DEC, store_xh ;25 ;DEC xh
3226 instr fetch_DIR8, op_nop, store_xh ;26 ;LD xh,n
3227 instr fetch_nop, op_nop, store_nop ;27 ;
3228 instr fetch_nop, op_nop, store_nop ;28 ;
3229 instr fetch_xx, op_ADDxx, store_nop ;29 ;ADD xx,xx
3230 instr fetch_DIR16, op_RMEM16, store_xx ;2A ;LD xx,(nn)
3231 instr fetch_xx, op_DEC16, store_xx ;2B ;DEC xx
3232 instr fetch_xl, op_INC, store_xl ;2C ;INC xl
3233 instr fetch_xl, op_DEC, store_xl ;2D ;DEC xl
3234 instr fetch_DIR8, op_nop, store_xl ;2E ;LD xl,n
3235 instr fetch_nop, op_nop, store_nop ;2F ;
3236 instr fetch_nop, op_nop, store_nop ;30 ;
3237 instr fetch_nop, op_nop, store_nop ;31 ;
3238 instr fetch_nop, op_nop, store_nop ;32 ;
3239 instr fetch_nop, op_nop, store_nop ;33 ;
3240 instr fetch_MXX, op_INC, store_MXX ;34 ;INC (xx+d)
3241 instr fetch_MXX, op_DEC, store_MXX ;35 ;DEC (xx+d)
3242 instr fetch_DIR8, op_nop, store_MXX ;36 ;LD (xx+d),n
3243 instr fetch_nop, op_nop, store_nop ;37 ;
3244 instr fetch_nop, op_nop, store_nop ;38 ;
3245 instr fetch_SP, op_ADDxx, store_nop ;39 ;ADD xx,SP
3246 instr fetch_nop, op_nop, store_nop ;3A ;
3247 instr fetch_nop, op_nop, store_nop ;3B ;
3248 instr fetch_nop, op_nop, store_nop ;3C ;
3249 instr fetch_nop, op_nop, store_nop ;3D ;
3250 instr fetch_nop, op_nop, store_nop ;3E ;
3251 instr fetch_nop, op_nop, store_nop ;3F ;
3252 instr fetch_nop, op_nop, store_nop ;40 ;
3253 instr fetch_nop, op_nop, store_nop ;41 ;
3254 instr fetch_nop, op_nop, store_nop ;42 ;
3255 instr fetch_nop, op_nop, store_nop ;43 ;
3256 instr fetch_xh, op_nop, store_B ;44 ;LD B,xh
3257 instr fetch_xl, op_nop, store_B ;45 ;LD B,xl
3258 instr fetch_MXX, op_nop, store_B ;46 ;LD B,(xx+d)
3259 instr fetch_nop, op_nop, store_nop ;47 ;
3260 instr fetch_nop, op_nop, store_nop ;48 ;
3261 instr fetch_nop, op_nop, store_nop ;49 ;
3262 instr fetch_nop, op_nop, store_nop ;4A ;
3263 instr fetch_nop, op_nop, store_nop ;4B ;
3264 instr fetch_xh, op_nop, store_C ;4C ;LD C,xh
3265 instr fetch_xl, op_nop, store_C ;4D ;LD C,xl
3266 instr fetch_MXX, op_nop, store_C ;4E ;LD C,(xx+d)
3267 instr fetch_nop, op_nop, store_nop ;4F ;
3268 instr fetch_nop, op_nop, store_nop ;50 ;
3269 instr fetch_nop, op_nop, store_nop ;51 ;
3270 instr fetch_nop, op_nop, store_nop ;52 ;
3271 instr fetch_nop, op_nop, store_nop ;53 ;
3272 instr fetch_xh, op_nop, store_D ;54 ;LD D,xh
3273 instr fetch_xl, op_nop, store_D ;55 ;LD D,xl
3274 instr fetch_MXX, op_nop, store_D ;56 ;LD D,(xx+d)
3275 instr fetch_nop, op_nop, store_nop ;57 ;
3276 instr fetch_nop, op_nop, store_nop ;58 ;
3277 instr fetch_nop, op_nop, store_nop ;59 ;
3278 instr fetch_nop, op_nop, store_nop ;5A ;
3279 instr fetch_nop, op_nop, store_nop ;5B ;
3280 instr fetch_xh, op_nop, store_E ;5C ;LD E,xh
3281 instr fetch_xl, op_nop, store_E ;5D ;LD E,xl
3282 instr fetch_MXX, op_nop, store_E ;5E ;LD E,(xx+d)
3283 instr fetch_nop, op_nop, store_nop ;5F ;
3284 instr fetch_B, op_nop, store_xh ;60 ;LD xh,B
3285 instr fetch_C, op_nop, store_xh ;61 ;LD xh,C
3286 instr fetch_D, op_nop, store_xh ;62 ;LD xh,D
3287 instr fetch_E, op_nop, store_xh ;63 ;LD xh,E
3288 instr fetch_nop, op_nop, store_nop ;64 ;LD xh,xh
3289 instr fetch_xl, op_nop, store_xh ;65 ;LD xh,xl
3290 instr fetch_MXX, op_nop, store_H ;66 ;LD H,(xx+d)
3291 instr fetch_A, op_nop, store_xh ;67 ;LD xh,A
3292 instr fetch_B, op_nop, store_xl ;68 ;LD xl,B
3293 instr fetch_C, op_nop, store_xl ;69 ;LD xl,C
3294 instr fetch_D, op_nop, store_xl ;6A ;LD xl,D
3295 instr fetch_E, op_nop, store_xl ;6B ;LD xl,E
3296 instr fetch_xh, op_nop, store_xl ;6C ;LD xl,xh
3297 instr fetch_nop, op_nop, store_nop ;6D ;LD xl,xl
3298 instr fetch_MXX, op_nop, store_L ;6E ;LD L,(xx+d)
3299 instr fetch_A, op_nop, store_xl ;6F ;LD xl,A
3300 instr fetch_B, op_nop, store_MXX ;70 ;LD (xx+d),B
3301 instr fetch_C, op_nop, store_MXX ;71 ;LD (xx+d),C
3302 instr fetch_D, op_nop, store_MXX ;72 ;LD (xx+d),D
3303 instr fetch_E, op_nop, store_MXX ;73 ;LD (xx+d),E
3304 instr fetch_H, op_nop, store_MXX ;74 ;LD (xx+d),H
3305 instr fetch_L, op_nop, store_MXX ;75 ;LD (xx+d),L
3306 instr fetch_nop, op_nop, store_nop ;76 ;
3307 instr fetch_A, op_nop, store_MXX ;77 ;LD (xx+d),A
3308 instr fetch_nop, op_nop, store_nop ;78 ;
3309 instr fetch_nop, op_nop, store_nop ;79 ;
3310 instr fetch_nop, op_nop, store_nop ;7A ;
3311 instr fetch_nop, op_nop, store_nop ;7B ;
3312 instr fetch_xh, op_nop, store_A ;7C ;LD A,xh
3313 instr fetch_xl, op_nop, store_A ;7D ;LD A,xl
3314 instr fetch_MXX, op_nop, store_A ;7E ;LD A,(xx+d)
3315 instr fetch_nop, op_nop, store_nop ;7F ;
3316 instr fetch_nop, op_nop, store_nop ;80 ;
3317 instr fetch_nop, op_nop, store_nop ;81 ;
3318 instr fetch_nop, op_nop, store_nop ;82 ;
3319 instr fetch_nop, op_nop, store_nop ;83 ;
3320 instr fetch_xh, op_ADDA, store_nop ;84 ;ADD A,xh
3321 instr fetch_xl, op_ADDA, store_nop ;85 ;ADD A,xl
3322 instr fetch_MXX, op_ADDA, store_nop ;86 ;ADD A,(xx)
3323 instr fetch_nop, op_nop, store_nop ;87 ;
3324 instr fetch_nop, op_nop, store_nop ;88 ;
3325 instr fetch_nop, op_nop, store_nop ;89 ;
3326 instr fetch_nop, op_nop, store_nop ;8A ;
3327 instr fetch_nop, op_nop, store_nop ;8B ;
3328 instr fetch_xh, op_ADCA, store_nop ;8C ;ADC A,xh
3329 instr fetch_xl, op_ADCA, store_nop ;8D ;ADC A,xl
3330 instr fetch_MXX, op_ADCA, store_nop ;8E ;ADC A,(xx)
3331 instr fetch_nop, op_nop, store_nop ;8F ;
3332 instr fetch_nop, op_nop, store_nop ;90 ;
3333 instr fetch_nop, op_nop, store_nop ;91 ;
3334 instr fetch_nop, op_nop, store_nop ;92 ;
3335 instr fetch_nop, op_nop, store_nop ;93 ;
3336 instr fetch_xh, op_SUBFA, store_nop ;94 ;SUB A,xh
3337 instr fetch_xl, op_SUBFA, store_nop ;95 ;SUB A,xl
3338 instr fetch_MXX, op_SUBFA, store_nop ;96 ;SUB A,(xx)
3339 instr fetch_nop, op_nop, store_nop ;97 ;
3340 instr fetch_nop, op_nop, store_nop ;98 ;
3341 instr fetch_nop, op_nop, store_nop ;99 ;
3342 instr fetch_nop, op_nop, store_nop ;9A ;
3343 instr fetch_nop, op_nop, store_nop ;9B ;
3344 instr fetch_xh, op_SBCFA, store_nop ;9C ;SBC A,xh
3345 instr fetch_xl, op_SBCFA, store_nop ;9D ;SBC A,xl
3346 instr fetch_MXX, op_SBCFA, store_nop ;9E ;SBC A,(xx)
3347 instr fetch_nop, op_nop, store_nop ;9F ;
3348 instr fetch_nop, op_nop, store_nop ;A0 ;
3349 instr fetch_nop, op_nop, store_nop ;A1 ;
3350 instr fetch_nop, op_nop, store_nop ;A2 ;
3351 instr fetch_nop, op_nop, store_nop ;A3 ;
3352 instr fetch_xh, op_ANDA, store_nop ;A4 ;AND A,xh
3353 instr fetch_xl, op_ANDA, store_nop ;A5 ;AND A,xl
3354 instr fetch_MXX, op_ANDA, store_nop ;A6 ;AND A,(xx)
3355 instr fetch_nop, op_nop, store_nop ;A7 ;
3356 instr fetch_nop, op_nop, store_nop ;A8 ;
3357 instr fetch_nop, op_nop, store_nop ;A9 ;
3358 instr fetch_nop, op_nop, store_nop ;AA ;
3359 instr fetch_nop, op_nop, store_nop ;AB ;
3360 instr fetch_xh, op_ANDA, store_nop ;AC ;XOR A,xh
3361 instr fetch_xl, op_ANDA, store_nop ;AD ;XOR A,xl
3362 instr fetch_MXX, op_ANDA, store_nop ;AE ;XOR A,(xx)
3363 instr fetch_nop, op_nop, store_nop ;AF ;
3364 instr fetch_nop, op_nop, store_nop ;B0 ;
3365 instr fetch_nop, op_nop, store_nop ;B1 ;
3366 instr fetch_nop, op_nop, store_nop ;B2 ;
3367 instr fetch_nop, op_nop, store_nop ;B3 ;
3368 instr fetch_xh, op_ORA, store_nop ;B4 ;OR A,xh
3369 instr fetch_xl, op_ORA, store_nop ;B5 ;OR A,xl
3370 instr fetch_MXX, op_ORA, store_nop ;B6 ;OR A,(xx)
3371 instr fetch_nop, op_nop, store_nop ;B7 ;
3372 instr fetch_nop, op_nop, store_nop ;B8 ;
3373 instr fetch_nop, op_nop, store_nop ;B9 ;
3374 instr fetch_nop, op_nop, store_nop ;BA ;
3375 instr fetch_nop, op_nop, store_nop ;BB ;
3376 instr fetch_xh, op_CPFA, store_nop ;BC ;CP A,xh
3377 instr fetch_xl, op_CPFA, store_nop ;BD ;CP A,xl
3378 instr fetch_MXX, op_CPFA, store_nop ;BE ;CP A,(xx)
3379 instr fetch_nop, op_nop, store_nop ;BF ;
3380 instr fetch_nop, op_nop, store_nop ;C0 ;
3381 instr fetch_nop, op_nop, store_nop ;C1 ;
3382 instr fetch_nop, op_nop, store_nop ;C2 ;
3383 instr fetch_nop, op_nop, store_nop ;C3 ;
3384 instr fetch_nop, op_nop, store_nop ;C4 ;
3385 instr fetch_nop, op_nop, store_nop ;C5 ;
3386 instr fetch_nop, op_nop, store_nop ;C6 ;
3387 instr fetch_nop, op_nop, store_nop ;C7 ;
3388 instr fetch_nop, op_nop, store_nop ;C8 ;
3389 instr fetch_nop, op_nop, store_nop ;C9 ;
3390 instr fetch_nop, op_nop, store_nop ;CA ;
3391 instr fetch_nop, op_prefixDDFDCB,store_nop ;CB ;
3392 instr fetch_nop, op_nop, store_nop ;CC ;
3393 instr fetch_nop, op_nop, store_nop ;CD ;
3394 instr fetch_nop, op_nop, store_nop ;CE ;
3395 instr fetch_nop, op_nop, store_nop ;CF ;
3396 instr fetch_nop, op_nop, store_nop ;D0 ;
3397 instr fetch_nop, op_nop, store_nop ;D1 ;
3398 instr fetch_nop, op_nop, store_nop ;D2 ;
3399 instr fetch_nop, op_nop, store_nop ;D3 ;
3400 instr fetch_nop, op_nop, store_nop ;D4 ;
3401 instr fetch_nop, op_nop, store_nop ;D5 ;
3402 instr fetch_nop, op_nop, store_nop ;D6 ;
3403 instr fetch_nop, op_nop, store_nop ;D7 ;
3404 instr fetch_nop, op_nop, store_nop ;D8 ;
3405 instr fetch_nop, op_nop, store_nop ;D9 ;
3406 instr fetch_nop, op_nop, store_nop ;DA ;
3407 instr fetch_nop, op_nop, store_nop ;DB ;
3408 instr fetch_nop, op_nop, store_nop ;DC ;
3409 instr fetch_nop, op_nop, store_nop ;DD ;
3410 instr fetch_nop, op_nop, store_nop ;DE ;
3411 instr fetch_nop, op_nop, store_nop ;DF ;
3412 instr fetch_nop, op_nop, store_nop ;E0 ;
3413 instr fetch_nop, op_POP16, store_xx ;E1 ;POP xx
3414 instr fetch_nop, op_nop, store_nop ;E2 ;
3415 instr fetch_MSP, op_EXxx, store_MSP ;E3 ;EX (SP),xx
3416 instr fetch_nop, op_nop, store_nop ;E4 ;
3417 instr fetch_xx, op_PUSH16, store_nop ;E5 ;PUSH xx
3418 instr fetch_nop, op_nop, store_nop ;E6 ;
3419 instr fetch_nop, op_nop, store_nop ;E7 ;
3420 instr fetch_nop, op_nop, store_nop ;E8 ;
3421 instr fetch_xx, op_nop, store_PC ;E9 ;JP xx
3422 instr fetch_nop, op_nop, store_nop ;EA ;
3423 instr fetch_nop, op_nop, store_nop ;EB ;
3424 instr fetch_nop, op_nop, store_nop ;EC ;
3425 instr fetch_nop, op_nop, store_nop ;ED ;
3426 instr fetch_nop, op_nop, store_nop ;EE ;
3427 instr fetch_nop, op_nop, store_nop ;EF ;
3428 instr fetch_nop, op_nop, store_nop ;F0 ;
3429 instr fetch_nop, op_nop, store_nop ;F1 ;
3430 instr fetch_nop, op_nop, store_nop ;F2 ;
3431 instr fetch_nop, op_nop, store_nop ;F3 ;
3432 instr fetch_nop, op_nop, store_nop ;F4 ;
3433 instr fetch_nop, op_nop, store_nop ;F5 ;
3434 instr fetch_nop, op_nop, store_nop ;F6 ;
3435 instr fetch_nop, op_nop, store_nop ;F7 ;
3436 instr fetch_nop, op_nop, store_nop ;F8 ;
3437 instr fetch_xx, op_nop, store_SP ;F9 ;LD SP,xx
3438 instr fetch_nop, op_nop, store_nop ;FA ;
3439 instr fetch_nop, op_nop, store_nop ;FB ;
3440 instr fetch_nop, op_nop, store_nop ;FC ;
3441 instr fetch_nop, op_nop, store_nop ;FD ;
3442 instr fetch_nop, op_nop, store_nop ;FE ;
3443 instr fetch_nop, op_nop, store_nop ;FF ;
3448 instr fetch_nop, op_nop, store_nop ;00 ;NOP
3449 instr fetch_nop, op_nop, store_nop ;01 ;NOP
3450 instr fetch_nop, op_nop, store_nop ;02 ;NOP
3451 instr fetch_nop, op_nop, store_nop ;03 ;NOP
3452 instr fetch_nop, op_nop, store_nop ;04 ;NOP
3453 instr fetch_nop, op_nop, store_nop ;05 ;NOP
3454 instr fetch_nop, op_nop, store_nop ;06 ;NOP
3455 instr fetch_nop, op_nop, store_nop ;07 ;NOP
3456 instr fetch_nop, op_nop, store_nop ;08 ;NOP
3457 instr fetch_nop, op_nop, store_nop ;09 ;NOP
3458 instr fetch_nop, op_nop, store_nop ;0A ;NOP
3459 instr fetch_nop, op_nop, store_nop ;0B ;NOP
3460 instr fetch_nop, op_nop, store_nop ;0C ;NOP
3461 instr fetch_nop, op_nop, store_nop ;0D ;NOP
3462 instr fetch_nop, op_nop, store_nop ;0E ;NOP
3463 instr fetch_nop, op_nop, store_nop ;0F ;NOP
3464 instr fetch_nop, op_nop, store_nop ;10 ;NOP
3465 instr fetch_nop, op_nop, store_nop ;11 ;NOP
3466 instr fetch_nop, op_nop, store_nop ;12 ;NOP
3467 instr fetch_nop, op_nop, store_nop ;13 ;NOP
3468 instr fetch_nop, op_nop, store_nop ;14 ;NOP
3469 instr fetch_nop, op_nop, store_nop ;15 ;NOP
3470 instr fetch_nop, op_nop, store_nop ;16 ;NOP
3471 instr fetch_nop, op_nop, store_nop ;17 ;NOP
3472 instr fetch_nop, op_nop, store_nop ;18 ;NOP
3473 instr fetch_nop, op_nop, store_nop ;19 ;NOP
3474 instr fetch_nop, op_nop, store_nop ;1A ;NOP
3475 instr fetch_nop, op_nop, store_nop ;1B ;NOP
3476 instr fetch_nop, op_nop, store_nop ;1C ;NOP
3477 instr fetch_nop, op_nop, store_nop ;1D ;NOP
3478 instr fetch_nop, op_nop, store_nop ;1E ;NOP
3479 instr fetch_nop, op_nop, store_nop ;1F ;NOP
3480 instr fetch_nop, op_nop, store_nop ;20 ;NOP
3481 instr fetch_nop, op_nop, store_nop ;21 ;NOP
3482 instr fetch_nop, op_nop, store_nop ;22 ;NOP
3483 instr fetch_nop, op_nop, store_nop ;23 ;NOP
3484 instr fetch_nop, op_nop, store_nop ;24 ;NOP
3485 instr fetch_nop, op_nop, store_nop ;25 ;NOP
3486 instr fetch_nop, op_nop, store_nop ;26 ;NOP
3487 instr fetch_nop, op_nop, store_nop ;27 ;NOP
3488 instr fetch_nop, op_nop, store_nop ;28 ;NOP
3489 instr fetch_nop, op_nop, store_nop ;29 ;NOP
3490 instr fetch_nop, op_nop, store_nop ;2A ;NOP
3491 instr fetch_nop, op_nop, store_nop ;2B ;NOP
3492 instr fetch_nop, op_nop, store_nop ;2C ;NOP
3493 instr fetch_nop, op_nop, store_nop ;2D ;NOP
3494 instr fetch_nop, op_nop, store_nop ;2E ;NOP
3495 instr fetch_nop, op_nop, store_nop ;2F ;NOP
3496 instr fetch_nop, op_nop, store_nop ;30 ;NOP
3497 instr fetch_nop, op_nop, store_nop ;31 ;NOP
3498 instr fetch_nop, op_nop, store_nop ;32 ;NOP
3499 instr fetch_nop, op_nop, store_nop ;33 ;NOP
3500 instr fetch_nop, op_nop, store_nop ;34 ;NOP
3501 instr fetch_nop, op_nop, store_nop ;35 ;NOP
3502 instr fetch_nop, op_nop, store_nop ;36 ;NOP
3503 instr fetch_nop, op_nop, store_nop ;37 ;NOP
3504 instr fetch_nop, op_nop, store_nop ;38 ;NOP
3505 instr fetch_nop, op_nop, store_nop ;39 ;NOP
3506 instr fetch_nop, op_nop, store_nop ;3A ;NOP
3507 instr fetch_nop, op_nop, store_nop ;3B ;NOP
3508 instr fetch_nop, op_nop, store_nop ;3C ;NOP
3509 instr fetch_nop, op_nop, store_nop ;3D ;NOP
3510 instr fetch_nop, op_nop, store_nop ;3E ;NOP
3511 instr fetch_nop, op_nop, store_nop ;3F ;NOP
3512 instr fetch_B, op_BIT0, store_nop ;40 ;BIT 0,B
3513 instr fetch_C, op_BIT0, store_nop ;41 ;BIT 0,C
3514 instr fetch_D, op_BIT0, store_nop ;42 ;BIT 0,D
3515 instr fetch_E, op_BIT0, store_nop ;43 ;BIT 0,E
3516 instr fetch_H, op_BIT0, store_nop ;44 ;BIT 0,H
3517 instr fetch_L, op_BIT0, store_nop ;45 ;BIT 0,L
3518 instr fetch_MHL, op_BIT0, store_nop ;46 ;BIT 0,(HL)
3519 instr fetch_A, op_BIT0, store_nop ;47 ;BIT 0,A
3520 instr fetch_B, op_BIT1, store_nop ;48 ;BIT 1,B
3521 instr fetch_C, op_BIT1, store_nop ;49 ;BIT 1,C
3522 instr fetch_D, op_BIT1, store_nop ;4A ;BIT 1,D
3523 instr fetch_E, op_BIT1, store_nop ;4B ;BIT 1,E
3524 instr fetch_H, op_BIT1, store_nop ;4C ;BIT 1,H
3525 instr fetch_L, op_BIT1, store_nop ;4D ;BIT 1,L
3526 instr fetch_MHL, op_BIT1, store_nop ;4E ;BIT 1,(HL)
3527 instr fetch_A, op_BIT1, store_nop ;4F ;BIT 1,A
3528 instr fetch_B, op_BIT2, store_nop ;50 ;BIT 2,B
3529 instr fetch_C, op_BIT2, store_nop ;51 ;BIT 2,C
3530 instr fetch_D, op_BIT2, store_nop ;52 ;BIT 2,D
3531 instr fetch_E, op_BIT2, store_nop ;53 ;BIT 2,E
3532 instr fetch_H, op_BIT2, store_nop ;54 ;BIT 2,H
3533 instr fetch_L, op_BIT2, store_nop ;55 ;BIT 2,L
3534 instr fetch_MHL, op_BIT2, store_nop ;56 ;BIT 2,(HL)
3535 instr fetch_A, op_BIT2, store_nop ;57 ;BIT 2,A
3536 instr fetch_B, op_BIT3, store_nop ;58 ;BIT 3,B
3537 instr fetch_C, op_BIT3, store_nop ;59 ;BIT 3,C
3538 instr fetch_D, op_BIT3, store_nop ;5A ;BIT 3,D
3539 instr fetch_E, op_BIT3, store_nop ;5B ;BIT 3,E
3540 instr fetch_H, op_BIT3, store_nop ;5C ;BIT 3,H
3541 instr fetch_L, op_BIT3, store_nop ;5D ;BIT 3,L
3542 instr fetch_MHL, op_BIT3, store_nop ;5E ;BIT 3,(HL)
3543 instr fetch_A, op_BIT3, store_nop ;5F ;BIT 3,A
3544 instr fetch_B, op_BIT4, store_nop ;60 ;BIT 4,B
3545 instr fetch_C, op_BIT4, store_nop ;61 ;BIT 4,C
3546 instr fetch_D, op_BIT4, store_nop ;62 ;BIT 4,D
3547 instr fetch_E, op_BIT4, store_nop ;63 ;BIT 4,E
3548 instr fetch_H, op_BIT4, store_nop ;64 ;BIT 4,H
3549 instr fetch_L, op_BIT4, store_nop ;65 ;BIT 4,L
3550 instr fetch_MHL, op_BIT4, store_nop ;66 ;BIT 4,(HL)
3551 instr fetch_A, op_BIT4, store_nop ;67 ;BIT 4,A
3552 instr fetch_B, op_BIT5, store_nop ;68 ;BIT 5,B
3553 instr fetch_C, op_BIT5, store_nop ;69 ;BIT 5,C
3554 instr fetch_D, op_BIT5, store_nop ;6A ;BIT 5,D
3555 instr fetch_E, op_BIT5, store_nop ;6B ;BIT 5,E
3556 instr fetch_H, op_BIT5, store_nop ;6C ;BIT 5,H
3557 instr fetch_L, op_BIT5, store_nop ;6D ;BIT 5,L
3558 instr fetch_MHL, op_BIT5, store_nop ;6E ;BIT 5,(HL)
3559 instr fetch_A, op_BIT5, store_nop ;6F ;BIT 5,A
3560 instr fetch_B, op_BIT6, store_nop ;70 ;BIT 6,B
3561 instr fetch_C, op_BIT6, store_nop ;71 ;BIT 6,C
3562 instr fetch_D, op_BIT6, store_nop ;72 ;BIT 6,D
3563 instr fetch_E, op_BIT6, store_nop ;73 ;BIT 6,E
3564 instr fetch_H, op_BIT6, store_nop ;74 ;BIT 6,H
3565 instr fetch_L, op_BIT6, store_nop ;75 ;BIT 6,L
3566 instr fetch_MHL, op_BIT6, store_nop ;76 ;BIT 6,(HL)
3567 instr fetch_A, op_BIT6, store_nop ;77 ;BIT 6,A
3568 instr fetch_B, op_BIT7, store_nop ;78 ;BIT 7,B
3569 instr fetch_C, op_BIT7, store_nop ;79 ;BIT 7,C
3570 instr fetch_D, op_BIT7, store_nop ;7A ;BIT 7,D
3571 instr fetch_E, op_BIT7, store_nop ;7B ;BIT 7,E
3572 instr fetch_H, op_BIT7, store_nop ;7C ;BIT 7,H
3573 instr fetch_L, op_BIT7, store_nop ;7D ;BIT 7,L
3574 instr fetch_MHL, op_BIT7, store_nop ;7E ;BIT 7,(HL)
3575 instr fetch_A, op_BIT7, store_nop ;7F ;BIT 7,A
3576 instr fetch_B, op_RES0, store_B ;80 ;RES 0,B
3577 instr fetch_C, op_RES0, store_C ;81 ;RES 0,C
3578 instr fetch_D, op_RES0, store_D ;82 ;RES 0,D
3579 instr fetch_E, op_RES0, store_E ;83 ;RES 0,E
3580 instr fetch_H, op_RES0, store_H ;84 ;RES 0,H
3581 instr fetch_L, op_RES0, store_L ;85 ;RES 0,L
3582 instr fetch_MHL, op_RES0, store_MHL ;86 ;RES 0,(HL)
3583 instr fetch_A, op_RES0, store_A ;87 ;RES 0,A
3584 instr fetch_B, op_RES1, store_B ;88 ;RES 1,B
3585 instr fetch_C, op_RES1, store_C ;89 ;RES 1,C
3586 instr fetch_D, op_RES1, store_D ;8A ;RES 1,D
3587 instr fetch_E, op_RES1, store_E ;8B ;RES 1,E
3588 instr fetch_H, op_RES1, store_H ;8C ;RES 1,H
3589 instr fetch_L, op_RES1, store_L ;8D ;RES 1,L
3590 instr fetch_MHL, op_RES1, store_MHL ;8E ;RES 1,(HL)
3591 instr fetch_A, op_RES1, store_A ;8F ;RES 1,A
3592 instr fetch_B, op_RES2, store_B ;90 ;RES 2,B
3593 instr fetch_C, op_RES2, store_C ;91 ;RES 2,C
3594 instr fetch_D, op_RES2, store_D ;92 ;RES 2,D
3595 instr fetch_E, op_RES2, store_E ;93 ;RES 2,E
3596 instr fetch_H, op_RES2, store_H ;94 ;RES 2,H
3597 instr fetch_L, op_RES2, store_L ;95 ;RES 2,L
3598 instr fetch_MHL, op_RES2, store_MHL ;96 ;RES 2,(HL)
3599 instr fetch_A, op_RES2, store_A ;97 ;RES 2,A
3600 instr fetch_B, op_RES3, store_B ;98 ;RES 3,B
3601 instr fetch_C, op_RES3, store_C ;99 ;RES 3,C
3602 instr fetch_D, op_RES3, store_D ;9A ;RES 3,D
3603 instr fetch_E, op_RES3, store_E ;9B ;RES 3,E
3604 instr fetch_H, op_RES3, store_H ;9C ;RES 3,H
3605 instr fetch_L, op_RES3, store_L ;9D ;RES 3,L
3606 instr fetch_MHL, op_RES3, store_MHL ;9E ;RES 3,(HL)
3607 instr fetch_A, op_RES3, store_A ;9F ;RES 3,A
3608 instr fetch_B, op_RES4, store_B ;A0 ;RES 4,B
3609 instr fetch_C, op_RES4, store_C ;A1 ;RES 4,C
3610 instr fetch_D, op_RES4, store_D ;A2 ;RES 4,D
3611 instr fetch_E, op_RES4, store_E ;A3 ;RES 4,E
3612 instr fetch_H, op_RES4, store_H ;A4 ;RES 4,H
3613 instr fetch_L, op_RES4, store_L ;A5 ;RES 4,L
3614 instr fetch_MHL, op_RES4, store_MHL ;A6 ;RES 4,(HL)
3615 instr fetch_A, op_RES4, store_A ;A7 ;RES 4,A
3616 instr fetch_B, op_RES5, store_B ;A8 ;RES 5,B
3617 instr fetch_C, op_RES5, store_C ;A9 ;RES 5,C
3618 instr fetch_D, op_RES5, store_D ;AA ;RES 5,D
3619 instr fetch_E, op_RES5, store_E ;AB ;RES 5,E
3620 instr fetch_H, op_RES5, store_H ;AC ;RES 5,H
3621 instr fetch_L, op_RES5, store_L ;AD ;RES 5,L
3622 instr fetch_MHL, op_RES5, store_MHL ;AE ;RES 5,(HL)
3623 instr fetch_A, op_RES5, store_A ;AF ;RES 5,A
3624 instr fetch_B, op_RES6, store_B ;B0 ;RES 6,B
3625 instr fetch_C, op_RES6, store_C ;B1 ;RES 6,C
3626 instr fetch_D, op_RES6, store_D ;B2 ;RES 6,D
3627 instr fetch_E, op_RES6, store_E ;B3 ;RES 6,E
3628 instr fetch_H, op_RES6, store_H ;B4 ;RES 6,H
3629 instr fetch_L, op_RES6, store_L ;B5 ;RES 6,L
3630 instr fetch_MHL, op_RES6, store_MHL ;B6 ;RES 6,(HL)
3631 instr fetch_A, op_RES6, store_A ;B7 ;RES 6,A
3632 instr fetch_B, op_RES7, store_B ;B8 ;RES 7,B
3633 instr fetch_C, op_RES7, store_C ;B9 ;RES 7,C
3634 instr fetch_D, op_RES7, store_D ;BA ;RES 7,D
3635 instr fetch_E, op_RES7, store_E ;BB ;RES 7,E
3636 instr fetch_H, op_RES7, store_H ;BC ;RES 7,H
3637 instr fetch_L, op_RES7, store_L ;BD ;RES 7,L
3638 instr fetch_MHL, op_RES7, store_MHL ;BE ;RES 7,(HL)
3639 instr fetch_A, op_RES7, store_A ;BF ;RES 7,A
3640 instr fetch_B, op_SET0, store_B ;C0 ;SET 0,B
3641 instr fetch_C, op_SET0, store_C ;C1 ;SET 0,C
3642 instr fetch_D, op_SET0, store_D ;C2 ;SET 0,D
3643 instr fetch_E, op_SET0, store_E ;C3 ;SET 0,E
3644 instr fetch_H, op_SET0, store_H ;C4 ;SET 0,H
3645 instr fetch_L, op_SET0, store_L ;C5 ;SET 0,L
3646 instr fetch_MHL, op_SET0, store_MHL ;C6 ;SET 0,(HL)
3647 instr fetch_A, op_SET0, store_A ;C7 ;SET 0,A
3648 instr fetch_B, op_SET1, store_B ;C8 ;SET 1,B
3649 instr fetch_C, op_SET1, store_C ;C9 ;SET 1,C
3650 instr fetch_D, op_SET1, store_D ;CA ;SET 1,D
3651 instr fetch_E, op_SET1, store_E ;CB ;SET 1,E
3652 instr fetch_H, op_SET1, store_H ;CC ;SET 1,H
3653 instr fetch_L, op_SET1, store_L ;CD ;SET 1,L
3654 instr fetch_MHL, op_SET1, store_MHL ;CE ;SET 1,(HL)
3655 instr fetch_A, op_SET1, store_A ;CF ;SET 1,A
3656 instr fetch_B, op_SET2, store_B ;D0 ;SET 2,B
3657 instr fetch_C, op_SET2, store_C ;D1 ;SET 2,C
3658 instr fetch_D, op_SET2, store_D ;D2 ;SET 2,D
3659 instr fetch_E, op_SET2, store_E ;D3 ;SET 2,E
3660 instr fetch_H, op_SET2, store_H ;D4 ;SET 2,H
3661 instr fetch_L, op_SET2, store_L ;D5 ;SET 2,L
3662 instr fetch_MHL, op_SET2, store_MHL ;D6 ;SET 2,(HL)
3663 instr fetch_A, op_SET2, store_A ;D7 ;SET 2,A
3664 instr fetch_B, op_SET3, store_B ;D8 ;SET 3,B
3665 instr fetch_C, op_SET3, store_C ;D9 ;SET 3,C
3666 instr fetch_D, op_SET3, store_D ;DA ;SET 3,D
3667 instr fetch_E, op_SET3, store_E ;DB ;SET 3,E
3668 instr fetch_H, op_SET3, store_H ;DC ;SET 3,H
3669 instr fetch_L, op_SET3, store_L ;DD ;SET 3,L
3670 instr fetch_MHL, op_SET3, store_MHL ;DE ;SET 3,(HL)
3671 instr fetch_A, op_SET3, store_A ;DF ;SET 3,A
3672 instr fetch_B, op_SET4, store_B ;E0 ;SET 4,B
3673 instr fetch_C, op_SET4, store_C ;E1 ;SET 4,C
3674 instr fetch_D, op_SET4, store_D ;E2 ;SET 4,D
3675 instr fetch_E, op_SET4, store_E ;E3 ;SET 4,E
3676 instr fetch_H, op_SET4, store_H ;E4 ;SET 4,H
3677 instr fetch_L, op_SET4, store_L ;E5 ;SET 4,L
3678 instr fetch_MHL, op_SET4, store_MHL ;E6 ;SET 4,(HL)
3679 instr fetch_A, op_SET4, store_A ;E7 ;SET 4,A
3680 instr fetch_B, op_SET5, store_B ;E8 ;SET 5,B
3681 instr fetch_C, op_SET5, store_C ;E9 ;SET 5,C
3682 instr fetch_D, op_SET5, store_D ;EA ;SET 5,D
3683 instr fetch_E, op_SET5, store_E ;EB ;SET 5,E
3684 instr fetch_H, op_SET5, store_H ;EC ;SET 5,H
3685 instr fetch_L, op_SET5, store_L ;ED ;SET 5,L
3686 instr fetch_MHL, op_SET5, store_MHL ;EE ;SET 5,(HL)
3687 instr fetch_A, op_SET5, store_A ;EF ;SET 5,A
3688 instr fetch_B, op_SET6, store_B ;F0 ;SET 6,B
3689 instr fetch_C, op_SET6, store_C ;F1 ;SET 6,C
3690 instr fetch_D, op_SET6, store_D ;F2 ;SET 6,D
3691 instr fetch_E, op_SET6, store_E ;F3 ;SET 6,E
3692 instr fetch_H, op_SET6, store_H ;F4 ;SET 6,H
3693 instr fetch_L, op_SET6, store_L ;F5 ;SET 6,L
3694 instr fetch_MHL, op_SET6, store_MHL ;F6 ;SET 6,(HL)
3695 instr fetch_A, op_SET6, store_A ;F7 ;SET 6,A
3696 instr fetch_B, op_SET7, store_B ;F8 ;SET 7,B
3697 instr fetch_C, op_SET7, store_C ;F9 ;SET 7,C
3698 instr fetch_D, op_SET7, store_D ;FA ;SET 7,D
3699 instr fetch_E, op_SET7, store_E ;FB ;SET 7,E
3700 instr fetch_H, op_SET7, store_H ;FC ;SET 7,H
3701 instr fetch_L, op_SET7, store_L ;FD ;SET 7,L
3702 instr fetch_MHL, op_SET7, store_MHL ;FE ;SET 7,(HL)
3703 instr fetch_A, op_SET7, store_A ;FF ;SET 7,A
3708 instr fetch_nop, op_nop, store_nop ;00 ;NOP
3709 instr fetch_nop, op_nop, store_nop ;01 ;NOP
3710 instr fetch_nop, op_nop, store_nop ;02 ;NOP
3711 instr fetch_nop, op_nop, store_nop ;03 ;NOP
3712 instr fetch_nop, op_nop, store_nop ;04 ;NOP
3713 instr fetch_nop, op_nop, store_nop ;05 ;NOP
3714 instr fetch_nop, op_nop, store_nop ;06 ;NOP
3715 instr fetch_nop, op_nop, store_nop ;07 ;NOP
3716 instr fetch_nop, op_nop, store_nop ;08 ;NOP
3717 instr fetch_nop, op_nop, store_nop ;09 ;NOP
3718 instr fetch_nop, op_nop, store_nop ;0A ;NOP
3719 instr fetch_nop, op_nop, store_nop ;0B ;NOP
3720 instr fetch_nop, op_nop, store_nop ;0C ;NOP
3721 instr fetch_nop, op_nop, store_nop ;0D ;NOP
3722 instr fetch_nop, op_nop, store_nop ;0E ;NOP
3723 instr fetch_nop, op_nop, store_nop ;0F ;NOP
3724 instr fetch_nop, op_nop, store_nop ;10 ;NOP
3725 instr fetch_nop, op_nop, store_nop ;11 ;NOP
3726 instr fetch_nop, op_nop, store_nop ;12 ;NOP
3727 instr fetch_nop, op_nop, store_nop ;13 ;NOP
3728 instr fetch_nop, op_nop, store_nop ;14 ;NOP
3729 instr fetch_nop, op_nop, store_nop ;15 ;NOP
3730 instr fetch_nop, op_nop, store_nop ;16 ;NOP
3731 instr fetch_nop, op_nop, store_nop ;17 ;NOP
3732 instr fetch_nop, op_nop, store_nop ;18 ;NOP
3733 instr fetch_nop, op_nop, store_nop ;19 ;NOP
3734 instr fetch_nop, op_nop, store_nop ;1A ;NOP
3735 instr fetch_nop, op_nop, store_nop ;1B ;NOP
3736 instr fetch_nop, op_nop, store_nop ;1C ;NOP
3737 instr fetch_nop, op_nop, store_nop ;1D ;NOP
3738 instr fetch_nop, op_nop, store_nop ;1E ;NOP
3739 instr fetch_nop, op_nop, store_nop ;1F ;NOP
3740 instr fetch_nop, op_nop, store_nop ;20 ;NOP
3741 instr fetch_nop, op_nop, store_nop ;21 ;NOP
3742 instr fetch_nop, op_nop, store_nop ;22 ;NOP
3743 instr fetch_nop, op_nop, store_nop ;23 ;NOP
3744 instr fetch_nop, op_nop, store_nop ;24 ;NOP
3745 instr fetch_nop, op_nop, store_nop ;25 ;NOP
3746 instr fetch_nop, op_nop, store_nop ;26 ;NOP
3747 instr fetch_nop, op_nop, store_nop ;27 ;NOP
3748 instr fetch_nop, op_nop, store_nop ;28 ;NOP
3749 instr fetch_nop, op_nop, store_nop ;29 ;NOP
3750 instr fetch_nop, op_nop, store_nop ;2A ;NOP
3751 instr fetch_nop, op_nop, store_nop ;2B ;NOP
3752 instr fetch_nop, op_nop, store_nop ;2C ;NOP
3753 instr fetch_nop, op_nop, store_nop ;2D ;NOP
3754 instr fetch_nop, op_nop, store_nop ;2E ;NOP
3755 instr fetch_nop, op_nop, store_nop ;2F ;NOP
3756 instr fetch_nop, op_nop, store_nop ;30 ;NOP
3757 instr fetch_nop, op_nop, store_nop ;31 ;NOP
3758 instr fetch_nop, op_nop, store_nop ;32 ;NOP
3759 instr fetch_nop, op_nop, store_nop ;33 ;NOP
3760 instr fetch_nop, op_nop, store_nop ;34 ;NOP
3761 instr fetch_nop, op_nop, store_nop ;35 ;NOP
3762 instr fetch_nop, op_nop, store_nop ;36 ;NOP
3763 instr fetch_nop, op_nop, store_nop ;37 ;NOP
3764 instr fetch_nop, op_nop, store_nop ;38 ;NOP
3765 instr fetch_nop, op_nop, store_nop ;39 ;NOP
3766 instr fetch_nop, op_nop, store_nop ;3A ;NOP
3767 instr fetch_nop, op_nop, store_nop ;3B ;NOP
3768 instr fetch_nop, op_nop, store_nop ;3C ;NOP
3769 instr fetch_nop, op_nop, store_nop ;3D ;NOP
3770 instr fetch_nop, op_nop, store_nop ;3E ;NOP
3771 instr fetch_nop, op_nop, store_nop ;3F ;NOP
3772 instr fetch_nop, op_BIT0, store_nop ;40 ;BIT 0,(Ix+d),B
3773 instr fetch_nop, op_BIT0, store_nop ;41 ;BIT 0,(Ix+d),C
3774 instr fetch_nop, op_BIT0, store_nop ;42 ;BIT 0,(Ix+d),D
3775 instr fetch_nop, op_BIT0, store_nop ;43 ;BIT 0,(Ix+d),E
3776 instr fetch_nop, op_BIT0, store_nop ;44 ;BIT 0,(Ix+d),H
3777 instr fetch_nop, op_BIT0, store_nop ;45 ;BIT 0,(Ix+d),L
3778 instr fetch_nop, op_BIT0, store_nop ;46 ;BIT 0,(Ix+d)
3779 instr fetch_nop, op_BIT0, store_nop ;47 ;BIT 0,(Ix+d),A
3780 instr fetch_nop, op_BIT1, store_nop ;48 ;BIT 1,(Ix+d),B
3781 instr fetch_nop, op_BIT1, store_nop ;49 ;BIT 1,(Ix+d),C
3782 instr fetch_nop, op_BIT1, store_nop ;4A ;BIT 1,(Ix+d),D
3783 instr fetch_nop, op_BIT1, store_nop ;4B ;BIT 1,(Ix+d),E
3784 instr fetch_nop, op_BIT1, store_nop ;4C ;BIT 1,(Ix+d),H
3785 instr fetch_nop, op_BIT1, store_nop ;4D ;BIT 1,(Ix+d),L
3786 instr fetch_nop, op_BIT1, store_nop ;4E ;BIT 1,(Ix+d)
3787 instr fetch_nop, op_BIT1, store_nop ;4F ;BIT 1,(Ix+d),A
3788 instr fetch_nop, op_BIT2, store_nop ;50 ;BIT 2,(Ix+d),B
3789 instr fetch_nop, op_BIT2, store_nop ;51 ;BIT 2,(Ix+d),C
3790 instr fetch_nop, op_BIT2, store_nop ;52 ;BIT 2,(Ix+d),D
3791 instr fetch_nop, op_BIT2, store_nop ;53 ;BIT 2,(Ix+d),E
3792 instr fetch_nop, op_BIT2, store_nop ;54 ;BIT 2,(Ix+d),H
3793 instr fetch_nop, op_BIT2, store_nop ;55 ;BIT 2,(Ix+d),L
3794 instr fetch_nop, op_BIT2, store_nop ;56 ;BIT 2,(Ix+d)
3795 instr fetch_nop, op_BIT2, store_nop ;57 ;BIT 2,(Ix+d),A
3796 instr fetch_nop, op_BIT3, store_nop ;58 ;BIT 3,(Ix+d),B
3797 instr fetch_nop, op_BIT3, store_nop ;59 ;BIT 3,(Ix+d),C
3798 instr fetch_nop, op_BIT3, store_nop ;5A ;BIT 3,(Ix+d),D
3799 instr fetch_nop, op_BIT3, store_nop ;5B ;BIT 3,(Ix+d),E
3800 instr fetch_nop, op_BIT3, store_nop ;5C ;BIT 3,(Ix+d),H
3801 instr fetch_nop, op_BIT3, store_nop ;5D ;BIT 3,(Ix+d),L
3802 instr fetch_nop, op_BIT3, store_nop ;5E ;BIT 3,(Ix+d)
3803 instr fetch_nop, op_BIT3, store_nop ;5F ;BIT 3,(Ix+d),A
3804 instr fetch_nop, op_BIT4, store_nop ;60 ;BIT 4,(Ix+d),B
3805 instr fetch_nop, op_BIT4, store_nop ;61 ;BIT 4,(Ix+d),C
3806 instr fetch_nop, op_BIT4, store_nop ;62 ;BIT 4,(Ix+d),D
3807 instr fetch_nop, op_BIT4, store_nop ;63 ;BIT 4,(Ix+d),E
3808 instr fetch_nop, op_BIT4, store_nop ;64 ;BIT 4,(Ix+d),H
3809 instr fetch_nop, op_BIT4, store_nop ;65 ;BIT 4,(Ix+d),L
3810 instr fetch_nop, op_BIT4, store_nop ;66 ;BIT 4,(Ix+d)
3811 instr fetch_nop, op_BIT4, store_nop ;67 ;BIT 4,(Ix+d),A
3812 instr fetch_nop, op_BIT5, store_nop ;68 ;BIT 5,(Ix+d),B
3813 instr fetch_nop, op_BIT5, store_nop ;69 ;BIT 5,(Ix+d),C
3814 instr fetch_nop, op_BIT5, store_nop ;6A ;BIT 5,(Ix+d),D
3815 instr fetch_nop, op_BIT5, store_nop ;6B ;BIT 5,(Ix+d),E
3816 instr fetch_nop, op_BIT5, store_nop ;6C ;BIT 5,(Ix+d),H
3817 instr fetch_nop, op_BIT5, store_nop ;6D ;BIT 5,(Ix+d),L
3818 instr fetch_nop, op_BIT5, store_nop ;6E ;BIT 5,(Ix+d)
3819 instr fetch_nop, op_BIT5, store_nop ;6F ;BIT 5,(Ix+d),A
3820 instr fetch_nop, op_BIT6, store_nop ;70 ;BIT 6,(Ix+d),B
3821 instr fetch_nop, op_BIT6, store_nop ;71 ;BIT 6,(Ix+d),C
3822 instr fetch_nop, op_BIT6, store_nop ;72 ;BIT 6,(Ix+d),D
3823 instr fetch_nop, op_BIT6, store_nop ;73 ;BIT 6,(Ix+d),E
3824 instr fetch_nop, op_BIT6, store_nop ;74 ;BIT 6,(Ix+d),H
3825 instr fetch_nop, op_BIT6, store_nop ;75 ;BIT 6,(Ix+d),L
3826 instr fetch_nop, op_BIT6, store_nop ;76 ;BIT 6,(Ix+d)
3827 instr fetch_nop, op_BIT6, store_nop ;77 ;BIT 6,(Ix+d),A
3828 instr fetch_nop, op_BIT7, store_nop ;78 ;BIT 7,(Ix+d),B
3829 instr fetch_nop, op_BIT7, store_nop ;79 ;BIT 7,(Ix+d),C
3830 instr fetch_nop, op_BIT7, store_nop ;7A ;BIT 7,(Ix+d),D
3831 instr fetch_nop, op_BIT7, store_nop ;7B ;BIT 7,(Ix+d),E
3832 instr fetch_nop, op_BIT7, store_nop ;7C ;BIT 7,(Ix+d),H
3833 instr fetch_nop, op_BIT7, store_nop ;7D ;BIT 7,(Ix+d),L
3834 instr fetch_nop, op_BIT7, store_nop ;7E ;BIT 7,(Ix+d)
3835 instr fetch_nop, op_BIT7, store_nop ;7F ;BIT 7,(Ix+d),A
3836 instr fetch_nop, op_RES0, store_B ;80 ;RES 0,(Ix+d),B
3837 instr fetch_nop, op_RES0, store_C ;81 ;RES 0,(Ix+d),C
3838 instr fetch_nop, op_RES0, store_D ;82 ;RES 0,(Ix+d),D
3839 instr fetch_nop, op_RES0, store_E ;83 ;RES 0,(Ix+d),E
3840 instr fetch_nop, op_RES0, store_H ;84 ;RES 0,(Ix+d),H
3841 instr fetch_nop, op_RES0, store_L ;85 ;RES 0,(Ix+d),L
3842 instr fetch_nop, op_RES0, store_nop ;86 ;RES 0,(Ix+d)
3843 instr fetch_nop, op_RES0, store_A ;87 ;RES 0,(Ix+d),A
3844 instr fetch_nop, op_RES1, store_B ;88 ;RES 1,(Ix+d),B
3845 instr fetch_nop, op_RES1, store_C ;89 ;RES 1,(Ix+d),C
3846 instr fetch_nop, op_RES1, store_D ;8A ;RES 1,(Ix+d),D
3847 instr fetch_nop, op_RES1, store_E ;8B ;RES 1,(Ix+d),E
3848 instr fetch_nop, op_RES1, store_H ;8C ;RES 1,(Ix+d),H
3849 instr fetch_nop, op_RES1, store_L ;8D ;RES 1,(Ix+d),L
3850 instr fetch_nop, op_RES1, store_nop ;8E ;RES 1,(Ix+d)
3851 instr fetch_nop, op_RES1, store_A ;8F ;RES 1,(Ix+d),A
3852 instr fetch_nop, op_RES2, store_B ;90 ;RES 2,(Ix+d),B
3853 instr fetch_nop, op_RES2, store_C ;91 ;RES 2,(Ix+d),C
3854 instr fetch_nop, op_RES2, store_D ;92 ;RES 2,(Ix+d),D
3855 instr fetch_nop, op_RES2, store_E ;93 ;RES 2,(Ix+d),E
3856 instr fetch_nop, op_RES2, store_H ;94 ;RES 2,(Ix+d),H
3857 instr fetch_nop, op_RES2, store_L ;95 ;RES 2,(Ix+d),L
3858 instr fetch_nop, op_RES2, store_nop ;96 ;RES 2,(Ix+d)
3859 instr fetch_nop, op_RES2, store_A ;97 ;RES 2,(Ix+d),A
3860 instr fetch_nop, op_RES3, store_B ;98 ;RES 3,(Ix+d),B
3861 instr fetch_nop, op_RES3, store_C ;99 ;RES 3,(Ix+d),C
3862 instr fetch_nop, op_RES3, store_D ;9A ;RES 3,(Ix+d),D
3863 instr fetch_nop, op_RES3, store_E ;9B ;RES 3,(Ix+d),E
3864 instr fetch_nop, op_RES3, store_H ;9C ;RES 3,(Ix+d),H
3865 instr fetch_nop, op_RES3, store_L ;9D ;RES 3,(Ix+d),L
3866 instr fetch_nop, op_RES3, store_nop ;9E ;RES 3,(Ix+d)
3867 instr fetch_nop, op_RES3, store_A ;9F ;RES 3,(Ix+d),A
3868 instr fetch_nop, op_RES4, store_B ;A0 ;RES 4,(Ix+d),B
3869 instr fetch_nop, op_RES4, store_C ;A1 ;RES 4,(Ix+d),C
3870 instr fetch_nop, op_RES4, store_D ;A2 ;RES 4,(Ix+d),D
3871 instr fetch_nop, op_RES4, store_E ;A3 ;RES 4,(Ix+d),E
3872 instr fetch_nop, op_RES4, store_H ;A4 ;RES 4,(Ix+d),H
3873 instr fetch_nop, op_RES4, store_L ;A5 ;RES 4,(Ix+d),L
3874 instr fetch_nop, op_RES4, store_nop ;A6 ;RES 4,(Ix+d)
3875 instr fetch_nop, op_RES4, store_A ;A7 ;RES 4,(Ix+d),A
3876 instr fetch_nop, op_RES5, store_B ;A8 ;RES 5,(Ix+d),B
3877 instr fetch_nop, op_RES5, store_C ;A9 ;RES 5,(Ix+d),C
3878 instr fetch_nop, op_RES5, store_D ;AA ;RES 5,(Ix+d),D
3879 instr fetch_nop, op_RES5, store_E ;AB ;RES 5,(Ix+d),E
3880 instr fetch_nop, op_RES5, store_H ;AC ;RES 5,(Ix+d),H
3881 instr fetch_nop, op_RES5, store_L ;AD ;RES 5,(Ix+d),L
3882 instr fetch_nop, op_RES5, store_nop ;AE ;RES 5,(Ix+d)
3883 instr fetch_nop, op_RES5, store_A ;AF ;RES 5,(Ix+d),A
3884 instr fetch_nop, op_RES6, store_B ;B0 ;RES 6,(Ix+d),B
3885 instr fetch_nop, op_RES6, store_C ;B1 ;RES 6,(Ix+d),C
3886 instr fetch_nop, op_RES6, store_D ;B2 ;RES 6,(Ix+d),D
3887 instr fetch_nop, op_RES6, store_E ;B3 ;RES 6,(Ix+d),E
3888 instr fetch_nop, op_RES6, store_H ;B4 ;RES 6,(Ix+d),H
3889 instr fetch_nop, op_RES6, store_L ;B5 ;RES 6,(Ix+d),L
3890 instr fetch_nop, op_RES6, store_nop ;B6 ;RES 6,(Ix+d)
3891 instr fetch_nop, op_RES6, store_A ;B7 ;RES 6,(Ix+d),A
3892 instr fetch_nop, op_RES7, store_B ;B8 ;RES 7,(Ix+d),B
3893 instr fetch_nop, op_RES7, store_C ;B9 ;RES 7,(Ix+d),C
3894 instr fetch_nop, op_RES7, store_D ;BA ;RES 7,(Ix+d),D
3895 instr fetch_nop, op_RES7, store_E ;BB ;RES 7,(Ix+d),E
3896 instr fetch_nop, op_RES7, store_H ;BC ;RES 7,(Ix+d),H
3897 instr fetch_nop, op_RES7, store_L ;BD ;RES 7,(Ix+d),L
3898 instr fetch_nop, op_RES7, store_nop ;BE ;RES 7,(Ix+d)
3899 instr fetch_nop, op_RES7, store_A ;BF ;RES 7,(Ix+d),A
3900 instr fetch_nop, op_SET0, store_B ;C0 ;SET 0,(Ix+d),B
3901 instr fetch_nop, op_SET0, store_C ;C1 ;SET 0,(Ix+d),C
3902 instr fetch_nop, op_SET0, store_D ;C2 ;SET 0,(Ix+d),D
3903 instr fetch_nop, op_SET0, store_E ;C3 ;SET 0,(Ix+d),E
3904 instr fetch_nop, op_SET0, store_H ;C4 ;SET 0,(Ix+d),H
3905 instr fetch_nop, op_SET0, store_L ;C5 ;SET 0,(Ix+d),L
3906 instr fetch_nop, op_SET0, store_nop ;C6 ;SET 0,(Ix+d)
3907 instr fetch_nop, op_SET0, store_A ;C7 ;SET 0,(Ix+d),A
3908 instr fetch_nop, op_SET1, store_B ;C8 ;SET 1,(Ix+d),B
3909 instr fetch_nop, op_SET1, store_C ;C9 ;SET 1,(Ix+d),C
3910 instr fetch_nop, op_SET1, store_D ;CA ;SET 1,(Ix+d),D
3911 instr fetch_nop, op_SET1, store_E ;CB ;SET 1,(Ix+d),E
3912 instr fetch_nop, op_SET1, store_H ;CC ;SET 1,(Ix+d),H
3913 instr fetch_nop, op_SET1, store_L ;CD ;SET 1,(Ix+d),L
3914 instr fetch_nop, op_SET1, store_nop ;CE ;SET 1,(Ix+d)
3915 instr fetch_nop, op_SET1, store_A ;CF ;SET 1,(Ix+d),A
3916 instr fetch_nop, op_SET2, store_B ;D0 ;SET 2,(Ix+d),B
3917 instr fetch_nop, op_SET2, store_C ;D1 ;SET 2,(Ix+d),C
3918 instr fetch_nop, op_SET2, store_D ;D2 ;SET 2,(Ix+d),D
3919 instr fetch_nop, op_SET2, store_E ;D3 ;SET 2,(Ix+d),E
3920 instr fetch_nop, op_SET2, store_H ;D4 ;SET 2,(Ix+d),H
3921 instr fetch_nop, op_SET2, store_L ;D5 ;SET 2,(Ix+d),L
3922 instr fetch_nop, op_SET2, store_nop ;D6 ;SET 2,(Ix+d)
3923 instr fetch_nop, op_SET2, store_A ;D7 ;SET 2,(Ix+d),A
3924 instr fetch_nop, op_SET3, store_B ;D8 ;SET 3,(Ix+d),B
3925 instr fetch_nop, op_SET3, store_C ;D9 ;SET 3,(Ix+d),C
3926 instr fetch_nop, op_SET3, store_D ;DA ;SET 3,(Ix+d),D
3927 instr fetch_nop, op_SET3, store_E ;DB ;SET 3,(Ix+d),E
3928 instr fetch_nop, op_SET3, store_H ;DC ;SET 3,(Ix+d),H
3929 instr fetch_nop, op_SET3, store_L ;DD ;SET 3,(Ix+d),L
3930 instr fetch_nop, op_SET3, store_nop ;DE ;SET 3,(Ix+d)
3931 instr fetch_nop, op_SET3, store_A ;DF ;SET 3,(Ix+d),A
3932 instr fetch_nop, op_SET4, store_B ;E0 ;SET 4,(Ix+d),B
3933 instr fetch_nop, op_SET4, store_C ;E1 ;SET 4,(Ix+d),C
3934 instr fetch_nop, op_SET4, store_D ;E2 ;SET 4,(Ix+d),D
3935 instr fetch_nop, op_SET4, store_E ;E3 ;SET 4,(Ix+d),E
3936 instr fetch_nop, op_SET4, store_H ;E4 ;SET 4,(Ix+d),H
3937 instr fetch_nop, op_SET4, store_L ;E5 ;SET 4,(Ix+d),L
3938 instr fetch_nop, op_SET4, store_nop ;E6 ;SET 4,(Ix+d)
3939 instr fetch_nop, op_SET4, store_A ;E7 ;SET 4,(Ix+d),A
3940 instr fetch_nop, op_SET5, store_B ;E8 ;SET 5,(Ix+d),B
3941 instr fetch_nop, op_SET5, store_C ;E9 ;SET 5,(Ix+d),C
3942 instr fetch_nop, op_SET5, store_D ;EA ;SET 5,(Ix+d),D
3943 instr fetch_nop, op_SET5, store_E ;EB ;SET 5,(Ix+d),E
3944 instr fetch_nop, op_SET5, store_H ;EC ;SET 5,(Ix+d),H
3945 instr fetch_nop, op_SET5, store_L ;ED ;SET 5,(Ix+d),L
3946 instr fetch_nop, op_SET5, store_nop ;EE ;SET 5,(Ix+d)
3947 instr fetch_nop, op_SET5, store_A ;EF ;SET 5,(Ix+d),A
3948 instr fetch_nop, op_SET6, store_B ;F0 ;SET 6,(Ix+d),B
3949 instr fetch_nop, op_SET6, store_C ;F1 ;SET 6,(Ix+d),C
3950 instr fetch_nop, op_SET6, store_D ;F2 ;SET 6,(Ix+d),D
3951 instr fetch_nop, op_SET6, store_E ;F3 ;SET 6,(Ix+d),E
3952 instr fetch_nop, op_SET6, store_H ;F4 ;SET 6,(Ix+d),H
3953 instr fetch_nop, op_SET6, store_L ;F5 ;SET 6,(Ix+d),L
3954 instr fetch_nop, op_SET6, store_nop ;F6 ;SET 6,(Ix+d)
3955 instr fetch_nop, op_SET6, store_A ;F7 ;SET 6,(Ix+d),A
3956 instr fetch_nop, op_SET7, store_B ;F8 ;SET 7,(Ix+d),B
3957 instr fetch_nop, op_SET7, store_C ;F9 ;SET 7,(Ix+d),C
3958 instr fetch_nop, op_SET7, store_D ;FA ;SET 7,(Ix+d),D
3959 instr fetch_nop, op_SET7, store_E ;FB ;SET 7,(Ix+d),E
3960 instr fetch_nop, op_SET7, store_H ;FC ;SET 7,(Ix+d),H
3961 instr fetch_nop, op_SET7, store_L ;FD ;SET 7,(Ix+d),L
3962 instr fetch_nop, op_SET7, store_nop ;FE ;SET 7,(Ix+d)
3963 instr fetch_nop, op_SET7, store_A ;FF ;SET 7,(Ix+d),A
3968 ;----------------------------------------------------------------
3969 ; Lookup table, stolen from z80ex, Z80 emulation library.
3970 ; http://z80ex.sourceforge.net/
3972 ; The S, Z, 5 and 3 bits and the parity of the lookup value
3974 ; .org (PC+255) & 0xff00
3976 .org sz53p_table_pos
3977 ; .org FLASHEND & 0xff00
3978 ; .org 0x1fff & 0xff00
3981 .db 0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00
3982 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
3983 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
3984 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
3985 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
3986 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
3987 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
3988 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
3989 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
3990 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
3991 .db 0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00
3992 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
3993 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
3994 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
3995 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
3996 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
3997 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
3998 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
3999 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4000 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4001 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4002 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4003 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4004 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4005 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4006 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4007 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4008 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4009 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4010 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4011 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4012 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4014 ; vim:set ts=8 noet nowrap