Browse Source

Add 5380 SCSI Support

Thanks and credit to Jay Cotton for providing the SCSI transport code upon which this driver is based.
pull/639/head v3.6.0-dev.44
Wayne Warthen 2 months ago
parent
commit
d05c1af35c
No known key found for this signature in database GPG Key ID: 8B34ED29C07EEB0A
  1. BIN
      Doc/RomWBW Applications.pdf
  2. BIN
      Doc/RomWBW Disk Catalog.pdf
  3. BIN
      Doc/RomWBW Hardware.pdf
  4. BIN
      Doc/RomWBW Introduction.pdf
  5. BIN
      Doc/RomWBW System Guide.pdf
  6. BIN
      Doc/RomWBW User Guide.pdf
  7. 5
      ReadMe.md
  8. 5
      ReadMe.txt
  9. 12
      Source/Apps/assign/assign.asm
  10. 5
      Source/CBIOS/cbios.asm
  11. 1
      Source/Doc/Hardware.md
  12. 3
      Source/Doc/Introduction.md
  13. 1
      Source/Doc/SystemGuide.md
  14. 2
      Source/HBIOS/Config/SZ180_std.asm
  15. 2
      Source/HBIOS/Config/SZ80_std.asm
  16. 2
      Source/HBIOS/Config/SZ80_t35.asm
  17. 2
      Source/HBIOS/cfg_DUO.asm
  18. 2
      Source/HBIOS/cfg_DYNO.asm
  19. 2
      Source/HBIOS/cfg_EPITX.asm
  20. 2
      Source/HBIOS/cfg_EZZ80.asm
  21. 2
      Source/HBIOS/cfg_GMZ180.asm
  22. 2
      Source/HBIOS/cfg_HEATH.asm
  23. 7
      Source/HBIOS/cfg_MASTER.asm
  24. 2
      Source/HBIOS/cfg_MBC.asm
  25. 2
      Source/HBIOS/cfg_MK4.asm
  26. 2
      Source/HBIOS/cfg_MON.asm
  27. 2
      Source/HBIOS/cfg_MSX.asm
  28. 2
      Source/HBIOS/cfg_N8.asm
  29. 2
      Source/HBIOS/cfg_N8PC.asm
  30. 2
      Source/HBIOS/cfg_NABU.asm
  31. 2
      Source/HBIOS/cfg_RCEZ80.asm
  32. 2
      Source/HBIOS/cfg_RCZ180.asm
  33. 2
      Source/HBIOS/cfg_RCZ280.asm
  34. 2
      Source/HBIOS/cfg_RCZ80.asm
  35. 2
      Source/HBIOS/cfg_RPH.asm
  36. 2
      Source/HBIOS/cfg_SBC.asm
  37. 2
      Source/HBIOS/cfg_SCZ180.asm
  38. 7
      Source/HBIOS/cfg_SZ180.asm
  39. 7
      Source/HBIOS/cfg_SZ80.asm
  40. 2
      Source/HBIOS/cfg_Z80RETRO.asm
  41. 2
      Source/HBIOS/cfg_ZETA.asm
  42. 2
      Source/HBIOS/cfg_ZETA2.asm
  43. 12
      Source/HBIOS/hbios.asm
  44. 1
      Source/HBIOS/hbios.inc
  45. 4
      Source/HBIOS/invntdev.asm
  46. 808
      Source/HBIOS/scsi.asm
  47. 2
      Source/ver.inc
  48. 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 Hardware.pdf

Binary file not shown.

BIN
Doc/RomWBW Introduction.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.

5
ReadMe.md

@ -7,7 +7,7 @@
**RomWBW Introduction** \ **RomWBW Introduction** \
Version 3.6 \ Version 3.6 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \ Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
09 Dec 2025
10 Dec 2025
# Overview # Overview
@ -363,6 +363,9 @@ let me know if I missed you!
- Henk Berends added support for the MSX platform. - Henk Berends added support for the MSX platform.
- Jay Cotton provided the SCSI transport code upon which the SCSI driver
is based.
## Related Projects ## Related Projects
Outside of the hardware platforms adapted to RomWBW, there are a variety Outside of the hardware platforms adapted to RomWBW, there are a variety

5
ReadMe.txt

@ -1,6 +1,6 @@
RomWBW Introduction RomWBW Introduction
Wayne Warthen (wwarthen@gmail.com) Wayne Warthen (wwarthen@gmail.com)
09 Dec 2025
10 Dec 2025
@ -370,6 +370,9 @@ let me know if I missed you!
- Henk Berends added support for the MSX platform. - Henk Berends added support for the MSX platform.
- Jay Cotton provided the SCSI transport code upon which the SCSI driver
is based.
Related Projects Related Projects

12
Source/Apps/assign/assign.asm

@ -40,6 +40,7 @@
; overflow when the drives are finally added ; overflow when the drives are finally added
; 2025-07-19 [D?N] Support for native USB drivers ; 2025-07-19 [D?N] Support for native USB drivers
; 2025-08-09 [WBW] Support for ESPSD driver ; 2025-08-09 [WBW] Support for ESPSD driver
; 2025-11-10 [WBW] Support for SCSI driver
;_______________________________________________________________________________ ;_______________________________________________________________________________
; ;
; ToDo: ; ToDo:
@ -2430,7 +2431,7 @@ devtbl: ; device table
.dw dev04, dev05, dev06, dev07 .dw dev04, dev05, dev06, dev07
.dw dev08, dev09, dev10, dev11 .dw dev08, dev09, dev10, dev11
.dw dev12, dev13, dev14, dev15 .dw dev12, dev13, dev14, dev15
.dw dev16, dev17
.dw dev16, dev17, dev18
; ;
devunk .db "?",0 devunk .db "?",0
dev00 .db "MD",0 dev00 .db "MD",0
@ -2450,9 +2451,10 @@ dev13 .db "CHUSB",0
dev14 .db "CHSD",0 dev14 .db "CHSD",0
dev15 .db "USB",0 dev15 .db "USB",0
dev16 .db "ESPSD",0 dev16 .db "ESPSD",0
dev17 .equ devunk
dev17 .db "SCSI",0
dev18 .equ devunk
; ;
devcnt .equ 18 ; 18 device types defined
devcnt .equ 19 ; 19 device types defined
; ;
udevram .db "RAM",0 udevram .db "RAM",0
udevrom .db "ROM",0 udevrom .db "ROM",0
@ -2470,10 +2472,10 @@ stack .equ $ ; stack top
; Messages ; Messages
; ;
indent .db " ",0 indent .db " ",0
msgban1 .db "ASSIGN v2.2 for RomWBW CP/M ",0
msgban1 .db "ASSIGN v2.3 for RomWBW CP/M ",0
msg22 .db "2.2",0 msg22 .db "2.2",0
msg3 .db "3",0 msg3 .db "3",0
msbban2 .db ", 9-Aug-2025",0
msbban2 .db ",10-Dec-2025",0
msghb .db " (HBIOS Mode)",0 msghb .db " (HBIOS Mode)",0
msgub .db " (UBIOS Mode)",0 msgub .db " (UBIOS Mode)",0
msgban3 .db "Copyright 2025, Wayne Warthen, GNU GPL v3",0 msgban3 .db "Copyright 2025, Wayne Warthen, GNU GPL v3",0

