diff options
| author | Astrid Smith | 2011-06-26 01:12:30 -0700 |
|---|---|---|
| committer | Astrid Smith | 2011-06-26 01:12:30 -0700 |
| commit | f6ebaf29e8b1a545dc2168426fea15cfb9593c83 (patch) | |
| tree | 31e122a76c5fab19790673b7fc467d5a8d0d3ff7 /opcodes.asm.m4 | |
| parent | fc3103b47fad14847704d27705a64fb6ad5b430e (diff) | |
Working on interleaving the various instructions together. Does presently no longer build.
Diffstat (limited to 'opcodes.asm.m4')
| -rw-r--r-- | opcodes.asm.m4 | 1829 |
1 files changed, 1826 insertions, 3 deletions
diff --git a/opcodes.asm.m4 b/opcodes.asm.m4 index fe92245..64fed19 100644 --- a/opcodes.asm.m4 +++ b/opcodes.asm.m4 @@ -100,10 +100,34 @@ _align SET 0 START MACRO ORG emu_plain_op+_align -_align SET _align+$40 ; opcode routine length +_align SET _align+$100 ; opcode routine length bra.w do_interrupt ; for interrupt routines ENDM +START_DD MACRO + ORG emu_plain_op+_align+$40 + ENDM + +START_CB MACRO + ORG emu_plain_op+_align+$42 + ENDM + +START_DDCB MACRO + ORG emu_plain_op+_align+$44 + ENDM + +START_FD MACRO + ORG emu_plain_op+_align+$46 + ENDM + +START_FDCB MACRO + ORG emu_plain_op+_align+$48 + ENDM + +START_ED MACRO + ORG emu_plain_op+_align+$4A + ENDM + ;; LOHI/HILO are hideously slow for instructions used often. ;; Consider interleaving registers instead: ;; @@ -201,6 +225,24 @@ emu_plain_op: ; Size(bytes) Time(cycles) ;; NOP OPCODE(00,«»,4) + ;; +OP_DD(00,«») + + ;; RLC B +OP_CB(00,«») + + ;; +OP_DDCB(00,«») + + ;; RLC +OP_FD(00,«») + + ;; +OP_FDCB(00,«») + + ;; +OP_ED(00,«») + ;; LD BC,immed.w ;; Read a word and put it in BC ;; No flags @@ -209,6 +251,14 @@ OPCODE(01,« FETCHWI ebc »,36,,12) +OP_DD(01,«») +OP_CB(01,«») +OP_DDCB(01,«») +OP_FD(01,«») +OP_FDCB(01,«») +OP_ED(01,«») + + ;; LD (BC),A ;; (BC) <- A ;; No flags @@ -217,6 +267,13 @@ OPCODE(02,« PUTB eaf,ebc »,14,,4) +OP_DD(02,«») +OP_CB(02,«») +OP_DDCB(02,«») +OP_FD(02,«») +OP_FDCB(02,«») +OP_ED(02,«») + ;; INC BC ;; BC <- BC+1 ;; No flags @@ -225,6 +282,13 @@ OPCODE(03,« F_INC_W ebc »,4,,2) +OP_DD(03,«») +OP_CB(03,«») +OP_DDCB(03,«») +OP_FD(03,«») +OP_FDCB(03,«») +OP_ED(03,«») + ;; INC B ;; B <- B+1 ;; 152 cycles @@ -234,6 +298,13 @@ OPCODE(04,« HILO ebc ») +OP_DD(04,«») +OP_CB(04,«») +OP_DDCB(04,«») +OP_FD(04,«») +OP_FDCB(04,«») +OP_ED(04,«») + ;; DEC B ;; B <- B-1 ;; 124 cycles @@ -244,6 +315,13 @@ OPCODE(05,« ») ;nok +OP_DD(05,«») +OP_CB(05,«») +OP_DDCB(05,«») +OP_FD(05,«») +OP_FDCB(05,«») +OP_ED(05,«») + ;; LD B,immed.b ;; Read a byte and put it in B ;; B <- immed.b @@ -256,6 +334,13 @@ OPCODE(06,« »,26,,10) ;nok +OP_DD(06,«») +OP_CB(06,«») +OP_DDCB(06,«») +OP_FD(06,«») +OP_FDCB(06,«») +OP_ED(06,«») + ;; RLCA ;; Rotate A left, carry bit gets top bit ;; Flags: H,N=0; C aff. @@ -266,6 +351,13 @@ OPCODE(07,« »,4,,2) ;nok +OP_DD(07,«») +OP_CB(07,«») +OP_DDCB(07,«») +OP_FD(07,«») +OP_FDCB(07,«») +OP_ED(07,«») + ;; EX AF,AF' ;; No flags ;; XXX AF @@ -275,6 +367,13 @@ OPCODE(08,« »,4,,2) ;nok +OP_DD(08,«») +OP_CB(08,«») +OP_DDCB(08,«») +OP_FD(08,«») +OP_FDCB(08,«») +OP_ED(08,«») + ;; ADD HL,BC ;; HL <- HL+BC ;; Flags: H, C aff.; N=0 @@ -284,6 +383,13 @@ OPCODE(09,« ») ;nok +OP_DD(09,«») +OP_CB(09,«») +OP_DDCB(09,«») +OP_FD(09,«») +OP_FDCB(09,«») +OP_ED(09,«») + ;; LD A,(BC) ;; A <- (BC) ;; No flags @@ -292,6 +398,13 @@ OPCODE(0a,« FETCHB ebc,eaf »,14,,4) +OP_DD(0a,«») +OP_CB(0a,«») +OP_DDCB(0a,«») +OP_FD(0a,«») +OP_FDCB(0a,«») +OP_ED(0a,«») + ;; DEC BC ;; BC <- BC-1 ;; No flags @@ -301,6 +414,13 @@ OPCODE(0b,« »,4,,2) ;nok +OP_DD(0b,«») +OP_CB(0b,«») +OP_DDCB(0b,«») +OP_FD(0b,«») +OP_FDCB(0b,«») +OP_ED(0b,«») + ;; INC C ;; C <- C+1 ;; Flags: S,Z,H aff.; P=overflow, N=0 @@ -310,6 +430,13 @@ OPCODE(0c,« ») ;nok +OP_DD(0c,«») +OP_CB(0c,«») +OP_DDCB(0c,«») +OP_FD(0c,«») +OP_FDCB(0c,«») +OP_ED(0c,«») + ;; DEC C ;; C <- C-1 ;; Flags: S,Z,H aff., P=overflow, N=1 @@ -319,6 +446,13 @@ OPCODE(0d,« ») ;nok +OP_DD(0d,«») +OP_CB(0d,«») +OP_DDCB(0d,«») +OP_FD(0d,«») +OP_FDCB(0d,«») +OP_ED(0d,«») + ;; LD C,immed.b ;; C <- immed.b ;; No flags @@ -328,6 +462,13 @@ OPCODE(0e,« »,18,,6) ;nok +OP_DD(0e,«») +OP_CB(0e,«») +OP_DDCB(0e,«») +OP_FD(0e,«») +OP_FDCB(0e,«») +OP_ED(0e,«») + ;; RRCA ;; Rotate A right, carry bit gets top bit ;; Flags: H,N=0; C aff. @@ -338,6 +479,13 @@ OPCODE(0f,« ») ;nok +OP_DD(0f,«») +OP_CB(0f,«») +OP_DDCB(0f,«») +OP_FD(0f,«») +OP_FDCB(0f,«») +OP_ED(0f,«») + ;; DJNZ immed.w ;; Decrement B ;; and branch by immed.b @@ -358,6 +506,13 @@ local(end): »,,,32) ;nok +OP_DD(10,«») +OP_CB(10,«») +OP_DDCB(10,«») +OP_FD(10,«») +OP_FDCB(10,«») +OP_ED(10,«») + ;; LD DE,immed.w ;; DE <- immed.w ;; No flags @@ -367,6 +522,13 @@ OPCODE(11,« ») ;nok +OP_DD(11,«») +OP_CB(11,«») +OP_DDCB(11,«») +OP_FD(11,«») +OP_FDCB(11,«») +OP_ED(11,«») + ;; LD (DE),A ;; (DE) <- A ;; No flags @@ -376,6 +538,13 @@ OPCODE(12,« ») ;nok +OP_DD(12,«») +OP_CB(12,«») +OP_DDCB(12,«») +OP_FD(12,«») +OP_FDCB(12,«») +OP_ED(12,«») + ;; INC DE ;; No flags ;; 4 cycles, 2 bytes @@ -384,6 +553,13 @@ OPCODE(13,« ») ;nok +OP_DD(13,«») +OP_CB(13,«») +OP_DDCB(13,«») +OP_FD(13,«») +OP_FDCB(13,«») +OP_ED(13,«») + ;; INC D ;; Flags: S,Z,H aff.; P=overflow, N=0 ;; 152 cycles @@ -394,6 +570,13 @@ OPCODE(14,« ») ;nok +OP_DD(14,«») +OP_CB(14,«») +OP_DDCB(14,«») +OP_FD(14,«») +OP_FDCB(14,«») +OP_ED(14,«») + ;; DEC D ;; Flags: S,Z,H aff.; P=overflow, N=1 ;; 124 cycles @@ -404,6 +587,13 @@ OPCODE(15,« ») ;nok +OP_DD(15,«») +OP_CB(15,«») +OP_DDCB(15,«») +OP_FD(15,«») +OP_FDCB(15,«») +OP_ED(15,«») + ;; LD D,immed.b ;; No flags ;; 52 cycles @@ -414,6 +604,13 @@ OPCODE(16,« ») ;nok +OP_DD(16,«») +OP_CB(16,«») +OP_DDCB(16,«») +OP_FD(16,«») +OP_FDCB(16,«») +OP_ED(16,«») + ;; RLA ;; Flags: P,N=0; C aff. ;; XXX flags @@ -423,6 +620,13 @@ OPCODE(17,« ») ;nok +OP_DD(17,«») +OP_CB(17,«») +OP_DDCB(17,«») +OP_FD(17,«») +OP_FDCB(17,«») +OP_ED(17,«») + ;; JR immed.b ;; PC <- immed.b ;; Branch relative by a signed immediate byte @@ -442,6 +646,13 @@ OPCODE(18,« ») ;nok +OP_DD(18,«») +OP_CB(18,«») +OP_DDCB(18,«») +OP_FD(18,«») +OP_FDCB(18,«») +OP_ED(18,«») + ;; ADD HL,DE ;; HL <- HL+DE ;; Flags: H,C aff,; N=0 @@ -451,6 +662,13 @@ OPCODE(19,« ») ;nok +OP_DD(19,«») +OP_CB(19,«») +OP_DDCB(19,«») +OP_FD(19,«») +OP_FDCB(19,«») +OP_ED(19,«») + ;; LD A,(DE) ;; A <- (DE) ;; No flags @@ -460,6 +678,13 @@ OPCODE(1a,« ») ;nok +OP_DD(1a,«») +OP_CB(1a,«») +OP_DDCB(1a,«») +OP_FD(1a,«») +OP_FDCB(1a,«») +OP_ED(1a,«») + ;; DEC DE ;; No flags ;; 4 cycles, 2 bytes @@ -468,6 +693,13 @@ OPCODE(1b,« ») ;nok +OP_DD(1b,«») +OP_CB(1b,«») +OP_DDCB(1b,«») +OP_FD(1b,«») +OP_FDCB(1b,«») +OP_ED(1b,«») + ;; INC E ;; Flags: S,Z,H aff.; P=overflow; N=0 ;; 108 cycles, 34 bytes @@ -476,6 +708,13 @@ OPCODE(1c,« ») ;nok +OP_DD(1c,«») +OP_CB(1c,«») +OP_DDCB(1c,«») +OP_FD(1c,«») +OP_FDCB(1c,«») +OP_ED(1c,«») + ;; DEC E ;; Flags: S,Z,H aff.; P=overflow, N=1 ;; 80 cycles, 26 bytes @@ -484,6 +723,13 @@ OPCODE(1d,« ») ;nok +OP_DD(1d,«») +OP_CB(1d,«») +OP_DDCB(1d,«») +OP_FD(1d,«») +OP_FDCB(1d,«») +OP_ED(1d,«») + ;; LD E,immed.b ;; No flags ;; 8 cycles, 2 bytes @@ -492,6 +738,13 @@ OPCODE(1e,« ») ;nok +OP_DD(1e,«») +OP_CB(1e,«») +OP_DDCB(1e,«») +OP_FD(1e,«») +OP_FDCB(1e,«») +OP_ED(1e,«») + ;; RRA ;; Flags: H,N=0; C aff. ;; XXX FLAGS @@ -501,6 +754,13 @@ OPCODE(1f,« ») ;nok +OP_DD(1f,«») +OP_CB(1f,«») +OP_DDCB(1f,«») +OP_FD(1f,«») +OP_FDCB(1f,«») +OP_ED(1f,«») + ;; JR NZ,immed.b ;; if ~Z, ;; PC <- PC+immed.b @@ -515,6 +775,13 @@ OPCODE(20,« add.l #1,epc ; skip over the immediate byte ») +OP_DD(20,«») +OP_CB(20,«») +OP_DDCB(20,«») +OP_FD(20,«») +OP_FDCB(20,«») +OP_ED(20,«») + ;; LD HL,immed.w ;; No flags ;; 42 cycles @@ -523,6 +790,13 @@ OPCODE(21,« ») ;nok +OP_DD(21,«») +OP_CB(21,«») +OP_DDCB(21,«») +OP_FD(21,«») +OP_FDCB(21,«») +OP_ED(21,«») + ;; LD immed.w,HL ;; (address) <- HL ;; No flags @@ -533,6 +807,13 @@ OPCODE(22,« ») ;nok +OP_DD(22,«») +OP_CB(22,«») +OP_DDCB(22,«») +OP_FD(22,«») +OP_FDCB(22,«») +OP_ED(22,«») + ;; INC HL ;; No flags ;; 4 cycles @@ -541,6 +822,13 @@ OPCODE(23,« ») ;nok +OP_DD(23,«») +OP_CB(23,«») +OP_DDCB(23,«») +OP_FD(23,«») +OP_FDCB(23,«») +OP_ED(23,«») + ;; INC H ;; Flags: S,Z,H aff.; P=overflow, N=0 ;; 152 cycles @@ -551,6 +839,13 @@ OPCODE(24,« ») ;nok +OP_DD(24,«») +OP_CB(24,«») +OP_DDCB(24,«») +OP_FD(24,«») +OP_FDCB(24,«») +OP_ED(24,«») + ;; DEC H ;; Flags: S,Z,H aff.; P=overflow, N=1 ;; 124 cycles @@ -561,6 +856,13 @@ OPCODE(25,« ») ;nok +OP_DD(25,«») +OP_CB(25,«») +OP_DDCB(25,«») +OP_FD(25,«») +OP_FDCB(25,«») +OP_ED(25,«») + ;; LD H,immed.b ;; No flags ;; 52 cycles @@ -571,6 +873,13 @@ OPCODE(26,« ») ;nok +OP_DD(26,«») +OP_CB(26,«») +OP_DDCB(26,«») +OP_FD(26,«») +OP_FDCB(26,«») +OP_ED(26,«») + ;; DAA ;; Decrement, adjust accum ;; http://www.z80.info/z80syntx.htm#DAA @@ -582,6 +891,13 @@ OPCODE(27,« ») ;nok +OP_DD(27,«») +OP_CB(27,«») +OP_DDCB(27,«») +OP_FD(27,«») +OP_FDCB(27,«») +OP_ED(27,«») + ;; JR Z,immed.b ;; If zero ;; PC <- PC+immed.b @@ -595,6 +911,13 @@ OPCODE(28,« ») ;nok +OP_DD(28,«») +OP_CB(28,«») +OP_DDCB(28,«») +OP_FD(28,«») +OP_FDCB(28,«») +OP_ED(28,«») + ;; ADD HL,HL ;; No flags ;; ? cycles @@ -603,6 +926,13 @@ OPCODE(29,« ») ;nok +OP_DD(29,«») +OP_CB(29,«») +OP_DDCB(29,«») +OP_FD(29,«») +OP_FDCB(29,«») +OP_ED(29,«») + ;; LD HL,(immed.w) ;; address is absolute ;; 172 cycles @@ -612,6 +942,13 @@ OPCODE(2a,« ») ;nok +OP_DD(2a,«») +OP_CB(2a,«») +OP_DDCB(2a,«») +OP_FD(2a,«») +OP_FDCB(2a,«») +OP_ED(2a,«») + ;; XXX TOO LONG ;; DEC HL ;; ? cycles @@ -620,6 +957,13 @@ OPCODE(2b,« ») ;nok +OP_DD(2b,«») +OP_CB(2b,«») +OP_DDCB(2b,«») +OP_FD(2b,«») +OP_FDCB(2b,«») +OP_ED(2b,«») + ;; INC L ;; 108 cycles OPCODE(2c,« @@ -627,6 +971,13 @@ OPCODE(2c,« ») ;nok +OP_DD(2c,«») +OP_CB(2c,«») +OP_DDCB(2c,«») +OP_FD(2c,«») +OP_FDCB(2c,«») +OP_ED(2c,«») + ;; DEC L ;; 80 cycles OPCODE(2d,« @@ -634,6 +985,13 @@ OPCODE(2d,« ») ;nok +OP_DD(2d,«») +OP_CB(2d,«») +OP_DDCB(2d,«») +OP_FD(2d,«») +OP_FDCB(2d,«») +OP_ED(2d,«») + ;; LD L,immed.b ;; 8 cycles OPCODE(2e,« @@ -641,6 +999,13 @@ OPCODE(2e,« ») ;nok +OP_DD(2e,«») +OP_CB(2e,«») +OP_DDCB(2e,«») +OP_FD(2e,«») +OP_FDCB(2e,«») +OP_ED(2e,«») + ;; CPL ;; A <- NOT A ;; XXX flags @@ -650,6 +1015,13 @@ OPCODE(2f,« ») ;nok +OP_DD(2f,«») +OP_CB(2f,«») +OP_DDCB(2f,«») +OP_FD(2f,«») +OP_FDCB(2f,«») +OP_ED(2f,«») + ;; JR NC,immed.b ;; If carry clear ;; PC <- PC+immed.b @@ -660,6 +1032,13 @@ OPCODE(30,« add.l #1,epc ») +OP_DD(30,«») +OP_CB(30,«») +OP_DDCB(30,«») +OP_FD(30,«») +OP_FDCB(30,«») +OP_ED(30,«») + ;; LD SP,immed.w ;; 140 cycles OPCODE(31,« @@ -669,6 +1048,13 @@ OPCODE(31,« ») ;nok +OP_DD(31,«») +OP_CB(31,«») +OP_DDCB(31,«») +OP_FD(31,«») +OP_FDCB(31,«») +OP_ED(31,«») + ;; LD (immed.w),A ;; store indirect ;; 170 cycles @@ -679,6 +1065,13 @@ OPCODE(32,« ») ;nok +OP_DD(32,«») +OP_CB(32,«») +OP_DDCB(32,«») +OP_FD(32,«») +OP_FDCB(32,«») +OP_ED(32,«») + ;; INC SP ;; No flags ;; @@ -690,6 +1083,13 @@ OPCODE(33,« ») ;nok +OP_DD(33,«») +OP_CB(33,«») +OP_DDCB(33,«») +OP_FD(33,«») +OP_FDCB(33,«») +OP_ED(33,«») + ;; INC (HL) ;; Increment byte ;; SPEED can be made faster @@ -701,6 +1101,13 @@ OPCODE(34,« ») ;nok +OP_DD(34,«») +OP_CB(34,«») +OP_DDCB(34,«») +OP_FD(34,«») +OP_FDCB(34,«») +OP_ED(34,«») + ;; DEC (HL) ;; Decrement byte ;; SPEED can be made faster @@ -712,6 +1119,13 @@ OPCODE(35,« ») ;nok +OP_DD(35,«») +OP_CB(35,«») +OP_DDCB(35,«») +OP_FD(35,«») +OP_FDCB(35,«») +OP_ED(35,«») + ;; LD (HL),immed.b ;; 114 cycles OPCODE(36,« @@ -720,6 +1134,13 @@ OPCODE(36,« ») ;nok +OP_DD(36,«») +OP_CB(36,«») +OP_DDCB(36,«») +OP_FD(36,«») +OP_FDCB(36,«») +OP_ED(36,«») + ;; SCF ;; Set Carry Flag ;; XXX flags are more complicated than this :( @@ -733,6 +1154,13 @@ OPCODE(37,« ») ;nok +OP_DD(37,«») +OP_CB(37,«») +OP_DDCB(37,«») +OP_FD(37,«») +OP_FDCB(37,«») +OP_ED(37,«») + ;; JR C,immed.b ;; If carry set ;; PC <- PC+immed.b @@ -743,6 +1171,13 @@ OPCODE(38,« add.l #1,epc ») +OP_DD(38,«») +OP_CB(38,«») +OP_DDCB(38,«») +OP_FD(38,«») +OP_FDCB(38,«») +OP_ED(38,«») + ;; ADD HL,SP ;; HL <- HL+SP OPCODE(39,« @@ -752,6 +1187,13 @@ OPCODE(39,« ») ;nok +OP_DD(39,«») +OP_CB(39,«») +OP_DDCB(39,«») +OP_FD(39,«») +OP_FDCB(39,«») +OP_ED(39,«») + ;; LD A,(immed.w) OPCODE(3a,« FETCHWI d1 @@ -759,6 +1201,13 @@ OPCODE(3a,« ») ;nok +OP_DD(3a,«») +OP_CB(3a,«») +OP_DDCB(3a,«») +OP_FD(3a,«») +OP_FDCB(3a,«») +OP_ED(3a,«») + ;; DEC SP ;; No flags OPCODE(3b,« @@ -766,17 +1215,38 @@ OPCODE(3b,« ») ;nok +OP_DD(3b,«») +OP_CB(3b,«») +OP_DDCB(3b,«») +OP_FD(3b,«») +OP_FDCB(3b,«») +OP_ED(3b,«») + ;; INC A OPCODE(3c,« F_INC_B eaf ») +OP_DD(3c,«») +OP_CB(3c,«») +OP_DDCB(3c,«») +OP_FD(3c,«») +OP_FDCB(3c,«») +OP_ED(3c,«») + ;; DEC A OPCODE(3d,« F_DEC_B eaf ») ;nok +OP_DD(3d,«») +OP_CB(3d,«») +OP_DDCB(3d,«») +OP_FD(3d,«») +OP_FDCB(3d,«») +OP_ED(3d,«») + ;; LD A,immed.b OPCODE(3e,« FETCHBI eaf @@ -785,6 +1255,14 @@ OPCODE(3e,« ;; CCF ;; Clear carry flag ;; XXX fuck flags + +OP_DD(3e,«») +OP_CB(3e,«») +OP_DDCB(3e,«») +OP_FD(3e,«») +OP_FDCB(3e,«») +OP_ED(3e,«») + OPCODE(3f,« bsr flags_normalize ;; SZ5H3PNC @@ -793,6 +1271,13 @@ OPCODE(3f,« ») ;nok +OP_DD(3f,«») +OP_CB(3f,«») +OP_DDCB(3f,«») +OP_FD(3f,«») +OP_FDCB(3f,«») +OP_ED(3f,«») + ;; LD B,B ;; SPEED OPCODE(40,« @@ -802,6 +1287,13 @@ OPCODE(40,« ») ;nok +OP_DD(40,«») +OP_CB(40,«») +OP_DDCB(40,«») +OP_FD(40,«») +OP_FDCB(40,«») +OP_ED(40,«») + ;; LD B,C OPCODE(41,« move.w ebc,d1 @@ -810,6 +1302,13 @@ OPCODE(41,« ») ;nok +OP_DD(41,«») +OP_CB(41,«») +OP_DDCB(41,«») +OP_FD(41,«») +OP_FDCB(41,«») +OP_ED(41,«») + ;; LD B,D ;; B <- D ;; SPEED @@ -822,6 +1321,13 @@ OPCODE(42,« ») ;nok +OP_DD(42,«») +OP_CB(42,«») +OP_DDCB(42,«») +OP_FD(42,«») +OP_FDCB(42,«») +OP_ED(42,«») + ;; LD B,E ;; B <- E OPCODE(43,« @@ -831,6 +1337,13 @@ OPCODE(43,« ») ;nok +OP_DD(43,«») +OP_CB(43,«») +OP_DDCB(43,«») +OP_FD(43,«») +OP_FDCB(43,«») +OP_ED(43,«») + ;; LD B,H ;; B <- H ;; SPEED @@ -843,6 +1356,13 @@ OPCODE(44,« ») ;nok +OP_DD(44,«») +OP_CB(44,«») +OP_DDCB(44,«») +OP_FD(44,«») +OP_FDCB(44,«») +OP_ED(44,«») + ;; LD B,L ;; B <- L OPCODE(45,« @@ -852,6 +1372,13 @@ OPCODE(45,« ») ;nok +OP_DD(45,«») +OP_CB(45,«») +OP_DDCB(45,«») +OP_FD(45,«») +OP_FDCB(45,«») +OP_ED(45,«») + ;; LD B,(HL) ;; B <- (HL) OPCODE(46,« @@ -861,6 +1388,13 @@ OPCODE(46,« ») ;nok +OP_DD(46,«») +OP_CB(46,«») +OP_DDCB(46,«») +OP_FD(46,«») +OP_FDCB(46,«») +OP_ED(46,«») + ;; LD B,A ;; B <- A OPCODE(47,« @@ -870,6 +1404,13 @@ OPCODE(47,« ») ;nok +OP_DD(47,«») +OP_CB(47,«») +OP_DDCB(47,«») +OP_FD(47,«») +OP_FDCB(47,«») +OP_ED(47,«») + ;; LD C,B ;; C <- B OPCODE(48,« @@ -880,12 +1421,26 @@ OPCODE(48,« ») ;nok +OP_DD(48,«») +OP_CB(48,«») +OP_DDCB(48,«») +OP_FD(48,«») +OP_FDCB(48,«») +OP_ED(48,«») + ;; LD C,C OPCODE(49,« move.b ebc,ebc ») ;nok +OP_DD(49,«») +OP_CB(49,«») +OP_DDCB(49,«») +OP_FD(49,«») +OP_FDCB(49,«») +OP_ED(49,«») + ;; LD C,D OPCODE(4a,« move.w ede,-(sp) @@ -895,12 +1450,26 @@ OPCODE(4a,« ») ;nok +OP_DD(4a,«») +OP_CB(4a,«») +OP_DDCB(4a,«») +OP_FD(4a,«») +OP_FDCB(4a,«») +OP_ED(4a,«») + ;; LD C,E OPCODE(4b,« move.b ebc,ede ») ;nok +OP_DD(4b,«») +OP_CB(4b,«») +OP_DDCB(4b,«») +OP_FD(4b,«») +OP_FDCB(4b,«») +OP_ED(4b,«») + ;; LD C,H OPCODE(4c,« LOHI ehl @@ -909,12 +1478,26 @@ OPCODE(4c,« ») ;nok +OP_DD(4c,«») +OP_CB(4c,«») +OP_DDCB(4c,«») +OP_FD(4c,«») +OP_FDCB(4c,«») +OP_ED(4c,«») + ;; LD C,L OPCODE(4d,« move.b ebc,ehl ») ;nok +OP_DD(4d,«») +OP_CB(4d,«») +OP_DDCB(4d,«») +OP_FD(4d,«») +OP_FDCB(4d,«») +OP_ED(4d,«») + ;; LD C,(HL) ;; C <- (HL) OPCODE(4e,« @@ -922,12 +1505,26 @@ OPCODE(4e,« ») ;nok +OP_DD(4e,«») +OP_CB(4e,«») +OP_DDCB(4e,«») +OP_FD(4e,«») +OP_FDCB(4e,«») +OP_ED(4e,«») + ;; LD C,A OPCODE(4f,« move.b eaf,ebc ») ;nok +OP_DD(4f,«») +OP_CB(4f,«») +OP_DDCB(4f,«») +OP_FD(4f,«») +OP_FDCB(4f,«») +OP_ED(4f,«») + ; faster (slightly bigger) if we abuse sp again, something along the lines of (UNTESTED) ; move.w ebc,-(sp) ; 8, 2 ; move.w ede,-(sp) ; 8, 2 @@ -944,6 +1541,13 @@ OPCODE(50,« ») ;nok +OP_DD(50,«») +OP_CB(50,«») +OP_DDCB(50,«») +OP_FD(50,«») +OP_FDCB(50,«») +OP_ED(50,«») + ;; LD D,C OPCODE(51,« LOHI ede @@ -952,11 +1556,25 @@ OPCODE(51,« ») ;nok +OP_DD(51,«») +OP_CB(51,«») +OP_DDCB(51,«») +OP_FD(51,«») +OP_FDCB(51,«») +OP_ED(51,«») + ;; LD D,D OPCODE(52,« ») ;nok +OP_DD(52,«») +OP_CB(52,«») +OP_DDCB(52,«») +OP_FD(52,«») +OP_FDCB(52,«») +OP_ED(52,«») + ;; LD D,E OPCODE(53,« andi.w #$00ff,ede @@ -966,6 +1584,13 @@ OPCODE(53,« ») ;nok +OP_DD(53,«») +OP_CB(53,«») +OP_DDCB(53,«») +OP_FD(53,«») +OP_FDCB(53,«») +OP_ED(53,«») + ;; LD D,H OPCODE(54,« LOHI ede ; 4 @@ -977,6 +1602,13 @@ OPCODE(54,« ;nok ;20 cycles +OP_DD(54,«») +OP_CB(54,«») +OP_DDCB(54,«») +OP_FD(54,«») +OP_FDCB(54,«») +OP_ED(54,«») + ;; LD D,L OPCODE(55,« LOHI ede @@ -985,6 +1617,13 @@ OPCODE(55,« ») ;nok +OP_DD(55,«») +OP_CB(55,«») +OP_DDCB(55,«») +OP_FD(55,«») +OP_FDCB(55,«») +OP_ED(55,«») + ;; LD D,(HL) ;; D <- (HL) OPCODE(56,« @@ -994,6 +1633,13 @@ OPCODE(56,« ») ;nok +OP_DD(56,«») +OP_CB(56,«») +OP_DDCB(56,«») +OP_FD(56,«») +OP_FDCB(56,«») +OP_ED(56,«») + ;; LD D,A OPCODE(57,« LOHI ede @@ -1002,6 +1648,13 @@ OPCODE(57,« ») ;nok +OP_DD(57,«») +OP_CB(57,«») +OP_DDCB(57,«») +OP_FD(57,«») +OP_FDCB(57,«») +OP_ED(57,«») + ;; LD E,B OPCODE(58,« LOHI ebc @@ -1010,12 +1663,26 @@ OPCODE(58,« ») ;nok +OP_DD(58,«») +OP_CB(58,«») +OP_DDCB(58,«») +OP_FD(58,«») +OP_FDCB(58,«») +OP_ED(58,«») + ;; LD E,C OPCODE(59,« move.b ebc,ede ») ;nok +OP_DD(59,«») +OP_CB(59,«») +OP_DDCB(59,«») +OP_FD(59,«») +OP_FDCB(59,«») +OP_ED(59,«») + ;; LD E,D OPCODE(5a,« andi.w #$ff00,ede ; 8/4 @@ -1025,12 +1692,26 @@ OPCODE(5a,« »,38,,2) ;nok +OP_DD(5a,«») +OP_CB(5a,«») +OP_DDCB(5a,«») +OP_FD(5a,«») +OP_FDCB(5a,«») +OP_ED(5a,«») + ;; LD E,E OPCODE(5b,« move.b ede,ede ») ;nok +OP_DD(5b,«») +OP_CB(5b,«») +OP_DDCB(5b,«») +OP_FD(5b,«») +OP_FDCB(5b,«») +OP_ED(5b,«») + ;; LD E,H OPCODE(5c,« LOHI ehl @@ -1039,24 +1720,52 @@ OPCODE(5c,« ») ;nok +OP_DD(5c,«») +OP_CB(5c,«») +OP_DDCB(5c,«») +OP_FD(5c,«») +OP_FDCB(5c,«») +OP_ED(5c,«») + ;; LD E,L OPCODE(5d,« move.b ede,ehl ») ;nok +OP_DD(5d,«») +OP_CB(5d,«») +OP_DDCB(5d,«») +OP_FD(5d,«») +OP_FDCB(5d,«») +OP_ED(5d,«») + ;; LD E,(HL) OPCODE(5e,« FETCHB ehl,d1 ») ;nok +OP_DD(5e,«») +OP_CB(5e,«») +OP_DDCB(5e,«») +OP_FD(5e,«») +OP_FDCB(5e,«») +OP_ED(5e,«») + ;; LD E,A OPCODE(5f,« move.b ede,eaf ») ;nok +OP_DD(5f,«») +OP_CB(5f,«») +OP_DDCB(5f,«») +OP_FD(5f,«») +OP_FDCB(5f,«») +OP_ED(5f,«») + ;; LD H,B OPCODE(60,« LOHI ebc @@ -1067,6 +1776,13 @@ OPCODE(60,« ») ;nok +OP_DD(60,«») +OP_CB(60,«») +OP_DDCB(60,«») +OP_FD(60,«») +OP_FDCB(60,«») +OP_ED(60,«») + ;; LD H,C OPCODE(61,« LOHI ehl @@ -1075,6 +1791,13 @@ OPCODE(61,« ») ;nok +OP_DD(61,«») +OP_CB(61,«») +OP_DDCB(61,«») +OP_FD(61,«») +OP_FDCB(61,«») +OP_ED(61,«») + ;; LD H,D OPCODE(62,« LOHI ede @@ -1085,6 +1808,13 @@ OPCODE(62,« ») ;nok +OP_DD(62,«») +OP_CB(62,«») +OP_DDCB(62,«») +OP_FD(62,«») +OP_FDCB(62,«») +OP_ED(62,«») + ;; LD H,E OPCODE(63,« LOHI ehl @@ -1093,6 +1823,13 @@ OPCODE(63,« ») ;nok +OP_DD(63,«») +OP_CB(63,«») +OP_DDCB(63,«») +OP_FD(63,«») +OP_FDCB(63,«») +OP_ED(63,«») + ;; LD H,H OPCODE(64,« LOHI ehl @@ -1101,6 +1838,13 @@ OPCODE(64,« ») ;nok +OP_DD(64,«») +OP_CB(64,«») +OP_DDCB(64,«») +OP_FD(64,«») +OP_FDCB(64,«») +OP_ED(64,«») + ;; LD H,L ;; H <- L OPCODE(65,« @@ -1111,6 +1855,13 @@ OPCODE(65,« ») ;nok +OP_DD(65,«») +OP_CB(65,«») +OP_DDCB(65,«») +OP_FD(65,«») +OP_FDCB(65,«») +OP_ED(65,«») + ;; LD H,(HL) OPCODE(66,« FETCHB ehl,d1 @@ -1120,6 +1871,13 @@ OPCODE(66,« ») ;nok +OP_DD(66,«») +OP_CB(66,«») +OP_DDCB(66,«») +OP_FD(66,«») +OP_FDCB(66,«») +OP_ED(66,«») + ;; LD H,A OPCODE(67,« LOHI ehl @@ -1128,6 +1886,13 @@ OPCODE(67,« ») ;nok +OP_DD(67,«») +OP_CB(67,«») +OP_DDCB(67,«») +OP_FD(67,«») +OP_FDCB(67,«») +OP_ED(67,«») + ;; LD L,B OPCODE(68,« LOHI ebc @@ -1136,12 +1901,26 @@ OPCODE(68,« ») ;nok +OP_DD(68,«») +OP_CB(68,«») +OP_DDCB(68,«») +OP_FD(68,«») +OP_FDCB(68,«») +OP_ED(68,«») + ;; LD L,C OPCODE(69,« move.b ebc,ehl ») ;nok +OP_DD(69,«») +OP_CB(69,«») +OP_DDCB(69,«») +OP_FD(69,«») +OP_FDCB(69,«») +OP_ED(69,«») + ;; LD L,D OPCODE(6a,« LOHI ede @@ -1150,12 +1929,26 @@ OPCODE(6a,« ») ;nok +OP_DD(6a,«») +OP_CB(6a,«») +OP_DDCB(6a,«») +OP_FD(6a,«») +OP_FDCB(6a,«») +OP_ED(6a,«») + ;; LD L,E OPCODE(6b,« move.b ede,ehl ») ;nok +OP_DD(6b,«») +OP_CB(6b,«») +OP_DDCB(6b,«») +OP_FD(6b,«») +OP_FDCB(6b,«») +OP_ED(6b,«») + ;; LD L,H OPCODE(6c,« move.b ehl,d1 @@ -1164,12 +1957,26 @@ OPCODE(6c,« ») ;nok +OP_DD(6c,«») +OP_CB(6c,«») +OP_DDCB(6c,«») +OP_FD(6c,«») +OP_FDCB(6c,«») +OP_ED(6c,«») + ;; LD L,L OPCODE(6d,« move.b ehl,ehl ») ;nok +OP_DD(6d,«») +OP_CB(6d,«») +OP_DDCB(6d,«») +OP_FD(6d,«») +OP_FDCB(6d,«») +OP_ED(6d,«») + ;; LD L,(HL) ;; L <- (HL) OPCODE(6e,« @@ -1177,12 +1984,26 @@ OPCODE(6e,« ») ;nok +OP_DD(6e,«») +OP_CB(6e,«») +OP_DDCB(6e,«») +OP_FD(6e,«») +OP_FDCB(6e,«») +OP_ED(6e,«») + ;; LD L,A OPCODE(6f,« move.b eaf,ehl ») ;nok +OP_DD(6f,«») +OP_CB(6f,«») +OP_DDCB(6f,«») +OP_FD(6f,«») +OP_FDCB(6f,«») +OP_ED(6f,«») + ;; LD (HL),B OPCODE(70,« LOHI ebc @@ -1191,12 +2012,26 @@ OPCODE(70,« ») ;nok +OP_DD(70,«») +OP_CB(70,«») +OP_DDCB(70,«») +OP_FD(70,«») +OP_FDCB(70,«») +OP_ED(70,«») + ;; LD (HL),C OPCODE(71,« PUTB ehl,ebc ») ;nok +OP_DD(71,«») +OP_CB(71,«») +OP_DDCB(71,«») +OP_FD(71,«») +OP_FDCB(71,«») +OP_ED(71,«») + ;; LD (HL),D OPCODE(72,« LOHI ede @@ -1205,12 +2040,26 @@ OPCODE(72,« ») ;nok +OP_DD(72,«») +OP_CB(72,«») +OP_DDCB(72,«») +OP_FD(72,«») +OP_FDCB(72,«») +OP_ED(72,«») + ;; LD (HL),E OPCODE(73,« PUTB ehl,ede ») ;nok +OP_DD(73,«») +OP_CB(73,«») +OP_DDCB(73,«») +OP_FD(73,«») +OP_FDCB(73,«») +OP_ED(73,«») + ;; LD (HL),H OPCODE(74,« move.w ehl,d1 @@ -1219,6 +2068,13 @@ OPCODE(74,« ») ;nok +OP_DD(74,«») +OP_CB(74,«») +OP_DDCB(74,«») +OP_FD(74,«») +OP_FDCB(74,«») +OP_ED(74,«») + ;; LD (HL),L OPCODE(75,« move.b ehl,d1 @@ -1226,6 +2082,13 @@ OPCODE(75,« ») ;nok +OP_DD(75,«») +OP_CB(75,«») +OP_DDCB(75,«») +OP_FD(75,«») +OP_FDCB(75,«») +OP_ED(75,«») + ;; HALT ;; XXX do this OPCODE(76,« @@ -1233,12 +2096,26 @@ OPCODE(76,« ») ;nok +OP_DD(76,«») +OP_CB(76,«») +OP_DDCB(76,«») +OP_FD(76,«») +OP_FDCB(76,«») +OP_ED(76,«») + ;; LD (HL),A OPCODE(77,« PUTB eaf,ehl ») ;nok +OP_DD(77,«») +OP_CB(77,«») +OP_DDCB(77,«») +OP_FD(77,«») +OP_FDCB(77,«») +OP_ED(77,«») + ;; LD A,B OPCODE(78,« move.w ebc,d1 @@ -1247,12 +2124,26 @@ OPCODE(78,« ») ;nok +OP_DD(78,«») +OP_CB(78,«») +OP_DDCB(78,«») +OP_FD(78,«») +OP_FDCB(78,«») +OP_ED(78,«») + ;; LD A,C OPCODE(79,« move.b ebc,eaf ») ;nok +OP_DD(79,«») +OP_CB(79,«») +OP_DDCB(79,«») +OP_FD(79,«») +OP_FDCB(79,«») +OP_ED(79,«») + ;; LD A,D OPCODE(7a,« move.w ede,d1 @@ -1261,12 +2152,26 @@ OPCODE(7a,« ») ;nok +OP_DD(7a,«») +OP_CB(7a,«») +OP_DDCB(7a,«») +OP_FD(7a,«») +OP_FDCB(7a,«») +OP_ED(7a,«») + ;; LD A,E OPCODE(7b,« move.b ede,eaf ») ;nok +OP_DD(7b,«») +OP_CB(7b,«») +OP_DDCB(7b,«») +OP_FD(7b,«») +OP_FDCB(7b,«») +OP_ED(7b,«») + ;; LD A,H OPCODE(7c,« move.w ehl,d1 @@ -1275,23 +2180,51 @@ OPCODE(7c,« ») ;nok +OP_DD(7c,«») +OP_CB(7c,«») +OP_DDCB(7c,«») +OP_FD(7c,«») +OP_FDCB(7c,«») +OP_ED(7c,«») + ;; LD A,L OPCODE(7d,« move.b ehl,eaf ») ;nok +OP_DD(7d,«») +OP_CB(7d,«») +OP_DDCB(7d,«») +OP_FD(7d,«») +OP_FDCB(7d,«») +OP_ED(7d,«») + ;; LD A,(HL) ;; A <- (HL) OPCODE(7e,« FETCHB ehl,eaf ») +OP_DD(7e,«») +OP_CB(7e,«») +OP_DDCB(7e,«») +OP_FD(7e,«») +OP_FDCB(7e,«») +OP_ED(7e,«») + ;; LD A,A OPCODE(7f,« ») ;nok +OP_DD(7f,«») +OP_CB(7f,«») +OP_DDCB(7f,«») +OP_FD(7f,«») +OP_FDCB(7f,«») +OP_ED(7f,«») + ;; Do an ADD \2,\1 @@ -1310,12 +2243,26 @@ OPCODE(80,« ») ;nok +OP_DD(80,«») +OP_CB(80,«») +OP_DDCB(80,«») +OP_FD(80,«») +OP_FDCB(80,«») +OP_ED(80,«») + ;; ADD A,C OPCODE(81,« F_ADD_B ebc,eaf ») ;nok +OP_DD(81,«») +OP_CB(81,«») +OP_DDCB(81,«») +OP_FD(81,«») +OP_FDCB(81,«») +OP_ED(81,«») + ;; ADD A,D OPCODE(82,« LOHI ede @@ -1324,12 +2271,26 @@ OPCODE(82,« ») ;nok +OP_DD(82,«») +OP_CB(82,«») +OP_DDCB(82,«») +OP_FD(82,«») +OP_FDCB(82,«») +OP_ED(82,«») + ;; ADD A,E OPCODE(83,« F_ADD_B ede,eaf ») ;nok +OP_DD(83,«») +OP_CB(83,«») +OP_DDCB(83,«») +OP_FD(83,«») +OP_FDCB(83,«») +OP_ED(83,«») + ;; ADD A,H OPCODE(84,« LOHI ehl @@ -1338,12 +2299,26 @@ OPCODE(84,« ») ;nok +OP_DD(84,«») +OP_CB(84,«») +OP_DDCB(84,«») +OP_FD(84,«») +OP_FDCB(84,«») +OP_ED(84,«») + ;; ADD A,L OPCODE(85,« F_ADD_B ehl,eaf ») ;nok +OP_DD(85,«») +OP_CB(85,«») +OP_DDCB(85,«») +OP_FD(85,«») +OP_FDCB(85,«») +OP_ED(85,«») + ;; ADD A,(HL) ;; XXX size? OPCODE(86,« @@ -1353,12 +2328,26 @@ OPCODE(86,« ») ;nok +OP_DD(86,«») +OP_CB(86,«») +OP_DDCB(86,«») +OP_FD(86,«») +OP_FDCB(86,«») +OP_ED(86,«») + ;; ADD A,A OPCODE(87,« F_ADD_B eaf,eaf ») ;nok +OP_DD(87,«») +OP_CB(87,«») +OP_DDCB(87,«») +OP_FD(87,«») +OP_FDCB(87,«») +OP_ED(87,«») + ;; Do an ADC \2,\1 @@ -1378,6 +2367,13 @@ OPCODE(88,« ») ;nok +OP_DD(88,«») +OP_CB(88,«») +OP_DDCB(88,«») +OP_FD(88,«») +OP_FDCB(88,«») +OP_ED(88,«») + ;; ADC A,C ;; A <- A + C + (carry) OPCODE(89,« @@ -1385,6 +2381,13 @@ OPCODE(89,« ») ;nok +OP_DD(89,«») +OP_CB(89,«») +OP_DDCB(89,«») +OP_FD(89,«») +OP_FDCB(89,«») +OP_ED(89,«») + ;; ADC A,D OPCODE(8a,« LOHI ede @@ -1393,6 +2396,13 @@ OPCODE(8a,« ») ;nok +OP_DD(8a,«») +OP_CB(8a,«») +OP_DDCB(8a,«») +OP_FD(8a,«») +OP_FDCB(8a,«») +OP_ED(8a,«») + ;; ADC A,E ;; A <- A + E + carry OPCODE(8b,« @@ -1400,6 +2410,13 @@ OPCODE(8b,« ») ;nok +OP_DD(8b,«») +OP_CB(8b,«») +OP_DDCB(8b,«») +OP_FD(8b,«») +OP_FDCB(8b,«») +OP_ED(8b,«») + ;; ADC A,H OPCODE(8c,« LOHI eaf @@ -1408,12 +2425,26 @@ OPCODE(8c,« ») ;nok +OP_DD(8c,«») +OP_CB(8c,«») +OP_DDCB(8c,«») +OP_FD(8c,«») +OP_FDCB(8c,«») +OP_ED(8c,«») + ;; ADC A,L OPCODE(8d,« F_ADC_B ehl,eaf ») ;nok +OP_DD(8d,«») +OP_CB(8d,«») +OP_DDCB(8d,«») +OP_FD(8d,«») +OP_FDCB(8d,«») +OP_ED(8d,«») + ;; ADC A,(HL) OPCODE(8e,« FETCHB ehl,d2 @@ -1422,12 +2453,26 @@ OPCODE(8e,« ») ;nok +OP_DD(8e,«») +OP_CB(8e,«») +OP_DDCB(8e,«») +OP_FD(8e,«») +OP_FDCB(8e,«») +OP_ED(8e,«») + ;; ADC A,A OPCODE(8f,« F_ADC_B eaf,eaf ») ;nok +OP_DD(8f,«») +OP_CB(8f,«») +OP_DDCB(8f,«») +OP_FD(8f,«») +OP_FDCB(8f,«») +OP_ED(8f,«») + @@ -1448,12 +2493,26 @@ OPCODE(90,« ») ;nok +OP_DD(90,«») +OP_CB(90,«») +OP_DDCB(90,«») +OP_FD(90,«») +OP_FDCB(90,«») +OP_ED(90,«») + ;; SUB A,C OPCODE(91,« F_SUB_B ebc,eaf ») ;nok +OP_DD(91,«») +OP_CB(91,«») +OP_DDCB(91,«») +OP_FD(91,«») +OP_FDCB(91,«») +OP_ED(91,«») + ;; SUB A,D OPCODE(92,« LOHI ede @@ -1462,12 +2521,26 @@ OPCODE(92,« ») ;nok +OP_DD(92,«») +OP_CB(92,«») +OP_DDCB(92,«») +OP_FD(92,«») +OP_FDCB(92,«») +OP_ED(92,«») + ;; SUB A,E OPCODE(93,« F_SUB_B ede,eaf ») ;nok +OP_DD(93,«») +OP_CB(93,«») +OP_DDCB(93,«») +OP_FD(93,«») +OP_FDCB(93,«») +OP_ED(93,«») + ;; SUB A,H OPCODE(94,« LOHI ehl @@ -1476,11 +2549,25 @@ OPCODE(94,« ») ;nok +OP_DD(94,«») +OP_CB(94,«») +OP_DDCB(94,«») +OP_FD(94,«») +OP_FDCB(94,«») +OP_ED(94,«») + ;; SUB A,L OPCODE(95,« F_SUB_B ehl,eaf ») +OP_DD(95,«») +OP_CB(95,«») +OP_DDCB(95,«») +OP_FD(95,«») +OP_FDCB(95,«») +OP_ED(95,«») + ;; SUB A,(HL) OPCODE(96,« FETCHB ehl,d2 @@ -1489,12 +2576,26 @@ OPCODE(96,« ») ;nok +OP_DD(96,«») +OP_CB(96,«») +OP_DDCB(96,«») +OP_FD(96,«») +OP_FDCB(96,«») +OP_ED(96,«») + ;; SUB A,A OPCODE(97,« F_SUB_B eaf,eaf ») ;nok +OP_DD(97,«») +OP_CB(97,«») +OP_DDCB(97,«») +OP_FD(97,«») +OP_FDCB(97,«») +OP_ED(97,«») + @@ -1514,12 +2615,26 @@ OPCODE(98,« ») ;nok +OP_DD(98,«») +OP_CB(98,«») +OP_DDCB(98,«») +OP_FD(98,«») +OP_FDCB(98,«») +OP_ED(98,«») + ;; SBC A,C OPCODE(99,« F_SBC_B ebc,eaf ») ;nok +OP_DD(99,«») +OP_CB(99,«») +OP_DDCB(99,«») +OP_FD(99,«») +OP_FDCB(99,«») +OP_ED(99,«») + ;; SBC A,D OPCODE(9a,« LOHI ede @@ -1528,12 +2643,26 @@ OPCODE(9a,« ») ;nok +OP_DD(9a,«») +OP_CB(9a,«») +OP_DDCB(9a,«») +OP_FD(9a,«») +OP_FDCB(9a,«») +OP_ED(9a,«») + ;; SBC A,E OPCODE(9b,« F_SBC_B ede,eaf ») ;nok +OP_DD(9b,«») +OP_CB(9b,«») +OP_DDCB(9b,«») +OP_FD(9b,«») +OP_FDCB(9b,«») +OP_ED(9b,«») + ;; SBC A,H OPCODE(9c,« LOHI ehl @@ -1542,12 +2671,26 @@ OPCODE(9c,« ») ;nok +OP_DD(9c,«») +OP_CB(9c,«») +OP_DDCB(9c,«») +OP_FD(9c,«») +OP_FDCB(9c,«») +OP_ED(9c,«») + ;; SBC A,L OPCODE(9d,« F_SBC_B ehl,eaf ») ;nok +OP_DD(9d,«») +OP_CB(9d,«») +OP_DDCB(9d,«») +OP_FD(9d,«») +OP_FDCB(9d,«») +OP_ED(9d,«») + ;; SBC A,(HL) OPCODE(9e,« FETCHB ehl,d2 @@ -1556,6 +2699,13 @@ OPCODE(9e,« ») ;nok +OP_DD(9e,«») +OP_CB(9e,«») +OP_DDCB(9e,«») +OP_FD(9e,«») +OP_FDCB(9e,«») +OP_ED(9e,«») + ;; SBC A,A OPCODE(9f,« F_SBC_B eaf,eaf @@ -1573,6 +2723,13 @@ F_AND_B MACRO move.b d1,\2 ENDM +OP_DD(9f,«») +OP_CB(9f,«») +OP_DDCB(9f,«») +OP_FD(9f,«») +OP_FDCB(9f,«») +OP_ED(9f,«») + ;; AND B OPCODE(a0,« LOHI ebc @@ -1581,11 +2738,25 @@ OPCODE(a0,« ») ;nok +OP_DD(a0,«») +OP_CB(a0,«») +OP_DDCB(a0,«») +OP_FD(a0,«») +OP_FDCB(a0,«») +OP_ED(a0,«») + ;; AND C OPCODE(a1,« F_AND_B ebc,eaf ») +OP_DD(a1,«») +OP_CB(a1,«») +OP_DDCB(a1,«») +OP_FD(a1,«») +OP_FDCB(a1,«») +OP_ED(a1,«») + ;; AND D OPCODE(a2,« LOHI ede @@ -1594,12 +2765,26 @@ OPCODE(a2,« ») ;nok +OP_DD(a2,«») +OP_CB(a2,«») +OP_DDCB(a2,«») +OP_FD(a2,«») +OP_FDCB(a2,«») +OP_ED(a2,«») + ;; AND E OPCODE(a3,« F_AND_B ede,eaf ») ;nok +OP_DD(a3,«») +OP_CB(a3,«») +OP_DDCB(a3,«») +OP_FD(a3,«») +OP_FDCB(a3,«») +OP_ED(a3,«») + ;; AND H OPCODE(a4,« LOHI ehl @@ -1608,12 +2793,26 @@ OPCODE(a4,« ») ;nok +OP_DD(a4,«») +OP_CB(a4,«») +OP_DDCB(a4,«») +OP_FD(a4,«») +OP_FDCB(a4,«») +OP_ED(a4,«») + ;; AND L OPCODE(a5,« F_AND_B ehl,eaf ») ;nok +OP_DD(a5,«») +OP_CB(a5,«») +OP_DDCB(a5,«») +OP_FD(a5,«») +OP_FDCB(a5,«») +OP_ED(a5,«») + ;; AND (HL) OPCODE(a6,« FETCHB ehl,d2 @@ -1622,6 +2821,13 @@ OPCODE(a6,« ») ;nok +OP_DD(a6,«») +OP_CB(a6,«») +OP_DDCB(a6,«») +OP_FD(a6,«») +OP_FDCB(a6,«») +OP_ED(a6,«») + ;; AND A ;; SPEED ... It's probably not necessary to run this faster. OPCODE(a7,« @@ -1640,6 +2846,13 @@ F_XOR_B MACRO move.b d1,\2 ENDM +OP_DD(a7,«») +OP_CB(a7,«») +OP_DDCB(a7,«») +OP_FD(a7,«») +OP_FDCB(a7,«») +OP_ED(a7,«») + ;; XOR B OPCODE(a8,« LOHI ebc @@ -1648,12 +2861,26 @@ OPCODE(a8,« ») ;nok +OP_DD(a8,«») +OP_CB(a8,«») +OP_DDCB(a8,«») +OP_FD(a8,«») +OP_FDCB(a8,«») +OP_ED(a8,«») + ;; XOR C OPCODE(a9,« F_XOR_B ebc,eaf ») ;nok +OP_DD(a9,«») +OP_CB(a9,«») +OP_DDCB(a9,«») +OP_FD(a9,«») +OP_FDCB(a9,«») +OP_ED(a9,«») + ;; XOR D OPCODE(aa,« LOHI ede @@ -1662,12 +2889,26 @@ OPCODE(aa,« ») ;nok +OP_DD(aa,«») +OP_CB(aa,«») +OP_DDCB(aa,«») +OP_FD(aa,«») +OP_FDCB(aa,«») +OP_ED(aa,«») + ;; XOR E OPCODE(ab,« F_XOR_B ede,eaf ») ;nok +OP_DD(ab,«») +OP_CB(ab,«») +OP_DDCB(ab,«») +OP_FD(ab,«») +OP_FDCB(ab,«») +OP_ED(ab,«») + ;; XOR H OPCODE(ac,« LOHI ehl @@ -1676,12 +2917,26 @@ OPCODE(ac,« ») ;nok +OP_DD(ac,«») +OP_CB(ac,«») +OP_DDCB(ac,«») +OP_FD(ac,«») +OP_FDCB(ac,«») +OP_ED(ac,«») + ;; XOR L OPCODE(ad,« F_XOR_B ehl,eaf ») ;nok +OP_DD(ad,«») +OP_CB(ad,«») +OP_DDCB(ad,«») +OP_FD(ad,«») +OP_FDCB(ad,«») +OP_ED(ad,«») + ;; XOR (HL) OPCODE(ae,« FETCHB ehl,d2 @@ -1690,6 +2945,13 @@ OPCODE(ae,« ») ;nok +OP_DD(ae,«») +OP_CB(ae,«») +OP_DDCB(ae,«») +OP_FD(ae,«») +OP_FDCB(ae,«») +OP_ED(ae,«») + ;; XOR A OPCODE(af,« F_XOR_B eaf,eaf @@ -1708,6 +2970,13 @@ F_OR_B MACRO move.b d1,\2 ENDM +OP_DD(af,«») +OP_CB(af,«») +OP_DDCB(af,«») +OP_FD(af,«») +OP_FDCB(af,«») +OP_ED(af,«») + ;; OR B OPCODE(b0,« LOHI ebc @@ -1716,12 +2985,26 @@ OPCODE(b0,« ») ;nok +OP_DD(b0,«») +OP_CB(b0,«») +OP_DDCB(b0,«») +OP_FD(b0,«») +OP_FDCB(b0,«») +OP_ED(b0,«») + ;; OR C OPCODE(b1,« F_OR_B ebc,eaf ») ;nok +OP_DD(b1,«») +OP_CB(b1,«») +OP_DDCB(b1,«») +OP_FD(b1,«») +OP_FDCB(b1,«») +OP_ED(b1,«») + ;; OR D OPCODE(b2,« LOHI ede @@ -1730,12 +3013,26 @@ OPCODE(b2,« ») ;nok +OP_DD(b2,«») +OP_CB(b2,«») +OP_DDCB(b2,«») +OP_FD(b2,«») +OP_FDCB(b2,«») +OP_ED(b2,«») + ;; OR E OPCODE(b3,« F_OR_B ede,eaf ») ;nok +OP_DD(b3,«») +OP_CB(b3,«») +OP_DDCB(b3,«») +OP_FD(b3,«») +OP_FDCB(b3,«») +OP_ED(b3,«») + ;; OR H OPCODE(b4,« LOHI ehl @@ -1744,12 +3041,26 @@ OPCODE(b4,« ») ;nok +OP_DD(b4,«») +OP_CB(b4,«») +OP_DDCB(b4,«») +OP_FD(b4,«») +OP_FDCB(b4,«») +OP_ED(b4,«») + ;; OR L OPCODE(b5,« F_OR_B ehl,eaf ») ;nok +OP_DD(b5,«») +OP_CB(b5,«») +OP_DDCB(b5,«») +OP_FD(b5,«») +OP_FDCB(b5,«») +OP_ED(b5,«») + ;; OR (HL) OPCODE(b6,« ;; SPEED unnecessary move @@ -1759,6 +3070,13 @@ OPCODE(b6,« ;nok OPCODE(b7,« +OP_DD(b6,«») +OP_CB(b6,«») +OP_DDCB(b6,«») +OP_FD(b6,«») +OP_FDCB(b6,«») +OP_ED(b6,«») + ;; OR A F_OR_B eaf,eaf ») @@ -1778,6 +3096,13 @@ F_CP_B MACRO ;; no result to save ENDM +OP_DD(b7,«») +OP_CB(b7,«») +OP_DDCB(b7,«») +OP_FD(b7,«») +OP_FDCB(b7,«») +OP_ED(b7,«») + ;; CP B OPCODE(b8,« move.w ebc,d2 @@ -1786,12 +3111,26 @@ OPCODE(b8,« ») ;nok +OP_DD(b8,«») +OP_CB(b8,«») +OP_DDCB(b8,«») +OP_FD(b8,«») +OP_FDCB(b8,«») +OP_ED(b8,«») + ;; CP C OPCODE(b9,« F_CP_B ebc,eaf ») ;nok +OP_DD(b9,«») +OP_CB(b9,«») +OP_DDCB(b9,«») +OP_FD(b9,«») +OP_FDCB(b9,«») +OP_ED(b9,«») + ;; CP D OPCODE(ba,« move.w ede,d2 @@ -1800,12 +3139,26 @@ OPCODE(ba,« ») ;nok +OP_DD(ba,«») +OP_CB(ba,«») +OP_DDCB(ba,«») +OP_FD(ba,«») +OP_FDCB(ba,«») +OP_ED(ba,«») + ;; CP E OPCODE(bb,« F_CP_B ede,eaf ») ;nok +OP_DD(bb,«») +OP_CB(bb,«») +OP_DDCB(bb,«») +OP_FD(bb,«») +OP_FDCB(bb,«») +OP_ED(bb,«») + ;; CP H OPCODE(bc,« move.w ehl,d2 @@ -1814,12 +3167,26 @@ OPCODE(bc,« ») ;nok +OP_DD(bc,«») +OP_CB(bc,«») +OP_DDCB(bc,«») +OP_FD(bc,«») +OP_FDCB(bc,«») +OP_ED(bc,«») + ;; CP L OPCODE(bd,« F_CP_B ehl,eaf ») ;nok +OP_DD(bd,«») +OP_CB(bd,«») +OP_DDCB(bd,«») +OP_FD(bd,«») +OP_FDCB(bd,«») +OP_ED(bd,«») + ;; CP (HL) OPCODE(be,« FETCHB ehl,d2 @@ -1828,11 +3195,25 @@ OPCODE(be,« ») ;nok +OP_DD(be,«») +OP_CB(be,«») +OP_DDCB(be,«») +OP_FD(be,«») +OP_FDCB(be,«») +OP_ED(be,«») + ;; CP A OPCODE(bf,« F_CP_B eaf,eaf ») +OP_DD(bf,«») +OP_CB(bf,«») +OP_DDCB(bf,«») +OP_FD(bf,«») +OP_FDCB(bf,«») +OP_ED(bf,«») + ;; RET NZ ;; if ~Z ;; PCl <- (SP) @@ -1845,6 +3226,13 @@ OPCODE(c0,« ») ;nok +OP_DD(c0,«») +OP_CB(c0,«») +OP_DDCB(c0,«») +OP_FD(c0,«») +OP_FDCB(c0,«») +OP_ED(c0,«») + ;; POP BC ;; Pops a word into BC OPCODE(c1,« ; S10 T @@ -1852,6 +3240,13 @@ OPCODE(c1,« ; S10 T ») ;nok +OP_DD(c1,«») +OP_CB(c1,«») +OP_DDCB(c1,«») +OP_FD(c1,«») +OP_FDCB(c1,«») +OP_ED(c1,«») + ;; JP NZ,immed.w ;; if ~Z ;; PC <- immed.w @@ -1862,6 +3257,13 @@ OPCODE(c2,« ») ;nok +OP_DD(c2,«») +OP_CB(c2,«») +OP_DDCB(c2,«») +OP_FD(c2,«») +OP_FDCB(c2,«») +OP_ED(c2,«») + ;; JP immed.w ;; PC <- immed.w OPCODE(c3,« @@ -1870,6 +3272,13 @@ OPCODE(c3,« movea.l a0,epc »,36,,12) +OP_DD(c3,«») +OP_CB(c3,«») +OP_DDCB(c3,«») +OP_FD(c3,«») +OP_FDCB(c3,«») +OP_ED(c3,«») + ;; CALL NZ,immed.w ;; If ~Z, CALL immed.w OPCODE(c4,« @@ -1882,12 +3291,26 @@ OPCODE(c4,« ») ;nok +OP_DD(c4,«») +OP_CB(c4,«») +OP_DDCB(c4,«») +OP_FD(c4,«») +OP_FDCB(c4,«») +OP_ED(c4,«») + ;; PUSH BC OPCODE(c5,« PUSHW ebc ») ;nok +OP_DD(c5,«») +OP_CB(c5,«») +OP_DDCB(c5,«») +OP_FD(c5,«») +OP_FDCB(c5,«») +OP_ED(c5,«») + ;; ADD A,immed.b OPCODE(c6,« FETCHBI d1 @@ -1895,6 +3318,13 @@ OPCODE(c6,« ») ;nok +OP_DD(c6,«») +OP_CB(c6,«») +OP_DDCB(c6,«») +OP_FD(c6,«») +OP_FDCB(c6,«») +OP_ED(c6,«») + ;; RST &0 ;; == CALL 0 ;; XXX check @@ -1908,6 +3338,13 @@ OPCODE(c7,« ») ;nok +OP_DD(c7,«») +OP_CB(c7,«») +OP_DDCB(c7,«») +OP_FD(c7,«») +OP_FDCB(c7,«») +OP_ED(c7,«») + ;; RET Z OPCODE(c8,« bsr f_norm_z @@ -1915,6 +3352,13 @@ OPCODE(c8,« ») ;nok +OP_DD(c8,«») +OP_CB(c8,«») +OP_DDCB(c8,«») +OP_FD(c8,«») +OP_FDCB(c8,«») +OP_ED(c8,«») + ;; RET ;; PCl <- (SP) ;; PCh <- (SP+1) POPW @@ -1926,6 +3370,13 @@ OPCODE(c9,« ») ;nok +OP_DD(c9,«») +OP_CB(c9,«») +OP_DDCB(c9,«») +OP_FD(c9,«») +OP_FDCB(c9,«») +OP_ED(c9,«») + ;; JP Z,immed.w ;; If Z, jump OPCODE(ca,« @@ -1934,11 +3385,25 @@ OPCODE(ca,« add.l #2,epc ») ;nok +OP_DD(ca,«») +OP_CB(ca,«») +OP_DDCB(ca,«») +OP_FD(ca,«») +OP_FDCB(ca,«») +OP_ED(ca,«») + ;; prefix OPCODE(cb,« movea.w emu_op_undo_cb(pc),a2 ») - ;; nok + ;nok + +OP_DD(cb,«») +OP_CB(cb,«») +OP_DDCB(cb,«») +OP_FD(cb,«») +OP_FDCB(cb,«») +OP_ED(cb,«») ;; CALL Z,immed.w OPCODE(cc,« @@ -1948,6 +3413,13 @@ OPCODE(cc,« ») ;nok +OP_DD(cc,«») +OP_CB(cc,«») +OP_DDCB(cc,«») +OP_FD(cc,«») +OP_FDCB(cc,«») +OP_ED(cc,«») + ;; CALL immed.w ;; (Like JSR on 68k) ;; (SP-1) <- PCh @@ -1962,6 +3434,13 @@ OPCODE(cd,« bra emu_op_c3 ; JP ») +OP_DD(cd,«») +OP_CB(cd,«») +OP_DDCB(cd,«») +OP_FD(cd,«») +OP_FDCB(cd,«») +OP_ED(cd,«») + ;; ADC A,immed.b OPCODE(ce,« FETCHWI d1 @@ -1969,6 +3448,13 @@ OPCODE(ce,« ») ;nok +OP_DD(ce,«») +OP_CB(ce,«») +OP_DDCB(ce,«») +OP_FD(ce,«») +OP_FDCB(ce,«») +OP_ED(ce,«») + ;; RST &08 ;; == CALL 8 OPCODE(cf,« @@ -1981,6 +3467,13 @@ OPCODE(cf,« ») ;nok +OP_DD(cf,«») +OP_CB(cf,«») +OP_DDCB(cf,«») +OP_FD(cf,«») +OP_FDCB(cf,«») +OP_ED(cf,«») + ;; RET NC OPCODE(d0,« bsr f_norm_c @@ -1988,12 +3481,26 @@ OPCODE(d0,« ») ;nok +OP_DD(d0,«») +OP_CB(d0,«») +OP_DDCB(d0,«») +OP_FD(d0,«») +OP_FDCB(d0,«») +OP_ED(d0,«») + ;; POP DE OPCODE(d1,« POPW ede ») ;nok +OP_DD(d1,«») +OP_CB(d1,«») +OP_DDCB(d1,«») +OP_FD(d1,«») +OP_FDCB(d1,«») +OP_ED(d1,«») + ;; JP NC,immed.w OPCODE(d2,« bsr f_norm_c @@ -2001,6 +3508,13 @@ OPCODE(d2,« add.l #2,epc ») +OP_DD(d2,«») +OP_CB(d2,«») +OP_DDCB(d2,«») +OP_FD(d2,«») +OP_FDCB(d2,«») +OP_ED(d2,«») + ;; OUT immed.b,A OPCODE(d3,« move.b eaf,d1 @@ -2009,6 +3523,13 @@ OPCODE(d3,« ») ;nok +OP_DD(d3,«») +OP_CB(d3,«») +OP_DDCB(d3,«») +OP_FD(d3,«») +OP_FDCB(d3,«») +OP_ED(d3,«») + ;; CALL NC,immed.w OPCODE(d4,« bsr f_norm_c @@ -2017,12 +3538,26 @@ OPCODE(d4,« ») ;nok +OP_DD(d4,«») +OP_CB(d4,«») +OP_DDCB(d4,«») +OP_FD(d4,«») +OP_FDCB(d4,«») +OP_ED(d4,«») + ;; PUSH DE OPCODE(d5,« PUSHW ede ») ;nok +OP_DD(d5,«») +OP_CB(d5,«») +OP_DDCB(d5,«») +OP_FD(d5,«») +OP_FDCB(d5,«») +OP_ED(d5,«») + ;; SUB A,immed.b OPCODE(d6,« FETCHBI d1 @@ -2030,6 +3565,13 @@ OPCODE(d6,« ») ;nok +OP_DD(d6,«») +OP_CB(d6,«») +OP_DDCB(d6,«») +OP_FD(d6,«») +OP_FDCB(d6,«») +OP_ED(d6,«») + ;; RST &10 ;; == CALL 10 OPCODE(d7,« @@ -2042,6 +3584,13 @@ OPCODE(d7,« ») ;nok +OP_DD(d7,«») +OP_CB(d7,«») +OP_DDCB(d7,«») +OP_FD(d7,«») +OP_FDCB(d7,«») +OP_ED(d7,«») + ;; RET C OPCODE(d8,« bsr f_norm_c @@ -2049,6 +3598,13 @@ OPCODE(d8,« ») ;nok +OP_DD(d8,«») +OP_CB(d8,«») +OP_DDCB(d8,«») +OP_FD(d8,«») +OP_FDCB(d8,«») +OP_ED(d8,«») + ;; EXX OPCODE(d9,« swap ebc @@ -2057,6 +3613,13 @@ OPCODE(d9,« ») ;nok +OP_DD(d9,«») +OP_CB(d9,«») +OP_DDCB(d9,«») +OP_FD(d9,«») +OP_FDCB(d9,«») +OP_ED(d9,«») + ;; JP C,immed.w OPCODE(da,« bsr f_norm_c @@ -2065,6 +3628,13 @@ OPCODE(da,« ;nok OPCODE(db,« +OP_DD(da,«») +OP_CB(da,«») +OP_DDCB(da,«») +OP_FD(da,«») +OP_FDCB(da,«») +OP_ED(da,«») + ;; IN A,immed.b move.b eaf,d1 FETCHBI d0 @@ -2072,6 +3642,13 @@ OPCODE(db,« ») ;nok +OP_DD(db,«») +OP_CB(db,«») +OP_DDCB(db,«») +OP_FD(db,«») +OP_FDCB(db,«») +OP_ED(db,«») + ;; CALL C,immed.w OPCODE(dc,« bsr f_norm_c @@ -2084,6 +3661,13 @@ OPCODE(dd,« ; prefix movea.w emu_op_undo_dd(pc),a2 ») +OP_DD(dc,«») +OP_CB(dc,«») +OP_DDCB(dc,«») +OP_FD(dc,«») +OP_FDCB(dc,«») +OP_ED(dc,«») + ;; SBC A,immed.b OPCODE(de,« FETCHWI d1 @@ -2091,6 +3675,13 @@ OPCODE(de,« ») ;nok +OP_DD(dd,«») +OP_CB(dd,«») +OP_DDCB(dd,«») +OP_FD(dd,«») +OP_FDCB(dd,«») +OP_ED(dd,«») + ;; RST &18 ;; == CALL 18 OPCODE(df,« @@ -2103,6 +3694,13 @@ OPCODE(df,« ») ;nok +OP_DD(de,«») +OP_CB(de,«») +OP_DDCB(de,«») +OP_FD(de,«») +OP_FDCB(de,«») +OP_ED(de,«») + ;; RET PO ;; If parity odd (P zero), return OPCODE(e0,« @@ -2111,12 +3709,26 @@ OPCODE(e0,« ») ;nok +OP_DD(df,«») +OP_CB(df,«») +OP_DDCB(df,«») +OP_FD(df,«») +OP_FDCB(df,«») +OP_ED(df,«») + ;; POP HL OPCODE(e1,« POPW ehl ») ;nok +OP_DD(e0,«») +OP_CB(e0,«») +OP_DDCB(e0,«») +OP_FD(e0,«») +OP_FDCB(e0,«») +OP_ED(e0,«») + ;; JP PO,immed.w OPCODE(e2,« bsr f_norm_pv @@ -2125,6 +3737,13 @@ OPCODE(e2,« ») ;nok +OP_DD(e1,«») +OP_CB(e1,«») +OP_DDCB(e1,«») +OP_FD(e1,«») +OP_FDCB(e1,«») +OP_ED(e1,«») + ;; EX (SP),HL ;; Exchange OPCODE(e3,« @@ -2134,6 +3753,13 @@ OPCODE(e3,« ») ;nok +OP_DD(e2,«») +OP_CB(e2,«») +OP_DDCB(e2,«») +OP_FD(e2,«») +OP_FDCB(e2,«») +OP_ED(e2,«») + ;; CALL PO,immed.w ;; if parity odd (P=0), call OPCODE(e4,« @@ -2143,12 +3769,26 @@ OPCODE(e4,« ») ;nok +OP_DD(e3,«») +OP_CB(e3,«») +OP_DDCB(e3,«») +OP_FD(e3,«») +OP_FDCB(e3,«») +OP_ED(e3,«») + ;; PUSH HL OPCODE(e5,« PUSHW ehl ») ;nok +OP_DD(e4,«») +OP_CB(e4,«») +OP_DDCB(e4,«») +OP_FD(e4,«») +OP_FDCB(e4,«») +OP_ED(e4,«») + ;; AND immed.b OPCODE(e6,« FETCHBI d1 @@ -2156,6 +3796,13 @@ OPCODE(e6,« ») ;nok +OP_DD(e5,«») +OP_CB(e5,«») +OP_DDCB(e5,«») +OP_FD(e5,«») +OP_FDCB(e5,«») +OP_ED(e5,«») + ;; RST &20 ;; == CALL 20 OPCODE(e7,« @@ -2168,6 +3815,13 @@ OPCODE(e7,« ») ;nok +OP_DD(e6,«») +OP_CB(e6,«») +OP_DDCB(e6,«») +OP_FD(e6,«») +OP_FDCB(e6,«») +OP_ED(e6,«») + ;; RET PE ;; If parity odd (P zero), return OPCODE(e8,« @@ -2176,6 +3830,13 @@ OPCODE(e8,« ») ;nok +OP_DD(e7,«») +OP_CB(e7,«») +OP_DDCB(e7,«») +OP_FD(e7,«») +OP_FDCB(e7,«») +OP_ED(e7,«») + ;; JP (HL) OPCODE(e9,« FETCHB ehl,d1 @@ -2184,6 +3845,13 @@ OPCODE(e9,« ») ;nok +OP_DD(e8,«») +OP_CB(e8,«») +OP_DDCB(e8,«») +OP_FD(e8,«») +OP_FDCB(e8,«») +OP_ED(e8,«») + ;; JP PE,immed.w OPCODE(ea,« bsr f_norm_pv @@ -2192,12 +3860,26 @@ OPCODE(ea,« ») ;nok +OP_DD(e9,«») +OP_CB(e9,«») +OP_DDCB(e9,«») +OP_FD(e9,«») +OP_FDCB(e9,«») +OP_ED(e9,«») + ;; EX DE,HL OPCODE(eb,« exg.w ede,ehl ») ;nok +OP_DD(ea,«») +OP_CB(ea,«») +OP_DDCB(ea,«») +OP_FD(ea,«») +OP_FDCB(ea,«») +OP_ED(ea,«») + ;; CALL PE,immed.w ;; If parity even (P=1), call OPCODE(ec,« @@ -2207,12 +3889,26 @@ OPCODE(ec,« ») ;nok +OP_DD(eb,«») +OP_CB(eb,«») +OP_DDCB(eb,«») +OP_FD(eb,«») +OP_FDCB(eb,«») +OP_ED(eb,«») + ;; XXX this probably ought to hold interrupts too OPCODE(ed,« ; prefix movea.w emu_op_undo_ed(pc),a2 ») ;nok +OP_DD(ec,«») +OP_CB(ec,«») +OP_DDCB(ec,«») +OP_FD(ec,«») +OP_FDCB(ec,«») +OP_ED(ec,«») + ;; XOR immed.b OPCODE(ee,« FETCHBI d1 @@ -2220,6 +3916,13 @@ OPCODE(ee,« ») ;nok +OP_DD(ed,«») +OP_CB(ed,«») +OP_DDCB(ed,«») +OP_FD(ed,«») +OP_FDCB(ed,«») +OP_ED(ed,«») + ;; RST &28 ;; == CALL 28 OPCODE(ef,« @@ -2232,6 +3935,13 @@ OPCODE(ef,« ») ;nok +OP_DD(ee,«») +OP_CB(ee,«») +OP_DDCB(ee,«») +OP_FD(ee,«») +OP_FDCB(ee,«») +OP_ED(ee,«») + ;; RET P ;; Return if Positive OPCODE(f0,« @@ -2240,6 +3950,13 @@ OPCODE(f0,« ») ;nok +OP_DD(ef,«») +OP_CB(ef,«») +OP_DDCB(ef,«») +OP_FD(ef,«») +OP_FDCB(ef,«») +OP_ED(ef,«») + ;; POP AF ;; SPEED this can be made faster ... ;; XXX AF @@ -2250,6 +3967,13 @@ OPCODE(f1,« ») ;nok +OP_DD(f0,«») +OP_CB(f0,«») +OP_DDCB(f0,«») +OP_FD(f0,«») +OP_FDCB(f0,«») +OP_ED(f0,«») + ;; JP P,immed.w OPCODE(f2,« bsr f_norm_sign @@ -2259,10 +3983,24 @@ OPCODE(f2,« ;nok OPCODE(f3,« +OP_DD(f1,«») +OP_CB(f1,«») +OP_DDCB(f1,«») +OP_FD(f1,«») +OP_FDCB(f1,«») +OP_ED(f1,«») + ;; DI bsr ints_stop ») +OP_DD(f2,«») +OP_CB(f2,«») +OP_DDCB(f2,«») +OP_FD(f2,«») +OP_FDCB(f2,«») +OP_ED(f2,«») + ;; CALL P,&0000 ;; Call if positive (S=0) OPCODE(f4,« @@ -2271,6 +4009,13 @@ OPCODE(f4,« ») ;nok +OP_DD(f3,«») +OP_CB(f3,«») +OP_DDCB(f3,«») +OP_FD(f3,«») +OP_FDCB(f3,«») +OP_ED(f3,«») + ;; PUSH AF OPCODE(f5,« bsr flags_normalize @@ -2282,13 +4027,27 @@ OPCODE(f5,« ») ;nok -OPCODE(f6,« +OP_DD(f5,«») +OP_CB(f5,«») +OP_DDCB(f5,«») +OP_FD(f5,«») +OP_FDCB(f5,«») +OP_ED(f5,«») + ;; OR immed.b +OPCODE(f6,« FETCHBI d1 F_OR_B d1,eaf ») ;nok +OP_DD(f6,«») +OP_CB(f6,«») +OP_DDCB(f6,«») +OP_FD(f6,«») +OP_FDCB(f6,«») +OP_ED(f6,«») + ;; RST &30 ;; == CALL 30 OPCODE(f7,« @@ -2301,6 +4060,13 @@ OPCODE(f7,« ») ;nok +OP_DD(f7,«») +OP_CB(f7,«») +OP_DDCB(f7,«») +OP_FD(f7,«») +OP_FDCB(f7,«») +OP_ED(f7,«») + ;; RET M ;; Return if Sign == 1, minus OPCODE(f8,« @@ -2309,6 +4075,13 @@ OPCODE(f8,« ») ;nok +OP_DD(f8,«») +OP_CB(f8,«») +OP_DDCB(f8,«») +OP_FD(f8,«») +OP_FDCB(f8,«») +OP_ED(f8,«») + ;; LD SP,HL ;; SP <- HL OPCODE(f9,« @@ -2318,6 +4091,13 @@ OPCODE(f9,« ») ;nok +OP_DD(f9,«») +OP_CB(f9,«») +OP_DDCB(f9,«») +OP_FD(f9,«») +OP_FDCB(f9,«») +OP_ED(f9,«») + ;; JP M,immed.w OPCODE(fa,« bsr f_norm_sign @@ -2326,12 +4106,26 @@ OPCODE(fa,« ») ;nok +OP_DD(fa,«») +OP_CB(fa,«») +OP_DDCB(fa,«») +OP_FD(fa,«») +OP_FDCB(fa,«») +OP_ED(fa,«») + ;; EI OPCODE(fb,« bsr ints_start ») ;nok +OP_DD(fb,«») +OP_CB(fb,«») +OP_DDCB(fb,«») +OP_FD(fb,«») +OP_FDCB(fb,«») +OP_ED(fb,«») + ;; CALL M,immed.w ;; Call if minus (S=1) OPCODE(fc,« @@ -2341,11 +4135,25 @@ OPCODE(fc,« ») ;nok +OP_DD(fc,«») +OP_CB(fc,«») +OP_DDCB(fc,«») +OP_FD(fc,«») +OP_FDCB(fc,«») +OP_ED(fc,«») + ;; swap IY, HL OPCODE(fd,« ; prefix movea.w emu_op_undo_fd(pc),a2 ») +OP_DD(fd,«») +OP_CB(fd,«») +OP_DDCB(fd,«») +OP_FD(fd,«») +OP_FDCB(fd,«») +OP_ED(fd,«») + ;; CP immed.b OPCODE(fe,« FETCHBI d1 @@ -2353,6 +4161,13 @@ OPCODE(fe,« ») ;nok +OP_DD(fe,«») +OP_CB(fe,«») +OP_DDCB(fe,«») +OP_FD(fe,«») +OP_FDCB(fe,«») +OP_ED(fe,«») + ;; RST &38 ;; == CALL 38 OPCODE(ff,« @@ -2364,3 +4179,11 @@ OPCODE(ff,« move.l a0,epc ») ;nok + +OP_DD(ff,«») +OP_CB(ff,«») +OP_DDCB(ff,«») +OP_FD(ff,«») +OP_FDCB(ff,«») +OP_ED(ff,«») + |
