From 5c565f8c3ea9c9e469a67cdbbeb09049309baa77 Mon Sep 17 00:00:00 2001 From: Wayne Warthen Date: Wed, 20 May 2020 12:06:19 -0700 Subject: [PATCH] Miscellaneous - CP/M 3 loader space improvement - Minor doc update (thanks Radek) - Preliminary diag level management - Minor cosmetic bugs --- Doc/RomWBW Applications.pdf | Bin 141708 -> 141698 bytes Doc/RomWBW Architecture.pdf | Bin 416848 -> 416848 bytes Doc/RomWBW Disk Catalog.pdf | Bin 130980 -> 130980 bytes Doc/RomWBW Getting Started.pdf | Bin 169500 -> 170905 bytes ReadMe.md | 23 +++++++++-- ReadMe.txt | 23 +++++++++-- Source/CBIOS/cbios.asm | 1 + Source/CPM3/biosldr.z80 | 20 ++++++--- Source/Doc/Applications.md | 2 +- Source/Doc/Architecture.md | 8 ++-- Source/Doc/GettingStarted.md | 20 ++++++++- Source/HBIOS/dbgmon.asm | 2 +- Source/HBIOS/hbios.asm | 73 ++++++++++++++++++++++++++++++++- Source/HBIOS/hbios.inc | 7 ++-- Source/HBIOS/romldr.asm | 47 +++++++++++++++++++++ Source/HBIOS/std.asm | 15 ++++++- Source/HBIOS/util.asm | 51 +---------------------- Source/ver.inc | 2 +- Source/ver.lib | 2 +- 19 files changed, 215 insertions(+), 81 deletions(-) diff --git a/Doc/RomWBW Applications.pdf b/Doc/RomWBW Applications.pdf index 275b6797df9c21f6f96da3e2d07a7b1f32f8eeb8..b57c4e8a4918a5491760175bcdab3cb2a8dcdad0 100644 GIT binary patch delta 11923 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 Wlg4Fa*20%HLg-qFi4XTouJu1^Zitcq delta 11663 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 R#K6$Zz>G^()z#mP3jjf=JW~Jw delta 218 zcmcbxL-N87$qj9(0!B%x#s+DoCT5AIrWOXqDb3STw@*uDOzp&wY3F{=2*gZ4%nZaV z+qvJf8X9UEni*P}7#UjX8knma7^rJ<>HFrVxFnXODrmS^85tNE7??toY)@5S>#>eE zHF7jEF?TjLHFtI~cd>ABb+d3Yb+a^cF}H9vGPAT(urVd1Bv!%Bj;pvNv8be?C^e1C R#K6$Zz>G^()z#mP3joyeJNp0t diff --git a/Doc/RomWBW Disk Catalog.pdf b/Doc/RomWBW Disk Catalog.pdf index f5f33b31fea785db74723185b84b21504adf83af..4d92d17f6e15738248e1e8221dab9d3becd635f5 100644 GIT binary patch delta 109 zcmZ4TpMA-H_J%EtM_#fS85kOxnomFVl2I1Q-v0I_W4NfZv751lv9qI-tA&}lqlv45 fv5Tvjlbf@#rG=S+simQ-oq`P^CDYsgGs*%0jz%BV delta 109 zcmZ4TpMA-H_J%EtM_#fSni*P}7)?L*l2I1Q-v0I_W4NfZsgb3*nSq&^i?NHTnVFlT fvy-8jxsjuho2!$Vvw@MDoq`P^CDYsgGs*%0gt#BC diff --git a/Doc/RomWBW Getting Started.pdf b/Doc/RomWBW Getting Started.pdf index 225e2dda61eae0d7bd14dc1c2dc7f47821796b4a..bd96edbd9741cb989c0cf8763892ea50ca0afb83 100644 GIT binary patch delta 53968 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 NETfp1+J1G${{z)r!x8`h delta 52645 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 z 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 RPQU{a)0`3#8U~u2{{v)pG8g~= diff --git a/ReadMe.md b/ReadMe.md index a37f7228..7680b0e8 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -3,7 +3,7 @@ ## Z80/Z180 System Software Version 3.1 Pre-release -Saturday 16 May 2020 +Tuesday 19 May 2020 Wayne Warthen @@ -706,6 +706,10 @@ most stable and you are less likely to encounter problems. ### Notes + - You can change media, but it must be done while at the OS command + prompt and you **must** warm start CP/M by pressing ctrl-c. This is + a CP/M 2.2 constraint and is well documented in the DRI manuals. + - The original versions of DDT, DDTZ, and ZSID used the RST 38 vector which conflicts with interrupt mode 1 use of this vector. The DDT, DDTZ, and ZSID applications in RomWBW have been modified to use RTS @@ -735,6 +739,10 @@ Manual.pdf”). of the ZSDOS paths and will fail in some scenarios (use `COPY` instead). + - Although ZSDOS can recognize a media change in some cases, it will + not always work. You should only change media at a command prompt + and be sure to warm start the OS with a ctrl-c. + ## NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -775,10 +783,16 @@ tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`. used to read the current date/time for file stamping, etc. You can use the `RTC` app to set the RTC clock. - - The `COPYSYS` command described in the DRI CP/M 3 documentatin is + - The `COPYSYS` command described in the DRI CP/M 3 documentation is not provided with RomWBW. The RomWBW `SYSCOPY` command is used instead. + - Although CP/M 3 is generally able to run CP/M 2.2 programs, this is + not universally true. This is especially true of the utility + programs included with the operating system. For example, the + `SUBMIT` program of CP/M 3 is completely different from the `SUBMIT` + program of CP/M 2.2. + ## Simeon Cran’s ZPM3 ZPM3 is an interesting combination of the features of both CP/M 3 and @@ -792,8 +806,9 @@ tracks of the disk. - `ZPMLDR` is included with ZPM3, but it is not working correctly. - The ZPM operating system is contained in the file called CPM3.SYS - which is confusing, but it is the author’s intended way of using - ZPM3. + which is confusing, but this is as intended by the ZPM3 + distribution. I believe it was done this way to make it easier for + users to transition from CP/M 3 to ZPM3. ## FreeRTOS diff --git a/ReadMe.txt b/ReadMe.txt index 81a3de1e..d7c946d6 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -3,7 +3,7 @@ RomWBW Z80/Z180 System Software Version 3.1 Pre-release -Saturday 16 May 2020 +Tuesday 19 May 2020 Wayne Warthen wwarthen@gmail.com @@ -737,6 +737,10 @@ most stable and you are less likely to encounter problems. Notes +- You can change media, but it must be done while at the OS command + prompt and you must warm start CP/M by pressing ctrl-c. This is a + CP/M 2.2 constraint and is well documented in the DRI manuals. + - The original versions of DDT, DDTZ, and ZSID used the RST 38 vector which conflicts with interrupt mode 1 use of this vector. The DDT, DDTZ, and ZSID applications in RomWBW have been modified to use RTS @@ -764,6 +768,10 @@ Notes of the ZSDOS paths and will fail in some scenarios (use COPY instead). +- Although ZSDOS can recognize a media change in some cases, it will + not always work. You should only change media at a command prompt + and be sure to warm start the OS with a ctrl-c. + NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -804,9 +812,15 @@ Notes to read the current date/time for file stamping, etc. You can use the RTC app to set the RTC clock. -- The COPYSYS command described in the DRI CP/M 3 documentatin is not +- The COPYSYS command described in the DRI CP/M 3 documentation is not provided with RomWBW. The RomWBW SYSCOPY command is used instead. +- Although CP/M 3 is generally able to run CP/M 2.2 programs, this is + not universally true. This is especially true of the utility + programs included with the operating system. For example, the SUBMIT + program of CP/M 3 is completely different from the SUBMIT program of + CP/M 2.2. + Simeon Cran’s ZPM3 ZPM3 is an interesting combination of the features of both CP/M 3 and @@ -820,8 +834,9 @@ Notes - ZPMLDR is included with ZPM3, but it is not working correctly. - The ZPM operating system is contained in the file called CPM3.SYS - which is confusing, but it is the author’s intended way of using - ZPM3. + which is confusing, but this is as intended by the ZPM3 + distribution. I believe it was done this way to make it easier for + users to transition from CP/M 3 to ZPM3. FreeRTOS diff --git a/Source/CBIOS/cbios.asm b/Source/CBIOS/cbios.asm index 47018547..6d2c1a9b 100644 --- a/Source/CBIOS/cbios.asm +++ b/Source/CBIOS/cbios.asm @@ -2103,6 +2103,7 @@ INIT: ; SOFT RESET HBIOS LD B,BF_SYSRESET ; HB FUNC: RESET + LD C,BF_SYSRES_INT ; WARM START RST 08 ; DO IT ; CREATE A TEMP COPY OF THE HBIOS CONFIG BLOCK (HCB) diff --git a/Source/CPM3/biosldr.z80 b/Source/CPM3/biosldr.z80 index beeeb878..ed478b2d 100644 --- a/Source/CPM3/biosldr.z80 +++ b/Source/CPM3/biosldr.z80 @@ -59,7 +59,7 @@ boot: ; this routine to avoid issues. ld (stksav),sp ld sp,stack - + ; Do the real work call boot0 @@ -718,10 +718,20 @@ medid ds 1 ; media id lba ds 4 ; current lba sps ds 2 ; sectors per slice -csvbuf ds 128 ; length (CSV) = ((DRM+1)/4) -alvbuf ds 512 ; length (ALV) = ((DSM+1)/4) -dirbuf ds 512 ; sector buffer -dtabuf ds 512 ; sector buffer +;csvbuf ds 128 ; length (CSV) = ((DRM+1)/4) +;alvbuf ds 512 ; length (ALV) = ((DSM+1)/4) +;dirbuf ds 512 ; sector buffer +;dtabuf ds 512 ; sector buffer + +; Trying to save space. The loader must fit underneath +; the start of BNKBDOS3 and we have a big BNKBDOS because +; of all the disk allocations. Putting these buffers +; in upper memory actually helps quite a bit. + +csvbuf equ 8000h +alvbuf equ csvbuf + 128 +dirbuf equ alvbuf + 512 +dtabuf equ dirbuf + 512 ds 64 stack equ $ diff --git a/Source/Doc/Applications.md b/Source/Doc/Applications.md index 236b02e2..463ed760 100644 --- a/Source/Doc/Applications.md +++ b/Source/Doc/Applications.md @@ -360,7 +360,7 @@ message. ## Etymology -The `SYSCOPY` command is an original product and the source code is +The `MODE` command is an original product and the source code is provided in the RomWBW distribution. `\clearpage`{=latex} diff --git a/Source/Doc/Architecture.md b/Source/Doc/Architecture.md index cb6b9807..6260d673 100644 --- a/Source/Doc/Architecture.md +++ b/Source/Doc/Architecture.md @@ -428,7 +428,7 @@ _Code_ | _Meaning_ -7 | media not present -8 | hardware not present -9 | I/O error --10 | write request to read-only media +-10 | write request to read-only media -11 | device timeout -12 | invalid configuration @@ -1565,7 +1565,7 @@ the value of the subfucntion. See subfunctions below. #### SYSRESET Subfunction 0x00 -- Internal HBIOS Reset (RESINT) | _Entry Parameters_ -| BC: 0xF000 +| BC: 0xFD00 | _Returned Values_ | A: Status (0=OK, else error) @@ -1576,7 +1576,7 @@ current OS. Does not reinitialize physical devices. #### SYSRESET Subfunction 0x01 -- Warm Start System (RESWARM) | _Entry Parameters_ -| BC: 0xF001 +| BC: 0xFD01 | _Returned Values_ | @@ -1587,7 +1587,7 @@ reinitialize physical devices. #### SYSRESET Subfunction 0x02 -- Cold Start System (RESCOLD) | _Entry Parameters_ -| BC: 0xF002 +| BC: 0xFD02 | _Returned Values_ | diff --git a/Source/Doc/GettingStarted.md b/Source/Doc/GettingStarted.md index f63ef2e3..2e6820da 100644 --- a/Source/Doc/GettingStarted.md +++ b/Source/Doc/GettingStarted.md @@ -755,6 +755,11 @@ likely to encounter problems. ### Notes +- You can change media, but it must be done while at the OS +command prompt and you **must** warm start CP/M by pressing +ctrl-c. This is a CP/M 2.2 constraint and is well documented +in the DRI manuals. + - The original versions of DDT, DDTZ, and ZSID used the RST 38 vector which conflicts with interrupt mode 1 use of this vector. The DDT, DDTZ, and ZSID applications in RomWBW have been modified @@ -783,6 +788,10 @@ Manual.pdf"). may not work as expected. The best example is PIP which is not aware of the ZSDOS paths and will fail in some scenarios (use `COPY` instead). +- Although ZSDOS can recognize a media change in some cases, it will not +always work. You should only change media at a command prompt and be +sure to warm start the OS with a ctrl-c. + ## NZCOM Automatic Z-System NZCOM is a much further refined version of Z-System (ZCPR 3.4). NZCOM @@ -823,9 +832,14 @@ system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS`. used to read the current date/time for file stamping, etc. You can use the `RTC` app to set the RTC clock. -- The `COPYSYS` command described in the DRI CP/M 3 documentatin is +- The `COPYSYS` command described in the DRI CP/M 3 documentation is not provided with RomWBW. The RomWBW `SYSCOPY` command is used instead. +- Although CP/M 3 is generally able to run CP/M 2.2 programs, this is +not universally true. This is especially true of the utility programs +included with the operating system. For example, the `SUBMIT` program +of CP/M 3 is completely different from the `SUBMIT` program of CP/M 2.2. + ## Simeon Cran's ZPM3 ZPM3 is an interesting combination of the features of both CP/M 3 and @@ -840,7 +854,9 @@ tracks of the disk. - `ZPMLDR` is included with ZPM3, but it is not working correctly. - The ZPM operating system is contained in the file called CPM3.SYS -which is confusing, but it is the author's intended way of using ZPM3. +which is confusing, but this is as intended by the ZPM3 distribution. +I believe it was done this way to make it easier for users to transition +from CP/M 3 to ZPM3. ## FreeRTOS diff --git a/Source/HBIOS/dbgmon.asm b/Source/HBIOS/dbgmon.asm index 24a9f26a..69016865 100644 --- a/Source/HBIOS/dbgmon.asm +++ b/Source/HBIOS/dbgmon.asm @@ -1400,7 +1400,7 @@ DISPLAYBUF: .FILL 8,0 #ELSE ; DSKY_ENTRY: - CALL PANIC ; NO RETURN + JP EXIT ; #ENDIF ; diff --git a/Source/HBIOS/hbios.asm b/Source/HBIOS/hbios.asm index a172f71d..0e6d78c4 100644 --- a/Source/HBIOS/hbios.asm +++ b/Source/HBIOS/hbios.asm @@ -215,6 +215,8 @@ CB_SERDEV .DB 0 ; PRIMARY SERIAL UNIT IS UNIT #0 BY FIAT CB_CRTDEV .DB $FF ; PRIMARY CRT UNIT, $FF UNTIL AFTER HBIOS INIT CB_CONDEV .DB $FF ; CONSOLE UNIT, $FF UNTIL AFTER HBIOS INIT ; +CB_DIAGLVL .DB DIAGLVL ; ROMWBW HBIOS DIAGNOSTIC LEVEL +; ; MEMORY MANAGEMENT VARIABLES START AT $20 ; .FILL (HCB + $20 - $),0 @@ -2950,13 +2952,13 @@ HB_DISPCALL: ; CHECK INCOMING UNIT INDEX IN C FOR VAILIDITY LD A,C ; A := INCOMING DISK UNIT INDEX CP (IY-1) ; COMPARE TO COUNT - JR NC,HB_FUNCERR ; HANDLE INVALID UNIT INDEX + JR NC,HB_UNITERR ; HANDLE INVALID UNIT INDEX ; CHECK FUNCTION INDEX FOR VALIDITY LD A,B ; A := INCOMING FUNCTION NUMBER AND $0F ; LOW NIBBLE ONLY FOR FUNC INDEX CP (IY-3) ; CHECK FN NUM AGAINST MAX - JR NC,HB_UNITERR ; HANDLE FN NUM OUT OF RANGE ERROR + JR NC,HB_FUNCERR ; HANDLE FN NUM OUT OF RANGE ERROR ; BUMP IY TO ACTUAL XXX_TBL ENTRY FOR INCOMING UNIT INDEX PUSH BC ; SAVE BC @@ -3548,6 +3550,69 @@ HB_RDSEC: ; #ENDIF ; +; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE? +; +SYSCHK: + ; CHECK DIAG LEVEL TO SEE IF WE SHOULD DISPLAY + PUSH AF ; PRESERVE INCOMING AF VALUE + LD A,(CB_DIAGLVL) ; GET DIAGNOSTIC LEVEL + CP DL_ERROR ; >= ERROR LEVEL + JR C,SYSCHK1 ; IF NOT, GO HOME + POP AF ; RESTORE INCOMING AF VALUE +; + ; DISPLAY SYSCHK MESSAGE + PUSH DE ; PRESERVE DE VALUE + LD DE,STR_SYSCHK ; POINT TO PREFIX STRING + CALL WRITESTR ; PRINT IT + POP DE ; RESTORE DE VALUE + CALL XREGDMP ; DUMP REGISTERS + JR CONTINUE ; CHECK W/ USER +; +SYSCHK1: + ; RETURN IF MESSAGING BYPASSED BY DIAG LEVEL + POP AF + RET +; +; PANIC: DUMP MACHINE STATE AND HALT +; +PANIC: + PUSH DE + LD DE,STR_PANIC + CALL WRITESTR + POP DE + CALL XREGDMP ; DUMP REGISTERS + JR SYSHALT ; FULL STOP +; +; +; +CONTINUE: + PUSH AF +CONTINUE1: + PUSH DE + LD DE,STR_CONTINUE + CALL WRITESTR + POP DE + CALL CIN + RES 5,A ; FORCE UPPERCASE (IMPERFECTLY) + CALL COUT ; ECHO + CP 'Y' + JR Z,CONTINUE3 + CP 'N' + JR Z,SYSHALT + JR CONTINUE1 +CONTINUE3: + CALL NEWLINE + POP AF + RET +; +; +; +SYSHALT: + LD DE,STR_HALT + CALL WRITESTR + DI + HALT +; ; PRINT VALUE OF HL AS THOUSANDTHS, IE. 0.000 ; PRTD3M: @@ -4289,6 +4354,10 @@ STR_SWITCH .DB "*** Activating CRT Console ***$" STR_BADINT .DB "\r\n*** BAD INT ***\r\n$" STR_LOWBAT .DB "\r\n\r\n+++ LOW BATTERY +++$" ; +STR_PANIC .TEXT "\r\n>>> PANIC: $" +STR_SYSCHK .TEXT "\r\n>>> SYSCHK: $" +STR_CONTINUE .TEXT "\r\nContinue (Y/N)? $" +; #IF (DSKYENABLE) ; 'H','B','I','O',' ',' ',' ',' ' MSG_HBVER .DB $BE,$FF,$8A,$FB,$80,$80,$80,$80 ; "HBIO " #ENDIF diff --git a/Source/HBIOS/hbios.inc b/Source/HBIOS/hbios.inc index 491f2422..3c131c6f 100644 --- a/Source/HBIOS/hbios.inc +++ b/Source/HBIOS/hbios.inc @@ -121,7 +121,7 @@ CIO_CONSOLE .EQU $80 ; CIO UNIT NUM FOR CUR CON ERR_NONE .EQU 0 ; SUCCESS ; ERR_UNDEF .EQU -1 ; UNDEFINED ERROR -ERR_NOTIMPL .EQU -2 ; FUNC NOT IMPLEMENTED +ERR_NOTIMPL .EQU -2 ; FUNCTION NOT IMPLEMENTED ERR_NOFUNC .EQU -3 ; INVALID FUNCTION ERR_NOUNIT .EQU -4 ; INVALID UNIT NUMBER ERR_NOMEM .EQU -5 ; OUT OF MEMORY @@ -129,7 +129,7 @@ ERR_RANGE .EQU -6 ; PARAMETER OUT OF RANGE ERR_NOMEDIA .EQU -7 ; MEDIA NOT PRESENT ERR_NOHW .EQU -8 ; HARDWARE NOT PRESENT ERR_IO .EQU -9 ; I/O ERROR -ERR_READONLY .EQU -10 ; WRITE REQ TO READ-ONLY MEDIA +ERR_READONLY .EQU -10 ; WRITE REQUEST TO READ-ONLY MEDIA ERR_TIMEOUT .EQU -11 ; DEVICE TIMEOUT ERR_BADCFG .EQU -12 ; INVALID CONFIGURATION ERR_INTERNAL .EQU -13 ; INTERNAL ERROR @@ -220,8 +220,7 @@ HCB_BOOTBID .EQU $0F ; BANK ID OF ROM PAGE BOOTED (BYTE) HCB_SERDEV .EQU $10 ; PRIMARY SERIAL DEVICE/UNIT (BYTE) HCB_CRTDEV .EQU $11 ; CRT DISPLAY DEVICE/UNIT (BYTE) HCB_CONDEV .EQU $12 ; ACTIVE CONSOLE DEVICE/UNIT (BYTE) -;HCB_CUREMU .EQU $13 ; CURRENT VDA TERMINAL EMULATION (DEPRECATED) -;HCB_CURVDA .EQU $14 ; CURRENT VDA TARGET FOR EMULATION (DEPRECATED) +HCB_DIAGLVL .EQU $13 ; HBIOS DIAGNOSTIC LEVEL (BYTE) ; HCB_HEAP .EQU $20 ; DWORD ADDRESS OF START OF HEAP HCB_HEAPTOP .EQU $22 ; DWORD ADDRESS OF TOP OF HEAP diff --git a/Source/HBIOS/romldr.asm b/Source/HBIOS/romldr.asm index f17704ee..9e0bf162 100644 --- a/Source/HBIOS/romldr.asm +++ b/Source/HBIOS/romldr.asm @@ -285,6 +285,8 @@ runcmd: #if (BIOS == BIOS_WBW) cp 'I' ; C = set console interface jp z,setcon ; if so, do it + cp 'V' ; V = diagnostic verbosity + jp z,setdl ; is so, do it #endif ; ; Attempt ROM application launch @@ -473,6 +475,44 @@ setcon: ; #endif ; +; Set RomWBW HBIOS Diagnostic Level +; +#if (BIOS == BIOS_WBW) +; +setdl: + ; On entry DE is expected to be pointing to start + ; of command + call findws ; skip command + call skipws ; and skip it + or a ; set flags to check for null + jr z,showdl ; no parm, just display + call isnum ; do we have a number? + jp nz,err_invcmd ; if not, invalid + call getnum ; parse number into A + jp c,err_invcmd ; handle overflow error +; + ; Set diagnostic level + ld b,BF_SYSPOKE ; HBIOS func: POKE + ld d,BID_BIOS ; BIOS bank + ld e,a ; diag level value + ld hl,HCB_LOC + HCB_DIAGLVL ; offset into HCB + rst 08 ; do it + ; Fall thru to display new value +; +showdl: + ; Display current diagnostic level + ld hl,str_diaglvl ; diag level tag + call pstr ; print it + ld b,BF_SYSPEEK ; HBIOS func: PEEK + ld d,BID_BIOS ; BIOS bank + ld hl,HCB_LOC + HCB_DIAGLVL ; offset into HCB + rst 08 ; do it, E := level value + ld a,e ; put in accum + call prtdecb ; print it + ret ; done +; +#endif +; ; Restart system ; reboot: @@ -1079,6 +1119,8 @@ rdln_cr: ; findws: ld a,(de) ; get next char + or a ; check for eol + ret z ; done if so cp ' ' ; blank? ret z ; nope, done inc de ; bump buffer pointer @@ -1089,6 +1131,8 @@ findws: ; skipws: ld a,(de) ; get next char + or a ; check for eol + ret z ; done if so cp ' ' ; blank? ret nz ; nope, done inc de ; bump buffer pointer @@ -1740,6 +1784,7 @@ devunk .db "UNK",0 err_invcmd: ld hl,str_err_invcmd jr err +; err_nodisk: ld hl,str_err_nodisk jr err @@ -1833,6 +1878,7 @@ str_binfo3 .db "-0x",0 str_binfo4 .db ", entry @ 0x",0 str_binfo5 .db "]",0 str_ldsec .db ", Sector 0x",0 +str_diaglvl .db "\r\n\r\nHBIOS Diagnostic Level: ",0 ; str_help .db "\r\n" .db "\r\n L - List ROM Applications" @@ -1840,6 +1886,7 @@ str_help .db "\r\n" .db "\r\n R - Reboot System" #if (BIOS == BIOS_WBW) .db "\r\n I - Set Console Interface" + .db "\r\n V - Set HBIOS Diagnostic Verbosity" #endif .db "\r\n [.] - Boot Disk Unit/Slice" .db 0 diff --git a/Source/HBIOS/std.asm b/Source/HBIOS/std.asm index a6ee8022..b7459ce3 100644 --- a/Source/HBIOS/std.asm +++ b/Source/HBIOS/std.asm @@ -30,9 +30,15 @@ USEXIO .EQU 1 ; BASIC SERIAL DRIVER USEMIO .EQU 2 ; MEMORY BUFFER DRIVER WBWDEBUG .EQU USENONE ; -; DISPLAY SYSTEM CHECKS? +; DIAGNOSTIC LEVEL OPTIONS ; -SYSCHKENABLE .EQU FALSE +DL_NONE .EQU 0 ; HBIOS DISPLAY NO MESSAGES +DL_CRITICAL .EQU 4 ; HBIOS DISPLAY CRITICAL ERROR MESSAGES +DL_ERROR .EQU 8 ; HBIOS DISPLAYS ALL ERROR MESSAGES +DL_WARNING .EQU 12 ; HBIOS DISPLAYS WARNING MESSAGES +DL_INFO .EQU 16 ; HBIOS DISPLAYS INFORMATIONAL MESSAGES +DL_DETAIL .EQU 20 ; HBIOS DISPLAYS DETAILED DIAGNOSTIC MESSAGES +DL_VERBOSE .EQU 24 ; HBIOS DISPLAYS ANYTHING IT KNOWS HOW TO ; ; PRIMARY HARDWARE PLATFORMS ; @@ -62,6 +68,11 @@ BIOS_NONE .EQU 0 ; NO BIOS TYPE DEFINED BIOS_WBW .EQU 1 ; ROMWBW HBIOS BIOS_UNA .EQU 2 ; UNA UBIOS ; +; DEFAULT HBIOS DIAGNOSTIC LEVEL +; WILL ULTIMATELY BE MOVED TO CONFIG FILE +; +DIAGLVL .EQU DL_CRITICAL +; ; MEMORY MANAGERS ; MM_NONE .EQU 0 diff --git a/Source/HBIOS/util.asm b/Source/HBIOS/util.asm index 7a8868dd..d4396495 100644 --- a/Source/HBIOS/util.asm +++ b/Source/HBIOS/util.asm @@ -381,30 +381,6 @@ TSTPT: POP DE JR REGDMP ; DUMP REGISTERS AND RETURN ; -; SYSTEM CHECK: DUMP MACHINE STATE AND CONTINUE? -; -SYSCHK: -#IF (SYSCHKENABLE) - PUSH DE - LD DE,STR_SYSCHK - CALL WRITESTR - POP DE - CALL XREGDMP ; DUMP REGISTERS - CALL CONTINUE ; CHECK W/ USER -#ENDIF - RET -; -; PANIC: DUMP MACHINE STATE AND HALT -; -PANIC: - PUSH DE - LD DE,STR_PANIC - CALL WRITESTR - POP DE - CALL XREGDMP ; DUMP REGISTERS - DI ; NO INTERRUPTS - HALT ; FULL STOP -; ; ; REGDMP: @@ -491,35 +467,10 @@ REGDMP_SP .DW 0 ; ; ; -CONTINUE: - PUSH AF - PUSH DE - LD DE,STR_CONTINUE - CALL WRITESTR - POP DE -CONTINUE1: - CALL CIN - CP 'Y' - JR Z,CONTINUE3 - CP 'y' - JR Z,CONTINUE3 - CP 'N' - JR Z,CONTINUE2 - CP 'n' - JR Z,CONTINUE2 - JR CONTINUE1 -CONTINUE2: - HALT -CONTINUE3: - POP AF - RET -; ; ; -STR_PANIC .DB "\r\n\r\n>>> PANIC: $" -STR_SYSCHK .DB "\r\n\r\n>>> SYSCHK: $" +STR_HALT .TEXT "\r\n\r\n*** System Halted ***$" STR_TSTPT .TEXT "\r\n+++ TSTPT: $" -STR_CONTINUE .TEXT " Continue? (Y/N): $" ;STR_AF .DB " AF=$" ;STR_BC .DB " BC=$" ;STR_DE .DB " DE=$" diff --git a/Source/ver.inc b/Source/ver.inc index 74eae58b..f8b3b588 100644 --- a/Source/ver.inc +++ b/Source/ver.inc @@ -2,4 +2,4 @@ #DEFINE RMN 1 #DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "3.1.1-pre.11" +#DEFINE BIOSVER "3.1.1-pre.12" diff --git a/Source/ver.lib b/Source/ver.lib index f0a72730..ffca8b84 100644 --- a/Source/ver.lib +++ b/Source/ver.lib @@ -3,5 +3,5 @@ rmn equ 1 rup equ 1 rtp equ 0 biosver macro - db "3.1.1-pre.11" + db "3.1.1-pre.12" endm