diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 407f55e3..705cf355 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -12,6 +12,7 @@ Version 3.6 - WBW: Added boundary check to ram/rom disk driver - WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary - J?L: Source for ZSDOS2 and BPBIOS Utilities (from disassembly) +- MAP: New Slice Inventory Rom App "S" display bootable slices, during boot Version 3.5.1 ------------- diff --git a/Source/Apps/slabel/slabel.asm b/Source/Apps/slabel/slabel.asm index 9fbf167a..dc4a524c 100644 --- a/Source/Apps/slabel/slabel.asm +++ b/Source/Apps/slabel/slabel.asm @@ -4,6 +4,9 @@ ;============================================================================== ; ; Author: Mark Pruden +; +; This is a SUPERSET of INVNTSLC.ASM -> Please See this program also when +; making changes, as code ( in routine prtslc: ) exists there also ;______________________________________________________________________________ ; ; Usage: diff --git a/Source/Doc/Introduction.md b/Source/Doc/Introduction.md index 5f0cff1c..9c7939b8 100644 --- a/Source/Doc/Introduction.md +++ b/Source/Doc/Introduction.md @@ -290,8 +290,8 @@ please let me know if I missed you! - significant content in the Disk Catalog and User Guide - creation of the Introduction and Hardware documents - Z3PLUS operating system disk image - - COPYSL utility - - SLABEL utility + - COPYSL, and SLABEL utilities + - Display of bootable slices via "S" command during startup - a feature for RomWBW configuration by NVRAM - the /B bulk mode of disk assignment to the ASSIGN utility diff --git a/Source/HBIOS/Build.cmd b/Source/HBIOS/Build.cmd index 6ba03418..c01ff820 100644 --- a/Source/HBIOS/Build.cmd +++ b/Source/HBIOS/Build.cmd @@ -71,7 +71,7 @@ if %Platform%==DUO ( ) :: -:: Bring the previously build font files into this directory +:: Bring the previously build font files into this directory :: copy ..\Fonts\font*.asm . || exit /b @@ -91,6 +91,7 @@ tasm -t%CPUType% -g3 -dAPPBOOT hbios.asm hbios_app.bin hbios_app.lst || exit /b call :asm dbgmon || exit /b call :asm romldr || exit /b +call :asm invntslc || exit /b call :asm eastaegg || exit /b call :asm nascom || exit /b :: call :asm tastybasic || exit /b @@ -124,7 +125,7 @@ if %Platform%==S100 ( copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin rom1.bin || exit /b copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin rom2.bin || exit /b -copy /b %HwMon% + romfonts.bin rom3.bin +copy /b %HwMon% + invntslc.bin + romfonts.bin rom3.bin copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin appboot.bin || exit /b :: diff --git a/Source/HBIOS/Makefile b/Source/HBIOS/Makefile index 2c99bfc5..8f8d5b3a 100644 --- a/Source/HBIOS/Makefile +++ b/Source/HBIOS/Makefile @@ -32,7 +32,7 @@ else ifeq ($(CPUFAM),3) TASM=$(BINDIR)/uz80as -t z280 endif -DEPS=prereq dbgmon.bin romldr.bin nascom.bin tastybasic.bin game.bin eastaegg.bin updater.bin sysconf.bin sysconf.com usrrom.bin romfonts.bin +DEPS=prereq dbgmon.bin romldr.bin nascom.bin tastybasic.bin invntslc.bin game.bin eastaegg.bin updater.bin sysconf.bin sysconf.com usrrom.bin romfonts.bin ifeq ($(ROM_PLATFORM),UNA) ROMDEPS=romldr.bin dbgmon.bin @@ -72,7 +72,7 @@ $(OBJECTS) : $(ROMDEPS) cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >appboot.bin if [ $(ROM_PLATFORM) != UNA ] ; then \ cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin $(NETBOOT) updater.bin sysconf.bin usrrom.bin >rom2.bin ; \ - cat $(HWMON) romfonts.bin >rom3.bin ; \ + cat $(HWMON) invntslc.bin romfonts.bin >rom3.bin ; \ for f in hbios_rom.bin rom1.bin rom2.bin rom3.bin ; do \ srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \ done \ @@ -133,6 +133,7 @@ hbios_env.sh: hbios_env.com romldr.bin: build.inc dbgmon.bin: build.inc nascom.bin: build.inc +invntslc.bin: build.inc eastaegg.bin: build.inc updater.bin: build.inc romfonts.bin: build.inc diff --git a/Source/HBIOS/invntslc.asm b/Source/HBIOS/invntslc.asm new file mode 100644 index 00000000..cca49c7c --- /dev/null +++ b/Source/HBIOS/invntslc.asm @@ -0,0 +1,398 @@ +;============================================================================== +; SLICE INVENTORY - Inventory Slice +; Version June-2025 +;============================================================================== +; +; Author: Mark Pruden +; +; This is a SUBSET of SLABEL.ASM -> Please See this program also when +; making changes, as most of the code found here exists there also +; +; This is a program CALLED from RomLoader, and is specific to RomWBW +; +; See SLABEL.ASM for ALL other Notes about This program. +;------------------------------------------------------------------------------ +; +; Change Log: +; 2025-06-30 [MAP] Initial v1.0 release for distribution +;______________________________________________________________________________ +; +; Include Files +; +#include "./hbios.inc" +#include "./layout.inc" +;______________________________________________________________________________ +; +; General operational equates (should not requre adjustment) +; +sigbyte1 .equ $A5 ; 1st sig byte boot info sector (bb_sig) +sigbyte2 .equ $5A ; 2nd sig byte boot info sector (bb_sig) +; +labelterm .equ '$' ; terminating charater for disk label +; +;***************************************************************************** +; +; APPLICATION WILL WILL BE LOADED AT USR_LOC. THEREFORE, THE CODE +; MUST "ORG" AT THIS ADDRESS. TO CHANGE THE LOAD LOCATION OF THIS +; CODE, YOU CAN UPDATE SLC_LOC IN LAYOUT.INC +; + .ORG SLC_LOC +; +;***************************************************************************** +; Main Code (shared) starts here +;***************************************************************************** +; +; Print list of all slices +; +prtslc: + ld de,PRTSLC_HDR ; Header for list of Slices + call prtstr ; Print It + ; + ld bc,BC_SYSGET_DIOCNT ; FUNC: SYSTEM INFO GET DISK DRIVES + rst 08 ; E := UNIT COUNT + ; + ld b,e ; MOVE Disk CNT TO B FOR LOOP COUNT + ld c,0 ; C WILL BE UNIT INDEX +prtslc1: + ld a,b ; loop counter + or a ; set flags + ret z ; IF no more drives, finished + ; + ld a,c ; unit index + ld (currunit),a ; store the unit number + ; + push bc ; save loop vars + call prtslc2 ; for each disk Unit, print its details + pop bc ; restore loop variables + ; + inc c ; bump the unit number + djnz prtslc1 ; main disk loop + ; +prtslcfin: + ret ; loop has finished, RETURN +; +;***************************************************************************** +; Supporting Code Stars Here +;***************************************************************************** +; +; Print list of All Slices for a given Unit +; +prtslc2: + ; get the media infor + ld b,BF_DIOMEDIA ; get media information + ld e,1 ; with media discovery + rst 08 ; do media discovery + ret nz ; an error + ; + ld a,MID_HD ; hard disk + cp e ; is it hard disk + ret nz ; if not noting to do + ; + ; setup the loop + ld b,64 ; arbitrary (?) number of slices to check. + ; NOTE: could be higher, but each slice check has disk IO + ld c,0 ; starting at slice 0 +; +prtslc2a: + ld a,c ; slice number + ld (currslice),a ; save slice number + ; + push bc ; save loop + call prtslc3 ; print detals of the slice + pop bc ; restore loop + ret nz ; if error dont continie + ; + inc c ; next slice number + djnz prtslc2a ; loop if more slices + ; + ret ; return from Slice Loop +; +;------------------------------------------------------------------------------- +; Print details of a Slice for a given Unit/Slice +; +prtslc3: + ; get the details of the device / slice + ld a,(currunit) + ld d,a ; unit + ld a,(currslice) + ld e,a ; slice + ld b,BF_EXTSLICE ; EXT function to check compute slice offset + rst 08 ; noting this call checks partition table. + ret NZ ; an error, for lots of reasons, e.g. Slice not valid + ; + call thirdsector ; point to the third sector of partition + ; + call diskread ; do the sector read + ret nz ; read error. exit the slice loop + ; + ; Check signature + ld bc,(bb_sig) ; get signature read + ld a,sigbyte1 ; expected value of first byte + cp b ; compare + jr nz,prtslc5 ; ignore missing signature and loop + ld a,sigbyte2 ; expected value of second byte + cp c ; compare + jr nz,prtslc5 ; ignore missing signature and loop + ; + ; Print volume label string at HL, '$' terminated, 16 chars max + ld a,(currunit) + call prtdecb ; print unit number as decimal + call pdot ; print a DOT + ld a,(currslice) + call prtdecb + ld a,' ' + call cout ; print a space + call cout ; print a space + ld hl,bb_label ; point to label + call pvol ; print it + call crlf + ; +prtslc5: + xor a + ret +; +;------------------------------------------------------------------------------- +; Print volume label string at HL, '$' terminated, 16 chars max +; +pvol: + ld b,16 ; init max char downcounter +pvol1: + ld a,(hl) ; get next character + cp labelterm ; set flags based on terminator $ + inc hl ; bump pointer regardless + ret z ; done if null + call cout ; display character + djnz pvol1 ; loop till done + ret ; hit max of 16 chars +; +;------------------------------------------------------------------------------- +; advance the DE HL LBA sector by 2, ie third sector +; +thirdsector: + ld bc,2 ; sector offset + add hl,bc ; add to LBA value low word + jr nc,sectornum ; check for carry + inc de ; if so, bump high word +sectornum: + ld (lba),hl ; update lba, low word + ld (lba+2),de ; update lba, high word + ret +; +;=============================================================================== +; +; Read disk sector(s) +; DE:HL is LBA, B is sector count, C is disk unit +; +diskread: +; + ; Seek to requested sector in DE:HL + ld a,(currunit) + ld c,a ; from the specified unit + set 7,d ; set LBA access flag + ld b,BF_DIOSEEK ; HBIOS func: seek + rst 08 ; do it + ret nz ; handle error +; + ; Read sector(s) into buffer + ld a,(currunit) + ld c,a ; from the specified unit + ld e,1 ; read 1 sector + ld hl,(dma) ; read into info sec buffer + ld a,(BID_USR) ; get user bank to accum + ld d,a ; and move to D + ld b,BF_DIOREAD ; HBIOS func: disk read + rst 08 ; do it + ret ; and done +; +;***************************************************************************** +; SUPPORT ROUTINES +;***************************************************************************** +; +; Print a dot on console +; +pdot: + push af + ld a,'.' + call cout + pop af + ret +; +;------------------------------------------------------------------------------- +; Print character in A without destroying any registers +; NOTE THIS CODE IS SPECIFIC AS IT USES HBIOS DIRECTLY +; +prtchr: +cout: + push af ; save registers + push bc + push de + push hl + LD B,BF_CIOOUT + LD C,CIO_CONSOLE + LD E,A + RST 08 + pop hl ; restore registers + pop de + pop bc + pop af + ret +; +;------------------------------------------------------------------------------- +; Start a newline on console (cr/lf) +; +crlf2: + call crlf ; two of them +crlf: + push af ; preserve AF + ld a,13 ; + call prtchr ; print it + ld a,10 ; + call prtchr ; print it + pop af ; restore AF + ret +; +;------------------------------------------------------------------------------- +; Print a zero terminated string at (de) without destroying any registers +; +prtstr: + push af + push de +; +prtstr1: + ld a,(de) ; get next char + or a + jr z,prtstr2 + call prtchr + inc de + jr prtstr1 +; +prtstr2: + pop de ; restore registers + pop af + ret +; +;------------------------------------------------------------------------------- +; Print value of a in decimal with leading zero suppression +; +prtdecb: + push hl + push af + ld l,a + ld h,0 + call prtdec + pop af + pop hl + ret +; +;------------------------------------------------------------------------------- +; Print value of HL in decimal with leading zero suppression +; +prtdec: + push bc + push de + push hl + ld e,'0' + ld bc,-10000 + call prtdec1 + ld bc,-1000 + call prtdec1 + ld bc,-100 + call prtdec1 + ld c,-10 + call prtdec1 + ld e,0 + ld c,-1 + call prtdec1 + pop hl + pop de + pop bc + ret +prtdec1: + ld a,'0' - 1 +prtdec2: + inc a + add hl,bc + jr c,prtdec2 + sbc hl,bc + cp e + jr z,prtdec3 + ld e,0 + call cout +prtdec3: + ret +; +;=============================================================================== +; +PRTSLC_HDR .TEXT "\r\n\r\n" + .TEXT "Un.Sl Drive \r\n" + .TEXT "----- ----------------\r\n" + .DB 0 +; +;=============================================================================== +; Working data +;=============================================================================== +; +currunit .db 0 ; parameters for disk unit, current unit +currslice .db 0 ; parameters for disk slice, current slice +lba .dw 0, 0 ; lba address (4 bytes), of slice +; +BID_USR .db 0 ; Bank ID for user bank +dma .dw bl_infosec ; address for disk buffer +; +;=============================================================================== +; +; IT IS CRITICAL THAT THE FINAL BINARY BE EXACTLY SLC_SIZ BYTES. +; THIS GENERATES FILLER AS NEEDED. IT WILL ALSO FORCE AN ASSEMBLY +; ERROR IF THE SIZE EXCEEDS THE SPACE ALLOCATED. +; +SLACK .EQU (SLC_END - $) +; +#IF (SLACK < 0) + .ECHO "*** INVENTORY SLICE IS TOO BIG!!!\n" + !!! ; FORCE AN ASSEMBLY ERROR +#ENDIF +; + .FILL SLACK,$00 + .ECHO "Slice Inventory space remaining: " + .ECHO SLACK + .ECHO " bytes.\n" +; +;=============================================================================== +; Disk Buffer +;=============================================================================== +; + ; define origin of disk buffer = 9000 + ; Note this shares SAME Buffer Address as ROMLDR + .org $9000 +; +; Below is copied from ROM LDR +; Boot info sector is read into area below. +; The third sector of a disk device is reserved for boot info. +; +bl_infosec .equ $ + .ds (512 - 128) +bb_metabuf .equ $ +bb_sig .ds 2 ; signature (0xA55A if set) +bb_platform .ds 1 ; formatting platform +bb_device .ds 1 ; formatting device +bb_formatter .ds 8 ; formatting program +bb_drive .ds 1 ; physical disk drive # +bb_lu .ds 1 ; logical unit (lu) + .ds 1 ; msb of lu, now deprecated + .ds (bb_metabuf + 128) - $ - 32 +bb_protect .ds 1 ; write protect boolean +bb_updates .ds 2 ; update counter +bb_rmj .ds 1 ; rmj major version number +bb_rmn .ds 1 ; rmn minor version number +bb_rup .ds 1 ; rup update number +bb_rtp .ds 1 ; rtp patch level +bb_label .ds 16 ; 16 character drive label +bb_term .ds 1 ; label terminator ('$') +bb_biloc .ds 2 ; loc to patch boot drive info +bb_cpmloc .ds 2 ; final ram dest for cpm/cbios +bb_cpmend .ds 2 ; end address for load +bb_cpment .ds 2 ; CP/M entry point (cbios boot) +; +;=============================================================================== + +.END diff --git a/Source/HBIOS/layout.inc b/Source/HBIOS/layout.inc index 815dfa67..f1d55548 100644 --- a/Source/HBIOS/layout.inc +++ b/Source/HBIOS/layout.inc @@ -184,6 +184,14 @@ HWMON_END .EQU HWMON_LOC + HWMON_SIZ HWMON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT ; +; Slice Inventory Application +SLC_BNK .EQU BNK_CUR +SLC_LOC .EQU $0200 ; LOAD LOCATION +SLC_SIZ .EQU $0200 ; SIZE OF IMAGE +SLC_END .EQU SLC_LOC + SLC_SIZ ; END LOCATION +SLC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK +BNK_NXTLOC .SET SLC_IMGLOC + SLC_SIZ ; IMG LOC OF NEXT COMPONENT +; FONTS_BNK .EQU BNK_CUR FONTS_LOC .EQU $0000 FONTS_SIZ .EQU $2100 diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index b0217222..62037e09 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -625,6 +625,8 @@ runcmd0: cp 'R' ; R = reboot system jp z,reboot ; if so, do it #if (BIOS == BIOS_WBW) + cp 'S' ; S = Slice Inventory + jp z,slclst ; if so, do it cp 'I' ; C = set console interface jp z,setcon ; if so, do it cp 'V' ; V = diagnostic verbosity @@ -632,18 +634,8 @@ runcmd0: #endif ; ; Attempt ROM application launch - ld ix,(ra_tbl_loc) ; point to start of ROM app tbl - ld c,a ; save command in C -runcmd1: - ld a,(ix+ra_conkey) ; get match char - and ~$80 ; clear "hidden entry" bit - cp c ; compare - jp z,romload ; if match, load it - ld de,ra_entsiz ; table entry size - add ix,de ; bump IX to next entry - ld a,(ix) ; check for end - or (ix+1) ; ... of table - jr nz,runcmd1 ; loop till done + call findcon ; find the application from console Key in A REG + jp z,romload ; if match found, then load it ; ; Attempt disk boot ld de,cmdbuf ; start of buffer @@ -905,6 +897,12 @@ applst2: devlst: jp prtall ; do it ; +; Slice list +; +slclst: + ld a,'S' ; "S"lice Inv App + jp romcall ; Call a Rom App with Return +; ; Set console interface unit ; #if (BIOS == BIOS_WBW) @@ -1054,6 +1052,27 @@ reboot: #endif ; ;======================================================================= +; Call a ROM Application (with return) +; This is same as romload: but doesnt display load messages +; Intended for Utility applications (part of RomWBW) not third part apps +; these apps are on Help menu, hidden from Application List +; Parameters A - The app to call. +;======================================================================= +; +romcall: + call findcon ; find the application based on A reg + ret nz ; if not found then return to prompt +; + call romcopy ; Copy ROM App into working memory +; + ld l,(ix+ra_ent) ; HL := app entry address + ld h,(ix+ra_ent+1) ; IX register returned from findcon + jp (hl) ; call to the routine. + ; + ; NOTE It is assumed the Rom App should perform a RET, + ; returning control to the caller of this sub routine. +; +;======================================================================= ; Load and run a ROM application, IX=ROM app table entry ;======================================================================= ; @@ -1066,36 +1085,49 @@ romload: ld h,(ix+ra_name+1) call pstr ; - ;ld hl,msg_load ; point to load message - ;call dsky_show ; display message ld c,DSKY_MSG_LDR_LOAD ; point to load message call dsky_msg ; display message +; + call romcopy ; Copy ROM App into working memory + ld a,'.' ; dot character + call cout ; show progress +; + ld c,DSKY_MSG_LDR_GO ; point to go message + call dsky_msg ; display message +; + ld l,(ix+ra_ent) ; HL := app entry address + ld h,(ix+ra_ent+1) ; ... + jp (hl) ; go +; +;======================================================================= +; Routine - Copy Rom App from Rom to it's running location +; param : IX - Pointer to the Rom App to copy into RAM +;======================================================================= +; +romcopy: ; #if (BIOS == BIOS_WBW) ; - ; Copy image to it's running location ld a,(ix+ra_bnk) ; get image source bank id cp bid_cur ; special value? - jr nz,romload1 ; if not, continue + jr nz,romcopy1 ; if not, continue ld a,(bid_ldr) ; else substitute -romload1: +romcopy1: push af ; save source bank + ; ld e,a ; source bank to E ld d,BID_USR ; dest is user bank ld l,(ix+ra_siz) ; HL := image size ld h,(ix+ra_siz+1) ; ... ld b,BF_SYSSETCPY ; HBIOS func: setup bank copy rst 08 ; do it - ld a,'.' ; dot character - call cout ; show progress + ; ld e,(ix+ra_dest) ; DE := run dest adr ld d,(ix+ra_dest+1) ; ... ld l,(ix+ra_src) ; HL := image source adr ld h,(ix+ra_src+1) ; ... ld b,BF_SYSBNKCPY ; HBIOS func: bank copy rst 08 ; do it - ld a,'.' ; dot character - call cout ; show progress ; ; Record boot information pop af ; recover source bank @@ -1104,8 +1136,6 @@ romload1: ld b,BF_SYSSET ; HBIOS func: system set ld c,BF_SYSSET_BOOTINFO ; BBIOS subfunc: boot info rst 08 ; do it - ld a,'.' ; dot character - call cout ; show progress ; #endif ; @@ -1121,8 +1151,6 @@ romload1: ld bc,$01FB ; UNA func: set bank ld de,(bid_ldr) ; select user bank rst 08 ; do it - ld a,'.' ; dot character - call cout ; show progress ; ; Copy image to running location ld l,(ix+ra_src) ; HL := image source adr @@ -1132,15 +1160,11 @@ romload1: ld c,(ix+ra_siz) ; BC := image size ld b,(ix+ra_siz+1) ; ... ldir ; copy image - ld a,'.' ; dot character - call cout ; show progress ; ; Switch back to user bank ld bc,$01FB ; UNA func: set bank ld de,(bid_ldr) ; select user bank rst 08 ; do it - ld a,'.' ; dot character - call cout ; show progress ; ; Record boot information ld de,(bid_ldr) ; original bank @@ -1150,15 +1174,7 @@ romload1: ; #endif ; - ;ld hl,msg_go ; point to go message - ;call dsky_show ; display message - ld c,DSKY_MSG_LDR_GO ; point to go message - call dsky_msg ; display message -; - ld l,(ix+ra_ent) ; HL := app entry address - ld h,(ix+ra_ent+1) ; ... - jp (hl) ; go -; + ret ;======================================================================= ; Boot ROM Application ;======================================================================= @@ -1166,20 +1182,32 @@ romload1: ; Enter with ROM application menu selection (command) character in A ; romboot: + call findcon ; Match the application base on console command in A + jp z,romload ; if match application found then load it + ret ; no match, just return to - prompt: +; +;======================================================================= +; Find App For Console Command +; Pass in A, the console command character +; Return IX pointer, and Z if found; NZ if not found +;======================================================================= +; +findcon: call upcase ; force uppercase for matching ld ix,(ra_tbl_loc) ; point to start of ROM app tbl ld c,a ; save command char in C -romboot1: +findcon1: ld a,(ix+ra_conkey) ; get match char and ~$80 ; clear "hidden entry" bit cp c ; compare - jp z,romload ; if match, load it + ret z ; if matched, return ld de,ra_entsiz ; table entry size add ix,de ; bump IX to next entry ld a,(ix) ; check for end or (ix+1) ; ... of table - jr nz,romboot1 ; loop till done - ret ; no match, just return + jr nz,findcon1 ; loop if still more table entries + or 0ffh ; set NZ flag, signal not found + ret ; no match, and return ; ;======================================================================= ; Boot disk unit/slice @@ -2537,6 +2565,9 @@ str_diaglvl .db "\r\n\r\nHBIOS Diagnostic Level: ",0 str_help .db "\r\n" .db "\r\n L - List ROM Applications" .db "\r\n D - Device Inventory" +#if (BIOS == BIOS_WBW) + .db "\r\n S - Slice Inventory" +#endif .db "\r\n R - Reboot System" #if (BIOS == BIOS_WBW) .db "\r\n W - RomWBW Configure" @@ -2632,15 +2663,15 @@ 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, 'S', $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) +#if (BIOS == BIOS_WBW) ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC) 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) @@ -2648,12 +2679,13 @@ ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_ ra_ent(str_net, 'N', $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, '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 #if (DSKYENABLE) ra_ent(str_dsky, 'Y'+$80, KY_GO, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY) #endif -ra_ent(str_egg, 'E'+$80, $FF, EGG_BNK, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) +ra_ent(str_blnk, 'E'+$80, $FF, EGG_BNK, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC) ; .dw 0 ; table terminator ; @@ -2680,7 +2712,7 @@ 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_egg .db "",0 +str_blnk .db "",0 str_net .db "Network Boot",0 str_switches .db "FP Switches = 0x",0 str_nvswitches .db "NV Switches Found",0