Browse Source

Merge pull request #68 from wwarthen/master

Resync
pull/460/head
b1ackmai1er 1 year ago
committed by GitHub
parent
commit
660bb20bba
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW Disk Catalog.pdf
  3. BIN
      Doc/RomWBW Errata.pdf
  4. BIN
      Doc/RomWBW System Guide.pdf
  5. BIN
      Doc/RomWBW User Guide.pdf
  6. 2
      ReadMe.md
  7. 2
      ReadMe.txt
  8. 26
      Source/Doc/Applications.md
  9. 11
      Source/Doc/SystemGuide.md
  10. 18
      Source/Doc/UserGuide.md
  11. 1
      Source/HBIOS/Config/DUO_std.asm
  12. 1
      Source/HBIOS/Config/DYNO_std.asm
  13. 1
      Source/HBIOS/Config/EPITX_std.asm
  14. 1
      Source/HBIOS/Config/FZ80_std.asm
  15. 1
      Source/HBIOS/Config/GMZ180_std.asm
  16. 1
      Source/HBIOS/Config/HEATH_std.asm
  17. 1
      Source/HBIOS/Config/MBC_std.asm
  18. 1
      Source/HBIOS/Config/MK4_std.asm
  19. 1
      Source/HBIOS/Config/MON_std.asm
  20. 1
      Source/HBIOS/Config/N8_std.asm
  21. 1
      Source/HBIOS/Config/NABU_std.asm
  22. 1
      Source/HBIOS/Config/RCEZ80_std.asm
  23. 1
      Source/HBIOS/Config/RCZ180_ext_std.asm
  24. 1
      Source/HBIOS/Config/RCZ180_nat_std.asm
  25. 1
      Source/HBIOS/Config/RCZ180_z1rcc_std.asm
  26. 1
      Source/HBIOS/Config/RCZ280_ext_std.asm
  27. 1
      Source/HBIOS/Config/RCZ280_nat_std.asm
  28. 1
      Source/HBIOS/Config/RCZ280_zz80mb_std.asm
  29. 1
      Source/HBIOS/Config/RCZ280_zzrcc_ram_std.asm
  30. 1
      Source/HBIOS/Config/RCZ280_zzrcc_std.asm
  31. 1
      Source/HBIOS/Config/RCZ80_easy_std.asm
  32. 1
      Source/HBIOS/Config/RCZ80_jbl_std.asm
  33. 1
      Source/HBIOS/Config/RCZ80_kio_std.asm
  34. 1
      Source/HBIOS/Config/RCZ80_skz_std.asm
  35. 3
      Source/HBIOS/Config/RCZ80_std.asm
  36. 1
      Source/HBIOS/Config/RCZ80_tiny_std.asm
  37. 1
      Source/HBIOS/Config/RCZ80_user.asm
  38. 1
      Source/HBIOS/Config/RCZ80_zrc512_std.asm
  39. 1
      Source/HBIOS/Config/RCZ80_zrc_ram_std.asm
  40. 1
      Source/HBIOS/Config/RCZ80_zrc_std.asm
  41. 1
      Source/HBIOS/Config/RPH_std.asm
  42. 1
      Source/HBIOS/Config/S100_std.asm
  43. 1
      Source/HBIOS/Config/SBC_simh_std.asm
  44. 1
      Source/HBIOS/Config/SBC_std.asm
  45. 1
      Source/HBIOS/Config/SCZ180_sc126_std.asm
  46. 1
      Source/HBIOS/Config/SCZ180_sc130_std.asm
  47. 1
      Source/HBIOS/Config/SCZ180_sc131_std.asm
  48. 1
      Source/HBIOS/Config/SCZ180_sc140_std.asm
  49. 1
      Source/HBIOS/Config/SCZ180_sc503_std.asm
  50. 1
      Source/HBIOS/Config/SCZ180_sc700_std.asm
  51. 1
      Source/HBIOS/Config/UNA_std.asm
  52. 1
      Source/HBIOS/Config/Z80RETRO_std.asm
  53. 1
      Source/HBIOS/Config/ZETA2_std.asm
  54. 1
      Source/HBIOS/Config/ZETA_std.asm
  55. 20
      Source/HBIOS/hbios.asm
  56. 10
      Source/HBIOS/hbios.inc
  57. 194
      Source/HBIOS/romldr.asm
  58. 106
      Source/HBIOS/sysconf.asm
  59. 2
      Source/ver.inc
  60. 2
      Source/ver.lib

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Disk Catalog.pdf

Binary file not shown.

BIN
Doc/RomWBW Errata.pdf

Binary file not shown.

BIN
Doc/RomWBW System Guide.pdf

Binary file not shown.

BIN
Doc/RomWBW User Guide.pdf

Binary file not shown.

2
ReadMe.md

@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
01 Dec 2024
05 Dec 2024
# Overview

2
ReadMe.txt

@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
01 Dec 2024
05 Dec 2024

26
Source/Doc/Applications.md