5
Source/CBIOS/cbios.asm

@ -3408,7 +3408,7 @@ DEVTBL: ; DEVICE TABLE
.DW DEV04, DEV05, DEV06, DEV07 .DW DEV04, DEV05, DEV06, DEV07
.DW DEV08, DEV09, DEV10, DEV11 .DW DEV08, DEV09, DEV10, DEV11
.DW DEV12, DEV13, DEV14, DEV15 .DW DEV12, DEV13, DEV14, DEV15
.DW DEV16, DEV17
.DW DEV16, DEV17, DEV18
; ;
DEVUNK .DB "???$" DEVUNK .DB "???$"
DEV00 .DB "MD$" DEV00 .DB "MD$"
@ -3428,7 +3428,8 @@ DEV13 .DB "CHUSB$"
DEV14 .DB "CHSD$" DEV14 .DB "CHSD$"
DEV15 .DB "USB$" DEV15 .DB "USB$"
DEV16 .DB "ESPSD$" DEV16 .DB "ESPSD$"
DEV17 .EQU DEVUNK
DEV17 .DB "SCSI$"
DEV18 .EQU DEVUNK
; ;
#ENDIF #ENDIF
; ;

1
Source/Doc/Hardware.md

@ -2478,6 +2478,7 @@ the active platform and configuration.
| SD | SD Card Interface | | SD | SD Card Interface |
| SYQ | Iomega SparQ Drive on PPI | | SYQ | Iomega SparQ Drive on PPI |
| ESPSD | S100 ESP32-based SD Card Interface | | ESPSD | S100 ESP32-based SD Card Interface |
| SCSI | 5380 SCSI Interface |
## Video ## Video

3
Source/Doc/Introduction.md

@ -347,6 +347,9 @@ please let me know if I missed you!
* Henk Berends added support for the MSX platform. * Henk Berends added support for the MSX platform.
* Jay Cotton provided the SCSI transport code upon which the SCSI
driver is based.
`\clearpage`{=latex} `\clearpage`{=latex}
## Related Projects ## Related Projects

1
Source/Doc/SystemGuide.md

@ -1101,6 +1101,7 @@ below enumerates their values.
| DIODEV_CHSD | 0x0E | CH375/376 SD Card | ch.asm | | DIODEV_CHSD | 0x0E | CH375/376 SD Card | ch.asm |
| DIODEV_USB | 0x0F | CH376 Native USB Device | ch376.asm | | DIODEV_USB | 0x0F | CH376 Native USB Device | ch376.asm |
| DIODEV_ESPSD | 0x10 | S100 ESP32 SD Card | espsd.asm | | DIODEV_ESPSD | 0x10 | S100 ESP32 SD Card | espsd.asm |
| DIODEV_SCSI | 0x11 | 5380 SCSI Interface | scsi.asm |
A fixed set of media types are defined. The currently defined media A fixed set of media types are defined. The currently defined media
types identifiers are listed below. Each driver will support one or types identifiers are listed below. Each driver will support one or

2
Source/HBIOS/Config/SZ180_std.asm

@ -82,3 +82,5 @@ SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD) ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

2
Source/HBIOS/Config/SZ80_std.asm

@ -72,3 +72,5 @@ PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD) ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

2
Source/HBIOS/Config/SZ80_t35.asm

@ -83,3 +83,5 @@ SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD) ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

2
Source/HBIOS/cfg_DUO.asm

@ -375,6 +375,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_DYNO.asm

@ -359,6 +359,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_EPITX.asm

@ -385,6 +385,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_EZZ80.asm

@ -394,6 +394,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_GMZ180.asm

@ -384,6 +384,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_HEATH.asm

@ -384,6 +384,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

7
Source/HBIOS/cfg_MASTER.asm

@ -495,6 +495,13 @@ ESPSD0DUAL .EQU TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
ESPSD1BASE .EQU $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR ESPSD1BASE .EQU $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR
ESPSD1DUAL .EQU TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD) ESPSD1DUAL .EQU TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD)
; ;
SCSIENABLE .EQU FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
SCSITRACE .EQU 1 ; SCSI: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SCSICNT .EQU 2 ; SCSI: NUMBER OF TARGET DEVICES (1-2)
SCSI_TID .EQU 0 ; SCSI: TARGET DEVICE ID (0-6)
SCSI0_LUN .EQU 0 ; SCSI0: TARGET LUN
SCSI1_LUN .EQU 1 ; SCSI1: TARGET LUN
;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_MBC.asm

@ -363,6 +363,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_MK4.asm

@ -356,6 +356,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_MON.asm

@ -391,6 +391,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_MSX.asm

@ -398,6 +398,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_N8.asm

@ -358,6 +358,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_N8PC.asm

@ -357,6 +357,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_NABU.asm

@ -394,6 +394,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_RCEZ80.asm

@ -395,6 +395,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_RCZ180.asm

@ -392,6 +392,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_RCZ280.asm

@ -402,6 +402,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_RCZ80.asm

@ -397,6 +397,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_RPH.asm

@ -339,6 +339,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_SBC.asm

@ -347,6 +347,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)

2
Source/HBIOS/cfg_SCZ180.asm

@ -389,6 +389,8 @@ SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

7
Source/HBIOS/cfg_SZ180.asm

