;; Sharp LR35902 - various syntax variants provided by NEO SPECTRUMAN
;; https://zx-pk.ru/threads/30314-sjasmplus-ot-z00m.html?p=1028186&viewfull=1#post1028186
;; Syntax examples are from IDA (disassembler), bgb (emulator) and GameBoy CPU Manual
;; also cross-checked with http://www.pastraiser.com/cpu/gameboy/gameboy_opcodes.html
;; 10 errors are expected! These syntax variants are *NOT* compatible with sjasmplus:
; 4x "($FF00+c)" to emit `ld a,(c)` or `ld (c),a`; use "(c)" or "[c]" without $FF00 constant
; 4x "HLI"/"HLD" as "HL+"/"HL-"; use HL+/HL- (or LDI/LDD with HL only)
; "ld hl,[sp+n]"; use logical syntax `ld hl,sp+rel8`, it's not accessing memory
; "ldhl" alias; same as above, use the `ld hl,sp+rel8` syntax
;; these are intentionally left out. don't expect sjasmplus to support any of these.
; reasons: either the syntax is atrocious like "ld hl,[sp+0]" or the extra syntax adds
; too much complexity and/or possible accidental collisions, like "hli" label, etc.
; in the end the sjasmplus is 100% compatible with IDA disassembler syntax and supports
; at least one variant from CPU Manual (if not all of them).
; Only bgb compatibility is not 100%, and sources from bgb may need syntax fixing.
n: OPT --syntax=ab ; "a" = multiarg is ",," to support "sub a,n" syntax
nn: ; "b" = "(expr.)" is legit only for memory access
; :IDA :bgb :GBCPUman.pdf
defb $06,0 :ld b,0 :ld b,$00 :LD B,n
defb $0E,0 :ld c,0 :ld c,$00 :LD C,n
defb $16,0 :ld d,0 :ld d,$00 :LD D,n
defb $1E,0 :ld e,0 :ld e,$00 :LD E,n
defb $26,0 :ld h,0 :ld h,$00 :LD H,n
defb $2E,0 :ld l,0 :ld l,$00 :LD L,n
defb $36,0 :ld [hl],0 :ld [hl],$00 :LD (HL),n
defb $3E,0 :ld a,0 :ld a,$00 :LD A,n
defb $40 :ld b,b :ld b,b :LD B,B
defb $41 :ld b,c :ld b,c :LD B,C
defb $42 :ld b,d :ld b,d :LD B,D
defb $43 :ld b,e :ld b,e :LD B,E
defb $44 :ld b,h :ld b,h :LD B,H
defb $45 :ld b,l :ld b,l :LD B,L
defb $46 :ld b,[hl] :ld b,[hl] :LD B,(HL)
defb $47 :ld b,a :ld b,a :LD B,A
defb $48 :ld c,b :ld c,b :LD C,B
defb $49 :ld c,c :ld c,c :LD C,C
defb $4A :ld c,d :ld c,d :LD C,D
defb $4B :ld c,e :ld c,e :LD C,E
defb $4C :ld c,h :ld c,h :LD C,H
defb $4D :ld c,l :ld c,l :LD C,L
defb $4E :ld c,[hl] :ld c,[hl] :LD C,(HL)
defb $4F :ld c,a :ld c,a :LD C,A
defb $50 :ld d,b :ld d,b :LD D,B
defb $51 :ld d,c :ld d,c :LD D,C
defb $52 :ld d,d :ld d,d :LD D,D
defb $53 :ld d,e :ld d,e :LD D,E
defb $54 :ld d,h :ld d,h :LD D,H
defb $55 :ld d,l :ld d,l :LD D,L
defb $56 :ld d,[hl] :ld d,[hl] :LD D,(HL)
defb $57 :ld d,a :ld d,a :LD D,A
defb $58 :ld e,b :ld e,b :LD E,B
defb $59 :ld e,c :ld e,c :LD E,C
defb $5A :ld e,d :ld e,d :LD E,D
defb $5B :ld e,e :ld e,e :LD E,E
defb $5C :ld e,h :ld e,h :LD E,H
defb $5D :ld e,l :ld e,l :LD E,L
defb $5E :ld e,[hl] :ld e,[hl] :LD E,(HL)
defb $5F :ld e,a :ld e,a :LD E,A
defb $60 :ld h,b :ld h,b :LD H,B
defb $61 :ld h,c :ld h,c :LD H,C
defb $62 :ld h,d :ld h,d :LD H,D
defb $63 :ld h,e :ld h,e :LD H,E
defb $64 :ld h,h :ld h,h :LD H,H
defb $65 :ld h,l :ld h,l :LD H,L
defb $66 :ld h,[hl] :ld h,[hl] :LD H,(HL)
defb $67 :ld h,a :ld h,a :LD H,A
defb $68 :ld l,b :ld l,b :LD L,B
defb $69 :ld l,c :ld l,c :LD L,C
defb $6A :ld l,d :ld l,d :LD L,D
defb $6B :ld l,e :ld l,e :LD L,E
defb $6C :ld l,h :ld l,h :LD L,H
defb $6D :ld l,l :ld l,l :LD L,L
defb $6E :ld l,[hl] :ld l,[hl] :LD L,(HL)
defb $6F :ld l,a :ld l,a :LD L,A
defb $70 :ld [hl],b :ld [hl],b :LD (HL),B
defb $71 :ld [hl],c :ld [hl],c :LD (HL),C
defb $72 :ld [hl],d :ld [hl],d :LD (HL),D
defb $73 :ld [hl],e :ld [hl],e :LD (HL),E
defb $74 :ld [hl],h :ld [hl],h :LD (HL),H
defb $75 :ld [hl],l :ld [hl],l :LD (HL),L
defb $76 :halt :halt :HALT
defb $77 :ld [hl],a :ld [hl],a :LD (HL),A
defb $78 :ld a,b :ld a,b :LD A,B
defb $79 :ld a,c :ld a,c :LD A,C
defb $7A :ld a,d :ld a,d :LD A,D
defb $7B :ld a,e :ld a,e :LD A,E
defb $7C :ld a,h :ld a,h :LD A,H
defb $7D :ld a,l :ld a,l :LD A,L
defb $7E :ld a,[hl] :ld a,[hl] :LD A,(HL)
defb $7F :ld a,a :ld a,a :LD A,A
defb $0A :ld a,[bc] :ld a,[bc] :LD A,(BC)
defb $1A :ld a,[de] :ld a,[de] :LD A,(DE)
defb $02 :ld [bc],a :ld [bc],a :LD (BC),A
defb $12 :ld [de],a :ld [de],a :LD (DE),A
defb $F0,0 :ld a,[$FF00] :ldh a,[$FF00] :LDH A,(n) : LD A,($FF00+n)
defb $E0,0 :ld [$FF00],a :ldh [$FF00],a :LDH (n),A : LD ($FF00+n),A
; syntax "ld a,($ff00+c)" is not accepted by sjasmplus, only "(c)" argument works: 2x error
defb $F2 :ld a,[c] :ld a,[$ff00+c] :LD A,(C) : LD A,($FF00+C)
; syntax "ld ($ff00+c),a" is not accepted by sjasmplus, only "(c)" argument works: 2x error
defb $E2 :ld [c], a :ld [$ff00+c],a :ld (C),A : LD ($FF00+C),A
defb $FA,0,0 :ld a,[0] :ld a,[$0000] :LD A,(nn)
defb $EA,0,0 :ld [0],a :ld [$0000],a :LD (nn),A
; syntax with HLI and HLD is not accepted by sjasmplus: 4x error
defb $22 :ldi [hl],a :ldi [hl],a :LD (HLI),A : LDI (HL),A : LD (HL+),A
defb $32 :ldd [hl],a :ldd [hl],a :LD (HLD),A : LDD (HL),A : LD (HL-),A
defb $2A :ldi a,[hl] :ldi a,[hl] :LD A,(HLI) : LDI A,(HL) : LD A,(HL+)
defb $3A :ldd a,[hl] :ldd a,[hl] :LD A,(HLD) : LDD A,(HL) : LD A,(HL-)
defb $01,0,0 :ld bc,0 :ld bc,$0000 :LD BC,nn
defb $11,0,0 :ld de,0 :ld de,$0000 :LD DE,nn
defb $21,0,0 :ld hl,0 :ld hl,$0000 :LD HL,nn
defb $31,0,0 :ld sp,0 :ld sp,$0000 :LD SP,nn
defb $F9 :ld sp,hl :ld sp,hl :LD SP,HL
; syntax "ld hl,[sp+$00]" and "LDHL" is not accepted by sjasmplus: 2x error
defb $F8,0 :ld hl,sp+0 :ld hl,[sp+$00] :LD HL,SP+n : LDHL SP,n
defb $08,0,0 :ld [0],sp :ld [$0000],sp :LD (nn),SP
defb $F5 :push af :push af :PUSH AF
defb $C5 :push bc :push bc :PUSH BC
defb $D5 :push de :push de :PUSH DE
defb $E5 :push hl :push hl :PUSH HL
defb $F1 :pop af :pop af :POP AF
defb $C1 :pop bc :pop bc :POP BC
defb $D1 :pop de :pop de :POP DE
defb $E1 :pop hl :pop hl :POP HL
defb $80 :add a,b :add b :ADD A,B
defb $81 :add a,c :add c :ADD A,C
defb $82 :add a,d :add d :ADD A,D
defb $83 :add a,e :add e :ADD A,E
defb $84 :add a,h :add h :ADD A,H
defb $85 :add a,l :add l :ADD A,L
defb $86 :add a,[hl] :add [hl] :ADD A,(HL)
defb $87 :add a,a :add a :ADD A,A
defb $88 :adc a,b :adc b :ADC A,B
defb $89 :adc a,c :adc c :ADC A,C
defb $8A :adc a,d :adc d :ADC A,D
defb $8B :adc a,e :adc e :ADC A,E
defb $8C :adc a,h :adc h :ADC A,H
defb $8D :adc a,l :adc l :ADC A,L
defb $8E :adc a,[hl] :adc [hl] :ADC A,(HL)
defb $8F :adc a,a :adc a :ADC A,A
defb $90 :sub b :sub b :SUB B
defb $91 :sub c :sub c :SUB C
defb $92 :sub d :sub d :SUB D
defb $93 :sub e :sub e :SUB E
defb $94 :sub h :sub h :SUB H
defb $95 :sub l :sub l :SUB L
defb $96 :sub [hl] :sub [hl] :SUB (HL)
defb $97 :sub a :sub a :SUB A
defb $98 :sbc a,b :sbc b :SBC A,B
defb $99 :sbc a,c :sbc c :SBC A,C
defb $9A :sbc a,d :sbc d :SBC A,D
defb $9B :sbc a,e :sbc e :SBC A,E
defb $9C :sbc a,h :sbc h :SBC A,H
defb $9D :sbc a,l :sbc l :SBC A,L
defb $9E :sbc a,[hl] :sbc [hl] :SBC A,(HL)
defb $9F :sbc a,a :sbc a :SBC A,A
defb $A0 :and b :and b :AND B
defb $A1 :and c :and c :AND C
defb $A2 :and d :and d :AND D
defb $A3 :and e :and e :AND E
defb $A4 :and h :and h :AND H
defb $A5 :and l :and l :AND L
defb $A6 :and [hl] :and [hl] :AND (HL)
defb $A7 :and a :and a :AND A
defb $B0 :or b :or b :OR B
defb $B1 :or c :or c :OR C
defb $B2 :or d :or d :OR D
defb $B3 :or e :or e :OR E
defb $B4 :or h :or h :OR H
defb $B5 :or l :or l :OR L
defb $B6 :or [hl] :or [hl] :OR (HL)
defb $B7 :or a :or a :OR A
defb $A8 :xor b :xor b :XOR B
defb $A9 :xor c :xor c :XOR C
defb $AA :xor d :xor d :XOR D
defb $AB :xor e :xor e :XOR E
defb $AC :xor h :xor h :XOR H
defb $AD :xor l :xor l :XOR L
defb $AE :xor [hl] :xor [hl] :XOR (HL)
defb $AF :xor a :xor a :XOR A
defb $B8 :cp b :cp b :CP B
defb $B9 :cp c :cp c :CP C
defb $BA :cp d :cp d :CP D
defb $BB :cp e :cp e :CP E
defb $BC :cp h :cp h :CP H
defb $BD :cp l :cp l :CP L
defb $BE :cp [hl] :cp [hl] :CP (HL)
defb $BF :cp a :cp a :CP A
defb $04 :inc b :inc b :INC B
defb $0C :inc c :inc c :INC C
defb $14 :inc d :inc d :INC D
defb $1C :inc e :inc e :INC E
defb $24 :inc h :inc h :INC H
defb $2C :inc l :inc l :INC L
defb $34 :inc [hl] :inc [hl] :INC (HL)
defb $3C :inc a :inc a :INC A
defb $05 :dec b :dec b :DEC B
defb $0D :dec c :dec c :DEC C
defb $15 :dec d :dec d :DEC D
defb $1D :dec e :dec e :DEC E
defb $25 :dec h :dec h :DEC H
defb $2D :dec l :dec l :DEC L
defb $35 :dec [hl] :dec [hl] :DEC (HL)
defb $3D :dec a :dec a :DEC A
; the sub/and/xor/or/cp needs "--syntax=a" in sjasmplus for "a," recognition like this
; by default the sjasmplus understands "a," as multi-arg: "sub a,0" = "sub a : sub 0" (!)
defb $C6,0 :add a,0 :add a,$00 :ADD A,n
defb $CE,0 :adc a,0 :adc a,$00 :ADC A,n
defb $D6,0 :sub 0 :sub a,$00 :SUB n ; "sub a,*" needs `--syntax=a` in sjasmplus
defb $DE,0 :sbc a,0 :sbc a,$00 :SBC A,n
defb $E6,0 :and 0 :and a,$00 :AND n ; "and a,*" needs `--syntax=a` in sjasmplus
defb $EE,0 :xor 0 :xor a,$00 :XOR n ; "xor a,*" needs `--syntax=a` in sjasmplus
defb $F6,0 :or 0 :or a,$00 :OR n ; "or a,*" needs `--syntax=a` in sjasmplus
defb $FE,0 :cp 0 :cp a,$00 :CP n ; "cp a,*" needs `--syntax=a` in sjasmplus
defb $09 :add hl,bc :add hl,bc :ADD HL,BC
defb $19 :add hl,de :add hl,de :ADD HL,DE
defb $29 :add hl,hl :add hl,hl :ADD HL,HL
defb $39 :add hl,sp :add hl,sp :ADD HL,SP
defb $E8,0 :add sp,0 :add sp,$00 :ADD SP,n
defb $03 :inc bc :inc bc :INC BC
defb $13 :inc de :inc de :INC DE
defb $23 :inc hl :inc hl :INC HL
defb $33 :inc sp :inc sp :INC SP
defb $0B :dec bc :dec bc :DEC BC
defb $1B :dec de :dec de :DEC DE
defb $2B :dec hl :dec hl :DEC HL
defb $3B :dec sp :dec sp :DEC SP
defb $CB,$30 :swap b :swap b :SWAP B
defb $CB,$31 :swap c :swap c :SWAP C
defb $CB,$32 :swap d :swap d :SWAP D
defb $CB,$33 :swap e :swap e :SWAP E
defb $CB,$34 :swap h :swap h :SWAP H
defb $CB,$35 :swap l :swap l :SWAP L
defb $CB,$36 :swap [hl] :swap [hl] :SWAP (HL)
defb $CB,$37 :swap a :swap a :SWAP A
defb $27 :daa :daa :DAA
defb $2F :cpl :cpl :CPL
defb $3F :ccf :ccf :CCF
defb $37 :scf :scf :SCF
defb $00 :nop :nop :NOP
defb $10,$00 :stop :stop :STOP
defb $F3 :di :di :DI
defb $FB :ei :ei :EI
defb $07 :rlca :rlca :RLCA
defb $17 :rla :rla :RLA
defb $0F :rrca :rrca :RRCA
defb $1F :rra :rra :RRA
defb $CB,$00 :rlc b :rlc b :RLC B
defb $CB,$01 :rlc c :rlc c :RLC C
defb $CB,$02 :rlc d :rlc d :RLC D
defb $CB,$03 :rlc e :rlc e :RLC E
defb $CB,$04 :rlc h :rlc h :RLC H
defb $CB,$05 :rlc l :rlc l :RLC L
defb $CB,$06 :rlc [hl] :rlc [hl] :RLC (HL)
defb $CB,$07 :rlc a :rlc a :RLC A
defb $CB,$10 :rl b :rl b :RL B
defb $CB,$11 :rl c :rl c :RL C
defb $CB,$12 :rl d :rl d :RL D
defb $CB,$13 :rl e :rl e :RL E
defb $CB,$14 :rl h :rl h :RL H
defb $CB,$15 :rl l :rl l :RL L
defb $CB,$16 :rl [hl] :rl [hl] :RL (HL)
defb $CB,$17 :rl a :rl a :RL A
defb $CB,$08 :rrc b :rrc b :RRC B
defb $CB,$09 :rrc c :rrc c :RRC C
defb $CB,$0A :rrc d :rrc d :RRC D
defb $CB,$0B :rrc e :rrc e :RRC E
defb $CB,$0C :rrc h :rrc h :RRC H
defb $CB,$0D :rrc l :rrc l :RRC L
defb $CB,$0E :rrc [hl] :rrc [hl] :RRC (HL)
defb $CB,$0F :rrc a :rrc a :RRC A
defb $CB,$18 :rr b :rr b :RR B
defb $CB,$19 :rr c :rr c :RR C
defb $CB,$1A :rr d :rr d :RR D
defb $CB,$1B :rr e :rr e :RR E
defb $CB,$1C :rr h :rr h :RR H
defb $CB,$1D :rr l :rr l :RR L
defb $CB,$1E :rr [hl] :rr [hl] :RR (HL)
defb $CB,$1F :rr a :rr a :RR A
defb $CB,$20 :sla b :sla b :SLA B
defb $CB,$21 :sla c :sla c :SLA C
defb $CB,$22 :sla d :sla d :SLA D
defb $CB,$23 :sla e :sla e :SLA E
defb $CB,$24 :sla h :sla h :SLA H
defb $CB,$25 :sla l :sla l :SLA L
defb $CB,$26 :sla [hl] :sla [hl] :SLA (HL)
defb $CB,$27 :sla a :sla a :SLA A
defb $CB,$28 :sra b :sra b :SRA B
defb $CB,$29 :sra c :sra c :SRA C
defb $CB,$2A :sra d :sra d :SRA D
defb $CB,$2B :sra e :sra e :SRA E
defb $CB,$2C :sra h :sra h :SRA H
defb $CB,$2D :sra l :sra l :SRA L
defb $CB,$2E :sra [hl] :sra [hl] :SRA (HL)
defb $CB,$2F :sra a :sra a :SRA A
defb $CB,$38 :srl b :srl b :SRL B
defb $CB,$39 :srl c :srl c :SRL C
defb $CB,$3A :srl d :srl d :SRL D
defb $CB,$3B :srl e :srl e :SRL E
defb $CB,$3C :srl h :srl h :SRL H
defb $CB,$3D :srl l :srl l :SRL L
defb $CB,$3E :srl [hl] :srl [hl] :SRL (HL)
defb $CB,$3F :srl a :srl a :SRL A
defb $CB,$40 :bit 0,b :bit 0,b :BIT 0,B
defb $CB,$41 :bit 0,c :bit 0,c :BIT 0,C
defb $CB,$42 :bit 0,d :bit 0,d :BIT 0,D
defb $CB,$43 :bit 0,e :bit 0,e :BIT 0,E
defb $CB,$44 :bit 0,h :bit 0,h :BIT 0,H
defb $CB,$45 :bit 0,l :bit 0,l :BIT 0,L
defb $CB,$46 :bit 0,[hl] :bit 0,[hl] :BIT 0,(HL)
defb $CB,$47 :bit 0,a :bit 0,a :BIT 0,A
defb $CB,$40+$08 :bit 1,b :bit 1,b :BIT 1,B
defb $CB,$41+$08 :bit 1,c :bit 1,c :BIT 1,C
defb $CB,$42+$08 :bit 1,d :bit 1,d :BIT 1,D
defb $CB,$43+$08 :bit 1,e :bit 1,e :BIT 1,E
defb $CB,$44+$08 :bit 1,h :bit 1,h :BIT 1,H
defb $CB,$45+$08 :bit 1,l :bit 1,l :BIT 1,L
defb $CB,$46+$08 :bit 1,[hl] :bit 1,[hl] :BIT 1,(HL)
defb $CB,$47+$08 :bit 1,a :bit 1,a :BIT 1,A
defb $CB,$40+$10 :bit 2,b :bit 2,b :BIT 2,B
defb $CB,$41+$10 :bit 2,c :bit 2,c :BIT 2,C
defb $CB,$42+$10 :bit 2,d :bit 2,d :BIT 2,D
defb $CB,$43+$10 :bit 2,e :bit 2,e :BIT 2,E
defb $CB,$44+$10 :bit 2,h :bit 2,h :BIT 2,H
defb $CB,$45+$10 :bit 2,l :bit 2,l :BIT 2,L
defb $CB,$46+$10 :bit 2,[hl] :bit 2,[hl] :BIT 2,(HL)
defb $CB,$47+$10 :bit 2,a :bit 2,a :BIT 2,A
defb $CB,$40+$18 :bit 3,b :bit 3,b :BIT 3,B
defb $CB,$41+$18 :bit 3,c :bit 3,c :BIT 3,C
defb $CB,$42+$18 :bit 3,d :bit 3,d :BIT 3,D
defb $CB,$43+$18 :bit 3,e :bit 3,e :BIT 3,E
defb $CB,$44+$18 :bit 3,h :bit 3,h :BIT 3,H
defb $CB,$45+$18 :bit 3,l :bit 3,l :BIT 3,L
defb $CB,$46+$18 :bit 3,[hl] :bit 3,[hl] :BIT 3,(HL)
defb $CB,$47+$18 :bit 3,a :bit 3,a :BIT 3,A
defb $CB,$40+$20 :bit 4,b :bit 4,b :BIT 4,B
defb $CB,$41+$20 :bit 4,c :bit 4,c :BIT 4,C
defb $CB,$42+$20 :bit 4,d :bit 4,d :BIT 4,D
defb $CB,$43+$20 :bit 4,e :bit 4,e :BIT 4,E
defb $CB,$44+$20 :bit 4,h :bit 4,h :BIT 4,H
defb $CB,$45+$20 :bit 4,l :bit 4,l :BIT 4,L
defb $CB,$46+$20 :bit 4,[hl] :bit 4,[hl] :BIT 4,(HL)
defb $CB,$47+$20 :bit 4,a :bit 4,a :BIT 4,A
defb $CB,$40+$28 :bit 5,b :bit 5,b :BIT 5,B
defb $CB,$41+$28 :bit 5,c :bit 5,c :BIT 5,C
defb $CB,$42+$28 :bit 5,d :bit 5,d :BIT 5,D
defb $CB,$43+$28 :bit 5,e :bit 5,e :BIT 5,E
defb $CB,$44+$28 :bit 5,h :bit 5,h :BIT 5,H
defb $CB,$45+$28 :bit 5,l :bit 5,l :BIT 5,L
defb $CB,$46+$28 :bit 5,[hl] :bit 5,[hl] :BIT 5,(HL)
defb $CB,$47+$28 :bit 5,a :bit 5,a :BIT 5,A
defb $CB,$40+$30 :bit 6,b :bit 6,b :BIT 6,B
defb $CB,$41+$30 :bit 6,c :bit 6,c :BIT 6,C
defb $CB,$42+$30 :bit 6,d :bit 6,d :BIT 6,D
defb $CB,$43+$30 :bit 6,e :bit 6,e :BIT 6,E
defb $CB,$44+$30 :bit 6,h :bit 6,h :BIT 6,H
defb $CB,$45+$30 :bit 6,l :bit 6,l :BIT 6,L
defb $CB,$46+$30 :bit 6,[hl] :bit 6,[hl] :BIT 6,(HL)
defb $CB,$47+$30 :bit 6,a :bit 6,a :BIT 6,A
defb $CB,$40+$38 :bit 7,b :bit 7,b :BIT 7,B
defb $CB,$41+$38 :bit 7,c :bit 7,c :BIT 7,C
defb $CB,$42+$38 :bit 7,d :bit 7,d :BIT 7,D
defb $CB,$43+$38 :bit 7,e :bit 7,e :BIT 7,E
defb $CB,$44+$38 :bit 7,h :bit 7,h :BIT 7,H
defb $CB,$45+$38 :bit 7,l :bit 7,l :BIT 7,L
defb $CB,$46+$38 :bit 7,[hl] :bit 7,[hl] :BIT 7,(HL)
defb $CB,$47+$38 :bit 7,a :bit 7,a :BIT 7,A
defb $CB,$C0 :set 0,b :set 0,b :SET 0,B
defb $CB,$C1 :set 0,c :set 0,c :SET 0,C
defb $CB,$C2 :set 0,d :set 0,d :SET 0,D
defb $CB,$C3 :set 0,e :set 0,e :SET 0,E
defb $CB,$C4 :set 0,h :set 0,h :SET 0,H
defb $CB,$C5 :set 0,l :set 0,l :SET 0,L
defb $CB,$C6 :set 0,[hl] :set 0,[hl] :SET 0,(HL)
defb $CB,$C7 :set 0,a :set 0,a :SET 0,A
defb $CB,$C0+$08 :set 1,b :set 1,b :SET 1,B
defb $CB,$C1+$08 :set 1,c :set 1,c :SET 1,C
defb $CB,$C2+$08 :set 1,d :set 1,d :SET 1,D
defb $CB,$C3+$08 :set 1,e :set 1,e :SET 1,E
defb $CB,$C4+$08 :set 1,h :set 1,h :SET 1,H
defb $CB,$C5+$08 :set 1,l :set 1,l :SET 1,L
defb $CB,$C6+$08 :set 1,[hl] :set 1,[hl] :SET 1,(HL)
defb $CB,$C7+$08 :set 1,a :set 1,a :SET 1,A
defb $CB,$C0+$10 :set 2,b :set 2,b :SET 2,B
defb $CB,$C1+$10 :set 2,c :set 2,c :SET 2,C
defb $CB,$C2+$10 :set 2,d :set 2,d :SET 2,D
defb $CB,$C3+$10 :set 2,e :set 2,e :SET 2,E
defb $CB,$C4+$10 :set 2,h :set 2,h :SET 2,H
defb $CB,$C5+$10 :set 2,l :set 2,l :SET 2,L
defb $CB,$C6+$10 :set 2,[hl] :set 2,[hl] :SET 2,(HL)
defb $CB,$C7+$10 :set 2,a :set 2,a :SET 2,A
defb $CB,$C0+$18 :set 3,b :set 3,b :SET 3,B
defb $CB,$C1+$18 :set 3,c :set 3,c :SET 3,C
defb $CB,$C2+$18 :set 3,d :set 3,d :SET 3,D
defb $CB,$C3+$18 :set 3,e :set 3,e :SET 3,E
defb $CB,$C4+$18 :set 3,h :set 3,h :SET 3,H
defb $CB,$C5+$18 :set 3,l :set 3,l :SET 3,L
defb $CB,$C6+$18 :set 3,[hl] :set 3,[hl] :SET 3,(HL)
defb $CB,$C7+$18 :set 3,a :set 3,a :SET 3,A
defb $CB,$C0+$20 :set 4,b :set 4,b :SET 4,B
defb $CB,$C1+$20 :set 4,c :set 4,c :SET 4,C
defb $CB,$C2+$20 :set 4,d :set 4,d :SET 4,D
defb $CB,$C3+$20 :set 4,e :set 4,e :SET 4,E
defb $CB,$C4+$20 :set 4,h :set 4,h :SET 4,H
defb $CB,$C5+$20 :set 4,l :set 4,l :SET 4,L
defb $CB,$C6+$20 :set 4,[hl] :set 4,[hl] :SET 4,(HL)
defb $CB,$C7+$20 :set 4,a :set 4,a :SET 4,A
defb $CB,$C0+$28 :set 5,b :set 5,b :SET 5,B
defb $CB,$C1+$28 :set 5,c :set 5,c :SET 5,C
defb $CB,$C2+$28 :set 5,d :set 5,d :SET 5,D
defb $CB,$C3+$28 :set 5,e :set 5,e :SET 5,E
defb $CB,$C4+$28 :set 5,h :set 5,h :SET 5,H
defb $CB,$C5+$28 :set 5,l :set 5,l :SET 5,L
defb $CB,$C6+$28 :set 5,[hl] :set 5,[hl] :SET 5,(HL)
defb $CB,$C7+$28 :set 5,a :set 5,a :SET 5,A
defb $CB,$C0+$30 :set 6,b :set 6,b :SET 6,B
defb $CB,$C1+$30 :set 6,c :set 6,c :SET 6,C
defb $CB,$C2+$30 :set 6,d :set 6,d :SET 6,D
defb $CB,$C3+$30 :set 6,e :set 6,e :SET 6,E
defb $CB,$C4+$30 :set 6,h :set 6,h :SET 6,H
defb $CB,$C5+$30 :set 6,l :set 6,l :SET 6,L
defb $CB,$C6+$30 :set 6,[hl] :set 6,[hl] :SET 6,(HL)
defb $CB,$C7+$30 :set 6,a :set 6,a :SET 6,A
defb $CB,$C0+$38 :set 7,b :set 7,b :SET 7,B
defb $CB,$C1+$38 :set 7,c :set 7,c :SET 7,C
defb $CB,$C2+$38 :set 7,d :set 7,d :SET 7,D
defb $CB,$C3+$38 :set 7,e :set 7,e :SET 7,E
defb $CB,$C4+$38 :set 7,h :set 7,h :SET 7,H
defb $CB,$C5+$38 :set 7,l :set 7,l :SET 7,L
defb $CB,$C6+$38 :set 7,[hl] :set 7,[hl] :SET 7,(HL)
defb $CB,$C7+$38 :set 7,a :set 7,a :SET 7,A
defb $CB,$80 :res 0,b :res 0,b :RES 0,B
defb $CB,$81 :res 0,c :res 0,c :RES 0,C
defb $CB,$82 :res 0,d :res 0,d :RES 0,D
defb $CB,$83 :res 0,e :res 0,e :RES 0,E
defb $CB,$84 :res 0,h :res 0,h :RES 0,H
defb $CB,$85 :res 0,l :res 0,l :RES 0,L
defb $CB,$86 :res 0,[hl] :res 0,[hl] :RES 0,(HL)
defb $CB,$87 :res 0,a :res 0,a :RES 0,A
defb $CB,$80+$08 :res 1,b :res 1,b :RES 1,B
defb $CB,$81+$08 :res 1,c :res 1,c :RES 1,C
defb $CB,$82+$08 :res 1,d :res 1,d :RES 1,D
defb $CB,$83+$08 :res 1,e :res 1,e :RES 1,E
defb $CB,$84+$08 :res 1,h :res 1,h :RES 1,H
defb $CB,$85+$08 :res 1,l :res 1,l :RES 1,L
defb $CB,$86+$08 :res 1,[hl] :res 1,[hl] :RES 1,(HL)
defb $CB,$87+$08 :res 1,a :res 1,a :RES 1,A
defb $CB,$80+$10 :res 2,b :res 2,b :RES 2,B
defb $CB,$81+$10 :res 2,c :res 2,c :RES 2,C
defb $CB,$82+$10 :res 2,d :res 2,d :RES 2,D
defb $CB,$83+$10 :res 2,e :res 2,e :RES 2,E
defb $CB,$84+$10 :res 2,h :res 2,h :RES 2,H
defb $CB,$85+$10 :res 2,l :res 2,l :RES 2,L
defb $CB,$86+$10 :res 2,[hl] :res 2,[hl] :RES 2,(HL)
defb $CB,$87+$10 :res 2,a :res 2,a :RES 2,A
defb $CB,$80+$18 :res 3,b :res 3,b :RES 3,B
defb $CB,$81+$18 :res 3,c :res 3,c :RES 3,C
defb $CB,$82+$18 :res 3,d :res 3,d :RES 3,D
defb $CB,$83+$18 :res 3,e :res 3,e :RES 3,E
defb $CB,$84+$18 :res 3,h :res 3,h :RES 3,H
defb $CB,$85+$18 :res 3,l :res 3,l :RES 3,L
defb $CB,$86+$18 :res 3,[hl] :res 3,[hl] :RES 3,(HL)
defb $CB,$87+$18 :res 3,a :res 3,a :RES 3,A
defb $CB,$80+$20 :res 4,b :res 4,b :RES 4,B
defb $CB,$81+$20 :res 4,c :res 4,c :RES 4,C
defb $CB,$82+$20 :res 4,d :res 4,d :RES 4,D
defb $CB,$83+$20 :res 4,e :res 4,e :RES 4,E
defb $CB,$84+$20 :res 4,h :res 4,h :RES 4,H
defb $CB,$85+$20 :res 4,l :res 4,l :RES 4,L
defb $CB,$86+$20 :res 4,[hl] :res 4,[hl] :RES 4,(HL)
defb $CB,$87+$20 :res 4,a :res 4,a :RES 4,A
defb $CB,$80+$28 :res 5,b :res 5,b :RES 5,B
defb $CB,$81+$28 :res 5,c :res 5,c :RES 5,C
defb $CB,$82+$28 :res 5,d :res 5,d :RES 5,D
defb $CB,$83+$28 :res 5,e :res 5,e :RES 5,E
defb $CB,$84+$28 :res 5,h :res 5,h :RES 5,H
defb $CB,$85+$28 :res 5,l :res 5,l :RES 5,L
defb $CB,$86+$28 :res 5,[hl] :res 5,[hl] :RES 5,(HL)
defb $CB,$87+$28 :res 5,a :res 5,a :RES 5,A
defb $CB,$80+$30 :res 6,b :res 6,b :RES 6,B
defb $CB,$81+$30 :res 6,c :res 6,c :RES 6,C
defb $CB,$82+$30 :res 6,d :res 6,d :RES 6,D
defb $CB,$83+$30 :res 6,e :res 6,e :RES 6,E
defb $CB,$84+$30 :res 6,h :res 6,h :RES 6,H
defb $CB,$85+$30 :res 6,l :res 6,l :RES 6,L
defb $CB,$86+$30 :res 6,[hl] :res 6,[hl] :RES 6,(HL)
defb $CB,$87+$30 :res 6,a :res 6,a :RES 6,A
defb $CB,$80+$38 :res 7,b :res 7,b :RES 7,B
defb $CB,$81+$38 :res 7,c :res 7,c :RES 7,C
defb $CB,$82+$38 :res 7,d :res 7,d :RES 7,D
defb $CB,$83+$38 :res 7,e :res 7,e :RES 7,E
defb $CB,$84+$38 :res 7,h :res 7,h :RES 7,H
defb $CB,$85+$38 :res 7,l :res 7,l :RES 7,L
defb $CB,$86+$38 :res 7,[hl] :res 7,[hl] :RES 7,(HL)
defb $CB,$87+$38 :res 7,a :res 7,a :RES 7,A
defb $C3,0,0 :jp 0 :jp $0000 :JP nn
defb $C2,0,0 :jp nz,0 :jp nz,$0000 :JP NZ,nn
defb $CA,0,0 :jp z,0 :jp z,$0000 :JP Z,nn
defb $D2,0,0 :jp nc,0 :jp nc,$0000 :JP NC,nn
defb $DA,0,0 :jp c,0 :jp c,$0000 :JP C,nn
defb $E9 :jp [hl] :jp [hl] :JP (HL)
defb $18,0 :jr $+2 :jr $+2 :JR $+2
defb $20,0 :jr nz,$+2 :jr nz,$+2 :JR NZ,$+2 ; was literal "n", but needs "$+2" for tests
defb $28,0 :jr z,$+2 :jr z,$+2 :JR Z,$+2
defb $30,0 :jr nc,$+2 :jr nc,$+2 :JR NC,$+2
defb $38,0 :jr c,$+2 :jr c,$+2 :JR C,$+2
defb $CD,0,0 :call 0 :call $0000 :CALL nn
defb $C4,0,0 :call nz,0 :call nz,$0000 :CALL NZ,nn
defb $CC,0,0 :call z,0 :call z,$0000 :CALL Z,nn
defb $D4,0,0 :call nc,0 :call nc,$0000 :CALL NC,nn
defb $DC,0,0 :call c,0 :call c,$0000 :CALL C,nn
defb $C7 :rst 0 :rst $00 :RST 00H
defb $CF :rst 8 :rst $08 :RST 08H
defb $D7 :rst $10 :rst $10 :RST 10H
defb $DF :rst $18 :rst $18 :RST 18H
defb $E7 :rst $20 :rst $20 :RST 20H
defb $EF :rst $28 :rst $28 :RST 28H
defb $F7 :rst $30 :rst $30 :RST 30H
defb $FF :rst $38 :rst $38 :RST 38H
defb $C9 :ret :ret :RET
defb $C0 :ret nz :ret nz :RET NZ
defb $C8 :ret z :ret z :RET Z
defb $D0 :ret nc :ret nc :RET NC
defb $D8 :ret c :ret c :RET C
defb $D9 :reti :reti :RETI