diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index 6be8e451..6d21dfbb 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -174,12 +174,15 @@ start1: ; ; For app mode startup, use alternate table ld hl,ra_tbl ; assume ROM application table + ld de,str_help ; assume ROM help menu ld a,(bootmode) ; get boot mode cp BM_ROMBOOT ; ROM boot? jr z,start2 ; if so, ra_tbl OK, skip ahead ld hl,ra_tbl_app ; switch to RAM application table + ld de,str_help_app ; switch to RAM help menu start2: ld (ra_tbl_loc),hl ; and overlay pointer + ld (str_help_loc),de ; and overlay help menu pointer ; ; Copy original page zero into user page zero ; @@ -627,6 +630,8 @@ runcmd0: #if (BIOS == BIOS_WBW) cp 'S' ; S = Slice Inventory jp z,slclst ; if so, do it + cp 'W' ; W = Rom WBW NVR Config Rom App + jp z,nvrconfig ; if so, do it cp 'I' ; C = set console interface jp z,setcon ; if so, do it cp 'V' ; V = diagnostic verbosity @@ -850,7 +855,7 @@ dskycmd1: ; Display Help ; help: - ld hl,str_help ; point to help string + ld hl,(str_help_loc) ; point to help string call pstr ; display it ret ; @@ -903,6 +908,12 @@ slclst: ld a,'S' ; "S"lice Inv App jp romcall ; Call a Rom App with Return ; +; RomWBW Config +; +nvrconfig: + ld a,'W' ; "W" Rom WBW Configure App + jp romcall ; Call a Rom App with Return +; ; Set console interface unit ; #if (BIOS == BIOS_WBW) @@ -2573,10 +2584,22 @@ str_help .db "\r\n" .db "\r\n W - RomWBW Configure" .db "\r\n I [] - Set Console Interface/Baud Rate" .db "\r\n V [] - View/Set HBIOS Diagnostic Verbosity" + .db "\r\n N - Network Boot" #endif .db "\r\n [.] - Boot Disk Unit/Slice" .db 0 ; +str_help_app .db "\r\n" + .db "\r\n L - List ROM Applications" + .db "\r\n R - Reboot System" +#if (BIOS == BIOS_WBW) + .db "\r\n I [] - Set Console Interface/Baud Rate" + .db "\r\n V [] - View/Set HBIOS Diagnostic Verbosity" +#endif + .db "\r\n [.] - Boot Disk Unit/Slice" + .db 0 + +; ;======================================================================= ; DSKY keypad led matrix masks ;======================================================================= @@ -2663,12 +2686,12 @@ ra_tbl: ; Name Key Dsky Bank Src Dest Size Entry ; --------- ------- ----- -------- ----- ------- ------- ---------- ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL) -ra_entsiz .equ $ - ra_tbl -#if (BIOS == BIOS_WBW) - #if (PLATFORM == PLT_S100) +ra_entsiz .equ $ - ra_tbl +#if (BIOS == BIOS_WBW) + #if (PLATFORM == PLT_S100) ra_ent(str_smon, 'O', $FF, bid_cur, $8000, $8000, $0001, s100mon) - #endif -#endif + #endif +#endif ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT) #if (BIOS == BIOS_WBW) @@ -2676,9 +2699,9 @@ ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_ ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC) ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC) ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC) -ra_ent(str_net, 'N', $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC) +ra_ent(str_net, 'N'+$80, $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC) ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC) -ra_ent(str_nvr, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC) +ra_ent(str_blnk, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC) ra_ent(str_blnk, 'S'+$80, $FF, SLC_BNK, SLC_IMGLOC, SLC_LOC, SLC_SIZ, SLC_LOC) ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC) #endif @@ -2710,7 +2733,6 @@ str_bas .db "BASIC",0 str_tbas .db "Tasty BASIC",0 str_play .db "Play a Game",0 str_upd .db "XModem Flash Updater",0 -str_nvr .db "RomWBW Configure", 0 str_user .db "User App",0 str_blnk .db "",0 str_net .db "Network Boot",0 @@ -2740,6 +2762,7 @@ mediaid .db 0 ; media id ; bootmode .db 0 ; ROM, APP, or IMG boot ra_tbl_loc .dw 0 ; points to active ra_tbl +str_help_loc .dw 0 ; points to active str_help bootunit .db 0 ; boot disk unit bootslice .db 0 ; boot disk slice loadcnt .db 0 ; num disk sectors to load diff --git a/Source/HBIOS/sysconf.asm b/Source/HBIOS/sysconf.asm index 81369f02..eb178ac3 100644 --- a/Source/HBIOS/sysconf.asm +++ b/Source/HBIOS/sysconf.asm @@ -8,7 +8,7 @@ ; and RomWBW Operation. Write to RTC NVRAM to store config ; is reliant on HBIOS ; -; NOTE: This program is built as both a CP/M COM and Rom WBW Applicaton +; NOTE: This program is built as both a CP/M COM and Rom WBW Application ; ; ROM APPLICATION THAT IS AUTOMATICALLY INCLUDED IN THE ROMWBW ROM. ; IT IS INVOKED FROM THE BOOT LOADER USING THE 'W' OPTION. (See RomLDR) @@ -18,7 +18,16 @@ ; BASED ON USEROM.ASM ; THANKS AND CREDIT TO MARTIN R. FOR PROVIDING THIS APPLICATION! ; Also Based on The Tasty Basic Configuration -; Utilitity function were also copied from RomLdr, Assign. +; Utility function were also copied from RomLdr, Assign. +; +;----------------------------------------------------------------------- +; +; Change Log: +; 2024-11-08 [MAP] Initial v1.0 release +; 2024-12-06 [WBW] Misc Fixes Improvements after initial release +; 2025-06-30 [MAP] 1.1 Changed to be invoked in CALL RET fashion from RomLdr +; +;----------------------------------------------------------------------- ; #include "../ver.inc" #include "hbios.inc" @@ -56,8 +65,9 @@ DEL .EQU 127 ; ASCII del/rubout .ORG NVR_LOC ; #ifdef ROMWBW + ; Reuse the stack provided by Rom LDR ; PLACE STACK AT THE TOP OF AVAILABLE RAM (JUST BELOW THE HBIOS PROXY). - LD SP,HBX_LOC + ; LD SP,HBX_LOC #endif #ifdef CPM ; setup stack (save old value) @@ -75,9 +85,10 @@ exit: ; call crlf ; formatting ; #ifdef ROMWBW - LD B,BF_SYSRESET ; SYSTEM RESTART - LD C,BF_SYSRES_WARM ; WARM START - RST 08 ; CALL HBIOS (DOES NOT RETURN) + RET ; Return to Rom LDR + ; LD B,BF_SYSRESET ; SYSTEM RESTART + ; LD C,BF_SYSRES_WARM ; WARM START + ; RST 08 ; CALL HBIOS (DOES NOT RETURN) #endif #ifdef CPM ; @@ -205,7 +216,7 @@ helpandloop: ; HELP MENU JR z,printmainhelp ; if empty line, print main help call upcase ; - ; the folloiwng is just testing a single charater + ; the following is just testing a single character cp 'A' ; Auto Boot help menu JP Z,HELP_AB cp 'B' ; Boot Options help menu @@ -234,7 +245,7 @@ setvalueandloop: JR z,setvalueerror ; if empty line, print ? call upcase ; - ; the folloiwng is just testing a single charater + ; the following is just testing a single character cp 'A' ; Auto Boot help menu JP Z,SET_AB cp 'B' ; Boot Options help menu @@ -265,7 +276,7 @@ PRT_STATUS: LD BC,BC_SYSGET_SWITCH LD D,$FF ; check for existence of switches RST 08 - JR NZ,STAT_NOTFOUND ; error means switchs are not enabled + JR NZ,STAT_NOTFOUND ; error means switches are not enabled ; ; print invdividual stats, on all per switch ; @@ -499,7 +510,7 @@ err_ret: ;======================================================================= ; str_banner .db "\r\n" - .db "RomWBW System Config Utility, Version 1.0 Nov-2024\r\n",0 + .db "RomWBW System Config Utility, Version 1.1 June-2025\r\n",0 ; MSG_MENU .DB "\r\n" .DB "Commands:\r\n" @@ -507,7 +518,7 @@ MSG_MENU .DB "\r\n" .DB " (S)et {SW} {val}[,{val}[,{val}]]- Set a switch value(s)\r\n" .DB " (R)eset - Init NVRAM to Defaults\r\n" .DB " (H)elp [{SW}] - This help menu, or help on a switch\r\n" - .DB " (Q)uit - Quit\r\n" + .DB " e(X)it - Exit Configuration\r\n" .DB 0 MSG_PROMPT: .DB "\r\n" .DB "$", 0 @@ -1015,7 +1026,7 @@ CIN: PUSH BC ; stksav .dw 0 ; stack pointer saved at start ; -cmdbuf: .FILL cmdmax,0 ; cmd inut buffer +cmdbuf: .FILL cmdmax,0 ; cmd input buffer ; .fill stksiz,0 ; stack stack .equ $ ; stack top