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_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 = $8080 ; maximum RAM disk track number
|
||||
!addr RD_MAXTRACK = $807F ; maximum RAM disk track number of loaded image
|
||||
!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
|
||||
|
||||
@@ -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
|
||||
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_CELLAR
|
||||
|
||||
|
||||
@@ -4,17 +4,22 @@
|
||||
;
|
||||
|
||||
|
||||
!addr __stoptrack = RD_DIR_PHASE ; helper value for detecting too large image
|
||||
|
||||
|
||||
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
|
||||
beq @error_no_ramdisk
|
||||
|
||||
; XXX make sure attic RAM is present
|
||||
|
||||
rts ; XXX remove when code is fully implemented
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
; Set file name
|
||||
|
||||
ldy #>ramdisk_filename
|
||||
@@ -31,6 +36,30 @@ unit_rd_preload:
|
||||
+nop
|
||||
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 while loading set RD_MAXTRACK
|
||||
@@ -47,6 +76,12 @@ unit_rd_preload:
|
||||
|
||||
; 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
|
||||
|
||||
|
||||
@@ -61,3 +96,17 @@ unit_rd_preload:
|
||||
; XXX set error information
|
||||
|
||||
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