Browse Source

Merge pull request #46 from wwarthen/dev

Dev
pull/317/head
b1ackmai1er 3 years ago
committed by GitHub
parent
commit
d960efdc4d
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW Disk Catalog.pdf
  3. BIN
      Doc/RomWBW Errata.pdf
  4. BIN
      Doc/RomWBW ROM Applications.pdf
  5. BIN
      Doc/RomWBW System Guide.pdf
  6. BIN
      Doc/RomWBW User Guide.pdf
  7. 2
      ReadMe.md
  8. 2
      ReadMe.txt
  9. 51
      Source/Apps/Survey/survey.mac
  10. 2
      Source/Apps/Test/Build.cmd
  11. 2
      Source/Apps/Test/Clean.cmd
  12. 2
      Source/Apps/Test/Makefile
  13. 11
      Source/Apps/Test/portscan/Build.cmd
  14. 0
      Source/Apps/Test/portscan/Clean.cmd
  15. 2
      Source/Apps/Test/portscan/Makefile
  16. 55
      Source/Apps/Test/portscan/portscan.asm
  17. 11
      Source/Apps/Test/portswp/Build.cmd
  18. 23
      Source/Doc/UserGuide.md
  19. 14
      Source/HBIOS/Config/MK4_std.asm
  20. 11
      Source/HBIOS/Config/N8_std.asm
  21. 6
      Source/HBIOS/Config/SBC_simh.asm
  22. 14
      Source/HBIOS/Config/SBC_std.asm
  23. 12
      Source/HBIOS/Config/ZETA2_std.asm
  24. 10
      Source/HBIOS/Config/ZETA_std.asm
  25. 11
      Source/HBIOS/cfg_mk4.asm
  26. 11
      Source/HBIOS/cfg_n8.asm
  27. 229
      Source/HBIOS/dbgmon.asm
  28. 3
      Source/HBIOS/hbios.asm
  29. 94
      Source/HBIOS/romldr.asm
  30. 2
      Source/ver.inc
  31. 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 ROM Applications.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** \ **RomWBW ReadMe** \
Version 3.1 Pre-release \ Version 3.1 Pre-release \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
13 Feb 2023
16 Feb 2023
# Overview # Overview

2
ReadMe.txt

@ -1,6 +1,6 @@
RomWBW ReadMe RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com) Wayne Warthen (wwarthen@gmail.com)
13 Feb 2023
16 Feb 2023

51
Source/Apps/Survey/survey.mac

@ -641,27 +641,41 @@ PORTLP:
jr nz,rd180 jr nz,rd180
; ;
; Z80 port read ; Z80 port read
; Read port using IN A,(C), push result
ld a,d ld a,d
ld c,a ld c,a
ld (pnum),a ; dynamic update
ld (pnum0a),a ; dynamic update
ld (pnum0b),a ; dynamic update
ld b,0
in a,(c) in a,(c)
push af push af
ld b,0
in a,(0FFH)
pnum equ $-1
; Read port using IN A,(port), push result
in a,(0ffh) ; IN0
pnum0a equ $-1
push af
; Read port using IN A,(port), push result
in a,(0ffh) ; IN0
pnum0b equ $-1
push af push af
jr rdz jr rdz
; ;
rd180: rd180:
; Z180 port read ; Z180 port read
; Read port using IN A,(C), push result
ld a,d ld a,d
ld c,a ld c,a
ld (pnum1),a ; dynamic update
ld (pnum1a),a ; dynamic update
ld (pnum1b),a ; dynamic update
ld b,0
in a,(c) in a,(c)
push af push af
ld b,0
; Read port using IN0 A,(port), push result
db 0EDH,038H,0FFH ; IN0 db 0EDH,038H,0FFH ; IN0
pnum1 equ $-1
pnum1a equ $-1
push af
; Read port using IN0 A,(port), push result
db 0EDH,038H,0FFH ; IN0
pnum1b equ $-1
push af push af
; ;
rdz: rdz:
@ -674,15 +688,20 @@ rdz:
ei ; interrupts back on now ei ; interrupts back on now
; ;
; port is considered inactive if values read from different port ; port is considered inactive if values read from different port
; read mechanisms differ or if the value $FF is read consistently
;
pop af
ld c,a
pop af
cp c
jr nz,NEXTPT
cp 0FFH
jr z,NEXTPT
; read mechanisms differ or if the value $FF is read consistently,
; or if the value read is equal to the port number itself
;
pop bc ; second IN0 (port) value
pop af ; first IN0 (port) valule
cp b ; same?
pop bc ; IN (C) value
jr nz,ISPORT ; if no, active running ctr port
cp b ; same?
jr nz,NEXTPT ; if not, inactive port
cp 0FFh ; pullup value???
jr z,NEXTPT ; if so, consider not active
cp d ; value same as port num???
jr z,NEXTPT ; if so, consider not active
; ;
.8080 .8080
ISPORT: ISPORT:

2
Source/Apps/Test/Build.cmd

@ -23,7 +23,7 @@ pushd ps2info && call Build || exit /b & popd
pushd 2piotst && call Build || exit /b & popd pushd 2piotst && call Build || exit /b & popd
pushd piomon && call Build || exit /b & popd pushd piomon && call Build || exit /b & popd
pushd banktest && call Build || exit /b & popd pushd banktest && call Build || exit /b & popd
pushd portswp && call Build || exit /b & popd
pushd portscan && call Build || exit /b & popd
goto :eof goto :eof

2
Source/Apps/Test/Clean.cmd

@ -20,4 +20,4 @@ pushd ps2info && call Clean || exit /b 1 & popd
pushd 2piotst && call Clean || exit /b 1 & popd pushd 2piotst && call Clean || exit /b 1 & popd
pushd piomon && call Clean || exit /b 1 & popd pushd piomon && call Clean || exit /b 1 & popd
pushd banktest && call Clean || exit /b 1 & popd pushd banktest && call Clean || exit /b 1 & popd
pushd portswp && call Clean || exit /b 1 & popd
pushd portscan && call Clean || exit /b 1 & popd

2
Source/Apps/Test/Makefile

@ -1,5 +1,5 @@
OBJECTS = OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portswp
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan
DEST = ../../../Binary/Apps/Test DEST = ../../../Binary/Apps/Test
TOOLS =../../../Tools TOOLS =../../../Tools

11
Source/Apps/Test/portscan/Build.cmd

@ -0,0 +1,11 @@
@echo off
setlocal
set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF portscan.asm portscan.com portscan.lst || exit /b
copy /Y portscan.com ..\..\..\..\Binary\Apps\Test\ || exit /b

0
Source/Apps/Test/portswp/Clean.cmd → Source/Apps/Test/portscan/Clean.cmd

2
Source/Apps/Test/portswp/Makefile → Source/Apps/Test/portscan/Makefile

@ -1,4 +1,4 @@
OBJECTS = portswp.com
OBJECTS = portscan.com
DEST = ../../../../Binary/Apps/Test DEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools TOOLS =../../../../Tools

55
Source/Apps/Test/portswp/portswp.asm → Source/Apps/Test/portscan/portscan.asm

