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 0x1B00
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
2359 printstring "Port write: "
2372 ;----------------------------------------------------------------
2373 ;|Mnemonic |SZHPNC|Description |Notes |
2374 ;----------------------------------------------------------------
2375 ;|LD dst,src|------|Load |dst=src |
2378 do_op_stbc: ;store bc to mem loc in opl:h
2387 ;----------------------------------------------------------------
2388 ;|Mnemonic |SZHPNC|Description |Notes |
2389 ;----------------------------------------------------------------
2390 ;|LD dst,src|------|Load |dst=src |
2393 do_op_stde: ;store de to mem loc in opl:h
2402 ;----------------------------------------------------------------
2403 ;|Mnemonic |SZHPNC|Description |Notes |
2404 ;----------------------------------------------------------------
2405 ;|LD dst,src|------|Load |dst=src |
2408 do_op_stsp: ;store sp to mem loc in opl:h
2415 ;----------------------------------------------------------------
2416 ;|Mnemonic |SZHPNC|Description |Notes |
2417 ;----------------------------------------------------------------
2418 ;|ADC HL,ss |***V0*|Add with Carry |HL=HL+ss+CY |
2428 in temp,sreg ; save lower Z
2433 and temp,temp2 ; 16bit Z
2434 ldi z_flags,0 ; clear N
2435 bmov z_flags,ZFL_C, temp2,AVR_C
2436 bmov z_flags,ZFL_P, temp2,AVR_V
2437 bmov z_flags,ZFL_H, temp2,AVR_H
2438 bmov z_flags,ZFL_Z, temp,AVR_Z
2439 bmov z_flags,ZFL_S, temp2,AVR_N
2442 ;----------------------------------------------------------------
2443 ;|Mnemonic |SZHPNC|Description |Notes |
2444 ;----------------------------------------------------------------
2445 ;|SBC HL,ss |***V1*|Subtract with carry |HL=HL-ss-CY |
2460 ldi z_flags,(1<<ZFL_N) ; set N
2461 bmov z_flags,ZFL_C, temp,AVR_C
2462 bmov z_flags,ZFL_P, temp,AVR_V
2463 bmov z_flags,ZFL_H, temp,AVR_H
2464 bmov z_flags,ZFL_Z, temp,AVR_Z
2465 bmov z_flags,ZFL_S, temp,AVR_N
2468 ;----------------------------------------------------------------
2469 ;|Mnemonic |SZHPNC|Description |Notes |
2470 ;----------------------------------------------------------------
2471 ;|NEG |***V1*|Negate A |A=0-A |
2479 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
2480 bmov z_flags,ZFL_C, temp,AVR_C
2481 bmov z_flags,ZFL_H, temp,AVR_H
2486 ;----------------------------------------------------------------
2487 ;|Mnemonic |SZHPNC|Description |Notes |
2488 ;----------------------------------------------------------------
2489 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
2490 ;|RETN |------|Return from NMI | Copy IFF2 to IFF1 |
2496 bmov temp,IFF1, temp,IFF2
2501 ;----------------------------------------------------------------
2502 ;|Mnemonic |SZHPNC|Description |Notes |
2503 ;----------------------------------------------------------------
2504 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
2526 ;----------------------------------------------------------------
2527 ;|Mnemonic |SZHPNC|Description |Notes |
2528 ;----------------------------------------------------------------
2529 ;|LD A,i |**0*0-|Load |(i=I,R) IFF2 --> P |
2530 ;|LD i,A |------|Load |(i=I,R) |
2539 bst z_flags,ZFL_C ;save C
2540 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2543 bmov z_flags,ZFL_P, temp,IFF2
2554 ;----------------------------------------------------------------
2555 ;|Mnemonic |SZHPNC|Description |Notes |
2556 ;----------------------------------------------------------------
2557 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
2558 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
2572 bst z_flags,ZFL_C ;save C
2573 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2589 bst z_flags,ZFL_C ;save C
2590 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
2620 mem_read_ds opl, z_pc ;get displacement
2622 clr oph ;sign extend
2627 add xl,opl ;add displacement
2629 mem_read_d opl ;get operand
2630 ret ;(Ix+d) still in xl,xh
2668 mem_read_s z_pc ;get displacement
2670 clr temp2 ;sign extend
2675 add xl,temp ;add displacement
2677 mem_write_s opl ;store operand
2681 mem_write_s opl ;store operand
2694 mem_read_s z_pc ;get displacement
2697 clr temp2 ;sign extend
2702 add xl,temp ;add displacement
2704 mem_write_s opl ;store operand
2718 ;----------------------------------------------------------------
2719 ;|Mnemonic |SZHPNC|Description |Notes |
2720 ;----------------------------------------------------------------
2721 ;|LD dst,src|------|Load |dst=src |
2724 do_op_stxx: ;store xx to mem loc in opl:h
2741 ;----------------------------------------------------------------
2742 ;|Mnemonic |SZHPNC|Description |Notes |
2743 ;----------------------------------------------------------------
2744 ;|EX [SP],IX|------|Exchange |[SP]<->IX |
2745 ;|EX [SP],IY|------|Exchange |[SP]<->IY |
2764 ;----------------------------------------------------------------
2765 ;|Mnemonic |SZHPNC|Description |Notes |
2766 ;----------------------------------------------------------------
2767 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
2768 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
2790 bmov z_flags,ZFL_C, temp,AVR_C
2792 do_z80_flags_clear_N
2795 ;----------------------------------------------------------------
2796 ;|Mnemonic |SZHPNC|Description |Notes |
2797 ;----------------------------------------------------------------
2798 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
2799 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
2800 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
2801 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
2812 mem_write_ds x, temp
2813 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
2817 sbr z_flags,(1<<ZFL_P)
2823 rcall op_LDxx_common
2833 rcall op_LDxx_common
2856 ;----------------------------------------------------------------
2857 ;|Mnemonic |SZHPNC|Description |Notes |
2858 ;----------------------------------------------------------------
2859 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
2860 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
2861 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
2862 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
2871 cbr z_flags,(1<<ZFL_S)|(1<<ZFL_Z)|(1<<ZFL_H)|(1<<ZFL_P)
2872 sbr z_flags,(1<<ZFL_N)
2873 mem_read ; temp = (HL)
2875 sub temp2,temp ; A - (HL)
2877 sbr z_flags,(1<<ZFL_S)
2879 sbr z_flags,(1<<ZFL_Z)
2881 sbr z_flags,(1<<ZFL_H)
2885 sbr z_flags,(1<<ZFL_P)
2891 rcall op_CPxx_common
2899 rcall op_CPxx_common
2923 ;----------------------------------------------------------------
2924 ;|Mnemonic |SZHPNC|Description |Notes |
2925 ;----------------------------------------------------------------
2926 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
2927 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
2928 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
2929 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
2932 cbr z_flags,(1<<ZFL_Z)
2933 sbr z_flags,(1<<ZFL_N)
2943 sbr z_flags,(1<<ZFL_Z)
2947 rcall op_INxx_common
2954 rcall op_INxx_common
2974 ;----------------------------------------------------------------
2975 ;|Mnemonic |SZHPNC|Description |Notes |
2976 ;----------------------------------------------------------------
2977 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
2978 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
2979 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
2980 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
2983 cbr z_flags,(1<<ZFL_Z)
2984 sbr z_flags,(1<<ZFL_N)
2985 lcall dram_read ;temp = (z)
2992 sbr z_flags,(1<<ZFL_Z)
3002 rcall op_OUTxx_common
3012 rcall op_OUTxx_common
3032 instr fetch_nop, op_nop, store_nop ;00 ;NOP
3033 instr fetch_nop, op_nop, store_nop ;01 ;NOP
3034 instr fetch_nop, op_nop, store_nop ;02 ;NOP
3035 instr fetch_nop, op_nop, store_nop ;03 ;NOP
3036 instr fetch_nop, op_nop, store_nop ;04 ;NOP
3037 instr fetch_nop, op_nop, store_nop ;05 ;NOP
3038 instr fetch_nop, op_nop, store_nop ;06 ;NOP
3039 instr fetch_nop, op_nop, store_nop ;07 ;NOP
3040 instr fetch_nop, op_nop, store_nop ;08 ;NOP
3041 instr fetch_nop, op_nop, store_nop ;09 ;NOP
3042 instr fetch_nop, op_nop, store_nop ;0A ;NOP
3043 instr fetch_nop, op_nop, store_nop ;0B ;NOP
3044 instr fetch_nop, op_nop, store_nop ;0C ;NOP
3045 instr fetch_nop, op_nop, store_nop ;0D ;NOP
3046 instr fetch_nop, op_nop, store_nop ;0E ;NOP
3047 instr fetch_nop, op_nop, store_nop ;0F ;NOP
3048 instr fetch_nop, op_nop, store_nop ;10 ;NOP
3049 instr fetch_nop, op_nop, store_nop ;11 ;NOP
3050 instr fetch_nop, op_nop, store_nop ;12 ;NOP
3051 instr fetch_nop, op_nop, store_nop ;13 ;NOP
3052 instr fetch_nop, op_nop, store_nop ;14 ;NOP
3053 instr fetch_nop, op_nop, store_nop ;15 ;NOP
3054 instr fetch_nop, op_nop, store_nop ;16 ;NOP
3055 instr fetch_nop, op_nop, store_nop ;17 ;NOP
3056 instr fetch_nop, op_nop, store_nop ;18 ;NOP
3057 instr fetch_nop, op_nop, store_nop ;19 ;NOP
3058 instr fetch_nop, op_nop, store_nop ;1A ;NOP
3059 instr fetch_nop, op_nop, store_nop ;1B ;NOP
3060 instr fetch_nop, op_nop, store_nop ;1C ;NOP
3061 instr fetch_nop, op_nop, store_nop ;1D ;NOP
3062 instr fetch_nop, op_nop, store_nop ;1E ;NOP
3063 instr fetch_nop, op_nop, store_nop ;1F ;NOP
3064 instr fetch_nop, op_nop, store_nop ;20 ;NOP
3065 instr fetch_nop, op_nop, store_nop ;21 ;NOP
3066 instr fetch_nop, op_nop, store_nop ;22 ;NOP
3067 instr fetch_nop, op_nop, store_nop ;23 ;NOP
3068 instr fetch_nop, op_nop, store_nop ;24 ;NOP
3069 instr fetch_nop, op_nop, store_nop ;25 ;NOP
3070 instr fetch_nop, op_nop, store_nop ;26 ;NOP
3071 instr fetch_nop, op_nop, store_nop ;27 ;NOP
3072 instr fetch_nop, op_nop, store_nop ;28 ;NOP
3073 instr fetch_nop, op_nop, store_nop ;29 ;NOP
3074 instr fetch_nop, op_nop, store_nop ;2A ;NOP
3075 instr fetch_nop, op_nop, store_nop ;2B ;NOP
3076 instr fetch_nop, op_nop, store_nop ;2C ;NOP
3077 instr fetch_nop, op_nop, store_nop ;2D ;NOP
3078 instr fetch_nop, op_nop, store_nop ;2E ;NOP
3079 instr fetch_nop, op_nop, store_nop ;2F ;NOP
3080 instr fetch_nop, op_nop, store_nop ;30 ;NOP
3081 instr fetch_nop, op_nop, store_nop ;31 ;NOP
3082 instr fetch_nop, op_nop, store_nop ;32 ;NOP
3083 instr fetch_nop, op_nop, store_nop ;33 ;NOP
3084 instr fetch_nop, op_nop, store_nop ;34 ;NOP
3085 instr fetch_nop, op_nop, store_nop ;35 ;NOP
3086 instr fetch_nop, op_nop, store_nop ;36 ;NOP
3087 instr fetch_nop, op_nop, store_nop ;37 ;NOP
3088 instr fetch_nop, op_nop, store_nop ;38 ;NOP
3089 instr fetch_nop, op_nop, store_nop ;39 ;NOP
3090 instr fetch_nop, op_nop, store_nop ;3A ;NOP
3091 instr fetch_nop, op_nop, store_nop ;3B ;NOP
3092 instr fetch_nop, op_nop, store_nop ;3C ;NOP
3093 instr fetch_nop, op_nop, store_nop ;3D ;NOP
3094 instr fetch_nop, op_nop, store_nop ;3E ;NOP
3095 instr fetch_nop, op_nop, store_nop ;3F ;NOP
3096 instr fetch_C, op_IN, store_B ;40 ;IN B,(C)
3097 instr fetch_B, op_OUT, store_nop ;41 ;OUT (C),B
3098 instr fetch_BC, op_SBCHL, store_nop ;42 ;SBC HL,BC
3099 instr fetch_DIR16, op_STBC, store_nop ;43 ;LD (nn),BC
3100 instr fetch_nop, op_NEG, store_nop ;44 ;NEG
3101 instr fetch_nop, op_RETN, store_nop ;45 ;RETN
3102 instr fetch_nop, op_IM0, store_nop ;46 ;IM 0
3103 instr fetch_nop, op_ldia, store_nop ;47 ;LD I,A
3104 instr fetch_C, op_IN, store_C ;48 ;IN C,(C)
3105 instr fetch_C, op_OUT, store_nop ;49 ;OUT (C),C
3106 instr fetch_BC, op_ADCHL, store_nop ;4A ;ADC HL,BC
3107 instr fetch_DIR16, op_RMEM16, store_BC ;4B nn nn ;LD BC,(nn)
3108 instr fetch_nop, op_NEG, store_nop ;4C ;NEG
3109 instr fetch_nop, op_RETI, store_nop ;4D ;RETI
3110 instr fetch_nop, op_IM0, store_nop ;4E ;IM 0
3111 instr fetch_nop, op_ldra, store_nop ;4F ;LD R,A
3112 instr fetch_C, op_IN, store_D ;50 ;IN D,(C)
3113 instr fetch_D, op_OUT, store_nop ;51 ;OUT (C),D
3114 instr fetch_DE, op_SBCHL, store_nop ;52 ;SBC HL,DE
3115 instr fetch_DIR16, op_STDE, store_nop ;53 nn nn ;LD (nn),DE
3116 instr fetch_nop, op_NEG, store_nop ;54 ;NEG
3117 instr fetch_nop, op_RETN, store_nop ;55 ;RETN
3118 instr fetch_nop, op_IM1, store_nop ;56 ;IM 1
3119 instr fetch_nop, op_ldai, store_nop ;57 ;LD A,I
3120 instr fetch_C, op_IN, store_E ;58 ;IN E,(C)
3121 instr fetch_E, op_OUT, store_nop ;59 ;OUT (C),E
3122 instr fetch_DE, op_ADCHL, store_nop ;5A ;ADC HL,DE
3123 instr fetch_DIR16, op_RMEM16, store_DE ;5B nn nn ;LD DE,(nn)
3124 instr fetch_nop, op_NEG, store_nop ;5C ;NEG
3125 instr fetch_nop, op_RETN, store_nop ;5D ;RETN
3126 instr fetch_nop, op_IM2, store_nop ;5E ;IM 2
3127 instr fetch_nop, op_ldar, store_nop ;5F ;LD A,R
3128 instr fetch_C, op_IN, store_H ;60 ;IN H,(C)
3129 instr fetch_H, op_OUT, store_nop ;61 ;OUT (C),H
3130 instr fetch_HL, op_SBCHL, store_nop ;62 ;SBC HL,HL
3131 instr fetch_DIR16, op_STHL, store_nop ;63 nn nn ;LD (nn),HL
3132 instr fetch_nop, op_NEG, store_nop ;64 ;NEG
3133 instr fetch_nop, op_RETN, store_nop ;65 ;RETN
3134 instr fetch_nop, op_IM0, store_nop ;66 ;IM 0
3135 instr fetch_mhl, op_RRD, store_mhl ;67 ;RRD
3136 instr fetch_C, op_IN, store_L ;68 ;IN L,(C)
3137 instr fetch_L, op_OUT, store_nop ;69 ;OUT (C),L
3138 instr fetch_HL, op_ADCHL, store_nop ;6A ;ADC HL,HL
3139 instr fetch_DIR16, op_RMEM16, store_HL ;6B nn nn ;LD HL,(nn)
3140 instr fetch_nop, op_NEG, store_nop ;6C ;NEG
3141 instr fetch_nop, op_RETN, store_nop ;6D ;RETN
3142 instr fetch_nop, op_IM0, store_nop ;6E ;IM 0
3143 instr fetch_mhl, op_RLD, store_mhl ;6F ;RLD
3144 instr fetch_C, op_IN, store_nop ;70 ;IN (C)
3145 instr fetch_0, op_OUT, store_nop ;71 ;OUT (C),0
3146 instr fetch_SP, op_SBCHL, store_nop ;72 ;SBC HL,SP
3147 instr fetch_DIR16, op_STSP, store_nop ;73 nn nn ;LD (nn),SP
3148 instr fetch_nop, op_NEG, store_nop ;74 ;NEG
3149 instr fetch_nop, op_RETN, store_nop ;75 ;RETN
3150 instr fetch_nop, op_IM1, store_nop ;76 ;IM 1
3151 instr fetch_nop, op_nop, store_nop ;77 ;NOP
3152 instr fetch_C, op_IN, store_A ;78 ;IN A,(C)
3153 instr fetch_A, op_OUT, store_nop ;79 ;OUT (C),A
3154 instr fetch_SP, op_ADCHL, store_nop ;7A ;ADC HL,SP
3155 instr fetch_DIR16, op_RMEM16, store_SP ;7B nn nn ;LD SP,(nn)
3156 instr fetch_nop, op_NEG, store_nop ;7C ;NEG
3157 instr fetch_nop, op_RETN, store_nop ;7D ;RETN
3158 instr fetch_nop, op_IM2, store_nop ;7E ;IM 2
3159 instr fetch_nop, op_nop, store_nop ;7F ;NOP
3160 instr fetch_nop, op_nop, store_nop ;80 ;NOP
3161 instr fetch_nop, op_nop, store_nop ;81 ;NOP
3162 instr fetch_nop, op_nop, store_nop ;82 ;NOP
3163 instr fetch_nop, op_nop, store_nop ;83 ;NOP
3164 instr fetch_nop, op_nop, store_nop ;84 ;NOP
3165 instr fetch_nop, op_nop, store_nop ;85 ;NOP
3166 instr fetch_nop, op_nop, store_nop ;86 ;NOP
3167 instr fetch_nop, op_nop, store_nop ;87 ;NOP
3168 instr fetch_nop, op_nop, store_nop ;88 ;NOP
3169 instr fetch_nop, op_nop, store_nop ;89 ;NOP
3170 instr fetch_nop, op_nop, store_nop ;8A ;NOP
3171 instr fetch_nop, op_nop, store_nop ;8B ;NOP
3172 instr fetch_nop, op_nop, store_nop ;8C ;NOP
3173 instr fetch_nop, op_nop, store_nop ;8D ;NOP
3174 instr fetch_nop, op_nop, store_nop ;8E ;NOP
3175 instr fetch_nop, op_nop, store_nop ;8F ;NOP
3176 instr fetch_nop, op_nop, store_nop ;90 ;NOP
3177 instr fetch_nop, op_nop, store_nop ;91 ;NOP
3178 instr fetch_nop, op_nop, store_nop ;92 ;NOP
3179 instr fetch_nop, op_nop, store_nop ;93 ;NOP
3180 instr fetch_nop, op_nop, store_nop ;94 ;NOP
3181 instr fetch_nop, op_nop, store_nop ;95 ;NOP
3182 instr fetch_nop, op_nop, store_nop ;96 ;NOP
3183 instr fetch_nop, op_nop, store_nop ;97 ;NOP
3184 instr fetch_nop, op_nop, store_nop ;98 ;NOP
3185 instr fetch_nop, op_nop, store_nop ;99 ;NOP
3186 instr fetch_nop, op_nop, store_nop ;9A ;NOP
3187 instr fetch_nop, op_nop, store_nop ;9B ;NOP
3188 instr fetch_nop, op_nop, store_nop ;9C ;NOP
3189 instr fetch_nop, op_nop, store_nop ;9D ;NOP
3190 instr fetch_nop, op_nop, store_nop ;9E ;NOP
3191 instr fetch_nop, op_nop, store_nop ;9F ;NOP
3192 instr fetch_nop, op_LDI, store_nop ;A0 ;LDI
3193 instr fetch_nop, op_CPI, store_nop ;A1 ;CPI
3194 instr fetch_nop, op_INI, store_nop ;A2 ;INI
3195 instr fetch_nop, op_OUTI, store_nop ;A3 ;OUTI
3196 instr fetch_nop, op_nop, store_nop ;A4 ;NOP
3197 instr fetch_nop, op_nop, store_nop ;A5 ;NOP
3198 instr fetch_nop, op_nop, store_nop ;A6 ;NOP
3199 instr fetch_nop, op_nop, store_nop ;A7 ;NOP
3200 instr fetch_nop, op_LDD, store_nop ;A8 ;LDD
3201 instr fetch_nop, op_CPD, store_nop ;A9 ;CPD
3202 instr fetch_nop, op_IND, store_nop ;AA ;IND
3203 instr fetch_nop, op_OUTD, store_nop ;AB ;OUTD
3204 instr fetch_nop, op_nop, store_nop ;AC ;NOP
3205 instr fetch_nop, op_nop, store_nop ;AD ;NOP
3206 instr fetch_nop, op_nop, store_nop ;AE ;NOP
3207 instr fetch_nop, op_nop, store_nop ;AF ;NOP
3208 instr fetch_nop, op_LDIR, store_nop ;B0 ;LDIR
3209 instr fetch_nop, op_CPIR, store_nop ;B1 ;CPIR
3210 instr fetch_nop, op_INIR, store_nop ;B2 ;INIR
3211 instr fetch_nop, op_OTIR, store_nop ;B3 ;OTIR
3212 instr fetch_nop, op_nop, store_nop ;B4 ;NOP
3213 instr fetch_nop, op_nop, store_nop ;B5 ;NOP
3214 instr fetch_nop, op_nop, store_nop ;B6 ;NOP
3215 instr fetch_nop, op_nop, store_nop ;B7 ;NOP
3216 instr fetch_nop, op_LDDR, store_nop ;B8 ;LDDR
3217 instr fetch_nop, op_CPDR, store_nop ;B9 ;CPDR
3218 instr fetch_nop, op_INDR, store_nop ;BA ;INDR
3219 instr fetch_nop, op_OTDR, store_nop ;BB ;OTDR
3220 instr fetch_nop, op_nop, store_nop ;BC ;NOP
3221 instr fetch_nop, op_nop, store_nop ;BD ;NOP
3222 instr fetch_nop, op_nop, store_nop ;BE ;NOP
3223 instr fetch_nop, op_nop, store_nop ;BF ;NOP
3224 instr fetch_nop, op_nop, store_nop ;C0 ;NOP
3225 instr fetch_nop, op_nop, store_nop ;C1 ;NOP
3226 instr fetch_nop, op_nop, store_nop ;C2 ;NOP
3227 instr fetch_nop, op_nop, store_nop ;C3 ;NOP
3228 instr fetch_nop, op_nop, store_nop ;C4 ;NOP
3229 instr fetch_nop, op_nop, store_nop ;C5 ;NOP
3230 instr fetch_nop, op_nop, store_nop ;C6 ;NOP
3231 instr fetch_nop, op_nop, store_nop ;C7 ;NOP
3232 instr fetch_nop, op_nop, store_nop ;C8 ;NOP
3233 instr fetch_nop, op_nop, store_nop ;C9 ;NOP
3234 instr fetch_nop, op_nop, store_nop ;CA ;NOP
3235 instr fetch_nop, op_nop, store_nop ;CB ;NOP
3236 instr fetch_nop, op_nop, store_nop ;CC ;NOP
3237 instr fetch_nop, op_nop, store_nop ;CD ;NOP
3238 instr fetch_nop, op_nop, store_nop ;CE ;NOP
3239 instr fetch_nop, op_nop, store_nop ;CF ;NOP
3240 instr fetch_nop, op_nop, store_nop ;D0 ;NOP
3241 instr fetch_nop, op_nop, store_nop ;D1 ;NOP
3242 instr fetch_nop, op_nop, store_nop ;D2 ;NOP
3243 instr fetch_nop, op_nop, store_nop ;D3 ;NOP
3244 instr fetch_nop, op_nop, store_nop ;D4 ;NOP
3245 instr fetch_nop, op_nop, store_nop ;D5 ;NOP
3246 instr fetch_nop, op_nop, store_nop ;D6 ;NOP
3247 instr fetch_nop, op_nop, store_nop ;D7 ;NOP
3248 instr fetch_nop, op_nop, store_nop ;D8 ;NOP
3249 instr fetch_nop, op_nop, store_nop ;D9 ;NOP
3250 instr fetch_nop, op_nop, store_nop ;DA ;NOP
3251 instr fetch_nop, op_nop, store_nop ;DB ;NOP
3252 instr fetch_nop, op_nop, store_nop ;DC ;NOP
3253 instr fetch_nop, op_nop, store_nop ;DD ;NOP
3254 instr fetch_nop, op_nop, store_nop ;DE ;NOP
3255 instr fetch_nop, op_nop, store_nop ;DF ;NOP
3256 instr fetch_nop, op_nop, store_nop ;E0 ;NOP
3257 instr fetch_nop, op_nop, store_nop ;E1 ;NOP
3258 instr fetch_nop, op_nop, store_nop ;E2 ;NOP
3259 instr fetch_nop, op_nop, store_nop ;E3 ;NOP
3260 instr fetch_nop, op_nop, store_nop ;E4 ;NOP
3261 instr fetch_nop, op_nop, store_nop ;E5 ;NOP
3262 instr fetch_nop, op_nop, store_nop ;E6 ;NOP
3263 instr fetch_nop, op_nop, store_nop ;E7 ;NOP
3264 instr fetch_nop, op_nop, store_nop ;E8 ;NOP
3265 instr fetch_nop, op_nop, store_nop ;E9 ;NOP
3266 instr fetch_nop, op_nop, store_nop ;EA ;NOP
3267 instr fetch_nop, op_nop, store_nop ;EB ;NOP
3268 instr fetch_nop, op_nop, store_nop ;EC ;NOP
3269 instr fetch_nop, op_nop, store_nop ;ED ;NOP
3270 instr fetch_nop, op_nop, store_nop ;EE ;NOP
3271 instr fetch_nop, op_nop, store_nop ;EF ;NOP
3272 instr fetch_nop, op_nop, store_nop ;F0 ;NOP
3273 instr fetch_nop, op_nop, store_nop ;F1 ;NOP
3274 instr fetch_nop, op_nop, store_nop ;F2 ;NOP
3275 instr fetch_nop, op_nop, store_nop ;F3 ;NOP
3276 instr fetch_nop, op_nop, store_nop ;F4 ;NOP
3277 instr fetch_nop, op_nop, store_nop ;F5 ;NOP
3278 instr fetch_nop, op_nop, store_nop ;F6 ;NOP
3279 instr fetch_nop, op_nop, store_nop ;F7 ;NOP
3280 instr fetch_nop, op_nop, store_nop ;F8 ;NOP
3281 instr fetch_nop, op_nop, store_nop ;F9 ;NOP
3282 instr fetch_nop, op_nop, store_nop ;FA ;NOP
3283 instr fetch_nop, op_nop, store_nop ;FB ;NOP
3284 instr fetch_nop, op_nop, store_nop ;FC ;NOP
3285 instr fetch_nop, op_nop, store_nop ;FD ;NOP
3286 instr fetch_nop, op_nop, store_nop ;FE ;NOP
3287 instr fetch_nop, op_nop, store_nop ;FF ;NOP
3292 instr fetch_nop, op_noni, store_nop ;00 ;
3293 instr fetch_nop, op_noni, store_nop ;01 ;
3294 instr fetch_nop, op_noni, store_nop ;02 ;
3295 instr fetch_nop, op_noni, store_nop ;03 ;
3296 instr fetch_nop, op_noni, store_nop ;04 ;
3297 instr fetch_nop, op_noni, store_nop ;05 ;
3298 instr fetch_nop, op_noni, store_nop ;06 ;
3299 instr fetch_nop, op_noni, store_nop ;07 ;
3300 instr fetch_nop, op_noni, store_nop ;08 ;
3301 instr fetch_BC, op_ADDxx, store_nop ;09 ;ADD xx,BC
3302 instr fetch_nop, op_noni, store_nop ;0A ;
3303 instr fetch_nop, op_noni, store_nop ;0B ;
3304 instr fetch_nop, op_noni, store_nop ;0C ;
3305 instr fetch_nop, op_noni, store_nop ;0D ;
3306 instr fetch_nop, op_noni, store_nop ;0E ;
3307 instr fetch_nop, op_noni, store_nop ;0F ;
3308 instr fetch_nop, op_noni, store_nop ;10 ;
3309 instr fetch_nop, op_noni, store_nop ;11 ;
3310 instr fetch_nop, op_noni, store_nop ;12 ;
3311 instr fetch_nop, op_noni, store_nop ;13 ;
3312 instr fetch_nop, op_noni, store_nop ;14 ;
3313 instr fetch_nop, op_noni, store_nop ;15 ;
3314 instr fetch_nop, op_noni, store_nop ;16 ;
3315 instr fetch_nop, op_noni, store_nop ;17 ;
3316 instr fetch_nop, op_noni, store_nop ;18 ;
3317 instr fetch_DE, op_ADDxx, store_nop ;19 ;ADD xx,DE
3318 instr fetch_nop, op_noni, store_nop ;1A ;
3319 instr fetch_nop, op_noni, store_nop ;1B ;
3320 instr fetch_nop, op_noni, store_nop ;1C ;
3321 instr fetch_nop, op_noni, store_nop ;1D ;
3322 instr fetch_nop, op_noni, store_nop ;1E ;
3323 instr fetch_nop, op_noni, store_nop ;1F ;
3324 instr fetch_nop, op_noni, store_nop ;20 ;
3325 instr fetch_DIR16, op_nop, store_xx ;21 ;LD xx,nn
3326 instr fetch_DIR16, op_STxx, store_nop ;22 ;LD (nn),xx
3327 instr fetch_xx, op_INC16, store_xx ;23 ;INC xx
3328 instr fetch_xH, op_INC, store_xH ;24 ;INC xh
3329 instr fetch_xH, op_DEC, store_xH ;25 ;DEC xh
3330 instr fetch_DIR8, op_nop, store_xH ;26 ;LD xh,n
3331 instr fetch_nop, op_noni, store_nop ;27 ;
3332 instr fetch_nop, op_noni, store_nop ;28 ;
3333 instr fetch_xx, op_ADDxx, store_nop ;29 ;ADD xx,xx
3334 instr fetch_DIR16, op_RMEM16, store_xx ;2A ;LD xx,(nn)
3335 instr fetch_xx, op_DEC16, store_xx ;2B ;DEC xx
3336 instr fetch_xL, op_INC, store_xL ;2C ;INC xl
3337 instr fetch_xL, op_DEC, store_xL ;2D ;DEC xl
3338 instr fetch_DIR8, op_nop, store_xL ;2E ;LD xl,n
3339 instr fetch_nop, op_noni, store_nop ;2F ;
3340 instr fetch_nop, op_noni, store_nop ;30 ;
3341 instr fetch_nop, op_noni, store_nop ;31 ;
3342 instr fetch_nop, op_noni, store_nop ;32 ;
3343 instr fetch_nop, op_noni, store_nop ;33 ;
3344 instr fetch_MXX, op_INC, store_MXX_0 ;34 ;INC (xx+d)
3345 instr fetch_MXX, op_DEC, store_MXX_0 ;35 ;DEC (xx+d)
3346 instr fetch_DIR8_2, op_nop, store_MXX_2 ;36 ;LD (xx+d),n
3347 instr fetch_nop, op_noni, store_nop ;37 ;
3348 instr fetch_nop, op_noni, store_nop ;38 ;
3349 instr fetch_SP, op_ADDxx, store_nop ;39 ;ADD xx,SP
3350 instr fetch_nop, op_noni, store_nop ;3A ;
3351 instr fetch_nop, op_noni, store_nop ;3B ;
3352 instr fetch_nop, op_noni, store_nop ;3C ;
3353 instr fetch_nop, op_noni, store_nop ;3D ;
3354 instr fetch_nop, op_noni, store_nop ;3E ;
3355 instr fetch_nop, op_noni, store_nop ;3F ;
3356 instr fetch_nop, op_noni, store_nop ;40 ;
3357 instr fetch_nop, op_noni, store_nop ;41 ;
3358 instr fetch_nop, op_noni, store_nop ;42 ;
3359 instr fetch_nop, op_noni, store_nop ;43 ;
3360 instr fetch_xH, op_nop, store_B ;44 ;LD B,xh
3361 instr fetch_xL, op_nop, store_B ;45 ;LD B,xl
3362 instr fetch_MXX, op_nop, store_B ;46 ;LD B,(xx+d)
3363 instr fetch_nop, op_noni, store_nop ;47 ;
3364 instr fetch_nop, op_noni, store_nop ;48 ;
3365 instr fetch_nop, op_noni, store_nop ;49 ;
3366 instr fetch_nop, op_noni, store_nop ;4A ;
3367 instr fetch_nop, op_noni, store_nop ;4B ;
3368 instr fetch_xH, op_nop, store_C ;4C ;LD C,xh
3369 instr fetch_xL, op_nop, store_C ;4D ;LD C,xl
3370 instr fetch_MXX, op_nop, store_C ;4E ;LD C,(xx+d)
3371 instr fetch_nop, op_noni, store_nop ;4F ;
3372 instr fetch_nop, op_noni, store_nop ;50 ;
3373 instr fetch_nop, op_noni, store_nop ;51 ;
3374 instr fetch_nop, op_noni, store_nop ;52 ;
3375 instr fetch_nop, op_noni, store_nop ;53 ;
3376 instr fetch_xH, op_nop, store_D ;54 ;LD D,xh
3377 instr fetch_xL, op_nop, store_D ;55 ;LD D,xl
3378 instr fetch_MXX, op_nop, store_D ;56 ;LD D,(xx+d)
3379 instr fetch_nop, op_noni, store_nop ;57 ;
3380 instr fetch_nop, op_noni, store_nop ;58 ;
3381 instr fetch_nop, op_noni, store_nop ;59 ;
3382 instr fetch_nop, op_noni, store_nop ;5A ;
3383 instr fetch_nop, op_noni, store_nop ;5B ;
3384 instr fetch_xH, op_nop, store_E ;5C ;LD E,xh
3385 instr fetch_xL, op_nop, store_E ;5D ;LD E,xl
3386 instr fetch_MXX, op_nop, store_E ;5E ;LD E,(xx+d)
3387 instr fetch_nop, op_noni, store_nop ;5F ;
3388 instr fetch_B, op_nop, store_xH ;60 ;LD xh,B
3389 instr fetch_C, op_nop, store_xH ;61 ;LD xh,C
3390 instr fetch_D, op_nop, store_xH ;62 ;LD xh,D
3391 instr fetch_E, op_nop, store_xH ;63 ;LD xh,E
3392 instr fetch_nop, op_noni, store_nop ;64 ;LD xh,xh
3393 instr fetch_xL, op_nop, store_xH ;65 ;LD xh,xl
3394 instr fetch_MXX, op_nop, store_H ;66 ;LD H,(xx+d)
3395 instr fetch_A, op_nop, store_xH ;67 ;LD xh,A
3396 instr fetch_B, op_nop, store_xL ;68 ;LD xl,B
3397 instr fetch_C, op_nop, store_xL ;69 ;LD xl,C
3398 instr fetch_D, op_nop, store_xL ;6A ;LD xl,D
3399 instr fetch_E, op_nop, store_xL ;6B ;LD xl,E
3400 instr fetch_xH, op_nop, store_xL ;6C ;LD xl,xh
3401 instr fetch_nop, op_noni, store_nop ;6D ;LD xl,xl
3402 instr fetch_MXX, op_nop, store_L ;6E ;LD L,(xx+d)
3403 instr fetch_A, op_nop, store_xL ;6F ;LD xl,A
3404 instr fetch_B, op_nop, store_MXX ;70 ;LD (xx+d),B
3405 instr fetch_C, op_nop, store_MXX ;71 ;LD (xx+d),C
3406 instr fetch_D, op_nop, store_MXX ;72 ;LD (xx+d),D
3407 instr fetch_E, op_nop, store_MXX ;73 ;LD (xx+d),E
3408 instr fetch_H, op_nop, store_MXX ;74 ;LD (xx+d),H
3409 instr fetch_L, op_nop, store_MXX ;75 ;LD (xx+d),L
3410 instr fetch_nop, op_noni, store_nop ;76 ;
3411 instr fetch_A, op_nop, store_MXX ;77 ;LD (xx+d),A
3412 instr fetch_nop, op_noni, store_nop ;78 ;
3413 instr fetch_nop, op_noni, store_nop ;79 ;
3414 instr fetch_nop, op_noni, store_nop ;7A ;
3415 instr fetch_nop, op_noni, store_nop ;7B ;
3416 instr fetch_xH, op_nop, store_A ;7C ;LD A,xh
3417 instr fetch_xL, op_nop, store_A ;7D ;LD A,xl
3418 instr fetch_MXX, op_nop, store_A ;7E ;LD A,(xx+d)
3419 instr fetch_nop, op_noni, store_nop ;7F ;
3420 instr fetch_nop, op_noni, store_nop ;80 ;
3421 instr fetch_nop, op_noni, store_nop ;81 ;
3422 instr fetch_nop, op_noni, store_nop ;82 ;
3423 instr fetch_nop, op_noni, store_nop ;83 ;
3424 instr fetch_xH, op_ADDA, store_nop ;84 ;ADD A,xh
3425 instr fetch_xL, op_ADDA, store_nop ;85 ;ADD A,xl
3426 instr fetch_MXX, op_ADDA, store_nop ;86 ;ADD A,(xx)
3427 instr fetch_nop, op_noni, store_nop ;87 ;
3428 instr fetch_nop, op_noni, store_nop ;88 ;
3429 instr fetch_nop, op_noni, store_nop ;89 ;
3430 instr fetch_nop, op_noni, store_nop ;8A ;
3431 instr fetch_nop, op_noni, store_nop ;8B ;
3432 instr fetch_xH, op_ADCA, store_nop ;8C ;ADC A,xh
3433 instr fetch_xL, op_ADCA, store_nop ;8D ;ADC A,xl
3434 instr fetch_MXX, op_ADCA, store_nop ;8E ;ADC A,(xx)
3435 instr fetch_nop, op_noni, store_nop ;8F ;
3436 instr fetch_nop, op_noni, store_nop ;90 ;
3437 instr fetch_nop, op_noni, store_nop ;91 ;
3438 instr fetch_nop, op_noni, store_nop ;92 ;
3439 instr fetch_nop, op_noni, store_nop ;93 ;
3440 instr fetch_xH, op_SUBFA, store_nop ;94 ;SUB A,xh
3441 instr fetch_xL, op_SUBFA, store_nop ;95 ;SUB A,xl
3442 instr fetch_MXX, op_SUBFA, store_nop ;96 ;SUB A,(xx)
3443 instr fetch_nop, op_noni, store_nop ;97 ;
3444 instr fetch_nop, op_noni, store_nop ;98 ;
3445 instr fetch_nop, op_noni, store_nop ;99 ;
3446 instr fetch_nop, op_noni, store_nop ;9A ;
3447 instr fetch_nop, op_noni, store_nop ;9B ;
3448 instr fetch_xH, op_SBCFA, store_nop ;9C ;SBC A,xh
3449 instr fetch_xL, op_SBCFA, store_nop ;9D ;SBC A,xl
3450 instr fetch_MXX, op_SBCFA, store_nop ;9E ;SBC A,(xx)
3451 instr fetch_nop, op_noni, store_nop ;9F ;
3452 instr fetch_nop, op_noni, store_nop ;A0 ;
3453 instr fetch_nop, op_noni, store_nop ;A1 ;
3454 instr fetch_nop, op_noni, store_nop ;A2 ;
3455 instr fetch_nop, op_noni, store_nop ;A3 ;
3456 instr fetch_xH, op_ANDA, store_nop ;A4 ;AND A,xh
3457 instr fetch_xL, op_ANDA, store_nop ;A5 ;AND A,xl
3458 instr fetch_MXX, op_ANDA, store_nop ;A6 ;AND A,(xx)
3459 instr fetch_nop, op_noni, store_nop ;A7 ;
3460 instr fetch_nop, op_noni, store_nop ;A8 ;
3461 instr fetch_nop, op_noni, store_nop ;A9 ;
3462 instr fetch_nop, op_noni, store_nop ;AA ;
3463 instr fetch_nop, op_noni, store_nop ;AB ;
3464 instr fetch_xH, op_XORA, store_nop ;AC ;XOR A,xh
3465 instr fetch_xL, op_XORA, store_nop ;AD ;XOR A,xl
3466 instr fetch_MXX, op_XORA, store_nop ;AE ;XOR A,(xx)
3467 instr fetch_nop, op_noni, store_nop ;AF ;
3468 instr fetch_nop, op_noni, store_nop ;B0 ;
3469 instr fetch_nop, op_noni, store_nop ;B1 ;
3470 instr fetch_nop, op_noni, store_nop ;B2 ;
3471 instr fetch_nop, op_noni, store_nop ;B3 ;
3472 instr fetch_xH, op_ORA, store_nop ;B4 ;OR A,xh
3473 instr fetch_xL, op_ORA, store_nop ;B5 ;OR A,xl
3474 instr fetch_MXX, op_ORA, store_nop ;B6 ;OR A,(xx)
3475 instr fetch_nop, op_noni, store_nop ;B7 ;
3476 instr fetch_nop, op_noni, store_nop ;B8 ;
3477 instr fetch_nop, op_noni, store_nop ;B9 ;
3478 instr fetch_nop, op_noni, store_nop ;BA ;
3479 instr fetch_nop, op_noni, store_nop ;BB ;
3480 instr fetch_xH, op_CPFA, store_nop ;BC ;CP A,xh
3481 instr fetch_xL, op_CPFA, store_nop ;BD ;CP A,xl
3482 instr fetch_MXX, op_CPFA, store_nop ;BE ;CP A,(xx)
3483 instr fetch_nop, op_noni, store_nop ;BF ;
3484 instr fetch_nop, op_noni, store_nop ;C0 ;
3485 instr fetch_nop, op_noni, store_nop ;C1 ;
3486 instr fetch_nop, op_noni, store_nop ;C2 ;
3487 instr fetch_nop, op_noni, store_nop ;C3 ;
3488 instr fetch_nop, op_noni, store_nop ;C4 ;
3489 instr fetch_nop, op_noni, store_nop ;C5 ;
3490 instr fetch_nop, op_noni, store_nop ;C6 ;
3491 instr fetch_nop, op_noni, store_nop ;C7 ;
3492 instr fetch_nop, op_noni, store_nop ;C8 ;
3493 instr fetch_nop, op_noni, store_nop ;C9 ;
3494 instr fetch_nop, op_noni, store_nop ;CA ;
3495 instr fetch_nop, op_prefixDDFDCB,store_nop ;CB ;
3496 instr fetch_nop, op_noni, store_nop ;CC ;
3497 instr fetch_nop, op_noni, store_nop ;CD ;
3498 instr fetch_nop, op_noni, store_nop ;CE ;
3499 instr fetch_nop, op_noni, store_nop ;CF ;
3500 instr fetch_nop, op_noni, store_nop ;D0 ;
3501 instr fetch_nop, op_noni, store_nop ;D1 ;
3502 instr fetch_nop, op_noni, store_nop ;D2 ;
3503 instr fetch_nop, op_noni, store_nop ;D3 ;
3504 instr fetch_nop, op_noni, store_nop ;D4 ;
3505 instr fetch_nop, op_noni, store_nop ;D5 ;
3506 instr fetch_nop, op_noni, store_nop ;D6 ;
3507 instr fetch_nop, op_noni, store_nop ;D7 ;
3508 instr fetch_nop, op_noni, store_nop ;D8 ;
3509 instr fetch_nop, op_noni, store_nop ;D9 ;
3510 instr fetch_nop, op_noni, store_nop ;DA ;
3511 instr fetch_nop, op_noni, store_nop ;DB ;
3512 instr fetch_nop, op_noni, store_nop ;DC ;
3513 instr fetch_nop, op_noni, store_nop ;DD ;
3514 instr fetch_nop, op_noni, store_nop ;DE ;
3515 instr fetch_nop, op_noni, store_nop ;DF ;
3516 instr fetch_nop, op_noni, store_nop ;E0 ;
3517 instr fetch_nop, op_POP16, store_xx ;E1 ;POP xx
3518 instr fetch_nop, op_noni, store_nop ;E2 ;
3519 instr fetch_MSP, op_EXxx, store_MSP ;E3 ;EX (SP),xx
3520 instr fetch_nop, op_noni, store_nop ;E4 ;
3521 instr fetch_xx, op_PUSH16, store_nop ;E5 ;PUSH xx
3522 instr fetch_nop, op_noni, store_nop ;E6 ;
3523 instr fetch_nop, op_noni, store_nop ;E7 ;
3524 instr fetch_nop, op_noni, store_nop ;E8 ;
3525 instr fetch_xx, op_nop, store_PC ;E9 ;JP xx
3526 instr fetch_nop, op_noni, store_nop ;EA ;
3527 instr fetch_nop, op_noni, store_nop ;EB ;
3528 instr fetch_nop, op_noni, store_nop ;EC ;
3529 instr fetch_nop, op_noni, store_nop ;ED ;
3530 instr fetch_nop, op_noni, store_nop ;EE ;
3531 instr fetch_nop, op_noni, store_nop ;EF ;
3532 instr fetch_nop, op_noni, store_nop ;F0 ;
3533 instr fetch_nop, op_noni, store_nop ;F1 ;
3534 instr fetch_nop, op_noni, store_nop ;F2 ;
3535 instr fetch_nop, op_noni, store_nop ;F3 ;
3536 instr fetch_nop, op_noni, store_nop ;F4 ;
3537 instr fetch_nop, op_noni, store_nop ;F5 ;
3538 instr fetch_nop, op_noni, store_nop ;F6 ;
3539 instr fetch_nop, op_noni, store_nop ;F7 ;
3540 instr fetch_nop, op_noni, store_nop ;F8 ;
3541 instr fetch_xx, op_nop, store_SP ;F9 ;LD SP,xx
3542 instr fetch_nop, op_noni, store_nop ;FA ;
3543 instr fetch_nop, op_noni, store_nop ;FB ;
3544 instr fetch_nop, op_noni, store_nop ;FC ;
3545 instr fetch_nop, op_noni, store_nop ;FD ;
3546 instr fetch_nop, op_noni, store_nop ;FE ;
3547 instr fetch_nop, op_noni, store_nop ;FF ;
3551 ;----------------------------------------------------------------
3552 ;|Mnemonic |SZHPNC|Description |Notes |
3553 ;----------------------------------------------------------------
3554 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
3555 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
3556 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
3557 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
3558 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
3559 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
3560 ;|SLL m |**0P0*|Shift Right Logical |
3561 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
3565 ;Rotate Left Cyclical. All bits move 1 to the
3566 ;left, the msb becomes c and lsb.
3571 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3576 ;Rotate Right Cyclical. All bits move 1 to the
3577 ;right, the lsb becomes c and msb.
3581 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3582 bmov z_flags,ZFL_C, opl,7
3587 ;Rotate Left. All bits move 1 to the left, the msb
3588 ;becomes c, c becomes lsb.
3594 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3595 bmov z_flags,ZFL_C, temp,AVR_C
3600 ;Rotate Right. All bits move 1 to the right, the lsb
3601 ;becomes c, c becomes msb.
3605 bmov opl,7, z_flags,ZFL_C ;old CY --> Bit 7
3606 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3607 bmov z_flags,ZFL_C, temp,AVR_C ;
3613 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3614 bmov z_flags,ZFL_C, temp,AVR_C ;
3620 bmov opl,7, opl,6 ;old CY --> Bit 7
3621 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3622 bmov z_flags,ZFL_C, temp,AVR_C ;
3629 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3630 bmov z_flags,ZFL_C, temp,AVR_C ;
3636 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
3637 bmov z_flags,ZFL_C, temp,AVR_C ;
3640 ;----------------------------------------------------------------
3641 ;|Mnemonic |SZHPNC|Description |Notes |
3642 ;----------------------------------------------------------------
3643 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
3644 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
3645 ;|SET b,m |------|Set bit |m=mv{2^b} |
3674 ori z_flags,(1<<ZFL_H)
3675 andi z_flags,~(1<<ZFL_N)
3676 bmov z_flags,ZFL_Z, temp,AVR_Z
3793 ;.macro m_do_store_b
3796 ;.equ do_store_b = 0
3833 instr fetch_B, op_RLC, store2_B ;00 ;RLC B
3834 instr fetch_C, op_RLC, store2_C ;01 ;RLC C
3835 instr fetch_D, op_RLC, store2_D ;02 ;RLC D
3836 instr fetch_E, op_RLC, store2_E ;03 ;RLC E
3837 instr fetch_H, op_RLC, store2_H ;04 ;RLC H
3838 instr fetch_L, op_RLC, store2_L ;05 ;RLC L
3839 instr fetch2_mhl, op_RLC, store_MHL ;06 ;RLC (HL)
3840 instr fetch_A, op_RLC, store2_A ;07 ;RLC A
3841 instr fetch_B, op_RRC, store2_B ;08 ;RRC B
3842 instr fetch_C, op_RRC, store2_C ;09 ;RRC C
3843 instr fetch_D, op_RRC, store2_D ;0A ;RRC D
3844 instr fetch_E, op_RRC, store2_E ;0B ;RRC E
3845 instr fetch_H, op_RRC, store2_H ;0C ;RRC H
3846 instr fetch_L, op_RRC, store2_L ;0D ;RRC L
3847 instr fetch2_mhl, op_RRC, store_MHL ;0E ;RRC (HL)
3848 instr fetch_A, op_RRC, store2_A ;0F ;RRC A
3849 instr fetch_B, op_RL, store2_B ;10 ;RL B
3850 instr fetch_C, op_RL, store2_C ;11 ;RL C
3851 instr fetch_D, op_RL, store2_D ;12 ;RL D
3852 instr fetch_E, op_RL, store2_E ;13 ;RL E
3853 instr fetch_H, op_RL, store2_H ;14 ;RL H
3854 instr fetch_L, op_RL, store2_L ;15 ;RL L
3855 instr fetch2_mhl, op_RL, store_MHL ;16 ;RL (HL)
3856 instr fetch_A, op_RL, store2_A ;17 ;RL A
3857 instr fetch_B, op_RR, store2_B ;18 ;RR B
3858 instr fetch_C, op_RR, store2_C ;19 ;RR C
3859 instr fetch_D, op_RR, store2_D ;1A ;RR D
3860 instr fetch_E, op_RR, store2_E ;1B ;RR E
3861 instr fetch_H, op_RR, store2_H ;1C ;RR H
3862 instr fetch_L, op_RR, store2_L ;1D ;RR L
3863 instr fetch2_mhl, op_RR, store_MHL ;1E ;RR (HL)
3864 instr fetch_A, op_RR, store2_A ;1F ;RR A
3865 instr fetch_B, op_SLA, store2_B ;20 ;SLA B
3866 instr fetch_C, op_SLA, store2_C ;21 ;SLA C
3867 instr fetch_D, op_SLA, store2_D ;22 ;SLA D
3868 instr fetch_E, op_SLA, store2_E ;23 ;SLA E
3869 instr fetch_H, op_SLA, store2_H ;24 ;SLA H
3870 instr fetch_L, op_SLA, store2_L ;25 ;SLA L
3871 instr fetch2_mhl, op_SLA, store_MHL ;26 ;SLA (HL)
3872 instr fetch_A, op_SLA, store2_A ;27 ;SLA A
3873 instr fetch_B, op_SRA, store2_B ;28 ;SRA B
3874 instr fetch_C, op_SRA, store2_C ;29 ;SRA C
3875 instr fetch_D, op_SRA, store2_D ;2A ;SRA D
3876 instr fetch_E, op_SRA, store2_E ;2B ;SRA E
3877 instr fetch_H, op_SRA, store2_H ;2C ;SRA H
3878 instr fetch_L, op_SRA, store2_L ;2D ;SRA L
3879 instr fetch2_mhl, op_SRA, store_MHL ;2E ;SRA (HL)
3880 instr fetch_A, op_SRA, store2_A ;2F ;SRA A
3881 instr fetch_B, op_SLL, store2_B ;30 ;SLL B
3882 instr fetch_C, op_SLL, store2_C ;31 ;SLL C
3883 instr fetch_D, op_SLL, store2_D ;32 ;SLL D
3884 instr fetch_E, op_SLL, store2_E ;33 ;SLL E
3885 instr fetch_H, op_SLL, store2_H ;34 ;SLL H
3886 instr fetch_L, op_SLL, store2_L ;35 ;SLL L
3887 instr fetch2_mhl, op_SLL, store_MHL ;36 ;SLL (HL)
3888 instr fetch_A, op_SLL, store2_A ;37 ;SLL A
3889 instr fetch_B, op_SRL, store2_B ;38 ;SRL B
3890 instr fetch_C, op_SRL, store2_C ;39 ;SRL C
3891 instr fetch_D, op_SRL, store2_D ;3A ;SRL D
3892 instr fetch_E, op_SRL, store2_E ;3B ;SRL E
3893 instr fetch_H, op_SRL, store2_H ;3C ;SRL H
3894 instr fetch_L, op_SRL, store2_L ;3D ;SRL L
3895 instr fetch2_mhl, op_SRL, store_MHL ;3E ;SRL (HL)
3896 instr fetch_A, op_SRL, store2_A ;3F ;SRL A
3897 instr fetch_B, op_BIT0, store_nop ;40 ;BIT 0,B
3898 instr fetch_C, op_BIT0, store_nop ;41 ;BIT 0,C
3899 instr fetch_D, op_BIT0, store_nop ;42 ;BIT 0,D
3900 instr fetch_E, op_BIT0, store_nop ;43 ;BIT 0,E
3901 instr fetch_H, op_BIT0, store_nop ;44 ;BIT 0,H
3902 instr fetch_L, op_BIT0, store_nop ;45 ;BIT 0,L
3903 instr fetch2_mhl, op_BIT0, store_nop ;46 ;BIT 0,(HL)
3904 instr fetch_A, op_BIT0, store_nop ;47 ;BIT 0,A
3905 instr fetch_B, op_BIT1, store_nop ;48 ;BIT 1,B
3906 instr fetch_C, op_BIT1, store_nop ;49 ;BIT 1,C
3907 instr fetch_D, op_BIT1, store_nop ;4A ;BIT 1,D
3908 instr fetch_E, op_BIT1, store_nop ;4B ;BIT 1,E
3909 instr fetch_H, op_BIT1, store_nop ;4C ;BIT 1,H
3910 instr fetch_L, op_BIT1, store_nop ;4D ;BIT 1,L
3911 instr fetch2_mhl, op_BIT1, store_nop ;4E ;BIT 1,(HL)
3912 instr fetch_A, op_BIT1, store_nop ;4F ;BIT 1,A
3913 instr fetch_B, op_BIT2, store_nop ;50 ;BIT 2,B
3914 instr fetch_C, op_BIT2, store_nop ;51 ;BIT 2,C
3915 instr fetch_D, op_BIT2, store_nop ;52 ;BIT 2,D
3916 instr fetch_E, op_BIT2, store_nop ;53 ;BIT 2,E
3917 instr fetch_H, op_BIT2, store_nop ;54 ;BIT 2,H
3918 instr fetch_L, op_BIT2, store_nop ;55 ;BIT 2,L
3919 instr fetch2_mhl, op_BIT2, store_nop ;56 ;BIT 2,(HL)
3920 instr fetch_A, op_BIT2, store_nop ;57 ;BIT 2,A
3921 instr fetch_B, op_BIT3, store_nop ;58 ;BIT 3,B
3922 instr fetch_C, op_BIT3, store_nop ;59 ;BIT 3,C
3923 instr fetch_D, op_BIT3, store_nop ;5A ;BIT 3,D
3924 instr fetch_E, op_BIT3, store_nop ;5B ;BIT 3,E
3925 instr fetch_H, op_BIT3, store_nop ;5C ;BIT 3,H
3926 instr fetch_L, op_BIT3, store_nop ;5D ;BIT 3,L
3927 instr fetch2_mhl, op_BIT3, store_nop ;5E ;BIT 3,(HL)
3928 instr fetch_A, op_BIT3, store_nop ;5F ;BIT 3,A
3929 instr fetch_B, op_BIT4, store_nop ;60 ;BIT 4,B
3930 instr fetch_C, op_BIT4, store_nop ;61 ;BIT 4,C
3931 instr fetch_D, op_BIT4, store_nop ;62 ;BIT 4,D
3932 instr fetch_E, op_BIT4, store_nop ;63 ;BIT 4,E
3933 instr fetch_H, op_BIT4, store_nop ;64 ;BIT 4,H
3934 instr fetch_L, op_BIT4, store_nop ;65 ;BIT 4,L
3935 instr fetch2_mhl, op_BIT4, store_nop ;66 ;BIT 4,(HL)
3936 instr fetch_A, op_BIT4, store_nop ;67 ;BIT 4,A
3937 instr fetch_B, op_BIT5, store_nop ;68 ;BIT 5,B
3938 instr fetch_C, op_BIT5, store_nop ;69 ;BIT 5,C
3939 instr fetch_D, op_BIT5, store_nop ;6A ;BIT 5,D
3940 instr fetch_E, op_BIT5, store_nop ;6B ;BIT 5,E
3941 instr fetch_H, op_BIT5, store_nop ;6C ;BIT 5,H
3942 instr fetch_L, op_BIT5, store_nop ;6D ;BIT 5,L
3943 instr fetch2_mhl, op_BIT5, store_nop ;6E ;BIT 5,(HL)
3944 instr fetch_A, op_BIT5, store_nop ;6F ;BIT 5,A
3945 instr fetch_B, op_BIT6, store_nop ;70 ;BIT 6,B
3946 instr fetch_C, op_BIT6, store_nop ;71 ;BIT 6,C
3947 instr fetch_D, op_BIT6, store_nop ;72 ;BIT 6,D
3948 instr fetch_E, op_BIT6, store_nop ;73 ;BIT 6,E
3949 instr fetch_H, op_BIT6, store_nop ;74 ;BIT 6,H
3950 instr fetch_L, op_BIT6, store_nop ;75 ;BIT 6,L
3951 instr fetch2_mhl, op_BIT6, store_nop ;76 ;BIT 6,(HL)
3952 instr fetch_A, op_BIT6, store_nop ;77 ;BIT 6,A
3953 instr fetch_B, op_BIT7, store_nop ;78 ;BIT 7,B
3954 instr fetch_C, op_BIT7, store_nop ;79 ;BIT 7,C
3955 instr fetch_D, op_BIT7, store_nop ;7A ;BIT 7,D
3956 instr fetch_E, op_BIT7, store_nop ;7B ;BIT 7,E
3957 instr fetch_H, op_BIT7, store_nop ;7C ;BIT 7,H
3958 instr fetch_L, op_BIT7, store_nop ;7D ;BIT 7,L
3959 instr fetch2_mhl, op_BIT7, store_nop ;7E ;BIT 7,(HL)
3960 instr fetch_A, op_BIT7, store_nop ;7F ;BIT 7,A
3961 instr fetch_B, op_RES0, store2_B ;80 ;RES 0,B
3962 instr fetch_C, op_RES0, store2_C ;81 ;RES 0,C
3963 instr fetch_D, op_RES0, store2_D ;82 ;RES 0,D
3964 instr fetch_E, op_RES0, store2_E ;83 ;RES 0,E
3965 instr fetch_H, op_RES0, store2_H ;84 ;RES 0,H
3966 instr fetch_L, op_RES0, store2_L ;85 ;RES 0,L
3967 instr fetch2_mhl, op_RES0, store_MHL ;86 ;RES 0,(HL)
3968 instr fetch_A, op_RES0, store2_A ;87 ;RES 0,A
3969 instr fetch_B, op_RES1, store2_B ;88 ;RES 1,B
3970 instr fetch_C, op_RES1, store2_C ;89 ;RES 1,C
3971 instr fetch_D, op_RES1, store2_D ;8A ;RES 1,D
3972 instr fetch_E, op_RES1, store2_E ;8B ;RES 1,E
3973 instr fetch_H, op_RES1, store2_H ;8C ;RES 1,H
3974 instr fetch_L, op_RES1, store2_L ;8D ;RES 1,L
3975 instr fetch2_mhl, op_RES1, store_MHL ;8E ;RES 1,(HL)
3976 instr fetch_A, op_RES1, store2_A ;8F ;RES 1,A
3977 instr fetch_B, op_RES2, store2_B ;90 ;RES 2,B
3978 instr fetch_C, op_RES2, store2_C ;91 ;RES 2,C
3979 instr fetch_D, op_RES2, store2_D ;92 ;RES 2,D
3980 instr fetch_E, op_RES2, store2_E ;93 ;RES 2,E
3981 instr fetch_H, op_RES2, store2_H ;94 ;RES 2,H
3982 instr fetch_L, op_RES2, store2_L ;95 ;RES 2,L
3983 instr fetch2_mhl, op_RES2, store_MHL ;96 ;RES 2,(HL)
3984 instr fetch_A, op_RES2, store2_A ;97 ;RES 2,A
3985 instr fetch_B, op_RES3, store2_B ;98 ;RES 3,B
3986 instr fetch_C, op_RES3, store2_C ;99 ;RES 3,C
3987 instr fetch_D, op_RES3, store2_D ;9A ;RES 3,D
3988 instr fetch_E, op_RES3, store2_E ;9B ;RES 3,E
3989 instr fetch_H, op_RES3, store2_H ;9C ;RES 3,H
3990 instr fetch_L, op_RES3, store2_L ;9D ;RES 3,L
3991 instr fetch2_mhl, op_RES3, store_MHL ;9E ;RES 3,(HL)
3992 instr fetch_A, op_RES3, store2_A ;9F ;RES 3,A
3993 instr fetch_B, op_RES4, store2_B ;A0 ;RES 4,B
3994 instr fetch_C, op_RES4, store2_C ;A1 ;RES 4,C
3995 instr fetch_D, op_RES4, store2_D ;A2 ;RES 4,D
3996 instr fetch_E, op_RES4, store2_E ;A3 ;RES 4,E
3997 instr fetch_H, op_RES4, store2_H ;A4 ;RES 4,H
3998 instr fetch_L, op_RES4, store2_L ;A5 ;RES 4,L
3999 instr fetch2_mhl, op_RES4, store_MHL ;A6 ;RES 4,(HL)
4000 instr fetch_A, op_RES4, store2_A ;A7 ;RES 4,A
4001 instr fetch_B, op_RES5, store2_B ;A8 ;RES 5,B
4002 instr fetch_C, op_RES5, store2_C ;A9 ;RES 5,C
4003 instr fetch_D, op_RES5, store2_D ;AA ;RES 5,D
4004 instr fetch_E, op_RES5, store2_E ;AB ;RES 5,E
4005 instr fetch_H, op_RES5, store2_H ;AC ;RES 5,H
4006 instr fetch_L, op_RES5, store2_L ;AD ;RES 5,L
4007 instr fetch2_mhl, op_RES5, store_MHL ;AE ;RES 5,(HL)
4008 instr fetch_A, op_RES5, store2_A ;AF ;RES 5,A
4009 instr fetch_B, op_RES6, store2_B ;B0 ;RES 6,B
4010 instr fetch_C, op_RES6, store2_C ;B1 ;RES 6,C
4011 instr fetch_D, op_RES6, store2_D ;B2 ;RES 6,D
4012 instr fetch_E, op_RES6, store2_E ;B3 ;RES 6,E
4013 instr fetch_H, op_RES6, store2_H ;B4 ;RES 6,H
4014 instr fetch_L, op_RES6, store2_L ;B5 ;RES 6,L
4015 instr fetch2_mhl, op_RES6, store_MHL ;B6 ;RES 6,(HL)
4016 instr fetch_A, op_RES6, store2_A ;B7 ;RES 6,A
4017 instr fetch_B, op_RES7, store2_B ;B8 ;RES 7,B
4018 instr fetch_C, op_RES7, store2_C ;B9 ;RES 7,C
4019 instr fetch_D, op_RES7, store2_D ;BA ;RES 7,D
4020 instr fetch_E, op_RES7, store2_E ;BB ;RES 7,E
4021 instr fetch_H, op_RES7, store2_H ;BC ;RES 7,H
4022 instr fetch_L, op_RES7, store2_L ;BD ;RES 7,L
4023 instr fetch2_mhl, op_RES7, store_MHL ;BE ;RES 7,(HL)
4024 instr fetch_A, op_RES7, store2_A ;BF ;RES 7,A
4025 instr fetch_B, op_SET0, store2_B ;C0 ;SET 0,B
4026 instr fetch_C, op_SET0, store2_C ;C1 ;SET 0,C
4027 instr fetch_D, op_SET0, store2_D ;C2 ;SET 0,D
4028 instr fetch_E, op_SET0, store2_E ;C3 ;SET 0,E
4029 instr fetch_H, op_SET0, store2_H ;C4 ;SET 0,H
4030 instr fetch_L, op_SET0, store2_L ;C5 ;SET 0,L
4031 instr fetch2_mhl, op_SET0, store_MHL ;C6 ;SET 0,(HL)
4032 instr fetch_A, op_SET0, store2_A ;C7 ;SET 0,A
4033 instr fetch_B, op_SET1, store2_B ;C8 ;SET 1,B
4034 instr fetch_C, op_SET1, store2_C ;C9 ;SET 1,C
4035 instr fetch_D, op_SET1, store2_D ;CA ;SET 1,D
4036 instr fetch_E, op_SET1, store2_E ;CB ;SET 1,E
4037 instr fetch_H, op_SET1, store2_H ;CC ;SET 1,H
4038 instr fetch_L, op_SET1, store2_L ;CD ;SET 1,L
4039 instr fetch2_mhl, op_SET1, store_MHL ;CE ;SET 1,(HL)
4040 instr fetch_A, op_SET1, store2_A ;CF ;SET 1,A
4041 instr fetch_B, op_SET2, store2_B ;D0 ;SET 2,B
4042 instr fetch_C, op_SET2, store2_C ;D1 ;SET 2,C
4043 instr fetch_D, op_SET2, store2_D ;D2 ;SET 2,D
4044 instr fetch_E, op_SET2, store2_E ;D3 ;SET 2,E
4045 instr fetch_H, op_SET2, store2_H ;D4 ;SET 2,H
4046 instr fetch_L, op_SET2, store2_L ;D5 ;SET 2,L
4047 instr fetch2_mhl, op_SET2, store_MHL ;D6 ;SET 2,(HL)
4048 instr fetch_A, op_SET2, store2_A ;D7 ;SET 2,A
4049 instr fetch_B, op_SET3, store2_B ;D8 ;SET 3,B
4050 instr fetch_C, op_SET3, store2_C ;D9 ;SET 3,C
4051 instr fetch_D, op_SET3, store2_D ;DA ;SET 3,D
4052 instr fetch_E, op_SET3, store2_E ;DB ;SET 3,E
4053 instr fetch_H, op_SET3, store2_H ;DC ;SET 3,H
4054 instr fetch_L, op_SET3, store2_L ;DD ;SET 3,L
4055 instr fetch2_mhl, op_SET3, store_MHL ;DE ;SET 3,(HL)
4056 instr fetch_A, op_SET3, store2_A ;DF ;SET 3,A
4057 instr fetch_B, op_SET4, store2_B ;E0 ;SET 4,B
4058 instr fetch_C, op_SET4, store2_C ;E1 ;SET 4,C
4059 instr fetch_D, op_SET4, store2_D ;E2 ;SET 4,D
4060 instr fetch_E, op_SET4, store2_E ;E3 ;SET 4,E
4061 instr fetch_H, op_SET4, store2_H ;E4 ;SET 4,H
4062 instr fetch_L, op_SET4, store2_L ;E5 ;SET 4,L
4063 instr fetch2_mhl, op_SET4, store_MHL ;E6 ;SET 4,(HL)
4064 instr fetch_A, op_SET4, store2_A ;E7 ;SET 4,A
4065 instr fetch_B, op_SET5, store2_B ;E8 ;SET 5,B
4066 instr fetch_C, op_SET5, store2_C ;E9 ;SET 5,C
4067 instr fetch_D, op_SET5, store2_D ;EA ;SET 5,D
4068 instr fetch_E, op_SET5, store2_E ;EB ;SET 5,E
4069 instr fetch_H, op_SET5, store2_H ;EC ;SET 5,H
4070 instr fetch_L, op_SET5, store2_L ;ED ;SET 5,L
4071 instr fetch2_mhl, op_SET5, store_MHL ;EE ;SET 5,(HL)
4072 instr fetch_A, op_SET5, store2_A ;EF ;SET 5,A
4073 instr fetch_B, op_SET6, store2_B ;F0 ;SET 6,B
4074 instr fetch_C, op_SET6, store2_C ;F1 ;SET 6,C
4075 instr fetch_D, op_SET6, store2_D ;F2 ;SET 6,D
4076 instr fetch_E, op_SET6, store2_E ;F3 ;SET 6,E
4077 instr fetch_H, op_SET6, store2_H ;F4 ;SET 6,H
4078 instr fetch_L, op_SET6, store2_L ;F5 ;SET 6,L
4079 instr fetch2_mhl, op_SET6, store_MHL ;F6 ;SET 6,(HL)
4080 instr fetch_A, op_SET6, store2_A ;F7 ;SET 6,A
4081 instr fetch_B, op_SET7, store2_B ;F8 ;SET 7,B
4082 instr fetch_C, op_SET7, store2_C ;F9 ;SET 7,C
4083 instr fetch_D, op_SET7, store2_D ;FA ;SET 7,D
4084 instr fetch_E, op_SET7, store2_E ;FB ;SET 7,E
4085 instr fetch_H, op_SET7, store2_H ;FC ;SET 7,H
4086 instr fetch_L, op_SET7, store2_L ;FD ;SET 7,L
4087 instr fetch2_mhl, op_SET7, store_MHL ;FE ;SET 7,(HL)
4088 instr fetch_A, op_SET7, store2_A ;FF ;SET 7,A
4093 instr fetch_nop, op_RLC, store2_B ;00 ;RLC (Ix+d),B
4094 instr fetch_nop, op_RLC, store2_C ;01 ;RLC (Ix+d),C
4095 instr fetch_nop, op_RLC, store2_D ;02 ;RLC (Ix+d),D
4096 instr fetch_nop, op_RLC, store2_E ;03 ;RLC (Ix+d),E
4097 instr fetch_nop, op_RLC, store2_H ;04 ;RLC (Ix+d),H
4098 instr fetch_nop, op_RLC, store2_L ;05 ;RLC (Ix+d),L
4099 instr fetch_nop, op_RLC, store_nop ;06 ;RLC (Ix+d)
4100 instr fetch_nop, op_RLC, store2_A ;07 ;RLC (Ix+d),A
4101 instr fetch_nop, op_RRC, store2_B ;08 ;RRC (Ix+d),B
4102 instr fetch_nop, op_RRC, store2_C ;09 ;RRC (Ix+d),C
4103 instr fetch_nop, op_RRC, store2_D ;0A ;RRC (Ix+d),D
4104 instr fetch_nop, op_RRC, store2_E ;0B ;RRC (Ix+d),E
4105 instr fetch_nop, op_RRC, store2_H ;0C ;RRC (Ix+d),H
4106 instr fetch_nop, op_RRC, store2_L ;0D ;RRC (Ix+d),L
4107 instr fetch_nop, op_RRC, store_nop ;0E ;RRC (Ix+d)
4108 instr fetch_nop, op_RRC, store2_A ;0F ;RRC (Ix+d),A
4109 instr fetch_nop, op_RL, store2_B ;10 ;RL (Ix+d),B
4110 instr fetch_nop, op_RL, store2_C ;11 ;RL (Ix+d),C
4111 instr fetch_nop, op_RL, store2_D ;12 ;RL (Ix+d),D
4112 instr fetch_nop, op_RL, store2_E ;13 ;RL (Ix+d),E
4113 instr fetch_nop, op_RL, store2_H ;14 ;RL (Ix+d),H
4114 instr fetch_nop, op_RL, store2_L ;15 ;RL (Ix+d),L
4115 instr fetch_nop, op_RL, store_nop ;16 ;RL (Ix+d)
4116 instr fetch_nop, op_RL, store2_A ;17 ;RL (Ix+d),A
4117 instr fetch_nop, op_RR, store2_B ;18 ;RR (Ix+d),B
4118 instr fetch_nop, op_RR, store2_C ;19 ;RR (Ix+d),C
4119 instr fetch_nop, op_RR, store2_D ;1A ;RR (Ix+d),D
4120 instr fetch_nop, op_RR, store2_E ;1B ;RR (Ix+d),E
4121 instr fetch_nop, op_RR, store2_H ;1C ;RR (Ix+d),H
4122 instr fetch_nop, op_RR, store2_L ;1D ;RR (Ix+d),L
4123 instr fetch_nop, op_RR, store_nop ;1E ;RR (Ix+d)
4124 instr fetch_nop, op_RR, store2_A ;1F ;RR (Ix+d),A
4125 instr fetch_nop, op_SLA, store2_B ;20 ;SLA (Ix+d),B
4126 instr fetch_nop, op_SLA, store2_C ;21 ;SLA (Ix+d),C
4127 instr fetch_nop, op_SLA, store2_D ;22 ;SLA (Ix+d),D
4128 instr fetch_nop, op_SLA, store2_E ;23 ;SLA (Ix+d),E
4129 instr fetch_nop, op_SLA, store2_H ;24 ;SLA (Ix+d),H
4130 instr fetch_nop, op_SLA, store2_L ;25 ;SLA (Ix+d),L
4131 instr fetch_nop, op_SLA, store_nop ;26 ;SLA (Ix+d)
4132 instr fetch_nop, op_SLA, store2_A ;27 ;SLA (Ix+d),A
4133 instr fetch_nop, op_SRA, store2_B ;28 ;SRA (Ix+d),B
4134 instr fetch_nop, op_SRA, store2_C ;29 ;SRA (Ix+d),C
4135 instr fetch_nop, op_SRA, store2_D ;2A ;SRA (Ix+d),D
4136 instr fetch_nop, op_SRA, store2_E ;2B ;SRA (Ix+d),E
4137 instr fetch_nop, op_SRA, store2_H ;2C ;SRA (Ix+d),H
4138 instr fetch_nop, op_SRA, store2_L ;2D ;SRA (Ix+d),L
4139 instr fetch_nop, op_SRA, store_nop ;2E ;SRA (Ix+d)
4140 instr fetch_nop, op_SRA, store2_A ;2F ;SRA (Ix+d),A
4141 instr fetch_nop, op_SLL, store2_B ;30 ;SLL (Ix+d),B
4142 instr fetch_nop, op_SLL, store2_C ;31 ;SLL (Ix+d),C
4143 instr fetch_nop, op_SLL, store2_D ;32 ;SLL (Ix+d),D
4144 instr fetch_nop, op_SLL, store2_E ;33 ;SLL (Ix+d),E
4145 instr fetch_nop, op_SLL, store2_H ;34 ;SLL (Ix+d),H
4146 instr fetch_nop, op_SLL, store2_L ;35 ;SLL (Ix+d),L
4147 instr fetch_nop, op_SLL, store_nop ;36 ;SLL (Ix+d)
4148 instr fetch_nop, op_SLL, store2_A ;37 ;SLL (Ix+d),A
4149 instr fetch_nop, op_SRL, store2_B ;38 ;SRL (Ix+d),B
4150 instr fetch_nop, op_SRL, store2_C ;39 ;SRL (Ix+d),C
4151 instr fetch_nop, op_SRL, store2_D ;3A ;SRL (Ix+d),D
4152 instr fetch_nop, op_SRL, store2_E ;3B ;SRL (Ix+d),E
4153 instr fetch_nop, op_SRL, store2_H ;3C ;SRL (Ix+d),H
4154 instr fetch_nop, op_SRL, store2_L ;3D ;SRL (Ix+d),L
4155 instr fetch_nop, op_SRL, store_nop ;3E ;SRL (Ix+d)
4156 instr fetch_nop, op_SRL, store2_A ;3F ;SRL (Ix+d),A
4157 instr fetch_nop, op_BIT0, store_nop ;40 ;BIT 0,(Ix+d),B
4158 instr fetch_nop, op_BIT0, store_nop ;41 ;BIT 0,(Ix+d),C
4159 instr fetch_nop, op_BIT0, store_nop ;42 ;BIT 0,(Ix+d),D
4160 instr fetch_nop, op_BIT0, store_nop ;43 ;BIT 0,(Ix+d),E
4161 instr fetch_nop, op_BIT0, store_nop ;44 ;BIT 0,(Ix+d),H
4162 instr fetch_nop, op_BIT0, store_nop ;45 ;BIT 0,(Ix+d),L
4163 instr fetch_nop, op_BIT0, store_nop ;46 ;BIT 0,(Ix+d)
4164 instr fetch_nop, op_BIT0, store_nop ;47 ;BIT 0,(Ix+d),A
4165 instr fetch_nop, op_BIT1, store_nop ;48 ;BIT 1,(Ix+d),B
4166 instr fetch_nop, op_BIT1, store_nop ;49 ;BIT 1,(Ix+d),C
4167 instr fetch_nop, op_BIT1, store_nop ;4A ;BIT 1,(Ix+d),D
4168 instr fetch_nop, op_BIT1, store_nop ;4B ;BIT 1,(Ix+d),E
4169 instr fetch_nop, op_BIT1, store_nop ;4C ;BIT 1,(Ix+d),H
4170 instr fetch_nop, op_BIT1, store_nop ;4D ;BIT 1,(Ix+d),L
4171 instr fetch_nop, op_BIT1, store_nop ;4E ;BIT 1,(Ix+d)
4172 instr fetch_nop, op_BIT1, store_nop ;4F ;BIT 1,(Ix+d),A
4173 instr fetch_nop, op_BIT2, store_nop ;50 ;BIT 2,(Ix+d),B
4174 instr fetch_nop, op_BIT2, store_nop ;51 ;BIT 2,(Ix+d),C
4175 instr fetch_nop, op_BIT2, store_nop ;52 ;BIT 2,(Ix+d),D
4176 instr fetch_nop, op_BIT2, store_nop ;53 ;BIT 2,(Ix+d),E
4177 instr fetch_nop, op_BIT2, store_nop ;54 ;BIT 2,(Ix+d),H
4178 instr fetch_nop, op_BIT2, store_nop ;55 ;BIT 2,(Ix+d),L
4179 instr fetch_nop, op_BIT2, store_nop ;56 ;BIT 2,(Ix+d)
4180 instr fetch_nop, op_BIT2, store_nop ;57 ;BIT 2,(Ix+d),A
4181 instr fetch_nop, op_BIT3, store_nop ;58 ;BIT 3,(Ix+d),B
4182 instr fetch_nop, op_BIT3, store_nop ;59 ;BIT 3,(Ix+d),C
4183 instr fetch_nop, op_BIT3, store_nop ;5A ;BIT 3,(Ix+d),D
4184 instr fetch_nop, op_BIT3, store_nop ;5B ;BIT 3,(Ix+d),E
4185 instr fetch_nop, op_BIT3, store_nop ;5C ;BIT 3,(Ix+d),H
4186 instr fetch_nop, op_BIT3, store_nop ;5D ;BIT 3,(Ix+d),L
4187 instr fetch_nop, op_BIT3, store_nop ;5E ;BIT 3,(Ix+d)
4188 instr fetch_nop, op_BIT3, store_nop ;5F ;BIT 3,(Ix+d),A
4189 instr fetch_nop, op_BIT4, store_nop ;60 ;BIT 4,(Ix+d),B
4190 instr fetch_nop, op_BIT4, store_nop ;61 ;BIT 4,(Ix+d),C
4191 instr fetch_nop, op_BIT4, store_nop ;62 ;BIT 4,(Ix+d),D
4192 instr fetch_nop, op_BIT4, store_nop ;63 ;BIT 4,(Ix+d),E
4193 instr fetch_nop, op_BIT4, store_nop ;64 ;BIT 4,(Ix+d),H
4194 instr fetch_nop, op_BIT4, store_nop ;65 ;BIT 4,(Ix+d),L
4195 instr fetch_nop, op_BIT4, store_nop ;66 ;BIT 4,(Ix+d)
4196 instr fetch_nop, op_BIT4, store_nop ;67 ;BIT 4,(Ix+d),A
4197 instr fetch_nop, op_BIT5, store_nop ;68 ;BIT 5,(Ix+d),B
4198 instr fetch_nop, op_BIT5, store_nop ;69 ;BIT 5,(Ix+d),C
4199 instr fetch_nop, op_BIT5, store_nop ;6A ;BIT 5,(Ix+d),D
4200 instr fetch_nop, op_BIT5, store_nop ;6B ;BIT 5,(Ix+d),E
4201 instr fetch_nop, op_BIT5, store_nop ;6C ;BIT 5,(Ix+d),H
4202 instr fetch_nop, op_BIT5, store_nop ;6D ;BIT 5,(Ix+d),L
4203 instr fetch_nop, op_BIT5, store_nop ;6E ;BIT 5,(Ix+d)
4204 instr fetch_nop, op_BIT5, store_nop ;6F ;BIT 5,(Ix+d),A
4205 instr fetch_nop, op_BIT6, store_nop ;70 ;BIT 6,(Ix+d),B
4206 instr fetch_nop, op_BIT6, store_nop ;71 ;BIT 6,(Ix+d),C
4207 instr fetch_nop, op_BIT6, store_nop ;72 ;BIT 6,(Ix+d),D
4208 instr fetch_nop, op_BIT6, store_nop ;73 ;BIT 6,(Ix+d),E
4209 instr fetch_nop, op_BIT6, store_nop ;74 ;BIT 6,(Ix+d),H
4210 instr fetch_nop, op_BIT6, store_nop ;75 ;BIT 6,(Ix+d),L
4211 instr fetch_nop, op_BIT6, store_nop ;76 ;BIT 6,(Ix+d)
4212 instr fetch_nop, op_BIT6, store_nop ;77 ;BIT 6,(Ix+d),A
4213 instr fetch_nop, op_BIT7, store_nop ;78 ;BIT 7,(Ix+d),B
4214 instr fetch_nop, op_BIT7, store_nop ;79 ;BIT 7,(Ix+d),C
4215 instr fetch_nop, op_BIT7, store_nop ;7A ;BIT 7,(Ix+d),D
4216 instr fetch_nop, op_BIT7, store_nop ;7B ;BIT 7,(Ix+d),E
4217 instr fetch_nop, op_BIT7, store_nop ;7C ;BIT 7,(Ix+d),H
4218 instr fetch_nop, op_BIT7, store_nop ;7D ;BIT 7,(Ix+d),L
4219 instr fetch_nop, op_BIT7, store_nop ;7E ;BIT 7,(Ix+d)
4220 instr fetch_nop, op_BIT7, store_nop ;7F ;BIT 7,(Ix+d),A
4221 instr fetch_nop, op_RES0, store2_B ;80 ;RES 0,(Ix+d),B
4222 instr fetch_nop, op_RES0, store2_C ;81 ;RES 0,(Ix+d),C
4223 instr fetch_nop, op_RES0, store2_D ;82 ;RES 0,(Ix+d),D
4224 instr fetch_nop, op_RES0, store2_E ;83 ;RES 0,(Ix+d),E
4225 instr fetch_nop, op_RES0, store2_H ;84 ;RES 0,(Ix+d),H
4226 instr fetch_nop, op_RES0, store2_L ;85 ;RES 0,(Ix+d),L
4227 instr fetch_nop, op_RES0, store_nop ;86 ;RES 0,(Ix+d)
4228 instr fetch_nop, op_RES0, store2_A ;87 ;RES 0,(Ix+d),A
4229 instr fetch_nop, op_RES1, store2_B ;88 ;RES 1,(Ix+d),B
4230 instr fetch_nop, op_RES1, store2_C ;89 ;RES 1,(Ix+d),C
4231 instr fetch_nop, op_RES1, store2_D ;8A ;RES 1,(Ix+d),D
4232 instr fetch_nop, op_RES1, store2_E ;8B ;RES 1,(Ix+d),E
4233 instr fetch_nop, op_RES1, store2_H ;8C ;RES 1,(Ix+d),H
4234 instr fetch_nop, op_RES1, store2_L ;8D ;RES 1,(Ix+d),L
4235 instr fetch_nop, op_RES1, store_nop ;8E ;RES 1,(Ix+d)
4236 instr fetch_nop, op_RES1, store2_A ;8F ;RES 1,(Ix+d),A
4237 instr fetch_nop, op_RES2, store2_B ;90 ;RES 2,(Ix+d),B
4238 instr fetch_nop, op_RES2, store2_C ;91 ;RES 2,(Ix+d),C
4239 instr fetch_nop, op_RES2, store2_D ;92 ;RES 2,(Ix+d),D
4240 instr fetch_nop, op_RES2, store2_E ;93 ;RES 2,(Ix+d),E
4241 instr fetch_nop, op_RES2, store2_H ;94 ;RES 2,(Ix+d),H
4242 instr fetch_nop, op_RES2, store2_L ;95 ;RES 2,(Ix+d),L
4243 instr fetch_nop, op_RES2, store_nop ;96 ;RES 2,(Ix+d)
4244 instr fetch_nop, op_RES2, store2_A ;97 ;RES 2,(Ix+d),A
4245 instr fetch_nop, op_RES3, store2_B ;98 ;RES 3,(Ix+d),B
4246 instr fetch_nop, op_RES3, store2_C ;99 ;RES 3,(Ix+d),C
4247 instr fetch_nop, op_RES3, store2_D ;9A ;RES 3,(Ix+d),D
4248 instr fetch_nop, op_RES3, store2_E ;9B ;RES 3,(Ix+d),E
4249 instr fetch_nop, op_RES3, store2_H ;9C ;RES 3,(Ix+d),H
4250 instr fetch_nop, op_RES3, store2_L ;9D ;RES 3,(Ix+d),L
4251 instr fetch_nop, op_RES3, store_nop ;9E ;RES 3,(Ix+d)
4252 instr fetch_nop, op_RES3, store2_A ;9F ;RES 3,(Ix+d),A
4253 instr fetch_nop, op_RES4, store2_B ;A0 ;RES 4,(Ix+d),B
4254 instr fetch_nop, op_RES4, store2_C ;A1 ;RES 4,(Ix+d),C
4255 instr fetch_nop, op_RES4, store2_D ;A2 ;RES 4,(Ix+d),D
4256 instr fetch_nop, op_RES4, store2_E ;A3 ;RES 4,(Ix+d),E
4257 instr fetch_nop, op_RES4, store2_H ;A4 ;RES 4,(Ix+d),H
4258 instr fetch_nop, op_RES4, store2_L ;A5 ;RES 4,(Ix+d),L
4259 instr fetch_nop, op_RES4, store_nop ;A6 ;RES 4,(Ix+d)
4260 instr fetch_nop, op_RES4, store2_A ;A7 ;RES 4,(Ix+d),A
4261 instr fetch_nop, op_RES5, store2_B ;A8 ;RES 5,(Ix+d),B
4262 instr fetch_nop, op_RES5, store2_C ;A9 ;RES 5,(Ix+d),C
4263 instr fetch_nop, op_RES5, store2_D ;AA ;RES 5,(Ix+d),D
4264 instr fetch_nop, op_RES5, store2_E ;AB ;RES 5,(Ix+d),E
4265 instr fetch_nop, op_RES5, store2_H ;AC ;RES 5,(Ix+d),H
4266 instr fetch_nop, op_RES5, store2_L ;AD ;RES 5,(Ix+d),L
4267 instr fetch_nop, op_RES5, store_nop ;AE ;RES 5,(Ix+d)
4268 instr fetch_nop, op_RES5, store2_A ;AF ;RES 5,(Ix+d),A
4269 instr fetch_nop, op_RES6, store2_B ;B0 ;RES 6,(Ix+d),B
4270 instr fetch_nop, op_RES6, store2_C ;B1 ;RES 6,(Ix+d),C
4271 instr fetch_nop, op_RES6, store2_D ;B2 ;RES 6,(Ix+d),D
4272 instr fetch_nop, op_RES6, store2_E ;B3 ;RES 6,(Ix+d),E
4273 instr fetch_nop, op_RES6, store2_H ;B4 ;RES 6,(Ix+d),H
4274 instr fetch_nop, op_RES6, store2_L ;B5 ;RES 6,(Ix+d),L
4275 instr fetch_nop, op_RES6, store_nop ;B6 ;RES 6,(Ix+d)
4276 instr fetch_nop, op_RES6, store2_A ;B7 ;RES 6,(Ix+d),A
4277 instr fetch_nop, op_RES7, store2_B ;B8 ;RES 7,(Ix+d),B
4278 instr fetch_nop, op_RES7, store2_C ;B9 ;RES 7,(Ix+d),C
4279 instr fetch_nop, op_RES7, store2_D ;BA ;RES 7,(Ix+d),D
4280 instr fetch_nop, op_RES7, store2_E ;BB ;RES 7,(Ix+d),E
4281 instr fetch_nop, op_RES7, store2_H ;BC ;RES 7,(Ix+d),H
4282 instr fetch_nop, op_RES7, store2_L ;BD ;RES 7,(Ix+d),L
4283 instr fetch_nop, op_RES7, store_nop ;BE ;RES 7,(Ix+d)
4284 instr fetch_nop, op_RES7, store2_A ;BF ;RES 7,(Ix+d),A
4285 instr fetch_nop, op_SET0, store2_B ;C0 ;SET 0,(Ix+d),B
4286 instr fetch_nop, op_SET0, store2_C ;C1 ;SET 0,(Ix+d),C
4287 instr fetch_nop, op_SET0, store2_D ;C2 ;SET 0,(Ix+d),D
4288 instr fetch_nop, op_SET0, store2_E ;C3 ;SET 0,(Ix+d),E
4289 instr fetch_nop, op_SET0, store2_H ;C4 ;SET 0,(Ix+d),H
4290 instr fetch_nop, op_SET0, store2_L ;C5 ;SET 0,(Ix+d),L
4291 instr fetch_nop, op_SET0, store_nop ;C6 ;SET 0,(Ix+d)
4292 instr fetch_nop, op_SET0, store2_A ;C7 ;SET 0,(Ix+d),A
4293 instr fetch_nop, op_SET1, store2_B ;C8 ;SET 1,(Ix+d),B
4294 instr fetch_nop, op_SET1, store2_C ;C9 ;SET 1,(Ix+d),C
4295 instr fetch_nop, op_SET1, store2_D ;CA ;SET 1,(Ix+d),D
4296 instr fetch_nop, op_SET1, store2_E ;CB ;SET 1,(Ix+d),E
4297 instr fetch_nop, op_SET1, store2_H ;CC ;SET 1,(Ix+d),H
4298 instr fetch_nop, op_SET1, store2_L ;CD ;SET 1,(Ix+d),L
4299 instr fetch_nop, op_SET1, store_nop ;CE ;SET 1,(Ix+d)
4300 instr fetch_nop, op_SET1, store2_A ;CF ;SET 1,(Ix+d),A
4301 instr fetch_nop, op_SET2, store2_B ;D0 ;SET 2,(Ix+d),B
4302 instr fetch_nop, op_SET2, store2_C ;D1 ;SET 2,(Ix+d),C
4303 instr fetch_nop, op_SET2, store2_D ;D2 ;SET 2,(Ix+d),D
4304 instr fetch_nop, op_SET2, store2_E ;D3 ;SET 2,(Ix+d),E
4305 instr fetch_nop, op_SET2, store2_H ;D4 ;SET 2,(Ix+d),H
4306 instr fetch_nop, op_SET2, store2_L ;D5 ;SET 2,(Ix+d),L
4307 instr fetch_nop, op_SET2, store_nop ;D6 ;SET 2,(Ix+d)
4308 instr fetch_nop, op_SET2, store2_A ;D7 ;SET 2,(Ix+d),A
4309 instr fetch_nop, op_SET3, store2_B ;D8 ;SET 3,(Ix+d),B
4310 instr fetch_nop, op_SET3, store2_C ;D9 ;SET 3,(Ix+d),C
4311 instr fetch_nop, op_SET3, store2_D ;DA ;SET 3,(Ix+d),D
4312 instr fetch_nop, op_SET3, store2_E ;DB ;SET 3,(Ix+d),E
4313 instr fetch_nop, op_SET3, store2_H ;DC ;SET 3,(Ix+d),H
4314 instr fetch_nop, op_SET3, store2_L ;DD ;SET 3,(Ix+d),L
4315 instr fetch_nop, op_SET3, store_nop ;DE ;SET 3,(Ix+d)
4316 instr fetch_nop, op_SET3, store2_A ;DF ;SET 3,(Ix+d),A
4317 instr fetch_nop, op_SET4, store2_B ;E0 ;SET 4,(Ix+d),B
4318 instr fetch_nop, op_SET4, store2_C ;E1 ;SET 4,(Ix+d),C
4319 instr fetch_nop, op_SET4, store2_D ;E2 ;SET 4,(Ix+d),D
4320 instr fetch_nop, op_SET4, store2_E ;E3 ;SET 4,(Ix+d),E
4321 instr fetch_nop, op_SET4, store2_H ;E4 ;SET 4,(Ix+d),H
4322 instr fetch_nop, op_SET4, store2_L ;E5 ;SET 4,(Ix+d),L
4323 instr fetch_nop, op_SET4, store_nop ;E6 ;SET 4,(Ix+d)
4324 instr fetch_nop, op_SET4, store2_A ;E7 ;SET 4,(Ix+d),A
4325 instr fetch_nop, op_SET5, store2_B ;E8 ;SET 5,(Ix+d),B
4326 instr fetch_nop, op_SET5, store2_C ;E9 ;SET 5,(Ix+d),C
4327 instr fetch_nop, op_SET5, store2_D ;EA ;SET 5,(Ix+d),D
4328 instr fetch_nop, op_SET5, store2_E ;EB ;SET 5,(Ix+d),E
4329 instr fetch_nop, op_SET5, store2_H ;EC ;SET 5,(Ix+d),H
4330 instr fetch_nop, op_SET5, store2_L ;ED ;SET 5,(Ix+d),L
4331 instr fetch_nop, op_SET5, store_nop ;EE ;SET 5,(Ix+d)
4332 instr fetch_nop, op_SET5, store2_A ;EF ;SET 5,(Ix+d),A
4333 instr fetch_nop, op_SET6, store2_B ;F0 ;SET 6,(Ix+d),B
4334 instr fetch_nop, op_SET6, store2_C ;F1 ;SET 6,(Ix+d),C
4335 instr fetch_nop, op_SET6, store2_D ;F2 ;SET 6,(Ix+d),D
4336 instr fetch_nop, op_SET6, store2_E ;F3 ;SET 6,(Ix+d),E
4337 instr fetch_nop, op_SET6, store2_H ;F4 ;SET 6,(Ix+d),H
4338 instr fetch_nop, op_SET6, store2_L ;F5 ;SET 6,(Ix+d),L
4339 instr fetch_nop, op_SET6, store_nop ;F6 ;SET 6,(Ix+d)
4340 instr fetch_nop, op_SET6, store2_A ;F7 ;SET 6,(Ix+d),A
4341 instr fetch_nop, op_SET7, store2_B ;F8 ;SET 7,(Ix+d),B
4342 instr fetch_nop, op_SET7, store2_C ;F9 ;SET 7,(Ix+d),C
4343 instr fetch_nop, op_SET7, store2_D ;FA ;SET 7,(Ix+d),D
4344 instr fetch_nop, op_SET7, store2_E ;FB ;SET 7,(Ix+d),E
4345 instr fetch_nop, op_SET7, store2_H ;FC ;SET 7,(Ix+d),H
4346 instr fetch_nop, op_SET7, store2_L ;FD ;SET 7,(Ix+d),L
4347 instr fetch_nop, op_SET7, store_nop ;FE ;SET 7,(Ix+d)
4348 instr fetch_nop, op_SET7, store2_A ;FF ;SET 7,(Ix+d),A
4353 ;----------------------------------------------------------------
4354 ; Lookup table, stolen from z80ex, Z80 emulation library.
4355 ; http://z80ex.sourceforge.net/
4357 ; The S, Z, 5 and 3 bits and the parity of the lookup value
4359 ; .org (PC+255) & 0xff00
4361 .org sz53p_table_pos
4362 ; .org FLASHEND & 0xff00
4363 ; .org 0x1fff & 0xff00
4366 .db 0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4367 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4368 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4369 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4370 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4371 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4372 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4373 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4374 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4375 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4376 .db 0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4377 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4378 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4379 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4380 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4381 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4382 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4383 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4384 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4385 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4386 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4387 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4388 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4389 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4390 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4391 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4392 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4393 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4394 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4395 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4396 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4397 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4399 ; vim:set ts=8 noet nowrap