several Z80 fixes

This commit is contained in:
FeralChild64 committed 2021-01-31 10:27:45 +01:00
1 parent 6f1a80637e
commit fb8592dc5e
6 files changed
+34 -13

No files matched your search

+7 -2
View File
@@ -2,6 +2,8 @@
DBG_print_PC_opcode:
rts ; XXX disable this to turn debugging on
php
pha
phx
@@ -11,7 +13,7 @@ DBG_print_PC_opcode:
pha
jsr PRIMM
!pet $0D, "PC: ", 0
!pet $0D, $1E, "PC: ", 0
dew REG_PC
lda REG_PC+1
@@ -24,8 +26,11 @@ DBG_print_PC_opcode:
!pet " opcode: ", 0
pla
+beq MONITOR
pha
jsr DBGINT_print_hex_byte
pla
@1:
beq @1 ; XXX stop on NOP
; FALLTROUGH
+2 -1
View File
@@ -103,7 +103,8 @@ Z80_instr_76: ;
cmp #$FF ; $FF = CP/M call
+beq zvm_CPMemu
inc $D021
@halt: ; XXX temporary, as the BIOS is not ready yet
bra @halt
ldx #$01 ; default routine, warm boot
+2 -3
View File
@@ -7,10 +7,9 @@
Z80_instr_C3: ; JP nn
+Z80_FETCH_VIA_PC_INC
jsr DBG_print_hex
sta REG_PC+0
tax
+Z80_FETCH_VIA_PC_INC
jsr DBG_print_hex
stx REG_PC+0
sta REG_PC+1
jmp ZVM_next
+1 -1
View File
@@ -22,7 +22,7 @@ Z80_instr_FD_21: +Z80_LD_REGnn_nn REG_IY ;
!macro Z80_LD_REGnn_REGnn .REGnn1, .REGnn2 {
lda .REGnn2+0
sta .REGnn1+0
jsr .REGnn2+1
lda .REGnn2+1
sta .REGnn1+1
jmp ZVM_next
}
+9 -4
View File
@@ -6,12 +6,11 @@
zvm_CPMemu:
jsr PRIMM
!pet "DBG: CP1", $0D, 0
ldx REG_C
cpx #$09
beq zvm_CPMemu_09
cpx #$02
beq zvm_CPMemu_02
; XXX implement additional functions if needed
@@ -21,10 +20,16 @@ zvm_CPMemu_end:
jmp Z80_instr_C9 ; RET
zvm_CPMemu_02: ; C_WRITE
lda REG_E
jsr CHROUT
bra zvm_CPMemu_end
zvm_CPMemu_09: ; C_WRITESTR
+Z80_FETCH_VIA_DE
cmp #'$'
cmp #$24 ; CP/M string termination character
beq zvm_CPMemu_end
jsr CHROUT
+13 -2
View File
@@ -111,12 +111,12 @@ ZVM_cputest:
; Copy up to 512 bytes from buffer to target memory
inw BIOS_LOADCOUNT
inw BIOS_LOADCOUNT ; XXX workaround for DEW not handling N flag
@loop3:
dew BIOS_LOADCOUNT
beq @loop2 ; XXX why no BMI, without INW?
beq @loop2
lda [BIOS_IOBUFERPTR],z
sta [BIOS_LOADPTR],z
@@ -152,8 +152,19 @@ ZVM_cputest:
lda #$FF
sta [BIOS_LOADPTR],z ; $FF = CP/M simulation for CPU test
lda #$00
sta BIOS_LOADPTR+0
lda #$76 ; HALT
sta [BIOS_LOADPTR],z
inc BIOS_LOADPTR
lda #$FE
sta [BIOS_LOADPTR],z ; $FE = dummy
; Run the software
jsr PRIMM
!pet $0D, $0D, 0
ldz #$00 ; in case hypervisor modified it
jmp ZVM_next