@ -1,5 +1,5 @@
;=============================================================================== ;===============================================================================
; PORTSWP - Sweep Ports
; PORTSCAN - Sweep Ports
; ;
;=============================================================================== ;===============================================================================
; ;
@ -7,7 +7,7 @@
;_______________________________________________________________________________ ;_______________________________________________________________________________
; ;
; Usage: ; Usage:
; PORTSWP
; PORTSCAN
; ;
; Operation: ; Operation:
; Reads all ports (multiple ways) and displays values read ; Reads all ports (multiple ways) and displays values read
@ -104,10 +104,22 @@ process:
mlt de ; de = 30 if z180 mlt de ; de = 30 if z180
ld a,e ; result to A ld a,e ; result to A
cp 30 ; check if multiply happened cp 30 ; check if multiply happened
jr nz,loop ; if invalid, then Z80
jr nz,prtcpu ; if invalid, then Z80
or $FF ; flag value for Z180 or $FF ; flag value for Z180
ld (is180),a ; save it ld (is180),a ; save it
; ;
prtcpu:
ld de,msgcpu
call prtstr
ld a,(is180)
or a
ld de,msgz80
jr z,prtcpu1
ld de,msgz180
prtcpu1:
call prtstr
call crlf
;
loop: loop:
call crlf call crlf
ld a,(curport) ld a,(curport)
@ -149,7 +161,6 @@ done:
call crlf2 call crlf2
ld de,msgdone ; message to print ld de,msgdone ; message to print
call prtstr ; do it call prtstr ; do it
;
ret ; all done ret ; all done
; ;
; ;
@ -159,33 +170,28 @@ portread:
or a or a
jr nz,portread_z180 jr nz,portread_z180
; ;
portread_z80: ; user traditional "IN"
portread_z80: ; use traditional "IN"
; read port using IN <portnum> ; read port using IN <portnum>
ld a,(curport) ; get current port ld a,(curport) ; get current port
ld (port),a ; modify IN instruction
ld (pnum0),a ; modify IN instruction
nop ; defeat Z280 pipeline
nop
in a,($FF) ; read the port in a,($FF) ; read the port
port .equ $-1
pnum0 .equ $-1
ld (hl),a ; save it ld (hl),a ; save it
inc hl ; bump value list pointer inc hl ; bump value list pointer
;
; read port using IN (C)
ld a,(curport) ; get current port
ld b,0 ; in case 16 bits decoded
ld c,a ; move to reg C
in a,(c) ; read the port
ld (hl),a ; save it
inc hl ; bump value list pointer
ret
jr portread1
; ;
portread_z180: ; use "IN0" portread_z180: ; use "IN0"
; read port using IN <portnum> ; read port using IN <portnum>
ld a,(curport) ; get current port ld a,(curport) ; get current port
ld (port1),a ; modify IN instruction
ld (pnum1),a ; modify IN instruction
in0 a,($FF) ; read the port in0 a,($FF) ; read the port
port1 .equ $-1
pnum1 .equ $-1
ld (hl),a ; save it ld (hl),a ; save it
inc hl ; bump value list pointer inc hl ; bump value list pointer
; ;
portread1:
; read port using IN (C) ; read port using IN (C)
ld a,(curport) ; get current port ld a,(curport) ; get current port
ld b,0 ; in case 16 bits decoded ld b,0 ; in case 16 bits decoded
@ -575,18 +581,19 @@ stack .equ $ ; stack top
; ;
; Messages ; Messages
; ;
msgban .db "PORTSWP v1.0, 14-Feb-2023",13,10
msgban .db "PORTSCAN v1.0, 16-Feb-2023",13,10
.db "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",0 .db "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: PORTSWP",13,10
msgprm .db "Parameter error (PORTSWP /? for usage)",0
msguse .db "Usage: PORTSCAN",13,10
msgprm .db "Parameter error (PORTSCAN /? for usage)",0
msgbio .db "Incompatible BIOS or version, " msgbio .db "Incompatible BIOS or version, "
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0 .db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
str_sep .db ": ",0 str_sep .db ": ",0
; ;
;msgcur .db "Initial Bank ID = 0x",0
;msg80 .db "Hello from bank 0x80!",0
;msgxcal .db "Inter-bank procedure call test...",0
msgcpu .db "CPU is ",0
msgz80 .db "Z80",0
msgz180 .db "Z180",0
msgdone .db "End of Port Sweep",0 msgdone .db "End of Port Sweep",0
; ;
; ;
; ;

11
Source/Apps/Test/portswp/Build.cmd

@ -1,11 +0,0 @@
@echo off
setlocal
set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF portswp.asm portswp.com portswp.lst || exit /b
copy /Y portswp.com ..\..\..\..\Binary\Apps\Test\ || exit /b

23
Source/Doc/UserGuide.md

