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/>.
80 .equ IM_MASK = 0x03 ;Mask IM 0..2
85 .equ IFF1 = 2 ;IFF1 Flag
86 .equ IFF2 = 3 ;IFF2 Flag
103 sbr intstat,(1<<i_trace)
106 printstring "Ok, "CPUSTR"-CPU is live!"
112 cpi z_pch,DBG_TRACE_BOTTOM
114 cpi z_pch,DBG_TRACE_TOP
125 ;TODO: hier kommt die Interruptbehandlung rein
127 cpse intstat,_0 ;Fast path if no trace, int, break, ...
131 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
133 ldi zh,high(opcjmp) ;
140 cpi z_pch,DBG_TRACE_BOTTOM
142 cpi z_pch,DBG_TRACE_TOP
148 cbr intstat,(1<<i_break)|(1<<i_halt)
150 printstring "Break detected! "
155 rjmp int_instr ;Continue with normal instruction interpretation
158 ;--------------------------------------------------
161 ; opctable opc_name, pos
167 .set opcjmp_table_pos_ = (@1 + 255) & -0x100 ;0xff00
170 .set opc_tabnext_ = opcjmp_table_pos_
172 .set opc_tablow_0 = 0
173 .set opc_tablen_0 = 0
174 .set opc_tablow_1 = 0
175 .set opc_tablen_1 = 0
178 .if opcjmp_table_pos_ < opc_tabnext_
179 .set opcjmp_table_pos_ = opc_tabnext_
182 .if opc_tablow_0 == 0
183 .set opc_tablow_0 = opcjmp_table_pos_
184 .set opc_tablen_0 = 256
185 ;.message "add tab_0"
186 .elif opc_tablow_1 == 0
187 .if (opc_tablow_0 + opc_tablen_0) == opcjmp_table_pos_
188 .set opc_tablen_0 = opc_tablen_0 + 256
191 .set opc_tablow_1 = opcjmp_table_pos_
192 .set opc_tablen_1 = 256
193 ;.message "add tab_1"
196 .if (opc_tablow_1 + opc_tablen_1) == opcjmp_table_pos_
197 .set opc_tablen_1 = opc_tablen_1 + 256
204 .set opc_tabnext_ = opcjmp_table_pos_ + 256
205 .equ @0 = opcjmp_table_pos_
209 ;--------------------------------------------------
211 ; checkspace frompos, size
216 .if @0 <= opc_tablow_0
217 .if (@0 + @1) > opc_tablow_0
218 .org opc_tablow_0 + opc_tablen_0
219 ; .message "skip tab, remove tab_0"
220 .if opc_tablow_1 == 0
221 .set opc_tablow_0 = 0
222 .set opc_tablen_0 = 0
224 .set opc_tablow_0 = opc_tablow_1
225 .set opc_tablen_0 = opc_tablen_1
226 .set opc_tablow_1 = 0
227 .set opc_tablen_1 = 0
228 ; .message "remove tab_1"
235 ;--------------------------------------------------
236 ; Generate a table entry for one instruction
238 ; instr fetch, op, store
242 .set fetch_ = (do_@0 != do_fetch_nop) ; must call or jump to fetch action
243 .set op_ = (do_@1 != do_op_nop) ; must call or jump to op action
244 .set store_ = (do_@2 != do_store_nop) ; must jump to store action
245 .set cnt_ = fetch_ + op_ + store_ ; number of actions for this instruction
251 .if cnt_ == 0 ; nothing to do (nop)
252 .org opcjmp_table_pos_
253 ret ; go back to main
256 .elif cnt_ == 1 ; jump direct to action
258 .set action_1_ = do_@0
260 .set action_1_ = do_@1
262 .set action_1_ = do_@2
264 .if (opcjmp_table_pos_ - action_1_) <= 2047
265 .org opcjmp_table_pos_
266 rjmp action_1_ ; do op and return to main
274 .if defined (l_@0_@1_@2)
276 .if (opcjmp_table_pos_ - l_@0_@1_@2) <= 2047
277 .org opcjmp_table_pos_
278 rjmp l_@0_@1_@2 ; generate a jump to action table
281 checkspace pc_save_, 2
283 .org opcjmp_table_pos_
291 checkspace pc_save_, 2*cnt_
294 .org opcjmp_table_pos_
295 .equ l_@0_@1_@2 = pc_save_ ; make a label
296 rjmp l_@0_@1_@2 ; generate a jump to action table
300 .if fetch_ ; must fetch
305 lcall do_@0 ; fetch and come back here
312 ljmp do_@0 ; do op and return to main
316 .if op_ ; must exec op
321 lcall do_@1 ; fetch and come back here
328 ljmp do_@1 ; do op and return to main
332 .if store_ ; must store
337 ljmp do_@2 ; store is allways last
344 .set opcjmp_table_pos_ = opcjmp_table_pos_ + 1
352 ; ------------ Fetch phase stuff -----------------
356 .equ do_fetch_nop = do_x_nop
476 mem_read_ds opl, z_pc
481 mem_read_ds opl, z_pc
483 mem_read_ds oph, z_pc
487 ; ------------ Store phase stuff -----------------
490 .equ do_store_nop = do_x_nop
578 do_store_pcrel: ;add displacement to PC
602 printstring "Stack pop "
605 printstring ", SP is now "
622 printstring "Stack push "
625 printstring ", SP is now "
638 ; ------------ Operation phase stuff -----------------
640 ;----------------------------------------------------------------
644 ;| ZZZZZZZ 88888 000 |
650 ;| ZZZZZZZ 88888 000 |
652 ;| Z80 MICROPROCESSOR Instruction Set Summary |
654 ;----------------------------------------------------------------
655 ;----------------------------------------------------------------
656 ;|Mnemonic |SZHPNC|Description |Notes |
657 ;|----------+------+---------------------+----------------------|
658 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
659 ;|ADC HL,ss |**?V0*|Add with Carry |HL=HL+ss+CY |
660 ;|ADD A,s |***V0*|Add |A=A+s |
661 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
662 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
663 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
664 ;|AND s |**1P00|Logical AND |A=A&s |
665 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
666 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
667 ;|CALL nn |------|Unconditional Call |-[SP]=PC,PC=nn |
668 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY |
669 ;|CP s |***V1*|Compare |A-s |
670 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
671 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
672 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
673 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
674 ;|CPL |--1-1-|Complement |A=~A |
675 ;|DAA |***P-*|Decimal Adjust Acc. |A=BCD format |
676 ;|DEC s |***V1-|Decrement |s=s-1 |
677 ;|DEC xx |------|Decrement |xx=xx-1 |
678 ;|DEC ss |------|Decrement |ss=ss-1 |
679 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
680 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
681 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
682 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
683 ;|EX [SP],xx|------|Exchange |[SP]<->xx |
684 ;|EX AF,AF' |------|Exchange |AF<->AF' |
685 ;|EX DE,HL |------|Exchange |DE<->HL |
686 ;|EXX |------|Exchange |qq<->qq' (except AF)|
687 ;|HALT |------|Halt | |
688 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
689 ;|IN A,[n] |------|Input |A=[n] |
690 ;|IN r,[C] |***P0-|Input |r=[C] |
691 ;|INC r |***V0-|Increment |r=r+1 |
692 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
693 ;|INC xx |------|Increment |xx=xx+1 |
694 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
695 ;|INC ss |------|Increment |ss=ss+1 |
696 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
697 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
698 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
699 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
700 ;|JP [HL] |------|Unconditional Jump |PC=[HL] |
701 ;|JP [xx] |------|Unconditional Jump |PC=[xx] |
702 ;|JP nn |------|Unconditional Jump |PC=nn |
703 ;|JP cc,nn |------|Conditional Jump |If cc JP |
704 ;|JR e |------|Unconditional Jump |PC=PC+e |
705 ;|JR cc,e |------|Conditional Jump |If cc JR(cc=C,NC,NZ,Z)|
706 ;|LD dst,src|------|Load |dst=src |
707 ;|LD A,i |**0*0-|Load |A=i (i=I,R)|
708 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
709 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
710 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
711 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
712 ;|NEG |***V1*|Negate |A=-A |
713 ;|NOP |------|No Operation | |
714 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
715 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
716 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
717 ;|OUT [C],r |------|Output |[C]=r |
718 ;|OUT [n],A |------|Output |[n]=A |
719 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
720 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
721 ;|POP xx |------|Pop |xx=[SP]+ |
722 ;|POP qq |------|Pop |qq=[SP]+ |
723 ;|PUSH xx |------|Push |-[SP]=xx |
724 ;|PUSH qq |------|Push |-[SP]=qq |
725 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
726 ;|RET |------|Return |PC=[SP]+ |
727 ;|RET cc |------|Conditional Return |If cc RET |
728 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
729 ;|RETN |------|Return from NMI |PC=[SP]+ |
730 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
731 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
732 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
733 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
734 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
735 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
736 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
737 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
738 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
739 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
740 ;|RST p |------|Restart | (p=0H,8H,10H,...,38H)|
741 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
742 ;|SBC HL,ss |***V1*|Subtract with Carry |HL=HL-ss-CY |
743 ;|SCF |--0-01|Set Carry Flag |CY=1 |
744 ;|SET b,m |------|Set bit |m=mv{2^b} |
745 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
746 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
747 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
748 ;|SUB s |***V1*|Subtract |A=A-s |
749 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
750 ;|----------+------+--------------------------------------------|
751 ;| F |-*01? |Flag unaffected/affected/reset/set/unknown |
752 ;| S |S |Sign flag (Bit 7) |
753 ;| Z | Z |Zero flag (Bit 6) |
754 ;| HC | H |Half Carry flag (Bit 4) |
755 ;| P/V | P |Parity/Overflow flag (Bit 2, V=overflow) |
756 ;| N | N |Add/Subtract flag (Bit 1) |
757 ;| CY | C|Carry flag (Bit 0) |
758 ;|-----------------+--------------------------------------------|
759 ;| n |Immediate addressing |
760 ;| nn |Immediate extended addressing |
761 ;| e |Relative addressing (PC=PC+2+offset) |
762 ;| [nn] |Extended addressing |
763 ;| [xx+d] |Indexed addressing |
764 ;| r |Register addressing |
765 ;| [rr] |Register indirect addressing |
766 ;| |Implied addressing |
767 ;| b |Bit addressing |
768 ;| p |Modified page zero addressing (see RST) |
769 ;|-----------------+--------------------------------------------|
770 ;|DEFB n(,...) |Define Byte(s) |
771 ;|DEFB 'str'(,...) |Define Byte ASCII string(s) |
772 ;|DEFS nn |Define Storage Block |
773 ;|DEFW nn(,...) |Define Word(s) |
774 ;|-----------------+--------------------------------------------|
775 ;| A B C D E |Registers (8-bit) |
776 ;| AF BC DE HL |Register pairs (16-bit) |
777 ;| F |Flag register (8-bit) |
778 ;| I |Interrupt page address register (8-bit) |
779 ;| IX IY |Index registers (16-bit) |
780 ;| PC |Program Counter register (16-bit) |
781 ;| R |Memory Refresh register |
782 ;| SP |Stack Pointer register (16-bit) |
783 ;|-----------------+--------------------------------------------|
784 ;| b |One bit (0 to 7) |
785 ;| cc |Condition (C,M,NC,NZ,P,PE,PO,Z) |
786 ;| d |One-byte expression (-128 to +127) |
787 ;| dst |Destination s, ss, [BC], [DE], [HL], [nn] |
788 ;| e |One-byte expression (-126 to +129) |
789 ;| m |Any register r, [HL] or [xx+d] |
790 ;| n |One-byte expression (0 to 255) |
791 ;| nn |Two-byte expression (0 to 65535) |
792 ;| pp |Register pair BC, DE, IX or SP |
793 ;| qq |Register pair AF, BC, DE or HL |
794 ;| qq' |Alternative register pair AF, BC, DE or HL |
795 ;| r |Register A, B, C, D, E, H or L |
796 ;| rr |Register pair BC, DE, IY or SP |
797 ;| s |Any register r, value n, [HL] or [xx+d] |
798 ;| src |Source s, ss, [BC], [DE], [HL], nn, [nn] |
799 ;| ss |Register pair BC, DE, HL or SP |
800 ;| xx |Index register IX or IY |
801 ;|-----------------+--------------------------------------------|
802 ;| + - * / ^ |Add/subtract/multiply/divide/exponent |
803 ;| & ~ v x |Logical AND/NOT/inclusive OR/exclusive OR |
804 ;| <- -> |Rotate left/right |
805 ;| [ ] |Indirect addressing |
806 ;| [ ]+ -[ ] |Indirect addressing auto-increment/decrement|
807 ;| { } |Combination of operands |
808 ;| # |Also BC=BC-1,DE=DE-1 |
809 ;| ## |Only lower 4 bits of accumulator A used |
810 ;----------------------------------------------------------------
812 ;How the flags are supposed to work:
813 ;7 ZFL_S - Sign flag (=MSBit of result)
814 ;6 ZFL_Z - Zero flag. Is 1 when the result is 0
815 ;4 ZFL_H - Half-carry (carry from bit 3 to 4)
816 ;2 ZFL_P - Parity/2-complement Overflow
817 ;1 ZFL_N - Subtract - set if last op was a subtract
820 ;I sure hope I got the mapping between flags and instructions correct...
837 ; TODO: check Z80 flag settings
839 ;------------------------------------------------;
840 ; Load table value from flash indexed by source reg.
842 ; ldpmx dstreg,tablebase,indexreg
844 ; (3 words, 5 cycles)
847 ldi zh,high(@1*2) ; table must be page aligned
852 .macro do_z80_flags_V
854 bmov z_flags, ZFL_P, temp, AVR_V
858 .macro do_z80_flags_H
860 bmov z_flags, ZFL_H, temp, AVR_H
864 .macro do_z80_flags_set_N
866 ori z_flags, (1<<ZFL_N) ; Negation auf 1
870 .macro do_z80_flags_set_HN
872 ori z_flags,(1<<ZFL_N)|(1<<ZFL_H)
876 .macro do_z80_flags_clear_N
878 andi z_flags,~(1<<ZFL_N)
882 .macro do_z80_flags_clear_HN
884 andi z_flags,~((1<<ZFL_H)|(1<<ZFL_N))
889 .macro do_z80_flags_copy_HC
891 bmov z_flags, ZFL_H, z_flags, ZFL_C
895 .macro do_z80_flags_op_rotate
896 ; must not change avr carry flag!
898 andi z_flags, ~( (1<<ZFL_H) | (1<<ZFL_N) | (1<<ZFL_C) )
900 andi z_flags, ~( (1<<ZFL_C) )
904 .macro do_z80_flags_op_and
906 ori z_flags,(1<<ZFL_H)
910 .macro do_z80_flags_op_or
917 ;----------------------------------------------------------------
919 .equ do_op_nop = do_x_nop
924 printstring "Invalid opcode! "
930 ;----------------------------------------------------------------
931 ;|Mnemonic |SZHPNC|Description |Notes |
932 ;----------------------------------------------------------------
933 ;|HALT |------|Halt | |
940 sbr intstat,(1<<i_halt)
942 printstring "CPU halted! "
945 ;----------------------------------------------------------------
946 ;|Mnemonic |SZHPNC|Description |Notes |
947 ;----------------------------------------------------------------
948 ;|OUT [n],A |------|Output |[n]=A |
951 ;Interface with peripherials goes here :)
952 do_op_outa: ; out (opl),a
955 printstring "Port write: "
968 ;----------------------------------------------------------------
969 ;|Mnemonic |SZHPNC|Description |Notes |
970 ;----------------------------------------------------------------
971 ;|IN A,[n] |------|Input |A=[n] |
974 do_op_ina: ; in a,(opl)
977 cp opl,_0 ; don't debug port 0 (con stat)
980 printstring "Port read: ("
1001 ;----------------------------------------------------------------
1002 ;|Mnemonic |SZHPNC|Description |Notes |
1003 ;----------------------------------------------------------------
1004 ;|INC r |***V0-|Increment |r=r+1 |
1005 ;|INC [HL] |***V0-|Increment |[HL]=[HL]+1 |
1006 ;|INC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]+1 |
1007 ;|----------|SZHP C|---------- 8080 ----------------------------|
1008 ;|INC r |**-P0-|Increment |r=r+1 |
1009 ;|INC [HL] |**-P0-|Increment |[HL]=[HL]+1 |
1014 andi z_flags,(1<<ZFL_C) ; preserve C-, Clear N-flag
1018 bmov z_flags,ZFL_S, temp,AVR_N
1019 bmov z_flags,ZFL_Z, temp,AVR_Z
1020 bmov z_flags,ZFL_H, temp,AVR_H
1021 bmov z_flags,ZFL_P, temp,AVR_V
1023 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1025 ldpmx temp,sz53p_tab,opl ;S,Z,P flag
1032 andi z_flags,(1<<ZFL_C) ; preserve C-, Clear N-flag
1036 bmov z_flags,ZFL_S, temp,AVR_N
1037 bmov z_flags,ZFL_Z, temp,AVR_Z
1038 bmov z_flags,ZFL_H, temp,AVR_H
1039 bmov z_flags,ZFL_P, temp,AVR_V
1041 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1043 ldpmx temp,sz53p_tab,z_a ; S,Z,P flag
1048 ;----------------------------------------------------------------
1049 ;|Mnemonic |SZHPNC|Description |Notes |
1050 ;----------------------------------------------------------------
1051 ;|DEC r |***V1-|Decrement |s=s-1 |
1052 ;|DEC [HL] |***V0-|Increment |[HL]=[HL]-1 |
1053 ;|DEC [xx+d]|***V0-|Increment |[xx+d]=[xx+d]-1 |
1054 ;|----------|SZHP C|---------- 8080 ----------------------------|
1055 ;|DEC r |**-P -|Increment |r=r-1 |
1056 ;|DEC [HL] |**-P -|Increment |[HL]=[HL]-1 |
1063 bmov z_flags,ZFL_S, temp,AVR_N
1064 bmov z_flags,ZFL_Z, temp,AVR_Z
1065 bmov z_flags,ZFL_H, temp,AVR_H
1066 bmov z_flags,ZFL_P, temp,AVR_V
1067 ori z_flags,(1<<ZFL_N) ; Set N-flag
1069 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1070 ldpmx temp,sz53p_tab,opl ; S,Z,P flag
1081 bmov z_flags,ZFL_S, temp,AVR_N
1082 bmov z_flags,ZFL_Z, temp,AVR_Z
1083 bmov z_flags,ZFL_H, temp,AVR_H
1084 bmov z_flags,ZFL_P, temp,AVR_V
1085 ori z_flags,(1<<ZFL_N) ; Set N-flag
1088 andi z_flags,(1<<ZFL_C)|(1<<ZFL_H) ; preserve C- and H-flag
1089 ldpmx temp,sz53p_tab,z_a ; S,Z,P flag
1095 ;----------------------------------------------------------------
1096 ;|Mnemonic |SZHPNC|Description |Notes |
1097 ;----------------------------------------------------------------
1098 ;|INC xx |------|Increment |xx=xx+1 |
1099 ;|INC ss |------|Increment |ss=ss+1 |
1107 ;----------------------------------------------------------------
1108 ;|Mnemonic |SZHPNC|Description |Notes |
1109 ;----------------------------------------------------------------
1110 ;|DEC xx |------|Decrement |xx=xx-1 |
1111 ;|DEC ss |------|Decrement |ss=ss-1 |
1119 ;----------------------------------------------------------------
1120 ;|Mnemonic |SZHPNC|Description |Notes |
1121 ;----------------------------------------------------------------
1122 ;|RLCA |--0-0*|Rotate Left Circular |A=A<- |
1123 ;|----------|SZHP C|---------- 8080 ----------------------------|
1124 ;|RLCA |---- *|Rotate Left Circular |A=A<- |
1128 ;Rotate Left Cyclical. All bits move 1 to the
1129 ;left, the msb becomes c and lsb.
1130 do_z80_flags_op_rotate
1135 ori z_flags, (1<<ZFL_C)
1139 ;----------------------------------------------------------------
1140 ;|Mnemonic |SZHPNC|Description |Notes |
1141 ;----------------------------------------------------------------
1142 ;|RRCA |--0-0*|Rotate Right Circular|A=->A |
1143 ;|----------|SZHP C|---------- 8080 ----------------------------|
1144 ;|RRCA |---- *|Rotate Right Circular|A=->A |
1148 ;Rotate Right Cyclical. All bits move 1 to the
1149 ;right, the lsb becomes c and msb.
1150 do_z80_flags_op_rotate
1155 ori z_flags, (1<<ZFL_C)
1159 ;----------------------------------------------------------------
1160 ;|Mnemonic |SZHPNC|Description |Notes |
1161 ;----------------------------------------------------------------
1162 ;|RRA |--0-0*|Rotate Right Acc. |A=->{CY,A} |
1163 ;|----------|SZHP C|---------- 8080 ----------------------------|
1164 ;|RRA |---- *|Rotate Right Acc. |A=->{CY,A} |
1168 ;Rotate Right. All bits move 1 to the right, the lsb
1169 ;becomes c, c becomes msb.
1170 clc ; get z80 carry to avr carry
1173 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1174 bmov z_flags,ZFL_C, z_a,0 ; Bit 0 --> CY
1178 ;----------------------------------------------------------------
1179 ;|Mnemonic |SZHPNC|Description |Notes |
1180 ;----------------------------------------------------------------
1181 ;|RLA |--0-0*|Rotate Left Acc. |A={CY,A}<- |
1182 ;|----------|SZHP C|---------- 8080 ----------------------------|
1183 ;|RLA |---- *|Rotate Left Acc. |A={CY,A}<- |
1187 ;Rotate Left. All bits move 1 to the left, the msb
1188 ;becomes c, c becomes lsb.
1192 do_z80_flags_op_rotate ; (clear ZFL_C, doesn't change AVR_C)
1193 bmov z_flags,ZFL_C, z_a,7 ; Bit 7 --> CY
1197 ;----------------------------------------------------------------
1198 ;|Mnemonic |SZHPNC|Description |Notes |
1199 ;----------------------------------------------------------------
1200 ;|ADD A,s |***V0*|Add |A=A+s |
1201 ;|----------|SZHP C|---------- 8080 ----------------------------|
1202 ;|ADD A,s |***P *|Add |A=A+s |
1208 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P flag
1209 bmov z_flags,ZFL_C, temp,AVR_C
1210 bmov z_flags,ZFL_H, temp,AVR_H
1214 ;----------------------------------------------------------------
1215 ;|Mnemonic |SZHPNC|Description |Notes |
1216 ;----------------------------------------------------------------
1217 ;|ADC A,s |***V0*|Add with Carry |A=A+s+CY |
1218 ;|----------|SZHP C|---------- 8080 ----------------------------|
1219 ;|ADC A,s |***P *|Add with Carry |A=A+s+CY |
1228 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1229 bmov z_flags,ZFL_C, temp,AVR_C
1230 bmov z_flags,ZFL_H, temp,AVR_H
1234 ;----------------------------------------------------------------
1235 ;|Mnemonic |SZHPNC|Description |Notes |
1236 ;----------------------------------------------------------------
1237 ;|SUB s |***V1*|Subtract |A=A-s |
1238 ;|----------|SZHP C|---------- 8080 ----------------------------|
1239 ;|SUB s |***P *|Subtract |A=A-s |
1245 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1246 bmov z_flags,ZFL_C, temp,AVR_C
1247 bmov z_flags,ZFL_H, temp,AVR_H
1252 ;----------------------------------------------------------------
1253 ;|Mnemonic |SZHPNC|Description |Notes |
1254 ;----------------------------------------------------------------
1255 ;|CP s |***V1*|Compare |A-s |
1256 ;|----------|SZHP C|---------- 8080 ----------------------------|
1257 ;|CP s |***P *|Compare |A-s |
1264 ldpmx z_flags,sz53p_tab,temp2 ;S,Z,P
1265 bmov z_flags,ZFL_C, temp,AVR_C
1266 bmov z_flags,ZFL_H, temp,AVR_H
1271 ;----------------------------------------------------------------
1272 ;|Mnemonic |SZHPNC|Description |Notes |
1273 ;----------------------------------------------------------------
1274 ;|SBC A,s |***V1*|Subtract with Carry |A=A-s-CY |
1275 ;|----------|SZHP C|---------- 8080 ----------------------------|
1276 ;|SBC A,s |***P *|Subtract with Carry |A=A-s-CY |
1285 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
1286 bmov z_flags,ZFL_C, temp,AVR_C
1287 bmov z_flags,ZFL_H, temp,AVR_H
1292 ;----------------------------------------------------------------
1293 ;|Mnemonic |SZHPNC|Description |Notes |
1294 ;----------------------------------------------------------------
1295 ;|AND s |**1P00|Logical AND |A=A&s |
1296 ;|----------|SZHP C|---------- 8080 ----------------------------|
1297 ;|AND s |**-P 0|Logical AND |A=A&s |
1302 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P,N,C
1307 ;----------------------------------------------------------------
1308 ;|Mnemonic |SZHPNC|Description |Notes |
1309 ;----------------------------------------------------------------
1310 ;|OR s |**0P00|Logical inclusive OR |A=Avs |
1311 ;|----------|SZHP C|---------- 8080 ----------------------------|
1312 ;|OR s |**-P00|Logical inclusive OR |A=Avs |
1317 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1321 ;----------------------------------------------------------------
1322 ;|Mnemonic |SZHPNC|Description |Notes |
1323 ;----------------------------------------------------------------
1324 ;|XOR s |**0P00|Logical Exclusive OR |A=Axs |
1325 ;|----------|SZHP C|---------- 8080 ----------------------------|
1326 ;|XOR s |**-P 0|Logical Exclusive OR |A=Axs |
1331 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N,C
1335 ;----------------------------------------------------------------
1336 ;|Mnemonic |SZHPNC|Description |Notes |
1337 ;----------------------------------------------------------------
1338 ;|ADD HL,ss |--*-0*|Add |HL=HL+ss |
1339 ;|----------|SZHP C|---------- 8080 ----------------------------|
1340 ;|ADD HL,ss |---- *|Add |HL=HL+ss |
1351 bmov z_flags,ZFL_C, temp,AVR_C
1353 do_z80_flags_clear_N
1356 ;----------------------------------------------------------------
1357 ;|Mnemonic |SZHPNC|Description |Notes |
1358 ;----------------------------------------------------------------
1359 ;|LD dst,src|------|Load |dst=src |
1362 do_op_sthl: ;store hl to mem loc in opl:h
1371 ;----------------------------------------------------------------
1372 ;|Mnemonic |SZHPNC|Description |Notes |
1373 ;----------------------------------------------------------------
1374 ;|LD dst,src|------|Load |dst=src |
1384 ;----------------------------------------------------------------
1385 ;|Mnemonic |SZHPNC|Description |Notes |
1386 ;----------------------------------------------------------------
1387 ;|LD dst,src|------|Load |dst=src |
1394 ;----------------------------------------------------------------
1395 ;|Mnemonic |SZHPNC|Description |Notes |
1396 ;----------------------------------------------------------------
1397 ;|DAA |***P-*|Decimal Adjust Acc. | |
1398 ;|----------|SZHP C|---------- 8080 ----------------------------|
1401 ; Description (http://www.z80.info/z80syntx.htm#DAA):
1402 ; This instruction conditionally adjusts the accumulator for BCD addition
1403 ; and subtraction operations. For addition (ADD, ADC, INC) or subtraction
1404 ; (SUB, SBC, DEC, NEC), the following table indicates the operation performed:
1406 ; -------------------------------------------------------------------
1407 ; | |C Flag |HEX value in|H Flag |HEX val in | Number |C flag |
1408 ; | Oper |Before |upper digit |Before |lower digit| added |After |
1409 ; | |DAA |(bit 7-4) |DAA |(bit 3-0) | to A |DAA |
1410 ; |-------+-------+------------+-------+-----------+--------+-------|
1411 ; | | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1412 ; | ADD | 0 | 0-8 | 0 | A-F | 06 | 0 |
1413 ; | | 0 | 0-9 | 1 | 0-3 | 06 | 0 |
1414 ; | ADC | 0 | A-F | 0 | 0-9 | 60 | 1 |
1415 ; | | 0 | 9-F | 0 | A-F | 66 | 1 |
1416 ; | INC | 0 | A-F | 1 | 0-3 | 66 | 1 |
1417 ; | | 1 | 0-2 | 0 | 0-9 | 60 | 1 |
1418 ; | | 1 | 0-2 | 0 | A-F | 66 | 1 |
1419 ; | | 1 | 0-3 | 1 | 0-3 | 66 | 1 |
1420 ; |-------+-------+------------+-------+-----------+--------+-------|
1421 ; | SUB | 0 | 0-9 | 0 | 0-9 | 00 | 0 |
1422 ; | SBC | 0 | 0-8 | 1 | 6-F | FA | 0 |
1423 ; | DEC | 1 | 7-F | 0 | 0-9 | A0 | 1 |
1424 ; | NEG | 1 | 6-F | 1 | 6-F | 9A | 1 |
1425 ; -------------------------------------------------------------------
1427 ; The H flag is affected as follows:
1429 ; ---------------------
1430 ; | N | H | low |H' |
1432 ; |---+---+-------+---|
1433 ; | 0 | * | 0-9 | 0 |
1434 ; | 0 | * | a-f | 1 |
1436 ; | 1 | 1 | 6-f | 0 |
1437 ; | 1 | 1 | 0-5 | 1 |
1438 ; ---------------------
1442 ; P/V: Set if Acc. is even parity after operation, reset otherwise.
1443 ; Z: Set if Acc. is Zero after operation, reset otherwise.
1444 ; S: Set if most significant bit of Acc. is 1 after operation, reset otherwise.
1451 sbrc z_flags,ZFL_N ;if add-op
1452 rjmp op_da_sub ;then
1457 ldi temp2,0 ; new C, H and N flag
1458 sbrc z_flags,ZFL_H ; |
1459 rjmp op_da_a01 ; if (H flag ...
1462 cpi temp,0x0a ; or (lower nibble >= 0x0A))
1465 ldi oph,0x06 ; add 6 to lower nibble
1468 ori temp2,(1<<ZFL_H) ; set new H flag
1471 ori temp2,(1<<ZFL_C) ; set new H flag
1473 sbrc z_flags,ZFL_C ; |
1474 rjmp op_da_a12 ; if (C flag ...
1475 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1478 ldi oph,0x60 ; add 6 to lower nibble
1480 ori temp2,(1<<ZFL_C) ; set new C flag
1482 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1483 or z_flags,temp2 ; merge new C and H flag
1488 op_da_sub: ;Else (sub-op)
1489 ldi temp2,(1<<ZFL_N) ; new C, H and N flag
1490 sbrc z_flags,ZFL_H ; |
1491 rjmp op_da_s01 ; if (H flag ...
1494 cpi temp,0x0a ; or (lower nibble >= 0x0A))
1497 ldi oph,0x06 ; add 6 to lower nibble
1500 ori temp2,(1<<ZFL_H) ; set new H flag
1502 ori temp2,(1<<ZFL_C) ; set new C flag
1504 sbrc z_flags,ZFL_C ; |
1505 rjmp op_da_s12 ; if (C flag ...
1506 cpi opl,0x90 ; |... or upper nibble >= 0xA0)
1509 ldi oph,0x60 ; add 6 to lower nibble
1511 ori temp2,(1<<ZFL_C) ; set new C flag
1513 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1514 or z_flags,temp2 ; merge new C and H flag
1522 ldi oph,0 ;oph: what to add
1525 sbrc z_flags,ZFL_N ;if add-op
1526 rjmp op_da_sub ;then
1530 ldi temp2,0 ; new C, H and N flag
1533 cpi temp,0x0a ; if (lower nibble >= 0x0A)
1535 ori oph,0x06 ; add 6
1536 ori temp2,(1<<ZFL_H) ; set new H flag
1538 sbrc z_flags,ZFL_C ; |
1539 rjmp op_da_a02 ; if (C flag ...
1540 cpi opl,0x90 ; |... or upper nibble >= 0x90)
1543 ori oph,0x60 ; add 0x60
1544 ori temp2,(1<<ZFL_C) ; set new C flag
1547 op_da_a10: ; else (lower nibble is 0x09 or lower)
1548 sbrc z_flags,ZFL_C ; |
1549 rjmp op_da_a12 ; if (C flag ...
1550 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1553 ori oph,0x60 ; add 0x60
1554 ori temp2,(1<<ZFL_C) ; set new C flag
1556 sbrs z_flags,ZFL_H ; if (H flag)
1558 ori oph,0x06 ; add 0x06
1561 cpi temp,0x06 ; if (lower nibble < 0x6)
1563 ; ori temp2,(1<<ZFL_H) ; set new H flag
1568 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1569 or z_flags,temp2 ; merge new C and H flag
1574 op_da_sub: ;Else (sub-op)
1575 ldi temp2,(1<<ZFL_N) ; new C, H and N flag
1578 cpi temp,0x0a ; if (lower nibble >= 0x0A)
1580 ori oph,0x06 ; sub 6
1582 sbrc z_flags,ZFL_C ; |
1583 rjmp op_da_s02 ; if (C flag ...
1584 cpi opl,0x90 ; |... or upper nibble >= 0x90)
1587 ori oph,0x60 ; sub 0x60
1588 ori temp2,(1<<ZFL_C) ; set new C flag
1591 op_da_s10: ; else (lower nibble is 0x09 or lower)
1592 sbrc z_flags,ZFL_C ; |
1593 rjmp op_da_s12 ; if (C flag ...
1594 cpi opl,0xA0 ; |... or upper nibble >= 0xA0)
1597 ori oph,0x60 ; sub 0x60
1598 ori temp2,(1<<ZFL_C) ; set new C flag
1600 sbrs z_flags,ZFL_H ; if (H flag)
1602 ori oph,0x06 ; sub 0x06
1605 cpi temp,0x06 ; if (lower nibble < 0x06)
1607 ori temp2,(1<<ZFL_H) ; set new H flag
1612 ldpmx z_flags, sz53p_tab, opl ; get S,Z,P flag
1613 or z_flags,temp2 ; merge new C and H flag
1617 #endif /* alternatives */
1620 ;----------------------------------------------------------------
1621 ;|Mnemonic |SZHPNC|Description |Notes |
1622 ;----------------------------------------------------------------
1623 ;|SCF |--0-01|Set Carry Flag |CY=1 |
1624 ;|----------|SZHP C|---------- 8080 ----------------------------|
1628 do_z80_flags_clear_HN
1629 ori z_flags,(1<<ZFL_C)
1632 ;----------------------------------------------------------------
1633 ;|Mnemonic |SZHPNC|Description |Notes |
1634 ;----------------------------------------------------------------
1635 ;|CCF |--?-0*|Complement Carry Flag|CY=~CY, HC=previous CY|
1636 ;|----------|SZHP C|---------- 8080 ----------------------------|
1637 ;|CCF |---- 1|Set Carry Flag |CY=1 |
1640 do_z80_flags_clear_N
1641 do_z80_flags_copy_HC
1646 ;----------------------------------------------------------------
1647 ;|Mnemonic |SZHPNC|Description |Notes |
1648 ;----------------------------------------------------------------
1649 ;|CPL |--1-1-|Complement |A=~A |
1650 ;|----------|SZHP C|---------- 8080 ----------------------------|
1651 ;|CPL |---- -|Complement |A=~A |
1660 ;----------------------------------------------------------------
1661 ;|Mnemonic |SZHPNC|Description |Notes |
1662 ;----------------------------------------------------------------
1663 ;|PUSH xx |------|Push |-[SP]=xx |
1664 ;|PUSH qq |------|Push |-[SP]=qq |
1677 printstring "Stack push "
1680 printstring ", SP is now "
1688 ;----------------------------------------------------------------
1689 ;|Mnemonic |SZHPNC|Description |Notes |
1690 ;----------------------------------------------------------------
1691 ;|POP xx |------|Pop |xx=[SP]+ |
1692 ;|POP qq |------|Pop |qq=[SP]+ |
1705 printstring "Stack pop "
1708 printstring ", SP is now "
1715 ;----------------------------------------------------------------
1716 ;|Mnemonic |SZHPNC|Description |Notes |
1717 ;----------------------------------------------------------------
1718 ;|EX [SP],HL|------|Exchange |[SP]<->HL |
1719 ;|EX DE,HL |------|Exchange |DE<->HL |
1720 ;-----------------------------Z80--------------------------------
1730 ;----------------------------------------------------------------
1731 ;|Mnemonic |SZHPNC|Description |Notes |
1732 ;----------------------------------------------------------------
1733 ;|DI |------|Disable Interrupts |IFF1 = IFF2 = 0 |
1734 ;|EI |------|Enable Interrupts |IFF1 = IFF2 = 1 |
1740 andi temp,~((1<<IFF2) | (1<<IFF1))
1748 ori temp,(1<<IFF2) | (1<<IFF1)
1753 ;----------------------------------------------------------------
1754 ;|Mnemonic |SZHPNC|Description |Notes |
1755 ;----------------------------------------------------------------
1756 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1757 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1758 ;|RET cc |------|Conditional Return |If cc RET |
1765 pop temp ; direkt zurueck zu main
1768 ;----------------------------------------------------------------
1769 ;|Mnemonic |SZHPNC|Description |Notes |
1770 ;----------------------------------------------------------------
1771 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1772 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1773 ;|RET cc |------|Conditional Return |If cc RET |
1780 pop temp ; direkt zurueck zu main
1783 ;----------------------------------------------------------------
1784 ;|Mnemonic |SZHPNC|Description |Notes |
1785 ;----------------------------------------------------------------
1786 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1787 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1788 ;|RET cc |------|Conditional Return |If cc RET |
1795 pop temp ; direkt zuruech zu main
1798 ;----------------------------------------------------------------
1799 ;|Mnemonic |SZHPNC|Description |Notes |
1800 ;----------------------------------------------------------------
1801 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1802 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1803 ;|RET cc |------|Conditional Return |If cc RET |
1810 pop temp ; direkt zuruech zu main
1813 ;----------------------------------------------------------------
1814 ;|Mnemonic |SZHPNC|Description |Notes |
1815 ;----------------------------------------------------------------
1816 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1817 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1818 ;|RET cc |------|Conditional Return |If cc RET |
1825 pop temp ; direkt zuruech zu main
1828 ;----------------------------------------------------------------
1829 ;|Mnemonic |SZHPNC|Description |Notes |
1830 ;----------------------------------------------------------------
1831 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1832 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1833 ;|RET cc |------|Conditional Return |If cc RET |
1840 pop temp ; direkt zuruech zu main
1843 ;----------------------------------------------------------------
1844 ;|Mnemonic |SZHPNC|Description |Notes |
1845 ;----------------------------------------------------------------
1846 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1847 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1848 ;|RET cc |------|Conditional Return |If cc RET |
1851 do_op_ifp: ;sign positive, aka s=0
1855 pop temp ; direkt zuruech zu main
1858 ;----------------------------------------------------------------
1859 ;|Mnemonic |SZHPNC|Description |Notes |
1860 ;----------------------------------------------------------------
1861 ;|CALL cc,nn|------|Conditional Call |If cc CALL |
1862 ;|JP cc,nn |------|Conditional Jump |If cc JP |
1863 ;|RET cc |------|Conditional Return |If cc RET |
1866 do_op_ifm: ;sign negative, aka s=1
1870 pop temp ; direkt zuruech zu main
1873 ;----------------------------------------------------------------
1877 ;----------------------------------------------------------------
1878 ;|Mnemonic |SZHPNC|Description |Notes |
1879 ;----------------------------------------------------------------
1880 ;|DJNZ e |------|Dec., Jump Non-Zero |B=B-1 till B=0 |
1882 ;The b register is decremented, and if not zero, the signed value e is added to pc.
1883 ;The jump is measured from the start of the instruction opcode.
1884 ;e = Relative addressing (PC=PC+2+offset)
1889 do_op_DJNZ: ; decremt B, jump B=0
1890 ldd temp,y+oz_b ; B in temp
1891 dec temp ; temp decrementieren
1892 std y+oz_b,temp ; temp in B
1893 breq do_op_DJNZ_Z ; bei B=0
1894 subi opl, 0x80 ; z_pc + e im Zweierkomplement
1910 pop temp ; direkt zurueck zu main
1916 ;----------------------------------------------------------------
1917 ;|Mnemonic |SZHPNC|Description |Notes |
1918 ;----------------------------------------------------------------
1919 ;|EX AF,AF' |------|Exchange |AF<->AF' |
1931 ;----------------------------------------------------------------
1932 ;|Mnemonic |SZHPNC|Description |Notes |
1933 ;----------------------------------------------------------------
1934 ;|EXX |------|Exchange |qq<->qq' (except AF)|
1960 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1961 adiw z_pcl,1 ;++z_pc
1962 ldi zh,high(EDjmp) ;
1963 ;;; ldi zh,high(0) ;
1969 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1970 adiw z_pcl,1 ;++z_pc
1971 ldi zh,high(DDFDjmp) ;
1977 mem_read_ds zl,z_pc ;zl = memReadByte(z_pc)
1978 adiw z_pcl,1 ;++z_pc
1979 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(CBjmp) ;
1999 mem_read_s z_pc ;get displacement
2000 adiw z_pcl,1 ;++z_pc
2001 clr temp2 ;sign extend
2005 add xl,temp ;add displacement
2009 mem_read_ds zl,z_pc ;zl = opcode
2010 adiw z_pcl,1 ;++z_pc
2011 ldi zh,high(DDFDCBjmp) ;
2017 #else ; TODO: geht das so?
2029 ; ----------------------- Opcode decoding -------------------------
2031 ; Lookup table for Z80 opcodes. Translates the first byte of the instruction word into three
2032 ; operations: fetch, do something, store.
2033 ; The table is made of 256 words.
2035 opctable opcjmp, PC ;+3*256
2037 instr fetch_nop, op_nop, store_nop ;00 ;NOP
2038 instr fetch_DIR16, op_nop, store_BC ;01 nn nn ;LD BC,nn
2039 instr fetch_nop, op_nop, store_MBC ;02 ;LD (BC),A
2040 instr fetch_BC, op_INC16, store_BC ;03 ;INC BC
2041 instr fetch_B, op_INC, store_B ;04 ;INC B
2042 instr fetch_B, op_DEC, store_B ;05 ;DEC B
2043 instr fetch_DIR8, op_nop, store_B ;06 ;LD B,n
2044 instr fetch_nop, op_RLCA, store_nop ;07 ;RLCA
2045 instr fetch_nop, op_EXAF, store_nop ;08 ;EX AF,AF'
2046 instr fetch_BC, op_ADDHL, store_nop ;09 ;ADD HL,BC
2047 instr fetch_MBC, op_nop, store_nop ;0A ;LD A,(BC)
2048 instr fetch_BC, op_DEC16, store_BC ;0B ;DEC BC
2049 instr fetch_C, op_INC, store_C ;0C ;INC C
2050 instr fetch_C, op_DEC, store_C ;0D ;DEC C
2051 instr fetch_DIR8, op_nop, store_C ;0E nn ;LD C,n
2052 instr fetch_nop, op_RRCA, store_nop ;0F ;RRCA
2053 instr fetch_DIR8, op_DJNZ, store_nop ;10 oo ;DJNZ o
2054 instr fetch_DIR16, op_nop, store_DE ;11 nn nn ;LD DE,nn
2055 instr fetch_nop, op_nop, store_MDE ;12 ;LD (DE),A
2056 instr fetch_DE, op_INC16, store_DE ;13 ;INC DE
2057 instr fetch_D, op_INC, store_D ;14 ;INC D
2058 instr fetch_D, op_DEC, store_D ;15 ;DEC D
2059 instr fetch_DIR8, op_nop, store_D ;16 nn ;LD D,n
2060 instr fetch_nop, op_RLA, store_nop ;17 ;RLA
2061 instr fetch_DIR8, op_nop, store_pcrel ;18 oo ;JR o
2062 instr fetch_DE, op_ADDHL, store_nop ;19 ;ADD HL,DE
2063 instr fetch_MDE, op_nop, store_nop ;1A ;LD A,(DE)
2064 instr fetch_DE, op_DEC16, store_DE ;1B ;DEC DE
2065 instr fetch_E, op_INC, store_E ;1C ;INC E
2066 instr fetch_E, op_DEC, store_E ;1D ;DEC E
2067 instr fetch_DIR8, op_nop, store_E ;1E nn ;LD E,n
2068 instr fetch_nop, op_RRA, store_nop ;1F ;RRA
2069 instr fetch_DIR8, op_IFNZ, store_pcrel ;20 oo ;JR NZ,o
2070 instr fetch_DIR16, op_nop, store_HL ;21 nn nn ;LD HL,nn
2071 instr fetch_DIR16, op_STHL, store_nop ;22 nn nn ;LD (nn),HL
2072 instr fetch_HL, op_INC16, store_HL ;23 ;INC HL
2073 instr fetch_H, op_INC, store_H ;24 ;INC H
2074 instr fetch_H, op_DEC, store_H ;25 ;DEC H
2075 instr fetch_DIR8, op_nop, store_H ;26 nn ;LD H,n
2076 instr fetch_A, op_DAA, store_A ;27 ;DAA
2077 instr fetch_DIR8, op_IFZ, store_pcrel ;28 oo ;JR Z,o
2078 instr fetch_HL, op_ADDHL, store_nop ;29 ;ADD HL,HL
2079 instr fetch_DIR16, op_RMEM16, store_HL ;2A nn nn ;LD HL,(nn)
2080 instr fetch_HL, op_DEC16, store_HL ;2B ;DEC HL
2081 instr fetch_L, op_INC, store_L ;2C ;INC L
2082 instr fetch_L, op_DEC, store_L ;2D ;DEC L
2083 instr fetch_DIR8, op_nop, store_L ;2E nn ;LD L,n
2084 instr fetch_nop, op_CPL, store_nop ;2F ;CPL
2085 instr fetch_DIR8, op_IFNC, store_pcrel ;30 oo ;JR NC,o
2086 instr fetch_DIR16, op_nop, store_SP ;31 nn nn ;LD SP,nn
2087 instr fetch_DIR16, op_nop, store_AM ;32 nn nn ;LD (nn),A
2088 instr fetch_SP, op_INC16, store_SP ;33 ;INC SP
2089 instr fetch_MHL, op_INC, store_MHL ;34 ;INC (HL)
2090 instr fetch_MHL, op_DEC, store_MHL ;35 ;DEC (HL)
2091 instr fetch_DIR8, op_nop, store_MHL ;36 nn ;LD (HL),n
2092 instr fetch_nop, op_SCF, store_nop ;37 ;SCF
2093 instr fetch_DIR8, op_IFC, store_pcrel ;38 oo ;JR C,o
2094 instr fetch_SP, op_ADDHL, store_nop ;39 ;ADD HL,SP
2095 instr fetch_DIR16, op_RMEM8, store_A ;3A nn nn ;LD A,(nn)
2096 instr fetch_SP, op_DEC16, store_SP ;3B ;DEC SP
2097 instr fetch_nop, op_INCA, store_nop ;3C ;INC A
2098 instr fetch_nop, op_DECA, store_nop ;3D ;DEC A
2099 instr fetch_DIR8, op_nop, store_A ;3E nn ;LD A,n
2100 instr fetch_nop, op_CCF, store_nop ;3F ;CCF (Complement Carry Flag, gvd)
2101 instr fetch_nop, op_nop, store_nop ;40 ;LD B,B
2102 instr fetch_C, op_nop, store_B ;41 ;LD B,C
2103 instr fetch_D, op_nop, store_B ;42 ;LD B,D
2104 instr fetch_E, op_nop, store_B ;43 ;LD B,E
2105 instr fetch_H, op_nop, store_B ;44 ;LD B,H
2106 instr fetch_L, op_nop, store_B ;45 ;LD B,L
2107 instr fetch_MHL, op_nop, store_B ;46 ;LD B,(HL)
2108 instr fetch_A, op_nop, store_B ;47 ;LD B,A
2109 instr fetch_B, op_nop, store_C ;48 ;LD C,B
2110 instr fetch_nop, op_nop, store_nop ;49 ;LD C,C
2111 instr fetch_D, op_nop, store_C ;4A ;LD C,D
2112 instr fetch_E, op_nop, store_C ;4B ;LD C,E
2113 instr fetch_H, op_nop, store_C ;4C ;LD C,H
2114 instr fetch_L, op_nop, store_C ;4D ;LD C,L
2115 instr fetch_MHL, op_nop, store_C ;4E ;LD C,(HL)
2116 instr fetch_A, op_nop, store_C ;4F ;LD C,A
2117 instr fetch_B, op_nop, store_D ;50 ;LD D,B
2118 instr fetch_C, op_nop, store_D ;51 ;LD D,C
2119 instr fetch_nop, op_nop, store_nop ;52 ;LD D,D
2120 instr fetch_E, op_nop, store_D ;53 ;LD D,E
2121 instr fetch_H, op_nop, store_D ;54 ;LD D,H
2122 instr fetch_L, op_nop, store_D ;55 ;LD D,L
2123 instr fetch_MHL, op_nop, store_D ;56 ;LD D,(HL)
2124 instr fetch_A, op_nop, store_D ;57 ;LD D,A
2125 instr fetch_B, op_nop, store_E ;58 ;LD E,B
2126 instr fetch_C, op_nop, store_E ;59 ;LD E,C
2127 instr fetch_D, op_nop, store_E ;5A ;LD E,D
2128 instr fetch_nop, op_nop, store_nop ;5B ;LD E,E
2129 instr fetch_H, op_nop, store_E ;5C ;LD E,H
2130 instr fetch_L, op_nop, store_E ;5D ;LD E,L
2131 instr fetch_MHL, op_nop, store_E ;5E ;LD E,(HL)
2132 instr fetch_A, op_nop, store_E ;5F ;LD E,A
2133 instr fetch_B, op_nop, store_H ;60 ;LD H,B
2134 instr fetch_C, op_nop, store_H ;61 ;LD H,C
2135 instr fetch_D, op_nop, store_H ;62 ;LD H,D
2136 instr fetch_E, op_nop, store_H ;63 ;LD H,E
2137 instr fetch_nop, op_nop, store_nop ;64 ;LD H,H
2138 instr fetch_L, op_nop, store_H ;65 ;LD H,L
2139 instr fetch_MHL, op_nop, store_H ;66 ;LD H,(HL)
2140 instr fetch_A, op_nop, store_H ;67 ;LD H,A
2141 instr fetch_B, op_nop, store_L ;68 ;LD L,B
2142 instr fetch_C, op_nop, store_L ;69 ;LD L,C
2143 instr fetch_D, op_nop, store_L ;6A ;LD L,D
2144 instr fetch_E, op_nop, store_L ;6B ;LD L,E
2145 instr fetch_H, op_nop, store_L ;6C ;LD L,H
2146 instr fetch_nop, op_nop, store_nop ;6D ;LD L,L
2147 instr fetch_MHL, op_nop, store_L ;6E ;LD L,(HL)
2148 instr fetch_A, op_nop, store_L ;6F ;LD L,A
2149 instr fetch_B, op_nop, store_MHL ;70 ;LD (HL),B
2150 instr fetch_C, op_nop, store_MHL ;71 ;LD (HL),C
2151 instr fetch_D, op_nop, store_MHL ;72 ;LD (HL),D
2152 instr fetch_E, op_nop, store_MHL ;73 ;LD (HL),E
2153 instr fetch_H, op_nop, store_MHL ;74 ;LD (HL),H
2154 instr fetch_L, op_nop, store_MHL ;75 ;LD (HL),L
2155 instr fetch_nop, op_HALT, store_nop ;76 ;HALT
2156 instr fetch_A, op_nop, store_MHL ;77 ;LD (HL),A
2157 instr fetch_B, op_nop, store_A ;78 ;LD A,B
2158 instr fetch_C, op_nop, store_A ;79 ;LD A,C
2159 instr fetch_D, op_nop, store_A ;7A ;LD A,D
2160 instr fetch_E, op_nop, store_A ;7B ;LD A,E
2161 instr fetch_H, op_nop, store_A ;7C ;LD A,H
2162 instr fetch_L, op_nop, store_A ;7D ;LD A,L
2163 instr fetch_MHL, op_nop, store_A ;7E ;LD A,(HL)
2164 instr fetch_nop, op_nop, store_nop ;7F ;LD A,A
2165 instr fetch_B, op_ADDA, store_nop ;80 ;ADD A,B
2166 instr fetch_C, op_ADDA, store_nop ;81 ;ADD A,C
2167 instr fetch_D, op_ADDA, store_nop ;82 ;ADD A,D
2168 instr fetch_E, op_ADDA, store_nop ;83 ;ADD A,E
2169 instr fetch_H, op_ADDA, store_nop ;84 ;ADD A,H
2170 instr fetch_L, op_ADDA, store_nop ;85 ;ADD A,L
2171 instr fetch_MHL, op_ADDA, store_nop ;86 ;ADD A,(HL)
2172 instr fetch_A, op_ADDA, store_nop ;87 ;ADD A,A
2173 instr fetch_B, op_ADCA, store_nop ;88 ;ADC A,B
2174 instr fetch_C, op_ADCA, store_nop ;89 ;ADC A,C
2175 instr fetch_D, op_ADCA, store_nop ;8A ;ADC A,D
2176 instr fetch_E, op_ADCA, store_nop ;8B ;ADC A,E
2177 instr fetch_H, op_ADCA, store_nop ;8C ;ADC A,H
2178 instr fetch_L, op_ADCA, store_nop ;8D ;ADC A,L
2179 instr fetch_MHL, op_ADCA, store_nop ;8E ;ADC A,(HL)
2180 instr fetch_A, op_ADCA, store_nop ;8F ;ADC A,A
2181 instr fetch_B, op_SUBFA, store_nop ;90 ;SUB A,B
2182 instr fetch_C, op_SUBFA, store_nop ;91 ;SUB A,C
2183 instr fetch_D, op_SUBFA, store_nop ;92 ;SUB A,D
2184 instr fetch_E, op_SUBFA, store_nop ;93 ;SUB A,E
2185 instr fetch_H, op_SUBFA, store_nop ;94 ;SUB A,H
2186 instr fetch_L, op_SUBFA, store_nop ;95 ;SUB A,L
2187 instr fetch_MHL, op_SUBFA, store_nop ;96 ;SUB A,(HL)
2188 instr fetch_A, op_SUBFA, store_nop ;97 ;SUB A,A
2189 instr fetch_B, op_SBCFA, store_nop ;98 ;SBC A,B
2190 instr fetch_C, op_SBCFA, store_nop ;99 ;SBC A,C
2191 instr fetch_D, op_SBCFA, store_nop ;9A ;SBC A,D
2192 instr fetch_E, op_SBCFA, store_nop ;9B ;SBC A,E
2193 instr fetch_H, op_SBCFA, store_nop ;9C ;SBC A,H
2194 instr fetch_L, op_SBCFA, store_nop ;9D ;SBC A,L
2195 instr fetch_MHL, op_SBCFA, store_nop ;9E ;SBC A,(HL)
2196 instr fetch_A, op_SBCFA, store_nop ;9F ;SBC A,A
2197 instr fetch_B, op_ANDA, store_nop ;A0 ;AND A,B
2198 instr fetch_C, op_ANDA, store_nop ;A1 ;AND A,C
2199 instr fetch_D, op_ANDA, store_nop ;A2 ;AND A,D
2200 instr fetch_E, op_ANDA, store_nop ;A3 ;AND A,E
2201 instr fetch_H, op_ANDA, store_nop ;A4 ;AND A,H
2202 instr fetch_L, op_ANDA, store_nop ;A5 ;AND A,L
2203 instr fetch_MHL, op_ANDA, store_nop ;A6 ;AND A,(HL)
2204 instr fetch_A, op_ANDA, store_nop ;A7 ;AND A,A
2205 instr fetch_B, op_XORA, store_nop ;A8 ;XOR A,B
2206 instr fetch_C, op_XORA, store_nop ;A9 ;XOR A,C
2207 instr fetch_D, op_XORA, store_nop ;AA ;XOR A,D
2208 instr fetch_E, op_XORA, store_nop ;AB ;XOR A,E
2209 instr fetch_H, op_XORA, store_nop ;AC ;XOR A,H
2210 instr fetch_L, op_XORA, store_nop ;AD ;XOR A,L
2211 instr fetch_MHL, op_XORA, store_nop ;AE ;XOR A,(HL)
2212 instr fetch_A, op_XORA, store_nop ;AF ;XOR A,A
2213 instr fetch_B, op_ORA, store_nop ;B0 ;OR A,B
2214 instr fetch_C, op_ORA, store_nop ;B1 ;OR A,C
2215 instr fetch_D, op_ORA, store_nop ;B2 ;OR A,D
2216 instr fetch_E, op_ORA, store_nop ;B3 ;OR A,E
2217 instr fetch_H, op_ORA, store_nop ;B4 ;OR A,H
2218 instr fetch_L, op_ORA, store_nop ;B5 ;OR A,L
2219 instr fetch_MHL, op_ORA, store_nop ;B6 ;OR A,(HL)
2220 instr fetch_A, op_ORA, store_nop ;B7 ;OR A,A
2221 instr fetch_B, op_CPFA, store_nop ;B8 ;CP A,B
2222 instr fetch_C, op_CPFA, store_nop ;B9 ;CP A,C
2223 instr fetch_D, op_CPFA, store_nop ;BA ;CP A,D
2224 instr fetch_E, op_CPFA, store_nop ;BB ;CP A,E
2225 instr fetch_H, op_CPFA, store_nop ;BC ;CP A,H
2226 instr fetch_L, op_CPFA, store_nop ;BD ;CP A,L
2227 instr fetch_MHL, op_CPFA, store_nop ;BE ;CP A,(HL)
2228 instr fetch_A, op_CPFA, store_nop ;BF ;CP A,A
2229 instr fetch_nop, op_IFNZ, store_RET ;C0 ;RET NZ
2230 instr fetch_nop, op_POP16, store_BC ;C1 ;POP BC
2231 instr fetch_DIR16, op_IFNZ, store_PC ;C2 nn nn ;JP NZ,nn
2232 instr fetch_DIR16, op_nop, store_PC ;C3 nn nn ;JP nn
2233 instr fetch_DIR16, op_IFNZ, store_CALL ;C4 nn nn ;CALL NZ,nn
2234 instr fetch_BC, op_PUSH16, store_nop ;C5 ;PUSH BC
2235 instr fetch_DIR8, op_ADDA, store_nop ;C6 nn ;ADD A,n
2236 instr fetch_RST, op_nop, store_CALL ;C7 ;RST 0
2237 instr fetch_nop, op_IFZ, store_RET ;C8 ;RET Z
2238 instr fetch_nop, op_nop, store_RET ;C9 ;RET
2239 instr fetch_DIR16, op_IFZ, store_PC ;CA nn nn ;JP Z,nn
2240 instr fetch_nop, op_prefixCB, store_nop ;CB ;(CB opcode prefix)
2241 instr fetch_DIR16, op_IFZ, store_CALL ;CC nn nn ;CALL Z,nn
2242 instr fetch_DIR16, op_nop, store_CALL ;CD nn nn ;CALL nn
2243 instr fetch_DIR8, op_ADCA, store_nop ;CE nn ;ADC A,n
2244 instr fetch_RST, op_nop, store_CALL ;CF ;RST 8H
2245 instr fetch_nop, op_IFNC, store_RET ;D0 ;RET NC
2246 instr fetch_nop, op_POP16, store_DE ;D1 ;POP DE
2247 instr fetch_DIR16, op_IFNC, store_PC ;D2 nn nn ;JP NC,nn
2248 instr fetch_DIR8, op_OUTA, store_nop ;D3 nn ;OUT (n),A
2249 instr fetch_DIR16, op_IFNC, store_CALL ;D4 nn nn ;CALL NC,nn
2250 instr fetch_DE, op_PUSH16, store_nop ;D5 ;PUSH DE
2251 instr fetch_DIR8, op_SUBFA, store_nop ;D6 nn ;SUB n
2252 instr fetch_RST, op_nop, store_CALL ;D7 ;RST 10H
2253 instr fetch_nop, op_IFC, store_RET ;D8 ;RET C
2254 instr fetch_nop, op_EXX, store_nop ;D9 ;EXX
2255 instr fetch_DIR16, op_IFC, store_PC ;DA nn nn ;JP C,nn
2256 instr fetch_DIR8, op_INA, store_nop ;DB nn ;IN A,(n)
2257 instr fetch_DIR16, op_IFC, store_CALL ;DC nn nn ;CALL C,nn
2258 instr fetch_nop, op_prefixDD, store_nop ;DD ;(DD opcode prefix)
2259 instr fetch_DIR8, op_SBCFA, store_nop ;DE nn ;SBC A,n
2260 instr fetch_RST, op_nop, store_CALL ;DF ;RST 18H
2261 instr fetch_nop, op_IFPO, store_RET ;E0 ;RET PO
2262 instr fetch_nop, op_POP16, store_HL ;E1 ;POP HL
2263 instr fetch_DIR16, op_IFPO, store_PC ;E2 nn nn ;JP PO,nn
2264 instr fetch_MSP, op_EXHL, store_MSP ;E3 ;EX (SP),HL
2265 instr fetch_DIR16, op_IFPO, store_CALL ;E4 nn nn ;CALL PO,nn
2266 instr fetch_HL, op_PUSH16, store_nop ;E5 ;PUSH HL
2267 instr fetch_DIR8, op_ANDA, store_nop ;E6 nn ;AND n
2268 instr fetch_RST, op_nop, store_CALL ;E7 ;RST 20H
2269 instr fetch_nop, op_IFPE, store_RET ;E8 ;RET PE
2270 instr fetch_HL, op_nop, store_PC ;E9 ;JP HL
2271 instr fetch_DIR16, op_IFPE, store_PC ;EA nn nn ;JP PE,nn
2272 instr fetch_DE, op_EXHL, store_DE ;EB ;EX DE,HL
2273 instr fetch_DIR16, op_IFPE, store_CALL ;EC nn nn ;CALL PE,nn
2274 instr fetch_nop, op_prefixED, store_nop ;ED ;(ED opcode prefix)
2275 instr fetch_DIR8, op_XORA, store_nop ;EE nn ;XOR n
2276 instr fetch_RST, op_nop, store_CALL ;EF ;RST 28H
2277 instr fetch_nop, op_IFP, store_RET ;F0 ;RET P
2278 instr fetch_nop, op_POP16, store_AF ;F1 ;POP AF
2279 instr fetch_DIR16, op_IFP, store_PC ;F2 nn nn ;JP P,nn
2280 instr fetch_nop, op_DI, store_nop ;F3 ;DI
2281 instr fetch_DIR16, op_IFP, store_CALL ;F4 nn nn ;CALL P,nn
2282 instr fetch_AF, op_PUSH16, store_nop ;F5 ;PUSH AF
2283 instr fetch_DIR8, op_ORA, store_nop ;F6 nn ;OR n
2284 instr fetch_RST, op_nop, store_CALL ;F7 ;RST 30H
2285 instr fetch_nop, op_IFM, store_RET ;F8 ;RET M
2286 instr fetch_HL, op_nop, store_SP ;F9 ;LD SP,HL
2287 instr fetch_DIR16, op_IFM, store_PC ;FA nn nn ;JP M,nn
2288 instr fetch_nop, op_EI, store_nop ;FB ;EI
2289 instr fetch_DIR16, op_IFM, store_CALL ;FC nn nn ;CALL M,nn
2290 instr fetch_nop, op_prefixFD, store_nop ;FD ;(FD opcode prefix)
2291 instr fetch_DIR8, op_CPFA, store_nop ;FE nn ;CP n
2292 instr fetch_RST, op_nop, store_CALL ;FF ;RST 38H
2302 sbiw z_pcl,1 ;--z_pc
2344 mem_read_ds opl, z_pc ;get displacement
2346 clr oph ;sign extend
2351 add xl,opl ;add displacement
2353 mem_read_d opl ;get operand
2354 ret ;(Ix+d) still in xl,xh
2400 mem_read_s z_pc ;get displacement
2402 clr temp2 ;sign extend
2407 add xl,temp ;add displacement
2409 mem_write_s opl ;store operand
2415 mem_write_s opl ;store operand
2430 mem_read_s z_pc ;get displacement
2433 clr temp2 ;sign extend
2438 add xl,temp ;add displacement
2440 mem_write_s opl ;store operand
2456 ;----------------------------------------------------------------
2457 ;|Mnemonic |SZHPNC|Description |Notes |
2458 ;----------------------------------------------------------------
2459 ;|LD dst,src|------|Load |dst=src |
2464 do_op_stxx: ;store xx to mem loc in opl:h
2481 ;----------------------------------------------------------------
2482 ;|Mnemonic |SZHPNC|Description |Notes |
2483 ;----------------------------------------------------------------
2484 ;|EX [SP],IX|------|Exchange |[SP]<->IX |
2485 ;|EX [SP],IY|------|Exchange |[SP]<->IY |
2506 ;----------------------------------------------------------------
2507 ;|Mnemonic |SZHPNC|Description |Notes |
2508 ;----------------------------------------------------------------
2509 ;|ADD IX,pp |--*-0*|Add |IX=IX+pp |
2510 ;|ADD IY,rr |--*-0*|Add |IY=IY+rr |
2534 bmov z_flags,ZFL_C, temp,AVR_C
2536 do_z80_flags_clear_N
2540 opctable DDFDjmp, PC ;+256
2542 instr fetch_nop, op_noni, store_nop ;00 ;
2543 instr fetch_nop, op_noni, store_nop ;01 ;
2544 instr fetch_nop, op_noni, store_nop ;02 ;
2545 instr fetch_nop, op_noni, store_nop ;03 ;
2546 instr fetch_nop, op_noni, store_nop ;04 ;
2547 instr fetch_nop, op_noni, store_nop ;05 ;
2548 instr fetch_nop, op_noni, store_nop ;06 ;
2549 instr fetch_nop, op_noni, store_nop ;07 ;
2550 instr fetch_nop, op_noni, store_nop ;08 ;
2551 instr fetch_BC, op_ADDxx, store_nop ;09 ;ADD xx,BC
2552 instr fetch_nop, op_noni, store_nop ;0A ;
2553 instr fetch_nop, op_noni, store_nop ;0B ;
2554 instr fetch_nop, op_noni, store_nop ;0C ;
2555 instr fetch_nop, op_noni, store_nop ;0D ;
2556 instr fetch_nop, op_noni, store_nop ;0E ;
2557 instr fetch_nop, op_noni, store_nop ;0F ;
2558 instr fetch_nop, op_noni, store_nop ;10 ;
2559 instr fetch_nop, op_noni, store_nop ;11 ;
2560 instr fetch_nop, op_noni, store_nop ;12 ;
2561 instr fetch_nop, op_noni, store_nop ;13 ;
2562 instr fetch_nop, op_noni, store_nop ;14 ;
2563 instr fetch_nop, op_noni, store_nop ;15 ;
2564 instr fetch_nop, op_noni, store_nop ;16 ;
2565 instr fetch_nop, op_noni, store_nop ;17 ;
2566 instr fetch_nop, op_noni, store_nop ;18 ;
2567 instr fetch_DE, op_ADDxx, store_nop ;19 ;ADD xx,DE
2568 instr fetch_nop, op_noni, store_nop ;1A ;
2569 instr fetch_nop, op_noni, store_nop ;1B ;
2570 instr fetch_nop, op_noni, store_nop ;1C ;
2571 instr fetch_nop, op_noni, store_nop ;1D ;
2572 instr fetch_nop, op_noni, store_nop ;1E ;
2573 instr fetch_nop, op_noni, store_nop ;1F ;
2574 instr fetch_nop, op_noni, store_nop ;20 ;
2575 instr fetch_DIR16, op_nop, store_xx ;21 ;LD xx,nn
2576 instr fetch_DIR16, op_STxx, store_nop ;22 ;LD (nn),xx
2577 instr fetch_xx, op_INC16, store_xx ;23 ;INC xx
2578 instr fetch_xH, op_INC, store_xH ;24 ;INC xh
2579 instr fetch_xH, op_DEC, store_xH ;25 ;DEC xh
2580 instr fetch_DIR8, op_nop, store_xH ;26 ;LD xh,n
2581 instr fetch_nop, op_noni, store_nop ;27 ;
2582 instr fetch_nop, op_noni, store_nop ;28 ;
2583 instr fetch_xx, op_ADDxx, store_nop ;29 ;ADD xx,xx
2584 instr fetch_DIR16, op_RMEM16, store_xx ;2A ;LD xx,(nn)
2585 instr fetch_xx, op_DEC16, store_xx ;2B ;DEC xx
2586 instr fetch_xL, op_INC, store_xL ;2C ;INC xl
2587 instr fetch_xL, op_DEC, store_xL ;2D ;DEC xl
2588 instr fetch_DIR8, op_nop, store_xL ;2E ;LD xl,n
2589 instr fetch_nop, op_noni, store_nop ;2F ;
2590 instr fetch_nop, op_noni, store_nop ;30 ;
2591 instr fetch_nop, op_noni, store_nop ;31 ;
2592 instr fetch_nop, op_noni, store_nop ;32 ;
2593 instr fetch_nop, op_noni, store_nop ;33 ;
2594 instr fetch_MXX, op_INC, store_MXX_0 ;34 ;INC (xx+d)
2595 instr fetch_MXX, op_DEC, store_MXX_0 ;35 ;DEC (xx+d)
2596 instr fetch_DIR8_2, op_nop, store_MXX_2 ;36 ;LD (xx+d),n
2597 instr fetch_nop, op_noni, store_nop ;37 ;
2598 instr fetch_nop, op_noni, store_nop ;38 ;
2599 instr fetch_SP, op_ADDxx, store_nop ;39 ;ADD xx,SP
2600 instr fetch_nop, op_noni, store_nop ;3A ;
2601 instr fetch_nop, op_noni, store_nop ;3B ;
2602 instr fetch_nop, op_noni, store_nop ;3C ;
2603 instr fetch_nop, op_noni, store_nop ;3D ;
2604 instr fetch_nop, op_noni, store_nop ;3E ;
2605 instr fetch_nop, op_noni, store_nop ;3F ;
2606 instr fetch_nop, op_noni, store_nop ;40 ;
2607 instr fetch_nop, op_noni, store_nop ;41 ;
2608 instr fetch_nop, op_noni, store_nop ;42 ;
2609 instr fetch_nop, op_noni, store_nop ;43 ;
2610 instr fetch_xH, op_nop, store_B ;44 ;LD B,xh
2611 instr fetch_xL, op_nop, store_B ;45 ;LD B,xl
2612 instr fetch_MXX, op_nop, store_B ;46 ;LD B,(xx+d)
2613 instr fetch_nop, op_noni, store_nop ;47 ;
2614 instr fetch_nop, op_noni, store_nop ;48 ;
2615 instr fetch_nop, op_noni, store_nop ;49 ;
2616 instr fetch_nop, op_noni, store_nop ;4A ;
2617 instr fetch_nop, op_noni, store_nop ;4B ;
2618 instr fetch_xH, op_nop, store_C ;4C ;LD C,xh
2619 instr fetch_xL, op_nop, store_C ;4D ;LD C,xl
2620 instr fetch_MXX, op_nop, store_C ;4E ;LD C,(xx+d)
2621 instr fetch_nop, op_noni, store_nop ;4F ;
2622 instr fetch_nop, op_noni, store_nop ;50 ;
2623 instr fetch_nop, op_noni, store_nop ;51 ;
2624 instr fetch_nop, op_noni, store_nop ;52 ;
2625 instr fetch_nop, op_noni, store_nop ;53 ;
2626 instr fetch_xH, op_nop, store_D ;54 ;LD D,xh
2627 instr fetch_xL, op_nop, store_D ;55 ;LD D,xl
2628 instr fetch_MXX, op_nop, store_D ;56 ;LD D,(xx+d)
2629 instr fetch_nop, op_noni, store_nop ;57 ;
2630 instr fetch_nop, op_noni, store_nop ;58 ;
2631 instr fetch_nop, op_noni, store_nop ;59 ;
2632 instr fetch_nop, op_noni, store_nop ;5A ;
2633 instr fetch_nop, op_noni, store_nop ;5B ;
2634 instr fetch_xH, op_nop, store_E ;5C ;LD E,xh
2635 instr fetch_xL, op_nop, store_E ;5D ;LD E,xl
2636 instr fetch_MXX, op_nop, store_E ;5E ;LD E,(xx+d)
2637 instr fetch_nop, op_noni, store_nop ;5F ;
2638 instr fetch_B, op_nop, store_xH ;60 ;LD xh,B
2639 instr fetch_C, op_nop, store_xH ;61 ;LD xh,C
2640 instr fetch_D, op_nop, store_xH ;62 ;LD xh,D
2641 instr fetch_E, op_nop, store_xH ;63 ;LD xh,E
2642 instr fetch_nop, op_noni, store_nop ;64 ;LD xh,xh
2643 instr fetch_xL, op_nop, store_xH ;65 ;LD xh,xl
2644 instr fetch_MXX, op_nop, store_H ;66 ;LD H,(xx+d)
2645 instr fetch_A, op_nop, store_xH ;67 ;LD xh,A
2646 instr fetch_B, op_nop, store_xL ;68 ;LD xl,B
2647 instr fetch_C, op_nop, store_xL ;69 ;LD xl,C
2648 instr fetch_D, op_nop, store_xL ;6A ;LD xl,D
2649 instr fetch_E, op_nop, store_xL ;6B ;LD xl,E
2650 instr fetch_xH, op_nop, store_xL ;6C ;LD xl,xh
2651 instr fetch_nop, op_noni, store_nop ;6D ;LD xl,xl
2652 instr fetch_MXX, op_nop, store_L ;6E ;LD L,(xx+d)
2653 instr fetch_A, op_nop, store_xL ;6F ;LD xl,A
2654 instr fetch_B, op_nop, store_MXX ;70 ;LD (xx+d),B
2655 instr fetch_C, op_nop, store_MXX ;71 ;LD (xx+d),C
2656 instr fetch_D, op_nop, store_MXX ;72 ;LD (xx+d),D
2657 instr fetch_E, op_nop, store_MXX ;73 ;LD (xx+d),E
2658 instr fetch_H, op_nop, store_MXX ;74 ;LD (xx+d),H
2659 instr fetch_L, op_nop, store_MXX ;75 ;LD (xx+d),L
2660 instr fetch_nop, op_noni, store_nop ;76 ;
2661 instr fetch_A, op_nop, store_MXX ;77 ;LD (xx+d),A
2662 instr fetch_nop, op_noni, store_nop ;78 ;
2663 instr fetch_nop, op_noni, store_nop ;79 ;
2664 instr fetch_nop, op_noni, store_nop ;7A ;
2665 instr fetch_nop, op_noni, store_nop ;7B ;
2666 instr fetch_xH, op_nop, store_A ;7C ;LD A,xh
2667 instr fetch_xL, op_nop, store_A ;7D ;LD A,xl
2668 instr fetch_MXX, op_nop, store_A ;7E ;LD A,(xx+d)
2669 instr fetch_nop, op_noni, store_nop ;7F ;
2670 instr fetch_nop, op_noni, store_nop ;80 ;
2671 instr fetch_nop, op_noni, store_nop ;81 ;
2672 instr fetch_nop, op_noni, store_nop ;82 ;
2673 instr fetch_nop, op_noni, store_nop ;83 ;
2674 instr fetch_xH, op_ADDA, store_nop ;84 ;ADD A,xh
2675 instr fetch_xL, op_ADDA, store_nop ;85 ;ADD A,xl
2676 instr fetch_MXX, op_ADDA, store_nop ;86 ;ADD A,(xx)
2677 instr fetch_nop, op_noni, store_nop ;87 ;
2678 instr fetch_nop, op_noni, store_nop ;88 ;
2679 instr fetch_nop, op_noni, store_nop ;89 ;
2680 instr fetch_nop, op_noni, store_nop ;8A ;
2681 instr fetch_nop, op_noni, store_nop ;8B ;
2682 instr fetch_xH, op_ADCA, store_nop ;8C ;ADC A,xh
2683 instr fetch_xL, op_ADCA, store_nop ;8D ;ADC A,xl
2684 instr fetch_MXX, op_ADCA, store_nop ;8E ;ADC A,(xx)
2685 instr fetch_nop, op_noni, store_nop ;8F ;
2686 instr fetch_nop, op_noni, store_nop ;90 ;
2687 instr fetch_nop, op_noni, store_nop ;91 ;
2688 instr fetch_nop, op_noni, store_nop ;92 ;
2689 instr fetch_nop, op_noni, store_nop ;93 ;
2690 instr fetch_xH, op_SUBFA, store_nop ;94 ;SUB A,xh
2691 instr fetch_xL, op_SUBFA, store_nop ;95 ;SUB A,xl
2692 instr fetch_MXX, op_SUBFA, store_nop ;96 ;SUB A,(xx)
2693 instr fetch_nop, op_noni, store_nop ;97 ;
2694 instr fetch_nop, op_noni, store_nop ;98 ;
2695 instr fetch_nop, op_noni, store_nop ;99 ;
2696 instr fetch_nop, op_noni, store_nop ;9A ;
2697 instr fetch_nop, op_noni, store_nop ;9B ;
2698 instr fetch_xH, op_SBCFA, store_nop ;9C ;SBC A,xh
2699 instr fetch_xL, op_SBCFA, store_nop ;9D ;SBC A,xl
2700 instr fetch_MXX, op_SBCFA, store_nop ;9E ;SBC A,(xx)
2701 instr fetch_nop, op_noni, store_nop ;9F ;
2702 instr fetch_nop, op_noni, store_nop ;A0 ;
2703 instr fetch_nop, op_noni, store_nop ;A1 ;
2704 instr fetch_nop, op_noni, store_nop ;A2 ;
2705 instr fetch_nop, op_noni, store_nop ;A3 ;
2706 instr fetch_xH, op_ANDA, store_nop ;A4 ;AND A,xh
2707 instr fetch_xL, op_ANDA, store_nop ;A5 ;AND A,xl
2708 instr fetch_MXX, op_ANDA, store_nop ;A6 ;AND A,(xx)
2709 instr fetch_nop, op_noni, store_nop ;A7 ;
2710 instr fetch_nop, op_noni, store_nop ;A8 ;
2711 instr fetch_nop, op_noni, store_nop ;A9 ;
2712 instr fetch_nop, op_noni, store_nop ;AA ;
2713 instr fetch_nop, op_noni, store_nop ;AB ;
2714 instr fetch_xH, op_XORA, store_nop ;AC ;XOR A,xh
2715 instr fetch_xL, op_XORA, store_nop ;AD ;XOR A,xl
2716 instr fetch_MXX, op_XORA, store_nop ;AE ;XOR A,(xx)
2717 instr fetch_nop, op_noni, store_nop ;AF ;
2718 instr fetch_nop, op_noni, store_nop ;B0 ;
2719 instr fetch_nop, op_noni, store_nop ;B1 ;
2720 instr fetch_nop, op_noni, store_nop ;B2 ;
2721 instr fetch_nop, op_noni, store_nop ;B3 ;
2722 instr fetch_xH, op_ORA, store_nop ;B4 ;OR A,xh
2723 instr fetch_xL, op_ORA, store_nop ;B5 ;OR A,xl
2724 instr fetch_MXX, op_ORA, store_nop ;B6 ;OR A,(xx)
2725 instr fetch_nop, op_noni, store_nop ;B7 ;
2726 instr fetch_nop, op_noni, store_nop ;B8 ;
2727 instr fetch_nop, op_noni, store_nop ;B9 ;
2728 instr fetch_nop, op_noni, store_nop ;BA ;
2729 instr fetch_nop, op_noni, store_nop ;BB ;
2730 instr fetch_xH, op_CPFA, store_nop ;BC ;CP A,xh
2731 instr fetch_xL, op_CPFA, store_nop ;BD ;CP A,xl
2732 instr fetch_MXX, op_CPFA, store_nop ;BE ;CP A,(xx)
2733 instr fetch_nop, op_noni, store_nop ;BF ;
2734 instr fetch_nop, op_noni, store_nop ;C0 ;
2735 instr fetch_nop, op_noni, store_nop ;C1 ;
2736 instr fetch_nop, op_noni, store_nop ;C2 ;
2737 instr fetch_nop, op_noni, store_nop ;C3 ;
2738 instr fetch_nop, op_noni, store_nop ;C4 ;
2739 instr fetch_nop, op_noni, store_nop ;C5 ;
2740 instr fetch_nop, op_noni, store_nop ;C6 ;
2741 instr fetch_nop, op_noni, store_nop ;C7 ;
2742 instr fetch_nop, op_noni, store_nop ;C8 ;
2743 instr fetch_nop, op_noni, store_nop ;C9 ;
2744 instr fetch_nop, op_noni, store_nop ;CA ;
2745 instr fetch_nop, op_prefixDDFDCB,store_nop ;CB ;
2746 instr fetch_nop, op_noni, store_nop ;CC ;
2747 instr fetch_nop, op_noni, store_nop ;CD ;
2748 instr fetch_nop, op_noni, store_nop ;CE ;
2749 instr fetch_nop, op_noni, store_nop ;CF ;
2750 instr fetch_nop, op_noni, store_nop ;D0 ;
2751 instr fetch_nop, op_noni, store_nop ;D1 ;
2752 instr fetch_nop, op_noni, store_nop ;D2 ;
2753 instr fetch_nop, op_noni, store_nop ;D3 ;
2754 instr fetch_nop, op_noni, store_nop ;D4 ;
2755 instr fetch_nop, op_noni, store_nop ;D5 ;
2756 instr fetch_nop, op_noni, store_nop ;D6 ;
2757 instr fetch_nop, op_noni, store_nop ;D7 ;
2758 instr fetch_nop, op_noni, store_nop ;D8 ;
2759 instr fetch_nop, op_noni, store_nop ;D9 ;
2760 instr fetch_nop, op_noni, store_nop ;DA ;
2761 instr fetch_nop, op_noni, store_nop ;DB ;
2762 instr fetch_nop, op_noni, store_nop ;DC ;
2763 instr fetch_nop, op_noni, store_nop ;DD ;
2764 instr fetch_nop, op_noni, store_nop ;DE ;
2765 instr fetch_nop, op_noni, store_nop ;DF ;
2766 instr fetch_nop, op_noni, store_nop ;E0 ;
2767 instr fetch_nop, op_POP16, store_xx ;E1 ;POP xx
2768 instr fetch_nop, op_noni, store_nop ;E2 ;
2769 instr fetch_MSP, op_EXxx, store_MSP ;E3 ;EX (SP),xx
2770 instr fetch_nop, op_noni, store_nop ;E4 ;
2771 instr fetch_xx, op_PUSH16, store_nop ;E5 ;PUSH xx
2772 instr fetch_nop, op_noni, store_nop ;E6 ;
2773 instr fetch_nop, op_noni, store_nop ;E7 ;
2774 instr fetch_nop, op_noni, store_nop ;E8 ;
2775 instr fetch_xx, op_nop, store_PC ;E9 ;JP xx
2776 instr fetch_nop, op_noni, store_nop ;EA ;
2777 instr fetch_nop, op_noni, store_nop ;EB ;
2778 instr fetch_nop, op_noni, store_nop ;EC ;
2779 instr fetch_nop, op_noni, store_nop ;ED ;
2780 instr fetch_nop, op_noni, store_nop ;EE ;
2781 instr fetch_nop, op_noni, store_nop ;EF ;
2782 instr fetch_nop, op_noni, store_nop ;F0 ;
2783 instr fetch_nop, op_noni, store_nop ;F1 ;
2784 instr fetch_nop, op_noni, store_nop ;F2 ;
2785 instr fetch_nop, op_noni, store_nop ;F3 ;
2786 instr fetch_nop, op_noni, store_nop ;F4 ;
2787 instr fetch_nop, op_noni, store_nop ;F5 ;
2788 instr fetch_nop, op_noni, store_nop ;F6 ;
2789 instr fetch_nop, op_noni, store_nop ;F7 ;
2790 instr fetch_nop, op_noni, store_nop ;F8 ;
2791 instr fetch_xx, op_nop, store_SP ;F9 ;LD SP,xx
2792 instr fetch_nop, op_noni, store_nop ;FA ;
2793 instr fetch_nop, op_noni, store_nop ;FB ;
2794 instr fetch_nop, op_noni, store_nop ;FC ;
2795 instr fetch_nop, op_noni, store_nop ;FD ;
2796 instr fetch_nop, op_noni, store_nop ;FE ;
2797 instr fetch_nop, op_noni, store_nop ;FF ;
2801 ;----------------------------------------------------------------
2802 ;|Mnemonic |SZHPNC|Description |Notes |
2803 ;----------------------------------------------------------------
2804 ;|RLC m |**0P0*|Rotate Left Circular |m=m<- |
2805 ;|RRC m |**0P0*|Rotate Right Circular|m=->m |
2806 ;|RL m |**0P0*|Rotate Left |m={CY,m}<- |
2807 ;|RR m |**0P0*|Rotate Right |m=->{CY,m} |
2808 ;|SLA m |**0P0*|Shift Left Arithmetic|m=m*2 |
2809 ;|SRA m |**0P0*|Shift Right Arith. |m=m/2 |
2810 ;|SLL m |**0P0*|Shift Right Logical |
2811 ;|SRL m |**0P0*|Shift Right Logical |m=->{0,m,CY} |
2817 ;Rotate Left Cyclical. All bits move 1 to the
2818 ;left, the msb becomes c and lsb.
2823 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2830 ;Rotate Right Cyclical. All bits move 1 to the
2831 ;right, the lsb becomes c and msb.
2835 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2836 bmov z_flags,ZFL_C, opl,7
2843 ;Rotate Left. All bits move 1 to the left, the msb
2844 ;becomes c, c becomes lsb.
2850 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2851 bmov z_flags,ZFL_C, temp,AVR_C
2858 ;Rotate Right. All bits move 1 to the right, the lsb
2859 ;becomes c, c becomes msb.
2863 bmov opl,7, z_flags,ZFL_C ;old CY --> Bit 7
2864 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2865 bmov z_flags,ZFL_C, temp,AVR_C ;
2873 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2874 bmov z_flags,ZFL_C, temp,AVR_C ;
2882 bmov opl,7, opl,6 ;old CY --> Bit 7
2883 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2884 bmov z_flags,ZFL_C, temp,AVR_C ;
2893 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2894 bmov z_flags,ZFL_C, temp,AVR_C ;
2902 ldpmx z_flags,sz53p_tab,opl ;S,Z,H,P,N
2903 bmov z_flags,ZFL_C, temp,AVR_C ;
2906 ;----------------------------------------------------------------
2907 ;|Mnemonic |SZHPNC|Description |Notes |
2908 ;----------------------------------------------------------------
2909 ;|BIT b,m |?*1?0-|Test Bit |m&{2^b} |
2910 ;|RES b,m |------|Reset bit |m=m&{~2^b} |
2911 ;|SET b,m |------|Set bit |m=mv{2^b} |
2940 ori z_flags,(1<<ZFL_H)
2941 andi z_flags,~(1<<ZFL_N)
2942 bmov z_flags,ZFL_Z, temp,AVR_Z
3059 ;.macro m_do_store_b
3062 ;.equ do_store_b = 0
3097 opctable CBjmp, PC ;+256
3099 instr fetch_B, op_RLC, store2_B ;00 ;RLC B
3100 instr fetch_C, op_RLC, store2_C ;01 ;RLC C
3101 instr fetch_D, op_RLC, store2_D ;02 ;RLC D
3102 instr fetch_E, op_RLC, store2_E ;03 ;RLC E
3103 instr fetch_H, op_RLC, store2_H ;04 ;RLC H
3104 instr fetch_L, op_RLC, store2_L ;05 ;RLC L
3105 instr fetch2_mhl, op_RLC, store_MHL ;06 ;RLC (HL)
3106 instr fetch_A, op_RLC, store2_A ;07 ;RLC A
3107 instr fetch_B, op_RRC, store2_B ;08 ;RRC B
3108 instr fetch_C, op_RRC, store2_C ;09 ;RRC C
3109 instr fetch_D, op_RRC, store2_D ;0A ;RRC D
3110 instr fetch_E, op_RRC, store2_E ;0B ;RRC E
3111 instr fetch_H, op_RRC, store2_H ;0C ;RRC H
3112 instr fetch_L, op_RRC, store2_L ;0D ;RRC L
3113 instr fetch2_mhl, op_RRC, store_MHL ;0E ;RRC (HL)
3114 instr fetch_A, op_RRC, store2_A ;0F ;RRC A
3115 instr fetch_B, op_RL, store2_B ;10 ;RL B
3116 instr fetch_C, op_RL, store2_C ;11 ;RL C
3117 instr fetch_D, op_RL, store2_D ;12 ;RL D
3118 instr fetch_E, op_RL, store2_E ;13 ;RL E
3119 instr fetch_H, op_RL, store2_H ;14 ;RL H
3120 instr fetch_L, op_RL, store2_L ;15 ;RL L
3121 instr fetch2_mhl, op_RL, store_MHL ;16 ;RL (HL)
3122 instr fetch_A, op_RL, store2_A ;17 ;RL A
3123 instr fetch_B, op_RR, store2_B ;18 ;RR B
3124 instr fetch_C, op_RR, store2_C ;19 ;RR C
3125 instr fetch_D, op_RR, store2_D ;1A ;RR D
3126 instr fetch_E, op_RR, store2_E ;1B ;RR E
3127 instr fetch_H, op_RR, store2_H ;1C ;RR H
3128 instr fetch_L, op_RR, store2_L ;1D ;RR L
3129 instr fetch2_mhl, op_RR, store_MHL ;1E ;RR (HL)
3130 instr fetch_A, op_RR, store2_A ;1F ;RR A
3131 instr fetch_B, op_SLA, store2_B ;20 ;SLA B
3132 instr fetch_C, op_SLA, store2_C ;21 ;SLA C
3133 instr fetch_D, op_SLA, store2_D ;22 ;SLA D
3134 instr fetch_E, op_SLA, store2_E ;23 ;SLA E
3135 instr fetch_H, op_SLA, store2_H ;24 ;SLA H
3136 instr fetch_L, op_SLA, store2_L ;25 ;SLA L
3137 instr fetch2_mhl, op_SLA, store_MHL ;26 ;SLA (HL)
3138 instr fetch_A, op_SLA, store2_A ;27 ;SLA A
3139 instr fetch_B, op_SRA, store2_B ;28 ;SRA B
3140 instr fetch_C, op_SRA, store2_C ;29 ;SRA C
3141 instr fetch_D, op_SRA, store2_D ;2A ;SRA D
3142 instr fetch_E, op_SRA, store2_E ;2B ;SRA E
3143 instr fetch_H, op_SRA, store2_H ;2C ;SRA H
3144 instr fetch_L, op_SRA, store2_L ;2D ;SRA L
3145 instr fetch2_mhl, op_SRA, store_MHL ;2E ;SRA (HL)
3146 instr fetch_A, op_SRA, store2_A ;2F ;SRA A
3147 instr fetch_B, op_SLL, store2_B ;30 ;SLL B
3148 instr fetch_C, op_SLL, store2_C ;31 ;SLL C
3149 instr fetch_D, op_SLL, store2_D ;32 ;SLL D
3150 instr fetch_E, op_SLL, store2_E ;33 ;SLL E
3151 instr fetch_H, op_SLL, store2_H ;34 ;SLL H
3152 instr fetch_L, op_SLL, store2_L ;35 ;SLL L
3153 instr fetch2_mhl, op_SLL, store_MHL ;36 ;SLL (HL)
3154 instr fetch_A, op_SLL, store2_A ;37 ;SLL A
3155 instr fetch_B, op_SRL, store2_B ;38 ;SRL B
3156 instr fetch_C, op_SRL, store2_C ;39 ;SRL C
3157 instr fetch_D, op_SRL, store2_D ;3A ;SRL D
3158 instr fetch_E, op_SRL, store2_E ;3B ;SRL E
3159 instr fetch_H, op_SRL, store2_H ;3C ;SRL H
3160 instr fetch_L, op_SRL, store2_L ;3D ;SRL L
3161 instr fetch2_mhl, op_SRL, store_MHL ;3E ;SRL (HL)
3162 instr fetch_A, op_SRL, store2_A ;3F ;SRL A
3163 instr fetch_B, op_BIT0, store_nop ;40 ;BIT 0,B
3164 instr fetch_C, op_BIT0, store_nop ;41 ;BIT 0,C
3165 instr fetch_D, op_BIT0, store_nop ;42 ;BIT 0,D
3166 instr fetch_E, op_BIT0, store_nop ;43 ;BIT 0,E
3167 instr fetch_H, op_BIT0, store_nop ;44 ;BIT 0,H
3168 instr fetch_L, op_BIT0, store_nop ;45 ;BIT 0,L
3169 instr fetch2_mhl, op_BIT0, store_nop ;46 ;BIT 0,(HL)
3170 instr fetch_A, op_BIT0, store_nop ;47 ;BIT 0,A
3171 instr fetch_B, op_BIT1, store_nop ;48 ;BIT 1,B
3172 instr fetch_C, op_BIT1, store_nop ;49 ;BIT 1,C
3173 instr fetch_D, op_BIT1, store_nop ;4A ;BIT 1,D
3174 instr fetch_E, op_BIT1, store_nop ;4B ;BIT 1,E
3175 instr fetch_H, op_BIT1, store_nop ;4C ;BIT 1,H
3176 instr fetch_L, op_BIT1, store_nop ;4D ;BIT 1,L
3177 instr fetch2_mhl, op_BIT1, store_nop ;4E ;BIT 1,(HL)
3178 instr fetch_A, op_BIT1, store_nop ;4F ;BIT 1,A
3179 instr fetch_B, op_BIT2, store_nop ;50 ;BIT 2,B
3180 instr fetch_C, op_BIT2, store_nop ;51 ;BIT 2,C
3181 instr fetch_D, op_BIT2, store_nop ;52 ;BIT 2,D
3182 instr fetch_E, op_BIT2, store_nop ;53 ;BIT 2,E
3183 instr fetch_H, op_BIT2, store_nop ;54 ;BIT 2,H
3184 instr fetch_L, op_BIT2, store_nop ;55 ;BIT 2,L
3185 instr fetch2_mhl, op_BIT2, store_nop ;56 ;BIT 2,(HL)
3186 instr fetch_A, op_BIT2, store_nop ;57 ;BIT 2,A
3187 instr fetch_B, op_BIT3, store_nop ;58 ;BIT 3,B
3188 instr fetch_C, op_BIT3, store_nop ;59 ;BIT 3,C
3189 instr fetch_D, op_BIT3, store_nop ;5A ;BIT 3,D
3190 instr fetch_E, op_BIT3, store_nop ;5B ;BIT 3,E
3191 instr fetch_H, op_BIT3, store_nop ;5C ;BIT 3,H
3192 instr fetch_L, op_BIT3, store_nop ;5D ;BIT 3,L
3193 instr fetch2_mhl, op_BIT3, store_nop ;5E ;BIT 3,(HL)
3194 instr fetch_A, op_BIT3, store_nop ;5F ;BIT 3,A
3195 instr fetch_B, op_BIT4, store_nop ;60 ;BIT 4,B
3196 instr fetch_C, op_BIT4, store_nop ;61 ;BIT 4,C
3197 instr fetch_D, op_BIT4, store_nop ;62 ;BIT 4,D
3198 instr fetch_E, op_BIT4, store_nop ;63 ;BIT 4,E
3199 instr fetch_H, op_BIT4, store_nop ;64 ;BIT 4,H
3200 instr fetch_L, op_BIT4, store_nop ;65 ;BIT 4,L
3201 instr fetch2_mhl, op_BIT4, store_nop ;66 ;BIT 4,(HL)
3202 instr fetch_A, op_BIT4, store_nop ;67 ;BIT 4,A
3203 instr fetch_B, op_BIT5, store_nop ;68 ;BIT 5,B
3204 instr fetch_C, op_BIT5, store_nop ;69 ;BIT 5,C
3205 instr fetch_D, op_BIT5, store_nop ;6A ;BIT 5,D
3206 instr fetch_E, op_BIT5, store_nop ;6B ;BIT 5,E
3207 instr fetch_H, op_BIT5, store_nop ;6C ;BIT 5,H
3208 instr fetch_L, op_BIT5, store_nop ;6D ;BIT 5,L
3209 instr fetch2_mhl, op_BIT5, store_nop ;6E ;BIT 5,(HL)
3210 instr fetch_A, op_BIT5, store_nop ;6F ;BIT 5,A
3211 instr fetch_B, op_BIT6, store_nop ;70 ;BIT 6,B
3212 instr fetch_C, op_BIT6, store_nop ;71 ;BIT 6,C
3213 instr fetch_D, op_BIT6, store_nop ;72 ;BIT 6,D
3214 instr fetch_E, op_BIT6, store_nop ;73 ;BIT 6,E
3215 instr fetch_H, op_BIT6, store_nop ;74 ;BIT 6,H
3216 instr fetch_L, op_BIT6, store_nop ;75 ;BIT 6,L
3217 instr fetch2_mhl, op_BIT6, store_nop ;76 ;BIT 6,(HL)
3218 instr fetch_A, op_BIT6, store_nop ;77 ;BIT 6,A
3219 instr fetch_B, op_BIT7, store_nop ;78 ;BIT 7,B
3220 instr fetch_C, op_BIT7, store_nop ;79 ;BIT 7,C
3221 instr fetch_D, op_BIT7, store_nop ;7A ;BIT 7,D
3222 instr fetch_E, op_BIT7, store_nop ;7B ;BIT 7,E
3223 instr fetch_H, op_BIT7, store_nop ;7C ;BIT 7,H
3224 instr fetch_L, op_BIT7, store_nop ;7D ;BIT 7,L
3225 instr fetch2_mhl, op_BIT7, store_nop ;7E ;BIT 7,(HL)
3226 instr fetch_A, op_BIT7, store_nop ;7F ;BIT 7,A
3227 instr fetch_B, op_RES0, store2_B ;80 ;RES 0,B
3228 instr fetch_C, op_RES0, store2_C ;81 ;RES 0,C
3229 instr fetch_D, op_RES0, store2_D ;82 ;RES 0,D
3230 instr fetch_E, op_RES0, store2_E ;83 ;RES 0,E
3231 instr fetch_H, op_RES0, store2_H ;84 ;RES 0,H
3232 instr fetch_L, op_RES0, store2_L ;85 ;RES 0,L
3233 instr fetch2_mhl, op_RES0, store_MHL ;86 ;RES 0,(HL)
3234 instr fetch_A, op_RES0, store2_A ;87 ;RES 0,A
3235 instr fetch_B, op_RES1, store2_B ;88 ;RES 1,B
3236 instr fetch_C, op_RES1, store2_C ;89 ;RES 1,C
3237 instr fetch_D, op_RES1, store2_D ;8A ;RES 1,D
3238 instr fetch_E, op_RES1, store2_E ;8B ;RES 1,E
3239 instr fetch_H, op_RES1, store2_H ;8C ;RES 1,H
3240 instr fetch_L, op_RES1, store2_L ;8D ;RES 1,L
3241 instr fetch2_mhl, op_RES1, store_MHL ;8E ;RES 1,(HL)
3242 instr fetch_A, op_RES1, store2_A ;8F ;RES 1,A
3243 instr fetch_B, op_RES2, store2_B ;90 ;RES 2,B
3244 instr fetch_C, op_RES2, store2_C ;91 ;RES 2,C
3245 instr fetch_D, op_RES2, store2_D ;92 ;RES 2,D
3246 instr fetch_E, op_RES2, store2_E ;93 ;RES 2,E
3247 instr fetch_H, op_RES2, store2_H ;94 ;RES 2,H
3248 instr fetch_L, op_RES2, store2_L ;95 ;RES 2,L
3249 instr fetch2_mhl, op_RES2, store_MHL ;96 ;RES 2,(HL)
3250 instr fetch_A, op_RES2, store2_A ;97 ;RES 2,A
3251 instr fetch_B, op_RES3, store2_B ;98 ;RES 3,B
3252 instr fetch_C, op_RES3, store2_C ;99 ;RES 3,C
3253 instr fetch_D, op_RES3, store2_D ;9A ;RES 3,D
3254 instr fetch_E, op_RES3, store2_E ;9B ;RES 3,E
3255 instr fetch_H, op_RES3, store2_H ;9C ;RES 3,H
3256 instr fetch_L, op_RES3, store2_L ;9D ;RES 3,L
3257 instr fetch2_mhl, op_RES3, store_MHL ;9E ;RES 3,(HL)
3258 instr fetch_A, op_RES3, store2_A ;9F ;RES 3,A
3259 instr fetch_B, op_RES4, store2_B ;A0 ;RES 4,B
3260 instr fetch_C, op_RES4, store2_C ;A1 ;RES 4,C
3261 instr fetch_D, op_RES4, store2_D ;A2 ;RES 4,D
3262 instr fetch_E, op_RES4, store2_E ;A3 ;RES 4,E
3263 instr fetch_H, op_RES4, store2_H ;A4 ;RES 4,H
3264 instr fetch_L, op_RES4, store2_L ;A5 ;RES 4,L
3265 instr fetch2_mhl, op_RES4, store_MHL ;A6 ;RES 4,(HL)
3266 instr fetch_A, op_RES4, store2_A ;A7 ;RES 4,A
3267 instr fetch_B, op_RES5, store2_B ;A8 ;RES 5,B
3268 instr fetch_C, op_RES5, store2_C ;A9 ;RES 5,C
3269 instr fetch_D, op_RES5, store2_D ;AA ;RES 5,D
3270 instr fetch_E, op_RES5, store2_E ;AB ;RES 5,E
3271 instr fetch_H, op_RES5, store2_H ;AC ;RES 5,H
3272 instr fetch_L, op_RES5, store2_L ;AD ;RES 5,L
3273 instr fetch2_mhl, op_RES5, store_MHL ;AE ;RES 5,(HL)
3274 instr fetch_A, op_RES5, store2_A ;AF ;RES 5,A
3275 instr fetch_B, op_RES6, store2_B ;B0 ;RES 6,B
3276 instr fetch_C, op_RES6, store2_C ;B1 ;RES 6,C
3277 instr fetch_D, op_RES6, store2_D ;B2 ;RES 6,D
3278 instr fetch_E, op_RES6, store2_E ;B3 ;RES 6,E
3279 instr fetch_H, op_RES6, store2_H ;B4 ;RES 6,H
3280 instr fetch_L, op_RES6, store2_L ;B5 ;RES 6,L
3281 instr fetch2_mhl, op_RES6, store_MHL ;B6 ;RES 6,(HL)
3282 instr fetch_A, op_RES6, store2_A ;B7 ;RES 6,A
3283 instr fetch_B, op_RES7, store2_B ;B8 ;RES 7,B
3284 instr fetch_C, op_RES7, store2_C ;B9 ;RES 7,C
3285 instr fetch_D, op_RES7, store2_D ;BA ;RES 7,D
3286 instr fetch_E, op_RES7, store2_E ;BB ;RES 7,E
3287 instr fetch_H, op_RES7, store2_H ;BC ;RES 7,H
3288 instr fetch_L, op_RES7, store2_L ;BD ;RES 7,L
3289 instr fetch2_mhl, op_RES7, store_MHL ;BE ;RES 7,(HL)
3290 instr fetch_A, op_RES7, store2_A ;BF ;RES 7,A
3291 instr fetch_B, op_SET0, store2_B ;C0 ;SET 0,B
3292 instr fetch_C, op_SET0, store2_C ;C1 ;SET 0,C
3293 instr fetch_D, op_SET0, store2_D ;C2 ;SET 0,D
3294 instr fetch_E, op_SET0, store2_E ;C3 ;SET 0,E
3295 instr fetch_H, op_SET0, store2_H ;C4 ;SET 0,H
3296 instr fetch_L, op_SET0, store2_L ;C5 ;SET 0,L
3297 instr fetch2_mhl, op_SET0, store_MHL ;C6 ;SET 0,(HL)
3298 instr fetch_A, op_SET0, store2_A ;C7 ;SET 0,A
3299 instr fetch_B, op_SET1, store2_B ;C8 ;SET 1,B
3300 instr fetch_C, op_SET1, store2_C ;C9 ;SET 1,C
3301 instr fetch_D, op_SET1, store2_D ;CA ;SET 1,D
3302 instr fetch_E, op_SET1, store2_E ;CB ;SET 1,E
3303 instr fetch_H, op_SET1, store2_H ;CC ;SET 1,H
3304 instr fetch_L, op_SET1, store2_L ;CD ;SET 1,L
3305 instr fetch2_mhl, op_SET1, store_MHL ;CE ;SET 1,(HL)
3306 instr fetch_A, op_SET1, store2_A ;CF ;SET 1,A
3307 instr fetch_B, op_SET2, store2_B ;D0 ;SET 2,B
3308 instr fetch_C, op_SET2, store2_C ;D1 ;SET 2,C
3309 instr fetch_D, op_SET2, store2_D ;D2 ;SET 2,D
3310 instr fetch_E, op_SET2, store2_E ;D3 ;SET 2,E
3311 instr fetch_H, op_SET2, store2_H ;D4 ;SET 2,H
3312 instr fetch_L, op_SET2, store2_L ;D5 ;SET 2,L
3313 instr fetch2_mhl, op_SET2, store_MHL ;D6 ;SET 2,(HL)
3314 instr fetch_A, op_SET2, store2_A ;D7 ;SET 2,A
3315 instr fetch_B, op_SET3, store2_B ;D8 ;SET 3,B
3316 instr fetch_C, op_SET3, store2_C ;D9 ;SET 3,C
3317 instr fetch_D, op_SET3, store2_D ;DA ;SET 3,D
3318 instr fetch_E, op_SET3, store2_E ;DB ;SET 3,E
3319 instr fetch_H, op_SET3, store2_H ;DC ;SET 3,H
3320 instr fetch_L, op_SET3, store2_L ;DD ;SET 3,L
3321 instr fetch2_mhl, op_SET3, store_MHL ;DE ;SET 3,(HL)
3322 instr fetch_A, op_SET3, store2_A ;DF ;SET 3,A
3323 instr fetch_B, op_SET4, store2_B ;E0 ;SET 4,B
3324 instr fetch_C, op_SET4, store2_C ;E1 ;SET 4,C
3325 instr fetch_D, op_SET4, store2_D ;E2 ;SET 4,D
3326 instr fetch_E, op_SET4, store2_E ;E3 ;SET 4,E
3327 instr fetch_H, op_SET4, store2_H ;E4 ;SET 4,H
3328 instr fetch_L, op_SET4, store2_L ;E5 ;SET 4,L
3329 instr fetch2_mhl, op_SET4, store_MHL ;E6 ;SET 4,(HL)
3330 instr fetch_A, op_SET4, store2_A ;E7 ;SET 4,A
3331 instr fetch_B, op_SET5, store2_B ;E8 ;SET 5,B
3332 instr fetch_C, op_SET5, store2_C ;E9 ;SET 5,C
3333 instr fetch_D, op_SET5, store2_D ;EA ;SET 5,D
3334 instr fetch_E, op_SET5, store2_E ;EB ;SET 5,E
3335 instr fetch_H, op_SET5, store2_H ;EC ;SET 5,H
3336 instr fetch_L, op_SET5, store2_L ;ED ;SET 5,L
3337 instr fetch2_mhl, op_SET5, store_MHL ;EE ;SET 5,(HL)
3338 instr fetch_A, op_SET5, store2_A ;EF ;SET 5,A
3339 instr fetch_B, op_SET6, store2_B ;F0 ;SET 6,B
3340 instr fetch_C, op_SET6, store2_C ;F1 ;SET 6,C
3341 instr fetch_D, op_SET6, store2_D ;F2 ;SET 6,D
3342 instr fetch_E, op_SET6, store2_E ;F3 ;SET 6,E
3343 instr fetch_H, op_SET6, store2_H ;F4 ;SET 6,H
3344 instr fetch_L, op_SET6, store2_L ;F5 ;SET 6,L
3345 instr fetch2_mhl, op_SET6, store_MHL ;F6 ;SET 6,(HL)
3346 instr fetch_A, op_SET6, store2_A ;F7 ;SET 6,A
3347 instr fetch_B, op_SET7, store2_B ;F8 ;SET 7,B
3348 instr fetch_C, op_SET7, store2_C ;F9 ;SET 7,C
3349 instr fetch_D, op_SET7, store2_D ;FA ;SET 7,D
3350 instr fetch_E, op_SET7, store2_E ;FB ;SET 7,E
3351 instr fetch_H, op_SET7, store2_H ;FC ;SET 7,H
3352 instr fetch_L, op_SET7, store2_L ;FD ;SET 7,L
3353 instr fetch2_mhl, op_SET7, store_MHL ;FE ;SET 7,(HL)
3354 instr fetch_A, op_SET7, store2_A ;FF ;SET 7,A
3357 opctable DDFDCBjmp, PC ;+256
3359 instr fetch_nop, op_RLC, store2_B ;00 ;RLC (Ix+d),B
3360 instr fetch_nop, op_RLC, store2_C ;01 ;RLC (Ix+d),C
3361 instr fetch_nop, op_RLC, store2_D ;02 ;RLC (Ix+d),D
3362 instr fetch_nop, op_RLC, store2_E ;03 ;RLC (Ix+d),E
3363 instr fetch_nop, op_RLC, store2_H ;04 ;RLC (Ix+d),H
3364 instr fetch_nop, op_RLC, store2_L ;05 ;RLC (Ix+d),L
3365 instr fetch_nop, op_RLC, store_nop ;06 ;RLC (Ix+d)
3366 instr fetch_nop, op_RLC, store2_A ;07 ;RLC (Ix+d),A
3367 instr fetch_nop, op_RRC, store2_B ;08 ;RRC (Ix+d),B
3368 instr fetch_nop, op_RRC, store2_C ;09 ;RRC (Ix+d),C
3369 instr fetch_nop, op_RRC, store2_D ;0A ;RRC (Ix+d),D
3370 instr fetch_nop, op_RRC, store2_E ;0B ;RRC (Ix+d),E
3371 instr fetch_nop, op_RRC, store2_H ;0C ;RRC (Ix+d),H
3372 instr fetch_nop, op_RRC, store2_L ;0D ;RRC (Ix+d),L
3373 instr fetch_nop, op_RRC, store_nop ;0E ;RRC (Ix+d)
3374 instr fetch_nop, op_RRC, store2_A ;0F ;RRC (Ix+d),A
3375 instr fetch_nop, op_RL, store2_B ;10 ;RL (Ix+d),B
3376 instr fetch_nop, op_RL, store2_C ;11 ;RL (Ix+d),C
3377 instr fetch_nop, op_RL, store2_D ;12 ;RL (Ix+d),D
3378 instr fetch_nop, op_RL, store2_E ;13 ;RL (Ix+d),E
3379 instr fetch_nop, op_RL, store2_H ;14 ;RL (Ix+d),H
3380 instr fetch_nop, op_RL, store2_L ;15 ;RL (Ix+d),L
3381 instr fetch_nop, op_RL, store_nop ;16 ;RL (Ix+d)
3382 instr fetch_nop, op_RL, store2_A ;17 ;RL (Ix+d),A
3383 instr fetch_nop, op_RR, store2_B ;18 ;RR (Ix+d),B
3384 instr fetch_nop, op_RR, store2_C ;19 ;RR (Ix+d),C
3385 instr fetch_nop, op_RR, store2_D ;1A ;RR (Ix+d),D
3386 instr fetch_nop, op_RR, store2_E ;1B ;RR (Ix+d),E
3387 instr fetch_nop, op_RR, store2_H ;1C ;RR (Ix+d),H
3388 instr fetch_nop, op_RR, store2_L ;1D ;RR (Ix+d),L
3389 instr fetch_nop, op_RR, store_nop ;1E ;RR (Ix+d)
3390 instr fetch_nop, op_RR, store2_A ;1F ;RR (Ix+d),A
3391 instr fetch_nop, op_SLA, store2_B ;20 ;SLA (Ix+d),B
3392 instr fetch_nop, op_SLA, store2_C ;21 ;SLA (Ix+d),C
3393 instr fetch_nop, op_SLA, store2_D ;22 ;SLA (Ix+d),D
3394 instr fetch_nop, op_SLA, store2_E ;23 ;SLA (Ix+d),E
3395 instr fetch_nop, op_SLA, store2_H ;24 ;SLA (Ix+d),H
3396 instr fetch_nop, op_SLA, store2_L ;25 ;SLA (Ix+d),L
3397 instr fetch_nop, op_SLA, store_nop ;26 ;SLA (Ix+d)
3398 instr fetch_nop, op_SLA, store2_A ;27 ;SLA (Ix+d),A
3399 instr fetch_nop, op_SRA, store2_B ;28 ;SRA (Ix+d),B
3400 instr fetch_nop, op_SRA, store2_C ;29 ;SRA (Ix+d),C
3401 instr fetch_nop, op_SRA, store2_D ;2A ;SRA (Ix+d),D
3402 instr fetch_nop, op_SRA, store2_E ;2B ;SRA (Ix+d),E
3403 instr fetch_nop, op_SRA, store2_H ;2C ;SRA (Ix+d),H
3404 instr fetch_nop, op_SRA, store2_L ;2D ;SRA (Ix+d),L
3405 instr fetch_nop, op_SRA, store_nop ;2E ;SRA (Ix+d)
3406 instr fetch_nop, op_SRA, store2_A ;2F ;SRA (Ix+d),A
3407 instr fetch_nop, op_SLL, store2_B ;30 ;SLL (Ix+d),B
3408 instr fetch_nop, op_SLL, store2_C ;31 ;SLL (Ix+d),C
3409 instr fetch_nop, op_SLL, store2_D ;32 ;SLL (Ix+d),D
3410 instr fetch_nop, op_SLL, store2_E ;33 ;SLL (Ix+d),E
3411 instr fetch_nop, op_SLL, store2_H ;34 ;SLL (Ix+d),H
3412 instr fetch_nop, op_SLL, store2_L ;35 ;SLL (Ix+d),L
3413 instr fetch_nop, op_SLL, store_nop ;36 ;SLL (Ix+d)
3414 instr fetch_nop, op_SLL, store2_A ;37 ;SLL (Ix+d),A
3415 instr fetch_nop, op_SRL, store2_B ;38 ;SRL (Ix+d),B
3416 instr fetch_nop, op_SRL, store2_C ;39 ;SRL (Ix+d),C
3417 instr fetch_nop, op_SRL, store2_D ;3A ;SRL (Ix+d),D
3418 instr fetch_nop, op_SRL, store2_E ;3B ;SRL (Ix+d),E
3419 instr fetch_nop, op_SRL, store2_H ;3C ;SRL (Ix+d),H
3420 instr fetch_nop, op_SRL, store2_L ;3D ;SRL (Ix+d),L
3421 instr fetch_nop, op_SRL, store_nop ;3E ;SRL (Ix+d)
3422 instr fetch_nop, op_SRL, store2_A ;3F ;SRL (Ix+d),A
3423 instr fetch_nop, op_BIT0, store_nop ;40 ;BIT 0,(Ix+d),B
3424 instr fetch_nop, op_BIT0, store_nop ;41 ;BIT 0,(Ix+d),C
3425 instr fetch_nop, op_BIT0, store_nop ;42 ;BIT 0,(Ix+d),D
3426 instr fetch_nop, op_BIT0, store_nop ;43 ;BIT 0,(Ix+d),E
3427 instr fetch_nop, op_BIT0, store_nop ;44 ;BIT 0,(Ix+d),H
3428 instr fetch_nop, op_BIT0, store_nop ;45 ;BIT 0,(Ix+d),L
3429 instr fetch_nop, op_BIT0, store_nop ;46 ;BIT 0,(Ix+d)
3430 instr fetch_nop, op_BIT0, store_nop ;47 ;BIT 0,(Ix+d),A
3431 instr fetch_nop, op_BIT1, store_nop ;48 ;BIT 1,(Ix+d),B
3432 instr fetch_nop, op_BIT1, store_nop ;49 ;BIT 1,(Ix+d),C
3433 instr fetch_nop, op_BIT1, store_nop ;4A ;BIT 1,(Ix+d),D
3434 instr fetch_nop, op_BIT1, store_nop ;4B ;BIT 1,(Ix+d),E
3435 instr fetch_nop, op_BIT1, store_nop ;4C ;BIT 1,(Ix+d),H
3436 instr fetch_nop, op_BIT1, store_nop ;4D ;BIT 1,(Ix+d),L
3437 instr fetch_nop, op_BIT1, store_nop ;4E ;BIT 1,(Ix+d)
3438 instr fetch_nop, op_BIT1, store_nop ;4F ;BIT 1,(Ix+d),A
3439 instr fetch_nop, op_BIT2, store_nop ;50 ;BIT 2,(Ix+d),B
3440 instr fetch_nop, op_BIT2, store_nop ;51 ;BIT 2,(Ix+d),C
3441 instr fetch_nop, op_BIT2, store_nop ;52 ;BIT 2,(Ix+d),D
3442 instr fetch_nop, op_BIT2, store_nop ;53 ;BIT 2,(Ix+d),E
3443 instr fetch_nop, op_BIT2, store_nop ;54 ;BIT 2,(Ix+d),H
3444 instr fetch_nop, op_BIT2, store_nop ;55 ;BIT 2,(Ix+d),L
3445 instr fetch_nop, op_BIT2, store_nop ;56 ;BIT 2,(Ix+d)
3446 instr fetch_nop, op_BIT2, store_nop ;57 ;BIT 2,(Ix+d),A
3447 instr fetch_nop, op_BIT3, store_nop ;58 ;BIT 3,(Ix+d),B
3448 instr fetch_nop, op_BIT3, store_nop ;59 ;BIT 3,(Ix+d),C
3449 instr fetch_nop, op_BIT3, store_nop ;5A ;BIT 3,(Ix+d),D
3450 instr fetch_nop, op_BIT3, store_nop ;5B ;BIT 3,(Ix+d),E
3451 instr fetch_nop, op_BIT3, store_nop ;5C ;BIT 3,(Ix+d),H
3452 instr fetch_nop, op_BIT3, store_nop ;5D ;BIT 3,(Ix+d),L
3453 instr fetch_nop, op_BIT3, store_nop ;5E ;BIT 3,(Ix+d)
3454 instr fetch_nop, op_BIT3, store_nop ;5F ;BIT 3,(Ix+d),A
3455 instr fetch_nop, op_BIT4, store_nop ;60 ;BIT 4,(Ix+d),B
3456 instr fetch_nop, op_BIT4, store_nop ;61 ;BIT 4,(Ix+d),C
3457 instr fetch_nop, op_BIT4, store_nop ;62 ;BIT 4,(Ix+d),D
3458 instr fetch_nop, op_BIT4, store_nop ;63 ;BIT 4,(Ix+d),E
3459 instr fetch_nop, op_BIT4, store_nop ;64 ;BIT 4,(Ix+d),H
3460 instr fetch_nop, op_BIT4, store_nop ;65 ;BIT 4,(Ix+d),L
3461 instr fetch_nop, op_BIT4, store_nop ;66 ;BIT 4,(Ix+d)
3462 instr fetch_nop, op_BIT4, store_nop ;67 ;BIT 4,(Ix+d),A
3463 instr fetch_nop, op_BIT5, store_nop ;68 ;BIT 5,(Ix+d),B
3464 instr fetch_nop, op_BIT5, store_nop ;69 ;BIT 5,(Ix+d),C
3465 instr fetch_nop, op_BIT5, store_nop ;6A ;BIT 5,(Ix+d),D
3466 instr fetch_nop, op_BIT5, store_nop ;6B ;BIT 5,(Ix+d),E
3467 instr fetch_nop, op_BIT5, store_nop ;6C ;BIT 5,(Ix+d),H
3468 instr fetch_nop, op_BIT5, store_nop ;6D ;BIT 5,(Ix+d),L
3469 instr fetch_nop, op_BIT5, store_nop ;6E ;BIT 5,(Ix+d)
3470 instr fetch_nop, op_BIT5, store_nop ;6F ;BIT 5,(Ix+d),A
3471 instr fetch_nop, op_BIT6, store_nop ;70 ;BIT 6,(Ix+d),B
3472 instr fetch_nop, op_BIT6, store_nop ;71 ;BIT 6,(Ix+d),C
3473 instr fetch_nop, op_BIT6, store_nop ;72 ;BIT 6,(Ix+d),D
3474 instr fetch_nop, op_BIT6, store_nop ;73 ;BIT 6,(Ix+d),E
3475 instr fetch_nop, op_BIT6, store_nop ;74 ;BIT 6,(Ix+d),H
3476 instr fetch_nop, op_BIT6, store_nop ;75 ;BIT 6,(Ix+d),L
3477 instr fetch_nop, op_BIT6, store_nop ;76 ;BIT 6,(Ix+d)
3478 instr fetch_nop, op_BIT6, store_nop ;77 ;BIT 6,(Ix+d),A
3479 instr fetch_nop, op_BIT7, store_nop ;78 ;BIT 7,(Ix+d),B
3480 instr fetch_nop, op_BIT7, store_nop ;79 ;BIT 7,(Ix+d),C
3481 instr fetch_nop, op_BIT7, store_nop ;7A ;BIT 7,(Ix+d),D
3482 instr fetch_nop, op_BIT7, store_nop ;7B ;BIT 7,(Ix+d),E
3483 instr fetch_nop, op_BIT7, store_nop ;7C ;BIT 7,(Ix+d),H
3484 instr fetch_nop, op_BIT7, store_nop ;7D ;BIT 7,(Ix+d),L
3485 instr fetch_nop, op_BIT7, store_nop ;7E ;BIT 7,(Ix+d)
3486 instr fetch_nop, op_BIT7, store_nop ;7F ;BIT 7,(Ix+d),A
3487 instr fetch_nop, op_RES0, store2_B ;80 ;RES 0,(Ix+d),B
3488 instr fetch_nop, op_RES0, store2_C ;81 ;RES 0,(Ix+d),C
3489 instr fetch_nop, op_RES0, store2_D ;82 ;RES 0,(Ix+d),D
3490 instr fetch_nop, op_RES0, store2_E ;83 ;RES 0,(Ix+d),E
3491 instr fetch_nop, op_RES0, store2_H ;84 ;RES 0,(Ix+d),H
3492 instr fetch_nop, op_RES0, store2_L ;85 ;RES 0,(Ix+d),L
3493 instr fetch_nop, op_RES0, store_nop ;86 ;RES 0,(Ix+d)
3494 instr fetch_nop, op_RES0, store2_A ;87 ;RES 0,(Ix+d),A
3495 instr fetch_nop, op_RES1, store2_B ;88 ;RES 1,(Ix+d),B
3496 instr fetch_nop, op_RES1, store2_C ;89 ;RES 1,(Ix+d),C
3497 instr fetch_nop, op_RES1, store2_D ;8A ;RES 1,(Ix+d),D
3498 instr fetch_nop, op_RES1, store2_E ;8B ;RES 1,(Ix+d),E
3499 instr fetch_nop, op_RES1, store2_H ;8C ;RES 1,(Ix+d),H
3500 instr fetch_nop, op_RES1, store2_L ;8D ;RES 1,(Ix+d),L
3501 instr fetch_nop, op_RES1, store_nop ;8E ;RES 1,(Ix+d)
3502 instr fetch_nop, op_RES1, store2_A ;8F ;RES 1,(Ix+d),A
3503 instr fetch_nop, op_RES2, store2_B ;90 ;RES 2,(Ix+d),B
3504 instr fetch_nop, op_RES2, store2_C ;91 ;RES 2,(Ix+d),C
3505 instr fetch_nop, op_RES2, store2_D ;92 ;RES 2,(Ix+d),D
3506 instr fetch_nop, op_RES2, store2_E ;93 ;RES 2,(Ix+d),E
3507 instr fetch_nop, op_RES2, store2_H ;94 ;RES 2,(Ix+d),H
3508 instr fetch_nop, op_RES2, store2_L ;95 ;RES 2,(Ix+d),L
3509 instr fetch_nop, op_RES2, store_nop ;96 ;RES 2,(Ix+d)
3510 instr fetch_nop, op_RES2, store2_A ;97 ;RES 2,(Ix+d),A
3511 instr fetch_nop, op_RES3, store2_B ;98 ;RES 3,(Ix+d),B
3512 instr fetch_nop, op_RES3, store2_C ;99 ;RES 3,(Ix+d),C
3513 instr fetch_nop, op_RES3, store2_D ;9A ;RES 3,(Ix+d),D
3514 instr fetch_nop, op_RES3, store2_E ;9B ;RES 3,(Ix+d),E
3515 instr fetch_nop, op_RES3, store2_H ;9C ;RES 3,(Ix+d),H
3516 instr fetch_nop, op_RES3, store2_L ;9D ;RES 3,(Ix+d),L
3517 instr fetch_nop, op_RES3, store_nop ;9E ;RES 3,(Ix+d)
3518 instr fetch_nop, op_RES3, store2_A ;9F ;RES 3,(Ix+d),A
3519 instr fetch_nop, op_RES4, store2_B ;A0 ;RES 4,(Ix+d),B
3520 instr fetch_nop, op_RES4, store2_C ;A1 ;RES 4,(Ix+d),C
3521 instr fetch_nop, op_RES4, store2_D ;A2 ;RES 4,(Ix+d),D
3522 instr fetch_nop, op_RES4, store2_E ;A3 ;RES 4,(Ix+d),E
3523 instr fetch_nop, op_RES4, store2_H ;A4 ;RES 4,(Ix+d),H
3524 instr fetch_nop, op_RES4, store2_L ;A5 ;RES 4,(Ix+d),L
3525 instr fetch_nop, op_RES4, store_nop ;A6 ;RES 4,(Ix+d)
3526 instr fetch_nop, op_RES4, store2_A ;A7 ;RES 4,(Ix+d),A
3527 instr fetch_nop, op_RES5, store2_B ;A8 ;RES 5,(Ix+d),B
3528 instr fetch_nop, op_RES5, store2_C ;A9 ;RES 5,(Ix+d),C
3529 instr fetch_nop, op_RES5, store2_D ;AA ;RES 5,(Ix+d),D
3530 instr fetch_nop, op_RES5, store2_E ;AB ;RES 5,(Ix+d),E
3531 instr fetch_nop, op_RES5, store2_H ;AC ;RES 5,(Ix+d),H
3532 instr fetch_nop, op_RES5, store2_L ;AD ;RES 5,(Ix+d),L
3533 instr fetch_nop, op_RES5, store_nop ;AE ;RES 5,(Ix+d)
3534 instr fetch_nop, op_RES5, store2_A ;AF ;RES 5,(Ix+d),A
3535 instr fetch_nop, op_RES6, store2_B ;B0 ;RES 6,(Ix+d),B
3536 instr fetch_nop, op_RES6, store2_C ;B1 ;RES 6,(Ix+d),C
3537 instr fetch_nop, op_RES6, store2_D ;B2 ;RES 6,(Ix+d),D
3538 instr fetch_nop, op_RES6, store2_E ;B3 ;RES 6,(Ix+d),E
3539 instr fetch_nop, op_RES6, store2_H ;B4 ;RES 6,(Ix+d),H
3540 instr fetch_nop, op_RES6, store2_L ;B5 ;RES 6,(Ix+d),L
3541 instr fetch_nop, op_RES6, store_nop ;B6 ;RES 6,(Ix+d)
3542 instr fetch_nop, op_RES6, store2_A ;B7 ;RES 6,(Ix+d),A
3543 instr fetch_nop, op_RES7, store2_B ;B8 ;RES 7,(Ix+d),B
3544 instr fetch_nop, op_RES7, store2_C ;B9 ;RES 7,(Ix+d),C
3545 instr fetch_nop, op_RES7, store2_D ;BA ;RES 7,(Ix+d),D
3546 instr fetch_nop, op_RES7, store2_E ;BB ;RES 7,(Ix+d),E
3547 instr fetch_nop, op_RES7, store2_H ;BC ;RES 7,(Ix+d),H
3548 instr fetch_nop, op_RES7, store2_L ;BD ;RES 7,(Ix+d),L
3549 instr fetch_nop, op_RES7, store_nop ;BE ;RES 7,(Ix+d)
3550 instr fetch_nop, op_RES7, store2_A ;BF ;RES 7,(Ix+d),A
3551 instr fetch_nop, op_SET0, store2_B ;C0 ;SET 0,(Ix+d),B
3552 instr fetch_nop, op_SET0, store2_C ;C1 ;SET 0,(Ix+d),C
3553 instr fetch_nop, op_SET0, store2_D ;C2 ;SET 0,(Ix+d),D
3554 instr fetch_nop, op_SET0, store2_E ;C3 ;SET 0,(Ix+d),E
3555 instr fetch_nop, op_SET0, store2_H ;C4 ;SET 0,(Ix+d),H
3556 instr fetch_nop, op_SET0, store2_L ;C5 ;SET 0,(Ix+d),L
3557 instr fetch_nop, op_SET0, store_nop ;C6 ;SET 0,(Ix+d)
3558 instr fetch_nop, op_SET0, store2_A ;C7 ;SET 0,(Ix+d),A
3559 instr fetch_nop, op_SET1, store2_B ;C8 ;SET 1,(Ix+d),B
3560 instr fetch_nop, op_SET1, store2_C ;C9 ;SET 1,(Ix+d),C
3561 instr fetch_nop, op_SET1, store2_D ;CA ;SET 1,(Ix+d),D
3562 instr fetch_nop, op_SET1, store2_E ;CB ;SET 1,(Ix+d),E
3563 instr fetch_nop, op_SET1, store2_H ;CC ;SET 1,(Ix+d),H
3564 instr fetch_nop, op_SET1, store2_L ;CD ;SET 1,(Ix+d),L
3565 instr fetch_nop, op_SET1, store_nop ;CE ;SET 1,(Ix+d)
3566 instr fetch_nop, op_SET1, store2_A ;CF ;SET 1,(Ix+d),A
3567 instr fetch_nop, op_SET2, store2_B ;D0 ;SET 2,(Ix+d),B
3568 instr fetch_nop, op_SET2, store2_C ;D1 ;SET 2,(Ix+d),C
3569 instr fetch_nop, op_SET2, store2_D ;D2 ;SET 2,(Ix+d),D
3570 instr fetch_nop, op_SET2, store2_E ;D3 ;SET 2,(Ix+d),E
3571 instr fetch_nop, op_SET2, store2_H ;D4 ;SET 2,(Ix+d),H
3572 instr fetch_nop, op_SET2, store2_L ;D5 ;SET 2,(Ix+d),L
3573 instr fetch_nop, op_SET2, store_nop ;D6 ;SET 2,(Ix+d)
3574 instr fetch_nop, op_SET2, store2_A ;D7 ;SET 2,(Ix+d),A
3575 instr fetch_nop, op_SET3, store2_B ;D8 ;SET 3,(Ix+d),B
3576 instr fetch_nop, op_SET3, store2_C ;D9 ;SET 3,(Ix+d),C
3577 instr fetch_nop, op_SET3, store2_D ;DA ;SET 3,(Ix+d),D
3578 instr fetch_nop, op_SET3, store2_E ;DB ;SET 3,(Ix+d),E
3579 instr fetch_nop, op_SET3, store2_H ;DC ;SET 3,(Ix+d),H
3580 instr fetch_nop, op_SET3, store2_L ;DD ;SET 3,(Ix+d),L
3581 instr fetch_nop, op_SET3, store_nop ;DE ;SET 3,(Ix+d)
3582 instr fetch_nop, op_SET3, store2_A ;DF ;SET 3,(Ix+d),A
3583 instr fetch_nop, op_SET4, store2_B ;E0 ;SET 4,(Ix+d),B
3584 instr fetch_nop, op_SET4, store2_C ;E1 ;SET 4,(Ix+d),C
3585 instr fetch_nop, op_SET4, store2_D ;E2 ;SET 4,(Ix+d),D
3586 instr fetch_nop, op_SET4, store2_E ;E3 ;SET 4,(Ix+d),E
3587 instr fetch_nop, op_SET4, store2_H ;E4 ;SET 4,(Ix+d),H
3588 instr fetch_nop, op_SET4, store2_L ;E5 ;SET 4,(Ix+d),L
3589 instr fetch_nop, op_SET4, store_nop ;E6 ;SET 4,(Ix+d)
3590 instr fetch_nop, op_SET4, store2_A ;E7 ;SET 4,(Ix+d),A
3591 instr fetch_nop, op_SET5, store2_B ;E8 ;SET 5,(Ix+d),B
3592 instr fetch_nop, op_SET5, store2_C ;E9 ;SET 5,(Ix+d),C
3593 instr fetch_nop, op_SET5, store2_D ;EA ;SET 5,(Ix+d),D
3594 instr fetch_nop, op_SET5, store2_E ;EB ;SET 5,(Ix+d),E
3595 instr fetch_nop, op_SET5, store2_H ;EC ;SET 5,(Ix+d),H
3596 instr fetch_nop, op_SET5, store2_L ;ED ;SET 5,(Ix+d),L
3597 instr fetch_nop, op_SET5, store_nop ;EE ;SET 5,(Ix+d)
3598 instr fetch_nop, op_SET5, store2_A ;EF ;SET 5,(Ix+d),A
3599 instr fetch_nop, op_SET6, store2_B ;F0 ;SET 6,(Ix+d),B
3600 instr fetch_nop, op_SET6, store2_C ;F1 ;SET 6,(Ix+d),C
3601 instr fetch_nop, op_SET6, store2_D ;F2 ;SET 6,(Ix+d),D
3602 instr fetch_nop, op_SET6, store2_E ;F3 ;SET 6,(Ix+d),E
3603 instr fetch_nop, op_SET6, store2_H ;F4 ;SET 6,(Ix+d),H
3604 instr fetch_nop, op_SET6, store2_L ;F5 ;SET 6,(Ix+d),L
3605 instr fetch_nop, op_SET6, store_nop ;F6 ;SET 6,(Ix+d)
3606 instr fetch_nop, op_SET6, store2_A ;F7 ;SET 6,(Ix+d),A
3607 instr fetch_nop, op_SET7, store2_B ;F8 ;SET 7,(Ix+d),B
3608 instr fetch_nop, op_SET7, store2_C ;F9 ;SET 7,(Ix+d),C
3609 instr fetch_nop, op_SET7, store2_D ;FA ;SET 7,(Ix+d),D
3610 instr fetch_nop, op_SET7, store2_E ;FB ;SET 7,(Ix+d),E
3611 instr fetch_nop, op_SET7, store2_H ;FC ;SET 7,(Ix+d),H
3612 instr fetch_nop, op_SET7, store2_L ;FD ;SET 7,(Ix+d),L
3613 instr fetch_nop, op_SET7, store_nop ;FE ;SET 7,(Ix+d)
3614 instr fetch_nop, op_SET7, store2_A ;FF ;SET 7,(Ix+d),A
3620 ;----------------------------------------------------------------
3621 ;|Mnemonic |SZHPNC|Description |Notes |
3622 ;----------------------------------------------------------------
3623 ;|IN r,[C] |***P0-|Input |r=[C] |
3626 do_op_in: ; in opl,(opl)
3629 cp opl,_0 ; don't debug port 0 (con stat)
3632 printstring "Port read: ("
3642 bst z_flags,ZFL_C ;save Carry
3643 ldpmx z_flags,sz53p_tab,temp ;S,Z,P
3656 ;----------------------------------------------------------------
3657 ;|Mnemonic |SZHPNC|Description |Notes |
3658 ;----------------------------------------------------------------
3659 ;|OUT [C],r |------|Output |[C]=r |
3662 do_op_out: ; out (c),opl
3665 printstring "Port write: "
3678 ;----------------------------------------------------------------
3679 ;|Mnemonic |SZHPNC|Description |Notes |
3680 ;----------------------------------------------------------------
3681 ;|LD dst,src|------|Load |dst=src |
3684 do_op_stbc: ;store bc to mem loc in opl:h
3693 ;----------------------------------------------------------------
3694 ;|Mnemonic |SZHPNC|Description |Notes |
3695 ;----------------------------------------------------------------
3696 ;|LD dst,src|------|Load |dst=src |
3699 do_op_stde: ;store de to mem loc in opl:h
3708 ;----------------------------------------------------------------
3709 ;|Mnemonic |SZHPNC|Description |Notes |
3710 ;----------------------------------------------------------------
3711 ;|LD dst,src|------|Load |dst=src |
3714 do_op_stsp: ;store sp to mem loc in opl:h
3721 ;----------------------------------------------------------------
3722 ;|Mnemonic |SZHPNC|Description |Notes |
3723 ;----------------------------------------------------------------
3724 ;|ADC HL,ss |***V0*|Add with Carry |HL=HL+ss+CY |
3734 in temp,sreg ; save lower Z
3739 and temp,temp2 ; 16bit Z
3740 ldi z_flags,0 ; clear N
3741 bmov z_flags,ZFL_C, temp2,AVR_C
3742 bmov z_flags,ZFL_P, temp2,AVR_V
3743 bmov z_flags,ZFL_H, temp2,AVR_H
3744 bmov z_flags,ZFL_Z, temp,AVR_Z
3745 bmov z_flags,ZFL_S, temp2,AVR_N
3748 ;----------------------------------------------------------------
3749 ;|Mnemonic |SZHPNC|Description |Notes |
3750 ;----------------------------------------------------------------
3751 ;|SBC HL,ss |***V1*|Subtract with carry |HL=HL-ss-CY |
3768 ldi z_flags,(1<<ZFL_N) ; set N
3769 bmov z_flags,ZFL_C, temp,AVR_C
3770 bmov z_flags,ZFL_P, temp,AVR_V
3771 bmov z_flags,ZFL_H, temp,AVR_H
3772 bmov z_flags,ZFL_Z, temp,AVR_Z
3773 bmov z_flags,ZFL_S, temp,AVR_N
3776 ;----------------------------------------------------------------
3777 ;|Mnemonic |SZHPNC|Description |Notes |
3778 ;----------------------------------------------------------------
3779 ;|NEG |***V1*|Negate A |A=0-A |
3787 ldpmx z_flags,sz53p_tab,z_a ;S,Z,P
3788 bmov z_flags,ZFL_C, temp,AVR_C
3789 bmov z_flags,ZFL_H, temp,AVR_H
3794 ;----------------------------------------------------------------
3795 ;|Mnemonic |SZHPNC|Description |Notes |
3796 ;----------------------------------------------------------------
3797 ;|RETI |------|Return from Interrupt|PC=[SP]+ |
3798 ;|RETN |------|Return from NMI | Copy IFF2 to IFF1 |
3804 bmov temp,IFF1, temp,IFF2
3809 ;----------------------------------------------------------------
3810 ;|Mnemonic |SZHPNC|Description |Notes |
3811 ;----------------------------------------------------------------
3812 ;|IM n |------|Interrupt Mode | (n=0,1,2)|
3834 ;----------------------------------------------------------------
3835 ;|Mnemonic |SZHPNC|Description |Notes |
3836 ;----------------------------------------------------------------
3837 ;|LD A,i |**0*0-|Load |(i=I,R) IFF2 --> P |
3838 ;|LD i,A |------|Load |(i=I,R) |
3847 bst z_flags,ZFL_C ;save C
3848 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
3851 bmov z_flags,ZFL_P, temp,IFF2
3862 ;----------------------------------------------------------------
3863 ;|Mnemonic |SZHPNC|Description |Notes |
3864 ;----------------------------------------------------------------
3865 ;|RLD |**0P0-|Rotate Left 4 bits |{A,[HL]}={A,[HL]}<- ##|
3866 ;|RRD |**0P0-|Rotate Right 4 bits |{A,[HL]}=->{A,[HL]} ##|
3880 bst z_flags,ZFL_C ;save C
3881 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
3897 bst z_flags,ZFL_C ;save C
3898 ldpmx z_flags,sz53p_tab,z_a ;S,Z,H,P,N
3903 ;----------------------------------------------------------------
3904 ;|Mnemonic |SZHPNC|Description |Notes |
3905 ;----------------------------------------------------------------
3906 ;|LDD |--0*0-|Load and Decrement |[DE]=[HL],HL=HL-1,# |
3907 ;|LDDR |--000-|Load, Dec., Repeat |LDD till BC=0 |
3908 ;|LDI |--0*0-|Load and Increment |[DE]=[HL],HL=HL+1,# |
3909 ;|LDIR |--000-|Load, Inc., Repeat |LDI till BC=0 |
3917 ; mem_read_ds temp, z
3918 lcall dram_read ; temp = (HL)
3923 ; mem_write_ds x, temp
3924 lcall dram_write ; (DE) = temp
3929 cbr z_flags,(1<<ZFL_H) | (1<<ZFL_P) | (1<<ZFL_N)
3933 sbr z_flags,(1<<ZFL_P)
3941 rcall op_LDxx_common
3953 rcall op_LDxx_common
3986 ;----------------------------------------------------------------
3987 ;|Mnemonic |SZHPNC|Description |Notes |
3988 ;----------------------------------------------------------------
3989 ;|CPD |****1-|Compare and Decrement|A-[HL],HL=HL-1,BC=BC-1|
3990 ;|CPDR |****1-|Compare, Dec., Repeat|CPD till A=[HL]or BC=0|
3991 ;|CPI |****1-|Compare and Increment|A-[HL],HL=HL+1,BC=BC-1|
3992 ;|CPIR |****1-|Compare, Inc., Repeat|CPI till A=[HL]or BC=0|
4003 cbr z_flags,(1<<ZFL_S)|(1<<ZFL_Z)|(1<<ZFL_H)|(1<<ZFL_P)
4004 sbr z_flags,(1<<ZFL_N)
4005 lcall dram_read ; temp = (HL)
4008 ; sub temp2,temp ; A - (HL)
4012 sbr z_flags,(1<<ZFL_S)
4014 sbr z_flags,(1<<ZFL_Z)
4016 sbr z_flags,(1<<ZFL_H)
4020 sbr z_flags,(1<<ZFL_P)
4028 rcall op_CPxx_common
4038 rcall op_CPxx_common
4066 ;----------------------------------------------------------------
4067 ;|Mnemonic |SZHPNC|Description |Notes |
4068 ;----------------------------------------------------------------
4069 ;|INI |?*??1-|Input and Increment |[HL]=[C],HL=HL+1,B=B-1|
4070 ;|IND |?*??1-|Input and Decrement |[HL]=[C],HL=HL-1,B=B-1|
4071 ;|INIR |?1??1-|Input, Inc., Repeat |INI till B=0 |
4072 ;|INDR |?1??1-|Input, Dec., Repeat |IND till B=0 |
4077 cbr z_flags,(1<<ZFL_Z)
4078 sbr z_flags,(1<<ZFL_N)
4088 sbr z_flags,(1<<ZFL_Z)
4094 rcall op_INxx_common
4103 rcall op_INxx_common
4127 ;----------------------------------------------------------------
4128 ;|Mnemonic |SZHPNC|Description |Notes |
4129 ;----------------------------------------------------------------
4130 ;|OUTI |?*??1-|Output and Increment |[C]=[HL],HL=HL+1,B=B-1|
4131 ;|OUTD |?*??1-|Output and Decrement |[C]=[HL],HL=HL-1,B=B-1|
4132 ;|OTIR |?1??1-|Output, Inc., Repeat |OUTI till B=0 |
4133 ;|OTDR |?1??1-|Output, Dec., Repeat |OUTD till B=0 |
4138 cbr z_flags,(1<<ZFL_Z)
4139 sbr z_flags,(1<<ZFL_N)
4140 lcall dram_read ;temp = (z)
4147 sbr z_flags,(1<<ZFL_Z)
4159 rcall op_OUTxx_common
4171 rcall op_OUTxx_common
4193 opctable EDjmp, PC ;+ 2*256
4195 instr fetch_nop, op_nop, store_nop ;00 ;NOP
4196 instr fetch_nop, op_nop, store_nop ;01 ;NOP
4197 instr fetch_nop, op_nop, store_nop ;02 ;NOP
4198 instr fetch_nop, op_nop, store_nop ;03 ;NOP
4199 instr fetch_nop, op_nop, store_nop ;04 ;NOP
4200 instr fetch_nop, op_nop, store_nop ;05 ;NOP
4201 instr fetch_nop, op_nop, store_nop ;06 ;NOP
4202 instr fetch_nop, op_nop, store_nop ;07 ;NOP
4203 instr fetch_nop, op_nop, store_nop ;08 ;NOP
4204 instr fetch_nop, op_nop, store_nop ;09 ;NOP
4205 instr fetch_nop, op_nop, store_nop ;0A ;NOP
4206 instr fetch_nop, op_nop, store_nop ;0B ;NOP
4207 instr fetch_nop, op_nop, store_nop ;0C ;NOP
4208 instr fetch_nop, op_nop, store_nop ;0D ;NOP
4209 instr fetch_nop, op_nop, store_nop ;0E ;NOP
4210 instr fetch_nop, op_nop, store_nop ;0F ;NOP
4211 instr fetch_nop, op_nop, store_nop ;10 ;NOP
4212 instr fetch_nop, op_nop, store_nop ;11 ;NOP
4213 instr fetch_nop, op_nop, store_nop ;12 ;NOP
4214 instr fetch_nop, op_nop, store_nop ;13 ;NOP
4215 instr fetch_nop, op_nop, store_nop ;14 ;NOP
4216 instr fetch_nop, op_nop, store_nop ;15 ;NOP
4217 instr fetch_nop, op_nop, store_nop ;16 ;NOP
4218 instr fetch_nop, op_nop, store_nop ;17 ;NOP
4219 instr fetch_nop, op_nop, store_nop ;18 ;NOP
4220 instr fetch_nop, op_nop, store_nop ;19 ;NOP
4221 instr fetch_nop, op_nop, store_nop ;1A ;NOP
4222 instr fetch_nop, op_nop, store_nop ;1B ;NOP
4223 instr fetch_nop, op_nop, store_nop ;1C ;NOP
4224 instr fetch_nop, op_nop, store_nop ;1D ;NOP
4225 instr fetch_nop, op_nop, store_nop ;1E ;NOP
4226 instr fetch_nop, op_nop, store_nop ;1F ;NOP
4227 instr fetch_nop, op_nop, store_nop ;20 ;NOP
4228 instr fetch_nop, op_nop, store_nop ;21 ;NOP
4229 instr fetch_nop, op_nop, store_nop ;22 ;NOP
4230 instr fetch_nop, op_nop, store_nop ;23 ;NOP
4231 instr fetch_nop, op_nop, store_nop ;24 ;NOP
4232 instr fetch_nop, op_nop, store_nop ;25 ;NOP
4233 instr fetch_nop, op_nop, store_nop ;26 ;NOP
4234 instr fetch_nop, op_nop, store_nop ;27 ;NOP
4235 instr fetch_nop, op_nop, store_nop ;28 ;NOP
4236 instr fetch_nop, op_nop, store_nop ;29 ;NOP
4237 instr fetch_nop, op_nop, store_nop ;2A ;NOP
4238 instr fetch_nop, op_nop, store_nop ;2B ;NOP
4239 instr fetch_nop, op_nop, store_nop ;2C ;NOP
4240 instr fetch_nop, op_nop, store_nop ;2D ;NOP
4241 instr fetch_nop, op_nop, store_nop ;2E ;NOP
4242 instr fetch_nop, op_nop, store_nop ;2F ;NOP
4243 instr fetch_nop, op_nop, store_nop ;30 ;NOP
4244 instr fetch_nop, op_nop, store_nop ;31 ;NOP
4245 instr fetch_nop, op_nop, store_nop ;32 ;NOP
4246 instr fetch_nop, op_nop, store_nop ;33 ;NOP
4247 instr fetch_nop, op_nop, store_nop ;34 ;NOP
4248 instr fetch_nop, op_nop, store_nop ;35 ;NOP
4249 instr fetch_nop, op_nop, store_nop ;36 ;NOP
4250 instr fetch_nop, op_nop, store_nop ;37 ;NOP
4251 instr fetch_nop, op_nop, store_nop ;38 ;NOP
4252 instr fetch_nop, op_nop, store_nop ;39 ;NOP
4253 instr fetch_nop, op_nop, store_nop ;3A ;NOP
4254 instr fetch_nop, op_nop, store_nop ;3B ;NOP
4255 instr fetch_nop, op_nop, store_nop ;3C ;NOP
4256 instr fetch_nop, op_nop, store_nop ;3D ;NOP
4257 instr fetch_nop, op_nop, store_nop ;3E ;NOP
4258 instr fetch_nop, op_nop, store_nop ;3F ;NOP
4259 instr fetch_C, op_IN, store2_B ;40 ;IN B,(C)
4260 instr fetch_B, op_OUT, store_nop ;41 ;OUT (C),B
4261 instr fetch_BC, op_SBCHL, store_nop ;42 ;SBC HL,BC
4262 instr fetch_DIR16, op_STBC, store_nop ;43 ;LD (nn),BC
4263 instr fetch_nop, op_NEG, store_nop ;44 ;NEG
4264 instr fetch_nop, op_RETN, store_nop ;45 ;RETN
4265 instr fetch_nop, op_IM0, store_nop ;46 ;IM 0
4266 instr fetch_nop, op_ldia, store_nop ;47 ;LD I,A
4267 instr fetch_C, op_IN, store2_C ;48 ;IN C,(C)
4268 instr fetch_C, op_OUT, store_nop ;49 ;OUT (C),C
4269 instr fetch_BC, op_ADCHL, store_nop ;4A ;ADC HL,BC
4270 instr fetch_DIR16, op_RMEM16, store_BC ;4B nn nn ;LD BC,(nn)
4271 instr fetch_nop, op_NEG, store_nop ;4C ;NEG
4272 instr fetch_nop, op_RETI, store_nop ;4D ;RETI
4273 instr fetch_nop, op_IM0, store_nop ;4E ;IM 0
4274 instr fetch_nop, op_ldra, store_nop ;4F ;LD R,A
4275 instr fetch_C, op_IN, store2_D ;50 ;IN D,(C)
4276 instr fetch_D, op_OUT, store_nop ;51 ;OUT (C),D
4277 instr fetch_DE, op_SBCHL, store_nop ;52 ;SBC HL,DE
4278 instr fetch_DIR16, op_STDE, store_nop ;53 nn nn ;LD (nn),DE
4279 instr fetch_nop, op_NEG, store_nop ;54 ;NEG
4280 instr fetch_nop, op_RETN, store_nop ;55 ;RETN
4281 instr fetch_nop, op_IM1, store_nop ;56 ;IM 1
4282 instr fetch_nop, op_ldai, store_nop ;57 ;LD A,I
4283 instr fetch_C, op_IN, store2_E ;58 ;IN E,(C)
4284 instr fetch_E, op_OUT, store_nop ;59 ;OUT (C),E
4285 instr fetch_DE, op_ADCHL, store_nop ;5A ;ADC HL,DE
4286 instr fetch_DIR16, op_RMEM16, store_DE ;5B nn nn ;LD DE,(nn)
4287 instr fetch_nop, op_NEG, store_nop ;5C ;NEG
4288 instr fetch_nop, op_RETN, store_nop ;5D ;RETN
4289 instr fetch_nop, op_IM2, store_nop ;5E ;IM 2
4290 instr fetch_nop, op_ldar, store_nop ;5F ;LD A,R
4291 instr fetch_C, op_IN, store2_H ;60 ;IN H,(C)
4292 instr fetch_H, op_OUT, store_nop ;61 ;OUT (C),H
4293 instr fetch_HL, op_SBCHL, store_nop ;62 ;SBC HL,HL
4294 instr fetch_DIR16, op_STHL, store_nop ;63 nn nn ;LD (nn),HL
4295 instr fetch_nop, op_NEG, store_nop ;64 ;NEG
4296 instr fetch_nop, op_RETN, store_nop ;65 ;RETN
4297 instr fetch_nop, op_IM0, store_nop ;66 ;IM 0
4298 instr fetch2_mhl, op_RRD, store_mhl ;67 ;RRD
4299 instr fetch_C, op_IN, store2_L ;68 ;IN L,(C)
4300 instr fetch_L, op_OUT, store_nop ;69 ;OUT (C),L
4301 instr fetch_HL, op_ADCHL, store_nop ;6A ;ADC HL,HL
4302 instr fetch_DIR16, op_RMEM16, store_HL ;6B nn nn ;LD HL,(nn)
4303 instr fetch_nop, op_NEG, store_nop ;6C ;NEG
4304 instr fetch_nop, op_RETN, store_nop ;6D ;RETN
4305 instr fetch_nop, op_IM0, store_nop ;6E ;IM 0
4306 instr fetch2_mhl, op_RLD, store_mhl ;6F ;RLD
4307 instr fetch_C, op_IN, store_nop ;70 ;IN (C)
4308 instr fetch_0, op_OUT, store_nop ;71 ;OUT (C),0
4309 instr fetch_SP, op_SBCHL, store_nop ;72 ;SBC HL,SP
4310 instr fetch_DIR16, op_STSP, store_nop ;73 nn nn ;LD (nn),SP
4311 instr fetch_nop, op_NEG, store_nop ;74 ;NEG
4312 instr fetch_nop, op_RETN, store_nop ;75 ;RETN
4313 instr fetch_nop, op_IM1, store_nop ;76 ;IM 1
4314 instr fetch_nop, op_nop, store_nop ;77 ;NOP
4315 instr fetch_C, op_IN, store2_A ;78 ;IN A,(C)
4316 instr fetch_A, op_OUT, store_nop ;79 ;OUT (C),A
4317 instr fetch_SP, op_ADCHL, store_nop ;7A ;ADC HL,SP
4318 instr fetch_DIR16, op_RMEM16, store_SP ;7B nn nn ;LD SP,(nn)
4319 instr fetch_nop, op_NEG, store_nop ;7C ;NEG
4320 instr fetch_nop, op_RETN, store_nop ;7D ;RETN
4321 instr fetch_nop, op_IM2, store_nop ;7E ;IM 2
4322 instr fetch_nop, op_nop, store_nop ;7F ;NOP
4323 instr fetch_nop, op_nop, store_nop ;80 ;NOP
4324 instr fetch_nop, op_nop, store_nop ;81 ;NOP
4325 instr fetch_nop, op_nop, store_nop ;82 ;NOP
4326 instr fetch_nop, op_nop, store_nop ;83 ;NOP
4327 instr fetch_nop, op_nop, store_nop ;84 ;NOP
4328 instr fetch_nop, op_nop, store_nop ;85 ;NOP
4329 instr fetch_nop, op_nop, store_nop ;86 ;NOP
4330 instr fetch_nop, op_nop, store_nop ;87 ;NOP
4331 instr fetch_nop, op_nop, store_nop ;88 ;NOP
4332 instr fetch_nop, op_nop, store_nop ;89 ;NOP
4333 instr fetch_nop, op_nop, store_nop ;8A ;NOP
4334 instr fetch_nop, op_nop, store_nop ;8B ;NOP
4335 instr fetch_nop, op_nop, store_nop ;8C ;NOP
4336 instr fetch_nop, op_nop, store_nop ;8D ;NOP
4337 instr fetch_nop, op_nop, store_nop ;8E ;NOP
4338 instr fetch_nop, op_nop, store_nop ;8F ;NOP
4339 instr fetch_nop, op_nop, store_nop ;90 ;NOP
4340 instr fetch_nop, op_nop, store_nop ;91 ;NOP
4341 instr fetch_nop, op_nop, store_nop ;92 ;NOP
4342 instr fetch_nop, op_nop, store_nop ;93 ;NOP
4343 instr fetch_nop, op_nop, store_nop ;94 ;NOP
4344 instr fetch_nop, op_nop, store_nop ;95 ;NOP
4345 instr fetch_nop, op_nop, store_nop ;96 ;NOP
4346 instr fetch_nop, op_nop, store_nop ;97 ;NOP
4347 instr fetch_nop, op_nop, store_nop ;98 ;NOP
4348 instr fetch_nop, op_nop, store_nop ;99 ;NOP
4349 instr fetch_nop, op_nop, store_nop ;9A ;NOP
4350 instr fetch_nop, op_nop, store_nop ;9B ;NOP
4351 instr fetch_nop, op_nop, store_nop ;9C ;NOP
4352 instr fetch_nop, op_nop, store_nop ;9D ;NOP
4353 instr fetch_nop, op_nop, store_nop ;9E ;NOP
4354 instr fetch_nop, op_nop, store_nop ;9F ;NOP
4355 instr fetch_nop, op_LDI, store_nop ;A0 ;LDI
4356 instr fetch_nop, op_CPI, store_nop ;A1 ;CPI
4357 instr fetch_nop, op_INI, store_nop ;A2 ;INI
4358 instr fetch_nop, op_OUTI, store_nop ;A3 ;OUTI
4359 instr fetch_nop, op_nop, store_nop ;A4 ;NOP
4360 instr fetch_nop, op_nop, store_nop ;A5 ;NOP
4361 instr fetch_nop, op_nop, store_nop ;A6 ;NOP
4362 instr fetch_nop, op_nop, store_nop ;A7 ;NOP
4363 instr fetch_nop, op_LDD, store_nop ;A8 ;LDD
4364 instr fetch_nop, op_CPD, store_nop ;A9 ;CPD
4365 instr fetch_nop, op_IND, store_nop ;AA ;IND
4366 instr fetch_nop, op_OUTD, store_nop ;AB ;OUTD
4367 instr fetch_nop, op_nop, store_nop ;AC ;NOP
4368 instr fetch_nop, op_nop, store_nop ;AD ;NOP
4369 instr fetch_nop, op_nop, store_nop ;AE ;NOP
4370 instr fetch_nop, op_nop, store_nop ;AF ;NOP
4371 instr fetch_nop, op_LDIR, store_nop ;B0 ;LDIR
4372 instr fetch_nop, op_CPIR, store_nop ;B1 ;CPIR
4373 instr fetch_nop, op_INIR, store_nop ;B2 ;INIR
4374 instr fetch_nop, op_OTIR, store_nop ;B3 ;OTIR
4375 instr fetch_nop, op_nop, store_nop ;B4 ;NOP
4376 instr fetch_nop, op_nop, store_nop ;B5 ;NOP
4377 instr fetch_nop, op_nop, store_nop ;B6 ;NOP
4378 instr fetch_nop, op_nop, store_nop ;B7 ;NOP
4379 instr fetch_nop, op_LDDR, store_nop ;B8 ;LDDR
4380 instr fetch_nop, op_CPDR, store_nop ;B9 ;CPDR
4381 instr fetch_nop, op_INDR, store_nop ;BA ;INDR
4382 instr fetch_nop, op_OTDR, store_nop ;BB ;OTDR
4383 instr fetch_nop, op_nop, store_nop ;BC ;NOP
4384 instr fetch_nop, op_nop, store_nop ;BD ;NOP
4385 instr fetch_nop, op_nop, store_nop ;BE ;NOP
4386 instr fetch_nop, op_nop, store_nop ;BF ;NOP
4387 instr fetch_nop, op_nop, store_nop ;C0 ;NOP
4388 instr fetch_nop, op_nop, store_nop ;C1 ;NOP
4389 instr fetch_nop, op_nop, store_nop ;C2 ;NOP
4390 instr fetch_nop, op_nop, store_nop ;C3 ;NOP
4391 instr fetch_nop, op_nop, store_nop ;C4 ;NOP
4392 instr fetch_nop, op_nop, store_nop ;C5 ;NOP
4393 instr fetch_nop, op_nop, store_nop ;C6 ;NOP
4394 instr fetch_nop, op_nop, store_nop ;C7 ;NOP
4395 instr fetch_nop, op_nop, store_nop ;C8 ;NOP
4396 instr fetch_nop, op_nop, store_nop ;C9 ;NOP
4397 instr fetch_nop, op_nop, store_nop ;CA ;NOP
4398 instr fetch_nop, op_nop, store_nop ;CB ;NOP
4399 instr fetch_nop, op_nop, store_nop ;CC ;NOP
4400 instr fetch_nop, op_nop, store_nop ;CD ;NOP
4401 instr fetch_nop, op_nop, store_nop ;CE ;NOP
4402 instr fetch_nop, op_nop, store_nop ;CF ;NOP
4403 instr fetch_nop, op_nop, store_nop ;D0 ;NOP
4404 instr fetch_nop, op_nop, store_nop ;D1 ;NOP
4405 instr fetch_nop, op_nop, store_nop ;D2 ;NOP
4406 instr fetch_nop, op_nop, store_nop ;D3 ;NOP
4407 instr fetch_nop, op_nop, store_nop ;D4 ;NOP
4408 instr fetch_nop, op_nop, store_nop ;D5 ;NOP
4409 instr fetch_nop, op_nop, store_nop ;D6 ;NOP
4410 instr fetch_nop, op_nop, store_nop ;D7 ;NOP
4411 instr fetch_nop, op_nop, store_nop ;D8 ;NOP
4412 instr fetch_nop, op_nop, store_nop ;D9 ;NOP
4413 instr fetch_nop, op_nop, store_nop ;DA ;NOP
4414 instr fetch_nop, op_nop, store_nop ;DB ;NOP
4415 instr fetch_nop, op_nop, store_nop ;DC ;NOP
4416 instr fetch_nop, op_nop, store_nop ;DD ;NOP
4417 instr fetch_nop, op_nop, store_nop ;DE ;NOP
4418 instr fetch_nop, op_nop, store_nop ;DF ;NOP
4419 instr fetch_nop, op_nop, store_nop ;E0 ;NOP
4420 instr fetch_nop, op_nop, store_nop ;E1 ;NOP
4421 instr fetch_nop, op_nop, store_nop ;E2 ;NOP
4422 instr fetch_nop, op_nop, store_nop ;E3 ;NOP
4423 instr fetch_nop, op_nop, store_nop ;E4 ;NOP
4424 instr fetch_nop, op_nop, store_nop ;E5 ;NOP
4425 instr fetch_nop, op_nop, store_nop ;E6 ;NOP
4426 instr fetch_nop, op_nop, store_nop ;E7 ;NOP
4427 instr fetch_nop, op_nop, store_nop ;E8 ;NOP
4428 instr fetch_nop, op_nop, store_nop ;E9 ;NOP
4429 instr fetch_nop, op_nop, store_nop ;EA ;NOP
4430 instr fetch_nop, op_nop, store_nop ;EB ;NOP
4431 instr fetch_nop, op_nop, store_nop ;EC ;NOP
4432 instr fetch_nop, op_nop, store_nop ;ED ;NOP
4433 instr fetch_nop, op_nop, store_nop ;EE ;NOP
4434 instr fetch_nop, op_nop, store_nop ;EF ;NOP
4435 instr fetch_nop, op_nop, store_nop ;F0 ;NOP
4436 instr fetch_nop, op_nop, store_nop ;F1 ;NOP
4437 instr fetch_nop, op_nop, store_nop ;F2 ;NOP
4438 instr fetch_nop, op_nop, store_nop ;F3 ;NOP
4439 instr fetch_nop, op_nop, store_nop ;F4 ;NOP
4440 instr fetch_nop, op_nop, store_nop ;F5 ;NOP
4441 instr fetch_nop, op_nop, store_nop ;F6 ;NOP
4442 instr fetch_nop, op_nop, store_nop ;F7 ;NOP
4443 instr fetch_nop, op_nop, store_nop ;F8 ;NOP
4444 instr fetch_nop, op_nop, store_nop ;F9 ;NOP
4445 instr fetch_nop, op_nop, store_nop ;FA ;NOP
4446 instr fetch_nop, op_nop, store_nop ;FB ;NOP
4447 instr fetch_nop, op_nop, store_nop ;FC ;NOP
4448 instr fetch_nop, op_nop, store_nop ;FD ;NOP
4449 instr fetch_nop, op_nop, store_nop ;FE ;NOP
4450 instr fetch_nop, op_nop, store_nop ;FF ;NOP
4455 ;----------------------------------------------------------------
4456 ; Lookup table, stolen from z80ex, Z80 emulation library.
4457 ; http://z80ex.sourceforge.net/
4459 ; The S, Z, 5 and 3 bits and the parity of the lookup value
4463 .org (PC+255) & 0xff00
4465 ; .org sz53p_table_pos
4466 ; .org FLASHEND & 0xff00
4467 ; .org 0x1fff & 0xff00
4470 .db 0x44,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4471 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4472 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4473 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4474 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4475 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4476 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4477 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4478 .db 0x00,0x04,0x04,0x00,0x04,0x00,0x00,0x04
4479 .db 0x0c,0x08,0x08,0x0c,0x08,0x0c,0x0c,0x08
4480 .db 0x04,0x00,0x00,0x04,0x00,0x04,0x04,0x00
4481 .db 0x08,0x0c,0x0c,0x08,0x0c,0x08,0x08,0x0c
4482 .db 0x24,0x20,0x20,0x24,0x20,0x24,0x24,0x20
4483 .db 0x28,0x2c,0x2c,0x28,0x2c,0x28,0x28,0x2c
4484 .db 0x20,0x24,0x24,0x20,0x24,0x20,0x20,0x24
4485 .db 0x2c,0x28,0x28,0x2c,0x28,0x2c,0x2c,0x28
4486 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4487 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4488 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4489 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4490 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4491 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4492 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4493 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4494 .db 0x84,0x80,0x80,0x84,0x80,0x84,0x84,0x80
4495 .db 0x88,0x8c,0x8c,0x88,0x8c,0x88,0x88,0x8c
4496 .db 0x80,0x84,0x84,0x80,0x84,0x80,0x80,0x84
4497 .db 0x8c,0x88,0x88,0x8c,0x88,0x8c,0x8c,0x88
4498 .db 0xa0,0xa4,0xa4,0xa0,0xa4,0xa0,0xa0,0xa4
4499 .db 0xac,0xa8,0xa8,0xac,0xa8,0xac,0xac,0xa8
4500 .db 0xa4,0xa0,0xa0,0xa4,0xa0,0xa4,0xa4,0xa0
4501 .db 0xa8,0xac,0xac,0xa8,0xac,0xa8,0xa8,0xac
4503 ; vim:set ts=8 noet nowrap