crude implementation of CP/M rutine $09
This commit is contained in:
1 parent
eef13f4cfe
commit
5e8d2205e8
3 files changed
+44
-11
No files matched your search
@@ -96,17 +96,17 @@ Z80_instr_37: ;
|
|||||||
|
|
||||||
Z80_instr_76: ; HALT
|
Z80_instr_76: ; HALT
|
||||||
|
|
||||||
; Used to call BIOS routines
|
; Used to call BIOS and simulated CP/M routines
|
||||||
; XXX probably not the besta idea, GENCPC seems to do some relocations
|
|
||||||
|
|
||||||
ldx #$01 ; default BIOS function, warm start
|
+Z80_FETCH_VIA_PC_INC
|
||||||
|
|
||||||
|
cmp #$FF ; $FF = CP/M call
|
||||||
|
+beq zvm_CPMemu
|
||||||
|
|
||||||
|
inc $D021
|
||||||
|
|
||||||
|
ldx #$01 ; default routine, warm boot
|
||||||
|
|
||||||
lda REG_PC+1
|
|
||||||
cmp #$FE ;
|
|
||||||
bne @1
|
|
||||||
lda REG_PC+0
|
|
||||||
sec
|
|
||||||
sbc #$64
|
|
||||||
cmp #33
|
cmp #33
|
||||||
bcs @1
|
bcs @1
|
||||||
tax
|
tax
|
||||||
|
|||||||
@@ -0,0 +1,29 @@
|
|||||||
|
|
||||||
|
;
|
||||||
|
; Z80 Virtual Machine CP/M simulation (just to run selected binaries)
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
zvm_CPMemu:
|
||||||
|
|
||||||
|
ldx REG_C
|
||||||
|
cpx #$09
|
||||||
|
beq zvm_CPMemu_09
|
||||||
|
|
||||||
|
; XXX implement additional functions if needed
|
||||||
|
|
||||||
|
; FALLTROUGH
|
||||||
|
|
||||||
|
zvm_CPMemu_end:
|
||||||
|
|
||||||
|
jmp Z80_instr_C9 ; RET
|
||||||
|
|
||||||
|
zvm_CPMemu_09: ; C_WRITESTR
|
||||||
|
|
||||||
|
+Z80_FETCH_VIA_DE
|
||||||
|
cmp #'$'
|
||||||
|
beq zvm_CPMemu_end
|
||||||
|
|
||||||
|
jsr CHROUT
|
||||||
|
inw REG_DE
|
||||||
|
bra zvm_CPMemu_09
|
||||||
@@ -105,8 +105,6 @@ ZVM_cputest:
|
|||||||
|
|
||||||
@loop3:
|
@loop3:
|
||||||
|
|
||||||
inc $D020
|
|
||||||
|
|
||||||
dew BIOS_LOADCOUNT
|
dew BIOS_LOADCOUNT
|
||||||
bmi @loop2
|
bmi @loop2
|
||||||
|
|
||||||
@@ -120,6 +118,12 @@ ZVM_cputest:
|
|||||||
|
|
||||||
@load_done:
|
@load_done:
|
||||||
|
|
||||||
|
; Close the file
|
||||||
|
|
||||||
|
lda #$20
|
||||||
|
sta HTRAP00
|
||||||
|
+nop
|
||||||
|
|
||||||
jsr PRIMM
|
jsr PRIMM
|
||||||
!pet " done", $0D, $0D, 0
|
!pet " done", $0D, $0D, 0
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user