From c6ed0f0d00ce76d38357a0f51b6a2334eea3620a Mon Sep 17 00:00:00 2001 From: FeralChild64 Date: Sat, 30 Jan 2021 17:07:11 +0100 Subject: [PATCH] added memory clearing, improved debug code --- src/zvm_m65/debug.s | 2 +- src/zvm_m65/z80_dispatch.s | 2 +- src/zvm_m65/z80_reset.s | 26 ++++++++++++++++++++++++-- src/zvm_m65/zvm.s | 4 ++-- src/zvm_m65/zvm_bios.s | 4 ++-- 5 files changed, 30 insertions(+), 8 deletions(-) diff --git a/src/zvm_m65/debug.s b/src/zvm_m65/debug.s index 9f39401a..73d9618a 100644 --- a/src/zvm_m65/debug.s +++ b/src/zvm_m65/debug.s @@ -54,7 +54,7 @@ DBG_print_hex: jsr CHROUT pla jsr DBGINT_print_hex_byte - jmp DBGINT_end + bra DBGINT_end diff --git a/src/zvm_m65/z80_dispatch.s b/src/zvm_m65/z80_dispatch.s index 9d0132fc..00dc7f18 100644 --- a/src/zvm_m65/z80_dispatch.s +++ b/src/zvm_m65/z80_dispatch.s @@ -9,7 +9,7 @@ +Z80_FETCH_VIA_PC_INC - ; jsr DBG_print_PC_opcode + jsr DBG_print_PC_opcode asl tax diff --git a/src/zvm_m65/z80_reset.s b/src/zvm_m65/z80_reset.s index dd8ba8ea..bddecbe5 100644 --- a/src/zvm_m65/z80_reset.s +++ b/src/zvm_m65/z80_reset.s @@ -1,10 +1,10 @@ ; -; Z80 CPU reset +; Z80 CPU/memory reset ; -Z80_reset: +Z80_reset_CPU: ; Reset registers and internal emulation data @@ -36,3 +36,25 @@ Z80_reset: ; Default bank is 1 (the one user software runs from) jmp ZVM_set_bank_1 + + +Z80_reset_MEM: + + lda #$05 + sta BIOS_LOADPTR+2 + lda #$00 + sta BIOS_LOADPTR+0 + sta BIOS_LOADPTR+1 + sta BIOS_LOADPTR+3 + +@loop: + + dec BIOS_LOADPTR+2 + sta [BIOS_LOADPTR],z + inc BIOS_LOADPTR+2 + sta [BIOS_LOADPTR],z + + inw BIOS_LOADPTR + bne @loop + + rts diff --git a/src/zvm_m65/zvm.s b/src/zvm_m65/zvm.s index e22212b7..8cdbf8c2 100644 --- a/src/zvm_m65/zvm.s +++ b/src/zvm_m65/zvm.s @@ -56,8 +56,8 @@ ZVM: ; entry point ; Generate CPU tables, reset the CPU jsr Z80_table_gen - jsr Z80_reset - ; XXX Z80 clear memory here + ; XXX jsr Z80_reset_MEM + jsr Z80_reset_CPU ; Try CPU test diff --git a/src/zvm_m65/zvm_bios.s b/src/zvm_m65/zvm_bios.s index 86d6b7f4..e3454ff0 100644 --- a/src/zvm_m65/zvm_bios.s +++ b/src/zvm_m65/zvm_bios.s @@ -55,9 +55,9 @@ zvm_BIOS_00_BOOT: ; Cold start ; XXX fetch RAM disk image, CPM3.SYS, command interpreter ; XXX close all the files, reset I/O, set screen mode - ; XXX clear memory - jsr Z80_reset + jsr Z80_reset_MEM + jsr Z80_reset_CPU ; FALLTROUGH