Sona 0.50 Source

Sona 0.50/src-z80/define_z80.z80

;****************************************************************************
; Z80 opcodes (useful for writing self-modifying code)
;****************************************************************************

;----------------------------------------------------------------------------
; Unprefixed
;----------------------------------------------------------------------------

Z80OP_ADC_A_A:          equ $8F         ; adc a, a
Z80OP_ADC_A_B:          equ $88         ; adc a, b
Z80OP_ADC_A_C:          equ $89         ; adc a, c
Z80OP_ADC_A_D:          equ $8A         ; adc a, d
Z80OP_ADC_A_E:          equ $8B         ; adc a, e
Z80OP_ADC_A_H:          equ $8C         ; adc a, h
Z80OP_ADC_A_L:          equ $8D         ; adc a, l
Z80OP_ADC_A_iHL:        equ $8E         ; adc a, (hl)
Z80OP_ADC_A_IMM:        equ $CE         ; adc a, nn

Z80OP_ADD_A_A:          equ $87         ; add a, a
Z80OP_ADD_A_B:          equ $80         ; add a, b
Z80OP_ADD_A_C:          equ $81         ; add a, c
Z80OP_ADD_A_D:          equ $82         ; add a, d
Z80OP_ADD_A_E:          equ $83         ; add a, e
Z80OP_ADD_A_H:          equ $84         ; add a, h
Z80OP_ADD_A_L:          equ $85         ; add a, l
Z80OP_ADD_A_iHL:        equ $86         ; add a, (hl)
Z80OP_ADD_A_IMM:        equ $C6         ; add a, nn
Z80OP_ADD_HL_BC:        equ $09         ; add hl, bc
Z80OP_ADD_HL_DE:        equ $19         ; add hl, de
Z80OP_ADD_HL_HL:        equ $29         ; add hl, hl
Z80OP_ADD_HL_SP:        equ $39         ; add hl, sp

Z80OP_AND_A:            equ $A7         ; and a
Z80OP_AND_B:            equ $A0         ; and b
Z80OP_AND_C:            equ $A1         ; and c
Z80OP_AND_D:            equ $A2         ; and d
Z80OP_AND_E:            equ $A3         ; and e
Z80OP_AND_H:            equ $A4         ; and h
Z80OP_AND_L:            equ $A5         ; and l
Z80OP_AND_iHL:          equ $A6         ; and (hl)
Z80OP_AND_IMM:          equ $E6         ; and nn

Z80OP_CALL:             equ $CD         ; call nnnn
Z80OP_CALL_NZ:          equ $C4         ; call nz, nnnn
Z80OP_CALL_Z:           equ $CC         ; call z, nnnn
Z80OP_CALL_NC:          equ $D4         ; call nc, nnnn
Z80OP_CALL_C:           equ $DC         ; call c, nnnn
Z80OP_CALL_PO:          equ $E4         ; call po, nnnn
Z80OP_CALL_PE:          equ $EC         ; call pe, nnnn
Z80OP_CALL_P:           equ $F4         ; call p, nnnn
Z80OP_CALL_M:           equ $FC         ; call m, nnnn

Z80OP_CCF:              equ $3F         ; ccf

Z80OP_CP_A:             equ $BF         ; cp a
Z80OP_CP_B:             equ $B8         ; cp b
Z80OP_CP_C:             equ $B9         ; cp c
Z80OP_CP_D:             equ $BA         ; cp d
Z80OP_CP_E:             equ $BB         ; cp e
Z80OP_CP_H:             equ $BC         ; cp h
Z80OP_CP_L:             equ $BD         ; cp l
Z80OP_CP_iHL:           equ $BE         ; cp (hl)
Z80OP_CP_IMM:           equ $FE         ; cp nn

Z80OP_CPL:              equ $2F         ; cpl

Z80OP_DAA:              equ $27         ; daa

Z80OP_DEC_A:            equ $3D         ; dec a
Z80OP_DEC_B:            equ $05         ; dec b
Z80OP_DEC_C:            equ $0D         ; dec c
Z80OP_DEC_D:            equ $15         ; dec d
Z80OP_DEC_E:            equ $1D         ; dec e
Z80OP_DEC_H:            equ $25         ; dec h
Z80OP_DEC_L:            equ $2D         ; dec l
Z80OP_DEC_iHL:          equ $35         ; dec (hl)
Z80OP_DEC_BC:           equ $0B         ; dec bc
Z80OP_DEC_DE:           equ $1B         ; dec de
Z80OP_DEC_HL:           equ $2B         ; dec hl
Z80OP_DEC_SP:           equ $3B         ; dec sp

Z80OP_DI:               equ $F3         ; di
Z80OP_EI:               equ $FB         ; ei

Z80OP_DJNZ:             equ $10         ; djnz nnnn

Z80OP_EX_DE_HL:         equ $EB         ; ex de, hl
Z80OP_EX_AF_AF:         equ $08         ; ex af, af'
Z80OP_EX_iSP_HL:        equ $E3         ; ex (sp), hl
Z80OP_EXX:              equ $D9         ; exx