@ -398,23 +398,23 @@ system configuration.
### Basic Operation
The application is an interactive application it does not have command line syntax.
The application is an interactive application; it does not have a command line syntax.
Instead commands are executed from within the application in a command line structure.
When you first start the (`SYSCONF`) utility it will display the current switches
followed by a command listing.
When you first run the (`SYSCONF`) utility the NVRAM will be uninitialised, and can
be initialised using the (R)eset command, which write default values to NVRAM.
be initialised using the (R)eset command, which writes default values to NVRAM.
Updates are done immediately to NVRAM as you enter them, i.e. there is no confirm
changes step. If you make an incorrect changes you simply need to enter a new
changes step. If you make any incorrect changes, you simply need to enter a new
command to set the Switch value correctly.
Once a change has been made it is available, however may not take effect until
Once a change has been made it is available, however it may not take effect until
the next system reboot. This is dependent on the Switch itself.
If no NVRAM is provided by your hardware then running this application will just
If no NVRAM is provided by your hardware, then running this application will just
report the missing hardware and exit immediately.
To exit from the application use the (Q)uit command.
@ -445,7 +445,7 @@ character is used to delimit parameters in the command.
This switch will define if the system will perform auto boot at the RomWBW boot prompt.
Enabling this will not prevent a user from typing a boot command, so long as the timeout is not
exceeded. When configured this replaces the (`BOOT_DEFAULT`) variable
exceeded. When configured this replaces the (`AUTO_CMD`) variable
defined in build configuration.
Making changes to auto boot has no affect until the next reboot.
@ -465,13 +465,13 @@ Making changes to auto boot has no affect until the next reboot.
| S AB E,10 | Enable Auto Boot with 10 second delay |
| S AB D | Disable Auto Boot |
#### Default Boot (DB)
#### Boot Options (BO)
This switch will define the default boot command to be executed when pressing enter
at the RomWBW boot prompt. When configured this replaces the (`BOOT_TIMEOUT`) variable
defined in build configuration.
This switch will define the boot command to be executed when auto boot is
enabled. When configured this replaces the (`AUTO_CMD`) variable
defined in the ROM build configuration.
Making changes to auto boot has no affect until the next reboot.
Making changes to boot options has no affect until the next reboot.
**Arguments**
@ -487,8 +487,8 @@ Making changes to auto boot has no affect until the next reboot.
| Command | Description |
|-------------|----------------------------------------------------------|
| S DB D,2,14 | Set the default boot from Disk; Unit 2, Slice 14 |
| S DB R,M | Set the default boot to be the (M)onitor Rom Application |
| S BO D,2,14 | Set the default boot from Disk; Unit 2, Slice 14 |
| S BO R,M | Set the default boot to be the (M)onitor Rom Application |
## CP/M 2.2

11
Source/Doc/SystemGuide.md

@ -531,7 +531,7 @@ The following switch ID's are defined, and described in sections below.
| Switch Number | Name | Description |
|---------------|--------------|-----------------------------------------------|
| 0x00 | -reserved- | Reserved |
| 0x01 | Default Boot | Default boot, either a Rom App or Disk Boot |
| 0x01 | Boot Options | ROM or Disk Boot Settings |
| 0x02 | -n/a- | -n/a- high order byte of previous switch |
| 0x03 | Auto Boot | Automatically boot enabled without user input |
| 0x04 - 0xFE | -future- | Future general usage |
@ -544,18 +544,19 @@ the bytes in NVRAM to check for authenticity before using the configuration.
|-------------|--------------|-----------------------------------|
| 0x00 | Header Byte | Header Signature Byte 'W' |
| 0x01 - 0x03 | Switch Data | Actual Switch Data |
| 0x04 | Parity Check | Parity byte to check authenticity |
| 0x04 | Parity Check | Checksum byte to check integrity |
The above data is copied into the HBIOS Configuration Block (HCB) at startup at
the location starting at CB_SWITCHES.
### Default Boot (NVSW_DEFBOOT)
### Boot Options (NVSW_BOOTOPTS)
16 bit Switch defining the default Rom application or Disk device to boot.
16 bit Switch defining the ROM application or Disk device to boot if
automatic booting is enabled.
| Bit 15 | Bits 14-8 | Bits 7-0 |
|-------------|-------------------|--------------------|
| 1 = Rom App | -undefined- | App to Boot (Char) |
| 1 = ROM App | -undefined- | App to Boot (Char) |
| 0 = Disk | Disk Unit (0-127) | Disk Slice (0-255) |
### Auto Boot (NVSW_AUTOBOOT)

18
Source/Doc/UserGuide.md

@ -905,24 +905,24 @@ some limited configuration option options inside this NVRAM.
Several configuration options are currently supported, these are known as Switches
* Specify Automatic boot at startup, after an optional delay (AB)
* Define the Default Disk or ROM App to be booted at startup (DB)
* Define the Disk or ROM App to be booted at for automatic boot (BO)
RomWBW uses bytes located at the start of RTC NVRAM, and includes a Parity check of
the bytes in NVRAM to check for authenticity before using the configuration.
RomWBW uses bytes located at the start of RTC NVRAM, and includes a checksum of
the bytes in NVRAM to check for integrity before using the configuration.
Initially NVRAM has to be reset (with default values), before it can be used.
As well as setting defaults, it also writes the correct parity, and allows the
NVRAM to be accessed and to store RomWBW config.
As well as setting defaults, it also writes the correct checksum, and allows the
NVRAM to be accessed and to store the RomWBW config.
This is an explicit step that must be done, as any existing data stored is overitten.
If you are using NVRAM for other purposes then you can continue to do so
This is an explicit step that must be done, as any existing data stored is overwritten.
If you are using NVRAM for other purposes, then you can continue to do so
so long as you do NOT perform this Reset step.
NVRAM may also need to be reset in these circumstances
NVRAM may also need to be reset in these circumstances:
* When there has been a loss of power to the NVRAM.
* When upgrading to a new RomWBW version, or a RomWBW version that has new switches.
* If the NVRAM has been overitten by another application.
* If the NVRAM has been overwritten by another application.
If you want to continue to use NVRAM in your applications you may want to consider storing
your data above the RomWBW Switch data.

