Compare commits

...

10 Commits

Author SHA1 Message Date
Wayne Warthen
d8a485a5fb Add Support for Duodyne PPIDE Disk Interface 2023-12-10 18:04:38 -08:00
Wayne Warthen
ed53030de2 Extend IDE Reset Delay & Support Duodyne FDC
- The post-reset delay of both the IDE and PPIDE drivers has been extended.  The SD-IDE adapters need more time to initialize before being ready to behave as proper IDE devices.
- Added support for the FDC section of the Duodyne Disk-IO board.
2023-12-10 17:28:04 -08:00
Wayne Warthen
4b88986de8 Fix .gitignore 2023-12-09 17:02:45 -08:00
Wayne Warthen
3df34b4ce0 Add ZRC512 Support
Thanks and credit to Bill Shen for providing the build updates.
2023-12-09 16:26:23 -08:00
Wayne Warthen
f230fb22da Enable Duodyne Front Panel
- Support for LEDs and switches by default
2023-12-08 11:05:45 -08:00
Wayne Warthen
2225847212 Additional Improvement to BPBIOS Bank Management 2023-12-07 12:58:44 -08:00
Wayne Warthen
edbe7d0781 Improved BPBIOS Bank Id Management 2023-12-06 19:37:02 -08:00
Wayne Warthen
1d3438fb29 Convert BPBIOS to hd1k Hard Disk Format 2023-12-05 20:29:00 -08:00
Wayne Warthen
a5de77438b Resurrect BPBIOS Build
- Corrected to handle latest changes in RomWBW HBIOS bank layout.
2023-12-05 16:07:16 -08:00
Wayne Warthen
b841705023 Final Round of User Guide Updates per Martin R 2023-11-30 12:52:11 -08:00
54 changed files with 675 additions and 317 deletions

1
.gitignore vendored
View File