Z80OP_HALT:             equ $76         ; halt

Z80OP_IN_A_PORT:        equ $DB         ; in a, (nn)

Z80OP_INC_A:            equ $3C         ; inc a
Z80OP_INC_B:            equ $04         ; inc b
Z80OP_INC_C:            equ $0C         ; inc c
Z80OP_INC_D:            equ $14         ; inc d
Z80OP_INC_E:            equ $1C         ; inc e
Z80OP_INC_H:            equ $24         ; inc h
Z80OP_INC_L:            equ $2C         ; inc l
Z80OP_INC_iHL:          equ $34         ; inc (hl)
Z80OP_INC_BC:           equ $03         ; inc bc
Z80OP_INC_DE:           equ $13         ; inc de
Z80OP_INC_HL:           equ $23         ; inc hl
Z80OP_INC_SP:           equ $33         ; inc sp

Z80OP_JP:               equ $C3         ; jp nnnn
Z80OP_JP_NZ:            equ $C2         ; jp nz, nnnn
Z80OP_JP_Z:             equ $CA         ; jp z, nnnn
Z80OP_JP_NC:            equ $D2         ; jp nc, nnnn
Z80OP_JP_C:             equ $DA         ; jp c, nnnn
Z80OP_JP_PO:            equ $E2         ; jp po, nnnn
Z80OP_JP_PE:            equ $EA         ; jp pe, nnnn
Z80OP_JP_P:             equ $F2         ; jp p, nnnn
Z80OP_JP_M:             equ $FA         ; jp m, nnnn
Z80OP_JP_iHL:           equ $E9         ; jp (hl)

Z80OP_JR:               equ $18         ; jr nnnn
Z80OP_JR_Z:             equ $28         ; jr z, nnnn
Z80OP_JR_NZ:            equ $20         ; jr nz, nnnn
Z80OP_JR_C:             equ $38         ; jr c, nnnn
Z80OP_JR_NC:            equ $30         ; jr nc, nnnn

Z80OP_LD_A_A:           equ $7F         ; ld a, a
Z80OP_LD_A_B:           equ $78         ; ld a, b
Z80OP_LD_A_C:           equ $79         ; ld a, c
Z80OP_LD_A_D:           equ $7A         ; ld a, d
Z80OP_LD_A_E:           equ $7B         ; ld a, e
Z80OP_LD_A_H:           equ $7C         ; ld a, h
Z80OP_LD_A_L:           equ $7D         ; ld a, l
Z80OP_LD_B_A:           equ $47         ; ld b, a
Z80OP_LD_B_B:           equ $40         ; ld b, b
Z80OP_LD_B_C:           equ $41         ; ld b, c
Z80OP_LD_B_D:           equ $42         ; ld b, d
Z80OP_LD_B_E:           equ $43         ; ld b, e
Z80OP_LD_B_H:           equ $44         ; ld b, h
Z80OP_LD_B_L:           equ $45         ; ld b, l
Z80OP_LD_C_A:           equ $4F         ; ld c, a
Z80OP_LD_C_B:           equ $48         ; ld c, b
Z80OP_LD_C_C:           equ $49         ; ld c, c
Z80OP_LD_C_D:           equ $4A         ; ld c, d
Z80OP_LD_C_E:           equ $4B         ; ld c, e
Z80OP_LD_C_H:           equ $4C         ; ld c, h
Z80OP_LD_C_L:           equ $4D         ; ld c, l
Z80OP_LD_D_A:           equ $57         ; ld d, a
Z80OP_LD_D_B:           equ $50         ; ld d, b
Z80OP_LD_D_C:           equ $51         ; ld d, c
Z80OP_LD_D_D:           equ $52         ; ld d, d
Z80OP_LD_D_E:           equ $53         ; ld d, e
Z80OP_LD_D_H:           equ $54         ; ld d, h
Z80OP_LD_D_L:           equ $55         ; ld d, l
Z80OP_LD_E_A:           equ $5F         ; ld e, a
Z80OP_LD_E_B:           equ $58         ; ld e, b
Z80OP_LD_E_C:           equ $59         ; ld e, c
Z80OP_LD_E_D:           equ $5A         ; ld e, d
Z80OP_LD_E_E:           equ $5B         ; ld e, e
Z80OP_LD_E_H:           equ $5C         ; ld e, h
Z80OP_LD_E_L:           equ $5D         ; ld e, l
Z80OP_LD_H_A:           equ $67         ; ld h, a
Z80OP_LD_H_B:           equ $60         ; ld h, b
Z80OP_LD_H_C:           equ $61         ; ld h, c
Z80OP_LD_H_D:           equ $62         ; ld h, d
Z80OP_LD_H_E:           equ $63         ; ld h, e
Z80OP_LD_H_H:           equ $64         ; ld h, h
Z80OP_LD_H_L:           equ $65         ; ld h, l
Z80OP_LD_L_A:           equ $6F         ; ld l, a
Z80OP_LD_L_B:           equ $68         ; ld l, b
Z80OP_LD_L_C:           equ $69         ; ld l, c
Z80OP_LD_L_D:           equ $6A         ; ld l, d
Z80OP_LD_L_E:           equ $6B         ; ld l, e
Z80OP_LD_L_H:           equ $6C         ; ld l, h
Z80OP_LD_L_L:           equ $6D         ; ld l, l

