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