Compare commits

...

803 Commits

Author SHA1 Message Date
Wayne Warthen
b832103f6b Bump Version 2025-12-12 09:45:09 -08:00
Wayne Warthen
951cded095 Merge pull request #639 from codesmythe/kbd_state_constants_move
Consolidate KBD_STATE constants.
2025-12-12 09:37:02 -08:00
Wayne Warthen
f137823950 AI LLM Policy Updates
- Added requirements for contributing content to identify AI LLM-derived work.
- Added comments to the VGMINFO documentation to identify an AI LLM was utilized in its creation.
2025-12-12 09:26:21 -08:00
Rob Gowin
b8439c29e6 Change mky.asm to use KBD_* STATE constants. 2025-12-12 09:15:23 -06:00
Rob Gowin
9b8320e34a Change ppk.asm to use KBD_* STATE constants. 2025-12-12 09:14:35 -06:00
Rob Gowin
69021f298d Move KBD STATE constants to hbios.inc 2025-12-11 14:38:31 -06:00
Wayne Warthen
9a5f156a0f Finalize SCSI Driver
- Added check for LUN existence
- Added CAPACITY query and capture results
- Added INQUIRY query and print results
2025-12-11 12:24:44 -08:00
Wayne Warthen
d05c1af35c Add 5380 SCSI Support
Thanks and credit to Jay Cotton for providing the SCSI transport code upon which this driver is based.
2025-12-10 16:59:59 -08:00
Wayne Warthen
65094dd9b3 Fix Kbd Drivers, KBD_STATE -> KBD_STATUS, #636
Thanks and credit to @codesmythe for finding this!
2025-12-09 17:32:37 -08:00
Wayne Warthen
22217bd484 Enhance DLPSER Driver for Multiple Devices 2025-12-09 17:20:14 -08:00
Wayne Warthen
8a5ab762f3 VGMINFO Build Integration 2025-12-07 14:27:07 -08:00
Wayne Warthen
305a93163f Merge pull request #635 from jduraes/add-vgminfo-tool
Add VGMINFO utility for VGM chip detection
2025-12-06 15:35:24 -08:00
jduraes
5237595822 vgminfo v1.1: Add YM3812 (OPL2) and YMF262 (OPL3) detection support 2025-12-06 22:33:55 +00:00
jduraes
b55d7a3f72 vgminfo v1.1: Improved chip detection using hybrid approach
- Fixed missing chip detection (e.g., SN76489 in SHIRAKAW.VGM)
- Fixed false positive detection (e.g., AY-3-8910 in files without it)
- Implemented hybrid detection strategy:
  * Check VGM header clock values (offsets 0x0C, 0x2C, 0x30, 0x74) to
    determine which chip types are present
  * Scan VGM command stream (up to 255 commands) to detect multiple
    instances of same chip type (e.g., '2xSN76489')
- Added VGM version check: only read AY-3-8910 clock for VGM v1.51+
  to avoid false positives from invalid data in earlier versions
- Updated documentation with new detection approach and examples
2025-12-06 22:33:55 +00:00
jduraes
8fa3a7442d Add VGMINFO.COM utility for CP/M
This utility scans .VGM files in the current directory and displays which sound chips they use. Useful for determining VGM compatibility with RomWBW's VGM player.

Features:
- Scans all .VGM files in current directory
- Detects SN76489, YM2612, YM2151, and AY-3-8910 chips
- Displays results in a formatted table
- Supports dual-chip configurations

Could you please integrate this into the RomWBW build process alongside the existing VGM player utilities?
2025-12-06 22:33:55 +00:00
Wayne Warthen
061863998e Support S100 in PS2INFO Test App 2025-12-04 12:45:12 -08:00
Wayne Warthen
0b6415c846 Update copysl.doc per Issue #629 2025-12-04 10:19:34 -08:00
Wayne Warthen
cbaae67ee4 Fix COPYSL App Comments, Issue #629 2025-12-03 18:33:43 -08:00
Wayne Warthen
95584e9271 COPYSL Slice Fit Correction, Issue #629
- Updated COPYSL application to handle last slice within partition.
- Thanks and credit to @hubertushirsch for bringing this up and assisting with the solution.

Co-Authored-By: HubertH <51236138+hubertushirsch@users.noreply.github.com>
2025-12-01 15:03:17 -08:00
Wayne Warthen
c616e76b2a Correct Z80Retro Config in SD Driver
SD_INVCS in the sd.asm had been incorrectly changed from FALSE to TRUE.  This changes it back to FALSE which is correct.

Thanks and credit to Peter Kuebler for bringing this to my attention.
2025-12-01 14:02:40 -08:00
Wayne Warthen
c1bc58b687 Misc Cleanup
- Minor documentation fixes
- Bump version number
2025-11-30 14:46:12 -08:00
Wayne Warthen
cc32697ae3 Merge pull request #634 from danwerner21/master
change config defaults for N8PC
2025-11-30 14:22:19 -08:00
Dan Werner
42e630a746 change config defaults for N8PC 2025-11-30 17:54:21 +00:00
Wayne Warthen
605ac58f7a More RTC Cleanup 2025-11-29 19:37:19 -08:00
Wayne Warthen
b9a251bb1f Minor Improvement in DS12RTC Driver
- Refactored the Update-In-Progress checks to reduce code size and improve checking accuracy.
2025-11-29 17:03:42 -08:00
Wayne Warthen
f283aed73b Minor Cleanup for N8PC
Just some minor cleanup for consistency.  No functional changes.
2025-11-29 16:08:20 -08:00
Wayne Warthen
704b31eb23 Merge branch 'master' of https://github.com/wwarthen/RomWBW 2025-11-29 13:49:59 -08:00
Wayne Warthen
a57fc8d4fa Merge pull request #633 from danwerner21/master
Add N8PC support - includes support for M6242 RTC.
2025-11-29 13:48:19 -08:00
Dan Werner
5ccc225343 change N8PC build default 2025-11-29 03:23:31 +00:00
Dan Werner
25facb8e4d Add N8PC support 2025-11-29 02:13:38 +00:00
Wayne Warthen
ac48639bfc Cleanup of DS12RTC Driver
- Offset NVRAM register access by $60 to avoid collisions with IBM PC CMOS usage.
- Wrap register accesses in DI/EI.  The DS1288x requires no interrupts between the register selection and the data r/w.
- Minor comment improvements.
2025-11-26 13:05:21 -08:00
Wayne Warthen
8c7f51fd74 Bug Fix for DS5RTC Driver
- The SETBYT routine was broken.  This fixes it.
2025-11-26 13:02:24 -08:00
Wayne Warthen
2de1c9b05d Support DS1288x RTC/NVRAM 2025-11-25 17:08:15 -08:00
Wayne Warthen
2ac394f22b HBIOS Disk R/W w/ Sec Cnt = 0, Discussion #632
Check for a length of zero in HBIOS disk read and write calls.  Such calls will perform no read/write actions and return success.

Thanks and credit to @hubertushirsch.
2025-11-21 10:07:17 -08:00
Wayne Warthen
b652412964 Improve RomLdr Messaging
Improve messaging that handles missing boot signature or load length <= 0.

Thanks and credit to @hubertushirsch.

See Commit f5a7c61 comments.
2025-11-21 09:02:47 -08:00
Wayne Warthen
bb93010716 Fix RomLdr "O" Option Return, Issue #630
- Removed interrupts disable prior to invoking hardware monitor from RomLdr.

Co-Authored-By: HubertH <51236138+hubertushirsch@users.noreply.github.com>
2025-11-19 13:44:18 -08:00
Wayne Warthen
f5a7c61214 Validate Boot Record Meta Data
- Added basic checks to verify boot image size is > 0 before attempting to load.  Thanks and credit to @hubertushirsch.  See Discussion #631.

Co-Authored-By: HubertH <51236138+hubertushirsch@users.noreply.github.com>
2025-11-19 13:07:20 -08:00
Wayne Warthen
6a9f06cb22 Update zxcc BIOS and ZMAC Binary
- Updated zxcc BIOS binary to sync with latest from Tony Nicholson.
- ZMAC.COM updated to remove inappropriate Z3ENV pointer in file header.
2025-11-17 15:34:30 -08:00
Wayne Warthen
99ed022660 Minor Update for RomLdr per Issue #622
Thanks and credit to @kiwisincebirth.
2025-11-15 17:07:10 -08:00
Wayne Warthen
eec721e3bb Create mmrtc.asm
Adding missed file.
2025-11-14 14:47:27 -08:00
Wayne Warthen
9233d19c2c Add NS MM58167B RTC Driver
- This is currently specific to the S100 systems interface.
2025-11-14 14:26:21 -08:00
Wayne Warthen
0656589f06 Add Sys to All Disk Images
This commit adds a default (ZSDOS) system image to all disk images that didn't already have a system image in their boot tracks.

- Enables the disk label to be displayed by SLABEL and the Slices Inventory functions for all disk images.
- Enables all disk images to have a basic boot mechanism allowing things like automatic batch processing to be added to any disk image.
- Changed "ws4" disk image to "wp" to reflect the fact that the disk image has multiple word processing distribuitions (WordStar 4 in user area 0 and ZDE in user area 1).
2025-11-12 11:55:40 -08:00
Wayne Warthen
7686cef325 S100 Doc Updates 2025-11-09 13:55:07 -08:00
Wayne Warthen
063e7c87d4 RomLdr Improvements, Issue #622
Some preliminary work on RomLdr to eventually support improved ROM content layout management.

- Allow ROM components to span banks.
- Refactor menu removing "L" option.
2025-11-09 12:20:26 -08:00
Wayne Warthen
e771ca88c1 PLDSER Driver
- Improve hardware detection
2025-11-09 12:17:01 -08:00
Wayne Warthen
915552fed8 S100 Config Cleanup 2025-11-09 12:15:36 -08:00
Wayne Warthen
6592a0797f SZ80 to 19200 Baud as Default
John is moving the S100 Monitor from 38400 baud to 19200 baud.  This change is to stay in sync.
2025-11-01 17:03:46 -07:00
Wayne Warthen
ad2d3f3ac3 Disk Driver Code Cleaning
Some disk drivers still had internal code for multi-sector I/O.  With the read supervisors, this is no longer needed.  Removed the extraneous code from these drivers.
2025-11-01 16:46:23 -07:00
Wayne Warthen
d0ac04045a Preliminary Zilog SCC Support
- Interrupts and flow control not yet implemented.
2025-10-29 13:40:24 -07:00
Wayne Warthen
54c9478dfd Fix Typos, See Issue #628
Fixed typos per @p42db

Co-Authored-By: PauldB <169483608+p42db@users.noreply.github.com>
2025-10-28 19:49:43 -07:00
Wayne Warthen
b62f652a69 Update CONTRIBUTING.md
Minor formatting correction.
2025-10-27 18:40:57 -07:00
Wayne Warthen
3a571c6d2f Add Developer Hints to CONTRIBUTING.md, Issue #625
Added some developer hints per Issue #625.
2025-10-27 12:54:33 -07:00
Wayne Warthen
08753fe7dd Regen Docs 2025-10-27 12:04:26 -07:00
Wayne Warthen
c39d81c226 Add Z80TYPE Test Application
Added Z80TYPE Z80 chip variant detection utility to Test applications.
2025-10-27 11:30:49 -07:00
Wayne Warthen
c8448940dd Merge pull request #627 from fernandocarolo/patch-1
Fix formatting typo in Hardware.md.
2025-10-25 18:47:05 -07:00
Fernando Carolo
ad5961ba6e Fix formatting typo in Hardware.md.
Fix a formatiing error due to a typo in Hardware.md.
2025-10-25 22:21:57 +01:00
Wayne Warthen
d741d18705 Update Makefile 2025-10-22 13:38:26 -07:00
Wayne Warthen
71bc7719e8 S100 Naming Cleanup
Renamed configs and mode options for S100 systems to make them more consistent and accurate.
2025-10-22 13:32:45 -07:00
Wayne Warthen
e1ded4d07c Update Cowgol Files
Cowgol files updated per @Laci1953.  See <https://groups.google.com/g/rc2014-z80/c/RwMdqNOPWXw>.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-10-20 10:27:48 -07:00
Wayne Warthen
4bca65e53c Merge pull request #626 from b3rendsh/master
MSX fix memory and base year
2025-10-20 09:54:12 -07:00
H.J.Berends
cbfa6d9241 MSX fix memory and base year
MSX fix upper memory segment assignment error and set RP5C01 base year to 1980.
2025-10-20 13:00:36 +02:00
Wayne Warthen
2d0ebf49f7 S100 Config Tweaking 2025-10-15 17:38:59 -07:00
Wayne Warthen
7177f1183d Compression Doc Format Improvement, Issue #500
Slight improvement to formatting of the compression section of the Hardware document for EaZy80-512.
2025-10-15 10:27:36 -07:00
Wayne Warthen
9d04a7b1df Improved Compression Doc, Issue #500
Co-Authored-By: PauldB <169483608+p42db@users.noreply.github.com>
2025-10-14 17:52:41 -07:00
Wayne Warthen
6121e80310 Bump Version 2025-10-13 17:12:52 -07:00
Wayne Warthen
d6e2e042f8 EaZy80-512 Hardware Doc Update, Issue #500 2025-10-13 17:11:43 -07:00
Wayne Warthen
361e9ed83a Comments for EaZy80-512 64K ROM, Issue #500
Comments to alert developers of the need to keep layout.inc and EZ512 build scripts in sync.
2025-10-13 16:58:51 -07:00
Wayne Warthen
4ee14cbefa Tweak S100 Z80 IOBYTE Handling
Attempting to ensure that RomWBW properly "follows" the IOBYTE settings at implemented in the dedicated S100 Z80 Monitor.  Specifically, the bit that controls the boot console.
2025-10-13 16:54:20 -07:00
Wayne Warthen
10b4f98276 Compressed ROM for EaZyZ80-512, Issue #500
Thanks and credit to Paul de Bak for providing the compression utility.

Co-Authored-By: PauldB <169483608+p42db@users.noreply.github.com>
2025-10-12 15:53:04 -07:00
Wayne Warthen
affc47efc2 Support DLP Connection on S100 Serial I/O 2025-10-11 15:10:58 -07:00
Wayne Warthen
1195a82ab9 Merge pull request #621 from b3rendsh/master
Update loader for MSX
2025-10-11 11:36:59 -07:00
H.J.Berends
2d77d4f036 Added IDE driver detect option 2025-10-11 13:21:16 +02:00
H.J.Berends
43a835fdde Update loader for MSX 2025-10-11 12:00:56 +02:00
Wayne Warthen
22f9c9cef1 Correct Prior Int Status Fix, See Issue #620
Thanks and credit to @feilipu.
2025-10-10 13:43:33 -07:00
Wayne Warthen
7e4ce45f9a Improve S100 Z80 FPGA Config
Improvements to the PPIDE interface discovery configuration.
2025-10-10 11:36:12 -07:00
Wayne Warthen
f164ffdc76 Z80 NMOS Int Status Bug, Issue #620
Add a config setting to enable code that works around the Z80 interrupt status (LD A,I) bug.

Currently enabled only for MSX platform.
2025-10-10 11:18:18 -07:00
Wayne Warthen
6684a3e039 Support LEDs on S100 SMB 2025-10-08 12:05:23 -07:00
Wayne Warthen
6202bd244c Bump Version 2025-10-03 08:53:31 -07:00
Wayne Warthen
9ba4a7fecd Merge pull request #618 from b3rendsh/master
Added loader for MSX
2025-10-03 08:05:46 -07:00
H.J.Berends
130c0590fa Added loader for MSX 2025-10-03 10:19:50 +02:00
Wayne Warthen
a11b42f734 Bump Version 2025-09-29 10:49:29 -07:00
Wayne Warthen
33f69d0497 Merge pull request #616 from b3rendsh/master
Update PPIDE, added MSX BEER
2025-09-29 10:18:07 -07:00
Wayne Warthen
648c464518 Fix Format of TIMER Entry in Applications Doc
Thanks and credit to MartinR for pointing this out.
2025-09-29 09:58:26 -07:00
H.J.Berends
a4b8d14e3d Update PPIDE, added MSX BEER
Update PPIDE driver, added support for MSX BEER IDE interface
2025-09-29 12:53:29 +02:00
Wayne Warthen
08f2eb215a Update FAT Utility
Update FAT utility to look for IDENT pointer in the new location.  See Discussion #613
2025-09-27 14:20:48 -07:00
Wayne Warthen
cf528ef1c1 Add Zero Option to TIMER Application
@MartinR-UK enhanced TIMER to allow zeroing the seconds counter.