Z80OP_LD_A_iHL:         equ $7E         ; ld a, (hl)
Z80OP_LD_B_iHL:         equ $46         ; ld b, (hl)
Z80OP_LD_C_iHL:         equ $4E         ; ld c, (hl)
Z80OP_LD_D_iHL:         equ $56         ; ld d, (hl)
Z80OP_LD_E_iHL:         equ $5E         ; ld e, (hl)
Z80OP_LD_H_iHL:         equ $66         ; ld h, (hl)
Z80OP_LD_L_iHL:         equ $6E         ; ld l, (hl)
Z80OP_LD_iHL_A:         equ $77         ; ld (hl), a
Z80OP_LD_iHL_B:         equ $70         ; ld (hl), b
Z80OP_LD_iHL_C:         equ $71         ; ld (hl), c
Z80OP_LD_iHL_D:         equ $72         ; ld (hl), d
Z80OP_LD_iHL_E:         equ $73         ; ld (hl), e
Z80OP_LD_iHL_H:         equ $74         ; ld (hl), h
Z80OP_LD_iHL_L:         equ $75         ; ld (hl), l

Z80OP_LD_A_iBC:         equ $0A         ; ld a, (bc)
Z80OP_LD_A_iDE:         equ $1A         ; ld a, (de)
Z80OP_LD_A_MEM:         equ $3A         ; ld a, (nnnn)
Z80OP_LD_iBC_A:         equ $02         ; ld (bc), a
Z80OP_LD_iDE_A:         equ $12         ; ld (de), a
Z80OP_LD_MEM_A:         equ $32         ; ld (nnnn), a

Z80OP_LD_BC_IMM:        equ $01         ; ld bc, nnnn
Z80OP_LD_DE_IMM:        equ $11         ; ld de, nnnn
Z80OP_LD_HL_IMM:        equ $21         ; ld hl, nnnn
Z80OP_LD_HL_MEM:        equ $2A         ; ld hl, (nnnn)
Z80OP_LD_MEM_HL:        equ $22         ; ld (nnnn), hl
Z80OP_LD_SP_HL:         equ $F9         ; ld sp, hl

Z80OP_NOP:              equ $00         ; nop

Z80OP_OR_A:             equ $B7         ; or a
Z80OP_OR_B:             equ $B0         ; or b
Z80OP_OR_C:             equ $B1         ; or c
Z80OP_OR_D:             equ $B2         ; or d
Z80OP_OR_E:             equ $B3         ; or e
Z80OP_OR_H:             equ $B4         ; or h
Z80OP_OR_L:             equ $B5         ; or l
Z80OP_OR_iHL:           equ $B6         ; or (hl)
Z80OP_OR_IMM:           equ $F6         ; or nn

Z80OP_OUT_PORT_A:       equ $D3         ; out (nn), a

Z80OP_PUSH_BC:          equ $C5         ; push bc
Z80OP_PUSH_DE:          equ $D5         ; push de
Z80OP_PUSH_HL:          equ $E5         ; push hl
Z80OP_PUSH_AF:          equ $F5         ; push af
Z80OP_POP_BC:           equ $C1         ; pop bc
Z80OP_POP_DE:           equ $D1         ; pop de
Z80OP_POP_HL:           equ $E1         ; pop hl
Z80OP_POP_AF:           equ $F1         ; pop af

Z80OP_RET:              equ $C9         ; ret
Z80OP_RET_NZ:           equ $C0         ; ret nz
Z80OP_RET_Z:            equ $C8         ; ret z
Z80OP_RET_NC:           equ $D0         ; ret nc
Z80OP_RET_C:            equ $D8         ; ret c
Z80OP_RET_PO:           equ $E0         ; ret po
Z80OP_RET_PE:           equ $E8         ; ret pe
Z80OP_RET_P:            equ $F0         ; ret p
Z80OP_RET_M:            equ $F8         ; ret m

Z80OP_RLCA:             equ $07         ; rlca
Z80OP_RLA:              equ $17         ; rla
Z80OP_RRCA:             equ $0F         ; rrca
Z80OP_RRA:              equ $1F         ; rra

Z80OP_RST_00:           equ $C7         ; rst $00
Z80OP_RST_08:           equ $CF         ; rst $08
Z80OP_RST_10:           equ $D7         ; rst $10
Z80OP_RST_18:           equ $DF         ; rst $18
Z80OP_RST_20:           equ $E7         ; rst $20
Z80OP_RST_28:           equ $EF         ; rst $28
Z80OP_RST_30:           equ $F7         ; rst $30
Z80OP_RST_38:           equ $FF         ; rst $38