@ -3159,8 +3159,10 @@ the RomWBW HBIOS configuration.
|-------------------|---------------| |-------------------|---------------|
| ROM Image File | SBC_std.rom | | ROM Image File | SBC_std.rom |
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
| Interrupts | None |
- CPU speed is detected at startup if DS1302 RTC is active - CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 8.000 MHz assumed
- Hardware auto-detected: - Hardware auto-detected:
- Onboard DS1302 RTC - Onboard DS1302 RTC
- Onboard UART Serial Adapter - Onboard UART Serial Adapter
@ -3171,9 +3173,9 @@ the RomWBW HBIOS configuration.
- DiskIO V3 Floppy Disk Controller w/ 3.5" HD Drives - DiskIO V3 Floppy Disk Controller w/ 3.5" HD Drives
- PropIO Video, Keyboard, & SD Card - PropIO Video, Keyboard, & SD Card
- SBC V1 has a known race condition in the bank switching - SBC V1 has a known race condition in the bank switching
circuit which is likely to cause system instability. SBC
V2 does not have this issue.
circuit which is likely to cause system instability. SBC V2
does not have this issue.
`\clearpage`{=latex} `\clearpage`{=latex}
### RetroBrew Z80 SimH ### RetroBrew Z80 SimH
@ -3182,7 +3184,9 @@ the RomWBW HBIOS configuration.
|-------------------|---------------| |-------------------|---------------|
| ROM Image File | SBC_simh.rom | | ROM Image File | SBC_simh.rom |
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
| Interrupts | Mode 1 |
- System timer is generated by SimH
- Hardware auto-detected: - Hardware auto-detected:
- SimH emulated 8250 Serial Adapter - SimH emulated 8250 Serial Adapter
- SimH emulated hard disk drives - SimH emulated hard disk drives
@ -3196,8 +3200,10 @@ the RomWBW HBIOS configuration.
|-------------------|---------------| |-------------------|---------------|
| ROM Image File | ZETA_std.rom | | ROM Image File | ZETA_std.rom |
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
| Interrupts | None |
- CPU speed is detected at startup if DS1302 RTC is active - CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 20.000 MHz assumed
- Hardware auto-detected: - Hardware auto-detected:
- Onboard DS1302 RTC - Onboard DS1302 RTC
- Onboard UART Serial Adapter - Onboard UART Serial Adapter
@ -3218,6 +3224,7 @@ the RomWBW HBIOS configuration.
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
- CPU speed is detected at startup if DS1302 RTC is active - CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 20.000 MHz assumed
- System timer is generated by onboard CTC - System timer is generated by onboard CTC
- Hardware auto-detected: - Hardware auto-detected:
- Onboard DS1302 RTC - Onboard DS1302 RTC
@ -3240,8 +3247,10 @@ the RomWBW HBIOS configuration.
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
- CPU speed is detected at startup if DS1302 RTC is active - CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 18.432 MHz assumed
- System timer is generated by Z180 CPU - System timer is generated by Z180 CPU
- Hardware auto-detected: - Hardware auto-detected:
- Onboard DS1302 RTC
- Onboard Z180 ASCI Serial Ports - Onboard Z180 ASCI Serial Ports
- Onboard Floppy Disk Controller w/ 3.5" HD Drives - Onboard Floppy Disk Controller w/ 3.5" HD Drives
- Onboard TMS9918 Video Controller - Onboard TMS9918 Video Controller
@ -3257,18 +3266,22 @@ the RomWBW HBIOS configuration.
|-------------------|---------------| |-------------------|---------------|
| ROM Image File | MK4_std.rom | | ROM Image File | MK4_std.rom |
| Console Baud Rate | 38400 | | Console Baud Rate | 38400 |
| Interrupts | Mode 2 |
- CPU speed is detected at startup if DS1302 RTC is active - CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 18.432 MHz assumed
- System timer is generated by Z180 CPU - System timer is generated by Z180 CPU
- Hardware auto-detected: - Hardware auto-detected:
- Onboard DS1302 RTC
- Onboard Z180 ASCI Serial Ports - Onboard Z180 ASCI Serial Ports
- UART Serial Interfaces (CAS, MFP, UART4)
- CVDU Display Adapter
- VGA3 Display Adapter
- Onboard SD Card Interface via CSIO - Onboard SD Card Interface via CSIO
- Onboard IDE CF Card Interface - Onboard IDE CF Card Interface
- DIDE Floppy Disk Controller w/ 3.5" HD Drives - DIDE Floppy Disk Controller w/ 3.5" HD Drives
- DIDE IDE Hard Disk Controller - DIDE IDE Hard Disk Controller
- PropIO Video, Keyboard, & SD Card - PropIO Video, Keyboard, & SD Card
- CVDU Display Adapter
- VGA3 Display Adapter
`\clearpage`{=latex} `\clearpage`{=latex}

14
Source/HBIOS/Config/MK4_std.asm

@ -26,23 +26,31 @@
; ;
#include "cfg_mk4.asm" #include "cfg_mk4.asm"
; ;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2 Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3) Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3) Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
; ;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTCAS .SET TRUE ; UART: AUTO-DETECT ECB CASSETTE UART
UARTMFP .SET TRUE ; UART: AUTO-DETECT MF/PIC UART
UART4 .SET TRUE ; UART: AUTO-DETECT 4UART UART
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
; ;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
; ;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
; ;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM) PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC] SDMODE .SET SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC]
; ;

11
Source/HBIOS/Config/N8_std.asm

