Browse Source

Merge pull request #8 from wwarthen/master

update to master
pull/64/head
Phillip Stevens 6 years ago
committed by GitHub
parent
commit
3a4f272a01
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 3
      Doc/ChangeLog.txt
  2. 13
      Doc/FDU.txt
  3. BIN
      Doc/Hard Disk Anatomy.pdf
  4. 24
      ReadMe.txt
  5. 7
      Source/Apps/Assign.asm
  6. 78
      Source/Apps/FDU/FDU.asm
  7. 13
      Source/Apps/FDU/FDU.txt
  8. 2
      Source/CBIOS/ver.inc
  9. 28
      Source/CPM3/@banks.txt
  10. 23
      Source/CPM3/Build.cmd
  11. 1
      Source/CPM3/Clean.cmd
  12. 35
      Source/CPM3/biosldr.z80
  13. 184
      Source/CPM3/boot.z80
  14. 4
      Source/CPM3/genbnk.dat
  15. 2
      Source/CPM3/genres.dat
  16. 2
      Source/CPM3/optbnk.lib
  17. 2
      Source/CPM3/optres.lib
  18. 9
      Source/CPM3/optzpm.lib
  19. 5
      Source/CPM3/scb.asm
  20. 2
      Source/CPM3/ver.inc
  21. BIN
      Source/Doc/Hard Disk Anatomy.vsd
  22. 2
      Source/HBIOS/Build.ps1
  23. 39
      Source/HBIOS/Config/DYNO_std.asm
  24. 370
      Source/HBIOS/bqrtc.asm
  25. 133
      Source/HBIOS/cfg_dyno.asm
  26. 9
      Source/HBIOS/cfg_ezz80.asm
  27. 9
      Source/HBIOS/cfg_master.asm
  28. 9
      Source/HBIOS/cfg_mk4.asm
  29. 9
      Source/HBIOS/cfg_n8.asm
  30. 9
      Source/HBIOS/cfg_rcz180.asm
  31. 9
      Source/HBIOS/cfg_rcz80.asm
  32. 9
      Source/HBIOS/cfg_sbc.asm
  33. 9
      Source/HBIOS/cfg_scz180.asm
  34. 2
      Source/HBIOS/cfg_una.asm
  35. 9
      Source/HBIOS/cfg_zeta.asm
  36. 9
      Source/HBIOS/cfg_zeta2.asm
  37. 20
      Source/HBIOS/fd.asm
  38. 15
      Source/HBIOS/hbios.asm
  39. 4
      Source/HBIOS/ppide.asm
  40. 6
      Source/HBIOS/std.asm
  41. 2
      Source/HBIOS/ver.inc
  42. 12
      Source/Images/BuildFD.ps1
  43. 27
      Source/Images/BuildHD.ps1
  44. 255
      Source/Images/ReadMe.txt
  45. 0
      Source/Images/d_bp/u0/ALIEN.DAT
  46. 0
      Source/Images/d_bp/u0/ASM.COM
  47. 0
      Source/Images/d_bp/u0/BPBUILD.COM
  48. 0
      Source/Images/d_bp/u0/BPCNFG.COM
  49. 0
      Source/Images/d_bp/u0/BPDBUG.COM
  50. 0
      Source/Images/d_bp/u0/BPFORMAT.COM
  51. 0
      Source/Images/d_bp/u0/BPSWAP.COM
  52. 0
      Source/Images/d_bp/u0/BPSYSGEN.COM
  53. BIN
      Source/Images/d_bp/u0/COMPARE.COM
  54. 0
      Source/Images/d_bp/u0/CONFZ4.COM
  55. 0
      Source/Images/d_bp/u0/CR.COM
  56. 0
      Source/Images/d_bp/u0/DDT.COM
  57. 0
      Source/Images/d_bp/u0/DDTZ.COM
  58. 0
      Source/Images/d_bp/u0/DDTZ.DOC
  59. 0
      Source/Images/d_bp/u0/DIRX.COM
  60. 0
      Source/Images/d_bp/u0/DUMP.COM
  61. 0
      Source/Images/d_bp/u0/ED.COM
  62. 0
      Source/Images/d_bp/u0/EMULATE.COM
  63. 0
      Source/Images/d_bp/u0/FA.COM
  64. 0
      Source/Images/d_bp/u0/FAT.COM
  65. 0
      Source/Images/d_bp/u0/HASHINI.COM
  66. 0
      Source/Images/d_bp/u0/HDIAG.COM
  67. 0
      Source/Images/d_bp/u0/HDIR.COM
  68. 0
      Source/Images/d_bp/u0/HELP.COM
  69. 0
      Source/Images/d_bp/u0/INIRAMD.COM
  70. 0
      Source/Images/d_bp/u0/INITDIR.COM
  71. 0
      Source/Images/d_bp/u0/INSTAL12.COM
  72. 0
      Source/Images/d_bp/u0/IOPINIT.COM
  73. 0
      Source/Images/d_bp/u0/LBREXT.COM
  74. 0
      Source/Images/d_bp/u0/LDDS.COM
  75. 0
      Source/Images/d_bp/u0/LDNZT.COM
  76. 0
      Source/Images/d_bp/u0/LDP2D.COM
  77. 0
      Source/Images/d_bp/u0/LDR.COM
  78. 0
      Source/Images/d_bp/u0/LDSYS.COM
  79. 0
      Source/Images/d_bp/u0/LIB.COM
  80. 0
      Source/Images/d_bp/u0/LINK.COM
  81. 0
      Source/Images/d_bp/u0/LOAD.COM
  82. 0
      Source/Images/d_bp/u0/MAC.COM
  83. 0
      Source/Images/d_bp/u0/MBASIC.COM
  84. BIN
      Source/Images/d_bp/u0/NULU.COM
  85. 0
      Source/Images/d_bp/u0/NZDEC23D.Z3T
  86. 0
      Source/Images/d_bp/u0/PATH.COM
  87. 0
      Source/Images/d_bp/u0/PIP.COM
  88. 0
      Source/Images/d_bp/u0/PUTDS.COM
  89. 0
      Source/Images/d_bp/u0/R.COM
  90. 0
      Source/Images/d_bp/u0/RMAC.COM
  91. 0
      Source/Images/d_bp/u0/RSETSIMH.COM
  92. 0
      Source/Images/d_bp/u0/SETCLOK.COM
  93. 0
      Source/Images/d_bp/u0/SHOWHD.COM
  94. 0
      Source/Images/d_bp/u0/SIZERAM.COM
  95. 0
      Source/Images/d_bp/u0/SLOWDOWN.COM
  96. 0
      Source/Images/d_bp/u0/SPEEDUP.COM
  97. 0
      Source/Images/d_bp/u0/START01.COM
  98. 0
      Source/Images/d_bp/u0/STAT.COM
  99. 0
      Source/Images/d_bp/u0/SUBMIT.COM
  100. 0
      Source/Images/d_bp/u0/SUPERSUB.COM

3
Doc/ChangeLog.txt

@ -32,6 +32,9 @@ Version 2.9.2
- WBW: More flexible table-driven config in TUNE.COM
- PMS: Added timer support for Zilog Peripherals ECB Board
- PLS: Enhanced Intel Hex Load in dbgmon
- WBW: Overhaul disk image creation
- WBW: Added support for Dyno platform (based on work by Steve Garcia)
- S?G: Added support for BQ4845 RTC (bqrtc.asm)
Version 2.9.1
-------------

13
Doc/FDU.txt

@ -1,9 +1,9 @@
================================================================
Floppy Disk Utility (FDU) v5.3 for RetroBrew Computers
Disk IO / Zeta / Dual-IDE / N8 / RC2014 / SmallZ80
Disk IO / Zeta / Dual-IDE / N8 / RC2014 / SmallZ80 / Dyno
================================================================
Updated September 5, 2018
Updated January 5, 2020
by Wayne Warthen (wwarthen@gmail.com)
Application to test the hardware functionality of the Floppy
@ -77,6 +77,7 @@ supported:
- RC2014 w/ SMC
- RC2014 w/ WDC
- SmallZ80
- Dyno
You must be using either a RomWBW or UBA based OS version.
@ -95,7 +96,7 @@ Finally, you will need a floppy drive connected via an
appropriate cable:
Disk IO - no twist in cable, drive unit 0/1 must be selected by jumper on drive
DISK IO 3, Zeta, Zeta 2, RC2014 - cable with twist, unit 0 after twist, unit 1 before twist
DISK IO 3, Zeta, Zeta 2, RC2014, Dyno - cable with twist, unit 0 after twist, unit 1 before twist
DIDE, N8, Mark IV, SmallZ80 - cable with twist, unit 0 before twist, unit 1 after twist
Note that FDU does not utilize your systems ROM or OS to
@ -154,6 +155,9 @@ JP2 (TC): 2-3.
SmallZ80 does not have any relevant jumper settings. The
hardwired I/O ranges are assumed in the code.
Dyno does not have any relevant jumper settings. The
hardwired I/O ranges are assumed in the code.
Modes of Operation
------------------
@ -505,3 +509,6 @@ WW 9/5/2018: v5.3
condition is no longer considered an error, but a successful end of
operation.
- Added support for SmallZ80
WW 5/1/2020: v5.4
- Added support for Dyno (based on work by Steve Garcia)

BIN
Doc/Hard Disk Anatomy.pdf

Binary file not shown.

24
ReadMe.txt

@ -7,15 +7,15 @@
***********************************************************************
Wayne Warthen (wwarthen@gmail.com)
Version 2.9.2-pre.22, 2019-11-27
Version 2.9.2-pre.25, 2020-01-06
https://www.retrobrewcomputers.org/
RomWBW is a ROM-based implementation of CP/M-80 2.2 and Z-System for
all RetroBrew Computers Z80/Z180 hardware platforms including SBC
1/2, Zeta 1/2, N8, Mark IV, RC2014, SC, and Easy Z80. Virtually all
RetroBrew hardware is supported including floppy, hard disk (IDE, CF
Card, SD Card), Video, and keyboard. VT-100 terminal emulation is
built-in.
1/2, Zeta 1/2, N8, Mark IV, RC2014, SC, Easy Z80, and Dyno.
Virtually all RetroBrew hardware is supported including floppy, hard
disk (IDE, CF Card, SD Card), Video, and keyboard. VT-100 terminal
emulation is built-in.
The RomWBW ROM loads and runs the built-in operating systems directly
from the ROM and includes a selection of standard/useful applications
@ -191,6 +191,20 @@ the drive containing the CP/M 3 image and use the CPMLDR command
to load CP/M. It will ask you for the disk unit number containing
the CP/M 3 system files which are on the disk image you created.
ZPM3
----
Like CP/M 3, ZPM3 exists in an experimental state and is started
just like CP/M 3 above. Just use the zpm_hd.img file to create
your CF or SD Card. There is an issue with the ZPMLDR app used
to start ZPM. Instead, just use CPMLDR which works exactly the
same way.
Note that ZPM3 seems to be completely constrainted to use drive
A: as the boot drive. So, the RomWBW adaptation of ZPM3 will
"swap" the initial drive A: (typically RAM drive) with the
ZPM3 boot drive at startup.
ROM Customization
-----------------