Z80OP_SBC_A_A:          equ $9F         ; sbc a, a
Z80OP_SBC_A_B:          equ $98         ; sbc a, b
Z80OP_SBC_A_C:          equ $99         ; sbc a, c
Z80OP_SBC_A_D:          equ $9A         ; sbc a, d
Z80OP_SBC_A_E:          equ $9B         ; sbc a, e
Z80OP_SBC_A_H:          equ $9C         ; sbc a, h
Z80OP_SBC_A_L:          equ $9D         ; sbc a, l
Z80OP_SBC_A_iHL:        equ $9E         ; sbc a, (hl)
Z80OP_SBC_A_IMM:        equ $DE         ; sbc a, nn

Z80OP_SCF:              equ $37         ; scf

Z80OP_SUB_A:            equ $97         ; sub a
Z80OP_SUB_B:            equ $90         ; sub b
Z80OP_SUB_C:            equ $91         ; sub c
Z80OP_SUB_D:            equ $92         ; sub d
Z80OP_SUB_E:            equ $93         ; sub e
Z80OP_SUB_H:            equ $94         ; sub h
Z80OP_SUB_L:            equ $95         ; sub l
Z80OP_SUB_iHL:          equ $96         ; sub (hl)
Z80OP_SUB_IMM:          equ $D6         ; sub nn

Z80OP_XOR_A:            equ $AF         ; xor a
Z80OP_XOR_B:            equ $A8         ; xor b
Z80OP_XOR_C:            equ $A9         ; xor c
Z80OP_XOR_D:            equ $AA         ; xor d
Z80OP_XOR_E:            equ $AB         ; xor e
Z80OP_XOR_H:            equ $AC         ; xor h
Z80OP_XOR_L:            equ $AD         ; xor l
Z80OP_XOR_iHL:          equ $AE         ; xor (hl)
Z80OP_XOR_IMM:          equ $EE         ; xor nn

;----------------------------------------------------------------------------
; The following opcodes need to be prefixed with $CB
;----------------------------------------------------------------------------

Z80OPCB_BIT_0_A:        equ $47         ; bit 0, a
Z80OPCB_BIT_0_B:        equ $40         ; bit 0, b
Z80OPCB_BIT_0_C:        equ $41         ; bit 0, c
Z80OPCB_BIT_0_D:        equ $42         ; bit 0, d
Z80OPCB_BIT_0_E:        equ $43         ; bit 0, e
Z80OPCB_BIT_0_H:        equ $44         ; bit 0, h
Z80OPCB_BIT_0_L:        equ $45         ; bit 0, l
Z80OPCB_BIT_0_iHL:      equ $46         ; bit 0, (hl)
Z80OPCB_BIT_1_A:        equ $4F         ; bit 1, a
Z80OPCB_BIT_1_B:        equ $48         ; bit 1, b
Z80OPCB_BIT_1_C:        equ $49         ; bit 1, c
Z80OPCB_BIT_1_D:        equ $4A         ; bit 1, d
Z80OPCB_BIT_1_E:        equ $4B         ; bit 1, e
Z80OPCB_BIT_1_H:        equ $4C         ; bit 1, h
Z80OPCB_BIT_1_L:        equ $4D         ; bit 1, l
Z80OPCB_BIT_1_iHL:      equ $4E         ; bit 1, (hl)
Z80OPCB_BIT_2_A:        equ $57         ; bit 2, a
Z80OPCB_BIT_2_B:        equ $50         ; bit 2, b
Z80OPCB_BIT_2_C:        equ $51         ; bit 2, c
Z80OPCB_BIT_2_D:        equ $52         ; bit 2, d
Z80OPCB_BIT_2_E:        equ $53         ; bit 2, e
Z80OPCB_BIT_2_H:        equ $54         ; bit 2, h
Z80OPCB_BIT_2_L:        equ $55         ; bit 2, l
Z80OPCB_BIT_2_iHL:      equ $56         ; bit 2, (hl)
Z80OPCB_BIT_3_A:        equ $5F         ; bit 3, a
Z80OPCB_BIT_3_B:        equ $58         ; bit 3, b
Z80OPCB_BIT_3_C:        equ $59         ; bit 3, c
Z80OPCB_BIT_3_D:        equ $5A         ; bit 3, d
Z80OPCB_BIT_3_E:        equ $5B         ; bit 3, e
Z80OPCB_BIT_3_H:        equ $5C         ; bit 3, h
Z80OPCB_BIT_3_L:        equ $5D         ; bit 3, l
Z80OPCB_BIT_3_iHL:      equ $5E         ; bit 3, (hl)
Z80OPCB_BIT_4_A:        equ $67         ; bit 4, a
Z80OPCB_BIT_4_B:        equ $60         ; bit 4, b
Z80OPCB_BIT_4_C:        equ $61         ; bit 4, c
Z80OPCB_BIT_4_D:        equ $62         ; bit 4, d
Z80OPCB_BIT_4_E:        equ $63         ; bit 4, e
Z80OPCB_BIT_4_H:        equ $64         ; bit 4, h
Z80OPCB_BIT_4_L:        equ $65         ; bit 4, l
Z80OPCB_BIT_4_iHL:      equ $66         ; bit 4, (hl)
Z80OPCB_BIT_5_A:        equ $6F         ; bit 5, a
Z80OPCB_BIT_5_B:        equ $68         ; bit 5, b
Z80OPCB_BIT_5_C:        equ $69         ; bit 5, c
Z80OPCB_BIT_5_D:        equ $6A         ; bit 5, d
Z80OPCB_BIT_5_E:        equ $6B         ; bit 5, e
Z80OPCB_BIT_5_H:        equ $6C         ; bit 5, h
Z80OPCB_BIT_5_L:        equ $6D         ; bit 5, l
Z80OPCB_BIT_5_iHL:      equ $6E         ; bit 5, (hl)
Z80OPCB_BIT_6_A:        equ $77         ; bit 6, a
Z80OPCB_BIT_6_B:        equ $70         ; bit 6, b
Z80OPCB_BIT_6_C:        equ $71         ; bit 6, c
Z80OPCB_BIT_6_D:        equ $72         ; bit 6, d
Z80OPCB_BIT_6_E:        equ $73         ; bit 6, e
Z80OPCB_BIT_6_H:        equ $74         ; bit 6, h
Z80OPCB_BIT_6_L:        equ $75         ; bit 6, l
Z80OPCB_BIT_6_iHL:      equ $76         ; bit 6, (hl)
Z80OPCB_BIT_7_A:        equ $7F         ; bit 7, a
Z80OPCB_BIT_7_B:        equ $78         ; bit 7, b
Z80OPCB_BIT_7_C:        equ $79         ; bit 7, c
Z80OPCB_BIT_7_D:        equ $7A         ; bit 7, d
Z80OPCB_BIT_7_E:        equ $7B         ; bit 7, e
Z80OPCB_BIT_7_H:        equ $7C         ; bit 7, h
Z80OPCB_BIT_7_L:        equ $7D         ; bit 7, l
Z80OPCB_BIT_7_iHL:      equ $7E         ; bit 7, (hl)