@ -381,6 +381,13 @@ ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
ESPSD1BASE .SET $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR ESPSD1BASE .SET $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR
ESPSD1DUAL .SET TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD) ESPSD1DUAL .SET TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
SCSITRACE .SET 1 ; SCSI: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SCSICNT .SET 2 ; SCSI: NUMBER OF TARGET DEVICES (1-2)
SCSI_TID .SET 0 ; SCSI: TARGET DEVICE ID (0-6)
SCSI0_LUN .SET 0 ; SCSI0: TARGET LUN
SCSI1_LUN .SET 1 ; SCSI1: TARGET LUN
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

7
Source/HBIOS/cfg_SZ80.asm

@ -370,6 +370,13 @@ ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
ESPSD1BASE .SET $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR ESPSD1BASE .SET $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR
ESPSD1DUAL .SET TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD) ESPSD1DUAL .SET TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
SCSITRACE .SET 1 ; SCSI: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SCSICNT .SET 2 ; SCSI: NUMBER OF TARGET DEVICES (1-2)
SCSI_TID .SET 0 ; SCSI: TARGET DEVICE ID (0-6)
SCSI0_LUN .SET 0 ; SCSI0: TARGET LUN
SCSI1_LUN .SET 1 ; SCSI1: TARGET LUN
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_Z80RETRO.asm

@ -314,6 +314,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_ZETA.asm

@ -284,6 +284,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

2
Source/HBIOS/cfg_ZETA2.asm

@ -295,6 +295,8 @@ SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
; ;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM) ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
; ;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM) PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP

12
Source/HBIOS/hbios.asm

@ -4438,6 +4438,9 @@ HB_INITTBL:
#IF (ESPSDENABLE) #IF (ESPSDENABLE)
.DW ESPSD_INIT .DW ESPSD_INIT
#ENDIF #ENDIF
#IF (SCSIENABLE)
.DW SCSI_INIT
#ENDIF
#IF (PRPENABLE) #IF (PRPENABLE)
.DW PRP_INIT .DW PRP_INIT
#ENDIF #ENDIF
@ -9321,6 +9324,15 @@ SIZ_ESPSD .EQU $ - ORG_ESPSD
MEMECHO " bytes.\n" MEMECHO " bytes.\n"
#ENDIF #ENDIF
; ;
#IF (SCSIENABLE)
ORG_SCSI .EQU $
#INCLUDE "scsi.asm"
SIZ_SCSI .EQU $ - ORG_SCSI
MEMECHO "SCSI occupies "
MEMECHO SIZ_SCSI
MEMECHO " bytes.\n"
#ENDIF
;
#IF (ESPENABLE) #IF (ESPENABLE)
ORG_ESP .EQU $ ORG_ESP .EQU $
#INCLUDE "esp.asm" #INCLUDE "esp.asm"

1
Source/HBIOS/hbios.inc

@ -427,6 +427,7 @@ DIODEV_CHUSB .EQU $0D
DIODEV_CHSD .EQU $0E DIODEV_CHSD .EQU $0E
DIODEV_USB .EQU $0F DIODEV_USB .EQU $0F
DIODEV_ESPSD .EQU $10 DIODEV_ESPSD .EQU $10
DIODEV_SCSI .EQU $11
; ;
; RTC DEVICE IDS ; RTC DEVICE IDS
; ;

4
Source/HBIOS/invntdev.asm

@ -1,6 +1,6 @@
;============================================================================== ;==============================================================================
; DEVIVE INVENTORY - Inventory Device ; DEVIVE INVENTORY - Inventory Device
; Version August-2025
; Version December-2025
;============================================================================== ;==============================================================================
; ;
; This was extracted from HBIOS and converted into a ROM Application ; This was extracted from HBIOS and converted into a ROM Application
@ -11,6 +11,7 @@
; Change Log: ; Change Log:
; 2025-06-30 [MAP] Initial Release copied from HBIOS.ASM ; 2025-06-30 [MAP] Initial Release copied from HBIOS.ASM
; 2025-08-09 [WBW] Add support for ESPSD driver ; 2025-08-09 [WBW] Add support for ESPSD driver
; 2025-12-10 [WBW] Add support for SCSI driver
;______________________________________________________________________________ ;______________________________________________________________________________
; ;
; Include Files ; Include Files
@ -584,6 +585,7 @@ PS_DDCHUSB .TEXT "CHUSB$"
PS_DDCHSD .TEXT "CHSD$" PS_DDCHSD .TEXT "CHSD$"
PS_DDCHNATUSB .TEXT "USB$" PS_DDCHNATUSB .TEXT "USB$"
PS_DDESPSD .TEXT "ESPSD$" PS_DDESPSD .TEXT "ESPSD$"
PS_DDSCSI .TEXT "SCSI$"
; ;
; DISK TYPE STRINGS ; DISK TYPE STRINGS
; ;

808
Source/HBIOS/scsi.asm