7
Source/Apps/Assign.asm

@ -22,6 +22,7 @@
; 2016-04-08 [WBW] Determine key memory addresses dynamically
; 2019-08-07 [WBW] Fixed DPB selection error
; 2019-11-17 [WBW] Added preliminary CP/M 3 support
; 2019-12-24 [WBW] Fixed location of BIOS save area
;_______________________________________________________________________________
;
; ToDo:
@ -466,7 +467,7 @@ install:
;
; capture CBIOS snapshot and stack frame for error recovery
ld hl,(bioloc) ; start of CBIOS
ld de,$8000 ; save it here
ld de,$1000 ; save it here
ld bc,(biosiz) ; size of CBIOS
ldir ; save it
ld (xstksav),sp ; save stack frame
@ -804,7 +805,7 @@ instc3:
instovf:
; restore stack frame and CBIOS image
ld sp,(xstksav) ; restore stack frame
ld hl,$8000 ; start of CBIOS image buffer
ld hl,$1000 ; start of CBIOS image buffer
ld de,(bioloc) ; start of CBIOS
ld bc,(biosiz) ; size of CBIOS
ldir ; restore it
@ -1865,7 +1866,7 @@ stack .equ $ ; stack top
; Messages
;
indent .db " ",0
msgban1 .db "ASSIGN v1.1 for RomWBW CP/M, 17-Nov-2019",0
msgban1 .db "ASSIGN v1.1a for RomWBW CP/M, 24-Dec-2019",0
msghb .db " (HBIOS Mode)",0
msgub .db " (UBIOS Mode)",0
msgban2 .db "Copyright 2019, Wayne Warthen, GNU GPL v3",0

78
Source/Apps/FDU/FDU.asm

@ -44,6 +44,7 @@
; 2018-09-05: v5.3 ADDED SUPPORT FOR SMALLZ80
; - USE EOT=R TO END R/W AFTER ONE SECTOR INSTEAD
; OF USING PULSE TC
; 2020-01-05: V5.4 ADDED SUPPORT FOR DYNO FDC
;
;_______________________________________________________________________________
;
@ -77,6 +78,7 @@ FDC_N8 .EQU 5
FDC_RCSMC .EQU 6
FDC_RCWDC .EQU 7
FDC_SMZ80 .EQU 8
FDC_DYNO .EQU 9
;
; FDC MODE
;
@ -211,8 +213,8 @@ INIT5:
XOR A
RET
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.3, 28-Sep-2018$"
STR_BANNER2 .DB "Copyright (C) 2018, Wayne Warthen, GNU GPL v3","$"
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.4, 05-jAN-2020$"
STR_BANNER2 .DB "Copyright (C) 2020, Wayne Warthen, GNU GPL v3","$"
STR_HBIOS .DB " [HBIOS]$"
STR_UBIOS .DB " [UBIOS]$"
;
@ -232,19 +234,18 @@ FDCSEL:
CALL WRITESTR
;
FDCSEL1:
CALL GETKEY
SUB '0' ; ASCII -> BINARY
CP FDCCNT + 1 ; TOO HIGH?
JR NC,FDCSEL1 ; IF SO, TRY AGAIN
;
OR A ; SET FLAGS
JR NZ,FDCSEL2 ; NOT ZERO, KEEP GOING
OR 0FFH ; SET NZ FOR EXIT REQUEST
CALL GETKEYUC
CP 'X' ; EXIT?
JR NZ,FDCSEL2 ; IF NOT, CONTINUE
OR 0FFH ; ELSE SET NZ FOR EXIT REQUEST
RET ; AND RETURN
;
;
FDCSEL2:
SUB 'A' ; ASCII -> BINARY
CP FDCCNT ; TOO HIGH?
JR NC,FDCSEL1 ; IF SO, TRY AGAIN
;
; SAVE SELECTED FDC IDENTIFIER
DEC A ; CONVERT TO ZERO-BASED FDC ID
LD (FDCID),A ; RECORD THE FDC ID
RLCA ; TIMES 4
RLCA ; ... FOR 4 BYTE ENTRIES
@ -282,6 +283,7 @@ FDCTBL: ; LABEL CONFIG DATA
.DW STR_RCSMC, CFG_RCSMC
.DW STR_RCWDC, CFG_RCWDC
.DW STR_SMZ80, CFG_SMZ80
.DW STR_DYNO, CFG_DYNO
FDCCNT .EQU ($-FDCTBL)/4 ; FD CONTROLLER COUNT
;
; FDC LABEL STRINGS
@ -295,6 +297,7 @@ STR_N8 .TEXT "N8$"
STR_RCSMC .TEXT "RC-SMC$"
STR_RCWDC .TEXT "RC-WDC$"
STR_SMZ80 .TEXT "SMZ80$"
STR_DYNO .TEXT "DYNO$"
;
; FDC CONFIGURATION BLOCKS
;
@ -405,6 +408,17 @@ CFG_SMZ80:
.DB 0FFH ; PSEUDO DMA DATA PORT
.DB _PCAT ; MODE=
;
CFG_DYNO:
.DB 084H ; FDC MAIN STATUS REGISTER
.DB 085H ; FDC DATA PORT
.DB 0FFH ; DATA INPUT REGISTER
.DB 086H ; DIGITAL OUTPUT REGISTER (LATCH)
.DB 087H ; DCR
.DB 0FFH ; DACK
.DB 086H ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; PSEUDO DMA DATA PORT
.DB _PCAT ; MODE=
;
FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED)
FDCBM .DB 0 ; FDC ID BITMAP
FDCLBL .DW 0 ; POINTER TO ACTIVE FDC LABEL STRING
@ -413,16 +427,17 @@ FDCCFG .DW 0 ; POINTER TO ACTIVE CFG DATA
FSS_MENU:
.TEXT "\r\n"
.TEXT "SELECT FLOPPY DISK CONTROLLER:\r\n"
.TEXT " (0) Exit\r\n"
.TEXT " (1) Disk IO ECB Board\r\n"
.TEXT " (2) Disk IO 3 ECB Board\r\n"
.TEXT " (3) Zeta SBC Onboard FDC\r\n"
.TEXT " (4) Zeta 2 SBC Onboard FDC\r\n"
.TEXT " (5) Dual IDE ECB Board\r\n"
.TEXT " (6) N8 Onboard FDC\r\n"
.TEXT " (7) RC2014 SMC (SMB)\r\n"
.TEXT " (8) RC2014 WDC (SMB)\r\n"
.TEXT " (9) SmallZ80 Expansion\r\n"
.TEXT " (A) Disk IO ECB Board\r\n"
.TEXT " (B) Disk IO 3 ECB Board\r\n"
.TEXT " (C) Zeta SBC Onboard FDC\r\n"
.TEXT " (D) Zeta 2 SBC Onboard FDC\r\n"
.TEXT " (E) Dual IDE ECB Board\r\n"
.TEXT " (F) N8 Onboard FDC\r\n"
.TEXT " (G) RC2014 SMC (SMB)\r\n"
.TEXT " (H) RC2014 WDC (SMB)\r\n"
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (X) Exit\r\n"
.TEXT "=== OPTION ===> $\r\n"
;
;===============================================================================
@ -1499,8 +1514,9 @@ MD_MAP:
.DB %00000001 ; DIDE POLL
.DB %00000001 ; N8 POLL
.DB %00000001 ; RCSMC POLL
; .DB %00000001 ; RCWDC POLL
.DB %00000001 ; RCWDC POLL
.DB %00000001 ; SMZ80 POLL
.DB %00000001 ; DYNO POLL
;
; MEDIA DESCRIPTION BLOCK
;
@ -1861,7 +1877,7 @@ FM_DRAW0B: ; ZETA, DIO3
LD A,(FST_DOR)
AND 00000010B
JR FM_DRAW1
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD A,(FST_DOR)
AND 11110000B
JR FM_DRAW1
@ -2014,7 +2030,7 @@ FM_MOTOR0B: ; ZETA, DIO3
LD A,(FST_DOR)
AND 00000010B
JR FM_MOTOR1
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD A,(FST_DOR)
AND 11110000B
JR FM_MOTOR1
@ -2753,7 +2769,7 @@ FC_INIT1: ; DIO
FC_INIT2: ; ZETA, DIO3
LD A,(FCD_DORB)
JR FC_INIT5
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD A,(FCD_DORC)
JR FC_INIT5
FC_INIT4: ; WDSMC
@ -2797,7 +2813,7 @@ FC_RESETFDC1: ; ZETA, DIO3, RCSMC
POP AF
OUT (C),A
JR FC_RESETFDC3
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD A,0
OUT (C),A
LD A,(FST_DOR)
@ -2824,7 +2840,7 @@ FC_PULSETC:
;RES 0,A
;OUT (C),A
;JR FC_PULSETC2
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
;LD C,(IY+CFG_TC)
;IN A,(C)
;JR FC_PULSETC2
@ -2856,7 +2872,7 @@ FC_MOTORON2: ; ZETA, DIO3
LD HL,FST_DOR ; POINT TO FDC_DOR
SET 1,(HL)
JR FC_MOTORON5
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD HL,FST_DOR ; POINT TO FDC_DOR
LD A,(HL) ; START WITH CURRENT DOR
AND 11111100B ; GET RID OF ANY ACTIVE DS BITS
@ -2920,7 +2936,7 @@ FC_MOTOROFF2: ; ZETA, DIO3
LD HL,FST_DOR ; POINT TO FDC_DOR
RES 1,(HL)
JR FC_MOTOROFF5
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO
LD HL,FST_DOR ; POINT TO FDC_DOR
LD A,DORC_INIT
LD (HL),A
@ -3786,7 +3802,7 @@ DORB_BR500 .EQU 10100000B ; 500KBPS
;
DORB_INIT .EQU DORB_BR250
;
; *** DIDE/N8/ZETA2/RCWDC/SMZ80 ***
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO ***
;
DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
;

13
Source/Apps/FDU/FDU.txt

