Files
open-roms/src/zvm_m65/z80_reset.s
T

39 lines
712 B
ArmAsm

;
; Z80 CPU reset
;
Z80_reset:
; Reset registers and internal emulation data
lda #$00
tay
@1:
sta z80_cpustate__start, y
iny
cpy #(z80_cpustate__end - z80_cpustate__start + 1)
bne @1
dew REG_AF ; AF and SP have $FFFF value at start
dew REG_SP
lda TIME+2 ; give a little initial randomness to register R
sta REG_R06
; The engine requires all the Z80 visible memory to be present within the 1st 16MB,
; so set the most significant bytes of 32-bit pointers to 0.
stz REG_BC_EXT+1
stz REG_DE_EXT+1
stz REG_HL_EXT+1
stz REG_SP_EXT+1
stz REG_PC_EXT+1
stz PTR_IXY_d+3
stz PTR_DATA+3
; Default bank is 1 (the one user software runs from)
jmp ZVM_set_bank_1