summaryrefslogtreecommitdiff
path: root/opcodes.asm.m4
diff options
context:
space:
mode:
authorAstrid Smith2011-06-26 01:12:30 -0700
committerAstrid Smith2011-06-26 01:12:30 -0700
commitf6ebaf29e8b1a545dc2168426fea15cfb9593c83 (patch)
tree31e122a76c5fab19790673b7fc467d5a8d0d3ff7 /opcodes.asm.m4
parentfc3103b47fad14847704d27705a64fb6ad5b430e (diff)
Working on interleaving the various instructions together. Does presently no longer build.
Diffstat (limited to 'opcodes.asm.m4')
-rw-r--r--opcodes.asm.m41829
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,«»)
+