@ -1,9 +1,9 @@
================================================================
Floppy Disk Utility (FDU) v5.3 for RetroBrew Computers
Disk IO / Zeta / Dual-IDE / N8 / RC2014 / SmallZ80
Disk IO / Zeta / Dual-IDE / N8 / RC2014 / SmallZ80 / Dyno
================================================================
Updated September 5, 2018
Updated January 5, 2020
by Wayne Warthen (wwarthen@gmail.com)
Application to test the hardware functionality of the Floppy
@ -77,6 +77,7 @@ supported:
- RC2014 w/ SMC
- RC2014 w/ WDC
- SmallZ80
- Dyno
You must be using either a RomWBW or UBA based OS version.
@ -95,7 +96,7 @@ Finally, you will need a floppy drive connected via an
appropriate cable:
Disk IO - no twist in cable, drive unit 0/1 must be selected by jumper on drive
DISK IO 3, Zeta, Zeta 2, RC2014 - cable with twist, unit 0 after twist, unit 1 before twist
DISK IO 3, Zeta, Zeta 2, RC2014, Dyno - cable with twist, unit 0 after twist, unit 1 before twist
DIDE, N8, Mark IV, SmallZ80 - cable with twist, unit 0 before twist, unit 1 after twist
Note that FDU does not utilize your systems ROM or OS to
@ -154,6 +155,9 @@ JP2 (TC): 2-3.
SmallZ80 does not have any relevant jumper settings. The
hardwired I/O ranges are assumed in the code.
Dyno does not have any relevant jumper settings. The
hardwired I/O ranges are assumed in the code.
Modes of Operation
------------------
@ -505,3 +509,6 @@ WW 9/5/2018: v5.3
condition is no longer considered an error, but a successful end of
operation.
- Added support for SmallZ80
WW 5/1/2020: v5.4
- Added support for Dyno (based on work by Steve Garcia)

2
Source/CBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.22"
#DEFINE BIOSVER "2.9.2-pre.25"

28
Source/CPM3/@banks.txt

@ -1,28 +0,0 @@
COMMON 8F ??
CPMSYS 8E 00
HBIOS 8D ??
TPA 8C 01
BUFS 8B 02
8D:7000 -> 8E:0300
00 -> 8E
01 -> 8C
02 -> 8B
03 -> 8A
...
if bnk = 0, then hbbnk = 8EH (BID_USR)
else hbbnk = 8DH (BID_BIOS) - bnk
or a
jr z,bank0
neg ; 2 -> -2
add 8DH ; 8D - 2 = 8B
jp HBX_SETBNK
bank0:
ld a,(8EH)
jp HBX_SETBNK
ret

23
Source/CPM3/Build.cmd

@ -24,7 +24,7 @@ rem pause
rem Resident CPM3
echo.
echo.
echo *** Resident BIOS ***
echo *** Resident CPM3 BIOS ***
echo.
copy optres.lib options.lib
copy genres.dat gencpm.dat
@ -43,7 +43,7 @@ rem pause
rem Banked CPM3
echo.
echo.
echo *** Banked BIOS ***
echo *** Banked CPM3 BIOS ***
echo.
copy optbnk.lib options.lib
copy genbnk.dat gencpm.dat
@ -59,6 +59,25 @@ zx GENCPM -AUTO -DISPLAY
copy cpm3.sys cpm3bnk.sys
rem pause
rem Banked ZPM3
echo.
echo.
echo *** Banked ZPM3 BIOS ***
echo.
copy optzpm.lib options.lib
copy genbnk.dat gencpm.dat
zx RMAC -BIOSKRNL
zx RMAC -SCB
zx Z80ASM -BOOT/MF
zx Z80ASM -CHARIO/MF
zx Z80ASM -MOVE/MF
zx Z80ASM -DRVTBL/MF
zx Z80ASM -DISKIO/MF
zx LINK -ZPMBIOS3[B]=BIOSKRNL,SCB,BOOT,CHARIO,MOVE,DRVTBL,DISKIO
rem zx GENCPM -AUTO -DISPLAY
rem copy cpm3.sys zpm3.sys
rem pause
rem *** Resident ***
rem copy cpm3res.sys cpm3.sys
rem copy genres.dat getcpm.dat

1
Source/CPM3/Clean.cmd

@ -3,6 +3,7 @@ setlocal
if exist bios3.spr del bios3.spr
if exist bnkbios3.spr del bnkbios3.spr
if exist zpmbios3.spr del zpmbios3.spr
if exist *.rel del *.rel
if exist cpmldr.com del cpmldr.com
if exist *.err del *.err

35
Source/CPM3/biosldr.z80

@ -64,13 +64,15 @@ boot1:
call writestr
call cin
call cout
push af
call cout
ld de,crlf
call writestr
pop af
ld sp,(stksav)
sub '0'
jr c,boot1
cp 10 ; !!! Need to test against max disk unit num !!!
@ -118,9 +120,6 @@ dsk$login1:
inc hl
ld (hl),d ; udpate MSB
ld sp,(stksav)
ret
wboot:
@ -253,41 +252,19 @@ xmove:
halt
cin:
; save incoming registers (af is output)
push bc
push de
push hl
; input character from console via hbios
ld c,0D0H ; console unit to c
ld b,00H ; hbios func: input char
call 0FFF0H ; hbios reads character
ld a,e ; move character to a for return
; restore registers (af is output)
pop hl
pop de
pop bc
ret
cout:
; save all incoming registers
push af
push bc
push de
push hl
; output character to console via hbios
ld e,a ; output char to e
ld c,0D0H ; console unit to c
ld b,01H ; hbios func: output char
call 0FFF0H ; hbios outputs character
; restore all registers
pop hl
pop de
pop bc
pop af
ret
writestr:
@ -296,7 +273,9 @@ writestr1:
ld a,(de)
cp '$' ; test for string terminator
jp z,writestr2
push de
call cout
pop de
inc de
jp writestr1
writestr2:
@ -473,7 +452,7 @@ alvbuf ds 512 ; length (ALV) = ((DSM+1)/4)
dirbuf ds 512 ; sector buffer
dtabuf ds 512 ; sector buffer
ds 32
ds 64
stack equ $
stksav dw 0

184
Source/CPM3/boot.z80

@ -12,6 +12,7 @@
extrn dph0
extrn @dtbl,@ctbl
extrn @date,@hour,@min,@sec
extrn @srch1
include ver.inc
@ -37,7 +38,7 @@ tpa$bank equ 0
if banked
; Clone page zero from bank 0 to additional banks
ld b,2 ; last bank
ld b,3 ; last bank
ld c,0 ; src bank
init$2:
push bc ; save bank id's
@ -110,7 +111,6 @@ cinit$3:
ld (hl),0 ; Set table terminator
dinit:
; loop through all disk devices to count hard disk units
ld b,0F8h ; SYS GET
ld c,010h ; Disk Drive Unit Count
@ -119,12 +119,12 @@ dinit:
ld a,b ; count to a
or a ; set flags
ret z ; !!! handle zero devices (albeit poorly) !!!
;
; loop thru devices to count total hard disk volumes
push bc ; save the device count
ld c,0 ; use c as device list index
ld e,0 ; init e for hard disk volume count
;
dinit2:
push bc ; save loop control
call dinit3 ; check drive
@ -133,7 +133,7 @@ dinit2:
djnz dinit2 ; loop
pop bc ; restore unit count in b
jr dinit4 ; continue
;
dinit3:
push de ; save de (hard disk volume counter)
ld b,017h ; hbios func: report device info
@ -144,7 +144,7 @@ dinit3:
ret c ; nope, return
inc e ; increment hard disk count
ret ; and return
;
dinit4: ; set slices per volume (hdspv) based on hard disk volume count
ld a,e ; hard disk volume count to a
ld e,8 ; assume 8 slices per volume
@ -154,20 +154,19 @@ dinit4: ; set slices per volume (hdspv) based on hard disk volume count
dec a ; dec accum to check for count = 2
jr z,dinit5 ; yes, skip ahead to implement 4 hdspv
ld e,2 ; in all other cases, we use 2 hdspv
;
dinit5:
ld a,e ; slices per volume value to accum
ld (hdspv),a ; save it
;
; setup to enumerate devices to build drvmap
ld b,0F8h ; SYS GET
ld c,010h ; Disk Drive Unit Count
rst 08 ; e := disk unit count
ld b,e ; count to b
ld c,0 ; use c as device list index
;ld hl,dph0 ; point to first dph
ld hl,0 ; dph index
;
dinit6: ; loop thru all units available
push bc ; preserve loop control
push hl ; preserve dph pointer
@ -197,9 +196,8 @@ dinit6a:
ld (hl),a ; zero msb
inc hl ; next byte
djnz dinit6a
ret ; finished
;
dinit7: ; process unit
ld e,0 ; initialize slice index
ld b,1 ; default loop counter
@ -209,7 +207,7 @@ dinit7: ; process unit
jr c,dinit8 ; nope, leave loop count at 1
ld a,(hdspv) ; get slices per volume to accum
ld b,a ; move to b for loop counter
;
dinit8:
; d=unit, e=slice, l=dph#
ld a,l ; dph # to accum
@ -233,12 +231,17 @@ dinit8:
djnz dinit8 ; loop till done with unit
ret
addhla:
add a,l
ld l,a
ret nc
inc h
ret
; RomWBW CBIOS page zero stamp starts at $40
; $40-$41: Marker ('W', ~'W')
; $42-$43: Version bytes: major/minor, update/patch
; $44-$45: CBIOS Extension Info address
stploc equ 40h
stpimg db 'W',~'W' ; marker
db rmj << 4 | rmn ; first byte of version info
db rup << 4 | rtp ; second byte of version info
dw cbx ; address of cbios ext data
stpsiz equ $ - stpimg
cseg ; boot loading most be done from resident memory
@ -246,8 +249,34 @@ addhla:
; called CCP.COM on the system drive.
?ldccp:
if zpm
; Swap A: and system drive (make A: the system drive)
ld bc,(@dtbl) ; get drive A DPH
ld hl,@dtbl ; point to boot drive DPH
ld a,(@sysdr)
rlca
call addhla
ld e,(hl) ; set boot drive to drive A DPH
ld (hl),c ; ... and save boot drive DPH
inc hl
ld d,(hl)
ld (hl),b
ld (@dtbl),de ; set drive a DPH to boot drive
xor a ; update @sysdr
ld (@sysdr),a
endif
; Force CCP to use system boot drive as initial default
ld a,(@sysdr) ; get system boot drive
ld (@ccpdr),a ; set CCP current drive
; First time, load the CCP.COM file into TPA
ld a,(@sysdr) ; get system boot drive
;ld (4),a ; save in page zero???
inc a ; drive + 1 for FCB
ld (ccp$fcb),a ; stuff into FCB
add 'A' - 1 ; drive letter
@ -308,9 +337,13 @@ ld$1:
endif
; Force CCP to use system boot drive as initial default
ld a,(@sysdr) ; get system boot drive
ld (@ccpdr),a ; set CCP current drive
;; Set first search path to system boot drive
;inc a
;ld (@srch1),a
;ld e,a
;ld c,14
;call bdos
ret
@ -359,14 +392,29 @@ rl$1:
jr ?ldccp
endif
?time:
; per CP/M 3 docs, *must* preserve HL, DE
push hl
push de
; force return through time$ret
ld hl,time$ret
push hl
; branch to get or set routine
ld a,c ; get switch value
or a ; test for zero
jr nz,time$set ; 0 means get time, else set time
jr z,time$get ; 0 means get time
jr time$set ; else set time
time$ret:
; restore HL, DE
pop de
pop hl
ret
time$get:
; RTC -> cpm date/time in SCB
; read time from RTC
@ -497,6 +545,38 @@ daystbl:
dw 304 ; November
dw 334 ; December
; RTC time buffer (all values packed bcd)
tim$buf:
tim$yr db 80h
tim$mon db 05h
tim$day db 10h
tim$hr db 01h
tim$min db 02h
tim$sec db 03h
open:
ld c,15
jp bdos
setdma:
ld c,26
jp bdos
setmulti:
ld c,44
jp bdos
read:
ld c,20
jp bdos
addhla:
add a,l
ld l,a
ret nc
inc h
ret
bcd2bin:
; convert A from packed bcd to binary
push bc
@ -534,21 +614,26 @@ bin2bcd1:
pop bc
ret
open:
ld c,15
jp bdos
if zpm
setdma:
ld c,26
jp bdos
signon$msg db 13,10,'ZPM3'
if banked
db ' [BANKED]'
endif
db ' on HBIOS v'
biosver
db 13,10,13,10,0
ccp$msg db 13,10,'BIOS Err on '
ccp$msg$drv db '?'
db ': No ZCCP.COM file',0
setmulti:
ld c,44
jp bdos
read:
ld c,20
jp bdos
ccp$fcb db 0,'ZCCP ','COM',0,0,0,0
ds 16
fcb$nr db 0,0,0
else
signon$msg db 13,10,'CP/M v3.0'
if banked
@ -557,7 +642,7 @@ signon$msg db 13,10,'CP/M v3.0'
db ' on HBIOS v'
biosver
db 13,10,13,10,0
ccp$msg db 13,10,'BIOS Err on '
ccp$msg$drv db '?'
db ': No CCP.COM file',0
@ -567,30 +652,11 @@ ccp$fcb db 0,'CCP ','COM',0,0,0,0
ds 16
fcb$nr db 0,0,0
endif
@bootdu db 0
hdspv db 2 ; slices per volume for hard disks (must be >= 1)
; RTC time buffer (all values packed bcd)
tim$buf:
tim$yr db 0
tim$mon db 0
tim$day db 0
tim$hr db 0
tim$min db 0
tim$sec db 0
; RomWBW CBIOS page zero stamp starts at $40
; $40-$41: Marker ('W', ~'W')
; $42-$43: Version bytes: major/minor, update/patch
; $44-$45: CBIOS Extension Info address
stploc equ 40h
stpimg db 'W',~'W' ; marker
db rmj << 4 | rmn ; first byte of version info
db rup << 4 | rtp ; second byte of version info
dw cbx ; address of cbios ext data
stpsiz equ $ - stpimg
; The following section contains key information and addresses for the
; RomWBW CBIOS. A pointer to the start of this section is stored with
; with the CBX data in page zero at $44 (see above).