Z80OPCB_RES_0_A:        equ $87         ; res 0, a
Z80OPCB_RES_0_B:        equ $80         ; res 0, b
Z80OPCB_RES_0_C:        equ $81         ; res 0, c
Z80OPCB_RES_0_D:        equ $82         ; res 0, d
Z80OPCB_RES_0_E:        equ $83         ; res 0, e
Z80OPCB_RES_0_H:        equ $84         ; res 0, h
Z80OPCB_RES_0_L:        equ $85         ; res 0, l
Z80OPCB_RES_0_iHL:      equ $86         ; res 0, (hl)
Z80OPCB_RES_1_A:        equ $8F         ; res 1, a
Z80OPCB_RES_1_B:        equ $88         ; res 1, b
Z80OPCB_RES_1_C:        equ $89         ; res 1, c
Z80OPCB_RES_1_D:        equ $8A         ; res 1, d
Z80OPCB_RES_1_E:        equ $8B         ; res 1, e
Z80OPCB_RES_1_H:        equ $8C         ; res 1, h
Z80OPCB_RES_1_L:        equ $8D         ; res 1, l
Z80OPCB_RES_1_iHL:      equ $8E         ; res 1, (hl)
Z80OPCB_RES_2_A:        equ $97         ; res 2, a
Z80OPCB_RES_2_B:        equ $90         ; res 2, b
Z80OPCB_RES_2_C:        equ $91         ; res 2, c
Z80OPCB_RES_2_D:        equ $92         ; res 2, d
Z80OPCB_RES_2_E:        equ $93         ; res 2, e
Z80OPCB_RES_2_H:        equ $94         ; res 2, h
Z80OPCB_RES_2_L:        equ $95         ; res 2, l
Z80OPCB_RES_2_iHL:      equ $96         ; res 2, (hl)
Z80OPCB_RES_3_A:        equ $9F         ; res 3, a
Z80OPCB_RES_3_B:        equ $98         ; res 3, b
Z80OPCB_RES_3_C:        equ $99         ; res 3, c
Z80OPCB_RES_3_D:        equ $9A         ; res 3, d
Z80OPCB_RES_3_E:        equ $9B         ; res 3, e
Z80OPCB_RES_3_H:        equ $9C         ; res 3, h
Z80OPCB_RES_3_L:        equ $9D         ; res 3, l
Z80OPCB_RES_3_iHL:      equ $9E         ; res 3, (hl)
Z80OPCB_RES_4_A:        equ $A7         ; res 4, a
Z80OPCB_RES_4_B:        equ $A0         ; res 4, b
Z80OPCB_RES_4_C:        equ $A1         ; res 4, c
Z80OPCB_RES_4_D:        equ $A2         ; res 4, d
Z80OPCB_RES_4_E:        equ $A3         ; res 4, e
Z80OPCB_RES_4_H:        equ $A4         ; res 4, h
Z80OPCB_RES_4_L:        equ $A5         ; res 4, l
Z80OPCB_RES_4_iHL:      equ $A6         ; res 4, (hl)
Z80OPCB_RES_5_A:        equ $AF         ; res 5, a
Z80OPCB_RES_5_B:        equ $A8         ; res 5, b
Z80OPCB_RES_5_C:        equ $A9         ; res 5, c
Z80OPCB_RES_5_D:        equ $AA         ; res 5, d
Z80OPCB_RES_5_E:        equ $AB         ; res 5, e
Z80OPCB_RES_5_H:        equ $AC         ; res 5, h
Z80OPCB_RES_5_L:        equ $AD         ; res 5, l
Z80OPCB_RES_5_iHL:      equ $AE         ; res 5, (hl)
Z80OPCB_RES_6_A:        equ $B7         ; res 6, a
Z80OPCB_RES_6_B:        equ $B0         ; res 6, b
Z80OPCB_RES_6_C:        equ $B1         ; res 6, c
Z80OPCB_RES_6_D:        equ $B2         ; res 6, d
Z80OPCB_RES_6_E:        equ $B3         ; res 6, e
Z80OPCB_RES_6_H:        equ $B4         ; res 6, h
Z80OPCB_RES_6_L:        equ $B5         ; res 6, l
Z80OPCB_RES_6_iHL:      equ $B6         ; res 6, (hl)
Z80OPCB_RES_7_A:        equ $BF         ; res 7, a
Z80OPCB_RES_7_B:        equ $B8         ; res 7, b
Z80OPCB_RES_7_C:        equ $B9         ; res 7, c
Z80OPCB_RES_7_D:        equ $BA         ; res 7, d
Z80OPCB_RES_7_E:        equ $BB         ; res 7, e
Z80OPCB_RES_7_H:        equ $BC         ; res 7, h
Z80OPCB_RES_7_L:        equ $BD         ; res 7, l
Z80OPCB_RES_7_iHL:      equ $BE         ; res 7, (hl)