@@ -95,6 +95,7 @@ Tools/unix/zx/zx
!Source/ZPM3/*.[Cc][Oo][Mm]
!Source/ZSDOS/*.[Cc][Oo][Mm]
!Source/ZRC/*.bin
!Source/ZRC512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.bin
!Tools/cpm/**

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.4 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
29 Nov 2023
09 Dec 2023
# Overview
@@ -14,15 +14,24 @@ platforms are supported including those produced by these developer
communities:
- [RetroBrew Computers](https://www.retrobrewcomputers.org)
- [RC2014](https://rc2014.co.uk),
(<https://www.retrobrewcomputers.org>)
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>),
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
- [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
(<https://groups.google.com/g/rc2014-z80>)
- [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
- [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in the
\[Installation\] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
@@ -42,11 +51,11 @@ ROM firmware itself:
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
@@ -66,7 +75,7 @@ changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
@@ -76,18 +85,19 @@ OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the [RomWBW Releases
Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
29 Nov 2023
09 Dec 2023
@@ -13,15 +13,21 @@ Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- RetroBrew Computers
- RC2014, RC2014-Z80
- retro-comp
- Small Computer Central
- RetroBrew Computers (https://www.retrobrewcomputers.org)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A complete list of the currently supported platforms is found in the
[Installation] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
@@ -41,11 +47,11 @@ ROM firmware itself:
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
@@ -65,7 +71,7 @@ changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
@@ -78,16 +84,18 @@ OSes such as Windows, MacOS, and Linux very easy.
ACQUIRING ROMWBW
The RomWBW Repository on GitHub is the official distribution location
for all project source and documentation. The fully-built distribution
releases are available on the RomWBW Releases Page of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the RomWBW Releases Page (https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.

View File

@@ -1,13 +1,10 @@
@echo off
setlocal
set TOOLS=../../Tools
set TOOLS=..\..\Tools
set APPBIN=..\..\Binary\Apps
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
set TASMTABS=%TOOLS%\tasm32
set CPMDIR80=%TOOLS%/cpm/
call :asm syscopy || exit /b

View File

@@ -48,7 +48,8 @@
; 2020-04-29: v5.5 ADDED SUPPORT FOR ETCHED PIXELS FDC
; 2020-12-12: v5.6 UPDATED SMALLZ80 TO NEW I/O ADDRESSES
; 2021-03-24: v5.7 ADDED SOME SINGLE-SIDED FORMATS
; 2021-07-26: v5.8 ADDED SUPPORT MBC FDC
; 2021-07-26: v5.8 ADDED SUPPORT FOR NHYODYNE (MBC) FDC
; 2023-12-10: v5.9 ADDED SUPPORT FOR DUODYNE (DUO) FDC
;
;_______________________________________________________________________________
;
@@ -85,6 +86,7 @@ FDC_SMZ80 .EQU 8
FDC_DYNO .EQU 9
FDC_EPFDC .EQU 10
FDC_MBC .EQU 11
FDC_DUO .EQU 12
;
; FDC MODE
;
@@ -219,8 +221,8 @@ INIT5:
XOR A
RET
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.8, 26-Jul-2021$"
STR_BANNER2 .DB "Copyright (C) 2021, Wayne Warthen, GNU GPL v3","$"
STR_BANNER .DB "Floppy Disk Utility (FDU) v5.9, 10-Dec-2023$"
STR_BANNER2 .DB "Copyright (C) 2023, Wayne Warthen, GNU GPL v3","$"
STR_HBIOS .DB " [HBIOS]$"
STR_UBIOS .DB " [UBIOS]$"
;
@@ -292,6 +294,7 @@ FDCTBL: ; LABEL CONFIG DATA
.DW STR_DYNO, CFG_DYNO
.DW STR_EPFDC, CFG_EPFDC
.DW STR_MBC, CFG_MBC
.DW STR_DUO, CFG_DUO
FDCCNT .EQU ($-FDCTBL)/4 ; FD CONTROLLER COUNT
;
; FDC LABEL STRINGS
@@ -307,7 +310,8 @@ STR_RCWDC .TEXT "RC-WDC$"
STR_SMZ80 .TEXT "SMZ80$"
STR_DYNO .TEXT "DYNO$"
STR_EPFDC .TEXT "EPFDC$"
STR_MBC .TEXT "MBC$"
STR_MBC .TEXT "NHYODYNE$"
STR_DUO .TEXT "DUODYNE$"
;
; FDC CONFIGURATION BLOCKS
;
@@ -448,7 +452,18 @@ CFG_MBC:
.DB 035H ; CONFIGURATION CONTROL REGISTER
.DB 036H ; DACK (WHEN READ)
.DB 037H ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; NOT USED BY ZETA SBC V2
.DB 0FFH ; NOT USED
.DB _PCAT ; MODE=
;
CFG_DUO:
.DB 080H ; FDC MAIN STATUS REGISTER
.DB 081H ; FDC DATA PORT
.DB 0FFH ; DATA INPUT REGISTER
.DB 086H ; DIGITAL OUTPUT REGISTER (WHEN WRITTEN)
.DB 085H ; CONFIGURATION CONTROL REGISTER
.DB 086H ; DACK (WHEN READ)
.DB 087H ; TERMINAL COUNT (W/ DACK)
.DB 0FFH ; NOT USED
.DB _PCAT ; MODE=
;
FDCID .DB 0 ; FDC IDENTIFIER (0 INDEXED)
@@ -470,7 +485,8 @@ FSS_MENU:
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (K) RCBus EPFDC\r\n"
.TEXT " (L) Multi-Board Computer FDC\r\n"
.TEXT " (L) Nhyodyne FDC\r\n"
.TEXT " (M) Duodyne FDC\r\n"
.TEXT " (X) Exit\r\n"
.TEXT "=== OPTION ===> $\r\n"
;
@@ -1561,6 +1577,7 @@ MD_MAP:
.DB %00000001 ; DYNO POLL
.DB %00000001 ; EPFDC POLL
.DB %00000001 ; MBC POLL
.DB %00000001 ; DUO POLL
;
; MEDIA DESCRIPTION BLOCK
;
@@ -2021,7 +2038,7 @@ FM_DRAW0B: ; ZETA, DIO3
LD A,(FST_DOR)
AND 00000010B
JR FM_DRAW1
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FM_DRAW0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A,(FST_DOR)
AND 11110000B
JR FM_DRAW1
@@ -2174,7 +2191,7 @@ FM_MOTOR0B: ; ZETA, DIO3
LD A,(FST_DOR)
AND 00000010B
JR FM_MOTOR1
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FM_MOTOR0C: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A,(FST_DOR)
AND 11110000B
JR FM_MOTOR1
@@ -2913,7 +2930,7 @@ FC_INIT1: ; DIO
FC_INIT2: ; ZETA, DIO3
LD A,(FCD_DORB)
JR FC_INIT5
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_INIT3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A,(FCD_DORC)
JR FC_INIT5
FC_INIT4: ; WDSMC
@@ -2957,7 +2974,7 @@ FC_RESETFDC1: ; ZETA, DIO3, RCSMC
POP AF
OUT (C),A
JR FC_RESETFDC3
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
FC_RESETFDC2: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD A,0
OUT (C),A
LD A,(FST_DOR)
@@ -2984,7 +3001,7 @@ FC_PULSETC:
;RES 0,A
;OUT (C),A
;JR FC_PULSETC2
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC
;FC_PULSETC1: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
;LD C,(IY+CFG_TC)
;IN A,(C)
;JR FC_PULSETC2
@@ -3016,7 +3033,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, DYNO, EPFDC, MBC
FC_MOTORON3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD HL,FST_DOR ; POINT TO FDC_DOR
LD A,(HL) ; START WITH CURRENT DOR
AND 11111100B ; GET RID OF ANY ACTIVE DS BITS
@@ -3080,7 +3097,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, DYNO, EPFDC, MBC
FC_MOTOROFF3: ; DIDE, N8, ZETA2, RCWDC, SMZ80, DYNO, EPFDC, MBC, DUO
LD HL,FST_DOR ; POINT TO FDC_DOR
LD A,DORC_INIT
LD (HL),A
@@ -3950,7 +3967,7 @@ DORB_BR500 .EQU 10100000B ; 500KBPS
;
DORB_INIT .EQU DORB_BR250
;
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC/MBC ***
; *** DIDE/N8/ZETA2/RCWDC/SMZ80/DYNO/EPFDC/MBC/DUO ***
;
DORC_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
;

View File

@@ -1,14 +1,15 @@
================================================================
Floppy Disk Utility (FDU) v5.3 for RetroBrew Computers
Disk IO / Zeta / Dual-IDE / N8 / RCBus / SmallZ80 / Dyno
Floppy Disk Utility (FDU) v5.9 for RetroBrew Computers
Disk IO / Zeta / Dual-IDE / N8 / RCBus / SmallZ80 / Dyno / Nhyodyne / Duodyne
================================================================
Updated January 5, 2020
Updated December 12, 2023
by Wayne Warthen (wwarthen@gmail.com)
Application to test the hardware functionality of the Floppy
Disk Controller (FDC) on the ECB DISK I/O, DISK I/O V3, ZETA
SBC, Dual IDE w/ Floppy, or N8 board.
SBC, Dual IDE w/ Floppy, N8, RCBus, SmallZ80, Dyno, Nhyodyne,
Duodyne systems.
The intent is to provide a testbed that allows direct testing
of all possible media types and modes of access. The
@@ -77,9 +78,10 @@ supported:
- RCBus
- SmallZ80
- Dyno
- MBC
- Nhyodyne (MBC)
- Duodyne (DUO)
You must be using either a RomWBW or UBA based OS version.
You must be using either a RomWBW or UNA based OS version.
You must have one of the following floppy disk controllers:
@@ -93,7 +95,8 @@ You must have one of the following floppy disk controllers:
- RCBus Scott Baker WDC-based Floppy Module
- SmallZ80 FDC
- Dyno FDC
- MBC FDC
- Nhyodyne (MBC) FDC
- Duodyne (DUO) FDC
Finally, you will need a floppy drive connected via an
appropriate cable:
@@ -165,8 +168,11 @@ 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.
The MBC FDC is expected to be strapped to use neither INT nor NMI. It
is also not expected to use DMA.
The Nhyodyne (MBC) FDC is expected to be strapped to use neither INT
nor NMI. It is also not expected to use DMA.
The Duodyne (DUO) FDC is expected to be strapped to use neither INT
nor NMI. It is also not expected to use DMA.
Modes of Operation
------------------
@@ -533,4 +539,7 @@ WW 3/24/2021: v5.7
- Added support for a few single-sided formats
WW 7/26/2021: v5.8
- Added support for MBC FDC
- Added support for Nhyodyne (MBC) FDC
WW 12/10/2023: v5.9
- Added support for Duodyne (DUO) FDC

View File

@@ -3,8 +3,8 @@ setlocal
pushd ZCPR33 && call Build || exit /b & popd
set PATH=%PATH%;..\..\Tools\zxcc;..\..\Tools\cpmtools;
set TOOLS=..\..\Tools
set PATH=%PATH%;%TOOLS%\zxcc;%TOOLS%\cpmtools;
set CPMDIR80=%TOOLS%/cpm/
call :makebp 33
@@ -48,7 +48,8 @@ if exist bp%VER%.prn del bp%VER%.prn || exit /b
ren bpbio-ww.prn bp%VER%.prn || exit /b
if exist bp%VER%.err del bp%VER%.err || exit /b
ren bpbio-ww.err bp%VER%.err || exit /b
copy bpbio-ww.rel bp%VER%.rel || exit /b
if exist bp%VER%.rel del bp%VER%.rel || exit /b
ren bpbio-ww.rel bp%VER%.rel || exit /b
rem pause

View File

@@ -1,44 +1,37 @@
VERSIONS = \
33t 33tbnk \
33n 33nbnk \
34t 34tbnk \
34n 34nbnk \
41tbnk 41nbnk
33 33bnk \
33 33bnk \
34 34bnk \
34 34bnk \
41bnk
HD0IMG = ../../Binary/hd_bp.img
IMGFILES = $(foreach ver,$(VERSIONS),bp$(ver).img)
DISTFILES = *.zex *.rel myterm.z3t
OTHERS = zcpr33n.rel zcpr33t.rel \
bpbio-ww.rel bpsys.dat bpsys.bak bpbio-ww.err def-ww.lib *.img
OTHERS = zcpr33.rel bp*.prn bp*.rel \
bpbio-ww.rel bpsys.dat bpsys.bak bpbio-ww.err def-ww.lib bp*.img
TOOLS = ../../Tools
SUBDIRS = ZCPR33
include $(TOOLS)/Makefile.inc
$(HD0IMG): $(IMGFILES)
if [ -f $(HD0IMG) ] ; then \
for f in $(IMGFILES) $(DISTFILES) ; do \
$(BINDIR)/cpmrm -f wbw_hd0 $(HD0IMG) 0:$$f ; \
done ; \
$(CPMCP) -f wbw_hd0 $(HD0IMG) $(IMGFILES) $(DISTFILES) 0: ; \
fi
zcpr33n.rel zcpr33t.rel:
zcpr33.rel:
(cd ZCPR33 ; make)
all:: $(HD0IMG)
all:: $(IMGFILES)
clean::
@rm -f $(HD0IMG)
# clean::
# $(MAKE) --directory ZCPR3 clean
%.img: zcpr33n.rel zcpr33t.rel
%.img: zcpr33.rel
$(eval VER := $(subst .img,,$(subst bp,,$@)))
cp def-ww-z$(VER).lib def-ww.lib
rm -f bpbio-ww.rel
$(ZXCC) ZMAC -BPBIO-WW -/P
mv bpbio-ww.prn bp$(VER).prn
if [ -f bpbio-ww.err ] ; then mv bpbio-ww.err bp$(VER).err; fi
mv bpbio-ww.rel bp$(VER).rel
cp bp$(VER).dat bpsys.dat
$(ZXCC) ./bpbuild.com -bpsys.dat 0 < bpbld1.rsp
cp bpsys.img bpsys.dat

View File

@@ -1,8 +1,8 @@
@echo off
setlocal
set PATH=%PATH%;..\..\..\Tools\zxcc;..\..\..\Tools\cpmtools;
set TOOLS=..\..\..\Tools
set PATH=%PATH%;%TOOLS%\zxcc;%TOOLS%\cpmtools;
set CPMDIR80=%TOOLS%/cpm/
copy ..\z3base.lib . || exit /b

View File

@@ -1,5 +1,5 @@
OBJECTS = zcpr33n.rel zcpr33t.rel
OTHERS = z3basen.lib z3baset.lib
OBJECTS = zcpr33.rel
OTHERS = z3base.lib *.prn *.rel
TOOLS = ../../../Tools
DEST = ..
@@ -7,12 +7,7 @@ include $(TOOLS)/Makefile.inc
DIFFPATH = $(DIFFTO)/Source/BPBIOS
zcpr33t.rel: ../z3baset.lib
cp ../z3baset.lib z3baset.lib
$(ZXCC) ZMAC -zcpr33t.z80 -/P
rm z3baset.lib
zcpr33n.rel: ../z3basen.lib
cp ../z3basen.lib z3basen.lib
$(ZXCC) ZMAC -zcpr33n.z80 -/P
rm z3basen.lib
zcpr33.rel: ../z3base.lib
cp ../z3base.lib z3base.lib
$(ZXCC) ZMAC -zcpr33.z80 -/P
rm z3base.lib

View File

@@ -102,6 +102,9 @@ CBOOT:
; BPCNFG to configure a generic IMG file for specific Hard Drive Partitions.
CBOOT0:
LD BC,HBF_SYSRES_INT ; HB Func: Internal Reset
CALL HBX_INVOKE ; Do it
LD HL,BRAME ; Get end of banked RAM
LD (HISAV),HL ; and save for later use
IF HARDDSK

View File

@@ -268,16 +268,15 @@ MATCH: LD A,(SECMSK) ; Get the sector mask
;
; Modified to use HBIOS host buffer
;
; HSTBUF is always in HBIOS bank where I/O is done
LD A,(TPABNK) ; TPA BANK
DEC A ; HBIOS bank is one below
LD C,A
; HSTBUF is always in HBIOS bank where I/O is actually done
LD A,(HB_BNKBIOS) ; HBIOS bank id
LD C,A ; Set Read Source Bank
IF BANKED
LD A,(DMABNK) ; Set Read Destination Bank
LD A,(DMABNK) ; Read Destination Bank
ELSE
LD A,(TPABNK) ; Set Read Destination Bank
LD A,(TPABNK) ; Read Destination Bank
ENDIF
LD B,A
LD B,A ; Set Read Destination Bank
LD A,(READOP) ; Direction?
OR A
JR NZ,OKBNKS ; ..jump if read

View File

@@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H
BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H
BNKU EQU 00H ; User Area Bank 58000H
; (set to 0 to disable)
BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H
BNKM EQU BID_RAMM ; Maximum Bank # F8000H
BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H
BNKM EQU BID_BUF ; Maximum Bank # F8000H
IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a
; nice resource for Z180 programing in general

View File

@@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H
BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H
BNKU EQU 00H ; User Area Bank 58000H
; (set to 0 to disable)
BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H
BNKM EQU BID_RAMM ; Maximum Bank # F8000H
BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H
BNKM EQU BID_BUF ; Maximum Bank # F8000H
IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a
; nice resource for Z180 programing in general

View File

@@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H
BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H
BNKU EQU 00H ; User Area Bank 58000H
; (set to 0 to disable)
BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H
BNKM EQU BID_RAMM ; Maximum Bank # F8000H
BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H
BNKM EQU BID_BUF ; Maximum Bank # F8000H
IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a
; nice resource for Z180 programing in general

View File

@@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H
BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H
BNKU EQU 00H ; User Area Bank 58000H
; (set to 0 to disable)
BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H
BNKM EQU BID_RAMM ; Maximum Bank # F8000H
BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H
BNKM EQU BID_BUF ; Maximum Bank # F8000H
IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a
; nice resource for Z180 programing in general

View File

@@ -133,8 +133,8 @@ BNK1 EQU BID_COM ; Second TPA Bank (Common Bank) 48000H
BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H
BNKU EQU 00H ; User Area Bank 58000H
; (set to 0 to disable)
BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H
BNKM EQU BID_RAMM ; Maximum Bank # F8000H
BNK3 EQU BID_BUF ; First Bank for RAM disk 60000H
BNKM EQU BID_BUF ; Maximum Bank # F8000H
IF NO ; REMOVE CODE - NOT NEEDED WITH HBIOS makes a
; nice resource for Z180 programing in general

View File

@@ -46,7 +46,7 @@
; NOTE: No Skew Table needed since Hard Disk Format is locked w/No Skew
;.....
; Currently, BPBIOS supports 2 memory drive devices and 3 phyical hard
; Currently, BPBIOS supports 2 memory drive devices and 3 physical hard
; drive like devices. BPBIOS can support seven but unfortunately
; BPCNFG only supports 3 hard drive like devices and the source
; code is not available, so menu 4 is meaningless. Devices
@@ -64,26 +64,22 @@
;
; Starting with ver 2.8 of HBIOS, devices are discovered at boot
; time and assigned device numbers. Since devices are tested in
; a certain order, the device numbers are somewhat predicably
; a certain order, the device numbers are somewhat predictably
; assigned. Memory drives are discovered first. IDE drives are
; discovered next so that IDE Hard drives including CF cards are
; assigned device 2 and device 3 if a slave drive is supported by
; the interface. Next comes the SD drive and is assigned device 3
; or 4 depending on the whether there is an ide slave drive.
; USB drive is assigned device 4 or 5 . For SIMH HDSK0 is device 0
; USB drive is assigned device 4 or 5. For SIMH HDSK0 is device 0
; and HDSK1 is device 1. Memory drives are now handled as LBA
; devices, ie like hard drives.
;
; The following non-memory drive capacities and configurations used for
; the SIMH, SD and IDE drives: Slice geometry is 256, 512 byte sectors,
; 1 head per track and 1 with one reserved track, a block size of 4096
; bytes with 512 directory entries. An equivalent geometry is 16
; sectors and 16 heads per track. Internally BPBIOS uses a uniform
; logical organization with 64 logical records per logical track.
; Thus there are 16 logical tracks per physical track with 1040
; logical (65 physical) tracks per slice. If all partitions are not
; physically present, the missing partitions can be disabled in the
; BPBCNFG configuration file or by hand. Note that HBIOS uses LBA,
; the SIMH, SD and IDE drives: Track geometry is 16 512 byte sectors.
; A slice is exactly 64 tracks, with 1 of the 64 tracks as a system
; track. There are 1024 directory entries per slice. If all partitions
; are not physically present, the missing partitions can be disabled in
; the BPBCNFG configuration file or by hand. Note that HBIOS uses LBA,
; Logical Block Addressing, for non-floppy drives.
;
; For SBC V1,2, ZETA, MARK IV and N8, the following non-memory partitions
@@ -94,26 +90,26 @@
; partition Size Blocks Block Offset in
; MByte Size logical tracks
;====================================================================
; C 8 2048 4096 1*16 = 16
; D 8 2048 4096 (1+65)*16 = 1056
; E 8 2048 4096 (1+2*65)*16 = 2096
; F 8 2048 4096 (1+3*65)*16 = 3136
; G 8 2048 4096 (1+4*65)*16 = 4176
; H 8 2048 4096 (1+5*65)*16 = 5216
; I 8 2048 4096 (1+6*65)*16 = 6256
; J 8 2048 4096 (1+7*65)*16 = 7296
; C 8 2044 4096 128+(1024*0)+2 = 130
; D 8 2044 4096 128+(1024*1)+2 = 1154
; E 8 2044 4096 128+(1024*2)+2 = 2178
; F 8 2044 4096 128+(1024*3)+2 = 3202
; G 8 2044 4096 128+(1024*4)+2 = 4226
; H 8 2044 4096 128+(1024*5)+2 = 5250
; I 8 2044 4096 128+(1024*6)+2 = 6274
; J 8 2044 4096 128+(1024*7)+2 = 7298
;
; These are capacities and configurations used for SD card:
;
; partition Size Blocks Block Offset
; MByte Size logical tracks
;====================================================================
; K 8 2048 4096 1*16 = 16
; L 8 2048 4096 (1+65)*16 = 1056
; M 8 2048 4096 (1+2*65)*16 = 2096
; N 8 2048 4096 (1+3*65)*16 = 3136
; K 8 2044 4096 128+(1024*0)+2 = 130
; L 8 2044 4096 128+(1024*1)+2 = 1154
; M 8 2044 4096 128+(1024*2)+2 = 2178
; N 8 2044 4096 128+(1024*3)+2 = 3202
;
; RAM drive is paritition A while ROM drive is partition B.
; RAM drive is partition A while ROM drive is partition B.
;
; For example, a typical Memory drive configuration is:
;
@@ -199,17 +195,17 @@ DPBROM: DEFW 64 ; Sectors/Track
; even though real layout is 256 physical
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ0 EQU 2048 ; # of blocks in first Partition (1024 trks)
HSIZ0 EQU 2048 - 4 ; # of blocks in first Partition (1022 trks)
;
DPB50: DEFW 64 ; Sctrs/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ0-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 - 4 blocks
DEFB 0F0H,0 ; Alloc 0,1 - 4 blocks
DEFW HSIZ0-1 ; Disk Size-1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check Size
DEFW 16 ; Trk Offset
DEFW 128+(1024*0)+2 ; Trk Offset
ENDIF
;
;.....
@@ -226,17 +222,17 @@ DPB50: DEFW 64 ; Sctrs/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ1 EQU 2048 ; # of blocks in Second Partition (1024 trks)
HSIZ1 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB51: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ1-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+65)*16 ; Track offset 1056
DEFW 128+(1024*1)+2 ; Trk Offset
ENDIF
;
;.....
@@ -253,21 +249,21 @@ DPB51: DEFW 64 ; Scts/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ2 EQU 2048 ; # of blocks in third Partition (1024 tracks)
HSIZ2 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB52: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ2-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+2*65)*16 ; Track offset = 2096
DEFW 128+(1024*2)+2 ; Trk Offset
ENDIF
;
;.....
; Partition F. HBIOS Disk 0, Slice 4
; Partition F. HBIOS Disk 0, Slice 3
IF DRV_F
DEFB 'HBDSK0:3 ','F'+80H ; Id - 10 bytes
@@ -280,17 +276,17 @@ DPB52: DEFW 64 ; Scts/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ3 EQU 2048 ; # of blocks in Fourth Partition (1024 tracks)
HSIZ3 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB53: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ3-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+3*65)*16 ; Track offset = 3136
DEFW 128+(1024*3)+2 ; Trk Offset
ENDIF
;
;.....
@@ -307,17 +303,17 @@ DPB53: DEFW 64 ; Scts/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ4 EQU 2048 ; # of blocks in first Partition (1024 trks)
HSIZ4 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB54: DEFW 64 ; Sctrs/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ4-1 ; Disk Size - 1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+4*65)*16 ; Track offset = 16
DEFW 128+(1024*4)+2 ; Trk Offset
ENDIF
;
;.....
@@ -334,17 +330,17 @@ DPB54: DEFW 64 ; Sctrs/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ5 EQU 2048 ; # of blocks in Second Partition (1024 trks)
HSIZ5 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB55: DEFW 64 ; Sctrs/Trk - actually 256
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ5-1 ; Disk Size-1
DEFW 511 ; Dir Max-1
DEFB 0F0H,0 ; Alloc 0,1 - 4 blocks
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check Size
DEFW (1+5*65)*16 ; Trk Offset = 1056
DEFW 128+(1024*5)+2 ; Trk Offset
ENDIF
;
;.....
@@ -361,17 +357,17 @@ DPB55: DEFW 64 ; Sctrs/Trk - actually 256
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ6 EQU 2048 ; # of blocks in third Partition (1024 tracks)
HSIZ6 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB56: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ6-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+6*65)*16 ; Track offset = 2096
DEFW 128+(1024*6)+2 ; Trk Offset
ENDIF
;.....
@@ -388,17 +384,17 @@ DPB56: DEFW 64 ; Scts/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ7 EQU 2048 ; # of blocks in Fourth Partition (1024 tracks)
HSIZ7 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB57: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ7-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+7*65)*16 ; Track offset = 3136
DEFW 128+(1024*7)+2 ; Trk Offset
ENDIF
;
;.....
@@ -414,17 +410,18 @@ DPB57: DEFW 64 ; Scts/Trk
; even though real layout is 256 physical
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ8 EQU 2048 ; # of blocks in first Partition (1024 trks)
HSIZ8 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB58: DEFW 64 ; Sctrs/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ8-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 - 4 blocks
DEFB 0F0H,0 ; Alloc 0,1 - 4 blocks
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check Size
DEFW 16 ; Trk Offset
DEFW 128+(1024*0)+2 ; Trk Offset
ENDIF
;
;.....
@@ -441,17 +438,17 @@ DPB58: DEFW 64 ; Sctrs/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ9 EQU 2048 ; # of blocks in Second Partition (1024 trks)
HSIZ9 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB59: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ9-1 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+65)*16 ; Track offset 1056
DEFW 128+(1024*1)+2 ; Trk Offset
ENDIF
;
;.....
@@ -468,17 +465,17 @@ DPB59: DEFW 64 ; Scts/Trk
; sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ10 EQU 2048 ; # of blocks in Second Partition (1024 trks)
HSIZ10 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
;
DPB60: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ10 ; Disk Size-1
DEFW 511 ; Dir Max-1 4 blocks
DEFB 0F0H,0 ; Alloc 0,1
DEFW HSIZ10-1 ; Disk Size-1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+2*65)*16 ; Track offset 2096
DEFW 128+(1024*2)+2 ; Trk Offset
ENDIF
;
;.....
@@ -492,18 +489,17 @@ DPB60: DEFW 64 ; Scts/Trk
DEFB 16 ; Logical Sectors per track
DEFB 0 ; Physical tracks/side (No Meaning in HD)
HSIZ11 EQU 2048 ; # of blocks in Forth Logical Drive
; (1024 tracks)
HSIZ11 EQU 2048 - 4 ; # of blocks in Second Partition (1022 trks)
DPB61: DEFW 64 ; Scts/Trk
DEFB 5 ; Blk Shf Fctr
DEFB 31 ; Block Mask
DEFB 1 ; Extent Mask
DEFW HSIZ11-1 ; Disk Size-1
DEFW 511 ; Dir Max-1
DEFB 0F0H,0 ; Alloc 0,1
DEFW 1024-1 ; Dir Max-1
DEFB 0FFH,0 ; Alloc 0,1
DEFW 0 ; Check size
DEFW (1+3*65)*16 ; Track offset 3136
DEFW 128+(1024*3)+2 ; Trk Offset
ENDIF
;=========== End of Hard Disk DPBs ===========

View File

@@ -183,7 +183,6 @@ HDSK_RW1:
POP BC ; RESTORE INCOMING FUNCTION, DEVICE/UNIT
RET NZ ; ABORT IF SEEK RETURNED AN ERROR W/ ERROR IN A
LD HL,(HB_DSKBUF) ; GET BUFFER ADDRESS
;LD D,BID_HB ; BUFFER IN HBIOS BANK
LD A,(HB_BNKBIOS) ; BUFFER IN HBIOS BANK
LD D,A ; PUT IN D
LD E,1 ; ONE SECTOR

View File

@@ -9,6 +9,7 @@
HBF_ALLOC EQU 0F6H ; HBIOS Func: ALLOCATE Heap Memory
HBF_PEEK EQU 0FAH ; HBIOS Func: Peek Byte
HBF_POKE EQU 0FBH ; HBIOS Func: Poke Byte
HBF_SYSRES_INT EQU 0F000H ; HBIOS Func: Internal Reset
HBF_MEMINFO EQU 0F8F1H ; HBIOS Func: Get Memory Info
HBF_BNKINFO EQU 0F8F2H ; HBIOS Func: Get Bank Info
;
@@ -43,22 +44,23 @@ HBX_CPYLEN EQU 0FFE8H
; call here, make required changes, then update the
; BIOSJT to point directly to the normal SELMEM routine for
; all subsequent calls.
;
; When called, the incoming bank id will be the original hard-coded
; bank id prior to any adjustments. These original bank id's are
; coded to be an offset from the ending HBIOS RAM bank id which
; is (80h + RAM banks). See romwbw.lib. We update the requested
; bank id for this initial call to make it the proper absolute
; HBIOS bank id.
;
; See romwbw.lib for additional RAM bank layout information.
; BPBIOS HBIOS Typical
; ------------ -------------- --------------
; -1: <COMMON> BID_COM 90h - 1 = 8Fh
; -2: TPABNK BID_USR 90h - 2 = 8Eh
; -3: <HBIOS> BID_BIOS 90h - 3 = 8Dh
; -4: SYSBNK BID_AUX 90h - 4 = 8Ch
; -9: BNKM BID_AUX-5 90h - 9 = 87h
; -16: RAMBNK RAMD0 90h - 16 = 80h
HB_SELMEM:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
PUSH AF ; Save incoming bank request
IF HB_DEBUG AND FALSE
CALL PRTSTRD
DEFB '[HB_SELMEM: $'
@@ -68,23 +70,30 @@ HB_SELMEM:
ENDIF
LD BC,HBF_BNKINFO ; HBIOS BNKINFO function
CALL HBX_INVOKE ; DO IT, D=BID_BIOS, E=BID_USER
LD A,D ; BID_BIOS
LD (HB_BNKBIOS),A ; SET HB_BNKBIOS
ADD A,3 ; HBIOS + 3
LD (HB_BNKEND),A ; ... is the ending RAM bank
IF BANKED
LD (BNKADJ+1),A ; Dynamically update SELBNK
ENDIF
CALL HBX_INVOKE ; Do it, D=BIOS bank, E=USER (TPA) bank
LD A,D ; BIOS bank
LD (HB_BNKBIOS),A ; Save it for later (deblock & hard-ww)
LD A,E ; USER (TPA) bank
LD (TPABNK),A ; Update BP register
DEC A ; SYS bank is one below USER
LD (SYSBNK),A ; Update BP register
DEC A ; HBIOS BUF bank is one more below
;LD (UABNK),A ; Set BPBIOS USER bank
LD (RAMBNK),A ; Update BP RAM disk bank register
LD (MAXBNK),A ; Update ending bank register
LD HL,SELMEM ; Future SELMEM calls will
LD (BIOSJT+(27*3)+1),HL ; ... go to real SELMEM
POP BC ; Recover requested bank to B
LD A,(TPABNK) ; Get TPA bank
ADD 2 ; Offset to ending RAM bank id
ADD B ; Adjust for incoming request
POP HL
POP DE
POP BC
POP AF
JP SELMEM
JP SELMEM ; Continue to normal SELMEM
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
; Move Data - Possibly between banks. This resembles CP/M 3, but
@@ -97,15 +106,10 @@ HB_SELMEM:
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
HB_MOVE:
PUSH HL
LD HL,HB_BNKEND
LD A,(HB_SRCBNK)
ADD A,(HL) ; Adjust for HBIOS bank ids
LD (HBX_SRCBNK),A
LD A,(HB_DSTBNK)
ADD A,(HL) ; Adjust for HBIOS bank ids
LD (HBX_DSTBNK),A
POP HL
CALL HBX_BNKCPY
PUSH HL
LD HL,(TPABNK) ; Get TPA Bank #
@@ -141,6 +145,5 @@ HB_XMOVE:
HB_SRCBNK: DEFS 1 ; Move Source Bank #
HB_DSTBNK: DEFS 1 ; Move Destination Bank #
HB_BNKBIOS: DEFS 1 ; Bank id of HBIOS bank
HB_BNKEND: DEFS 1 ; End of available RAM banks (last bank + 1)
HB_DSKBUF: DEFS 2 ; Address of physical disk buffer in HBIOS bank


View File

@@ -115,10 +115,22 @@ SELMEM: LD (USRBNK),A ; Update user bank
; Must preserve all Registers including Flags.
; All Bank Switching MUST be done by this routine
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
;
; Parameter to BNKADJ (ADD) is set dynamically at initialization.
SELBNK: PUSH AF ; Save regs
SELBN0: LD (CURBNK),A ; Save as current bank #
BNKADJ: ADD A,90H ; Adjust for HBIOS bank ids
IF HB_DEBUG AND FALSE
CALL PRTSTRD
DEFB '[SELBNK: $'
CALL PRTHEXBYTE
CALL PRTSTRD
DEFB ']$'
ENDIF
CALL HBX_BNKSEL
POP AF ; restore regs
RET
@@ -172,7 +184,7 @@ FRGETB:
PUSH BC ; Save BC
PUSH DE ; Save DE
LD B,0FAH ; HBIOS Peek function
LD D,C ; Bank in D
LD D,C
CALL HBX_INVOKE ; Do it
LD A,E ; Value to A
POP DE ; Restore DE
@@ -203,8 +215,8 @@ FRPUTB:
PUSH BC ; Save BC
PUSH DE ; Save DE
LD B,0FBH ; HBIOS Poke function
LD D,C ; Bank in D
LD E,A ; Value in E
LD D,C
CALL HBX_INVOKE ; Do it
POP DE ; Restore DE
POP BC ; Restore BC

View File

@@ -48,20 +48,33 @@ DRV_P SET NO ; YES if system has flopy drives
;
; RAM/ROM Bank Reserve
;
HB_RAMRESV EQU 8 ; RAM reserve is 8 banks
HB_RAMRESV EQU 5 ; RAM reserve is 5 banks
HB_ROMRESV EQU 4 ; ROM reserve is 4 banks
;
; Layout of RAM banks
;
; TODO: Query system via HBIOS API to determine the actual bank
; assignments, then adjust BPBIOS operation accordingly.
; The BID_xxx values below are used to set the initial values of
; the BPBIOS bank registers (see def-ww-xxx.lib and HB_SELMEM in
; hbios.z80). The running values of the BPBIOS bank registers (TPABNK,
; SYSBNK, etc.) are set to absolute HBIOS bank ids in hbios.z80 during
; startup.
;
BID_RAMD EQU -16 ; 90h - 16 = 80h
BID_RAMM EQU -9 ; 90h - 9 = 87h
BID_SYS EQU -4 ; 90h - 4 = 8Ch
BID_HB EQU -3 ; 90h - 3 = 8Dh
BID_USR EQU -2 ; 90h - 2 = 8Eh
BID_COM EQU -1 ; 90h - 1 = 8Fh
; The values below are expressed as an offset from the ending HBIOS
; RAM bank id. They map to HBIOS bank ids
; by subtracting from the ending HBIOS bank id (N). HBIOS RAM bank ids
; start at 80h. The ending HBIOS bank id is (80h + RAM banks). The
; typical layout assumes 16 banks of RAM starting at HBIOS bank id 80h
; and ending at bank id 90h (N = 90h).
;
; BPBIOS HBIOS (TYPICAL)
; -------------------------------------- ---------------
; <HBIOS> 80h (80h)
; <RAMD> 81h (81h)
; <RAMM> N - 5 (8Bh)
BID_BUF EQU -4 ; BNK3 -> RAMBNK N - 4 (8Ch)
BID_SYS EQU -3 ; BNK2 -> SYSBNK N - 3 (8Dh)
BID_USR EQU -2 ; BNK0 -> TPABNK N - 2 (8Eh)
BID_COM EQU -1 ; BNK1 -> N - 1 (8Fh)
;
HB_EI MACRO
EI

View File

@@ -4,12 +4,13 @@ setlocal
:: call BuildDoc || exit /b
call BuildProp || exit /b
call BuildShared || exit /b
:: call BuildBP || exit /b
call BuildBP || exit /b
call BuildImages || exit /b
call BuildROM %* || exit /b
call BuildZRC || exit /b
call BuildZ1RCC || exit /b
call BuildZZRCC || exit /b
call BuildZRC512 || exit /b
if "%1" == "dist" (
call Clean || exit /b

4
Source/BuildZRC512.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
pushd ZRC512 && call Build || exit /b & popd

View File

@@ -30,7 +30,9 @@ header-includes:
{\scshape \bfseries \fontsize{48pt}{56pt} \selectfont $doc_product$ \par}
{\bfseries \fontsize{32pt}{36pt} \selectfont $doc_title$ \par}
\vspace{24pt}
{\huge $doc_ver$ \\ $doc_date$ \par}
{\huge $doc_ver$ \par}
\vspace{12pt}
{\large Updated $doc_date$ \par}
\vspace{24pt}
{\large \itshape $doc_orgname$ \\ \href{http://$doc_orgurl$}{$doc_orgurl$} \par}
\vspace{12pt}

View File

@@ -10,14 +10,23 @@ A wide variety of platforms are supported including those
produced by these developer communities:
* [RetroBrew Computers](https://www.retrobrewcomputers.org)
* [RC2014](https://rc2014.co.uk), [RC2014-Z80](https://groups.google.com/g/rc2014-z80)
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
(<https://www.retrobrewcomputers.org>)
* [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>), \
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
(<https://groups.google.com/g/rc2014-z80>)
* [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
* [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in the
[Installation] section.
General features include:
* Z80 Family CPUs including Z80, Z180, and Z280
* Banked memory services for several banking designs
* Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
* Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega
* Serial drivers including UART (16550-like), ASCI, ACIA, SIO
* Video drivers including TMS9918, SY6545, MOS8563, HD6445
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
@@ -34,12 +43,12 @@ ROM firmware itself:
* ROM BASIC (Nascom BASIC and Tasty BASIC)
* ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains
a complete CP/M filesystem and can be mapped independently to any
drive letter. This overcomes the inherent size limitations in legacy
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most
@@ -61,7 +70,7 @@ By design, RomWBW isolates all of the hardware specific functions in
the ROM chip itself. The ROM provides a hardware abstraction layer
such that all of the operating systems and applications on a disk
will run on any RomWBW-based system. To put it simply, you can take
a disk (or CF/SD Card) and move it between systems transparently.
a disk (or CF/SD/USB Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
@@ -70,18 +79,19 @@ OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the "Assets" drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the
[RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the "Assets" drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.

View File

@@ -43,6 +43,33 @@ find this document far too basic. Others will find it lacking in many
areas. I am doing my best and encourage you to provide constructive
feedback.
`\clearpage`{=latex}
#### Conventions
##### Size Suffixes
Within this document and in RomWBW in general, the use of size
suffixes KB, MB, GB, and TB refer to the binary variant as shown
below. The modern suffixes (KiB, MiB, etc.) are not used here because
they were not prevalent during the time that the RomWBW OSes were
used. This keeps all of RomWBW and associated applications consistent.
| Suffix | Value | Meaning |
|------------|-----------|----------------------------------------|
| KB | 1024 | 1,024 bytes |
| MB | 1024^2^ | 1,048,576 bytes |
| GB | 1024^3^ | 1,073,741,824 bytes |
| TB | 1024^4^ | 1,099,511,627,776 bytes |
##### Links and URLs
Many of the references in this document to Internet addresses (URLs)
do not provide the address in the text. However, these links are
embedded and "clickable" within the documents. Your PDF viewer should
highlight these links in some manner (typically an alternate color
or an underline).
# Overview
RomWBW software provides a complete, commercial quality
@@ -52,9 +79,14 @@ A wide variety of platforms are supported including those
produced by these developer communities:
* [RetroBrew Computers](https://www.retrobrewcomputers.org)
* [RC2014](https://rc2014.co.uk), [RC2014-Z80](https://groups.google.com/g/rc2014-z80)
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
(<https://www.retrobrewcomputers.org>)
* [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>), \
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
(<https://groups.google.com/g/rc2014-z80>)
* [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
* [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in the
[Installation] section.
@@ -118,18 +150,19 @@ OSes such as Windows, MacOS, and Linux very easy.
## Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the "Assets" drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the
[RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the "Assets" drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
@@ -220,6 +253,7 @@ is discussed in [Customizing RomWBW].
| [Rhyophyre Z180 SBC]^1^ | - | RPH_std.rom | 38400 |
| [Z80 ZRC CPU Module]^7^ | RCBus | RCZ80_zrc.rom | 115200 |
| [Z80 ZRC CPU Module]^7^ ROMless | RCBus | RCZ80_zrc_ram.rom | 115200 |
| [Z80 ZRC512 CPU Module]^7^ | RCBus | RCZ80_zrc512.rom | 115200 |
| [Z180 Z1RCC CPU Module]^7^ | RCBus | RCZ180_z1rcc.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ | RCBus | RCZ280_zzrcc.rom | 115200 |
| [Z280 ZZRCC CPU Module]^7^ ROMless | RCBus | RCZ280_zzrcc_ram.rom | 115200 |
@@ -277,7 +311,8 @@ your hardware provider's documentation for details. A null-modem
connection may be required. Set the baud rate as indicated in the table
above. Set the line characteristics to 8 data bits, 1 stop bit, no
parity, and no flow control. If possible, select ANSI or VT-100 terminal
emulation.
emulation. Hardware flow control is not required for terminal
operation, but may be necessary for [Serial Port Transfers].
RomWBW will automatically attempt to detect and support typical add-on
components for each of the systems supported. More information on the
@@ -798,7 +833,8 @@ Sound 0 SND0: AY-3-8910 3+1 CHANNELS
The 'R' command within the Boot Loader performs a software reset of
the system. The system will perform a startup just like powering
up or pressing the hardware reset button.
up or pressing the hardware reset button (although the hardware is
not physically reset).
There is generally no need to do this, but it can be convenient when
you want to see the boot messages again or ensure your system is in
@@ -3434,11 +3470,11 @@ users. All required build tools (compilers, assemblers, etc.) are
included in the distribution, so it is not necessary to setup a build
environment on your computer.
RomWBW can be built on modern Windows, Linux, or MacOS computers. The
process for building a custom ROM is documented in the ReadMe.txt file
in the Source directory of the distribution. Any modern version of
Windows, MacOS, or Linux released in the last 10 years should be able
to run the build process.
RomWBW can be built on modern Windows, Linux, or MacOS computers. The
process for building a custom ROM is documented in the ReadMe.txt file
in the Source directory of the distribution. Any modern version of
Windows (32-bit or 64-bit), MacOS, or Linux released in the last 10
years should be able to run the build process.
For those who are interested in more than basic system customization,
note that all source code is provided (including the operating
@@ -4996,6 +5032,49 @@ the RomWBW HBIOS configuration.
`\clearpage`{=latex}
### Z80 ZRC512 CPU Module
#### ROM Image File: RCZ80_zrc512.rom
| | |
|-------------------|---------------|
| Default CPU Speed | 22.000 MHz |
| Interrupts | Mode 1 |
| System Timer | None |
| Serial Default | 115200 Baud |
| Memory Manager | ZRC |
| ROM Size | 0 KB |
| RAM Size | 512 KB |
##### Supported Hardware (see [Appendix B - Device Summary]):
- FP: LEDIO=0, SWIO=0
- DSRTC: MODE=STD, IO=192
- UART: MODE=RC, IO=160
- UART: MODE=RC, IO=168
- SIO MODE=RC, IO=128, CHANNEL A, INTERRUPTS ENABLED
- SIO MODE=RC, IO=128, CHANNEL B, INTERRUPTS ENABLED
- SIO MODE=RC, IO=132, CHANNEL A, INTERRUPTS ENABLED
- SIO MODE=RC, IO=132, CHANNEL B, INTERRUPTS ENABLED
- ACIA: IO=128, INTERRUPTS ENABLED
- VRC: IO=0, KBD MODE=VRC, KBD IO=244
- KBD: ENABLED
- MD: TYPE=RAM
- FD: MODE=RCWDC, IO=80, DRIVE 0, TYPE=3.5" HD
- FD: MODE=RCWDC, IO=80, DRIVE 1, TYPE=3.5" HD
- IDE: MODE=RC, IO=16, MASTER
- IDE: MODE=RC, IO=16, SLAVE
- PPIDE: IO=32, MASTER
- PPIDE: IO=32, SLAVE
- CTC: IO=136
##### Notes:
- ROMless boot -- HBIOS is loaded from disk at boot
- CPU speed will be dynamically measured at startup if DSRTC is present
`\clearpage`{=latex}
### Z180 Z1RCC CPU Module
#### ROM Image File: RCZ180_z1rcc.rom

View File

@@ -218,6 +218,7 @@ call Build RCZ80 skz || exit /b
:: call Build RCZ80 duart || exit /b
call Build RCZ80 zrc || exit /b
call Build RCZ80 zrc_ram || exit /b
call Build RCZ80 zrc512 || exit /b
call Build RCZ180 ext || exit /b
call Build RCZ180 nat || exit /b
call Build RCZ180 z1rcc || exit /b

View File

@@ -30,6 +30,7 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc512"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh

View File

@@ -0,0 +1,68 @@
;
;==================================================================================================
; RCBUS Z80 ZRC512 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).
;
#DEFINE PLATFORM_NAME "ZRC512", " [", CONFIG, "]"
;
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
;
#include "cfg_rcz80.asm"
;
CPUOSC .SET 22000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
;
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
;
MDROM .SET FALSE ; MD: ENABLE ROM DISK
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
IMMENABLE .SET FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)

View File

@@ -65,11 +65,11 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
;
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
;
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
FPLED_DSKACT .EQU FALSE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .EQU $42 ; FP: PORT ADDRESS FOR FP LEDS
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES
FPSW_IO .EQU $42 ; FP: PORT ADDRESS FOR FP SWITCHES
;
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
;
@@ -178,8 +178,8 @@ MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
;
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_MBC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .EQU FDMODE_DUO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
@@ -211,10 +211,10 @@ IDE2DATHI .EQU $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
IDE2A8BIT .EQU TRUE ; IDE 2A (MASTER): 8 BIT XFER
IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
;
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEENABLE .EQU TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0BASE .EQU $88 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1BASE .EQU $20 ; PPIDE 1: PPI REGISTERS BASE ADR

View File

@@ -84,6 +84,14 @@ FDC_DCR .EQU $35 ; CONFIGURATION CONTROL REGISTER
FDC_TC .EQU $37 ; TERMINAL COUNT (W/ DACK)
#DEFINE FDMODE_STR "MBC"
#ENDIF
#IF (FDMODE == FDMODE_DUO)
FDC_MSR .EQU $80 ; 8272 MAIN STATUS REGISTER
FDC_DATA .EQU $81 ; 8272 DATA PORT
FDC_DOR .EQU $86 ; DIGITAL OUTPUT REGISTER
FDC_DCR .EQU $85 ; CONFIGURATION CONTROL REGISTER
FDC_TC .EQU $87 ; TERMINAL COUNT (W/ DACK)
#DEFINE FDMODE_STR "DUO"
#ENDIF
;
;
; DISK OPERATIONS
@@ -515,7 +523,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) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC) | (FDMODE == FDMODE_DUO))
DOR_INIT .EQU 00001100B ; SOFT RESET INACTIVE, DMA ENABLED
DOR_BR250 .EQU DOR_INIT
DOR_BR500 .EQU DOR_INIT
@@ -812,6 +820,10 @@ FD_INIT:
#IF (FDMODE == FDMODE_MBC)
PRTS("MBC$")
#ENDIF
;
#IF (FDMODE == FDMODE_DUO)
PRTS("DUO$")
#ENDIF
;
PRTS(" IO=0x$")
LD A,FDC_MSR
@@ -1455,7 +1467,7 @@ FC_SETDOR:
;
; SET FST_DCR
;
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC) | (FDMODE == FDMODE_DUO))
;
FC_SETDCR
LD (FST_DCR),A
@@ -1487,7 +1499,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) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC) | (FDMODE == FDMODE_DUO))
LD A,0
#ENDIF
CALL FC_SETDOR
@@ -1504,7 +1516,7 @@ FC_RESETFDC:
FC_PULSETC:
; PULSING TC NO LONGER REQUIRED BECAUSE WE ONLY READ A SINGLE SECTOR
;
;#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
;#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC) | (FDMODE == FDMODE_DUO))
; IN A,(FDC_TC)
;#ELSE
; LD A,(FST_DOR)
@@ -1561,7 +1573,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) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC) | (FDMODE == FDMODE_DUO))
; SETUP DCR FOR DIDE HARDWARE
LD A,(FCD_DCR) ; GET NEW DCR VALUE
CALL FC_SETDCR ; AND IMPLEMENT IT

View File

@@ -1391,8 +1391,8 @@ IDE_RESET:
; IMMEDIATELY. A SMALL WAIT IS PERFORMED HERE TO GIVE SUCH DEVICES
; A BETTER CHANCE TO SUCCEED LATER.
;
;;; CALL LDELAY ; DELAY FOR SLAVE INIT
LD DE,150000 / 16 ;
; LD DE,150000 / 16 ;
LD DE,300000 / 16 ;
CALL VDELAY ; SMALL DELAY
;
JR IDE_RESET3 ; SKIP SOFT RESET

View File

@@ -1373,8 +1373,8 @@ PPIDE_RESET:
; IMMEDIATELY. A SMALL WAIT IS PERFORMED HERE TO GIVE SUCH DEVICES
; A BETTER CHANCE TO SUCCEED LATER.
;
;;; CALL LDELAY ; DELAY FOR SLAVE INIT
LD DE,150000 / 16 ;
; LD DE,150000 / 16 ;
LD DE,300000 / 16 ;
CALL VDELAY ; SMALL DELAY
;
JR PPIDE_RESET3 ; SKIP SOFT RESET

View File

@@ -161,7 +161,8 @@ FDMODE_RCSMC .EQU 7 ; RCBUS SMC 9266 @ $40 (SCOTT BAKER)
FDMODE_RCWDC .EQU 8 ; RCBUS WDC 37C65 @ $40 (SCOTT BAKER)
FDMODE_DYNO .EQU 9 ; DYNO WDC 37C65 @ $84
FDMODE_EPFDC .EQU 10 ; RCBUS ETCHED PIXELS FDC
FDMODE_MBC .EQU 11 ; MULTI-BOARD COMPUTER FDC
FDMODE_MBC .EQU 11 ; NHYODYNE (MBC) FDC
FDMODE_DUO .EQU 12 ; DUODUYNE (DUO) FDC
;
; IDE MODE SELECTIONS
;

View File

@@ -1,8 +1,9 @@
@echo off
setlocal
::call BuildDisk.cmd bp hd wbw_hd512 || exit /b
::goto :eof
:: call BuildDisk.cmd bp hd wbw_hd1k
:: copy /b hd1k_prefix.dat + ..\..\Binary\hd1k_bp.img + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_combo_bp.img || exit /b
:: goto :eof
echo.
echo Building Floppy Disk Images...
@@ -42,8 +43,6 @@ call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
call BuildDisk.cmd games hd wbw_hd512 || exit /b
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd512 || exit /b
echo.
echo Building Combo Disk (512 directory entry format) Image...
copy /b ..\..\Binary\hd512_cpm22.img + ..\..\Binary\hd512_zsdos.img + ..\..\Binary\hd512_nzcom.img + ..\..\Binary\hd512_cpm3.img + ..\..\Binary\hd512_zpm3.img + ..\..\Binary\hd512_ws4.img ..\..\Binary\hd512_combo.img || exit /b
@@ -67,7 +66,7 @@ call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
call BuildDisk.cmd games hd wbw_hd1k || exit /b
if exist ..\BPBIOS\bpbio-ww.rel call BuildDisk.cmd bp hd wbw_hd1k || exit /b
if exist ..\BPBIOS\bp*.rel call BuildDisk.cmd bp hd wbw_hd1k || exit /b
copy hd1k_prefix.dat ..\..\Binary\ || exit /b

View File

@@ -19,7 +19,7 @@ HD1KIMGS = hd1k_cpm22.img hd1k_zsdos.img hd1k_nzcom.img \
HD1KXIMGS = hd1k_z80asm.img hd1k_aztecc.img hd1k_hitechc.img \
hd1k_bascomp.img hd1k_fortran.img hd1k_games.img \
hd1k_tpascal.img hd1k_qpm.img hd1k_blank.img
# HD1KIMGS += hd1k_bp.img
HD1KXIMGS += hd1k_bp.img
HD512PREFIX =
HD1KPREFIX = hd1k_prefix.dat

View File

@@ -2,12 +2,12 @@
# order is actually important, because of build dependencies
#
.PHONY: doc prop shared bp images rom zrc z1rcc zzrcc
.PHONY: doc prop shared bp images rom zrc z1rcc zzrcc zrc512
.ONESHELL:
.SHELLFLAGS = -cex
all: prop shared images rom zrc z1rcc zzrcc
all: prop shared bp images rom zrc z1rcc zzrcc zrc512
doc:
$(MAKE) --directory Doc $(ACTION)
@@ -50,6 +50,9 @@ z1rcc:
zzrcc:
$(MAKE) --directory ZZRCC $(ACTION)
zrc512:
$(MAKE) --directory ZRC512 $(ACTION)
clean: ACTION=clean
clean: all

View File

@@ -0,0 +1,41 @@
ZRC has no real ROM. It has a single 2048K RAM chip. There
are two startup modes supported by RomWBW.
The normal startup mode treats the first 512KB like ROM and the
remaining 1536KB as RAM. The first 512KB (pseudo-ROM) must be preloaded
by the ZRC CF Loader. This mode simulates a normal ROM-based RomWBW
startup.
Bank Contents Description
---- -------- -----------
0x0 BOOT Boot Bank (HBIOS image) +
0x1 IMG0 ROM Loader, Monitor, ROM OSes |
0x2 IMG1 ROM Applications | Pseudo-ROM
0x3 IMG2 Reserved |
0x4-0xF ROMD ROM Disk Banks +
0x10 BIOS HBIOS Bank (operating)
0x11-0x3B RAMD RAM Disk Banks
0x3C BUF OS Buffers (CP/M3)
0x3D AUX Aux Bank (CP/M 3, BPBIOS, etc.)
0x3E USR User Bank (CP/M TPA, etc.)
0x3F COM Common Bank, Upper 32KB
The ROMless startup mode treats the entire 2048KB as RAM. However, in
this mode, only the first 512KB of RAM is utilized. This is because
the RAM Disk is seeded by the CF Loader which is currently constrained
to loading 512KB. The entire 512KB of RAM (less the top 32KB) must be
preloaded by the ZRC CF Loader. There will be no ROM disk available
under RomWBW. There will be a RAM Disk and it's initial contents will
be seeded by the image loaded by the CF Loader.
Bank Contents Description
-------- -------- -----------
0x0 BIOS HBIOS Bank (operating)
0x1 IMG0 ROM Loader, Monitor, ROM OSes
0x2 IMG1 ROM Applications
0x3 IMG2 Reserved
0x4-0xB RAMD RAM Disk Banks
0xC BUF OS Buffers (CP/M3)
0xD AUX Aux Bank (CP/M 3, BPBIOS, etc.)
0xE USR User Bank (CP/M TPA, etc.)
0xF COM Common Bank, Upper 32KB

23
Source/ZRC512/Build.cmd Normal file
View File

@@ -0,0 +1,23 @@
@echo off
setlocal
set TOOLS=../../Tools
set PATH=%TOOLS%\srecord;%PATH%
if exist ..\..\Binary\RCZ80_zrc512.rom call :build_zrc512
goto :eof
:build_zrc512
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc512_cfldr.bin -binary -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc512_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc512_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\RCZ80_zrc512.rom -binary -offset 0x24000 -o temp.dat -binary
move temp.dat ..\..\Binary\hd1k_zrc512_prefix.dat
copy /b ..\..\Binary\hd1k_zrc512_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_zrc512_combo.img || exit /b
goto :eof

3
Source/ZRC512/Clean.cmd Normal file
View File

@@ -0,0 +1,3 @@
@echo off
setlocal

30
Source/ZRC512/Makefile Normal file
View File

@@ -0,0 +1,30 @@
HD1KZRC512PREFIX = hd1k_zrc512_prefix.dat
HD1KZRC512COMBOIMG = hd1k_zrc512_combo.img
ZRC512ROM = ../../Binary/RCZ80_zrc512.rom
HD1KIMGS = ../../Binary/hd1k_cpm22.img ../../Binary/hd1k_zsdos.img ../../Binary/hd1k_nzcom.img \
../../Binary/hd1k_cpm3.img ../../Binary/hd1k_zpm3.img ../../Binary/hd1k_ws4.img
OBJECTS :=
ifneq ($(wildcard $(ZRC512ROM)),)
OBJECTS += $(HD1KZRC512PREFIX) $(HD1KZRC512COMBOIMG)
endif
DEST=../../Binary
TOOLS = ../../Tools
include $(TOOLS)/Makefile.inc
DIFFPATH = $(DIFFTO)/Binary
$(HD1KZRC512PREFIX):
srec_cat -generate 0x0 0x100000 --constant 0x00 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x0 0x200 zrc512_cfldr.bin -binary -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1B8 0x200 zrc512_ptbl.bin -binary -offset 0x1B8 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x1F000 0x20000 zrc512_mon.bin -binary -offset 0x1F000 -o temp.dat -binary
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 $(ZRC512ROM) -binary -offset 0x24000 -o temp.dat -binary
mv temp.dat $@
$(HD1KZRC512COMBOIMG): $(HD1KZRC512PREFIX) $(HD1KIMGS)
cat $^ > $@

View File

@@ -0,0 +1,24 @@
ZRC512 Disk Prefix Layout
======================
---- Bytes ---- --- Sectors ---
Start Length Start Length Description
------- ------- ------- ------- ---------------------------
0x00000 0x001BE 0 1 CF Boot Loader
0x001B8 0x00048 RomWBW Partition Table
0x00200 0x1EE00 1 247 Unused
0x1F000 0x01000 248 8 ZRC512 Monitor v0.3
0x20000 0x04000 256 32 Unused
0x24000 0x80000 288 1024 RomWBW
0xA4000 0x5C000 1312 736 Unused
0x100000 2048 Start of slices (partition 0x1E)
Notes
-----
- At startup CPLD ROM is mapped to Z80 CPU address space 0x0000-0x003F, CPU begins execution at 0x0000
- CPLD ROM (CF bootstrap mode) reads CF Boot Loader (512B) from start of CF (MBR) to 0xB000 and runs it
- CF Boot Loader reads ZRC512 Monitor (4KB) from sectors 0xF8-0xFF of CF to 0xB400 and runs it
- ZRC Monitor reads 480KB (RomWBW) from sectors 0x120-0x4DF of CF into 480KB of physical RAM
- ZRC Monitor maps first 32KB of physical RAM to first 32KB of CPU RAM and starts execution at 0x0000

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -2,7 +2,7 @@
#DEFINE RMN 4
#DEFINE RUP 0
#DEFINE RTP 0
#DEFINE BIOSVER "3.4.0-dev.26"
#DEFINE BIOSVER "3.4.0-dev.32"
#define rmj RMJ
#define rmn RMN
#define rup RUP

View File

@@ -3,5 +3,5 @@ rmn equ 4
rup equ 0
rtp equ 0
biosver macro
db "3.4.0-dev.26"
db "3.4.0-dev.32"
endm