4
Source/CPM3/genbnk.dat

@ -3,12 +3,12 @@ PAGWID = 4F
PAGLEN = 17
BACKSPC = N
RUBOUT = N
BOOTDRV = C
BOOTDRV = A
MEMTOP = FD
BNKSWT = Y
COMBAS = 80
LERROR = Y
NUMSEGS = 02
NUMSEGS = 03
MEMSEG00 = 01,43,00
MEMSEG01 = 0E,72,02
MEMSEG02 = 01,7F,03

2
Source/CPM3/genres.dat

@ -3,7 +3,7 @@ PAGWID = 4F
PAGLEN = 17
BACKSPC = N
RUBOUT = N
BOOTDRV = C
BOOTDRV = A
MEMTOP = FD
BNKSWT = N
COMBAS = 00

2
Source/CPM3/optbnk.lib

@ -4,3 +4,5 @@ true equ -1
false equ not true
banked equ true
zpm equ false

2
Source/CPM3/optres.lib

@ -4,3 +4,5 @@ true equ -1
false equ not true
banked equ false
zpm equ false

9
Source/CPM3/optzpm.lib

@ -0,0 +1,9 @@
; global assembler options for BANKED BIOS
; with Boot Drive swapped into Drive A
true equ -1
false equ not true
banked equ true
zpm equ true

5
Source/CPM3/scb.asm

@ -5,6 +5,7 @@
public @mltio, @ermde, @erdsk, @media, @bflgs
public @date, @hour, @min, @sec, ?erjmp, @mxtpa
public @ccpdr
public @srch1, @srch2, @srch3, @srch4
scb$base equ 0FE00H ; Base of the SCB
@ -34,6 +35,10 @@ scb$base equ 0FE00H ; Base of the SCB
@MLTIO equ scb$base+4Ah ; Current Multi-Sector Count
; (byte,r/w)
@ERMDE equ scb$base+4Bh ; BDOS Error Mode (byte, r/o)
@SRCH1 equ scb$base+4Ch ; BDOS Drive Search Chain 1
@SRCH2 equ scb$base+4Dh ; BDOS Drive Search Chain 2
@SRCH3 equ scb$base+4Eh ; BDOS Drive Search Chain 3
@SRCH4 equ scb$base+4Fh ; BDOS Drive Search Chain 4
@ERDSK equ scb$base+51h ; BDOS Error Disk (byte,r/o)
@MEDIA equ scb$base+54h ; Set by BIOS to indicate
; open door (byte,r/w)

2
Source/CPM3/ver.inc

@ -3,5 +3,5 @@ rmn equ 9
rup equ 2
rtp equ 0
biosver macro
db "2.9.2-pre.21"
db "2.9.2-pre.25"
endm

BIN
Source/Doc/Hard Disk Anatomy.vsd

Binary file not shown.

2
Source/HBIOS/Build.ps1

@ -20,7 +20,7 @@ param([string]$Platform = "", [string]$Config = "", [string]$RomSize = "512", [s
# UNA BIOS is simply imbedded, it is not built here.
#
$PlatformListZ80 = "SBC", "ZETA", "ZETA2", "RCZ80", "EZZ80", "UNA"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO"
#
# Establish the build platform. It may have been passed in on the command line. Validate

39
Source/HBIOS/Config/DYNO_std.asm

@ -0,0 +1,39 @@
;
;==================================================================================================
; DYNO STANDARD CONFIGURATION
;==================================================================================================
;
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
; YOUR FILE IN THE BUILD PROCESS.
;
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
; SETTINGS.
;
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
; DIRECTORIES ABOVE THIS ONE).
;
#include "cfg_dyno.asm"
;
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
;
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_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;ASCI0CFG .SET SER_115200_8N1 ; ASCI 0: SERIAL LINE CONFIG
;ASCI1CFG .SET SER_115200_8N1 ; ASCI 1: SERIAL LINE CONFIG
;
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)

370
Source/HBIOS/bqrtc.asm

