;****************************************************************************
; 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