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:
|
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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user