Z80OPCB_RL_A:           equ $17         ; rl a
Z80OPCB_RL_B:           equ $10         ; rl b
Z80OPCB_RL_C:           equ $11         ; rl c
Z80OPCB_RL_D:           equ $12         ; rl d
Z80OPCB_RL_E:           equ $13         ; rl e
Z80OPCB_RL_H:           equ $14         ; rl h
Z80OPCB_RL_L:           equ $15         ; rl l
Z80OPCB_RL_iHL:         equ $16         ; rl (hl)

Z80OPCB_RLC_A:          equ $07         ; rlc a
Z80OPCB_RLC_B:          equ $00         ; rlc b
Z80OPCB_RLC_C:          equ $01         ; rlc c
Z80OPCB_RLC_D:          equ $02         ; rlc d
Z80OPCB_RLC_E:          equ $03         ; rlc e
Z80OPCB_RLC_H:          equ $04         ; rlc h
Z80OPCB_RLC_L:          equ $05         ; rlc l
Z80OPCB_RLC_iHL:        equ $06         ; rlc (hl)

Z80OPCB_RR_A:           equ $1F         ; rr a
Z80OPCB_RR_B:           equ $18         ; rr b
Z80OPCB_RR_C:           equ $19         ; rr c
Z80OPCB_RR_D:           equ $1A         ; rr d
Z80OPCB_RR_E:           equ $1B         ; rr e
Z80OPCB_RR_H:           equ $1C         ; rr h
Z80OPCB_RR_L:           equ $1D         ; rr l
Z80OPCB_RR_iHL:         equ $1E         ; rr (hl)

Z80OPCB_RRC_A:          equ $0F         ; rrc a
Z80OPCB_RRC_B:          equ $08         ; rrc b
Z80OPCB_RRC_C:          equ $09         ; rrc c
Z80OPCB_RRC_D:          equ $0A         ; rrc d
Z80OPCB_RRC_E:          equ $0B         ; rrc e
Z80OPCB_RRC_H:          equ $0C         ; rrc h
Z80OPCB_RRC_L:          equ $0D         ; rrc l
Z80OPCB_RRC_iHL:        equ $0E         ; rrc (hl)

