several Z80 fixes
This commit is contained in:
1 parent
6f1a80637e
commit
fb8592dc5e
6 files changed
+34
-13
No files matched your search
+7
-2
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
Reference in new issue
Block a user