1
Source/HBIOS/Config/DUO_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_DUO.asm"

1
Source/HBIOS/Config/DYNO_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_DYNO.asm"

1
Source/HBIOS/Config/EPITX_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Z180 MiniITX"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_EPITX.asm"

1
Source/HBIOS/Config/FZ80_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_FZ80.asm"

1
Source/HBIOS/Config/GMZ180_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "GM STD BUS Z180", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_GMZ180.asm"

1
Source/HBIOS/Config/HEATH_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_HEATH.asm"

1
Source/HBIOS/Config/MBC_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_MBC.asm"

1
Source/HBIOS/Config/MK4_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_MK4.asm"

1
Source/HBIOS/Config/MON_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_MON.asm"

1
Source/HBIOS/Config/N8_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_N8.asm"

1
Source/HBIOS/Config/NABU_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_NABU.asm"

1
Source/HBIOS/Config/RCEZ80_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCEZ80.asm"

1
Source/HBIOS/Config/RCZ180_ext_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ180.asm"

1
Source/HBIOS/Config/RCZ180_nat_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ180.asm"

1
Source/HBIOS/Config/RCZ180_z1rcc_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Z1RCC", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ180.asm"

1
Source/HBIOS/Config/RCZ280_ext_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ280.asm"

1
Source/HBIOS/Config/RCZ280_nat_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ280.asm"

1
Source/HBIOS/Config/RCZ280_zz80mb_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZZ80MB", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ280.asm"

1
Source/HBIOS/Config/RCZ280_zzrcc_ram_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZZRCC", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ280.asm"

1
Source/HBIOS/Config/RCZ280_zzrcc_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZZRCC", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ280.asm"

1
Source/HBIOS/Config/RCZ80_easy_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Easy-Z80", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

1
Source/HBIOS/Config/RCZ80_jbl_std.asm

@ -63,6 +63,7 @@
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
; YOUR FILE IN THE BUILD PROCESS.
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "Config/RCZ80_std.asm"

1
Source/HBIOS/Config/RCZ80_kio_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "Config/RCZ80_std.asm"

1
Source/HBIOS/Config/RCZ80_skz_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

3
Source/HBIOS/Config/RCZ80_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"
@ -75,7 +76,7 @@ IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;

1
Source/HBIOS/Config/RCZ80_tiny_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Tiny-Z80", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

1
Source/HBIOS/Config/RCZ80_user.asm

@ -48,6 +48,7 @@
; 3. ENABLES LPT PRINTER SUPPORT
;
#DEFINE PLATFORM_NAME "My Custom RCBus Computer", " [", CONFIG, "]"
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "Config/RCZ80_std.asm" ; INHERIT FROM OFFICIAL BUILD SETTINGS

1
Source/HBIOS/Config/RCZ80_zrc512_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZRC512", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

1
Source/HBIOS/Config/RCZ80_zrc_ram_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZRC", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

1
Source/HBIOS/Config/RCZ80_zrc_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "ZRC", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RCZ80.asm"

1
Source/HBIOS/Config/RPH_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_RPH.asm"

1
Source/HBIOS/Config/S100_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_S100.asm"

1
Source/HBIOS/Config/SBC_simh_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SBC.asm"

1
Source/HBIOS/Config/SBC_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SBC.asm"

1
Source/HBIOS/Config/SCZ180_sc126_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC126", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/SCZ180_sc130_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC130", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/SCZ180_sc131_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC131", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/SCZ180_sc140_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC140", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/SCZ180_sc503_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC503", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/SCZ180_sc700_std.asm

@ -44,6 +44,7 @@
;
#DEFINE PLATFORM_NAME "Small Computer SC700", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_SCZ180.asm"

1
Source/HBIOS/Config/UNA_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_UNA.asm"

1
Source/HBIOS/Config/Z80RETRO_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_Z80RETRO.asm"

1
Source/HBIOS/Config/ZETA2_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_ZETA2.asm"

1
Source/HBIOS/Config/ZETA_std.asm

@ -42,6 +42,7 @@
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
;
#INCLUDE "cfg_ZETA.asm"

20
Source/HBIOS/hbios.asm