@ -0,0 +1,808 @@
;
;=============================================================================
; SCSI DISK DRIVER FOR 5380
;=============================================================================
;
; DISK DEVICE DRIVER FOR THE 5380 SCSI CHIP.
; DERIVED FROM CODE PROVIDED BY JAY COTTON.
;
; TODO:
; - IMPLEMENT INQUIRY COMMAND AND DISPLAY DATA AT INIT
; - IMPLEMENT CAPACITY COMMAND
; - DO SOMETHING IN INITDEV TO CONFIRM LUN EXISTS
;
; NOTES:
; - CAPACITY IS CURRENTLY HARD-CODED TO 200000 BLOCKS (1GB OF DATA)
;
SCSIBASE .EQU $40
;
; SCSI DEVICE STATUS CODES
;
SCSI_STOK .EQU 0
SCSI_STNOMEDIA .EQU -1
SCSI_STIOERR .EQU -2
SCSI_STTO .EQU -3
SCSI_STNOTRDY .EQU -4
;
; NCR 5380 I/O REGISTERS
;
SCSI_SR_CSD .EQU SCSIBASE ; CURRENT SCSI DATA
SCSI_SR_ICR .EQU SCSIBASE + $01 ; INITIATOR COMMAND
SCSI_SR_MR .EQU SCSIBASE + $02 ; MODE
SCSI_SR_TCR .EQU SCSIBASE + $03 ; TARGET COMMAND
SCSI_SR_CSBS .EQU SCSIBASE + $04 ; CURRENT SCSI BUS STAT.
SCSI_SR_BSR .EQU SCSIBASE + $05 ; BUS STATUS
SCSI_SR_IDR .EQU SCSIBASE + $06 ; INITIATOR DMA RECV.
SCSI_SR_RPI .EQU SCSIBASE + $07 ; RESET PARITY/IRQ
;
; NCR 5380 OUTPUT ONLY REGISTERS
;
SCSI_SR_ODR .EQU SCSIBASE ; OUTPUT DATA
SCSI_SR_SER .EQU SCSIBASE + $04 ; SELECT ENABLE
SCSI_SR_SDS .EQU SCSIBASE + $05 ; START DMA SEND
SCSI_SR_SDTR .EQU SCSIBASE + $06 ; START TARGET DMA RECV.
SCSI_SR_SDIR .EQU SCSIBASE + $07 ; START INITIATOR DMA RECV.
;
; SCSI CURRENT BUS STATUS BIT MASKS
;
SCSI_SM_RST .EQU $80 ; RESET
SCSI_SM_BSY .EQU $40 ; BUSY
SCSI_SM_REQ .EQU $20 ; REQUEST
SCSI_SM_MSG .EQU $10 ; MESSAGE
SCSI_SM_CD .EQU $08 ; CMD/DATA
SCSI_SM_IO .EQU $04 ; IN/OUT
SCSI_SM_SEL .EQU $02 ; SELECT
SCSI_SM_DBP .EQU $01 ; PARITY BIT
;
SCSI_SM_PHM .EQU $08 ; PHASE MATCH BIT
;
; SDCI DEVICE CONFIGURATION
;
; PER DEVICE DATA OFFSETS IN CFG BLOCK
;
SCSI_DEV .EQU 0 ; OFFSET OF DEVICE NUMBER (BYTE)
SCSI_IOBASE .EQU 1 ; IO BASE ADDRESS (BYTE)
SCSI_LUN .EQU 2 ; TARGET LUN
SCSI_STAT .EQU 3 ; LAST STATUS (BYTE)
SCSI_MEDCAP .EQU 4 ; MEDIA CAPACITY (DWORD)
SCSI_LBA .EQU 8 ; OFFSET OF LBA (DWORD)
;
SCSI_CFGSIZ .EQU 12 ; SIZE OF CFG TBL ENTRIES
;
SCSI_CFGTBL:
;
#IF (SCSICNT >= 1)
;
SCSI0_CFG:
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY)
.DB SCSIBASE ; IO BASE ADDRESS
.DB SCSI0_LUN ; SCSI TARGET LUN
.DB SCSI_STNOTRDY ; DEVICE STATUS
.DW $0000,$0020 ; DEVICE CAPACITY (BLOCKS)
.DW 0,0 ; CURRENT LBA
;
DEVECHO "SCSI: IO="
DEVECHO SCSIBASE
DEVECHO ", LUN="
DEVECHO SCSI0_LUN
DEVECHO "\n"
#ENDIF
;
#IF (SCSICNT >= 2)
.DB $FE ; DRIVER DEVICE NUMBER (FILLED DYNAMICALLY)
.DB SCSIBASE ; IO BASE ADDRESS
.DB SCSI1_LUN ; SCSI TARGET LUN
.DB SCSI_STNOTRDY ; DEVICE STATUS
.DW $0000,$0020 ; DEVICE CAPACITY (BLOCKS)
.DW 0,0 ; CURRENT LBA
;
DEVECHO "SCSI: IO="
DEVECHO SCSIBASE
DEVECHO ", LUN="
DEVECHO SCSI1_LUN
DEVECHO "\n"
#ENDIF
;
#IF ($ - SCSI_CFGTBL) != (SCSICNT * 2 * SCSI_CFGSIZ)
.ECHO "*** INVALID SCSI CONFIG TABLE ***\n"
#ENDIF
;
.DB $FF ; END OF TABLE MARKER
;
;=============================================================================
; INITIALIZATION ENTRY POINT
;=============================================================================
;
SCSI_INIT:
CALL NEWLINE ; FORMATTING
PRTS("SCSI:$") ; TAG
;
PRTS(" IO=0x$") ; LABEL FOR IO ADDRESS
LD A,SCSIBASE ; GET IO BASE ADDRES
CALL PRTHEXBYTE ; DISPLAY IT
;
CALL SCSI_DETECT ; DETECT THE SCSI INTERFACE
JR Z,SCSI_INIT1 ; IF FOUND CONTINUE
PRTS(" NOT PRESENT$") ; SHOW NOT PRESENT
XOR A ; SUCCESS
RET ; AND BAIL OUT
;
SCSI_INIT1:
XOR A ; ZERO ACCUM
LD (SCSI_DEVNUM),A ; INIT DEV UNIT NUM FOR DYNAMIC ASSIGNMENT
LD IY,SCSI_CFGTBL ; POINT TO START OF CONFIG TABLE
;
SCSI_INIT2:
LD A,(IY) ; LOAD FIRST BYTE TO CHECK FOR END
CP $FF ; CHECK FOR END OF TABLE VALUE
RET Z ; RETURN IF DONE
;
CALL SCSI_INIT3 ; REGISTER & INIT DEVICE
;
LD DE,SCSI_CFGSIZ ; SIZE OF CFG TABLE ENTRY
ADD IY,DE ; BUMP POINTER
JP SCSI_INIT2 ; AND LOOP
;
SCSI_INIT3:
; UPDATE DRIVER RELATIVE UNIT NUMBER IN CONFIG TABLE
LD A,(SCSI_DEVNUM) ; GET NEXT UNIT NUM TO ASSIGN
LD (IY+SCSI_DEV),A ; UPDATE IT
INC A ; BUMP TO NEXT UNIT NUM TO ASSIGN
LD (SCSI_DEVNUM),A ; SAVE IT
;
; ADD UNIT TO GLOBAL DISK UNIT TABLE
LD BC,SCSI_FNTBL ; BC := FUNC TABLE ADR
PUSH IY ; CFG ENTRY POINTER
POP DE ; COPY TO DE
CALL DIO_ADDENT ; ADD ENTRY TO GLOBAL DISK DEV TABLE
;
CALL SCSI_PRTPREFIX ; TAG FOR ACTIVE DEVICE
;
PRTS(" LUN=$") ; LUN LABEL
LD A,(IY+SCSI_LUN) ; LOAD LUN
CALL PRTDEC8 ; DISPLAY IT
;
CALL SCSI_INITDEV ; INITIALIZE DEVICE
#IF (SCSITRACE < 2)
JP NZ,SCSI_PRTSTAT
#ENDIF
RET NZ
;
; PRINT STORAGE CAPACITY (BLOCK COUNT)
PRTS(" BLOCKS=0x$") ; PRINT FIELD LABEL
LD A,SCSI_MEDCAP ; OFFSET TO CAPACITY FIELD
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
CALL LD32 ; GET THE CAPACITY VALUE
CALL PRTHEX32 ; PRINT HEX VALUE
;
; PRINT STORAGE SIZE IN MB
PRTS(" SIZE=$") ; PRINT FIELD LABEL
LD B,11 ; 11 BIT SHIFT TO CONVERT BLOCKS --> MB
CALL SRL32 ; RIGHT SHIFT
CALL PRTDEC32 ; PRINT DWORD IN DECIMAL
PRTS("MB$") ; PRINT SUFFIX
;
XOR A ; SUCCESS
RET
;
;=============================================================================
; DRIVER FUNCTION TABLE
;=============================================================================
;
SCSI_FNTBL:
.DW SCSI_STATUS
.DW SCSI_RESET
.DW SCSI_SEEK
.DW SCSI_READ
.DW SCSI_WRITE
.DW SCSI_VERIFY
.DW SCSI_FORMAT
.DW SCSI_DEVICE
.DW SCSI_MEDIA
.DW SCSI_DEFMED
.DW SCSI_CAP
.DW SCSI_GEOM
#IF (($ - SCSI_FNTBL) != (DIO_FNCNT * 2))
.ECHO "*** INVALID SCSI FUNCTION TABLE ***\n"
#ENDIF
;
SCSI_VERIFY:
SCSI_FORMAT:
SCSI_DEFMED:
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED
RET
;
;
;
SCSI_READ:
CALL HB_DSKREAD ; HOOK HBIOS DISK READ SUPERVISOR
LD A,$08 ; SETUP READ COMMAND
JR SCSI_IO ; DO THE IO
;
;
;
SCSI_WRITE:
CALL HB_DSKWRITE ; HOOK HBIOS DISK WRITE SUPERVISOR
LD A,$0A ; SETUP WRITE COMMAND
JR SCSI_IO ; DO THE IO
;
;
;
SCSI_IO:
LD (SCSI_DSKBUF),HL ; SAVE DISK BUFFER ADDRESS
; SETUP SCSI COMMAND
LD (SCSI_S_CDB),A ; SET SCSI COMMAND
; SETUP DISK BUFFER POINTERS
LD (SCSI_BUF_OUT),HL ; INPUT BUFFER
LD (SCSI_BUF_IN),HL ; OUTPUT BUFFER
; SETUP LUN/LBA
LD A,(IY+SCSI_LUN) ; PUT LUN IN ACCUM
RRCA ; MOVE TO TOP 3 BITS
RRCA ; ...
RRCA ; ...
OR (IY+SCSI_LBA+2) ; MERGE WITH TOP OF LBA
LD (SCSI_CUR_LUN),A ; PUT IN CDB
LD A,(IY+SCSI_LBA+1) ; LBA MID
LD (SCSI_CUR_LBN),A ; PUT IN CDB
LD A,(IY+SCSI_LBA+0) ; LBA MID
LD (SCSI_CUR_LBN+1),A ; PUT IN CDB
PUSH IX ; SAVE IX
LD IX,SCSI_S_IOT ; SET POINTER
CALL SCSI_GO ; DO THE SCSI TRANSACTION
POP IX ; RESTORE IX
JR NZ,SCSI_IO1 ; IF ERROR, SKIP INCREMENT
; INCREMENT LBA
LD A,SCSI_LBA ; LBA OFFSET
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
CALL INC32HL ; INCREMENT THE VALUE
; INCREMENT DMA
LD HL,SCSI_DSKBUF+1 ; POINT TO MSB OF BUFFER ADR
INC (HL) ; BUMP DMA BY
INC (HL) ; ... 512 BYTES
XOR A ; SIGNAL SUCCESS
SCSI_IO1:
LD HL,(SCSI_DSKBUF) ; CURRENT DMA TO HL
OR A ; SET FLAGS
RET Z ; DONE IF NO ERROR
LD A,ERR_IO ; SIGNAL IO ERROR
OR A ; SET FLAGS
RET ; AND DONE
;
;
;
SCSI_STATUS:
LD A,(IY+SCSI_STAT) ; GET STATUS OF SELECTED DEVICE
OR A ; SET FLAGS
RET ; AND RETURN
;
;
;
SCSI_RESET:
CALL SCSI_INITDEV ; REINITIALIZE UNIT
OR A ; SET RESULT FLAGS
RET
;
;
;
SCSI_DEVICE:
LD D,DIODEV_SCSI ; D := DEVICE TYPE
LD E,(IY+SCSI_DEV) ; E := PHYSICAL DEVICE NUMBER
LD C,%00110000 ; C := GENERIC HARD DISK ATTRIBUTES
LD H,0 ; H := MODE
LD L,(SCSI_IOBASE) ; L := BASE I/O ADDRESS
XOR A ; SIGNAL SUCCESS
RET
;
;
;
SCSI_MEDIA:
LD A,E ; GET FLAGS
OR A ; SET FLAGS
JR Z,SCSI_MEDIA1 ; JUST REPORT CURRENT STATUS AND MEDIA
CALL SCSI_INITDEV ; REINITIALIZE DEVICE
;
SCSI_MEDIA1:
LD A,(IY+SCSI_STAT) ; GET STATUS
OR A ; SET FLAGS
LD D,0 ; NO MEDIA CHANGE DETECTED
LD E,MID_HD ; ASSUME WE ARE OK
RET Z ; RETURN IF GOOD INIT
LD E,MID_NONE ; SIGNAL NO MEDIA
LD A,ERR_NOMEDIA ; NO MEDIA ERROR
OR A ; SET FLAGS
RET ; AND RETURN
;
;
;
SCSI_SEEK:
BIT 7,D ; CHECK FOR LBA FLAG
CALL Z,HB_CHS2LBA ; CLEAR MEANS CHS, CONVERT TO LBA
RES 7,D ; CLEAR FLAG REGARDLESS (DOES NO HARM IF ALREADY LBA)
LD (IY+SCSI_LBA+0),L ; SAVE NEW LBA
LD (IY+SCSI_LBA+1),H ; ...
LD (IY+SCSI_LBA+2),E ; ...
LD (IY+SCSI_LBA+3),D ; ...
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;
;
;
SCSI_CAP:
LD A,(IY+SCSI_STAT) ; GET STATUS
PUSH AF ; SAVE IT
LD A,SCSI_MEDCAP ; OFFSET TO CAPACITY FIELD
CALL LDHLIYA ; HL := IY + A, REG A TRASHED
CALL LD32 ; GET THE CURRENT CAPACITY INTO DE:HL
LD BC,512 ; 512 BYTES PER BLOCK
POP AF ; RECOVER STATUS
OR A ; SET FLAGS
RET
;
;
;
SCSI_GEOM:
; FOR LBA, WE SIMULATE CHS ACCESS USING 16 HEADS AND 16 SECTORS
; RETURN HS:CC -> DE:HL, SET HIGH BIT OF D TO INDICATE LBA CAPABLE
CALL SCSI_CAP ; GET TOTAL BLOCKS IN DE:HL, BLOCK SIZE TO BC
LD L,H ; DIVIDE BY 256 FOR # TRACKS
LD H,E ; ... HIGH BYTE DISCARDED, RESULT IN HL
LD D,16 | $80 ; HEADS / CYL = 16, SET LBA CAPABILITY BIT
LD E,16 ; SECTORS / TRACK = 16
RET ; DONE, A STILL HAS SCSI_CAP STATUS
;
;=============================================================================
; FUNCTION SUPPORT ROUTINES
;=============================================================================
;
; ON RETURN, ZF SET INDICATES HARDWARE FOUND
;
SCSI_DETECT:
LD A,$05
OUT (SCSIBASE+3),A
IN A,(SCSIBASE+3)
CP $05
RET NZ
LD A,$0A
OUT (SCSIBASE+3),A
IN A,(SCSIBASE+3)
CP $0A
RET
;
; INITIALIZE DEVICE
;
SCSI_INITDEV:
XOR A
LD (IY+SCSI_STAT),A
RET
;
;=============================================================================
; COMMAND PROCESSING
;=============================================================================
;
;----------------------------------------------------------------
;WRITE LOGICAL BLOCK TO DISK
;CUR_TID,CUR_LUN,CUR_LBN ALREADY SET
;EXIT WITH ZERO STATUS IF OK
;----------------------------------------------------------------
;
WR_PHY:
LD A,0AH ;WRITE COMMAND
JR PHY_COM ;FINISH SAME AS READ
;----------------------------------------------------------------
;READ LOGICAL BLOCK FROM DISK
;CUR_TID,CUR_LUN,CUR_LBN ALREADY SET
;EXIT WITH ZERO STATUS IF OK
;----------------------------------------------------------------
;
RD_PHY:
LD A,8 ;READ COMMAND
PHY_COM:
LD (SCSI_S_CDB),A ;SET IN COMMAND BLOCK
LD IX,SCSI_S_IOT ;POINT TO IO TABLE
CALL SCSI_GO
AND 02H ;MASK TO ERROR BIT
RET
;-------------------------------------------------------------------------------
;DO SCSI TRANSACTION
; IX=SCSI IO BLOCK
;-------------------------------------------------------------------------------
SCSI_GO:
LD A,$FF ;PRESET ERROR STATUS
LD L,(IX+4) ;POINT TO STATUS ADDRESS
LD H,(IX+5) ;POINT TO STATUS ADDRESS
LD (HL),A ;SET ERROR
;
XOR A ;
OUT (SCSI_SR_MR),A ;RESET CONTROL REG
OUT (SCSI_SR_TCR),A ;CLEAR COMMAND REG.
OUT (SCSI_SR_ICR),A ;
LD A,(IX) ;GET TID
BIT 7,A ; TURN ON MY ID
OUT (SCSI_SR_ODR),A ;SET TARGET ID
LD A,$01 ;DRIVE BUS
OUT (SCSI_SR_ICR),A ;
LD A,$05 ;SET SEL AND DRIVE BUS
OUT (SCSI_SR_ICR),A ;
;
;WAIT FOR SCSI BUSY
LD BC,0 ;INIT TIMEOUT
S_SWT:
IN A,(SCSI_SR_CSBS) ;GET BUS STATUS
AND SCSI_SM_BSY ;MASK TO BUSY BIT
JR NZ,S_BSYA ;JMP IF BUSY ACTIVE
NOP ;KILL A LITTLE TIME
NOP
NOP
NOP
DEC BC ;DEC TIMEOUT
LD A,B ;TEST TIMEOUT=0
OR C
JR NZ,S_SWT ;JMP IF NO TIMEOUT
XOR A ;CLEAR A
OUT (SCSI_SR_ICR),A ;CLEAR SEL AND DATA
JR S_EXIT ;ERROR EXIT
;
;BUSY IS ACTIVE
S_BSYA:
XOR A ;CLEAR A
OUT (SCSI_SR_ICR),A ;CLEAR SEL AND DATA
;-------------------------------------------------------------------------------
;
;TARGET IS SELECTED SO TEST BSY AND REQ
;THEN DECODE REQUESTED PHASE
;
;-------------------------------------------------------------------------------
PHASE:
XOR A
OUT (SCSI_SR_ICR),A ;RESET INITIATOR
;
S_WTREQ:
IN A,(SCSI_SR_CSBS) ;GET BUS STATUS
LD B,A ;SAVE COPY
AND SCSI_SM_BSY ;MASK TO BUSY BIT
JR NZ,S_WTRQ1 ;STILL BUSY SO CONT.
;-------------------------------------------------------------------------------
;BUSY LOST SO EXIT
;-------------------------------------------------------------------------------
S_EXIT:
LD L,(IX+4) ;GET STATUS POINTER
LD H,(IX+5) ;GET STATUS POINTER
LD A,(HL)
RET ;BUSY LOST? WERE DONE
;
S_WTRQ1:
LD A,B ;RECOVER STATUS
AND SCSI_SM_REQ ;REQUEST ACTIVE?
JR Z,S_WTREQ ;LOOP TILL REQUEST
;-------------------------------------------------------------------------------
;REQUEST IS ACTIVE SO SET 5380 TO REQUESTED PHASE
;-------------------------------------------------------------------------------
LD A,B ;RECOVER BUS STATUS
RR A ;SHIFT STATUS TO PHASE BITS
RR A
AND $07 ;MASK TO PHASE BITS
OUT (SCSI_SR_TCR),A ;SET PHASE
;
;JUMP TO PHASE HANDLER
;
LD A,B ;RECOVER BUS STATUS
RR A
AND $0E ;MASK TO PHASE BITS
LD E,A ;
LD D,0
LD HL,PHTABL ;POINT TO TABLE
ADD HL,DE ;OFFSET INTO TABLE
LD E,(HL) ;GET EXECUTION ADDRESS
INC HL
LD D,(HL)
PUSH DE
RET ;EXECUTE PHASE
;-------------------------------------------------------------------------------
;PHASE TABLE
;-------------------------------------------------------------------------------
PHTABL:
.WORD PHASE0 ;DATA OUT
.WORD PHASE1 ;DATA IN
.WORD PHASE2 ;CMD OUT
.WORD PHASE3 ;STATUS IN
.WORD S_EXIT ;UNUSED
.WORD S_EXIT ;UNUSED
.WORD PHASE6 ;MESSAGE OUT
.WORD PHASE7 ;MESSAGE IN
;-------------------------------------------------------------------------------
;PHASE HANDLERS
;-------------------------------------------------------------------------------
;
;DATA OUT
PHASE0:
LD L,(IX+6) ;GET POINTER
LD H,(IX+7)
JP S_WRIT ;WRITE BYTES
;
;DATA IN
PHASE1:
LD L,(IX+8) ;GET POINTER
LD H,(IX+9)
JP S_READ ;READ BYTES
;
;CMD OUT
PHASE2:
LD L,(IX+2)
LD H,(IX+3)
JP S_WRIT
;
;STATUS IN
PHASE3:
LD L,(IX+4)
LD H,(IX+5)
JP S_READ
;
;MSG OUT
PHASE6:
LD L,(IX+10)
LD H,(IX+11)
JP S_WRIT
;
;MSG IN
PHASE7:
LD L,(IX+12)
LD H,(IX+13)
JP S_READ
;-------------------------------------------------------------------------------
;SCSI WRITE ROUTINE (SEND BYTES TO TARGET)
;BUS PHASE ALREADY SET. RETURN ON PHASE MISMATCH
;-------------------------------------------------------------------------------
S_WRIT:
LD A,1 ;DRIVE SCSI DATA BUS
OUT (SCSI_SR_ICR),A
;
;WAIT FOR REQ WHILE CHECKING BUSY
;
S_WWREQ:
IN A,(SCSI_SR_CSBS) ;GET CURRENT BUS STAT
LD B,A ;SAVE IT
AND SCSI_SM_REQ ;REQUEST ACTIVE?
JR NZ,S_WNXT ;
;
LD A,B ;RECOVER CURRENT BUS STAT
AND SCSI_SM_BSY ;STILL BUSY?
JP NZ,S_WWREQ ;LOOP IF STILL BUSY
JP PHASE ;
;
;REQUEST ACTIVE SO CHECK PHASE
;
S_WNXT:
IN A,(SCSI_SR_BSR) ;GET STATUS
AND SCSI_SM_PHM ;MASK TO PHASE MATCH
JP Z,PHASE ;JMP IF PHASE MISMATCH
;
;REQUEST ACTIVE AND PHASE MATCH SO SEND DATA
;
LD A,(HL) ;GET BYTE
OUT (SCSI_SR_ODR),A ;SEND DATA
LD A,$11 ;ACK + DRIVE BUS
OUT (SCSI_SR_ICR),A ;SET ACK,DRIVE SCSI BUS
INC HL ;ADVANCE BUF POINTER
;
;WAIT FOR REQUEST TO DROP
;
S_WNREQ:
IN A,(SCSI_SR_CSBS) ;GET CURRENT STATUS
AND SCSI_SM_REQ
JR NZ,S_WNREQ ;LOOP TILL REQ DROPS
;
LD A,$1 ;DROP ACK,ASSERT DATA
OUT (SCSI_SR_ICR),A ;DROP ACK
JP S_WWREQ ;LOOP FOR NEXT BYTE/PHASE
;-------------------------------------------------------------------------------
;SCSI READ ROUTINE (GET BYTES FROM TARGET)
;BUS PHASE ALREADY SET. RETURN ON PHASE MISMATCH
;-------------------------------------------------------------------------------
;
S_READ:
;
;WAIT FOR REQ WHILE CHECKING BUSY
;
S_RWREQ:
IN A,(SCSI_SR_CSBS) ;GET CURRENT BUS STAT
LD B,A ;SAVE IT
AND SCSI_SM_REQ ;REQUEST ACTIVE?
JR NZ,S_RNXT ;
;
LD A,B ;RECOVER CURRENT BUS STAT
AND SCSI_SM_BSY ;STILL BUSY?
JP NZ,S_RWREQ ;LOOP IF STIL BUSY
JP PHASE ;
;
;REQUEST ACTIVE SO CHECK PHASE
S_RNXT:
IN A,(SCSI_SR_BSR) ;GET STATUS
AND SCSI_SM_PHM ;MASK TO PHASE MATCH
JP Z,PHASE ;JMP IF PHASE MISMATCH
;REQUEST ACTIVE AND PHASE MATCH SO GET DATA
;
IN A, (SCSI_SR_CSD) ;GET DATA
LD (HL),A ;SAVE DATA
LD A,$10
OUT (SCSI_SR_ICR),A ;SET ACK
INC HL ;ADVANCE BUF POINTER
;
;WAIT FOR REQUEST TO DROP
;
S_RNREQ:
IN A,(SCSI_SR_CSBS) ;GET CURRENT STATUS
AND SCSI_SM_REQ
JR NZ,S_RNREQ ;LOOP TILL REQ DROPS
XOR A
OUT (SCSI_SR_ICR),A ;DROP ACK
JP S_READ ;LOOP FOR NEXT BYTE/PHASE
;
;=============================================================================
; HARDWARE INTERFACE ROUTINES
;=============================================================================
;
;=============================================================================
; ERROR HANDLING AND DIAGNOSTICS
;=============================================================================
;
; ERROR HANDLERS
;
SCSI_NOMEDIA:
LD A,SCSI_STNOMEDIA
JR SCSI_ERR
;
SCSI_IOERR:
LD A,SCSI_STIOERR
JR SCSI_ERR
;
SCSI_TO:
LD A,SCSI_STTO
JR SCSI_ERR
;
SCSI_NOTRDY:
LD A,SCSI_STNOTRDY
JR SCSI_ERR
;
SCSI_ERR:
LD (IY+SCSI_STAT),A ; SAVE NEW STATUS
;
#IF (SCSITRACE >= 2)
CALL SCSI_PRTSTAT
#ENDIF
OR A ; SET FLAGS
RET
;
;
;
SCSI_PRTERR:
RET Z ; DONE IF NO ERRORS
; FALL THRU TO SCSI_PRTSTAT
;
; PRINT FULL DEVICE STATUS LINE
;
SCSI_PRTSTAT:
PUSH AF
PUSH DE
PUSH HL
LD A,(IY+SCSI_STAT)
CALL SCSI_PRTPREFIX ; PRINT UNIT PREFIX
JR SCSI_PRTSTAT3
SCSI_PRTSTAT2:
CALL NEWLINE
PRTS("SCSI:$") ; NO UNIT NUM IN PREFIX FOR INVALID UNIT
SCSI_PRTSTAT3:
CALL PC_SPACE ; FORMATTING
CALL SCSI_PRTSTATSTR
POP HL
POP DE
POP AF
RET
;
; PRINT STATUS STRING
;
SCSI_PRTSTATSTR:
PUSH AF
PUSH DE
LD A,(IY+SCSI_STAT)
OR A
LD DE,SCSI_STR_STOK
JR Z,SCSI_PRTSTATSTR1
INC A
LD DE,SCSI_STR_STNOMEDIA
JR Z,SCSI_PRTSTATSTR1
INC A
LD DE,SCSI_STR_STIOERR
JR Z,SCSI_PRTSTATSTR1
INC A
LD DE,SCSI_STR_STTO
JR Z,SCSI_PRTSTATSTR1
INC A
LD DE,SCSI_STR_STNOTRDY
JR Z,SCSI_PRTSTATSTR1
LD DE,SCSI_STR_STUNK
SCSI_PRTSTATSTR1:
CALL WRITESTR
POP DE
POP AF
RET
;
; PRINT DIAGNONSTIC PREFIX
;
SCSI_PRTPREFIX:
PUSH AF
CALL NEWLINE
PRTS("SCSI$")
LD A,(IY+SCSI_DEV) ; GET CURRENT DEVICE NUM
CP $FE ; NOT YET ASSIGNED?
JR Z,SCSI_PRTPREFIX1 ; SKIP DEV NUM IF SO
CALL PRTDECB
SCSI_PRTPREFIX1:
CALL PC_COLON
POP AF
RET
;
;=============================================================================
; STRING DATA
;=============================================================================
;
SCSI_STR_STOK .TEXT "OK$"
SCSI_STR_STNOMEDIA .TEXT "NO MEDIA$"
SCSI_STR_STIOERR .TEXT "IO ERROR$"
SCSI_STR_STTO .TEXT "TIMEOUT$"
SCSI_STR_STNOTRDY .TEXT "NOT READY$"
SCSI_STR_STUNK .TEXT "UNKNOWN ERROR$"
;
;=============================================================================
; DATA STORAGE
;=============================================================================
;
SCSI_DEVNUM .DB 0 ; TEMP DEVICE NUM USED DURING INIT
SCSI_DSKBUF .DW 0 ; ACTIVE DISK BUFFER
;
;----------------------------------------------------------------
;SCSI COMMAND DESCRIPTOR FOR READ/WRITE
;DO NOT USE THIS FOR DIRECT SCSI I/O
;YOU WILL MESS UP BLOCK/DEBLOCK
;
SCSI_S_CDB:
.DB 8 ; COMMAND
SCSI_CUR_LUN:
.DB 0 << 5 ; LUN/LBA HI
SCSI_CUR_LBN:
.DB 0 ; LBA MID
.DB 0 ; LBA LOW
.DB 1 ; COUNT
.DB 0 ; FLAGS
;
;----------------------------------------------------------------
;SCSI I/O ADDRESS TABLE FOR READ/WRITE
;DONT MESS WITH THIS EITHER
SCSI_S_IOT:
SCSI_CUR_TID .DB 1 << SCSI_TID ;TARGET
.DB 0 ;UNUSED
.DW SCSI_S_CDB ;CDB POINTER
.DW SCSI_S_STAT ;STATUS POINTER
SCSI_BUF_OUT .DW HB_WRKBUF ;DATA OUT POINTER
SCSI_BUF_IN .DW HB_WRKBUF ;DATA IN POINTER
.DW SCSI_S_MSG ;MSG OUT POINTER
.DW SCSI_S_MSG ;MSG IN POINTER
;
;----------------------------------------------------------------
;THIS IS THE END OF INITIALIZED DATA
;EVERYTHING FOLLOWING MUST HAVE MEMORY SPACE AVAILABLE
;BUT IS NOT PART OF THE BOOT IMAGE
;----------------------------------------------------------------
;
; UNINITIALIZED DATA AREA
;
SCSI_S_STAT .DW 0 ;SCSI ENDING STATUS
SCSI_S_MSG .DW 0 ;SCSI MESSAGE
;

2
Source/ver.inc

@ -2,7 +2,7 @@
#DEFINE RMN 6 #DEFINE RMN 6
#DEFINE RUP 0 #DEFINE RUP 0
#DEFINE RTP 0 #DEFINE RTP 0
#DEFINE BIOSVER "3.6.0-dev.43"
#DEFINE BIOSVER "3.6.0-dev.44"
#define rmj RMJ #define rmj RMJ
#define rmn RMN #define rmn RMN
#define rup RUP #define rup RUP

2
Source/ver.lib

@ -3,5 +3,5 @@ rmn equ 6
rup equ 0 rup equ 0
rtp equ 0 rtp equ 0
biosver macro biosver macro
db "3.6.0-dev.43"
db "3.6.0-dev.44"
endm endm

Loading…
Cancel
Save