added ram disk status message on startup screen

This commit is contained in:
FeralChild64 committed 2021-05-19 22:59:35 +02:00
1 parent 770441e302
commit f7ff71f6cd
11 files changed
+110 -37

No files matched your search

+1
View File
@@ -50,6 +50,7 @@
;; #ALIAS# m65_shadow_BZP = KERNAL_0.m65_shadow_BZP
;; #ALIAS# proxy_M1_IO_end = KERNAL_0.proxy_M1_IO_end
;; #ALIAS# m65dos_rdchk = KERNAL_0.m65dos_rdchk
;; #ALIAS# m65dos_unitnum = KERNAL_0.m65dos_unitnum
;
+1
View File
@@ -46,4 +46,5 @@
;; #ALIAS# fetch_character_skip_spaces = BASIC_0.proxy_B1_fetch_character_skip_spaces
;; #ALIAS# fetch_uint8 = BASIC_0.proxy_B1_fetch_uint8
;; #ALIAS# shell_main_loop = BASIC_0.proxy_B1_shell_main_loop
;; #ALIAS# m65dos_rdchk = BASIC_0.proxy_B1_m65dos_rdchk
;; #ALIAS# m65dos_unitnum = BASIC_0.proxy_B1_m65dos_unitnum
+6
View File
@@ -157,6 +157,12 @@ proxy_M1_print_kernal_error:
jmp proxy_M1_IO_end
}
proxy_B1_m65dos_rdchk:
jsr map_NORMAL
jsr m65dos_rdchk
bra proxy_B1_end_2
proxy_B1_m65dos_unitnum:
jsr map_NORMAL
+34 -1
View File
@@ -66,7 +66,40 @@ INITMSG_native:
ldx #$09
ldy #$00
jmp plot_set
jsr plot_set
; Display the preloaded RAM disc image status
jsr m65dos_rdchk
cmp #$FF
beq INITMSG_rts
pha
jsr print_return
pla
pha
cmp #$00
beq @skip_bold
lda #$1B
jsr JCHROUT
lda #'S'
jsr JCHROUT
@skip_bold:
ldx #IDX__STR_RD_NAME
jsr print_packed_misc_str
pla
clc
adc #IDX__STR_RD_OK
tax
jmp print_packed_misc_str
INITMSG_rts:
rts
INITMSG_main_banner:
+1 -1
View File
@@ -32,7 +32,7 @@
!addr RAM_ATTIC = $8009 ; $8000000-$87FFFFF RAM status; 0 = not present, $FF = present
!addr RAM_CELLAR = $800A ; $8800000-$8FFFFFF RAM status; 0 = not present, $FF = present
; Reserved: $800B
!addr RD_MSG = $800B ; code of the RAM disk message to be displayed on banner screen, $FF for none
; General DOS configuration
+1
View File
@@ -3,6 +3,7 @@
!word dos_INIT
!word dos_PRELOAD
!word dos_RDCHK
!word dos_UNITCHK
!word dos_UNITSET
!word dos_UNITNUM
+24
View File
@@ -0,0 +1,24 @@
;
; Preload RAM disk image
;
dos_RDCHK:
; Before the start make sure memory content is not damaged
jsr dos_MEMCHK
bcc @ok
lda #$FF
jmp dos_EXIT_SEC_A
@ok:
jsr dos_ENTER
lda RD_MSG
ldx #$FF ; reset the message after it gets displayed
stx RD_MSG
jmp dos_EXIT_CLC_A
+2
View File
@@ -37,6 +37,8 @@ unit_rd_init_test_ram: ; non-destructive ATTIC/CELLAR RAM test
dex
bpl @2
stx RD_MSG ; $FF - mark no message to be displayed
; For the start, mark extended RAM as not present
stx RD_STARTSEG ; by default $FF, to mark no RAM disk
+13 -24
View File
@@ -12,7 +12,7 @@ unit_rd_preload:
; Check if RAM disk is enabled (should be disabled if no Hyper RAM is present)
lda UNIT_RAMDISK
+beq @error_no_ramdisk
+beq unit_rd_preload_err_common_noclose
; Select SD card buffer
@@ -139,6 +139,9 @@ unit_rd_preload:
lda #$00 ; temporary storage needs to be restored to 0
sta __stoptrack
lda #$00 ; set message to OK
sta RD_MSG
rts
@@ -149,40 +152,26 @@ unit_rd_preload:
@error_wrong_size:
jsr unit_rd_preload_err_common
; XXX set error information
rts
lda #$01
jmp unit_rd_preload_err_common
@error_too_large:
jsr unit_rd_preload_err_common
; XXX set error information
rts
lda #$02
jmp unit_rd_preload_err_common
@error_not_found:
jsr unit_rd_preload_err_common_noclose
; XXX set error information, put 0 to __stoptrack
rts
@error_no_ramdisk:
jsr unit_rd_preload_err_common_noclose
; XXX set error information, put 0 to __stoptrack
rts
lda #$03
sta RD_MSG
jmp unit_rd_preload_err_common_noclose
unit_rd_preload_err_common:
sta RD_MSG ; set code for startup screen
lda #$20 ; dos_closefile
sta HTRAP00
+nop
+21 -11
View File
@@ -8,17 +8,18 @@
!addr VDOS_INIT = $4020 + 0 * 2
!addr VDOS_PRELOAD = $4020 + 1 * 2
!addr VDOS_UNITCHK = $4020 + 2 * 2
!addr VDOS_UNITSET = $4020 + 3 * 2
!addr VDOS_UNITNUM = $4020 + 4 * 2
!addr VDOS_ACPTR = $4020 + 5 * 2
!addr VDOS_CIOUT = $4020 + 6 * 2
!addr VDOS_LISTEN = $4020 + 7 * 2
!addr VDOS_SECOND = $4020 + 8 * 2
!addr VDOS_TALK = $4020 + 9 * 2
!addr VDOS_TKSA = $4020 + 10 * 2
!addr VDOS_UNTLK = $4020 + 11 * 2
!addr VDOS_UNLSN = $4020 + 12 * 2
!addr VDOS_RDCHK = $4020 + 2 * 2
!addr VDOS_UNITCHK = $4020 + 3 * 2
!addr VDOS_UNITSET = $4020 + 4 * 2
!addr VDOS_UNITNUM = $4020 + 5 * 2
!addr VDOS_ACPTR = $4020 + 6 * 2
!addr VDOS_CIOUT = $4020 + 7 * 2
!addr VDOS_LISTEN = $4020 + 8 * 2
!addr VDOS_SECOND = $4020 + 9 * 2
!addr VDOS_TALK = $4020 + 10 * 2
!addr VDOS_TKSA = $4020 + 11 * 2
!addr VDOS_UNTLK = $4020 + 12 * 2
!addr VDOS_UNLSN = $4020 + 13 * 2
m65dos_init:
@@ -37,6 +38,15 @@ m65dos_preload:
jsr (VDOS_PRELOAD)
bra m65dos_end_1
m65dos_rdchk:
; Returns in .A the RAM DISK preload status; $00 = OK, $FF = N/A, other = error code
jsr map_DOS_1
jsr (VDOS_RDCHK)
bra m65dos_end_1
m65dos_unitchk: ; XXX expose to BASIC
; Checks is the unit number is supported by the internal DOS
+6
View File
@@ -326,6 +326,12 @@ const StringEntryList GLOBAL_MiscStrings = { ListType::STRINGS_BASIC, "misc",
{ false, false, true, false, false, "STR_SI_HW_XX", "UNKNOWN ID $" },
{ false, false, true, false, false, "STR_SI_HDR_VID", "\rVIDEO : " },
{ false, false, true, false, false, "STR_RD_NAME", "RAMDISK.DNP " },
{ false, false, true, false, false, "STR_RD_OK", "LOADED OK\r" },
{ false, false, true, false, false, "STR_RD_ERR1", "SIZE WRONG\r" },
{ false, false, true, false, false, "STR_RD_ERR2", "TOO LARGE\r" },
{ false, false, true, false, false, "STR_RD_ERR3", "NOT FOUND\r" },
// Note: depending on configuration, additional strings will be added here
} };