@ -0,0 +1,370 @@
;==================================================================================================
; Benchmark BQ4845P RTC Driver
;==================================================================================================
; Register Addresses (HEX / BCD):
; +---+-----+--------------+-------------------+------------------+----------------+
; |ADR| D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | RANGE | REGISTER |
; +---+-----+--------------+-------------------+------------------+----------------+
; | 0 | 0 | 10-Second | 1-Second | 00-59 | Seconds |
; +---+-----+----+---------+-------------------+------------------+----------------+
; | | ALM1|ALM2| | | | |
; | 1 | | 10-Second | 1-Second | 00-59 | Seconds Alarm |
; +---+-----+--------------+-------------------+------------------+----------------+
; | 2 | 0 | 10-Minute | 1-Minute | 00-59 | Minutes |
; +---+-----+----+---------+-------------------+------------------+----------------+
; | | ALM1|ARM0| | | | |
; | 3 | | 10-Minute | 1-Minute | 00-59 | Minutes Alarm |
; +---+-----+----+---------+-------------------+------------------+----------------+
; | 4 |PM/AM| 0 | 10-Hour | 1-Hour |01-12 AM/81-92 PM | Hours |
; +---+-----+----+----+----+-------------------+------------------+----------------+
; | | ALM1| | | | | |
; | 5 |PM/AM|ALM0| 10-Hour | 1-Hour |01-12 AM/81-92 PM | Hours Alarm |
; +---+-----+----+----+----+-------------------+------------------+----------------+
; | 6 | 0 | 0 | 10-Day | 1-Day | 01-31 | Day |
; +---+-----+----+----+----+-------------------+------------------+----------------+
; | 7 | ALM1|ALM0| 10-day | 1-Day | 01-31 | Day Alarm |
; +---+-----+----+----+----+----+--------------+------------------+----------------+
; | 8 | 0 | 0 | 0 | 0 | 0 | Day Of Week | 01-07 | Day Of Week |
; +---+-----+----+----+----+----+--------------+------------------+----------------+
; | 9 | 0 | 0 | 0 |10Mo| 1-Month | 01-12 | Month |
; +---+-----+----+----+----+-------------------+------------------+----------------+
; | A | 10-Year | 1-Year | 00-99 | Year |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; | B | * | WD2| WD1| WD0| RS3| RS2| RS1| RS0| | Rates |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; | C | * | * | * | * | AIE| PIE|PWRE| ABE| | Interrupt |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; | D | * | * | * | * | AF | PF |PWRF| BVF| | Flags |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; | E | * | * | * | * | UTI|STOP|2412| DSE| | Control |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; | F | * | * | * | * | * | * | * | * | | Unused |
; +---+-----+----+----+----+----+----+----+----+------------------+----------------+
; * = Unused bits; unwritable and read as 0.
; 0 = should be set to 0 for valid time/calendar range.
; Clock calendar data is BCD. Automatic leap year adjustment.
; PM/AM = 1 for PM; PM/AM = 0 for AM.
; DSE = 1 enable daylight savings adjustment.
; 24/12 = 1 enable 24-hour data representation; 24/12 = 0 enables 12-hour data representation.
; Day-Of-Week coded as Sunday = 1 through Saturday = 7.
; BVF = 1 for valid battery.
; STOP = 1 turns the RTC on; STOP = 0 stops the RTC in back-up mode.
; Constants
BQRTC_SEC .EQU BQRTC_BASE + $00
BQRTC_SEC_ALM .EQU BQRTC_BASE + $01
BQRTC_MIN .EQU BQRTC_BASE + $02
BQRTC_MIN_ALM .EQU BQRTC_BASE + $03
BQRTC_HOUR .EQU BQRTC_BASE + $04
BQRTC_HOUR_ALM .EQU BQRTC_BASE + $05
BQRTC_DAY .EQU BQRTC_BASE + $06
BQRTC_DAY_ALM .EQU BQRTC_BASE + $07
BQRTC_WEEK_DAY .EQU BQRTC_BASE + $08
BQRTC_MONTH .EQU BQRTC_BASE + $09
BQRTC_YEAR .EQU BQRTC_BASE + $0A
BQRTC_RATE .EQU BQRTC_BASE + $0B
BQRTC_INTERRUPT .EQU BQRTC_BASE + $0C
BQRTC_FLAGS .EQU BQRTC_BASE + $0D
BQRTC_CONTROL .EQU BQRTC_BASE + $0E
BQRTC_UNUSED .EQU BQRTC_BASE + $0F
BQRTC_HIGH .EQU %11110000
BQRTC_LOW .EQU %00001111
BQRTC_WD .EQU %01110000
BQRTC_RS .EQU %00001111
BQRTC_BVF .EQU %00000001
BQRTC_PWRF .EQU %00000010
BQRTC_PF .EQU %00000100
BQRTC_AF .EQU %00001000
BQRTC_DSE .EQU %00000001
BQRTC_2412 .EQU %00000010
BQRTC_STOP .EQU %00000100
BQRTC_UTI .EQU %00001000
BQRTC_BUFSIZE .EQU 6 ; 6 BYTE BUFFER (YYMMDDHHMMSS)
; RTC Device Initialization Entry
BQRTC_INIT:
CALL NEWLINE ; Formatting
PRTS("BQRTC: IO=0x$")
LD A, BQRTC_BASE
CALL PRTHEXBYTE
LD A, BQRTC_DSE | BQRTC_2412 | BQRTC_UTI
OUT0 (BQRTC_CONTROL), A ; Enable Daylight Savings and 24 Hour
XOR A ; Zero A
OUT0 (BQRTC_RATE), A ; Disable Periodic Interrupt Rate
OUT0 (BQRTC_INTERRUPT), A ; Disable Interrupts
CALL BQRTC_LOAD
; DISPLAY CURRENT TIME
PRTS(" $")
LD A, (BQRTC_BUF_MON)
CALL PRTHEXBYTE
PRTS("/$")
LD A, (BQRTC_BUF_DAY)
CALL PRTHEXBYTE
PRTS("/$")
LD A, (BQRTC_BUF_YEAR)
CALL PRTHEXBYTE
PRTS(" $")
LD A, (BQRTC_BUF_HOUR)
CALL PRTHEXBYTE
PRTS(":$")
LD A, (BQRTC_BUF_MIN)
CALL PRTHEXBYTE
PRTS(":$")
LD A, (BQRTC_BUF_SEC)
CALL PRTHEXBYTE
XOR A ; Signal success
RET
; RTC Device Function Dispatch Entry
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; B: Function (IN)
BQRTC_DISPATCH:
LD A, B ; Get requested function
AND $0F ; Isolate Sub-Function
JP Z, BQRTC_GETTIM ; Get Time
DEC A
JP Z, BQRTC_SETTIM ; Set Time
DEC A
JP Z, BQRTC_GETBYT ; Get NVRAM Byte Value
DEC A
JP Z, BQRTC_SETBYT ; Set NVRAM Byte Value
DEC A
JP Z, BQRTC_GETBLK ; Get NVRAM Data Block Value
DEC A
JP Z, BQRTC_SETBLK ; Set NVRAM Data Block Value
DEC A
JP Z, BQRTC_GETALM ; Get Alarm
DEC A
JP Z, BQRTC_SETALM ; Set Alarm
;
; NVRAM FUNCTIONS ARE NOT AVAILABLE
;
BQRTC_GETBYT:
BQRTC_SETBYT:
BQRTC_GETBLK:
BQRTC_SETBLK:
CALL PANIC
; RTC Get Time
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (OUT)
; Buffer format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
BQRTC_GETTIM:
EX DE, HL
CALL BQRTC_LOAD
; Now copy to read destination (Interbank Save)
LD A, BID_BIOS ; Copy from BIOS bank
LD (HB_SRCBNK), A ; Set it
LD A, (HB_INVBNK) ; Copy to current user bank
LD (HB_DSTBNK), A ; Set it
LD BC, BQRTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
;
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;
; RTC Set Time
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (IN)
; Buffer Format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
BQRTC_SETTIM:
;
; Copy incoming time data to our time buffer
LD A, (HB_INVBNK) ; Copy from current user bank
LD (HB_SRCBNK), A ; Set it
LD A, BID_BIOS ; Copy to BIOS bank
LD (HB_DSTBNK), A ; Set it
LD DE, BQRTC_BUF ; Destination Address
LD BC, BQRTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
; Write to clock
LD HL, BQRTC_BUF
CALL BQRTC_SUSPEND
LD A, (HL)
OUT0 (BQRTC_YEAR), A ; Write Year
INC HL
LD A, (HL)
OUT0 (BQRTC_MONTH), A ; Write Month
INC HL
LD A, (HL)
OUT0 (BQRTC_DAY), A ; Write Day
INC HL
LD A, (HL)
OUT0 (BQRTC_HOUR), A ; Write Hour
INC HL
LD A, (HL)
OUT0 (BQRTC_MIN), A ; Write Minute
INC HL
LD A, (HL)
OUT0 (BQRTC_SEC), A ; Write Second
CALL BQRTC_RESUME
; clean up and return
XOR A ; Signal success
RET ; And return
; RTC Get Alarm
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (OUT)
; Buffer format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
BQRTC_GETALM:
EX DE, HL
LD HL, BQRTC_BUF
PUSH HL ; Save address of source buffer
CALL BQRTC_SUSPEND
XOR A
LD (HL), A ; Read Year
INC HL
LD (HL), A ; Read Month
INC HL
IN0 A, (BQRTC_DAY_ALM) ; Read Day
LD (HL), A
INC HL
IN0 A, (BQRTC_HOUR_ALM) ; Read Hour
LD (HL), A
INC HL
IN0 A, (BQRTC_MIN_ALM) ; Read Minute
LD (HL), A
INC HL
IN0 A, (BQRTC_SEC_ALM) ; Read Second
LD (HL), A
CALL BQRTC_RESUME
POP HL ; Restore address of source buffer
; Now copy to read destination (Interbank Save)
LD A, BID_BIOS ; Copy from BIOS bank
LD (HB_SRCBNK), A ; Set it
LD A, (HB_INVBNK) ; Copy to current user bank
LD (HB_DSTBNK), A ; Set it
LD BC, BQRTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
;
; CLEAN UP AND RETURN
XOR A ; SIGNAL SUCCESS
RET ; AND RETURN
;
; RTC Set Alarm
; A: Result (OUT), 0=OK, Z=OK, NZ=Error
; HL: Date/Time Buffer (IN)
; Buffer Format is BCD: YYMMDDHHMMSS
; 24 hour time format is assumed
;
BQRTC_SETALM:
; Copy incoming time data to our time buffer
LD A, (HB_INVBNK) ; Copy from current user bank
LD (HB_SRCBNK), A ; Set it
LD A, BID_BIOS ; Copy to BIOS bank
LD (HB_DSTBNK), A ; Set it
LD DE, BQRTC_BUF ; Destination Address
LD BC, BQRTC_BUFSIZE ; Length is 6 bytes
#IF (INTMODE == 1)
DI
#ENDIF
CALL HB_BNKCPY ; Copy the clock data
#IF (INTMODE == 1)
EI
#ENDIF
; Write to clock
LD HL, BQRTC_BUF_DAY
CALL BQRTC_SUSPEND
LD A, (HL)
OUT0 (BQRTC_DAY_ALM), A ; Write Day
INC HL
LD A, (HL)
OUT0 (BQRTC_HOUR_ALM), A ; Write Hour
INC HL
LD A, (HL)
OUT0 (BQRTC_MIN_ALM), A ; Write Minute
INC HL
LD A, (HL)
OUT0 (BQRTC_SEC_ALM), A ; Write Second
CALL BQRTC_RESUME
; clean up and return
XOR A ; Signal success
RET ; And return
BQRTC_SUSPEND:
IN0 A, (BQRTC_CONTROL) ; Suspend Clock
OR BQRTC_UTI
OUT0 (BQRTC_CONTROL), A
RET
BQRTC_RESUME:
IN0 A, (BQRTC_CONTROL) ; Resume Clock
AND ~BQRTC_UTI
OUT0 (BQRTC_CONTROL), A
RET
BQRTC_LOAD:
LD HL, BQRTC_BUF
PUSH HL ; Save address of source buffer
CALL BQRTC_SUSPEND
IN0 A, (BQRTC_YEAR) ; Read Year
LD (HL), A
INC HL
IN0 A, (BQRTC_MONTH) ; Read Month
LD (HL), A
INC HL
IN0 A, (BQRTC_DAY) ; Read Day
LD (HL), A
INC HL
IN0 A, (BQRTC_HOUR) ; Read Hour
LD (HL), A
INC HL
IN0 A, (BQRTC_MIN) ; Read Minute
LD (HL), A
INC HL
IN0 A, (BQRTC_SEC) ; Read Second
LD (HL), A
CALL BQRTC_RESUME
POP HL ; Restore address of source buffer
RET
; Working Variables
BQRTC_BUF:
BQRTC_BUF_YEAR: .DB 0 ; Year
BQRTC_BUF_MON: .DB 0 ; Month
BQRTC_BUF_DAY: .DB 0 ; Day
BQRTC_BUF_HOUR: .DB 0 ; Hour
BQRTC_BUF_MIN: .DB 0 ; Minute
BQRTC_BUF_SEC: .DB 0 ; Second

133
Source/HBIOS/cfg_dyno.asm

@ -0,0 +1,133 @@
;
;==================================================================================================
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR RC2014
;==================================================================================================
;
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
; UNDER THIS DIRECTORY.
;
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
; FOR THE PLATFORM.
;
#DEFINE PLATFORM_NAME "DYNO"
;
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
;
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT
BOOT_TIMEOUT .EQU 20 ; AUTO BOOT TIMEOUT IN SECONDS, 0 FOR IMMEDIATE BOOT
BOOT_DEFAULT .EQU 'Z' ; AUTO BOOT SELECTION TO INVOKE AT TIMEOUT
;
CPUOSC .EQU 18432000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .EQU MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
RAMBIAS .EQU 512 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
MPGSEL_0 .EQU $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
MPGSEL_1 .EQU $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
MPGSEL_2 .EQU $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
MPGSEL_3 .EQU $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
MPGENA .EQU $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
;
Z180_BASE .EQU $C0 ; Z180: I/O BASE ADDRESS FOR INTERNAL REGISTERS
Z180_CLKDIV .EQU 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .EQU 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .EQU 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
RTCIO .EQU $0C ; RTC LATCH REGISTER ADR
;
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
;
CTCENABLE .EQU FALSE ; ENABLE ZILOG CTC SUPPORT
;
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
;
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDPORT .EQU $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
;
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
;
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
;
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU TRUE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;
ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
ASCI0CFG .EQU DEFSERCFG ; ASCI 0: SERIAL LINE CONFIG
ASCI1CFG .EQU DEFSERCFG ; ASCI 1: SERIAL LINE CONFIG
;
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
;
SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
NECENABLE .EQU FALSE ; NEC: ENABLE NEC UPD7220 VIDEO/KBD DRIVER (NEC.ASM)
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;
AYENABLE .EQU FALSE ; AY: ENABLE AY PSG SOUND DRIVER
AYMODE .EQU AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG/N8/RCZ80/RCZ180]
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DYNO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
;
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEMODE .EQU IDEMODE_RC ; IDE: DRIVER MODE: IDEMODE_[DIO|DIDE]
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_DYNO ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD & SC ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
;
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PPI_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
;
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)