@ -26,12 +26,19 @@
; ;
#include "cfg_n8.asm" #include "cfg_n8.asm"
; ;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2 Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3) Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3) Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
; ;
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
; ;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
; ;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDMODE .SET SDMODE_CSIO ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDMODE .SET SDMODE_CSIO ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
;
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER

6
Source/HBIOS/Config/SBC_simh.asm

@ -30,9 +30,7 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
; ;
HTIMENABLE .SET TRUE ; ENABLE SIMH TIMER SUPPORT HTIMENABLE .SET TRUE ; ENABLE SIMH TIMER SUPPORT
; ;
SIMRTCENABLE .SET TRUE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTSBCFORCE .SET TRUE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)
; ;
HDSKENABLE .SET TRUE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM) HDSKENABLE .SET TRUE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
;
UARTSBCFORCE .SET TRUE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)

14
Source/HBIOS/Config/SBC_std.asm

@ -26,19 +26,29 @@
; ;
#include "cfg_sbc.asm" #include "cfg_sbc.asm"
; ;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
; ;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTSBC .SET TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
UARTCAS .SET TRUE ; UART: AUTO-DETECT ECB CASSETTE UART
UARTMFP .SET TRUE ; UART: AUTO-DETECT MF/PIC UART
UART4 .SET TRUE ; UART: AUTO-DETECT 4UART UART
UARTRC .SET FALSE ; UART: AUTO-DETECT RC UART
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM) VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM) CVDUENABLE .SET TRUE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM) VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
; ;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM) FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC] FDMODE .SET FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
; ;
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.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 FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC] SDMODE .SET SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC]
; ;

12
Source/HBIOS/Config/ZETA2_std.asm

@ -26,12 +26,18 @@
; ;
#include "cfg_zeta2.asm" #include "cfg_zeta2.asm"
; ;
;UARTCFG .SET UARTCFG | SER_RTS
;
CPUOSC .SET 20000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
; ;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;UARTCFG .SET UARTCFG | SER_RTS
UARTSBC .SET TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
; ;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
; ;
PPPENABLE .SET TRUE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .SET TRUE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)

10
Source/HBIOS/Config/ZETA_std.asm

@ -26,10 +26,18 @@
; ;
#include "cfg_zeta.asm" #include "cfg_zeta.asm"
; ;
CPUOSC .SET 20000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
; ;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;UARTCFG .SET UARTCFG | SER_RTS
UARTSBC .SET TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
; ;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM) SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
; ;
PPPENABLE .SET TRUE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM) PPPENABLE .SET TRUE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)

11
Source/HBIOS/cfg_mk4.asm

@ -140,6 +140,17 @@ Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
; ;
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
; ;
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
; ;

11
Source/HBIOS/cfg_n8.asm

