Files
open-roms/src/zvm_m65/z80_instr_jump.s
T
2021-01-31 10:27:45 +01:00

146 lines
1.8 KiB
ArmAsm

;
; Z80 jump instructions
;
Z80_instr_C3: ; JP nn
+Z80_FETCH_VIA_PC_INC
tax
+Z80_FETCH_VIA_PC_INC
stx REG_PC+0
sta REG_PC+1
jmp ZVM_next
Z80_instr_C2: ; JP NZ,nn
bbr6 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_CA: ; JP Z,nn
bbs6 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_D2: ; JP NC,nn
bbr0 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_DA: ; JP C,nn
bbs0 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_E2: ; JP PO,nn
bbr2 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_EA: ; JP PE,nn
bbs2 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_F2: ; JP P,nn
bbr7 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_FA: ; JP M,nn
bbs7 REG_F,Z80_instr_C3
inw REG_PC
inw REG_PC
jmp ZVM_next
Z80_instr_E9: ; JP (HL)
lda REG_L+0
sta REG_PC+0
lda REG_L+1
sta REG_PC+1
jmp ZVM_next
Z80_instr_DD_E9: ; JP (IX)
lda REG_IX+0
sta REG_PC+0
lda REG_IX+1
sta REG_PC+1
jmp ZVM_next
Z80_instr_FD_E9: ; JP (IY)
lda REG_IY+0
sta REG_PC+0
lda REG_IY+1
sta REG_PC+1
jmp ZVM_next
Z80_instr_18: ; JR e
bit REG_PC+0
bmi @1
dec REG_PC+1
smb7 REG_PC+0
bra @2
@1:
rmb7 REG_PC+0
@2:
+Z80_FETCH_VIA_PC_INC
tax
lda z80_otable_displacement,x
clc
adc REG_PC+0
sta REG_PC+0
+bcc ZVM_next
inc REG_PC+1
jmp ZVM_next
Z80_instr_20: ; JR NZ,e
bbr6 REG_F,Z80_instr_18
inw REG_PC
jmp ZVM_next
Z80_instr_28: ; JR Z,e
bbs6 REG_F,Z80_instr_18
inw REG_PC
jmp ZVM_next
Z80_instr_30: ; JR NC,e
bbr0 REG_F,Z80_instr_18
inw REG_PC
jmp ZVM_next
Z80_instr_38: ; JR C,e
bbs0 REG_F,Z80_instr_18
inw REG_PC
jmp ZVM_next
Z80_instr_10: ; DJNZ e
dec REG_B
bne Z80_instr_18
inw REG_PC
jmp ZVM_next