9
Source/HBIOS/cfg_ezz80.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "EASYZ80"
;
PLATFORM .EQU PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -65,6 +65,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
@ -108,7 +111,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -122,7 +125,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_master.asm

@ -10,7 +10,7 @@
;
#DEFINE PLATFORM_NAME "ROMWBW"
;
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -87,6 +87,9 @@ DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -149,7 +152,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -164,7 +167,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU FALSE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_NONE ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_NONE ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_mk4.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "MARK IV"
;
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -72,6 +72,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -104,7 +107,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -119,7 +122,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_DIO3 ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_DIO3 ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_n8.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "N8"
;
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -75,6 +75,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU FALSE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -107,7 +110,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -122,7 +125,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU FALSE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_N8 ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_N8 ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_rcz180.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "RC2014"
;
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -68,6 +68,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;
ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
@ -113,7 +116,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -127,7 +130,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_rcz80.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "RC2014"
;
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -64,6 +64,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
@ -117,7 +120,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -131,7 +134,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_sbc.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "SBC"
;
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -66,6 +66,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -107,7 +110,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -122,7 +125,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU FALSE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_scz180.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "SCZ180"
;
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -63,6 +63,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
;
ASCIENABLE .EQU TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
@ -108,7 +111,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -122,7 +125,7 @@ IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDE8BIT .EQU TRUE ; IDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_RC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

2
Source/HBIOS/cfg_una.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "UNA"
;
PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
;
BOOTTYPE .EQU BT_MENU ; BT_[MENU|AUTO], IF AUTO, BOOT DEFAULT AFTER TIMEOUT

9
Source/HBIOS/cfg_zeta.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "ZETA"
;
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU_[Z80|Z180]: CPU FAMILY
BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -60,6 +60,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -87,7 +90,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -98,7 +101,7 @@ RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

9
Source/HBIOS/cfg_zeta2.asm

@ -13,7 +13,7 @@
;
#DEFINE PLATFORM_NAME "ZETA V2"
;
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180]
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO]
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180]
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
@ -65,6 +65,9 @@ DSRTCENABLE .EQU TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
;
UARTENABLE .EQU TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
@ -92,7 +95,7 @@ MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
;
FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3]
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|DIDE|N8|DIO3|DYNO]
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
@ -103,7 +106,7 @@ RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC]
PPIDEMODE .EQU PPIDEMODE_SBC ; PPIDE: DRIVER MODE: PPIDEMODE_[SBC|DIO3|MFP|N8|RC|DYNO]
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDE8BIT .EQU FALSE ; PPIDE: USE 8-BIT TRANSFERS (CF CARDS MOSTLY)
;

20
Source/HBIOS/fd.asm

@ -46,13 +46,21 @@ FDC_MSR .EQU $50 ; 8272 MAIN STATUS REGISTER
FDC_DATA .EQU $51 ; 8272 DATA PORT
FDC_DOR .EQU $58 ; DIGITAL OUTPUT REGISTER (LATCH)
#ENDIF
#IF (FDMODE = FDMODE_RCWDC)
#IF (FDMODE == FDMODE_RCWDC)
FDC_MSR .EQU $50 ; 8272 MAIN STATUS REGISTER
FDC_DATA .EQU $51 ; 8272 DATA PORT
FDC_DOR .EQU $58 ; DIGITAL OUTPUT REGISTER
FDC_DCR .EQU $48 ; CONFIGURATION CONTROL REGISTER
FDC_TC .EQU $58 ; TERMINAL COUNT (W/ DACK)
#ENDIF
#IF (FDMODE == FDMODE_DYNO)
FDC_BASE .EQU $84
FDC_MSR .EQU FDC_BASE + $00 ; 8272 MAIN STATUS REGISTER
FDC_DATA .EQU FDC_BASE + $01 ; 8272 DATA PORT
FDC_DOR .EQU FDC_BASE + $02 ; DIGITAL OUTPUT REGISTER
FDC_DCR .EQU FDC_BASE + $03 ; CONFIGURATION CONTROL REGISTER
FDC_TC .EQU FDC_BASE + $02 ; TERMINAL COUNT (W/ DACK)
#ENDIF
;
; DISK OPERATIONS
;
@ -391,7 +399,7 @@ DOR_INIT .EQU 11100000B ; INITIAL DEFAULT LATCH VALUE
;
; *** DIDE/N8/ZETA V2 ***
;
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO))
DOR_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
DOR_BR250 .EQU DOR_INIT
DOR_BR500 .EQU DOR_INIT
@ -1227,7 +1235,7 @@ FC_SETDOR
;
; SET FST_DCR
;
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO))
;
FC_SETDCR
LD (FST_DCR),A
@ -1259,7 +1267,7 @@ FC_RESETFDC:
#IF ((FDMODE == FDMODE_ZETA) | (FDMODE == FDMODE_DIO3) | (FDMODE == FDMODE_RCSMC))
RES 7,A
#ENDIF
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO))
LD A,0
#ENDIF
CALL FC_SETDOR
@ -1274,7 +1282,7 @@ FC_RESETFDC:
; PULSE TERMCT TO TERMINATE ANY ACTIVE EXECUTION PHASE
;
FC_PULSETC:
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO))
IN A,(FDC_TC)
#ELSE
LD A,(FST_DOR)
@ -1327,7 +1335,7 @@ FC_MOTORON1:
CP C ; COMPARE TO NEW MOTOR BITS
RET Z ; SKIP DELAY, MOTOR WAS ALREADY ON
#ENDIF
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO))
; SETUP DCR FOR DIDE HARDWARE
LD A,(FCD_DCR) ; GET NEW DCR VALUE
CALL FC_SETDCR ; AND IMPLEMENT IT

15
Source/HBIOS/hbios.asm

@ -1488,6 +1488,9 @@ HB_INITTBL:
#IF (DSRTCENABLE)
.DW DSRTC_INIT
#ENDIF
#IF (BQRTCENABLE)
.DW BQRTC_INIT
#ENDIF
#IF (VDUENABLE)
.DW VDU_INIT
#ENDIF
@ -1966,6 +1969,9 @@ RTC_DISPATCH:
#ENDIF
#IF (DSRTCENABLE)
JP DSRTC_DISPATCH
#ENDIF
#IF (BQRTCENABLE)
JP BQRTC_DISPATCH
#ENDIF
;CALL PANIC
OR $FF
@ -2753,6 +2759,15 @@ SIZ_DSRTC .EQU $ - ORG_DSRTC
.ECHO " bytes.\n"
#ENDIF
;
#IF (BQRTCENABLE)
ORG_BQRTC .EQU $
#INCLUDE "bqrtc.asm"
SIZ_BQRTC .EQU $ - ORG_BQRTC
.ECHO "BQRTC occupies "
.ECHO SIZ_BQRTC
.ECHO " bytes.\n"
#ENDIF
;
#IF (ASCIENABLE)
ORG_ASCI .EQU $
#INCLUDE "asci.asm"

4
Source/HBIOS/ppide.asm

@ -25,6 +25,10 @@ PPIDE_IO_BASE .EQU $44
PPIDE_IO_BASE .EQU $80
#ENDIF
;
#IF (PPIDEMODE == PPIDEMODE_DYNO)
PPIDE_IO_BASE .EQU $4C
#ENDIF
;
PPIDE_IO_DATALO .EQU PPIDE_IO_BASE + 0 ; IDE DATA BUS LSB (8255 PORT A)
PPIDE_IO_DATAHI .EQU PPIDE_IO_BASE + 1 ; IDE DATA BUS MSB (8255 PORT B)
PPIDE_IO_CTL .EQU PPIDE_IO_BASE + 2 ; IDE ADDRESS BUS AND CONTROL SIGNALS (8255 PORT C)

6
Source/HBIOS/std.asm

@ -12,6 +12,7 @@
; 8. RCZ180 RC2014 based system with Z180 CPU
; 9. EZZ80 Easy Z80, Z80 SBC w/ RC2014 bus and CTC
; 10. SCZ180 Steve Cousins Z180 based system
; 11. DYNO Steve Garcia's Dyno Micro-ATX Motherboard
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
@ -41,6 +42,7 @@ PLT_RCZ80 .EQU 7 ; RC2014 W Z80
PLT_RCZ180 .EQU 8 ; RC2014 W/ Z180
PLT_EZZ80 .EQU 9 ; EASY Z80
PLT_SCZ180 .EQU 10 ; SCZ180
PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD
;
#IF (BIOS == BIOS_WBW)
#INCLUDE "hbios.inc"
@ -132,7 +134,7 @@ FDMODE_N8 .EQU 5 ; N8
FDMODE_DIO3 .EQU 6 ; DISKIO V3
FDMODE_RCSMC .EQU 7 ; RC2014 SMC 9266 @ $40 (SCOTT BAKER)
FDMODE_RCWDC .EQU 8 ; RC2014 WDC 37C65 @ $40 (SCOTT BAKER)
FDMODE_DYNO .EQU 9 ; DYNO WDC 37C65 @ $84
;
; IDE MODE SELECTIONS
;
@ -142,6 +144,7 @@ IDEMODE_DIDE .EQU 2 ; DUAL IDE
IDEMODE_MK4 .EQU 3 ; MARK IV ONBOARD IDE (8 BIT)
IDEMODE_RC .EQU 4 ; RC2014 CF MODULE (8 BIT) @ $10 (SPENCER OWEN)
IDEMODE_SMB .EQU 5 ; RC2014 IDE MODULE (8 BIT) @ $E0 (SCOTT BAKER)
IDEMODE_DYNO .EQU 6 ; DYNO IDE MODULE (8 BIT) @4A
;
; PPIDE MODE SELECTIONS
;
@ -151,6 +154,7 @@ PPIDEMODE_DIO3 .EQU 2 ; DISKIO V3 PARALLEL PORT
PPIDEMODE_MFP .EQU 3 ; MULTIFUNCTION / PIC
PPIDEMODE_N8 .EQU 4 ; MULTIFUNCTION / PIC
PPIDEMODE_RC .EQU 5 ; RC2014 PPIDE MODULE @ $20 (ED BRINDLEY)
PPIDEMODE_DYNO .EQU 6 ; DYNO PPIDE @ $4C
;
; SD MODE SELECTIONS
;

2
Source/HBIOS/ver.inc

@ -2,4 +2,4 @@
#DEFINE RMN 9
#DEFINE RUP 2
#DEFINE RTP 0
#DEFINE BIOSVER "2.9.2-pre.22"
#DEFINE BIOSVER "2.9.2-pre.25"

12
Source/Images/BuildFD.ps1

