Compare commits

...

88 Commits

Author SHA1 Message Date
Wayne Warthen
1b2f452373 Move Online Doc Build to Release Workflow
The build process for the online documentation site has not changed, it was just moved to the Release workflow so it will be a little more stable.
2025-06-02 13:52:37 -07:00
Wayne Warthen
4f25b011e1 KERMIT File Mode Default to Binary
KERMIT (for CP/M 2.2 and 3) was originally using a file transfer mode called "DEFAULT".  This mode tried to accommodate binary or ASCII files, but could result in file corruption.  As suggested by @PeterOGB, the BINARY setting is much safer.  This is now the built-in default setting.

Co-Authored-By: PeterOGB <7755057+PeterOGB@users.noreply.github.com>
2025-06-02 13:48:09 -07:00
Wayne Warthen
6c95a4285a Xosera Follow-up
- Change 0x prefixes to $ prefixes for TASM
- Regen documentation
2025-06-02 13:31:09 -07:00
Wayne Warthen
f2e42dd9d8 Merge pull request #565 from codesmythe/xosera2
Add VDA driver for Xosera, an FPGA-based video controller.
2025-06-02 12:55:01 -07:00
Rob Gowin
936a3958a5 Add VDA driver for Xosera, an FPGA-based video controller. 2025-06-02 09:17:29 -04:00
Wayne Warthen
eb8b76819d MkDocs Follow-Up 2025-06-01 17:22:44 -07:00
Wayne Warthen
11bc9703c0 Merge pull request #563 from codesmythe/test04
Fix links in online docs to not link to PDF files.
2025-06-01 17:08:48 -07:00
Rob Gowin
9a77d7f93e Fix links in online docs to not link to PDF files.
Now when online docs are build, `gpp` is called with
a `-DGFM` argument, which `Basic.h` uses up to create
the proper links.
2025-06-01 10:44:12 -04:00
Wayne Warthen
2f5cf8fce4 Add Bounds Check to md.asm, Issue #560
Added checks to prevent HBIOS API read/write calls from access RAM or ROM banks outside of the banks allocated for RAM/ROM disk.
2025-05-31 17:25:44 -07:00
Wayne Warthen
0d0360b277 Enhanced Hi-Tech C Compiler Files, Issue #521
Added the enhanced Hi-Tech C Compiler components from @Laci1953 to user area 1 of the Hi-Tech Compiler disk images.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-05-31 15:11:38 -07:00
Wayne Warthen
7515359c3f Regen Docs 2025-05-31 13:01:52 -07:00
Wayne Warthen
30a89dedbd Move Docs Build After Upload Artifact 2025-05-31 11:34:12 -07:00
Wayne Warthen
f5e1987367 Merge pull request #562 from codesmythe/test03
Use GFM version of ReadMe.md for MkDocs.
2025-05-31 07:07:39 -07:00
Rob Gowin
45222d6b2a Use GFM version of ReadMe.md for MkDocs. 2025-05-31 06:43:22 -04:00
Wayne Warthen
3513b220c0 Improve ROM Layout Management, Issue #554
General cleanup and refactoring of the ROM bank layout mechanism in the build scripts.  This will make it easier to add and adjust the components in the ROM banks.

This commit does not yet implement the pending bank layout changes.  Those will be part of the next commit.
2025-05-30 19:21:10 -07:00
Wayne Warthen
81278afefe Merge pull request #561 from codesmythe/test02
Add flow to generate documentation page via MkDocs and GitHub Pages
2025-05-30 13:45:00 -07:00
Rob Gowin
eaca39b557 Add steps to commit GH action to deploy docs to GitHub Pages. 2025-05-30 15:01:47 -04:00
Rob Gowin
27864e8128 Add flow to generate docs using MkDocs.
Source/Doc/Makefile:
  - add steps to 'deploy_mkdocs' target to generate MkDocs input.
  - change default image extension for GFM output to SVG.

Source/Doc/mkdocs.yaml:
  New config file for 'mkdocs build.'
2025-05-30 14:59:48 -04:00
Wayne Warthen
ec77861fae Update ReadMe.txt in CPM22 Folder
Add attribution comments for CCPB03.ASM and BDOSB01.ASM per Bill Beech.
2025-05-30 09:09:18 -07:00
Wayne Warthen
52ea94161c TUNE Delay Switch, Issue #558
- Add a -DELAY switch to the TUNE command line to force the use of delay mode for note pacing.  Issue #558  Credit to @robbbates for suggesting this.
- Add missing include file logic for DS1307, Issue #556.  Credit to @tpycio.
- Miscellaneous documentation improvements per Peter Onion and Petr Antos.
2025-05-28 15:27:35 -07:00
Wayne Warthen
ed77b3ef84 Fix Char Device Name Display, Issue #557
An extraneous character device enumeration string had not been deleted as needed.  This has been fixed.

Thanks and credit to @PeterOGB.
2025-05-26 13:10:00 -07:00
Wayne Warthen
2f61c3fc81 Correct DS1307 Boot Date/Time Display, Issue #556
DS1307 driver (ds7rtc.asm) was displaying an erroneous date/time in the boot messages.  The HBIOS API data was OK.  Credit and thanks to @tpycio for identifying this issue.
2025-05-25 15:32:03 -07:00
Wayne Warthen
2ffd248eb5 LPT Driver Boot Messages, Issue #555
LPT driver will now display hardware that is not detected.  Thanks and credit to @robbbates.
2025-05-25 14:42:06 -07:00
Wayne Warthen
ed4ced1ab6 Update hbios.asm
- Missed one label change in previous commit.
2025-05-24 16:26:23 -07:00
Wayne Warthen
77d201f9d3 CPU Speed LCD Dynamic Update, Issue #520
- Enable dynamic update of CPU speed display on LCD.
2025-05-24 16:10:39 -07:00
Wayne Warthen
3e1e640bb3 Minor PCF Changes
- Slightly modified to be more consistent with typical RomWBW driver config.
2025-05-23 14:54:38 -07:00
Wayne Warthen
5c6ccbf0d3 Merge pull request #552 from wdl1908/master
gitignore Fixes and cleanup
2025-05-23 10:43:38 -07:00
Wayne Warthen
4559608aa5 Hardware Doc Fix, Issue #551
Thanks and credit to @PeterOGB for pointing this out.
2025-05-23 10:36:53 -07:00
Willy De la Court
e0b6a23e4a gitignore Fixes and cleanup 2025-05-23 15:54:03 +02:00
Wayne Warthen
f42c53f9e5 Merge pull request #545 from wdl1908/master
Some enhancements to the pcf driver.
2025-05-22 08:42:04 -07:00
Wayne Warthen
9563ae4c15 Merge pull request #549 from mggates39/feature/add_cobol_image
Add MS-COBOL Disk image
2025-05-22 08:40:59 -07:00
Wayne Warthen
331a55ec89 Update ver.lib 2025-05-21 19:44:49 -07:00
Wayne Warthen
6fec2aaf90 Initialize v3.6 Development 2025-05-21 16:47:48 -07:00
Wayne Warthen
27ec33e007 Update RELEASE_NOTES.md 2025-05-21 15:39:13 -07:00
Wayne Warthen
275291e61f Update RELEASE_NOTES.md 2025-05-21 15:37:05 -07:00
Wayne Warthen
ee6621cc63 Finalize v3.5.1 2025-05-21 15:08:25 -07:00
Marshall Gates
57007a60fc merge branch 'feature/add_cobol_image' of https://github.com/mggates39/RomWBW into feature/add_cobol_image 2025-05-20 23:41:47 -04:00
Marshall Gates
e048febffb Update the Makefile to include the COBOL disk images 2025-05-20 23:41:20 -04:00
Marshall G. Gates
12e76b3434 Merge branch 'master' into feature/add_cobol_image 2025-05-20 23:15:05 -04:00
Marshall Gates
aa6375c093 Adding MS-COBOL-80 Disk Image 2025-05-20 22:55:18 -04:00
Wayne Warthen
9599a2c37b Bump Version 2025-05-18 15:10:20 -07:00
Wayne Warthen
f5f3927e69 Merge pull request #547 from kiwisincebirth/map/hw-final2
Improved HW Doc for some profiles, Moved Errata section
2025-05-18 14:58:41 -07:00
Mark Pruden
696b737612 Improved HW Doc for some profiles, Moved Errata section 2025-05-18 12:36:36 +10:00
Wayne Warthen
09e868eec0 Minor Update to Introduction Document
- Credit Mark Pruden for SLABEL.
2025-05-17 10:47:13 -07:00
Wayne Warthen
6cbe5ad9b7 Merge pull request #546 from kiwisincebirth/map/hw-doc-final
Improvements to HW Doc
2025-05-17 10:24:31 -07:00
Mark Pruden
5976afce2e Added another link 2025-05-16 18:27:51 +10:00
Mark Pruden
8581f477d2 Minor improvement to Bill Shen's configurations. 2025-05-16 16:21:13 +10:00
Mark Pruden
7d3bc01899 fix typo 2025-05-16 14:59:35 +10:00
Mark Pruden
bd558d6a30 Fix typo in Doc 2025-05-16 14:23:13 +10:00
Mark Pruden
5d4b234fdb Reorganise content in Chapter 1 into multiple tables, with very minor corrections. also added UNA_std.rom into these summary tables as it was missing. 2025-05-16 14:16:22 +10:00
Willy De la Court
149601d17c Merge branch 'master' of github.com:wdl1908/RomWBW 2025-05-15 19:11:22 +02:00
Willy De la Court
b79709f61c Added default values for PCFCLK and PCFTRNS and comparisons to set PCF_CLK and PCF_TRNS 2025-05-15 19:11:03 +02:00
Wayne Warthen
7922ac4da5 Merge pull request #544 from kiwisincebirth/map/doc-hw-links
Significant additions to HW Doc,
2025-05-15 08:02:21 -07:00
Mark Pruden
d55f3bdcae Signifint additions to HW Doc, including descriptions, links to official projects, Better Config Names. 2025-05-15 17:49:50 +10:00
Wayne Warthen
aee00b0ff8 Update CGEN.COM
Bugfix per Ladislau.  See <https://groups.google.com/g/rc2014-z80/c/sBCCIpOnnGg>

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-05-13 13:33:29 -07:00
Wayne Warthen
a0d1825701 Bump Version 2025-05-08 16:46:30 -07:00
Wayne Warthen
cc2fda0cc2 Update pull_request_template.md 2025-05-08 16:42:51 -07:00
Wayne Warthen
e67b0f7e24 Restore EZZ80 Platform Config
Per Issue #541, a platform configuration file has been created for the EZZ80 platform.  The two ROM builds for this platform have changed prefix from RCZ80 to EZZ80.
2025-05-08 13:22:22 -07:00
Wayne Warthen
96d0900cf7 Merge pull request #542 from kiwisincebirth/map/doc-hw1
Reorganise HW Guide into sections per platform
2025-05-08 12:05:50 -07:00
Mark Pruden
98441355c9 Reorganise HW Guide into sections per platform 2025-05-08 19:48:31 +10:00
Wayne Warthen
2e0f7922ec Regen PDF Docs 2025-05-07 11:11:25 -07:00
Wayne Warthen
df3a9e7756 Merge pull request #539 from kiwisincebirth/map/improve-doc-platform
Documentation Improvements, fix omissions
2025-05-07 10:59:29 -07:00
Wayne Warthen
5e7f359b82 Merge branch 'master' into map/improve-doc-platform 2025-05-07 10:58:58 -07:00
Wayne Warthen
4ef452bcd8 Update System Guide Source
- The SystemGuide.md file associated with Issue #538 was accidentally omitted.  Thanks and credit to @kiwisincebirth for pointing this out!
2025-05-07 10:52:50 -07:00
Mark Pruden
d1af2ea8c0 Minor improvement to System Guide 2025-05-07 18:04:47 +10:00
Mark Pruden
cda51f7277 Documentation Improvements, fix omissions 2025-05-07 17:38:19 +10:00
Wayne Warthen
094545dcbb Missing Platform IDs in System Guide, Issue #538
Added missing platform IDs in the System Guide.  Thanks and credit to @hubertushirsch.
2025-05-03 11:35:28 -07:00
Wayne Warthen
d79dce64fe Regen Docs 2025-05-02 19:27:53 -07:00
Wayne Warthen
c1152cfe17 Merge pull request #537 from kiwisincebirth/map/doc-buffer_bank
Minor doc improvements
2025-05-02 19:22:16 -07:00
Mark Pruden
ea418f9dc4 Bugfix for SLABEL.COM 2025-05-02 22:04:47 +10:00
Wayne Warthen
5118ab8d0a Hardware Probing Conflicts, Issue #536
Mitigate issue where a hardware probe can corrupt the programming of a previously discovered device.
2025-04-29 13:55:35 -07:00
Wayne Warthen
e42c04d40f Bump Version for New Release Candidate 2025-04-25 13:55:20 -07:00
Wayne Warthen
3618e0a976 Font Map Images Update
- Cleanup of the .PNG images of the fonts.
2025-04-25 13:42:43 -07:00
Wayne Warthen
d0aad220df SLABEL Follow Up
- Source corrections related to TASM assembly
- Regen documentation
2025-04-25 10:57:11 -07:00
Wayne Warthen
98e633461f Merge pull request #534 from kiwisincebirth/map/slabel
New SLABEL.COM Utility
2025-04-25 10:04:25 -07:00
Wayne Warthen
cb33018341 Update Cowgol Disk Image
- Latest from Ladislau
- See <https://groups.google.com/g/rc2014-z80/c/sBCCIpOnnGg>

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-04-24 18:00:16 -07:00
Wayne Warthen
07c08e2817 System Guide Doc Fix
- See discussion at <https://groups.google.com/g/rc2014-z80/c/TIQv8-q4R2s>
2025-04-24 17:42:03 -07:00
Mark Pruden
37f01810f5 Bugfix for SLABEL.COM 2025-04-23 10:28:59 +10:00
Mark Pruden
9b4dd7b1bb Minor correction to applicatons.md 2025-04-23 10:18:11 +10:00
Mark Pruden
98414da4d5 New SLABEL.COM Utility 2025-04-23 08:35:42 +10:00
Wayne Warthen
3450ce71a6 Bump Version for Release Candidate 2025-04-17 12:41:13 -07:00
Wayne Warthen
f162081ec1 Refactor ZMP Overlay
- ZMP was crashing in most scenarios.  This was corrected.
- Minor adjustments to ZMP usage
- Added ZMP documentation
2025-04-17 11:53:53 -07:00
Wayne Warthen
6222f7410a Document ZPM3 Cmd Line Keys, Issue #533
When Jon Saxton fixed some ZPM3 bugs, he also made some minor changes to the command line editing key bindings.  These changes have been better documented.

Thanks and credit to @jduraes for reporting this.
2025-04-13 15:05:23 -07:00
Wayne Warthen
665067eb25 Merge pull request #532 from kiwisincebirth/map/z80asm-rename
Corrected Naming of SLRNKP.COM (SLR Link Plus)
2025-04-12 18:12:44 -07:00
Mark Pruden
dd25180f7c Corrected Naming of SLRNKP.COM (SLR Link Plus) 2025-04-13 11:09:04 +10:00
Wayne Warthen
ea38e8e93b Regen Doc 2025-04-11 19:33:24 -07:00
Wayne Warthen
ddb2da2b8f Merge pull request #531 from kiwisincebirth/map/z80asm-doc3
Better documentation for the Z80ASM toolset.
2025-04-11 19:20:10 -07:00
Mark Pruden
3268d99b43 Better documentation 2025-04-12 11:52:15 +10:00
217 changed files with 34952 additions and 1705 deletions

View File

@@ -7,5 +7,7 @@ BEFORE YOU CREATE A PULL REQUEST:
Thank you for contributing to RomWBW! I will review your pull request as soon as possible.
-Wayne
DELETE EVERYTHING IN THIS COMMENT BLOCK AND REPLACE WITH YOUR COMMENTS
-->

View File

@@ -52,6 +52,21 @@ jobs:
title: "${{env.TITLE}} ${{github.ref_name}}"
files: |
RomWBW-${{github.ref_name}}-Package.zip
- name: Build Docs
run: |
export TZ='America/Los_Angeles'
sudo apt-get install gpp pandoc
pip install mkdocs
make -C Source/Doc deploy_mkdocs
mkdocs build -f Source/Doc/mkdocs.yml
- name: Deploy Docs
uses: peaceiris/actions-gh-pages@v4
if: github.ref == 'refs/heads/master'
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: Source/Doc/site
# - name: Upload Package Archive
# uses: AButler/upload-release-assets@v2.0.2

76
.gitignore vendored
View File

