mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-07 15:03:13 -06:00
Compare commits
4 Commits
v3.5.0-dev
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d93e639e4b | ||
|
|
b633c309f4 | ||
|
|
a00cf821c7 | ||
|
|
d13ea96f35 |
8
.github/workflows/commit.yml
vendored
8
.github/workflows/commit.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
find -type f -exec md5sum '{}' \;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-Linux
|
||||
path: .
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
find . -type f -exec md5 -r -- '{}' +;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-MacOS
|
||||
path: .
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
||||
@@ -5,6 +5,8 @@ Version 3.5
|
||||
- WBW: Add VT-100 graphics char selection to Propeller firmware
|
||||
- WBW: Allow all lines of VGA display to be used on Propeller firmware
|
||||
- WBW: Allow front panel LED/Switch bits to be inverted in config
|
||||
- WBW: Add API to expose application banks available
|
||||
- WBW: Added console takeover at boot loader prompt
|
||||
|
||||
Version 3.4
|
||||
-----------
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.5 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
24 Jan 2024
|
||||
04 Feb 2024
|
||||
|
||||
# Overview
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
24 Jan 2024
|
||||
04 Feb 2024
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -670,11 +670,10 @@ by this function. The function typically just records the sector
|
||||
address for subsequent I/O function calls.
|
||||
|
||||
The double-word Sector Address (DEHL) can represent either a Logical
|
||||
Block Address (LBA) or a Cylinder/Head/Sector (CHS). If the high bit of
|
||||
register D is set, then an LBA value is specified. Otherwise, the
|
||||
value is CHS.
|
||||
Block Address (LBA) or a Cylinder/Head/Sector (CHS). Bit 7 of D is
|
||||
set (1) for LBA mode and cleared (0) for CHS mode.
|
||||
|
||||
For LBA mode operation, the high bit is cleared and the entire
|
||||
For LBA mode operation, the high bit is set and the rest of the
|
||||
double-word is then treated as the logical sector address.
|
||||
|
||||
For CHS mode operation, the Sector Address (DEHL) registers are
|
||||
@@ -1992,11 +1991,11 @@ If the system is using interrupt mode 1 interrupts, the you **must**
|
||||
take steps to ensure interrupts are properly handled. You generally
|
||||
have two choices:
|
||||
|
||||
- Disable interrupts while the normal user bank is switched out
|
||||
- Duplicate the interrupt mode 1 vector from the normal user bank
|
||||
- Disable interrupts while the User Bank is switched out
|
||||
- Duplicate the interrupt mode 1 vector from the User Bank
|
||||
into the bank you are switching to.
|
||||
|
||||
If the normal user bank has been switched out, you will not be able to
|
||||
If the User Bank has been switched out, you will not be able to
|
||||
invoke the HBIOS API functions using an `RST 08` instruction. You can
|
||||
use the alternative mechanism using `CALL $FFF0` as described in
|
||||
[Invocation].
|
||||
@@ -2398,7 +2397,8 @@ concept of allocation of application banks must be implemented within
|
||||
the OS or application.
|
||||
|
||||
This function does not change the current bank selected. You must use
|
||||
[Function 0xF2 -- System Set Bank (SYSSETBNK)] or ???? for this. Be sure
|
||||
[Function 0xF2 -- System Set Bank (SYSSETBNK)] or the proxy function
|
||||
[Bank Select (BNKSEL)] for this. Be sure
|
||||
to observe the warnings in the description of this function.
|
||||
|
||||
### Function 0xF9 -- System Set (SYSSET)
|
||||
@@ -2629,17 +2629,32 @@ provided.
|
||||
## Proxy Functions
|
||||
|
||||
The following special functions are implemented inside of the HBIOS
|
||||
proxy area at the top of RAM. They do not cause a bank switch are are,
|
||||
proxy area at the top of RAM. They do not cause a bank switch and are,
|
||||
therefore, much faster than their corresponding HBIOS API functions.
|
||||
|
||||
The functions are invoked via the following dedicated jump table:
|
||||
|
||||
| **Function** | **Address** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| Invoke HBIOS Function (INVOKE) | 0xFFF0 |
|
||||
| Bank Select (BNKSEL) | 0xFFF3 |
|
||||
| Bank Copy (BNKCPY) | 0xFFF6 |
|
||||
| Bank Call (BNKCALL) | 0xFFF9 |
|
||||
| **Function** | **Address** | ** Equate ** |
|
||||
|----------------------------------------|---------------|------------------------|
|
||||
| Invoke HBIOS Function (INVOKE) | 0xFFF0 | HB_INVOKE |
|
||||
| Bank Select (BNKSEL) | 0xFFF3 | HB_BNKSEL |
|
||||
| Bank Copy (BNKCPY) | 0xFFF6 | HB_BNKCPY |
|
||||
| Bank Call (BNKCALL) | 0xFFF9 | HB_BNKCALL |
|
||||
|
||||
The function addresses are also defined as equates in hbios.inc. It
|
||||
is suggested that you use the equates when possible.
|
||||
|
||||
To use the functions, you may either call or jump to them. Some
|
||||
examples:
|
||||
|
||||
```
|
||||
CALL $FFF0
|
||||
JP $FFF3
|
||||
CALL HB_BNKCPY
|
||||
```
|
||||
|
||||
These functions are inherently dangerous and generally not value
|
||||
checked. Use with extreme caution.
|
||||
|
||||
### Invoke HBIOS Function (INVOKE)
|
||||
|
||||
@@ -2651,9 +2666,6 @@ above. To put it another way, `CALL $FFF0` is equivalent to `RST 08`,
|
||||
but it can be used in any scenario when the normal bank is not
|
||||
selected.
|
||||
|
||||
These functions are inherently dangerous and generally not value
|
||||
checked. Use with extreme caution.
|
||||
|
||||
### Bank Select (BNKSEL)
|
||||
|
||||
**Address 0xFFF3**
|
||||
@@ -2663,9 +2675,9 @@ checked. Use with extreme caution.
|
||||
| A: Bank ID | |
|
||||
|
||||
This function will select the memory bank identified by Bank ID (A).
|
||||
All registers are preserved.
|
||||
Register AF is destroyed. All other registers are preserved.
|
||||
|
||||
The warnings described in [Function 0xF3 -- System Get Bank (SYSGETBNK)]
|
||||
The warnings described in [Function 0xF2 -- System Set Bank (SYSSETBNK)]
|
||||
should be observed.
|
||||
|
||||
### Bank Copy (BNKCPY)
|
||||
@@ -2716,7 +2728,7 @@ Register usage is determined by the routine that is called.
|
||||
|
||||
Since a different bank will be selected while the target function is
|
||||
active, the warnings described in
|
||||
[Function 0xF3 -- System Get Bank (SYSGETBNK)] should be observed.
|
||||
[Function 0xF2 -- System Set Bank (SYSSETBNK)] should be observed.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
|
||||
@@ -897,6 +897,31 @@ The use of diagnostic levels above 4 are really intended only for
|
||||
software developers. I do not recommend changing this under
|
||||
normal circumstances.
|
||||
|
||||
## Console Takeover
|
||||
|
||||
If your system has more than one character unit, then the Boot Loader
|
||||
will "poll" all of the character devices for a request to make any of
|
||||
the alternate character devices the active console. This is called a
|
||||
console takeover request. This functionality must be enabled in the ROM
|
||||
build configuration, but it is for all standard ROMs.
|
||||
|
||||
To request a console takeover, you just press the \<space\> character
|
||||
at the port or terminal that you want to move the console to. The
|
||||
terminal or communication software **must** be configured for the
|
||||
default serial port speed and data bits for this to work.
|
||||
|
||||
A takeover request is only possible while the active console is
|
||||
showing the Boot Loader prompt prior to typing any characters at
|
||||
the active console. In other words, once you start typing at the
|
||||
active console prompt, the takeover polling is suspended. If you have
|
||||
started typing characters, you can press \<enter\> at the active
|
||||
console to get a new Boot Loader prompt and reactivate the polling.
|
||||
|
||||
If you have built a custom ROM that includes an automatic boot
|
||||
command with a timeout, then performing a console takeover will
|
||||
abort the timeout process and the automatic command will not be
|
||||
performed.
|
||||
|
||||
## Front Panel
|
||||
|
||||
RomWBW supports the concept of a simple front panel. The following
|
||||
@@ -924,7 +949,8 @@ output on the console. The meaning of the LEDs is:
|
||||
|
||||
Once the system has booted, the LEDs are used to indicate disk device
|
||||
activity. Each LED numbered 7-0 represents disk units 7-0. As each
|
||||
disk device performs I/O, the LED will light.
|
||||
disk device performs I/O, the LED will light while the disk is active.
|
||||
This is only possible for the first 8 disk units.
|
||||
|
||||
The second row of the front panel is composed of switches that allow
|
||||
you to control a few aspects of the system startup.
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_UNSUP ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -22,6 +22,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_HILO ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_LOW ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -25,6 +25,7 @@ TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
AUTOCON .EQU TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
|
||||
@@ -440,7 +440,7 @@ HBX_INVSP .EQU $ - 2
|
||||
;
|
||||
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
;; BNKSEL - Switch Memory Bank to Bank in A.
|
||||
;; Preserve all Registers including Flags.
|
||||
;; AF is destroyed, all other registers are preserved.
|
||||
;;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
;
|
||||
HBX_BNKSEL:
|
||||
|
||||
@@ -175,6 +175,21 @@ start1:
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
; Get the current console unit
|
||||
ld b,BF_SYSPEEK ; HBIOS func: POKE
|
||||
ld d,BID_BIOS ; BIOS bank
|
||||
ld hl,HCB_LOC + HCB_CONDEV ; Con unit num in HCB
|
||||
rst 08 ; do it
|
||||
ld a,e ; put in A
|
||||
ld (curcon),a ; save it
|
||||
;
|
||||
; Get character unit count
|
||||
ld b,BF_SYSGET ; HBIOS func: SYS GET
|
||||
ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count
|
||||
rst 08 ; E := unit count
|
||||
ld a,e ; put in A
|
||||
ld (ciocnt),a ; save it
|
||||
;
|
||||
; Check for DSKY and set flag
|
||||
ld b,BF_SYSGET ; HBIOS func: get
|
||||
ld c,BF_SYSGET_DSKYCNT ; get DSKY count
|
||||
@@ -261,6 +276,13 @@ wtkey:
|
||||
jp nz,dskycmd ; if pending, do DSKY command
|
||||
#endif
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (AUTOCON)
|
||||
call conpoll ; poll for console takeover
|
||||
jp nz,docon ; if requested, takeover
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
#if (BOOT_TIMEOUT != -1)
|
||||
; check for timeout and handle auto boot here
|
||||
ld a,(acmd_act) ; get auto cmd active flag
|
||||
@@ -293,6 +315,62 @@ clrbuf1:
|
||||
ret
|
||||
;
|
||||
;=======================================================================
|
||||
; Poll character units for console takeover request
|
||||
;=======================================================================
|
||||
;
|
||||
; Poll all character units in system for a console takeover request.
|
||||
; A takeover request is just pressing <space> at the port that wants
|
||||
; to takeover. Return with ZF set if a console takeover was requested.
|
||||
; If so, the requested console unit will be recorded in (newcon).
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (AUTOCON)
|
||||
;
|
||||
conpoll:
|
||||
; save active console unit
|
||||
ld a,(curcon)
|
||||
;ld (savcon),a
|
||||
ld e,a ; save in E
|
||||
;
|
||||
; loop through all char ports
|
||||
ld a,(ciocnt) ; count of char units
|
||||
ld b,a ; use for loop counter
|
||||
ld c,0 ; init unit num
|
||||
;
|
||||
conpoll1:
|
||||
ld a,c ; next char unit to test
|
||||
cp e ; is this the active console?
|
||||
jr z,conpoll2 ; if so, don't test, move on
|
||||
ld (curcon),a ; make it current port
|
||||
call cst ; char waiting?
|
||||
jr z,conpoll2 ; if no char, move on
|
||||
call cin ; get char
|
||||
cp ' ' ; space char?
|
||||
jr nz,conpoll2 ; if not, move on
|
||||
jr conpoll3 ; space char typed, take console
|
||||
;
|
||||
conpoll2:
|
||||
inc c ; next char unit
|
||||
djnz conpoll1 ; loop till done
|
||||
xor a ; ret w/ Z for no takeover
|
||||
jr conpoll4 ; all done, no takeover
|
||||
;
|
||||
conpoll3:
|
||||
; record a new console request
|
||||
ld a,(curcon) ; record the unit
|
||||
ld (newcon),a ; ... as new console
|
||||
or $ff ; ret w/ NZ for new con req
|
||||
;
|
||||
conpoll4:
|
||||
; restore active console and exit
|
||||
ld a,e ; restore active
|
||||
ld (curcon),a ; ... console
|
||||
ret ; done, NZ if new con request
|
||||
;
|
||||
#endif
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; Process a command line from buffer
|
||||
;=======================================================================
|
||||
;
|
||||
@@ -625,14 +703,8 @@ setcon:
|
||||
jp c,err_nocon ; handle overflow error
|
||||
;
|
||||
; Check against max char unit
|
||||
push de
|
||||
push af ; save requested unit
|
||||
ld b,BF_SYSGET ; HBIOS func: SYS GET
|
||||
ld c,BF_SYSGET_CIOCNT ; HBIOS subfunc: CIO unit count
|
||||
rst 08 ; E := unit count
|
||||
pop af ; restore requested unit
|
||||
cp e ; compare
|
||||
pop de
|
||||
ld hl,ciocnt
|
||||
cp (hl)
|
||||
jp nc,err_nocon ; handle invalid unit
|
||||
ld (newcon),a ; save validated console
|
||||
;
|
||||
@@ -716,6 +788,7 @@ docon: ld hl,str_newcon ; new console msg
|
||||
call prtdecb ; print unit num
|
||||
;
|
||||
; Set console unit
|
||||
ld (curcon),a ; update loader console unit
|
||||
ld b,BF_SYSPOKE ; HBIOS func: POKE
|
||||
ld d,BID_BIOS ; BIOS bank
|
||||
ld e,a ; Char unit value
|
||||
@@ -1864,7 +1937,8 @@ cout:
|
||||
;
|
||||
; Output character to console via HBIOS
|
||||
ld e,a ; output char to E
|
||||
ld c,CIO_CONSOLE ; console unit to C
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOOUT ; HBIOS func: output char
|
||||
rst 08 ; HBIOS outputs character
|
||||
;
|
||||
@@ -1884,7 +1958,8 @@ cin:
|
||||
push hl
|
||||
;
|
||||
; Input character from console via hbios
|
||||
ld c,CIO_CONSOLE ; console unit to c
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOIN ; HBIOS func: input char
|
||||
rst 08 ; HBIOS reads character
|
||||
ld a,e ; move character to A for return
|
||||
@@ -1904,7 +1979,8 @@ cst:
|
||||
push hl
|
||||
;
|
||||
; Get console input status via HBIOS
|
||||
ld c,CIO_CONSOLE ; console unit to C
|
||||
ld a,(curcon) ; get current console
|
||||
ld c,a ; console unit to C
|
||||
ld b,BF_CIOIST ; HBIOS func: input status
|
||||
rst 08 ; HBIOS returns status in A
|
||||
;
|
||||
@@ -2417,6 +2493,13 @@ loadcnt .db 0 ; num disk sectors to load
|
||||
switches .db 0 ; front panel switches
|
||||
diskcnt .db 0 ; disk unit count value
|
||||
dskyact .db 0 ; DSKY active if != 0
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
curcon .db CIO_CONSOLE ; current console unit
|
||||
ciocnt .db 1 ; count of char units
|
||||
savcon .db 0 ; con save for conpoll
|
||||
#endif
|
||||
|
||||
;
|
||||
;=======================================================================
|
||||
; Pad remainder of ROM Loader
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#DEFINE RMN 5
|
||||
#DEFINE RUP 0
|
||||
#DEFINE RTP 0
|
||||
#DEFINE BIOSVER "3.5.0-dev.4"
|
||||
#DEFINE BIOSVER "3.5.0-dev.7"
|
||||
#define rmj RMJ
|
||||
#define rmn RMN
|
||||
#define rup RUP
|
||||
|
||||
@@ -3,5 +3,5 @@ rmn equ 5
|
||||
rup equ 0
|
||||
rtp equ 0
|
||||
biosver macro
|
||||
db "3.5.0-dev.4"
|
||||
db "3.5.0-dev.7"
|
||||
endm
|
||||
|
||||
Reference in New Issue
Block a user