@ -1,6 +1,6 @@
$ErrorAction = 'Stop'
$CpmToolsPath = '../..\Tools\cpmtools'
$CpmToolsPath = '../../Tools/cpmtools'
$env:PATH = $CpmToolsPath + ';' + $env:PATH
@ -10,15 +10,15 @@ $Blank = ([byte[]](0xE5) * 1440KB)
if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'}
"Creating floppy disk images..."
for ($Dsk=0; $Dsk -lt 2; $Dsk++)
foreach ($Dsk in @("cpm3","cpm22","nzcom","ws4","zpm3","zsdos"))
{
"Generating Floppy Disk ${Dsk}..."
copy Blank.tmp fd${Dsk}.img
copy "Blank.tmp" "fd_${Dsk}.img"
for ($Usr=0; $Usr -lt 16; $Usr++)
{
if (Test-Path ("fd${Dsk}/u${Usr}/*"))
if (Test-Path ("d_${Dsk}/u${Usr}/*"))
{
$Cmd = "cpmcp -f wbw_fd144 fd${Dsk}.img fd${Dsk}/u${Usr}/*.* ${Usr}:"
$Cmd = "cpmcp -f wbw_fd144 fd_${Dsk}.img d_${Dsk}/u${Usr}/*.* ${Usr}:"
$Cmd
Invoke-Expression $Cmd
}
@ -26,7 +26,7 @@ for ($Dsk=0; $Dsk -lt 2; $Dsk++)
}
"Moving images into output directory..."
&$env:COMSPEC /c move fd*.img ..\..\Binary\
&$env:COMSPEC /c move fd_*.img ..\..\Binary\
Remove-Item *.tmp

27
Source/Images/BuildHD.ps1

@ -10,31 +10,24 @@ $Blank = ([byte[]](0xE5) * (128KB * 65))
if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'}
"Creating hard disk images..."
#for ($Dsk=0; $Dsk -lt 2; $Dsk++)
foreach ($Dsk in @("hd0","hd1","hd_cpm3"))
foreach ($Dsk in @("cpm3","cpm22","nzcom","ws4","zpm3","zsdos"))
{
"Generating Hard Disk ${Dsk}..."
for ($Slice=0; $Slice -lt 4; $Slice++)
copy "Blank.tmp" "hd_${Dsk}.img"
for ($Usr=0; $Usr -lt 16; $Usr++)
{
"Adding files to slice ${Slice}..."
copy Blank.tmp slice${Slice}.tmp
for ($Usr=0; $Usr -lt 16; $Usr++)
if (Test-Path ("d_${Dsk}/u${Usr}/*"))
{
if (Test-Path ("${Dsk}/s${Slice}/u${Usr}/*"))
{
$Cmd = "cpmcp -f wbw_hd0 slice${Slice}.tmp ${Dsk}/s${Slice}/u${Usr}/*.* ${Usr}:"
$Cmd
Invoke-Expression $Cmd
}
$Cmd = "cpmcp -f wbw_hd0 hd_${Dsk}.img d_${Dsk}/u${Usr}/*.* ${Usr}:"
$Cmd
Invoke-Expression $Cmd
}
}
"Combining slices into final disk image ${Dsk}..."
&$env:COMSPEC /c copy /b slice*.tmp ..\..\Binary\${Dsk}.img
Remove-Item slice*.tmp
}
"Moving images into output directory..."
&$env:COMSPEC /c move hd_*.img ..\..\Binary\
Remove-Item *.tmp
return

255
Source/Images/ReadMe.txt

@ -13,8 +13,8 @@ image to a floppy or hard disk (including CF and SD cards).
In summary, CP/M files are placed inside of a pre-defined Windows
directory structure. A script is then run to create the floppy and
hard disk images from the directory tree contents. The resultant
images may be copied directly to floppy or hard disk media or used
for SIMH emulator disk images.
images may be copied directly to floppy or hard disk media or used as
SIMH emulator disk images.
System Requirements
-------------------
@ -27,130 +27,97 @@ are using Windows XP, you will need to download it from Microsoft and
install it (free download).
The cpmtools toolset is used to generate the actual disk images.
This toolset is included in the distribution.
This toolset is included in the distribution, so you do not need to
download or install it.
Preparing the Source Directory Contents
---------------------------------------
The script expects your files to be found inside a specific directory
structure. Note that you will see there are some CP/M files in the
Source directory tree in the distribution. These are simply test
files I used and have no specific meaing. You will probably want to
replace them with your own files as desired.
If you look at the Images directory, you will find 4
sub-directories. fd0 and fd1 will contain the files to be placed in
the two floppy images gneerated. hd0 and hd1 will contain the files
to be used to generate the two hard disk images. There is nothing
magic about the fact that there are two of each kind of image
generated. It just seemed like a good number to the author. A quick
review of the scripts and you will see it is very easy to modify the
number of images generated if you want.
For floppy disks, the structure is:
fd0 --+--> u0
+--> u1
|
+--> u15
Above, fd0 refers to the first floppy disk image and u0...u15 refer
to the user areas on the disk. You place whatever files you want on
fd0, user 0 in the fd0\u0 directory. You will notice that not all of
the u0...u15 directories exist. The script does not care and treats
a non-existent directory as a directory with no files. The fd1
directory is exactly the same as fd0 -- it is simply the second
floppy image.
structure. The structure is:
d_xxx --+--> u0
+--> u1
+--> u2
| .
| .
| .
+--> u15
A given disk is reprsented by a directory named d_xxx where xxx can
be anything you want. Within the d_xxx directory, the CP/M user
areas are represented by subdirectories names u0 thru u15. The files
to be placed in the disk image are placed inside of the u0 thru u15
directories depending on which user area you want the file(s) to
appear. You do not need to create all of the u## subdirectories,
only the ones corresponding to the user areas you want to put files in.
To build the disk images, you run the Build.cmd batch file from a
command prompt. Build.cmd in turn invokes separate scripts to create
the floppy and hard disk images.
As distributed, you will see that there are several d_ directories
populated with files. If you look at the BuildFD.ps1 and BuildHD.ps1
scripts, you will find that the names of each of these directories is
listed. If you want to add a new d_ directory to be converted into a
disk image, you will need to add the name of your new directory to
this list. Note that each d_ directory may be turned into a floppy
image or a hard disk image or both.
At present, the scripts assume that the floppy media is 1.44MB. You
will need to modify the scripts if you want to create different media.
For hard disks, the structure has one more level:
hd0 --+--> s0 --+--> u0
| +--> u1
| |
| +--> u15
|
+--> s1 --+--> u0
| +--> u1
| |
| +--> u15
|
+--> s2 --+--> u0
| +--> u1
| |
| +--> u15
|
+--> s3 --+--> u0
+--> u1
|
+--> u15
The above uses the same concept as the floppy disk source structure,
but includes an additional directory layer to represent the first 4
slices of the hard disk. For most RomWBW builds, s0-s3 would show up
as the first 4 hard disk drive letters, frequently E: to H:.
No files should be placed in the first two layers of the tree (hd0 or
s0-s3). All files go into the lowest level of the tree (u0-u15). As
above, empty or non-existent directories are not a problem for the
script. Just fill in or create the appropriate directories. The
only constraint is the the script will only look for two hard disks
(hd0-hd1), 4 slices (s0-s4), and 16 user areas (u0-u15). The number
of hard disks and number of slices could be changed by modifying the
generation scripts.
Building the Images
-------------------
The image creation process simply traverses the directory structures
described above and builds a raw image each floppy disk or hard
disk. Note that cpmtools is used to generate the images and is
described above and builds a raw disk image for each floppy disk or
hard disk. Note that cpmtools is used to generate the images and is
included in the distribution under the Tools directory.
The scripts are intended to be run from a command prompt. Open a
command prompt and navigate to the Images directory. To build the
floppy disk images (fd0 and fd1), use the command "BuildFD". To build
the hard disk images (hd0, hd1), use the command "BuildHD". You can
use the command "BuildAll" to build both the floppy and hard disk
images in one run.
floppy disk images, use the command "BuildFD". To build the hard disk
images, use the command "BuildHD". You can use the command "Build"
to build both the floppy and hard disk images in one run.
After completion of the script, the resultant image files are placed
in the Binary directory with names such as fd0.img and hd0.img.
in the Binary directory with names such as fd_xxx.img and hd_xxx.img.
Below is sample output from building the hard disk images:
| C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW\Images>BuildHD
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images>BuildHD.cmd
| Creating work file...
| Creating hard disk images...
| Generating Hard Disk 0...
| Adding files to slice 0...
| cpmcp -f wbw_hd0 slice0.tmp Source/hd0/s0/u0/*.* 0:
| cpmcp -f wbw_hd0 slice0.tmp Source/hd0/s0/u2/*.* 2:
| Adding files to slice 1...
| cpmcp -f wbw_hd0 slice1.tmp Source/hd0/s1/u0/*.* 0:
| Adding files to slice 2...
| Adding files to slice 3...
| Combining slices into final disk image hd0...
| slice0.tmp
| slice1.tmp
| slice2.tmp
| slice3.tmp
| 1 file(s) copied.
| Generating Hard Disk 1...
| Adding files to slice 0...
| Adding files to slice 1...
| Adding files to slice 2...
| Adding files to slice 3...
| Combining slices into final disk image hd1...
| slice0.tmp
| slice1.tmp
| slice2.tmp
| slice3.tmp
| 1 file(s) copied.
| Generating Hard Disk cpm3...
| cpmcp -f wbw_hd0 hd_cpm3.img d_cpm3/u0/*.* 0:
| Generating Hard Disk cpm22...
| cpmcp -f wbw_hd0 hd_cpm22.img d_cpm22/u0/*.* 0:
| cpmcp -f wbw_hd0 hd_cpm22.img d_cpm22/u1/*.* 1:
| cpmcp -f wbw_hd0 hd_cpm22.img d_cpm22/u3/*.* 3:
| Generating Hard Disk nzcom...
| cpmcp -f wbw_hd0 hd_nzcom.img d_nzcom/u0/*.* 0:
| Generating Hard Disk ws4...
| cpmcp -f wbw_hd0 hd_ws4.img d_ws4/u0/*.* 0:
| Generating Hard Disk zpm3...
| cpmcp -f wbw_hd0 hd_zpm3.img d_zpm3/u0/*.* 0:
| cpmcp -f wbw_hd0 hd_zpm3.img d_zpm3/u10/*.* 10:
| cpmcp -f wbw_hd0 hd_zpm3.img d_zpm3/u14/*.* 14:
| cpmcp -f wbw_hd0 hd_zpm3.img d_zpm3/u15/*.* 15:
| Generating Hard Disk zsdos...
| cpmcp -f wbw_hd0 hd_zsdos.img d_zsdos/u0/*.* 0:
| cpmcp -f wbw_hd0 hd_zsdos.img d_zsdos/u1/*.* 1:
| cpmcp -f wbw_hd0 hd_zsdos.img d_zsdos/u3/*.* 3:
| Moving images into output directory...
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_cpm22.img
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_cpm3.img
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_nzcom.img
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_ws4.img
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_zpm3.img
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images\hd_zsdos.img
| 6 file(s) moved.
|
| C:\Users\WWarthen\Projects\N8VEM\Build\RomWBW\Images>
| C:\Users\Wayne\Projects\RBC\Build\RomWBW\Source\Images>
Be aware that the script always builds the image file from scratch.
It will not update the previous contents. Any contents of a
@ -165,23 +132,23 @@ with extreme caution and make sure you have backups.
To install a floppy image on floppy media, you can use the tool
called RaWriteWin. This tool is included in the Tools directory of
the distribution. This tool will write your floppy image (fd0.img or
fd1.img) to a floppy disk using a raw block transfer. The tool is
GUI based and it's operation is self explanatory.
the distribution. This tool will write your floppy image (fd_xxx.img)
to a floppy disk using a raw block transfer. The tool is GUI based
and it's operation is self explanatory.
To install a hard disk image on a CF card or SD card, you must have
the appropriate media card slot on your computer. If you do, you can
use the tool called Win32 Disk Imager. This tool is also included in
the Tools directory of the distribution. This tool will write your
hard disk image (hd0.img or hd1.img) to the designated media card.
This tool is also GUI based and self explanatory.
hard disk image (hd_xxx.img) to the designated media card. This tool
is also GUI based and self explanatory.
Use of the SIMH emulator is outside of the scope of this document.
However, if you use SIMH, you will find that you can attach the hard
disk images to the emulator with lines such as the following in your
SIMH configuration file:
| attach hdsk0 hd0.img
| attach hdsk0 hd_cpm22.img
| set hdsk0 format=HDSK
| set hdsk0 geom=T:520/N:256/S:512
| set hdsk0 wrtenb
@ -198,10 +165,82 @@ The simplest way to make a resultant image bootable is to do it from
your running CP/M system. Boot your system using the ROM selection,
then use the SYSCOPY command to make the desired drive bootable.
You would use a command like the following to make drive C bootable.
You would use a command like the following to make drive C bootable:
| B>SYSCOPY C:=CPM.SYS
Slices
------
A RomWBW CP/M filesystem is fixed at 8MB. This is because it is the
largest size filesystem supported by all common CP/M variants. Since
all modern hard disks (including SD Cards and CF Cards) are much
larger than 8MB, RomWBW supports the concept of "slices". This
simply means that you can concatenate multiple CP/M filesystems (up
to 256 of them) on a single physical hard disk and RomWBW will allow
you to assign drive letters to them and treat them as multiple
independent CP/M drives.
The disk image creation scripts in this directory will only create a
single CP/M file system (i.e., a single slice). However, you can
easily create a multi-slice disk image by merely concatenating
multiple images together. For example, if you wanted to create a 2
slice disk image that has ZSDOS in the first slice and Wordstar in
the second slice, you could use the following command from a Windows
command prompt:
| C:\RomWBW\Binary>copy /b hd_zsdos.img + hd_ws.img hd_multi.img
You can now write hd_multi.img onto your SD or CF Card and you will
have ZSDOS in the first slice and Wordstar in the second slice.
The concept of slices applies ONLY to hard disks. Floppy disks are
not large enough to support multiple slices.
Disk Images
-----------
RomWBW comes with several disk images. These disk images are
created from this directory using the process described above.
This is a brief description of the disk images:
cpm22 - DRI CP/M 2.2 (Floppy and Hard Disk)
Standard DRI CP/M 2.2 distribution files along with a few commonly
used utilities.
zsdos - ZCPR1 + ZSDOS 1.1 (Floppy and Hard Disk)
Contains ZCPR1 and ZSDOS 1.1. This is roughly equivalent to the
ROM boot contents, but provides a full set of the applications
are related files that would not all fit on the ROM drive.
nzcom - NZCOM (Floppy and Hard Disk)
Standard NZCOM distribution. Note that you will need to run the
NZCOM setup before this will run properly. You will need
to refer to the NZCOM documentation.
cpm3 - DRI CP/M3 (Floppy and Hard Disk)
Standard DRI CP/M 3 adaptation for RomWBW that is ready to run.
It can be started by running CPMLDR.
zpm3 - ZPM3 (Floppy and Hard Disk)
Simeon Cran's ZCPR 3 compatible OS for CP/M 3 adapted for RomWBW and
ready to run. It can be started by running CPMLDR (which seems
wrong, but ZPMLDR is somewhat broken).
ws4 - WorkStar 4 (Floppy and Hard Disk)
Micropro Wordstar 4 full distribution.
bp - BPBIOS (Hard Disk only)
Adaptation of BPBIOS for RomWBW. This is not complete and NOT
useable in it's current state.
Notes
-----

0
Source/Images/hd0/s0/u0/alien.dat → Source/Images/d_bp/u0/ALIEN.DAT

0
Source/Images/fd0/u0/ASM.COM → Source/Images/d_bp/u0/ASM.COM

0
Source/Images/hd0/s0/u0/bpbuild.com → Source/Images/d_bp/u0/BPBUILD.COM

0
Source/Images/hd0/s0/u0/bpcnfg.com → Source/Images/d_bp/u0/BPCNFG.COM

0
Source/Images/hd0/s0/u0/bpdbug.com → Source/Images/d_bp/u0/BPDBUG.COM

0
Source/Images/hd0/s0/u0/bpformat.com → Source/Images/d_bp/u0/BPFORMAT.COM

0
Source/Images/hd0/s0/u0/bpswap.com → Source/Images/d_bp/u0/BPSWAP.COM

0
Source/Images/hd0/s0/u0/bpsysgen.com → Source/Images/d_bp/u0/BPSYSGEN.COM

BIN
Source/Images/d_bp/u0/COMPARE.COM

Binary file not shown.

0
Source/Images/hd0/s0/u0/confz4.com → Source/Images/d_bp/u0/CONFZ4.COM

0
Source/Images/fd0/u0/CR.COM → Source/Images/d_bp/u0/CR.COM

0
Source/Images/fd0/u0/DDT.COM → Source/Images/d_bp/u0/DDT.COM

0
Source/Images/fd0/u0/DDTZ.COM → Source/Images/d_bp/u0/DDTZ.COM

0
Source/Images/fd0/u0/DDTZ.DOC → Source/Images/d_bp/u0/DDTZ.DOC

0
Source/Images/fd0/u0/DIRX.COM → Source/Images/d_bp/u0/DIRX.COM

0
Source/Images/fd0/u0/DUMP.COM → Source/Images/d_bp/u0/DUMP.COM

0
Source/Images/fd0/u0/ED.COM → Source/Images/d_bp/u0/ED.COM

0
Source/Images/hd0/s0/u0/emulate.com → Source/Images/d_bp/u0/EMULATE.COM

0
Source/Images/hd0/s0/u0/fa.com → Source/Images/d_bp/u0/FA.COM

0
Source/Images/fd0/u0/FAT.COM → Source/Images/d_bp/u0/FAT.COM

0
Source/Images/hd0/s0/u0/hashini.com → Source/Images/d_bp/u0/HASHINI.COM

0
Source/Images/hd0/s0/u0/hdiag.com → Source/Images/d_bp/u0/HDIAG.COM

0
Source/Images/hd0/s0/u0/HDIR.COM → Source/Images/d_bp/u0/HDIR.COM

0
Source/Images/hd0/s0/u0/help.com → Source/Images/d_bp/u0/HELP.COM

0
Source/Images/hd0/s0/u0/iniramd.com → Source/Images/d_bp/u0/INIRAMD.COM

0
Source/Images/fd1/u0/INITDIR.COM → Source/Images/d_bp/u0/INITDIR.COM

0
Source/Images/hd0/s0/u0/instal12.com → Source/Images/d_bp/u0/INSTAL12.COM

0
Source/Images/hd0/s0/u0/iopinit.com → Source/Images/d_bp/u0/IOPINIT.COM

0
Source/Images/fd0/u0/LBREXT.COM → Source/Images/d_bp/u0/LBREXT.COM

0
Source/Images/hd0/s0/u0/ldds.com → Source/Images/d_bp/u0/LDDS.COM

0
Source/Images/hd0/s0/u0/ldnzt.com → Source/Images/d_bp/u0/LDNZT.COM

0
Source/Images/hd0/s0/u0/ldp2d.com → Source/Images/d_bp/u0/LDP2D.COM

0
Source/Images/hd0/s0/u0/ldr.com → Source/Images/d_bp/u0/LDR.COM

0
Source/Images/hd0/s0/u0/ldsys.com → Source/Images/d_bp/u0/LDSYS.COM

0
Source/Images/fd0/u0/LIB.COM → Source/Images/d_bp/u0/LIB.COM

0
Source/Images/fd0/u0/LINK.COM → Source/Images/d_bp/u0/LINK.COM

0
Source/Images/fd0/u0/LOAD.COM → Source/Images/d_bp/u0/LOAD.COM

0
Source/Images/fd0/u0/MAC.COM → Source/Images/d_bp/u0/MAC.COM

0
Source/Images/fd0/u0/MBASIC.COM → Source/Images/d_bp/u0/MBASIC.COM

BIN
Source/Images/hd0/s1/u0/NULU.COM → Source/Images/d_bp/u0/NULU.COM

Binary file not shown.

0
Source/Images/hd0/s0/u0/NZDEC23D.Z3T → Source/Images/d_bp/u0/NZDEC23D.Z3T

0
Source/Images/fd1/u0/ZPATH.COM → Source/Images/d_bp/u0/PATH.COM

0
Source/Images/fd0/u0/PIP.COM → Source/Images/d_bp/u0/PIP.COM

0
Source/Images/fd1/u0/PUTDS.COM → Source/Images/d_bp/u0/PUTDS.COM

0
Source/Images/hd0/s0/u0/R.COM → Source/Images/d_bp/u0/R.COM

0
Source/Images/fd0/u0/RMAC.COM → Source/Images/d_bp/u0/RMAC.COM

0
Source/Images/hd0/s0/u0/RSETSIMH.COM → Source/Images/d_bp/u0/RSETSIMH.COM

0
Source/Images/hd0/s0/u0/setclok.com → Source/Images/d_bp/u0/SETCLOK.COM

0
Source/Images/hd0/s0/u0/showhd.com → Source/Images/d_bp/u0/SHOWHD.COM

0
Source/Images/hd0/s0/u0/sizeram.com → Source/Images/d_bp/u0/SIZERAM.COM

0
Source/Images/hd0/s0/u0/slowdown.com → Source/Images/d_bp/u0/SLOWDOWN.COM

0
Source/Images/hd0/s0/u0/speedup.com → Source/Images/d_bp/u0/SPEEDUP.COM

0
Source/Images/hd0/s0/u0/start01.com → Source/Images/d_bp/u0/START01.COM

0
Source/Images/fd0/u0/STAT.COM → Source/Images/d_bp/u0/STAT.COM

0
Source/Images/fd0/u0/SUBMIT.COM → Source/Images/d_bp/u0/SUBMIT.COM

0
Source/Images/fd0/u0/SUPERSUB.COM → Source/Images/d_bp/u0/SUPERSUB.COM

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save