@ -462,7 +462,7 @@ CB_HEAPTOP .DW 0
;
.FILL (HCB + $30 - $),0
;
; First byte (header) of NVRAM = "W" if fully initialised, or a ststus byte
; First byte (header) of NVRAM = "W" if fully initialised, or a status byte
; = 0 if no NVRAM detected, or = 1 If NVR exists, but not configured
CB_SWITCHES .DB 0 ; this byte is set during init
;
@ -470,20 +470,20 @@ CB_SWITCHES .DB 0 ; this byte is set during init
; Bit 7-0 DISK BOOT SLice Number to Boot -> default = 0
; Bit 7-0 ROM BOOT (alpha character) Application to boot -> default = "H"
; Byte 1: (H)
; Bit 7 - ROM/DISK - Rom or Disk Boot -> Default=ROM=1 (BOOT_DEFAULT is Numeric/Alpha)
; Bit 7 - ROM/DISK - Rom or Disk Boot -> Default=ROM=1 (AUTO_CMD is Numeric/Alpha)
; Bit 6-0 - DISK BOOT Disk Unit to Boot (0-127) -> default = 0
CB_SWDEFBOOT .DB 'H' ; (WORD) DEFAULT BOOT NVR OPTIONS. USED By ROMLDR
.DB DBOOT_ROM ; Default Boot - ROM Application
CB_SW_AB_OPT .DB 'H' ; (WORD) AUTO BOOT NVR OPTIONS. USED By ROMLDR
.DB BOPTS_ROM ; Boot Opts - ROM Application
;
; Byte 0: (L)
; Bit 7-6 - Reserved
; Bit 5 - AUTO BOOT Auto boot, default=false (BOOT_TIMEOUT != -1)
; Bit 4 - Reserved
; Bit 3-0 - BOOT_TIMEOUT in seconds (0-15) 0=immediate -> default=3
CB_SWAUTOB .DB 0 ; AUTO BOOT NVR OPTIONS. USED By ROMLDR
CB_SW_AB_CFG .DB 0 ; AUTO BOOT NVR CONFIG. USED By ROMLDR
;
; CHECKSUM
CB_SWITCHCK .DB 0 ; CHECKSUM (XOR=0), INCLUDES HEADER and CB_VERSION
CB_SW_CKSUM .DB 0 ; CHECKSUM (XOR=0), INCLUDES HEADER and CB_VERSION
;
; STANDARD BANK ID'S START AT $D8. DEFAULT VALUES FOR 512KB SYSTEM WITH NO RESERVED BANKS
;
@ -3407,7 +3407,7 @@ NVR_INIT:
JR NZ, NVR_INIT_DEF ; failed to correclty read data
;
CALL NVSW_CHECKSUM ; checksum calc into A
LD HL,CB_SWITCHCK ; address of HCB switch checksum value
LD HL,CB_SW_CKSUM ; address of HCB switch checksum value
CP (HL) ; compare Caculated Check, with hcb Check Value
JR Z,NVR_INIT_END ; The same so success
NVR_INIT_DEF:
@ -7611,7 +7611,7 @@ NVSW_RESET:
;
NVSW_UPDATE:
CALL NVSW_CHECKSUM ; CALC checksum into A
LD (CB_SWITCHCK),A ; store checksum in hcb
LD (CB_SW_CKSUM),A ; store checksum in hcb
CALL NVSW_WRITE ; write the bytes to nvr
RET Z ; Successful write, return
; write failed for some reason ???
@ -7695,8 +7695,8 @@ NVSW_WRITE2:
;
NVSW_DEFAULT:
.DB 'W' ; Signature Byte
.DB 'H' ; Default Boot - Rom Application [H]elp
.DB DBOOT_ROM ; Default Boot - ROM Application
.DB 'H' ; Auto Boot - Rom Application [H]elp
.DB BOPTS_ROM ; Auto Boot - ROM Application
.DB 0 ; Auto Boot - NO auto boot
; Configure above byte from (BOOT_TIMEOUT != -1)
; SIZE OF NVR BYTES

10
Source/HBIOS/hbios.inc

@ -340,7 +340,7 @@ SW_OPT .EQU %00000111 ; SLICE/ROM APP
; NVRAM SWITCHES
;
; used for identifying Non Volitile Switches
NVSW_DEFBOOT .EQU 1 ; Default Boot NVRAM Switch
NVSW_BOOTOPTS .EQU 1 ; Boot Options NVRAM Switch
NVSW_AUTOBOOT .EQU 3 ; Auto Boot NVRAM Switch
;
; NVRAM SWITCH BIT MASKS
@ -349,8 +349,8 @@ NVSW_AUTOBOOT .EQU 3 ; Auto Boot NVRAM Switch
ABOOT_AUTO .EQU %00100000 ; AUTO=1/MANUAL=0 BOOT
ABOOT_TIMEOUT .EQU %00001111 ; MENU TIMEOUT IN SECONDS, 0=IMMEDIATE
; DEFAULT BOOT MASKS
DBOOT_ROM .EQU %10000000 ; ROM=1/DISK=0 FLAG
DBOOT_UNIT .EQU %01111111 ; DISK UNIT
BOPTS_ROM .EQU %10000000 ; ROM=1/DISK=0 FLAG
BOPTS_UNIT .EQU %01111111 ; DISK UNIT
;
; MEDIA ID VALUES
;
@ -510,8 +510,8 @@ HCB_BOOTMODE .EQU $14 ; HBIOS BOOTMODE (BYTE)
HCB_HEAP .EQU $20 ; DWORD ADDRESS OF START OF HEAP
HCB_HEAPTOP .EQU $22 ; DWORD ADDRESS OF TOP OF HEAP
;
HCB_SW_DBOOT .EQU $31 ; DEFAULT BOOT CONFIG (WORD)
HCB_SW_AUTOB .EQU $33 ; AUTO BOOT CONFIG (BYTE)
HCB_SW_BOPTS .EQU $31 ; BOOT OPTIONS (WORD)
HCB_SW_AUTOB .EQU $33 ; AUTO BOOT (BYTE)
;
; MEMORY BANK IDS (ONE BYTE EACH)
HCB_BIDCOM .EQU $D8 ; COMMON BANK (UPPER 32K)

194
Source/HBIOS/romldr.asm

