some code for loading CPU test from SD card
This commit is contained in:
1 parent
265c29a883
commit
6e42bfe731
4 files changed
+97
-6
No files matched your search
@@ -72,6 +72,11 @@
|
|||||||
!addr MISC_BOARDID = $D629 ; board identification byte
|
!addr MISC_BOARDID = $D629 ; board identification byte
|
||||||
!addr MISC_EMU = $D710 ; to enable badlines and slow interrupts
|
!addr MISC_EMU = $D710 ; to enable badlines and slow interrupts
|
||||||
|
|
||||||
|
; Hypervisor traps
|
||||||
|
|
||||||
|
!addr HTRAP00 = $D640
|
||||||
|
|
||||||
|
|
||||||
; SID offsets
|
; SID offsets
|
||||||
|
|
||||||
!set __SID_R1_OFFSET = $00 ; right SID 1, $D400
|
!set __SID_R1_OFFSET = $00 ; right SID 1, $D400
|
||||||
|
|||||||
@@ -33,6 +33,6 @@ Z80_reset:
|
|||||||
stz PTR_IXY_d+3
|
stz PTR_IXY_d+3
|
||||||
stz PTR_DATA+3
|
stz PTR_DATA+3
|
||||||
|
|
||||||
; Default bank is 1 (the fastest, continuous memory)
|
; Default bank is 1 (the one user software runs from)
|
||||||
|
|
||||||
jmp ZVM_set_bank_1
|
jmp ZVM_set_bank_1
|
||||||
+9
-5
@@ -51,12 +51,18 @@ ZVM: ; entry point
|
|||||||
|
|
||||||
; Check if extended memory is present
|
; Check if extended memory is present
|
||||||
|
|
||||||
jsr ZVM_memtest
|
; XXX enable test jsr ZVM_memtest
|
||||||
|
|
||||||
; Generate CPU tables
|
; Generate CPU tables
|
||||||
|
|
||||||
jsr z80_table_gen
|
jsr z80_table_gen
|
||||||
|
|
||||||
|
; Try CPU test
|
||||||
|
|
||||||
|
jsr ZVM_cputest
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; XXX code is not ready to progress further
|
; XXX code is not ready to progress further
|
||||||
jsr PRIMM
|
jsr PRIMM
|
||||||
!pet $0D, "Implementation not finished yet.", 0
|
!pet $0D, "Implementation not finished yet.", 0
|
||||||
@@ -82,12 +88,10 @@ ZVM: ; entry point
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ZVM_memtest:
|
ZVM_memtest:
|
||||||
|
|
||||||
; Simple memory test
|
; Simple memory test
|
||||||
; XXX this test is temporary
|
; XXX this test fails for now
|
||||||
|
|
||||||
lda #$00
|
lda #$00
|
||||||
sta PTR_DATA+0
|
sta PTR_DATA+0
|
||||||
@@ -98,7 +102,7 @@ ZVM_memtest:
|
|||||||
|
|
||||||
ldx #$F0
|
ldx #$F0
|
||||||
@1:
|
@1:
|
||||||
ldy #$00
|
ldy #$10
|
||||||
@2:
|
@2:
|
||||||
lda PTR_DATA+2
|
lda PTR_DATA+2
|
||||||
eor #%01111111
|
eor #%01111111
|
||||||
|
|||||||
@@ -0,0 +1,82 @@
|
|||||||
|
|
||||||
|
;
|
||||||
|
; Z80 Virtual Machine CPU test
|
||||||
|
;
|
||||||
|
|
||||||
|
|
||||||
|
ZVM_cputest:
|
||||||
|
|
||||||
|
; Copy file name to RAM
|
||||||
|
|
||||||
|
ldx #$FF
|
||||||
|
|
||||||
|
@loop1:
|
||||||
|
|
||||||
|
inx
|
||||||
|
lda ZVM_filename_Z80TEST, x
|
||||||
|
sta BUF, x
|
||||||
|
bne @loop1
|
||||||
|
|
||||||
|
; Set Z80TEST.COM file name
|
||||||
|
|
||||||
|
ldy #>BUF
|
||||||
|
ldx #<BUF
|
||||||
|
lda #$2E ; dos_setname
|
||||||
|
sta HTRAP00
|
||||||
|
+nop ; required by hypervisor
|
||||||
|
bcc @end
|
||||||
|
|
||||||
|
; Try to find the file
|
||||||
|
|
||||||
|
lda #$34
|
||||||
|
sta HTRAP00
|
||||||
|
+nop
|
||||||
|
bcc @end
|
||||||
|
|
||||||
|
jsr PRIMM
|
||||||
|
!pet "Loading 'Z80TEST.COM'... ", 0
|
||||||
|
|
||||||
|
; Open the file
|
||||||
|
|
||||||
|
lda #$00
|
||||||
|
sta HTRAP00
|
||||||
|
+nop
|
||||||
|
|
||||||
|
lda #$18
|
||||||
|
sta HTRAP00
|
||||||
|
+nop
|
||||||
|
|
||||||
|
; Select SD card buffer
|
||||||
|
|
||||||
|
lda #$80
|
||||||
|
tsb $D689 ; XXX invent name for the register
|
||||||
|
|
||||||
|
; Read sectors
|
||||||
|
|
||||||
|
@loop2:
|
||||||
|
|
||||||
|
lda #$1A
|
||||||
|
sta HTRAP00
|
||||||
|
+nop
|
||||||
|
|
||||||
|
; .X (low byte) and .Y (high byte) contain number of bytes read
|
||||||
|
|
||||||
|
; XXX copy data from buffer at $FFD6E00
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; XXX finish the implementation
|
||||||
|
|
||||||
|
|
||||||
|
@end:
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
ZVM_filename_Z80TEST:
|
||||||
|
|
||||||
|
!pet "z80test.com", 0
|
||||||
Reference in new issue
Block a user