@@ -77,7 +77,6 @@ Tools/unix/zx/zx
!Source/ver.lib
!Source/Apps/FAT/FAT.COM
!Source/Apps/copysl/copysl.com
!Source/Apps/ZMP/zmpx.com
!Source/Apps/ZMD/zmdsubs.rel
!Source/Apps/Test/vdctest/font.asm
@@ -121,11 +120,14 @@ Binary/Apps/Tunes/inchina.vgm
Binary/Apps/Tunes/shirakaw.vgm
Binary/Apps/Tunes/startdem.vgm
Binary/Apps/Tunes/wonder01.vgm
Binary/Apps/copysl.doc
Binary/Apps/fdu.doc
Binary/Apps/zmconfig.ovr
Binary/Apps/zminit.ovr
Binary/Apps/zmp.doc
Binary/Apps/zmp.hlp
Binary/Apps/zmp.cfg
Binary/Apps/zmp.fon
Binary/Apps/zmterm.ovr
Binary/Apps/zmxfer.ovr
Binary/CPM3/bdos3.spr
@@ -144,8 +146,7 @@ Binary/CPNET/cpn12ser.lbr
Binary/CPNET/cpn3duo.lbr
Binary/CPNET/cpn3mt.lbr
Binary/CPNET/cpn3ser.lbr
Binary/RCEZ80_std.upd
Binary/RCZ80_std.upd
Binary/*.upd
Binary/ZPM3/bnkbdos3.spr
Binary/ZPM3/bnkbios3.spr
Binary/ZPM3/gencpm.dat
@@ -174,74 +175,17 @@ Source/Fonts/fontcgau.asm
Source/Fonts/fontvgarcc.asm
Source/Fonts/fontvgarcc.bin
Source/Fonts/fontvgarcu.asm
Source/HBIOS/RCEZ80_std.upd
Source/HBIOS/RCZ80_std.upd
Source/HBIOS/*.upd
Source/HBIOS/build_env.cmd
Source/HBIOS/hbios_env.sh
Source/HBIOS/netboot.mod
Source/Images/*.cat
Source/Images/*.img
Source/Images/blank144
Source/Images/blankhd1k
Source/Images/blankhd512
Source/Images/fd144_aztecc.img
Source/Images/fd144_bascomp.img
Source/Images/fd144_cowgol.img
Source/Images/fd144_cpm22.img
Source/Images/fd144_cpm3.img
Source/Images/fd144_fortran.img
Source/Images/fd144_games.img
Source/Images/fd144_hitechc.img
Source/Images/fd144_nzcom.img
Source/Images/fd144_qpm.img
Source/Images/fd144_tpascal.img
Source/Images/fd144_ws4.img
Source/Images/fd144_z80asm.img
Source/Images/fd144_zpm3.img
Source/Images/fd144_zsdos.img
Source/Images/hd1k_aztecc.img
Source/Images/hd1k_bascomp.img
Source/Images/hd1k_blank.img
Source/Images/hd1k_bp.img
Source/Images/hd1k_combo.img
Source/Images/hd1k_cowgol.img
Source/Images/hd1k_cpm22.img
Source/Images/hd1k_cpm3.img
Source/Images/hd1k_fortran.img
Source/Images/hd1k_games.img
Source/Images/hd1k_hitechc.img
Source/Images/hd1k_nzcom.img
Source/Images/hd1k_qpm.img
Source/Images/hd1k_tpascal.img
Source/Images/hd1k_ws4.img
Source/Images/hd1k_z80asm.img
Source/Images/hd1k_zpm3.img
Source/Images/hd1k_zsdos.img
Source/Images/hd512_aztecc.img
Source/Images/hd512_bascomp.img
Source/Images/hd512_blank.img
Source/Images/hd512_combo.img
Source/Images/hd512_cowgol.img
Source/Images/hd512_cpm22.img
Source/Images/hd512_cpm3.img
Source/Images/hd512_dos65.img
Source/Images/hd512_fortran.img
Source/Images/hd512_games.img
Source/Images/hd512_hitechc.img
Source/Images/hd512_nzcom.img
Source/Images/hd512_qpm.img
Source/Images/hd512_tpascal.img
Source/Images/hd512_ws4.img
Source/Images/hd512_z80asm.img
Source/Images/hd512_zpm3.img
Source/Images/hd512_zsdos.img
Source/RomDsk/rom0_una.dat
Source/RomDsk/rom0_wbw.dat
Source/RomDsk/rom128_una.dat
Source/RomDsk/rom128_wbw.dat
Source/RomDsk/rom256_una.dat
Source/RomDsk/rom256_wbw.dat
Source/RomDsk/rom384_una.dat
Source/RomDsk/rom384_wbw.dat
Source/RomDsk/rom896_una.dat
Source/RomDsk/rom896_wbw.dat
Source/RomDsk/*.cat
Source/RomDsk/*.dat
Source/ZCPR-DJ/zcprdemo.com
Source/ZPM3/autotog.com
Source/ZPM3/clrhist.com

View File

@@ -9,6 +9,8 @@ if exist Tunes\*.pt? del Tunes\*.pt?
if exist Tunes\*.mym del Tunes\*.mym
if exist Tunes\*.vgm del Tunes\*.vgm
if exist bbcbasic.txt del bbcbasic.txt
if exist *.cfg del *.cfg
if exist *.fon del *.fon
pushd Test && call Clean || exit /b 1 & popd
pushd ZDE && call Clean || exit /b 1 & popd

View File

@@ -8,4 +8,4 @@ all::
mkdir -p Tunes
clean::
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm bbcbasic.txt
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm bbcbasic.txt *.cfg *.fon

View File

@@ -1,9 +1,26 @@
Version 3.6
-----------
- RDG: Added VDA driver for Xosera FPGA-based VDC
- MGG: Added COBOL language disk image
- WDC: Added config options to PCF driver
- WBW: Enabled dynamic CPU speed update on LCD screen
- WBW: Improve LPT driver boot messaging when not detected (per Robb Bates)
- WBW: Correct DS1307 boot date/time display (per Tadeusz Pycio)
- WBW: Add -DELAY option to TUNE app (per Robb Bates)
- RDG: Add online documentation site
- WBW: Added enhanced Hi-Tech C Compiler files from Ladislau Szilagyi
- WBW: Added boundary check to ram/rom disk driver
- WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary
Version 3.5.1
-------------
- WBW: Fix CPMLDR.SYS & ZPMLDR.SYS for SYSCOPY (reported by Guido Santer)
- MAP: Enhanced SLR Tools Disk Image with Plus versions
- WBW: Add missing BCLOAD file to MS BASIC Compiler Disk Image (reported by Marshall Gates)
- WBW: Doc improvements (per Fraser and Rob Gowin)
- WBW: Correct ZMP application crash
- MAP: Contribution of the SLABEL.COM tool for displaying and changing slice labels.
- MAP: Hardware documentation, Significant new content added with project links.
Version 3.5
-----------

File diff suppressed because one or more lines are too long

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

@@ -13,6 +13,24 @@ release of RomWBW.
applications. This is discussed in the "Upgrading" section of the
RomWBW User Guide.
## Version 3.5.1
This is a patch release of v3.5.
### Fixes
- Corrects an issue with the `CPMLDR.SYS` and `ZPMLDR.SYS` files that
caused `SYSCOPY` to fail when used with them.
- Added missing `BCLOAD` file to the MS BASIC Compiler disk image.
### New Features
- Added `SLABEL` application (Mark Pruden).
- Variety of documentation improvements, especially an overhaul of
the Hardware Document (Mark Pruden).
## Version 3.5
### Upgrade Notes
@@ -67,6 +85,8 @@ release of RomWBW.
- `COPYSL` slice copy application (Mark Pruden).
- `SLABEL` slice label display/edit tool (Mark Pruden).
- Improved disk slice management and protection (Mark Pruden).
- Initial NVRAM configuration support (Mark Pruden).

View File

@@ -5,9 +5,9 @@
**RomWBW Introduction** \
Version 3.5 \
Version 3.6 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
09 Apr 2025
02 Jun 2025
# Overview
@@ -49,7 +49,7 @@ Supported hardware features of RomWBW include:
- 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
- Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- Support for CP/NET networking using Wiznet, MT011 or Serial
@@ -305,6 +305,7 @@ let me know if I missed you!
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- COPYSL utility
- SLABEL utility
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility
@@ -339,6 +340,9 @@ let me know if I missed you!
- Les Bird has contributed support for the NABU w/ Option Board
- Rob Gowin created an online documentation site via MkDocs, and
contributed a driver for the Xosera FPGA-based video controller.
## Related Projects
Outside of the hardware platforms adapted to RomWBW, there are a variety

View File

@@ -1,6 +1,6 @@
RomWBW Introduction
Wayne Warthen (wwarthen@gmail.com)
09 Apr 2025
02 Jun 2025
@@ -46,7 +46,7 @@ Supported hardware features of RomWBW include:
- 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
- Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- Support for CP/NET networking using Wiznet, MT011 or Serial
@@ -312,6 +312,7 @@ let me know if I missed you!
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- COPYSL utility
- SLABEL utility
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility
@@ -346,6 +347,9 @@ let me know if I missed you!
- Les Bird has contributed support for the NABU w/ Option Board
- Rob Gowin created an online documentation site via MkDocs, and
contributed a driver for the Xosera FPGA-based video controller.
Related Projects

View File

@@ -29,6 +29,7 @@ call :build Survey || exit /b
call :build HTalk || exit /b
call :build BBCBASIC || exit /b
call :build copysl || exit /b
call :build slabel || exit /b
call :build ZDE || exit /b
goto :eof

View File

@@ -24,6 +24,7 @@ call :clean Survey || exit /b
call :clean HTalk || exit /b
call :clean BBCBASIC || exit /b
call :clean copysl || exit /b
call :clean slabel || exit /b
call :clean ZDE || exit /b
goto :eof

View File

@@ -1,5 +1,5 @@
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd reboot Survey BBCBASIC copysl \
sysgen syscopy assign format talk mode rtc timer ZDE
slabel sysgen syscopy assign format talk mode rtc timer ZDE
TOOLS =../../Tools
include $(TOOLS)/Makefile.inc

View File

@@ -23,6 +23,19 @@ CLI_HAVE_HBIOS_SWITCH1 ; NOT MATCHED --HBIOS
LD (HBIOSMD), A
RET
CLI_HAVE_DELAY_SWITCH:
LD HL, CLIARGS ; TEST FOR --DELAY ON COMMAND LINE
LD DE, DELAYOPT
CALL STRINDEX
JR NZ, CLI_HAVE_DELAY_SWITCH1
OR $FF ; MATCHED --DELAY
LD (DELAYMD), A
RET
CLI_HAVE_DELAY_SWITCH1 ; NOT MATCHED --HBIOS
XOR A
LD (DELAYMD), A
RET
CLI_PORTS:
LD HL, CLIARGS ; TEST FOR -MSX ON COMMAND LINE
LD DE, OPT_MSX
@@ -101,7 +114,8 @@ CLI_OCTAVE_ADJST5:
OPT_MSX .DB "-MSX", 0 ; USE MSX PORTS
OPT_RC .DB "-RC", 0 ; USE RC PORTS
HBIOSOPT: .DB "--HBIOS", 0
HBIOSOPT: .DB "--HBIOS", 0 ; USE HBIOS API FOR PLAYBACK
DELAYOPT: .DB "-DELAY",0 ; FORCE DELAY MODE
DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE
DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE
UP1 .DB "+t1", 0 ; UP AN OCTAVE

View File

@@ -41,8 +41,14 @@ DLY1 DEC BC ; [6]
; Test for timer running to determine if it can be used for delay
; Return string message in DE
; Assigned (WMOD) with 0 if no hardware time, 1 if hardware timer found
; If -DELAY on command line, force delay mode
;
PROBETIMER:
LD A,(DELAYMD) ; GET COMMAND LINE DELAY FLAG
OR A ; TEST IT
LD A,0 ; ASSUME NO TIMER
LD DE,MSGDLY ; DELAY MODE MESSAGE
JR NZ,SETDLY ; IF TRUE, DONE
LD B,BF_SYSGET ; HBIOS: GET function
LD C,$D0 ; TIMER subfunction
RST 08 ; DE:HL := current tick count

View File

@@ -53,6 +53,7 @@
; 2024-07-11 [WBW] Updated, Les Bird's module now uses same settings as EB6
; 2024-09-17 [WBW] Add support for HEATH H8 with Les Bird's MSX Card
; 2024-12-12 [WBW] Add options to force standard MSX or RC ports
; 2025-05-28 [WBW] Add option to force delay mode
;_______________________________________________________________________________
;
; ToDo:
@@ -113,6 +114,7 @@ Id .EQU 1 ; 5) Insert official identificator
CALL CLI_ABRT_IF_OPT_FIRST
CALL CLI_PORTS
CALL CLI_HAVE_HBIOS_SWITCH
CALL CLI_HAVE_DELAY_SWITCH
CALL CLI_OCTAVE_ADJST
JP CONTINUE
@@ -703,15 +705,16 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM)
TMP .DB 0 ; work around use of undocumented Z80
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
DELAYMD .DB 0 ; FORCE DELAY MODE IF TRUE (NON-ZERO)
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
USEPORTS .DB 0 ; AUDIO CHIP PORT SELECTION MODE
MSGBAN .DB "Tune Player for RomWBW v3.12, 12-Dec-2024",0
MSGUSE .DB "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",13,10
MSGBAN .DB "Tune Player for RomWBW v3.13, 28-May-2025",0
MSGUSE .DB "Copyright (C) 2025, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [-msx|-rc] [--hbios] [+tn|-tn]",0
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [-msx|-rc] [-delay] [--hbios] [+tn|-tn]",0
MSGBIO .DB "Incompatible BIOS or version, "
.DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0
MSGPLT .DB "Hardware error, system not supported!",0

View File

@@ -291,7 +291,7 @@ EXTRA3:
BIOID DB 0 ; BIOS ID, 1=HBIOS, 2=UBIOS
CPUSPD DB 10 ; CPU speed in MHz
RCVSCL DW 6600 ; RECV loop timeout scalar
UNIT DB 0 ; BIOS serial device unit number
UNIT DB 0FFH ; BIOS serial device unit number
BIOSBID DB 00H ; BIOS bank id
;
TAG DB "RomWBW, 30-May-2020$"
@@ -330,7 +330,7 @@ HB_JPTBL:
JP HB_GETCHR ; get character from modem
JP HB_RCVRDY ; check receive ready
JP HB_SNDRDY ; check send ready
JP HB_SPEED ; get speed value for file transfer time
JP HB_SPEED ; get speed value for file transfer time
;
;-----------------------------------------------------------------------
;
@@ -819,7 +819,6 @@ UF_INIT:
; Send character on top of stack
;
UF_SENDR:
POP AF ; get character to send from stack
OUT (0FFH),A ; write to fifo
UF_SCDP EQU $-1 ; data port

View File

@@ -81,7 +81,7 @@ MINIT1:
SUB '0' ; Got it, convert to binary
LD (UNIT),A ; Save it
LD A,' ' ; Space character to accum
LD (HL),A ; Remove numberic from FCB
LD (HL),A ; Remove numeric from FCB
JR MINIT3 ; Proceed with initialization
MINIT2:
@@ -188,7 +188,6 @@ MINIT_UB1:
LD (UNIT),A ; and save it
;
MINIT_UB2:
;
JP UB_INIT ; UNA BIOS init
;
MINIT_RET:
@@ -221,7 +220,6 @@ MINIT_RET:
;
; Return with CPU speed in A
LD A,(CPUSPD) ; A := CPU speed in MHz
LD HL,(RCVSCL) ; HL := receive scalar
RET ; and return
;
;-----------------------------------------------------------------------
@@ -307,6 +305,22 @@ FAIL:
CALL BDOS ; Do it
JP 0 ; Bail out!
;
; Adjust CPUSPD to account for overhead of HBIOS or UBIOS. It appears
; that dividing CPU speed in MHz by 8 results in timeouts that are
; roughly correct.
;
SLOW:
LD A,(CPUSPD) ; Get true CPU speed
ADD A,4 ; Add for rounding
SRL A ; Divide by 8
SRL A
SRL A
JR NZ,SLOW1 ; If not zero, we are good
LD A,1 ; else, make it 1
SLOW1:
LD (CPUSPD),A ; Save it
RET
;
;-----------------------------------------------------------------------
;
; The following are all dummy routines that are unused because MINIT
@@ -326,7 +340,6 @@ EXTRA3:
;
BIOID DB 0 ; BIOS ID, 1=HBIOS, 2=UBIOS
CPUSPD DB 10 ; CPU speed in MHz
RCVSCL DW 6600 ; RECV loop timeout scalar
UNIT DB 0FFH ; BIOS serial device unit number
BIOSBID DB 00H ; BIOS bank id
;
@@ -373,8 +386,7 @@ HB_JPTBL:
; HBIOS initialization
;
HB_INIT:
LD HL,2150 ; Smaller receive loop timeout scalar
LD (RCVSCL),HL ; ... to compensate for BIOS overhead
CALL SLOW ; Adjust CPUSPD for HBIOS overhead
;
; Patch SENDR w/ FastPath addresses
LD BC,0F801H ; Get CIO func/data adr
@@ -412,10 +424,6 @@ HB_INIT:
RST 08
JP NZ,APIERR ; handle API error
LD (HB_SRFN),HL ; Plug in func adr
;
; Claim 1 MHz CPU to offset overhead of HBIOS
LD A,1
LD (CPUSPD),A ; Save it
;
LD HL,HB_JPTBL
LD DE,HB_LBL
@@ -564,14 +572,8 @@ UB_INIT:
;
; TODO:
; - TEST!!!
; - ADJUST RCVSCL?
;
LD HL,3000 ; Smaller receive loop timeout scalar
LD (RCVSCL),HL ; ... to compensate for BIOS overhead
;
; Claim 1 MHz CPU to offset overhead of HBIOS
LD A,1
LD (CPUSPD),A ; Save it
CALL SLOW ; Adjust CPUSPD for UBIOS overhead
;
LD HL,UB_JPTBL
LD DE,UB_LBL
@@ -721,9 +723,6 @@ UA_JPTBL:
; UART initialization
;
UA_INIT:
LD DE,13000 ; receive loop timeout scalar
LD (RCVSCL),DE ; ... for UART RCVRDY timing
;
LD A,L ; get base I/O port address
LD (UA_SCP),A ; set port value in SENDR
LD (UA_GCP),A ; set port value in GETCHR
@@ -842,9 +841,6 @@ UF_JPTBL:
; USB-FIFO initialization
;
UF_INIT:
LD DE,12000 ; receive loop timeout scalar
LD (RCVSCL),DE ; ... for UART RCVRDY timing
;
LD A,L ; get base I/O port address (data port)
LD (UF_SCDP),A ; set data port in SENDR
LD (UF_GCDP),A ; set data port in GETCHR/MDIN
@@ -863,7 +859,6 @@ UF_INIT:
; Send character on top of stack
;
UF_SENDR:
POP AF ; get character to send from stack
OUT (0FFH),A ; write to fifo
UF_SCDP EQU $-1 ; data port

View File

@@ -7,10 +7,13 @@ set PATH=%TOOLS%\zxcc;%PATH%
set CPMDIR80=%TOOLS%/cpm/
zxcc Z80ASM -ZMO-RW01/H || exit /b
zxcc MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01 || exit /b
:: zxcc Z80ASM -ZMO-RW01/LH || exit /b
zxcc Z80ASM -ZMO-WBW/LH || exit /b
zxcc MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-WBW || exit /b
copy /Y zmp.com ..\..\..\Binary\Apps\ || exit /b
copy /Y *.ovr ..\..\..\Binary\Apps\ || exit /b
copy /Y zmp.cfg ..\..\..\Binary\Apps\ || exit /b
copy /Y zmp.fon ..\..\..\Binary\Apps\ || exit /b
copy /Y *.hlp ..\..\..\Binary\Apps\ || exit /b
copy /Y zmp.doc ..\..\..\Binary\Apps\ || exit /b

View File

@@ -1,10 +1,10 @@
OBJECTS = zmp.com *.ovr *.hlp zmp.doc
OBJECTS = zmp.com *.ovr zmp.cfg zmp.fon *.hlp zmp.doc
DEST = ../../../Binary/Apps
TOOLS = ../../../Tools
OTHERS = *.hex
NODELETE = *.ovr zmp.doc *.hlp
NODELETE = *.ovr zmp.doc zmp.cfg zmp.fon *.hlp
include $(TOOLS)/Makefile.inc
zmp.com: zmo-rw01.hex
$(ZXCC) MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01
zmp.com: zmo-wbw.hex
$(ZXCC) MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-WBW

View File

@@ -27,4 +27,15 @@ as at Aug 23rd, 2021.
Untested on Ron Murrays ZMP15
- Space getting short so messages shortened.
--PMS 8/24/2021
--PMS 8/24/2021
- Refactored overlay to resolve some stack issues.
- Removed support for setport because it didn't make much sense
with ability to specify port on command line.
- Added an equate (pcfg) which controls whether port configuration
is implemented. It is set to false (no port configuration).
because ZMP it is unable to handle many RomWBW serial port settings
(notably the hard-wired 115200 baud of many RCBus systems). You
must now used MODE to configure port before starting ZMP.
--WBW 1:55 PM 4/16/2025

Binary file not shown.

Binary file not shown.

844
Source/Apps/ZMP/zmo-wbw.z80 Normal file
View File

@@ -0,0 +1,844 @@
;-----------------------------------------------------------------------------
;
; Overlay for ZMP (Z-Modem Program)
;
; Name ZMO-WBW.Z80
;
; Dated April 14, 2025
;
; Written by -
; Phil Summers, Wayne Warthen
;
; ROMWBW version using HBIOS and https://github.com/mecparts/zmp
; version of zmodem
;
; - All modem/serial i/o is through RomWBW HBIOS.
;
; - Data bits, stop bits, and parity are determined by HBIOS.
; The ZMP settings will have no effect. Use RomWBW MODE
; command to set serial port config before starting ZMP.
;
; - Timing delay calculations based on HBIOS reported CPU speed.
;
; - The pcfg equate determines whether the overlay will
; implement port initialization. Normally, pcfg will be
; set to false because ZMP does not allow configuring
; many HBIOS speeds (notably the 115200 baud hardwired
; into many RCBus systems). In this case, you must
; configure the modem port using the RomWBW
; MODE command as desired before starting ZMP.
;
; - The modem port is assigned to an HBIOS character unit. By
; default, the modem is assigned to HBIOS character unit 1.
; An alternate HBIOS character unit may be specified as a
; parameter on the command line as a single number. For
; example, the following will assign HBIOS port 3 as the
; ZMP modem port:
;
; ZMP 3
;
; - The original version of ZMP from Ron Murray allows you to
; select from 2 logical modem ports. This overlay ignores
; any attempt to select ports from within ZMP. The desired
; modem port should be assigned using the command line
; parameter as described above.
;
; - Teraterm users may need to change the ZmodemWinSize value
; to 1024 in the teraterm.ini configuration file.
;
;-----------------------------------------------------------------------------
;
;
; System-dependent code overlay for ZMODEM
;
;
;
; Insert your own code as necessary in this file. Code contained herein
; has been written in Z80 code for use with M80 or SLR. Assemble as follows:
;
; SLR ZMO-xx01/h
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
; or
; M80 =ZMO-xx01.Z80
; RELHEX ZMO-xx01
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
;
;
; (Don't use L80 without changing the source for assembly as a
; cseg file.)
;
;-----------------------------------------------------------------------------
;
;
; Notes on modifying this file:
;
; C requires that functions do not change either index register (IX or IY).
; If your overlay requires either of these to be changed, ensure they are
; restored to the original values on return.
; Since collecting parameters from C functions can be tricky, only change
; the parts marked 'Insert your own code here'. Do NOT modify the jump
; table at the start. Do NOT modify the entry/exit sections of each
; function. Do NOT pass 'GO'. Do NOT collect $200.
; Apart from defining modem functions, this file also defines terminal
; characteristics. Examples provided are for ADM-3A (with a few of my own
; additions). Modify to suit your own terminal. An inline print routine
; is provided for printing strings in the usual way: usage is
;
; call print
; db 'required string',0
;
;-----------------------------------------------------------------------------
;
;
; Don't forget to set your clock speed at the clkspd variable.
;
;
; If you find your overlay exceeds the maximum size (currently 0400h),
; you will have to contact me for another version. If too many people need
; to do it, we haven't allowed enough room.
;
; Ron Murray 15/8/88
;
;
;
;---------------------------------------------------------------------------
false equ 0
true equ not false
;------------------------------------------------------------------------------
; User-set variables:
debug equ false ; to allow debugging of overlay with Z8E etc.
clkspd equ 8 ; Processor clock speed in MHz
pcfg equ false ; Allow ZMP to configure port
;
;Set the following two equates to the drive and user area which will contain
; ZMP's .OVR files, .CFG file, .FON file and .HLP file. Set both to zero
; (null) to locate them on the drive from which ZMP was invoked.
overdrive equ 0 ; Drive to find overlay files on ('A'-'P')
overuser equ 0 ; User area to find files
;------------------------------------------------------------------------------
; NOT user-set variables
userdef equ 0145h ; origin of this overlay
; This address should not change with
; subsequent revisions.
mspeed equ 03ch ; location of current baud rate.
ovsize equ 0400h ; max size of this overlay
fcb equ 05ch ; primary command line CP/M fcb
.z80 ; use z80 code
aseg ; absolute
if debug
org 100h ; so you can debug it with cebug, zsid, etc
else
org userdef
endif
esc equ 1bh
ctrlq equ 11h
cr equ 0dh
lf equ 0ah
bdos equ 5
codebgn equ $
;Jump table for the overlay: do NOT change this
jump_tab:
jp scrnpr ; screen print
jp mrd ; modem read with timeout
jp mchin ; get a character from modem
jp mchout ; send a character to the modem
jp mordy ; test for tx buffer empty
jp mirdy ; test for character received
jp sndbrk ; send break
jp cursadd ; cursor addressing
jp cls ; clear screen
jp invon ; inverse video on
jp invoff ; inverse video off
jp hide ; hide cursor
jp show ; show cursor
jp savecu ; save cursor position
jp rescu ; restore cursor position
jp mint ; service modem interrupt
jp invec ; initialise interrupt vectors
jp dinvec ; de-initialise interrupt vectors
jp mdmerr ; test uart flags for error
jp dtron ; turn DTR on
jp dtroff ; turn DTR OFF
jp init ; initialise uart
jp wait ; wait seconds
jp mswait ; wait milliseconds
jp userin ; user-defined entry routine
jp userout ; user-defined exit routine
jp getvars ; get system variables
jp setport ; set port (0 or 1)
; Spare jumps for compatibility with future versions
jp spare ; spare for later use
jp spare ; spare for later use
jp spare ; spare for later use
jp spare ; spare for later use
jp spare ; spare for later use
jp spare ; spare for later use
; Local storage
hbunit db 1 ; Active HBIOS unit for modem I/O
cpumhz db clkspd ; CPU clock speed in MHz
;
; Main code starts here
;
;Screen print function
scrnpr:
; <== Insert your own code here
call print
db 'Screen print not supported.',cr,lf,0
; <== End of your own code
spare:
ret
; User-defined entry routine: leave empty if not needed
userin:
push bc
push de
push hl
call print
db cr,lf,'ZMP Overlay for RomWBW HBIOS v1.0',cr,lf,0
; Scan and parse default FCB to initialize HBIOS unit if
; specified.
ld a,(fcb + 1) ; get parm from fcb
cp ' ' ; anything there?
jr z,userin1 ; if empty, done
sub '0' ; ASCII to binary
jr c,parmerr ; less than 0, parm error
cp 10 ; >= 10?
jr nc,parmerr ; greater than 9, parm error
ld (hbunit),a ; save it
userin1:
call showcom ; show com port info
; check that unit is actually available in HBIOS
ld bc,0f800h ; get HBIOS char unit count
rst 8 ; do it
ld a,(hbunit) ; get active modem unit
cp e ; compare to units available
jr nc,porterr ; unit too high, port error
if pcfg
; Force port initialization by setting an invalid
; baud rate (mspeed).
; speed to an arbitrary value of 8 (9600 baud).
ld a,-1
ld (mspeed),a
else
; We don't support port configuration. Here we set the modem
; speed to an arbitrary value of 8 (9600 baud).
ld a,8
ld (mspeed),a
endif
ld bc,0f8f0h ; HBIOS func get CPU info
rst 08 ; do it, l = CPU speed in MHz
ld a,l ; to accum
ld (cpumhz),a ; and save it for wait loop
ld hl,2
call waithls
pop hl
pop de
pop bc
ret
parmerr:
; Handle a bad parameter
call print ; print error message
db cr,lf,'ZMP parameter error!',cr,lf,0
rst 0 ; bail out to OS
porterr:
; Handle a bad port
call print ; print error message
db cr,lf,'Invalid HBIOS unit for ZMP Modem port!',cr,lf,0
rst 0 ; bail out to OS
showcom:
; Display the HBIOS unit to be used for the ZMP Modem
call print
db cr,lf,'ZMP Modem on HBIOS Unit #',0
ld a,(hbunit)
add a,'0'
call cout
call print
db cr,lf,0
; User-defined exit routine: leave empty if not needed
userout:
ret
;Get a character from the modem: return in HL
mchin:
push bc
; <== Insert your own code here
ld a,(hbunit)
ld c,a
ld b,00h
rst 08
ld a,e
; <== End of your own code
ld l,a ; put in HL
ld h,0
or a ; set/clear Z
pop bc
ret
;Send a character to the modem
mchout:
ld hl,2 ; get the character
add hl,sp
ld a,(hl)
; <== Insert your own code here
push bc
ld e,a
ld a,(hbunit)
ld c,a
ld b,01h
rst 08
pop bc
; <== End of your own code
ret ; done
;Test for output ready: return TRUE (1) in HL if ok
mordy:
; <== Insert your own code here
push bc
ld a,(hbunit)
ld c,a
ld b,03h
rst 08
ld h,0
ld l,a
pop bc
; <== End of your own code
ld a,l ; set/clear Z
or a
ret
;Test for character at modem: return TRUE (1) in HL if so
mirdy:
; <== Insert your own code here
push bc
ld a,(hbunit)
ld c,a
ld b,02h
rst 08
ld h,0
ld l,a
pop bc
; <== End of your own code
ld a,l ; set/clear Z
or a
ret
;Send a break to the modem: leave empty if your system can't do it
sndbrk:
; <== Insert your own code here
ld hl,300 ; wait 300 mS
call waithlms
; <== End of your own code
ret
;
;Test UART flags for error: return TRUE (1) in HL if error.
mdmerr:
; <== Insert your own code here
xor a ; not implemented
; <== End of your own code
ld a,l ; set/clear Z
or a
ret
;Turn DTR ON
dtron:
; <== Insert your own code here
; <== End of your own code
ret
;Turn DTR OFF
dtroff:
; <== Insert your own code here
; <== End of your own code
ret
;Initialise the uart
init:
ld hl,2 ; get parameters
add hl,sp
ex de,hl
call getparm ; in HL
ld (brate),hl ; baud rate
call getparm
ld (parity),hl ; parity
call getparm
ld (data),hl ; data bits (BINARY 7 or 8)
call getparm
ld (stop),hl ; stop bits (BINARY 1 or 2)
; <== Insert your own code here
; using values below
; don't forget to load mspeed with the
; current brate value if the new rate is
; valid. See table of values below.
push bc
; If pcfg is true, attempt to initialize the active
; HBIOS unit. If false, initialization if bypassed with
; the assumption that the RomWBW MODE command was used
; to initialize the port priot to running ZMP.
if pcfg
call print
db 'Initializing device: ',0
call diport
ld a,(hbunit) ; get device type
ld c,a
ld b,06h
rst 08
or a ; check if valid
jr nz,initerr
ld a,(brate) ; get baud rate to set
ld c,a
ld b,0
ld hl,baudtbl
add hl,bc
ld a,(hl) ; convert to encoded hbios
cp a,-1
jr z,initerr
push af
ld a,(hbunit) ; get line characteristics
ld c,a
ld b,05h
rst 08
ld a,d ; mask out exisitng
and 11100000b ; replace with rate
ld d,a
pop af
or d
ld d,a
ld b,04h ; set new
ld a,(hbunit) ; speed
ld c,a
rst 08
or a
jr nz,initerr
ld a,(brate) ; load mspeed with the current brate value if
ld (mspeed),a ; the new rate is valid. See table of values below.
call print
db lf,lf,'Initization completed, device: ',0
call diport
jr init_z
initerr:call print
db lf,lf,'Initization failed, device: ',0
call diport
jr init_z
diport: ld a,(hbunit) ; Display port
diport1:add a,'0'
call cout
call print
db cr,lf,0
ld hl,2
call waithls
ret
else
;call print
;db cr,lf,'Modem port initialization...',0
;ld hl,2
;call waithls
ld b,05h ; HBIOS port reset function
ld a,(hbunit) ; get active modem port
ld c,a ; and put in accum
rst 8 ; reset port
or a ; check result
jr nz,init1 ; if error, handle it
ld a,8 ; dummy value for speed
ld (mspeed),a ; save it
jr init_z ; done
init1:
; Handle error return from initialization
call print
db cr,lf,'Modem port initialization failed!',cr,lf,0
ld hl,2
call waithls
jr init_z
endif
init_z:
pop bc
; <== End of your own code
ret
;--------------------------------------------------------------------------
stop: dw 1 ; stop bits
parity: dw 'N' ; parity
data: dw 8 ; data bits
brate: dw 7 ; baud rate:
;--------------------------------------------------------------------------
;
;Values of brate for each baud rate
;
; hb encode baud rate brate
;
baudtbl:
db -1 ; 110 0 not supported
db 2 ; 300 1
db 17 ; 450 2
db 3 ; 600 3
db -1 ; 710 4 not supported
db 4 ; 1200 5
db 5 ; 2400 6
db 6 ; 4800 7
db 7 ; 9600 8
db 8 ; 19200 9
db 9 ; 38400 10
db 24 ; 57600 11
db 10 ; 76800 12
;
; Set the port. ZMP supplies either 0 or 1 as a parameter. You're on your
; own here -- your system is bound to be different from any other! You may
; implement a software switch on all the modem-dependent routines, or perhaps
; you can have one or two centralised routines for accessing the UARTs and
; modify the code from this routine to select one or the other. (Who said
; there was anything wrong with self-modifying code?). If you have only one
; UART port, or if you don't want to go through all the hassles, just have
; this routine returning with no changes made. Note that ZMP calls this
; routine with both values for the port on initialisation.
;
; Only originl ZMP calls setport. MECPARTS variant does not.
;
; We ignore this call. Since we are using a command line parameter
; to specify the desired modem port, it makes no sense.
;
setport:
ld hl,2 ; get port number
add hl,sp
ex de,hl
call getparm ; in HL (values are 0 and 1)
; <== Insert your own code here
; <== End of your own code
ret
;
;****************************************************************************
;Video terminal sequences: these are for VT-100: Modify as you wish
;Cursor addressing:
cursadd:
ld hl,2 ; get parameters
add hl,sp
ex de,hl
call getparm ; in HL
inc hl
ld (row),hl ; row
call getparm
inc hl
ld (col),hl ; column
;
push bc
call print
db esc,'[',0
ld a,(row) ; row first
call cursconv
ld a,';'
call cout
ld a,(col) ; same for column
call cursconv
ld a,'H'
call cout
pop bc
ret
;
cursconv:
ld b,a
xor a
ca1: add a,1
daa
djnz ca1
ld (num),a
and 0f0h
jr z,ca2
srl a
srl a
srl a
srl a
or '0'
call cout
ca2: ld a,(num)
and 0fh
or '0'
call cout
ret
;
row: ds 2 ; row
col: ds 2 ; column
num: ds 1
;
;Clear screen:
cls:
call print
db esc,"[H",esc,"[2J",0
ret
;
;Inverse video on:
invon:
call print
db esc,"[7m",0
ret
;
;Inverse video off:
invoff:
call print
db esc,"[m",0
ret
;
;Turn off cursor:
hide:
call print
db esc,'[?25l',0
ret
;
;Turn on cursor:
show:
call print
db esc,'[?25h',0
ret
;
;Save cursor position:
savecu:
call print
db esc,'[7',0
ret
;
;Restore cursor position:
rescu:
call print
db esc,'[8',0
ret
;****************************************************************************
;Service modem interrupt:
mint:
ret ; handled in HBIOS
;Initialise interrupt vectors:
invec:
ret ; ditto
;De-initialise interrupt vectors:
dinvec:
ret ; ditto
;****************** End of user-defined code ********************************
; Do not change anything below here.
;Modem character test for 100 ms
mrd:
push bc ; save bc
ld bc,100 ; set limit
mrd1:
call mirdy ; char at modem?
jr nz,mrd2 ; yes, exit
ld hl,1 ; else wait 1ms
call waithlms
dec bc ; loop till done
ld a,b
or c
jr nz,mrd1
ld hl,0 ; none there, result=0
xor a
mrd2:
pop bc
ret
; Inline print routine: destroys A and HL
print:
ex (sp),hl ; get address of string
ploop:
ld a,(hl) ; get next
inc hl ; bump pointer
or a ; done if zero
jr z,pdone
call cout ; else print
jr ploop ; and loop
pdone:
ex (sp),hl ; restore return address
ret ; and quit
;
;Output a character in A to the console
;
cout:
push bc ; save regs
push de
push hl
ld e,a ; character to E
ld c,2
call bdos ; print it
pop hl
pop de
pop bc
ret
;Wait seconds
wait:
ld hl,2
add hl,sp
ex de,hl ; get delay size
call getparm
; fall thru to..
;Wait seconds in HL
waithls:
push hl ; save loop control
ld hl,1000 ; 1000ms = 1 second
call waithlms
pop hl ; restore loop control
dec hl
ld a,h
or l
jr nz,waithls
ret
;Wait milliseconds
mswait:
ld hl,2
add hl,sp
ex de,hl ; get delay size
call getparm
; fall thru to..
;Wait milliseconds in HL
waithlms:
; burn 1000us (1ms)
ld a,(cpumhz)
ld e,a
hlms1:
; burn 1000 t-states
; 50 * 20 = 1000 t-states
ld d,50
hlms2:
nop ; 4
dec d ; 4
jr nz,hlms2 ; 12 20
dec e
jr nz,hlms1
dec hl
ld a,h
or l
jr nz,waithlms
ret
;Get next parameter from (de) into hl
getparm:
ex de,hl ; get address into hl
ld e,(hl) ; get lo
inc hl
ld d,(hl) ; then hi
inc hl ; bump for next
ex de,hl ; result in hl, address still in de
ret
;Get address of user-defined variables
getvars:
ld hl,uservars
ret
uservars:
dw overdrive ; .OVR etc. drive/user
dw overuser
if ($ - codebgn) gt ovsize
toobig: jp errval ; Overlay too large!
endif
end


View File

@@ -26,11 +26,11 @@
; has been written in Z80 code for use with M80 or SLR. Assemble as follows:
;
; SLR ZMO-xx01/h
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
; MLOAD ZMP.COM=ZMPX.COM,ZMO-xx01.HEX
; or
; M80 =ZMO-xx01.Z80
; RELHEX ZMO-xx01
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
; MLOAD ZMP.COM=ZMPX.COM,ZMO-xx01.HEX
;
;
; (Don't use L80 without changing the source for assembly as a
@@ -570,4 +570,3 @@ toobig: jp errval ; Overlay too large!
endif
end


View File

@@ -12,6 +12,10 @@ awhile (some, a few decades):
* In keyboard macros, ! translates to a CR now, not CR/LF.
* \ escapes ! and ~ so those literal characters can be used in
keyboard macros.
* Waits in keyboard macros now allow characters from the modem to
be handled.
* Keys in keyboard macros now have 25ms waits between them as to
not overrun the remove system.
* Long distance access code has been removed.
* Quick dialing letters limited to A-T.
@@ -23,5 +27,5 @@ version in ZMP15.LBR. So, to quote the original author,
new one with the config option. There have again been changes to
the format of this file."
June 7, 2021
August 15, 2023


Binary file not shown.

View File

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

View File

@@ -0,0 +1,6 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.bin del *.bin

View File

@@ -0,0 +1,7 @@
OBJECTS = slabel.com
DEST = ../../../Binary/Apps
TOOLS =../../../Tools
USETASM=1
include $(TOOLS)/Makefile.inc

View File

@@ -0,0 +1,763 @@
;==============================================================================
; SLICE LABEL - Update Disk Labels
; Version December-2024
;==============================================================================
;
; Author: Mark Pruden
;______________________________________________________________________________
;
; Usage:
; SLABEL [unit.slice,label] [/?]
; ex: SLABEL Display current list of Labels
; SLABEL unit.slice=label Assign a disk Label to the Slice on Unit
; SLABEL /? Display version and usage
;
; Operation:
; Print and Assign a Disk Label to a Hard Disk Slice.
;
; Technical:
; On the third sector of "bootable" Disk Slice there is metadata used by RomWBW to know how
; to boot the OS found on the slice. This includes a Label for the volume, which is printed
; out by RomWBW during the boot process.
; Note this label is not associated to any label the OS may assign to the volume.
; See loader.asm in each of the O/S directories e.g. /src/CPM22 which describe these sectors
;
; This ony works on slices which have existing media information in the third sector.
; There is no capabiity to write this information on demand.
;
; known Issues:
; - Listing the slabel for all slices can be time consuming, because of the use of the EXT_MEDIA
; function call. This function reads the partition table (on each call) to assert (if valid)
; the LBA location of the requested slice. Ideally we would only need to read the partition
; table once (per device), and work out all the LBA's from this single read.
; Note this doesnt omit the fact that the 3 rd sector of each slice wold need to be read regarless.
; To slightly reduce some IO only slices < 64 are considered.
;
; This code will only execute on a Z80 CPU (or derivitive)
; This code requirs the use of HBIOS
;
;______________________________________________________________________________
;
; Change Log:
; 2024-12-11 [MAP] Started - Reboot v1.0 used as the basis for this code
; 2024-12-14 [MAP] Initial 0.9 alpha with basic working functionality
; 2025-04-21 [MAP] Initial v1.0 release for distribution, fixing all issues
;______________________________________________________________________________
;
; Include Files
;
#include "../../ver.inc" ; to ensure it is the correct ver
#include "../../HBIOS/hbios.inc"
;
;===============================================================================
;
; General operational equates (should not requre adjustment)
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
cmdbuf .equ $0081 ; CPM command buffer
;
bf_sysreset .equ $F0 ; restart system
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
;
sigbyte1 .equ $A5 ; 1st sig byte boot info sector (bb_sig)
sigbyte2 .equ $5A ; 2nd sig byte boot info sector (bb_sig)
;
labelterm .equ '$' ; terminating charater for disk label
;
;===============================================================================
;
.org $0100 ; standard CP/M TPA executable
;
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
ld de,str_banner
call prtstr ; print the banner
;
call init ; initialize
jr nz,exit ; abort if init fails
;
call main ; do the real work
;
exit:
call crlf ; print terminating crlf
ld sp,(stksav) ; restore stack to prior state
jp restart ; return to CP/M via restart
;
;===============================================================================
; Initialization
;
init:
; check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,initwbw ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
jp err_una ; UNA not supported
;
initwbw:
; get location of config data and verify integrity
ld hl,(ident) ; HL := adr or RomWBW HBIOS ident
ld a,(hl) ; get first byte of RomWBW marker
cp 'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (marker byte 2)
ld a,(hl) ; load it
cp ~'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (major/minor version)
ld a,(hl) ; load it
cp rmj << 4 | rmn ; match?
jp nz,err_ver ; abort with invalid os version
;
initz:
; initialization complete
xor a ; signal success
ret ; return
;
;===============================================================================
; Main Execution
;
main:
call initdiskio ; initi DiskIO routines (bank ID)
;
ld de,cmdbuf ; start of command input buffer
call skipws ; skip whitespace on cmd line
;
ld a,(de) ; get first non-ws char
or a ; test for terminator, no parms
jr z,prtslc ; if so, print details, and return
;
call isnum ; do we have a number?
jp z,setlabel ; if so, then we are setting Label.
;
jp usage ; otherwise print usage and return
ret ; and exit
;
;===============================================================================
; Print Usage /? Information
;
usage:
ld de,str_usage ; display the cmd options for this utility
call prtstr
;
ret ; exit back out to CP/M CCP
;
;===============================================================================
; Print list of all slices
;
prtslc:
ld de,PRTSLC_HDR ; Header for list of Slices
call prtstr ; Print It
;
ld bc,BC_SYSGET_DIOCNT ; FUNC: SYSTEM INFO GET DISK DRIVES
rst 08 ; E := UNIT COUNT
;
ld b,e ; MOVE Disk CNT TO B FOR LOOP COUNT
ld c,0 ; C WILL BE UNIT INDEX
prtslc1:
ld a,b ; loop counter
or a ; set flags
ret z ; IF no more drives, finished
;
ld a,c ; unit index
ld (currunit),a ; store the unit number
;
push bc ; save loop vars
call prtslc2 ; for each disk Unit, print its details
pop bc ; restore loop variables
;
inc c ; bump the unit number
djnz prtslc1 ; main disk loop
;
ret ; loop has finished
;
;-------------------------------------------------------------------------------
; Print list of All Slices for a given Unit
;
prtslc2:
; get the media infor
ld b,BF_DIOMEDIA ; get media information
ld e,1 ; with media discovery
rst 08 ; do media discovery
ret nz ; an error
;
ld a,MID_HD ; hard disk
cp e ; is it hard disk
ret nz ; if not noting to do
;
; setup the loop
ld b,64 ; arbitrary (?) number of slices to check.
; NOTE: could be higher, but each slice check has disk IO
ld c,0 ; starting at slice 0
;
prtslc2a:
ld a,c ; slice number
ld (currslice),a ; save slice number
;
push bc ; save loop
call prtslc3 ; print detals of the slice
pop bc ; restore loop
ret nz ; if error dont continie
;
inc c ; next slice number
djnz prtslc2a ; loop if more slices
;
ret ; return from Slice Loop
;
;-------------------------------------------------------------------------------
; Print details of a Slice for a given Unit/Slice
;
prtslc3:
; get the details of the device / slice
ld a,(currunit)
ld d,a ; unit
ld a,(currslice)
ld e,a ; slice
ld b,BF_EXTSLICE ; EXT function to check compute slice offset
rst 08 ; noting this call checks partition table.
ret NZ ; an error, for lots of reasons, e.g. Slice not valid
;
call thirdsector ; point to the third sector of partition
;
call diskread ; do the sector read
ret nz ; read error. exit the slice loop
;
; Check signature
ld bc,(bb_sig) ; get signature read
ld a,sigbyte1 ; expected value of first byte
cp b ; compare
jr nz,prtslc5 ; ignore missing signature and loop
ld a,sigbyte2 ; expected value of second byte
cp c ; compare
jr nz,prtslc5 ; ignore missing signature and loop
;
; Print volume label string at HL, '$' terminated, 16 chars max
ld a,(currunit)
call prtdecb ; print unit number as decimal
call pdot ; print a DOT
ld a,(currslice)
call prtdecb
ld a,' '
call cout ; print a space
call cout ; print a space
ld hl,bb_label ; point to label
call pvol ; print it
call crlf
;
prtslc5:
xor a
ret
;
;-------------------------------------------------------------------------------
; Print volume label string at HL, '$' terminated, 16 chars max
;
pvol:
ld b,16 ; init max char downcounter
pvol1:
ld a,(hl) ; get next character
cp labelterm ; set flags based on terminator $
inc hl ; bump pointer regardless
ret z ; done if null
call cout ; display character
djnz pvol1 ; loop till done
ret ; hit max of 16 chars
;
;===============================================================================
; Set Label Information onto disk
;
setlabel:
call getnum ; parse a number
jp c,err_parm ; handle overflow error
ld (currunit),a ; save boot unit
xor a ; zero accum
ld (currslice),a ; save default slice
call skipws ; skip possible whitespace
ld a,(de) ; get separator char
or a ; test for terminator
jp z,err_parm ; if so, incomplete
cp '=' ; otherwise, is ','?
jr z,setlabel4 ; if so, skip the Slice parm
cp '.' ; otherwise, is '.'?
jp NZ,err_parm ; if not, format error
;
inc de ; bump past separator
call skipws ; skip possible whitespace
call isnum ; do we have a number?
jp nz,err_parm ; if not, format error
call getnum ; get number
jp c,err_parm ; handle overflow error
ld (currslice),a ; save boot slice
setlabel3:
call skipws ; skip possible whitespace
ld a,(de) ; get separator char
or a ; test for terminator
jp z,err_parm ; if so, then an error
cp '=' ; otherwise, is ','?
jp nz,err_parm ; if not, format error
setlabel4:
inc de ; bump past separator
call skipws ; skip possible whitespace
ld (newlabel),de ; address of disk label after '='
;
ld a,(currunit) ; passing boot unit
ld d,a
ld a,(currslice) ; and slice
ld e,a
ld b,BF_EXTSLICE ; HBIOS func: SLICE CALC - extended
rst 08 ; info for the Device, and Slice
;
; Check errors from the Function
cp ERR_NOUNIT ; compare to no unit error
jp z,err_nodisk ; handle no disk err
cp ERR_NOMEDIA ; no media in the device
jp z,err_nomedia ; handle the error
cp ERR_RANGE ; slice is invalid
jp z,err_badslice ; bad slice, handle err
or a ; any other error
jp nz,err_diskio ; handle as general IO error
;
call thirdsector ; point to the third sector of partition
;
call diskread ; read the sector
jp nz,err_diskio ; abort on error
;
; Check signature
ld de,(bb_sig) ; get signature read
ld a,sigbyte1 ; expected value of first byte
cp d ; compare
jp nz,err_sig ; handle error
ld a,sigbyte2 ; expected value of second byte
cp e ; compare
jp nz,err_sig ; handle error
;
ld b,16 ; loop down counter (max size of label)
ld de,(newlabel) ; reading from cmd line
ld hl,bb_label ; writing to disk label in sector buffer
updatelabel:
ld a,(de) ; read input
or a ; look for string terminator
jr z,updatelabel2 ; if terminator then complete
ld (hl),a ; store char in sector buff
inc de ; update pointers
inc hl
djnz updatelabel ; loop for next character
updatelabel2:
ld a,labelterm
ld (hl),a ; store the final terminator $ char
writelabel:
; write the sector
ld hl,(lba) ; lba, low word, same as read sector
ld de,(lba+2) ; lba, high word
call diskwrite ; write the sector back to disk
jp nz,err_diskio ; abort on error
;
; print the outcome.
ld de,PRTSLC_HDR ; Header for list of Slices
call prtstr ; Print header
call prtslc3 ; print updated label for unit/slice
;
ret
;
;-------------------------------------------------------------------------------
; advance the DE HL LBA sector by 2, ie third sector
;
thirdsector:
ld bc,2 ; sector offset
add hl,bc ; add to LBA value low word
jr nc,sectornum ; check for carry
inc de ; if so, bump high word
sectornum:
ld (lba),hl ; update lba, low word
ld (lba+2),de ; update lba, high word
ret
;
;===============================================================================
; Error Handlers
;
err_una:
ld de,str_err_una
jr err_ret
err_inv:
ld de,str_err_inv
jr err_ret
err_ver:
ld de,str_err_ver
jr err_ret
err_parm:
ld de,str_err_parm
jr err_ret
err_nodisk:
ld de,str_err_nodisk
jr err_ret
err_nomedia:
ld de,str_err_nomedia
jr err_ret
err_badslice:
ld de,str_err_badslc
jr err_ret
err_sig:
ld de,str_err_sig
jr err_ret
err_diskio:
ld de,str_err_diskio
jr err_ret
err_ret:
call crlf2
call prtstr
or $FF ; signal error
ret
;
;===============================================================================
; Utility Routines
;-------------------------------------------------------------------------------
; Print a dot on console
;
pdot:
push af
ld a,'.'
call cout
pop af
ret
;
;-------------------------------------------------------------------------------
; Print character in A without destroying any registers
;
prtchr:
cout:
push af ; save registers
push bc
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
pop af
ret
;
;-------------------------------------------------------------------------------
; Start a newline on console (cr/lf)
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
;-------------------------------------------------------------------------------
; Print a zero terminated string at (de) without destroying any registers
;
prtstr:
push af
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
pop af
ret
;
;-------------------------------------------------------------------------------
; Print value of a in decimal with leading zero suppression
;
prtdecb:
push hl
push af
ld l,a
ld h,0
call prtdec
pop af
pop hl
ret
;
;-------------------------------------------------------------------------------
; Print value of HL in decimal with leading zero suppression
;
prtdec:
push bc
push de
push hl
ld e,'0'
ld bc,-10000
call prtdec1
ld bc,-1000
call prtdec1
ld bc,-100
call prtdec1
ld c,-10
call prtdec1
ld e,0
ld c,-1
call prtdec1
pop hl
pop de
pop bc
ret
prtdec1:
ld a,'0' - 1
prtdec2:
inc a
add hl,bc
jr c,prtdec2
sbc hl,bc
cp e
jr z,prtdec3
ld e,0
call cout
prtdec3:
ret
;
;-------------------------------------------------------------------------------
; INPUT ROUTINES
;-------------------------------------------------------------------------------
; Skip whitespace at buffer adr in DE, returns with first
; non-whitespace character in A.
;
skipws:
ld a,(de) ; get next char
or a ; check for eol
ret z ; done if so
cp ' ' ; blank?
ret nz ; nope, done
inc de ; bump buffer pointer
jr skipws ; and loop
;
;-------------------------------------------------------------------------------
; Convert character in A to uppercase
;
upcase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
;-------------------------------------------------------------------------------
; Get numeric chars at DE and convert to number returned in A
; Carry flag set on overflow
;
getnum:
ld c,0 ; C is working register
getnum1:
ld a,(de) ; get the active char
cp '0' ; compare to ascii '0'
jr c,getnum2 ; abort if below
cp '9' + 1 ; compare to ascii '9'
jr nc,getnum2 ; abort if above
;
; valid digit, add new digit to C
ld a,c ; get working value to A
rlca ; multiply by 10
ret c ; overflow, return with carry set
rlca ; ...
ret c ; overflow, return with carry set
add a,c ; ...
ret c ; overflow, return with carry set
rlca ; ...
ret c ; overflow, return with carry set
ld c,a ; back to C
ld a,(de) ; get new digit
sub '0' ; make binary
add a,c ; add in working value
ret c ; overflow, return with carry set
ld c,a ; back to C
;
inc de ; bump to next char
jr getnum1 ; loop
;
getnum2: ; return result
ld a,c ; return result in A
or a ; with flags set, CF is cleared
ret
;
;-------------------------------------------------------------------------------
; Is character in A numeric? NZ if not
;
isnum:
cp '0' ; compare to ascii '0'
jr c,isnum1 ; abort if below
cp '9' + 1 ; compare to ascii '9'
jr nc,isnum1 ; abort if above
cp a ; set Z
ret
isnum1:
or $FF ; set NZ
ret ; and done
;
;-------------------------------------------------------------------------------
; DISK IO ROUTINES
;-------------------------------------------------------------------------------
; Init Disk IO
;
initdiskio:
; Get current RAM bank
ld b,BF_SYSGETBNK ; HBIOS GetBank function
RST 08 ; do it via RST vector, C=bank id
RET NZ ; had to replace this line below.
ld a,c ; put bank id in A
ld (BID_USR),a ; put bank id in Argument
RET
;
;-------------------------------------------------------------------------------
; Read disk sector(s)
; DE:HL is LBA, B is sector count, C is disk unit
;
diskread:
;
; Seek to requested sector in DE:HL
ld a,(currunit)
ld c,a ; from the specified unit
set 7,d ; set LBA access flag
ld b,BF_DIOSEEK ; HBIOS func: seek
rst 08 ; do it
ret nz ; handle error
;
; Read sector(s) into buffer
ld a,(currunit)
ld c,a ; from the specified unit
ld e,1 ; read 1 sector
ld hl,(dma) ; read into info sec buffer
ld a,(BID_USR) ; get user bank to accum
ld d,a ; and move to D
ld b,BF_DIOREAD ; HBIOS func: disk read
rst 08 ; do it
ret ; and done
;
;-------------------------------------------------------------------------------
; WRITE disk sector(s)
; DE:HL is LBA, B is sector count, C is disk unit
;
diskwrite:
;
ld a,(currunit) ; disk unit to read
ld c,a ; put in C
ld b,1 ; one sector
;
; Seek to requested sector in DE:HL
push bc ; save unit & count
set 7,d ; set LBA access flag
ld b,BF_DIOSEEK ; HBIOS func: seek
rst 08 ; do it
pop bc ; recover unit & count
ret nz ; handle error
;
; Read sector(s) into buffer
ld e,b ; transfer count
ld b,BF_DIOWRITE ; HBIOS func: disk read
ld hl,(dma) ; read into info sec buffer
ld a,(BID_USR) ; get user bank to accum
ld d,a ; and move to D
rst 08 ; do it
ret ; and done
;
;===============================================================================
; Constants
;===============================================================================
;
str_banner .db "\r\n"
.db "Slice Label, v1.0, April 2025 - M.Pruden",0
;
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
str_err_parm .db " ERROR: Parameter error (SLABEL /? for usage)",0
str_err_nodisk .db " ERROR: Disk unit not available",0
str_err_nomedia .db " ERROR: Media not present",0
str_err_badslc .db " ERROR: Slice specified is illegal",0
str_err_sig .db " ERROR: No system image on disk",0
str_err_diskio .db " ERROR: Disk I/O failure",0
;
str_usage .db "\r\n\r\n"
.db " Usage: SLABEL - list current labels\r\n"
.db " SLABEL unit[.slice]=label - Defines a label\r\n"
.db " SLABEL /? - Display this help info.\r\n"
.db " Options are case insensitive.\r\n",0
;
PRTSLC_HDR .TEXT "\r\n\r\n"
.TEXT "Un.Sl Drive \r\n"
.TEXT "----- ----------------\r\n"
.DB 0
;
;===============================================================================
; Working data
;===============================================================================
;
currunit .db 0 ; parameters for disk unit, current unit
currslice .db 0 ; parameters for disk slice, current slice
lba .dw 0, 0 ; lba address (4 bytes), of slice
newlabel .dw 0 ; address of parameter, new label to write
;
BID_USR .db 0 ; Bank ID for user bank
dma .dw bl_infosec ; address for disk buffer
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
;===============================================================================
; Disk Buffer
;===============================================================================
;
; define origin of disk buffer above 8000 for performance.
.org $8000
;
; Below is copied from ROM LDR
; Boot info sector is read into area below.
; The third sector of a disk device is reserved for boot info.
;
bl_infosec .equ $
.ds (512 - 128)
bb_metabuf .equ $
bb_sig .ds 2 ; signature (0xA55A if set)
bb_platform .ds 1 ; formatting platform
bb_device .ds 1 ; formatting device
bb_formatter .ds 8 ; formatting program
bb_drive .ds 1 ; physical disk drive #
bb_lu .ds 1 ; logical unit (lu)
.ds 1 ; msb of lu, now deprecated
.ds (bb_metabuf + 128) - $ - 32
bb_protect .ds 1 ; write protect boolean
bb_updates .ds 2 ; update counter
bb_rmj .ds 1 ; rmj major version number
bb_rmn .ds 1 ; rmn minor version number
bb_rup .ds 1 ; rup update number
bb_rtp .ds 1 ; rtp patch level
bb_label .ds 16 ; 16 character drive label
bb_term .ds 1 ; label terminator ('$')
bb_biloc .ds 2 ; loc to patch boot drive info
bb_cpmloc .ds 2 ; final ram dest for cpm/cbios
bb_cpmend .ds 2 ; end address for load
bb_cpment .ds 2 ; CP/M entry point (cbios boot)
;
;===============================================================================
;
.end

View File

@@ -38,7 +38,7 @@ It is an independent disassembly and reconstruction of CCP/BDOS.
DRI CPM22PAT01 was already applied. Unclear why, but the BDOS
source was checking for a blank instead of a ctrl-s in the
KBSTAT routine. Ctrl-s seems to be correct based on all other
BDOS images I have encountered. Also, these files imbed the
BDOS images I have encountered. Also, these files embed the
CP/M version number into the serial number fields. Other than
this, they are byte identical to the OS2CCP/OS3BDOS images above.
@@ -51,17 +51,24 @@ BDOS22.ASM - Modified ORG & fix for ctrl-S
CCPB03 & BDOSB01
----------------
Sourced from N8VEM effort to create an enhanced
variant of CP/M 2.2.
These files were derived from a disassembly of the Jade DD CP/M-80
image by William Beech in 1982.
It appears to be a disassembly and reconstruction of CCP/BDOS,
but there are no comments attributing the work. DRI CPM22PAT01
was already applied. The message string literals are all
- Modified by Bill Beech for global CP/M size configuration
and separate CCP and BDOSE 2013.
- Modified by Bill Beech for addition of MON
command and display/change of user on command line
1984. Also removed all SN checks.
Eventually modified as part of the N8VEM project and converted to
the Z80 instruction set.
DRI CPM22PAT01 has been applied. The message string literals are all
in CAPS in BDOS. Additionally, there is explicit filler of 0x55
value bytes at the end of the CCP/BDOS files padding their
length out to full page. Other than this, the BDOS
is byte identical to the others above. CCP contains multiple
enhancements and is, therefore, not identical to others.
is byte identical to the others above.
CCPB03.ASM - Enhanced reassembly of CCP

View File

@@ -1286,7 +1286,7 @@ provided in the RomWBW distribution.
`\clearpage`{=latex}
## BBCBASIC
## BBCBASIC (BBC BASIC)
| BBCBASIC | |
| --------------------|---|
@@ -1330,7 +1330,7 @@ The adaptation to RomWBW was minimal and includes:
`\clearpage`{=latex}
## CLRDIR
## CLRDIR (Clear Directory)
| CLRDIR | |
| --------------------|---|
@@ -1370,7 +1370,7 @@ reinitialised and the data previously stored will be lost.
`\clearpage`{=latex}
## CPUSPD
## CPUSPD (CPU Speed)
| CPUSPD | |
| --------------------|---|
@@ -1457,7 +1457,7 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## COPYSL
## COPYSL (Copy Slice)
| COPYSL | |
| --------------------|---|
@@ -1547,7 +1547,7 @@ by Mark Pruden.
`\clearpage`{=latex}
## FAT
## FAT (FAT Utility)
| FAT | |
| --------------------|---|
@@ -1748,7 +1748,7 @@ Please contact John Coffman if you would like a copy of the source.
`\clearpage`{=latex}
## FDU
## FDU (Floppy Disk Utility)
| FDU | |
| --------------------|---|
@@ -1789,7 +1789,7 @@ provided in the RomWBW distribution.
`\clearpage`{=latex}
## FLASH
## FLASH (Flash EEPROM)
| FLASH | |
| --------------------|---|
@@ -1896,7 +1896,7 @@ provided in the RomWBW distribution.
`\clearpage`{=latex}
## HTALK
## HTALK (HBIOS Talk)
| HTALK | |
| --------------------|---|
@@ -2047,7 +2047,7 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## RTC
## RTC (Real Time Clock)
| RTC | |
| --------------------|---|
@@ -2103,6 +2103,56 @@ support most of the hardware variations included with RomWBW.
`\clearpage`{=latex}
## SLABEL (Slice Label)
| SLABEL | |
| --------------------|-----|
| ROM-based | No |
| Disk-based | Yes |
Display or change the label of a disk slice.
The label applied is only used as informational purposes, displayed by RomWBW
when an OS is booted. It has no correlation with any OS volume label scheme
that may exist. i.e. It does not affect the CP/M 3 disk label as applied by
the `SET` command
#### Syntax
`SLABEL [unit.slice=label] [/?]`
`unit.slice` the disk unit and slice number to apply the new label to. This
is in the same format as when booting the system to a disk
`label` is the new disk label to apply to the disk
#### Usage
`SLABEL` with no arguments will list All existing labels across All disks
`SLABEL 2.5=MYDRIVE` will set the disk label of the 6th slice of disk unit 2
`SLABEL /?` (or other unrecognised parameters) will display a usage message.
#### Notes
There is no capability to update a label onto media that currently does not have
existing media information in the third sector, typically this means only
bootable media.
This will only display labels for the first 64 slices of any device. Slices
higher than this are currently ignored.
Only bootable RomWBW disk images have a label, which is defined by the OS
which is booted. i.e. NZ-COM has a label of "ZSDOS 1.1" since that is the
booted OS. Prior to RomWBW 3.5 all disk images were defined with the label
"Unlabeled".
#### Etymology
The `SLABEL` application was custom written for RomWBW and contributed
by Mark Pruden.
## SURVEY
| SURVEY | |
@@ -2142,7 +2192,7 @@ discover ports that are 'write-only'.
`\clearpage`{=latex}
## SYSCOPY
## SYSCOPY (System Copy)
| SYSCOPY | |
| --------------------|---|
@@ -2282,7 +2332,7 @@ provided in the RomWBW distribution.
`\clearpage`{=latex}
## TBASIC
## TBASIC (Tasty BASIC)
| TBASIC | |
| --------------------|---|
@@ -2373,6 +2423,9 @@ If your RomWBW system has a sound card based on either an AY-3-8190 or
YM2149F sound chip, you can use the `TUNE` application to play PT or
MYM sound files.
Note: TUNE will detect an AY-3-8910/YM2149 Sound Module re-gardless of
whether support for it is included in the RomWBW HBIOS configuration
#### Syntax
`TUNE `*`<filename>`* `*`<options>`*`
@@ -2385,10 +2438,11 @@ MYM sound files.
| `-MSX` | Force MSX port addresses A0H/A1H (no PSG detection) |
| `-RC` | Force RCBus port addresses D8H/D0H (no PSG detection) |
| `--HBIOS` | Utilise HBIOS' sound driver |
| `+T1` | Play tune an octave higher |
| `+T2` | Play tune two octaves higher |
| `-T1` | Play tune an octave lower |
| `-T2` | Play tune two octaves lower |
| `-DELAY` | Force delay mode (don't use hardware timer) |
| `+T1` | Play tune an octave higher |
| `+T2` | Play tune two octaves higher |
| `-T1` | Play tune an octave lower |
| `-T2` | Play tune two octaves lower |
The +t and -t options apply only to HBIOS mode operation. The `-MSX`,
`-RC`, and `--HBIOS` options are mutually exclusive. See Notes below.
@@ -2412,7 +2466,7 @@ an error message.
Some hardware (notably Why-Em-Ulator) cannot be detected due limitations
of the emulation. In such cases, you can force the use of the two
most common port addresses using the `-msx` or `-rc` options.
most common port addresses using the `-MSX` or `-RC` options.
On Z180 systems, I/O wait states are added when writing to the sound
chip to avoid exceeding its speed limitations. On Z80 systems, you
@@ -2420,9 +2474,13 @@ will need to ensure that the CPU clock speed of your system does not
exceed the timing limitations of your sound chip.
The application probes for an active system timer and uses it to
accurately pace the sound file output. If no system timer is
accurately pace the sound file playback. If no system timer is
available, a delay loop is calculated instead. The delay loop will not
be as accurate as the system timer.
be as accurate as the system timer. If the `-DELAY` options is
specified on the command line, then the delay loop will be used
regardless of whether the system has a hardware timer. This is useful
if the hardware timer does not run at the 50Hz desired for sound
playback.
There are two modes of operation. A direct hardware interface for the
AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting
@@ -2467,7 +2525,7 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## VGMPLAY
## VGMPLAY (Video Game Music Play)
| VGMPLAY | |
| --------------------|---|
@@ -2550,7 +2608,7 @@ RomWBW distribution.
`\clearpage`{=latex}
## WDATE
## WDATE (WBW DATE)
| WDATE | |
| --------------------|---|
@@ -2637,7 +2695,7 @@ The source code is available on GitHub at
`\clearpage`{=latex}
## XM
## XM (X-Modem)
| XM | |
| --------------------|---|
@@ -2655,15 +2713,25 @@ files between systems using a serial port.
| `XM LK `*`<library> <filename>`*
| `XM R `*`<filename>`*
`S`: Send a file
`L`: Send a file from a library
`R`: Receive a file
`K`: Use 1K blocksize for transfer
The following may be added to the action codes:
| `S`: Send a file
| `L`: Send a file from a library
| `R`: Receive a file
| `K`: Use 1K blocksize (send operations)
| `C`: Force use of checksum (receive operations)
| `X`: Force 128-byte protocol (receive operations)
| `0`-`9`: Specifies HBIOS character unit for transfers
*`<filename>`* is the name of a file to send or receive
*`<library>`* is the name of a library (.lbr) to extract a file to send
For example, the following command will receive a file
using checksums on HBIOS character unit 3 and will name the
received file `MYFILE.TXT`.
`XM RC3 MYFILE.TXT`
#### Usage
To transfer a file from your host computer to your RomWBW computer, do
@@ -2689,9 +2757,10 @@ emulation software for specific instructions on how to use XModem.
#### Notes
The XModem adaptation that comes with RomWBW will automatically use
the primary character device unit (character device unit 0) for the
file transfer.
The XModem adaptation that comes with RomWBW will default to using
the current HBIOS console port for transfers. Note that if you
change your console port at the OS level (e.g., STAT CON:=UC1:),
this does not change the HBIOS console.
`XM` attempts to determine the best way to drive the serial port based
on your hardware configuration. When possible, it will bypass the
@@ -2722,7 +2791,7 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## ZMD
## ZMD (Z-Modem)
| ZMD | |
| --------------------|---|
@@ -2732,6 +2801,9 @@ The source code is provided in the RomWBW distribution.
An adaptation of Robert Kramer's Remote CP/M File Transfer Program
with support for XModem and YModem transfers.
**NOTE**: ZMD does not do ZModem transfers. The Z in ZMD refers
to Z-System compatibility.
#### Syntax
`ZMD` *\<mode\>\<protocol\>\<unit\>* [*\<filename\>*]
@@ -2755,10 +2827,43 @@ the RomWBW Character Unit to use for the file transfer.
#### Usage
To transfer a file from your host computer to your RomWBW computer, do
the following:
1. Enter one of the `ZMD` receive commands specifying the name you want
to give to the received file (no filename required for ZModem transfers).
2. On your host computer select a file to send and initiate an XModem or
YModem send operation.
To transfer a file from your RomWBW computer to your host computer, do
the following:
1. Enter one of the `ZMD` send commands specifying the name of the file
to be sent.
2. On your host computer, specify the name to assign to the received
file and initiate an XModem or YModem receive operation.
Please refer to the documentation of your host computer's terminal
emulation software for specific instructions on how to use XModem.
#### Notes
If no *\<unit\>* is specified, ZMD will use the current HBIOS
console for the file transfer.
The ZMP adaptation that comes with RomWBW will default to using
the current HBIOS console port for transfers. Note that if you
change your console port at the OS level (e.g., STAT CON:=UC1:),
this does not change the HBIOS console.
`ZMP` attempts to determine the best way to drive the serial port based
on your hardware configuration. When possible, it will bypass the
HBIOS for faster operation. However, in many cases, it will use HBIOS
so that flow control can be used.
`ZMP` is dependent on a reliable communications channel. You must
ensure that the serial port can be serviced fast enough by either
using a baud rate that is low enough or ensuring that hardware flow
control is fully functional (end to end).
#### Etymology
@@ -2767,32 +2872,68 @@ uses the RomWBW HBIOS serial API.
`\clearpage`{=latex}
## ZMP
## ZMP (Z-Modem Program)
| ZMP | |
| --------------------|---|
| ROM-based |No |
| Disk-based |Yes|
`ZMP` is a terminal program for interacting with a modem attached to
your system. It includes X/Y/ZModem file transfer protocols. An
actual modem is not required, but you must have a port for ZMP to use
that is independent of the console running `ZMP`.
#### Syntax
`ZMD` *[\<unit\>]*
*\<unit\>* can specify a single digit (0-9) indicating
the RomWBW Character Unit to use for the modem port.
#### Usage
Refer to the file `ZMP.DOC` found on all disk images that include
the `ZMP` application.
#### Notes
`ZMP` requires access to multiple overlay and configuration files
to run. It will look for these on the default driver and user area.
Depending the operating system used, you may be able to set up a
search path and locate these files in other locations. The files
used by `ZMP` are:
- `ZMP.HLP`
- `ZMP.DOC`
- `ZMP.CFG`
- `ZMP.FON`
- `ZMXFER.OVR`
- `ZMTERM.OVR`
- `ZMINIT.OVR`
- `ZMCONFIG.OVR`
The `ZMP` console is always the active OS console.
If no *\<unit\>* is specified on the command line, `ZMP` will
default to using HBIOS Character Unit 1 as the modem port. Take care
to avoid using the same HBIOS Character Unit as both the console and
the modem or various strangeness will occur.
`ZMP` is a full screen application and is configured to use
ANSI/VT-100 screen control.
`ZMP` does not support the range of port configurations provided by
RomWBW. The RomWBW adaptation of `ZMP` ignores the port configuration
options within `ZMP`. Instead, you should configure the HBIOS Character
Unit using the RomWBW MODE command before launching `ZMP`.
`ZMP` is written in C. As a result, file transfers will be noticeably
slower than other assembly language file transfer tools.
#### Etymology
ZMP was produced by Ron Murray and was based on HMODEM II. Wayne
Hortensius updated the source to compile with the latest version
of Hi-Tech C and implemented a few enhancements.
The RomWBW overlay was developed by Phil Summers.

View File

@@ -1,4 +1,4 @@
$define{doc_ver}{Version 3.5}$
$define{doc_ver}{Version 3.6}$
$define{doc_product}{RomWBW}$
$define{file_root}{https://github.com/wwarthen/RomWBW/raw/master}$
$define{doc_root}{$file_root$/Doc}$
@@ -14,7 +14,14 @@ $define{doc_sys}{[RomWBW System Guide]($doc_root$/RomWBW System Guide.pdf)}$
$define{doc_apps}{[RomWBW Applications]($doc_root$/RomWBW Applications.pdf)}$
$define{doc_catalog}{[RomWBW Disk Catalog]($doc_root$/RomWBW Disk Catalog.pdf)}$
$define{doc_hardware}{[RomWBW Hardware]($doc_root$/RomWBW Hardware.pdf)}$
$ifdef{GFM}$
$define{doc_intro}{[RomWBW Introduction](Introduction.md)}$
$define{doc_user}{[RomWBW User Guide](UserGuide.md)}$
$define{doc_sys}{[RomWBW System Guide](SystemGuide.md)}$
$define{doc_apps}{[RomWBW Applications](Applications.md)}$
$define{doc_catalog}{[RomWBW Disk Catalog](Catalog.md)}$
$define{doc_hardware}{[RomWBW Hardware](Hardware.md)}$
$endif$
---
title: $doc_product$ $doc_title$
subtitle: $doc_ver$

View File

@@ -573,7 +573,7 @@ This is a generic ZPM3 adaptation for RomWBW.
The following files came from from Microcode Consulting. The official
distribution files can be found on the Microcode Consulting website at
[https://www.microcodeconsulting.com/z80/qpm.htm].
<https://www.microcodeconsulting.com/z80/qpm.htm>.
Also included in this image are debugz, and linkz frm the same company.
This disk includes the standard DRI CP/M 2.2 files in addition to the
@@ -651,7 +651,7 @@ look a little strange depending on the terminal emulation you are using.
User area 4 contains a full implementation of the CP/NET 1.2 client
provided by Doug Miller. Please refer to
[https://github.com/durgadas311/cpnet-z80] for more information,
<https://github.com/durgadas311/cpnet-z80> for more information,
complete documentation and the latest source code.
Please refer to the RomWBW User Guide for instructions on installing
@@ -979,7 +979,7 @@ The following files are found in
| `ZEXDOC.COM` | Z80 Instruction Set Exerciser |
And The following CPU Tests - Which are probably originally from this source.
[https://github.com/raxoft/z80test]
<https://github.com/raxoft/z80test>
| **File** | **Description** |
|----------------|---------------------------------------------------------------|
@@ -1002,7 +1002,7 @@ including MS-DOS, Apple II DOS 3.3 and PRoDOS, Commodore 64, Macintosh and
Amiga. This disk contains the CP/M version of that compiler. A cross-compiler
for MS-DOS or Windows XP is also available.
For full documentation, see [https://www.aztecmuseum.ca]
For full documentation, see <https://www.aztecmuseum.ca>
The user manual is available in the Doc/Language directory
Aztec_C_1.06_User_Manual_Mar84.pdf
@@ -1048,10 +1048,10 @@ NOTE : The above is incomplete
The Cowgol 2.0 compiler and related tools.
These files were provided by Ladislau Szilagyi and were sourced
from his GitHub repository at [https://github.com/Laci1953/Cowgol_on_CP_M].
from his GitHub repository at <https://github.com/Laci1953/Cowgol_on_CP_M>.
The primary distribution site for Cowgol 2.0 is at
[https://github.com/davidgiven/cowgol].
<https://github.com/davidgiven/cowgol>.
The user manual is available in the Doc/Language directory
Cowgol Language.pdf
@@ -1114,12 +1114,12 @@ Zork 1 through 3, Planetfall and Hitchhiker's Guide to the Galaxy.
Nemesis and Dungeon Master is a Rogue-like game released in 1981. It is playable
on a text terminal using ASCII graphics to represent the dungeon. Only a few
thousand copies of the game were ever made, making it very rare. See
[http://crpgaddict.blogspot.com/2019/03/game-322-nemesis-1981.html]
<http://crpgaddict.blogspot.com/2019/03/game-322-nemesis-1981.html>
Colossal Cave Adventure is a CP/M port of the 1976 classic game originally
written by Will Crowther for the PDP-10 mainframe. See
[https://en.wikipedia.org/wiki/Colossal_Cave_Adventure] and
[https://if50.substack.com/p/1976-adventure]
<https://en.wikipedia.org/wiki/Colossal_Cave_Adventure> and
<https://if50.substack.com/p/1976-adventure>
The following files are found in
@@ -1144,13 +1144,32 @@ which produce programs for execution in embedded systems
without an operating system.
This is the Mar 21, 2023 update 17 released by Tony Nicholson who currently
maintains HI-TECH C at [https://github.com/agn453/HI-TECH-Z80-C]
maintains HI-TECH C at <https://github.com/agn453/HI-TECH-Z80-C>
The manual is available in the Doc/Language directory,
HI-TECH Z80 C Compiler Manual.txt
A good blog post about the HI-TECH C Compiler is available at
[https://techtinkering.com/2008/10/22/installing-the-hi-tech-z80-c-compiler-for-cpm]
<https://techtinkering.com/2008/10/22/installing-the-hi-tech-z80-c-compiler-for-cpm>
User area 1 contains another complete copy of the HI-TECH C Compiler.
It is identical to the copy in user area 0 except for the following files
which were enhanced by Ladislau Szilagyi from his GitHub Repository at
<https://github.com/Laci1953/HiTech-C-compiler-enhanced>. The files
take advantage of additional banked memory using the RomWBW HBIOS API.
As such, they require RomWBW to operate. They should be compatible with
all CP/M and compatible operations systems provided in RomWBW.
The enhanced files are:
- CGEN.COM
- CPP.COM
- OPTIM.COM
- P1.COM
- ZAS.COM (replaced with Z80AS)
A thread discussing this enhanced version of HI-TECH C is found at
<https://groups.google.com/g/rc2014-z80/c/sBCCIpOnnGg>.
The following files are found in
@@ -1170,7 +1189,7 @@ NOTE : The above is incomplete
The collection of MSX ROMs (2 disks) as provided by Les Bird.
These ROMs are "run" by using the
appropriate variant of Les' MSX8 ROM loader. You can download the
loader binaries from [https://github.com/lesbird/MSX8]. You will need
loader binaries from <https://github.com/lesbird/MSX8>. You will need
appropriate hardware to run the loader.
Please review the file ROMLIST.TXT for information on the current
@@ -1206,7 +1225,7 @@ The manual can be found in the Docs/Language directory,
Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
A good overview of using Turbo Pascal in CP/M is available at
[https://techtinkering.com/2013/03/05/turbo-pascal-a-great-choice-for-programming-under-cpm]
<https://techtinkering.com/2013/03/05/turbo-pascal-a-great-choice-for-programming-under-cpm>
The following files are found in
@@ -1309,7 +1328,7 @@ Also contained on this image in User Area 1 are.
| Floppy Disk Image: **fd_z80asm.img**
| Hard Disk Image: **hd_z80asm.img**
This disk contains 4 major components
This disk contains 6 major components
* Z80ASM is a relocating macro assembler for CP/M. It takes assembly language
source statements from a disk file, converts them into their binary equivalent,
@@ -1319,19 +1338,20 @@ listing output may be sent to a disk file, the console and/or the printer, in
any combination. Output files may also be generated containing cross-reference
information on each symbol used.
* Z80ASMP (Z80ASM Plus)
* Z80ASMP (Z80ASM Plus). Referred to as the "Virtual Memory" version which
uses disk for working storage, thus not constrained by RAM.
* SLR180 is a powerful relocating macro assembler for Z80
compatible CP/M systems. It takes assembly language source
statements from a disk file, converts them into their binary
equivalent, and stores the output in either a core-image, Intel
hex format, or relocatable object file. The mnemonics recognized
are those of Zilog/Hitachi. The optional listing output may be
are those of Zilog (Z180)/Hitachi. The optional listing output may be
sent to a disk file, the console and/or the printer, in any
combination. Output files may also be generated containing
cross-reference information on each symbol used.
* SLRMAC Intel 8080 mnemonics
* SLRMAC relocating macro assembler for Intel 8080 mnemonics
* SLRNK is a powerful linking loader for Z80-based CP/M systems.
It takes relocatable binary information in either Microsoft or
@@ -1339,7 +1359,8 @@ SLR Systems format from a disk file, resolves external and entry
point references, and stores the output in memory for execution
or outputs it to a disk file.
* SLRNKP (SLRNK Plus)
* SLRNKP (SLRNK Plus). Referred to as the "Virtual Memory" version which
uses disk for working storage, thus not constrained by RAM.
* Z80DIS is an entirely new disassembler for Z80 based CP/M sys-
tems. Z80DIS is written in TURBO PASCAL. Z80DIS generates Z80
@@ -1356,10 +1377,10 @@ The manual(s) are available in the Doc/Language directory,
* Z80DIS User Manual (1985).pdf
A run through of using the assembler is available at
[https://8bitlabs.ca/Posts/2023/05/20/learning-z80-asm]
<https://8bitlabs.ca/Posts/2023/05/20/learning-z80-asm>
And another shorter, but shows linker usage guide
[https://pollmyfinger.wordpress.com/2022/01/10/modular-retro-z80-assembly-language-programming-using-slr-systems-z80asm-and-srlnk/]
<https://pollmyfinger.wordpress.com/2022/01/10/modular-retro-z80-assembly-language-programming-using-slr-systems-z80asm-and-srlnk/>
The following files are found in
@@ -1376,7 +1397,7 @@ User Area 0 - Assembler
| DUMP.* | Sample Program |
| MAKESYM.COM | Symbol File .SYM file generation |
| MAKESYM.DOC | Documentation for MAKESYM.COM |
| SLR180.COM | HD64180 Relocating Macro Assembler |
| SLR180.COM | HD64180 (Z180) Relocating Macro Assembler |
| SLR180.DOC | Release Notes for SLR180.COM |
| SLRMAC.COM | 8080 Relocating Macro Assembler |
| SYNTAX.HLP | Documentation basic usage for all SLR Tools |

File diff suppressed because it is too large Load Diff

View File

@@ -41,7 +41,7 @@ Supported hardware features of RomWBW include:
* Banked memory services for several banking designs
* 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
* Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
* Real time clock drivers including DS1302, BQ4845
* Support for CP/NET networking using Wiznet, MT011 or Serial
@@ -288,6 +288,7 @@ please let me know if I missed you!
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- COPYSL utility
- SLABEL utility
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility
@@ -323,6 +324,10 @@ please let me know if I missed you!
* Les Bird has contributed support for the NABU w/ Option Board
* Rob Gowin created an online documentation site via MkDocs, and
contributed a driver for the Xosera FPGA-based video
controller.
`\clearpage`{=latex}
## Related Projects

View File

@@ -18,6 +18,10 @@ include $(TOOLS)/Makefile.inc
all :: deploy
clean ::
rm -rf mkdocs
rm -rf site
%.tmp : %.md
gpp -o $@ -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $<
@@ -31,11 +35,16 @@ all :: deploy
pandoc $< -f markdown -t dokuwiki -s -o $@ --default-image-extension=pdf
%.gfm : %.tmp
pandoc $< -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=pdf
pandoc $< -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=svg
%.txt : %.tmp
pandoc $< -f markdown -t plain -s -o $@ --default-image-extension=pdf
mkdocs/%.md : %.md
-mkdir -p mkdocs
gpp -DGFM -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $< \
| pandoc -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=svg
deploy :
cp Introduction.gfm "../../ReadMe.md"
cp Introduction.txt "../../ReadMe.txt"
@@ -45,3 +54,10 @@ deploy :
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
cp Hardware.pdf "../../Doc/RomWBW Hardware.pdf"
deploy_mkdocs : mkdocs/Introduction.md mkdocs/UserGuide.md mkdocs/SystemGuide.md mkdocs/Applications.md \
mkdocs/Catalog.md mkdocs/Hardware.md mkdocs/ReadMe.md
mkdir -p mkdocs/UserGuide/Graphics mkdocs/SystemGuide/Graphics
mv mkdocs/ReadMe.md mkdocs/README.md
cp Graphics/*.svg mkdocs/UserGuide/Graphics
cp Graphics/*.svg mkdocs/SystemGuide/Graphics

View File

@@ -199,7 +199,7 @@ please let me know if I missed you!
- significant content in the Disk Catalog and User Guide
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- COPYSL utility
- COPYSL and SLABEL utility
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility

View File

@@ -142,6 +142,14 @@ currently selected. The upper 32KB is "fixed". This area of memory
is never swapped out and is used to contain software and operating
systems that must remain in the Z80 address space.
Throughout this document, this mechanism of selecting banks of memory
into the lower 32K is referred to as memory management. Achieving
this functionality requires some type of hardware which is generally
referred to as the system's Memory Management Unit (MMU). RomWBW
supports a variety of MMUs -- but they all perform the same function
of swapping in/out banks of memory in the lower 32K of CPU address
space.
Figure 4.1 depicts the memory layout for a system running the CP/M
operating system. Applications residing in TPA invoke BDOS services
of CP/M, BDOS invokes the custom CBIOS APIs, and finally CBIOS
@@ -290,6 +298,54 @@ Common Bank:
It is a fixed mapping that is never changed in normal RomWBW operation
hence the name "Common".
## Memory Managers
The following hardware memory managers are supported by RomWBW. The
operation of these memory managers is not documented here -- please
refer to the documentation of your hardware provider for that.
Z2:
: Memory memory manager introduced by Sergey Kiselv in the Zeta 2 SBC.
Popular in many RCBus systems.
Z180:
: Memory manager built into the Z180 CPU
Z280:
: Memory manager built into the Z280 CPU
ZRC:
: Memory manager onboard the ZRC series of computers by Bill Shen.
SBC:
: Memory manager onboard the N8VEM SBC series of computers by
Andrew Lynch.
MBC:
: Memory manager onboard the Nhyodyne computer system by Andrew Lynch.
N8:
: Memory manager onboard the N8 SBC computer by Andrew Lynch.
EZ512:
: Memory manager onboard the EaZy80-512 Z80 CPU Module by Bill Shen.
RPH:
: Memory manager onboard the Rhyophyre computer system by Andrew Lynch.
The memory manager used is determined by the configuration choices
that are part of a RomWBW build process. A given ROM can only have a
single memory manager -- it is not selected dynamically.
# Disk Layout
## Floppy Disk Layout
@@ -1147,6 +1203,13 @@ contain all sectors requested. Disk data transfers will be faster if
the buffer resides in the top 32K of memory because it avoids a
double buffer copy.
Also for buffers in the top 32K of memory the Bank ID is not
strictly required as this memory is alway mapped to the common bank.
For buffers in the bottom 32KB ram, the Bank ID is used to identify
the bank to use for the buffer. If you do not wih to use banked memory
you will need to provide the current Bank ID, which can be obtained
using [Function 0xF3 -- System Get Bank (SYSGETBNK)]
### Function 0x14 -- Disk Write (DIOWRITE)
| **Entry Parameters** | **Returned Values** |
@@ -1693,14 +1756,17 @@ All video units are assigned a Device Type ID which indicates
the specific hardware device driver that handles the unit. The table
below enumerates their values.
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|------------------------------------------|------------|
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
| **Device Type** | **ID** | **Description** | **Driver** |
|-----------------|-------:|--------------------------------------------|------------|
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
| VDADEV_EF | 0x06 | EF9345 | ef.asm |
| VDADEV_FV | 0x07 | S100 FPGA VGA | fv.asm |
| VDADEV_XOSERA | 0x08 | Xosera FPGA-based Video Display Controller | xosera.asm |
Depending on the capabilities of the hardware, the use of colors and
attributes may or may not be supported. If the hardware does not support
@@ -2054,12 +2120,16 @@ standard HBIOS result code.
| | E: Keycode |
Read the next key data from keyboard of the specified Video Unit (C). If
a keyboard buffer is used, return the next key code in the buffer. If
a keyboard buffer is used, return the next Keycode in the buffer. If
no key data is available, this function will wait indefinitely for a
keypress. The Status (A) is a standard HBIOS result code.
The Scancode (C) value is the raw scancode from the keyboard for the
keypress. Scancodes are from the PS/2 scancode set 2 standard.
keypress. Scancodes are optional and may not be implemented by the
driver. The Scancode values are driver dependent. In the case of a
PS/2 keyboard driver, they should be the PS/2 scancode. Other keyboard
drivers may return values appropriate for their specific keyboard. If
the driver does not implement this, it should return 0 in C.
The Keystate (D) is a bitmap representing the value of all modifier keys
and shift states as they existed at the time of the keystroke. The
@@ -2076,6 +2146,9 @@ bitmap is defined as:
| 1 | Control key was held down |
| 0 | Shift key was held down |
Not all of these bits may be relevant for all keyboards. Any bit that
is not relevant should be returned as 0.
The Keycode (E) is generally returned as appropriate ASCII values, if
possible. Special keys, like function keys and arrows, are returned as
reserved codes as described at the start of this section.
@@ -2483,26 +2556,34 @@ version 3.1.0, build 2.
The hardware Platform (L) is identified as follows:
| **Name** | **Id** | **Platform ** |
| **Name** | **Id** | **Platform ** |
|---------------|-------:|-----------------------------------------|
| PLT_SBC |1 | ECB Z80 SBC |
| PLT_ZETA |2 | ZETA Z80 SBC |
| PLT_ZETA2 |3 | ZETA Z80 V2 SBC |
| PLT_N8 |4 | N8 (HOME COMPUTER) Z180 SBC |
| PLT_MK4 |5 | MARK IV |
| PLT_UNA |6 | UNA BIOS |
| PLT_RCZ80 |7 | RCBUS W/ Z80 |
| PLT_RCZ180 |8 | RCBUS W/ Z180 |
| PLT_EZZ80 |9 | EASY/TINY Z80 |
| PLT_SCZ180 |10 | RCBUS SC126, SC130, SC131, SC140 |
| PLT_DYNO |11 | DYNO MICRO-ATX MOTHERBOARD |
| PLT_RCZ280 |12 | RCBUS W/ Z280 |
| PLT_MBC |13 | NHYODYNE MULTI-BOARD COMPUTER |
| PLT_RPH |14 | RHYOPHYRE GRAPHICS SBC |
| PLT_Z80RETRO |15 | Z80 RETRO COMPUTER |
| PLT_S100 |16 | S100 COMPUTERS Z180 |
| PLT_DUO |17 | DUODYNE Z80 SYSTEM |
| PLT_RCEZ80 |24 | RCBUS W/ eZ80 |
| PLT_SBC | 1 | ECB Z80 SBC |
| PLT_ZETA | 2 | ZETA Z80 SBC |
| PLT_ZETA2 | 3 | ZETA Z80 V2 SBC |
| PLT_N8 | 4 | N8 (HOME COMPUTER) Z180 SBC |
| PLT_MK4 | 5 | MARK IV |
| PLT_UNA | 6 | UNA BIOS |
| PLT_RCZ80 | 7 | RCBUS W/ Z80 |
| PLT_RCZ180 | 8 | RCBUS W/ Z180 |
| PLT_EZZ80 | 9 | EASY/TINY Z80 |
| PLT_SCZ180 | 10 | SMALL COMPUTER CENTRAL Z180 |
| PLT_DYNO | 11 | DYNO MICRO-ATX MOTHERBOARD |
| PLT_RCZ280 | 12 | RCBUS W/ Z280 |
| PLT_MBC | 13 | NHYODYNE MULTI-BOARD COMPUTER |
| PLT_RPH | 14 | RHYOPHYRE GRAPHICS SBC |
| PLT_Z80RETRO | 15 | Z80 RETRO COMPUTER |
| PLT_S100 | 16 | S100 COMPUTERS Z180 |
| PLT_DUO | 17 | DUODYNE Z80 SYSTEM |
| PLT_HEATH | 18 | HEATHKIT H8 Z80 SYSTEM |
| PLT_EPITX | 19 | Z180 MINI-ITX |
| PLT_MON | 20 | MONSPUTER (DEPRECATED) |
| PLT_GMZ180 | 21 | GENESIS Z180 SYSTEM |
| PLT_NABU | 22 | NABU PC W/ ROMWBW OPTION BOARD |
| PLT_FZ80 | 23 | S100 FPGA Z80 |
| PLT_RCEZ80 | 24 | RCBUS W/ eZ80 |
For more information on these platforms see $doc_hardware$
### Function 0xF2 -- System Set Bank (SYSSETBNK)

View File

@@ -2736,7 +2736,14 @@ a variety of common ZCPR3 utilities.
#### Documentation
ZPM3 has no real documentation. You are expected to understand both
CP/M 3 and ZCPR 3.
CP/M 3 and ZCPR 3. The best source of information is:
* [CPM3 Users Guide]($doc_root$/CPM/CPM3 Users Guide.pdf)
* [CPM3 Command Summary]($doc_root$/CPM/CPM3 Command Summary.pdf)
* [CPM3 Programmers Guide]($doc_root$/CPM/CPM3 Programmers Guide.pdf)
* [CPM3 System Guide]($doc_root$/CPM/CPM3 System Guide.pdf)
* [Z-System Users Guide]($doc_root$/CPM/Z-System Users Guide.pdf)
* [ZCPR3.3 User Guide]($doc_root$/CPM/ZCPR3.3 User Guide.pdf)
#### Boot Disk
@@ -2796,6 +2803,39 @@ The CP/M 3 `DEVICE` command is used to manipulate the device mappings.
I believe it was done this way to make it easier for users to
transition from CP/M 3 to ZPM3.
- The command line editing key bindings were slightly modified by
Jon Saxton when he applied a few ZPM3 fixes. This is explained
in the file zpm3fix.txt in the distribution folder Source/ZPM3.
The current key bindings are from the "New" column below.
| **Old** | **New** | **Function** |
|---------|---------|-------------------------------------------|
| ^A | ^A | one word left |
| ^B | ^B | to beginning/end of line |
| ^C | ^C | reboot if at start of line |
| ^D | ^D | right one char |
| ^E | ^E | get previous line |
| ^F | ^F | right one word |
| ^G | ^G | delete char at cursor |
| ^H | ^H | destructive backspace |
| ^I | ^I | (TAB) ignored here |
| ^J | ^J | (LF) exit editor |
| ^K | ^K | delete all to the right |
| ^L | ^L | ignored |
| ^M | ^M | (CR) exit editor |
| ^N | ^N | ignored |
| ^O | ^O | ignored |
| ^P | ^P | toggle printer echoing |
| ^Q | ^Q | toggle autoprompt (if enabled) |
| ^R | ^R | ignored |
| ^S | ^S | left one char |
| ^T | ^T | delete word at cursor |
| ^U | ^U | add line to history |
| ^V | ^V | clear line, delete from history |
| ^W | ^X | get next line from history |
| ^X | ^W | delete all to the left |
| ^Y | ^Y | clear line |
## QP/M
QP/M is another OS providing compatibility with and enhancements
@@ -3123,7 +3163,7 @@ floppy disk and hard disk images.
| TUNE | Play .PT2, .PT3, .MYM audio files. |
| INTTEST | Test interrupt vector hooking. |
# Real Time Clock
# Real Time Clock & Date/Time Stamping
RomWBW supports a variety of real time clock hardware. If your
system has this hardware, then it will be able to maintain the

16
Source/Doc/mkdocs.yml Normal file
View File

@@ -0,0 +1,16 @@
site_name: RomWBW Documentation V3.6
repo_url: https://github.com/wwarthen/RomWBW
edit_uri: ""
docs_dir: mkdocs
nav:
- Introduction: Introduction.md
- User Guide: UserGuide.md
- System Guide: SystemGuide.md
- Applications: Applications.md
- Catalog: Catalog.md
- Hardware: Hardware.md
theme:
name: mkdocs
color_mode: auto
user_color_mode_toggle: true
navigation_depth: 3

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.6 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.2 KiB

After

Width:  |  Height:  |  Size: 9.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.6 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
Source/Fonts/fontcga.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.1 KiB

BIN
Source/Fonts/fontvgarc.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -17,8 +17,8 @@ set CPMDIR80=%TOOLS%/cpm/
::
:: This PowerShell script validates the build variables passed in. If
:: necessary, the user is prmopted to pick the variables. It then creates
:: an include file that is imbedded in the HBIOS assembly (build.inc).
:: necessary, the user is prompted to pick the variables. It then creates
:: an include file that is embedded in the HBIOS assembly (build.inc).
:: It also creates a batch command file that sets environment variables
:: for use by the remainder of this batch file (build_env.cmd).
::
@@ -97,7 +97,6 @@ call :asm nascom || exit /b
call :asm game || exit /b
call :asm usrrom || exit /b
call :asm updater || exit /b
call :asm imgpad2 || exit /b
:: Sysconf builds as both BIN and COM files
tasm -t%CPUType% -g3 -fFF -dROMWBW sysconf.asm sysconf.bin sysconf_bin.lst || exit /b
@@ -106,30 +105,32 @@ tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit
::
:: Create additional ROM bank images by assembling components into
:: 32K chunks which can be concatenated later. Note that
:: osimg_small is a special case because it is 20K in size. This
:: appboot is a special case because it is 20K in size. This
:: image is subsequently used to generate the .com loadable file.
::
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin osimg.bin || exit /b
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin osimg1.bin || exit /b
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin rom1.bin || exit /b
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin rom2.bin || exit /b
if %Platform%==S100 (
zxcc slr180 -s100mon/fh
zxcc mload25 -s100mon || exit /b
copy /b s100mon.com osimg2.bin || exit /b
copy /b s100mon.com rom3.bin || exit /b
) else (
copy /b imgpad2.bin osimg2.bin || exit /b
copy nul rom3.bin
)
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit /b
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin appboot.bin || exit /b
::
:: Inject one byte checksum at the last byte of all 4 ROM bank image files.
:: This means that computing a checksum over any of the 32K osimg banks
:: should yield a result of zero.
:: This means that computing a checksum over any of the 32K rom banks
:: should yield a result of zero. Any bank image file that is not
:: 32K will be automatically normalized to 32K by the srec_cat
:: formula (extended or truncated)!!!
::
for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
for %%f in (hbios_rom.bin rom1.bin rom2.bin rom3.bin) do (
"%TOOLS%\srecord\srec_cat.exe" %%f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o %%f -Binary || exit /b
)
@@ -150,13 +151,13 @@ for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
::
if %ROMSize% gtr 0 (
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b
) else (
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b
copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b
)
::
@@ -187,14 +188,14 @@ call :asm dbgmon || exit /b
call :asm romldr || exit /b
:: Create the OS bank
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin osimg.bin || exit /b
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin rom2.bin || exit /b
:: Copy OS Bank and ROM Disk image files to output
copy /b osimg.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b
copy /b rom2.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b
copy /b ..\RomDsk\rom%ROMDiskSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMDiskSize%.bin || exit /b
:: Create the final ROM image
copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b
copy /b ..\UBIOS\UNA-BIOS.BIN + rom2.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b
:: Copy to output
copy %ROMName%.rom ..\..\Binary || exit /b
@@ -229,8 +230,8 @@ call Build MK4 std || exit /b
call Build RCZ80 std || exit /b
call Build RCEZ80 std || exit /b
call Build RCZ80 kio_std || exit /b
call Build RCZ80 easy_std || exit /b
call Build RCZ80 tiny_std || exit /b
call Build EZZ80 easy_std || exit /b
call Build EZZ80 tiny_std || exit /b
call Build RCZ80 skz_std || exit /b
call Build RCZ80 zrc_std || exit /b
call Build RCZ80 zrc_ram_std || exit /b

View File

@@ -27,7 +27,7 @@ $ErrorAction = 'Stop'
# UNA BIOS is simply imbedded, it is not built here.
#
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80", "RCEZ80"
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "EZZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80", "RCEZ80"
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX", "GMZ180"
$PlatformListZ280 = "RCZ280"

View File

@@ -21,8 +21,8 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
ROM_PLATFORM="RCEZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="easy_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="tiny_std"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="easy_std"; bash Build.sh
ROM_PLATFORM="EZZ80"; ROM_CONFIG="tiny_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram_std"; bash Build.sh

View File

@@ -46,9 +46,7 @@
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_RCZ80.asm"
;
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
#INCLUDE "cfg_EZZ80.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME

View File

@@ -46,9 +46,7 @@
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_RCZ80.asm"
;
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
#INCLUDE "cfg_EZZ80.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME

View File

@@ -0,0 +1,54 @@
;
;==================================================================================================
; ROMWBW CUSTOM USER BUILD SETTINGS EXAMPLE FOR RCBUS Z80
;==================================================================================================
;
; THIS FILE IS AN EXAMPLE OF A CUSTOM USER SETTINGS FILE. THESE
; SETTINGS OVERRIDE THE DEFAULT SETTINGS OF THE INHERITED FILES AS
; DESIRED BY A USER.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; THIS FILE EXEMPLIFIES THE IDEAL WAY TO CREATE A USER SPECIFIC BUILD
; CONFIGURATION. NOTICE THAT IT INCLUDES THE DEFAULT BUILD SETTINGS
; FILE AND OVERRIDES SOME DESIRED SETTINGS.
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
; THIS FILE ENABLES THE XOSERA DRIVER WITH A BASE ADDRESS Of 0XE0
; AND DISPLAY SIZE OF 80 COLUMNS X 30 ROWS
;
#INCLUDE "Config/RCZ80_std.asm" ; INHERIT FROM OFFICIAL BUILD SETTINGS
;
XOSENABLE .SET TRUE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
XOS_BASE .SET $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
XOSSIZ .SET V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
;
AUTOCON .SET FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
VDAEMU_SERKBD .SET $0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD

View File

@@ -1,7 +1,7 @@
MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \
dbgmon.bin hbios_app.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \
eastaegg.bin hbios_img.bin osimg.bin game.bin updater.bin usrrom.bin
dbgmon.bin hbios_app.bin imgpad2.bin rom2.bin rom3.bin romldr.bin \
eastaegg.bin hbios_img.bin rom1.bin game.bin updater.bin usrrom.bin
DEST = ../../Binary
TOOLS =../../Tools
@@ -58,37 +58,37 @@ ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
# $(info TASM=$(TASM))
$(OBJECTS) : $(ROMDEPS)
@cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >osimg.bin
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >osimg_small.bin
@cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >rom1.bin
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >appboot.bin
if [ $(ROM_PLATFORM) = DUO ] ; then \
cat netboot-duo.mod >netboot.mod ; \
else \
cat netboot-mt.mod >netboot.mod ; \
fi
if [ $(ROM_PLATFORM) != UNA ] ; then \
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >osimg1.bin ; \
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >rom2.bin ; \
if [ $(ROM_PLATFORM) = S100 ] ; then \
cat s100mon.bin >osimg2.bin ; \
cat s100mon.bin >rom3.bin ; \
else \
cat imgpad2.bin >osimg2.bin ; \
>rom3.bin ; \
fi ; \
for f in hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ; do \
for f in hbios_rom.bin rom1.bin rom2.bin rom3.bin ; do \
srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \
done \
fi
if [ $(ROM_PLATFORM) = UNA ] ; then \
cp osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \
cp rom1.bin $(DEST)/UNA_WBW_SYS.bin ; \
cp ../RomDsk/rom$(ROMDISKSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMDISKSIZE).bin ; \
cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \
cat ../UBIOS/UNA-BIOS.BIN rom1.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \
else \
if [ $(ROMSIZE) -gt 0 ] ; then \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \
cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \
else \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \
cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \
fi \
fi

View File

@@ -1,7 +1,7 @@
DIST_OBJECTS := \
DYNO_std MK4_std N8_std RCZ180_ext RCZ180_nat RCZ180_z1rcc \
RCZ280_ext RCZ280_nat RCZ280_zz80mb RCZ280_zzrcc RCZ280_zzrcc_ram \
RCZ80_std RCZ80_kio RCZ80_easy RCZ80_tiny RCZ80_skz RCZ80_zrc \
RCZ80_std RCZ80_kio EZZ80_easy EZZ80_tiny RCZ80_skz RCZ80_zrc \
RCZ80_zrc_ram RCZ80_zrc512 RPH_std SBC_std SBC_simh MBC_std \
DUO_std SCZ180_sc126 SCZ180_sc130 SCZ180_sc131 SCZ180_sc140 \
SCZ180_sc503 SCZ180_sc700 S100_std UNA_std Z80RETRO_std \

View File

@@ -96,6 +96,8 @@ CTCOSC .SET (7372800/8) ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $56 ; PCF8584 BASE I/O ADDRESS
PCFCLK .SET PCFCLK_12 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
PCFTRNS .SET PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -92,7 +92,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

398
Source/HBIOS/cfg_EZZ80.asm Normal file
View File

@@ -0,0 +1,398 @@
;
;==================================================================================================
; ROMWBW PLATFORM CONFIGURATION DEFAULTS FOR PLATFORM: EZZ80
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD,
; YOU SHOULD OVERRIDE SETTINGS YOU WANT USING A CONFIGURATION FILE IN
; THE CONFIG DIRECTORY UNDER THIS DIRECTORY.
;
; THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. IT IS MAINTAINED BY THE
; AUTHORS OF ROMWBW. TO OVERRIDE SETTINGS YOU SHOULD USE A
; CONFIGURATION FILE IN THE CONFIG DIRECTORY UNDER THIS DIRECTORY.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED. TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE PLATFORM_NAME "EZZ80", " [", CONFIG, "]" ; TEXT LABEL OF THIS CONFIG IN STARTUP MESSAGES
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
USELZSA2 .SET TRUE ; ENABLE FONT COMPRESSION
TICKFREQ .SET 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_DELAY .SET 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
BT_REC_TYPE .SET BT_REC_NONE ; BOOT RECOVERY METHOD TO USE: BT_REC_[NONE|FORCE|SBCB0|SBC1B|SBCRI|DUORI]
AUTOCON .SET TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
STRICTPART .SET TRUE ; ENFORCE STRICT PARTITION TABLE VALIDATION
;
CPUSPDCAP .SET SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
CPUSPDDEF .SET SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512]
MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
MPGSEL_1 .SET $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
MPGSEL_2 .SET $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
MPGSEL_3 .SET $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
MPGENA .SET $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
;
RTCIO .SET $C0 ; RTC LATCH REGISTER ADR
;
KIOENABLE .SET FALSE ; ENABLE ZILOG KIO SUPPORT
KIOBASE .SET $80 ; KIO BASE I/O ADDRESS
;
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
CTCDEBUG .SET FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
CTCMODE .SET CTCMODE_TIM16 ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
CTCPRE .SET 256 ; PRESCALE CONSTANT (1-256)
CTCPRECH .SET 2 ; PRESCALE CHANNEL (0-3)
CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
SKZENABLE .SET FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
SKZDIV .SET DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
;
WDOGMODE .SET WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
WDOGIO .SET $6F ; WATCHDOG REGISTER ADR
;
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $00 ; FP: PORT ADDRESS FOR FP LEDS
FPLED_INV .SET FALSE ; FP: LED BITS ARE INVERTED
FPLED_DSKACT .SET TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
FPSW_IO .SET $00 ; FP: PORT ADDRESS FOR FP SWITCHES
FPSW_INV .SET FALSE ; FP: SWITCH BITS ARE INVERTED
;
DIAGLVL .SET DL_CRITICAL ; ERROR LEVEL REPORTING
;
LEDENABLE .SET FALSE ; ENABLES STATUS LED (SINGLE LED)
LEDMODE .SET LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU]
LEDPORT .SET $0E ; STATUS LED PORT ADDRESS
LEDDISKIO .SET TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
;
DSKYENABLE .SET FALSE ; ENABLES DSKY FUNCTIONALITY
DSKYDSKACT .SET TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
ICMPPIBASE .SET $60 ; BASE I/O ADDRESS OF ICM PPI
PKDENABLE .SET FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .SET $60 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .SET 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
H8PENABLE .SET FALSE ; ENABLES HEATH H8 FRONT PANEL
LCDENABLE .SET FALSE ; ENABLE LCD DISPLAY
LCDBASE .SET $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
GM7303ENABLE .SET FALSE ; ENABLES THE GM7303 BOARD WITH 16X2 LCD
;
BOOTCON .SET 0 ; BOOT CONSOLE DEVICE
SECCON .SET $FF ; SECONDARY CONSOLE DEVICE
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU .SET EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
ANSITRACE .SET 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPKTRACE .SET 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
KBDTRACE .SET 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPKKBLOUT .SET KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
KBDKBLOUT .SET KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
MKYKBLOUT .SET KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
KBDINTS .SET FALSE ; ENABLE KBD (PS2) KEYBOARD INTERRUPTS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
DSRTCMODE .SET DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTCMODE_[STD|MFPIC|K80W]
DSRTCCHG .SET FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
;
DS1501RTCENABLE .SET FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
DS1501RTC_BASE .SET $50 ; DS1501RTC: I/O BASE ADDRESS
;
BQRTCENABLE .SET FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
BQRTC_BASE .SET $50 ; BQRTC: I/O BASE ADDRESS
;
INTRTCENABLE .SET FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
;
HTIMENABLE .SET FALSE ; ENABLE SIMH TIMER SUPPORT
SIMRTCENABLE .SET FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
;
DS7RTCENABLE .SET FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
SSERDATA .SET $FF ; SSER: DATA PORT
SSERIRDY .SET %00000001 ; SSER: INPUT READY BIT MASK
SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
DUART0ACFG .SET DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG
DUART0BCFG .SET DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG
DUART1BASE .SET $40 ; DUART 1: BASE ADDRESS OF CHIP
DUART1ACFG .SET DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
DUART1BCFG .SET DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
;
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTCNT .SET 4 ; UART: NUMBER OF CHIPS TO DETECT (1-8)
UARTOSC .SET 1843200 ; UART: OSC FREQUENCY IN MHZ
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
UART4UART .SET FALSE ; UART: SUPPORT 4UART ECB BOARD
UART4UARTBASE .SET $C0 ; UART: BASE IO ADDRESS OF 4UART ECB BOARD
UART0BASE .SET $80 ; UART 0: REGISTERS BASE ADR
UART0CFG .SET DEFSERCFG ; UART 0: SERIAL LINE CONFIG
UART1BASE .SET $88 ; UART 1: REGISTERS BASE ADR
UART1CFG .SET DEFSERCFG ; UART 1: SERIAL LINE CONFIG
UART2BASE .SET $A0 ; UART 2: REGISTERS BASE ADR
UART2CFG .SET DEFSERCFG ; UART 2: SERIAL LINE CONFIG
UART3BASE .SET $A8 ; UART 3: REGISTERS BASE ADR
UART3CFG .SET DEFSERCFG ; UART 3: SERIAL LINE CONFIG
UART4BASE .SET $FF ; UART 4: REGISTERS BASE ADR
UART4CFG .SET DEFSERCFG ; UART 4: SERIAL LINE CONFIG
UART5BASE .SET $FF ; UART 5: REGISTERS BASE ADR
UART5CFG .SET DEFSERCFG ; UART 5: SERIAL LINE CONFIG
UART6BASE .SET $FF ; UART 6: REGISTERS BASE ADR
UART6CFG .SET DEFSERCFG ; UART 6: SERIAL LINE CONFIG
UART7BASE .SET $FF ; UART 7: REGISTERS BASE ADR
UART7CFG .SET DEFSERCFG ; UART 7: SERIAL LINE CONFIG
;
ASCIENABLE .SET FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;
Z2UENABLE .SET FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
;
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
ACIADEBUG .SET FALSE ; ACIA: ENABLE DEBUG OUTPUT
ACIACNT .SET 1 ; ACIA: NUMBER OF CHIPS TO DETECT (1-2)
ACIA0BASE .SET $80 ; ACIA 0: REGISTERS BASE ADR
ACIA0CLK .SET CPUOSC ; ACIA 0: OSC FREQ IN HZ
ACIA0DIV .SET 1 ; ACIA 0: SERIAL CLOCK DIVIDER
ACIA0CFG .SET DEFSERCFG ; ACIA 0: SERIAL LINE CONFIG (SEE STD.ASM)
ACIA1BASE .SET $40 ; ACIA 1: REGISTERS BASE ADR
ACIA1CLK .SET CPUOSC ; ACIA 1: OSC FREQ IN HZ
ACIA1DIV .SET 1 ; ACIA 1: SERIAL CLOCK DIVIDER
ACIA1CFG .SET DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM)
;
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
SIODEBUG .SET FALSE ; SIO: ENABLE DEBUG OUTPUT
SIOBOOT .SET 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
SIOCNT .SET 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SIOINTS .SET TRUE ; SIO: INCLUDE SIO INTERRUPT SUPPORT UNDER IM1/2/3
SIO0MODE .SET SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
SIO0ACLK .SET CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0ACFG .SET DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
SIO0ACTCC .SET -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO0BCLK .SET CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO0BCFG .SET DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO1MODE .SET SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
SIO1BASE .SET $84 ; SIO 1: REGISTERS BASE ADR
SIO1ACLK .SET CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO1ACFG .SET DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
SIO1ACTCC .SET -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SIO1BCLK .SET CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SIO1BCFG .SET DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
MDTRACE .SET 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
;
FDENABLE .SET FALSE ; 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|MBC]
FDCNT .SET 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FDTRACE .SET 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
FDMAUTO .SET TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
FD0TYPE .SET FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .SET FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
RFENABLE .SET FALSE ; RF: ENABLE RAM FLOPPY DRIVER
;
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDETRACE .SET 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDECNT .SET 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
IDE0MODE .SET IDEMODE_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE0BASE .SET $10 ; IDE 0: IO BASE ADDRESS
IDE0DATLO .SET $00 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
IDE0DATHI .SET $00 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
IDE0A8BIT .SET TRUE ; IDE 0A (MASTER): 8 BIT XFER
IDE0B8BIT .SET TRUE ; IDE 0B (MASTER): 8 BIT XFER
IDE1MODE .SET IDEMODE_RC ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE1BASE .SET $18 ; IDE 1: IO BASE ADDRESS
IDE1DATLO .SET $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
IDE1DATHI .SET $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
IDE1A8BIT .SET TRUE ; IDE 1A (MASTER): 8 BIT XFER
IDE1B8BIT .SET TRUE ; IDE 1B (MASTER): 8 BIT XFER
IDE2MODE .SET IDEMODE_RC ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
IDE2BASE .SET $20 ; IDE 2: IO BASE ADDRESS
IDE2DATLO .SET $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
IDE2DATHI .SET $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
IDE2A8BIT .SET TRUE ; IDE 2A (MASTER): 8 BIT XFER
IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SDCSIOFAST .SET FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
SDMTSWAP .SET FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011
;
CHENABLE .SET FALSE ; CH: ENABLE CH375/376 USB SUPPORT
CHTRACE .SET 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHUSBTRACE .SET 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHSDTRACE .SET 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
CHCNT .SET 2 ; CH: NUMBER OF BOARDS TO DETECT (1-2)
CH0BASE .SET $3E ; CH 0: BASE I/O ADDRESS
CH0USBENABLE .SET TRUE ; CH 0: ENABLE USB DISK
CH0SDENABLE .SET FALSE ; CH 0: ENABLE SD DISK
CH1BASE .SET $3C ; CH 1: BASE I/O ADDRESS
CH1USBENABLE .SET TRUE ; CH 1: ENABLE USB DISK
CH1SDENABLE .SET FALSE ; CH 1: ENABLE SD DISK
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
PPPENABLE .SET FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
ESPENABLE .SET FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
;
HDSKENABLE .SET FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
;
PIOENABLE .SET FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
PIOCNT .SET 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
LPT1BASE .SET $00 ; LPT 1: REGISTERS BASE ADR
;
PPAENABLE .SET FALSE ; PPA: ENABLE IOMEGA ZIP DRIVE (PPA) DISK DRIVER (PPA.ASM)
PPACNT .SET 1 ; PPA: NUMBER OF PPA DEVICES (1-2)
PPATRACE .SET 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPAMODE .SET PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014]
PPA0BASE .SET LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA
PPA1BASE .SET LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA
;
IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM.ASM)
IMMCNT .SET 1 ; IMM: NUMBER OF IMM DEVICES (1-2)
IMMTRACE .SET 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IMMMODE .SET IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014]
IMM0BASE .SET LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM
IMM1BASE .SET LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM
;
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
SYQCNT .SET 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2)
SYQTRACE .SET 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
;
UFENABLE .SET FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
;
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AUDIOTRACE .SET FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
SN7CLK .SET 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD
SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
DMABASE .SET $E0 ; DMA: DMA BASE ADDRESS
DMAMODE .SET DMAMODE_RC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO)
;
YM2612ENABLE .SET FALSE ; YM2612: ENABLE YM2612 DRIVER
VGMBASE .SET $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC)

View File

@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -91,7 +91,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -128,6 +128,8 @@ CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY
;
PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .EQU $F0 ; PCF8584 BASE I/O ADDRESS
PCFCLK .EQU PCFCLK_12 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
PCFTRNS .EQU PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
;
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;
@@ -309,6 +311,9 @@ VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .EQU FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
XOSENABLE .EQU FALSE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
XOS_BASE .EQU $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
XOSSIZ .EQU V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
;
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .EQU TRUE ; MD: ENABLE ROM DISK

View File

@@ -92,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET (4915200/8) ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -3,6 +3,8 @@
; ROMWBW PLATFORM CONFIGURATION DEFAULTS FOR PLATFORM: MON
;==================================================================================================
;
; *** SUPPORT FOR THE MONSPUTER IS DEPRECATED ***
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD,
; YOU SHOULD OVERRIDE SETTINGS YOU WANT USING A CONFIGURATION FILE IN
@@ -90,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -99,7 +99,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -93,7 +93,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -96,6 +96,8 @@ CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
PCFCLK .SET PCFCLK_8 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
PCFTRNS .SET PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -92,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
CTCOSC .SET 614400 ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -95,7 +95,6 @@ CTCTIMCH .SET 1 ; TIMER CHANNEL (0-3)
CTCOSC .SET 7372800 ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -84,7 +84,6 @@ KIOBASE .SET $80 ; KIO BASE I/O ADDRESS
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -95,7 +95,6 @@ CTCTIMCH .SET 1 ; TIMER CHANNEL (0-3)
CTCOSC .SET 921600 ; CTC CLOCK FREQUENCY
;
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
;
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
;

View File

@@ -418,12 +418,12 @@ DS7_CLP:LD C,(HL)
RET
;
DS7_CLKTBL:
.DB 04H, 00111111B, '/'
.DB 05H, 00011111B, '/'
.DB 06H, 11111111B, ' '
.DB 02H, 00011111B, ':'
.DB 01H, 01111111B, ':'
.DB 00H, 01111111B, 00H
.DB 04H, 00111111B, '/' ; DD: 31
.DB 05H, 00011111B, '/' ; MM: 12
.DB 06H, 11111111B, ' ' ; YY: 99
.DB 02H, 01111111B, ':' ; SS: 59
.DB 01H, 01111111B, ':' ; MM: 59
.DB 00H, 00111111B, 00H ; HH: 24
;
DS7_BCD:PUSH HL
LD HL,DS7_BUF ; READ VALUE FROM

View File

@@ -522,8 +522,9 @@ HB_HCB_END .EQU $
; THE FOLLOWING CODE IS RELOCATED TO THE TOP OF MEMORY TO HANDLE INVOCATION DISPATCHING
;
HB_PROXY_BEG .EQU $
HBX_IMG .EQU $ ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK
;
.FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START
;;; .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START
.ORG HBX_LOC ; ADJUST FOR RELOCATION
;
; MEMORY LAYOUT:
@@ -2950,6 +2951,46 @@ NXTMIO: LD A,(HL)
#ENDIF
;
;--------------------------------------------------------------------------------------------------
; ENABLE INTERRUPTS
;--------------------------------------------------------------------------------------------------
;
#IFDEF TESTING
;
INTTEST:
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
LD A,I
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
PRTX(STR_INTWARN) ; WARNING
JR INTTEST_Z ; CONTINUE
;
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
;
INTTEST_Z:
;
#ENDIF
;
HB_EI ; INTERRUPTS SHOULD BE OK NOW
;
; PERFORM A RESET OPERATION ON ALL CHARACTER DEVICES THAT HAVE BEEN
; INSTALLED. THIS SHOULD CORRECT ANY PROBLEMS IF A PROBE DESTROYED
; THE PROGRAMMING OF ANOTHER DEVICE.
;
LD A,(CIO_CNT) ; NUMBER OF CHARACTER DEVICES
OR A ; CHECK FOR ZERO TO AVOID CRASHING
JR Z,HB_CHRES_Z ; BYPASS IF NONE
LD B,A ; SETUP LOOP COUNTER
LD C,0 ; DEVICE INDEX
HB_CHRES:
PUSH BC ; SAVE LOOP CONTROL
LD B,BF_CIOINIT ; HBIOS RESET FUNCTION
LD DE,$FFFF ; NO CONFIG CHANGES
CALL CIO_DISPATCH ; CALL CIO DISPATCHER DIRECTLY
POP BC ; RECOVER LOOP CONTROL
INC C ; NEXT DEVICE
DJNZ HB_CHRES ; LOOP AS NEEDED
HB_CHRES_Z:
;
;--------------------------------------------------------------------------------------------------
; ANNOUNCE HBIOS
;--------------------------------------------------------------------------------------------------
;
@@ -3053,27 +3094,6 @@ HB_SPDTST:
#ENDIF
;
;--------------------------------------------------------------------------------------------------
; ENABLE INTERRUPTS
;--------------------------------------------------------------------------------------------------
;
#IFDEF TESTING
;
INTTEST:
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
LD A,I
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
PRTX(STR_INTWARN) ; WARNING
JR INTTEST_Z ; CONTINUE
;
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
;
INTTEST_Z:
;
#ENDIF
;
HB_EI ; INTERRUPTS SHOULD BE OK NOW
;
;--------------------------------------------------------------------------------------------------
; DISPLAY PLATFORM INFORMATION
;--------------------------------------------------------------------------------------------------
;
@@ -3935,6 +3955,9 @@ HB_PCINITTBL:
#IF (PIO_4P | PIO_ZP)
.DW PIO_PREINIT
#ENDIF
#IF (XOSENABLE)
.DW XOS_PREINIT
#ENDIF
;
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
;
@@ -4070,6 +4093,9 @@ HB_INITTBL:
#IF (SCONENABLE)
.DW SCON_INIT
#ENDIF
#IF (XOSENABLE)
.DW XOS_INIT
#ENDIF
#IF (LPTENABLE)
.DW LPT_INIT
#ENDIF
@@ -6191,7 +6217,7 @@ SYS_SETCPUSPD:
;
LD A,L ; CLK SPD TO ACCUM
CP $FF ; NO CHANGE?
JR Z,SYS_SETCPUSPD3 ; DONE IF SO
JR Z,SYS_SETCPUSPD_OK ; DONE IF SO
LD C,%00000000 ; HALF SPEED
CP 0
JR Z,SYS_SETCPUSPD1
@@ -6203,12 +6229,12 @@ SYS_SETCPUSPD1:
LD A,(HB_RTCVAL)
AND ~%00001000 ; CLEAR SPEED BIT
OR C ; IMPLEMENT NEW SPEED BIT
#IF (PLATFORM == PLT_SBC)
#IF (PLATFORM == PLT_SBC)
; SBC SPEED BIT IS INVERTED, ADJUST IT
LD A,C
XOR %00001000
LD C,A
#ENDIF
#ENDIF
LD (HB_RTCVAL),A ; SAVE IN SHADOW REGISTER
OUT (RTCIO),A ; UPDATE HARDWARE REGISTER
;
@@ -6236,15 +6262,11 @@ SYS_SETCPUSPD2:
ADC A,C ; C -> A; ADD CF FOR ROUNDING
LD (CB_CPUMHZ),A ; SAVE IT
;
#IF (CPUFAM != CPU_EZ80)
#IF (CPUFAM != CPU_EZ80)
; REINIT DELAY ROUTINE
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
#ENDIF
;
SYS_SETCPUSPD3:
XOR A
RET
#ENDIF
#ENDIF
;
#IF (PLATFORM == PLT_HEATH)
@@ -6283,14 +6305,11 @@ SYS_SETCPUSPD2:
ADC A,C ; C -> A; ADD CF FOR ROUNDING
LD (CB_CPUMHZ),A ; SAVE IT
;
#IF (CPUFAM != CPU_EZ80)
#IF (CPUFAM != CPU_EZ80)
; REINIT DELAY ROUTINE
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
#ENDIF
;
XOR A ; SIGNAL SUCCESS
RET
#ENDIF
#ENDIF
;
#IF (CPUFAM == CPU_Z180)
@@ -6422,11 +6441,11 @@ SYS_SETCPUSPD4:
LD A,L ; WORKING VALUE TO A
OUT0 (Z180_DCNTL),A ; IMPLEMENT NEW VALUE
;
#IF (CPUFAM != CPU_EZ80)
#IF (CPUFAM != CPU_EZ80)
; REINIT DELAY ROUTINE
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
#ENDIF
#ENDIF
;
#IF ((INTMODE == 2) & (Z180_TIMER))
; THE Z180 TIMER IS BASED ON CPU SPEED. SO HERE
@@ -6454,10 +6473,16 @@ SYS_SETCPUSPD4:
LD IY,ASCI1_CFG
CALL ASCI_INITDEV
#ENDIF
#ENDIF
;
SYS_SETCPUSPD_OK:
;
LD B,BF_DSKYEVENT
LD C,DSKY_EVT_CPUSPD
CALL DSKY_DISPATCH
;
XOR A
RET
#ENDIF
;
SYS_SETCPUSPD_ERR:
OR $FF ; NOT SUPPORTED
@@ -8784,7 +8809,6 @@ PS_SDLPT .TEXT "LPT$"
PS_SDESPCON .TEXT "ESPCON$"
PS_SDESPSER .TEXT "ESPSER$"
PS_SDSCON .TEXT "SCON$"
PS_SDEF .TEXT "EF$"
PS_SDSSER .TEXT "SSER$"
PS_SDEZ80 .TEXT "EZ80$"
;
@@ -8813,6 +8837,7 @@ PS_VDVGA .TEXT "VGA$"
PS_VDVRC .TEXT "VRC$"
PS_VDEF .TEXT "EF$"
PS_VDFV .TEXT "FV$"
PS_VDXOSERA .TEXT "XOSERA$"
;
; VIDEO TYPE STRINGS
;
@@ -8961,6 +8986,15 @@ SIZ_INTRTC .EQU $ - ORG_INTRTC
MEMECHO " bytes.\n"
#ENDIF
;
#IF (DS7RTCENABLE)
ORG_DS7RTC .EQU $
#INCLUDE "ds7rtc.asm"
SIZ_DS7RTC .EQU $ - ORG_DS7RTC
.ECHO "DS7RTC occupies "
.ECHO SIZ_DS7RTC
.ECHO " bytes.\n"
#ENDIF
;
#IF (RP5RTCENABLE)
ORG_RP5RTC .EQU $
#INCLUDE "rp5rtc.asm"
@@ -9141,6 +9175,15 @@ SIZ_FV .EQU $ - ORG_FV
MEMECHO " bytes.\n"
#ENDIF
;
#IF (XOSENABLE)
ORG_XOS .EQU $
#INCLUDE "xosera.asm"
SIZ_XOS .EQU $ - ORG_XOS
MEMECHO "XOS occupies "
MEMECHO SIZ_XOS
MEMECHO " bytes.\n"
#ENDIF
;
#IF (DMAENABLE)
ORG_DMA .EQU $
#INCLUDE "dma.asm"

View File

@@ -194,7 +194,7 @@ PLT_UNA .EQU 6 ; UNA BIOS
PLT_RCZ80 .EQU 7 ; RCBUS W/ Z80
PLT_RCZ180 .EQU 8 ; RCBUS W/ Z180
PLT_EZZ80 .EQU 9 ; EASY Z80
PLT_SCZ180 .EQU 10 ; SCZ180
PLT_SCZ180 .EQU 10 ; SMALL COMPUTER CENTRAL Z180
PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD
PLT_RCZ280 .EQU 12 ; RCBUS W/ Z280
PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER
@@ -204,9 +204,9 @@ PLT_S100 .EQU 16 ; S100 COMPUTERS Z180 SYSTEM
PLT_DUO .EQU 17 ; DUODYNE Z80 SYSTEM
PLT_HEATH .EQU 18 ; HEATHKIT H8 Z80 SYSTEM
PLT_EPITX .EQU 19 ; Z180 MINI-ITX
PLT_MON .EQU 20 ; MONSPUTER
PLT_MON .EQU 20 ; MONSPUTER (DEPRECATED)
PLT_GMZ180 .EQU 21 ; GENESIS Z180 SYSTEM
PLT_NABU .EQU 22 ; NABU PERSONAL COMPUTER
PLT_NABU .EQU 22 ; NABU PC W/ ROMWBW OPTION BOARD
PLT_FZ80 .EQU 23 ; S100 FPGA Z80
PLT_RCEZ80 .EQU 24 ; RCBUS W/ eZ80
;
@@ -450,6 +450,7 @@ VDADEV_VGA .EQU $04 ; ECB VGA3 - HITACHI HD6445
VDADEV_VRC .EQU $05 ; VGARC
VDADEV_EF .EQU $06 ; EF9345
VDADEV_FV .EQU $07 ; S100 FPGA VGA
VDADEV_XOSERA .EQU $08 ; XOSERA RCBUS
;
; SOUND DEVICE IDS
;

View File

@@ -1,146 +1,224 @@
;
; The was extracted out of STD.ASM, so can be included
; in BIOS apps that are NOT in HBIOS directory!
;==================================================================================================
; ROMWBW CPU MEMORY AND ROM BANK LAYOUT DEFINITIONS
;==================================================================================================
;
; =============
; MEMORY LAYOUT
; =============
; THIS FILE DEFINES THE MEMORY LAYOUT OF THE CPU ADDRESS SPACE AND
; THE LAYOUT OF CODE IMAGES IN ROM. THIS FILE IS INTENDED TO BE
; INCLUDED IN SOURCE FILES AS NEEDED TO ADAPT TO THE ROMWBW BUILD
; CONFIGURATION.
;
SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY)
HBBUF_SIZ .EQU 1024 ; INVARIANT HBIOS PHYSICAL DISK BUFFER, 1K
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
CPM_SIZ .EQU SYS_SIZ - HBX_SIZ ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
CCP_SIZ .EQU $800 ; INVARIANT SIZE OF CCP
BDOS_SIZ .EQU $E00 ; INVARIANT SIZE OF BDOS
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; CBIOS IS THE REMAINDER
; THE FIRST 4 BANKS OF ROMWBW ROMS CONTAIN ROMWBW SOFTWARE COMPONENTS.
; THE REMAINING BANKS ARE USED AS ROM DISK CONTENTS.
;
; ROM BANK SUMMARY
; ----------------
;
; ROM BANK BANK ID DESCRIPTION
; -------- -------- ----------------------------------------
; 0 (ROM0) BID_BOOT HBIOS KERNEL (HBIOS.ASM)
; 1 (ROM1) BID_IMG0 MONITOR, BOOT LOADER, ROM OS IMAGES
; 2 (ROM2) BID_IMG1 ROM APPLICATIONS
; 3 (ROM3) BID_IMG2 ROM UTILITIES
;
;--------------------------------------------------------------------------------------------------
; CPU ADDRESS SPACE MEMORY LAYOUT
;--------------------------------------------------------------------------------------------------
;
MEMTOP .EQU $10000 ; INVARIANT TOP OF Z80 ADDRESSABLE MEMORY
BNKTOP .EQU $8000 ; BANK MEMORY BARRIER
;
HBX_IMG .EQU $200 ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
HBX_LOC .EQU MEMTOP - HBX_SIZ ; RUNNING LOCATION OF HBIOS PROXY
;
HBBUF_END .EQU BNKTOP ; END OF PHYSICAL DISK BUFFER IN HBIOS
HBBUF_LOC .EQU HBBUF_END - HBBUF_SIZ ; START OF PHYSICAL DISK BUFFER
HBX_END .EQU MEMTOP ; END OF HBIOS PROXY
HBX_LOC .EQU HBX_END - HBX_SIZ ; START OF HBIOS PROXY
CPM_END .EQU HBX_LOC ; END OF CPM COMPONENTS (INCLUDING CBIOS)
CPM_LOC .EQU CPM_END - CPM_SIZ ; START OF CPM COMPONENTS
CBIOS_END .EQU HBX_LOC ; END OF CBIOS
CBIOS_LOC .EQU CBIOS_END - CBIOS_SIZ ; START OF CBIOS
CPM_LOC .EQU $D000 ; START OF CPM COMPONENTS
CPM_SIZ .EQU HBX_LOC - CPM_LOC ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
;
CCP_SIZ .EQU $0800 ; INVARIANT SIZE OF CCP
BDOS_SIZ .EQU $0E00 ; INVARIANT SIZE OF BDOS
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; REMAINDER IS CBIOS SIZE
;
CBIOS_LOC .EQU HBX_LOC - CBIOS_SIZ ; START OF CBIOS
BDOS_LOC .EQU CBIOS_LOC - BDOS_SIZ ; START OF BDOS
CCP_LOC .EQU BDOS_LOC - CCP_SIZ ; START OF CCP
;
CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
;
CPM_IMGSIZ .EQU $3000
; THE SIZE OF THE CPM IMAGE STORED ON A ROM BANK IS GREATER THAN THE
; SIZE TO BE LOADED. THE FORMER INCLUDES HBIOS SPACE AND THE LATTER
; DOES NOT. USE CPM_IMGSIZ WHEN REFERRING TO IMAGE SIZE STORED ON ROM.
CPM_IMGSIZ .EQU $3000 ; CPM IMAGE SIZE ON ROM
;
; =============================
; ROM BANK 0 (hbios_rom.bin)
; =============================
;--------------------------------------------------------------------------------------------------
; ROM BANK 0 (BID_BOOT) LAYOUT (ROM0.BIN)
;--------------------------------------------------------------------------------------------------
;
; See hbios.asm for content of Bank 0
; SEE HBIOS.ASM FOR CONTENT OF BANK 0
;
; =============================
; ROM BANK 1 LAYOUT (osimg.bin)
; =============================
;--------------------------------------------------------------------------------------------------
; ROM BANK 1 (BID_IMG0) LAYOUT (ROM1.BIN)
;--------------------------------------------------------------------------------------------------
;
LDR_LOC .EQU $0000 ; ROM LOADER
LDR_SIZ .EQU $1000
LDR_END .EQU LDR_LOC +LDR_SIZ
LDR_IMGLOC .EQU $0000
BNK_NXTLOC .EQU $0000 ; RESET TO START OF BANK
BNK_CUR .EQU 1 ; THIS IS ROM BANK 1 (BID_IMG0)
;
MON_LOC .EQU $EE00 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
LDR_BNK .EQU BNK_CUR
LDR_LOC .EQU $0000 ; RUNNING LOCATION OF BOOT LOADER
LDR_SIZ .EQU $1000 ; SIZE OF BOOT LOADER BINARY IMAGE
LDR_END .EQU LDR_LOC + LDR_SIZ ; ENDING ADDRESS OF RUNNING BOOT LOADER
LDR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET LDR_IMGLOC + LDR_SIZ ; IMG LOC OF NEXT COMPONENT
;
MON_BNK .EQU BNK_CUR
MON_LOC .EQU $EE00 ; RUNNING LOCATION OF MONITOR
MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE
MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR
MON_IMGLOC .EQU LDR_IMGLOC + LDR_SIZ
MON_END .EQU MON_LOC + MON_SIZ ; ENDING ADDRESS OF RUNNING MONITOR
MON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET MON_IMGLOC + MON_SIZ ; IMG LOC OF NEXT COMPONENT
;
ZSYS_IMGLOC .EQU MON_IMGLOC + MON_SIZ ; ZSDOS / Z-System
ZSYS_BNK .EQU BNK_CUR
ZSYS_LOC .EQU CPM_LOC ; RUNNING LOCATION OF ZSYSTEM
ZSYS_SIZ .EQU CPM_SIZ ; SIZE OF ZSYSTEM BINARY IMAGE
ZSYS_END .EQU ZSYS_LOC + ZSYS_SIZ ; ENDING ADDRESS OF RUNNING ZSYSTEM
ZSYS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
ZSYS_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
BNK_NXTLOC .SET ZSYS_IMGLOC + ZSYS_IMGSIZ ; IMG LOC OF NEXT COMPONENT
;
CPM_IMGLOC .EQU ZSYS_IMGLOC + CPM_IMGSIZ ; CP/M 2.2
CPM22_BNK .EQU BNK_CUR
CPM22_LOC .EQU CPM_LOC ; RUNNING LOCATION OF CPM 2.2
CPM22_SIZ .EQU CPM_SIZ ; SIZE OF CPM 2.2 BINARY IMAGE
CPM22_END .EQU CPM22_LOC + CPM22_SIZ ; ENDING ADDRESS OF RUNNING CPM 2.2
CPM22_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
CPM22_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
BNK_NXTLOC .SET CPM22_IMGLOC + CPM22_IMGSIZ ; IMG LOC OF NEXT COMPONENT
;
BNK1_IMGEND .EQU CPM_IMGLOC + CPM_IMGSIZ ; END OF BANK
BNK1_REMAIN .EQU BNKTOP - BNK1_IMGEND ; REMAINING
BNK1_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
BNK1_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
;
; ==============================
; ROM BANK 2 LAYOUT (osimg1.bin)
; ==============================
;--------------------------------------------------------------------------------------------------
; ROM BANK 2 (BID_IMG1) LAYOUT (ROM2.BIN)
;--------------------------------------------------------------------------------------------------
;
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
BNK_CUR .SET 2 ; THIS IS ROM BANK 2 (BID_IMG1)
;
; NOTE FOLLOWING ARE COPY/PASTED INTO camel80.azm !!!!!!!!
FTH_BNK .EQU BNK_CUR
FTH_LOC .EQU $0200 ; CAMEL FORTH
FTH_SIZ .EQU $1700
FTH_END .EQU FTH_LOC + FTH_SIZ
FTH_IMGLOC .EQU $0000
FTH_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET FTH_IMGLOC + FTH_SIZ ; IMG LOC OF NEXT COMPONENT
;
BAS_BNK .EQU BNK_CUR
BAS_LOC .EQU $0200 ; NASCOM BASIC
BAS_SIZ .EQU $2000
BAS_END .EQU BAS_LOC + BAS_SIZ
BAS_IMGLOC .EQU FTH_IMGLOC + FTH_SIZ
BAS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET BAS_IMGLOC + BAS_SIZ ; IMG LOC OF NEXT COMPONENT
;
; NOTE FOLLOWING ARE COPY/PASTED INTO tastybasic.asm !!!!!!!!
TBC_BNK .EQU BNK_CUR
TBC_LOC .EQU $0A00 ; TASTYBASIC
TBC_SIZ .EQU $0A00
TBC_END .EQU TBC_LOC + TBC_SIZ
TBC_IMGLOC .EQU BAS_IMGLOC + BAS_SIZ
TBC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET TBC_IMGLOC + TBC_SIZ ; IMG LOC OF NEXT COMPONENT
;
GAM_BNK .EQU BNK_CUR
GAM_LOC .EQU $0200 ; GAME 2048
GAM_SIZ .EQU $0900
GAM_END .EQU GAM_LOC + GAM_SIZ
GAM_IMGLOC .EQU TBC_IMGLOC + TBC_SIZ
GAM_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET GAM_IMGLOC + GAM_SIZ ; IMG LOC OF NEXT COMPONENT
;
EGG_BNK .EQU BNK_CUR
EGG_LOC .EQU $F000 ; EASTER EGG
EGG_SIZ .EQU $0200
EGG_END .EQU EGG_LOC + EGG_SIZ
EGG_IMGLOC .EQU GAM_IMGLOC + GAM_SIZ
EGG_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET EGG_IMGLOC + EGG_SIZ ; IMG LOC OF NEXT COMPONENT
;
NET_BNK .EQU BNK_CUR
NET_LOC .EQU $0100 ; NETWORK BOOT
NET_SIZ .EQU $1000
NET_END .EQU NET_LOC + NET_SIZ
NET_IMGLOC .EQU EGG_IMGLOC + EGG_SIZ
NET_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET NET_IMGLOC + NET_SIZ ; IMG LOC OF NEXT COMPONENT
;
UPD_BNK .EQU BNK_CUR
UPD_LOC .EQU $0200 ; ROM UPDATER
UPD_SIZ .EQU $0D00
UPD_END .EQU UPD_LOC + UPD_SIZ
UPD_IMGLOC .EQU NET_IMGLOC + NET_SIZ
UPD_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET UPD_IMGLOC + UPD_SIZ ; IMG LOC OF NEXT COMPONENT
;
NVR_BNK .EQU BNK_CUR
NVR_LOC .EQU $0100 ; NVRAM CONFIG
NVR_SIZ .EQU $0800
NVR_END .EQU NVR_LOC + NVR_SIZ
NVR_IMGLOC .EQU UPD_IMGLOC + UPD_SIZ
NVR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET NVR_IMGLOC + NVR_SIZ ; IMG LOC OF NEXT COMPONENT
;
USR_BNK .EQU BNK_CUR
USR_LOC .EQU $0200 ; USER
USR_SIZ .EQU $0200
USR_END .EQU USR_LOC + USR_SIZ
USR_IMGLOC .EQU NVR_IMGLOC + NVR_SIZ
USR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET USR_IMGLOC + USR_SIZ ; IMG LOC OF NEXT COMPONENT
;
BNK2_IMGEND .EQU USR_IMGLOC + USR_SIZ ; END OF BANK
BNK2_REMAIN .EQU BNKTOP - BNK2_IMGEND ; REMAINING
BNK2_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
BNK2_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
;
; ==============================
; ROM BANK 3 LAYOUT (osimg2.bin)
; ==============================
;--------------------------------------------------------------------------------------------------
; ROM BANK 3 (BID_IMG2) LAYOUT (ROM3.BIN)
;--------------------------------------------------------------------------------------------------
;
; not defined here, see build files
; optionally contains S100 monitor
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
BNK_CUR .SET 3 ; THIS IS ROM BANK 3 (BID_IMG2)
;
; =================
HWMON_BNK .EQU BNK_CUR
HWMON_LOC .EQU $E000
HWMON_SIZ .EQU $2000
HWMON_END .EQU HWMON_LOC + HWMON_SIZ
HWMON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT
;
FONTS_BNK .EQU BNK_CUR
;;;FONTS_LOC .EQU $E000
FONTS_SIZ .EQU $2000
;;;FONTS_END .EQU FONTS_LOC + FONTS_SIZ
FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT
;
BNK3_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
BNK3_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
;
;--------------------------------------------------------------------------------------------------
;
#IFDEF BNKINFO
;
.ECHO "-------------------------------\n"
.ECHO "ROM BANK INFO \tLENGTH \tREMAIN \n"
.ECHO "ROM BANK INFO \tLENGTH \tSLACK \n"
.ECHO "---------------\t-------\t-------\n"
.ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_IMGEND \ .ECHO "\t" \ .ECHO BNK1_REMAIN \ .ECHO "\n"
.ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_IMGEND \ .ECHO "\t" \ .ECHO BNK2_REMAIN \ .ECHO "\n"
.ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_LEN \ .ECHO "\t" \ .ECHO BNK1_SLACK \ .ECHO "\n"
.ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_LEN \ .ECHO "\t" \ .ECHO BNK2_SLACK \ .ECHO "\n"
.ECHO "BANK3 BID_IMG2 \t" \ .ECHO BNK3_LEN \ .ECHO "\t" \ .ECHO BNK3_SLACK \ .ECHO "\n"
.ECHO "-------------------------------\n"
;
#IF (BNK1_IMGEND > BNKTOP)
.ECHO "*** BANK 1 IS TOO BIG!!!\n"
#IF (BNK1_LEN > BNKTOP)
.ECHO "*** ROM BANK 1 IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
#ENDIF
#IF (BNK2_IMGEND > BNKTOP)
.ECHO "*** BANK 2 IS TOO BIG!!!\n"
;
#IF (BNK2_LEN > BNKTOP)
.ECHO "*** ROM BANK 2 IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
#ENDIF
;
#IF (BNK3_LEN > BNKTOP)
.ECHO "*** ROM BANK 3 IS TOO BIG!!!\n"
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
#ENDIF
;
#ENDIF

View File

@@ -90,21 +90,7 @@ LCD_PREINIT:
LD DE,LCD_STR_XPU
CALL LCD_OUTDS
;
; "12.345 MHz" RIGHT JUSTIFIED
LD HL,$010A ; ROW 2, COL 10
CALL LCD_GOTORC
LD HL,(CB_CPUKHZ)
PUSH HL
LD BC,10000 ; 10 MHZ
SBC HL,BC ; SUBTRACT
JR NC,LCD_PREINIT1
LD A,' ' ; EXTRA PAD
CALL LCD_OUTD
LCD_PREINIT1:
POP HL
CALL LCD_PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
LD DE,LCD_STR_MHZ
CALL LCD_OUTDS
CALL LCD_EVT_CPUSPD
;
; THIRD LINE
LD HL,$0200 ; ROW 2, COL 0
@@ -228,7 +214,22 @@ LCD_EVENT:
; CPU SPEED CHANGE
;
LCD_EVT_CPUSPD:
XOR A
; "12.345 MHz" RIGHT JUSTIFIED
LD HL,$010A ; ROW 2, COL 10
CALL LCD_GOTORC
LD HL,(CB_CPUKHZ)
PUSH HL
LD BC,10000 ; 10 MHZ
SBC HL,BC ; SUBTRACT
JR NC,LCD_PREINIT1
LD A,' ' ; EXTRA PAD
CALL LCD_OUTD
LCD_PREINIT1:
POP HL
CALL LCD_PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
LD DE,LCD_STR_MHZ
CALL LCD_OUTDS
;
RET
;
; FORMAT: "Disk #99 R:12345678"
@@ -342,16 +343,23 @@ LCD_DELAY:
CALL DELAY ; 16US
JP DELAY ; 16US, TOTAL 48US
;
; DELAY USED DURING NORMAL I/O
; REQUIRED FOR HIGH SPEED CPU OPERATION
;
#DEFINE LCD_XDELAY EX (SP),HL \ EX (SP),HL
;
; SEND FUNCTION CODE IN A
;
LCD_OUTF:
PUSH AF ; SAVE CODE
LCD_OUTF1:
LCD_XDELAY
EZ80_IO
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_OUTF1 ; LOOP TILL NOT BUSY
POP AF ; RECOVER CODE
LCD_XDELAY
EZ80_IO
OUT (LCD_FUNC),A ; SEND IT
RET ; DONE
@@ -372,11 +380,13 @@ LCD_OUTFS:
LCD_OUTD:
PUSH AF ; SAVE BYTE
LCD_OUTD1:
LCD_XDELAY
EZ80_IO
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_OUTD1 ; LOOP TILL NOT BUSY
POP AF ; RECOVER BYTE
LCD_XDELAY
EZ80_IO
OUT (LCD_DATA),A ; SEND IT
RET ; DONE
@@ -408,11 +418,13 @@ LCD_OUTDS:
; GET DATA BYTE INTO A
;
LCD_IND:
LCD_XDELAY
EZ80_IO
IN A,(LCD_STAT) ; GET STATUS
AND $80 ; ISOLATE BUSY FLAG
JR NZ,LCD_IND ; LOOP TILL NOT BUSY
POP AF ; RECOVER BYTE
LCD_XDELAY
EZ80_IO
IN A,(LCD_DATA) ; GET IT
RET ; DONE
@@ -483,10 +495,9 @@ LCD_INIT_SEQ:
.DB $00 ; TERMINATOR
;
LCD_STR_BAN .DB "RomWBW v", BIOSVER, 0
LCD_STR_CFG .DB "Build: ", CONFIG, 0
LCD_STR_CFG .DB CONFIG, 0
LCD_STR_IO .DB "Disk #", 0
LCD_STR_XPU .DB " CPU",0
;;;LCD_STR_SPD .DB "12.345",0
LCD_STR_MHZ .DB " MHz",0
;
LCD_CPU .DW LCD_CPU_Z80
@@ -498,8 +509,8 @@ LCD_CPU .DW LCD_CPU_Z80
;
LCD_CPU_Z80 .DB "Z80",0
LCD_CPU_Z180 .DB "Z180",0
LCD_CPU_Z180K .DB "Z180-K",0
LCD_CPU_Z180N .DB "Z180-N",0
LCD_CPU_Z180K .DB "Z180K",0
LCD_CPU_Z180N .DB "Z180N",0
LCD_CPU_Z280 .DB "Z280",0
LCD_CPU_EZ80 .DB "eZ80",0
;

View File

@@ -95,10 +95,18 @@ LPT_INIT:
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
LPT_INIT0:
PUSH BC ; SAVE LOOP CONTROL
CALL LPT_PRTCFG ; PRINT CONFIG
CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE
POP BC ; RESTORE LOOP CONTROL
;
LD A,(IY+1) ; GET THE LPT TYPE DETECTED
JR Z,LPT_INIT1 ; IF DETECTED, CONTINUE INIT
CALL PC_SPACE ; FORMATTING
LD DE,LPT_STR_NOLPT ; NO LPT MESSAGE
CALL WRITESTR ; DISPLAY IT
JR LPT_INIT2 ; AND LOOP AS NEEDED
;
LPT_INIT1:
LD A,(IY+1) ; GET THE LPT TYPE
OR A ; SET FLAGS
JR Z,LPT_INIT2 ; SKIP IT IF NOTHING FOUND
;
@@ -107,7 +115,6 @@ LPT_INIT0:
POP DE ; ... TO DE
LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS
CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE
CALL LPT_PRTCFG ; PRINT IF NOT ZERO
POP BC ; RESTORE LOOP CONTROL
;
LPT_INIT2:
@@ -123,9 +130,7 @@ LPT_INIT3:
;
LPT_INITUNIT:
CALL LPT_DETECT ; DETERMINE LPT TYPE
LD (IY+1),A ; SAVE IN CONFIG TABLE
OR A ; SET FLAGS
RET Z ; ABORT IF NOTHING THERE
RET NZ ; ABORT IF NOTHING THERE
;
; UPDATE WORKING LPT DEVICE NUM
LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM
@@ -326,15 +331,7 @@ LPT_DETECT:
;
LPT_DETECT:
LD C,(IY+3) ; BASE PORT ADDRESS
CALL LPT_DETECT2 ; CHECK IT
JR Z,LPT_DETECT1 ; FOUND IT, RECORD IT
LD A,LPTMODE_NONE ; NOTHING FOUND
RET ; DONE
;
LPT_DETECT1:
; LPT FOUND, RECORD IT
LD A,LPTMODE_SPP ; RETURN CHIP TYPE
RET ; DONE
JR LPT_DETECT2 ; CHECK IT
;
LPT_DETECT2:
; LOOK FOR LPT AT BASE PORT ADDRESS IN C
@@ -394,20 +391,13 @@ LPT_DETECT:
CALL PRTHEXBYTE
#ENDIF
CP $A5 ; CHECK FOR TEST VALUE
JR Z,LPT_DETECT1 ; FOUND IT
LD A,LPTMODE_NONE ; NOT FOUND
RET
;
LPT_DETECT1:
; LPT FOUND, RECORD IT
LD A,LPTMODE_MG014 ; RETURN CHIP TYPE
RET ; DONE
RET ; ZF SET IF DETECTED
#ENDIF
;
#IF (LPTMODE == LPTMODE_S100)
LPT_DETECT:
; PORT ALWAYS EXISTS ON FPGA
LD A,LPTMODE_S100 ; RETURN CHIP TYPE
XOR A ; SIGNAL SUCCESS
RET ; DONE
#ENDIF
;
@@ -417,7 +407,7 @@ LPT_PRTCFG:
; ANNOUNCE PORT
CALL NEWLINE ; FORMATTING
PRTS("LPT$") ; FORMATTING
LD A,(IY) ; DEVICE NUM
LD A,(IY+2) ; DEVICE NUM
CALL PRTDECB ; PRINT DEVICE NUM
PRTS(": IO=0x$") ; FORMATTING
LD A,(IY+3) ; GET BASE PORT
@@ -452,11 +442,13 @@ LPT_TYPE_MAP:
.DW LPT_STR_MG014
.DW LPT_STR_S100
;
LPT_STR_NONE .DB "<NOT PRESENT>$"
LPT_STR_NONE .DB "???$"
LPT_STR_SPP .DB "SPP$"
LPT_STR_MG014 .DB "MG014$"
LPT_STR_S100 .DB "S100$"
;
LPT_STR_NOLPT .DB "NOT PRESENT$"
;
; WORKING VARIABLES
;
LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT
@@ -468,7 +460,7 @@ LPT_CFG:
LPT0_CFG:
; LPT MODULE A CONFIG
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
.DB 0 ; LPT TYPE (SET DURING INIT)
.DB LPTMODE ; LPT MODE
.DB 0 ; MODULE ID
.DB LPT0BASE ; BASE PORT
.DW 0 ; LINE CONFIGURATION
@@ -494,7 +486,7 @@ LPT_CFGSIZ .EQU $ - LPT_CFG ; SIZE OF ONE CFG TABLE ENTRY
LPT1_CFG:
; LPT MODULE B CONFIG
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
.DB 0 ; LPT TYPE (SET DURING INIT)
.DB LPTMODE ; LPT MODE
.DB 1 ; MODULE ID
.DB LPT1BASE ; BASE PORT
.DW 0 ; LINE CONFIGURATION

View File

@@ -359,6 +359,7 @@ MD_RDSECF: ; CALLED FROM MD_RW
; SAVE THE 4K LBA FOR FUTURE CHECKS
;
CALL MD_CALBAS ; SETUP BANK AND SECTOR
RET NZ ; RETURN IF ERROR
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
@@ -467,7 +468,18 @@ MD_CALBAS:
CALL PRTHEXWORD ; DISPLAY BANK AND
CALL PC_SPACE ; SECTOR RESULT
#ENDIF
;
; CHECK FOR ACCESS BEYOND AVAILABLE ROM BANKS
LD A,B ; BANK ID TO ACCUM
SUB BID_ROMD0 ; ZERO OFFSET
CP ROMD_BNKS ; CHECK FOR OUT OF BOUNDS
JR C,MD_CALBAS1 ; IF NOT, CONTINUE
LD A,ERR_IO ; ELSE SIGNAL IO ERROR
OR A ; SET FLAGS
RET ; AND RETURN
;
MD_CALBAS1:
XOR A ; SIGNAL SUCCESS
RET
;
; WRITE FLASH
@@ -485,6 +497,7 @@ MD_WRSECF: ; CALLED FROM MD_RW
LD (MD_LBA4K),BC ; SAVE 4K LBA
;
CALL MD_CALBAS ; SETUP BANK AND SECTOR
RET NZ ; RETURN ON ERROR
;
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
@@ -566,6 +579,12 @@ MD_FBAS .DW $FFFF ; BANK AND SECTOR
;
MD_RDSEC:
CALL MD_IOSETUP ; SETUP FOR MEMORY COPY
CP $FF ; ERROR?
JR NZ,MD_RDSEC1 ; IF NOT, CONTINUE
LD A,ERR_IO ; SIGNAL IO ERROR
OR A ; SET FLAGS
RET ; AND DONE
MD_RDSEC1:
#IF (MDTRACE >= 2)
LD (MD_SRC),HL
LD (MD_DST),DE
@@ -597,6 +616,12 @@ MD_RDSEC:
;
MD_WRSEC:
CALL MD_IOSETUP ; SETUP FOR MEMORY COPY
CP $FF ; ERROR?
JR NZ,MD_WRSEC1 ; IF NOT, CONTINUE
LD A,ERR_IO ; SIGNAL IO ERROR
OR A ; SET FLAGS
RET ; AND DONE
MD_WRSEC1:
EX DE,HL ; SWAP SRC/DEST FOR WRITE
#IF (MDTRACE >= 2)
LD (MD_SRC),HL
@@ -682,13 +707,21 @@ MD_IOSETUP:
JR Z,MD_IOSETUP2 ; DO ROM DRIVE, ELSE FALL THRU FOR RAM DRIVE
;
MD_IOSETUP1: ; ROM
CP ROMD_BNKS ; WITHIN AVAILABLE ROM DISK BANKS?
JR NC,MD_IOSETUP3 ; HANDLE OUT OF BOUNDS
ADD A,BID_ROMD0
RET
;
MD_IOSETUP2: ; RAM
CP RAMD_BNKS ; WITHIN AVAILABLE RAM DISK BANKS?
JR NC,MD_IOSETUP3 ; HANDLE OUT OF BOUNDS
ADD A,BID_RAMD0
RET
;
MD_IOSETUP3:
OR $FF ; SIGNAL ERROR
RET ; DONE
;
;
;
#IF (MDTRACE >= 2)

View File

@@ -66,26 +66,10 @@ PCF_BB .EQU 00000001B
; | 12MHz | | | | | | 90Khz | 120Khz | 138Khz | 150Khz |
; +----------------------------------------------------------------------------------+---------+
;
; CLOCK CHIP FREQUENCIES
; SEE STD.ASM FOR DEFINITIONS OF PCFCLK AND PCFTRNS VALUES
;
PCF_CLK3 .EQU 000H
PCF_CLK443 .EQU 010H
PCF_CLK6 .EQU 014H
PCF_CLK8 .EQU 018H
PCF_CLK12 .EQU 01CH
;
; TRANSMISSION FREQUENCIES
;
PCF_TRNS90 .EQU 000H ; 90 kHz */
PCF_TRNS45 .EQU 001H ; 45 kHz */
PCF_TRNS11 .EQU 002H ; 11 kHz */
PCF_TRNS15 .EQU 003H ; 1.5 kHz */
;
; BELOW VARIABLES CONTROL PCF CLOCK DIVISOR PROGRAMMING
; HARD-CODED FOR NOW
;
PCF_CLK .EQU PCF_CLK12
PCF_TRNS .EQU PCF_TRNS90
PCF_CLK .EQU PCFCLK
PCF_TRNS .EQU PCFTRNS
;
; TIMEOUT AND DELAY VALUES (ARBITRARY)
;

