improved support for different RAM configurations

This commit is contained in:
FeralChild64 committed 2021-03-30 20:34:01 +02:00
1 parent 7510d4a83f
commit d68583d1b3
7 files changed
+89 -37

No files matched your search

+9 -9
View File
@@ -52,23 +52,23 @@
;; #CONFIG# PROGRAMMABLE_KEYS YES
;; #CONFIG# KEYCMD_RUN "RUN"
;; #CONFIG# KEYCMD_RUN "RUN:"
;; #CONFIG# KEYCMD_F1 "@8$"
;; #CONFIG# KEYCMD_F2 "LOAD"
;; #CONFIG# KEYCMD_F3 "@9$"
;; #CONFIG# KEYCMD_F4 "RUN:"
;; #CONFIG# KEYCMD_F4 "\5FL"
;; #CONFIG# KEYCMD_F5 "@10$"
;; #CONFIG# KEYCMD_F6 "REM F6"
;; #CONFIG# KEYCMD_F6 "\5FHF"
;; #CONFIG# KEYCMD_F7 "@11$"
;; #CONFIG# KEYCMD_F8 "MONITOR"
;; #CONFIG# KEYCMD_HELP "LIST"
;; #CONFIG# KEYCMD_F9 "@28$"
;; #CONFIG# KEYCMD_F10 "\5FL"
;; #CONFIG# KEYCMD_F11 "@29$"
;; #CONFIG# KEYCMD_F12 "\5FHF"
;; #CONFIG# KEYCMD_F9 "@27$"
;; #CONFIG# KEYCMD_F10 "REM F10"
;; #CONFIG# KEYCMD_F11 "@28$"
;; #CONFIG# KEYCMD_F12 "@29$"
;; #CONFIG# KEYCMD_F13 "@30$"
;; #CONFIG# KEYCMD_F14 "BOOTCPM"
@@ -90,8 +90,8 @@
; --- Built-in DOS configuration
;; #CONFIG# UNIT_SDCARD 28
;; #CONFIG# UNIT_FLOPPY 29
;; #CONFIG# UNIT_SDCARD 27
;; #CONFIG# UNIT_FLOPPY 28 ; XXX use separate number for second floppy (device 29)
;; #CONFIG# UNIT_RAMDISK 30
+4
View File
@@ -122,6 +122,10 @@
!addr FD_LOADTRACK = $8072 ; current track for file loading
!addr FD_LOADSECTOR = $8073 ; current sector for file loading
!addr RD_STARTSEG = $8074 ; RAM disk start address, 2nd most significant byte (or $FF if no RAM)
!addr RD_MAXTRACK = $8075 ; maximum RAM disk track number
; XXX Free space
+10 -10
View File
@@ -14,17 +14,16 @@ dos_UNITSET:
@ok:
jsr dos_ENTER
; XXX do not allow illegal device numbers... above 30 or below 8 ?
; XXX do not allow illegal device numbers (above 30 or below 8)
; Check what kind of device was requested
cmp #$00
beq dos_UNITSET_sdcard
; XXX devices below are not implemented yet
; cmp #$01
; beq dos_UNITSET_floppy
; cmp #$02
; beq dos_UNITSET_ramdisk
cmp #$01
beq dos_UNITSET_floppy
cmp #$02
beq dos_UNITSET_ramdisk
jmp dos_EXIT_SEC
@@ -38,12 +37,13 @@ dos_UNITSET_sdcard:
dos_UNITSET_floppy:
stx UNIT_FLOPPY
+skip_2_bytes_trash_nvz
; FALLTROUGH
jmp dos_EXIT_CLC
dos_UNITSET_ramdisk:
stx UNIT_RAMDISK
jmp dos_EXIT_CLC
; Clear RAM disk device number if no Hyper RAM available
jsr util_check_rd_ram
jmp dos_EXIT
+27 -16
View File
@@ -39,41 +39,48 @@ unit_rd_init_test_ram: ; non-destructive ATTIC/CELLAR RAM test
; For the start, mark extended RAM as not present
stx RD_STARTSEG ; by default $FF, to mark no RAM disk
inx
stx RD_MAXTRACK ; maximum allowed track number, for now set 0
stx RAM_ATTIC ; set ATTIC/CELLAR RAM as not present
stx RAM_CELLAR
; Prepare address - ATTIC RAM, $0800:$0000
; Prepare address - CELLAR RAM, $0880:$0000
stx PNTR+0
stx PNTR+1
stx PNTR+2
lda #$80
sta PNTR+2
lda #$08
sta PNTR+3
ldz #$00
; Test for CELLAR RAM
jsr @perform_ram_test
bne @done_cellar
dec RAM_ATTIC ; test passed
lda #$08
sta RD_STARTSEG ; RAM DISK start segment - CELLAR RAM
@done_cellar:
; Prepare address - ATTIC RAM, $0800:$0000
lda #$00
sta PNTR+2
; Test for ATTIC RAM
jsr @perform_ram_test
bne @done_attic
dec RAM_ATTIC ; test passed
dec RAM_CELLAR ; test passed
lda #$00
sta RD_STARTSEG ; RAM DISK start segment - ATTIC RAM
@done_attic:
; Prepare address - CELLAR RAM, $0880:$0000
lda #$80
sta PNTR+2
; Test for cellar RAM
jsr @perform_ram_test
bne @done_cellar
dec RAM_CELLAR ; test passed
@done_cellar:
; Restore temporary address area content
ldx #$00
@@ -84,6 +91,10 @@ unit_rd_init_test_ram: ; non-destructive ATTIC/CELLAR RAM test
cpx #$04
bne @3
; Clear RAM disk device number if no Hyper RAM available
jsr util_check_rd_ram
; End of initialization
rts
+17 -1
View File
@@ -6,6 +6,11 @@
unit_rd_preload:
; Check if RAM disk is enabled
lda UNIT_RAMDISK
beq @error_no_ramdisk
; XXX make sure attic RAM is present
rts ; XXX remove when code is fully implemented
@@ -28,6 +33,11 @@ unit_rd_preload:
; XXX load the file
; XXX while loading set RD_MAXTRACK
@load_track:
; XXX while loading set RD_MAXTRACK
@@ -42,6 +52,12 @@ unit_rd_preload:
@error_not_found:
; XXX set information about file not found
; XXX set error information
rts
@error_no_ramdisk:
; XXX set error information
rts
+21
View File
@@ -0,0 +1,21 @@
; If no Hyper RAM is present, clear the RAM DISK device number and set Carry
util_check_rd_ram:
lda RAM_ATTIC
ora RAM_CELLAR
beq @no_hyperram
clc
rts
@no_hyperram:
lda #$00
sta UNIT_RAMDISK
sec
rts
+1 -1
View File
@@ -92,7 +92,7 @@ load_iec:
sta EAL+1
!ifdef CONFIG_MB_M65 {
load_iec_m65cont:
load_iec_m65cont:
}
; If secondary address is 0, override EAL with STAL