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 0x1900
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 action
204 .set op_ = (do_@1 != do_op_nop) ; must call or jump to op action
205 .set store_ = (do_@2 != do_store_nop) ; must jump to store action
206 .set cnt_ = fetch_ + op_ + store_ ; number of actions for this instruction
214 .set action_1_ = do_@0
216 .set action_1_ = do_@1
218 .set action_1_ = do_@2
222 .set action_1_ = do_@0
224 .set action_2_ = do_@1
226 .set action_2_ = do_@2
229 .set action_1_ = do_@1
230 .set action_2_ = do_@2
233 .set action_1_ = do_@0
234 .set action_2_ = do_@1
235 .set action_3_ = do_@2
241 .org opcjmp_table_pos_
242 .set opcjmp_table_pos_ = opcjmp_table_pos_ + 1
245 .if cnt_ == 0 ; nothing to do (nop)
246 ret ; go back to main
247 .elif cnt_ == 1 ; jump direct to action
248 .if (PC - action_1_) > 2047
249 .set longdist_ = 1 ; target action out of reach for rel jump
251 rjmp action_1_ ; do op and return to main
257 .if (cnt_ > 1) || longdist_
258 ; two or tree actions
259 .if defined (l_@0_@1_@2)
260 .if (PC - l_@0_@1_@2) <= 2047
261 rjmp l_@0_@1_@2 ; generate a jump to action table
268 .if todo_table_pos_ == 0
269 .set todo_table_pos_ = opcjmp_table_pos_ - 2048
270 .if todo_table_pos_ < pc_save_
271 .set todo_table_pos_ = pc_save_
275 .if todo_table_pos_ < opc_tablow_
276 .if todo_table_pos_ + 2*cnt_ > opc_tablow_
277 .set todo_table_pos_ = opc_tabend_
281 .if defined (l_@0_@1_@2)
285 .set todo_table_pos_ = PC
292 .equ l_@0_@1_@2 = todo_table_pos_ ; make a label
293 rjmp l_@0_@1_@2 ; generate a jump to action table
297 .if fetch_ ; must fetch
302 lcall do_@0 ; fetch and come back here
309 ljmp do_@0 ; do op and return to main
313 .if op_ ; must exec op
318 lcall do_@1 ; fetch and come back here
325 ljmp do_@1 ; do op and return to main
329 .if store_ ; must store
334 ljmp do_@2 ; store is allways last
338 .set todo_table_pos_ = PC
343 .if todo_table_pos_ == 0
355 ; ------------ Fetch phase stuff -----------------
358 .equ do_fetch_nop = do_x_nop
471 mem_read_ds opl, z_pc
476 mem_read_ds opl, z_pc
478 mem_read_ds oph, z_pc
490 ; ------------ Store phase stuff -----------------
493 .equ do_store_nop = do_x_nop
581 do_store_pcrel: ;add displacement to PC
605 printstring "Stack pop "
608 printstring ", SP is now "
625 printstring "Stack push "
628 printstring ", SP is now "
641 ; ------------ Operation phase stuff -----------------
643 ;----------------------------------------------------------------
647 ;| ZZZZZZZ 88888 000 |
653 ;| ZZZZZZZ 88888 000 |
655 ;| Z80 MICROPROCESSOR Instruction Set Summary |
657 ;----------------------------------------------------------------
658 ;----------------------------------------------------------------
659 ;|Mnemonic |SZHPNC|Description |Notes |
660 ;|----------+------+---------------------+----------------------|
661 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
662 ;|ADC HL,ss |**?V0*|Add with Carry |HL=HL+ss+CY |
663 ;|ADD A,s |***V0*|Add |A=A+s |
664 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
665 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
666 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
667 ;|AND s |**1P00|Logical AND |A=A&s |
668 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
669 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
670 ;|CALL nn |------|Unconditional Call |-[SP]=PC,PC=nn |
671 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY |
672 ;|CP s |***V1*|Compare |A-s |
673 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
674 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
675 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
676 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
677 ;|CPL |--1-1-|Complement |A=~A |
678 ;|DAA |***P-*|Decimal Adjust Acc. |A=BCD format |
679 ;|DEC s |***V1-|Decrement |s=s-1 |
680 ;|DEC xx |------|Decrement |xx=xx-1 |
681 ;|DEC ss |------|Decrement |ss=ss-1 |
682 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
683 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
684 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
685 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
686 ;|EX [SP],xx|------|Exchange |[SP]<->xx |
687 ;|EX AF,AF' |------|Exchange |AF<->AF' |
688 ;|EX DE,HL |------|Exchange |DE<->HL |
689 ;|EXX |------|Exchange |qq<->qq' (except AF)|
690 ;|HALT |------|Halt | |
691 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
692 ;|IN A,[n] |------|Input |A=[n] |
693 ;|IN r,[C] |***P0-|Input |r=[C] |
694 ;|INC r |***V0-|Increment |r=r+1 |
695 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
696 ;|INC xx |------|Increment |xx=xx+1 |
697 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
698 ;|INC ss |------|Increment |ss=ss+1 |
699 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
700 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
701 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
702 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
703 ;|JP [HL] |------|Unconditional Jump |PC=[HL] |
704 ;|JP [xx] |------|Unconditional Jump |PC=[xx] |
705 ;|JP nn |------|Unconditional Jump |PC=nn |
706 ;|JP cc,nn |------|Conditional Jump |If cc JP |
707 ;|JR e |------|Unconditional Jump |PC=PC+e |
708 ;|JR cc,e |------|Conditional Jump |If cc JR(cc=C,NC,NZ,Z)|
709 ;|LD dst,src|------|Load |dst=src |
710 ;|LD A,i |**0*0-|Load |A=i (i=I,R)|
711 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
712 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
713 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
714 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
715 ;|NEG |***V1*|Negate |A=-A |
716 ;|NOP |------|No Operation | |
717 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
718 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
719 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
720 ;|OUT [C],r |------|Output |[C]=r |
721 ;|OUT [n],A |------|Output |[n]=A |
722 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
723 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
724 ;|POP xx |------|Pop |xx=[SP]+ |
725 ;|POP qq |------|Pop |qq=[SP]+ |
726 ;|PUSH xx |------|Push |-[SP]=xx |
727 ;|PUSH qq |------|Push |-[SP]=qq |
728 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
729 ;|RET |------|Return |PC=[SP]+ |
730 ;|RET cc |------|Conditional Return |If cc RET |
731 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
732 ;|RETN |------|Return from NMI |PC=[SP]+ |
733 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
734 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
735 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
736 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
737 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
738 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
739 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
740 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
741 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
742 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
743 ;|RST p |------|Restart | (p=0H,8H,10H,...,38H)|
744 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
745 ;|SBC HL,ss |***V1*|Subtract with Carry |HL=HL-ss-CY |
746 ;|SCF |--0-01|Set Carry Flag |CY=1 |
747 ;|SET b,m |------|Set bit |m=mv{2^b} |
748 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
749 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
750 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
751 ;|SUB s |***V1*|Subtract |A=A-s |
752 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
753 ;|----------+------+--------------------------------------------|
754 ;| F |-*01? |Flag unaffected/affected/reset/set/unknown |
755 ;| S |S |Sign flag (Bit 7) |
756 ;| Z | Z |Zero flag (Bit 6) |
757 ;| HC | H |Half Carry flag (Bit 4) |
758 ;| P/V | P |Parity/Overflow flag (Bit 2, V=overflow) |
759 ;| N | N |Add/Subtract flag (Bit 1) |
760 ;| CY | C|Carry flag (Bit 0) |
761 ;|-----------------+--------------------------------------------|
762 ;| n |Immediate addressing |
763 ;| nn |Immediate extended addressing |
764 ;| e |Relative addressing (PC=PC+2+offset) |
765 ;| [nn] |Extended addressing |
766 ;| [xx+d] |Indexed addressing |
767 ;| r |Register addressing |
768 ;| [rr] |Register indirect addressing |
769 ;| |Implied addressing |
770 ;| b |Bit addressing |
771 ;| p |Modified page zero addressing (see RST) |
772 ;|-----------------+--------------------------------------------|
773 ;|DEFB n(,...) |Define Byte(s) |
774 ;|DEFB 'str'(,...) |Define Byte ASCII string(s) |
775 ;|DEFS nn |Define Storage Block |
776 ;|DEFW nn(,...) |Define Word(s) |
777 ;|-----------------+--------------------------------------------|
778 ;| A B C D E |Registers (8-bit) |
779 ;| AF BC DE HL |Register pairs (16-bit) |
780 ;| F |Flag register (8-bit) |
781 ;| I |Interrupt page address register (8-bit) |
782 ;| IX IY |Index registers (16-bit) |
783 ;| PC |Program Counter register (16-bit) |
784 ;| R |Memory Refresh register |
785 ;| SP |Stack Pointer register (16-bit) |
786 ;|-----------------+--------------------------------------------|
787 ;| b |One bit (0 to 7) |
788 ;| cc |Condition (C,M,NC,NZ,P,PE,PO,Z) |
789 ;| d |One-byte expression (-128 to +127) |
790 ;| dst |Destination s, ss, [BC], [DE], [HL], [nn] |
791 ;| e |One-byte expression (-126 to +129) |
792 ;| m |Any register r, [HL] or [xx+d] |
793 ;| n |One-byte expression (0 to 255) |
794 ;| nn |Two-byte expression (0 to 65535) |
795 ;| pp |Register pair BC, DE, IX or SP |
796 ;| qq |Register pair AF, BC, DE or HL |
797 ;| qq' |Alternative register pair AF, BC, DE or HL |
798 ;| r |Register A, B, C, D, E, H or L |
799 ;| rr |Register pair BC, DE, IY or SP |
800 ;| s |Any register r, value n, [HL] or [xx+d] |
801 ;| src |Source s, ss, [BC], [DE], [HL], nn, [nn] |
802 ;| ss |Register pair BC, DE, HL or SP |
803 ;| xx |Index register IX or IY |
804 ;|-----------------+--------------------------------------------|
805 ;| + - * / ^ |Add/subtract/multiply/divide/exponent |
806 ;| & ~ v x |Logical AND/NOT/inclusive OR/exclusive OR |
807 ;| <- -> |Rotate left/right |
808 ;| [ ] |Indirect addressing |
809 ;| [ ]+ -[ ] |Indirect addressing auto-increment/decrement|
810 ;| { } |Combination of operands |
811 ;| # |Also BC=BC-1,DE=DE-1 |
812 ;| ## |Only lower 4 bits of accumulator A used |
813 ;----------------------------------------------------------------
815 ;How the flags are supposed to work:
816 ;7 ZFL_S - Sign flag (=MSBit of result)
817 ;6 ZFL_Z - Zero flag. Is 1 when the result is 0
818 ;4 ZFL_H - Half-carry (carry from bit 3 to 4)
819 ;2 ZFL_P - Parity/2-complement Overflow
820 ;1 ZFL_N - Subtract - set if last op was a subtract
823 ;I sure hope I got the mapping between flags and instructions correct...
840 ; TODO: check Z80 flag settings
842 ;------------------------------------------------;
843 ; Load table value from flash indexed by source reg.
845 ; ldpmx dstreg,tablebase,indexreg
847 ; (3 words, 5 cycles)
850 ldi zh,high(@1*2) ; table must be page aligned
855 .macro do_z80_flags_V
857 bmov z_flags, ZFL_P, temp, AVR_V
861 .macro do_z80_flags_H
863 bmov z_flags, ZFL_H, temp, AVR_H
867 .macro do_z80_flags_set_N
869 ori z_flags, (1<<ZFL_N) ; Negation auf 1
873 .macro do_z80_flags_set_HN
875 ori z_flags,(1<<ZFL_N)|(1<<ZFL_H)
879 .macro do_z80_flags_clear_N
881 andi z_flags,~(1<<ZFL_N)
885 .macro do_z80_flags_clear_HN
887 andi z_flags,~((1<<ZFL_H)|(1<<ZFL_N))
892 .macro do_z80_flags_copy_HC
894 bmov z_flags, ZFL_H, z_flags, ZFL_C
898 .macro do_z80_flags_op_rotate
899 ; must not change avr carry flag!
901 andi z_flags, ~( (1<<ZFL_H) | (1<<ZFL_N) | (1<<ZFL_C) )
903 andi z_flags, ~( (1<<ZFL_C) )
907 .macro do_z80_flags_op_and
909 ori z_flags,(1<<ZFL_H)
913 .macro do_z80_flags_op_or
920 ;----------------------------------------------------------------
922 .equ do_op_nop = do_x_nop
927 printstring "Invalid opcode! "
933 ;----------------------------------------------------------------
934 ;|Mnemonic |SZHPNC|Description |Notes |
935 ;----------------------------------------------------------------
936 ;|HALT |------|Halt | |
943 sbr intstat,(1<<i_halt)
945 printstring "CPU halted! "
948 ;----------------------------------------------------------------
949 ;|Mnemonic |SZHPNC|Description |Notes |
950 ;----------------------------------------------------------------
951 ;|OUT [n],A |------|Output |[n]=A |
954 ;Interface with peripherials goes here :)
955 do_op_outa: ; out (opl),a
958 printstring "Port write: "
971 ;----------------------------------------------------------------
972 ;|Mnemonic |SZHPNC|Description |Notes |
973 ;----------------------------------------------------------------
974 ;|IN A,[n] |------|Input |A=[n] |
977 do_op_ina: ; in a,(opl)
980 cp opl,_0 ; don't debug port 0 (con stat)
983 printstring "Port read: ("
1004 ;----------------------------------------------------------------
1005 ;|Mnemonic |SZHPNC|Description |Notes |
1006 ;----------------------------------------------------------------
1007 ;|INC r |***V0-|Increment |r=r+1 |
1008 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
1009 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
1010 ;|----------|SZHP C|---------- 8080 ----------------------------|
1011 ;|INC r |**-P0-|Increment |r=r+1 |
1012 ;|INC [HL] |**-P0-|Increment |[HL]=[HL]+1 |
1017 andi z_flags,(1<<ZFL_C) ; preserve C-, Clear N-flag
1021 bmov z_flags,ZFL_S, temp,AVR_N
1022 bmov z_flags,ZFL_Z, temp,AVR_Z
1023 bmov z_flags,ZFL_H, temp,AVR_H
1024 bmov z_flags,ZFL_P, temp,AVR_V
1026 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1028 ldpmx temp,sz53p_tab,opl ;S,Z,P flag
1035 andi z_flags,(1<<ZFL_C) ; preserve C-, Clear N-flag
1039 bmov z_flags,ZFL_S, temp,AVR_N
1040 bmov z_flags,ZFL_Z, temp,AVR_Z
1041 bmov z_flags,ZFL_H, temp,AVR_H
1042 bmov z_flags,ZFL_P, temp,AVR_V
1044 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1046 ldpmx temp,sz53p_tab,z_a ; S,Z,P flag
1051 ;----------------------------------------------------------------
1052 ;|Mnemonic |SZHPNC|Description |Notes |
1053 ;----------------------------------------------------------------
1054 ;|DEC r |***V1-|Decrement |s=s-1 |
1055 ;|DEC [HL] |***V0-|Increment |[HL]=[HL]-1 |
1056 ;|DEC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]-1 |
1057 ;|----------|SZHP C|---------- 8080 ----------------------------|
1058 ;|DEC r |**-P -|Increment |r=r-1 |
1059 ;|DEC [HL] |**-P -|Increment |[HL]=[HL]-1 |
1066 bmov z_flags,ZFL_S, temp,AVR_N
1067 bmov z_flags,ZFL_Z, temp,AVR_Z
1068 bmov z_flags,ZFL_H, temp,AVR_H
1069 bmov z_flags,ZFL_P, temp,AVR_V
1070 ori z_flags,(1<<ZFL_N) ; Set N-flag
1072 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1073 ldpmx temp,sz53p_tab,opl ; S,Z,P flag
1084 bmov z_flags,ZFL_S, temp,AVR_N
1085 bmov z_flags,ZFL_Z, temp,AVR_Z
1086 bmov z_flags,ZFL_H, temp,AVR_H
1087 bmov z_flags,ZFL_P, temp,AVR_V
1088 ori z_flags,(1<<ZFL_N) ; Set N-flag
1091 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1092 ldpmx temp,sz53p_tab,z_a ; S,Z,P flag
1098 ;----------------------------------------------------------------
1099 ;|Mnemonic |SZHPNC|Description |Notes |
1100 ;----------------------------------------------------------------
1101 ;|INC xx |------|Increment |xx=xx+1 |
1102 ;|INC ss |------|Increment |ss=ss+1 |
1110 ;----------------------------------------------------------------
1111 ;|Mnemonic |SZHPNC|Description |Notes |
1112 ;----------------------------------------------------------------
1113 ;|DEC xx |------|Decrement |xx=xx-1 |
1114 ;|DEC ss |------|Decrement |ss=ss-1 |
1122 ;----------------------------------------------------------------
1123 ;|Mnemonic |SZHPNC|Description |Notes |
1124 ;----------------------------------------------------------------
1125 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
1126 ;|----------|SZHP C|---------- 8080 ----------------------------|
1127 ;|RLCA |---- *|Rotate Left Circular |A=A<- |
1131 ;Rotate Left Cyclical. All bits move 1 to the
1132 ;left, the msb becomes c and lsb.
1133 do_z80_flags_op_rotate
1138 ori z_flags, (1<<ZFL_C)
1142 ;----------------------------------------------------------------
1143 ;|Mnemonic |SZHPNC|Description |Notes |
1144 ;----------------------------------------------------------------
1145 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
1146 ;|----------|SZHP C|---------- 8080 ----------------------------|
1147 ;|RRCA |---- *|Rotate Right Circular|A=->A |
1151 ;Rotate Right Cyclical. All bits move 1 to the
1152 ;right, the lsb becomes c and msb.
1153 do_z80_flags_op_rotate
1158 ori z_flags, (1<<ZFL_C)
1162 ;----------------------------------------------------------------
1163 ;|Mnemonic |SZHPNC|Description |Notes |
1164 ;----------------------------------------------------------------
1165 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
1166 ;|----------|SZHP C|---------- 8080 ----------------------------|
1167 ;|RRA |---- *|Rotate Right Acc. |A=->{CY,A} |
1171 ;Rotate Right. All bits move 1 to the right, the lsb
1172 ;becomes c, c becomes msb.
1173 clc ; get z80 carry to avr carry
1176 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1177 bmov z_flags,ZFL_C, z_a,0 ; Bit 0 --> CY
1181 ;----------------------------------------------------------------
1182 ;|Mnemonic |SZHPNC|Description |Notes |
1183 ;----------------------------------------------------------------
1184 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
1185 ;|----------|SZHP C|---------- 8080 ----------------------------|
1186 ;|RLA |---- *|Rotate Left Acc. |A={CY,A}<- |
1190 ;Rotate Left. All bits move 1 to the left, the msb
1191 ;becomes c, c becomes lsb.
1195 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1196 bmov z_flags,ZFL_C, z_a,7 ; Bit 7 --> CY
1200 ;----------------------------------------------------------------
1201 ;|Mnemonic |SZHPNC|Description |Notes |
1202 ;----------------------------------------------------------------
1203 ;|ADD A,s |***V0*|Add |A=A+s |
1204 ;|----------|SZHP C|---------- 8080 ----------------------------|
1205 ;|ADD A,s |***P *|Add |A=A+s |
1211 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P flag
1212 bmov z_flags,ZFL_C, temp,AVR_C
1213 bmov z_flags,ZFL_H, temp,AVR_H
1217 ;----------------------------------------------------------------
1218 ;|Mnemonic |SZHPNC|Description |Notes |
1219 ;----------------------------------------------------------------
1220 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
1221 ;|----------|SZHP C|---------- 8080 ----------------------------|
1222 ;|ADC A,s |***P *|Add with Carry |A=A+s+CY |
1231 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1232 bmov z_flags,ZFL_C, temp,AVR_C
1233 bmov z_flags,ZFL_H, temp,AVR_H
1237 ;----------------------------------------------------------------
1238 ;|Mnemonic |SZHPNC|Description |Notes |
1239 ;----------------------------------------------------------------
1240 ;|SUB s |***V1*|Subtract |A=A-s |
1241 ;|----------|SZHP C|---------- 8080 ----------------------------|
1242 ;|SUB s |***P *|Subtract |A=A-s |
1248 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1249 bmov z_flags,ZFL_C, temp,AVR_C
1250 bmov z_flags,ZFL_H, temp,AVR_H
1255 ;----------------------------------------------------------------
1256 ;|Mnemonic |SZHPNC|Description |Notes |
1257 ;----------------------------------------------------------------
1258 ;|CP s |***V1*|Compare |A-s |
1259 ;|----------|SZHP C|---------- 8080 ----------------------------|
1260 ;|CP s |***P *|Compare |A-s |
1267 ldpmx z_flags,sz53p_tab,temp2 ;S,Z,P
1268 bmov z_flags,ZFL_C, temp,AVR_C
1269 bmov z_flags,ZFL_H, temp,AVR_H
1274 ;----------------------------------------------------------------
1275 ;|Mnemonic |SZHPNC|Description |Notes |
1276 ;----------------------------------------------------------------
1277 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
1278 ;|----------|SZHP C|---------- 8080 ----------------------------|
1279 ;|SBC A,s |***P *|Subtract with Carry |A=A-s-CY |
1288 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1289 bmov z_flags,ZFL_C, temp,AVR_C
1290 bmov z_flags,ZFL_H, temp,AVR_H
1295 ;----------------------------------------------------------------
1296 ;|Mnemonic |SZHPNC|Description |Notes |
1297 ;----------------------------------------------------------------
1298 ;|AND s |**1P00|Logical AND |A=A&s |
1299 ;|----------|SZHP C|---------- 8080 ----------------------------|
1300 ;|AND s |**-P 0|Logical AND |A=A&s |
1305 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P,N,C
1310 ;----------------------------------------------------------------
1311 ;|Mnemonic |SZHPNC|Description |Notes |
1312 ;----------------------------------------------------------------
1313 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
1314 ;|----------|SZHP C|---------- 8080 ----------------------------|
1315 ;|OR s |**-P00|Logical inclusive OR |A=Avs |
1320 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1324 ;----------------------------------------------------------------
1325 ;|Mnemonic |SZHPNC|Description |Notes |
1326 ;----------------------------------------------------------------
1327 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
1328 ;|----------|SZHP C|---------- 8080 ----------------------------|
1329 ;|XOR s |**-P 0|Logical Exclusive OR |A=Axs |
1334 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1338 ;----------------------------------------------------------------
1339 ;|Mnemonic |SZHPNC|Description |Notes |
1340 ;----------------------------------------------------------------
1341 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
1342 ;|----------|SZHP C|---------- 8080 ----------------------------|
1343 ;|ADD HL,ss |---- *|Add |HL=HL+ss |
1354 bmov z_flags,ZFL_C, temp,AVR_C
1356 do_z80_flags_clear_N
1359 ;----------------------------------------------------------------
1360 ;|Mnemonic |SZHPNC|Description |Notes |
1361 ;----------------------------------------------------------------
1362 ;|LD dst,src|------|Load |dst=src |
1365 do_op_sthl: ;store hl to mem loc in opl:h
1374 ;----------------------------------------------------------------
1375 ;|Mnemonic |SZHPNC|Description |Notes |
1376 ;----------------------------------------------------------------
1377 ;|LD dst,src|------|Load |dst=src |
1387 ;----------------------------------------------------------------
1388 ;|Mnemonic |SZHPNC|Description |Notes |
1389 ;----------------------------------------------------------------
1390 ;|LD dst,src|------|Load |dst=src |
1397 ;----------------------------------------------------------------
1398 ;|Mnemonic |SZHPNC|Description |Notes |
1399 ;----------------------------------------------------------------
1400 ;|DAA |***P-*|Decimal Adjust Acc. | |
1401 ;|----------|SZHP C|---------- 8080 ----------------------------|
1404 ; Description (http://www.z80.info/z80syntx.htm#DAA):
1405 ; This instruction conditionally adjusts the accumulator for BCD addition
1406 ; and subtraction operations. For addition (ADD, ADC, INC) or subtraction
1407 ; (SUB, SBC, DEC, NEC), the following table indicates the operation performed:
1409 ; -------------------------------------------------------------------
1410 ; | |C Flag |HEX value in|H Flag |HEX val in | Number |C flag |
1411 ; | Oper |Before |upper digit |Before |lower digit| added |After |
1412 ; | |DAA |(bit 7-4) |DAA |(bit 3-0) | to A |DAA |
1413 ; |-------+-------+------------+-------+-----------+--------+-------|
1414 ; | | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1415 ; | ADD | 0 | 0-8 | 0 | A-F | 06 | 0 |
1416 ; | | 0 | 0-9 | 1 | 0-3 | 06 | 0 |
1417 ; | ADC | 0 | A-F | 0 | 0-9 | 60 | 1 |
1418 ; | | 0 | 9-F | 0 | A-F | 66 | 1 |
1419 ; | INC | 0 | A-F | 1 | 0-3 | 66 | 1 |
1420 ; | | 1 | 0-2 | 0 | 0-9 | 60 | 1 |
1421 ; | | 1 | 0-2 | 0 | A-F | 66 | 1 |
1422 ; | | 1 | 0-3 | 1 | 0-3 | 66 | 1 |
1423 ; |-------+-------+------------+-------+-----------+--------+-------|
1424 ; | SUB | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1425 ; | SBC | 0 | 0-8 | 1 | 6-F | FA | 0 |
1426 ; | DEC | 1 | 7-F | 0 | 0-9 | A0 | 1 |
1427 ; | NEG | 1 | 6-F | 1 | 6-F | 9A | 1 |
1428 ; -------------------------------------------------------------------
1430 ; The H flag is affected as follows:
1432 ; ---------------------
1433 ; | N | H | low |H' |
1435 ; |---+---+-------+---|
1436 ; | 0 | * | 0-9 | 0 |
1437 ; | 0 | * | a-f | 1 |
1439 ; | 1 | 1 | 6-f | 0 |
1440 ; | 1 | 1 | 0-5 | 1 |
1441 ; ---------------------
1445 ; P/V: Set if Acc. is even parity after operation, reset otherwise.
1446 ; Z: Set if Acc. is Zero after operation, reset otherwise.
1447 ; S: Set if most significant bit of Acc. is 1 after operation, reset otherwise.
1454 sbrc z_flags,ZFL_N ;if add-op
1455 rjmp op_da_sub ;then
1460 ldi temp2,0 ; new C, H and N flag
1461 sbrc z_flags,ZFL_H ; |
1462 rjmp op_da_a01 ; if (H flag ...
1465 cpi temp,0x0a ; or (lower nibble >= 0x0A))
1468 ldi oph,0x06 ; add 6 to lower nibble
1471 ori temp2,(1<<ZFL_H) ; set new H flag
1474 ori temp2,(1<<ZFL_C) ; set new H flag
1476 sbrc z_flags,ZFL_C ; |
1477 rjmp op_da_a12 ; if (C flag ...
1478 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1481 ldi oph,0x60 ; add 6 to lower nibble
1483 ori temp2,(1<<ZFL_C) ; set new C flag
1485 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1486 or z_flags,temp2 ; merge new C and H flag
1491 op_da_sub: ;Else (sub-op)
1492 ldi temp2,(1<<ZFL_N) ; new C, H and N flag
1493 sbrc z_flags,ZFL_H ; |
1494 rjmp op_da_s01 ; if (H flag ...
1497 cpi temp,0x0a ; or (lower nibble >= 0x0A))
1500 ldi oph,0x06 ; add 6 to lower nibble
1503 ori temp2,(1<<ZFL_H) ; set new H flag
1505 ori temp2,(1<<ZFL_C) ; set new C flag
1507 sbrc z_flags,ZFL_C ; |
1508 rjmp op_da_s12 ; if (C flag ...
1509 cpi opl,0x90 ; |... or upper nibble >= 0xA0)
1512 ldi oph,0x60 ; add 6 to lower nibble
1514 ori temp2,(1<<ZFL_C) ; set new C flag
1516 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1517 or z_flags,temp2 ; merge new C and H flag
1525 ldi oph,0 ;oph: what to add
1528 sbrc z_flags,ZFL_N ;if add-op
1529 rjmp op_da_sub ;then
1533 ldi temp2,0 ; new C, H and N flag
1536 cpi temp,0x0a ; if (lower nibble >= 0x0A)
1538 ori oph,0x06 ; add 6
1539 ori temp2,(1<<ZFL_H) ; set new H flag
1541 sbrc z_flags,ZFL_C ; |
1542 rjmp op_da_a02 ; if (C flag ...
1543 cpi opl,0x90 ; |... or upper nibble >= 0x90)
1546 ori oph,0x60 ; add 0x60
1547 ori temp2,(1<<ZFL_C) ; set new C flag
1550 op_da_a10: ; else (lower nibble is 0x09 or lower)
1551 sbrc z_flags,ZFL_C ; |
1552 rjmp op_da_a12 ; if (C flag ...
1553 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1556 ori oph,0x60 ; add 0x60
1557 ori temp2,(1<<ZFL_C) ; set new C flag
1559 sbrs z_flags,ZFL_H ; if (H flag)
1561 ori oph,0x06 ; add 0x06
1564 cpi temp,0x06 ; if (lower nibble < 0x6)
1566 ; ori temp2,(1<<ZFL_H) ; set new H flag
1571 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1572 or z_flags,temp2 ; merge new C and H flag
1577 op_da_sub: ;Else (sub-op)
1578 ldi temp2,(1<<ZFL_N) ; new C, H and N flag
1581 cpi temp,0x0a ; if (lower nibble >= 0x0A)
1583 ori oph,0x06 ; sub 6
1585 sbrc z_flags,ZFL_C ; |
1586 rjmp op_da_s02 ; if (C flag ...
1587 cpi opl,0x90 ; |... or upper nibble >= 0x90)
1590 ori oph,0x60 ; sub 0x60
1591 ori temp2,(1<<ZFL_C) ; set new C flag
1594 op_da_s10: ; else (lower nibble is 0x09 or lower)
1595 sbrc z_flags,ZFL_C ; |
1596 rjmp op_da_s12 ; if (C flag ...
1597 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1600 ori oph,0x60 ; sub 0x60
1601 ori temp2,(1<<ZFL_C) ; set new C flag
1603 sbrs z_flags,ZFL_H ; if (H flag)
1605 ori oph,0x06 ; sub 0x06
1608 cpi temp,0x06 ; if (lower nibble < 0x06)
1610 ori temp2,(1<<ZFL_H) ; set new H flag
1615 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1616 or z_flags,temp2 ; merge new C and H flag
1620 #endif /* alternatives */
1623 ;----------------------------------------------------------------
1624 ;|Mnemonic |SZHPNC|Description |Notes |
1625 ;----------------------------------------------------------------
1626 ;|SCF |--0-01|Set Carry Flag |CY=1 |
1627 ;|----------|SZHP C|---------- 8080 ----------------------------|
1631 do_z80_flags_clear_HN
1632 ori z_flags,(1<<ZFL_C)
1635 ;----------------------------------------------------------------
1636 ;|Mnemonic |SZHPNC|Description |Notes |
1637 ;----------------------------------------------------------------
1638 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY, HC=previous CY|
1639 ;|----------|SZHP C|---------- 8080 ----------------------------|
1640 ;|CCF |---- 1|Set Carry Flag |CY=1 |
1643 do_z80_flags_clear_N
1644 do_z80_flags_copy_HC
1649 ;----------------------------------------------------------------
1650 ;|Mnemonic |SZHPNC|Description |Notes |
1651 ;----------------------------------------------------------------
1652 ;|CPL |--1-1-|Complement |A=~A |
1653 ;|----------|SZHP C|---------- 8080 ----------------------------|
1654 ;|CPL |---- -|Complement |A=~A |
1663 ;----------------------------------------------------------------
1664 ;|Mnemonic |SZHPNC|Description |Notes |
1665 ;----------------------------------------------------------------
1666 ;|PUSH xx |------|Push |-[SP]=xx |
1667 ;|PUSH qq |------|Push |-[SP]=qq |
1680 printstring "Stack push "
1683 printstring ", SP is now "
1691 ;----------------------------------------------------------------
1692 ;|Mnemonic |SZHPNC|Description |Notes |
1693 ;----------------------------------------------------------------
1694 ;|POP xx |------|Pop |xx=[SP]+ |
1695 ;|POP qq |------|Pop |qq=[SP]+ |
1708 printstring "Stack pop "
1711 printstring ", SP is now "
1718 ;----------------------------------------------------------------
1719 ;|Mnemonic |SZHPNC|Description |Notes |
1720 ;----------------------------------------------------------------
1721 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
1722 ;|EX DE,HL |------|Exchange |DE<->HL |
1723 ;-----------------------------Z80--------------------------------
1733 ;----------------------------------------------------------------
1734 ;|Mnemonic |SZHPNC|Description |Notes |
1735 ;----------------------------------------------------------------
1736 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
1737 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
1743 andi temp,~((1<<IFF2) | (1<<IFF1))
1751 ori temp,(1<<IFF2) | (1<<IFF1)
1756 ;----------------------------------------------------------------
1757 ;|Mnemonic |SZHPNC|Description |Notes |
1758 ;----------------------------------------------------------------
1759 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1760 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1761 ;|RET cc |------|Conditional Return |If cc RET |
1768 pop temp ; direkt zurueck zu main
1771 ;----------------------------------------------------------------
1772 ;|Mnemonic |SZHPNC|Description |Notes |
1773 ;----------------------------------------------------------------
1774 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1775 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1776 ;|RET cc |------|Conditional Return |If cc RET |
1783 pop temp ; direkt zurueck zu main
1786 ;----------------------------------------------------------------
1787 ;|Mnemonic |SZHPNC|Description |Notes |
1788 ;----------------------------------------------------------------
1789 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1790 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1791 ;|RET cc |------|Conditional Return |If cc RET |
1798 pop temp ; direkt zuruech zu main
1801 ;----------------------------------------------------------------
1802 ;|Mnemonic |SZHPNC|Description |Notes |
1803 ;----------------------------------------------------------------
1804 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1805 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1806 ;|RET cc |------|Conditional Return |If cc RET |
1813 pop temp ; direkt zuruech zu main
1816 ;----------------------------------------------------------------
1817 ;|Mnemonic |SZHPNC|Description |Notes |
1818 ;----------------------------------------------------------------
1819 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1820 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1821 ;|RET cc |------|Conditional Return |If cc RET |
1828 pop temp ; direkt zuruech zu main
1831 ;----------------------------------------------------------------
1832 ;|Mnemonic |SZHPNC|Description |Notes |
1833 ;----------------------------------------------------------------
1834 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1835 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1836 ;|RET cc |------|Conditional Return |If cc RET |
1843 pop temp ; direkt zuruech zu main
1846 ;----------------------------------------------------------------
1847 ;|Mnemonic |SZHPNC|Description |Notes |
1848 ;----------------------------------------------------------------
1849 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1850 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1851 ;|RET cc |------|Conditional Return |If cc RET |
1854 do_op_ifp: ;sign positive, aka s=0
1858 pop temp ; direkt zuruech zu main
1861 ;----------------------------------------------------------------
1862 ;|Mnemonic |SZHPNC|Description |Notes |
1863 ;----------------------------------------------------------------
1864 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1865 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1866 ;|RET cc |------|Conditional Return |If cc RET |
1869 do_op_ifm: ;sign negative, aka s=1
1873 pop temp ; direkt zuruech zu main
1876 ;----------------------------------------------------------------
1880 ;----------------------------------------------------------------
1881 ;|Mnemonic |SZHPNC|Description |Notes |
1882 ;----------------------------------------------------------------
1883 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
1885 ;The b register is decremented, and if not zero, the signed value e is added to pc.
1886 ;The jump is measured from the start of the instruction opcode.
1887 ;e = Relative addressing (PC=PC+2+offset)
1892 do_op_DJNZ: ; decremt B, jump B=0
1893 ldd temp,y+oz_b ; B in temp
1894 dec temp ; temp decrementieren
1895 std y+oz_b,temp ; temp in B
1896 breq do_op_DJNZ_Z ; bei B=0
1897 subi opl, 0x80 ; z_pc + e im Zweierkomplement
1913 pop temp ; direkt zurueck zu main
1919 ;----------------------------------------------------------------
1920 ;|Mnemonic |SZHPNC|Description |Notes |
1921 ;----------------------------------------------------------------
1922 ;|EX AF,AF' |------|Exchange |AF<->AF' |
1934 ;----------------------------------------------------------------
1935 ;|Mnemonic |SZHPNC|Description |Notes |
1936 ;----------------------------------------------------------------
1937 ;|EXX |------|Exchange |qq<->qq' (except AF)|
1963 sbiw z_pcl,1 ;--z_pc
1967 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1968 adiw z_pcl,1 ;++z_pc
1969 ldi zh,high(EDjmp) ;
1975 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1976 adiw z_pcl,1 ;++z_pc
1977 ldi zh,high(DDFDjmp) ;
1983 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1984 adiw z_pcl,1 ;++z_pc
1985 ldi zh,high(DDFDjmp) ;
1989 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1990 adiw z_pcl,1 ;++z_pc
1991 ldi zh,high(CBjmp) ;
2005 mem_read_s z_pc ;get displacement
2006 adiw z_pcl,1 ;++z_pc
2007 clr temp2 ;sign extend
2011 add xl,temp ;add displacement
2015 mem_read_ds zl,z_pc ;zl = opcode
2016 adiw z_pcl,1 ;++z_pc
2017 ldi zh,high(DDFDCBjmp) ;
2023 #else ; TODO: geht das so?
2034 ; ----------------------- Opcode decoding -------------------------
2036 ; Lookup table for Z80 opcodes. Translates the first byte of the instruction word into three
2037 ; operations: fetch, do something, store.
2038 ; The table is made of 256 words.
2042 instr fetch_nop, op_nop, store_nop ;00 ;NOP
2043 instr fetch_DIR16, op_nop, store_BC ;01 nn nn ;LD BC,nn
2044 instr fetch_nop, op_nop, store_MBC ;02 ;LD (BC),A
2045 instr fetch_BC, op_INC16, store_BC ;03 ;INC BC
2046 instr fetch_B, op_INC, store_B ;04 ;INC B
2047 instr fetch_B, op_DEC, store_B ;05 ;DEC B
2048 instr fetch_DIR8, op_nop, store_B ;06 ;LD B,n
2049 instr fetch_nop, op_RLCA, store_nop ;07 ;RLCA
2050 instr fetch_nop, op_EXAF, store_nop ;08 ;EX AF,AF'
2051 instr fetch_BC, op_ADDHL, store_nop ;09 ;ADD HL,BC
2052 instr fetch_MBC, op_nop, store_nop ;0A ;LD A,(BC)
2053 instr fetch_BC, op_DEC16, store_BC ;0B ;DEC BC
2054 instr fetch_C, op_INC, store_C ;0C ;INC C
2055 instr fetch_C, op_DEC, store_C ;0D ;DEC C
2056 instr fetch_DIR8, op_nop, store_C ;0E nn ;LD C,n
2057 instr fetch_nop, op_RRCA, store_nop ;0F ;RRCA
2058 instr fetch_DIR8, op_DJNZ, store_nop ;10 oo ;DJNZ o
2059 instr fetch_DIR16, op_nop, store_DE ;11 nn nn ;LD DE,nn
2060 instr fetch_nop, op_nop, store_MDE ;12 ;LD (DE),A
2061 instr fetch_DE, op_INC16, store_DE ;13 ;INC DE
2062 instr fetch_D, op_INC, store_D ;14 ;INC D
2063 instr fetch_D, op_DEC, store_D ;15 ;DEC D
2064 instr fetch_DIR8, op_nop, store_D ;16 nn ;LD D,n
2065 instr fetch_nop, op_RLA, store_nop ;17 ;RLA
2066 instr fetch_DIR8, op_nop, store_pcrel ;18 oo ;JR o
2067 instr fetch_DE, op_ADDHL, store_nop ;19 ;ADD HL,DE
2068 instr fetch_MDE, op_nop, store_nop ;1A ;LD A,(DE)
2069 instr fetch_DE, op_DEC16, store_DE ;1B ;DEC DE
2070 instr fetch_E, op_INC, store_E ;1C ;INC E
2071 instr fetch_E, op_DEC, store_E ;1D ;DEC E
2072 instr fetch_DIR8, op_nop, store_E ;1E nn ;LD E,n
2073 instr fetch_nop, op_RRA, store_nop ;1F ;RRA
2074 instr fetch_DIR8, op_IFNZ, store_pcrel ;20 oo ;JR NZ,o
2075 instr fetch_DIR16, op_nop, store_HL ;21 nn nn ;LD HL,nn
2076 instr fetch_DIR16, op_STHL, store_nop ;22 nn nn ;LD (nn),HL
2077 instr fetch_HL, op_INC16, store_HL ;23 ;INC HL
2078 instr fetch_H, op_INC, store_H ;24 ;INC H
2079 instr fetch_H, op_DEC, store_H ;25 ;DEC H
2080 instr fetch_DIR8, op_nop, store_H ;26 nn ;LD H,n
2081 instr fetch_A, op_DAA, store_A ;27 ;DAA
2082 instr fetch_DIR8, op_IFZ, store_pcrel ;28 oo ;JR Z,o
2083 instr fetch_HL, op_ADDHL, store_nop ;29 ;ADD HL,HL
2084 instr fetch_DIR16, op_RMEM16, store_HL ;2A nn nn ;LD HL,(nn)
2085 instr fetch_HL, op_DEC16, store_HL ;2B ;DEC HL
2086 instr fetch_L, op_INC, store_L ;2C ;INC L
2087 instr fetch_L, op_DEC, store_L ;2D ;DEC L
2088 instr fetch_DIR8, op_nop, store_L ;2E nn ;LD L,n
2089 instr fetch_nop, op_CPL, store_nop ;2F ;CPL
2090 instr fetch_DIR8, op_IFNC, store_pcrel ;30 oo ;JR NC,o
2091 instr fetch_DIR16, op_nop, store_SP ;31 nn nn ;LD SP,nn
2092 instr fetch_DIR16, op_nop, store_AM ;32 nn nn ;LD (nn),A
2093 instr fetch_SP, op_INC16, store_SP ;33 ;INC SP
2094 instr fetch_MHL, op_INC, store_MHL ;34 ;INC (HL)
2095 instr fetch_MHL, op_DEC, store_MHL ;35 ;DEC (HL)
2096 instr fetch_DIR8, op_nop, store_MHL ;36 nn ;LD (HL),n
2097 instr fetch_nop, op_SCF, store_nop ;37 ;SCF
2098 instr fetch_DIR8, op_IFC, store_pcrel ;38 oo ;JR C,o
2099 instr fetch_SP, op_ADDHL, store_nop ;39 ;ADD HL,SP
2100 instr fetch_DIR16, op_RMEM8, store_A ;3A nn nn ;LD A,(nn)
2101 instr fetch_SP, op_DEC16, store_SP ;3B ;DEC SP
2102 instr fetch_nop, op_INCA, store_nop ;3C ;INC A
2103 instr fetch_nop, op_DECA, store_nop ;3D ;DEC A
2104 instr fetch_DIR8, op_nop, store_A ;3E nn ;LD A,n
2105 instr fetch_nop, op_CCF, store_nop ;3F ;CCF (Complement Carry Flag, gvd)
2106 instr fetch_nop, op_nop, store_nop ;40 ;LD B,B
2107 instr fetch_C, op_nop, store_B ;41 ;LD B,C
2108 instr fetch_D, op_nop, store_B ;42 ;LD B,D
2109 instr fetch_E, op_nop, store_B ;43 ;LD B,E
2110 instr fetch_H, op_nop, store_B ;44 ;LD B,H
2111 instr fetch_L, op_nop, store_B ;45 ;LD B,L
2112 instr fetch_MHL, op_nop, store_B ;46 ;LD B,(HL)
2113 instr fetch_A, op_nop, store_B ;47 ;LD B,A
2114 instr fetch_B, op_nop, store_C ;48 ;LD C,B
2115 instr fetch_nop, op_nop, store_nop ;49 ;LD C,C
2116 instr fetch_D, op_nop, store_C ;4A ;LD C,D
2117 instr fetch_E, op_nop, store_C ;4B ;LD C,E
2118 instr fetch_H, op_nop, store_C ;4C ;LD C,H
2119 instr fetch_L, op_nop, store_C ;4D ;LD C,L
2120 instr fetch_MHL, op_nop, store_C ;4E ;LD C,(HL)
2121 instr fetch_A, op_nop, store_C ;4F ;LD C,A
2122 instr fetch_B, op_nop, store_D ;50 ;LD D,B
2123 instr fetch_C, op_nop, store_D ;51 ;LD D,C
2124 instr fetch_nop, op_nop, store_nop ;52 ;LD D,D
2125 instr fetch_E, op_nop, store_D ;53 ;LD D,E
2126 instr fetch_H, op_nop, store_D ;54 ;LD D,H
2127 instr fetch_L, op_nop, store_D ;55 ;LD D,L
2128 instr fetch_MHL, op_nop, store_D ;56 ;LD D,(HL)
2129 instr fetch_A, op_nop, store_D ;57 ;LD D,A
2130 instr fetch_B, op_nop, store_E ;58 ;LD E,B
2131 instr fetch_C, op_nop, store_E ;59 ;LD E,C
2132 instr fetch_D, op_nop, store_E ;5A ;LD E,D
2133 instr fetch_nop, op_nop, store_nop ;5B ;LD E,E
2134 instr fetch_H, op_nop, store_E ;5C ;LD E,H
2135 instr fetch_L, op_nop, store_E ;5D ;LD E,L
2136 instr fetch_MHL, op_nop, store_E ;5E ;LD E,(HL)
2137 instr fetch_A, op_nop, store_E ;5F ;LD E,A
2138 instr fetch_B, op_nop, store_H ;60 ;LD H,B
2139 instr fetch_C, op_nop, store_H ;61 ;LD H,C
2140 instr fetch_D, op_nop, store_H ;62 ;LD H,D
2141 instr fetch_E, op_nop, store_H ;63 ;LD H,E
2142 instr fetch_nop, op_nop, store_nop ;64 ;LD H,H
2143 instr fetch_L, op_nop, store_H ;65 ;LD H,L
2144 instr fetch_MHL, op_nop, store_H ;66 ;LD H,(HL)
2145 instr fetch_A, op_nop, store_H ;67 ;LD H,A
2146 instr fetch_B, op_nop, store_L ;68 ;LD L,B
2147 instr fetch_C, op_nop, store_L ;69 ;LD L,C
2148 instr fetch_D, op_nop, store_L ;6A ;LD L,D
2149 instr fetch_E, op_nop, store_L ;6B ;LD L,E
2150 instr fetch_H, op_nop, store_L ;6C ;LD L,H
2151 instr fetch_nop, op_nop, store_nop ;6D ;LD L,L
2152 instr fetch_MHL, op_nop, store_L ;6E ;LD L,(HL)
2153 instr fetch_A, op_nop, store_L ;6F ;LD L,A
2154 instr fetch_B, op_nop, store_MHL ;70 ;LD (HL),B
2155 instr fetch_C, op_nop, store_MHL ;71 ;LD (HL),C
2156 instr fetch_D, op_nop, store_MHL ;72 ;LD (HL),D
2157 instr fetch_E, op_nop, store_MHL ;73 ;LD (HL),E
2158 instr fetch_H, op_nop, store_MHL ;74 ;LD (HL),H
2159 instr fetch_L, op_nop, store_MHL ;75 ;LD (HL),L
2160 instr fetch_nop, op_HALT, store_nop ;76 ;HALT
2161 instr fetch_A, op_nop, store_MHL ;77 ;LD (HL),A
2162 instr fetch_B, op_nop, store_A ;78 ;LD A,B
2163 instr fetch_C, op_nop, store_A ;79 ;LD A,C
2164 instr fetch_D, op_nop, store_A ;7A ;LD A,D
2165 instr fetch_E, op_nop, store_A ;7B ;LD A,E
2166 instr fetch_H, op_nop, store_A ;7C ;LD A,H
2167 instr fetch_L, op_nop, store_A ;7D ;LD A,L
2168 instr fetch_MHL, op_nop, store_A ;7E ;LD A,(HL)
2169 instr fetch_nop, op_nop, store_nop ;7F ;LD A,A
2170 instr fetch_B, op_ADDA, store_nop ;80 ;ADD A,B
2171 instr fetch_C, op_ADDA, store_nop ;81 ;ADD A,C
2172 instr fetch_D, op_ADDA, store_nop ;82 ;ADD A,D
2173 instr fetch_E, op_ADDA, store_nop ;83 ;ADD A,E
2174 instr fetch_H, op_ADDA, store_nop ;84 ;ADD A,H
2175 instr fetch_L, op_ADDA, store_nop ;85 ;ADD A,L
2176 instr fetch_MHL, op_ADDA, store_nop ;86 ;ADD A,(HL)
2177 instr fetch_A, op_ADDA, store_nop ;87 ;ADD A,A
2178 instr fetch_B, op_ADCA, store_nop ;88 ;ADC A,B
2179 instr fetch_C, op_ADCA, store_nop ;89 ;ADC A,C
2180 instr fetch_D, op_ADCA, store_nop ;8A ;ADC A,D
2181 instr fetch_E, op_ADCA, store_nop ;8B ;ADC A,E
2182 instr fetch_H, op_ADCA, store_nop ;8C ;ADC A,H
2183 instr fetch_L, op_ADCA, store_nop ;8D ;ADC A,L
2184 instr fetch_MHL, op_ADCA, store_nop ;8E ;ADC A,(HL)
2185 instr fetch_A, op_ADCA, store_nop ;8F ;ADC A,A
2186 instr fetch_B, op_SUBFA, store_nop ;90 ;SUB A,B
2187 instr fetch_C, op_SUBFA, store_nop ;91 ;SUB A,C
2188 instr fetch_D, op_SUBFA, store_nop ;92 ;SUB A,D
2189 instr fetch_E, op_SUBFA, store_nop ;93 ;SUB A,E
2190 instr fetch_H, op_SUBFA, store_nop ;94 ;SUB A,H
2191 instr fetch_L, op_SUBFA, store_nop ;95 ;SUB A,L
2192 instr fetch_MHL, op_SUBFA, store_nop ;96 ;SUB A,(HL)
2193 instr fetch_A, op_SUBFA, store_nop ;97 ;SUB A,A
2194 instr fetch_B, op_SBCFA, store_nop ;98 ;SBC A,B
2195 instr fetch_C, op_SBCFA, store_nop ;99 ;SBC A,C
2196 instr fetch_D, op_SBCFA, store_nop ;9A ;SBC A,D
2197 instr fetch_E, op_SBCFA, store_nop ;9B ;SBC A,E
2198 instr fetch_H, op_SBCFA, store_nop ;9C ;SBC A,H
2199 instr fetch_L, op_SBCFA, store_nop ;9D ;SBC A,L
2200 instr fetch_MHL, op_SBCFA, store_nop ;9E ;SBC A,(HL)
2201 instr fetch_A, op_SBCFA, store_nop ;9F ;SBC A,A
2202 instr fetch_B, op_ANDA, store_nop ;A0 ;AND A,B
2203 instr fetch_C, op_ANDA, store_nop ;A1 ;AND A,C
2204 instr fetch_D, op_ANDA, store_nop ;A2 ;AND A,D
2205 instr fetch_E, op_ANDA, store_nop ;A3 ;AND A,E
2206 instr fetch_H, op_ANDA, store_nop ;A4 ;AND A,H
2207 instr fetch_L, op_ANDA, store_nop ;A5 ;AND A,L
2208 instr fetch_MHL, op_ANDA, store_nop ;A6 ;AND A,(HL)
2209 instr fetch_A, op_ANDA, store_nop ;A7 ;AND A,A
2210 instr fetch_B, op_XORA, store_nop ;A8 ;XOR A,B
2211 instr fetch_C, op_XORA, store_nop ;A9 ;XOR A,C
2212 instr fetch_D, op_XORA, store_nop ;AA ;XOR A,D
2213 instr fetch_E, op_XORA, store_nop ;AB ;XOR A,E
2214 instr fetch_H, op_XORA, store_nop ;AC ;XOR A,H
2215 instr fetch_L, op_XORA, store_nop ;AD ;XOR A,L
2216 instr fetch_MHL, op_XORA, store_nop ;AE ;XOR A,(HL)
2217 instr fetch_A, op_XORA, store_nop ;AF ;XOR A,A
2218 instr fetch_B, op_ORA, store_nop ;B0 ;OR A,B
2219 instr fetch_C, op_ORA, store_nop ;B1 ;OR A,C
2220 instr fetch_D, op_ORA, store_nop ;B2 ;OR A,D
2221 instr fetch_E, op_ORA, store_nop ;B3 ;OR A,E
2222 instr fetch_H, op_ORA, store_nop ;B4 ;OR A,H
2223 instr fetch_L, op_ORA, store_nop ;B5 ;OR A,L
2224 instr fetch_MHL, op_ORA, store_nop ;B6 ;OR A,(HL)
2225 instr fetch_A, op_ORA, store_nop ;B7 ;OR A,A
2226 instr fetch_B, op_CPFA, store_nop ;B8 ;CP A,B
2227 instr fetch_C, op_CPFA, store_nop ;B9 ;CP A,C
2228 instr fetch_D, op_CPFA, store_nop ;BA ;CP A,D
2229 instr fetch_E, op_CPFA, store_nop ;BB ;CP A,E
2230 instr fetch_H, op_CPFA, store_nop ;BC ;CP A,H
2231 instr fetch_L, op_CPFA, store_nop ;BD ;CP A,L
2232 instr fetch_MHL, op_CPFA, store_nop ;BE ;CP A,(HL)
2233 instr fetch_A, op_CPFA, store_nop ;BF ;CP A,A
2234 instr fetch_nop, op_IFNZ, store_RET ;C0 ;RET NZ
2235 instr fetch_nop, op_POP16, store_BC ;C1 ;POP BC
2236 instr fetch_DIR16, op_IFNZ, store_PC ;C2 nn nn ;JP NZ,nn
2237 instr fetch_DIR16, op_nop, store_PC ;C3 nn nn ;JP nn
2238 instr fetch_DIR16, op_IFNZ, store_CALL ;C4 nn nn ;CALL NZ,nn
2239 instr fetch_BC, op_PUSH16, store_nop ;C5 ;PUSH BC
2240 instr fetch_DIR8, op_ADDA, store_nop ;C6 nn ;ADD A,n
2241 instr fetch_RST, op_nop, store_CALL ;C7 ;RST 0
2242 instr fetch_nop, op_IFZ, store_RET ;C8 ;RET Z
2243 instr fetch_nop, op_nop, store_RET ;C9 ;RET
2244 instr fetch_DIR16, op_IFZ, store_PC ;CA nn nn ;JP Z,nn
2245 instr fetch_nop, op_prefixCB, store_nop ;CB ;(CB opcode prefix)
2246 instr fetch_DIR16, op_IFZ, store_CALL ;CC nn nn ;CALL Z,nn
2247 instr fetch_DIR16, op_nop, store_CALL ;CD nn nn ;CALL nn
2248 instr fetch_DIR8, op_ADCA, store_nop ;CE nn ;ADC A,n
2249 instr fetch_RST, op_nop, store_CALL ;CF ;RST 8H
2250 instr fetch_nop, op_IFNC, store_RET ;D0 ;RET NC
2251 instr fetch_nop, op_POP16, store_DE ;D1 ;POP DE
2252 instr fetch_DIR16, op_IFNC, store_PC ;D2 nn nn ;JP NC,nn
2253 instr fetch_DIR8, op_OUTA, store_nop ;D3 nn ;OUT (n),A
2254 instr fetch_DIR16, op_IFNC, store_CALL ;D4 nn nn ;CALL NC,nn
2255 instr fetch_DE, op_PUSH16, store_nop ;D5 ;PUSH DE
2256 instr fetch_DIR8, op_SUBFA, store_nop ;D6 nn ;SUB n
2257 instr fetch_RST, op_nop, store_CALL ;D7 ;RST 10H
2258 instr fetch_nop, op_IFC, store_RET ;D8 ;RET C
2259 instr fetch_nop, op_EXX, store_nop ;D9 ;EXX
2260 instr fetch_DIR16, op_IFC, store_PC ;DA nn nn ;JP C,nn
2261 instr fetch_DIR8, op_INA, store_nop ;DB nn ;IN A,(n)
2262 instr fetch_DIR16, op_IFC, store_CALL ;DC nn nn ;CALL C,nn
2263 instr fetch_nop, op_prefixDD, store_nop ;DD ;(DD opcode prefix)
2264 instr fetch_DIR8, op_SBCFA, store_nop ;DE nn ;SBC A,n
2265 instr fetch_RST, op_nop, store_CALL ;DF ;RST 18H
2266 instr fetch_nop, op_IFPO, store_RET ;E0 ;RET PO
2267 instr fetch_nop, op_POP16, store_HL ;E1 ;POP HL
2268 instr fetch_DIR16, op_IFPO, store_PC ;E2 nn nn ;JP PO,nn
2269 instr fetch_MSP, op_EXHL, store_MSP ;E3 ;EX (SP),HL
2270 instr fetch_DIR16, op_IFPO, store_CALL ;E4 nn nn ;CALL PO,nn
2271 instr fetch_HL, op_PUSH16, store_nop ;E5 ;PUSH HL
2272 instr fetch_DIR8, op_ANDA, store_nop ;E6 nn ;AND n
2273 instr fetch_RST, op_nop, store_CALL ;E7 ;RST 20H
2274 instr fetch_nop, op_IFPE, store_RET ;E8 ;RET PE
2275 instr fetch_HL, op_nop, store_PC ;E9 ;JP HL
2276 instr fetch_DIR16, op_IFPE, store_PC ;EA nn nn ;JP PE,nn
2277 instr fetch_DE, op_EXHL, store_DE ;EB ;EX DE,HL
2278 instr fetch_DIR16, op_IFPE, store_CALL ;EC nn nn ;CALL PE,nn
2279 instr fetch_nop, op_prefixED, store_nop ;ED ;(ED opcode prefix)
2280 instr fetch_DIR8, op_XORA, store_nop ;EE nn ;XOR n
2281 instr fetch_RST, op_nop, store_CALL ;EF ;RST 28H
2282 instr fetch_nop, op_IFP, store_RET ;F0 ;RET P
2283 instr fetch_nop, op_POP16, store_AF ;F1 ;POP AF
2284 instr fetch_DIR16, op_IFP, store_PC ;F2 nn nn ;JP P,nn
2285 instr fetch_nop, op_DI, store_nop ;F3 ;DI
2286 instr fetch_DIR16, op_IFP, store_CALL ;F4 nn nn ;CALL P,nn
2287 instr fetch_AF, op_PUSH16, store_nop ;F5 ;PUSH AF
2288 instr fetch_DIR8, op_ORA, store_nop ;F6 nn ;OR n
2289 instr fetch_RST, op_nop, store_CALL ;F7 ;RST 30H
2290 instr fetch_nop, op_IFM, store_RET ;F8 ;RET M
2291 instr fetch_HL, op_nop, store_SP ;F9 ;LD SP,HL
2292 instr fetch_DIR16, op_IFM, store_PC ;FA nn nn ;JP M,nn
2293 instr fetch_nop, op_EI, store_nop ;FB ;EI
2294 instr fetch_DIR16, op_IFM, store_CALL ;FC nn nn ;CALL M,nn
2295 instr fetch_nop, op_prefixFD, store_nop ;FD ;(FD opcode prefix)
2296 instr fetch_DIR8, op_CPFA, store_nop ;FE nn ;CP n
2297 instr fetch_RST, op_nop, store_CALL ;FF ;RST 38H
2314 ;----------------------------------------------------------------
2315 ;|Mnemonic |SZHPNC|Description |Notes |
2316 ;----------------------------------------------------------------
2317 ;|IN r,[C] |***P0-|Input |r=[C] |
2320 do_op_in: ; in opl,(opl)
2323 cp opl,_0 ; don't debug port 0 (con stat)
2326 printstring "Port read: ("
2336 bst z_flags,ZFL_C ;save Carry
2337 ldpmx z_flags,sz53p_tab,temp ;S,Z,P
2350 ;----------------------------------------------------------------
2351 ;|Mnemonic |SZHPNC|Description |Notes |
2352 ;----------------------------------------------------------------
2353 ;|OUT [C],r |------|Output |[C]=r |
2356 do_op_out: ; out (c),opl
2362 ;----------------------------------------------------------------
2363 ;|Mnemonic |SZHPNC|Description |Notes |
2364 ;----------------------------------------------------------------
2365 ;|LD dst,src|------|Load |dst=src |
2368 do_op_stbc: ;store bc to mem loc in opl:h
2377 ;----------------------------------------------------------------
2378 ;|Mnemonic |SZHPNC|Description |Notes |
2379 ;----------------------------------------------------------------
2380 ;|LD dst,src|------|Load |dst=src |
2383 do_op_stde: ;store de to mem loc in opl:h
2392 ;----------------------------------------------------------------
2393 ;|Mnemonic |SZHPNC|Description |Notes |
2394 ;----------------------------------------------------------------
2395 ;|LD dst,src|------|Load |dst=src |
2398 do_op_stsp: ;store sp to mem loc in opl:h
2405 ;----------------------------------------------------------------
2406 ;|Mnemonic |SZHPNC|Description |Notes |
2407 ;----------------------------------------------------------------
2408 ;|ADC HL,ss |***V0*|Add with Carry |HL=HL+ss+CY |
2418 in temp,sreg ; save lower Z
2423 and temp,temp2 ; 16bit Z
2424 ldi z_flags,0 ; clear N
2425 bmov z_flags,ZFL_C, temp2,AVR_C
2426 bmov z_flags,ZFL_P, temp2,AVR_V
2427 bmov z_flags,ZFL_H, temp2,AVR_H
2428 bmov z_flags,ZFL_Z, temp,AVR_Z
2429 bmov z_flags,ZFL_S, temp2,AVR_N
2432 ;----------------------------------------------------------------
2433 ;|Mnemonic |SZHPNC|Description |Notes |
2434 ;----------------------------------------------------------------
2435 ;|SBC HL,ss |***V1*|Subtract with carry |HL=HL-ss-CY |
2450 ldi z_flags,(1<<ZFL_N) ; set N
2451 bmov z_flags,ZFL_C, temp,AVR_C
2452 bmov z_flags,ZFL_P, temp,AVR_V
2453 bmov z_flags,ZFL_H, temp,AVR_H
2454 bmov z_flags,ZFL_Z, temp,AVR_Z
2455 bmov z_flags,ZFL_S, temp,AVR_N
2458 ;----------------------------------------------------------------
2459 ;|Mnemonic |SZHPNC|Description |Notes |
2460 ;----------------------------------------------------------------
2461 ;|NEG |***V1*|Negate A |A=0-A |
2469 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
2470 bmov z_flags,ZFL_C, temp,AVR_C
2471 bmov z_flags,ZFL_H, temp,AVR_H
2476 ;----------------------------------------------------------------
2477 ;|Mnemonic |SZHPNC|Description |Notes |
2478 ;----------------------------------------------------------------
2479 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
2480 ;|RETN |------|Return from NMI | Copy IFF2 to IFF1 |
2486 bmov temp,IFF1, temp,IFF2
2491 ;----------------------------------------------------------------
2492 ;|Mnemonic |SZHPNC|Description |Notes |
2493 ;----------------------------------------------------------------
2494 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
2516 ;----------------------------------------------------------------
2517 ;|Mnemonic |SZHPNC|Description |Notes |
2518 ;----------------------------------------------------------------
2519 ;|LD A,i |**0*0-|Load |(i=I,R) IFF2 --> P |
2520 ;|LD i,A |------|Load |(i=I,R) |
2529 bst z_flags,ZFL_C ;save C
2530 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2533 bmov z_flags,ZFL_P, temp,IFF2
2544 ;----------------------------------------------------------------
2545 ;|Mnemonic |SZHPNC|Description |Notes |
2546 ;----------------------------------------------------------------
2547 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
2548 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
2562 bst z_flags,ZFL_C ;save C
2563 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2579 bst z_flags,ZFL_C ;save C
2580 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2610 mem_read_ds opl, z_pc ;get displacement
2612 clr oph ;sign extend
2617 add xl,opl ;add displacement
2619 mem_read_d opl ;get operand
2620 ret ;(Ix+d) still in xl,xh
2658 mem_read_s z_pc ;get displacement
2660 clr temp2 ;sign extend
2665 add xl,temp ;add displacement
2667 mem_write_s opl ;store operand
2671 mem_write_s opl ;store operand
2684 mem_read_s z_pc ;get displacement
2687 clr temp2 ;sign extend
2692 add xl,temp ;add displacement
2694 mem_write_s opl ;store operand
2708 ;----------------------------------------------------------------
2709 ;|Mnemonic |SZHPNC|Description |Notes |
2710 ;----------------------------------------------------------------
2711 ;|LD dst,src|------|Load |dst=src |
2714 do_op_stxx: ;store xx to mem loc in opl:h
2731 ;----------------------------------------------------------------
2732 ;|Mnemonic |SZHPNC|Description |Notes |
2733 ;----------------------------------------------------------------
2734 ;|EX [SP],IX|------|Exchange |[SP]<->IX |
2735 ;|EX [SP],IY|------|Exchange |[SP]<->IY |
2754 ;----------------------------------------------------------------
2755 ;|Mnemonic |SZHPNC|Description |Notes |
2756 ;----------------------------------------------------------------
2757 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
2758 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
2780 bmov z_flags,ZFL_C, temp,AVR_C
2782 do_z80_flags_clear_N
2785 ;----------------------------------------------------------------
2786 ;|Mnemonic |SZHPNC|Description |Notes |
2787 ;----------------------------------------------------------------
2788 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
2789 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
2790 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
2791 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
2802 mem_write_ds x, temp
2803 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2807 sbr z_flags,(1<<ZFL_P)
2813 rcall op_LDxx_common
2823 rcall op_LDxx_common
2846 ;----------------------------------------------------------------
2847 ;|Mnemonic |SZHPNC|Description |Notes |
2848 ;----------------------------------------------------------------
2849 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
2850 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
2851 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
2852 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
2861 cbr z_flags,(1<<ZFL_S)|(1<<ZFL_Z)|(1<<ZFL_H)|(1<<ZFL_P)
2862 sbr z_flags,(1<<ZFL_N)
2863 mem_read ; temp = (HL)
2865 sub temp2,temp ; A - (HL)
2867 sbr z_flags,(1<<ZFL_S)
2869 sbr z_flags,(1<<ZFL_Z)
2871 sbr z_flags,(1<<ZFL_H)
2875 sbr z_flags,(1<<ZFL_P)
2881 rcall op_CPxx_common
2889 rcall op_CPxx_common
2913 ;----------------------------------------------------------------
2914 ;|Mnemonic |SZHPNC|Description |Notes |
2915 ;----------------------------------------------------------------
2916 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
2917 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
2918 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
2919 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
2922 cbr z_flags,(1<<ZFL_Z)
2923 sbr z_flags,(1<<ZFL_N)
2933 sbr z_flags,(1<<ZFL_Z)
2937 rcall op_INxx_common
2944 rcall op_INxx_common
2964 ;----------------------------------------------------------------
2965 ;|Mnemonic |SZHPNC|Description |Notes |
2966 ;----------------------------------------------------------------
2967 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
2968 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
2969 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
2970 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
2973 cbr z_flags,(1<<ZFL_Z)
2974 sbr z_flags,(1<<ZFL_N)
2975 lcall dram_read ;temp = (z)
2982 sbr z_flags,(1<<ZFL_Z)
2992 rcall op_OUTxx_common
3002 rcall op_OUTxx_common
3022 instr fetch_nop, op_nop, store_nop ;00 ;NOP
3023 instr fetch_nop, op_nop, store_nop ;01 ;NOP
3024 instr fetch_nop, op_nop, store_nop ;02 ;NOP
3025 instr fetch_nop, op_nop, store_nop ;03 ;NOP
3026 instr fetch_nop, op_nop, store_nop ;04 ;NOP
3027 instr fetch_nop, op_nop, store_nop ;05 ;NOP
3028 instr fetch_nop, op_nop, store_nop ;06 ;NOP
3029 instr fetch_nop, op_nop, store_nop ;07 ;NOP
3030 instr fetch_nop, op_nop, store_nop ;08 ;NOP
3031 instr fetch_nop, op_nop, store_nop ;09 ;NOP
3032 instr fetch_nop, op_nop, store_nop ;0A ;NOP
3033 instr fetch_nop, op_nop, store_nop ;0B ;NOP
3034 instr fetch_nop, op_nop, store_nop ;0C ;NOP
3035 instr fetch_nop, op_nop, store_nop ;0D ;NOP
3036 instr fetch_nop, op_nop, store_nop ;0E ;NOP
3037 instr fetch_nop, op_nop, store_nop ;0F ;NOP
3038 instr fetch_nop, op_nop, store_nop ;10 ;NOP
3039 instr fetch_nop, op_nop, store_nop ;11 ;NOP
3040 instr fetch_nop, op_nop, store_nop ;12 ;NOP
3041 instr fetch_nop, op_nop, store_nop ;13 ;NOP
3042 instr fetch_nop, op_nop, store_nop ;14 ;NOP
3043 instr fetch_nop, op_nop, store_nop ;15 ;NOP
3044 instr fetch_nop, op_nop, store_nop ;16 ;NOP
3045 instr fetch_nop, op_nop, store_nop ;17 ;NOP
3046 instr fetch_nop, op_nop, store_nop ;18 ;NOP
3047 instr fetch_nop, op_nop, store_nop ;19 ;NOP
3048 instr fetch_nop, op_nop, store_nop ;1A ;NOP
3049 instr fetch_nop, op_nop, store_nop ;1B ;NOP
3050 instr fetch_nop, op_nop, store_nop ;1C ;NOP
3051 instr fetch_nop, op_nop, store_nop ;1D ;NOP
3052 instr fetch_nop, op_nop, store_nop ;1E ;NOP
3053 instr fetch_nop, op_nop, store_nop ;1F ;NOP
3054 instr fetch_nop, op_nop, store_nop ;20 ;NOP
3055 instr fetch_nop, op_nop, store_nop ;21 ;NOP
3056 instr fetch_nop, op_nop, store_nop ;22 ;NOP
3057 instr fetch_nop, op_nop, store_nop ;23 ;NOP
3058 instr fetch_nop, op_nop, store_nop ;24 ;NOP
3059 instr fetch_nop, op_nop, store_nop ;25 ;NOP
3060 instr fetch_nop, op_nop, store_nop ;26 ;NOP
3061 instr fetch_nop, op_nop, store_nop ;27 ;NOP
3062 instr fetch_nop, op_nop, store_nop ;28 ;NOP
3063 instr fetch_nop, op_nop, store_nop ;29 ;NOP
3064 instr fetch_nop, op_nop, store_nop ;2A ;NOP
3065 instr fetch_nop, op_nop, store_nop ;2B ;NOP
3066 instr fetch_nop, op_nop, store_nop ;2C ;NOP
3067 instr fetch_nop, op_nop, store_nop ;2D ;NOP
3068 instr fetch_nop, op_nop, store_nop ;2E ;NOP
3069 instr fetch_nop, op_nop, store_nop ;2F ;NOP
3070 instr fetch_nop, op_nop, store_nop ;30 ;NOP
3071 instr fetch_nop, op_nop, store_nop ;31 ;NOP
3072 instr fetch_nop, op_nop, store_nop ;32 ;NOP
3073 instr fetch_nop, op_nop, store_nop ;33 ;NOP
3074 instr fetch_nop, op_nop, store_nop ;34 ;NOP
3075 instr fetch_nop, op_nop, store_nop ;35 ;NOP
3076 instr fetch_nop, op_nop, store_nop ;36 ;NOP
3077 instr fetch_nop, op_nop, store_nop ;37 ;NOP
3078 instr fetch_nop, op_nop, store_nop ;38 ;NOP
3079 instr fetch_nop, op_nop, store_nop ;39 ;NOP
3080 instr fetch_nop, op_nop, store_nop ;3A ;NOP
3081 instr fetch_nop, op_nop, store_nop ;3B ;NOP
3082 instr fetch_nop, op_nop, store_nop ;3C ;NOP
3083 instr fetch_nop, op_nop, store_nop ;3D ;NOP
3084 instr fetch_nop, op_nop, store_nop ;3E ;NOP
3085 instr fetch_nop, op_nop, store_nop ;3F ;NOP
3086 instr fetch_C, op_IN, store_B ;40 ;IN B,(C)
3087 instr fetch_B, op_OUT, store_nop ;41 ;OUT (C),B
3088 instr fetch_BC, op_SBCHL, store_nop ;42 ;SBC HL,BC
3089 instr fetch_DIR16, op_STBC, store_nop ;43 ;LD (nn),BC
3090 instr fetch_nop, op_NEG, store_nop ;44 ;NEG
3091 instr fetch_nop, op_RETN, store_nop ;45 ;RETN
3092 instr fetch_nop, op_IM0, store_nop ;46 ;IM 0
3093 instr fetch_nop, op_ldia, store_nop ;47 ;LD I,A
3094 instr fetch_C, op_IN, store_C ;48 ;IN C,(C)
3095 instr fetch_C, op_OUT, store_nop ;49 ;OUT (C),C
3096 instr fetch_BC, op_ADCHL, store_nop ;4A ;ADC HL,BC
3097 instr fetch_DIR16, op_RMEM16, store_BC ;4B nn nn ;LD BC,(nn)
3098 instr fetch_nop, op_NEG, store_nop ;4C ;NEG
3099 instr fetch_nop, op_RETI, store_nop ;4D ;RETI
3100 instr fetch_nop, op_IM0, store_nop ;4E ;IM 0
3101 instr fetch_nop, op_ldra, store_nop ;4F ;LD R,A
3102 instr fetch_C, op_IN, store_D ;50 ;IN D,(C)
3103 instr fetch_D, op_OUT, store_nop ;51 ;OUT (C),D
3104 instr fetch_DE, op_SBCHL, store_nop ;52 ;SBC HL,DE
3105 instr fetch_DIR16, op_STDE, store_nop ;53 nn nn ;LD (nn),DE
3106 instr fetch_nop, op_NEG, store_nop ;54 ;NEG
3107 instr fetch_nop, op_RETN, store_nop ;55 ;RETN
3108 instr fetch_nop, op_IM1, store_nop ;56 ;IM 1
3109 instr fetch_nop, op_ldai, store_nop ;57 ;LD A,I
3110 instr fetch_C, op_IN, store_E ;58 ;IN E,(C)
3111 instr fetch_E, op_OUT, store_nop ;59 ;OUT (C),E
3112 instr fetch_DE, op_ADCHL, store_nop ;5A ;ADC HL,DE
3113 instr fetch_DIR16, op_RMEM16, store_DE ;5B nn nn ;LD DE,(nn)
3114 instr fetch_nop, op_NEG, store_nop ;5C ;NEG
3115 instr fetch_nop, op_RETN, store_nop ;5D ;RETN
3116 instr fetch_nop, op_IM2, store_nop ;5E ;IM 2
3117 instr fetch_nop, op_ldar, store_nop ;5F ;LD A,R
3118 instr fetch_C, op_IN, store_H ;60 ;IN H,(C)
3119 instr fetch_H, op_OUT, store_nop ;61 ;OUT (C),H
3120 instr fetch_HL, op_SBCHL, store_nop ;62 ;SBC HL,HL
3121 instr fetch_DIR16, op_STHL, store_nop ;63 nn nn ;LD (nn),HL
3122 instr fetch_nop, op_NEG, store_nop ;64 ;NEG
3123 instr fetch_nop, op_RETN, store_nop ;65 ;RETN
3124 instr fetch_nop, op_IM0, store_nop ;66 ;IM 0
3125 instr fetch_mhl, op_RRD, store_mhl ;67 ;RRD
3126 instr fetch_C, op_IN, store_L ;68 ;IN L,(C)
3127 instr fetch_L, op_OUT, store_nop ;69 ;OUT (C),L
3128 instr fetch_HL, op_ADCHL, store_nop ;6A ;ADC HL,HL
3129 instr fetch_DIR16, op_RMEM16, store_HL ;6B nn nn ;LD HL,(nn)
3130 instr fetch_nop, op_NEG, store_nop ;6C ;NEG
3131 instr fetch_nop, op_RETN, store_nop ;6D ;RETN
3132 instr fetch_nop, op_IM0, store_nop ;6E ;IM 0
3133 instr fetch_mhl, op_RLD, store_mhl ;6F ;RLD
3134 instr fetch_C, op_IN, store_nop ;70 ;IN (C)
3135 instr fetch_0, op_OUT, store_nop ;71 ;OUT (C),0
3136 instr fetch_SP, op_SBCHL, store_nop ;72 ;SBC HL,SP
3137 instr fetch_DIR16, op_STSP, store_nop ;73 nn nn ;LD (nn),SP
3138 instr fetch_nop, op_NEG, store_nop ;74 ;NEG
3139 instr fetch_nop, op_RETN, store_nop ;75 ;RETN
3140 instr fetch_nop, op_IM1, store_nop ;76 ;IM 1
3141 instr fetch_nop, op_nop, store_nop ;77 ;NOP
3142 instr fetch_C, op_IN, store_A ;78 ;IN A,(C)
3143 instr fetch_A, op_OUT, store_nop ;79 ;OUT (C),A
3144 instr fetch_SP, op_ADCHL, store_nop ;7A ;ADC HL,SP
3145 instr fetch_DIR16, op_RMEM16, store_SP ;7B nn nn ;LD SP,(nn)
3146 instr fetch_nop, op_NEG, store_nop ;7C ;NEG
3147 instr fetch_nop, op_RETN, store_nop ;7D ;RETN
3148 instr fetch_nop, op_IM2, store_nop ;7E ;IM 2
3149 instr fetch_nop, op_nop, store_nop ;7F ;NOP
3150 instr fetch_nop, op_nop, store_nop ;80 ;NOP
3151 instr fetch_nop, op_nop, store_nop ;81 ;NOP
3152 instr fetch_nop, op_nop, store_nop ;82 ;NOP
3153 instr fetch_nop, op_nop, store_nop ;83 ;NOP
3154 instr fetch_nop, op_nop, store_nop ;84 ;NOP
3155 instr fetch_nop, op_nop, store_nop ;85 ;NOP
3156 instr fetch_nop, op_nop, store_nop ;86 ;NOP
3157 instr fetch_nop, op_nop, store_nop ;87 ;NOP
3158 instr fetch_nop, op_nop, store_nop ;88 ;NOP
3159 instr fetch_nop, op_nop, store_nop ;89 ;NOP
3160 instr fetch_nop, op_nop, store_nop ;8A ;NOP
3161 instr fetch_nop, op_nop, store_nop ;8B ;NOP
3162 instr fetch_nop, op_nop, store_nop ;8C ;NOP
3163 instr fetch_nop, op_nop, store_nop ;8D ;NOP
3164 instr fetch_nop, op_nop, store_nop ;8E ;NOP
3165 instr fetch_nop, op_nop, store_nop ;8F ;NOP
3166 instr fetch_nop, op_nop, store_nop ;90 ;NOP
3167 instr fetch_nop, op_nop, store_nop ;91 ;NOP
3168 instr fetch_nop, op_nop, store_nop ;92 ;NOP
3169 instr fetch_nop, op_nop, store_nop ;93 ;NOP
3170 instr fetch_nop, op_nop, store_nop ;94 ;NOP
3171 instr fetch_nop, op_nop, store_nop ;95 ;NOP
3172 instr fetch_nop, op_nop, store_nop ;96 ;NOP
3173 instr fetch_nop, op_nop, store_nop ;97 ;NOP
3174 instr fetch_nop, op_nop, store_nop ;98 ;NOP
3175 instr fetch_nop, op_nop, store_nop ;99 ;NOP
3176 instr fetch_nop, op_nop, store_nop ;9A ;NOP
3177 instr fetch_nop, op_nop, store_nop ;9B ;NOP
3178 instr fetch_nop, op_nop, store_nop ;9C ;NOP
3179 instr fetch_nop, op_nop, store_nop ;9D ;NOP
3180 instr fetch_nop, op_nop, store_nop ;9E ;NOP
3181 instr fetch_nop, op_nop, store_nop ;9F ;NOP
3182 instr fetch_nop, op_LDI, store_nop ;A0 ;LDI
3183 instr fetch_nop, op_CPI, store_nop ;A1 ;CPI
3184 instr fetch_nop, op_INI, store_nop ;A2 ;INI
3185 instr fetch_nop, op_OUTI, store_nop ;A3 ;OUTI
3186 instr fetch_nop, op_nop, store_nop ;A4 ;NOP
3187 instr fetch_nop, op_nop, store_nop ;A5 ;NOP
3188 instr fetch_nop, op_nop, store_nop ;A6 ;NOP
3189 instr fetch_nop, op_nop, store_nop ;A7 ;NOP
3190 instr fetch_nop, op_LDD, store_nop ;A8 ;LDD
3191 instr fetch_nop, op_CPD, store_nop ;A9 ;CPD
3192 instr fetch_nop, op_IND, store_nop ;AA ;IND
3193 instr fetch_nop, op_OUTD, store_nop ;AB ;OUTD
3194 instr fetch_nop, op_nop, store_nop ;AC ;NOP
3195 instr fetch_nop, op_nop, store_nop ;AD ;NOP
3196 instr fetch_nop, op_nop, store_nop ;AE ;NOP
3197 instr fetch_nop, op_nop, store_nop ;AF ;NOP
3198 instr fetch_nop, op_LDIR, store_nop ;B0 ;LDIR
3199 instr fetch_nop, op_CPIR, store_nop ;B1 ;CPIR
3200 instr fetch_nop, op_INIR, store_nop ;B2 ;INIR
3201 instr fetch_nop, op_OTIR, store_nop ;B3 ;OTIR
3202 instr fetch_nop, op_nop, store_nop ;B4 ;NOP
3203 instr fetch_nop, op_nop, store_nop ;B5 ;NOP
3204 instr fetch_nop, op_nop, store_nop ;B6 ;NOP
3205 instr fetch_nop, op_nop, store_nop ;B7 ;NOP
3206 instr fetch_nop, op_LDDR, store_nop ;B8 ;LDDR
3207 instr fetch_nop, op_CPDR, store_nop ;B9 ;CPDR
3208 instr fetch_nop, op_INDR, store_nop ;BA ;INDR
3209 instr fetch_nop, op_OTDR, store_nop ;BB ;OTDR
3210 instr fetch_nop, op_nop, store_nop ;BC ;NOP
3211 instr fetch_nop, op_nop, store_nop ;BD ;NOP
3212 instr fetch_nop, op_nop, store_nop ;BE ;NOP
3213 instr fetch_nop, op_nop, store_nop ;BF ;NOP
3214 instr fetch_nop, op_nop, store_nop ;C0 ;NOP
3215 instr fetch_nop, op_nop, store_nop ;C1 ;NOP
3216 instr fetch_nop, op_nop, store_nop ;C2 ;NOP
3217 instr fetch_nop, op_nop, store_nop ;C3 ;NOP
3218 instr fetch_nop, op_nop, store_nop ;C4 ;NOP
3219 instr fetch_nop, op_nop, store_nop ;C5 ;NOP
3220 instr fetch_nop, op_nop, store_nop ;C6 ;NOP
3221 instr fetch_nop, op_nop, store_nop ;C7 ;NOP
3222 instr fetch_nop, op_nop, store_nop ;C8 ;NOP
3223 instr fetch_nop, op_nop, store_nop ;C9 ;NOP
3224 instr fetch_nop, op_nop, store_nop ;CA ;NOP
3225 instr fetch_nop, op_nop, store_nop ;CB ;NOP
3226 instr fetch_nop, op_nop, store_nop ;CC ;NOP
3227 instr fetch_nop, op_nop, store_nop ;CD ;NOP
3228 instr fetch_nop, op_nop, store_nop ;CE ;NOP
3229 instr fetch_nop, op_nop, store_nop ;CF ;NOP
3230 instr fetch_nop, op_nop, store_nop ;D0 ;NOP
3231 instr fetch_nop, op_nop, store_nop ;D1 ;NOP
3232 instr fetch_nop, op_nop, store_nop ;D2 ;NOP
3233 instr fetch_nop, op_nop, store_nop ;D3 ;NOP
3234 instr fetch_nop, op_nop, store_nop ;D4 ;NOP
3235 instr fetch_nop, op_nop, store_nop ;D5 ;NOP
3236 instr fetch_nop, op_nop, store_nop ;D6 ;NOP
3237 instr fetch_nop, op_nop, store_nop ;D7 ;NOP
3238 instr fetch_nop, op_nop, store_nop ;D8 ;NOP
3239 instr fetch_nop, op_nop, store_nop ;D9 ;NOP
3240 instr fetch_nop, op_nop, store_nop ;DA ;NOP
3241 instr fetch_nop, op_nop, store_nop ;DB ;NOP
3242 instr fetch_nop, op_nop, store_nop ;DC ;NOP
3243 instr fetch_nop, op_nop, store_nop ;DD ;NOP
3244 instr fetch_nop, op_nop, store_nop ;DE ;NOP
3245 instr fetch_nop, op_nop, store_nop ;DF ;NOP
3246 instr fetch_nop, op_nop, store_nop ;E0 ;NOP
3247 instr fetch_nop, op_nop, store_nop ;E1 ;NOP
3248 instr fetch_nop, op_nop, store_nop ;E2 ;NOP
3249 instr fetch_nop, op_nop, store_nop ;E3 ;NOP
3250 instr fetch_nop, op_nop, store_nop ;E4 ;NOP
3251 instr fetch_nop, op_nop, store_nop ;E5 ;NOP
3252 instr fetch_nop, op_nop, store_nop ;E6 ;NOP
3253 instr fetch_nop, op_nop, store_nop ;E7 ;NOP
3254 instr fetch_nop, op_nop, store_nop ;E8 ;NOP
3255 instr fetch_nop, op_nop, store_nop ;E9 ;NOP
3256 instr fetch_nop, op_nop, store_nop ;EA ;NOP
3257 instr fetch_nop, op_nop, store_nop ;EB ;NOP
3258 instr fetch_nop, op_nop, store_nop ;EC ;NOP
3259 instr fetch_nop, op_nop, store_nop ;ED ;NOP
3260 instr fetch_nop, op_nop, store_nop ;EE ;NOP
3261 instr fetch_nop, op_nop, store_nop ;EF ;NOP
3262 instr fetch_nop, op_nop, store_nop ;F0 ;NOP
3263 instr fetch_nop, op_nop, store_nop ;F1 ;NOP
3264 instr fetch_nop, op_nop, store_nop ;F2 ;NOP
3265 instr fetch_nop, op_nop, store_nop ;F3 ;NOP
3266 instr fetch_nop, op_nop, store_nop ;F4 ;NOP
3267 instr fetch_nop, op_nop, store_nop ;F5 ;NOP
3268 instr fetch_nop, op_nop, store_nop ;F6 ;NOP
3269 instr fetch_nop, op_nop, store_nop ;F7 ;NOP
3270 instr fetch_nop, op_nop, store_nop ;F8 ;NOP
3271 instr fetch_nop, op_nop, store_nop ;F9 ;NOP
3272 instr fetch_nop, op_nop, store_nop ;FA ;NOP
3273 instr fetch_nop, op_nop, store_nop ;FB ;NOP
3274 instr fetch_nop, op_nop, store_nop ;FC ;NOP
3275 instr fetch_nop, op_nop, store_nop ;FD ;NOP
3276 instr fetch_nop, op_nop, store_nop ;FE ;NOP
3277 instr fetch_nop, op_nop, store_nop ;FF ;NOP
3282 instr fetch_nop, op_noni, store_nop ;00 ;
3283 instr fetch_nop, op_noni, store_nop ;01 ;
3284 instr fetch_nop, op_noni, store_nop ;02 ;
3285 instr fetch_nop, op_noni, store_nop ;03 ;
3286 instr fetch_nop, op_noni, store_nop ;04 ;
3287 instr fetch_nop, op_noni, store_nop ;05 ;
3288 instr fetch_nop, op_noni, store_nop ;06 ;
3289 instr fetch_nop, op_noni, store_nop ;07 ;
3290 instr fetch_nop, op_noni, store_nop ;08 ;
3291 instr fetch_BC, op_ADDxx, store_nop ;09 ;ADD xx,BC
3292 instr fetch_nop, op_noni, store_nop ;0A ;
3293 instr fetch_nop, op_noni, store_nop ;0B ;
3294 instr fetch_nop, op_noni, store_nop ;0C ;
3295 instr fetch_nop, op_noni, store_nop ;0D ;
3296 instr fetch_nop, op_noni, store_nop ;0E ;
3297 instr fetch_nop, op_noni, store_nop ;0F ;
3298 instr fetch_nop, op_noni, store_nop ;10 ;
3299 instr fetch_nop, op_noni, store_nop ;11 ;
3300 instr fetch_nop, op_noni, store_nop ;12 ;
3301 instr fetch_nop, op_noni, store_nop ;13 ;
3302 instr fetch_nop, op_noni, store_nop ;14 ;
3303 instr fetch_nop, op_noni, store_nop ;15 ;
3304 instr fetch_nop, op_noni, store_nop ;16 ;
3305 instr fetch_nop, op_noni, store_nop ;17 ;
3306 instr fetch_nop, op_noni, store_nop ;18 ;
3307 instr fetch_DE, op_ADDxx, store_nop ;19 ;ADD xx,DE
3308 instr fetch_nop, op_noni, store_nop ;1A ;
3309 instr fetch_nop, op_noni, store_nop ;1B ;
3310 instr fetch_nop, op_noni, store_nop ;1C ;
3311 instr fetch_nop, op_noni, store_nop ;1D ;
3312 instr fetch_nop, op_noni, store_nop ;1E ;
3313 instr fetch_nop, op_noni, store_nop ;1F ;
3314 instr fetch_nop, op_noni, store_nop ;20 ;
3315 instr fetch_DIR16, op_nop, store_xx ;21 ;LD xx,nn
3316 instr fetch_DIR16, op_STxx, store_nop ;22 ;LD (nn),xx
3317 instr fetch_xx, op_INC16, store_xx ;23 ;INC xx
3318 instr fetch_xH, op_INC, store_xH ;24 ;INC xh
3319 instr fetch_xH, op_DEC, store_xH ;25 ;DEC xh
3320 instr fetch_DIR8, op_nop, store_xH ;26 ;LD xh,n
3321 instr fetch_nop, op_noni, store_nop ;27 ;
3322 instr fetch_nop, op_noni, store_nop ;28 ;
3323 instr fetch_xx, op_ADDxx, store_nop ;29 ;ADD xx,xx
3324 instr fetch_DIR16, op_RMEM16, store_xx ;2A ;LD xx,(nn)
3325 instr fetch_xx, op_DEC16, store_xx ;2B ;DEC xx
3326 instr fetch_xL, op_INC, store_xL ;2C ;INC xl
3327 instr fetch_xL, op_DEC, store_xL ;2D ;DEC xl
3328 instr fetch_DIR8, op_nop, store_xL ;2E ;LD xl,n
3329 instr fetch_nop, op_noni, store_nop ;2F ;
3330 instr fetch_nop, op_noni, store_nop ;30 ;
3331 instr fetch_nop, op_noni, store_nop ;31 ;
3332 instr fetch_nop, op_noni, store_nop ;32 ;
3333 instr fetch_nop, op_noni, store_nop ;33 ;
3334 instr fetch_MXX, op_INC, store_MXX_0 ;34 ;INC (xx+d)
3335 instr fetch_MXX, op_DEC, store_MXX_0 ;35 ;DEC (xx+d)
3336 instr fetch_DIR8_2, op_nop, store_MXX_2 ;36 ;LD (xx+d),n
3337 instr fetch_nop, op_noni, store_nop ;37 ;
3338 instr fetch_nop, op_noni, store_nop ;38 ;
3339 instr fetch_SP, op_ADDxx, store_nop ;39 ;ADD xx,SP
3340 instr fetch_nop, op_noni, store_nop ;3A ;
3341 instr fetch_nop, op_noni, store_nop ;3B ;
3342 instr fetch_nop, op_noni, store_nop ;3C ;
3343 instr fetch_nop, op_noni, store_nop ;3D ;
3344 instr fetch_nop, op_noni, store_nop ;3E ;
3345 instr fetch_nop, op_noni, store_nop ;3F ;
3346 instr fetch_nop, op_noni, store_nop ;40 ;
3347 instr fetch_nop, op_noni, store_nop ;41 ;
3348 instr fetch_nop, op_noni, store_nop ;42 ;
3349 instr fetch_nop, op_noni, store_nop ;43 ;
3350 instr fetch_xH, op_nop, store_B ;44 ;LD B,xh
3351 instr fetch_xL, op_nop, store_B ;45 ;LD B,xl
3352 instr fetch_MXX, op_nop, store_B ;46 ;LD B,(xx+d)
3353 instr fetch_nop, op_noni, store_nop ;47 ;
3354 instr fetch_nop, op_noni, store_nop ;48 ;
3355 instr fetch_nop, op_noni, store_nop ;49 ;
3356 instr fetch_nop, op_noni, store_nop ;4A ;
3357 instr fetch_nop, op_noni, store_nop ;4B ;
3358 instr fetch_xH, op_nop, store_C ;4C ;LD C,xh
3359 instr fetch_xL, op_nop, store_C ;4D ;LD C,xl
3360 instr fetch_MXX, op_nop, store_C ;4E ;LD C,(xx+d)
3361 instr fetch_nop, op_noni, store_nop ;4F ;
3362 instr fetch_nop, op_noni, store_nop ;50 ;
3363 instr fetch_nop, op_noni, store_nop ;51 ;
3364 instr fetch_nop, op_noni, store_nop ;52 ;
3365 instr fetch_nop, op_noni, store_nop ;53 ;
3366 instr fetch_xH, op_nop, store_D ;54 ;LD D,xh
3367 instr fetch_xL, op_nop, store_D ;55 ;LD D,xl
3368 instr fetch_MXX, op_nop, store_D ;56 ;LD D,(xx+d)
3369 instr fetch_nop, op_noni, store_nop ;57 ;
3370 instr fetch_nop, op_noni, store_nop ;58 ;
3371 instr fetch_nop, op_noni, store_nop ;59 ;
3372 instr fetch_nop, op_noni, store_nop ;5A ;
3373 instr fetch_nop, op_noni, store_nop ;5B ;
3374 instr fetch_xH, op_nop, store_E ;5C ;LD E,xh
3375 instr fetch_xL, op_nop, store_E ;5D ;LD E,xl
3376 instr fetch_MXX, op_nop, store_E ;5E ;LD E,(xx+d)
3377 instr fetch_nop, op_noni, store_nop ;5F ;
3378 instr fetch_B, op_nop, store_xH ;60 ;LD xh,B
3379 instr fetch_C, op_nop, store_xH ;61 ;LD xh,C
3380 instr fetch_D, op_nop, store_xH ;62 ;LD xh,D
3381 instr fetch_E, op_nop, store_xH ;63 ;LD xh,E
3382 instr fetch_nop, op_noni, store_nop ;64 ;LD xh,xh
3383 instr fetch_xL, op_nop, store_xH ;65 ;LD xh,xl
3384 instr fetch_MXX, op_nop, store_H ;66 ;LD H,(xx+d)
3385 instr fetch_A, op_nop, store_xH ;67 ;LD xh,A
3386 instr fetch_B, op_nop, store_xL ;68 ;LD xl,B
3387 instr fetch_C, op_nop, store_xL ;69 ;LD xl,C
3388 instr fetch_D, op_nop, store_xL ;6A ;LD xl,D
3389 instr fetch_E, op_nop, store_xL ;6B ;LD xl,E
3390 instr fetch_xH, op_nop, store_xL ;6C ;LD xl,xh
3391 instr fetch_nop, op_noni, store_nop ;6D ;LD xl,xl
3392 instr fetch_MXX, op_nop, store_L ;6E ;LD L,(xx+d)
3393 instr fetch_A, op_nop, store_xL ;6F ;LD xl,A
3394 instr fetch_B, op_nop, store_MXX ;70 ;LD (xx+d),B
3395 instr fetch_C, op_nop, store_MXX ;71 ;LD (xx+d),C
3396 instr fetch_D, op_nop, store_MXX ;72 ;LD (xx+d),D
3397 instr fetch_E, op_nop, store_MXX ;73 ;LD (xx+d),E
3398 instr fetch_H, op_nop, store_MXX ;74 ;LD (xx+d),H
3399 instr fetch_L, op_nop, store_MXX ;75 ;LD (xx+d),L
3400 instr fetch_nop, op_noni, store_nop ;76 ;
3401 instr fetch_A, op_nop, store_MXX ;77 ;LD (xx+d),A
3402 instr fetch_nop, op_noni, store_nop ;78 ;
3403 instr fetch_nop, op_noni, store_nop ;79 ;
3404 instr fetch_nop, op_noni, store_nop ;7A ;
3405 instr fetch_nop, op_noni, store_nop ;7B ;
3406 instr fetch_xH, op_nop, store_A ;7C ;LD A,xh
3407 instr fetch_xL, op_nop, store_A ;7D ;LD A,xl
3408 instr fetch_MXX, op_nop, store_A ;7E ;LD A,(xx+d)
3409 instr fetch_nop, op_noni, store_nop ;7F ;
3410 instr fetch_nop, op_noni, store_nop ;80 ;
3411 instr fetch_nop, op_noni, store_nop ;81 ;
3412 instr fetch_nop, op_noni, store_nop ;82 ;
3413 instr fetch_nop, op_noni, store_nop ;83 ;
3414 instr fetch_xH, op_ADDA, store_nop ;84 ;ADD A,xh
3415 instr fetch_xL, op_ADDA, store_nop ;85 ;ADD A,xl
3416 instr fetch_MXX, op_ADDA, store_nop ;86 ;ADD A,(xx)
3417 instr fetch_nop, op_noni, store_nop ;87 ;
3418 instr fetch_nop, op_noni, store_nop ;88 ;
3419 instr fetch_nop, op_noni, store_nop ;89 ;
3420 instr fetch_nop, op_noni, store_nop ;8A ;
3421 instr fetch_nop, op_noni, store_nop ;8B ;
3422 instr fetch_xH, op_ADCA, store_nop ;8C ;ADC A,xh
3423 instr fetch_xL, op_ADCA, store_nop ;8D ;ADC A,xl
3424 instr fetch_MXX, op_ADCA, store_nop ;8E ;ADC A,(xx)
3425 instr fetch_nop, op_noni, store_nop ;8F ;
3426 instr fetch_nop, op_noni, store_nop ;90 ;
3427 instr fetch_nop, op_noni, store_nop ;91 ;
3428 instr fetch_nop, op_noni, store_nop ;92 ;
3429 instr fetch_nop, op_noni, store_nop ;93 ;
3430 instr fetch_xH, op_SUBFA, store_nop ;94 ;SUB A,xh
3431 instr fetch_xL, op_SUBFA, store_nop ;95 ;SUB A,xl
3432 instr fetch_MXX, op_SUBFA, store_nop ;96 ;SUB A,(xx)
3433 instr fetch_nop, op_noni, store_nop ;97 ;
3434 instr fetch_nop, op_noni, store_nop ;98 ;
3435 instr fetch_nop, op_noni, store_nop ;99 ;
3436 instr fetch_nop, op_noni, store_nop ;9A ;
3437 instr fetch_nop, op_noni, store_nop ;9B ;
3438 instr fetch_xH, op_SBCFA, store_nop ;9C ;SBC A,xh
3439 instr fetch_xL, op_SBCFA, store_nop ;9D ;SBC A,xl
3440 instr fetch_MXX, op_SBCFA, store_nop ;9E ;SBC A,(xx)
3441 instr fetch_nop, op_noni, store_nop ;9F ;
3442 instr fetch_nop, op_noni, store_nop ;A0 ;
3443 instr fetch_nop, op_noni, store_nop ;A1 ;
3444 instr fetch_nop, op_noni, store_nop ;A2 ;
3445 instr fetch_nop, op_noni, store_nop ;A3 ;
3446 instr fetch_xH, op_ANDA, store_nop ;A4 ;AND A,xh
3447 instr fetch_xL, op_ANDA, store_nop ;A5 ;AND A,xl
3448 instr fetch_MXX, op_ANDA, store_nop ;A6 ;AND A,(xx)
3449 instr fetch_nop, op_noni, store_nop ;A7 ;
3450 instr fetch_nop, op_noni, store_nop ;A8 ;
3451 instr fetch_nop, op_noni, store_nop ;A9 ;
3452 instr fetch_nop, op_noni, store_nop ;AA ;
3453 instr fetch_nop, op_noni, store_nop ;AB ;
3454 instr fetch_xH, op_XORA, store_nop ;AC ;XOR A,xh
3455 instr fetch_xL, op_XORA, store_nop ;AD ;XOR A,xl
3456 instr fetch_MXX, op_XORA, store_nop ;AE ;XOR A,(xx)
3457 instr fetch_nop, op_noni, store_nop ;AF ;
3458 instr fetch_nop, op_noni, store_nop ;B0 ;
3459 instr fetch_nop, op_noni, store_nop ;B1 ;
3460 instr fetch_nop, op_noni, store_nop ;B2 ;
3461 instr fetch_nop, op_noni, store_nop ;B3 ;
3462 instr fetch_xH, op_ORA, store_nop ;B4 ;OR A,xh
3463 instr fetch_xL, op_ORA, store_nop ;B5 ;OR A,xl
3464 instr fetch_MXX, op_ORA, store_nop ;B6 ;OR A,(xx)
3465 instr fetch_nop, op_noni, store_nop ;B7 ;
3466 instr fetch_nop, op_noni, store_nop ;B8 ;
3467 instr fetch_nop, op_noni, store_nop ;B9 ;
3468 instr fetch_nop, op_noni, store_nop ;BA ;
3469 instr fetch_nop, op_noni, store_nop ;BB ;
3470 instr fetch_xH, op_CPFA, store_nop ;BC ;CP A,xh
3471 instr fetch_xL, op_CPFA, store_nop ;BD ;CP A,xl
3472 instr fetch_MXX, op_CPFA, store_nop ;BE ;CP A,(xx)
3473 instr fetch_nop, op_noni, store_nop ;BF ;
3474 instr fetch_nop, op_noni, store_nop ;C0 ;
3475 instr fetch_nop, op_noni, store_nop ;C1 ;
3476 instr fetch_nop, op_noni, store_nop ;C2 ;
3477 instr fetch_nop, op_noni, store_nop ;C3 ;
3478 instr fetch_nop, op_noni, store_nop ;C4 ;
3479 instr fetch_nop, op_noni, store_nop ;C5 ;
3480 instr fetch_nop, op_noni, store_nop ;C6 ;
3481 instr fetch_nop, op_noni, store_nop ;C7 ;
3482 instr fetch_nop, op_noni, store_nop ;C8 ;
3483 instr fetch_nop, op_noni, store_nop ;C9 ;
3484 instr fetch_nop, op_noni, store_nop ;CA ;
3485 instr fetch_nop, op_prefixDDFDCB,store_nop ;CB ;
3486 instr fetch_nop, op_noni, store_nop ;CC ;
3487 instr fetch_nop, op_noni, store_nop ;CD ;
3488 instr fetch_nop, op_noni, store_nop ;CE ;
3489 instr fetch_nop, op_noni, store_nop ;CF ;
3490 instr fetch_nop, op_noni, store_nop ;D0 ;
3491 instr fetch_nop, op_noni, store_nop ;D1 ;
3492 instr fetch_nop, op_noni, store_nop ;D2 ;
3493 instr fetch_nop, op_noni, store_nop ;D3 ;
3494 instr fetch_nop, op_noni, store_nop ;D4 ;
3495 instr fetch_nop, op_noni, store_nop ;D5 ;
3496 instr fetch_nop, op_noni, store_nop ;D6 ;
3497 instr fetch_nop, op_noni, store_nop ;D7 ;
3498 instr fetch_nop, op_noni, store_nop ;D8 ;
3499 instr fetch_nop, op_noni, store_nop ;D9 ;
3500 instr fetch_nop, op_noni, store_nop ;DA ;
3501 instr fetch_nop, op_noni, store_nop ;DB ;
3502 instr fetch_nop, op_noni, store_nop ;DC ;
3503 instr fetch_nop, op_noni, store_nop ;DD ;
3504 instr fetch_nop, op_noni, store_nop ;DE ;
3505 instr fetch_nop, op_noni, store_nop ;DF ;
3506 instr fetch_nop, op_noni, store_nop ;E0 ;
3507 instr fetch_nop, op_POP16, store_xx ;E1 ;POP xx
3508 instr fetch_nop, op_noni, store_nop ;E2 ;
3509 instr fetch_MSP, op_EXxx, store_MSP ;E3 ;EX (SP),xx
3510 instr fetch_nop, op_noni, store_nop ;E4 ;
3511 instr fetch_xx, op_PUSH16, store_nop ;E5 ;PUSH xx
3512 instr fetch_nop, op_noni, store_nop ;E6 ;
3513 instr fetch_nop, op_noni, store_nop ;E7 ;
3514 instr fetch_nop, op_noni, store_nop ;E8 ;
3515 instr fetch_xx, op_nop, store_PC ;E9 ;JP xx
3516 instr fetch_nop, op_noni, store_nop ;EA ;
3517 instr fetch_nop, op_noni, store_nop ;EB ;
3518 instr fetch_nop, op_noni, store_nop ;EC ;
3519 instr fetch_nop, op_noni, store_nop ;ED ;
3520 instr fetch_nop, op_noni, store_nop ;EE ;
3521 instr fetch_nop, op_noni, store_nop ;EF ;
3522 instr fetch_nop, op_noni, store_nop ;F0 ;
3523 instr fetch_nop, op_noni, store_nop ;F1 ;
3524 instr fetch_nop, op_noni, store_nop ;F2 ;
3525 instr fetch_nop, op_noni, store_nop ;F3 ;
3526 instr fetch_nop, op_noni, store_nop ;F4 ;
3527 instr fetch_nop, op_noni, store_nop ;F5 ;
3528 instr fetch_nop, op_noni, store_nop ;F6 ;
3529 instr fetch_nop, op_noni, store_nop ;F7 ;
3530 instr fetch_nop, op_noni, store_nop ;F8 ;
3531 instr fetch_xx, op_nop, store_SP ;F9 ;LD SP,xx
3532 instr fetch_nop, op_noni, store_nop ;FA ;
3533 instr fetch_nop, op_noni, store_nop ;FB ;
3534 instr fetch_nop, op_noni, store_nop ;FC ;
3535 instr fetch_nop, op_noni, store_nop ;FD ;
3536 instr fetch_nop, op_noni, store_nop ;FE ;
3537 instr fetch_nop, op_noni, store_nop ;FF ;
3541 ;----------------------------------------------------------------
3542 ;|Mnemonic |SZHPNC|Description |Notes |
3543 ;----------------------------------------------------------------
3544 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
3545 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
3546 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
3547 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
3548 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
3549 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
3550 ;|SLL m |**0P0*|Shift Right Logical |
3551 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
3555 ;Rotate Left Cyclical. All bits move 1 to the
3556 ;left, the msb becomes c and lsb.
3561 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3566 ;Rotate Right Cyclical. All bits move 1 to the
3567 ;right, the lsb becomes c and msb.
3571 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3572 bmov z_flags,ZFL_C, opl,7
3577 ;Rotate Left. All bits move 1 to the left, the msb
3578 ;becomes c, c becomes lsb.
3584 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3585 bmov z_flags,ZFL_C, temp,AVR_C
3590 ;Rotate Right. All bits move 1 to the right, the lsb
3591 ;becomes c, c becomes msb.
3595 bmov opl,7, z_flags,ZFL_C ;old CY --> Bit 7
3596 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3597 bmov z_flags,ZFL_C, temp,AVR_C ;
3603 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3604 bmov z_flags,ZFL_C, temp,AVR_C ;
3610 bmov opl,7, opl,6 ;old CY --> Bit 7
3611 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3612 bmov z_flags,ZFL_C, temp,AVR_C ;
3619 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3620 bmov z_flags,ZFL_C, temp,AVR_C ;
3626 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3627 bmov z_flags,ZFL_C, temp,AVR_C ;
3630 ;----------------------------------------------------------------
3631 ;|Mnemonic |SZHPNC|Description |Notes |
3632 ;----------------------------------------------------------------
3633 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
3634 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
3635 ;|SET b,m |------|Set bit |m=mv{2^b} |
3664 ori z_flags,(1<<ZFL_H)
3665 andi z_flags,~(1<<ZFL_N)
3666 bmov z_flags,ZFL_Z, temp,AVR_Z
3783 ;.macro m_do_store_b
3786 ;.equ do_store_b = 0
3823 instr fetch_B, op_RLC, store2_B ;00 ;RLC B
3824 instr fetch_C, op_RLC, store2_C ;01 ;RLC C
3825 instr fetch_D, op_RLC, store2_D ;02 ;RLC D
3826 instr fetch_E, op_RLC, store2_E ;03 ;RLC E
3827 instr fetch_H, op_RLC, store2_H ;04 ;RLC H
3828 instr fetch_L, op_RLC, store2_L ;05 ;RLC L
3829 instr fetch2_mhl, op_RLC, store_MHL ;06 ;RLC (HL)
3830 instr fetch_A, op_RLC, store2_A ;07 ;RLC A
3831 instr fetch_B, op_RRC, store2_B ;08 ;RRC B
3832 instr fetch_C, op_RRC, store2_C ;09 ;RRC C
3833 instr fetch_D, op_RRC, store2_D ;0A ;RRC D
3834 instr fetch_E, op_RRC, store2_E ;0B ;RRC E
3835 instr fetch_H, op_RRC, store2_H ;0C ;RRC H
3836 instr fetch_L, op_RRC, store2_L ;0D ;RRC L
3837 instr fetch2_mhl, op_RRC, store_MHL ;0E ;RRC (HL)
3838 instr fetch_A, op_RRC, store2_A ;0F ;RRC A
3839 instr fetch_B, op_RL, store2_B ;10 ;RL B
3840 instr fetch_C, op_RL, store2_C ;11 ;RL C
3841 instr fetch_D, op_RL, store2_D ;12 ;RL D
3842 instr fetch_E, op_RL, store2_E ;13 ;RL E
3843 instr fetch_H, op_RL, store2_H ;14 ;RL H
3844 instr fetch_L, op_RL, store2_L ;15 ;RL L
3845 instr fetch2_mhl, op_RL, store_MHL ;16 ;RL (HL)
3846 instr fetch_A, op_RL, store2_A ;17 ;RL A
3847 instr fetch_B, op_RR, store2_B ;18 ;RR B
3848 instr fetch_C, op_RR, store2_C ;19 ;RR C
3849 instr fetch_D, op_RR, store2_D ;1A ;RR D
3850 instr fetch_E, op_RR, store2_E ;1B ;RR E
3851 instr fetch_H, op_RR, store2_H ;1C ;RR H
3852 instr fetch_L, op_RR, store2_L ;1D ;RR L
3853 instr fetch2_mhl, op_RR, store_MHL ;1E ;RR (HL)
3854 instr fetch_A, op_RR, store2_A ;1F ;RR A
3855 instr fetch_B, op_SLA, store2_B ;20 ;SLA B
3856 instr fetch_C, op_SLA, store2_C ;21 ;SLA C
3857 instr fetch_D, op_SLA, store2_D ;22 ;SLA D
3858 instr fetch_E, op_SLA, store2_E ;23 ;SLA E
3859 instr fetch_H, op_SLA, store2_H ;24 ;SLA H
3860 instr fetch_L, op_SLA, store2_L ;25 ;SLA L
3861 instr fetch2_mhl, op_SLA, store_MHL ;26 ;SLA (HL)
3862 instr fetch_A, op_SLA, store2_A ;27 ;SLA A
3863 instr fetch_B, op_SRA, store2_B ;28 ;SRA B
3864 instr fetch_C, op_SRA, store2_C ;29 ;SRA C
3865 instr fetch_D, op_SRA, store2_D ;2A ;SRA D
3866 instr fetch_E, op_SRA, store2_E ;2B ;SRA E
3867 instr fetch_H, op_SRA, store2_H ;2C ;SRA H
3868 instr fetch_L, op_SRA, store2_L ;2D ;SRA L
3869 instr fetch2_mhl, op_SRA, store_MHL ;2E ;SRA (HL)
3870 instr fetch_A, op_SRA, store2_A ;2F ;SRA A
3871 instr fetch_B, op_SLL, store2_B ;30 ;SLL B
3872 instr fetch_C, op_SLL, store2_C ;31 ;SLL C
3873 instr fetch_D, op_SLL, store2_D ;32 ;SLL D
3874 instr fetch_E, op_SLL, store2_E ;33 ;SLL E
3875 instr fetch_H, op_SLL, store2_H ;34 ;SLL H
3876 instr fetch_L, op_SLL, store2_L ;35 ;SLL L
3877 instr fetch2_mhl, op_SLL, store_MHL ;36 ;SLL (HL)
3878 instr fetch_A, op_SLL, store2_A ;37 ;SLL A
3879 instr fetch_B, op_SRL, store2_B ;38 ;SRL B
3880 instr fetch_C, op_SRL, store2_C ;39 ;SRL C
3881 instr fetch_D, op_SRL, store2_D ;3A ;SRL D
3882 instr fetch_E, op_SRL, store2_E ;3B ;SRL E
3883 instr fetch_H, op_SRL, store2_H ;3C ;SRL H
3884 instr fetch_L, op_SRL, store2_L ;3D ;SRL L
3885 instr fetch2_mhl, op_SRL, store_MHL ;3E ;SRL (HL)
3886 instr fetch_A, op_SRL, store2_A ;3F ;SRL A
3887 instr fetch_B, op_BIT0, store_nop ;40 ;BIT 0,B
3888 instr fetch_C, op_BIT0, store_nop ;41 ;BIT 0,C
3889 instr fetch_D, op_BIT0, store_nop ;42 ;BIT 0,D
3890 instr fetch_E, op_BIT0, store_nop ;43 ;BIT 0,E
3891 instr fetch_H, op_BIT0, store_nop ;44 ;BIT 0,H
3892 instr fetch_L, op_BIT0, store_nop ;45 ;BIT 0,L
3893 instr fetch2_mhl, op_BIT0, store_nop ;46 ;BIT 0,(HL)
3894 instr fetch_A, op_BIT0, store_nop ;47 ;BIT 0,A
3895 instr fetch_B, op_BIT1, store_nop ;48 ;BIT 1,B
3896 instr fetch_C, op_BIT1, store_nop ;49 ;BIT 1,C
3897 instr fetch_D, op_BIT1, store_nop ;4A ;BIT 1,D
3898 instr fetch_E, op_BIT1, store_nop ;4B ;BIT 1,E
3899 instr fetch_H, op_BIT1, store_nop ;4C ;BIT 1,H
3900 instr fetch_L, op_BIT1, store_nop ;4D ;BIT 1,L
3901 instr fetch2_mhl, op_BIT1, store_nop ;4E ;BIT 1,(HL)
3902 instr fetch_A, op_BIT1, store_nop ;4F ;BIT 1,A
3903 instr fetch_B, op_BIT2, store_nop ;50 ;BIT 2,B
3904 instr fetch_C, op_BIT2, store_nop ;51 ;BIT 2,C
3905 instr fetch_D, op_BIT2, store_nop ;52 ;BIT 2,D
3906 instr fetch_E, op_BIT2, store_nop ;53 ;BIT 2,E
3907 instr fetch_H, op_BIT2, store_nop ;54 ;BIT 2,H
3908 instr fetch_L, op_BIT2, store_nop ;55 ;BIT 2,L
3909 instr fetch2_mhl, op_BIT2, store_nop ;56 ;BIT 2,(HL)
3910 instr fetch_A, op_BIT2, store_nop ;57 ;BIT 2,A
3911 instr fetch_B, op_BIT3, store_nop ;58 ;BIT 3,B
3912 instr fetch_C, op_BIT3, store_nop ;59 ;BIT 3,C
3913 instr fetch_D, op_BIT3, store_nop ;5A ;BIT 3,D
3914 instr fetch_E, op_BIT3, store_nop ;5B ;BIT 3,E
3915 instr fetch_H, op_BIT3, store_nop ;5C ;BIT 3,H
3916 instr fetch_L, op_BIT3, store_nop ;5D ;BIT 3,L
3917 instr fetch2_mhl, op_BIT3, store_nop ;5E ;BIT 3,(HL)
3918 instr fetch_A, op_BIT3, store_nop ;5F ;BIT 3,A
3919 instr fetch_B, op_BIT4, store_nop ;60 ;BIT 4,B
3920 instr fetch_C, op_BIT4, store_nop ;61 ;BIT 4,C
3921 instr fetch_D, op_BIT4, store_nop ;62 ;BIT 4,D
3922 instr fetch_E, op_BIT4, store_nop ;63 ;BIT 4,E
3923 instr fetch_H, op_BIT4, store_nop ;64 ;BIT 4,H
3924 instr fetch_L, op_BIT4, store_nop ;65 ;BIT 4,L
3925 instr fetch2_mhl, op_BIT4, store_nop ;66 ;BIT 4,(HL)
3926 instr fetch_A, op_BIT4, store_nop ;67 ;BIT 4,A
3927 instr fetch_B, op_BIT5, store_nop ;68 ;BIT 5,B
3928 instr fetch_C, op_BIT5, store_nop ;69 ;BIT 5,C
3929 instr fetch_D, op_BIT5, store_nop ;6A ;BIT 5,D
3930 instr fetch_E, op_BIT5, store_nop ;6B ;BIT 5,E
3931 instr fetch_H, op_BIT5, store_nop ;6C ;BIT 5,H
3932 instr fetch_L, op_BIT5, store_nop ;6D ;BIT 5,L
3933 instr fetch2_mhl, op_BIT5, store_nop ;6E ;BIT 5,(HL)
3934 instr fetch_A, op_BIT5, store_nop ;6F ;BIT 5,A
3935 instr fetch_B, op_BIT6, store_nop ;70 ;BIT 6,B
3936 instr fetch_C, op_BIT6, store_nop ;71 ;BIT 6,C
3937 instr fetch_D, op_BIT6, store_nop ;72 ;BIT 6,D
3938 instr fetch_E, op_BIT6, store_nop ;73 ;BIT 6,E
3939 instr fetch_H, op_BIT6, store_nop ;74 ;BIT 6,H
3940 instr fetch_L, op_BIT6, store_nop ;75 ;BIT 6,L
3941 instr fetch2_mhl, op_BIT6, store_nop ;76 ;BIT 6,(HL)
3942 instr fetch_A, op_BIT6, store_nop ;77 ;BIT 6,A
3943 instr fetch_B, op_BIT7, store_nop ;78 ;BIT 7,B
3944 instr fetch_C, op_BIT7, store_nop ;79 ;BIT 7,C
3945 instr fetch_D, op_BIT7, store_nop ;7A ;BIT 7,D
3946 instr fetch_E, op_BIT7, store_nop ;7B ;BIT 7,E
3947 instr fetch_H, op_BIT7, store_nop ;7C ;BIT 7,H
3948 instr fetch_L, op_BIT7, store_nop ;7D ;BIT 7,L
3949 instr fetch2_mhl, op_BIT7, store_nop ;7E ;BIT 7,(HL)
3950 instr fetch_A, op_BIT7, store_nop ;7F ;BIT 7,A
3951 instr fetch_B, op_RES0, store2_B ;80 ;RES 0,B
3952 instr fetch_C, op_RES0, store2_C ;81 ;RES 0,C
3953 instr fetch_D, op_RES0, store2_D ;82 ;RES 0,D
3954 instr fetch_E, op_RES0, store2_E ;83 ;RES 0,E
3955 instr fetch_H, op_RES0, store2_H ;84 ;RES 0,H
3956 instr fetch_L, op_RES0, store2_L ;85 ;RES 0,L
3957 instr fetch2_mhl, op_RES0, store_MHL ;86 ;RES 0,(HL)
3958 instr fetch_A, op_RES0, store2_A ;87 ;RES 0,A
3959 instr fetch_B, op_RES1, store2_B ;88 ;RES 1,B
3960 instr fetch_C, op_RES1, store2_C ;89 ;RES 1,C
3961 instr fetch_D, op_RES1, store2_D ;8A ;RES 1,D
3962 instr fetch_E, op_RES1, store2_E ;8B ;RES 1,E
3963 instr fetch_H, op_RES1, store2_H ;8C ;RES 1,H
3964 instr fetch_L, op_RES1, store2_L ;8D ;RES 1,L
3965 instr fetch2_mhl, op_RES1, store_MHL ;8E ;RES 1,(HL)
3966 instr fetch_A, op_RES1, store2_A ;8F ;RES 1,A
3967 instr fetch_B, op_RES2, store2_B ;90 ;RES 2,B
3968 instr fetch_C, op_RES2, store2_C ;91 ;RES 2,C
3969 instr fetch_D, op_RES2, store2_D ;92 ;RES 2,D
3970 instr fetch_E, op_RES2, store2_E ;93 ;RES 2,E
3971 instr fetch_H, op_RES2, store2_H ;94 ;RES 2,H
3972 instr fetch_L, op_RES2, store2_L ;95 ;RES 2,L
3973 instr fetch2_mhl, op_RES2, store_MHL ;96 ;RES 2,(HL)
3974 instr fetch_A, op_RES2, store2_A ;97 ;RES 2,A
3975 instr fetch_B, op_RES3, store2_B ;98 ;RES 3,B
3976 instr fetch_C, op_RES3, store2_C ;99 ;RES 3,C
3977 instr fetch_D, op_RES3, store2_D ;9A ;RES 3,D
3978 instr fetch_E, op_RES3, store2_E ;9B ;RES 3,E
3979 instr fetch_H, op_RES3, store2_H ;9C ;RES 3,H
3980 instr fetch_L, op_RES3, store2_L ;9D ;RES 3,L
3981 instr fetch2_mhl, op_RES3, store_MHL ;9E ;RES 3,(HL)
3982 instr fetch_A, op_RES3, store2_A ;9F ;RES 3,A
3983 instr fetch_B, op_RES4, store2_B ;A0 ;RES 4,B
3984 instr fetch_C, op_RES4, store2_C ;A1 ;RES 4,C
3985 instr fetch_D, op_RES4, store2_D ;A2 ;RES 4,D
3986 instr fetch_E, op_RES4, store2_E ;A3 ;RES 4,E
3987 instr fetch_H, op_RES4, store2_H ;A4 ;RES 4,H
3988 instr fetch_L, op_RES4, store2_L ;A5 ;RES 4,L
3989 instr fetch2_mhl, op_RES4, store_MHL ;A6 ;RES 4,(HL)
3990 instr fetch_A, op_RES4, store2_A ;A7 ;RES 4,A
3991 instr fetch_B, op_RES5, store2_B ;A8 ;RES 5,B
3992 instr fetch_C, op_RES5, store2_C ;A9 ;RES 5,C
3993 instr fetch_D, op_RES5, store2_D ;AA ;RES 5,D
3994 instr fetch_E, op_RES5, store2_E ;AB ;RES 5,E
3995 instr fetch_H, op_RES5, store2_H ;AC ;RES 5,H
3996 instr fetch_L, op_RES5, store2_L ;AD ;RES 5,L
3997 instr fetch2_mhl, op_RES5, store_MHL ;AE ;RES 5,(HL)
3998 instr fetch_A, op_RES5, store2_A ;AF ;RES 5,A
3999 instr fetch_B, op_RES6, store2_B ;B0 ;RES 6,B
4000 instr fetch_C, op_RES6, store2_C ;B1 ;RES 6,C
4001 instr fetch_D, op_RES6, store2_D ;B2 ;RES 6,D
4002 instr fetch_E, op_RES6, store2_E ;B3 ;RES 6,E
4003 instr fetch_H, op_RES6, store2_H ;B4 ;RES 6,H
4004 instr fetch_L, op_RES6, store2_L ;B5 ;RES 6,L
4005 instr fetch2_mhl, op_RES6, store_MHL ;B6 ;RES 6,(HL)
4006 instr fetch_A, op_RES6, store2_A ;B7 ;RES 6,A
4007 instr fetch_B, op_RES7, store2_B ;B8 ;RES 7,B
4008 instr fetch_C, op_RES7, store2_C ;B9 ;RES 7,C
4009 instr fetch_D, op_RES7, store2_D ;BA ;RES 7,D
4010 instr fetch_E, op_RES7, store2_E ;BB ;RES 7,E
4011 instr fetch_H, op_RES7, store2_H ;BC ;RES 7,H
4012 instr fetch_L, op_RES7, store2_L ;BD ;RES 7,L
4013 instr fetch2_mhl, op_RES7, store_MHL ;BE ;RES 7,(HL)
4014 instr fetch_A, op_RES7, store2_A ;BF ;RES 7,A
4015 instr fetch_B, op_SET0, store2_B ;C0 ;SET 0,B
4016 instr fetch_C, op_SET0, store2_C ;C1 ;SET 0,C
4017 instr fetch_D, op_SET0, store2_D ;C2 ;SET 0,D
4018 instr fetch_E, op_SET0, store2_E ;C3 ;SET 0,E
4019 instr fetch_H, op_SET0, store2_H ;C4 ;SET 0,H
4020 instr fetch_L, op_SET0, store2_L ;C5 ;SET 0,L
4021 instr fetch2_mhl, op_SET0, store_MHL ;C6 ;SET 0,(HL)
4022 instr fetch_A, op_SET0, store2_A ;C7 ;SET 0,A
4023 instr fetch_B, op_SET1, store2_B ;C8 ;SET 1,B
4024 instr fetch_C, op_SET1, store2_C ;C9 ;SET 1,C
4025 instr fetch_D, op_SET1, store2_D ;CA ;SET 1,D
4026 instr fetch_E, op_SET1, store2_E ;CB ;SET 1,E
4027 instr fetch_H, op_SET1, store2_H ;CC ;SET 1,H
4028 instr fetch_L, op_SET1, store2_L ;CD ;SET 1,L
4029 instr fetch2_mhl, op_SET1, store_MHL ;CE ;SET 1,(HL)
4030 instr fetch_A, op_SET1, store2_A ;CF ;SET 1,A
4031 instr fetch_B, op_SET2, store2_B ;D0 ;SET 2,B
4032 instr fetch_C, op_SET2, store2_C ;D1 ;SET 2,C
4033 instr fetch_D, op_SET2, store2_D ;D2 ;SET 2,D
4034 instr fetch_E, op_SET2, store2_E ;D3 ;SET 2,E
4035 instr fetch_H, op_SET2, store2_H ;D4 ;SET 2,H
4036 instr fetch_L, op_SET2, store2_L ;D5 ;SET 2,L
4037 instr fetch2_mhl, op_SET2, store_MHL ;D6 ;SET 2,(HL)
4038 instr fetch_A, op_SET2, store2_A ;D7 ;SET 2,A
4039 instr fetch_B, op_SET3, store2_B ;D8 ;SET 3,B
4040 instr fetch_C, op_SET3, store2_C ;D9 ;SET 3,C
4041 instr fetch_D, op_SET3, store2_D ;DA ;SET 3,D
4042 instr fetch_E, op_SET3, store2_E ;DB ;SET 3,E
4043 instr fetch_H, op_SET3, store2_H ;DC ;SET 3,H
4044 instr fetch_L, op_SET3, store2_L ;DD ;SET 3,L
4045 instr fetch2_mhl, op_SET3, store_MHL ;DE ;SET 3,(HL)
4046 instr fetch_A, op_SET3, store2_A ;DF ;SET 3,A
4047 instr fetch_B, op_SET4, store2_B ;E0 ;SET 4,B
4048 instr fetch_C, op_SET4, store2_C ;E1 ;SET 4,C
4049 instr fetch_D, op_SET4, store2_D ;E2 ;SET 4,D
4050 instr fetch_E, op_SET4, store2_E ;E3 ;SET 4,E
4051 instr fetch_H, op_SET4, store2_H ;E4 ;SET 4,H
4052 instr fetch_L, op_SET4, store2_L ;E5 ;SET 4,L
4053 instr fetch2_mhl, op_SET4, store_MHL ;E6 ;SET 4,(HL)
4054 instr fetch_A, op_SET4, store2_A ;E7 ;SET 4,A
4055 instr fetch_B, op_SET5, store2_B ;E8 ;SET 5,B
4056 instr fetch_C, op_SET5, store2_C ;E9 ;SET 5,C
4057 instr fetch_D, op_SET5, store2_D ;EA ;SET 5,D
4058 instr fetch_E, op_SET5, store2_E ;EB ;SET 5,E
4059 instr fetch_H, op_SET5, store2_H ;EC ;SET 5,H
4060 instr fetch_L, op_SET5, store2_L ;ED ;SET 5,L
4061 instr fetch2_mhl, op_SET5, store_MHL ;EE ;SET 5,(HL)
4062 instr fetch_A, op_SET5, store2_A ;EF ;SET 5,A
4063 instr fetch_B, op_SET6, store2_B ;F0 ;SET 6,B
4064 instr fetch_C, op_SET6, store2_C ;F1 ;SET 6,C
4065 instr fetch_D, op_SET6, store2_D ;F2 ;SET 6,D
4066 instr fetch_E, op_SET6, store2_E ;F3 ;SET 6,E
4067 instr fetch_H, op_SET6, store2_H ;F4 ;SET 6,H
4068 instr fetch_L, op_SET6, store2_L ;F5 ;SET 6,L
4069 instr fetch2_mhl, op_SET6, store_MHL ;F6 ;SET 6,(HL)
4070 instr fetch_A, op_SET6, store2_A ;F7 ;SET 6,A
4071 instr fetch_B, op_SET7, store2_B ;F8 ;SET 7,B
4072 instr fetch_C, op_SET7, store2_C ;F9 ;SET 7,C
4073 instr fetch_D, op_SET7, store2_D ;FA ;SET 7,D
4074 instr fetch_E, op_SET7, store2_E ;FB ;SET 7,E
4075 instr fetch_H, op_SET7, store2_H ;FC ;SET 7,H
4076 instr fetch_L, op_SET7, store2_L ;FD ;SET 7,L
4077 instr fetch2_mhl, op_SET7, store_MHL ;FE ;SET 7,(HL)
4078 instr fetch_A, op_SET7, store2_A ;FF ;SET 7,A
4083 instr fetch_nop, op_RLC, store2_B ;00 ;RLC (Ix+d),B
4084 instr fetch_nop, op_RLC, store2_C ;01 ;RLC (Ix+d),C
4085 instr fetch_nop, op_RLC, store2_D ;02 ;RLC (Ix+d),D
4086 instr fetch_nop, op_RLC, store2_E ;03 ;RLC (Ix+d),E
4087 instr fetch_nop, op_RLC, store2_H ;04 ;RLC (Ix+d),H
4088 instr fetch_nop, op_RLC, store2_L ;05 ;RLC (Ix+d),L
4089 instr fetch_nop, op_RLC, store_nop ;06 ;RLC (Ix+d)
4090 instr fetch_nop, op_RLC, store2_A ;07 ;RLC (Ix+d),A
4091 instr fetch_nop, op_RRC, store2_B ;08 ;RRC (Ix+d),B
4092 instr fetch_nop, op_RRC, store2_C ;09 ;RRC (Ix+d),C
4093 instr fetch_nop, op_RRC, store2_D ;0A ;RRC (Ix+d),D
4094 instr fetch_nop, op_RRC, store2_E ;0B ;RRC (Ix+d),E
4095 instr fetch_nop, op_RRC, store2_H ;0C ;RRC (Ix+d),H
4096 instr fetch_nop, op_RRC, store2_L ;0D ;RRC (Ix+d),L
4097 instr fetch_nop, op_RRC, store_nop ;0E ;RRC (Ix+d)
4098 instr fetch_nop, op_RRC, store2_A ;0F ;RRC (Ix+d),A
4099 instr fetch_nop, op_RL, store2_B ;10 ;RL (Ix+d),B
4100 instr fetch_nop, op_RL, store2_C ;11 ;RL (Ix+d),C
4101 instr fetch_nop, op_RL, store2_D ;12 ;RL (Ix+d),D
4102 instr fetch_nop, op_RL, store2_E ;13 ;RL (Ix+d),E
4103 instr fetch_nop, op_RL, store2_H ;14 ;RL (Ix+d),H
4104 instr fetch_nop, op_RL, store2_L ;15 ;RL (Ix+d),L
4105 instr fetch_nop, op_RL, store_nop ;16 ;RL (Ix+d)
4106 instr fetch_nop, op_RL, store2_A ;17 ;RL (Ix+d),A
4107 instr fetch_nop, op_RR, store2_B ;18 ;RR (Ix+d),B
4108 instr fetch_nop, op_RR, store2_C ;19 ;RR (Ix+d),C
4109 instr fetch_nop, op_RR, store2_D ;1A ;RR (Ix+d),D
4110 instr fetch_nop, op_RR, store2_E ;1B ;RR (Ix+d),E
4111 instr fetch_nop, op_RR, store2_H ;1C ;RR (Ix+d),H
4112 instr fetch_nop, op_RR, store2_L ;1D ;RR (Ix+d),L
4113 instr fetch_nop, op_RR, store_nop ;1E ;RR (Ix+d)
4114 instr fetch_nop, op_RR, store2_A ;1F ;RR (Ix+d),A
4115 instr fetch_nop, op_SLA, store2_B ;20 ;SLA (Ix+d),B
4116 instr fetch_nop, op_SLA, store2_C ;21 ;SLA (Ix+d),C
4117 instr fetch_nop, op_SLA, store2_D ;22 ;SLA (Ix+d),D
4118 instr fetch_nop, op_SLA, store2_E ;23 ;SLA (Ix+d),E
4119 instr fetch_nop, op_SLA, store2_H ;24 ;SLA (Ix+d),H
4120 instr fetch_nop, op_SLA, store2_L ;25 ;SLA (Ix+d),L
4121 instr fetch_nop, op_SLA, store_nop ;26 ;SLA (Ix+d)
4122 instr fetch_nop, op_SLA, store2_A ;27 ;SLA (Ix+d),A
4123 instr fetch_nop, op_SRA, store2_B ;28 ;SRA (Ix+d),B
4124 instr fetch_nop, op_SRA, store2_C ;29 ;SRA (Ix+d),C
4125 instr fetch_nop, op_SRA, store2_D ;2A ;SRA (Ix+d),D
4126 instr fetch_nop, op_SRA, store2_E ;2B ;SRA (Ix+d),E
4127 instr fetch_nop, op_SRA, store2_H ;2C ;SRA (Ix+d),H
4128 instr fetch_nop, op_SRA, store2_L ;2D ;SRA (Ix+d),L
4129 instr fetch_nop, op_SRA, store_nop ;2E ;SRA (Ix+d)
4130 instr fetch_nop, op_SRA, store2_A ;2F ;SRA (Ix+d),A
4131 instr fetch_nop, op_SLL, store2_B ;30 ;SLL (Ix+d),B
4132 instr fetch_nop, op_SLL, store2_C ;31 ;SLL (Ix+d),C
4133 instr fetch_nop, op_SLL, store2_D ;32 ;SLL (Ix+d),D
4134 instr fetch_nop, op_SLL, store2_E ;33 ;SLL (Ix+d),E
4135 instr fetch_nop, op_SLL, store2_H ;34 ;SLL (Ix+d),H
4136 instr fetch_nop, op_SLL, store2_L ;35 ;SLL (Ix+d),L
4137 instr fetch_nop, op_SLL, store_nop ;36 ;SLL (Ix+d)
4138 instr fetch_nop, op_SLL, store2_A ;37 ;SLL (Ix+d),A
4139 instr fetch_nop, op_SRL, store2_B ;38 ;SRL (Ix+d),B
4140 instr fetch_nop, op_SRL, store2_C ;39 ;SRL (Ix+d),C
4141 instr fetch_nop, op_SRL, store2_D ;3A ;SRL (Ix+d),D
4142 instr fetch_nop, op_SRL, store2_E ;3B ;SRL (Ix+d),E
4143 instr fetch_nop, op_SRL, store2_H ;3C ;SRL (Ix+d),H
4144 instr fetch_nop, op_SRL, store2_L ;3D ;SRL (Ix+d),L
4145 instr fetch_nop, op_SRL, store_nop ;3E ;SRL (Ix+d)
4146 instr fetch_nop, op_SRL, store2_A ;3F ;SRL (Ix+d),A
4147 instr fetch_nop, op_BIT0, store_nop ;40 ;BIT 0,(Ix+d),B
4148 instr fetch_nop, op_BIT0, store_nop ;41 ;BIT 0,(Ix+d),C
4149 instr fetch_nop, op_BIT0, store_nop ;42 ;BIT 0,(Ix+d),D
4150 instr fetch_nop, op_BIT0, store_nop ;43 ;BIT 0,(Ix+d),E
4151 instr fetch_nop, op_BIT0, store_nop ;44 ;BIT 0,(Ix+d),H
4152 instr fetch_nop, op_BIT0, store_nop ;45 ;BIT 0,(Ix+d),L
4153 instr fetch_nop, op_BIT0, store_nop ;46 ;BIT 0,(Ix+d)
4154 instr fetch_nop, op_BIT0, store_nop ;47 ;BIT 0,(Ix+d),A
4155 instr fetch_nop, op_BIT1, store_nop ;48 ;BIT 1,(Ix+d),B
4156 instr fetch_nop, op_BIT1, store_nop ;49 ;BIT 1,(Ix+d),C
4157 instr fetch_nop, op_BIT1, store_nop ;4A ;BIT 1,(Ix+d),D
4158 instr fetch_nop, op_BIT1, store_nop ;4B ;BIT 1,(Ix+d),E
4159 instr fetch_nop, op_BIT1, store_nop ;4C ;BIT 1,(Ix+d),H
4160 instr fetch_nop, op_BIT1, store_nop ;4D ;BIT 1,(Ix+d),L
4161 instr fetch_nop, op_BIT1, store_nop ;4E ;BIT 1,(Ix+d)
4162 instr fetch_nop, op_BIT1, store_nop ;4F ;BIT 1,(Ix+d),A
4163 instr fetch_nop, op_BIT2, store_nop ;50 ;BIT 2,(Ix+d),B
4164 instr fetch_nop, op_BIT2, store_nop ;51 ;BIT 2,(Ix+d),C
4165 instr fetch_nop, op_BIT2, store_nop ;52 ;BIT 2,(Ix+d),D
4166 instr fetch_nop, op_BIT2, store_nop ;53 ;BIT 2,(Ix+d),E
4167 instr fetch_nop, op_BIT2, store_nop ;54 ;BIT 2,(Ix+d),H
4168 instr fetch_nop, op_BIT2, store_nop ;55 ;BIT 2,(Ix+d),L
4169 instr fetch_nop, op_BIT2, store_nop ;56 ;BIT 2,(Ix+d)
4170 instr fetch_nop, op_BIT2, store_nop ;57 ;BIT 2,(Ix+d),A
4171 instr fetch_nop, op_BIT3, store_nop ;58 ;BIT 3,(Ix+d),B
4172 instr fetch_nop, op_BIT3, store_nop ;59 ;BIT 3,(Ix+d),C
4173 instr fetch_nop, op_BIT3, store_nop ;5A ;BIT 3,(Ix+d),D
4174 instr fetch_nop, op_BIT3, store_nop ;5B ;BIT 3,(Ix+d),E
4175 instr fetch_nop, op_BIT3, store_nop ;5C ;BIT 3,(Ix+d),H
4176 instr fetch_nop, op_BIT3, store_nop ;5D ;BIT 3,(Ix+d),L
4177 instr fetch_nop, op_BIT3, store_nop ;5E ;BIT 3,(Ix+d)
4178 instr fetch_nop, op_BIT3, store_nop ;5F ;BIT 3,(Ix+d),A
4179 instr fetch_nop, op_BIT4, store_nop ;60 ;BIT 4,(Ix+d),B
4180 instr fetch_nop, op_BIT4, store_nop ;61 ;BIT 4,(Ix+d),C
4181 instr fetch_nop, op_BIT4, store_nop ;62 ;BIT 4,(Ix+d),D
4182 instr fetch_nop, op_BIT4, store_nop ;63 ;BIT 4,(Ix+d),E
4183 instr fetch_nop, op_BIT4, store_nop ;64 ;BIT 4,(Ix+d),H
4184 instr fetch_nop, op_BIT4, store_nop ;65 ;BIT 4,(Ix+d),L
4185 instr fetch_nop, op_BIT4, store_nop ;66 ;BIT 4,(Ix+d)
4186 instr fetch_nop, op_BIT4, store_nop ;67 ;BIT 4,(Ix+d),A
4187 instr fetch_nop, op_BIT5, store_nop ;68 ;BIT 5,(Ix+d),B
4188 instr fetch_nop, op_BIT5, store_nop ;69 ;BIT 5,(Ix+d),C
4189 instr fetch_nop, op_BIT5, store_nop ;6A ;BIT 5,(Ix+d),D
4190 instr fetch_nop, op_BIT5, store_nop ;6B ;BIT 5,(Ix+d),E
4191 instr fetch_nop, op_BIT5, store_nop ;6C ;BIT 5,(Ix+d),H
4192 instr fetch_nop, op_BIT5, store_nop ;6D ;BIT 5,(Ix+d),L
4193 instr fetch_nop, op_BIT5, store_nop ;6E ;BIT 5,(Ix+d)
4194 instr fetch_nop, op_BIT5, store_nop ;6F ;BIT 5,(Ix+d),A
4195 instr fetch_nop, op_BIT6, store_nop ;70 ;BIT 6,(Ix+d),B
4196 instr fetch_nop, op_BIT6, store_nop ;71 ;BIT 6,(Ix+d),C
4197 instr fetch_nop, op_BIT6, store_nop ;72 ;BIT 6,(Ix+d),D
4198 instr fetch_nop, op_BIT6, store_nop ;73 ;BIT 6,(Ix+d),E
4199 instr fetch_nop, op_BIT6, store_nop ;74 ;BIT 6,(Ix+d),H
4200 instr fetch_nop, op_BIT6, store_nop ;75 ;BIT 6,(Ix+d),L
4201 instr fetch_nop, op_BIT6, store_nop ;76 ;BIT 6,(Ix+d)
4202 instr fetch_nop, op_BIT6, store_nop ;77 ;BIT 6,(Ix+d),A
4203 instr fetch_nop, op_BIT7, store_nop ;78 ;BIT 7,(Ix+d),B
4204 instr fetch_nop, op_BIT7, store_nop ;79 ;BIT 7,(Ix+d),C
4205 instr fetch_nop, op_BIT7, store_nop ;7A ;BIT 7,(Ix+d),D
4206 instr fetch_nop, op_BIT7, store_nop ;7B ;BIT 7,(Ix+d),E
4207 instr fetch_nop, op_BIT7, store_nop ;7C ;BIT 7,(Ix+d),H
4208 instr fetch_nop, op_BIT7, store_nop ;7D ;BIT 7,(Ix+d),L
4209 instr fetch_nop, op_BIT7, store_nop ;7E ;BIT 7,(Ix+d)
4210 instr fetch_nop, op_BIT7, store_nop ;7F ;BIT 7,(Ix+d),A
4211 instr fetch_nop, op_RES0, store2_B ;80 ;RES 0,(Ix+d),B
4212 instr fetch_nop, op_RES0, store2_C ;81 ;RES 0,(Ix+d),C
4213 instr fetch_nop, op_RES0, store2_D ;82 ;RES 0,(Ix+d),D
4214 instr fetch_nop, op_RES0, store2_E ;83 ;RES 0,(Ix+d),E
4215 instr fetch_nop, op_RES0, store2_H ;84 ;RES 0,(Ix+d),H
4216 instr fetch_nop, op_RES0, store2_L ;85 ;RES 0,(Ix+d),L
4217 instr fetch_nop, op_RES0, store_nop ;86 ;RES 0,(Ix+d)
4218 instr fetch_nop, op_RES0, store2_A ;87 ;RES 0,(Ix+d),A
4219 instr fetch_nop, op_RES1, store2_B ;88 ;RES 1,(Ix+d),B
4220 instr fetch_nop, op_RES1, store2_C ;89 ;RES 1,(Ix+d),C
4221 instr fetch_nop, op_RES1, store2_D ;8A ;RES 1,(Ix+d),D
4222 instr fetch_nop, op_RES1, store2_E ;8B ;RES 1,(Ix+d),E
4223 instr fetch_nop, op_RES1, store2_H ;8C ;RES 1,(Ix+d),H
4224 instr fetch_nop, op_RES1, store2_L ;8D ;RES 1,(Ix+d),L
4225 instr fetch_nop, op_RES1, store_nop ;8E ;RES 1,(Ix+d)
4226 instr fetch_nop, op_RES1, store2_A ;8F ;RES 1,(Ix+d),A
4227 instr fetch_nop, op_RES2, store2_B ;90 ;RES 2,(Ix+d),B
4228 instr fetch_nop, op_RES2, store2_C ;91 ;RES 2,(Ix+d),C
4229 instr fetch_nop, op_RES2, store2_D ;92 ;RES 2,(Ix+d),D
4230 instr fetch_nop, op_RES2, store2_E ;93 ;RES 2,(Ix+d),E
4231 instr fetch_nop, op_RES2, store2_H ;94 ;RES 2,(Ix+d),H
4232 instr fetch_nop, op_RES2, store2_L ;95 ;RES 2,(Ix+d),L
4233 instr fetch_nop, op_RES2, store_nop ;96 ;RES 2,(Ix+d)
4234 instr fetch_nop, op_RES2, store2_A ;97 ;RES 2,(Ix+d),A
4235 instr fetch_nop, op_RES3, store2_B ;98 ;RES 3,(Ix+d),B
4236 instr fetch_nop, op_RES3, store2_C ;99 ;RES 3,(Ix+d),C
4237 instr fetch_nop, op_RES3, store2_D ;9A ;RES 3,(Ix+d),D
4238 instr fetch_nop, op_RES3, store2_E ;9B ;RES 3,(Ix+d),E
4239 instr fetch_nop, op_RES3, store2_H ;9C ;RES 3,(Ix+d),H
4240 instr fetch_nop, op_RES3, store2_L ;9D ;RES 3,(Ix+d),L
4241 instr fetch_nop, op_RES3, store_nop ;9E ;RES 3,(Ix+d)
4242 instr fetch_nop, op_RES3, store2_A ;9F ;RES 3,(Ix+d),A
4243 instr fetch_nop, op_RES4, store2_B ;A0 ;RES 4,(Ix+d),B
4244 instr fetch_nop, op_RES4, store2_C ;A1 ;RES 4,(Ix+d),C
4245 instr fetch_nop, op_RES4, store2_D ;A2 ;RES 4,(Ix+d),D
4246 instr fetch_nop, op_RES4, store2_E ;A3 ;RES 4,(Ix+d),E
4247 instr fetch_nop, op_RES4, store2_H ;A4 ;RES 4,(Ix+d),H
4248 instr fetch_nop, op_RES4, store2_L ;A5 ;RES 4,(Ix+d),L
4249 instr fetch_nop, op_RES4, store_nop ;A6 ;RES 4,(Ix+d)
4250 instr fetch_nop, op_RES4, store2_A ;A7 ;RES 4,(Ix+d),A
4251 instr fetch_nop, op_RES5, store2_B ;A8 ;RES 5,(Ix+d),B
4252 instr fetch_nop, op_RES5, store2_C ;A9 ;RES 5,(Ix+d),C
4253 instr fetch_nop, op_RES5, store2_D ;AA ;RES 5,(Ix+d),D
4254 instr fetch_nop, op_RES5, store2_E ;AB ;RES 5,(Ix+d),E
4255 instr fetch_nop, op_RES5, store2_H ;AC ;RES 5,(Ix+d),H
4256 instr fetch_nop, op_RES5, store2_L ;AD ;RES 5,(Ix+d),L
4257 instr fetch_nop, op_RES5, store_nop ;AE ;RES 5,(Ix+d)
4258 instr fetch_nop, op_RES5, store2_A ;AF ;RES 5,(Ix+d),A
4259 instr fetch_nop, op_RES6, store2_B ;B0 ;RES 6,(Ix+d),B
4260 instr fetch_nop, op_RES6, store2_C ;B1 ;RES 6,(Ix+d),C
4261 instr fetch_nop, op_RES6, store2_D ;B2 ;RES 6,(Ix+d),D
4262 instr fetch_nop, op_RES6, store2_E ;B3 ;RES 6,(Ix+d),E
4263 instr fetch_nop, op_RES6, store2_H ;B4 ;RES 6,(Ix+d),H
4264 instr fetch_nop, op_RES6, store2_L ;B5 ;RES 6,(Ix+d),L
4265 instr fetch_nop, op_RES6, store_nop ;B6 ;RES 6,(Ix+d)
4266 instr fetch_nop, op_RES6, store2_A ;B7 ;RES 6,(Ix+d),A
4267 instr fetch_nop, op_RES7, store2_B ;B8 ;RES 7,(Ix+d),B
4268 instr fetch_nop, op_RES7, store2_C ;B9 ;RES 7,(Ix+d),C
4269 instr fetch_nop, op_RES7, store2_D ;BA ;RES 7,(Ix+d),D
4270 instr fetch_nop, op_RES7, store2_E ;BB ;RES 7,(Ix+d),E
4271 instr fetch_nop, op_RES7, store2_H ;BC ;RES 7,(Ix+d),H
4272 instr fetch_nop, op_RES7, store2_L ;BD ;RES 7,(Ix+d),L
4273 instr fetch_nop, op_RES7, store_nop ;BE ;RES 7,(Ix+d)
4274 instr fetch_nop, op_RES7, store2_A ;BF ;RES 7,(Ix+d),A
4275 instr fetch_nop, op_SET0, store2_B ;C0 ;SET 0,(Ix+d),B
4276 instr fetch_nop, op_SET0, store2_C ;C1 ;SET 0,(Ix+d),C
4277 instr fetch_nop, op_SET0, store2_D ;C2 ;SET 0,(Ix+d),D
4278 instr fetch_nop, op_SET0, store2_E ;C3 ;SET 0,(Ix+d),E
4279 instr fetch_nop, op_SET0, store2_H ;C4 ;SET 0,(Ix+d),H
4280 instr fetch_nop, op_SET0, store2_L ;C5 ;SET 0,(Ix+d),L
4281 instr fetch_nop, op_SET0, store_nop ;C6 ;SET 0,(Ix+d)
4282 instr fetch_nop, op_SET0, store2_A ;C7 ;SET 0,(Ix+d),A
4283 instr fetch_nop, op_SET1, store2_B ;C8 ;SET 1,(Ix+d),B
4284 instr fetch_nop, op_SET1, store2_C ;C9 ;SET 1,(Ix+d),C
4285 instr fetch_nop, op_SET1, store2_D ;CA ;SET 1,(Ix+d),D
4286 instr fetch_nop, op_SET1, store2_E ;CB ;SET 1,(Ix+d),E
4287 instr fetch_nop, op_SET1, store2_H ;CC ;SET 1,(Ix+d),H
4288 instr fetch_nop, op_SET1, store2_L ;CD ;SET 1,(Ix+d),L
4289 instr fetch_nop, op_SET1, store_nop ;CE ;SET 1,(Ix+d)
4290 instr fetch_nop, op_SET1, store2_A ;CF ;SET 1,(Ix+d),A
4291 instr fetch_nop, op_SET2, store2_B ;D0 ;SET 2,(Ix+d),B
4292 instr fetch_nop, op_SET2, store2_C ;D1 ;SET 2,(Ix+d),C
4293 instr fetch_nop, op_SET2, store2_D ;D2 ;SET 2,(Ix+d),D
4294 instr fetch_nop, op_SET2, store2_E ;D3 ;SET 2,(Ix+d),E
4295 instr fetch_nop, op_SET2, store2_H ;D4 ;SET 2,(Ix+d),H
4296 instr fetch_nop, op_SET2, store2_L ;D5 ;SET 2,(Ix+d),L
4297 instr fetch_nop, op_SET2, store_nop ;D6 ;SET 2,(Ix+d)
4298 instr fetch_nop, op_SET2, store2_A ;D7 ;SET 2,(Ix+d),A
4299 instr fetch_nop, op_SET3, store2_B ;D8 ;SET 3,(Ix+d),B
4300 instr fetch_nop, op_SET3, store2_C ;D9 ;SET 3,(Ix+d),C
4301 instr fetch_nop, op_SET3, store2_D ;DA ;SET 3,(Ix+d),D
4302 instr fetch_nop, op_SET3, store2_E ;DB ;SET 3,(Ix+d),E
4303 instr fetch_nop, op_SET3, store2_H ;DC ;SET 3,(Ix+d),H
4304 instr fetch_nop, op_SET3, store2_L ;DD ;SET 3,(Ix+d),L
4305 instr fetch_nop, op_SET3, store_nop ;DE ;SET 3,(Ix+d)
4306 instr fetch_nop, op_SET3, store2_A ;DF ;SET 3,(Ix+d),A
4307 instr fetch_nop, op_SET4, store2_B ;E0 ;SET 4,(Ix+d),B
4308 instr fetch_nop, op_SET4, store2_C ;E1 ;SET 4,(Ix+d),C
4309 instr fetch_nop, op_SET4, store2_D ;E2 ;SET 4,(Ix+d),D
4310 instr fetch_nop, op_SET4, store2_E ;E3 ;SET 4,(Ix+d),E
4311 instr fetch_nop, op_SET4, store2_H ;E4 ;SET 4,(Ix+d),H
4312 instr fetch_nop, op_SET4, store2_L ;E5 ;SET 4,(Ix+d),L
4313 instr fetch_nop, op_SET4, store_nop ;E6 ;SET 4,(Ix+d)
4314 instr fetch_nop, op_SET4, store2_A ;E7 ;SET 4,(Ix+d),A
4315 instr fetch_nop, op_SET5, store2_B ;E8 ;SET 5,(Ix+d),B
4316 instr fetch_nop, op_SET5, store2_C ;E9 ;SET 5,(Ix+d),C
4317 instr fetch_nop, op_SET5, store2_D ;EA ;SET 5,(Ix+d),D
4318 instr fetch_nop, op_SET5, store2_E ;EB ;SET 5,(Ix+d),E
4319 instr fetch_nop, op_SET5, store2_H ;EC ;SET 5,(Ix+d),H
4320 instr fetch_nop, op_SET5, store2_L ;ED ;SET 5,(Ix+d),L
4321 instr fetch_nop, op_SET5, store_nop ;EE ;SET 5,(Ix+d)
4322 instr fetch_nop, op_SET5, store2_A ;EF ;SET 5,(Ix+d),A
4323 instr fetch_nop, op_SET6, store2_B ;F0 ;SET 6,(Ix+d),B
4324 instr fetch_nop, op_SET6, store2_C ;F1 ;SET 6,(Ix+d),C
4325 instr fetch_nop, op_SET6, store2_D ;F2 ;SET 6,(Ix+d),D
4326 instr fetch_nop, op_SET6, store2_E ;F3 ;SET 6,(Ix+d),E
4327 instr fetch_nop, op_SET6, store2_H ;F4 ;SET 6,(Ix+d),H
4328 instr fetch_nop, op_SET6, store2_L ;F5 ;SET 6,(Ix+d),L
4329 instr fetch_nop, op_SET6, store_nop ;F6 ;SET 6,(Ix+d)
4330 instr fetch_nop, op_SET6, store2_A ;F7 ;SET 6,(Ix+d),A
4331 instr fetch_nop, op_SET7, store2_B ;F8 ;SET 7,(Ix+d),B
4332 instr fetch_nop, op_SET7, store2_C ;F9 ;SET 7,(Ix+d),C
4333 instr fetch_nop, op_SET7, store2_D ;FA ;SET 7,(Ix+d),D
4334 instr fetch_nop, op_SET7, store2_E ;FB ;SET 7,(Ix+d),E
4335 instr fetch_nop, op_SET7, store2_H ;FC ;SET 7,(Ix+d),H
4336 instr fetch_nop, op_SET7, store2_L ;FD ;SET 7,(Ix+d),L
4337 instr fetch_nop, op_SET7, store_nop ;FE ;SET 7,(Ix+d)
4338 instr fetch_nop, op_SET7, store2_A ;FF ;SET 7,(Ix+d),A
4343 ;----------------------------------------------------------------
4344 ; Lookup table, stolen from z80ex, Z80 emulation library.
4345 ; http://z80ex.sourceforge.net/
4347 ; The S, Z, 5 and 3 bits and the parity of the lookup value
4349 ; .org (PC+255) & 0xff00
4351 .org sz53p_table_pos
4352 ; .org FLASHEND & 0xff00
4353 ; .org 0x1fff & 0xff00
4356 .db 0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4357 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4358 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4359 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4360 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4361 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4362 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4363 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4364 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4365 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4366 .db 0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4367 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4368 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4369 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4370 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4371 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4372 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4373 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4374 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4375 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4376 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4377 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4378 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4379 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4380 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4381 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4382 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4383 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4384 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4385 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4386 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4387 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4389 ; vim:set ts=8 noet nowrap