View File

@@ -1553,7 +1553,7 @@ s100mon1:
; Launch S100 Monitor from ROM Bank 3
call ldelay ; wait for UART buf to empty
di ; suspend interrupts
ld a,BID_IMG2 ; S100 monitor bank
ld a,HWMON_BNK ; S100 monitor bank
ld ix,0 ; execution resumes here
jp HB_BNKCALL ; do it
;
@@ -2629,31 +2629,32 @@ ra_ent .equ 12
;
ra_tbl:
;
; Name Key Dsky Bank Src Dest Size Entry
; --------- ------- ----- -------- ----- ------- ------- ----------
ra_ent(str_mon, 'M', KY_CL, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL)
ra_entsiz .equ $ - ra_tbl
#if (BIOS == BIOS_WBW)
#if (PLATFORM == PLT_S100)
ra_ent(str_smon, 'S', $FF, bid_cur , $8000, $8000, $0001, s100mon)
#endif
#endif
ra_ent(str_cpm22, 'C', KY_BK, BID_IMG0, CPM_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
ra_ent(str_zsys, 'Z', KY_FW, BID_IMG0, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
#if (BIOS == BIOS_WBW)
ra_ent(str_bas, 'B', KY_DE, BID_IMG1, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC)
ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC)
ra_ent(str_fth, 'F', KY_EX, BID_IMG1, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC)
ra_ent(str_play, 'P', $FF, BID_IMG1, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC)
ra_ent(str_net, 'N', $FF, BID_IMG1, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
ra_ent(str_upd, 'X', $FF, BID_IMG1, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC)
ra_ent(str_nvr, 'W'+$80, $FF, BID_IMG1, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
ra_ent(str_user, 'U', $FF, BID_IMG1, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC)
; Name Key Dsky Bank Src Dest Size Entry
; --------- ------- ----- -------- ----- ------- ------- ----------
ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL)
ra_entsiz .equ $ - ra_tbl
#if (BIOS == BIOS_WBW)
#if (PLATFORM == PLT_S100)
ra_ent(str_smon, 'S', $FF, bid_cur, $8000, $8000, $0001, s100mon)
#endif
#endif
ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
#if (BIOS == BIOS_WBW)
ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC)
ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC)
ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC)
ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC)
ra_ent(str_net, 'N', $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC)
ra_ent(str_nvr, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC)
#endif
#if (DSKYENABLE)
ra_ent(str_dsky, 'Y'+$80, KY_GO, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
ra_ent(str_dsky, 'Y'+$80, KY_GO, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
#endif
ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC)
ra_ent(str_egg, 'E'+$80, $FF, EGG_BNK, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC)
;
.dw 0 ; table terminator
;
ra_tbl_app:
@@ -2665,6 +2666,7 @@ ra_ent(str_zsys, 'Z', KY_FW, bid_cur, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_EN
#if (DSKYENABLE)
ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
#endif
;
.dw 0 ; table terminator
;
str_mon .db "Monitor",0

View File

@@ -327,6 +327,21 @@ SYQMODE_NONE .EQU 0 ; NONE
SYQMODE_SPP .EQU 1 ; IBM PC STANDARD PAR PORT (SPP)
SYQMODE_MG014 .EQU 2 ; RCBUS MG014 STYLE INTERFACE
;
; PCF CLOCK CHIP FREQUENCIES
;
PCFCLK_3 .EQU $00 ; 3 MHz
PCFCLK_443 .EQU $10 ; 4.43 MHz
PCFCLK_6 .EQU $14 ; 6 MHz
PCFCLK_8 .EQU $18 ; 8 MHz
PCFCLK_12 .EQU $1C ; 12 MHz
;
; PCF TRANSMISSION FREQUENCIES
;
PCFTRNS_90 .EQU $00 ; 90 KHZ
PCFTRNS_45 .EQU $01 ; 45 KHZ
PCFTRNS_11 .EQU $02 ; 11 KHZ
PCFTRNS_15 .EQU $03 ; 1.5 KHZ
;
; GDC MONITOR SELECTIONS
;
GDCMON_NONE .EQU 0
@@ -866,8 +881,8 @@ ROMD_BNKS .SET 0
; -- TYPICAL --
BID_BOOT .EQU BID_ROM0 + 0 ; BOOT BANK 0x00
BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x01
BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK 0x02
BID_IMG2 .EQU BID_ROM0 + 3 ; RESERVED 0x03
BID_IMG1 .EQU BID_ROM0 + 2 ; ROM APPS IMAGES BANK 0x02
BID_IMG2 .EQU BID_ROM0 + 3 ; ROM UTILITIES IMAGES BANK 0x03
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK 0x04
BID_BIOS .EQU BID_RAM0 + 0 ; HBIOS BANK 0x80
BID_RAMD0 .EQU BID_RAM0 + 1 ; FIRST RAM DRIVE BANK 0x81
@@ -884,8 +899,8 @@ BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K 0x8F
; -- TYPICAL --
BID_BOOT .EQU BID_RAM0 + 0 ; BOOT BANK 0x80
BID_IMG0 .EQU BID_RAM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x81
BID_IMG1 .EQU BID_RAM0 + 2 ; SECOND IMAGES BANK 0x82
BID_IMG2 .EQU BID_RAM0 + 3 ; RESERVED 0x83
BID_IMG1 .EQU BID_RAM0 + 2 ; ROM APPS IMAGES BANK 0x82
BID_IMG2 .EQU BID_RAM0 + 3 ; ROM UTILITIES IMAGES BANK 0x83
BID_RAMD0 .EQU BID_RAM0 + 4 ; FIRST RAM DRIVE BANK 0x84
BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89
BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C
@@ -1078,8 +1093,8 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
#ENDIF
#DEFINE IVT(INTX) HB_IVT+(INTX * 4)+1
#DEFINE VEC(INTX) INTX*2
#DEFINE IVT(INTX) HB_IVT + (INTX * 4) + 1
#DEFINE VEC(INTX) INTX * 2
;
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)

1050
Source/HBIOS/xosera.asm Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -21,6 +21,7 @@ call BuildDisk.cmd aztecc fd wbw_fd144 || exit /b
call BuildDisk.cmd hitechc fd wbw_fd144 || exit /b
call BuildDisk.cmd tpascal fd wbw_fd144 || exit /b
call BuildDisk.cmd bascomp fd wbw_fd144 || exit /b
call BuildDisk.cmd cobol fd wbw_fd144 || exit /b
call BuildDisk.cmd fortran fd wbw_fd144 || exit /b
call BuildDisk.cmd games fd wbw_fd144 || exit /b
call BuildDisk.cmd cowgol fd wbw_fd144 || exit /b
@@ -43,6 +44,7 @@ call BuildDisk.cmd aztecc hd wbw_hd512 || exit /b
call BuildDisk.cmd hitechc hd wbw_hd512 || exit /b
call BuildDisk.cmd tpascal hd wbw_hd512 || exit /b
call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
call BuildDisk.cmd cobol hd wbw_hd512 || exit /b
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
call BuildDisk.cmd games hd wbw_hd512 || exit /b
call BuildDisk.cmd cowgol hd wbw_hd512 || exit /b
@@ -70,6 +72,7 @@ call BuildDisk.cmd aztecc hd wbw_hd1k || exit /b
call BuildDisk.cmd hitechc hd wbw_hd1k || exit /b
call BuildDisk.cmd tpascal hd wbw_hd1k || exit /b
call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
call BuildDisk.cmd cobol hd wbw_hd1k || exit /b
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
call BuildDisk.cmd games hd wbw_hd1k || exit /b
call BuildDisk.cmd cowgol hd wbw_hd1k || exit /b
@@ -83,3 +86,4 @@ copy hd1k_prefix.dat ..\..\Binary\ || exit /b
echo.
echo Building Combo Disk (1024 directory entry format) Image...
copy /b hd1k_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_combo.img || exit /b

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