@ -33,14 +33,10 @@
;
#include "std.asm" ; standard RomWBW constants
;
; BOOT_DEFAULT is deprecated and has been replaced by AUTO_CMD. In
; case someone has not yet made the switch, we define AUTO_CMD from
; BOOT_DEFAULT.
; If BOOT_DEFAULT is not defined, just define it to "H" for help.
;
#ifdef BOOT_DEFAULT
#ifndef AUTO_CMD
#define AUTO_CMD BOOT_DEFAULT
#endif
#ifndef BOOT_DEFAULT
#define BOOT_DEFAULT "H"
#endif
;
; If AUTO_CMD is not defined, just define it as an empty string.
@ -53,6 +49,7 @@ bel .equ 7 ; ASCII bell
bs .equ 8 ; ASCII backspace
lf .equ 10 ; ASCII linefeed
cr .equ 13 ; ASCII carriage return
esc .equ 27 ; ASCII escape
del .equ 127 ; ASCII del/rubout
;
cmdbuf .equ $80 ; cmd buf is in second half of page zero
@ -238,7 +235,7 @@ start2:
call clrbuf ; zero fill the cmd buffer
;
;=======================================================================
; Front Panel Boot
; Front Panel Boot Setup
;=======================================================================
;
#if ((BIOS == BIOS_WBW) & FPSW_ENABLE)
@ -267,7 +264,7 @@ nofp:
#endif
;
;=======================================================================
; NVRAM Boot
; NVRAM Auto Boot Setup
;=======================================================================
;
#if (BIOS == BIOS_WBW)
@ -300,18 +297,10 @@ nvrsw_auto:
;
;;;jp z,prompt ; Bypass ROM config auto cmd
jr z,nonvrswitch ; Proceed to ROM config autoboot
;
;
ld a,l ; the low order byte from SWITCHES
and ABOOT_TIMEOUT ; Mask out the Timeout
ld b,a ; timeout to high order B.C byte -> x 256
xor a
ld c,a ; and clear low order C byte
srl b ; Shift 2 right by 2 bits -> /4
rr c
srl b
rr c ; BC should now contain timeout * 64
ld (acmd_to),bc ; save auto cmd timeout 64ths of second
ld (acmd_to),a ; save auto cmd timeout in seconds
;
call acmd_wait ; do autocmd wait processing
call z,runnvr ; if Z set, process NVR switches
@ -321,60 +310,88 @@ nonvrswitch:
; no NVRAM switches found, or disabled, continue process from Build Config
#endif
;
#if (BOOT_TIMEOUT != -1)
;
; BUILD CONFIGURATION
;=======================================================================
; ROM Configuration Auto Boot Setup
;=======================================================================
;
; Initialize auto command timeout downcounter
#if (BOOT_TIMEOUT != -1)
; Initialize auto command flag and timeout downcounter
or $FF ; auto cmd active value
ld (acmd_act),a ; set flag
ld bc,BOOT_TIMEOUT * 64 ; 1/64's of a second
ld (acmd_to),bc ; save auto cmd timeout
ld a,BOOT_TIMEOUT ; boot timeout in secs
ld (acmd_to),a ; save auto cmd timeout in seconds
;
call acmd_wait ; do autocmd wait processing
call z,autocmd ; if Z set, to autocmd processing
jp prompt ; if we return, do normal loader prompt
call z,autocmd ; if Z set, do autocmd processing
#endif
;
jp prompt ; interactive loader prompt
;
;=======================================================================
; Auto Command Wait Processing
;=======================================================================
;
acmd_wait:
call nl2 ; formatting
;
acmd_wait0:
ld hl,str_autoact1 ; message part 1
call pstr ; display it
ld bc,(acmd_to) ; get timeout
rl c ; seconds value to B
rl b
rl c
rl b
ld a,b ; move it to A
ld a,(acmd_to) ; remaining timeout in seconds
call prtdecb ; display it
ld hl,str_autoact2 ; message part 2
call pstr ; display it
;
ld a,64 ; 1/64 sub-seconds counter reload value
ld (acmd_to_64),a ; reload sub-seconds counter
;
acmd_wait1:
; wait for auto cmd timeout or user escape
; check for user escape/enter
call cst ; check for keyboard key
jr z,acmd_wait2 ; no key, continue
call cin ; get key
cp 27 ; escape key?
cp cr ; enter key?
jr z,acmd_wait_z ; if so, ret immed with Z set
cp esc ; escape key?
jr nz,acmd_wait1 ; loop if not
or $FF ; signal abort
ret ; and return
jr acmd_wait_z ; and return
;
acmd_wait2:
; check for auto cmd timeout and handle if so
ld bc,(acmd_to) ; load timeout value
ld a,b ; test for
or c ; ... zero
ret z ; if so, ret with Z set
dec bc ; decrement
ld (acmd_to),bc ; resave it
ld a,(acmd_to) ; get seconds counter
or a ; test for zero
jr z,acmd_wait_z ; if done, ret with Z set
;
ld a,(acmd_to_64) ; get sub-seconds counter
dec a ; decrement counter
ld (acmd_to_64),a ; resave it
jr nz,acmd_wait3 ; skip over seconds down count
;
ld a,(acmd_to) ; get seconds counter
dec a ; decrement counter
ld (acmd_to),a ; resave it
jr acmd_wait0 ; and restart loop
;
acmd_wait3:
ld de,976 ; 16us * 976 -> 1/64th of a second.
call vdelay ; 15.6ms delay, 64 in 1 second
jr acmd_wait1 ; loop
;
acmd_wait_z:
; clear the downcounter message from screen, then return
push af ; save flags
ld a,13 ; start of line
call cout ; do it
ld a,' ' ; space char
ld b,60 ; send 60 of them
acmd_wait_z2:
call cout ; print space char
djnz acmd_wait_z2 ; loop till done
pop af ; restore flags
ret ; and return
;
;=======================================================================
; Boot Loader Prompt Processing
;=======================================================================
@ -522,10 +539,9 @@ concmd:
;
autocmd:
; Copy autocmd string to buffer and process it
call nl2 ; formatting
ld hl,str_autoboot ; auto command prefix
call pstr ; show it
ld hl,acmd_buf ; auto cmd string
ld hl,acmd_buf ; auto cmd string
call pstr ; display it
ld hl,acmd_buf ; auto cmd string
ld de,cmdbuf ; cmd buffer adr
@ -537,13 +553,23 @@ runcmd:
ld de,cmdbuf ; point to start of buf
call skipws ; skip whitespace
or a ; check for null terminator
ret z ; if empty line, just bail out
;;;ret z ; if empty line, just bail out
jr nz,runcmd0 ; if char, process cmd line
;
; if empty cmd line, use default
ld hl,defcmd_buf ; def cmd string
ld de,cmdbuf ; cmd buffer adr
ld bc,defcmd_len ; auto cmd length
ldir ; copy to command line buffer
ld de,cmdbuf ; point to start of buf
call skipws ; skip whitespace
or a ; check for null terminator
ret z ; if empty line, bail out
;
runcmd0:
ld a,(de) ; get character
call upcase ; make upper case
;
; Auto Command (probably) from NVR default Disk Boot
cp '~' ; We use the "~" char to signal, DISK
jp z,diskboot ; noting the - (bootunit) (bootslice) have inited.
; Attempt built-in commands
cp 'H' ; H = display help
jp z,help ; if so, do it
@ -623,21 +649,7 @@ fp_romboot:
ld hl,fpapps ; rom apps cmd char list
call addhla ; point to the right one
ld a,(hl) ; get it
;
; Attempt ROM application launch
ld ix,(ra_tbl_loc) ; point to start of ROM app tbl
ld c,a ; save command in C
fp_romboot1:
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,fp_romboot1 ; loop till done
ret ; no match, return
jp romboot ; do it
;
fpapps .db "MBFPCZNU"
;
@ -730,10 +742,10 @@ fp_flopboot2:
;
runnvr:
ld bc,BC_SYSGET_SWITCH ; HBIOS SysGet NVRAM Switches
ld d,NVSW_DEFBOOT ; Read Default Boot (disk/Rom) switch
ld d,NVSW_BOOTOPTS ; Read Boot options (disk/Rom) switch
rst 08
ld a,h
and DBOOT_ROM ; Get the Default Boot from ROM Flag
and BOPTS_ROM ; Get the Boot Opts ROM Flag
jr nz,nvrsw_rom ; IF Set as ROM App BOOT, otherwise Disk
;
nvrsw_disk:
@ -746,21 +758,7 @@ nvrsw_disk:
nvrsw_rom:
; Attempt ROM application launch
ld a,l ; Load the ROM app selection to A
; *** Below is duplicated from fp_romboot, but fp_romboot
; is not always included. Need to clean this up someday.
ld ix,(ra_tbl_loc) ; point to start of ROM app tbl
ld c,a ; save command in C
nvrsw_rom1:
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,nvrsw_rom1 ; loop till done
ret ; no match, return
jp romboot ; do it
;
#endif
;
@ -1119,6 +1117,28 @@ romload1:
jp (hl) ; go
;
;=======================================================================
; Boot ROM Application
;=======================================================================
;
; Enter with ROM application menu selection (command) character in A
;
romboot:
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:
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,romboot1 ; loop till done
ret ; no match, just return
;
;=======================================================================
; Boot disk unit/slice
;=======================================================================
;
@ -2434,12 +2454,12 @@ acmd_buf .text AUTO_CMD ; auto cmd string
.db 0
acmd_len .equ $ - acmd_buf ; len of auto cmd
acmd_act .dw $00 ; inactive by default
#if (BOOT_TIMEOUT > 0)
acmd_to .dw BOOT_TIMEOUT * 64 ; auto cmd timeout (1/64's of sec)
#else
acmd_to .dw BOOT_TIMEOUT ; auto cmd timeout -1 DISABLE, 0 IMMEDIATE
#endif
acmd_to .db BOOT_TIMEOUT ; auto cmd timeout -1 DISABLE, 0 IMMEDIATE
acmd_to_64 .db 64 ; sub-second counter for acmd_to in 1/64s
;
defcmd_buf .text BOOT_DEFAULT ; default boot cmd
.db 0
defcmd_len .equ $ - defcmd_buf ; len of def boot cmd
;
;=======================================================================
; Strings
@ -2447,9 +2467,9 @@ acmd_to .dw BOOT_TIMEOUT ; auto cmd timeout -1 DISABLE, 0 IMMEDIATE
;
str_banner .db PLATFORM_NAME," Boot Loader",0
str_appboot .db " (App Boot)",0
str_autoboot .db "AutoBoot: ",0
str_autoact1 .db "\r\n\r\nAutoBoot in ",0
str_autoact2 .db " Seconds (<esc> aborts)...",0
str_autoboot .db "\rAutoBoot: ",0
str_autoact1 .db "\rAutoBoot in ",0
str_autoact2 .db " Seconds (<esc> aborts, <enter> now)... ",0
str_prompt .db "Boot [H=Help]: ",0
str_bs .db bs,' ',bs,0
str_reboot .db "\r\n\r\nRestarting System...",0

106
Source/HBIOS/sysconf.asm

@ -208,8 +208,8 @@ helpandloop: ; HELP MENU
; the folloiwng is just testing a single charater
cp 'A' ; Auto Boot help menu
JP Z,HELP_AB
cp 'D' ; Default Boot help menu
JP Z,HELP_DB
cp 'B' ; Boot Options help menu
JP Z,HELP_BO
;
printmainhelp:
ld de,MSG_MENU ; nothing found Print the Main Menu
@ -237,8 +237,8 @@ setvalueandloop:
; the folloiwng is just testing a single charater
cp 'A' ; Auto Boot help menu
JP Z,SET_AB
cp 'D' ; Default Boot help menu
JP Z,SET_DB
cp 'B' ; Boot Options help menu
JP Z,SET_BO
;
setvalueerror:
ld de,MSG_QUESTION ; nothing found Print the Main Menu
@ -269,8 +269,8 @@ PRT_STATUS:
;
; print invdividual stats, on all per switch
;
CALL STAT_DEFBOOT
CALL STAT_AUTOB
CALL STAT_BO
CALL STAT_AB
;
; end individual stats
;
@ -297,31 +297,31 @@ STAT_NOTFOUND1:
; Specific Switches Below
; ======================================================================
;
; DEFAULT BOOT
; BOOT OPTIONS
; Byte 1: (L)
; Bit 7-0 DISK BOOT SLice Number to Boot -> default = 0
; Bit 7-0 ROM BOOT (alpha character) Application to boot -> default = 0 translates to "H"
; Byte 2: (H)
; Bit 7 - DISK/ROM - Disk or Rom Boot -> Default=ROM (BOOT_DEFAULT is Numeric/Alpha)
; Bit 7 - DISK/ROM - Disk or Rom Boot -> Default=ROM (AUTO_CMD is Numeric/Alpha)
; Bit 6-0 - DISK BOOT Disk Unit to Boot (0-127) -> default = 0
;
; PRINT CURRENT SWITCH VALUE
;
STAT_DEFBOOT:
STAT_BO:
LD BC,BC_SYSGET_SWITCH
LD D,NVSW_DEFBOOT
LD D,NVSW_BOOTOPTS
RST 08 ; Should return auto Boot in HL
RET NZ ; return if error
LD de,MSG_DEFBOOT
LD de,MSG_BO
CALL prtstr
LD A,H ; Byte 2
AND DBOOT_ROM ; DISK/ROM
JR NZ,STAT_AUTOROM ; is it ROM
STAT_AUTODISK:
AND BOPTS_ROM ; DISK/ROM
JR NZ,STAT_BO_ROM ; is it ROM
STAT_BO_DISK:
LD de,MSG_DISK ; disk
CALL prtstr
LD A,H ; Byte 2
AND DBOOT_UNIT ; Unit
AND BOPTS_UNIT ; Unit
CALL prtdecb
LD de,MSG_DISK2 ; Slice
CALL prtstr
@ -330,7 +330,7 @@ STAT_AUTODISK:
LD de,MSG_DISK3 ; close bracket
CALL prtstr
RET
STAT_AUTOROM:
STAT_BO_ROM:
LD de,MSG_ROM ; ROM
CALL prtstr
LD A,L ; ROM APP
@ -341,67 +341,67 @@ STAT_AUTOROM:
;
; SET SWITCH VALUE
;
SET_DB:
SET_BO:
CALL findskipws ; skip over WS to first char
JR z,SET_DB_ERR ; if empty line, print main help
JR z,SET_BO_ERR ; if empty line, print main help
call upcase
cp 'R' ; ROM
JR Z,SET_DB_ROM
JR Z,SET_BO_ROM
cp 'D' ; DISK
JR Z,SET_DB_DISK
JR SET_DB_ERR
SET_DB_ROM:
JR Z,SET_BO_DISK
JR SET_BO_ERR
SET_BO_ROM:
CALL findskipcomma
CALL skipws
JR z,SET_DB_ERR ; if empty line, print main help
JR z,SET_BO_ERR ; if empty line, print main help
LD L,A ; LOW BYTE ; next CHAR is the ROM App Name
LD A,DBOOT_ROM
LD H,A ; HIGH BYTE, has constant. DBOOT_ROM = $80
JR SET_DB_SAVE ; SAVE
SET_DB_DISK:
LD A,BOPTS_ROM
LD H,A ; HIGH BYTE, has constant. ABOOT_ROM = $80
JR SET_BO_SAVE ; SAVE
SET_BO_DISK:
CALL findskipcomma
CALL skipws
JR z,SET_DB_ERR ; if empty line, print main help
JR z,SET_BO_ERR ; if empty line, print main help
CALL getnum ; next CHAR is the DISK UNIT
JR C,SET_DB_ERR ; overflow
JR C,SET_BO_ERR ; overflow
BIT 7,A ; is > 127
JR NZ, SET_DB_ERR
JR NZ, SET_BO_ERR
LD H,A ; HIGH BYTE, has disk unit < $80
CALL findskipcomma
CALL skipws
JR z,SET_DB_ERR ; if empty line, print main help
JR z,SET_BO_ERR ; if empty line, print main help
CALL getnum ; next CHAR is the SLICE
JR C,SET_DB_ERR ; overflow
JR C,SET_BO_ERR ; overflow
LD L,A ; LOW BYTE, has the slice number
;JR SET_DB_SAVE ; SAVE - Fall Through
SET_DB_SAVE:
LD D,NVSW_DEFBOOT ; DEFAULT BOOT
;JR SET_BO_SAVE ; SAVE - Fall Through
SET_BO_SAVE:
LD D,NVSW_BOOTOPTS ; BOOT OPTIONS
JP setvaluesave ; SAVE THE VALUE
SET_DB_ERR:
SET_BO_ERR:
JP setvalueerror ; ERROR. Added this so can use JR above
;
; PRINT HELP TEST FOR SWITCH
;
HELP_DB:
ld de,MSG_DEFB_H
HELP_BO:
ld de,MSG_BO_H
JP printhelp
;
MSG_DEFBOOT .DB CR,LF, " [DB] / Default Boot: ",0
MSG_BO .DB CR,LF, " [BO] / Boot Options: ",0
MSG_DISK .DB "Disk (Unit = ",0
MSG_DISK2 .DB ", Slice = ",0
MSG_DISK3 .DB ")",0
MSG_ROM .DB "ROM (App = \"",0
MSG_ROM2 .DB "\")",0
;
MSG_DEFB_H .DB "\r\nDefault Boot - Disk or Rom App (DB):\r\n"
.DB " DB [R|D],[{romapp}|{unit},{slice}]\r\n"
.DB " e.g. S DB D,2,14 ; Disk Boot, unit 2, slice 14\r\n"
.DB " S DB R,M ; Rom Application 'M'onitor\r\n"
MSG_BO_H .DB "\r\nBoot Options - Disk or Rom App (BO):\r\n"
.DB " BO [R|D],[{romapp}|{unit},{slice}]\r\n"
.DB " e.g. S BO D,2,14 ; Disk Boot, unit 2, slice 14\r\n"
.DB " S BO R,M ; Rom Application 'M'onitor\r\n"
.DB " Note: Disk: Unit (0-127); Slice (0-255)\r\n",0
;
;=======================================================================
;
; AUTO BOOT
; AUTO BOOT CONFIG
; Byte 0: (L)
; Bit 7-6 - Reserved
; Bit 5 - AUTO BOOT Auto boot, default=false (i.e. BOOT_TIMEOUT != -1)
@ -410,7 +410,7 @@ MSG_DEFB_H .DB "\r\nDefault Boot - Disk or Rom App (DB):\r\n"
;
; PRINT CURRENT SWITCH VALUE
;
STAT_AUTOB:
STAT_AB:
LD BC,BC_SYSGET_SWITCH
LD D,NVSW_AUTOBOOT
RST 08 ; Should return auto Boot in HL
@ -420,14 +420,14 @@ STAT_AUTOB:
LD A,L ; Byte 1
LD de,MSG_DISABLED
AND ABOOT_AUTO ; enabled
JR Z, STAT_AUTOB1 ; disabled
JR Z, STAT_AB1 ; disabled
LD de,MSG_ENABLED ; enabled
CALL prtstr
LD A,L ; Byte 1
AND ABOOT_TIMEOUT ; timeout
CALL prtdecb ; print timeout
LD de,MSG_ENABLED2 ; and closing bracket
STAT_AUTOB1:
STAT_AB1:
CALL prtstr
RET
;
@ -458,7 +458,7 @@ SET_AB_DISAB:
LD L,0
;JR SET_AB_SAVE ; SAVE - Fall Through
SET_AB_SAVE:
LD D,NVSW_AUTOBOOT ; AUTO BOOT
LD D,NVSW_AUTOBOOT ; AUTO BOOT CONFIG
JP setvaluesave ; SAVE THE VALUE
SET_AB_ERR:
JP setvalueerror ; ERROR. Added this so can use JR above
@ -466,7 +466,7 @@ SET_AB_ERR:
; PRINT HELP TEST FOR SWITCH
;
HELP_AB:
ld de,MSG_AUTOB_H
ld de,MSG_AB_H
JP printhelp
;
MSG_AUTOB: .DB CR,LF," [AB] / Auto Boot: ",0
@ -474,7 +474,7 @@ MSG_ENABLED: .DB "Enabled (Timeout = ",0
MSG_ENABLED2: .DB ")",0
MSG_DISABLED: .DB "Disabled",0
;
MSG_AUTOB_H .DB "\r\nAutomatic Boot (AB):\r\n"
MSG_AB_H .DB "\r\nAutomatic Boot (AB):\r\n"
.DB " AB <D|E>[,{timeout}]\r\n"
.DB " e.g. S AB E,3 ; enabled (show menu) with 3 second timout before boot\r\n"
.DB " S AB E,0 ; enabled with immediate effect, bypass menu\r\n"
@ -504,7 +504,7 @@ str_banner .db "\r\n"
MSG_MENU .DB "\r\n"
.DB "Commands:\r\n"
.DB " (P)rint - Display Current settings\r\n"
.DB " (S)et {SW},{val}[,{val}[,{val}]]- Set a switch value(s)\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"
@ -1031,12 +1031,12 @@ stack .equ $ ; stack top
SLACK .EQU (NVR_END - $)
;
#IF (SLACK < 0)
.ECHO "*** NVRCONFIG APP IS TOO BIG!!!\n"
.ECHO "*** SYSCONF APP IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR
#endif
;
.FILL SLACK,$00
.ECHO "NVRCONFIG space remaining: "
.ECHO "SYSCONF space remaining: "
.ECHO SLACK
.ECHO " bytes.\n"
;

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 5
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.5.0-dev.96"
#DEFINE BIOSVER "3.5.0-dev.98"
#define rmj RMJ
#define rmn RMN
#define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 5
rup equ 0
rtp equ 0
biosver macro
db "3.5.0-dev.96"
db "3.5.0-dev.98"
endm

Loading…
Cancel
Save