Z80OPCB_SET_0_A:        equ $C7         ; set 0, a
Z80OPCB_SET_0_B:        equ $C0         ; set 0, b
Z80OPCB_SET_0_C:        equ $C1         ; set 0, c
Z80OPCB_SET_0_D:        equ $C2         ; set 0, d
Z80OPCB_SET_0_E:        equ $C3         ; set 0, e
Z80OPCB_SET_0_H:        equ $C4         ; set 0, h
Z80OPCB_SET_0_L:        equ $C5         ; set 0, l
Z80OPCB_SET_0_iHL:      equ $C6         ; set 0, (hl)
Z80OPCB_SET_1_A:        equ $CF         ; set 1, a
Z80OPCB_SET_1_B:        equ $C8         ; set 1, b
Z80OPCB_SET_1_C:        equ $C9         ; set 1, c
Z80OPCB_SET_1_D:        equ $CA         ; set 1, d
Z80OPCB_SET_1_E:        equ $CB         ; set 1, e
Z80OPCB_SET_1_H:        equ $CC         ; set 1, h
Z80OPCB_SET_1_L:        equ $CD         ; set 1, l
Z80OPCB_SET_1_iHL:      equ $CE         ; set 1, (hl)
Z80OPCB_SET_2_A:        equ $D7         ; set 2, a
Z80OPCB_SET_2_B:        equ $D0         ; set 2, b
Z80OPCB_SET_2_C:        equ $D1         ; set 2, c
Z80OPCB_SET_2_D:        equ $D2         ; set 2, d
Z80OPCB_SET_2_E:        equ $D3         ; set 2, e
Z80OPCB_SET_2_H:        equ $D4         ; set 2, h
Z80OPCB_SET_2_L:        equ $D5         ; set 2, l
Z80OPCB_SET_2_iHL:      equ $D6         ; set 2, (hl)
Z80OPCB_SET_3_A:        equ $DF         ; set 3, a
Z80OPCB_SET_3_B:        equ $D8         ; set 3, b
Z80OPCB_SET_3_C:        equ $D9         ; set 3, c
Z80OPCB_SET_3_D:        equ $DA         ; set 3, d
Z80OPCB_SET_3_E:        equ $DB         ; set 3, e
Z80OPCB_SET_3_H:        equ $DC         ; set 3, h
Z80OPCB_SET_3_L:        equ $DD         ; set 3, l
Z80OPCB_SET_3_iHL:      equ $DE         ; set 3, (hl)
Z80OPCB_SET_4_A:        equ $E7         ; set 4, a
Z80OPCB_SET_4_B:        equ $E0         ; set 4, b
Z80OPCB_SET_4_C:        equ $E1         ; set 4, c
Z80OPCB_SET_4_D:        equ $E2         ; set 4, d
Z80OPCB_SET_4_E:        equ $E3         ; set 4, e
Z80OPCB_SET_4_H:        equ $E4         ; set 4, h
Z80OPCB_SET_4_L:        equ $E5         ; set 4, l
Z80OPCB_SET_4_iHL:      equ $E6         ; set 4, (hl)
Z80OPCB_SET_5_A:        equ $EF         ; set 5, a
Z80OPCB_SET_5_B:        equ $E8         ; set 5, b
Z80OPCB_SET_5_C:        equ $E9         ; set 5, c
Z80OPCB_SET_5_D:        equ $EA         ; set 5, d
Z80OPCB_SET_5_E:        equ $EB         ; set 5, e
Z80OPCB_SET_5_H:        equ $EC         ; set 5, h
Z80OPCB_SET_5_L:        equ $ED         ; set 5, l
Z80OPCB_SET_5_iHL:      equ $EE         ; set 5, (hl)
Z80OPCB_SET_6_A:        equ $F7         ; set 6, a
Z80OPCB_SET_6_B:        equ $F0         ; set 6, b
Z80OPCB_SET_6_C:        equ $F1         ; set 6, c
Z80OPCB_SET_6_D:        equ $F2         ; set 6, d
Z80OPCB_SET_6_E:        equ $F3         ; set 6, e
Z80OPCB_SET_6_H:        equ $F4         ; set 6, h
Z80OPCB_SET_6_L:        equ $F5         ; set 6, l
Z80OPCB_SET_6_iHL:      equ $F6         ; set 6, (hl)
Z80OPCB_SET_7_A:        equ $FF         ; set 7, a
Z80OPCB_SET_7_B:        equ $F8         ; set 7, b
Z80OPCB_SET_7_C:        equ $F9         ; set 7, c
Z80OPCB_SET_7_D:        equ $FA         ; set 7, d
Z80OPCB_SET_7_E:        equ $FB         ; set 7, e
Z80OPCB_SET_7_H:        equ $FC         ; set 7, h
Z80OPCB_SET_7_L:        equ $FD         ; set 7, l
Z80OPCB_SET_7_iHL:      equ $FE         ; set 7, (hl)

Z80OPCB_SLA_A:          equ $27         ; sla a
Z80OPCB_SLA_B:          equ $20         ; sla b
Z80OPCB_SLA_C:          equ $21         ; sla c
Z80OPCB_SLA_D:          equ $22         ; sla d
Z80OPCB_SLA_E:          equ $23         ; sla e
Z80OPCB_SLA_H:          equ $24         ; sla h
Z80OPCB_SLA_L:          equ $25         ; sla l
Z80OPCB_SLA_iHL:        equ $26         ; sla (hl)

Z80OPCB_SRA_A:          equ $2F         ; sra a
Z80OPCB_SRA_B:          equ $28         ; sra b
Z80OPCB_SRA_C:          equ $29         ; sra c
Z80OPCB_SRA_D:          equ $2A         ; sra d
Z80OPCB_SRA_E:          equ $2B         ; sra e
Z80OPCB_SRA_H:          equ $2C         ; sra h
Z80OPCB_SRA_L:          equ $2D         ; sra l
Z80OPCB_SRA_iHL:        equ $2E         ; sra (hl)

