more work towards preloading RAM disk image
This commit is contained in:
1 parent
215adaf47a
commit
ad66c0972a
3 files changed
+58
-7
No files matched your search
@@ -138,10 +138,12 @@
|
|||||||
!addr F1_LOADTRACK = $807D ; current track for file loading
|
!addr F1_LOADTRACK = $807D ; current track for file loading
|
||||||
!addr F1_LOADSECTOR = $807E ; current sector for file loading
|
!addr F1_LOADSECTOR = $807E ; current sector for file loading
|
||||||
|
|
||||||
!addr RD_STARTSEG = $807F ; RAM disk start address, 2nd most significant byte (or $FF if no RAM)
|
!addr RD_MAXTRACK = $807F ; maximum RAM disk track number of loaded image
|
||||||
!addr RD_MAXTRACK = $8080 ; maximum RAM disk track number
|
!addr RD_STARTSEG = $8080 ; RAM disk start address, 2nd most significant byte (or $FF if no RAM)
|
||||||
|
!addr RD_VALIDIMG = $8081 ; $00 = no valid image loaded
|
||||||
|
|
||||||
; Reserved: $8081-$81FF
|
|
||||||
|
; Reserved: $8082-$81FF
|
||||||
|
|
||||||
;
|
;
|
||||||
; Various buffers, caches, and other large memory chunks
|
; Various buffers, caches, and other large memory chunks
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ unit_rd_init_test_ram: ; non-destructive ATTIC/CELLAR RAM test
|
|||||||
|
|
||||||
stx RD_STARTSEG ; by default $FF, to mark no RAM disk
|
stx RD_STARTSEG ; by default $FF, to mark no RAM disk
|
||||||
inx
|
inx
|
||||||
stx RD_MAXTRACK ; maximum allowed track number, for now set 0
|
stx RD_VALIDIMG ; mark no valid image loaded
|
||||||
stx RAM_ATTIC ; set ATTIC/CELLAR RAM as not present
|
stx RAM_ATTIC ; set ATTIC/CELLAR RAM as not present
|
||||||
stx RAM_CELLAR
|
stx RAM_CELLAR
|
||||||
|
|
||||||
|
|||||||
@@ -4,17 +4,22 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
|
!addr __stoptrack = RD_DIR_PHASE ; helper value for detecting too large image
|
||||||
|
|
||||||
|
|
||||||
unit_rd_preload:
|
unit_rd_preload:
|
||||||
|
|
||||||
; Check if RAM disk is enabled
|
; Check if RAM disk is enabled (should be disabled if no Hyper RAM is present)
|
||||||
|
|
||||||
lda UNIT_RAMDISK
|
lda UNIT_RAMDISK
|
||||||
beq @error_no_ramdisk
|
beq @error_no_ramdisk
|
||||||
|
|
||||||
; XXX make sure attic RAM is present
|
|
||||||
|
|
||||||
rts ; XXX remove when code is fully implemented
|
rts ; XXX remove when code is fully implemented
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; Set file name
|
; Set file name
|
||||||
|
|
||||||
ldy #>ramdisk_filename
|
ldy #>ramdisk_filename
|
||||||
@@ -31,6 +36,30 @@ unit_rd_preload:
|
|||||||
+nop
|
+nop
|
||||||
bcc @error_not_found ; branch if file not found
|
bcc @error_not_found ; branch if file not found
|
||||||
|
|
||||||
|
; Calculate maximum amount of tracks possible to load
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
sta RD_MAXTRACK ; maximum track number of loaded image, for now set $FF
|
||||||
|
sta __stoptrack
|
||||||
|
|
||||||
|
lda RAM_ATTIC
|
||||||
|
beq @added_attic
|
||||||
|
jsr unit_rd_preload_addram
|
||||||
|
|
||||||
|
@added_attic:
|
||||||
|
|
||||||
|
lda RAM_CELLAR
|
||||||
|
beq @added_cellar
|
||||||
|
jsr unit_rd_preload_addram
|
||||||
|
|
||||||
|
@added_cellar:
|
||||||
|
|
||||||
|
; Load the file
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
; XXX load the file
|
; XXX load the file
|
||||||
|
|
||||||
; XXX while loading set RD_MAXTRACK
|
; XXX while loading set RD_MAXTRACK
|
||||||
@@ -47,6 +76,12 @@ unit_rd_preload:
|
|||||||
|
|
||||||
; End of initialization
|
; End of initialization
|
||||||
|
|
||||||
|
lda #$FF
|
||||||
|
sta RD_VALIDIMG ; mark image as valid
|
||||||
|
|
||||||
|
lda #$00 ; temporary storage needs to be restored to 0
|
||||||
|
sta __stoptrack
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
@@ -61,3 +96,17 @@ unit_rd_preload:
|
|||||||
; XXX set error information
|
; XXX set error information
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
unit_rd_preload_addram:
|
||||||
|
|
||||||
|
; Add allowed number of tracks due to attic/cellar block presence
|
||||||
|
|
||||||
|
clc
|
||||||
|
lda #$80
|
||||||
|
adc __stoptrack
|
||||||
|
sta __stoptrack
|
||||||
|
rts
|
||||||
Reference in new issue
Block a user