Co-Authored-By: MartinR <174514335+MartinR-UK@users.noreply.github.com>
2025-09-26 11:29:33 -07:00
Wayne Warthen
16449bb817 Fix Image Bank Id's for ROMless Systems
See Discussion #613
2025-09-24 14:03:13 -07:00
Wayne Warthen
e6b3945e42 MSX Follow-up
- Include in Linux/MacOS build
- Add entry in Hardware Guide
- Add credit in Introduction
2025-09-24 13:07:10 -07:00
Wayne Warthen
c11ec9f097 Merge pull request #614 from b3rendsh/master
Add MSX platform
2025-09-24 10:55:05 -07:00
H.J.Berends
8983b3642d added MSX platform 2025-09-24 12:19:21 +02:00
Wayne Warthen
fa4f0c996a Switch IDENT from $FFFE to $FFFC
Accommodates upcoming MSX platform port.  See [Discussion #613](https://github.com/wwarthen/RomWBW/discussions/613).
2025-09-23 13:36:32 -07:00
Wayne Warthen
74cfca470d SZ80 Tweaks
Support full 1MB of RAM on S100 Z80 CPU.
2025-09-23 11:59:47 -07:00
Wayne Warthen
1f6672ebab Fix .gitignore 2025-09-22 18:48:16 -07:00
Wayne Warthen
b5f402554c Preliminary S100 Z80 CPU Support
Adds support for a general modular Z180-based S100 system.
2025-09-22 17:20:23 -07:00
Wayne Warthen
ee6cd57f15 Correct Typo in CHUSB Driver
Thanks and credit to @hubertushirsch.
2025-09-18 11:31:54 -07:00
Wayne Warthen
e43b739ddd Remove Unused Code in CHUSB Driver, Issue #612
Thanks and credit to @hubertushirsch.
2025-09-17 14:35:42 -07:00
Wayne Warthen
474a261649 Bump Version 2025-09-17 14:27:24 -07:00
Wayne Warthen
2b459b1358 Add Config for ESPSD CD
- Allow card detect functionality in ESPSD driver to be controlled by a configuration variable.
2025-09-17 14:25:25 -07:00
Wayne Warthen
5e7009876c Bump Version 2025-09-13 11:49:25 -07:00
Wayne Warthen
046c8cc20c Update COWFIX.COM
- Minor update to latest COWFIX.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-09-13 07:24:12 -07:00
Wayne Warthen
caf7544219 Updated Cowgol disk image with latest COWFIX.COM
Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-09-12 10:04:05 -07:00
Wayne Warthen
58d0c7add0 Add ZSDOS Programmer's Manual
Randy Merkel provided ZSDOS Programmer's Manual as translated by Wayne Hortensius.

See <https://groups.google.com/g/retro-comp/c/MqgKPb2l2Gc>.
2025-09-12 09:17:32 -07:00
Wayne Warthen
067363824c ESPSD Driver Cleanup
- Includes workaround for S100 Z180 SBC data transfer anomaly
2025-09-04 09:15:59 -07:00
Wayne Warthen
edaa4e2a03 Bump Version 2025-09-01 14:40:16 -07:00
Wayne Warthen
1a38b97e51 Merge pull request #609 from dinoboards/dean-dev-2025-08-30-ch376-issue
ch376native: fix issue with CH376S modules with VER 3 firmware.
2025-09-01 14:35:50 -07:00
Wayne Warthen
36dac79faf Add DOWNLOAD Application
- This is the Grant Searle DOWNLOAD application intended to be used with his File Packager Windows application.
2025-09-01 14:34:33 -07:00
Wayne Warthen
1738bfeb35 Merge branch 'master' of https://github.com/wwarthen/RomWBW 2025-09-01 14:23:01 -07:00
Wayne Warthen
79180f2a3b Merge pull request #610 from kiwisincebirth/map-doc-clrdir
Minor improvement in documentation by reordering Sections discussing …
2025-09-01 14:21:56 -07:00
Wayne Warthen
a51a581d97 More ESPSD Driver Tweaks 2025-09-01 14:18:08 -07:00
Mark Pruden
aee9b4aa87 Minor improvement in documentation by reordering Sections discussing CLRDIR 2025-08-31 12:37:30 +10:00
Wayne Warthen
9f2bee08b6 Another ESPSD Tweak 2025-08-29 18:43:13 -07:00
Dean Netherton
ec973d0b3f ch376native: fix issue with CH376S modules with VER 3 firmware.
The initial device discovery would return a USB STALL state. Added retry
logic to clear the STALL and try again - only retries once.
2025-08-30 09:36:59 +10:00
Wayne Warthen
a6f04b8be2 Improve ESPSD Reliability 2025-08-29 16:11:41 -07:00
Wayne Warthen
cccb51b3c4 Adjust ESPSD Driver for Firmware Updates 2025-08-25 17:12:59 -07:00
Wayne Warthen
15f22a0cb0 Missed Line in Previous Commit 2025-08-23 15:47:01 -07:00
Wayne Warthen
b82910cad8 Restore FZ80 SD Driver Ready Waits 2025-08-23 11:19:48 -07:00
Wayne Warthen
a188add0eb Improve NVRAM Switch API Documentation
See Issue #605.
2025-08-20 16:37:46 -07:00
Wayne Warthen
641a4d7daf Doc Fixes per Issue #606 2025-08-20 16:10:38 -07:00
Wayne Warthen
d7dc9aafa4 S100 FPGA Z80 Printer Driver Fixes
- Printer driver was showing port as NOT PRESENT even though it is always present.
2025-08-20 13:37:40 -07:00
Wayne Warthen
072774a147 More ESPSD Driver Tweaks 2025-08-15 10:16:52 -07:00
Wayne Warthen
15e44ecd8e S100 ESP SD Driver Tweaks
- Tune timeout
- Implement card detect
2025-08-13 13:59:02 -07:00
Wayne Warthen
2eb4e5606c Merge pull request #604 from mggates39/feature/UpdateProgrammingDemos
Update programming demos
2025-08-11 19:06:00 -07:00
Wayne Warthen
15f440ce4d Support S100 ESP32 SD Card Interface 2025-08-10 17:24:08 -07:00
Marshall Gates
1a8f03b322 Clean up bad end of file markers 2025-08-09 19:10:24 -04:00
Marshall Gates
2d2696d22c Add HiTech C Sample source code 2025-08-09 19:09:49 -04:00
Marshall Gates
090d26b2af Rename development demo combo defintion example file so that it actually works 2025-08-09 18:50:29 -04:00
Wayne Warthen
e4c55edc02 S100 2CF+1SD CF Interface Support
- Implemented for FZ80 and Z180 CPU boards.
- Base I/O for FZ80 is moved from $30 to $38 to avoid conflict with FZ80 built-in CF interface.
2025-08-06 17:17:56 -07:00
Wayne Warthen
a68ae0cd24 Minor Documentation Updates 2025-07-29 13:21:47 -07:00
Wayne Warthen
45ac5cb3be Merge pull request #603 from mggates39/dev/BoatFest_Talk
Add Sample Hello World Source Code
2025-07-29 10:54:10 -07:00
Marshall G. Gates
21f7dfc4fb Renamed demo_dev combo to example 2025-07-28 21:43:20 -04:00
Marshall G. Gates
d92fb77f11 Added a development combo disk defintion 2025-07-28 20:26:08 -04:00
Marshall G. Gates
4006bc0224 Added Cobol to the Readme 2025-07-28 20:25:40 -04:00
Marshall G. Gates
0d5681d2db Merge branch 'master' into dev/BoatFest_Talk 2025-07-28 20:16:03 -04:00
Wayne Warthen
ab9e6d662d Note Terminology Follow-up, Issue #595
Attempting to straighten out the use of "tone" vs. "note".  I'm sure this isn't perfect, but hopefully better.
2025-07-22 16:09:19 -07:00
Wayne Warthen
4fa7bf0117 Note Terminology Follow-up, Issue #595
Trying to ferret out the last instances of quarter-note being used instead of eighth-note.

The comments in `audio.inc` are now confusing, but I don't know how to fix them...
2025-07-22 11:42:39 -07:00
Wayne Warthen
14a9f51efe Merge pull request #602 from wdl1908/master
Include BASEIMGS in dependency tracking
2025-07-22 11:29:34 -07:00
Willy De la Court
a052b145fe Include BASEIMGS in dependency tracking to generate images that have no *.txt to define the content 2025-07-22 17:15:56 +02:00
Wayne Warthen
1d7b0d970f USB Floppy I/O Return Flags, Issue #456 2025-07-21 17:50:20 -07:00
Wayne Warthen
ddeb6ce48b Merge pull request #601 from dinoboards/dean/ch376-cleanup-port-labels
ch376-native: moved secondary IO port labels from master to ch376.asm
2025-07-21 16:38:41 -07:00
Dean Netherton
b6598cdcc6 ch376-native: moved secondary IO port labels from master to ch376.asm 2025-07-22 09:07:08 +10:00
Wayne Warthen
74f9daaaaa USB Floppy Geometry Fix, Issue #456
USB Floppy Driver modified to:

- return media id for 1.44 MB Floppy (MID_FD144)
- translate CHS to LBA

At present, floppy media is assumed to be high density 1.44MB.
2025-07-21 11:19:42 -07:00
Wayne Warthen
dddffac68f Merge pull request #600 from dinoboards/dean-ch376-include-ports-in-boot
ch376-native: output the configured port numbers for the ch376 driver
2025-07-21 10:16:18 -07:00
Dean Netherton
f03c68c016 ch376-native: output the configured port numbers for the ch376 native usb driver 2025-07-21 19:23:26 +10:00
Wayne Warthen
8c629c637d Improve Custom Hard Disk Image Doc, Issue #597 2025-07-20 17:30:58 -07:00
Wayne Warthen
2dba16c62d Fix ASSIGN for Multiple Floppy Drivers
ASSIGN was assuming that the "FD" floppy driver was the only floppy driver.  This change properly recognizes any driver that indicates it is a floppy driver.
2025-07-20 16:59:46 -07:00
Wayne Warthen
90bb60d423 Fix CBIOS for Multiple Floppy Drivers
CBIOS was assuming that the "FD" floppy driver was the only floppy driver.  This change properly recognizes any driver that indicates it is a floppy driver.
2025-07-20 16:40:08 -07:00
Wayne Warthen
52bf7a56e3 Improve Custom Hard Disk Image Doc, Issue #597 2025-07-20 13:14:48 -07:00
Wayne Warthen
0a0f2f8a4b Merge pull request #598 from dinoboards/dean-ch376-fix-for-windows-pr
ch376-native: fixes for windows build
2025-07-20 11:21:07 -07:00
Dean Netherton
aacf98a82a ch376-native: fixes for windows build
* convert 0x??? hex literals to $??? literals
* More label shortening for windows tasm compatibility
2025-07-20 15:32:08 +10:00
Wayne Warthen
42385fd120 Fix OS Boot on Native USB, Issue #456
Minor change to ch376scsi.asm resolves an issue that caused multi-sector I/O to fail.
2025-07-19 18:20:01 -07:00
Wayne Warthen
d754e475c2 Note Terminology Follow-up, Issue #595
- The SystemGuide.md file was omitted in the last commit.
- Corrected terminology in the comments of the sound drivers.
2025-07-19 16:10:31 -07:00
Wayne Warthen
a75dada16e Correct Note Terminology, Issue #595
Modified System Guide to refer to Eighth Notes instead of Quarter Notes per guidance in associated issue.
2025-07-19 15:58:45 -07:00
Wayne Warthen
e5a98ec501 Minor Follow-up to Native USB Support, Issue #456
- Update device mask in ASSIGN application
- Update doc to credit @dinoboards
2025-07-19 11:51:50 -07:00
Wayne Warthen
0a8b4355c9 Merge pull request #596 from dinoboards/dean-include-usb-for-assign
ch376-native: extended assign to support new device type usb
2025-07-19 07:08:14 -07:00
Dean Netherton
bd6e374d72 ch376-native: extended assign to support new device type usb 2025-07-19 10:22:06 +10:00
Wayne Warthen
e4c5f1e1f8 Native USB Support Follow-up, Issue #456
- Regen documentation
- .EQU -> .SET in cfg_RCEZ80
- Bump version
2025-07-18 16:14:30 -07:00
Wayne Warthen
a29c6f35c7 Merge pull request #592 from dinoboards/dean-ch376-usb-native-8
CH376 Native USB Driver
2025-07-18 15:15:16 -07:00
Wayne Warthen
c5da5b60a8 Minimal Doc of Revised Disk Image Creation Process 2025-07-18 14:35:25 -07:00
Wayne Warthen
8a5f9eed2d Fix Speaker Functionality on Specific Platforms 2025-07-18 11:20:30 -07:00
Wayne Warthen
5a70c0bd38 Fix Images Makefile for MacOS Compatibility (again) 2025-07-17 16:51:47 -07:00
Wayne Warthen
edfb568c82 Fix Images Makefile for MacOS Compatibility (again) 2025-07-17 16:04:26 -07:00
Wayne Warthen
d35207c7a8 Fix Images Makefile for MacOS Compatibility 2025-07-17 15:20:54 -07:00
Wayne Warthen
347223fa02 Image Creation Refinements, Issue #576
- Determine slice images to create dynamically based on the hd_xxx.txt and fd_xxx.txt files.
- Add a volume label directive to the hd_xxx.txt and fd_xxx.txt files.
- Add a system image directive to the hd_xxx.txt and fd_xxx.txt files.
2025-07-17 14:53:23 -07:00
Wayne Warthen
d259411e72 Merge pull request #594 from kiwisincebirth/map/doc-classic
Replaced "Legacy" (disk layout) with "Classic"
2025-07-17 14:32:35 -07:00
Mark Pruden
2bb559d29a Replaced "Legacy" (disk layout) with "Classic" 2025-07-16 16:33:37 +10:00
Wayne Warthen
5855dafac6 Merge pull request #593 from kiwisincebirth/map/slabel-fix
MartinR-UK Fixed formatting issue with SLABEL where Slice # < 10
2025-07-15 19:28:16 -07:00
Mark Pruden
b4fe4dc7e9 MartinR-UK Fixed formatting issue with SLABEL where Slice # < 10 2025-07-16 11:34:32 +10:00
Dean Netherton
2269142a04 ch376-native: moved port definition from C code to cfg_MASTER.asm 2025-07-15 11:53:55 +10:00
Dean Netherton
ae3cd27579 Merge branch 'master' into dean-ch376-usb-native-8 2025-07-15 11:32:43 +10:00
Dean Netherton
7dbe9a5abb ch376-native: updated readme notes and adjusted config for Z80 and eZ80 to not by default, enable the USB drivers 2025-07-15 11:08:41 +10:00
Dean Netherton
1a955efee6 ch376-native: updated cbios to allow for upto 32 device types returned from DIODEVICE HBIOS query 2025-07-15 10:57:36 +10:00
Wayne Warthen
67b89d2a9c Merge pull request #590 from wdl1908/master
Make sure the images in *.def files are build as dependencies
2025-07-10 12:53:27 -07:00
Willy De la Court
7d72d8c347 rename VAR and not sure why but order is important 2025-07-10 21:01:53 +02:00
wdl1908
8475f29e43 Merge branch 'wwarthen:master' into master 2025-07-10 20:19:43 +02:00
Willy De la Court
7f64871014 Use TEMP2 as variable to not create conflict with previous use of TEMP 2025-07-10 20:19:06 +02:00
Wayne Warthen
1ef10c3c14 Fix MacOS Build, Issue #576 2025-07-10 10:39:00 -07:00
Willy De la Court
9f15687b03 Make sure the images in *.def files are build as dependencies 2025-07-10 19:37:10 +02:00
Wayne Warthen
e696dc6c19 Merge pull request #588 from kiwisincebirth/map/infocom1
Final contribution to Infocom documentation
2025-07-09 19:59:12 -07:00
Wayne Warthen
c8014d1947 User Defined Aggregate Disk Images, #576
Initial round of work on user defined aggregate disk images.
2025-07-09 19:37:59 -07:00
Mark Pruden
801ee17487 Some documentation improvements 2025-07-09 16:01:48 +10:00
Wayne Warthen
0a35539d1c Bump Version, Minor Doc Updates
- Update Layout.txt file.
- Add Cowgol Compiler Manual from @Laci1953

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-07-08 13:37:56 -07:00
Wayne Warthen
43680193a9 Merge pull request #586 from mabartibin/speaker-refactor
Speaker refactor
2025-07-08 12:59:47 -07:00
Wayne Warthen
7accbc4981 Merge pull request #585 from kiwisincebirth/map/infocom1
Added Infocom Disk Image
2025-07-08 12:55:00 -07:00
Martin Giese
9689034523 removed most references to RTC, adjusted comments 2025-07-08 21:31:39 +02:00
Martin Giese
af3401ac5b 1 bit speaker code refecatored to arbitrary ports and masks 2025-07-08 21:24:38 +02:00
Mark Pruden
b50913e4c3 Finalised the Game Documentation 2025-07-08 12:05:14 +10:00
Mark Pruden
f99afc3d37 Added all the COM Files 2025-07-07 21:22:00 +10:00
Mark Pruden
744736fa23 Minor changes to the documentation, renamed 2 game files 2025-07-07 14:07:39 +10:00
Mark Pruden
84770dc29a Added Infocom Disk Image 2025-07-07 08:17:11 +10:00
Wayne Warthen
cebeee1157 HBIOS Warm Start Cleanup, See Issue #579
- @kiwisincebirth noticed some duplicative code in HBIOS related to warm starts.  This has been refactored.
- A start mode code is now passed from HBIOS to RomLdr to indicate a warm or cold start.  Device inventory now uses this code to display only on cold start.
2025-07-02 13:52:41 -07:00
Wayne Warthen
f6b083d835 Merge pull request #583 from kiwisincebirth/map/trivial
Trivial (Non-Functional) Changes
2025-07-02 13:35:25 -07:00
Mark Pruden
71abbfb8fc Trivial (Non-Functional) Changes 2025-07-02 12:21:43 +10:00
Wayne Warthen
0932a43fe7 Update invntdev.asm
Very minor optimization.
2025-07-01 15:54:40 -07:00
Wayne Warthen
58b016d173 Merge pull request #582 from kiwisincebirth/map/hbios-inv-dev
Move Device Inventory function from HBIOS to Rom App
2025-07-01 13:44:36 -07:00
Mark Pruden
c884571384 Log Message Fix 2025-07-01 11:16:29 +10:00
Mark Pruden
cfaa2b39c1 Merge branch 'master' into map/hbios-inv-dev 2025-07-01 10:57:44 +10:00
Mark Pruden
a68467150e Moved Device Inventory from HBIOS into a stanalone Rom App 2025-07-01 10:54:47 +10:00
Wayne Warthen
ed095285c5 More ROM Font Tweaks
Use SYS_PEEK instead of HBX_PEEK to access font data.
2025-06-30 14:24:04 -07:00
Wayne Warthen
4ad437d557 Reduce Size of RomLdr, Issue #579
Reduce size of RomLdr binary to fit in allocated space.
2025-06-30 13:20:14 -07:00
Wayne Warthen
666e7717f8 Merge pull request #580 from kiwisincebirth/map/romldr-fix
Rom loader Improvements
2025-06-30 10:51:50 -07:00
Mark Pruden
5f4a6c5160 Documentation Improvements 2025-06-30 10:55:29 +10:00
Mark Pruden
36ea53f612 Updates to RomLoader to improve UX. Dont afftec the overall functionality 2025-06-30 10:27:06 +10:00
Wayne Warthen
540475b50f S100 Monitor Menu Key Change (again)
As pointed out by @kiwisincebirth, my prior choice of the numeric 1 conflicts with booting to disk units.  Changing the menu key to the letter 'O' this time.
2025-06-29 13:34:22 -07:00
Wayne Warthen
1d8ffa2d8a Merge pull request #578 from kiwisincebirth/map/doc-user-guide
Updates to User Guide for Boot Menu
2025-06-29 13:21:39 -07:00
Mark Pruden
02f5e05761 Updates to User Guide primarily for Boot Menu, along with associated improvements 2025-06-29 13:40:58 +10:00
Wayne Warthen
1cba90ff15 More ROM Font Tweaks
- Add a signature to the start of the font map table to prevent accidentally applying/decompressing invalid font data.
- Improve Z280 font byte retrieval to properly restore the user mode bank.
2025-06-28 17:37:02 -07:00
Wayne Warthen
5a519540bc Merge pull request #577 from kiwisincebirth/map/slc-inv-rom
Added New Rom App - Slice Inventory - executed from RomLdr "S"
2025-06-28 14:33:11 -07:00
Mark Pruden
782e614b29 Merge branch 'master' into map/slc-inv-rom 2025-06-28 17:23:24 +10:00
Mark Pruden
f131b2486a Added New Rom App - Slice Inventory - executed from RomLdr "S" 2025-06-28 17:19:53 +10:00
Wayne Warthen
c399864e95 S100 Monitor Menu Key Change
Changed the menu key of the S100 Monitor from 'S' to '1' in the RomLdr.  This is to free up the 'S' key for a more generic use.
2025-06-27 15:24:14 -07:00
Wayne Warthen
4e49a0fede ROM Fonts Z280 Fix
The HBX_PEEK function does not handle invocation from system mode.  Implemented a workaround for this.
2025-06-27 11:26:35 -07:00
Wayne Warthen
00a6c8143a Support Font Data in ROM
Video soft font data was occupying a large amount of space in the HBIOS bank.  This change moves the font data to a ROM bank by default.

Thanks and credit to @b1ackmai1er who provided much of the code that originated this change.

Co-Authored-By: b1ackmai1er <39449559+b1ackmai1er@users.noreply.github.com>
2025-06-26 11:51:47 -07:00
Wayne Warthen
ab7c566270 Abstraction of Font File Processing
Moved common font data file processing (including decompression) into core code and removed redundant code from VDA drivers.
2025-06-25 12:35:24 -07:00
Wayne Warthen
70742d5083 Fonts in ROM
Beginning multi-step process to migrate font data to ROM.
2025-06-23 15:36:48 -07:00
Dean Netherton
75c9a4e482 Merge branch 'master' into dean-ch376-usb-native-8 2025-06-24 08:20:43 +10:00
Wayne Warthen
ba7281d399 Bump Version 2025-06-22 14:58:08 -07:00
Wayne Warthen
31aa305522 Rationalize Font Files
- Consolidated font files from 6 to 4 by eliminating redundant files.
- Use code page 437 for all fonts (except 8x11).
2025-06-22 14:36:43 -07:00
Wayne Warthen
9a3ef54f53 Update cfg_MASTER.asm
Change .SET to .EQU where they occur to allow TASM builds to succeed.
2025-06-21 15:47:26 -07:00
Wayne Warthen
14b58db9c6 Merge pull request #573 from dinoboards/dean/ez80-timing-fixes
z80: Changes to configuration for setting memory & I/O timings
2025-06-21 15:31:35 -07:00
Dean Netherton
d83ed6f774 Merge branch 'dean/ez80-timing-fixes' into dean-ch376-usb-native-8 2025-06-21 13:57:13 +10:00
Dean Netherton
100b2fc46e ch376-native: revert non-related changes applied to RCEZ80 config files 2025-06-21 13:42:01 +10:00
Dean Netherton
53d2f3f57b ch376-native: fixed issue with firmware delegation version (CHNATIVEEZ80) intermittenly failing 2025-06-21 13:37:10 +10:00
Dean Netherton
024074b2cf ch376-native: fixed issue where keyboard int handler could cause corruption of io 2025-06-21 13:37:09 +10:00
Dean Netherton
4436209213 ch376-native: fixed issue with parsing configs containing HID configs (keyboards/mice) 2025-06-21 13:35:37 +10:00
Dean Netherton
c8a551a781 ch376-native: removed some dead code 2025-06-21 13:35:37 +10:00
Dean Netherton
e0d385af38 ch376-native: boot report now indicates if firmware or RomWBW version of driver is running 2025-06-21 13:35:37 +10:00
Dean Netherton
135641d66c ch376-native:updated master and ez80 configs - defaults to off at master, and on for ez80 2025-06-21 13:35:37 +10:00
Dean Netherton
f63ef6ba04 ch376-native: enabled ez80 firmware version for the usb drivers 2025-06-21 13:35:37 +10:00
Dean Netherton
b62b8639a6 ch376-native: updated keyboard driver
1. fix handling of caps-lock
2. removed support for returning scancode/bitfields for hbios call
2025-06-21 13:35:36 +10:00
Dean Netherton
253b92377d ch376-native: reverted usb keyboard extensions 2025-06-21 13:34:20 +10:00
Dean Netherton
b006343740 ch376-native: implemented ez80 delegated version of ufi driver 2025-06-21 13:34:20 +10:00
Dean Netherton
f0133d1b1b ch376-native: ufi driver refactor - removed use of bit fields to ensure compatibility with other c compilers 2025-06-21 13:34:20 +10:00
Dean Netherton
d1722923fd ch376-native: added new config CHNATIVEEZ80 to enable use of ez80's firmware version of usb support 2025-06-21 13:34:20 +10:00
Dean Netherton
242c004749 ch376-native: keyboard: cleaner separation of concerns 2025-06-21 13:34:20 +10:00
Dean Netherton
e24860f474 ch376-native: minor code cleanup 2025-06-21 13:34:20 +10:00
Dean Netherton
ecb95cc161 ch376-native: refactor clear separation of driver and usb functions 2025-06-21 13:34:19 +10:00
Dean Netherton
4e23c9104d ch376-native: refactor usb scsi/ufi function to replace use of config* with dev_index int 2025-06-21 13:34:19 +10:00
Dean Netherton
179abe7087 ch376-native: refactor: separating driver state and hbios state 2025-06-21 13:34:19 +10:00
Dean Netherton
2b5a224a4f ch376-native: refactor: moved drive index tracking logic out of drivers into usb framework 2025-06-21 13:34:19 +10:00
Dean Netherton
c350d153da ch376-native: optimised calling convention for usb_init 2025-06-21 13:34:19 +10:00
Dean Netherton
347b7e6a06 ch376-native: refactor: extracted chnative_init to its own file 2025-06-21 13:34:19 +10:00
Dean Netherton
802c1b41ff ch376-native: refactored usb init/enumerating 2025-06-21 13:34:19 +10:00
Dean Netherton
7e8560f9a9 ch376-native: fixed issue with enumerating devices with interfaces containing no endpoints 2025-06-21 13:34:19 +10:00
Dean Netherton
580d7761e1 ch376-native: cleaned up formatting for ch376inc.h 2025-06-21 13:34:19 +10:00
Dean Netherton
149ab3ca8a ch376-native: bumped to version 3.5.1-rc.0+ch376native 2025-06-21 13:34:17 +10:00
Dean Netherton
b7234d339a ch376-native: fixed usb scsi/ufi issue with reading/writing more than 512 bytes in one invocation 2025-06-21 13:33:18 +10:00
Dean Netherton
9abba42df7 ch376-native: keyboard int handler optimisations 2025-06-21 13:33:18 +10:00
Dean Netherton
22c26dba36 ch376-native: UKY_STATE: usb extension returns a 'buffered' hid report (upto 8) 2025-06-21 13:33:18 +10:00
Dean Netherton
7e9c08993d ch376-native: UKY_STAT extended to also return current USB key report 2025-06-21 13:33:18 +10:00
Dean Netherton
3f6fc215e9 ch376-native: UKY_READ fixed issue with incorrect H value when no characters in buffer 2025-06-21 13:33:18 +10:00
Dean Netherton
62d5a7b825 ch376-native: leds default to off and on during activity 2025-06-21 13:33:18 +10:00
Dean Netherton
2b1d703c4e ch376-native: further reduce some of the hardcoded delay for i/o operations 2025-06-21 13:33:18 +10:00
Dean Netherton
b98c506baf ch376-native: reduce some of the hardcoded delay for i/o operations 2025-06-21 13:33:18 +10:00
Dean Netherton
60cf40f0b8 ez80: EZ80_MEM_MIN_WS adjusted from 0 to 1 2025-06-21 13:33:18 +10:00
Dean Netherton
9c96e7c7a2 ch376-native: fixed issue with TMSMODE_MSXUKY selected when no usb keyboard is present on boot
The TMS driver would always install a USB keyboard pooling interrupt, despite no keyboard present

This would load the CPU and prevent other I/O operations
2025-06-21 13:33:18 +10:00
Dean Netherton
ce0d04226e ch376-native: extended CHNATIVEFORCE option to wait upto approx 5 seconds for at least one connected device 2025-06-21 13:33:18 +10:00
Dean Netherton
eec2147826 ch376-native: applied z88dk version 20250224 2025-06-21 13:33:18 +10:00
Dean Netherton
93d7c7ed77 ch376-native: fixed and extend indicator led operation 2025-06-21 13:33:18 +10:00
Dean Netherton
1a44fbee0f ch376: implemented CTRL key combinations 2025-06-21 13:33:18 +10:00
Dean Netherton
9cbd8937d7 ch376-native: keyboard driver now support CAPS LOCK key 2025-06-21 13:33:18 +10:00
Dean Netherton
ca6979d97e ch376: increased rate of keyboard scanining and considers all keycodes state transmitted 2025-06-21 13:33:18 +10:00
Dean Netherton
72ec983c4f ch376: added build option CHNATIVEFORCE to always force detection of module on boot 2025-06-21 13:33:18 +10:00
Dean Netherton
f63c324764 ch376-native: remove --trace for mac-os 2025-06-21 13:33:18 +10:00
Dean Netherton
ea3ba6e0d4 ch376-native: remove transpiling of c code from mac-os gha build 2025-06-21 13:33:18 +10:00
Dean Netherton
bf2a45f83e ch376-native: updated github action build scripts to also attempt to transpile driver from c to assembly 2025-06-21 13:33:18 +10:00
Dean Netherton
3f8bc43596 ch376-native: enabled usb drivers for z80 config 2025-06-21 13:33:16 +10:00
Dean Netherton
e6143beb25 ch376-native: attempt to fix issue with slices not working - restored drive_index counter 2025-06-21 13:11:40 +10:00
Dean Netherton
3b0f00520e gitignore: added *.cat and some extract img files 2025-06-21 13:11:40 +10:00
Dean Netherton
db0afaedfa ch376-native/ez80: timing adjustments 2025-06-21 13:11:40 +10:00
Dean Netherton
a92bd780c8 ch376-native: removed some intermediate files that should not have beeen committed 2025-06-21 13:11:40 +10:00
Dean Netherton
04dbb0e4bb ch376-native: some cleanup of build process and an initial readme added 2025-06-21 13:11:40 +10:00
Dean Netherton
601ddee38b usb-keyboard: working (limited) 2025-06-21 13:11:38 +10:00
Dean Netherton
1e1554937c usb-keyboard: enumerated 2025-06-21 13:04:38 +10:00
Dean Netherton
b4421a0532 ch376-native: general fixes - mass storage and floppy devices over hub seem to be working 2025-06-21 13:04:38 +10:00
Dean Netherton
7c3eeaff27 ch376-native: fixes 2025-06-21 13:04:38 +10:00
Dean Netherton
ed47d2f8b6 ch376-native: native USB driver for the CH376 module 2025-06-21 13:04:36 +10:00
Dean Netherton
643e59e204 z80: Changes to configuration for setting memory & I/O timings
Removed ability from boot up (see ez80cpudrv.adm) to allow for setting of
external memory and io timing using eZ80's W/S config.  All timings
must now be specified in terms of eZ80's Bus Cycle setting.

This is to increase compatibility with various external RCBus/RC2014
modules.

Due to eZ80 firmware changes, the configuration was always setting
the I/O Bus Cycle to the maximum setting of 7 - typically most system
will work fine at a setting of 4 B/C

current ez80 firmware version: 0.5.0.234 2025-06-21
2025-06-21 12:49:51 +10:00
Wayne Warthen
5dd48da5c8 Add HI-TECH C Compiler Messages, Issue #572
Re-adding this file because I failed to associate the prior check-in with the related issue.
2025-06-19 09:55:12 -07:00
Wayne Warthen
134518ea52 Add HI-TECH C Compiler Messages and update docs
Per @PeterOGB, added a copy of the HI-TECH C Compiler Messages document.  The space-optimized version of the compiler from @Laci1953 omits these messages.
2025-06-19 09:49:17 -07:00
Wayne Warthen
a2b01b9681 Update Makefile 2025-06-16 20:31:44 -07:00
Wayne Warthen
bccd80882c BPBIOS Sources From Jörg Linder
Jörg Linder has disassembled and thoroughly commented a great deal of the BPBIOS binaries.   This was an incredible amount of work.  I have added all of these to the RomWBW build scripts and will ultimately integrate them more completely.
2025-06-16 20:19:07 -07:00
Wayne Warthen
eefb0d2df1 Update RomWBW Enhanced ZAS
Update ZAS in User Area 1 of the HITECH-C disk image based on the latest from Ladislau.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-06-08 11:49:15 -07:00
Wayne Warthen
edfbfe8eee Bump Version 2025-06-07 12:35:23 -07:00
Wayne Warthen
8510158aa0 Minor Pre Int Strategy Change
Use a global flag to indicate if interrupts have been enabled during the boot process.  Drivers that operate in the pre-interrupt phase can use this to manage interrupt disable bracketing.

This allows restoring the location of interrupt enable in the boot process to it's proper location.
2025-06-07 12:34:38 -07:00
Wayne Warthen
760ed38297 Minor Doc File Tweaks 2025-06-07 12:27:31 -07:00
Wayne Warthen
95e7c5ce3b Bump Version 2025-06-06 15:34:40 -07:00
Wayne Warthen
e92091c922 PCRTC Driver Follow-up
- Minor typos
2025-06-06 15:15:32 -07:00
Wayne Warthen
edf3cf93bb Merge pull request #570 from mabartibin/dev-pcrtc
Driver for PC style RTC, MC146818/DS1285/DS12885
2025-06-06 15:06:15 -07:00
Wayne Warthen
a110b24d76 HITECH-C Documentation Cleanup 2025-06-06 15:01:57 -07:00
Martin Giese
1813100142 Documentation additions for PC style clock 2025-06-06 22:36:51 +02:00
Martin Giese
e29fb43754 Code for MC146818/DS1285/DS12885 PC style CLOCK DRIVER 2025-06-06 22:27:09 +02:00
Wayne Warthen
d32fe11a19 Update Hi-Tech C Disk Image
Update Hi-Tech C to 3.09-19 release from Tony Nicholson.  See <https://github.com/agn453>.
2025-06-06 10:14:11 -07:00
Wayne Warthen
db577eddd9 Documentation Updates, Issue #567
- Fix Catalog document per Issue #567
- Update fonts.txt w/ latest font info
- Correct EOL on several documents
2025-06-06 08:48:57 -07:00
Wayne Warthen
603d29f4ba Merge pull request #569 from codesmythe/xosera_uart
Limit Xosera config to 2 UARTS; set $A0 base addr.
2025-06-06 08:40:40 -07:00
Rob Gowin
ba5af175ba Limit Xosera config to 2 UARTS; set $A0 base addr.
The consenus is that the best default address for Xosera
is $A0, so make that the default.

However, in that case we need to limit the number of UARTs
that are probed to two because the probe for a third UART
writes unlucky values to Xosera (at $A3) and causes it to
reconfigure itself and lock up the bus for a time.

Thanks to Wayne for his help in debugging this.
2025-06-06 11:32:15 -04:00
Wayne Warthen
a9c7be6744 Minor Doc Updates
- Clarified Memory Manager and MMU terminology.
2025-06-04 14:33:59 -07:00
Wayne Warthen
4ff7888bdc Fit RTC Detection, Issue #566
Corrected DSRTC and BQRTC drivers to properly restore the value of the NVRAM byte used for presence detection.

Thanks and credit to @MartinGieseCelonis for finding this.
2025-06-03 17:13:17 -07:00
Wayne Warthen
80e514e5d4 Improve Cowgol Catalog Documentation 2025-06-03 13:34:41 -07:00
Wayne Warthen
54b48da071 Update release.yml 2025-06-02 14:46:38 -07:00
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
Marshall G. Gates
c802bd2ce2 Merge branch 'master' into dev/BoatFest_Talk 2025-05-23 16:26:31 -04: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
6ad93577db Merge branch 'master' into dev/BoatFest_Talk 2025-05-20 23:15:36 -04:00
Marshall G. Gates
12e76b3434 Merge branch 'master' into feature/add_cobol_image 2025-05-20 23:15:05 -04:00
Marshall Gates
cb2f4e5773 Update build to create my demo images 2025-05-20 23:05:12 -04:00
Marshall Gates
e6a14dda4d Add Hello World example programs 2025-05-20 23:00:57 -04:00
Marshall Gates
8163c20342 Update readmes to have build commands 2025-05-20 22:58:30 -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
Wayne Warthen
a5314c992d Fix for SYSCOPY w/ CPM 3, Issue #529
- Corrected the size of CPMLDR.SYS to conform to the needs of  SYSCOPY and the RomWBW loader.
2025-04-10 15:44:06 -07:00
Wayne Warthen
683f31438f Regen Doc 2025-04-09 14:03:20 -07:00
Wayne Warthen
69e9eb0805 Merge pull request #526 from kiwisincebirth/map/z80asm-newer
Added Updated SLR Tools with newer or missing versions
2025-04-09 13:54:51 -07:00
Wayne Warthen
d18208ef6b Regen Doc 2025-04-09 13:46:11 -07:00
Wayne Warthen
9ec4b0aa4d Merge pull request #525 from codesmythe/typo
Fix a couple of typos.
2025-04-09 13:40:14 -07:00
Mark Pruden
10dcc4300e Added Updated SLR Tools with newer or missing versions 2025-04-09 19:31:25 +10:00
Rob Gowin
ce65f8dce0 Fix a couple of typos. 2025-04-07 21:25:58 -05:00
Wayne Warthen
ad4c4ac81b Merge pull request #524 from wwarthen/patch
Fix Baud Rate Reference in User Guide, Issue #523
2025-04-07 18:00:18 -07:00
Wayne Warthen
31dc8a72d4 Fix Baud Rate Reference in User Guide, Issue #523
Thanks and credit to @codesmythe.
2025-04-07 17:59:30 -07:00
Wayne Warthen
e4daa2d727 Merge pull request #522 from wwarthen/patch
Add Missing BCLOAD File
2025-04-06 13:46:23 -07:00
Wayne Warthen
a8d2017abc Add Missing BCLOAD File
Marshall Gates reported that the Microsoft BASIC Compiler disk image is missing the file called "BCLOAD".  Adding file back into disk image.
2025-04-06 13:43:15 -07:00
Wayne Warthen
f81e089d63 Finalize Version 3.5 2025-04-04 15:32:15 -07:00
Wayne Warthen
acc32dc819 Update Hardware Document 2025-04-04 14:59:51 -07:00
Wayne Warthen
ca29e429e7 Tweaks to System Guide 2025-04-04 09:28:46 -07:00
Wayne Warthen
39afeda279 Documentation Tweaks 2025-04-03 16:19:23 -07:00
Wayne Warthen
23c5f7b8c0 Merge pull request #519 from fraser125/fraser125-Front-Panel-Table
Update UserGuide.md - Front Panel Table
2025-04-03 15:26:52 -07:00
fraser
91c7349026 Update UserGuide.md - Front Panel Table
I thought a Table layout for the Front Panel switches would be a bit easier to follow.
2025-04-03 14:50:43 -07:00
Wayne Warthen
80995f5264 Update TE.COM
@Laci1953 updated TE under RomWBW to support up to 512K of RAM buffers.
2025-04-03 13:52:56 -07:00
Wayne Warthen
56c9edb547 Updates to TE and COWFE
- Minor updates to TE.COM and COWFE.COM provided by @Laci1953.
- Fixed typo in TE ReadMe identified by @stickbreaker.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-04-02 11:20:00 -07:00
Wayne Warthen
af21691d4e Add TE Editor
Added latest RomWBW version of TE Editor from @Laci1953.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-04-01 12:07:51 -07:00
Wayne Warthen
3a228e3c1f Merge pull request #517 from kiwisincebirth/map/doc-hdd
Improvements to User Guide by improving readability
2025-03-31 17:45:12 -07:00
Mark Pruden
d299a9009f Corrected unintended deleteion 2025-04-01 11:42:47 +11:00
Mark Pruden
667aeeb24d Improvements to User Guide by simplifying content 2025-04-01 11:36:15 +11:00
Wayne Warthen
067560ae74 More User Guide Improvements from Issue #516
Thanks and credit to @kiwisincebirth for the suggestions.
2025-03-31 16:50:29 -07:00
Wayne Warthen
ef0656f162 Improve User Guide per Issue #516
- Small changes to Combo Hard Disk Images section as suggested by @kiwisincebirth.
2025-03-31 13:50:50 -07:00
Wayne Warthen
a8a5a85c5c Update Cowgol Disk Image, Issue #506
Updated Cowgol disk image with the latest distribution from Ladislau Szilagyi.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2025-03-29 14:06:34 -07:00
Wayne Warthen
4dcd00089e Bump Version, Release Candidate 1 2025-03-28 19:44:46 -07:00
Wayne Warthen
f4caf244af Update Makefile
- Fix filename case
2025-03-28 17:32:40 -07:00
Wayne Warthen
a91deeb347 Add Peter Onion's ZDE ANSI Keyboard Support
- Added new ANSI keyboard support from Peter Onion.
- ZDE is now built as part of the RomWBW build itself.
- Did not yet include support for modified ZDE escape character.
- See <https://groups.google.com/g/rc2014-z80/c/hAZen3pZb7o>

Co-Authored-By: PeterOGB <7755057+peterogb@users.noreply.github.com>
2025-03-28 17:25:55 -07:00
Wayne Warthen
3804c69428 Minor Typos & Regen Doc 2025-03-26 12:51:47 -07:00
Wayne Warthen
1b45d32af2 Merge pull request #513 from kiwisincebirth/map/disk-doc
Revised Section 6.2.4 of UserGuide
2025-03-26 12:38:48 -07:00
Wayne Warthen
83e3b8f24f Resolve Merge Conflict 2025-03-26 11:55:51 -07:00
Wayne Warthen
29f6fea4aa Resolve Merge Conflict 2025-03-26 11:51:55 -07:00
Wayne Warthen
bf61350280 Regen Docs 2025-03-26 11:41:26 -07:00
Wayne Warthen
ecf2cdfba2 Fix Device Attribute Definition in System Guide, Issue #515 2025-03-26 11:37:41 -07:00
Wayne Warthen
9fc2c6129b Fix CIO Table in System Guide, Issue #514 2025-03-26 11:23:23 -07:00
Mark Pruden
8f80f2f9cd Revised Section 6.2.4 of UserGuide See Issue #508 2025-03-26 13:39:37 +11:00
Wayne Warthen
81d81952d3 Regen Docs 2025-03-24 11:30:12 -07:00
Wayne Warthen
ed532cb51b Fix Type in INTINF API Description, Issue #512 2025-03-24 11:20:27 -07:00
Wayne Warthen
a46e05258c Clarify .COM File Location and Naming. Issue #511 2025-03-24 11:17:30 -07:00
Wayne Warthen
a35dbefeda Fix System Guide Typo, Issue #510 2025-03-24 11:12:32 -07:00
Wayne Warthen
74f4149034 Merge pull request #509 from kiwisincebirth/map/drivereset
COPYSL : Reset CP/M Drives after Completion.
2025-03-22 18:40:19 -07:00
Mark Pruden
34cc40f459 Added Code to Reset All Drives after successful completion. 2025-03-22 22:10:32 +11:00
Wayne Warthen
6f5aa06fb3 Improve cpmtools Makefile, Issue #505
See issue #505.  This change should improve build compatibility if there are multiple variants of ncurses installed.

Thanks and credit to @mabartibin.

Co-Authored-By: mabartibin <16798058+mabartibin@users.noreply.github.com>
2025-03-21 18:50:49 -07:00
Wayne Warthen
b28e308bfd Include COPYSL in Build Process 2025-03-21 17:01:14 -07:00
Wayne Warthen
3d23cea071 Merge pull request #507 from kiwisincebirth/map/copysl
Source Code (Inactive) for CopySL Utility
2025-03-21 16:19:42 -07:00
Mark Pruden
f7b8efd964 Added source Code for copySL, build scripts not updated 2025-02-27 10:21:29 +11:00
Wayne Warthen
3c7e3d7586 Issue v3.5 Release Candidate 2025-02-24 12:30:05 -08:00
Wayne Warthen
f359f5fb61 Update SIMH Emulator 2025-02-22 16:19:08 -08:00
Wayne Warthen
50deb280b5 Update Build.cmd
- Remove debugging
2025-02-22 15:22:30 -08:00
Wayne Warthen
7654a6b2ed Minor Doc Sync 2025-02-22 15:10:32 -08:00
Wayne Warthen
dd9e7d6532 Restore ZEX to User Area 0 for BP Disk Image
ZEX.COM is required on user area 0 of BP disk images because it is used for startup processing prior to establishing a path to user area 15.
2025-02-19 15:28:52 -08:00
Wayne Warthen
37ebfefea3 Merge branch 'master' of https://github.com/wwarthen/RomWBW 2025-02-19 14:20:30 -08:00
Wayne Warthen
6d8ecbb49a Fix XM and ZMD Under UNA
Looks like the UNA driver for both XM and ZMD has always been borked.  This fixes it and tested working.
2025-02-19 14:20:26 -08:00
Wayne Warthen
dfb005ae9e Merge pull request #503 from feilipu/patch-1
HBIOS UART - manage /DTR along with /RTS
2025-02-18 16:24:24 -08:00
Phillip Stevens
5806522402 UART manage /DTR along with /RTS
The RC2014 Single and Dual UART Modules do not have the /RTS line connected. The /DTR line is used to signal flow control.

This PR simply adds active management of the /DTR.
The current UART initialisation process already does configuration, but not active management.
2025-02-19 10:09:07 +11:00
Wayne Warthen
930bcce7da Doc Improvements
- Added missing applications to Applications document
- Added a debug statement to Build.cmd in BPBIOS
2025-02-18 10:44:48 -08:00
Wayne Warthen
ad7d7638d3 Update BBC BASIC
- Updated BBC BASIC (Z80) source from R.T.Russell's repository.
2025-02-17 17:21:44 -08:00
Wayne Warthen
da05245b4a Improved STRICTPART Implementation
- Improved implementation of STRICTPART conditional based on comments from @kiwisincebirth.  See Issue #490.
2025-02-13 16:06:43 -08:00
Wayne Warthen
9469aaf333 Delete Unblock.cmd 2025-02-12 20:07:52 -08:00
Wayne Warthen
363218b0eb Create Unblock.cmd 2025-02-12 19:04:38 -08:00
Wayne Warthen
1de5458ad7 Regen Doc 2025-02-12 16:21:08 -08:00
Wayne Warthen
3c0e4a195e Merge pull request #501 from kiwisincebirth/map/releaseNotes
Documentation improvements
2025-02-12 16:09:45 -08:00
Mark Pruden
30866ccbae Some other errors and ommission in Documentation. 2025-02-13 11:03:51 +11:00
Mark Pruden
858d680371 Improved Release notes, to provide better more descriptive information 2025-02-13 11:03:19 +11:00
Wayne Warthen
252e9077e6 Bump Version 2025-02-12 15:47:45 -08:00
Wayne Warthen
6c06413dfe Add STRICTPART Config Setting
New STRICTPART setting prevents access to slices that overlap with foreign (non-CP/M) partitions.
2025-02-12 15:39:47 -08:00
Wayne Warthen
a8ee0ca19b Expanded Release Notes
See discussion #499
2025-02-12 12:53:30 -08:00
Wayne Warthen
5a48cc5b42 Update vdu.asm 2025-02-10 19:04:48 -08:00
Wayne Warthen
ae9b9f9c14 Release Testing WIP 2025-02-08 17:35:51 -08:00
Wayne Warthen
874f1b999e Escape '$' in STARTZPM and STARTZCM
The STARTZPM and STARTZCM startup alias files include commands to set the ZCPR path with "$$" as one of the parameters.  The '$' characters were not escaped.

Thanks and credit to Joao Miguel Duraes for identifying this issue and Wayne Hortensius for the solution.
2025-02-07 17:20:07 -08:00
Wayne Warthen
64611e1df4 Create cfg_RCEZ80.asm
Restore accidentally removed copy of cfg_RCEZ80.asm
2025-02-06 17:18:29 -08:00
Wayne Warthen
ebe1504d75 UNARCU Fix & More Release Work
- UNARC updated to UNARCU11 which fixes an edge case where the user number was being incorrectly changed.  See #496.  Thanks and credit to Lars Nelson for this.
2025-02-06 17:02:06 -08:00
Wayne Warthen
6dc4be24e1 Release Testing WIP
- Minor updates to Zeta and Zeta 2 configs.
2025-02-02 17:18:05 -08:00
Wayne Warthen
257fa5407b Release Testing Updates
Minor changes to config files.
2025-02-02 16:03:41 -08:00
Wayne Warthen
b8fbe0094c Release Testing WIP
- Config file updates
- Fix VRC initialization
2025-02-01 17:57:16 -08:00
Wayne Warthen
9c815a6b4c RCZ80 skz Config Tweaks
The watchdog I/O port for RCZ80_skz_std was misconfigured.
2025-01-30 19:54:18 -08:00
Wayne Warthen
2d854510e3 Accommodate uz80as #define Comments
uz80as does not handle comments on #define lines very well.  This is a minor change to accommodate it.
2025-01-30 13:06:15 -08:00
Wayne Warthen
374c0675f1 Config and Release Notes Updates
- More config file cleanup
- Per Issue #498, added VDAEMU_SERKBD default change in Release Notes
2025-01-30 10:42:15 -08:00
Wayne Warthen
766a65bed0 More Config Tweaks 2025-01-27 19:22:31 -08:00
Wayne Warthen
7ecd0aa574 Merge pull request #497 from kiwisincebirth/map/doc3
Forth documentation and Hide NVR Config app
2025-01-27 10:41:15 -08:00
Mark Pruden
c5280b3ebd Improvement to Forth documentation,
and hide NVR Configure app from app list menu
as it is in the main help menu
2025-01-27 13:11:27 +11:00
Wayne Warthen
8756937946 Minor Release Cleanups 2025-01-25 13:26:07 -08:00
Wayne Warthen
de94085558 Minor Config File Cleanups 2025-01-24 11:24:55 -08:00
Wayne Warthen
7d1cbe0f70 Use Introduction for ReadMe
See Discussion Documentation 3.5 Improvement #493
2025-01-24 11:12:33 -08:00
Wayne Warthen
8e189b4a4a Merge pull request #495 from kiwisincebirth/map/doc2
Some very minor tweaks to documentation
2025-01-24 10:51:26 -08:00
Mark Pruden
c1866d7091 added the missing "Installaltion..." section from Readme -> Introduction 2025-01-24 13:01:48 +11:00
Mark Pruden
eca0370c65 Minor improvements 2025-01-24 12:33:47 +11:00
Mark Pruden
ee7c28c119 Minor improvements 2025-01-24 11:56:48 +11:00
Wayne Warthen
1ae6274e45 Documentation Tweaks 2025-01-23 11:29:37 -08:00
Wayne Warthen
0adef71f6a Merge pull request #494 from kiwisincebirth/map/doc-intro-hw
Documentation New Introduction and Hardware documents
2025-01-23 10:32:54 -08:00
Mark Pruden
d4195b2908 Documentation New Introduction and Hardware documents
with content moved from User Guide
2025-01-23 14:38:00 +11:00
Wayne Warthen
33603ed826 Merge pull request #492 from kiwisincebirth/map/changelog
minor doc improve
2025-01-19 07:19:58 -08:00
Mark Pruden
1279daa2fc minor doc improve 2025-01-19 23:00:14 +11:00
Wayne Warthen
ab4f43c6bb Improve DEFSERCFG Config
- Move DEFSERCFG from an equate to a #DEFINE which allows properly overriding it globally.
2025-01-18 16:41:31 -08:00
Wayne Warthen
e4bbeece09 Update release.yml
- Support beta releases
2025-01-17 11:47:23 -08:00
Wayne Warthen
997c3fbcde Move v3.5 to Beta 2025-01-17 10:44:19 -08:00
Wayne Warthen
14c8eddcbd Merge pull request #491 from kiwisincebirth/map/rom-bank-layout
Rom Bank Layout improvements
2025-01-17 09:23:04 -08:00
Mark Pruden
81d99a76fc Put back the usrrom size check. 2025-01-17 11:58:20 +11:00
Mark Pruden
4555bdec11 Rom Bank Layout improvements
Rom Bank 1 has no size constraint, can increase romldr (oversize) without build issue, bank truncation
Rom bank 2 usrrom (last app) has size constraint check, shouldnt be function of app
Rom bank 2 usr rom pads to end of 32k in its Size, unnecessary as handled by "srec_cat -crop"

So
* move out the bank size protections (from user rom) into layout.inc
* ensre bank 1 has same protection as bank2.
* make user rom a realistic size ($200), padding handled by crc check
* also good to .ECHO overall sizes of banks, improve logging.
2025-01-16 14:32:40 +11:00
Wayne Warthen
9103304399 K80W & EaZy80-512 Config Tweaks 2025-01-12 16:52:09 -08:00
Wayne Warthen
1ab10410a8 EZ512 & K80W Tweaks
- EZ512 memory manager was missing a text label at boot.
- K80W now enables VRC
2025-01-10 17:12:24 -08:00
Wayne Warthen
8a16b851ad Update cvdu.asm
- Improves compatibility with high speed CPUs.
2025-01-07 18:57:15 -08:00
Wayne Warthen
a27f2479af EaZy80-512 & K80W Fixes
Minor fixes from Bill Shen.
2025-01-07 16:11:00 -08:00
Wayne Warthen
f50ae14f9e Video Driver Fixes
Thanks and credit to Phillip Summers for finding these and suggesting solutions.
- VGA driver initialization fixed.
- CVDU probe fixed to not rely on ready bit of CVDU
2025-01-05 19:55:37 -08:00
Wayne Warthen
b02aecb45d Clarify CIO Parity Settings, Issue #488
- Updated System Guide to clarify the function of the parity settings per Issue #488
2025-01-05 16:03:22 -08:00
Wayne Warthen
4e716c6b74 Update Makefile.new 2024-12-31 16:47:14 -08:00
Wayne Warthen
63460a982b Missing Config & Add Doc
- Add missing config file for K80W
- Add K80W to documentation
2024-12-31 12:03:57 -08:00
Wayne Warthen
c6d5d41933 Add K80W Hardware Support 2024-12-31 11:50:31 -08:00
Wayne Warthen
5544275e0d Console Takeover Improvements, Issue #485
Thanks and credit to @skullandbones for pointing out multiple deficiencies in the console takeover algorithm.  In this commit:
- All char units are flushed when a new RomLdr prompt is emitted.
- Intervening non-space characters will now prevent console takeover.  Console takeover requires two consecutive space characters on the same character unit with no intervening non-space characters on the same unit or any intervening characters on an alternate unit.
2024-12-23 13:56:09 -08:00
Wayne Warthen
f976ede2d1 Typo in ASSIGN
A very minor typo in assign.asm caused the TASM under Windows to fail even though it did not cause a problem for uz80as under Linux/MacOS.
2024-12-22 13:52:04 -08:00
Wayne Warthen
751cc62a81 Deprecate Monsputer, Issue #483
The Monsputer was already omitted from the standard builds.  It had almost no impact on the core code, so I have annotated some references to Monsputer as deprecated.
2024-12-22 13:47:06 -08:00
Wayne Warthen
77b98260e9 Merge pull request #484 from kiwisincebirth/map/assign-improve
Consider heap space remaining before each ASSIGN /B= assignment
2024-12-22 13:29:45 -08:00
Mark Pruden
986acd481b Consider heap space remaining before each ASSIGN /B= assigment 2024-12-22 19:37:54 +11:00
Wayne Warthen
f8f46c630a Merge pull request #482 from kiwisincebirth/map/cbios-size
CBIOS Size reduce by reducing resident utils
2024-12-21 09:12:00 -08:00
Mark Pruden
4df6f00ed9 CBIOS Size reduce by reducing resident utils 2024-12-21 23:17:22 +11:00
Wayne Warthen
6647b09cf7 Fixes to EaZy80-512 Build 2024-12-20 15:57:36 -08:00
Wayne Warthen
f36a90afae Add EaZy80-512 2024-12-20 15:17:58 -08:00
Wayne Warthen
3c3ae4c6ab Merge pull request #480 from kiwisincebirth/map/disk-labels
Added Disk Labels (Loader.ASM)
2024-12-20 10:54:35 -08:00
Wayne Warthen
4110c67db4 Merge pull request #481 from kiwisincebirth/map/doc-assign
Documentation for ASSIGN.COM
2024-12-20 10:46:19 -08:00
Mark Pruden
4ac6a7d706 Documentation for ASSIGN.COM 2024-12-20 14:59:12 +11:00
Mark Pruden
1b7ef20ad1 Added Disk Labels (Loader.ASM), minor code improvement 2024-12-20 12:46:25 +11:00
Wayne Warthen
913a9caa87 CPUSPD Doc Update
- Clarifies the speed multiplier capabilities of the Z180 chip variants.
2024-12-19 10:18:16 -08:00
Wayne Warthen
58444fb213 Minor Improvement to TUNE Doc
- Improved Application documentation for TUNE related to recent addition of -MSX and -RC options.
2024-12-18 14:50:33 -08:00
Wayne Warthen
7917f0a5ad Merge pull request #479 from kiwisincebirth/map/change-attributes
Changed the Attribute for MD RF devices
2024-12-18 14:30:41 -08:00
Mark Pruden
8d8868e5d5 Changed the Attribute for MD RF devices reordering/fliping (RF<->Flash) so bit masks are easier 2024-12-18 18:12:38 +11:00
Wayne Warthen
a6b3b980f2 Merge pull request #476 from kiwisincebirth/map/assign1
added new /b=options to assign.com
2024-12-17 15:28:55 -08:00
Mark Pruden
d5c331076c added new /b=options to assign.com - Not complete at this time. 2024-12-17 13:13:12 +11:00
Wayne Warthen
bb4a64c35d Allow Forcing Detection of AY/YM PSG in HBIOS
See Issue #468
2024-12-16 11:29:49 -08:00
Wayne Warthen
757f0b08ff Minor Follow-up on KBD Interrupt Enhancement
- Add call to KBD_PREINIT to the CVDU driver.
2024-12-16 10:47:53 -08:00
Wayne Warthen
5bb168eb6e Merge pull request #475 from b1ackmai1er/master
Roll out kbd preinit into cga, gdc and vga driver
2024-12-16 10:37:27 -08:00
b1ackmai1er
cee3f8af78 Merge pull request #74 from wwarthen/master
Resync
2024-12-16 19:53:39 +08:00
Wayne Warthen
70cc884014 Fix .gitignore 2024-12-15 15:01:28 -08:00
Wayne Warthen
e4475b5e99 NetBoot Enhancements, Issue #463
- Correct typo in netboot.mod
- Added support for Duodyne NetBoot

Co-Authored-By: Douglas Miller <16920069+durgadas311@users.noreply.github.com>
2024-12-15 14:49:24 -08:00
b1ackmai1er
2e216d6bf5 Add cga graphic set picture 2024-12-14 20:10:13 +08:00
b1ackmai1er
e428e7ff8e rename 2024-12-14 18:24:32 +08:00
b1ackmai1er
083715e097 Add cga graphic set picture 2024-12-14 18:01:18 +08:00
b1ackmai1er
b0bb87ba0a typo 2024-12-14 17:19:14 +08:00
b1ackmai1er
83cd133c66 kbd preinit updates 2024-12-14 13:59:11 +08:00
b1ackmai1er
327a21ee10 Update hbios 2024-12-14 13:20:19 +08:00
b1ackmai1er
0d645cec30 kbd correction. vga kbd preinit 2024-12-14 13:19:38 +08:00
b1ackmai1er
82d28e143b kbd preinit for vga 2024-12-14 13:17:32 +08:00
b1ackmai1er
c0b48a007c kbd optimizations 2024-12-14 13:11:49 +08:00
b1ackmai1er
60b143fe01 Merge pull request #73 from wwarthen/master
Resync
2024-12-14 12:41:42 +08:00
Wayne Warthen
be618e07a6 Merge pull request #473 from kiwisincebirth/map/doc-userguide-fix
Minor doc upgrade
2024-12-13 18:32:33 -08:00
Mark Pruden
893da14d50 Minor doc upgrade 2024-12-14 12:16:25 +11:00
b1ackmai1er
83ef709a71 Merge pull request #72 from wwarthen/master
Resync
2024-12-14 01:21:10 +08:00
Wayne Warthen
5f54db2d60 Merge pull request #472 from kiwisincebirth/map/z80asm
Z80ASM Disk Image Improvements
2024-12-13 09:00:13 -08:00
Wayne Warthen
33e6fdadd7 Merge pull request #471 from kiwisincebirth/map/move-zpcom
In Disk Images Moved ZP.COM from ZPM to Common/Z3
2024-12-13 08:52:03 -08:00
Mark Pruden
fe947248bd Z80ASM Disk Image Improvements 2024-12-13 16:11:01 +11:00
Mark Pruden
b7c9a3b821 In Disk Images Moved ZP.COM from ZPM to Common/Z3 2024-12-13 12:50:20 +11:00
b1ackmai1er
fa8df65b50 Merge pull request #71 from wwarthen/master
Resync
2024-12-13 05:33:37 +08:00
Wayne Warthen
26a87a16a8 KBD Driver Pre Init
- Updated KBD driver to use PREINIT to disable interrupts.
2024-12-12 13:26:10 -08:00
Wayne Warthen
66bc219b32 Merge pull request #467 from b1ackmai1er/master
PS2 keyboard spurious interrupts
2024-12-12 11:59:35 -08:00
Wayne Warthen
0ad7431528 Add Options to Force Standard Ports in TUNE App
The Why Em-ulator cannot be detected by the normal probing mechanism in TUNE.  Added options to force the standard port configurations (MSX or RC).  See #468
2024-12-12 11:48:22 -08:00
b1ackmai1er
e433eb4962 Refactor ps2 keyboard driver 2024-12-11 21:38:26 +08:00
b1ackmai1er
b5b9098429 PS2 keyboard spurious interrupts
Resolved keyboard interrupt errors when a key is pressed during reboot. Turn off keyboard controller interrupt enable before cold boot process starts. I'm wondering if  duodyne interrupt generator is immune to DI :)?
2024-12-09 21:18:03 +08:00
Wayne Warthen
49ff4e4bc0 Merge pull request #464 from b1ackmai1er/master
Documentation updates
2024-12-08 13:51:45 -08:00
Wayne Warthen
59a7b6c42d Merge branch 'master' into master 2024-12-08 13:46:24 -08:00
Wayne Warthen
f9ed5651e6 KBD Interrupt Processing Cleanup
- I finally realized there was a much simpler way to setup the instance data pointer (IY) for the interrupt handler.  This implements the change and reduces the complexity of the code.
- Related to PR #460
2024-12-08 13:37:09 -08:00
Wayne Warthen
efb9ac21f0 NVRAM Doc Improvements, Issue #451 2024-12-08 11:46:01 -08:00
Wayne Warthen
a8f2aa71cc Baud Rate Mask Fix, Issue #465
Thanks and credit to Mark Pruden for finding this.
2024-12-08 07:28:23 -08:00
b1ackmai1er
043600595f Update ps2iface.inc 2024-12-08 21:19:18 +08:00
b1ackmai1er
c106b75261 Refactor ps2iface 2024-12-08 21:12:47 +08:00
b1ackmai1er
55336ac010 Typo 2024-12-08 17:30:01 +08:00
b1ackmai1er
778231dc80 Doc updates for front panel diagnostics 2024-12-08 16:18:45 +08:00
b1ackmai1er
61d9555dc0 Document updates 2024-12-08 15:26:10 +08:00
b1ackmai1er
4b963c3ab4 Merge pull request #69 from wwarthen/master
Resync
2024-12-08 10:50:30 +08:00
Wayne Warthen
2788fa4fdf Bump Version Numbers 2024-12-07 16:16:26 -08:00
Wayne Warthen
1468cecfad Update M80 from v3.43 to v3.44
- This addresses the issue with M80 from Issue #462.
- All of the other binaries from the newer distribution of Microsoft Basic Compiler match the binaries already in the disk image.
2024-12-07 16:02:11 -08:00
Wayne Warthen
8f75441317 Add NVRAM Configure to Main RomLdr Help
See Issue #451
2024-12-07 15:44:36 -08:00
Wayne Warthen
007e8a372a Final Tweaks to KBD Interrupt Support
Related to PR #460
2024-12-07 15:12:19 -08:00
Wayne Warthen
7606abb8f3 Follow-up on KBD Interrupt Support
Related to PR #460
2024-12-07 13:48:43 -08:00
Wayne Warthen
e3192bfbe6 Merge pull request #460 from b1ackmai1er/master
Master
2024-12-07 13:06:34 -08:00
b1ackmai1er
9d7adbec63 Spelling 2024-12-07 19:22:06 +08:00
b1ackmai1er
2d1811dcb4 Typos 2024-12-07 19:11:48 +08:00
b1ackmai1er
cfa86a9f2a Spurious interrupt fix. 2024-12-07 11:28:24 +08:00
b1ackmai1er
7a663e2a3c Use IY to retrieve status and data port values from idat tables. 2024-12-06 22:32:24 +08:00
b1ackmai1er
1a73a9614b Initialize interrupt vector after kbd controller detected 2024-12-06 19:31:52 +08:00
b1ackmai1er
660bb20bba Merge pull request #68 from wwarthen/master
Resync
2024-12-06 19:07:17 +08:00
Wayne Warthen
f03dcf7193 Clean Up NVRAM Switch Terminology
- Essentially, switch from the term "default boot" to the term "boot options".

See Issue #451
2024-12-05 19:01:03 -08:00
b1ackmai1er
64dbf4ff35 EZZ80_IO fixes 2024-12-06 05:39:57 +08:00
Wayne Warthen
edd0e58031 Help Text Update in sysconf, See #451
- Per Issue #451, minor correction to help text in sysconf.asm.

Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-12-05 11:12:22 -08:00
Wayne Warthen
887311827a RomLdr Tweaks
- Related to #451
2024-12-05 10:56:39 -08:00
b1ackmai1er
ce98947d07 Cleanup 2024-12-05 20:50:17 +08:00
b1ackmai1er
5d92341189 PS2 Interrupt driven keyboard for Duo
For keyboard interface on I/O Multi board. Default is disabled. Requires interrupt #2 jumper set on I/O Multiboard, which is pin 11-12 in P5. Has limitations around port settings. Do not have a video card on my Duo so have been forcing a video driver to load and testing with PIP CON:=UR2: . Let me know what you think.
2024-12-05 20:41:03 +08:00
b1ackmai1er
2a501566d7 Merge branch 'wwarthen:master' into master 2024-12-04 17:55:34 +08:00
Wayne Warthen
56a1e86788 Bump Version 2024-12-03 15:16:55 -08:00
Wayne Warthen
9c51d56c6a Refactor RomLdr
During testing of the NVRAM Switch changes (#451), I found some pre-existing stuff I didn't like, so I have tried to clean things up.

- BOOT_DEFAULT has been replaced by AUTO_CMD
- There is no longer a "default" boot loader command when pressing <enter>.
2024-12-03 15:13:57 -08:00
b1ackmai1er
736e4e276c Merge pull request #67 from wwarthen/master
Resync
2024-12-03 20:44:05 +08:00
Wayne Warthen
14486c0276 AutoBoot Tweak
- Remove "default" boot concept.
2024-12-02 16:22:47 -08:00
Wayne Warthen
6edb7bb0c7 Regen PDF Doc 2024-12-01 15:33:58 -08:00
Wayne Warthen
dbde08cc74 Merge pull request #459 from b1ackmai1er/master
Reimplementation of boot recovery for Duodyne which appears to have been lost
2024-12-01 15:27:26 -08:00
Wayne Warthen
f61d96bf93 Merge branch 'master' into master 2024-12-01 15:26:39 -08:00
Wayne Warthen
b032694e01 Enhance Writing Hard Disk Slices (Discussion #457)
Per discussion #457 with Hubert Hirsch, I have attempted to enhance the Writing Hard Disk Slices section of the User Guide.
2024-12-01 14:32:51 -08:00
Wayne Warthen
6c96afcb5a NVRAM Follow-up
- Minor documentation enhancements
- Add "Autoboot in nn Seconds..." message to RomLdr
2024-12-01 13:47:20 -08:00
Wayne Warthen
73a7338140 Merge pull request #455 from kiwisincebirth/map/switches2
Map/switches2
2024-12-01 13:27:22 -08:00
b1ackmai1er
925b2870eb revert bad push 2024-12-01 22:00:45 +08:00
b1ackmai1er
65413e50d1 Fix initialization table setup for duo recovery 2024-12-01 21:19:33 +08:00
b1ackmai1er
a0ae357d9b Pretty Platfrom Boot Banner
Defaults to off due to HBIOS space considerations.
Add BOOT_PRETTY .SET TRUE to custom configuration to enable.
2024-12-01 13:26:01 +08:00
b1ackmai1er
e6b2cf7f55 Typos 2024-12-01 10:27:03 +08:00
b1ackmai1er
b0bafb70e4 Typo 2024-12-01 10:07:04 +08:00
b1ackmai1er
2fccb9dac7 MBC recovery mode default, document corrections 2024-12-01 09:12:54 +08:00
b1ackmai1er
7f07af1b62 Reimplement Duodyne boot recovery
Add feature description in documentation.
2024-11-30 23:27:02 +08:00
b1ackmai1er
02895a7d84 Merge pull request #66 from wwarthen/master
Resync
2024-11-30 15:00:57 +08:00
Mark Pruden
9713ca445c Documenation changes for the NVRAM changes 2024-11-29 09:06:51 +11:00
Mark Pruden
f6ef90fe14 Build changes as discussed with WW and documented in Issue 451 2024-11-15 22:10:04 +11:00
Mark Pruden
7a87dd6805 RomLoader changes to implement NVRAM config, and relatd changes to HBIOS/SysConfig 2024-11-15 18:49:46 +11:00
Wayne Warthen
5e0f9b3e89 Bump Version 2024-11-13 11:14:33 -08:00
Wayne Warthen
c60d46d773 Enable SD by Default in RCZ80_std Config
- An additional SD Module has been developed by Stephen Cousins.  Since this module will be distributed as a kit, I think it makes sense to enable support by default.  It will do nothing on systems without an SD Module.
2024-11-13 10:47:54 -08:00
Wayne Warthen
72527366cb Follow up to Initial NVRAM Changes
See notes in Issue #451
2024-11-08 16:41:30 -08:00
Wayne Warthen
de426b9833 Merge pull request #453 from kiwisincebirth/map/switches
Initial NVRAM Changes,
2024-11-08 15:04:26 -08:00
Wayne Warthen
c7923bbcff Miscellaneous Disk Image Cleanup
- Per Mark Pruden, corrected NZCOM user area specification for CP/M 2.2 files.
- Added some DRI files to CP/M 3 that are documented in the CP/M 3 documentation (LIB, LINK, MAC, RMAC, XREF).  They are duplicated in CP/M 2.2 image, so this should be reviewed at some point.
- Added XREF to CP/M 2 disk image for consistency with CP/M 3.
- Updated Catalog.md per Mark Pruden to eliminate obsolete column from table.
2024-11-08 09:37:21 -08:00
Mark Pruden
29b2bec1e7 Initial NVRAM Changes, for HBIOS including public API, sysconfig app, build changes 2024-11-08 22:24:01 +11:00
Wayne Warthen
e97c0d7288 Dump ROM Disk Image Directories
- Print a catalog of the ROM disk images during the build process to make it easier too verify and determine how full they are.
2024-11-07 18:47:06 -08:00
Wayne Warthen
68d88be975 Merge branch 'master' of https://github.com/wwarthen/RomWBW 2024-11-02 12:56:55 -07:00
Wayne Warthen
cecb72f20d Update Makefile
Print build execution time
2024-11-02 12:56:51 -07:00
Wayne Warthen
d7225f40cd Update commit.yml
Undo execution timing
2024-11-02 12:23:17 -07:00
Wayne Warthen
99bf1799a6 Update commit.yml
Add build execution time measurement.
2024-11-02 12:02:57 -07:00
Wayne Warthen
3470b9a656 Fix WRERR Routine in XModem per HubertH
- WRERR was putting the CAN character in register C to send.  However, it needs to be in register A.  Fixed here.  Credit and thanks to HubertH for finding this and providing the fix.
2024-11-02 11:26:37 -07:00
Wayne Warthen
803d1b2d4a Update Makefile.inc
- Missed file in prior commit.
2024-10-27 17:35:23 -07:00
Wayne Warthen
a410e81689 Miscellaneous
- Added "Character Device Mapping" sub-section to each of the Operating System sections of the User Guide.  This attempts to clarify how character devices will appear within the different operating system environments.
- Generate a disk image "catalog" file for each disk image generated during build.  This simply helps confirm what files wound up on each disk image and the space used/free.
- Make the CP/M 2.2 files added to NZCOM and ZSDOS consistent.
2024-10-27 17:07:42 -07:00
Wayne Warthen
8b299428b3 Merge branch 'master' of https://github.com/wwarthen/RomWBW 2024-10-27 13:17:42 -07:00
Wayne Warthen
76567d1e53 Disk Image Processing Tweaks
- Restore copying PIP application to ZSDOS and NZCOM disks.
- The floppy version of some supplemental disks were not being generated due to a typo.
- The ReadMe.txt file for some supplemental disks was not being added to the disk.
2024-10-27 13:17:39 -07:00
Wayne Warthen
0683b0f483 Merge pull request #450 from kiwisincebirth/map/readme
Updated attributions
2024-10-27 11:08:55 -07:00
Mark Pruden
b802915067 Updated attributions 2024-10-27 17:52:11 +11:00
Wayne Warthen
497fa3cdf3 Fix File Sort Order
- The file sort order being forced in the disk image generation process was causing a problem with achieving binary exact build results.  Not sure why it was the way it was, but corrected now.
2024-10-26 16:53:47 -07:00
Wayne Warthen
5ddde9cee2 Remove Obsolete References to UTILS 2024-10-26 16:04:10 -07:00
Wayne Warthen
e946116cc8 Merge pull request #449 from kiwisincebirth/map/z3plus
Z3PLUS Distro - Initial Addition of the Z3PLUS Distro
2024-10-26 15:10:35 -07:00
Mark Pruden
e7fb74b73f Minor correction to place help and Doc files consistently in U10 2024-10-25 23:12:38 +11:00
Mark Pruden
683121ace2 Reconsidered the pubic naming NZ3PLUS, chnaged section headings. 2024-10-25 19:02:10 +11:00
Mark Pruden
a3a3b20ded Z3PLUS Distro - Inital Additon of the Distro Image 2024-10-25 12:15:57 +11:00
Wayne Warthen
ba25ff879a Move COPY Application to Common
- COPY application was duplicated in multiple disk images.  Moved to a single copy in Common/Z.
2024-10-23 19:39:59 -07:00
Wayne Warthen
93f1964052 Fix BPBIOS File Duplicates 2024-10-23 15:44:53 -07:00
Wayne Warthen
33df7fab30 Regen Documentation 2024-10-23 15:06:26 -07:00
Wayne Warthen
65fa595602 Disk Image Organization Updates (Issue #440)
- Move SALIAS and related files to Common/Z3
- Move ALIAS and related files to Common/Z3
- Remove Source/ZSDOS/Distribution folder because the files were duplicated in the ZSDOS disk image
2024-10-23 15:03:52 -07:00
Wayne Warthen
355902fe25 Merge pull request #448 from kiwisincebirth/map/shared-z-file
Consolidation of Shared Z and Z3 files into Common
2024-10-23 12:13:45 -07:00
Wayne Warthen
19d1547606 Merge pull request #447 from kiwisincebirth/map/disk-optimise
Merged /Common/Utils into Common/All, and reorganised.
2024-10-23 12:08:28 -07:00
Mark Pruden
582b73cee0 Consolidated duplicate files - from NZCOM and ZPM 2024-10-23 14:09:39 +11:00
Mark Pruden
063a15c338 Consolidated duplicate files - ZCNFG 2024-10-23 14:08:58 +11:00
Mark Pruden
830195cd42 Attributions 2024-10-23 12:32:46 +11:00
Mark Pruden
1fe47c4100 Merged /Common/Utils into Common/All, and reorganised.
Created U10 U14 U15 directories, since dome of the DOC files were quite large, and on space constrained floppies, the docs can be removed. Note: this commit also made (non impacting changes) to the fd_* files (/Apps) by adding commented lines, to highlight files that could potentially be added back
2024-10-23 12:29:07 +11:00
Wayne Warthen
0c7dfa0ae7 Minor ReadMe Updates -- Issue #440 2024-10-22 16:32:38 -07:00
Wayne Warthen
0113852f7b Various Cleanup - Issue #440
- Removed duplicate files in disk image process
- Moved all applications to individual folders
2024-10-21 15:43:11 -07:00
Wayne Warthen
dde7a46b87 Merge pull request #445 from kiwisincebirth/map/disk-catalog
Significant Rewrite to the Disk Catalog
2024-10-20 19:09:00 -07:00
Mark Pruden
22290294ef Last Change. Merged shared files definitions into sections based on type of file, rather than location on disk 2024-10-20 22:24:15 +11:00
Mark Pruden
3f5a3683f7 Significant Rewrite to the Disk Catalog 2024-10-20 12:16:51 +11:00
Wayne Warthen
dbbfd5dfcc Merge pull request #444 from kiwisincebirth/map/image-file-defs
Fixes to Imgae file Defs, and move test files, and readme files
2024-10-19 16:26:33 -07:00
Mark Pruden
55fa39730a Remove CPM3 Loaders from ZPM3. remove sample audio from floppy. 2024-10-20 09:37:30 +11:00
Mark Pruden
610c0f7856 Fixes to Imgae file Defs, and move test files, and readme files 2024-10-20 09:20:48 +11:00
Wayne Warthen
1505c995e3 Bump Version 2024-10-18 10:02:50 -07:00
Wayne Warthen
9ba6627da8 Merge pull request #443 from dinoboards/dean/fixes-for-int-handling-of-msx-keyboard
msx-keyboard: corrected implementation of msx-keyboard's tick hook
2024-10-18 09:47:27 -07:00
Wayne Warthen
0558e84e09 Merge pull request #442 from kiwisincebirth/map/publish-cpm22
Publish the CPM2.2 CPM.SYS Binary Files in a new Binary/CPM22 folder
2024-10-18 09:44:21 -07:00
Dean Netherton
fa45185945 msx-keyboard: corrected implementation of msx-keyboard's integration to the timer tick handler 2024-10-18 18:04:54 +11:00
Mark Pruden
99265f03d1 QPM Copy SYS Files to the Binary Distribution Folder 2024-10-18 11:45:39 +11:00
Mark Pruden
a2fcab4045 Minor Documentation fix in Readme File 2024-10-18 10:49:37 +11:00
Mark Pruden
b3b4426a46 Publish the ZSDOS .SYS Binary Files in a new Binary/ZSDOS folder 2024-10-18 10:42:38 +11:00
Wayne Warthen
4ff6961539 Merge pull request #441 from kiwisincebirth/map/diskio-hbios-slice
CPM3 DiskIO routines now use HBIOS EXT_SLICE function during Drive SEL
2024-10-17 11:10:38 -07:00
Mark Pruden
72fcee24f3 Publish the CPM2.2 CPM.SYS Binary Files in a new Binary/CPM22 folder 2024-10-17 15:42:41 +11:00
Mark Pruden
8e56b270c4 CPM3 DiskIO routines now use HBIOS EXT_SLICE function during Drive Select 2024-10-17 13:39:31 +11:00
Wayne Warthen
42e50889be Refactor ROM Loader Baud Rate Change
- The baud rate change functionality in ROM Loader was refactored to reduce it's size and be consistent with the approach used in the MODE command.
2024-10-16 12:59:13 -07:00
Wayne Warthen
b3a250b63f Merge pull request #439 from kiwisincebirth/map/cpm-loader
CPM3 Loader Using New HBIOS SLICE Function
2024-10-15 10:32:12 -07:00
Wayne Warthen
30d79fe7f7 Merge pull request #438 from kiwisincebirth/map/hbios-slice0
Fix: If the Slice=0 and No CPM partition
2024-10-15 10:28:29 -07:00
Mark Pruden
221b1b408c CPM3 Loader Using New HBIOS SLICE Function 2024-10-15 15:40:56 +11:00
Mark Pruden
1f383a3639 Fix: If the Slice=0 and No CPM partition, boot the disk, ignore all Calculations and checks. 2024-10-15 11:09:49 +11:00
Wayne Warthen
f3e0de4a97 Fix Fuzix Boot
- Minor issue in recent updates to Boot Loader broke Fuzix loading.  This is corrected.
2024-10-14 13:18:14 -07:00
Wayne Warthen
48689b8191 Merge pull request #437 from wdl1908/master
Disable LCD as this board does not support it.
2024-10-14 13:04:43 -07:00
Willy De la Court
9b99a400f9 Disable LCD as this board does not support it. 2024-10-14 15:53:10 +02:00
Wayne Warthen
524b631a22 Add REBOOT App by MartinR 2024-10-13 14:10:21 -07:00
Wayne Warthen
0f63bb0838 Merge pull request #436 from kiwisincebirth/map/move-hbios-diomed
move hbios function diomed
2024-10-12 13:14:25 -07:00
Mark Pruden
acce0ec15c Merge remote-tracking branch 'origin/master' into map/move-hbios-diomed
# Conflicts:
#	Source/HBIOS/hbios.asm
2024-10-12 15:09:25 +11:00
Mark Pruden
00b6121391 Move HBIOS SYSGET_DIOMED Function to new high level function 2024-10-12 15:02:23 +11:00
Wayne Warthen
ea6e31c58b Add MBASIC Sample App ASCIIART 2024-10-11 15:36:14 -07:00
Wayne Warthen
75e10b64e3 Missing Comment Markers, Issue #435 2024-10-11 15:17:31 -07:00
Wayne Warthen
6005472fa7 Merge pull request #434 from kiwisincebirth/map/hbios-tweak
Minor tweekas after last commit
2024-10-10 11:39:00 -07:00
Mark Pruden
d7b7b8096e Minor tweekas after last commit
* Moved DIOMED_MID variable - so it would be overwritten at start of main Calculation
* Removed code in SYS_GETDIOMED1A - since SYS_GETDIOMED6A did exactly this anyway
* Removed code that set MID_HD - since it would now already be set.
2024-10-10 16:38:23 +11:00
Wayne Warthen
3c1f1ac70a SYSGET_DIOMED Early Return Fix
- Updated SYSGET_DIOMED  to return Media ID when function returns early (non-HD).
2024-10-09 13:54:42 -07:00
Wayne Warthen
ee60c11dec Merge pull request #433 from kiwisincebirth/map/cbios-drive-select
cbios changes to use HBIOS for Drive Slice Selection
2024-10-09 13:51:43 -07:00
Mark Pruden
65ca9af785 cbios changes to use HBIOS for Drive Slice Selection 2024-10-09 18:57:07 +11:00
Wayne Warthen
76a5f210a0 Merge pull request #432 from kiwisincebirth/map/hbios-diomed
Improvements to HBIOS
2024-10-08 10:30:12 -07:00
Mark Pruden
06d9561f37 Improvements to HBIOS (a) SYSGET DIOMED : If Slice > 0 for NON High Capacilty drives now returns an error (b) SYSGET DIOMED now returns device attributes in Reg B (c) Documentation improvements 2024-10-08 19:00:27 +11:00
Wayne Warthen
ecc7a15a7e Merge pull request #431 from kiwisincebirth/map/romldr-sysget-diomed
RomLdr.asm now uses HBIOS SYSGET DIOMED to discover Slice Sector offset
2024-10-07 10:00:36 -07:00
Mark Pruden
2ca487b936 Doc and bump version numbers 2024-10-07 12:33:45 +11:00
Mark Pruden
af0848f138 Rom Loader now uses new HBIOS SYS_GET DIO_MED function to retrieve Slice Sector and media ID, during disk boot 2024-10-07 12:30:09 +11:00
Wayne Warthen
a5c68c6248 Merge pull request #430 from kiwisincebirth/map/hbios-function
Added new HBIOS Function SYSGET_DIOMED
2024-10-06 14:50:45 -07:00
Wayne Warthen
6500d243eb Update ide.asm 2024-10-06 14:31:00 -07:00
Mark Pruden
497e5333c4 Added new HBIOS Function SYSGET_DIOMED 2024-10-06 12:33:29 +11:00
Wayne Warthen
9ad58ac59c Front Panel Switch Support for eZ80 2024-10-04 17:47:08 -07:00
Wayne Warthen
fb9f9774d7 eZ80 Compatibility Enhancements
See Issue #400
2024-10-03 17:36:17 -07:00
Wayne Warthen
5239eed0e8 DSKY Tweaks 2024-09-27 10:19:26 -07:00
Wayne Warthen
70a961ad55 Update COPYSL to v0.2 from Mark Pruden
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-27 09:00:28 -07:00
Wayne Warthen
49f4e3f292 Fix .gitignore
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-26 19:32:40 -07:00
Wayne Warthen
3ca283d08f COPYSL Utility from Mark Pruden
Co-Authored-By: Mark Pruden <github@mp.tidykiwi.com>
2024-09-26 19:24:47 -07:00
Wayne Warthen
08a53f54d0 Refactor DSKY 2024-09-26 16:18:51 -07:00
Wayne Warthen
11459f989e Doc Fix Issue #427 2024-09-23 11:51:13 -07:00
Wayne Warthen
b07055a73b Merge pull request #429 from dinoboards/dean-ez80-6
ez80: updated reference to renamed firmware repo
2024-09-22 18:05:42 -07:00
Dean Netherton
4618de6621 ez80: updated reference to renamed firmware repo 2024-09-22 10:34:52 +10:00
Wayne Warthen
207fe5f927 Minor
- Cosmetic
- Add eZ80 to LCD driver
- Minor fix in uz80as
2024-09-20 13:38:40 -07:00
Wayne Warthen
fe6cba2b1b Merge pull request #428 from dinoboards/dean-ez80-5
Dean ez80 5
2024-09-20 13:30:16 -07:00
Dean Netherton
a69797d0cf ez80: adjusted I/O bus timings 2024-09-20 16:43:41 +10:00
Dean Netherton
d3019dbb88 ez80: port sn76489 driver to support 16 bit i/o 2024-09-20 16:39:23 +10:00
Dean Netherton
7cda84b4ce ez80: change default cpu freq to 20Mhz 2024-09-20 14:48:54 +10:00
Dean Netherton
a24960a7d2 ez80: specific implementation of DELAY and VDELAY function (using firmware helper)
The delay function is delegated to the on-chip ROM.

The on-chip ROM uses a programmable reload timer that is calibrated for a range of
CPU frequencies and wait states.
2024-09-20 12:26:20 +10:00
Wayne Warthen
028a153568 Clean Up
- Minor cleanup related to latest GM7303 work.
2024-09-19 10:30:07 -07:00
Wayne Warthen
05960f8b22 Merge pull request #426 from drj113/master
gm7303 changes to support DSKY operations
2024-09-19 10:25:27 -07:00
drj113
610a2746f5 gm7303 changes to support DSKY operations
Changes to support GM7303 as a DSKY device
2024-09-19 13:46:55 +10:00
Wayne Warthen
ab9f0be267 Relocate Z280 IVT
The Z280 Interrupt Vector Table must be gin on a 4K boundary.  Recent HBIOS changes caused it's location to result in a very large slack space.  This update moves the Z280 IVT to a more memory efficient location.
2024-09-18 12:50:24 -07:00
Wayne Warthen
d3489b642a Bump Version 2024-09-18 12:00:12 -07:00
Wayne Warthen
8edefc1d8f HEATH Updates
- Support HEATH MSX Graphics card in HBIOS
- Support HEATH MSX Graphics card in TUNE app
- Startup HEATH at 8MHz to ensure hardware compatibility/detection
2024-09-18 11:39:07 -07:00
Dean Netherton
63eebc8534 ez80: fix issue with incorrect application of EZ80WSMD_CYCLES values 2024-09-18 20:27:32 +10:00
Wayne Warthen
6beeef9b1e Minor Doc Updates
- Update User Guide w/ eZ80 Platform information.
- Regen documentation
2024-09-16 11:50:45 -07:00
Wayne Warthen
ab043e5cab Bump Version
- Bump dev version build number to post eZ80 changes.
2024-09-16 09:51:42 -07:00
Wayne Warthen
bba9c5e26b Merge pull request #425 from dinoboards/dean-ez80-4
ez80: fix for FPLEDS to ensure 16 bit I/O
2024-09-16 09:45:21 -07:00
Dean Netherton
a6a32bbd70 ez80: fix issue with uart baud rate translation for numbers requiring more than 16 bits (windows build issue) 2024-09-16 18:34:43 +10:00
Dean Netherton
9aa0fbd2dc ez80: fixes within ez80 drivers to fix overflow issue with PRTS macro 2024-09-16 18:23:13 +10:00
Dean Netherton
9dd54cb781 ez80: fix for FPLEDS to ensure 16 bit I/O 2024-09-16 17:45:00 +10:00
Wayne Warthen
1d8c0c9c46 eZ80 Follow-up
- Added RCEZ80 platform option to Build.ps1
- Added EZ80 config settings to MASTER config (required to get build to work for some situations)
- Modified a .EQU in cfg_RCEZ80.asm to a .SET.  After adding config setting to MASTER config, the .EQU was causing a redefinition error.
- I have temporarily removed some "TRANSLATE" lines in ez80uart.asm.  They were attempting to place a value greater that 0xFFFF in a register and generated an assembly error.
- Modified a few JR instructions in hbios.asm to JP due to out-of-range errors.
- Modified std.asm to "nest" a conditional.  The Windows assembler does not ignore the remainder of a complex conditional when it should.
- Modified tms.asm to replace the PRTS macro with alternative lines.  The Windows assembler cannot handle a string longer than about 8 characters in a macro argument.
- Added the TIMER utility to the ROM disk.  Not sure what happened there.  It was included in the Windows build, but not the Linux build.  There is room for it, so I added it to the Linux build to get a binary exact build compare.
2024-09-15 13:54:31 -07:00
Wayne Warthen
be225c6fb9 Merge pull request #424 from dinoboards/dean-ez80-3
eZ80 Support
2024-09-15 13:42:31 -07:00
Dean Netherton
3121e3ee9d ez80: renamed cfg_rcez80 to uppercase cfg_RCEZ80.asm 2024-09-15 19:13:05 +10:00
Dean Netherton
0982b5d462 ez80: align cfg/std configuration files as per recent changes 2024-09-15 19:11:14 +10:00
Dean Netherton
c31f9de905 ez80: some additional comments for the ez80 cpu driver 2024-09-15 18:44:15 +10:00
Dean Netherton
7157d7f11d ez80: delete bin (WDATE.COM and timer.com) within Source directroy incorrectly introduced in recent merge commit 2024-09-15 15:30:05 +10:00
Dean Netherton
e7937d47e3 ez80: revert whitespace introduced in recent large merge commit 2024-09-15 15:26:37 +10:00
Dean Netherton
32301ba6a9 ez80: fix auto mergine fault DIAG_DISP .EQU DIAG_PROG 2024-09-15 15:24:04 +10:00
Dean Netherton
12df99084e ez80: removing additional comments on #ENDIF - to reduce number of 'diff' in large merge commit 2024-09-15 15:21:49 +10:00
Dean Netherton
324c0bf0fb ez80: fix due to auto merging fault - #IF ((PLATFORM == PLT_S100) & TRUE) 2024-09-15 15:19:05 +10:00
Dean Netherton
38c25e50c2 Merge branch 'master' into dean-ez80-3 2024-09-15 14:40:23 +10:00
Dean Netherton
2176c9d1af ez80: new firmware feature to configure on-chip flash w/s 2024-09-15 10:17:10 +10:00
Dean Netherton
af030bf76d ez80: use new firmware interface for w/s config settings 2024-09-15 09:07:27 +10:00
Wayne Warthen
e376e5577c Heath H8 Panel Tweaks
- Notify HBIOS of speed changes (keeps HBIOS in sync with panel)
- Correct display for HL, SP, and PC registers.
2024-09-14 15:59:41 -07:00
Dean Netherton
b5d4e7ddf9 ez80: added new EZ80TIMER type - EZ80TMR_NONE 2024-09-14 15:56:10 +10:00
Dean Netherton
3880d8fca0 tsm: for v9958 - configure interrupt rate (HSYNC) as per TICKFREQ config setting 2024-09-14 15:54:11 +10:00
Wayne Warthen
df28567506 Additional Config File Cleanup
- Issue #423 should now be resolved.
2024-09-13 10:35:50 -07:00
Wayne Warthen
f16a9415f7 Add CPU Speed Control for HEATH Platform 2024-09-11 13:06:19 -07:00
Wayne Warthen
561a7f7231 Support S100 Z80 FPGA Printer Port 2024-09-09 11:41:28 -07:00
Wayne Warthen
d416a986bb Miscellaneous
- Fix SN76489 variable names referring to different driver
- Make SIMH config filenames consistent with others
2024-09-09 09:04:12 -07:00
Wayne Warthen
162348ea66 Implement SIOINTS Setting in SIO Driver
- SIOINTS allows disabling use of interrupts in the SIO driver when interrupts are enabled globally.  It will not allow you to enable SIO interrupts if interrupts are globally disabled (INTMODE 0).
2024-09-09 17:19:51 +10:00
Wayne Warthen
7e4c4d35e4 Merge pull request #422 from wwarthen/work
Config File Cleanup
2024-09-08 14:19:21 -07:00
Wayne Warthen
78917e78be Cleanup
- Update include file nesting comments
- Bump version number
2024-09-08 13:59:56 -07:00
Wayne Warthen
69e152c4fb Config Files Cleanup 2024-09-08 13:30:32 -07:00
Wayne Warthen
a14e64fced Update and rename cfg_SBC.asm to cfg_sbc.asm 2024-09-08 12:35:07 -07:00
Wayne Warthen
e3195669fc Update and rename cfg_sbc.asm to cfg_SBC.asm 2024-09-08 12:33:02 -07:00
Dean Netherton
64d60f744b ez80: updated to report firmware version, build date, and if operating under the alt image 2024-09-08 13:53:57 +10:00
Wayne Warthen
85834559d1 Cleanup (Cosmetic) 2024-09-07 19:47:46 -07:00
Wayne Warthen
1c66ec3ba4 Configuration File Improvements
- Modified configuration files so that all configurations now inherit from the Master Config file.
2024-09-07 18:02:45 -07:00
Wayne Warthen
99f8d0b3a6 Minor Cosmetic Improvements 2024-09-07 14:26:40 -07:00
Wayne Warthen
23160e3961 Merge pull request #421 from kiwisincebirth/map/userguide-fat
User Guide FAT
2024-09-07 11:20:26 -07:00
Mark Pruden
2c985070e8 Merge commit 'e1beb01a5181939abb0da8253b095e24f596c214' into map/userguide-fat 2024-09-07 16:44:27 +10:00
Mark Pruden
a14a2e6128 Binary Changes 2024-09-07 16:42:12 +10:00
Mark Pruden
c093cd2322 Merged FAT section into Transferring Files 2024-09-07 16:41:56 +10:00
Mark Pruden
a93bfb1e77 Misc Improvements to User Guide 2024-09-07 16:41:31 +10:00
Wayne Warthen
e1beb01a51 Update Configs to Handle GM3707 Enable
- The non-Genesis config files needed to be updated to disable the GM3707.
2024-09-06 18:12:46 -07:00
Wayne Warthen
d20c72fe21 Bump Version Number 2024-09-06 17:55:31 -07:00
Wayne Warthen
8d91176230 Cosmetic Updates 2024-09-06 17:54:02 -07:00
Wayne Warthen
1945826414 Merge pull request #420 from drj113/master
GM7303 LCD Keypad support
2024-09-06 17:43:34 -07:00
drj113
61d08e9f71 GM7303 LCD Keypad support
Changes to support a modified Prolog Keypad and LCD driver card - Heavily inspired by the lcd.asm module, but separated out to allow for future keyboard support.
2024-09-07 10:18:07 +10:00
Wayne Warthen
e212054774 Fix Missing Video Device String 2024-09-06 17:00:21 -07:00
Dean Netherton
479c50f052 ez80: updated to deprecate use of RST.L %18 for bank switching and direct access using 16bit i/o 2024-09-06 18:28:02 +10:00
Wayne Warthen
90a4d090f9 Minor Doc Updates 2024-09-05 14:14:33 -07:00
Wayne Warthen
d78127ca0f Merge pull request #418 from kiwisincebirth/map/doc-user-diskmanage
Doc Improvement - User Guide - Disk Management
2024-09-05 13:12:58 -07:00
Dean Netherton
5c10f1881d ez80: deprecated EZ80_UTIL_HL_TO_EHL - now using local implementation EZ80_CPY_UHL_TO_EHL 2024-09-05 21:16:00 +10:00
Dean Netherton
fa6b0f1d82 ez80: deprecated EZ80_UTIL_EHL_TO_HL - now using local implementation EZ80_CPY_EHL_TO_UHL 2024-09-05 21:00:51 +10:00
Mark Pruden
fccd37f8dd Merge commit '6e8bdb141de0b906ce20cb00821db6cbbdfe0bf9' into map/doc-user-diskmanage
# Conflicts:
#	Doc/ChangeLog.txt
#	Doc/RomWBW Applications.pdf
#	Doc/RomWBW Disk Catalog.pdf
#	Doc/RomWBW Errata.pdf
#	Doc/RomWBW System Guide.pdf
#	Doc/RomWBW User Guide.pdf
2024-09-05 18:41:32 +10:00
Mark Pruden
08d88a98da Fix for LCD Display of CPU Type 2024-09-05 18:32:36 +10:00
Dean Netherton
141c79ef90 ez80: ported msx keyboard driver (mky.asm) 2024-08-10 16:03:40 +10:00
Dean Netherton
7d5dc565f3 ez80: tms driver - minor update/refactor 2024-08-04 15:09:21 +10:00
Dean Netherton
b3bab80342 ez80: supply the required min value for BUS CYCLES when using frequency calculation 2024-08-04 15:08:51 +10:00
Dean Netherton
9898309f29 ez80: ported fd.asm driver 2024-08-03 13:36:37 +10:00
Dean Netherton
55d8c6ce7d ez80: ported ppide.asm driver 2024-08-02 16:52:26 +10:00
Dean Netherton
0eb0855948 ez80: ported ay38910 driver 2024-07-25 13:01:07 +10:00
Dean Netherton
37e682adc7 ez80: some general improvements to ez80 HBIOS drivers and implemented a true interrupt driver timer tick driver 2024-07-25 11:34:12 +10:00
Dean Netherton
39232f00f1 sn76489: added configuration entry SN76489CHNOUT to direct to only to one channel or both 2024-07-24 16:23:18 +10:00
Dean Netherton
890dd1cd5e eZ80: added support for sn76489 driver 2024-07-24 14:33:14 +10:00
Dean Netherton
209f457120 ez80: updated to use new functions EZ80_UTIL_VER_EXCH, EZ80_UTIL_GET_CPU_FQ and EZ80_UTIL_BNK_HLP 2024-07-22 16:18:09 +10:00
Dean Netherton
945d5fc2d2 ez80: set timer tick rate as per platform config TICKFREQ 2024-07-22 13:23:03 +10:00
Dean Netherton
22b10c8ac8 ez80: updated IDE driver for eZ80 platform. 2024-07-20 22:09:13 +10:00
Dean Netherton
4b80f36fd0 ez80: configure and display memory and i/o timings 2024-07-20 16:59:25 +10:00
Dean Netherton
026fa3d0d7 ez80: request CPU speed from ez80 firmware 2024-07-20 12:59:30 +10:00
Dean Netherton
53198e066c ez80: added macros for accessing all firmware functions 2024-07-19 21:18:28 +10:00
Dean Netherton
3318b12667 ez80: fixed issue with CH37x-USB driver not working at frequency > 7Mhz 2024-07-19 19:19:05 +10:00
Dean Netherton
20aa3a7d65 makefile: turn off forced tracing - use option (--trace and or --debug) to trace makefile execution 2024-07-16 08:45:10 +00:00
Dean Netherton
e757591fb3 ez80: added missing #ENDIF in ez80uart.asm 2024-07-16 08:34:46 +00:00
Dean Netherton
44ceaa3e71 ez80: update to new version of 60hz get sec firmware interface 2024-07-16 18:22:28 +10:00
Dean Netherton
37a7574f1f ez80: report if RTC is not powered 2024-07-16 17:02:53 +10:00
Dean Netherton
ba8cd05cb7 ez80: 60hz timer updated to support native 24 bit tick counters implemented in firmware 2024-07-16 16:52:45 +10:00
Dean Netherton
bc68674ce2 ez80: updated ch.asm driver to support ez80
SD Card not supported yet
2024-07-14 15:21:21 +10:00
Dean Netherton
37b3b96e49 ez80: rtc fix missing space in boot report 2024-07-14 15:18:58 +10:00
Dean Netherton
aeb579d6ad ez80: uart init implemented 2024-07-13 12:29:45 +10:00
Dean Netherton
229bf119d4 ez80: uart query implemented 2024-07-12 14:42:25 +10:00
Dean Netherton
cb7ba38f76 ez80uart: defer basic i/o operations to ez80 firmware 2024-07-12 10:08:11 +10:00
Dean Netherton
9bc4f26f6e timer.com: added new switch (/R) to reset current timer ticks 2024-07-08 16:36:06 +10:00
Dean Netherton
ce9778e189 ez80: implemented timer get/set function - delegates to firmware 2024-07-08 16:35:38 +10:00
Dean Netherton
44d890be59 ez80: Added new driver ez80rtc 2024-07-07 10:10:04 +10:00
Dean Netherton
a31119bd5d ez80: updated notes for the docker build script 2024-07-04 12:19:09 +10:00
Dean Netherton
6b00f5c992 eZ80: tms.asm increased speed of interrupt handler's IO process 2024-07-04 12:19:08 +10:00
Dean Netherton
20bdb78084 eZ80: tms.asm interrupt handling activated - with appropriate delegation from the eZ80 firmware 2024-07-04 12:19:08 +10:00
Dean Netherton
4ac7c1213a eZ80: updated tms.asm to support eZ80 16 bit i/o operations 2024-07-04 12:19:07 +10:00
Dean Netherton
d834742337 eZ80: updated rp5rtc.asm to support eZ80 16 bit i/o operations 2024-07-04 12:19:07 +10:00
Dean Netherton
baf0cd7788 eZ80: updated ide.asm to suppport eZ80 16 bit i/o operations 2024-07-04 12:19:06 +10:00
Dean Netherton
572309d03c eZ80: reverted MDTRACE back to 1 2024-07-04 12:19:05 +10:00
Dean Netherton
d9e009864b eZ80: hbios HBX_BNKSEL_INT is fully implemented in eZ80 firmware to optimal performance 2024-07-04 12:19:05 +10:00
Dean Netherton
46cc57e5fc eZ80: hbios io out operations now managed through a expected feature in the eZ80 on-chip rom 2024-07-04 12:19:04 +10:00
Dean Netherton
7e2b054fc1 eZ80: added platform config PLT_RCEZ80 2024-07-04 12:19:03 +10:00
Dean Netherton
d358c8bc1c eZ80: uart and hbios banking code updated to support the eZ80 for RC2014 configuration 2024-07-04 12:19:03 +10:00
Dean Netherton
2bc807edc8 eZ80: uart driver init and pre-init functions defer to routines within the eZ80 Flash rom 2024-07-04 12:19:02 +10:00
Dean Netherton
57364bb581 EZ80: initial skeleton of driver for EZ80 UART 2024-07-04 12:19:00 +10:00
Dean Netherton
a92aebddd7 eZ80: hbios i/o operations updated for FPLED_IO and ram bank initialisation 2024-07-04 12:18:59 +10:00
Dean Netherton
8b63b32580 gitignored some more untracked generated files 2024-07-04 12:18:57 +10:00
Dean Netherton
76cb52eb14 Adding new target/config for eZ80 RC2014 builds 2024-07-04 12:18:26 +10:00
b1ackmai1er
81da5af7ae Merge pull request #65 from wwarthen/master
Resync
2024-05-12 17:12:59 +08:00
b1ackmai1er
7b5f1f3884 Merge pull request #64 from wwarthen/master
Resync
2024-04-04 18:59:58 +08:00
1254 changed files with 204328 additions and 51267 deletions

View File

@@ -4,8 +4,11 @@ BEFORE YOU CREATE A PULL REQUEST:
- Please base all pull requests against the master branch
- Include a clear description of your change
- Reference related Issue(s) (e.g., "Resolves Issue #123")
- Indicate whether an AI LLM was utilized
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

@@ -26,7 +26,8 @@ jobs:
run: |
export TZ='America/Los_Angeles'
sudo apt-get install srecord
make distlog
make transpile-c-code
make distlog --trace
rm -rf .git*
- name: List Output

View File

@@ -19,7 +19,8 @@ jobs:
export TZ='America/Los_Angeles'
sudo apt-get install libncurses-dev
sudo apt-get install srecord
make distlog
make transpile-c-code
make distlog --trace
rm -rf .git*
- name: Create Package Archive
@@ -31,6 +32,8 @@ jobs:
echo "Tag: ${{github.ref_name}}"
if grep -q "dev" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Development Snapshot"
elif grep -q "beta" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Beta Release"
elif grep -q "pre" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Prerelease"
elif grep -q "rc" <<< "${{github.ref_name}}"; then
@@ -50,6 +53,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

97
.gitignore vendored
View File

@@ -20,7 +20,7 @@
Binary/**/*.mym
Binary/**/*.pt3
!Binary/CPNET/NetBoot/cpnos-wbw.sys
!Binary/CPNET/NetBoot/*/cpnos.sys
Source/**/eeprom
Source/Apps/Assign.com
@@ -97,9 +97,10 @@ Tools/unix/zx/zx
!Source/ZSDOS/*.[Cc][Oo][Mm]
!Source/ZRC/*.bin
!Source/ZRC512/*.bin
!Source/EZ512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.bin
!Source/FZ80/*.bin
!Source/SZ80/*.bin
!Tools/cpm/**
!Tools/unix/zx/*
!Tools/zx/*
@@ -110,4 +111,94 @@ Source/ZPM3/zccp.com
Source/ZPM3/zpmldr.com
Source/ZPM3/genbnk.dat
Source/ZSDOS/zsdos.err
Source/ZSDOS/zsdos.err
# Lets explicit list all generate untracked binary files
Binary/*.upd
Binary/Apps/bbcbasic.txt
Binary/Apps/copysl.doc
Binary/Apps/copysl.doc
Binary/Apps/fdu.doc
Binary/Apps/fdu.doc
Binary/Apps/Tunes/bgm.vgm
Binary/Apps/Tunes/ending.vgm
Binary/Apps/Tunes/inchina.vgm
Binary/Apps/Tunes/shirakaw.vgm
Binary/Apps/Tunes/startdem.vgm
Binary/Apps/Tunes/wonder01.vgm
Binary/Apps/zmconfig.ovr
Binary/Apps/zminit.ovr
Binary/Apps/zmp.cfg
Binary/Apps/zmp.doc
Binary/Apps/zmp.fon
Binary/Apps/zmp.hlp
Binary/Apps/zmterm.ovr
Binary/Apps/zmxfer.ovr
Binary/CPM3/bdos3.spr
Binary/CPM3/bios3.spr
Binary/CPM3/bnkbdos3.spr
Binary/CPM3/bnkbios3.spr
Binary/CPM3/cpm3fix.pat
Binary/CPM3/genbnk.dat
Binary/CPM3/gencpm.dat
Binary/CPM3/genres.dat
Binary/CPM3/readme.1st
Binary/CPM3/resbdos3.spr
Binary/CPNET/cpn12duo.lbr
Binary/CPNET/cpn12mt.lbr
Binary/CPNET/cpn12ser.lbr
Binary/CPNET/cpn3duo.lbr
Binary/CPNET/cpn3mt.lbr
Binary/CPNET/cpn3ser.lbr
Binary/hd1k_prefix.dat
Binary/ZPM3/bnkbdos3.spr
Binary/ZPM3/bnkbios3.spr
Binary/ZPM3/gencpm.dat
Binary/ZPM3/resbdos3.spr
Binary/ZPM3/zinstal.zpm
Source/BPBIOS/def-ww.lib
Source/CPNET/cpn12duo.lbr
Source/CPNET/cpn12mt.lbr
Source/CPNET/cpn12ser.lbr
Source/CPNET/cpn3duo.lbr
Source/CPNET/cpn3mt.lbr
Source/CPNET/cpn3ser.lbr
Source/Fonts/font8x11c.asm
Source/Fonts/font8x11c.bin
Source/Fonts/font8x11u.asm
Source/Fonts/font8x16c.asm
Source/Fonts/font8x16c.bin
Source/Fonts/font8x16u.asm
Source/Fonts/font8x8c.asm
Source/Fonts/font8x8c.bin
Source/Fonts/font8x8u.asm
Source/Fonts/font6x8c.asm
Source/Fonts/font6x8c.bin
Source/Fonts/font6x8u.asm
Source/Fonts/fontcgac.asm
Source/Fonts/fontcgac.bin
Source/Fonts/fontcgau.asm
Source/Fonts/fontvgarcc.asm
Source/Fonts/fontvgarcc.bin
Source/Fonts/fontvgarcu.asm
Source/HBIOS/*.upd
Source/HBIOS/build_env.cmd
Source/HBIOS/build_env.cmd
Source/HBIOS/hbios_env.sh
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/RomDsk/*.cat
Source/RomDsk/*.dat
Source/ZCPR-DJ/zcprdemo.com
Source/ZPM3/autotog.com
Source/ZPM3/clrhist.com
Source/ZPM3/cpmldr.com
Source/ZPM3/setz3.com
Tools/unix/OpenSpin/build/
Tools/unix/zxcc/config.h
Tools/unix/zxcc/zxcc

38
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,38 @@
{
"z80-macroasm.format.enabled": true,
"z80-macroasm.format.baseIndent": 1,
"z80-macroasm.format.whitespaceAfterInstruction": "tab",
"z80-macroasm.format.uppercaseKeywords": true,
"z80-macroasm.format.spaceAfterArgument": true,
"z80-macroasm.format.hexaNumberStyle": "motorola",
"z80-macroasm.format.hexaNumberCase": true,
"files.trimTrailingWhitespace": false,
"files.eol": "\r\n",
"files.associations": {
"*.inc": "z80-macroasm",
"*.asm": "z80-macroasm",
"*.180": "z80-macroasm",
"*.asm.m4": "z80-macroasm",
"*.inc.m4": "z80-macroasm",
"*.mac": "z80-macroasm",
"*.asmpp": "z80-macroasm",
"*.zdsproj": "xml",
"*.Z80": "z80-macroasm",
"ch376.h": "c",
"protocol.h": "c",
"usb_state.h": "c",
"functional": "c",
"class_scsi.h": "c",
"z80.h": "c",
"dev_transfers.h": "c",
"usb-base-drv.h": "c",
"critical-section.h": "c",
"enumerate.h": "c",
"ch376inc.h": "c",
"enumerate_storage.h": "c",
"work-area.h": "c",
"hbios-driver-storage.h": "c",
"class_hid_keyboard.h": "c",
"print.h": "c"
}
}

View File

@@ -9,5 +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

@@ -1,6 +1,6 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.com)
SUBDIRS = Test
SUBDIRS = Test ZDE
include $(TOOLS)/Makefile.inc
@@ -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

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.com del *.com

6
Binary/Apps/ZDE/Makefile Normal file
View File

@@ -0,0 +1,6 @@
TOOLS = ../../../Tools
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.com

View File

@@ -0,0 +1,10 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the ZDE executable binaries. They are
in their original, unconfigured state.

4
Binary/CPM22/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/CPM22/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys

23
Binary/CPM22/ReadMe.txt Normal file
View File

@@ -0,0 +1,23 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the CP/M 2.2 system files for the RomWBW CP/M 2.2
adaptation. All of these files are already included on the CP/M
boot disk images. However if you are creating a CP/M boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
This is usually achieved by the SYSCOPY utility e.g.
SYSCOPY a:=cpm_wbw.sys
These files should also be copied to any CP/M 2.2 boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -12,6 +12,9 @@ if exist *.pdf del *.pdf
if exist *.eeprom del *.eeprom
pushd Apps && call Clean || exit /b 1 & popd
pushd CPM22 && call Clean || exit /b 1 & popd
pushd CPM3 && call Clean || exit /b 1 & popd
pushd QPM && call Clean || exit /b 1 & popd
pushd ZSDOS && call Clean || exit /b 1 & popd
pushd ZPM3 && call Clean || exit /b 1 & popd
pushd CPNET && call Clean || exit /b 1 & popd

View File

@@ -1,6 +1,6 @@
TOOLS = ../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.img *.rom *.com *.eeprom)
SUBDIRS = Apps CPM3 ZPM3 CPNET
SUBDIRS = Apps CPM22 CPM3 QPM ZSDOS ZPM3 CPNET
include $(TOOLS)/Makefile.inc

4
Binary/QPM/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/QPM/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys *.bin

21
Binary/QPM/ReadMe.txt Normal file
View File

@@ -0,0 +1,21 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the QPM 2.7 system files for the RomWBW QPM 2.7
adaptation. All of these files are already included on the QPM
boot disk images. However if you are creating a QPM boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
Refer to the QPM Documentation for installing QPM
These files should also be copied to any QPM boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

View File

@@ -6,37 +6,37 @@
*** ***
***********************************************************************
This directory ("Binary") is part of the RomWBW System Software
distribution archive. It contains the completed binary outputs of
the build process. As described below, these files are used to
This directory ("Binary") is part of the RomWBW System Software
distribution archive. It contains the completed binary outputs of
the build process. As described below, these files are used to
assemble a working RetroBrew Computers system.
The files in this directory are created by the build process that is
documented in the ReadMe.txt file in the Source directory. When
released the directory is populated with the default output files.
However, the output of custom builds will be placed in this directory
The files in this directory are created by the build process that is
documented in the ReadMe.txt file in the Source directory. When
released the directory is populated with the default output files.
However, the output of custom builds will be placed in this directory
as well.
If you only see a few files in this directory, then you downloaded
just the source from GitHub. To retrieve the full release download
package, go to https://github.com/wwarthen/RomWBW. On this page,
look for the text "XX releases" where XX is a number. Click on this
text to go to the releases page. On this page, you will see the
latest releases listed. For each release, you will see a package
file called something like "RomWBW-2.9.0-Package.zip". Click on the
If you only see a few files in this directory, then you downloaded
just the source from GitHub. To retrieve the full release download
package, go to https://github.com/wwarthen/RomWBW. On this page,
look for the text "XX releases" where XX is a number. Click on this
text to go to the releases page. On this page, you will see the
latest releases listed. For each release, you will see a package
file called something like "RomWBW-2.9.0-Package.zip". Click on the
package file for the release you want to download.
ROM Firmware Images (<plt>_<cfg>.rom)
-------------------------------------
The files with a ".rom" extension are binary images ready to program
into an appropriate PROM. These files are named with the format
<plt>_<cfg>.rom. <plt> refers to the primary platform such as Zeta,
N8, Mark IV, etc. <cfg> refers to the specific configuration. In
general, there will be a standard configuration ("std") for each
platform. So, for example, the file called MK4_std.rom is a ROM
image for the Mark IV with the standard configuration. If a custom
configuration called "custom" is created and built, a new file called
The files with a ".rom" extension are binary images ready to program
into an appropriate PROM. These files are named with the format
<plt>_<cfg>.rom. <plt> refers to the primary platform such as Zeta,
N8, Mark IV, etc. <cfg> refers to the specific configuration. In
general, there will be a standard configuration ("std") for each
platform. So, for example, the file called MK4_std.rom is a ROM
image for the Mark IV with the standard configuration. If a custom
configuration called "custom" is created and built, a new file called
MK4_custom.rom will be added to this directory.
Documentation of the pre-built ROM Images is contained in
@@ -54,52 +54,52 @@ contents. Refer to the RomWBW User Guide for more information.
ROM Executable Images (<plt>_<cfg>.com)
---------------------------------------
When a ROM image (".rom") is created, an executable version of the
ROM is also created. These files have the same naming convention as
the ROM Image files, but have the extension ".com". These files can
When a ROM image (".rom") is created, an executable version of the
ROM is also created. These files have the same naming convention as
the ROM Image files, but have the extension ".com". These files can
be copied to a working system and run like a normal CP/M application.
When run on the target system, they install in RAM just like they had
When run on the target system, they install in RAM just like they had
been loaded from ROM. This allows a new ROM build to be tested
without reprogramming the actual ROM.
WARNING: In a few cases the .com file is too big to load. If you get
a message like "Full" or "BAD LOAD" when trying to load one of the
.com files, it is too big. In these cases, you will not be able to
WARNING: In a few cases the .com file is too big to load. If you get
a message like "Full" or "BAD LOAD" when trying to load one of the
.com files, it is too big. In these cases, you will not be able to
test the ROM prior to programming it.
VDU ROM Image (vdu.rom)
-----------------------
The VDU video board requires a dedicated onboard ROM containing the
font data. The "vdu.rom" file contains the binary data to program
The VDU video board requires a dedicated onboard ROM containing the
font data. The "vdu.rom" file contains the binary data to program
onto that chip.
Disk Images (fd_*.img, hd_*.img, psys.img)
------------------------------------------
Disk Images (fd_*.img, hd_*.img)
--------------------------------
RomWBW includes a mechanism for generating floppy disk and hard disk
binary images that are ready to copy directly to a floppy, hard disk,
CF Card, or SD Card which will then be ready for use in any
RomWBW includes a mechanism for generating floppy disk and hard disk
binary images that are ready to copy directly to a floppy, hard disk,
CF Card, or SD Card which will then be ready for use in any
RomWBW-based system.
Essentially, these files contain prepared floppy and hard disk images
with a large set of programs and related files. By copying the
contents of these files to appropriate media as described below, you
Essentially, these files contain prepared floppy and hard disk images
with a large set of programs and related files. By copying the
contents of these files to appropriate media as described below, you
can quickly create ready-to-use media. Win32DiskImager or
RawWriteWin can be used to copy images directly to media. These
programs are included in the RomWBW Tools directory.
The fd_*.img files are floppy disk images. They are sized for 1.44MB
floppy media and can be copied to actual floppy disks using
RawWriteWin (as long as you have access to a floppy drive on your
Windows computer). The resulting floppy disks will be usable on any
The fd_*.img files are floppy disk images. They are sized for 1.44MB
floppy media and can be copied to actual floppy disks using
RawWriteWin (as long as you have access to a floppy drive on your
Windows computer). The resulting floppy disks will be usable on any
RomWBW-based system with floppy drive(s).
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
Each file is intended to be copied to the start of any type of hard
disk media (typically a CF Card or SD Card). The resulting media will
be usable on any RomWBW-based system that accepts the corresponding
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
Each file is intended to be copied to the start of any type of hard
disk media (typically a CF Card or SD Card). The resulting media will
be usable on any RomWBW-based system that accepts the corresponding
media type.
NOTE: The hd512_*.img files are equivalent to the hd_*.img
@@ -109,39 +109,86 @@ maximum number of CP/M directory entries from 512 to 1024.
Refer to the ReadMe.txt in the Source/Images directory
for details.
Documentation of the pre-built disk images is contained in the
Documentation of the pre-built disk images is contained in the
"RomWBW User Guide" found in the Doc directory. The contents of
the disk images is contained in the "RomWBW Disk Catalog", but it
is significantly out-of-date.
The contents of the floppy/hard disk images are created by
the BuildImages.cmd script in the Source directory. Additional
information on how to generate custom disk images is found in the
The contents of the floppy/hard disk images are created by
the BuildImages.cmd script in the Source directory. Additional
information on how to generate custom disk images is found in the
Source\Images ReadMe.txt file.
The psys.img file contains a full implementation of the UCSD p-System
for the Z80 running under RomWBW. This image file must be placed on
disk media by itself (not appended or concatenated with hd*.img files.
Refer to the Source/pSys/ReadMe.txt file for more information on the
Disk Images (hd512_combo.img, hd1k_combo.img, *_std_hd1k_combo.img)
-------------------------------------------------------------------
The hd512_combo.img and hd1k_combo.img file are the primary combo
disk image files suitable for most platforms.
The *_std_hd1k_combo.img files are platform specific combo files
typically used in romless platforms, they also contain RomWBW binary code
that is loaded at boot time into RAM
Disk Images (hd1k_prefix.dat, *_std_hd1k_prefix.dat)
----------------------------------------------------
The hd1k_prefix.dat file is part of the combo disk images and is
applied to hd1k image files as a prefix, it contains the standard
partion table.
The *_std_hd1k_prefix.dat files are platform specific prefixes
typically used in romless platforms, they also contain RomWBW binary code
that is loaded at boot time into RAM
Disk Images (psys.img)
----------------------
The psys.img file contains a full implementation of the UCSD p-System
for the Z80 running under RomWBW. This image file must be placed on
disk media by itself (not appended or concatenated with hd*.img files.
Refer to the Source/pSys/ReadMe.txt file for more information on the
p-System implementation.
Propeller ROM Images (*.eeprom)
-------------------------------
The files with and extension of ".eeprom" contain the binary images
to be programmed into the Propeller-based boards. The list below
The files with and extension of ".eeprom" contain the binary images
to be programmed into the Propeller-based boards. The list below
indicates which file targets each of the Propeller board variants:
ParPortProp ParPortProp.eeprom
PropIO V1 PropIO.eeprom
PropIO V2 PropIO2.eeprom
Refer to the board documentation of the boards for more information
Refer to the board documentation of the boards for more information
on how to program the EEPROMs on these boards.
SUB DIRECTORIES
===============
Apps Directory
--------------
The Apps subdirectory contains the executable application files that
are specific to RomWBW. The source for these applications is found
in the Source\Apps directory of the distribution.
in the Source\Apps directory of the distribution.
CPNET Directory
---------------
This directory contains the CP/NET client packages. Please refer to
the RomWBW User Guide for instructions on installing these packages,
or see the Readme.txt file in this sub-directory
CPM22 CPM3 ZSDOS ZPM3 QPM Directories
-------------------------------------
These directories contains the system files for the RomWBW adaptations
for each operating system. All of these files are already included on
the boot disk images. However if you are creating a o/s boot disk
manually, you will need copy all of these files to the boot disk.
These files should also be copied to any boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

4
Binary/ZSDOS/Clean.cmd Normal file
View File

@@ -0,0 +1,4 @@
@echo off
setlocal
if exist *.sys del *.sys

7
Binary/ZSDOS/Makefile Normal file
View File

@@ -0,0 +1,7 @@
TOOLS = ../../Tools
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.spr)
include $(TOOLS)/Makefile.inc
clean::
@rm -f *.sys

23
Binary/ZSDOS/ReadMe.txt Normal file
View File

@@ -0,0 +1,23 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the ZSDOS system files for the RomWBW ZSDOS
adaptation. All of these files are already included on the ZSDOS
boot disk images. However if you are creating a ZSDOS boot disk
manually, you should copy all of these files to the boot disk.
Note: Two file have been provided one for RomWBW HBIOS, and one for UNA
BIOS. One of these files must be installed on the system boot track.
This is usually achieved by the SYSCOPY utility e.g.
SYSCOPY a:=zsys_wbw.sys
These files should also be copied to any ZSDOS boot disks on your
system when you upgrade your ROM firmware. Some of these files
*must* match the version of the RomWBW firmware you are using for
proper operation of your system.

View File

@@ -1,42 +1,91 @@
# Contributing to RomWBW
> **WARNING**: The `dev` branch of RomWBW has been deprecated as of v3.4. All Pull Requests should now target the `master` branch.
> **WARNING**: The `dev` branch of RomWBW has been deprecated as of
v3.4. All Pull Requests should now target the `master` branch.
Contributions of all kinds to RomWBW are welcomed and greatly appreciated.
Contributions of all kinds to RomWBW are welcomed and greatly
appreciated.
- Reporting bug(s) and suggesting new feature(s)
- Discussing the current state of the code
- Submitting a fixes and enhancements
- Submitting fixes and enhancements
## RomWBW GitHub Repository
The [RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW) is the primary location for developing, supporting, and distributing RomWBW. Although input is gladly accepted from almost any channel, the GitHub Repository is preferred.
The [RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW) is
the primary location for developing, supporting, and distributing
RomWBW. Although input is gladly accepted from almost any channel, the
GitHub Repository is preferred.
- Use **Issues** to report bugs, request enhancements, or ask usage questions.
- Use **Issues** to report bugs, request enhancements, or ask usage
questions
- Use **Discussions** to interact with others
- Use **Pull Requests** to submit content (code, documentation, etc.)
## Submitting Content
This RomWBW Project uses the standard [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow). Submission of content changes (including code) are ideally done via Pull Requests.
This RomWBW Project uses the standard
[GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow).
Submission of content changes (including code) are ideally done via Pull
Requests.
- Submitters are advised to contact [Wayne Warthen](mailto:wwarthen@gmail.com) or start a GitHub Discussion prior to starting any significant work. This is simply to ensure that submissions are consistent
with the overall goals and intentions of RomWBW.
- All submissions should be based on the `master` branch. To create your submission, fork the RomWBW repository and create your branch from `master`. Make (and test) your changes in your personal fork.
- Please update relevant documentation and the `ChangeLog` found in the `Doc` folder.
- You are encouraged to comment your submissions to ensure your work is properly attributed.
- When ready, submit a Pull Request to merge your forked branch into the RomWBW master branch.
- Submitters are advised to contact [Wayne Warthen](mailto:wwarthen@
gmail.com) or start a GitHub Discussion prior to starting any
significant work. This is simply to ensure that submissions are
consistent with the overall goals and intentions of RomWBW.
- All submissions should be based on the `master` branch. To create
your submission, fork the RomWBW repository and create your branch from
`master`. Make (and test) your changes in your personal fork.
- Please update relevant documentation and the `ChangeLog` found in the
`Doc` folder.
- You are encouraged to comment your submissions to ensure your work is
properly attributed.
- When ready, submit a Pull Request to merge your forked branch into the
RomWBW master branch. In the comments, be sure to indicate if an
AI LLM was utilized in any way.
## Coding Style
Due to the nature of the project, you will find a variety of coding styles. When making changes to existing code, please try to be consistent with the existing coding style. You may not like the current style, but no one likes mixed styles
in one file/module.
Due to the nature of the project, you will find a variety of coding
styles. When making changes to existing code, please try to be
consistent with the existing coding style. You may not like the current
style, but no one likes mixed styles in one file/module.
Be careful with white space. RomWBW is primarily assembly langauge code. The use of tab stops at every 8 characters is pretty standard for assembler. If you use something else, then your code will look odd when viewed by others.
Be careful with white space. RomWBW is primarily assembly langauge
code. The use of tab stops at every 8 characters is pretty standard for
assembler. If you use something else, then your code will look odd
when viewed by others.
In most cases, the use of `<cr><lf>` line endings is preferred. This is standard for the operating systems of the era that RomWBW provides. Also note that CP/M text files should end with a ctrl-Z (0x1A). This is not magically added by the
tools that generate the disk images.
In most cases, the use of `<cr><lf>` line endings is preferred. This is
standard for the operating systems of the era that RomWBW provides.
Also note that CP/M text files should end with a ctrl-Z (0x1A). This is
not magically added by the tools that generate the disk images.
## Hints for Developers
- The majority of RomWBW is assembled with TASM (and it's compatible
equivalent sz80as). These tools have quirks that are very subtle. For
example, TASM does not evaluate expressions in the standard way. It
uses a left to right approach. Check the TASM documentation carefully.
- The following two Z80 instructions highlight a common issue with the
Z80 assembler syntax. Parens in operands frequently indicate an
indirect reference. To treat the operand as an expression, use the
second format.
```
LD A,(5+5) ; Load A with the value at address 10
LD A,0+(5+5) ; Load A with the value 10
```
- The RomWBW documewntation in the Doc directory is generated with a
process outside of the normal build process. To update documentation,
please update the .md files in Source/Doc. Those are the Markdown
source files for the documentation. The PDF files will be updated
offline from those.
## License
RomWBW is licensed under GPLv3. When you submit code changes, your submissions are understood to be under the same [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html) that covers the project.
RomWBW is licensed under GPLv3. When you submit code changes, your
submissions are understood to be under the same [GPLv3 License]
(https://www.gnu.org/licenses/gpl-3.0.html) that covers the project.

View File

@@ -0,0 +1,81 @@
# B/P Bios
# Banked and Portable Basic IO System
# 1 Introduction
The Banked and Portable (B/P) Basic I/O System (BIOS) is an effort to standardize many of the logical to physical mapping mechanisms on Microcomputers running Z-Systems with ZSDOS. In expanding the capabilities of such systems, it became apparent that standard BIOSes do not contain the functionality necessary, adequate standardization in extended BIOS calls, nor an internal structure to fully support external determination of system parameters. B/P Bios provides a method of achieving these goals, while also possessing the flexibility to operate on a wide range of hardware systems with a much smaller level of systems programming than previously required.
## 1.1 About This Manual
Documentation on B/P Bios consists of this manual plus the latest addendum on the distribution disk in the file README.2ND. This manual is divided into the following sections:
* The Features of B/P Bios summarizes the significant features of B/P Bios in general, highlighting advantages and the few limitations in the system.
* Tailoring B/P Bios contains details on altering the many options to generate a customized `.REL` file tailored to your system.
* Installing a B/P Bios details the installation of B/P Bios in both Unbanked and Banked configurations in a "how to" fashion.
* Programming for B/P Bios describes the interfaces, data structures and recommended programming practices to insure the maximum benefit and performance from systems with B/P Bios.
* The B/P Bios Utilities describes the purpose, operation, and customization of all supplied B/P Bios utilities and support routines.
* Appendices which summarize various technical information.
* A glossary defining many technical terms used in this Manual.
* An index of key words and phrases used in this Manual.
For those not interested in the technical details, or who want to bring the system up with a pre-configured version as quickly as possible, Section 4, Installing a B/P Bios, will lead you through the installation steps needed to perform the final tailoring to your specific computer. Other chapters cover details of the individual software modules comprising the B/P Bios, and specifics on the utilities provided to ease you use of this product.
## 1.2 Notational Conventions
Various shorthand terms and notations are used throughout this manual. Terms are listed in the Glossary at the end of this manual.
Though the symbols seem cryptic at first, they are a consistent way of briefly summarizing program syntax. Once you learn to read them you can tell at a glance how to enter even the most complicated commands.
Several special symbols are used in program syntax descriptions. By convention, square brackets (\[\]) indicate optional command line items. You may or may not include items shown between brackets in your command, but if you do not, programs usually substitute a default value of their own. If items between brackets are used in a command, all other items between the brackets must also be used, unless these items are themselves bracketed.
All of the support utilities developed to support the B/P Bios system contain built-in help screens which use the above conventions to display helpful syntax summaries. Help is always invoked by following the command with two slashes (`//`). So for example,
`ZXD //`
invokes help for ZXD, the ZSDOS extended directory program. Interactive ZSDOS programs such as BPCNFG2 also contain more detailed help messages which appear as a session progresses.
Many utilities may be invoked from the command line with options which command the programs to behave in slightly different ways. By convention, options are given after other command parameters. For example, the `P` option in the command
`ZXD *.* P`
causes the ZXD directory utility to list all files (*.*) and send its output to the printer (P). For convenience, a single slash character (/) can often be used in place of leading parameters to signify that the rest of the command line consists of option characters. Therefore, the command
`ZXD /P`
is identical in meaning to the previous example (see 6.23 for more on ZXD).
## 1.3 What is B/P Bios?
B/P Bios is a set of software subroutines which directly control the chips and other hardware in your computer and present a standard software interface to the Operating System such as our ZSDOS/ZDDOS, Echelon's ZRDOS, or even Digital Research's CP/M 2.2. These routines comply with the CP/M 2.2 standards for a Basic IO System (BIOS) with many extensions; some based on CP/M 3.x (aka CP/M Plus), and others developed to provide necessary capabilities of modern software. When properly coded, the modules comprising a B/P Bios perform with all the standard support utilities, nearly all Z-System utilities, and most application programs without alteration.
The ability to operate Banked, Non-banked and Boot System versions of the Bios with a single suite of software, across a number of different hardware machines, plus the maximization of Transient Program Area for application programs in banked systems are features which are offered by no other system of which we are aware.
## 1.4 The History of B/P Bios
Our earlier work developing ZSDOS convinced us that we needed to attack the machine-dependent software in Z80-compatible computers and develop some standard enhancements in order to exercise the full potential of our machines. This premise is even more true today with large Hard Disks (over 100 Megabytes) being very common, needs for large RAM Drives, and an ever shrinking Transient Program Area. Attempts to gain flexibility with normal operating systems were constrained by the 64k addressable memory range in Z80-compatible systems, and forced frequent operating system changes exemplified by NZCOM and NZBLITZ where different operating configurations could be quickly changed to accommodate application program needs.
In the mid to late 1980's, several efforts had been made to bank portions of CP/M 2.2 "type" systems. XBIOS was a banked Bios for only the HD64180-based MicroMint SB-180 family. While it displayed an excellent and flexible interface and the ability to operate with a variety of peripherals, it had several quirks and noticeably degraded the computer performance. A banked Bios was also produced for the XLM-180 single board S-100 computer, but required special versions of many Z-System utilities, and was not produced in any significant quantity. Other spinoffs, such as the Epson portable, attempted banking of the Bios, but most failed to achieve our comprehensive goals of compatibility with the existing software base, high performance, and portability.
In 1989, Cam developed the first prototype of B/P Bios in a Non-banked mode on his TeleTek while Hal concentrated on extending ZSDOS and the Command Processor. As of 1997, B/P Bios has been installed on:
| Computer | Features |
| :--- | :--- |
| YASBEC | Z180 CPU, FD1772 FDC, DP8490 SCSI, 1MB RAM |
| Ampro LB w/MDISK | Z80 CPU, FD1770 FDC, MDISK 1MB RAM |
| MicroMint SB-180 | HD64180 CPU, SMS9266 FDC, 256KB RAM |
| MicroMint SB180FX | HD64180Z CPU, SMS9266 FDC, 512KB RAM |
| Compu/Time S-100 | Z80 CPU, FD1795 FDC, 1 MB RAM |
| Teletek | Z80 CPU, NEC765 FDC, 64KB RAM |
| D-X Designs P112 | Z182 CPU, SMC FDC37C665 FDC, Flash ROM, 512KB RAM (mods for 5380 SCSI and GIDE) |

View File

@@ -0,0 +1,36 @@
# 2 Features of B/P Bios
B/P BIOS is designed to be completely compatible with the CP/M 2.2 standards for a Basic IO System, as well as to provide many extensions needed for banked memory which is becoming so prevalent with newer systems and processors. Additionally, strict coding standards used in the various modules forming the BIOS ease interface problems with applications programs and provide a more robust framework for future development. The extensions added to the basic CP/M 2.2 foundation include many elements from Digital Research's CP/M 3 (aka CP/M Plus), but in a more logically consistent manner. Also included in banked versions are provisions for managing up to 8 MB of extended memory for banked applications, RAM Drives and potentially multitasking in future versions. To provide insight into the methodology used, let us now examine some of the features in a generic B/P Bios.
## 2.1 Character IO
As defined by Digital Research in their CP/M 2.2 standards, character IO consisted of logical devices referred to as TTY, CRT, UC1, CON, etc. B/P Bios extends and generalizes these interfaces using the IOBYTE to define four physical devices called COM1, COM2, PIO and NUL. The first two, COM1 and COM2, are serial ports; PIO is a Parallel port, while NUL is a "bit-bucket" which can be replaced by a customized driver, or used in lieu of an actual device. Digital Research provided only a limited interface capability to the character devices in CP/M 2.2, consisting of a Console (CON), an auxiliary Input and Output (RDR/PUN), and a Printer (LST). The ability to sense Input and Output Status with these devices was extremely limited and was enhanced in CP/M 3. These enhanced capabilities are completely incorporated into B/P Bios with the addition of strict register usage so that only relevant registers may be altered in the respective routines. By manipulating the IOBYTE, any of the four physical devices may be used in the three logical devices of CONsole, AUXiliary, and Printer (LST).
Also featured in B/P Bios are modifications of CP/M 3 functions to initialize (or re-initialize) all devices and parameters, and return the address of a table which contains names and parameters of the defined character devices. While not totally compatible with CP/M 3 equivalents, these functions are consistent with the spirit and functionality needed with this advanced system. Included in the device table are; flags defining whether the device is capable of Input, Output or Both, Data rates for serial devices (Maximum and Set), Serial data format where applicable, and Handshaking method (CTS/RTS, XON/XOFF or None), as well as Input and Output Data masks for stripping unneeded bits from characters during IO.
## 2.2 Mass Storage IO
All versions of Digital Research's CP/M BIOSes define only a generic Disk driver with implementations of Floppy, Hard, RAM and Tape drives left to the user or developer. In B/P Bios, we went several steps further to ease many problems. First, we retained all standard CP/M 2.2 functions and parameters, added CP/M 3 features for returning the Disk Parameter Header (DPH) table address, and flushing of the software deblocking code segment, and added a new vector to the BIOS jump table to provide a standard method of directly addressing low-level device functions. Several standard low-level Floppy Disk functions are supported and used by the standard utilities, including a function to return the type of Disk Controller in use which permits a single support utility to adapt to a wide variety of hardware platforms. In a like manner, low-level functions are provided for SCSI/SASI Hard Disk drives, and provisions for RAM Disk drives in the event special hardware is implemented. The methods used to implement these access mechanisms may be logically extended to handle Tape Drives or Network Interfaces.
## 2.3 Clock Support for Time and Date
Many Hardware vendors have added provisions for Time and Date as non-standard extensions to CP/M 2.2 BIOSes, and more have incorporated such support into CP/M 3 BIOSes. We opted to define the CP/M 3 clock vector as a ZSDOS-standard clock building on our previous Operating System work. This entry point into the Bios completely complies with our ZSDOS standards and can completely replace the separate clock driver when used with ZSDOS. For systems capable of returning tenths-of-seconds, such as the YASBEC and SB-180, the standard has been enhanced to support this capability as well.
## 2.4 Banked Memory Support
While Digital Research added banked memory support to their CP/M 3, it was in a manner incompatible with Bios interface standards defined for earlier CP/M standards. The method used in B/P Bios is compliant with CP/M 2.2 in direct accessing of Bios functions with only one minor exception when using the Banked ZSDOS2, and contains many of the CP/M 3 extensions added for banked memory support, with some being modified to be consistent with standards adopted for Z-System software. The exception to CP/M 2.2 accesses occurs when the Operating System can access certain buffers in the System Memory Bank. With ZSDOS 2, Allocation Bit Buffers (ALV), Check Buffers (CSV), and the Disk Host Buffer are all contained in the System Bank and not directly accessible from Transient Programs. To compensate for this, we have added a command to ZSDOS 2 to return the free space on disks (the most common reason for accessing these buffers) and tailored several utilities to adapt to banked and non-banked systems.
In addition to the primitives initiated by Digital Research, we added functions to directly access Words and Bytes in extended banks of memory, Directly accessing software routines contained in alternate memory banks, and properly managing the system when errors occur. These features make B/P Bios much more robust and resilient than other products. These features are implemented by methods transparent to the system utilities so that the same functions are available in both banked and non-banked versions.
## 2.5 Other Features
B/P Bios contains a standardized identification method which may be used to determine the hardware on which the software is operating. This allows applications to "adapt" to the environment in a manner similar to that used in the rest of the Z-System community. It also minimizes system "crashes" by executing programs which assume certain hardware features which may be detrimental if executed on other systems. The effects of identification of physical system parameters is most readily noticed by virtue of a single suite of support programs performing low-level functions such as formatting and diagnostics which function across widely differing hardware platforms. Portability on this scale can rarely be seen in other computer systems.
The ZCPR 3.4 Environment with extensions is mandatory in a B/P Bios system. Beginning with the addition of System Segment address and size information for CPR, DOS and BIOS which were added in the ZCPR 3.4 Environment, B/P Bios also adds a Resident User Space which may be used to locate unique routines for custom applications in a manner similar to, but more consistent than NZ-COM. An Environment Version number of 90H identifies the Z3 Environment as being compliant with B/P definitions.
In Banked systems, application programs may also be placed in alternate memory banks using location and sizing information contained at standard positions within the Bios Header Structure. This feature permits significantly greater functionality without sacrificing precious Transient Program Area. While the scheme employed in the initial distribution is subject to minor adjustments as the banked ZSDOS2 becomes more firmly developed, experimentation and suggestions into this realm are encouraged.

View File

@@ -0,0 +1,232 @@
# 3 Tailoring a B/P Bios
To customize a B/P Bios for your use, or adapt it to a new hardware set, you will need an editor and an assembler capable of producing standard Microsoft Relocatable files. Systems using the Hitachi HD64180 or Zilog Z180 must be assembled with either ZMAC or SLR180 which recognize the extended mnemonic set, or with a Z80 assembler and MACRO file which permits assembly of the extended instructions. For Z80 and compatible processors, suitable assemblers include ZMAC and Z80ASM. For any assembler, failure to produce standard Microsoft Relocatable code will preclude the ability of our Standard utilities to properly install B/P Bios systems.
## 3.1 Theory of Operation
In order to understand the need for, and principles behind B/P Bios, you must understand the way in which CP/M 2.2, as modified by the Z-System, uses the available memory address space of a Z80 microprocessor. For standard versions of CP/M and compatible systems, the only absolute memory addresses are contained in the Base Page which is the range of 0 to 100H. All addresses above this point are variable (within certain limits). User programs are normally run from the Transient Program Area (TPA) which is the remaining space after all Operating System components have been allocated. The following depicts the assigned areas pictorially along with some common elements assigned to each memory area:
```generic
FFFFH /------------------\
| Z-System Buffers | ENV, TCAP, IOP, FCP, RCP
|------------------|
| Bios | Code + ALV, CSV, Sector Buffers
|------------------|
| Operating System | CP/M 2.2, ZRDOS, ZSDOS1
|------------------|
| Command Processor| CCP, ZCPR3.x
|------------------|
| Transient |
| |
| Program |
| |
| Area |
0100H |------------------|
| Base Page | IOBYTE, Jmp WB, Jmp Dos, FCB, Buffer
0000H \------------------/
```
As more and more functionality was added to the Z-System Buffers, bigger drives were added using more ALV space, and additional functionality was added to Bios code in recent systems, the available TPA space has become increasingly scarce.
B/P Bios attacks this problem at the source in a manner which is easily adaptable to different hardware platforms. It uses additional memory for more than the traditional role of simple RAM Disks, it moves much of the added overhead to alternate memory banks. The generic scheme appears pictorially as:
```generic
FFFFH /----------\
| |
| BNK1 |
| |
8000H |----------| /----------\ /----------\ /----------\
| | | |\ | |\ | |\
| BNK0 | | BNK2 | | BNKU | | BNK3 ||\
| | | || | || | |||
0000H \----------/ \----------/ \----------/ \----------/
\- - - - - / \- - - - - / \- - - - - /|
| BNKM |
\----------/
TPA SYSTEM USER RAM DISK
```
As can be seen from the above diagram, multiple banks of memory may be assigned to different functional regions of memory, with each 32k bank (except for the one defined as BNK1) being switched in and out of the lower 32k of the processor's memory map. The bank defined as BNK1 is ALWAYS present and is referred to as the Common Bank. This bank holds the portions of the Operating System (Command Processor, Operating System, BIOS, and Z-System tables) which may be accessed from other areas, and which therefore must always be "visible" in the processor's memory. It also contains the code to control the Bank switching mechanisms within the B/P Bios.
To illustrate this functional division, the memory map of a basic B/P Bios system is divided as:
```generic
FFFFH /------------------\
| Z-System Buffers |
|------------------|
| User Space |
|------------------|
| Bios |
|------------------|
| Operating System |
|------------------|
| Command Processor| /------------------\ 8000H
|------------------| / | Bios Buffers |
8000H | Transient | | Banked Bios Part |
| | |------------------|
| | | Banked Dos Part |
| Program | |------------------|
| | | Banked CCP Part |
| | |------------------|
| Area | | CCP Restoral |
0100H |------------------| |------------------| 0100H
| Base Page | | Base Page Copy |
0000H \------------------/ \------------------/ 0000H
TPA (BNK0/BNK1) System Bank (BNK2)
```
The B/P Bios banking concept defines a one byte Bank Number permitting up to 8 Megabytes to be directly controlled. Certain assumptions are made in the numbering scheme, the foremost of which is that BNK0 is the lowest physical RAM bank, BNK1 is the next incremental RAM bank, with others follow in incrementing sequential order. A couple of examples may serve to illustrate this process. The YASBEC is offered with a couple of options in the Memory Map. Units with the MEM-1, 2 or 3 decoder PALs assign the first 128k bytes of physical memory to the Boot ROM, so BNK0 is set to 4 (Banks 0-3 are the ROM). The MEM-4 PAL only uses the first 32k (Physical Bank 0) for the ROM which means that BNK0 is assigned to 1, BNK1 to 2 and so on up to the 1 Megabyte maximum where BNKM is 31.
The Ampro Little Board equipped with MDISK, on the other hand, completely removes the Boot ROM from the memory map leaving a maximum of 1 MB of contiguous RAM space. In this system, BNK0 is set to 0 and BNKM to 31 of a fully equipped 1 MB MDISK board.
The region beginning after BNK1 is referred to as the System Bank. It begins at the bank number assigned to BNK2 and ends at the bank number immediately before that assigned to the User Bank, BNKU if present, or BNK3 if no User Bank area is defined.
If present, one or more 32k banks of memory may be defined with the BNKU equate for unique user programs or storage areas. This area begins with the bank number set to the label and ends at the bank number immediately before the BNK3 label. BNK3 defines a high area of physical memory which is most often used for a RAM Disk providing fast temporary workspace in the form of an emulated disk drive.
B/P Bios contains protection mechanisms in the form of software checks to insure that critical portions of the memory map are enforced. In the case of Non-banked systems, a check is made to insure that the system size is not so great that the Bios may overwrite reserved Z-System areas in high memory (RCP, IOP, etc). If a possible overflow condition is detected, the message
`++ mem ovfl ++`
will be issued when the system is started. In Banked Bios systems, this message will be displayed if the top of the system portions in the SYStem Bank exceeds the 32k bank size. For most systems, this space still permits drives of several hundred megabytes to be accommodated.
Since the Common portions of the operating system components must remain visible to applications, a similar check is made to insure that the lowest address used by the Command Processor is equal to or greater than 8000H. This factor is checked both in both MOVxSYS and BPBUILD with either a warning issued in the case of the former, or validity checks on entry in the case of the latter.
## 3.2 B/P Bios Files
This BIOS is divided into a number of files, some of which depend highly on the specific hardware used on the computer, and some of which are generic and need not be edited to assemble a working system. Much use is made of conditional assembly to tailor the resulting Bios file to the desired configuration. The Basic file, `BPBIO-xx.Z80`, specifies which files are used to assemble the Bios image under the direction of an included file, `DEF-xx.LIB`. It is this file which selects features and contains the Hardware-dependent mnemonic equates. By maintaining the maximum possible code in common modules which require no alterations, versions of B/P Bios are relatively easy to convert to different machines. The independent modules used in the B/P Bios system are:
| Filename | Description |
| :--- | :--- |
| `BOOTRAM.Z80` | (only needed in BOOT ROM applications) |
| `BOOTROM.Z80` | (only needed in BOOT ROM applications) |
| `BYTEIO.Z80` | Character IO per IOBYTE using IIO-xx routines |
| `DEBLOCK.Z80` | Disk Deblocking routines |
| `DPB.LIB` | 3.5/5.25" Floppy Format Definitions (if AutoSelect) |
| `DPB8.LIB` | 8"/Hi-Density Floppy Format Definitions (if AutoSelect) |
| `DPB2.LIB` | Additional Floppy Definitions (optional if AutoSelect) |
| `DPBRAM.LIB` | Fixed Floppy Format Definitions (if Not AutoSelect) |
| `DPH.LIB` | Disk Parameter Header Table & Floppy definitions |
| `FLOPPY.Z80` | Floppy Disk High-Level Control |
| `SECTRAN.Z80` | Sector Translate routines |
| `SELFLP1.Z80` | Floppy Select routine (if Not auto selecting) |
| `SELFLP2.Z80` | Floppy Select routine (if auto selecting) |
| `SELRWD.Z80` | Generic Read/Write routines |
| `Z3BASE.LIB` | ZCPR 3.x file equate for Environment settings |
Other files are hardware version dependent to varying extents. These modules requiring customization for different hardware systems are given names which end with a generic "-xx" designator to identify specific versions. Tailoring these modules ranges from simple prompt line customization to complete re-writes. Versions of B/P Bios generated to date are identified as:
| ID | Computer system |
| :---: | :--- |
| `-18` | MicroMint SB-180 | (64180 CPU, 9266 FDC, 5380 SCSI) |
| `-YS` | YASBEC | (Z180 CPU, 1772 FDC, DP8490 SCSI) |
| `-AM` | Ampro Little Board | (Z80 CPU, 1770 FDC, 1MB MDISK) |
| `-CT` | Compu/Time S-100 board set | (Z80 CPU, 1795 FDC, 1MB Memory) |
| `-TT` | Teletek | (Z80 CPU, 765 FDC) |
Files associated with specific hardware versions or require tailoring are:
| Filename | Description |
| :--- | :--- |
| `BPBIO-xx.Z80` | Basic file, tailored for included file names |
| `CBOOT-xx.Z80` | Cold Boot routines, Sign-on prompts |
| `DEF-xx.LIB` | Equates for option settings, mode, speed, etc. |
| `DPBHD-xx.LIB` | Hard Drive Partition Definitions (optional) |
| `DPBM-xx.LIB` | Ram Drive Definition (optional) |
| `DPHHD-xx.LIB` | Hard Drive DPH definitions (optional) |
| `DPHM-xx.LIB` | Ram Drive DPH Definition (optional) |
| `FDC-xx.Z80` | Floppy Disk Low-Level interface/driver routines |
| `HARD-xx.Z80` | Hard Drive Low-Level interface/driver routines (optional) |
| `IBMV-xx.Z80` | Banking Support Routines (if banked) |
| `ICFG-xx.Z80` | Configuration file for speed, Physical Disks, etc. |
| `IIO-xx.Z80` | Character IO definitions and routines |
| `RAMD-xx.Z80` | Ram Drive interface/driver routines (optional) |
| `TIM-xx.Z80` | Counter/Timer routines and ZSDOS Clock Driver |
| `WBOOT-xx.Z80` | Warm Boot and re-initialization routines |
## 3.3 B/P Bios Options
The most logical starting point in beginning a configuration is to edit the `DEF-xx.LIB` file to select your desired options. This file is the basic guide to choosing the options for your system, and some careful choices here will minimize the Bios size and maximize your functionality. Some of the more important options and a brief description of them are:
**MOVCPM** - Integrate into MOVCPM "type" loader? If the system is to be integrated into a MOVCPM system, the Environment descriptor contained in the CBOOT routine is always moved into position as part of the Cold Start process. If set to NO, a check will be made to see if an Environment Descriptor is already loaded, and the Bios copy will not be loaded if one is present.
NOTE: When assembling a Bios for Boot Track Installation (MOVCPM set to YES), many options are deleted to conserve space and the Bios Version Number is forced to 1.1.
**BANKED** - Is this a banked BIOS? If set to YES, the Bank control module, IBMV, is included in the assembly, and much of the code is relocated to the system bank. Note that a Banked system CANNOT be placed on the System Tracks, or integrated into a MOVCPM image.
**IBMOVS** - Are Direct Inter-Bank Moves possible? If set to YES, direct transfer of data between banks is possible such as with the Zilog Z180/Hitachi 64180. If NO, a 256-byte transfer buffer is included in high Common Memory and Interbank moves require transfer of bytes through this buffer.
**ZSDOS2** - Assemble this for a Banked ZSDOS2 system? If YES, the ALV and CSV buffers will be placed in the System bank invisible to normal programs. This has the side effect that many CP/M programs which perform sizing of files (Directory Listers, DATSWEEP, MEX, etc) which do not know about this function will report erroneous sizes. The advantage is that no sacrifice in TPA is required for large Hard Disks. Set this to NO if you want strict CP/M 2.2 compatibility.
**FASTWB** - Restore the Command Processor from the System Bank RAM? If set to YES, Warm Boots will restore the Command Processor from a reserved area in the System RAM bank rather than from the boot tracks. For the maximum benefit of B/P Bios, always attempt to set this to YES. In systems without extended memory, it MUST be set to NO.
**MHZ** - Set to Processor Speed in closest even Megahertz (e.g. for a 9.216 MHz clock rate, set to 9). The value entered here is used in many systems to compute Timing values and/or serial data rate parameters.
**CALCSK** - Calculate Diskette Skew Table? If NO, a Skew table is used for each floppy format included in the image. Calculating Skew is generally more efficient from a size perspective, although slightly slower by factors which are so small as to be practically unmeasurable.
**HAVIOP** - Include IOP code into Jump table? If the IOPINIT routine satisfies your IOP initialization requirements, you may turn this off by setting to NO and save a little space. This typically will be turned off when generating a system for MOVCPM integration to conserve space.
**INROM** - Is the Alternate Bank in ROM? Set to NO for Normal Disk-based systems. Please contact the authors if you need additional information concerning ROM-based system components.
**BIOERM** - Print BIOS error messages? Set this to YES if you desire direct BIOS printing of Floppy Disk Error Messages. If you are building a BIOS for placement on Boot Tracks, however, you will probably not have room and must turn this Off. Set to NO to simply return the normal Success/Fail error flag with no Message printout.
**FLOPY8** - Include 8"/Hi-Density Floppy Formats? Some systems (SB-180, Compu/Time) can handle both 5.25" and 8" disks. If your hardware supports the capability and you want use 8" disks as well as the normal 3.5 and 5.25" diskettes, setting this to YES will add formats contained in `DPB8.LIB` and control logic to the assembly. Future systems may take advantage of the "High-Density" 3.5 and 5.25" Floppy Disks which use higher data rates. Their definitions will be controlled by this flag as well.
NOTE: If AUTOSL is set to NO, this option will probably cause the BIOS to be larger than necessary since these additional formats may not be accessible.
**MORDPB** - Use more Floppy DPB's (in addition to normal 4-5.25" and optional 8")? If YES, the file `DPB2.LIB` is included. Many of the formats are Dummies and may be filled with any non-conflicting formats you desire.
NOTE: If AUTOSL if set to NO, this option will probably cause the BIOS to be larger than necessary since these additional formats may not be accessible.
**MORDEV** - Include Additional Character Device Drivers? Is set to YES, user-defined drivers are added to the Character IO table, and associated driver code is assembled. Systems featuring expansion board such as the SB-180 and YASBEC may now take advantage of additional serial and parallel interfaces within the basic Bios. Set to NO to limit code to the basic 4 drivers.
NOTE: When assembling a Bios for Boot Track Installation (MOVCPM set to YES), MORDEV is overridden to conserve space, and the Bios Version Number is forced to 1.1 in the distribution files.
**BUFCON** - Use type ahead buffer for the Console? If set to YES, code is added to create and manage a type-ahead buffer for the driver assembled as the console. This device will be controlled by either interrupts (in systems such as the YASBEC and SB-180) or background polling (in Ampro and Compu/Time). This means that characters typed while the computer is doing something else will not be lost, but will be held until requested.
**BUFAUX** - Use type ahead buffer on Auxiliary Port? As with BUFCON above, setting to YES will add code to create and manage a type ahead buffer for the auxiliary device. Since the AUX port typically is used for Modem connections, buffering the input will minimize the loss of characters from the remote end.
**AUTOSL** - Auto-select floppy formats? If set to YES, selection of Floppy disks will use an algorithm in `SELFLP2.Z80` to identify the format of the disk from the DPB files included (`DPB.LIB`, optional `DPB8.LIB`, and optional `DPB2.LIB`) and log the disk if a match is found. There must be NO conflicting definitions included in the various files for this to function properly. See the notes in the various files to clarify the restrictions. If set to NO, the single file `DPBRAM.LIB` is included which may be tailored to contain only the fixed format or formats desired per disk drive. This results in the smallest code requirement, but least flexibility.
**RAMDSK** - Include code for a RAM-Disk? If set to YES, any memory above the System or User bank may be used for a RAM Drive (default is drive M:) by including the file `RAMD-xx.Z80`. Parameters to determine the size and configuration are also included in the files `DPHM-xx.LIB` and `DPBM-xx.LIB`. In systems without extended memory, or to conserve space such as when building a system for the boot tracks, this may be disabled by setting to NO.
**HARDDSK** - Include SCSI Hard Disk Driver? Set to YES if you wish to include the ability to access Hard Disk Drives. In a floppy-only system, a NO entry will minimize BIOS code.
**HDINTS** - (System Dependent) In some systems such as the YASBEC, Interrupt-driven Hard Disk Controllers using DMA transfer capabilities may be used. If you wish to use this type of driver specified in the file `HARDI-xx.Z80` instead of the normal polled routines included in `HARD-xx.Z80`, set this option to TRUE. In most cases, this driver will require more Transient Program Area since the Interrupt Handling routine must be in Common Memory.
**CLOCK** - Include ZSDOS Clock Driver Code? If set to YES, the vector at BIOS+4EH will contain a ZSDOS-compatible clock driver with the physical code contained in the `TIM-xx.Z80` module. If set to NO, calls to BIOS+4EH return an error code.
**TICTOC** - (System Dependent) Use pseudo heartbeat counter? This feature is used in systems such as the Ampro Little Board and Compu/Time SBC880 which do not have an Interrupt scheme to control a Real Time Clock. Instead, a series of traps are included in the code (Character IO Status polls, Floppy Disk Status polls) to check for overflow of a 1-Second Counter. It is less desirable than an Interrupt based system, but suffices when no other method is available. Set to NO if not needed.
**QSIZE** - Size in bytes of type ahead buffers controlled by BUFCON and BUFAUX.
**REFRSH** - Activate Dynamic Refresh features of Z180/HD64180 processors? In some computers using these processors such as the YASBEC, refresh is not needed and merely slows down processing. Set to NO if you do not need this feature. If your processor uses dynamic memory, or needs the signal for other purposes (e.g. The SB180 uses Refresh for Floppy Disk DMA), Set this to YES.
**Z3** - Include ZCPR init code? Since a Z3 Environment is mandatory in a B/P Bios (which now "owns" the Environment), this option has little effect.
For assembly of a Banked version of B/P Bios, the identification of various banks of memory must be made so that the various system components "know" where things are located. Refer to Section 3.1 above for a description of these areas. The BNK0 value should be the first bank of RAM in the System unless other decoding is done. The following equates must be set:
| Equate | Description |
| :--- | :--- |
| BNK0 | First 32k TPA Bank (switched in/out) |
| BNK1 | Second 32k TPA Bank (Common Bank) |
| BNK2 | Beginning of System Bank (BIOS, DOS, CPR) area |
| BNKU | Beginning of Bank sequence for User Applications |
| BNK3 | Beginning of Extra Banks (first bank to use for RAM Disk) |
| BNKM | Maximum Bank Number assigned |
## 3.4 Configuration Considerations
When assembling a version of B/P Bios for integration into an IMG file, size of the resulting image is not much of a concern, so you need not worry about minor issues of size. For integration into a system for loading onto diskette boot tracks, however, the limitation is very real in order to insure that the CPR/DOS/BIOS and Boot Sector(s) can fit on the reserved system tracks. Typically, a limit of slightly under 4.5k exists for the Bios component. When the MOVCPM flag is set to YES for this type of assembly, warnings will be issued when the image exceeds 4352 bytes (the maximum for systems with 2 boot records), and 4480 bytes (the maximum for systems with a single boot record). Achieving these limits often requires disabling many of the features.
The first thing you should do before assembling the BIOS is to back up the entire disk, then copy only the necessary files onto a work disk for any editing. After setting the options as desired, edit the hardware definitions in `ICFG-xx.Z80` to reflect the physical characteristics of your floppy and hard drives, as well as any other pertinent items. Then edit the logical characteristics for your Hard and Ram Drives (if any) in `DPBHD-xx.LIB` and `DPBM-xx.LIB`. If you do not desire any of the standard floppy formats or want to change them, edit `DPB.LIB` and/or `DPB2.LIB` (if using auto selection) or `DPBRAM.LIB` if you are using fixed floppy formats. Finally edit the DPH files to place the logical drives where desired in the range A..P.
Decide whether you want to generate a system using the Image file construct developed in support of B/P Bios (BPBUILD/LDSYS), or for integration on a floppy disk's boot tracks. If the latter, you probably will not be able to have all options turned on. For example, with the MicroMint SB-180, the following options must be turned Off: BANKED, ZSDOS2, BIOERM, FLOPY8, MORDPB, BUFAUX and usually either CLOCK or RAMDSK. As an aid to space reduction, conditional assembly based on the MOVCPM flag automatically inhibits all but double-sided Floppy formats from `DPB.LIB`. If configuring for Floppy Boot tracks (MOVCPM flag set to TRUE), a warning will be printed during assembly if the size exceeds that available for a One or Two-sector boot record. Using the BPBUILD/LDSYS method, you may vary nearly all system parameters, even making different systems for later dynamic loading.
If you are using a version of the B/P Bios already set for your type of computer, you are now ready to assemble, build a system and execute it. The only remaining task would be an optional tailoring of the sign on banner in the file `CBOOT-xx.Z80` and reassembly to a `.REL` file.
For those converting a standard version of the B/P Bios to a new hardware system, we recommend that you begin with a Floppy-only system in Non-Banked mode then expand from there. The easiest way to test out new versions is to use the System Image (IMG file) mode, then advance to boot track installations if that is desired. Enhancements that can be added after testing previous versions may be to add Hard Drives, RAM Drive, and finally Banking.

View File

@@ -0,0 +1,200 @@
# 4 Installing a B/P Bios
The Distribution diskette(s) on which B/P Bios is furnished are configured for booting from the vanilla hardware for the version ordered. A 9600 bps serial terminal is standard, and will allow you to immediately bring up a minimal Non-Banked Floppy Disk system. Due to the variety of different system configurations and size restrictions in some versions, only the Floppy Disk Mass Storage capability can be assured on the initial boot disk. Where space remained on the boot tracks, limited Hard Drive support is also provided, and in some configurations, even RAM Drive support exists.
After booting from either an established system, or the boot tracks of the distribution disk, format one or more fresh diskettes and copy the distribution diskette(s) contents to the backup diskette(s). Copy the boot tracks from the master to the copies using BPSYSGEN (see 6.6). Remove the master diskette(s) for safekeeping and work only with the copies you just made.
Using the backup diskette with the B/P utilities on it, execute BPCNFG in the Boot Track configuration mode (see 6.2), adjusting all the options to your specific operating environment. When you have completed tailoring the system, it is ready for booting by placing the diskette in drive A: and resetting the system.
The sample `STARTUP.COM` file on the distribution disk will automatically execute a sequence of instructions when the system is booted. It contains various instructions which further tailor the system and load portions of the operating system which are too big to fit on the boot tracks. The default instruction sequence is:
| Command | Explanation |
| :--- | :--- |
| `LDDS` | Load the DateStamper style File Stamp routine and clock |
| `LDR SYS.RCP,SYS.FCP,SYS.NDR` | Load ZCPR 3 Environment segments for Resident Command Processor, Flow Control Pkg and Named Dirs |
| `IOPINIT` | Initialize the IO Processor Pkg |
| `TD S` | Prompt for Date and Time, Set Clk / Alternatives are to use `TDD` (6.21) or `SETCLOK` (6.18) |
| `IF ~EX MYTERM.Z3T` | If the file `MYTERM.Z3T` does Not exist... |
| `TCSELECT MYTERM.Z3T` | ..select which terminal you have creating a `MYTERM.Z3T` file |
| `FI` | ...end of the `IF` |
| `LDR MYTERM.Z3T` | Load the Terminal Definition data |
If you wish to alter any of these initial instructions to, for example, initialize the RAM drive using INIRAMD, add File Time Stamp capabilities to it with INITDIR or PUTDS and copy some files there with COPY, these may be added with ALIAS, VALIAS, SALIAS or other compatible files available from the ZSYSTEM or ZCPR33 areas on Z-Nodes.
After the initial system is up and running from the Default Boot Track system, you may expand the operation by generating systems for different purposes in order to gain the most advantage from your system. Many types of installation are possible, the simplest of which is a Non-Banked system using only 64k of the systems memory, all of which is in primary memory. Such a system uses a normal Command Processor such as the ZCPR3.x family, and a Non-Banked Operating System such as our ZSDOS Version 1. Non-Banked systems may be installed on a Disk's Boot Tracks, or created as an Image File for dynamic loading using the LDSYS Utility (see 6.15).
Banked systems MUST be created with the BPBUILD Utility (see 6.1) and loaded with LDSYS (see 6.15). The techniques to manage different memory banks to form a complete Operating Environment are rather intricate and are best handled by our utilities. Many Image files may be created and loaded as needed to tailor your system for optimum performance. The following sections describe these various types of installations in detail.
## 4.1 Boot Track Installation
For most of the existing CP/M compatible computers to begin executing a Disk Operating System, a program must be placed on a specified area of a Floppy or Hard Disk Drive. Normally, the first two or three tracks on the disk are reserved for this purpose and are referred to as the "Boot Tracks". Since the space so defined is generally restricted, neither a complete B/P Bios nor a Banked installation is possible. Instead, a scaled-down system roughly equivalent to those currently in use is used to start the computer and serve as the Operating System, with larger systems loaded later as needed.
If you are using a pre-configured version of B/P Bios for your hardware, you may simply continue to use the Boot Track system from the distribution disk(s) by copying the system as described in Section 4 above using BPSYSGEN (see 6.6). If you elect to alter or otherwise customize the Boot Track system, you must assemble the B/P Bios source setting certain of the equates in the `DEF-xx.LIB` file to insure a correct type of system. To assemble a Boot Track system, the most important equates are:
| Equate | |
| :---: | :--- |
| `MOVCPM` | Set to `YES` |
| `BANKED` | Set to `NO` |
| `ZSDOS2` | Set to `NO` |
One element of Banked Systems is available in a Boot Track installation if additional memory is available, and your B/P Bios routines support such a feature. This feature reloads the Command Processor from Banked memory instead of from the Boot Tracks of a disk, and generally produces less code (taking less space on the Boot Tracks) and executes faster. It is set with:
| Equate | |
| :---: | :--- |
| `FASTWB` | Set to `YES` if desired, `NO` if Warm Boot from disk |
Some of the features that generally need to be disabled to scale a smaller system are set as:
| Equate | |
| :---: | :--- |
| `MORDPB` | Set to `NO` |
| `DPB8` | Set to `NO` |
| `MORDEV` | Set to `NO` |
When at least these equates and any others you desire to change (see section 4) have been made to the component files of the system, assemble your `BPBIO-xx` file to a Microsoft standard `.REL` file. This output file may be used to overlay the Bios portion of the `MOVxSYS.COM` system generation utility (see 6.16) furnished with your distribution disk, or an equivalent program provided with your computer. MOVxSYS or its equivalent (MOVCPM, MOVZSYS, etc) is a special program customized for your particular hardware containing all the Operating System components which will be placed on the Boot Tracks, along with a routine to alter the internal addresses to correspond to a specified memory size.
To Add the new Bios you just assembled, execute INSTAL12 (see procedures in 6.13) specifying your computer's MOVxSYS or equivalent program and follow the prompts to overlay the new Bios. Once INSTAL12 has saved a relocatable or absolute file, you are ready to create a boot disk containing the modified system.
If you used the command INSTAL12 to install system segments on MOVxSYS or equivalent program, you must first create an Absolute System Model file. Since the functional portion of your new program is identical to the original MOVxSYS or equivalent, use the method explained in your original documentation to generate a new system. With MOVxSYS, the command is:
| Command | |
| :---: | :--- |
| `MOVxSYS nn *` | replace MOVxSYS with your version |
Where `nn` is the size of the system (typically 51 for a moderate boot system). The asterisk tells the program to retain the image in memory and not write it to a disk file. You may now use BPSYSGEN to write the new image to the system tracks of your boot diskette. Do this by executing BPSYSGEN with no arguments and issue a single Carriage Return when asked for the source of the Image.
If you used the command `INSTAL12 /A` to install replacement system segments over a System Image file, or used a utility which wrote the new image to a disk file, use BPSYSGEN to write the image file to the system tracks of your boot disk. The proper command is
`BPSYSGEN filename`
where filename is the name of the disk file you just created by executing MOVxSYS or equivalent with output to a disk file, or with INSTAL12 on an existing image file.
If the system is written to a Hard Disk, and your system supports booting from a Hard Disk such as the YASBEC, you normally must alter the default Boot Sector from the default Floppy Disk Boot Sector contained in MOVxSYS or equivalent. This alteration is accomplished by HDBOOT (see 6.9) which must be customized to the specific Hardware System used.
After the above actions have been completed as appropriate, tailor the Boot Track system to reflect the desired starting configurations with BPCNFG (see 6.2). Such items as the desired Startup file name, Bank Numbers (critical if FASTWB is used), and drive types and assignments are routinely tailored at this point. When the you have finished this step, test your new system by resetting the system, or cycling the power and you should be up and running!
## 4.2 Non-Banked Image Installation
A Non-Banked system may be installed as an Image File as opposed to the basic Boot Track installation covered in 4.1 above. To create an Image File, you must have `.REL` or `.ZRL` versions of a Command Processor (ZCPR3.x or equivalent recommended), an Operating (`ZSDOS.ZRL` recommended), and a REL version of B/P Bios for your system assembled with the MOVCPM equate in `DEF-xx.LIB` set to NO. Other equates in this file may be set as described above for the Boot Track system. Since Image Files are not as constrained in size as is installation for Boot Tracks, more features may generally be activated such as Error Messages, RAM Drive, additional Hard Drive partitions, and complete Floppy Format suites. The main precaution here is that large Hard Drives will rapidly cause significant loss of Transient Program Area since all Drive parameters must be in protected high memory above the Bios.
After the Bios has been assembled, an Image file must be produced. This is accomplished with the BPBUILD Utility (see 6.1). Set the File names in Menu 1 to reflect only Non-Banked files (or minimally banked Bios if FASTWB is set to YES), and let BPBUILD do the work. Since the standard Non-Banked System segments are normally set to the "standard" CP/M 2.2 sizes, you may answer the "autosize" query with a Y to obtain the maximum Transient Program Area in the resulting system. When BPBUILD completes its work, a file, normally with the default type of `.IMG`, will have been placed in the currently logged Drive/User area and you are ready to perform the next step in preparation of the Non-Banked Image.
As with the Boot Track installation covered above, several system items must be tailored before the Image may be safely loaded and executed. This is done by calling BPCNFG with the Image file name as an argument, or specify Image configuration from the interactive menu (see 6.2). Set all items as you desire them in the operating system, particularly the Bank Numbers (if FASTWB is active), and the Disk Drive characteristics and assignments. When this has been satisfactorily completed, you are ready to load and execute the newly-created system.
Installing an Image File (default file type of `.IMG`) is extremely easy. Only the utility `LDSYS.COM` (see 6.15) is needed. If the file type has not been changed from the default `.IMG`, only the basic name of the Image File need be passed to LDSYS when executed as:
| Command | |
| :---: | :--- |
| `LDSYS IMGFILE` | where IMGFILE.IMG is your Image file name |
The operating parameters of the currently-executing system are first examined for suitability of loading the Image File. If it is possible to proceed, the Image File is loaded, placed in the proper memory locations, and commanded to begin execution by calling the B/P Bios Cold Boot Vector. The Cold Boot (Bios Function 0) performs final installation, displays any desired opening prompt and transfers control to the Command Processor with any specified Startup file for use by a ZCPR3.x Command Processor Replacement.
Since a non-banked Image File will probably closely resemble that contained on the Boot Tracks, the same STARTUP file may generally be used to complete the initial tailoring sequence. If a different file is desired, the Image File may be altered to specify a different file using BPCNFG.
## 4.3 Banked Bios, Non-banked System Installation
With the B/P Bios system, an Image system may be created and loaded which places portions of the Bios Only in the System bank, retaining a non-banked Operating System and therefore maximum compatibility with existing applications software. A few thousand bytes can normally be reclaimed for Transient Programs in this manner, although large and/or increasing numbers of logical drives will still reduce TPA space because of the need to store Allocation Vector information in Common Memory.
To prepare such a system, simply edit the needed Bios files if necessary with particular emphasis on the `DEF-xx.LIB` file where the following equates must be set as:
| Equate | |
| :---: | :--- |
| `MOVCPM` | Set to `NO` |
| `BANKED` | Set to `YES` |
| `ZSDOS2` | Set to `NO` |
Since banked memory MUST be available for this type of installation, you will probably want the Fast Warm Boot feature available to maximize system performance. To activate this option, set the following equate as:
| Equate | |
| :---: | :--- |
| `FASTWB` | Set to `YES` |
When the editing is complete, assemble the Bios to a Microoft `.REL` file with an appropriate assembler such as ZMAC and build an Image system with BPBUILD (see 6.1) changing the Bios file name in menu 1 to the name of the newly created Bios file. Next, configure the default conditions if necessary with BPCNFG (see 6.2) and you are ready to activate the new system in the same manner as all Image files by calling LDSYS with the Image file argument as:
| Command | |
| :---: | :--- |
| `LDSYS BBSYS` | where BBSYS.IMG is your Image File Name |
As with the completely Non-Banked system described above in Section 4.2, no new requirements are established for a Startup file over that used for the initial Boot System, since both the Command Processor and Disk Operating System are unbanked, and no data areas needed by application programs are placed in the System Bank. As with all Image Files, additional features such as full Bios Error Messages, more extensive Floppy Disk Formats and RAM drive may generally be included in the System definition prior to assembly since the size constraints of Boot Track systems do not apply.
## 4.4 Fully Banked Image Installation
To create a system taking maximum advantage of banked memory, a special banked Operating System and Command Processor are needed. These have been furnished in initial form with this package as `ZSDOS20.ZRL` and `Z40.ZRL` respectively. They use the Banking features of B/P Bios and locate the maximum practicable amount of executable code and data in the System Bank. Of significant importance to maximizing the Transient Program Area is that the Drive Allocation Bit maps are placed in the System Bank meaning that adding large hard drives, or multiple drives produce only minimal expansion to the resident portion of the Bios.
NOTE: The latest versions are `ZS203.ZRL`, `ZS227G.ZRL`, and `Z41.ZRL` as included in the public release of B/P Bios. See also sections 7 and 8.
A Fully banked Bios is created by editing the B/P Bios files as needed to customize the system to your desires. Insure that the following `DEF-xx.LIB` equates are set as:
| Equate | |
| :---: | :--- |
| `MOVCPM` | Set to `NO` |
| `BANKED` | Set to `YES` |
| `ZSDOS2` | Set to `YES` |
Assemble the resultant B/P Bios to a Microsoft `.REL` file, Build an Image file with BPBUILD (see 6.1) and configure the produced Image file with BPCNFG (see 6.2). When you are confident that all default settings have been made, activate the file by entering:
| Command | |
| :---: | :--- |
| `LDSYS FBANKSYS` | where FBANKSYS.IMG is your Image File Name |
Several differences may exist in the Startup file used for a Fully banked system. Generally the changes amount to deleting items such as a File Stamp module for the Non-banked ZSDOS1 which is not necessary with the fully-banked ZSDOS 2 and Z40. Only the type of clock need be specified for ZSDOS2. Furthermore, since the Z40 Command Processor Replacement contains most commonly-used commands gathered from a number of Resident Command Processor (RCP) packages, there is normally no need to load an RCP. A simple Startup file found adequate during development of the fully-banked B/P system is:
| Command | Explanation |
| :--- | :--- |
| `ZSCFG2 CB` | Set ZSDOS 2 clock to Bios+4EH |
| `LDR SYS.FCP,SYS.NDR` | Load ZCPR 3 Environment segments for Flow Control and Named Dirs |
| `IOPINIT` | Initialize the IO Processor Pkg |
| `TD S` | Prompt for Date and Time, Set Clk / Alternatives are to use `TDD` (6.21) or `SETCLOK` (6.18) |
| `IF ~EX MYTERM.Z3T` | If the file `MYTERM.Z3T` does Not exist... |
| `TCSELECT MYTERM.Z3T` | ..select which terminal you have creating a `MYTERM.Z3T` file |
| `FI` | ...end if the `IF` |
| `LDR MYTERM.Z3T` | Load the Terminal Definition data |
Since the requirements for a fully-banked system differ significantly from a non-banked one, we recommend that you use a different name for the Startup file. For example, `STARTUP.COM` is the default name used with Boot Track systems for initial operation, and with Non-banked Image Files, while STARTB may be a suitable name for the script to be executed upon loading a fully-banked system. The name of the desired Startup file may be easily altered in either Boot Track or Image systems from Option 1 in BPCNFG (see 6.2).
An option available to start from a large Image File is to configure a Startup file for execution by the Boot Track system containing a single command. The command would simply invoke LDSYS with the desired Banked Image File as an argument such as:
| Command | |
| :---: | :--- |
| `LDSYS BANKSYS` | where BANKSYS.IMG is your Image file |
In this case, none of the normal initialization sequences cited above would be executed by the Boot Track system, and only those contained in the Startup for `BANKSYS.IMG` would occur. Other options abound and are left to the community to invent new combinations and sequences.
## 4.5 In Case of Problems...
While We attempted to outline procedures for the majority of installations we considered feasible, there may be occasions where you inadvertently find yourself in a position where you seem to have lost the ability to get your system up and running.
**PROBLEM:** When loading an `.IMG` file with LDSYS, the screen displays the LDSYS banner, system addresses, and halts with the last screen displaying: "...loading banked system".
_SOLUTION:_ Something is not set correctly in the Bios, since all lines after the last one displayed are printed from the newly-loaded Bios. One of the most common causes for this problem is incorrect bank number settings. Use the hidden selection in Menu 1 of BPCNFG (see 6.2) to verify that the correct bank numbers have been set for TPA and SYStem banks. Another common cause of this problem is incorrect settings for the Console port, or a setting in the IOBYTE which directs Console data to a device other than the one intended. Use Menu 2 BPCNFG to properly set the IOBYTE and the console parameters.
**PROBLEM:** You boot from or load a B/P Bios system from a Hard Drive, and immediately after starting, the system attempts to log onto Floppy Drive 0.
_SOLUTION:_ The most common cause for this symptom is that the desired Hard Drive and Floppy Drive definitions were not swapped to define a Hard Drive Partition as the A: drive. Use BPCNFG (see 6.2), Menu 5 to exchange drives to the desired configuration. A similar situation may exist where a Hard Drive is activated immediately after booting when a Floppy drive is desired as the A: Drive.
**PROBLEM:** The computer seems to boot satisfactorily, but after a few programs or any program which executes a Warm Boot (or entering Control-C), the system goes into "Never-never Land" and must be reset.
_SOLUTION:_ This symptom is most often caused by an inability to access and load the Command Processor. This is most probably caused by assembling B/P Bios with the FASTWB equate in `DEF-xx.LIB` set to YES when the system contains no extended memory, or incorrect settings of the Bank Numbers. To check Bank Number settings, use the hidden function in BPCNFG, Menu 1 (see 6.2).
**PROBLEM:** When doing a Cold Boot from a Hard Drive (from Power up or Reset), the system goes to a Floppy Drive before displaying the initial sign on messages, and remains logged on the Floppy.
_SOLUTION:_ This is most often due to your forgetting to run the HDBOOT utility on the Hard Drive Boot system after applying it with BPSYSGEN. Normally, systems created with MOVxSYS contain a Floppy Disk Boot sector which will load the initial Operating System from a Floppy. HDBOOT (see 6.9) modifies this record on a specified Hard Drive Unit so that the Operating System is loaded from a Hard Drive. Run HDBOOT on the Desired Hard Drive, then use BPCNFG (see 6.2) to insure that the logical drives are positioned as desired (Menu 5).
**PROBLEM:** When Booting, the system console either doesn't display anything, or prints strange characters.
_SOLUTION:_ This is most often due to incorrect settings for the current Console, most probably the Data rate, or CPU Clock Frequency. Boot from a good system, then use BPCNFG (see 6.2) to adjust the settings on the problem system. Pay particular attention to Menu 1 (CPU Clock Rate) and Menu 2 (IOBYTE and Serial Port Data Rates).
**PROBLEM:** When running a fully-banked system with ZSDOS 2, some programs seem to "hang" or "lock up" the system on exit.
_SOLUTION:_ One of the most common sources of this symptom is with the application program where the author used code which assumes that the BDOS and Command Processor are of a certain size, or bear a fixed relationship to the addresses in page 0. You may experience this most often when using an IMG system built by answering YES to the Autosizing query in BPBUILD (see 6.1). To compensate for such ill-behaved programs, you may use a two-step build process as:
1. Use BPBUILD to create an IMG file answering YES to Autosizing on exit. This maximizes TPA placing the Resident Bios as high as possible in memory.
2. Execute BPBUILD again with an argument of the name you gave to the file just created above. This loads the definition from the IMG file. Immediately exit with a Carriage Return, and answer NO to Autosizing, and YES to placing system segments at standard locations. This procedure keeps the Bios address constant, but will move the starting addresses of BDOS and Command Processor down, if possible, to simulate "standard" sizes used in CP/M 2.2.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,37 @@
# 7 ZSDOS Version 2
Version 2 of ZSDOS is currently in a developmental phase. The version provided with this package is preliminary and should not be considered a final work. Be sure you back up any files which you don't mind sacrificing, and please let us know in as much detail as possible any problems you experience.
In addition to the ZSDOS Version call (Function 48) returning 20H signifying ZSDOS2, three new Operating System functions have been added. They are:
| Function 46 | Return Disk Free Space |
| ---: | :--- |
| Enter: | C = 46 (function #) |
| | E = Drive # (A=0..P=15) |
| Exit: | A = 0 if Ok, <>0 if Error |
| | Disk Free Space in kilobytes is placed in DMA+0 (LSB) thru DMA+3 (MSB) |
This function returns Disk Free Space from fully-banked systems where the ALV buffers are not directly accessible by applications programs. It **MUST** be used to reliably determine free space since there is no way for programs to ascertain which System Bank (if more than one) contains the Allocation Bit Map. For most reasonably-sized systems, only the lower two or three bytes will be used, but four bytes are allocated to accommodate a maximally-sized system.
| Function | Return Environment Descriptor Address |
| ---: | :--- |
| Enter: | C = 49 (function #) |
| Exit: | HL = Address of Env Desc. |
This function returns the address of a ZCPR 3.4 "type" Environment Descriptor needed in B/P Bios systems. Rather than rely on the Command Processor inserting the ENV address into application programs upon execution, this function may be used to reliably acquire the ENV address at any time.
| Function 152 | Parse File Name |
| ---: | :--- |
| Enter: | C = 152 (function #) |
| | DE = Pointer to dest FCB |
| | DMA --> start of parse string |
| Exit: | A = Number of "?" in fn.ft |
| | DE = points to delimiter |
| | FCB+15 will be 0 if parse Ok, 0FFH if errors occurred |
This function may be used to replace Z3LIB library routines in a more robust manner and produce consequently smaller applications programs. It is fully compliant with ZCPR 3.4 parse specifications.
## 7.1 NOTES Spring 2001
The versions of ZSDOS2 (the Banked Z-System DOS) and Z4x Banked Command Processor Replacement have been modified over the years. The manual may refer to specific versions, or by generic names. As of the Spring 2001 release under the GNU General Public License, Two versions of ZSDOS2 are provided; `ZS203.ZRL` which contains code for hashed directories, and `ZS227G,ZRL` which does not.

View File

@@ -0,0 +1,10 @@
# 8 ZCPR Version 4
`Z40.ZRL` is a consolidation of ZCPR34 and many of the RCP features commonly in use, modified by the need to bank as much of the Command Processor as possible. When Z40 is used in a Fully-Banked system, you may not need much of, or any Resident Command Processor with your system. Z40 relys on ZSDOS2 and will **NOT** work without it since the Command Line Parser and disk free space calculations have been removed in favor of ZSDOS2 services. Additionally, the prompt line displays the time and will only function correctly if he ZSDOS2 clock is enabled. Comments on how these new System components work would be appreciated.
More complete documentation is provided in the `Z40.HLP` files included with the distribution diskettes, and a list of active functions is available with the H command at the prompt. To read the On-line help files, use `HELP.COM` available for downloading from any Z-Node.
## 8.1 NOTES Spring 2001
The versions of ZSDOS2 (the Banked Z-System DOS) and Z4x Banked Command Processor Replacement have been modified over the years. The manual may refer to specific versions, or by generic names. As of the Spring 2001 release under the GNU General Public License, the latest version of the Z4x Processor Replacement is `Z41.ZRL` which features a small amount of tailoring. A new utility; **`CONFZ4.COM`** is available for this purpose.

View File

@@ -0,0 +1,100 @@
# GLOSSARY
**Application Programs**
In contrast to utility programs (see), application programs or applications are larger programs such as word processors which function interactively with the user.
**BDOS**
Basic Disk Operating System. The machine-independent, but usually processor-dependent, program which controls the interface between application programs and the machine-dependent hardware devices such as printers, disk drives, clocks, etc. It also establishes the concept of files on media and controls the opening, reading, writing, and closing of such constructs.
**BGii**
BackGrounder ii from Plu*Perfect Systems, a windowing task-switching system for CP/M users with hard or RAM disks.
**BIOS**
Basic Input/Output System. Machine-dependent routines which perform actual peripheral device control such as sending and receiving characters to the console, reading and writing to disk drives, etc.
**Bit**
BInary digiT. An element which can have only a single on or off state.
**Bit Map**
An array of bits used to represent or map large arrays of binary information in a compact form.
**Boot**
The term used for the starting sequence of a computer. Generally applies to starting from a "Cold," or power-off state, and includes the loading of Operating System, and configuration steps.
**Byte**
A grouping of eight bits.
**CPR**
Command Processor Replacement. Replaces CCP (see below). Example: ZCPR
**CCP**
Console Command Processor. The portion of the operating system that interprets user's commands and either executes them directly or loads application programs from disk for execution. The CCP may be overwritten by applications, and is reloaded by the "Warm Boot" function of the BIOS.
**Checksum**
An value which arithmetically summarizes the contents of a series of memory locations, and used to check the current contents for errors.
**Clock Driver**
A software link between a Non-banked ZSDOS and the clock on your system. The clock driver allows ZSDOS and its utilities to read the clock which is normally inherent in the B/P Bios.
**Command Script**
Sometimes called simply scripts, command scripts allow you to create a single command which issues other commands to perform a unique set of actions. CP/M submit files are one kind of command script familiar to all CP/M users. ZCPR also offers more sophisticated types of scripts such as aliases and command files (e.g., ALIAS.CMD).
**DateStamper**
A software package developed by Plu*Perfect Systems to allow time and date stamping of files. The Boot System uses an external module in the file LDDS.COM to implement DateStamper, while ZSDOS2 automatically supports this stamping method. DateStamper is unique among file stampers for microcomputers for two reasons: first, it maintains all file stamps within a file; second, it maintains stamps for create, access, and modify time/date for each file.
**DDT**
Dynamic Debugging Tool. A utility distributed with CP/M 2.2 which can display, disassemble, or alter disk files or areas of memory using opcodes or hexadecimal values.
**DOS**
Disk Operating System. Often used term for the BDOS, but generally refers to the aggregate of CCP, BDOS and BIOS.

View File

@@ -30,10 +30,13 @@ The original DRI CP/M 3.0 Operating System Documentation Set. This
should be considered the primary reference for CP/M 3 system operation.
NZCOM User's Manual ("NZCOM Users Manual.pdf")
----------------------------------------------
NZCOM, Z3PLUS, and replace ZCPR3.3 Documentation
------------------------------------------------
NZCOM operating system operation manual.
NZCOM operating system operation manual. ("NZCOM Users Manual.pdf")
Z3PLUS operating system operation manual. ("Z3PLUS Users Manual.pdf")
Z-System User Guide ("Z-System User Guide.pdf")
ZCPR3.3 Users Guide ("ZCPR3.3 Users Guide.pdf")
QP/M 2.7 Installation Guide and Supplements ("qpm27.pdf")
@@ -59,9 +62,22 @@ ZCPR D&J User Manual. This manual supplements the ZCPR Manual.
ZSDOS Manual ("ZSDOS Manual.pdf")
ZSDOS Programmer's Manual ("ZSDOS Programmers Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
1.x as included in RomWBW. The installation instructions can be
ignored since that work has already been completed as part of the
RomWBW distribution.
The ZSDOS Programmer's Manual is also included courtesy of Wayne
Hortensius and Randy Merkel. This manual includes documentation of the
ZSDOS BDOS API enhancements.
ZPM3 ("ZPM3.txt")
-----------------
A Z80 coded CP/M 3.0 compatible BDOS replacement with ZCPR support.
This minimal documentation is all that is provided with ZPM3.
-- WBW 8:38 AM 6/6/2025

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

483
Doc/CPM/ZPM3.txt Normal file
View File

@@ -0,0 +1,483 @@
Z P M 3 by Simeon Cran
========================
A Z80 coded CP/M 3.0 compatible BDOS replacement.
The first public release: 27/3/92
This document dated: 16/6/92
Distributed at: Z-Node 62 (Perth, Western Australia)
V21,V22,V22bis 09 450 0200
WELCOME TO ZPM3
~~~~~~~~~~~~~~~
Welcome to the best CP/M compatible operating system for Z80
based computers with banked memory. The best? Yes, we believe so.
CP/M 3.0 has had bad press, but the fact is that it is faster
than CP/M 2.2 ever was, and it offered more integrated
facilities. Perhaps it was all the Z80 replacement BDOSes for
CP/M 2.2 which stole the limelight from CP/M 3.0, or was it just
that few computers had the required banked memory?
Whatever the reason for CP/M 3.0's lack of success in the
marketplace, there are still plenty of users who will stand by
its wonderful facilities and speed. For those users ZPM3 provides
the long awaited Z80 coded update.
ZPM3 offers all the good things that CP/M 3.0 does, and then it
offers more. Because ZPM3 is written in Z80 code rather than the
8080 code of CP/M 3.0, it can do everything that CP/M 3.0 does,
but in much less space. With the extra space recovered, ZPM3
packs in a number of new facilities. Yet the whole package fits
in exactly the same space as CP/M 3.0 so you can directly replace
your old CP/M 3.0 BDOS with ZPM3 without a worry.
ZPM3 is also fast. Faster, in fact, than CP/M 3.0. This is
possible because the rich Z80 instruction set allows many
algorithms to be implemented more efficiently. In addition, the
extra space available in ZPM3 has been put to use to further
optimise the code. Lots of small optimisations smooth the
execution flow, so ZPM3 becomes the fastest operating system on
most banked CP/M computers.
THE FEATURES
~~~~~~~~~~~~
ZPM3, in addition to complete CP/M 3.0 compatibility, offers the
following features:
Random Read Bug fixed.
++++++++++++++++++++++
Maybe you didn't know, but CP/M 3.0 has a bug. It affects random
reads under very specific circumstances, and can result in a
program thinking that you don't have some pieces of data in a
file when in fact you do. The bug would occur very, very rarely,
but it is real. ZPM3 finally squashes it.
Protected SCB User code
+++++++++++++++++++++++
The System Control Block of CP/M 3.0 was a revolution at the
time. ZCPR has a system environment and most other operating
systems have other similar structures, but the SCB of CP/M 3.0
was one of the very first.
Unfortunately, Digital Research never properly documented it, and
some programmers found things out about it that weren't quite
true and started programming accordingly. As well, because it is
available in the TPA bank, runaway programs can overwrite it
causing problems.
Mostly though, the SCB will survive, or at least any problems
will be so obvious that the user will realise that a crash has
occurred and will reboot. A real problem exists with the CP/M 3.0
code however when the user value is written over with a value
above 15. Many programs now directly write to this byte, and if
they put a value in that is above 15, all sorts of havoc can
happen with the disk system. Actually, CP/M 3.0 will handle user
areas above 15 with this method, and all seems ok until the
operating system mistakes one of these directory entries as an
XFCB. Simply put, user areas above 15 must not be used with CP/M
3.0.
ZPM3 has code which prevents these problems, making the system
even more stable.
Obsoleted Trap system.
++++++++++++++++++++++
One of the problems of the banked operating system was that it
was possible to redirect the BIOS to code below common memory, in
which case the banked BDOS could not access it. One solution is
to call all BIOS code from common memory, but this involves a
bank switch for every BIOS call, and this slows things down
considerably.
CP/M 3.0 got around the problem by providing special code just
below the SCB. If you redirected the BIOS, you also had to change
this code which caused a bank switch when your new BIOS routine
was called. When you removed the redirection, you also had to
restore the special code.
This system has major drawbacks. For a start, if you redirect the
BIOS, then another program redirects your redirection, then you
remove your first redirection (along with the special code), the
bank switch won't happen for the second redirection and the
system will crash.
If a CP/M 2.2 program tried to do the redirection, it would know
nothing about CP/M 3.0 and would not adjust the special code, so
a crash would result in that case too.
The special code was called the "Trap System" as it was meant to
trap redirection (as long as you set the trap). ZPM3 has
eliminated the need for the traps. They are still there, and
programs can still fiddle with them, but it doesn't matter how
they are set, they are ignored. There is simply no need for them
anymore. And this has been achieved without a performance
penalty. In fact, in the case of a program which sets the traps
but forgets to restore them, performance is now much better.
Semi-Permanent Read Only status for drives.
+++++++++++++++++++++++++++++++++++++++++++
In recent years, a trend in CP/M 2.2 is to make drives which have
been set read only to remain that way until explicitly changed by
function 37. ZPM3 now adopts this logic. Previously a control-C
would return a read only drive to read write. The advantage is
that a program can now make a drive read only for a session and
know that it will stay that way.
ZCPR compatible function 152
++++++++++++++++++++++++++++
Function 152 is the CP/M 3.0 parser. It was a great innovation at
the time as parsing is one of the more tedious aspects of
programming for CP/M. Unfortunately, almost as soon as it
appeared, it was made obsolete by the fact that it didn't handle
references to user number (DU references). A line such as
A:FILE.TYP would be correctly parsed, but A3:FILE.TYP would not.
CP/M 3.0 programs would often parse the drive and user
separately, then give function 152 the line without the DU:
reference. All this extra work should not have been necessary if
CP/M 3.0 had included user number parsing.
ZPM3 parses the user number, and goes even further by handling
named directories for ZCPR. This is possible as long as you set a
special word in the SCB which tells ZPM3 where to find the ZCPR
system environment descriptor. ZCCP, a companion CCP for ZPM3,
handles this automatically, but for Z3PLUS users, a special
utility is available which automatically sets this word.
The result is that CP/M 3.0 programs will not balk at DU:
references and ZPM3 aware programs can use the full DU: and DIR:
facilities of function 152. It has also made the brilliant ZCCP
code possible.
New Functions 54 and 55
+++++++++++++++++++++++
Datestamps in CP/M 3.0 are wonderful, but difficult to
manipulate. Two new functions make them easier to handle and at
the same time give compatibility to Z80DOS aware programs.
Function 54 (Get Stamp) returns a Z80DOS compatible datestamp.
Any program (such as many directory programs) which recognise the
Z80DOS standard can make use of function 54. There is only one
slight difference between Z80DOS datestamps and ZPM3's which you
should be aware of. Z80DOS will return a correct datestamp after
any successful open or search of any extent. ZPM3 can only return
a correct datestamp after a successful open or search of the
first extent of the file. This is because CP/M 3.0 datestamps are
only saved for the first extents of each file, in order to
provide the highest performance.
Even more interesting is Function 55 (Use Stamp) which provides a
mechanism for changing datestamps on files. Trying to do this
with CP/M 3.0 was virtually impossible because it involved direct
sector writes. With Function 55 you can simply set the stamp and
then write.
Wheel protected files
+++++++++++++++++++++
If you are using a ZCPR system (ZCCP or Z3PLUS), ZPM3 has access
to the wheel byte and supports wheel protected files. Such files
act normally if the wheel is set (signifying a priveleged user),
but if the wheel is not set, the files can not be changed. This
is of most benefit to BBS systems. The implementation is
virtually the same as most current Z80 CP/M 2.2 compatible
BDOSes.
Better error messages
+++++++++++++++++++++
CP/M 3.0 introduced the best error messages that CP/M had ever
had. ZPM3 goes further. The main difference you will notice is
that the user number as well as the drive is shown in the error
message. This is invaluable in helping you identify which file
might have caused a problem.
Function 10 history buffer and improved editing.
++++++++++++++++++++++++++++++++++++++++++++++++
Function 10 is used by the CCP to input command lines. Many other
programs use function 10 for input.
CP/M 3.0 introduced a history buffer for function 10. You press
control-W and you were returned the last command. It is a great
facility, but because it only remembers one command it is rather
limited. There have been RSXes written which give a much larger
history buffer, but RSXes take up extra program memory so are
undesirable.
ZPM3 gives a large (approximately 250 bytes) history buffer which
can store multiple commands. It also makes very intelligent use
of the buffer so that identical commands are not stored twice,
and commands of less than three characters are not stored. The
history buffer takes up no additional memory, and is always
available.
For security, it is possible to clear the history buffer so that
other users can not see what commands you have used.
The ZPM3 history buffer feature is so good, that for many users,
the ZPM3 upgrade is completely justified by it.
As part of the history buffer system, ZPM3 also offers a facility
called Automatic Command Prompting. This can be disabled, or can
be made switchable from the keyboard. When it is on, ZPM3 tries
to fill in the rest of your command based on what commands you
used most recently. It is like magic, and can save you typing out
complicated commands many times. In effect, it looks through the
history buffer for you and finds the command it thinks you want.
As you keep typing, if it turns out that the command doesn't
match anymore, it will try to match another command, and if it
can't, it lets you make the command by yourself. This facility is
quite amazing to watch.
And to integrate the history buffer and the automatic command
prompting, function 10 has the best command line editing you'll
find anywhere. Most of the control keys do something when you are
editing a function 10 line, and for the most part they mimic the
standard WordStar/NewWord/ZDE functions. You can jump to
different words in the command, delete individual words, delete
individual letters, insert letters, and a whole lot more.
Here is a list of what the various control keys do for function
10:
A Move left one word
B Go to the beginning or end of the line
C Warm boot if at start of line, otherwise nothing
D Go right one character
E Go backwards one command in the history buffer
F Go right one word
G Delete current character
H Destructive backspace
I
J Enter line
K Delete all to the right
L
M Enter line
N
O
P Toggle printing
Q Toggle automatic command prompting (if enabled)
R
S Go left one character
T Delete current word
U Add current line to history buffer
V Clear line and delete from history buffer
W Go forwards one command in the history buffer
X Delete all to the left
Y Clear the whole line
Z
CPMLDR.REL bug fixed.
+++++++++++++++++++++
If you have ever tried to use the CPMLDR.REL code supplied with
CP/M 3.0 to load a CPM3.SYS file larger than 16k, you have
probably come across the CPMLDR.REL bug. The computer probably
crashed, and you were left wondering what you did wrong in your
bios.
Well CPMLDR.REL has a bug. To solve this for you ZPM3 comes with
ZPM3LDR.REL which directly replaces CPMLDR.REL. It is also
somewhat better in that all the messages, and the fcb for loading
CPM3.SYS, are at the start of the file along with plenty of spare
room. As a result you can easily patch the signon and error
messages to say whatever you like and even change the FCB to load
a file called something other than CPM3.SYS.
All About the Random Read Bug.
==============================
Never heard of it? Well it's there in CP/M 3.0. I spent a lot of
time trying to work out what it was and just why it was
happening, and if you are interested, here are the details.
CP/M 3.0 uses the Record Count byte of an active FCB a little
differently from the way CP/M 2.2 does. It is mentioned in the
CP/M 3.0 manuals that the record count may contain numbers
greater than 128, but in such a case it implies that the record
count is really 128. CP/M 2.2 would not return record counts
greater than 128.
The reason for the use of the record count in this way is to help
speed up some of the logic used to find records in a file. It
works very well for sequential access. When it comes to random
access, the system has some failings.
The idea behind CP/M 3.0's unusual use of the record count is to
keep the record count of the last logical extent of the current
physical extent always in the Record Count byte. When accessing
extents before the last one, bit 7 of the byte is set. That way
it will always be at least 128 for logical extents before the
last (which CP/M 3.0 translates to mean equal to 128), and the
lower 7 bits are used as convenient storage for the record count
of the last logical extent. This is particularly convenient
because it means there is no need to go and read the directory
entry again when it comes time to read the last logical extent.
I hope you have followed that! In sequential access, this scheme
is great. The problem occurs with random access. In this case it
is possible to access a logical extent which has no records in
it. This could be any logical extent past the last one. In such a
case the record count must be returned as 0 (which is correct).
If we then go back to a previous logical extent in the same
physical extent, CP/M 3.0 gets confused and assumes that there
must be 128 records in that extent because the one we just came
from had no records and we are now accessing an earlier extent.
You're probably well and truly lost by now!
Anyhow, the assumption that CP/M 3.0 makes is quite wrong. The
record count ends up being set to 128, a read is allowed to go
ahead as if nothing was wrong, no error is returned, and the
record count remains incorrectly set until a different physical
extent is opened. The result could be chaos, but mostly it just
means that a program returns the wrong information.
Remember, a logical extent is always 16k. A physical extent can
be a multiple of 16k and is all the data described by one
directory entry. If your system has physical extents which are
16k, you would never have the problem because a new physical
extent would be properly opened for every new logical extent that
was accessed.
Typically though, a physical extent is 32k, so it holds 2 logical
extents. The problem won't arise until the file grows past the
32k mark in such a case. And when the file gets over 48k the
problem can't occur again until it gets over 64k... and so on.
Even then, it can only happen if reads are attempted to
particular extents in a particular order. So you shouldn't be too
surprised if the bug hasn't been too noticeable to you.
ZPM3 squashes the bug once and for all by using the correct
logic. In the situation where the bug would normally occur, ZPM3
makes sure it gets the correct record count information, and the
reads return the correct record count every time.
If you are interested in seeing a demonstration of the bug in
action (on CP/M 3.0) and comparing it with ZPM3, there is a file
floating around various bulletin boards which contains
demonstrations for the bug and an RSX to fix it. The RSX is a
less than perfect way of overcoming the bug, although it seems to
work. However, now that you have ZPM3, you don't need to worry.
Other things you should know about ZPM3
=======================================
ZPM3 has worked on EVERY CP/M 3.0 system tried so far except one.
This is a Bondwell computer, and as yet it isn't clear why it
won't work. I will study the source code of its BIOS and come up
with a fix shortly.
The MAKEDOS.COM utility is not perfect (as mentioned previously)
and it seems that nobody has managed to get it to work with the
Commodore C128 system. You must use the conventional method for
installing ZPM3 on such systems.
If you have a computer that ZPM3 will not install on with MAKEDOS
and you do not have access to the files required to do a
conventional install, please contact me. I am interested in
making ZPM3 as universal as possible and will help you to install
it on your system.
The ESCAPE key is ignored by function 10. There has been some
lively discussion about this but the decision is final: it stays
ignored. Remember what function 10 is for and you will understand
why I made it ignore the ESCAPE key. The argument against this
has been from people who control their terminals from the command
line. Apparently some people type in an escape sequence at the
command line (which CP/M 3.0 will not output correctly anyhow
(converting the escape character to ^[)) then press return to
have the CCP echo back the line including the escape character.
Sorry folks, that is a KLUDGE in my books! Anybody using Z-System
would of course use an ALIAS and ECHO to do this properly, but
for those who will continue to complain that I have sacrificed
CP/M 3.0 compatibility I am now including ECHOTERM.COM to solve
your problems. Run it and whatever you type will be sent to the
terminal correctly after you press RETURN. Press RETURN twice to
exit the program.
And a reminder that the ability to put control characters into
function 10 lines was always limited by the fact that some
control keys were used to edit the command line. CP/M 3.0 added
even more, and ZPM3 uses virtually all the control keys. The few
that aren't used are ignored, and this is in fact a FEATURE which
guarantees that unusable characters can't get into function 10
lines by accident.
LEGALS and SUCH
===============
The ZPM3 package is supplied free of charge, on the condition
that you don't use it to make money. If you want to use it
commercially you must contact me to get the OK (and negotiate our
fee).
If you find anyone (except myself) charging money for ZPM3,
please inform me!
Nobody is making any guarantees about this software. None at all.
If it causes your house to burn down, or a divorce, or just a bad
day, this is unfortunate, regrettable, but there is nothing that
I can or will do about it. You have been warned.
The ZPM3 package must only be distributed in the form that you
found it. Do not change or add anything. Don't even change it
into a different type of archive. Just leave it alone. However
you are free to distribute it to as many places and people that
you can. Just don't charge for it.
If in using ZPM3 you find that it doesn't act as described,
please forward the details to me so that either the ZPM3 code or
the documentation can be changed. If you would like further
details, please forward your specific questions to me. SJC.
As a service to all our ZPM3 fans, the latest version of the ZPM3
package can now be ordered. At this stage we can only supply IBM
formatted 3.5 inch 720k disks, however if you are keen enough
that shouldn't matter. ZPM3 remains free, however this service
will cost you $15 Australian (for the disk, copying, postage and
packing) to most places in the Western World (others by
arrangement).
This is a good way to guarantee you have the latest version, and
to guarantee that your package has not been corrupted by some
unscrupulous person.
When we fill your order, we will make sure to include the latest
demonstration copy of MYZ80 - the fastest and best Z80 emulator
for IBM AT (and better) compatibles. MYZ80 can run ZPM3 with
ease. It also handles ZCPR and CP/M 2.2. And yes, we do mean
FASTEST.
Send your international money order to:
Software by Simeon
ZPM3 Package
2 Maytone Ave
Killara NSW
Australia 2071
Your order will be promptly filled.


Binary file not shown.

View File

@@ -1,3 +1,53 @@
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
- J?L: Source for ZSDOS2 and BPBIOS Utilities (from disassembly)
- WBW: Support ROM-based font storage
- MAP: New Slice Inventory Rom App "S" display bootable slices, during boot
- MAP: Device Inventory moved from HBIOS to Rom App, saving >1k space in HBIOS
- MAP: Added disk image for all Infocom text adventure Games
- M?R: Fixed formatting issue with SLABEL where Slice # < 10
- WBW: Improved image creation process to allow user defined aggregates
- WBW: Implemented config driven slice name and system image specification
- D?N: Added native USB driver support (keyboard, floppy, mass storage)
- MGG: Added sample program source files for all language disk iamges
- WBW: Added support for S100 Dual CF Interface
- WBW: Added support for S100 ESP32 SD Interface
- MAP: User guide. Reorder sections around disk formatting
- R?M: Randy Merkel provided ZSDOS Programmer's Manual as translated by Wayne Hortensius
- WBW: Updated Cowgol disk image with latest COWFIX.COM from Ladislau Szilagyi
- WBW: Preliminary support for S100 Computers Z80 CPU
- HJB: Added MSX platform
- M?R: Update Timer app with "zero" option
- HJB: Update PPIDE driver, add support for MSX BEER IDE interface
- HJB: Added loader for MSX
- HJB: Added IDE driver master media detect option
- WBW: Add support for S100 Serial I/O DLP Serial connection
- P?D: Generate compressed ROM for EaZyZ80 512
- DDW: Added support for the 'N8PC' platform. Includes support for the M6242 RTC chip
- JMD: Added VGMINFO application
- WBW: Created SCSI Driver derived from code from Jay Cotton
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
-----------
- M?F: Fix for hours display in HBRTC application
@@ -34,6 +84,30 @@ Version 3.5
- MAP: Improved section Real Time Clock in User Guide document
- WBW: Support for Hitachi HD44780-based LCD display
- DRJ: Added support for Genesis STD Bus Z180 platform
- MAP: Improved section Disk Management in User Guide document
- WBW: Add CPU speed selection for HEATH platform to HBIOS
- WBW: Add Warm/Cold reboot options to CPUSPD utility
- D?N: Added support for eZ80 CPU
- MAP: Contributed COPYSL utility that allows disk slices to be copied
- MAP: Added new HBIOS function EXT_SLICE, extended disk slice info
- MAP: ROMLDR now uses EXT_SLICE to get Slice Sector for boot
- MAP: CBIOS now uses EXT_SLICE during drive selection
- MAP: CPM3 Boot Loader, and BIOS (drive select) now use EXT_SLICE
- M?R: Added REBOOT application
- MAP: Significant improvement in Disk Catalog document
- MAP: Added Disk Image for the Z3PLUS (Z-System for CP/M-Plus) os.
- H?H: Fix XModem 12.3 WRERR to put CAN char in proper register to send.
- MAP: Added support for dynamic HBIOS config via (RTC) NVRAM
- MAP: Added boot application to allow config of NVRAM options
- MAP: Configuration of autoboot disk/app added to NVRAM config
- WBW: Autoboot is now handled in separate prompt during RomWBW startup
- MAP: Added additional tools (Linker/Disasembler) to the Z80ASM Disk Image
- PMS: Support interrupt-driven PS2 Keyboard Interface
- D?M: Added NetBoot support for Duodyne
- WBW: Add options to TUNE/HBIOS to force detection of MSX and RC AY/YM standard PSG ports
- MAP: Added /B=OPTIONS for automated drive assignment to ASSIGN.COM
- WBW: Added TE Editor (Ladislau Szilagyi)
- WBW: Refresh Cowgol disk image (Ladislau Szilagyi)
Version 3.4
-----------

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,99 @@
1 "dimension required"
2 "functions can't return arrays"
3 "functions can't return functions"
4 "can't have array of functions"
5 "argument redeclared: %s"
6 "not an argument: %s"
7 "undefined struct/union: %s"
8 "can't have array of functions"
9 "only functions may be void"
10 "functions can't return arrays"
11 "declarator too complex"
12 "no identifier in declaration"
13 "can't initialize arg"
14 "argument redeclared: %s"
15 "bad storage class"
16 "can't mix proto and non-proto args"
17 "type specifier reqd. for proto arg"
18 "can't initialise auto aggregates"
19 "integer expression required"
20 "undefined enum tag: %s"
21 "integer constant expected"
22 "bad bitfield type"
23 "members cannot be functions"
24 "struct/union redefined: %s"
25 "can't be unsigned"
26 "can't be short"
27 "can't be long"
28 "can't be register"
29 "inconsistent type"
30 "bad storage class"
31 "storage class illegal"
32 "inconsistent storage class"
33 "illegal initialisation"
34 "only register storage class allowed"
35 "too much indirection"
36 "argument list conflicts with prototype"
37 "identifier redefined: %s"
38 "not a label identifier: %s"
39 "'case' not in switch"
40 "'default' not in switch"
41 "default case redefined"
42 "inappropriate break/continue"
43 "illegal type for switch expression"
44 "inappropriate 'else'"
45 "illegal initialisation"
46 "initialisation syntax"
47 "illegal initialisation"
48 "%s expected"
49 "close error (disk space?)"
50 "digit out of range"
51 "hex digit expected"
52 "exponent expected"
53 "'.' expected after '..'"
54 "char const too long"
55 "illegal character (0%o)"
56 "illegal conversion"
57 "logical type required"
58 "type conflict"
59 "simple type required for %.3s"
60 "integral type required"
61 "illegal use of void expression"
62 "void function cannot return value"
63 "pointer required"
64 "only lvalues may be assigned to or modified"
65 "can't take this address"
66 "can't take address of register variable"
67 "undefined struct/union: %s"
68 "struct/union member expected"
69 "struct/union required"
70 "illegal type for index expression"
71 "not a variable identifier: %s"
72 "undefined identifier: %s"
73 "expression syntax"
74 "illegal type for array dimension"
75 "constant expression required"
76 "too few arguments"
77 "too many arguments"
78 "function does not take arguments"
79 "float param coerced to double"
80 "non-void function returns no value"
81 "Unreachable code"
82 "implicit return at end of non-void function"
83 "Can't create xref file %s"
84 "implicit conversion of float to integer"
85 "illegal conversion between pointer types"
86 "illegal conversion of pointer to integer"
87 "illegal conversion of integer to pointer"
88 "%s() declared implicit int"
89 "operands of %.3s not same type"
90 "operands of %.3s not same pointer type"
91 "function or function pointer required"
92 "Can't create xref file %s"
93 "close error (disk space?)"
94 "Can't reopen %s"
95 "can't open %s"
96 "illegal '#' directive"
97 "EOF in #asm"
98 "Too many cases in switch"
99 "unexpected EOF"

File diff suppressed because one or more lines are too long

View File

@@ -11,45 +11,53 @@ distribution archive. It contains documentation for Programming
Languages provided with the system.
Aztec C Compiler User Manual (Aztec_C_1.06_User_Manual_Mar84.pdf)
Aztec C Compiler User Manual ("Aztec_C_1.06_User_Manual_Mar84.pdf")
-----------------------------------------------------------------
Official user manual for the Aztec C Compiler included in the aztecc disk image.
Borland TurboPascal User Manual (Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf)
Borland TurboPascal User Manual ("Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf")
------------------------------------------------------------------------------------
Official user manual Borland TurboPascal included in the pascal disk image.
Cowgol Lanaguage (Cowgol Language.pdf)
The Cowgol Lanaguage ("The Cowgol Language.pdf")
Cowgol Compiler Manual ("Cowgol Compiler Manual.pdf")
--------------------------------------
Documentation for Cowgol Language included in the cowgol disk image
Documentation for Cowgol Language included in the cowgol disk image.
The Cowgol Language describes the Cowgol Language itself while the
Cowgol Compiler Manual describes the compiler operation.
HI-TECH C Compiler User Manual (HI-TECH Z80 C Compiler Manual.txt)
HI-TECH C Compiler User Manual ("HI-TECH Z80 C Compiler Manual.txt")
HI-TECH C Compiler Messages ("HI-TECH Z80 C Compiler Messages.txt")
------------------------------------------------------------------
Official user manual for the HI-TECH C Compiler included in the
hitechc disk image.
hitechc disk image. The Compiler Messages file provides textual
descriptions of all compiler error and warning codes. These textual
messages have been omitted from the size optimized version of
HI-TECH C found in User Area 1 of the disk image. See the ReadMe.txt
file in the hitechc disk image for more information.
Microsoft Basic-80 Reference Manual v5.0 (Microsoft Basic-80 Reference Manual v5.0.pdf)
Microsoft Basic-80 Reference Manual v5.0 ("Microsoft Basic-80 Reference Manual v5.0.pdf")
---------------------------------------------------------------------------------------
Official manual for Microsoft BASIC as included in RomWBW.
Microsoft FORTRAN-80 User Manual (Microsoft_FORTRAN-80_Users_Manual_1977.pdf)
Microsoft FORTRAN-80 User Manual ("Microsoft_FORTRAN-80_Users_Manual_1977.pdf")
-----------------------------------------------------------------------------
Official user manual for Microsoft's FORTRAN-80 compiler included in the fortran
disk image.
Z80 Assembler User Manual (z80asm (SLR Systems).pdf)
Z80 Assembler User Manual ("z80asm (SLR Systems).pdf")
----------------------------------------------------
Official user manual for the Z80 Macro Assembler by SLR Systems

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -28,12 +28,13 @@ ChangeLog.txt
Log of changes in RomWBW by version.
RomWBW Introduction ("RomWBW Introduction.pdf")
RomWBW User Guide ("RomWBW User Guide.pdf")
RomWBW System Guide ("RomWBW System Guide.pdf")
RomWBW Applications ("RomWBW Applications.pdf")
RomWBW ROM Applications ("RomWBW ROM Applications.pdf")
RomWBW Disk Catalog ("RomWBW Disk Catalog.pdf")
RomWBW Errata ("RomWBW Errata.pdf")
RomWBW Hardware ("RomWBW Hardware.pdf")
-------------------------------------------------------
Documentation set for RomWBW. The primary document is the
@@ -84,4 +85,4 @@ UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
Official user manual for p-System operating system included with
RomWBW.
--WBW 5:18 PM 6/14/2023
--WBW 8:37 AM 6/6/2025

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Doc/RomWBW Hardware.pdf Normal file

Binary file not shown.

BIN
Doc/RomWBW Introduction.pdf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

46
Dockerfile Normal file
View File

@@ -0,0 +1,46 @@
FROM ubuntu:jammy-20240111 AS basebuilder
# This docker file can be used to build a tool chain docker image for building RomWBW images.
# Tested on a ubuntu host and on Windows un WSL (with docker desktop)
# First build the docker image (will b)
# docker build --progress plain -t romwbw-chain .
# After you have built the above image (called romwbw-chain), you can use it to compile and build the RomWBW images
# as per the standard make scripts within RomWBW.
# Start a new terminal, cd to where you have clone RomWBW, and then run this command:
# docker run --rm -v ${PWD}:/src/ --privileged=true -u $(id -u ${USER}):$(id -g ${USER}) -it romwbw-chain
# you can now compile and build the required images:
# cd Tools && make
# cd Source && make # at least once to build many common units
# cd Source && make rom ROM_PLATFORM=RCEZ80 ROM_CONFIG=std
# when finish, type 'exit' to return to back to your standard terminal session
LABEL Maintainer="Dean Netherton" \
Description="RomWBW builder platform"
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386
RUN apt update -y
RUN apt dist-upgrade -y
RUN apt install -y --no-install-recommends cmake lzip ca-certificates mtools build-essential dos2unix libboost-all-dev texinfo texi2html libxml2-dev subversion bison flex zlib1g-dev m4 git wget dosfstools curl
RUN mkdir work
WORKDIR /work
FROM basebuilder AS main
LABEL Maintainer="Dean Netherton" \
Description="RomWBW builder platform"
RUN mkdir /src
WORKDIR /src/
RUN apt install -y --no-install-recommends build-essential libncurses-dev srecord bsdmainutils
RUN adduser --disabled-password --gecos "" builder

View File

@@ -1,7 +1,7 @@
.PHONY: tools source clean clobber diff dist
.ONESHELL:
.SHELLFLAGS = -cex
.SHELLFLAGS = -ce
all: tools source
@@ -22,10 +22,15 @@ clobber: clean
diff:
$(MAKE) --directory Source diff
# Convert c code to assembly code
transpile-c-code:
@cd Source/HBIOS/ch376-native
$(MAKE) -j
dist:
$(MAKE) ROM_PLATFORM=dist
$(MAKE) --directory Tools clean
$(MAKE) --directory Source clean
distlog:
$(MAKE) dist 2>&1 | tee make.log
time -p $(MAKE) dist 2>&1 | tee make.log

132
RELEASE_NOTES.md Normal file
View File

@@ -0,0 +1,132 @@
# RomWBW Release Notes
This file contains information useful to those upgrading to a new
release of RomWBW.
## All Versions
- **Please** review the "Upgrading" Section of the RomWBW User Guide.
- The RomWBW ROM and the RomWBW disk images are intended to be a
matched set. After upgrading your ROM, you need to update your
boot disk media by doing one of the following:
- Write a new disk image (typically hd1k_combo.img) onto your
disk media (will overwrite existing data/files).
- Update the boot tracks of the bootable OS images as described in
the RomWBW User Guid.
## Version 3.6
### Upgrade Notes
- The FZ80 (S100 FPGA Z80) platform has been renamed to SZ80 (S100 Z80)
and has two configurations. SZ80_std is for the generic S100
Z80 CPU. SZ80_fpga is for the FPGA Z80 SBC.
### New Features
### New Hardware Support
- Support for MSX systems.
## 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
- RomWBW is now more strict with respect to hard disk partition
tables. If your hard disk media was created using any of the
pre-built disk image files, this will **not** affect you. Otherwise,
you may find you are unable to access slices beyond the first
slice. If so, use `FDISK80` to reset the partition table on the
disk. This will restore normal access to all slices. **Only** do
this if you are having an issue.
- For those building custom ROMs that are overriding `DEFSERCFG`, note
that this setting has been moved to a `#DEFINE` instead of an equate
(`.SET` or `.EQU`). You will find this `#DEFINE` at the top of all
standard config files. You will need to change your setting to a
`#DEFINE` at the top of your config file and remove any `.SET` or
`.EQU` lines for `DEFSERCFG`.
- Combining config settings `AUTOCON` and `VDAEMU_SERKBD` causes issues
at the boot loader prompt. So, all config files have been changed to
consistently enable `AUTOCON` and disable `VDAEMU_SERKBD` (`$FF`). If
are want to use `VDAEMU_SERKBD`, you need to set it in your config
file as well as disabling AUTOCON.
### New Features
- RC2014 Front Panel and LCD Screen support.
- Console "takeover" support at Boot Loader prompt by pressing the
<space> key twice on an alternate console device.
- Cowgol disk image based on the work of Ladislau Szilagyi.
- TMS video is automatically reset after an OS warm boot which
allows OS to recover from applications that reprogram the TMS
video display controller.
- Implemented "application" RAM banks that can be discovered via
the HBIOS API.
- Documentation improvements (Mark Pruden), including:
- Reorganization into multiple directories.
- Improved Disk Management section in User Guide.
- Overhaul of Disk Catalog.
- Disk image for Z3PLUS (Mark Pruden).
- `REBOOT` application added (Martin R). Also, reboot capability
added to `CPUSPD` utility.
- `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).
- Enhancements to ASSIGN command to automatically assign drives
(Mark Pruden).
### New Hardware Support
- NABU w/ RomWBW Option Board.
- EF9345 video display controller driver (Laszlo Szolnoki).
- Duodyne Disk I/O (CP/NET) and Media boards.
- PS/2 keyboard interface on RCBus systems.
- S100 FPGA-based Z80 including console, SD Cards, and RTC.
- Support for 16C550-family UART support on additional platforms.
- Genesis STD Bus Z180 platform (Doug Jackson).
- Support for Dinoboard eZ80 CPU board provided by Dean Netherton.
- Added interrupt support to PS/2 keyboard driver by Phil Summers.

308
ReadMe.md
View File

@@ -1,17 +1,22 @@
**RomWBW ReadMe** \
Version 3.5 \
**RomWBW Introduction** \
Version 3.6 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
04 Sep 2024
12 Dec 2025
# Overview
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
of CP/M (and work-alike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems.
A wide variety of platforms are supported including those produced by
these developer communities:
- [RetroBrew Computers](https://www.retrobrewcomputers.org)
(<https://www.retrobrewcomputers.org>)
@@ -23,47 +28,43 @@ communities:
- [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in the
\[Installation\] section.
A complete list of the currently supported platforms is found in [RomWBW
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf)
.
General features include:
# Description
## Primary Features
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
Supported hardware features of RomWBW include:
- Z80 Family CPUs including Z80, Z180, and Z280
- 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
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Support for CP/NET networking using Wiznet, MT011 or Serial
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
OSes and allows up to 2GB of addressable storage on a single device,
with up to 128MB accessible at any one time.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
## Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
@@ -72,37 +73,79 @@ with a full operating system implementation. If you use this disk image,
you can easily pick whichever operating system you want to boot without
changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
Some of the included software:
- Operating Systems (CP/M 2.2, ZSDOS, NZ-COM, CP/M 3, ZPM3, Z3PLUS, QPM
)
- Support for other operating systems, p-System, FreeRTOS, and FUZIX.
- Programming Tools (Z80ASM, Turbo Pascal, Forth, Cowgol)
- C Compilers including Aztec-C, and HI-TECH C
- Microsoft Basic Compiler, Microsoft Fortran, and Microsoft COBOL
- Some games such as Colossal Cave, Zork, etc
- Wordstar Word processing software
Some of the provided software can be launched directly from the ROM
firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
## ROM Distribution
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the [RomWBW Releases
Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
distribution location for all project source and documentation.
RomWBW is distributed as both source code and pre-built ROM and disk
images.
The pre-built ROM images distributed with RomWBW are based on the
default system configurations as determined by the hardware
provider/designer. The pre-built ROM firmware images are generally
suitable for most users.
The fully-built distribution releases are available on the [RomWBW
Releases Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository.
On this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
stick to the most recent stable release.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
The asset named RomWBW-vX.X.X-Package.zip includes all pre-built ROM and
Disk images as well as full source code. The other assets contain only
source code and do not have the pre-built ROM or disk images.
# Installation & Operation
#### Distribution Directory Layout
The RomWBW distribution is a compressed zip archive file organized in a
set of directories. Each of these directories has its own ReadMe.txt
file describing the contents in detail. In summary, these directories
are:
| **Directory** | **Description** |
|----|----|
| **Binary** | The final output files of the build process are placed here. Most importantly, the ROM images with the file names ending in “.rom” and disk images ending in .img. |
| **Doc** | Contains various detailed documentation, both RomWBW specifically as well as the operating systems and applications. |
| **Source** | Contains the source code files used to build the software and ROM images. |
| **Tools** | Contains the programs that are used by the build process or that may be useful in setting up your system. |
#### Building from Source
It is also very easy to modify and build custom ROM images that fully
tailor the firmware to your specific preferences. All tools required to
build custom ROM firmware under Windows are included no need to
install assemblers, etc. The firmware can also be built using Linux or
MacOS after confirming a few standard tools have been installed.
## Installation & Operation
In general, installation of RomWBW on your platform is very simple. You
just need to program your ROM with the correct ROM image from the RomWBW
@@ -113,21 +156,82 @@ functionality.
Complete instructions for installation and operation of RomWBW are found
in the [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf).
It is also a good idea to review the [Release
Notes](https://github.com/wwarthen/RomWBW/blob/master/RELEASE_NOTES.md)
for helpful release-specific information.
## Documentation
Documentation for RomWBW includes:
There are several documents that form the core of the RomWBW
documentation:
- [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf)
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf)
is the main user guide for RomWBW, it covers the major topics of how
to install, manage and use RomWBW, and includes additional guidance to
the use of some of the operating systems supported by RomWBW
- [RomWBW
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf)
contains a description of all the hardware platforms, and devices
supported by RomWBW.
- [RomWBW
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf)
- [RomWBW
Errata](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Errata.pdf)
is a reference for the ROM-hosted and OS-hosted applications created
or customized to enhance the operation of RomWBW.
# Acknowledgments
- [RomWBW Disk
Catalog](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Disk%20Catalog.pdf)
is a reference for the contents of the disk images provided with
RomWBW, with a description of many of the files on each image
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf)
discusses much of the internal design and construction of RomWBW. It
includes a reference for the RomWBW HBIOS API functions.
An online HTML version of this documentation is hosted at
<https://wwarthen.github.io/RomWBW>.
Each of the operating systems and ROM applications included with RomWBW
are sophisticated tools in their own right. It is not reasonable to
fully document their usage. However, you will find complete manuals in
PDF format in the Doc directory of the distribution. The intention of
this documentation is to describe the operation of RomWBW and the ways
in which it enhances the operation of the included applications and
operating systems.
Since RomWBW is purely a software product for many different platforms,
the documentation does **not** cover hardware construction,
configuration, or troubleshooting please see your hardware provider
for this information.
# Support
## Getting Assistance
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/)
- [RC2014 Google
Group](https://groups.google.com/forum/#!forum/rc2014-z80)
- [retro-comp Google
Group](https://groups.google.com/forum/#!forum/retro-comp)
Submission of issues and bugs are welcome at the [RomWBW GitHub
Repository](https://github.com/wwarthen/RomWBW).
Also feel free to email Wayne Warthen at <wwarthen@gmail.com>. I am
happy to provide support adapting RomWBW to new or modified systems
# Contributions
All source code and distributions are maintained on GitHub.
Contributions of all kinds to RomWBW are very welcome.
## Acknowledgments
I want to acknowledge that a great deal of the code and inspiration for
RomWBW has been provided by or derived from the work of others in the
@@ -186,8 +290,12 @@ let me know if I missed you!
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed the sound driver interface and the SN76489
sound driver.
- Dean Netherton contributed multiple components:
- eZ80 CPU support
- Sound driver infrastructure
- SN76489 sound driver
- Native USB driver (keyboard, floppy, mass storage)
- The RomWBW Disk Catalog document was produced by Mykl Orders.
@@ -196,7 +304,19 @@ let me know if I missed you!
Microsoft Fortran Compiler, and a Games compendium.
- Martin R has provided substantial help reviewing and improving the
User Guide.
User Guide and Applications documents.
- Mark Pruden has made a wide variety of contributions including:
- significant content in the Disk Catalog and User Guide
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- Infocom text adventure game disk image
- COPYSL, and SLABEL utilities
- Display of bootable slices via “S” command during startup
- Optimisations of HBIOS and CBIOS to reduce overall code size
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility
- Jacques Pelletier has contributed the DS1501 RTC driver code.
@@ -229,10 +349,64 @@ let me know if I missed you!
- Les Bird has contributed support for the NABU w/ Option Board
Contributions of all kinds to RomWBW are very welcome.
- Rob Gowin created an online documentation site via MkDocs, and
contributed a driver for the Xosera FPGA-based video controller.
- Jörg Linder has contributed disassembled and nicely commented source
for ZSDOS2 and the BPBIOS utilities.
- Marshall Gates has contriubed sample program source files for all of
the language disk images.
- Randy Merkel provided the ZSDOS Programmers Manual as translated by
Wayne Hortensius.
- Henk Berends added support for the MSX platform.
- Jay Cotton provided the SCSI transport code upon which the SCSI driver
is based.
## Related Projects
Outside of the hardware platforms adapted to RomWBW, there are a variety
of projects that either target RomWBW specifically or provide a
RomWBW-specific variation. These efforts are greatly appreciated and are
listed below. Please contact the author if there are any other such
projects that are not listed.
#### Z88DK
Z88DK is a software powerful development kit for Z80 computers
supporting both C and assembly language. This kit now provides specific
library support for RomWBW HBIOS. The Z88DK project is hosted at
<https://github.com/z88dk/z88dk>.
#### Paleo Editor
Steve Garcia has created a Windows-hosted IDE that is tailored to
development of RomWBW. The project can be found at
<https://github.com/alloidian/PaleoEditor>.
#### Z80 fig-FORTH
Dimitri Theulings implementation of fig-FORTH for the Z80 has a
RomWBW-specific variant. The project is hosted at
<https://github.com/dimitrit/figforth>.
#### Assembly Language Programming for the RC2014 Zed
Bruce Hall has written a very nice document that describes how to
develop assembly language applications on RomWBW. It begins with the
setup and configuration of a new RC2014 Zed system running RomWBW. It
describes not only generic CP/M application development, but also RomWBW
HBIOS programming and bare metal programming. The latest copy of this
document is hosted at [http://w8bh.net/Assembly for
RC2014Z.pdf](http://w8bh.net/Assembly%20for%20RC2014Z.pdf).
# Licensing
## License Terms
RomWBW is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your
@@ -272,19 +446,3 @@ encouraged to submit their contributions via the RomWBW source code
control system to ensure their contributions are clearly documented.
All contributions to RomWBW are subject to this license.
# Getting Assistance
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/)
- [RC2014 Google
Group](https://groups.google.com/forum/#!forum/rc2014-z80)
- [retro-comp Google
Group](https://groups.google.com/forum/#!forum/retro-comp)
Submission of issues and bugs are welcome at the [RomWBW GitHub
Repository](https://github.com/wwarthen/RomWBW).
Also feel free to email Wayne Warthen at <wwarthen@gmail.com>.

View File

@@ -1,6 +1,9 @@
RomWBW ReadMe
RomWBW Introduction
Wayne Warthen (wwarthen@gmail.com)
04 Sep 2024
12 Dec 2025
@@ -8,42 +11,46 @@ OVERVIEW
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
of CP/M (and work-alike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems.
- RetroBrew Computers (https://www.retrobrewcomputers.org)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A wide variety of platforms are supported including those produced by
these developer communities:
A complete list of the currently supported platforms is found in the
[Installation] section.
- RetroBrew Computers (https://www.retrobrewcomputers.org)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
General features include:
A complete list of the currently supported platforms is found in RomWBW
Hardware .
- Z80 Family CPUs including Z80, Z180, and Z280
- 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
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
DESCRIPTION
Primary Features
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
Supported hardware features of RomWBW include:
- Z80 Family CPUs including Z80, Z180, and Z280
- 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, 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
- Built-in VT-100 terminal emulation support
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
@@ -51,15 +58,11 @@ Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
OSes and allows up to 2GB of addressable storage on a single device,
with up to 128MB accessible at any one time.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
@@ -68,11 +71,24 @@ with a full operating system implementation. If you use this disk image,
you can easily pick whichever operating system you want to boot without
changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
Some of the included software:
- Operating Systems (CP/M 2.2, ZSDOS, NZ-COM, CP/M 3, ZPM3, Z3PLUS, QPM
)
- Support for other operating systems, p-System, FreeRTOS, and FUZIX.
- Programming Tools (Z80ASM, Turbo Pascal, Forth, Cowgol)
- C Compilers including Aztec-C, and HI-TECH C
- Microsoft Basic Compiler, Microsoft Fortran, and Microsoft COBOL
- Some games such as Colossal Cave, Zork, etc
- Wordstar Word processing software
Some of the provided software can be launched directly from the ROM
firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
@@ -80,30 +96,67 @@ slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
ACQUIRING ROMWBW
ROM Distribution
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the RomWBW Releases Page (https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
documentation.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
RomWBW is distributed as both source code and pre-built ROM and disk
images.
The pre-built ROM images distributed with RomWBW are based on the
default system configurations as determined by the hardware
provider/designer. The pre-built ROM firmware images are generally
suitable for most users.
The fully-built distribution releases are available on the RomWBW
Releases Page (https://github.com/wwarthen/RomWBW/releases) of the
repository.
On this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release.
The asset named RomWBW-vX.X.X-Package.zip includes all pre-built ROM and
Disk images as well as full source code. The other assets contain only
source code and do not have the pre-built ROM or disk images.
Distribution Directory Layout
The RomWBW distribution is a compressed zip archive file organized in a
set of directories. Each of these directories has its own ReadMe.txt
file describing the contents in detail. In summary, these directories
are:
-------------------------------------------------------------------------
DIRECTORY DESCRIPTION
----------- -------------------------------------------------------------
BINARY The final output files of the build process are placed here.
Most importantly, the ROM images with the file names ending
in “.rom” and disk images ending in .img.
DOC Contains various detailed documentation, both RomWBW
specifically as well as the operating systems and
applications.
SOURCE Contains the source code files used to build the software and
ROM images.
TOOLS Contains the programs that are used by the build process or
that may be useful in setting up your system.
-------------------------------------------------------------------------
Building from Source
It is also very easy to modify and build custom ROM images that fully
tailor the firmware to your specific preferences. All tools required to
build custom ROM firmware under Windows are included no need to
install assemblers, etc. The firmware can also be built using Linux or
MacOS after confirming a few standard tools have been installed.
INSTALLATION & OPERATION
Installation & Operation
In general, installation of RomWBW on your platform is very simple. You
just need to program your ROM with the correct ROM image from the RomWBW
@@ -112,132 +165,258 @@ drives (IDE disk, CF Card, SD Card, etc.) which then provides even more
functionality.
Complete instructions for installation and operation of RomWBW are found
in the RomWBW User Guide.
in the RomWBW User Guide. It is also a good idea to review the Release
Notes for helpful release-specific information.
Documentation
Documentation for RomWBW includes:
There are several documents that form the core of the RomWBW
documentation:
- RomWBW User Guide
- RomWBW System Guide
- RomWBW Applications
- RomWBW Errata
- RomWBW User Guide is the main user guide for RomWBW, it covers the
major topics of how to install, manage and use RomWBW, and includes
additional guidance to the use of some of the operating systems
supported by RomWBW
- RomWBW Hardware contains a description of all the hardware platforms,
and devices supported by RomWBW.
- RomWBW Applications is a reference for the ROM-hosted and OS-hosted
applications created or customized to enhance the operation of RomWBW.
- RomWBW Disk Catalog is a reference for the contents of the disk images
provided with RomWBW, with a description of many of the files on each
image
- RomWBW System Guide discusses much of the internal design and
construction of RomWBW. It includes a reference for the RomWBW HBIOS
API functions.
An online HTML version of this documentation is hosted at
https://wwarthen.github.io/RomWBW.
Each of the operating systems and ROM applications included with RomWBW
are sophisticated tools in their own right. It is not reasonable to
fully document their usage. However, you will find complete manuals in
PDF format in the Doc directory of the distribution. The intention of
this documentation is to describe the operation of RomWBW and the ways
in which it enhances the operation of the included applications and
operating systems.
Since RomWBW is purely a software product for many different platforms,
the documentation does NOT cover hardware construction, configuration,
or troubleshooting please see your hardware provider for this
information.
ACKNOWLEDGMENTS
SUPPORT
Getting Assistance
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- RetroBrew Computers Forum
- RC2014 Google Group
- retro-comp Google Group
Submission of issues and bugs are welcome at the RomWBW GitHub
Repository.
Also feel free to email Wayne Warthen at wwarthen@gmail.com. I am happy
to provide support adapting RomWBW to new or modified systems
CONTRIBUTIONS
All source code and distributions are maintained on GitHub.
Contributions of all kinds to RomWBW are very welcome.
Acknowledgments
I want to acknowledge that a great deal of the code and inspiration for
RomWBW has been provided by or derived from the work of others in the
RetroBrew Computers Community. I sincerely appreciate all of their
contributions. The list below is probably missing many names please
let me know if I missed you!
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
became the first platform RomWBW supported. Some of his original
code can still be found in RomWBW.
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
became the first platform RomWBW supported. Some of his original code
can still be found in RomWBW.
- Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and
advice.
- Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and advice.
- Douglas Goodall contributed code, time, testing, and advice in “the
early days”. He created an entire suite of application programs to
enhance the use of RomWBW. Unfortunately, they have become unusable
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
- Douglas Goodall contributed code, time, testing, and advice in “the
early days”. He created an entire suite of application programs to
enhance the use of RomWBW. Unfortunately, they have become unusable
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
- Sergey Kiselev created several hardware platforms for RomWBW
including the very popular Zeta.
- Sergey Kiselev created several hardware platforms for RomWBW including
the very popular Zeta.
- David Giles created support for the Z180 CSIO which is now included
SD Card driver.
- David Giles created support for the Z180 CSIO which is now included SD
Card driver.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
- Ed Brindley contributed some of the code that supports the RCBus
platform.
- Ed Brindley contributed some of the code that supports the RCBus
platform.
- Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage. Some of his kits
include RomWBW.
- Spencer Owen created the RC2014 series of hobbyist kit computers which
has exponentially increased RomWBW usage. Some of his kits include
RomWBW.
- Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW with
many of them.
- Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW with
many of them.
- Alan Cox has contributed some driver code and has provided a great
deal of advice.
- Alan Cox has contributed some driver code and has provided a great
deal of advice.
- The CP/NET client files were developed by Douglas Miller.
- The CP/NET client files were developed by Douglas Miller.
- Phillip Stevens contributed support for FreeRTOS.
- Phillip Stevens contributed support for FreeRTOS.
- Curt Mayer contributed the original Linux / MacOS build process.
- Curt Mayer contributed the original Linux / MacOS build process.
- UNA BIOS and FDISK80 are the products of John Coffman.
- UNA BIOS and FDISK80 are the products of John Coffman.
- FLASH4 is a product of Will Sowerbutts.
- FLASH4 is a product of Will Sowerbutts.
- CLRDIR is a product of Max Scane.
- CLRDIR is a product of Max Scane.
- Tasty Basic is a product of Dimitri Theulings.
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed the sound driver interface and the
SN76489 sound driver.
- Dean Netherton contributed multiple components:
- The RomWBW Disk Catalog document was produced by Mykl Orders.
- eZ80 CPU support
- Sound driver infrastructure
- SN76489 sound driver
- Native USB driver (keyboard, floppy, mass storage)
- Rob Prouse has created many of the supplemental disk images
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
- The RomWBW Disk Catalog document was produced by Mykl Orders.
- Martin R has provided substantial help reviewing and improving the
User Guide.
- Rob Prouse has created many of the supplemental disk images including
Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler,
Microsoft Fortran Compiler, and a Games compendium.
- Jacques Pelletier has contributed the DS1501 RTC driver code.
- Martin R has provided substantial help reviewing and improving the
User Guide and Applications documents.
- Jose Collado has contributed enhancements to the TMS driver
including compatibility with standard TMS register configuration.
- Mark Pruden has made a wide variety of contributions including:
- Kevin Boone has contributed a generic HBIOS date/time utility
(WDATE).
- significant content in the Disk Catalog and User Guide
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- Infocom text adventure game disk image
- COPYSL, and SLABEL utilities
- Display of bootable slices via “S” command during startup
- Optimisations of HBIOS and CBIOS to reduce overall code size
- a feature for RomWBW configuration by NVRAM
- the /B bulk mode of disk assignment to the ASSIGN utility
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Jacques Pelletier has contributed the DS1501 RTC driver code.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dylan Hall added support for specifying a secondary console.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Bill Shen has contributed boot loaders for several of his systems.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Laszlo Szolnoki has contributed an EF9345 video display controller
driver.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
that leverages RomWBW memory banking.
- Dylan Hall added support for specifying a secondary console.
- Les Bird has contributed support for the NABU w/ Option Board
- Bill Shen has contributed boot loaders for several of his systems.
Contributions of all kinds to RomWBW are very welcome.
- Laszlo Szolnoki has contributed an EF9345 video display controller
driver.
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
that leverages RomWBW memory banking.
- 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.
- Jörg Linder has contributed disassembled and nicely commented source
for ZSDOS2 and the BPBIOS utilities.
- Marshall Gates has contriubed sample program source files for all of
the language disk images.
- Randy Merkel provided the ZSDOS Programmers Manual as translated by
Wayne Hortensius.
- Henk Berends added support for the MSX platform.
- Jay Cotton provided the SCSI transport code upon which the SCSI driver
is based.
Related Projects
Outside of the hardware platforms adapted to RomWBW, there are a variety
of projects that either target RomWBW specifically or provide a
RomWBW-specific variation. These efforts are greatly appreciated and are
listed below. Please contact the author if there are any other such
projects that are not listed.
Z88DK
Z88DK is a software powerful development kit for Z80 computers
supporting both C and assembly language. This kit now provides specific
library support for RomWBW HBIOS. The Z88DK project is hosted at
https://github.com/z88dk/z88dk.
Paleo Editor
Steve Garcia has created a Windows-hosted IDE that is tailored to
development of RomWBW. The project can be found at
https://github.com/alloidian/PaleoEditor.
Z80 fig-FORTH
Dimitri Theulings implementation of fig-FORTH for the Z80 has a
RomWBW-specific variant. The project is hosted at
https://github.com/dimitrit/figforth.
Assembly Language Programming for the RC2014 Zed
Bruce Hall has written a very nice document that describes how to
develop assembly language applications on RomWBW. It begins with the
setup and configuration of a new RC2014 Zed system running RomWBW. It
describes not only generic CP/M application development, but also RomWBW
HBIOS programming and bare metal programming. The latest copy of this
document is hosted at http://w8bh.net/Assembly for RC2014Z.pdf.
LICENSING
License Terms
RomWBW is free software: you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
Software Foundation, either version 3 of the License, or (at your
@@ -277,20 +456,3 @@ encouraged to submit their contributions via the RomWBW source code
control system to ensure their contributions are clearly documented.
All contributions to RomWBW are subject to this license.
GETTING ASSISTANCE
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- RetroBrew Computers Forum
- RC2014 Google Group
- retro-comp Google Group
Submission of issues and bugs are welcome at the RomWBW GitHub
Repository.
Also feel free to email Wayne Warthen at wwarthen@gmail.com.

View File

@@ -1,16 +1,21 @@
This is a RomWBW HBIOS adaptation of BBCBASIC v5.00. The
cursor and screen management assumes the use of an ANSI/VT-100 terminal
which is generally correct for RomWBW. Support for a hardware system
timer is also implemented. If your system does not have a hardware
timer, the TIME function will always return 0 and the timeout
This is a RomWBW HBIOS adaptation of BBCBASIC v5.00 by R.T.Russell.
This implementation was adapted from the source code found at
https://github.com/rtrussell/BBCZ80.
The cursor and screen management assumes the use of an ANSI/VT-100
terminal which is generally correct for RomWBW. Support for a hardware
system timer is also implemented. If your system does not have a
hardware timer, the TIME function will always return 0 and the timeout
parameter of the INKEY(n) function will not be observed (will never
timeout).
What follows is some basic information on BBCBASIC from the
distribution. Note that it starts with the v3.00 information and
later on provides information on the changes in v5.00.
later on provides information on the changes in v5.00. Complete
documentation for the BBC BASIC (Z80) is found online at
https://www.bbcbasic.co.uk/bbcbasic/mancpm/index.html.
-- WBW 1:15 PM 5/30/2024
-- WBW 4:21 PM 2/17/2025
@@ -23,55 +28,55 @@ later on provides information on the changes in v5.00.
1. INTRODUCTION
BBC BASIC (Z80) has been designed to be as compatible as possible with
Version 4 of the 6502 BBC BASIC resident in the BBC Micro Master series.
The language syntax is not always identical to that of the 6502 version,
BBC BASIC (Z80) has been designed to be as compatible as possible with
Version 4 of the 6502 BBC BASIC resident in the BBC Micro Master series.
The language syntax is not always identical to that of the 6502 version,
but in most cases the Z80 version is more tolerant.
BBC BASIC (Z80) is as machine independent as possible and, as supplied,
it will run on any CP/M 2.2 (or later) system using a Z80 processor
(checks are carried out to ensure that the processor is a Z80 and that
the version of CP/M is at least 2.2). It is minimally configured for an
BBC BASIC (Z80) is as machine independent as possible and, as supplied,
it will run on any CP/M 2.2 (or later) system using a Z80 processor
(checks are carried out to ensure that the processor is a Z80 and that
the version of CP/M is at least 2.2). It is minimally configured for an
ADM3a-compatible VDU.
Few CP/M systems offer colour graphics of the quality provided as
standard on the BBC Microcomputer, and no software can provide colour
high-resolution graphics from a monochrome character-orientated computer.
However, many CP/M system users are interested in the advanced program
structures available from BBC BASIC and, within the limitations of the
host computer, BBC BASIC (Z80) provides the programming structures and
Few CP/M systems offer colour graphics of the quality provided as
standard on the BBC Microcomputer, and no software can provide colour
high-resolution graphics from a monochrome character-orientated computer.
However, many CP/M system users are interested in the advanced program
structures available from BBC BASIC and, within the limitations of the
host computer, BBC BASIC (Z80) provides the programming structures and
the non-graphic commands and functions specified for BBC BASIC.
In order to make full use of the facilities available in BBC BASIC (Z80)
it is necessary to install a small patch to adapt it to the capabilities
of the host computer. The source code of the patch present in the
In order to make full use of the facilities available in BBC BASIC (Z80)
it is necessary to install a small patch to adapt it to the capabilities
of the host computer. The source code of the patch present in the
distribution version is supplied as BBCDIST.MAC.
This documentation should be read in conjunction with a standard BBC
BASIC manual. Only those features which differ from the standard Acorn
This documentation should be read in conjunction with a standard BBC
BASIC manual. Only those features which differ from the standard Acorn
versions are documented here.
2. MEMORY UTILISATION
BBC BASIC (Z80) requires about 16 Kbytes of code space, resulting in a
value of PAGE of about &3E00. The remainder of the user memory is
available for BASIC programs, variables (heap) and stack. Depending on
BBC BASIC (Z80) requires about 16 Kbytes of code space, resulting in a
value of PAGE of about &3E00. The remainder of the user memory is
available for BASIC programs, variables (heap) and stack. Depending on
the system configuration, HIMEM can have a value up to &FE00.
3. COMMANDS, STATEMENTS AND FUNCTIONS
The syntax of BASIC commands, statements and functions is in most cases
identical to that of the BBC Micro version (BASIC 4). The few
The syntax of BASIC commands, statements and functions is in most cases
identical to that of the BBC Micro version (BASIC 4). The few
differences are documented here:
ADVAL
This function is not implemented.
CALL
CALL sets up a table in RAM containing details of the parameters; the
processor's IX register is set to the address of this parameter table.
CALL sets up a table in RAM containing details of the parameters; the
processor's IX register is set to the address of this parameter table.
The other processor registers are initialised as follows:
A is initialised to the least significant byte of A%
@@ -92,7 +97,7 @@ later on provides information on the changes in v5.00.
128 Fixed string $A%
129 Movable string A$
On entry to the subroutine the parameter table contains the following
On entry to the subroutine the parameter table contains the following
values:
Number of parameters 1 byte (at IX)
@@ -103,29 +108,29 @@ later on provides information on the changes in v5.00.
Parameter type ) repeated as often as necessary
Parameter address )
Except in the case of a movable string (normal string variable), the
parameter address given is the absolute address at which the item is
stored. In the case of movable strings (type 129) it is the address of a
4-byte parameter block containing the current length, the maximum length
Except in the case of a movable string (normal string variable), the
parameter address given is the absolute address at which the item is
stored. In the case of movable strings (type 129) it is the address of a
4-byte parameter block containing the current length, the maximum length
and the start address of the string (LSB first) in that order.
Integer variables are stored in twos complement form with their least
Integer variables are stored in twos complement form with their least
significant byte first.
Fixed strings are stored as the characters of the string followed by a
Fixed strings are stored as the characters of the string followed by a
carriage return (&0D).
Floating point variables are stored in binary floating point format with
their least significant byte first; the fifth byte is the exponent. The
mantissa is stored as a binary fraction in sign and magnitude format.
Bit 7 of the most significant byte is the sign bit and, for the purposes
of calculating the magnitude of the number, this bit is assumed to be set
to one. The exponent is stored as an integer in excess 127 format (to
Floating point variables are stored in binary floating point format with
their least significant byte first; the fifth byte is the exponent. The
mantissa is stored as a binary fraction in sign and magnitude format.
Bit 7 of the most significant byte is the sign bit and, for the purposes
of calculating the magnitude of the number, this bit is assumed to be set
to one. The exponent is stored as an integer in excess 127 format (to
find the exponent subtract 127 from the value in the fifth byte).
If the exponent byte of a floating point number is zero, the number is an
integer stored in integer format in the mantissa bytes. Thus an integer
can be represented in two different ways in a real variable. For example
If the exponent byte of a floating point number is zero, the number is an
integer stored in integer format in the mantissa bytes. Thus an integer
can be represented in two different ways in a real variable. For example
the value +5 can be stored as:
05 00 00 00 00 Integer 5
@@ -138,15 +143,15 @@ later on provides information on the changes in v5.00.
This statement is not implemented.
EDIT
A command to edit or concatenate and edit the specified program line(s).
The specified lines (including their line numbers) are listed as a single
line. By changing only the line number you can use EDIT to duplicate a
A command to edit or concatenate and edit the specified program line(s).
The specified lines (including their line numbers) are listed as a single
line. By changing only the line number you can use EDIT to duplicate a
line.
EDIT 230
EDIT 200,230
The following control functions are active both in the EDIT mode and in
The following control functions are active both in the EDIT mode and in
the immediate entry mode (i.e. at the BASIC prompt):
Move the cursor one character position to the left
@@ -159,8 +164,8 @@ later on provides information on the changes in v5.00.
Delete all characters to the left of the cursor
Delete all characters from the cursor to the end of the line
The choice of which keys activate these functions is made when BBC BASIC
is configured for a particular system. The distribution version uses ^H,
The choice of which keys activate these functions is made when BBC BASIC
is configured for a particular system. The distribution version uses ^H,
^I, ^K, ^J, ^A, ^E, DEL (&7F), ^L and ^X.
To exit EDIT mode and replace the edited line, type RETURN (ENTER).
@@ -171,28 +176,28 @@ later on provides information on the changes in v5.00.
This statement is not implemented.
GET
This function waits for a character to be typed at the keyboard, and
This function waits for a character to be typed at the keyboard, and
returns the ASCII code.
GET can also be used to read data from a processor I/O port; full 16-bit
GET can also be used to read data from a processor I/O port; full 16-bit
port addressing is available:
N% = GET(X%) : REM input from port X%
INKEY
This function waits for a specified maximum number of centiseconds for a
character to be typed at the keyboard. If no character is typed in that
time, the value -1 is returned. In the distribution version the delay is
determined by a simple software timing loop, and may be very inaccurate.
The customisation patch allows this to be adjusted to suit the system in
This function waits for a specified maximum number of centiseconds for a
character to be typed at the keyboard. If no character is typed in that
time, the value -1 is returned. In the distribution version the delay is
determined by a simple software timing loop, and may be very inaccurate.
The customisation patch allows this to be adjusted to suit the system in
use.
INPUT#
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
return (&0D).
MODE
@@ -208,15 +213,15 @@ later on provides information on the changes in v5.00.
This function is not implemented.
PRINT#
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
return (&0D).
PUT
A statement to output data to a processor port. Full 16-bit addressing
A statement to output data to a processor port. Full 16-bit addressing
is available.
PUT A%,N% : REM Output N% to port A%
@@ -225,7 +230,7 @@ later on provides information on the changes in v5.00.
This statement is not implemented.
TIME
This pseudo-variable is not implemented in the distribution version, but
This pseudo-variable is not implemented in the distribution version, but
can be supported by means of the customisation patch. See BBCDIST.MAC.
USR
@@ -240,34 +245,34 @@ later on provides information on the changes in v5.00.
H is initialised to the least significant byte of H%
L is initialised to the least significant byte of L%
USR returns a 32-bit integer result composed of the processor's H, L, H'
USR returns a 32-bit integer result composed of the processor's H, L, H'
and L' registers, with H being the most significant.
4. RESIDENT Z80 ASSEMBLER
The in-line assembler is accessed in exactly the same way as the 6502
assembler in the BBC Micro version of BBC BASIC. That is, '[' enters
The in-line assembler is accessed in exactly the same way as the 6502
assembler in the BBC Micro version of BBC BASIC. That is, '[' enters
assembler mode and ']' exits assembler mode.
All standard Zilog mnemonics are accepted: ADD, ADC and SBC must be
followed by A or HL. For example, ADD A,C is accepted but ADD C is not.
However, the brackets around the port number in IN and OUT are optional.
Thus both OUT (5),A and OUT 5,A are accepted. The instruction IN F,(C)
All standard Zilog mnemonics are accepted: ADD, ADC and SBC must be
followed by A or HL. For example, ADD A,C is accepted but ADD C is not.
However, the brackets around the port number in IN and OUT are optional.
Thus both OUT (5),A and OUT 5,A are accepted. The instruction IN F,(C)
is not accepted, but the equivalent code is produced from IN (HL),C
The pseudo-ops DEFB, DEFW and DEFM are included. DEFM works like EQUS in
The pseudo-ops DEFB, DEFW and DEFM are included. DEFM works like EQUS in
the 6502 version.
5. OPERATING SYSTEM INTERFACE
The following resident Operating System ("star") commands are
implemented. They may be accessed directly (e.g. *BYE) or via the OSCLI
The following resident Operating System ("star") commands are
implemented. They may be accessed directly (e.g. *BYE) or via the OSCLI
statement (OSCLI "BYE").
Control characters, lower-case characters, DEL and quotation marks may be
incorporated in filenames by using the 'escape' character '|'. However,
Control characters, lower-case characters, DEL and quotation marks may be
incorporated in filenames by using the 'escape' character '|'. However,
there is no equivalent to the BBC Microcomputer's '|!' to set bit 7.
*BYE
@@ -278,7 +283,7 @@ later on provides information on the changes in v5.00.
*. [filespec]
*DIR [filespec]
List the files which match the (optional) ambiguous filespec. If the
List the files which match the (optional) ambiguous filespec. If the
filespec is omitted, all .BBC files are listed:
*DIR List all .BBC files on the disk
*DIR B:*.* List all files on disk B:
@@ -288,53 +293,53 @@ later on provides information on the changes in v5.00.
Select drive d as the default drive for subsequent disk operations.
*ERA filespec
Erase (delete) the specified disk file or files. The extension defaults
Erase (delete) the specified disk file or files. The extension defaults
to .BBC if omitted.
*ESC [ON|OFF]
*ESC OFF disables the abort action of the ESCape key; after *ESC OFF the
ESCape key simply returns the ASCII code ESC (27). *ESC ON, or *ESC,
*ESC OFF disables the abort action of the ESCape key; after *ESC OFF the
ESCape key simply returns the ASCII code ESC (27). *ESC ON, or *ESC,
restores the normal action of the ESCape key.
*EXEC filespec
Accept console input from the specified file instead of from the
Accept console input from the specified file instead of from the
keyboard. If the extension is omitted, .BBC is assumed.
*LOAD filespec aaaa
Loads the specified file into memory at address aaaa. The load address
Loads the specified file into memory at address aaaa. The load address
must be specified. If the extension is omitted, .BBC is assumed.
*OPT [n]
Select the destination for console output characters. The value n is in
Select the destination for console output characters. The value n is in
the range 0 to 2, as follows:
0 Send characters to the console output
1 Send characters to the auxiliary output
2 Send characters to the printer (list) output
*REN newfile=oldfile
*RENAME newfile=oldfile
Renames 'oldfile' as 'newfile'. If the extension is omitted, .BBC is
Renames 'oldfile' as 'newfile'. If the extension is omitted, .BBC is
assumed.
*RESET
Rest the disk system (CP/M function 13). This command does not close any
files nor does it perform any other housekeeping function. You should
Rest the disk system (CP/M function 13). This command does not close any
files nor does it perform any other housekeeping function. You should
use *RESET after you have changed a disk.
*SAVE filespec aaaa bbbb
*SAVE filespec aaaa +llll
This command saves a specified range of memory to disk. The address range
is specified either as start (aaaa) and end+1 (bbbb) or as start (aaaa)
This command saves a specified range of memory to disk. The address range
is specified either as start (aaaa) and end+1 (bbbb) or as start (aaaa)
and length (llll). If the extension is omitted, .BBC is assumed.
*SPOOL [filespec]
Copy all subsequent console output to the specified file. If the filename
is omitted, any current spool file is closed and spooling is terminated.
Copy all subsequent console output to the specified file. If the filename
is omitted, any current spool file is closed and spooling is terminated.
If the extension is omitted, .BBC is assumed.
*TYPE filespec
Type the specified file to the screen. If the extension is omitted, .BBC
Type the specified file to the screen. If the extension is omitted, .BBC
is assumed.
*| comment
@@ -352,7 +357,7 @@ later on provides information on the changes in v5.00.
Trappable - BASIC:
1 Out of range 24 Exp range
2 25
2 25
3 26 No such variable
4 Mistake 27 Missing )
5 Missing , 28 Bad HEX
@@ -383,9 +388,9 @@ later on provides information on the changes in v5.00.
198 Disk full 254 Bad command
200 Close error 255 CP/M error
204 Bad name

New features in BBC BASIC (Z80) version 5.00, May 2024:
New features in BBC BASIC (Z80) version 5.00, January 2025:
1. BASIC V statements
@@ -394,7 +399,7 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
1.3 CASE...WHEN...OTHERWISE...ENDCASE
1.4 LOCAL DATA / RESTORE DATA
1.5 ON ERROR LOCAL / RESTORE ERROR
1.6 DIM var LOCAL size
1.6 DIM var LOCAL size
1.7 ERROR err, message$
1.8 RESTORE +n
1.9 SWAP var1,var2
@@ -408,10 +413,10 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
2.3 REPORT$
2.4 Binary constants
2.5 LEFT$ & RIGHT$ with last parameter omitted
2.6 MOD(array)
2.7 SUM(array)
2.8 SUMLEN(array)
2.9 GET$#file
2.6 MOD(array())
2.7 SUM(array())
2.8 SUMLEN(array())
2.9 GET$#file
3. BASIC V whole array operations
@@ -423,9 +428,12 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
3.6 Array initialisation lists
3.7 Array compound assignment (+= etc.)
3.8 Make a whole array LOCAL
3.9 DIM a LOCAL array (on the stack) +
3.9 DIM a LOCAL array (on the stack) +
* String array expressions are not currently supported, instead of using
a$() = b$() + c$() use a$() = b$() : a$() += c$()
The use of EVAL with whole-array expressions is not currently supported.
* String array expressions A$() = B$() + C$() are not currently supported.
+ LOCAL string arrays should be initialised to their maximum needed length
to eliminate the risk of a memory leak each time the PROC/FN is called:
LOCAL a$() : DIM a$(size%) : a$() = STRING$(max%, "a") : a$() = ""
@@ -434,22 +442,27 @@ New features in BBC BASIC (Z80) version 5.00, May 2024:
4.1 Bit-shifts <<, >>, >>>
4.2 Floating-point indirection (|)
4.3 RETURNed parameters from FN/PROC
4.4 Compound assignment (+=, -=, *=, /= etc.)
4.5 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
4.6 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,TINT,SYS,WAIT
4.7 Hooks for WIDTH function, TINT function, MODE function
4.3 Additional VDU delimiter '|'
4.4 RETURNed parameters from FN/PROC
4.5 Compound assignment (+=, -=, *=, /= etc.)
4.6 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
4.7 Hooks for CIRCLE, ELLIPSE, FILL, LINE, ORIGIN, RECTANGLE (graphics)
4.8 Hooks for MOUSE, OFF, ON, SYS, TINT, WAIT (statements)
4.9 Hooks for MODE function, TINT function, WIDTH function
5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY
5.1 EXIT REPEAT / WHILE / FOR [var]
5.2 Address-of operator ^
5.3 Byte variables and arrays (& suffix)
5.2 Address-of operator (^)
5.3 Byte (unsigned 8-bit) variables and arrays (& suffix)
5.4 'BY len' and 'TO term' qualifiers to GET$#file
5.5 ELSE IF <condition> THEN; (trailing semicolon)
5.6 == synonymous with = in comparisons
5.7 DIM a global array inside a FN/PROC (use RETURN)
5.8 DIM var LOCAL -1 returns the stack pointer, even outside a FN/PROC
5.9 RESTORE LOCAL restores local variables without exiting the FN/PROC
Note: The token for PUT has changed from &CE in version 3 to &0E in version 5.
If this token is present in existing programs it will list as ENDWHILE rather
than PUT, and the programs will need to be modified to restore functionality.
than PUT, and the programs will need to be modified to restore functionality.


File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,64 +1,68 @@
NAME ('HOOK')
;
GLOBAL CLG
GLOBAL COLOUR
GLOBAL DRAW
GLOBAL ENVEL
GLOBAL GCOL
GLOBAL MODE
GLOBAL MOVE
GLOBAL PLOT
GLOBAL SOUND
GLOBAL PUTIMS
GLOBAL CIRCLE
GLOBAL ELLIPSE
GLOBAL FILL
GLOBAL MOUSE
GLOBAL ORIGIN
GLOBAL RECTAN
GLOBAL LINE
GLOBAL TINT
GLOBAL WAIT
GLOBAL SYS
;
GLOBAL ADVAL
GLOBAL POINT
GLOBAL GETIMS
GLOBAL TINTFN
GLOBAL MODEFN
GLOBAL WIDFN
;
EXTRN EXTERR
;
CLG:
COLOUR:
DRAW:
ENVEL:
GCOL:
MODE:
MOVE:
PLOT:
SOUND:
ADVAL:
POINT:
GETIMS:
PUTIMS:
CIRCLE:
ELLIPSE:
FILL:
MOUSE:
ORIGIN:
RECTAN:
LINE:
TINT:
TINTFN:
MODEFN:
WIDFN:
WAIT:
SYS:
XOR A
CALL EXTERR
DEFM 'Sorry'
DEFB 0
;
END
NAME ('HOOK')
;
GLOBAL CLG
GLOBAL COLOUR
GLOBAL DRAW
GLOBAL ENVEL
GLOBAL GCOL
GLOBAL MODE
GLOBAL MOVE
GLOBAL PLOT
GLOBAL SOUND
GLOBAL PUTIMS
GLOBAL CIRCLE
GLOBAL ELLIPS
GLOBAL FILL
GLOBAL MOUSE
GLOBAL ORIGIN
GLOBAL RECTAN
GLOBAL LINE
GLOBAL TINT
GLOBAL WAIT
GLOBAL SYS
GLOBAL CSRON
GLOBAL CSROFF
;
GLOBAL ADVAL
GLOBAL POINT
GLOBAL GETIMS
GLOBAL TINTFN
GLOBAL MODEFN
GLOBAL WIDFN
;
EXTRN EXTERR
;
CLG:
COLOUR:
DRAW:
ENVEL:
GCOL:
MODE:
MOVE:
PLOT:
SOUND:
ADVAL:
POINT:
GETIMS:
PUTIMS:
CIRCLE:
ELLIPS:
FILL:
MOUSE:
ORIGIN:
RECTAN:
LINE:
TINT:
TINTFN:
MODEFN:
WIDFN:
WAIT:
SYS:
CSRON:
CSROFF:
XOR A
CALL EXTERR
DEFM 'Sorry'
DEFB 0
;
END

View File

@@ -0,0 +1,19 @@
Copyright (c) 2024, Richard T. Russell, http://www.rtrussell.co.uk/
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -2,48 +2,39 @@
setlocal
set TOOLS=..\..\Tools
set APPBIN=..\..\Binary\Apps
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
set TASMTABS=%TOOLS%\tasm32
set CPMDIR80=%TOOLS%/cpm/
call :asm syscopy || exit /b
call :asm assign || exit /b
call :asm format || exit /b
call :asm talk || exit /b
call :asm mode || exit /b
call :asm rtc || exit /b
call :asm timer || exit /b
call :asm rtchb || exit /b
zxcc Z80ASM -SYSGEN/F || exit /b
pushd XM && call Build || exit /b & popd
pushd FDU && call Build || exit /b & popd
pushd Tune && call Build || exit /b & popd
pushd FAT && call Build || exit /b & popd
pushd Test && call Build || exit /b & popd
pushd ZMP && call Build || exit /b & popd
pushd ZMD && call Build || exit /b & popd
pushd Dev && call Build || exit /b & popd
pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd Survey && call Build || exit /b & popd
pushd HTalk && call Build || exit /b & popd
pushd BBCBASIC && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b
call :build syscopy || exit /b
call :build assign || exit /b
call :build format || exit /b
call :build talk || exit /b
call :build mode || exit /b
call :build rtc || exit /b
call :build timer || exit /b
call :build sysgen || exit /b
call :build XM || exit /b
call :build FDU || exit /b
call :build Tune || exit /b
call :build FAT || exit /b
call :build Test || exit /b
call :build ZMP || exit /b
call :build ZMD || exit /b
call :build Dev || exit /b
call :build VGM || exit /b
call :build cpuspd || exit /b
call :build reboot || exit /b
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
:asm
echo.
echo Building %1...
tasm -t80 -g3 -fFF %1.asm %1.com %1.lst || exit /b
goto :eof
:asm180
echo.
echo Building %1...
tasm -t180 -g3 -fFF %1.asm %1.com %1.lst || exit /b
:build
echo Building %1
pushd %1 && call Build || exit /b & popd
goto :eof

View File

@@ -1,22 +1,34 @@
@echo off
setlocal
if exist *.bin del *.bin
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.hex del *.hex
if exist *.prn del *.prn
call :clean syscopy || exit /b
call :clean assign || exit /b
call :clean format || exit /b
call :clean talk || exit /b
call :clean mode || exit /b
call :clean rtc || exit /b
call :clean timer || exit /b
call :clean sysgen || exit /b
call :clean XM || exit /b
call :clean FDU || exit /b
call :clean Tune || exit /b
call :clean FAT || exit /b
call :clean Test || exit /b
call :clean ZMP || exit /b
call :clean ZMD || exit /b
call :clean Dev || exit /b
call :clean VGM || exit /b
call :clean cpuspd || exit /b
call :clean reboot || exit /b
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
pushd XM && call Clean || exit /b 1 & popd
pushd FDU && call Clean || exit /b 1 & popd
pushd Tune && call Clean || exit /b 1 & popd
pushd FAT && call Clean || exit /b 1 & popd
pushd Test && call Clean || exit /b 1 & popd
pushd ZMP && call Clean || exit /b 1 & popd
pushd ZMD && call Clean || exit /b 1 & popd
pushd Dev && call Clean || exit /b 1 & popd
pushd VGM && call Clean || exit /b 1 & popd
pushd cpuspd && call Clean || exit /b 1 & popd
pushd Survey && call Clean || exit /b 1 & popd
pushd HTalk && call Clean || exit /b 1 & popd
pushd BBCBASIC && call Clean || exit /b 1 & popd
goto :eof
:clean
pushd %1 && call Clean || exit /b & popd
goto :eof

View File

@@ -1,7 +1,7 @@
# RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen \
Updated: 6-May-2024
Updated: 27-Aug-2025
This application allows copying files between CP/M filesystems and FAT
filesystems (DOS, Windows, Mac, Linux, etc.). The application runs on
@@ -142,10 +142,10 @@ creation.
| Date | Version | Notes |
|------------:|-------- |-------------------------------------------------------------|
| 2-May-2019 | v0.9 | (beta) initial release |
| 7-May-2019 | v0.9.1 | (beta) added REN and DEL |
| 8-May-2019 | v0.9.2 | (beta) handle file collisions w/ user prompt |
| 8-Oct-2019 | v0.9.3 | (beta) fixed incorrect filename buffer size (MAX_FN) |
| 2-May-2019 | v0.9 | (beta) initial release |
| 7-May-2019 | v0.9.1 | (beta) added REN and DEL |
| 8-May-2019 | v0.9.2 | (beta) handle file collisions w/ user prompt |
| 8-Oct-2019 | v0.9.3 | (beta) fixed incorrect filename buffer size (MAX_FN) |
| 10-Oct-2019 | v0.9.4 | (beta) upgraded to FatFs R0.13c |
| 10-Oct-2019 | v0.9.5 | (beta) added MD (make directory) |
| 10-Oct-2019 | v0.9.6 | (beta) added FORMAT |
@@ -153,6 +153,7 @@ creation.
| | | add attributes to directory listing |
| 12-Apr-2021 | v0.9.8 | (beta) support CP/NET drives |
| 12-Oct-2023 | v0.9.9 | (beta) handle updated HBIOS Disk Device call |
| 6-Jan-2024 | v1.0.0 | updated to latest FsFat (v0.15) |
| 6-Jan-2024 | v1.0.0 | updated to latest FsFat (v0.15) |
| | | updated to latest SDCC (v4.3) |
| 6-May-2024 | v1.1.0 | improve floppy format boot record |
| 6-May-2024 | v1.1.0 | improve floppy format boot record |
| 27-Aug-2025 | v1.2.0 | update location of RomWBW IDENT pointer |

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@@ -31,7 +31,7 @@ STKSIZ .EQU $FF
;
; HBIOS SYSTEM CALLS AND ID STRING ADDRESS
;
ROMWBW_ID .EQU $FFFE ; ROMWBW ID STRING ADDRESS
ROMWBW_ID .EQU $FFFC ; ROMWBW ID STRING ADDRESS
HBIOS_SYS .EQU $FFF0 ; HBIOS SYSCALL ADDRESS
H_SYSGET .EQU $F8 ; GET SYSTEM INFO

View File

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

View File

@@ -1,10 +1,8 @@
@echo off
setlocal
set TOOLS=..\..\..\..\Tools
set TOOLS=../../../../Tools
set PATH=%TOOLS%\zxcc;%PATH%
set CPMDIR80=%TOOLS%/cpm/
zxcc M80 -=2piotst/l || exit /b

View File

@@ -1,41 +1,31 @@
@echo off
setlocal
set TOOLS=../../../Tools
set APPBIN=..\..\Binary\Apps
set TOOLS=..\..\..\Tools
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
set TASMTABS=%TOOLS%\tasm32
set CPMDIR80=%TOOLS%/cpm/
pushd DMAmon && call Build || exit /b & popd
pushd tstdskng && call Build || exit /b & popd
pushd inttest && call Build || exit /b & popd
pushd ppidetst && call Build || exit /b & popd
pushd ramtest && call Build || exit /b & popd
pushd I2C && call Build || exit /b & popd
pushd rzsz && call Build || exit /b & popd
pushd vdctest && call Build || exit /b & popd
pushd kbdtest && call Build || exit /b & popd
pushd ps2info && call Build || exit /b & popd
pushd 2piotst && call Build || exit /b & popd
pushd piomon && call Build || exit /b & popd
pushd banktest && call Build || exit /b & popd
pushd portscan && call Build || exit /b & popd
pushd sound && call Build || exit /b & popd
call :build DMAmon || exit /b
call :build tstdskng || exit /b
call :build inttest || exit /b
call :build ppidetst || exit /b
call :build ramtest || exit /b
call :build I2C || exit /b
call :build rzsz || exit /b
call :build vdctest || exit /b
call :build kbdtest || exit /b
call :build ps2info || exit /b
call :build 2piotst || exit /b
call :build piomon || exit /b
call :build banktest || exit /b
call :build portscan || exit /b
call :build sound || exit /b
call :build testh8p || exit /b
goto :eof
:asm
echo.
echo Building %1...
tasm -t80 -g3 -fFF %1.asm %1.com %1.lst || exit /b
goto :eof
:asm180
echo.
echo Building %1...
tasm -t180 -g3 -fFF %1.asm %1.com %1.lst || exit /b
:build
echo Building %1
pushd %1 && call Build || exit /b & popd
goto :eof

View File

@@ -22,3 +22,4 @@ pushd piomon && call Clean || exit /b 1 & popd
pushd banktest && call Clean || exit /b 1 & popd
pushd portscan && call Clean || exit /b 1 & popd
pushd sound && call Clean || exit /b 1 & popd
pushd testh8p && call Clean || exit /b 1 & popd

View File

@@ -362,7 +362,7 @@ SPDDISP:LD DE,DMA_SPD_STR
CALL PRTIDXDEA
;
call PRTSTRD
.db "\n\rTransfer Mode: $" ; DIPLAY TRANSFER
.db "\n\rTransfer Mode: $" ; DISPLAY TRANSFER
LD a,(dmaxfer) ; MODE
LD DE,DMA_XFRMODE
CALL PRTIDXDEA

View File

@@ -5,9 +5,9 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF i2cscan.asm i2cscan.com i2cscan.lst || exit /b
tasm -t180 -g3 -fFF rtcds7.asm rtcds7.com rtcds7.lst || exit /b
tasm -t180 -g3 -fFF i2clcd.asm i2clcd.com i2clcd.lst || exit /b
tasm -t80 -g3 -fFF i2cscan.asm i2cscan.com i2cscan.lst || exit /b
tasm -t80 -g3 -fFF rtcds7.asm rtcds7.com rtcds7.lst || exit /b
tasm -t80 -g3 -fFF i2clcd.asm i2clcd.com i2clcd.lst || exit /b
tasm -t80 -g3 -ff srom.asm srom.com srom.lst || exit /b
copy /Y i2c*.com ..\..\..\..\Binary\Apps\Test\ || exit /b

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound
DEST = ../../../Binary/Apps/Test
# OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound testh8p
# DEST = ../../../Binary/Apps/Test
TOOLS =../../../Tools
include $(TOOLS)/Makefile.inc

View File

@@ -5,7 +5,7 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF inttest.asm inttest.com inttest.lst || exit /b
tasm -t80 -g3 -fFF inttest.asm inttest.com inttest.lst || exit /b
copy /Y inttest.com ..\..\..\..\Binary\Apps\Test\ || exit /b
copy /Y inttest.doc ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -5,7 +5,7 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF kbdtest.asm kbdtest.com kbdtest.lst || exit /b
tasm -t80 -g3 -fFF kbdtest.asm kbdtest.com kbdtest.lst || exit /b
copy /Y kbdtest.com ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -5,6 +5,6 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF piomon.asm piomon.com piomon.lst || exit /b
tasm -t80 -g3 -fFF piomon.asm piomon.com piomon.lst || exit /b
copy /Y piomon.com ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -5,7 +5,7 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF ppidetst.asm ppidetst.com ppidetst.lst || exit /b
tasm -t80 -g3 -fFF ppidetst.asm ppidetst.com ppidetst.lst || exit /b
copy /Y ppidetst.com ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -5,6 +5,6 @@ set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF ps2info.asm ps2info.com ps2info.lst || exit /b
tasm -t80 -g3 -fFF ps2info.asm ps2info.com ps2info.lst || exit /b
copy /Y ps2info.com ..\..\..\..\Binary\Apps\Test\ || exit /b

View File

@@ -12,6 +12,7 @@
; WBW 2022-04-02: Fix prtchr register saving/recovery
; WBW 2023-10-19: Add support for Duodyne
; WBW 2024-06-10: Add support for RC2014
; WBW 2025-12-04: Add support for S100 MS-DOS Support Board
;
;=======================================================================
;
@@ -29,6 +30,9 @@ iodat_duo .equ $4C ; PS/2 controller data port address
; RC2014 (EP/Sally)
iocmd_rc .equ $64 ; PS/2 controller command port address
iodat_rc .equ $60 ; PS/2 controller data port address
; S100 MS-DOS Support Board
iocmd_s100 .equ $64 ; PS/2 controller command port address
iodat_s100 .equ $60 ; PS/2 controller data port address
;
cpumhz .equ 8 ; for time delay calculations (not critical)
@@ -94,6 +98,8 @@ setup1:
jr z,setup_duo
cp '4' ; RC2014 EP/Sally
jr z,setup_rc
cp '5' ; S100
jr z,setup_s100
cp 'X'
jr z,exit
jr setup
@@ -130,6 +136,14 @@ setup_rc:
ld de,str_rc
jr setup2
;
setup_s100:
ld a,iocmd_s100
ld (iocmd),a
ld a,iodat_s100
ld (iodat),a
ld de,str_s100
jr setup2
;
setup2:
call prtstr
call crlf2
@@ -1452,18 +1466,20 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "PS/2 Keyboard/Mouse Information v0.9, 10-Jun-2024",0
str_banner .db "PS/2 Keyboard/Mouse Information v1.0, 4-Dec-2025",0
str_hwmenu .db "PS/2 Controller Port Options:\r\n\r\n"
.db " 1 - Nhyodyne\r\n"
.db " 2 - Rhyophyre\r\n"
.db " 3 - Duodyne\r\n"
.db " 4 - RC2014\r\n"
.db " 5 - S100 MS-DOS Support Board\r\n"
.db " X - Exit Application\r\n"
.db "\r\nSelection? ",0
str_mbc .db "Nhyodyne",0
str_rph .db "Rhyophyre",0
str_duo .db "Duodyne",0
str_rc .db "RC2014 (Saly)",0
str_s100 .db "S100 (MS-DOS Support Board)",0
str_menu .db "PS/2 Testing Options:\r\n\r\n"
.db " C - Test PS/2 Controller\r\n"
.db " K - Test PS/2 Keyboard\r\n"

View File

@@ -2,7 +2,7 @@ OBJECTS = ramtest.com
DEST = ../../../../Binary/Apps/Test
DOCDEST = ../../../../Doc
TOOLS = ../../../../Tools
OTHERS = loader.bin dbgmon.bin
OTHERS = *.bin
include $(TOOLS)/Makefile.inc
ramtest.com: loader.bin dbgmon.bin

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 testh8p.asm testh8p.com testh8p.lst || exit /b
copy /Y testh8p.com ..\..\..\..\Binary\Apps\Test\ || 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

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