Z80OPCB_SRL_A:          equ $3F         ; srl a
Z80OPCB_SRL_B:          equ $38         ; srl b
Z80OPCB_SRL_C:          equ $39         ; srl c
Z80OPCB_SRL_D:          equ $3A         ; srl d
Z80OPCB_SRL_E:          equ $3B         ; srl e
Z80OPCB_SRL_H:          equ $3C         ; srl h
Z80OPCB_SRL_L:          equ $3D         ; srl l
Z80OPCB_SRL_iHL:        equ $3E         ; srl (hl)

;----------------------------------------------------------------------------
; The following opcodes need to be prefixed with $ED
;----------------------------------------------------------------------------

Z80OPED_ADC_HL_BC:      equ $4A         ; adc hl, bc
Z80OPED_ADC_HL_DE:      equ $5A         ; adc hl, de
Z80OPED_ADC_HL_HL:      equ $6A         ; adc hl, hl
Z80OPED_ADC_HL_SP:      equ $7A         ; adc hl, sp

Z80OPED_CPD:            equ $A9         ; cpd
Z80OPED_CPDR:           equ $B9         ; cpdr
Z80OPED_CPI:            equ $A1         ; cpi
Z80OPED_CPIR:           equ $B1         ; cpir

Z80OPED_IM_0:           equ $46         ; im 0
Z80OPED_IM_1:           equ $56         ; im 1
Z80OPED_IM_2:           equ $5E         ; im 2

Z80OPED_IN_A_iC:        equ $78         ; in a, (c)
Z80OPED_IN_B_iC:        equ $40         ; in b, (c)
Z80OPED_IN_C_iC:        equ $48         ; in c, (c)
Z80OPED_IN_D_iC:        equ $50         ; in d, (c)
Z80OPED_IN_E_iC:        equ $58         ; in e, (c)
Z80OPED_IN_H_iC:        equ $60         ; in h, (c)
Z80OPED_IN_L_iC:        equ $68         ; in l, (c)
Z80OPED_IND:            equ $AA         ; ind
Z80OPED_INDR:           equ $BA         ; indr
Z80OPED_INI:            equ $A2         ; ini
Z80OPED_INIR:           equ $B2         ; inir

Z80OPED_LD_A_I:         equ $57         ; ld a, i
Z80OPED_LD_A_R:         equ $5F         ; ld a, r
Z80OPED_LD_I_A:         equ $47         ; ld i, a
Z80OPED_LD_R_A:         equ $4F         ; ld r, a

Z80OPED_LD_BC_MEM:      equ $4B         ; ld bc, (nnnn)
Z80OPED_LD_DE_MEM:      equ $5B         ; ld de, (nnnn)
Z80OPED_LD_HL_MEM:      equ $6B         ; ld hl, (nnnn)
Z80OPED_LD_SP_MEM:      equ $7B         ; ld sp, (nnnn)
Z80OPED_LD_MEM_BC:      equ $43         ; ld (nnnn), bc
Z80OPED_LD_MEM_DE:      equ $53         ; ld (nnnn), de
Z80OPED_LD_MEM_HL:      equ $63         ; ld (nnnn), hl
Z80OPED_LD_MEM_SP:      equ $73         ; ld (nnnn), sp

Z80OPED_LDD:            equ $A8         ; ldd
Z80OPED_LDDR:           equ $B8         ; lddr
Z80OPED_LDI:            equ $A0         ; ldi
Z80OPED_LDIR:           equ $B0         ; ldir

Z80OPED_NEG:            equ $44         ; neg

Z80OPED_OUT_iC_A:       equ $79         ; out (c), a
Z80OPED_OUT_iC_B:       equ $41         ; out (c), b
Z80OPED_OUT_iC_C:       equ $49         ; out (c), c
Z80OPED_OUT_iC_D:       equ $51         ; out (c), d
Z80OPED_OUT_iC_E:       equ $59         ; out (c), e
Z80OPED_OUT_iC_H:       equ $61         ; out (c), h
Z80OPED_OUT_iC_L:       equ $69         ; out (c), l
Z80OPED_OUTD:           equ $AB         ; outd
Z80OPED_OTDR:           equ $BB         ; otdr
Z80OPED_OUTI:           equ $A3         ; outi
Z80OPED_OTIR:           equ $B3         ; otir

Z80OPED_RETI:           equ $4D         ; reti
Z80OPED_RETN:           equ $45         ; retn

Z80OPED_RLD:            equ $6F         ; rld
Z80OPED_RRD:            equ $67         ; rrd

Z80OPED_SBC_HL_BC:      equ $42         ; sbc hl, bc
Z80OPED_SBC_HL_DE:      equ $52         ; sbc hl, de
Z80OPED_SBC_HL_HL:      equ $62         ; sbc hl, hl
Z80OPED_SBC_HL_SP:      equ $72         ; sbc hl, sp

;----------------------------------------------------------------------------
; Prefixes
;----------------------------------------------------------------------------

Z80PREF_ED:             equ $ED         ; most extended opcodes
Z80PREF_CB:             equ $CB         ; bit operation opcodes
Z80PREF_IX:             equ $DD         ; replace hl with ix
Z80PREF_IY:             equ $FD         ; replace hl with iy