@ -142,6 +142,17 @@ Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM) ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
; ;
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM) SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCLK .EQU (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
; ;
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
; ;

229
Source/HBIOS/dbgmon.asm

@ -40,8 +40,6 @@ ENA_XM .EQU TRUE ; INCLUDE XMODEM IF SPACE AVAILABLE
; ;
ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION ENA_MBC6502 .EQU FALSE ; ENABLE OR DISABLE MBC6502 OPTION
; ;
#INCLUDE "util.asm"
;
;__UART_ENTRY_________________________________________________________________ ;__UART_ENTRY_________________________________________________________________
; ;
; SERIAL MONITOR STARTUP ; SERIAL MONITOR STARTUP
@ -1846,6 +1844,233 @@ DSKY_ENTRY:
; ;
#ENDIF #ENDIF
; ;
;==================================================================================================
; UTILITY FUNCTIONS
;==================================================================================================
;
;
CHR_BEL .EQU 07H
CHR_CR .EQU 0DH
CHR_LF .EQU 0AH
CHR_BS .EQU 08H
CHR_ESC .EQU 1BH
;
;__________________________________________________________________________________________________
;
; UTILITY PROCS TO PRINT SINGLE CHARACTERS WITHOUT TRASHING ANY REGISTERS
;
PC_SPACE:
PUSH AF
LD A,' '
JR PC_PRTCHR
PC_COLON:
PUSH AF
LD A,':'
JR PC_PRTCHR
PC_CR:
PUSH AF
LD A,CHR_CR
JR PC_PRTCHR
PC_LF:
PUSH AF
LD A,CHR_LF
JR PC_PRTCHR
PC_PRTCHR:
CALL COUT
POP AF
RET
NEWLINE2:
CALL NEWLINE
NEWLINE:
CALL PC_CR
CALL PC_LF
RET
PRTSTR:
LD A,(HL)
INC HL
CP '$'
RET Z
CALL COUT
JR PRTSTR
;
; PRINT THE HEX BYTE VALUE IN A
;
PRTHEXBYTE:
PUSH AF
PUSH DE
CALL HEXASCII
LD A,D
CALL COUT
LD A,E
CALL COUT
POP DE
POP AF
RET
;
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
;
HEXASCII:
LD D,A
CALL HEXCONV
LD E,A
LD A,D
RLCA
RLCA
RLCA
RLCA
CALL HEXCONV
LD D,A
RET
;
; CONVERT LOW NIBBLE OF A TO ASCII HEX
;
HEXCONV:
AND 0FH ;LOW NIBBLE ONLY
ADD A,90H
DAA
ADC A,40H
DAA
RET
;
; ADD HL,A
;
; A REGISTER IS DESTROYED!
;
ADDHLA:
ADD A,L
LD L,A
RET NC
INC H
RET
;
; DELAY 16US (CPU SPEED COMPENSATED) INCUDING CALL/RET INVOCATION
; REGISTER A AND FLAGS DESTROYED
; NO COMPENSATION FOR Z180 MEMORY WAIT STATES
; THERE IS AN OVERHEAD OF 3TS PER INVOCATION
; IMPACT OF OVERHEAD DIMINISHES AS CPU SPEED INCREASES
;
; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US + 3TS DELAY
; NOTE: CPUSCL MUST BE >= 1!
;
; EXAMPLE: 8MHZ CPU (DELAY GOAL IS 16US)
; LOOP = ((6 * 16) - 5) = 91TS
; TOTAL COST = (91 + 40) = 131TS
; ACTUAL DELAY = (131 / 8) = 16.375US
;
; --- TOTAL COST = (LOOP COST + 40) TS -----------------+
DELAY: ; 17TS (FROM INVOKING CALL) |
LD A,(CPUSCL) ; 13TS |
; |
DELAY1: ; |
; --- LOOP = ((CPUSCL * 16) - 5) TS ------------+ |
DEC A ; 4TS | |
#IF (BIOS == BIOS_WBW) ; | |
#IF (CPUFAM == CPU_Z180) ; | |
OR A ; +4TS FOR Z180 | |
#ENDIF ; | |
#ENDIF ; | |
JR NZ,DELAY1 ; 12TS (NZ) / 7TS (Z) | |
; ----------------------------------------------+ |
; |
RET ; 10TS (RETURN) |
;-------------------------------------------------------+
;
; DELAY 16US * DE (CPU SPEED COMPENSATED)
; REGISTER DE, A, AND FLAGS DESTROYED
; NO COMPENSATION FOR Z180 MEMORY WAIT STATES
; THERE IS A 27TS OVERHEAD FOR CALL/RET PER INVOCATION
; IMPACT OF OVERHEAD DIMINISHES AS DE AND/OR CPU SPEED INCREASES
;
; CPU SCALER (CPUSCL) = (CPUHMZ - 2) FOR 16US OUTER LOOP COST
; NOTE: CPUSCL MUST BE > 0!
;
; EXAMPLE: 8MHZ CPU, DE=6250 (DELAY GOAL IS .1 SEC OR 100,000US)
; INNER LOOP = ((16 * 6) - 5) = 91TS
; OUTER LOOP = ((91 + 37) * 6250) = 800,000TS
; ACTUAL DELAY = ((800,000 + 27) / 8) = 100,003US
;
; --- TOTAL COST = (OUTER LOOP + 27) TS ------------------------+
VDELAY: ; 17TS (FROM INVOKING CALL) |
; |
; --- OUTER LOOP = ((INNER LOOP + 37) * DE) TS ---------+ |
LD A,(CPUSCL) ; 13TS | |
; | |
VDELAY1: ; | |
; --- INNER LOOP = ((CPUSCL * 16) - 5) TS ------+ | |
#IF (BIOS == BIOS_WBW) ; | | |
#IF (CPUFAM == CPU_Z180) ; | | |
OR A ; +4TS FOR Z180 | | |
#ENDIF ; | | |
#ENDIF ; | | |
DEC A ; 4TS | | |
JR NZ,VDELAY1 ; 12TS (NZ) / 7TS (Z) | | |
; ----------------------------------------------+ | |
; | |
DEC DE ; 6TS | |
#IF (BIOS == BIOS_WBW) ; | | |
#IF (CPUFAM == CPU_Z180) ; | |
OR A ; +4TS FOR Z180 | |
#ENDIF ; | |
#ENDIF ; | |
LD A,D ; 4TS | |
OR E ; 4TS | |
JP NZ,VDELAY ; 10TS | |
;-------------------------------------------------------+ |
; |
RET ; 10TS (FINAL RETURN) |
;---------------------------------------------------------------+
;
; DELAY ABOUT 0.5 SECONDS
; 500000US / 16US = 31250
;
LDELAY:
PUSH AF
PUSH DE
LD DE,31250
CALL VDELAY
POP DE
POP AF
RET
;
; INITIALIZE DELAY SCALER BASED ON OPERATING CPU SPEED
; ENTER WITH A = CPU SPEED IN MHZ
;
DELAY_INIT:
CP 3 ; TEST FOR <= 2 (SPECIAL HANDLING)
JR C,DELAY_INIT1 ; IF <= 2, SPECIAL PROCESSING
SUB 2 ; ADJUST AS REQUIRED BY DELAY FUNCTIONS
JR DELAY_INIT2 ; AND CONTINUE
DELAY_INIT1:
LD A,1 ; USE THE MIN VALUE OF 1
DELAY_INIT2:
LD (CPUSCL),A ; UPDATE CPU SCALER VALUE
RET
#IF (CPUMHZ < 3)
CPUSCL .DB 1 ; CPU SCALER MUST BE > 0
#ELSE
CPUSCL .DB CPUMHZ - 2 ; OTHERWISE 2 LESS THAN PHI MHZ
#ENDIF
;
; SHORT DELAY FUNCTIONS. NO CLOCK SPEED COMPENSATION, SO THEY
; WILL RUN LONGER ON SLOWER SYSTEMS. THE NUMBER INDICATES THE
; NUMBER OF CALL/RET INVOCATIONS. A SINGLE CALL/RET IS
; 27 T-STATES ON A Z80, 25 T-STATES ON A Z180
;
; ; Z80 Z180
; ; ---- ----
DLY64: CALL DLY32 ; 1728 1600
DLY32: CALL DLY16 ; 864 800
DLY16: CALL DLY8 ; 432 400
DLY8: CALL DLY4 ; 216 200
DLY4: CALL DLY2 ; 108 100
DLY2: CALL DLY1 ; 54 50
DLY1: RET ; 27 25
;
;
; ;
.FILL 16,0 ; SET MINIMUM STACK DEPTH .FILL 16,0 ; SET MINIMUM STACK DEPTH
SLACK .EQU (MON_END - $) SLACK .EQU (MON_END - $)

3
Source/HBIOS/hbios.asm

@ -1020,6 +1020,9 @@ HB_ENTRYTBL .EQU $
; ;
JP HB_START ; HBIOS INITIALIZATION JP HB_START ; HBIOS INITIALIZATION
JP HB_DISPATCH ; VECTOR TO DISPATCHER JP HB_DISPATCH ; VECTOR TO DISPATCHER
JP PRTSUM
; !!! DO NOT ADD ADDTIONAL VECTORS HERE WITHOUT
; CHECKING W/ WAYNE !!!
; ;
HB_STKSIZ .EQU $100 - ($ & $FF) HB_STKSIZ .EQU $100 - ($ & $FF)
; ;

94
Source/HBIOS/romldr.asm

@ -464,8 +464,6 @@ applst2:
; Device list ; Device list
; ;
devlst: devlst:
ld hl,str_devlst ; device list header string
call pstr ; display it
jp prtall ; do it jp prtall ; do it
; ;
; Set console interface unit ; Set console interface unit
@ -1814,99 +1812,26 @@ CST .equ cst
; Device inventory display ; Device inventory display
;======================================================================= ;=======================================================================
; ;
; Print list of all drives (WBW)
;
#if (BIOS == BIOS_WBW) #if (BIOS == BIOS_WBW)
; ;
prtall:
call nl ; formatting
ld b,BF_SYSGET
ld c,BF_SYSGET_DIOCNT
rst 08 ; E := disk unit count
ld b,e ; count to B
ld a,b ; count to A
or a ; set flags
ret z ; bail out if zero
ld c,0 ; init device index
;
prtall1:
ld hl,str_disk ; prefix string
call pstr ; display it
ld a,c ; index
call prtdecb ; print it
ld hl,str_on ; separator string
call pstr
push bc ; save loop control
ld b,BF_DIODEVICE ; HBIOS func: report device info
rst 08 ; call HBIOS
call prtdrv ; print it
pop bc ; restore loop control
inc c ; bump index
djnz prtall1 ; loop as needed
ret ; done
;
; Print the device info
; On input D has device type, E has device number
; Destroy no registers other than A
; Print list of all drives (WBW)
; ;
prtdrv:
push de ; preserve de
push hl ; preserve HL
ld a,d ; load device/unit
rrca ; rotate device
rrca ; ... bits
rrca ; ... into
rrca ; ... lowest 4 bits
and $0F ; isolate device bits
add a,a ; multiple by two for word table
ld hl,devtbl ; point to start of table
call addhla ; add A to HL for table entry
ld a,(hl) ; deref HL for string adr
inc hl ; ...
ld h,(hl) ; ...
ld l,a ; ...
call pstr ; print the device nmemonic
pop hl ; recover HL
pop de ; recover DE
ld a,e ; device number
call prtdecb ; print it
ld a,':' ; suffix
call cout ; print it
ret
; Just invoke the existing HBIOS routine...
; ;
devtbl: ; device table
.dw dev00, dev01, dev02, dev03
.dw dev04, dev05, dev06, dev07
.dw dev08, dev09, dev10, dev11
.dw dev12, dev13, dev14, dev15
;
devunk .db "???",0
dev00 .db "MD",0
dev01 .db "FD",0
dev02 .db "RAMF",0
dev03 .db "IDE",0
dev04 .db "ATAPI",0
dev05 .db "PPIDE",0
dev06 .db "SD",0
dev07 .db "PRPSD",0
dev08 .db "PPPSD",0
dev09 .db "HDSK",0
dev10 .equ devunk
dev11 .equ devunk
dev12 .equ devunk
dev13 .equ devunk
dev14 .equ devunk
dev15 .equ devunk
prtall:
ld a,BID_BIOS ; BIOS Bank please
ld ix,$0406 ; HBIOS PRTSUM vector
jp HB_BNKCALL ; do it
; ;
#endif #endif
; ;
;
;
#if (BIOS == BIOS_UNA) #if (BIOS == BIOS_UNA)
; ;
; Print list of all drives (UNA) ; Print list of all drives (UNA)
; ;
prtall: prtall:
ld hl,str_devlst ; device list header string
call pstr ; display it
call nl ; formatting call nl ; formatting
ld b,0 ; start with unit 0 ld b,0 ; start with unit 0
; ;
@ -1985,6 +1910,8 @@ devsd .db "SD",0
devdsd .db "DSD",0 devdsd .db "DSD",0
devunk .db "UNK",0 devunk .db "UNK",0
; ;
str_devlst .db "\r\n\r\nDisk Devices:",0
;
#endif #endif
; ;
;======================================================================= ;=======================================================================
@ -2078,7 +2005,6 @@ str_reboot .db "\r\n\r\nRestarting System...",0
str_newcon .db "\r\n\r\n Console on Unit #",0 str_newcon .db "\r\n\r\n Console on Unit #",0
str_chspeed .db "\r\n\r\n Change speed now. Press a key to resume.",0 str_chspeed .db "\r\n\r\n Change speed now. Press a key to resume.",0
str_applst .db "\r\n\r\nROM Applications:",0 str_applst .db "\r\n\r\nROM Applications:",0
str_devlst .db "\r\n\r\nDisk Devices:",0
str_invcmd .db "\r\n\r\n*** Invalid Command ***",bel,0 str_invcmd .db "\r\n\r\n*** Invalid Command ***",bel,0
str_load .db "\r\n\r\nLoading ",0 str_load .db "\r\n\r\nLoading ",0
str_disk .db "\r\n Disk Unit ",0 str_disk .db "\r\n Disk Unit ",0

2
Source/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 1 #DEFINE RMN 1
#DEFINE RUP 1 #DEFINE RUP 1
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.1.1-pre.197"
#DEFINE BIOSVER "3.1.1-pre.199"

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 1
rup equ 1 rup equ 1
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.1.1-pre.197"
db "3.1.1-pre.199"
endm endm

Loading…
Cancel
Save