Compare commits

...

270 Commits

Author SHA1 Message Date
Wayne Warthen
a4fc24239e Remove Leftover Debugging 2026-01-07 17:26:58 -08:00
Wayne Warthen
e488aec54d Driver Init Processing Refactor
- Driver INIT call lists remvoed
- Added driver init phase dispatching
2026-01-07 14:43:45 -08:00
Wayne Warthen
4a66eb61ee Implement RC2014 Config Customizations
Updated RC2014 platform config per Spencer.
2026-01-07 11:49:58 -08:00
Wayne Warthen
59694aa936 Merge pull request #644 from dinoboards/dean-dev-2026-01-07-fix-vdp-detection
hbios/tms: fix for tms9918 and added detection for 'Super V9958' fpga
2026-01-07 11:11:58 -08:00
Dean Netherton
096bbf4ee6 hbios/tms: fix for tms9918 and added detection for 'Super V9958' fpga module 2026-01-07 19:01:48 +11:00
Wayne Warthen
31b2325037 Merge pull request #643 from dinoboards/dean-dev-2016-01-06-tms-vram-reporting
HBIOS/TMS Driver: updated to probe and detect VDP chip type and amount of VRAM available
2026-01-06 18:58:09 -08:00
Dean Netherton
d1e9065d19 hbios/tms: replace some spacing with tabs 2026-01-07 10:31:26 +11:00
Dean Netherton
56544dc315 hbios/tms: Added vram size detection for V99x8 chips 2026-01-07 09:54:36 +11:00
Dean Netherton
0c13a056b4 hbios/tms: Added detection and reporting of vdp type (TMS9918/V9938/V9958) 2026-01-07 09:52:38 +11:00
Wayne Warthen
b49142e61e Clarify SYSSET BOOTINFO Function Documentation
Thanks and credit to @avwohl.
2026-01-06 12:51:08 -08:00
Wayne Warthen
9b1439ec50 Fix ROM Fonts Loading, Issue #642
Bank ID used for loading ROM fonts was not properly offset by the start of the IMG banks.

Thanks and credit to @dinoboards for finding this.
2026-01-05 19:32:02 -08:00
Wayne Warthen
ace325377a Missing TMSMODE text
A couple of the new TMSMODE values were not being displayed in the boot messages.  This problem was purely visual -- no functional issues.
2026-01-05 17:26:40 -08:00
Wayne Warthen
f4b9e48ccf Add RC2014 Platform for Official RC2014 Kits 2026-01-05 16:54:00 -08:00
Wayne Warthen
078a624e5c Minor N8PC Follow-up 2025-12-13 19:14:27 -08:00
Wayne Warthen
4a511ad27e Merge pull request #640 from danwerner21/master
N8PC default updates
2025-12-13 19:01:42 -08:00
Dan Werner
d3f74ed97d N8PC default updates 2025-12-14 02:28:42 +00:00
Wayne Warthen
8402324bb5 Fix extraneous console switch message 2025-12-13 13:08:22 -08:00
Wayne Warthen
5014a47a64 SCSI and ESPSD Driver Cleaning
- Improved error handling flow
- Simplified ESPSD I/O timeout handling
2025-12-13 12:40:23 -08:00
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
Dean Netherton
75c9a4e482 Merge branch 'master' into dean-ch376-usb-native-8 2025-06-24 08:20:43 +10: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
Marshall G. Gates
c802bd2ce2 Merge branch 'master' into dev/BoatFest_Talk 2025-05-23 16:26:31 -04:00
Marshall G. Gates
6ad93577db Merge branch 'master' into dev/BoatFest_Talk 2025-05-20 23:15:36 -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
546 changed files with 43620 additions and 15143 deletions

View File

@@ -4,6 +4,7 @@ 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.

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

20
.gitignore vendored
View File

@@ -100,7 +100,7 @@ Tools/unix/zx/zx
!Source/EZ512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.bin
!Source/FZ80/*.bin
!Source/SZ80/*.bin
!Tools/cpm/**
!Tools/unix/zx/*
!Tools/zx/*
@@ -114,20 +114,24 @@ Source/ZPM3/genbnk.dat
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/copysl.doc
Binary/Apps/fdu.doc
Binary/Apps/zmconfig.ovr
Binary/Apps/zminit.ovr
Binary/Apps/zmp.doc
Binary/Apps/zmp.hlp
Binary/Apps/zmp.cfg
Binary/Apps/zmp.doc
Binary/Apps/zmp.fon
Binary/Apps/zmp.hlp
Binary/Apps/zmterm.ovr
Binary/Apps/zmxfer.ovr
Binary/CPM3/bdos3.spr
@@ -146,13 +150,12 @@ Binary/CPNET/cpn12ser.lbr
Binary/CPNET/cpn3duo.lbr
Binary/CPNET/cpn3mt.lbr
Binary/CPNET/cpn3ser.lbr
Binary/*.upd
Binary/hd1k_prefix.dat
Binary/ZPM3/bnkbdos3.spr
Binary/ZPM3/bnkbios3.spr
Binary/ZPM3/gencpm.dat
Binary/ZPM3/resbdos3.spr
Binary/ZPM3/zinstal.zpm
Binary/hd1k_prefix.dat
Source/BPBIOS/def-ww.lib
Source/CPNET/cpn12duo.lbr
Source/CPNET/cpn12mt.lbr
@@ -180,6 +183,8 @@ 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
@@ -197,4 +202,3 @@ Source/ZPM3/setz3.com
Tools/unix/OpenSpin/build/
Tools/unix/zxcc/config.h
Tools/unix/zxcc/zxcc
Binary/Apps/bbcbasic.txt

36
.vscode/settings.json vendored
View File

@@ -1,4 +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.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

@@ -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

@@ -62,6 +62,7 @@ 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
@@ -69,6 +70,10 @@ ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
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")
-----------------

Binary file not shown.

View File

@@ -15,6 +15,31 @@ Version 3.6
- 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
- WBW: Add official RC2014 platform (derived from RCZ80)
- D?N: Added improved TMS Driver hardware/configuration detection and reporting
- WBW: Removed driver module INIT lists, replaced with init phase system
Version 3.5.1
-------------
@@ -85,7 +110,7 @@ Version 3.5
- 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: Refrech Cowgol disk image (Ladislau Szilagyi)
- WBW: Refresh Cowgol disk image (Ladislau Szilagyi)
Version 3.4
-----------

Binary file not shown.

View File

@@ -23,10 +23,14 @@ Borland TurboPascal User Manual ("Turbo_Pascal_Version_3.0_Reference_Manual_1986
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")

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -1,4 +1,4 @@
FROM ubuntu:jammy-20240111 as basebuilder
FROM ubuntu:jammy-20240111 AS basebuilder
# This docker file can be used to build a tool chain docker image for building RomWBW images.
@@ -10,7 +10,7 @@ FROM ubuntu:jammy-20240111 as basebuilder
# 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:latest
# 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:
@@ -21,13 +21,11 @@ FROM ubuntu:jammy-20240111 as basebuilder
# when finish, type 'exit' to return to back to your standard terminal session
LABEL Maintainer="Dean Netherton" \
Description="spike to use clang for ez80 target"
Description="RomWBW builder platform"
ENV DEBIAN_FRONTEND=noninteractive
RUN dpkg --add-architecture i386
RUN sed -i 's/http:\/\/archive\.ubuntu\.com\/ubuntu/http:\/\/au.archive.ubuntu.com\/ubuntu/g' /etc/apt/sources.list
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
@@ -35,10 +33,10 @@ RUN apt install -y --no-install-recommends cmake lzip ca-certificates mtools bui
RUN mkdir work
WORKDIR /work
FROM basebuilder as main
FROM basebuilder AS main
LABEL Maintainer="Dean Netherton" \
Description="spike to build RomWBW"
Description="RomWBW builder platform"
RUN mkdir /src
WORKDIR /src/

View File

@@ -1,7 +1,7 @@
.PHONY: tools source clean clobber diff dist
.ONESHELL:
.SHELLFLAGS = -cex
.SHELLFLAGS = -ce
all: tools source
@@ -22,6 +22,11 @@ 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

View File

@@ -8,10 +8,27 @@ release of RomWBW.
- **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, it is important to update
the OS boot tracks of your disks as well as the RomWBW-specific
applications. This is discussed in the "Upgrading" section of the
RomWBW User Guide.
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
@@ -94,7 +111,6 @@ This is a patch release of v3.5.
- Enhancements to ASSIGN command to automatically assign drives
(Mark Pruden).
### New Hardware Support
- NABU w/ RomWBW Option Board.

879
ReadMe.md
View File

@@ -1,431 +1,448 @@
**RomWBW Introduction** \
Version 3.6 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
29 Jun 2025
# Overview
RomWBW software provides a complete, commercial quality implementation
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>)
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>),
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
(<https://groups.google.com/g/rc2014-z80>)
- [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
- [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in [RomWBW
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf)
.
# 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.
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 addressable storage on a single device,
with up to 128MB accessible at any one time.
## Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
operating system. A “combo” disk image contains multiple slices, each
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.
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, and Microsoft Fortran
- 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.
## 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.
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.
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
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
distribution. Subsequently, you can write disk images on your disk
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](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
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)
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)
is a reference for the ROM-hosted and OS-hosted applications created
or customized to enhance the operation of RomWBW.
- [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
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Phillip Stevens contributed support for FreeRTOS.
- Curt Mayer contributed the original Linux / MacOS build process.
- UNA BIOS and FDISK80 are the products of John Coffman.
- FLASH4 is a product of Will Sowerbutts.
- CLRDIR is a product of Max Scane.
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.
- The RomWBW Disk Catalog document was produced by Mykl Orders.
- 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.
- Martin R has provided substantial help reviewing and improving the
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
- COPYSL, and SLABEL utilities
- Display of bootable slices via “S” command during startup
- 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.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
- 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.
## 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
option) any later version.
RomWBW is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with RomWBW. If not, see <https://www.gnu.org/licenses/>.
Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen
> <wwarthen@gmail.com>
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is
composed of multiple components with different licenses. It is believed
that in all such cases the licenses are compatible with GPL version 3.
RomWBW encourages code contributions from others. Contributors may
assert their own copyright in their contributions by annotating the
contributed source code appropriately. Contributors are further
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.
**RomWBW Introduction** \
Version 3.6 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
06 Jan 2026
# Overview
RomWBW software provides a complete, commercial quality implementation
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>)
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>),
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
(<https://groups.google.com/g/rc2014-z80>)
- [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
- [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in [RomWBW
Hardware](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Hardware.pdf)
.
# 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.
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 addressable storage on a single device,
with up to 128MB accessible at any one time.
## Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
operating system. A “combo” disk image contains multiple slices, each
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.
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.
## 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.
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.
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
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
distribution. Subsequently, you can write disk images on your disk
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](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
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)
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)
is a reference for the ROM-hosted and OS-hosted applications created
or customized to enhance the operation of RomWBW.
- [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
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Phillip Stevens contributed support for FreeRTOS.
- Curt Mayer contributed the original Linux / MacOS build process.
- UNA BIOS and FDISK80 are the products of John Coffman.
- FLASH4 is a product of Will Sowerbutts.
- CLRDIR is a product of Max Scane.
- Tasty Basic is a product of Dimitri Theulings.
- 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.
- 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.
- Martin R has provided substantial help reviewing and improving the
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.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
- 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](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
option) any later version.
RomWBW is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with RomWBW. If not, see <https://www.gnu.org/licenses/>.
Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen
> <wwarthen@gmail.com>
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is
composed of multiple components with different licenses. It is believed
that in all such cases the licenses are compatible with GPL version 3.
RomWBW encourages code contributions from others. Contributors may
assert their own copyright in their contributions by annotating the
contributed source code appropriately. Contributors are further
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.

View File

@@ -1,441 +1,458 @@
RomWBW Introduction
Wayne Warthen (wwarthen@gmail.com)
29 Jun 2025
OVERVIEW
RomWBW software provides a complete, commercial quality implementation
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)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A complete list of the currently supported platforms is found in RomWBW
Hardware .
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.
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 addressable storage on a single device,
with up to 128MB accessible at any one time.
Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
operating system. A “combo” disk image contains multiple slices, each
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.
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, and Microsoft Fortran
- 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.
ROM Distribution
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official 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) 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
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
distribution. Subsequently, you can write disk images on your disk
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. It is also a good idea to review the Release
Notes for helpful release-specific information.
Documentation
There are several documents that form the core of the RomWBW
documentation:
- 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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Phillip Stevens contributed support for FreeRTOS.
- Curt Mayer contributed the original Linux / MacOS build process.
- UNA BIOS and FDISK80 are the products of John Coffman.
- FLASH4 is a product of Will Sowerbutts.
- CLRDIR is a product of Max Scane.
- Tasty Basic is a product of Dimitri Theulings.
- Dean Netherton contributed eZ80 CPU support, the sound driver
interface, and the SN76489 sound driver.
- The RomWBW Disk Catalog document was produced by Mykl Orders.
- 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.
- Martin R has provided substantial help reviewing and improving the
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
- COPYSL, and SLABEL utilities
- Display of bootable slices via “S” command during startup
- 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.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
- 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.
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
option) any later version.
RomWBW is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with RomWBW. If not, see https://www.gnu.org/licenses/.
Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
Wayne Warthen
wwarthen@gmail.com
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is
composed of multiple components with different licenses. It is believed
that in all such cases the licenses are compatible with GPL version 3.
RomWBW encourages code contributions from others. Contributors may
assert their own copyright in their contributions by annotating the
contributed source code appropriately. Contributors are further
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.
RomWBW Introduction
Wayne Warthen (wwarthen@gmail.com)
06 Jan 2026
OVERVIEW
RomWBW software provides a complete, commercial quality implementation
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)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A complete list of the currently supported platforms is found in RomWBW
Hardware .
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.
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 addressable storage on a single device,
with up to 128MB accessible at any one time.
Included Software
Multiple disk images are provided in the distribution. Most disk images
contain a complete, bootable, ready-to-run implementation of a specific
operating system. A “combo” disk image contains multiple slices, each
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.
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.
ROM Distribution
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official 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) 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
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
distribution. Subsequently, you can write disk images on your disk
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. It is also a good idea to review the Release
Notes for helpful release-specific information.
Documentation
There are several documents that form the core of the RomWBW
documentation:
- 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.
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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Phillip Stevens contributed support for FreeRTOS.
- Curt Mayer contributed the original Linux / MacOS build process.
- UNA BIOS and FDISK80 are the products of John Coffman.
- FLASH4 is a product of Will Sowerbutts.
- CLRDIR is a product of Max Scane.
- Tasty Basic is a product of Dimitri Theulings.
- 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.
- 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.
- Martin R has provided substantial help reviewing and improving the
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.
- Jose Collado has contributed enhancements to the TMS driver including
compatibility with standard TMS register configuration.
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
- Matt Carroll has contributed a fix to XM.COM that corrects the port
specification when doing a send.
- Dean Jenkins enhanced the build process to accommodate the Raspberry
Pi 4.
- Tom Plano has contributed a new utility (HTALK) to allow talking
directly to HBIOS COM ports.
- Lars Nelson has contributed several generic utilities such as a
universal (OS agnostic) UNARC application.
- Dylan Hall added support for specifying a secondary console.
- Bill Shen has contributed boot loaders for several of his systems.
- 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
option) any later version.
RomWBW is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
You should have received a copy of the GNU General Public License along
with RomWBW. If not, see https://www.gnu.org/licenses/.
Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
Wayne Warthen
wwarthen@gmail.com
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is
composed of multiple components with different licenses. It is believed
that in all such cases the licenses are compatible with GPL version 3.
RomWBW encourages code contributions from others. Contributors may
assert their own copyright in their contributions by annotating the
contributed source code appropriately. Contributors are further
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.

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

File diff suppressed because it is too large Load Diff

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

@@ -1,4 +1,4 @@
IDENT .EQU $FFFE ; loc of RomWBW HBIOS ident ptr
IDENT .EQU $FFFC ; loc of RomWBW HBIOS ident ptr
;
BF_SYSVER .EQU $F1 ; BIOS: VER function
BF_SYSGET .EQU $F8 ; HBIOS: SYSGET function
@@ -7,6 +7,6 @@ BF_SND .EQU $50
BF_SNDRESET .EQU BF_SND + 0 ; RESET SOUND SYSTEM
BF_SNDVOL .EQU BF_SND + 1 ; REQUEST SOUND VOL - L CONTAINS VOLUME (255 MAX, 0 SILENT) - SCALED AS REQUIRED BY DRIVER (EG: MAPS TO JUST 4 BIT RESOLUTION FOR SN76489)
BF_SNDPRD .EQU BF_SND + 2 ; REQUEST SOUND PERIOD - HL CONTAINS DRIVER SPECIFIC VALUE
BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS QUARTER NOTE
BF_SNDNOTE .EQU BF_SND + 3 ; REQUEST NOTE - L CONTAINS NOTE - EACH VALUE IS AN EIGHTH TONE
BF_SNDPLAY .EQU BF_SND + 4 ; INITIATE THE REQUESTED SOUND COMMAND
BF_SNDQUERY .EQU BF_SND + 5 ; E IS SUBFUNCTION

View File

@@ -446,7 +446,7 @@ IDBIO:
;
IDBIO1:
; Check for RomWBW (HBIOS)
LD HL,($FFFE) ; HL := HBIOS ident location
LD HL,($FFFC) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,IDBIO2 ; Not HBIOS

View File

@@ -7,6 +7,8 @@ set TASMTABS=%TOOLS%\tasm32
tasm -t80 -g3 -fFF -dWBW vgmplay.asm vgmplay.com vgmplay.lst || exit /b
tasm -t80 -g3 -fFF -dWBW ymfmdemo.asm ymfmdemo.com ymfmdemo.lst || exit /b
tasm -t80 -g3 -fFF -dWBW vgminfo.asm vgminfo.com vgminfo.lst || exit /b
copy /Y vgmplay.com ..\..\..\Binary\Apps\ || exit /b
copy /Y vgminfo.com ..\..\..\Binary\Apps\ || exit /b
copy /Y Tunes\*.vgm ..\..\..\Binary\Apps\Tunes\ || exit /b

View File

@@ -1,4 +1,4 @@
OBJECTS = vgmplay.com
OBJECTS = vgmplay.com vgminfo.com
DEST = ../../../Binary/Apps
TOOLS = ../../../Tools
OTHERS = *.LST
@@ -13,6 +13,9 @@ vgmplay.com: $(DEPS)
ym2612.com:
$(TASM) -dWBW ymfmdemo.asm ymfmdemo.com ymfmdemo.lst
vgminfo.com:
$(TASM) -dWBW vgminfo.asm vgminfo.com vgminfo.lst
all::
mkdir -p $(DEST)/Tunes
cp Tunes/*.vgm $(DEST)/Tunes

854
Source/Apps/VGM/vgminfo.asm Normal file
View File

@@ -0,0 +1,854 @@
;------------------------------------------------------------------------------
; VGM File Info Display for CP/M
;------------------------------------------------------------------------------
;
; Scans all .VGM files in current directory and displays chip information
; in a formatted table
;
; (c) 2025 Joao Miguel Duraes
; Licensed under the MIT License
;
; Version: 1.1 - 06-Dec-2025
;
; Assemble with:
; TASM -80 -b vgminfo.asm vgminfo.com
;
;------------------------------------------------------------------------------
;------------------------------------------------------------------------------
; CP/M definitions
;------------------------------------------------------------------------------
BOOT .equ 0000H ; boot location
BDOS .equ 0005H ; bdos entry point
FCB .equ 005CH ; file control block
FCBCR .equ FCB + 20H ; fcb current record
BUFF .equ 0080H ; DMA buffer
PRINTF .equ 9 ; BDOS print string function
OPENF .equ 15 ; BDOS open file function
CLOSEF .equ 16 ; BDOS close file function
READF .equ 20 ; BDOS sequential read function
SETDMA .equ 26 ; BDOS set DMA address
SFIRST .equ 17 ; BDOS search first
SNEXT .equ 18 ; BDOS search next
CR .equ 0DH ; carriage return
LF .equ 0AH ; line feed
;------------------------------------------------------------------------------
; VGM Header offsets
;------------------------------------------------------------------------------
DEBUG_SUM .equ 1 ; 1 = build with checksum support
VGM_IDENT .equ 00H ; "Vgm " identifier
VGM_VERSION .equ 08H ; Version
VGM_SN76489_CLK .equ 0CH ; SN76489 clock (4 bytes, little-endian)
VGM_YM2612_CLK .equ 2CH ; YM2612 clock (4 bytes, little-endian)
VGM_YM2151_CLK .equ 30H ; YM2151 clock (4 bytes, little-endian)
VGM_DATAOFF .equ 34H ; VGM data offset (relative to 0x34)
VGM_AY8910_CLK .equ 74H ; AY-3-8910 clock (4 bytes, little-endian)
;------------------------------------------------------------------------------
; VGM Command codes (subset)
;------------------------------------------------------------------------------
VGM_PSG1_W .equ 050H ; PSG (SN76489) write
VGM_PSG2_W .equ 030H ; PSG #2 write
VGM_YM26121_W .equ 052H ; YM2612 port 0 write
VGM_YM26122_W .equ 053H ; YM2612 port 1 write
VGM_YM26123_W .equ 0A2H ; YM2612 #2 port 0 write
VGM_YM26124_W .equ 0A3H ; YM2612 #2 port 1 write
VGM_YM21511_W .equ 054H ; YM2151 write
VGM_YM21512_W .equ 0A4H ; YM2151 #2 write
VGM_OPL2_W .equ 05AH ; YM3812 (OPL2) write
VGM_OPL31_W .equ 05EH ; YMF262 (OPL3) port 0 write
VGM_OPL32_W .equ 05FH ; YMF262 (OPL3) port 1 write
VGM_AY_W .equ 0A0H ; AY-3-8910 write
VGM_ESD .equ 066H ; End of sound data
VGM_WNS .equ 061H ; Wait n samples
VGM_W735 .equ 062H ; Wait 735 samples
VGM_W882 .equ 063H ; Wait 882 samples
;------------------------------------------------------------------------------
; Program Start
;------------------------------------------------------------------------------
.ORG 100H
START: LD SP, STACK ; Setup stack
; Parse command tail for debug flags (e.g. "D" or "/D")
CALL PARSE_DEBUG
; Display header
LD DE, MSG_HEADER
CALL PRTSTR
LD DE, MSG_DIVIDER
CALL PRTSTR
; Setup search for *.VGM files
LD DE, SEARCH_FCB
LD C, SFIRST
CALL BDOS
CP 0FFH ; No files found?
JP Z, NO_FILES
FILE_LOOP:
; A contains directory entry index (0-3)
; Each entry is 32 bytes, so multiply by 32
AND 03H ; Mask to 0-3
RLCA
RLCA
RLCA
RLCA
RLCA ; Multiply by 32
LD L, A
LD H, 0
LD DE, BUFF
ADD HL, DE ; HL now points to directory entry
; Copy filename from directory entry to our FCB
INC HL ; Skip user number
LD DE, FILE_FCB+1 ; Destination
LD BC, 11 ; 8+3 filename
LDIR
; Open and process this file
CALL PROCESS_FILE
; Search for next file
LD DE, SEARCH_FCB
LD C, SNEXT
CALL BDOS
CP 0FFH
JP NZ, FILE_LOOP
; Done
LD DE, MSG_DIVIDER
CALL PRTSTR
JP BOOT ; Exit to CP/M
NO_FILES: LD DE, MSG_NOFILES
CALL PRTSTR
JP BOOT
;------------------------------------------------------------------------------
; Process a VGM file - read header and display info
;------------------------------------------------------------------------------
PROCESS_FILE:
; Reset FCB
XOR A
LD (FILE_FCB), A ; Default drive
LD (FILE_FCB+12), A ; Clear extent
LD (FILE_FCB+32), A ; Clear current record
; Open file
LD DE, FILE_FCB
LD C, OPENF
CALL BDOS
CP 0FFH
RET Z ; Can't open, skip
; Set DMA to our buffer for first block
LD DE, VGMBUF
LD C, SETDMA
CALL BDOS
; Read first 128 bytes (header)
LD DE, FILE_FCB
LD C, READF
CALL BDOS
OR A
JR NZ, READ_DONE ; EOF or error
; Read second 128 bytes (to allow scanning right after header)
LD DE, VGMBUF+128
LD C, SETDMA
CALL BDOS
LD DE, FILE_FCB
LD C, READF
CALL BDOS
; Read third 128 bytes
LD DE, VGMBUF+256
LD C, SETDMA
CALL BDOS
LD DE, FILE_FCB
LD C, READF
CALL BDOS
; Read fourth 128 bytes
LD DE, VGMBUF+384
LD C, SETDMA
CALL BDOS
LD DE, FILE_FCB
LD C, READF
CALL BDOS
READ_DONE:
; Restore DMA
LD DE, BUFF
LD C, SETDMA
CALL BDOS
; Close file
LD DE, FILE_FCB
LD C, CLOSEF
CALL BDOS
; Check if valid VGM
LD HL, VGMBUF
LD A, (HL)
CP 'V'
RET NZ
INC HL
LD A, (HL)
CP 'g'
RET NZ
INC HL
LD A, (HL)
CP 'm'
RET NZ
INC HL
LD A, (HL)
CP ' '
RET NZ
; Display filename (exactly 8 chars from FCB)
LD HL, FILE_FCB+1
LD B, 8
PRINT_NAME: LD A, (HL)
CALL PRTCHR
INC HL
DJNZ PRINT_NAME
; Add 2-space gap
LD A, ' '
CALL PRTCHR
LD A, ' '
CALL PRTCHR
#if DEBUG_SUM
; Compute and optionally print 512-byte checksum over VGMBUF
CALL CALC_SUM512
LD A, (DBG_SUM)
OR A
JR Z, PAD_DONE
; Print space + [HHLL] + space between filename and chips
LD A, ' '
CALL PRTCHR
LD A, '['
CALL PRTCHR
LD A, (SUM_HI)
CALL PRTHEX8
LD A, (SUM_LO)
CALL PRTHEX8
LD A, ']'
CALL PRTCHR
LD A, ' '
CALL PRTCHR
#endif
PAD_DONE:
; Check and display chip info
CALL CHECK_CHIPS
; New line
CALL CRLF
RET
;------------------------------------------------------------------------------
; Check which chips are used: hybrid approach
; 1. Check header clocks to see which chip types are present
; 2. Scan commands to detect multiple instances of same chip type
;------------------------------------------------------------------------------
CHECK_CHIPS:
; Initialize chip flags
XOR A
LD (CHIP_FLAGS), A
LD (CHIP_TYPES), A ; Types present from header
; Check SN76489 clock (4 bytes at 0x0C)
LD HL, VGMBUF+VGM_SN76489_CLK
LD A, (HL)
INC HL
OR (HL)
INC HL
OR (HL)
INC HL
OR (HL)
JR Z, CHK_YM2612_CLK
LD A, (CHIP_TYPES)
OR 01H ; bit 0 = SN76489 present
LD (CHIP_TYPES), A
CHK_YM2612_CLK:
; Check YM2612 clock (4 bytes at 0x2C)
LD HL, VGMBUF+VGM_YM2612_CLK
LD A, (HL)
INC HL
OR (HL)
INC HL
OR (HL)
INC HL
OR (HL)
JR Z, CHK_YM2151_CLK
LD A, (CHIP_TYPES)
OR 02H ; bit 1 = YM2612 present
LD (CHIP_TYPES), A
CHK_YM2151_CLK:
; Check YM2151 clock (4 bytes at 0x30)
LD HL, VGMBUF+VGM_YM2151_CLK
LD A, (HL)
INC HL
OR (HL)
INC HL
OR (HL)
INC HL
OR (HL)
JR Z, CHK_AY_CLK
LD A, (CHIP_TYPES)
OR 04H ; bit 2 = YM2151 present
LD (CHIP_TYPES), A
CHK_AY_CLK:
; Check AY-3-8910 clock (4 bytes at 0x74, only valid in VGM v1.51+)
LD HL, VGMBUF+VGM_VERSION
LD A, (HL) ; Get low byte of version
CP 51H ; Check if >= 0x51 (v1.51)
JR C, START_CMD_SCAN ; Skip if < v1.51
INC HL
LD A, (HL) ; Get high byte
CP 01H ; Must be 0x01
JR NZ, START_CMD_SCAN ; Skip if not v1.xx
LD HL, VGMBUF+VGM_AY8910_CLK
LD A, (HL)
INC HL
OR (HL)
INC HL
OR (HL)
INC HL
OR (HL)
JR Z, START_CMD_SCAN
LD A, (CHIP_TYPES)
OR 08H ; bit 3 = AY present
LD (CHIP_TYPES), A
START_CMD_SCAN:
; Clear AY flags if AY is not present in header
LD A, (CHIP_TYPES)
BIT 3, A ; Check if AY is present
JR NZ, SCAN_CMDS ; If present, continue
LD A, (CHIP_FLAGS)
AND 3FH ; Clear bits 6 and 7 (AY flags)
LD (CHIP_FLAGS), A
SCAN_CMDS:
; If chip type is present, scan commands to detect multiples
; Set base flags from types
LD A, (CHIP_TYPES)
BIT 0, A
JR Z, NO_SN_BASE
LD A, (CHIP_FLAGS)
OR 01H ; Set SN #1
LD (CHIP_FLAGS), A
NO_SN_BASE:
LD A, (CHIP_TYPES)
BIT 1, A
JR Z, NO_YM2612_BASE
LD A, (CHIP_FLAGS)
OR 04H ; Set YM2612 #1
LD (CHIP_FLAGS), A
NO_YM2612_BASE:
LD A, (CHIP_TYPES)
BIT 2, A
JR Z, NO_YM2151_BASE
; Do NOT pre-mark YM2151 as used from the header alone.
; YM2151 will only be marked used when a command is seen.
NO_YM2151_BASE:
; Do NOT pre-mark AY as used from the header alone.
; AY will only be marked used when an 0xA0 command is seen.
NO_AY_BASE:
COMPUTE_DATA_START:
LD HL, (VGMBUF+VGM_DATAOFF)
LD A, H
OR L
JR NZ, GOT_OFFSET
LD HL, 000CH ; Default for VGM < 1.50 (0x40-0x34)
GOT_OFFSET: LD DE, VGMBUF+VGM_DATAOFF
ADD HL, DE ; HL = VGMBUF + 0x34 + offset
; Constrain to our 256-byte buffer
LD DE, VGMBUF
SBC HL, DE ; HL = offset from VGMBUF base
ADD HL, DE ; restore HL absolute inside VGMBUF
; Scan up to 255 commands or until EOD
LD C, 255
SCAN_LOOP: LD A, (HL)
INC HL
CP VGM_ESD
JP Z, SCAN_DONE
CP VGM_PSG1_W
JP NZ, CHK_PSG2
LD A, (CHIP_FLAGS)
OR 01H ; bit 0 = SN #1
LD (CHIP_FLAGS), A
INC HL ; Skip data byte
JP SCAN_NEXT
CHK_PSG2: CP VGM_PSG2_W
JP NZ, CHK_YM2612
LD A, (CHIP_TYPES) ; Only if SN76489 is present
BIT 0, A
JR Z, SCAN_NEXT_1
LD A, (CHIP_FLAGS)
OR 02H ; bit 1 = SN #2
LD (CHIP_FLAGS), A
SCAN_NEXT_1: INC HL
JP SCAN_NEXT
CHK_YM2612: CP VGM_YM26121_W
JR Z, GOT_YM2612_1
CP VGM_YM26122_W
JR Z, GOT_YM2612_1
CP VGM_YM26123_W
JR Z, GOT_YM2612_2
CP VGM_YM26124_W
JP NZ, CHK_YM2151
GOT_YM2612_2: LD A, (CHIP_TYPES) ; Only if YM2612 is present
BIT 1, A
JR Z, SCAN_NEXT_2
LD A, (CHIP_FLAGS)
OR 08H ; bit 3 = YM2612 #2
LD (CHIP_FLAGS), A
SCAN_NEXT_2: INC HL
INC HL ; Skip 2 data bytes
JP SCAN_NEXT
GOT_YM2612_1: LD A, (CHIP_FLAGS)
OR 04H ; bit 2 = YM2612 #1
LD (CHIP_FLAGS), A
INC HL
INC HL
JP SCAN_NEXT
CHK_YM2151: CP VGM_YM21511_W
JR Z, GOT_YM2151_1
CP VGM_YM21512_W
JP NZ, CHK_AY
LD A, (CHIP_TYPES) ; Only if YM2151 is present
BIT 2, A
JR Z, SCAN_NEXT_3
LD A, (CHIP_FLAGS)
OR 20H ; bit 5 = YM2151 #2
LD (CHIP_FLAGS), A
SCAN_NEXT_3: INC HL
INC HL
JP SCAN_NEXT
GOT_YM2151_1: LD A, (CHIP_FLAGS)
OR 10H ; bit 4 = YM2151 #1
LD (CHIP_FLAGS), A
INC HL
INC HL
JP SCAN_NEXT
CHK_AY: CP VGM_AY_W
JP NZ, CHK_OPL2
LD A, (CHIP_TYPES) ; Only if AY is present
BIT 3, A
JR Z, SCAN_SKIP_AY ; Skip if AY not present in header
LD A, (HL) ; Get register/chip byte
BIT 7, A ; Bit 7 = chip 2?
JR Z, GOT_AY1
LD A, (CHIP_FLAGS)
OR 80H ; bit 7 = AY #2
LD (CHIP_FLAGS), A
JR SCAN_SKIP_AY
GOT_AY1: LD A, (CHIP_FLAGS)
OR 40H ; bit 6 = AY #1
LD (CHIP_FLAGS), A
SCAN_SKIP_AY: INC HL
INC HL ; Skip 2 data bytes
JP SCAN_NEXT
CHK_OPL2: CP VGM_OPL2_W
JP NZ, CHK_OPL3
; Mark OPL2 present
LD A, (CHIP_TYPES)
OR 010H ; bit 4 = OPL2
LD (CHIP_TYPES), A
INC HL ; skip register
INC HL ; skip data
JP SCAN_NEXT
CHK_OPL3: CP VGM_OPL31_W
JR Z, GOT_OPL3
CP VGM_OPL32_W
JP NZ, CHK_WAIT
GOT_OPL3: ; Mark OPL3 present
LD A, (CHIP_TYPES)
OR 020H ; bit 5 = OPL3
LD (CHIP_TYPES), A
INC HL ; skip register
INC HL ; skip data
JP SCAN_NEXT
CHK_WAIT: CP VGM_WNS
JR NZ, CHK_W735
INC HL
INC HL ; Skip 2-byte wait value
JP SCAN_NEXT
CHK_W735: CP VGM_W735
JR Z, SCAN_NEXT
CP VGM_W882
JR Z, SCAN_NEXT
; Unknown command or short wait 0x70-0x7F -> just continue
CP 70H
JR C, SCAN_NEXT
CP 80H
JR NC, SCAN_NEXT
SCAN_NEXT: DEC C
JP NZ, SCAN_LOOP
SCAN_DONE: ; Display chips found
LD B, 0 ; Chip counter
LD A, (CHIP_FLAGS)
LD C, A ; Save flags
; SN76489
AND 03H ; bits 0-1
JP Z, NO_SN
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD A, C
AND 03H
CP 03H ; Both chips?
JR Z, SN_DUAL
LD DE, MSG_SN76489
CALL PRTSTR
JR SN_DONE
SN_DUAL: LD DE, MSG_SN76489X2
CALL PRTSTR
SN_DONE: INC B
NO_SN:
; YM2612
LD A, C
AND 0CH ; bits 2-3
JR Z, NO_YM2612
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD A, C
AND 0CH
CP 0CH ; Both chips?
JR Z, YM2612_DUAL
LD DE, MSG_YM2612
CALL PRTSTR
JR YM2612_DONE
YM2612_DUAL: LD DE, MSG_YM2612X2
CALL PRTSTR
YM2612_DONE: INC B
NO_YM2612:
; YM2151
LD A, C
AND 30H ; bits 4-5
JR Z, NO_YM2151
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD A, C
AND 30H
CP 30H ; Both chips?
JR Z, YM2151_DUAL
LD DE, MSG_YM2151
CALL PRTSTR
JR YM2151_DONE
YM2151_DUAL: LD DE, MSG_YM2151X2
CALL PRTSTR
YM2151_DONE: INC B
NO_YM2151:
; OPL2 (YM3812)
LD A, (CHIP_TYPES)
BIT 4, A
JR Z, NO_OPL2
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD DE, MSG_OPL2
CALL PRTSTR
INC B
NO_OPL2:
; OPL3 (YMF262)
LD A, (CHIP_TYPES)
BIT 5, A
JR Z, NO_OPL3
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD DE, MSG_OPL3
CALL PRTSTR
INC B
NO_OPL3:
; AY-3-8910
LD A, C
AND 0C0H ; bits 6-7
JR Z, NO_AY
LD A, B
OR A
CALL NZ, PRINT_COMMA
LD A, C
AND 0C0H
CP 0C0H ; Both chips?
JR Z, AY_DUAL
LD DE, MSG_AY8910
CALL PRTSTR
JR AY_DONE
AY_DUAL: LD DE, MSG_AY8910X2
CALL PRTSTR
AY_DONE: INC B
NO_AY:
; None
LD A, B
OR A
RET NZ
LD DE, MSG_UNKNOWN
CALL PRTSTR
RET
PRINT_COMMA: LD A, ','
CALL PRTCHR
LD A, ' '
CALL PRTCHR
RET
;------------------------------------------------------------------------------
; Parse CP/M command tail for debug flag (D or /D) -> sets DBG_SUM
;------------------------------------------------------------------------------
PARSE_DEBUG: LD HL, BUFF ; CP/M command tail buffer
LD A, (HL) ; length byte
OR A
RET Z ; empty tail, no flags
LD B, A ; B = remaining chars
INC HL ; HL -> first character
PD_LOOP: LD A, (HL)
CP ' ' ; skip spaces
JR Z, PD_NEXT
CP '/'
JR Z, PD_SLASH
CP 'D'
JR Z, PD_SET
CP 'd'
JR Z, PD_SET
JR PD_NEXT
PD_SLASH: ; look at next char for D/d
INC HL
DJNZ PD_CHECK2
RET
PD_CHECK2: LD A, (HL)
CP 'D'
JR Z, PD_SET
CP 'd'
JR Z, PD_SET
JR PD_NEXT_CONT
PD_NEXT: INC HL
PD_NEXT_CONT: DJNZ PD_LOOP
RET
PD_SET: LD A, 1
LD (DBG_SUM), A
RET
;------------------------------------------------------------------------------
; 512-byte checksum over VGMBUF (simple 16-bit sum)
;------------------------------------------------------------------------------
CALC_SUM512: PUSH AF
PUSH BC
PUSH DE
PUSH HL
LD HL, VGMBUF
LD DE, 0200H ; 512 bytes
XOR A
LD (SUM_LO), A
LD (SUM_HI), A
SUM_LOOP: LD A, (HL)
INC HL
LD B, A
LD A, (SUM_LO)
ADD A, B
LD (SUM_LO), A
LD A, (SUM_HI)
ADC A, 0
LD (SUM_HI), A
DEC DE
LD A, D
OR E
JR NZ, SUM_LOOP
POP HL
POP DE
POP BC
POP AF
RET
;------------------------------------------------------------------------------
; Print A as two hex digits
;------------------------------------------------------------------------------
PRTHEX8: PUSH AF
PUSH BC
LD B, A ; Save original byte in B
SRL A
SRL A
SRL A
SRL A ; High nibble
CALL PRTHEX_NIB
LD A, B
AND 0FH ; Low nibble
CALL PRTHEX_NIB
POP BC
POP AF
RET
PRTHEX_NIB: CP 0AH
JR C, HEX_DIGIT
ADD A, 'A' - 10
JR PRTHEX_OUT
HEX_DIGIT: ADD A, '0'
PRTHEX_OUT: CALL PRTCHR
RET
;------------------------------------------------------------------------------
; Print string pointed to by DE (terminated by 0)
;------------------------------------------------------------------------------
PRTSTR: LD A, (DE)
OR A
RET Z
CALL PRTCHR
INC DE
JR PRTSTR
;------------------------------------------------------------------------------
; Print character in A
;------------------------------------------------------------------------------
PRTCHR: PUSH BC
PUSH DE
PUSH HL
LD E, A
LD C, 2
CALL BDOS
POP HL
POP DE
POP BC
RET
;------------------------------------------------------------------------------
; Print CR/LF
;------------------------------------------------------------------------------
CRLF: LD A, CR
CALL PRTCHR
LD A, LF
CALL PRTCHR
RET
;------------------------------------------------------------------------------
; Messages
;------------------------------------------------------------------------------
MSG_HEADER: .DB CR, LF
.DB "VGM Music Chip Scanner v1.1 - 06-Dec-2025", CR, LF
.DB "(c)2025 Joao Miguel Duraes - MIT License", CR, LF
.DB CR, LF
.DB "Filename Chips Used", CR, LF
.DB 0
MSG_DIVIDER: .DB "======== =====================", CR, LF
.DB 0
MSG_NOFILES: .DB "No .VGM files found in current directory", CR, LF
.DB 0
MSG_SN76489: .DB "SN76489", 0
MSG_SN76489X2: .DB "2xSN76489", 0
MSG_YM2612: .DB "YM2612", 0
MSG_YM2612X2: .DB "2xYM2612", 0
MSG_YM2151: .DB "YM2151", 0
MSG_YM2151X2: .DB "2xYM2151", 0
MSG_OPL2: .DB "YM3812", 0
MSG_OPL3: .DB "YMF262", 0
MSG_AY8910: .DB "AY-3-8910", 0
MSG_AY8910X2: .DB "2xAY-3-8910", 0
MSG_UNKNOWN: .DB "Unknown/None", 0
;------------------------------------------------------------------------------
; Data area
;------------------------------------------------------------------------------
; Search FCB for *.VGM
SEARCH_FCB: .DB 0 ; Default drive
.DB '?','?','?','?','?','?','?','?' ; Filename (wildcard)
.DB 'V','G','M' ; Extension
.FILL 24, 0 ; Rest of FCB
; FCB for opening files
FILE_FCB: .DB 0 ; Default drive
.FILL 35, 0 ; Rest of FCB
DIR_CODE: .DB 0 ; Directory code from search
CHIP_FLAGS: .DB 0 ; Detected chip flags
; bit0 SN76489 #1, bit1 SN76489 #2
; bit2 YM2612 #1, bit3 YM2612 #2
; bit4 YM2151 #1, bit5 YM2151 #2
; bit6 AY #1, bit7 AY #2
CHIP_TYPES: .DB 0 ; Chip types present from header
; bit0 SN76489, bit1 YM2612
; bit2 YM2151, bit3 AY-3-8910
; bit4 OPL2 (YM3812), bit5 OPL3 (YMF262)
SUM_LO: .DB 0 ; Low byte of 16-bit checksum
SUM_HI: .DB 0 ; High byte of 16-bit checksum
DBG_SUM: .DB 0 ; 0=disable checksum print, non-zero=enable
; Buffer for VGM header + first data sector (256 bytes)
VGMBUF: .FILL 512, 0
; Stack space
.FILL 64, 0
STACK: .DW 0
.END

View File

@@ -0,0 +1,88 @@
VGM File Info Scanner for CP/M
===============================
A utility that scans all .VGM files in the current directory and
displays a table showing which audio chips each file uses.
Version 1.1 uses a hybrid detection approach:
- Checks VGM header clock values to detect chip types
- Scans VGM command stream to detect multiple instances of same chip type
Usage:
------
Simply run the program from a directory containing VGM files:
VGMINFO
No command line arguments are needed. The program will automatically scan
all .VGM files in the current directory.
Output:
-------
The program displays a formatted table with two columns:
- Filename: The name of the VGM file
- Chips Used: A comma-separated list of audio chips used in that file
Supported Chips:
----------------
The program can detect the following audio chips:
- SN76489 (PSG - Programmable Sound Generator)
- YM2612 (FM Synthesis chip used in Sega Genesis/Mega Drive)
- YM2151 (OPM - FM Operator Type-M)
- YM3812 (OPL2 - FM synthesis chip)
- YMF262 (OPL3 - Enhanced FM synthesis chip)
- AY-3-8910 (PSG used in many arcade and home computers)
Example Output:
---------------
VGM Music Chip Scanner v1.1
Filename Chips Used
======== =====================
BGM 2xAY-3-8910
ENDING AY-3-8910
INCHINA YM2612
SHIRAKAW SN76489, YM2612
STARTDEM 2xSN76489, AY-3-8910
WONDER01 2xSN76489
======== =====================
Notes:
------
- The program reads the VGM file headers and scans up to 255 commands from
the VGM data stream for accurate chip detection.
- Files that don't have a valid VGM header are silently skipped.
- Chip detection uses a hybrid approach:
* VGM header clock values (offsets 0x0C, 0x2C, 0x30, 0x74) determine
which chip types are present
* Command stream scanning detects multiple instances (e.g., "2xSN76489")
- AY-3-8910 clock detection respects VGM version - only checked for v1.51+
to avoid false positives from invalid header data in older VGM versions.
Building:
---------
To rebuild from source:
build_vgminfo.cmd
Or manually with TASM:
tasm -t80 -b -g3 -fFF vgminfo.asm vgminfo.com
Author:
-------
Created for RomWBW/CP/M systems
Based on VGM format specification from vgmrips.net
An AI LLM was utilized in the creation of this
application.

View File

@@ -239,7 +239,7 @@ IDBIO:
;
IDBIO1:
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD HL,(0FFFCH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,IDBIO2 ; Not HBIOS

View File

@@ -180,7 +180,7 @@ IDBIO:
;
IDBIO1:
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD HL,(0FFFCH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,IDBIO2 ; Not HBIOS

View File

@@ -175,7 +175,7 @@ IDBIO:
;
IDBIO1:
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD HL,(0FFFCH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,IDBIO2 ; Not HBIOS

View File

@@ -273,7 +273,7 @@ IDBIO:
;
IDBIO1:
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD HL,(0FFFCH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,IDBIO2 ; Not HBIOS

View File

@@ -38,6 +38,9 @@
; 2024-12-17 [MAP] Added new /B=opt feaure to assign drives
; 2024-12-21 [MAP] Added CBIOS heap estimation to /B to prevent
; overflow when the drives are finally added
; 2025-07-19 [D?N] Support for native USB drivers
; 2025-08-09 [WBW] Support for ESPSD driver
; 2025-11-10 [WBW] Support for SCSI driver
;_______________________________________________________________________________
;
; ToDo:
@@ -188,7 +191,7 @@ init:
ldir ; do the copy
;
; determine end of CBIOS (assume HBIOS for now)
ld hl,($FFFE) ; get proxy start address
ld hl,($FFFC) ; get proxy start address
ld (bioend),hl ; save as CBIOS end address
;
; check for UNA (UBIOS)
@@ -1179,8 +1182,9 @@ makdphwbw: ; determine appropriate dpb (WBW mode, unit number in A)
jr makdph0 ; jump ahead
makdph00:
ld e,MID_FD144 ; assume floppy
cp DIODEV_FD ; floppy?
jr z,makdph0 ; yes, jump ahead
;cp DIODEV_FD ; floppy?
bit 7,c ; floppy?
jr nz,makdph0 ; yes, jump ahead
ld e,MID_RF ; assume ram floppy
cp DIODEV_RF ; ram floppy?
jr z,makdph0 ; yes, jump ahead
@@ -1560,7 +1564,7 @@ drvmap:
jr nz,drvmapu ; do UNA mode drvmap
;
; determine device code by scanning for string
ld b,16 ; device table always has 16 entries
ld b,devcnt ; number of entries in devtbl
ld c,0 ; c is used to track table entry num
ld de,tmpstr ; de points to specified device name
ld hl,devtbl ; hl points to first entry of devtbl
@@ -1826,7 +1830,7 @@ prtdev:
rst 08 ; call hbios, D := device, E := unit
push de ; save results
ld a,d ; device to A
and $0F ; mask out undesired bits
and $1F ; mask out undesired bits
push hl ; save HL
add a,a ; multiple A by two for word table
ld hl,devtbl ; point to start of device name table
@@ -2427,6 +2431,7 @@ devtbl: ; device table
.dw dev04, dev05, dev06, dev07
.dw dev08, dev09, dev10, dev11
.dw dev12, dev13, dev14, dev15
.dw dev16, dev17, dev18
;
devunk .db "?",0
dev00 .db "MD",0
@@ -2444,9 +2449,12 @@ dev11 .db "IMM",0
dev12 .db "SYQ",0
dev13 .db "CHUSB",0
dev14 .db "CHSD",0
dev15 .equ devunk
dev15 .db "USB",0
dev16 .db "ESPSD",0
dev17 .db "SCSI",0
dev18 .equ devunk
;
devcnt .equ 10 ; 10 devices defined
devcnt .equ 19 ; 19 device types defined
;
udevram .db "RAM",0
udevrom .db "ROM",0
@@ -2464,13 +2472,13 @@ stack .equ $ ; stack top
; Messages
;
indent .db " ",0
msgban1 .db "ASSIGN v2.0 for RomWBW CP/M ",0
msgban1 .db "ASSIGN v2.3 for RomWBW CP/M ",0
msg22 .db "2.2",0
msg3 .db "3",0
msbban2 .db ", 21-Dec-2024",0
msbban2 .db ",10-Dec-2025",0
msghb .db " (HBIOS Mode)",0
msgub .db " (UBIOS Mode)",0
msgban3 .db "Copyright 2024, Wayne Warthen, GNU GPL v3",0
msgban3 .db "Copyright 2025, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: ASSIGN D:[=[{D:|<device>[<unitnum>]:[<slicenum>]}]][,...]",13,10
.db " ex. ASSIGN (display all active assignments)",13,10
.db " ASSIGN /? (display version and usage)",13,10

View File

@@ -11,7 +11,8 @@
; ----------------
; 0.1 - Initial Version written by Mark Pruden
; 0.2 - Added support for /v (verify) option.
; 0.3 - refresh CP/M disk buffers after completion
; 0.3 - Refresh CP/M disk buffers after completion
; 0.4 - Correct slice fit within partition calculation
; ----------------
;
.ORG 100H
@@ -273,7 +274,7 @@ exit:
; =========================================
;
msg_welcome:
.DB "CopySlice v0.3 (RomWBW) March 2025 - M.Pruden", 13, 10, 0
.DB "CopySlice v0.4 (RomWBW) December 2025 - M.Pruden", 13, 10, 0
msg_overite_partition:
.DB 13,10
.DB "Warning: Copying to Slice 0 of hd512 media, "
@@ -951,36 +952,36 @@ slicecalc3:
; add sps once again, to get Required (upper sector) needed
add hl, bc
JR NC, slicecalc4
jr nc, slicecalc4
inc de
slicecalc4:
; DE : HL has the total Sector requirement
; subtract the total Media / Partition Sixe from the Capcity
; we are not interested in the result, just the C Flag
;
or a ; clear cary flag
;
ld c, (ix + off_lbasize +0) ; capacity LSW
ld b, (ix + off_lbasize +1) ; capacity LSW
sbc hl, bc ; Requirement - Capacity LSW
;
ex de, hl ; Requirement MSW
ld c, (ix + off_lbasize +2) ; capacity MSW
ld b, (ix + off_lbasize +3) ; capacity MSW
sbc hl, bc ; Requirement - Capacity MSW
; pop Sector Offset
; de:hl has the required number of sectors (on media) for the slice
push de ; save dsk_req (msw)
push hl ; save dsk_req (lsw)
;
; check dsk_capacity >= cap_required, CF set on overflow
; no need to save actual result
or a ; clear carry for sbc
ld l, (ix + off_lbasize + 0) ; capacity LSW
ld h, (ix + off_lbasize + 1) ; capacity LSW
pop bc ; required lsw
sbc hl, bc ; capacity - required (lsw)
ld l, (ix + off_lbasize + 2) ; capacity MSW
ld h, (ix + off_lbasize + 3) ; capacity MSW
pop bc ; required msw
sbc hl, bc ; capacity - required (msw)
;
; restore starting offset sector
pop de
pop hl
; Require - Capacity - generates Cary if Capity > Require
JR C, slicecalc5 ; C -> Require - Capacity : Require <= Capacity
;
; capacity - required -> generates no carry if capacity >= requirement
jr nc, slicecalc5 ; if we have enough capacity
or 0FFh ; otherwise signal not enough capacity
RET
ret
slicecalc5:
; add lba offset to DEHL to get slice offset, commented code above
ld c, (ix + off_lbaoffset+0)
ld b, (ix + off_lbaoffset+1)

View File

@@ -88,6 +88,7 @@ History
* v 0.1 Initial Release
* v 0.2 Added the /v command option to read and verify after write
* v 0.3 Refresh CP/M disk buffers after completion
* v 0.4 Correct slice fit within partition calculation
Future
------

View File

@@ -29,7 +29,7 @@ bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
bf_sysres_cold .equ $02 ; cold start
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
ident .equ $FFFC ; loc of RomWBW HBIOS ident ptr
;
;=======================================================================
;

File diff suppressed because it is too large Load Diff

View File

@@ -1,299 +1,299 @@
;==============================================================================
; REBOOT - Allows the user to Cold or Warm Boot the RomWBW System
; Version 1.0 12-October-2024
;==============================================================================
;
; Author: MartinR (October 2024)
; Based **very heavily** on code by Wayne Warthen (wwarthen@gmail.com)
;______________________________________________________________________________
;
; Usage:
; REBOOT [/C] [/W] [/?]
; ex: REBOOT Display version and usage
; REBOOT /? Display version and usage
; REBOOT /C Cold boot RomWBW system
; REBOOT /W Warm boot RomWBW system
;
; Operation:
; Cold or warm boots a RomWBW system depending on the user option selected.
;
; This code will only execute on a Z80 CPU (or derivitive)
;
; This source code assembles with TASM V3.2 under Windows-11 using the
; following command line:
; tasm -80 -g3 -l REBOOT.ASM REBOOT.COM
; ie: Z80 CPU; output format 'binary' named .COM (rather than .OBJ)
; and includes a symbol table as part of the listing file.
;______________________________________________________________________________
;
; Change Log:
; 2024-09-11 [WBW] Release of RomWBW CPU Speed Selector v1.0 used as the basis
; 2024-10-12 [MR ] Initial release of version 1.0
;______________________________________________________________________________
;
; Include Files
;
#include "../../ver.inc" ; Used for building RomWBW
#include "../../HBIOS/hbios.inc"
;#include "ver.inc" ; Used for testing purposes....
;#include "hbios.inc" ; ....during code development
;
;===============================================================================
;
; General operational equates (should not requre adjustment)
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
bf_sysreset .equ $F0 ; restart system
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
bf_sysres_cold .equ $02 ; cold start
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
;
;===============================================================================
;
.org $0100 ; standard CP/M TPA executable
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
call crlf
ld de,str_banner ; banner
call prtstr
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
call main ; do the real work
;
exit:
; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
jp restart ; return to CP/M via restart
;
;
;===============================================================================
; Main Program
;===============================================================================
;
; Initialization
;
init:
; check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,initwbw ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
jp err_una ; UNA not supported
;
initwbw:
; get location of config data and verify integrity
ld hl,(ident) ; HL := adr or RomWBW HBIOS ident
ld a,(hl) ; get first byte of RomWBW marker
cp 'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (marker byte 2)
ld a,(hl) ; load it
cp ~'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (major/minor version)
ld a,(hl) ; load it
cp rmj << 4 | rmn ; match?
jp nz,err_ver ; abort with invalid os version
;
initz:
; initialization complete
xor a ; signal success
ret ; return
;
;
;
main:
; skip to start of first command line parameter
ld ix,$0081 ; point to start of parm area (past length byte)
call nonblank ; skip to next non-blank char
cp '/' ; option prefix?
jr nz,usage ; display help info & exit if nothing to do
;
; process any options
inc ix ; fetch next character and process
ld a,(ix)
call upcase ; ensure it's an upper case character
cp 'C' ; if it's a 'C' then
jr z,cboot ; do a cold boot.
cp 'W' ; if it's a 'W' then
jr z,wboot ; do a warm boot.
cp '?' ; if it's a '?' then
jr z,usage ; display usage info and exit.
jr err_parm ; or not a recognised option, so report and exit.
;
; Handle Usage Information
;
usage:
call crlf2 ; display the options for this utility
ld de,str_usage
call prtstr
or $FF
ret ; exit back out to CP/M CCP
;
; Handle Warm Boot
;
wboot:
ld de,str_warmboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_warm ; warm start
call $fff0 ; call hbios
;
; Handle Cold Boot
;
cboot:
ld de,str_coldboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_cold ; cold start
call $fff0 ; call hbios
;
;===============================================================================
; Error Handlers
;===============================================================================
;
err_una:
ld de,str_err_una
jr err_ret
err_inv:
ld de,str_err_inv
jr err_ret
err_ver:
ld de,str_err_ver
jr err_ret
err_parm:
ld de,str_err_parm
jr err_ret
;
err_ret:
call crlf2
call prtstr
or $FF ; signal error
ret
;
;===============================================================================
; Utility Routines
;===============================================================================
;
; Print character in A without destroying any registers
;
prtchr:
push af
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
pop af
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Print a zero terminated string at (de) without destroying any registers
;
prtstr:
push af
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
pop af
ret
;
; Get the next non-blank character from (ix)
;
nonblank:
ld a,(ix) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc ix ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
upcase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
;===============================================================================
; Constants
;===============================================================================
;
str_banner .db "RomWBW Reboot Utility, Version 1.0, 12-Oct-2024\r\n"
.db " Wayne Warthen (wwarthen@gmail.com) & MartinR",0
;
str_warmboot .db "\r\n\r\nWarm booting...\r\n",0
str_coldboot .db "\r\n\r\nCold booting...\r\n",0
;
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
str_err_parm .db " ERROR: Parameter error (REBOOT /? for usage)",0
;
str_usage .db " Usage: REBOOT /? - Display this help info.\r\n"
.db " REBOOT /W - Warm boot system\r\n"
.db " REBOOT /C - Cold boot system\r\n"
.db " Options are case insensitive.\r\n",0
;
;===============================================================================
; Working data
;===============================================================================
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
;===============================================================================
;
;==============================================================================
; REBOOT - Allows the user to Cold or Warm Boot the RomWBW System
; Version 1.0 12-October-2024
;==============================================================================
;
; Author: MartinR (October 2024)
; Based **very heavily** on code by Wayne Warthen (wwarthen@gmail.com)
;______________________________________________________________________________
;
; Usage:
; REBOOT [/C] [/W] [/?]
; ex: REBOOT Display version and usage
; REBOOT /? Display version and usage
; REBOOT /C Cold boot RomWBW system
; REBOOT /W Warm boot RomWBW system
;
; Operation:
; Cold or warm boots a RomWBW system depending on the user option selected.
;
; This code will only execute on a Z80 CPU (or derivitive)
;
; This source code assembles with TASM V3.2 under Windows-11 using the
; following command line:
; tasm -80 -g3 -l REBOOT.ASM REBOOT.COM
; ie: Z80 CPU; output format 'binary' named .COM (rather than .OBJ)
; and includes a symbol table as part of the listing file.
;______________________________________________________________________________
;
; Change Log:
; 2024-09-11 [WBW] Release of RomWBW CPU Speed Selector v1.0 used as the basis
; 2024-10-12 [MR ] Initial release of version 1.0
;______________________________________________________________________________
;
; Include Files
;
#include "../../ver.inc" ; Used for building RomWBW
#include "../../HBIOS/hbios.inc"
;#include "ver.inc" ; Used for testing purposes....
;#include "hbios.inc" ; ....during code development
;
;===============================================================================
;
; General operational equates (should not requre adjustment)
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
bf_sysreset .equ $F0 ; restart system
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
bf_sysres_cold .equ $02 ; cold start
;
ident .equ $FFFC ; loc of RomWBW HBIOS ident ptr
;
;===============================================================================
;
.org $0100 ; standard CP/M TPA executable
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
call crlf
ld de,str_banner ; banner
call prtstr
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
call main ; do the real work
;
exit:
; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
jp restart ; return to CP/M via restart
;
;
;===============================================================================
; Main Program
;===============================================================================
;
; Initialization
;
init:
; check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,initwbw ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,initwbw ; if not, not UNA
jp err_una ; UNA not supported
;
initwbw:
; get location of config data and verify integrity
ld hl,(ident) ; HL := adr or RomWBW HBIOS ident
ld a,(hl) ; get first byte of RomWBW marker
cp 'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (marker byte 2)
ld a,(hl) ; load it
cp ~'W' ; match?
jp nz,err_inv ; abort with invalid config block
inc hl ; next byte (major/minor version)
ld a,(hl) ; load it
cp rmj << 4 | rmn ; match?
jp nz,err_ver ; abort with invalid os version
;
initz:
; initialization complete
xor a ; signal success
ret ; return
;
;
;
main:
; skip to start of first command line parameter
ld ix,$0081 ; point to start of parm area (past length byte)
call nonblank ; skip to next non-blank char
cp '/' ; option prefix?
jr nz,usage ; display help info & exit if nothing to do
;
; process any options
inc ix ; fetch next character and process
ld a,(ix)
call upcase ; ensure it's an upper case character
cp 'C' ; if it's a 'C' then
jr z,cboot ; do a cold boot.
cp 'W' ; if it's a 'W' then
jr z,wboot ; do a warm boot.
cp '?' ; if it's a '?' then
jr z,usage ; display usage info and exit.
jr err_parm ; or not a recognised option, so report and exit.
;
; Handle Usage Information
;
usage:
call crlf2 ; display the options for this utility
ld de,str_usage
call prtstr
or $FF
ret ; exit back out to CP/M CCP
;
; Handle Warm Boot
;
wboot:
ld de,str_warmboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_warm ; warm start
call $fff0 ; call hbios
;
; Handle Cold Boot
;
cboot:
ld de,str_coldboot ; message
call prtstr ; display it
ld b,bf_sysreset ; system restart
ld c,bf_sysres_cold ; cold start
call $fff0 ; call hbios
;
;===============================================================================
; Error Handlers
;===============================================================================
;
err_una:
ld de,str_err_una
jr err_ret
err_inv:
ld de,str_err_inv
jr err_ret
err_ver:
ld de,str_err_ver
jr err_ret
err_parm:
ld de,str_err_parm
jr err_ret
;
err_ret:
call crlf2
call prtstr
or $FF ; signal error
ret
;
;===============================================================================
; Utility Routines
;===============================================================================
;
; Print character in A without destroying any registers
;
prtchr:
push af
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
pop af
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Print a zero terminated string at (de) without destroying any registers
;
prtstr:
push af
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
pop af
ret
;
; Get the next non-blank character from (ix)
;
nonblank:
ld a,(ix) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc ix ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
upcase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
;===============================================================================
; Constants
;===============================================================================
;
str_banner .db "RomWBW Reboot Utility, Version 1.0, 12-Oct-2024\r\n"
.db " Wayne Warthen (wwarthen@gmail.com) & MartinR",0
;
str_warmboot .db "\r\n\r\nWarm booting...\r\n",0
str_coldboot .db "\r\n\r\nCold booting...\r\n",0
;
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
str_err_ver .db " ERROR: Unexpected HBIOS version",0
str_err_parm .db " ERROR: Parameter error (REBOOT /? for usage)",0
;
str_usage .db " Usage: REBOOT /? - Display this help info.\r\n"
.db " REBOOT /W - Warm boot system\r\n"
.db " REBOOT /C - Cold boot system\r\n"
.db " Options are case insensitive.\r\n",0
;
;===============================================================================
; Working data
;===============================================================================
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
;===============================================================================
;
.end

File diff suppressed because it is too large Load Diff

View File

@@ -35,6 +35,7 @@
; table once (per device), and work out all the LBA's from this single read.
; Note this doesnt omit the fact that the 3 rd sector of each slice wold need to be read regarless.
; To slightly reduce some IO only slices < 64 are considered.
; - Output formatting misaligned with storage units enumerated as greater than 9 (ie 2 digits)
;
; This code will only execute on a Z80 CPU (or derivitive)
; This code requirs the use of HBIOS
@@ -45,6 +46,7 @@
; 2024-12-11 [MAP] Started - Reboot v1.0 used as the basis for this code
; 2024-12-14 [MAP] Initial 0.9 alpha with basic working functionality
; 2025-04-21 [MAP] Initial v1.0 release for distribution, fixing all issues
; 2025-07-12 [MR] Minor tweak to partially tidy up output formatting
;______________________________________________________________________________
;
; Include Files
@@ -66,7 +68,7 @@ bf_sysreset .equ $F0 ; restart system
bf_sysres_int .equ $00 ; reset hbios internal
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
ident .equ $FFFC ; loc of RomWBW HBIOS ident ptr
;
sigbyte1 .equ $A5 ; 1st sig byte boot info sector (bb_sig)
sigbyte2 .equ $5A ; 2nd sig byte boot info sector (bb_sig)
@@ -94,7 +96,7 @@ exit:
jp restart ; return to CP/M via restart
;
;===============================================================================
; Initialization
; Initialisation
;
init:
; check for UNA (UBIOS)
@@ -211,10 +213,10 @@ prtslc2a:
ld a,c ; slice number
ld (currslice),a ; save slice number
;
push bc ; save loop
push bc ; save loop counter
call prtslc3 ; print detals of the slice
pop bc ; restore loop
ret nz ; if error dont continie
pop bc ; restore loop counter
ret nz ; if error don't continue
;
inc c ; next slice number
djnz prtslc2a ; loop if more slices
@@ -248,15 +250,25 @@ prtslc3:
cp c ; compare
jr nz,prtslc5 ; ignore missing signature and loop
;
; Print volume label string at HL, '$' terminated, 16 chars max
; Print slice label string at HL, '$' terminated, 16 chars max
ld a,(currunit)
call prtdecb ; print unit number as decimal
call pdot ; print a DOT
ld a,(currslice)
ld a, (currslice) ; fetch the current slice numeric
call prtdecb
;
;-------------------------------------------------------------------------------
; Added by MartinR, July 2025, to help neaten the output formatting.
; Note - this is not a complete fix and will still result in misaligned output
; where the unit number exceeds 9 (ie - uses 2 digits).
cp 10 ; is it less than 10?
ld a,' '
jr nc,jr01 ; If not, then we don't need an extra space printed
call cout ; print the extra space necessary
jr01: call cout ; print a space
call cout ; print a space
call cout ; print a space
;-------------------------------------------------------------------------------
;
ld hl,bb_label ; point to label
call pvol ; print it
call crlf
@@ -438,6 +450,7 @@ pdot:
;
;-------------------------------------------------------------------------------
; Print character in A without destroying any registers
; Use CP/M BDOS function $02 - Console Output
;
prtchr:
cout:
@@ -687,7 +700,7 @@ diskwrite:
;===============================================================================
;
str_banner .db "\r\n"
.db "Slice Label, v1.0, April 2025 - M.Pruden",0
.db "Slice Label, v1.1, July 2025 - M.Pruden",0
;
str_err_una .db " ERROR: UNA not supported by application",0
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
@@ -706,7 +719,7 @@ str_usage .db "\r\n\r\n"
.db " Options are case insensitive.\r\n",0
;
PRTSLC_HDR .TEXT "\r\n\r\n"
.TEXT "Un.Sl Drive \r\n"
.TEXT "Un.Sl Label \r\n"
.TEXT "----- ----------------\r\n"
.DB 0
;

View File

@@ -1,399 +1,399 @@
;===============================================================================
; STARTUP - Application run automatically at OS startup
;
;===============================================================================
;
; Author: Wayne Warthen (wwarthen@gmail.com)
;_______________________________________________________________________________
;
; Usage:
; MODE [/?]
;
; Operation:
; Determines if STARTUP.CMD exists on startup drive, user 0. If it is
; found, it is run via SUBMIT.
;_______________________________________________________________________________
;
; Change Log:
; 2017-12-01 [WBW] Initial release
;_______________________________________________________________________________
;
; ToDo:
; 1) Detect OS type (CP/M or ZSYS) and run different batch files as a result.
;_______________________________________________________________________________
;
;===============================================================================
; Definitions
;===============================================================================
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
;
rmj .equ 2 ; intended CBIOS version - major
rmn .equ 9 ; intended CBIOS version - minor
;
bf_cioinit .equ $04 ; HBIOS: CIOINIT function
bf_cioquery .equ $05 ; HBIOS: CIOQUERY function
bf_ciodevice .equ $06 ; HBIOS: CIODEVICE function
bf_sysget .equ $F8 ; HBIOS: SYSGET function
;
;===============================================================================
; Code Section
;===============================================================================
;
.org $100
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
; process
call process ; do main processing
jr nz,exit ; abort on error
;
exit: ; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
;jp restart ; return to CP/M via restart
ret ; return to CP/M w/o restart
;
; Initialization
;
init:
;
initx
; initialization complete
xor a ; signal success
ret ; return
;
; Process
;
process:
; skip to start of first parm
ld ix,$81 ; point to start of parm area (past len byte)
call nonblank ; skip to next non-blank char
jp z,runcmd ; no parms, do command processing
;
process1:
; process options (if any)
cp '/' ; option prefix?
jp nz,erruse ; invalid option introducer
call option ; process option
ret nz ; some options mean we are done (e.g., "/?")
inc ix ; skip option character
call nonblank ; skip whitespace
jr nz,process1 ; continue option checking
jp runcmd ; end of parms, do cmd processing
;
;
;
runcmd:
call ldfil ; load executable
ret nz ; abort on error
;
xor a
ret
;
; Load file for execution
;
ldfil:
ld c,15 ; BDOS function: Open File
ld de,fcb ; pointer to FCB
call bdos ; do it
inc a ; check for err, 0xFF --> 0x00
jp z,errfil ; handle file not found err
;
ld c,16 ; BDOS function: Close File
ld de,fcb ; pointer to FCB
call bdos ; do it
inc a ; check for err, 0xFF --> 0x00
jp z,errfil ; handle file close err
;
xor a ; signal success
ret ; done
;
; Handle options
;
option:
;
inc ix ; next char
ld a,(ix) ; get it
cp '?' ; is it a '?' as expected?
jp z,usage ; yes, display usage
jp errprm ; anything else is an error
;
; Display usage
;
usage:
;
call crlf ; formatting
ld de,msgban ; point to version message part 1
call prtstr ; print it
call crlf2 ; blank line
ld de,msguse ; point to usage message
call prtstr ; print it
or $FF ; signal no action performed
ret ; and return
;
; Print character in A without destroying any registers
;
prtchr:
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
ret
;
prtdot:
;
; shortcut to print a dot preserving all regs
push af ; save af
ld a,'.' ; load dot char
call prtchr ; print it
pop af ; restore af
ret ; done
;
; Print a zero terminated string at (DE) without destroying any registers
;
prtstr:
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
ret
;
; Print the value in A in hex without destroying any registers
;
prthex:
push af ; save AF
push de ; save DE
call hexascii ; convert value in A to hex chars in DE
ld a,d ; get the high order hex char
call prtchr ; print it
ld a,e ; get the low order hex char
call prtchr ; print it
pop de ; restore DE
pop af ; restore AF
ret ; done
;
; print the hex word value in bc
;
prthexword:
push af
ld a,b
call prthex
ld a,c
call prthex
pop af
ret
;
; print the hex dword value in de:hl
;
prthex32:
push bc
push de
pop bc
call prthexword
push hl
pop bc
call prthexword
pop bc
ret
;
; Convert binary value in A to ascii hex characters in DE
;
hexascii:
ld d,a ; save A in D
call hexconv ; convert low nibble of A to hex
ld e,a ; save it in E
ld a,d ; get original value back
rlca ; rotate high order nibble to low bits
rlca
rlca
rlca
call hexconv ; convert nibble
ld d,a ; save it in D
ret ; done
;
; Convert low nibble of A to ascii hex
;
hexconv:
and $0F ; low nibble only
add a,$90
daa
adc a,$40
daa
ret
;
; Print value of A or HL in decimal with leading zero suppression
; Use prtdecb for A or prtdecw for HL
;
prtdecb:
push hl
ld h,0
ld l,a
call prtdecw ; print it
pop hl
ret
;
prtdecw:
push af
push bc
push de
push hl
call prtdec0
pop hl
pop de
pop bc
pop af
ret
;
prtdec0:
ld e,'0'
ld bc,-10000
call prtdec1
ld bc,-1000
call prtdec1
ld bc,-100
call prtdec1
ld c,-10
call prtdec1
ld e,0
ld c,-1
prtdec1:
ld a,'0' - 1
prtdec2:
inc a
add hl,bc
jr c,prtdec2
sbc hl,bc
cp e
ret z
ld e,0
call prtchr
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Get the next non-blank character from (HL).
;
nonblank:
ld a,(ix) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc ix ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
ucase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
; Add the value in A to HL (HL := HL + A)
;
addhl:
add a,l ; A := A + L
ld l,a ; Put result back in L
ret nc ; if no carry, we are done
inc h ; if carry, increment H
ret ; and return
;
; Jump indirect to address in HL
;
jphl:
jp (hl)
;
; Errors
;
erruse: ; command usage error (syntax)
ld de,msguse
jr err
;
errprm: ; command parameter error (syntax)
ld de,msgprm
jr err
;
errfil: ; STARTUP.CMD file not present
ld de,msgfil
jr err
;
err: ; print error string and return error signal
call crlf ; print newline
;
err1: ; without the leading crlf
call prtstr ; print error string
;
err2: ; without the string
; call crlf ; print newline
or $FF ; signal error
ret ; done
;
;===============================================================================
; Storage Section
;===============================================================================
;
fcb .db 0 ; Drive code, 0 = current drive
.db "START " ; File name, 8 chars
.db "COM" ; File type, 3 chars
.fill 36-($-fcb),0 ; zero fill remainder of fcb
;
cmdblk .db cmdlen ; length
cmdtxt .db " B:SUBMIT START"
.db 0 ; null terminator
cmdlen .equ $ - cmdtxt
cmdend .equ $
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
; Messages
;
msgban .db "STARTUP v1.0, 01-Dec-2017",13,10
.db "Copyright (C) 2017, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: STARTUP [/?]",0
msgprm .db "Parameter error (STARTUP /? for usage)",0
msgfil .db "STARTUP.CMD file missing",0
;
.end
;===============================================================================
; STARTUP - Application run automatically at OS startup
;
;===============================================================================
;
; Author: Wayne Warthen (wwarthen@gmail.com)
;_______________________________________________________________________________
;
; Usage:
; MODE [/?]
;
; Operation:
; Determines if STARTUP.CMD exists on startup drive, user 0. If it is
; found, it is run via SUBMIT.
;_______________________________________________________________________________
;
; Change Log:
; 2017-12-01 [WBW] Initial release
;_______________________________________________________________________________
;
; ToDo:
; 1) Detect OS type (CP/M or ZSYS) and run different batch files as a result.
;_______________________________________________________________________________
;
;===============================================================================
; Definitions
;===============================================================================
;
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
bdos .equ $0005 ; BDOS invocation vector
;
ident .equ $FFFC ; loc of RomWBW HBIOS ident ptr
;
rmj .equ 2 ; intended CBIOS version - major
rmn .equ 9 ; intended CBIOS version - minor
;
bf_cioinit .equ $04 ; HBIOS: CIOINIT function
bf_cioquery .equ $05 ; HBIOS: CIOQUERY function
bf_ciodevice .equ $06 ; HBIOS: CIODEVICE function
bf_sysget .equ $F8 ; HBIOS: SYSGET function
;
;===============================================================================
; Code Section
;===============================================================================
;
.org $100
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
; process
call process ; do main processing
jr nz,exit ; abort on error
;
exit: ; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
;jp restart ; return to CP/M via restart
ret ; return to CP/M w/o restart
;
; Initialization
;
init:
;
initx
; initialization complete
xor a ; signal success
ret ; return
;
; Process
;
process:
; skip to start of first parm
ld ix,$81 ; point to start of parm area (past len byte)
call nonblank ; skip to next non-blank char
jp z,runcmd ; no parms, do command processing
;
process1:
; process options (if any)
cp '/' ; option prefix?
jp nz,erruse ; invalid option introducer
call option ; process option
ret nz ; some options mean we are done (e.g., "/?")
inc ix ; skip option character
call nonblank ; skip whitespace
jr nz,process1 ; continue option checking
jp runcmd ; end of parms, do cmd processing
;
;
;
runcmd:
call ldfil ; load executable
ret nz ; abort on error
;
xor a
ret
;
; Load file for execution
;
ldfil:
ld c,15 ; BDOS function: Open File
ld de,fcb ; pointer to FCB
call bdos ; do it
inc a ; check for err, 0xFF --> 0x00
jp z,errfil ; handle file not found err
;
ld c,16 ; BDOS function: Close File
ld de,fcb ; pointer to FCB
call bdos ; do it
inc a ; check for err, 0xFF --> 0x00
jp z,errfil ; handle file close err
;
xor a ; signal success
ret ; done
;
; Handle options
;
option:
;
inc ix ; next char
ld a,(ix) ; get it
cp '?' ; is it a '?' as expected?
jp z,usage ; yes, display usage
jp errprm ; anything else is an error
;
; Display usage
;
usage:
;
call crlf ; formatting
ld de,msgban ; point to version message part 1
call prtstr ; print it
call crlf2 ; blank line
ld de,msguse ; point to usage message
call prtstr ; print it
or $FF ; signal no action performed
ret ; and return
;
; Print character in A without destroying any registers
;
prtchr:
push bc ; save registers
push de
push hl
ld e,a ; character to print in E
ld c,$02 ; BDOS function to output a character
call bdos ; do it
pop hl ; restore registers
pop de
pop bc
ret
;
prtdot:
;
; shortcut to print a dot preserving all regs
push af ; save af
ld a,'.' ; load dot char
call prtchr ; print it
pop af ; restore af
ret ; done
;
; Print a zero terminated string at (DE) without destroying any registers
;
prtstr:
push de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
ret
;
; Print the value in A in hex without destroying any registers
;
prthex:
push af ; save AF
push de ; save DE
call hexascii ; convert value in A to hex chars in DE
ld a,d ; get the high order hex char
call prtchr ; print it
ld a,e ; get the low order hex char
call prtchr ; print it
pop de ; restore DE
pop af ; restore AF
ret ; done
;
; print the hex word value in bc
;
prthexword:
push af
ld a,b
call prthex
ld a,c
call prthex
pop af
ret
;
; print the hex dword value in de:hl
;
prthex32:
push bc
push de
pop bc
call prthexword
push hl
pop bc
call prthexword
pop bc
ret
;
; Convert binary value in A to ascii hex characters in DE
;
hexascii:
ld d,a ; save A in D
call hexconv ; convert low nibble of A to hex
ld e,a ; save it in E
ld a,d ; get original value back
rlca ; rotate high order nibble to low bits
rlca
rlca
rlca
call hexconv ; convert nibble
ld d,a ; save it in D
ret ; done
;
; Convert low nibble of A to ascii hex
;
hexconv:
and $0F ; low nibble only
add a,$90
daa
adc a,$40
daa
ret
;
; Print value of A or HL in decimal with leading zero suppression
; Use prtdecb for A or prtdecw for HL
;
prtdecb:
push hl
ld h,0
ld l,a
call prtdecw ; print it
pop hl
ret
;
prtdecw:
push af
push bc
push de
push hl
call prtdec0
pop hl
pop de
pop bc
pop af
ret
;
prtdec0:
ld e,'0'
ld bc,-10000
call prtdec1
ld bc,-1000
call prtdec1
ld bc,-100
call prtdec1
ld c,-10
call prtdec1
ld e,0
ld c,-1
prtdec1:
ld a,'0' - 1
prtdec2:
inc a
add hl,bc
jr c,prtdec2
sbc hl,bc
cp e
ret z
ld e,0
call prtchr
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Get the next non-blank character from (HL).
;
nonblank:
ld a,(ix) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc ix ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
ucase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
; Add the value in A to HL (HL := HL + A)
;
addhl:
add a,l ; A := A + L
ld l,a ; Put result back in L
ret nc ; if no carry, we are done
inc h ; if carry, increment H
ret ; and return
;
; Jump indirect to address in HL
;
jphl:
jp (hl)
;
; Errors
;
erruse: ; command usage error (syntax)
ld de,msguse
jr err
;
errprm: ; command parameter error (syntax)
ld de,msgprm
jr err
;
errfil: ; STARTUP.CMD file not present
ld de,msgfil
jr err
;
err: ; print error string and return error signal
call crlf ; print newline
;
err1: ; without the leading crlf
call prtstr ; print error string
;
err2: ; without the string
; call crlf ; print newline
or $FF ; signal error
ret ; done
;
;===============================================================================
; Storage Section
;===============================================================================
;
fcb .db 0 ; Drive code, 0 = current drive
.db "START " ; File name, 8 chars
.db "COM" ; File type, 3 chars
.fill 36-($-fcb),0 ; zero fill remainder of fcb
;
cmdblk .db cmdlen ; length
cmdtxt .db " B:SUBMIT START"
.db 0 ; null terminator
cmdlen .equ $ - cmdtxt
cmdend .equ $
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
; Messages
;
msgban .db "STARTUP v1.0, 01-Dec-2017",13,10
.db "Copyright (C) 2017, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: STARTUP [/?]",0
msgprm .db "Parameter error (STARTUP /? for usage)",0
msgfil .db "STARTUP.CMD file missing",0
;
.end

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

4
Source/BuildMSX.cmd Normal file
View File

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

4
Source/BuildSZ80.cmd Normal file
View File

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

View File

@@ -11,6 +11,7 @@ pushd ZSDOS && call Build || exit /b & popd
pushd ZSDOS2 && call Build || exit /b & popd
pushd CPM3 && call Build || exit /b & popd
pushd ZPM3 && call Build || exit /b & popd
pushd BPBIOS && call Build || exit /b & popd
pushd CPNET && call Build || exit /b & popd
pushd pSys && call Build || exit /b & popd
pushd Apps && call Build || exit /b & popd

View File

@@ -3201,8 +3201,9 @@ MAKDPH0: ; HANDLE RAM/ROM
CP DIODEV_MD ; RAM/ROM DISK?
JR Z,MAKDPH0 ; HANDLE SPECIAL
LD DE,DPB_FD144 ; PRELOAD FLOPPY DPB
CP DIODEV_FD ; FLOPPY?
JR Z,MAKDPH1 ; IF SO, PROCEED TO DPH CREATION
;CP DIODEV_FD ; FLOPPY?
BIT 7,C ; FLOPPY?
JR NZ,MAKDPH1 ; IF SO, PROCEED TO DPH CREATION
LD DE,DPB_RF ; PRELOAD RAM FLOPPY DPB
CP DIODEV_RF ; RAM FLOPPY?
JR Z,MAKDPH1 ; IF SO, PROCEED TO DPH CREATION
@@ -3381,7 +3382,7 @@ DEVUNK .DB "UNK$"
RST 08 ; CALL HBIOS
LD A,D ; RESULTANT DEVICE TYPE
PUSH DE ; NEED TO SAVE UNIT NUMBER (IN E)
AND $0F ; ISOLATE DEVICE BITS
AND $1F ; ISOLATE DEVICE BITS
ADD A,A ; MULTIPLY BY TWO FOR WORD TABLE
LD HL,DEVTBL ; POINT TO START OF DEVICE NAME TABLE
CALL ADDHLA ; ADD A TO HL TO POINT TO TABLE ENTRY
@@ -3407,6 +3408,7 @@ DEVTBL: ; DEVICE TABLE
.DW DEV04, DEV05, DEV06, DEV07
.DW DEV08, DEV09, DEV10, DEV11
.DW DEV12, DEV13, DEV14, DEV15
.DW DEV16, DEV17, DEV18
;
DEVUNK .DB "???$"
DEV00 .DB "MD$"
@@ -3424,7 +3426,10 @@ DEV11 .DB "IMM$"
DEV12 .DB "SYQ$"
DEV13 .DB "CHUSB$"
DEV14 .DB "CHSD$"
DEV15 .EQU DEVUNK
DEV15 .DB "USB$"
DEV16 .DB "ESPSD$"
DEV17 .DB "SCSI$"
DEV18 .EQU DEVUNK
;
#ENDIF
;

View File

@@ -26,3 +26,5 @@ pushd Doc && call Clean & popd
pushd ZRC && call Clean & popd
pushd Z1RCC && call Clean & popd
pushd ZZRCC && call Clean & popd
pushd MSX && call Clean & popd
pushd EZ512 && call Clean & popd

View File

@@ -330,8 +330,8 @@ and display the contents in hexadecimal.
**`K`** - Echo any key-presses from the terminal. Press 'ESC' key
to quit. This facility provides that any key stroke sent to
the computer will be echoed back to the terminal. File down
loads will be echoed as well while this facility is on.
the computer will be echoed back to the terminal. File downloads
will be echoed as well while this facility is on.
#### Load Hex
@@ -364,7 +364,7 @@ Use clip leaded LEDs to confirm the data written.
#### Program Memory
**`P xxxx`** - Program memory location xxxx. This routine will
allow you to program a hexadecimal value 'into memory starting
allow you to program a hexadecimal value into memory starting
at location xxxx. Press 'Enter' on a blank line to
return to the Monitor prompt.
@@ -496,14 +496,14 @@ A comprehensive instruction manual is available in the Doc/Contrib directory.
TastyBASIC offers a minimal implementation of BASIC that is only 2304
bytes in size. It originates from Li-Chen Wang's Palo Alto Tiny BASIC
from around 1976. It's small size is suited the tiny memory capacities of
from around 1976. It's small size suited the tiny memory capacities of
the time. This implementation is by Dimitri Theulings and his original
source can be found at <https://github.com/dimitrit/tastybasic>.
### Features / Limitations
- Integer arithmetic, numbers -32767 to 32767
- Singles letter variables A-Z
- Single letter variables A-Z
- 1-dimensional array support
- Strings are not supported
@@ -587,12 +587,12 @@ Extensions and changes to this implementation compared to the original distribut
| Word | Syntax | Description |
|------|----------------------------|-------------------------------|
| D+ | d1 d2 -- d1+d2 | Add double numbers |
| 2>R | d -- | 2 to R |
| 2R> | d -- | fetch 2 from R |
| M*/ | d1 n2 u3 -- d=(d1*n2)/u3 | double precision mult. div |
| SVC | hl de bc n -- hl de bc af | Execute a RomWBW function |
| P! | n p -- | Write a byte to a I/O port |
| D+ | d1 d2 -- d1+d2 | Add double numbers |
| 2>R | d -- | 2 to R |
| 2R> | d -- | fetch 2 from R |
| M\*/ | d1 n2 u3 -- d=(d1\*n2)/u3 | double precision mult. div |
| SVC | hl de bc n -- hl de bc af | Execute a RomWBW function |
| P! | n p -- | Write a byte to a I/O port |
| P@ | p -- n | Read a byte from and I/O port |
## Play a Game (2048)
@@ -721,10 +721,10 @@ character-input/output device is to be used as the serial device for transfer.
When your console is the serial device used for the transfer, no progress
information is displayed as this would disrupt the x-modem file transfer.
If you use an alternate character-input/output devices as the serial device
If you use an alternate character-input/output device as the serial device
for the transfer then progress information will be displayed on the console device.
Due to different platform processor speeds, serials speeds and flow
Due to different platform processor speeds, serial speeds and flow
control capabilities the default console or serial device speed may
need to be reduced for a successful transfer and flash to occur.
The **Set Console Interface/Baud code** option at the Boot Loader can
@@ -758,14 +758,14 @@ Option ( < ) - Revert to Original Baud Rate
Option ( U ) - Begin Update
The will begin the update process. The updater will expect to start receiving
This will begin the update process. The updater will expect to start receiving
an x-modem file on the serial device unit.
X-modem sends the file in packets of 128 bytes. The updater will cache 32
packets which is 1 flash sector and then write that sector to the
flash device.
If using separate console, bank and sector progress information will shown
If using separate console, bank and sector progress information will be shown
```
BANK 00 s00 s01 s02 s03 s04 s05 s06 s06 s07
@@ -819,7 +819,7 @@ Option ( 3 ) - Calculate and display CRC32 of a 1024k (2x512Kb) ROM.
Can be used to verify if a ROM image has been transferred and flashed
correctly. Refer to the Tera Term section below for details on
configuring the automatic display of a files CRC after it has been
configuring the automatic display of a file's CRC after it has been
transferred.
In Windows, right clicking on a file should also give you a context
@@ -837,7 +837,7 @@ process could be worthwhile if you are:
* Doing development on RomWBW drivers
Macros can be used to automate sending ROM updates or images and
for my own purposed I have set up a separate macro for transferring
for my own purpose I have set up a separate macro for transferring
each of the standard build ROM, my own custom configuration ROM
and update ROM.
@@ -883,7 +883,6 @@ Feedback to the RomWBW developers on these guidelines would be appreciated.
### Notes
Notes
* All testing was done with Tera Term x-modem, Forcing checksum mode
using macros was found to give the most reliable transfer.
* Partial writes can be completed with 39SF040 chips. Other chips
@@ -925,7 +924,7 @@ Users should not remove this check from the templated code.
If required, the user application may make use of the Z80 interrupt system
but if the user application wishes to rely on HBIOS functionality then it
must adhere to the HBIOS framework for managing interupts. Alternatively,
if the user appliction has no need for the HBIOS then it may use its own
if the user application has no need for the HBIOS then it may use its own
custom code for handling interrupts. In that case, a hard reset, rather
than an HBIOS warm start, would be necessary to return control to RomWBW.
@@ -989,6 +988,7 @@ included within RomWBW may be found within the Binary/Apps directory.
| TIMER | Yes | Yes |
| TUNE | No | Yes |
| VGMPLAY | No | Yes |
| VGMINFO | No | Yes |
| WDATE | No | Yes |
| XM | Yes | Yes |
| ZMD | No | Yes |
@@ -1020,9 +1020,9 @@ Disk-based CP/M:
For systems starting CP/M from a disk created from an image file, there are a small number
of additional applications stored in the ```USER 2``` area of the disk. These applications
do not form part of CP/M, but rather are small utilities used for test purposes during develpment work.
They may, or may not, fuction correctly with any given hardware or software configuration.
Documentation for these untilities is very limited, though the source files maybe found
do not form part of CP/M, but rather are small utilities used for test purposes during development work.
They may, or may not, function correctly with any given hardware or software configuration.
Documentation for these utilities is very limited, though the source files may be found
in the /Source folder. Note that these utiltites are not available when starting CP/M
from the ROM image or from a floppy disk.
@@ -1332,6 +1332,11 @@ Use `CLRDIR` with caution as changes made to disks by `CLRDIR` cannot be undone.
If `CLRDIR` is used on disk containing data then the directory area will be
reinitialised and the data previously stored will be lost.
**WARNING**: Earlier versions of the `CLRDIR` application do not
appear to check for disk errors when it runs. If you attempt to run
`CLRDIR` on a drive that is mapped to a slice that does not actually fit
on the physical disk, it may behave erratically.
`\clearpage`{=latex}
## CPUSPD (CPU Speed)
@@ -1349,13 +1354,15 @@ The functionality is highly dependent on the capabilities of your system.
#### Syntax
| `CPUSPD [`*`<speed>`*`[,[`*`<memws>`*`][,[`*`<iows>`*`]]]`
| `CPUSPD [`*\<speed\>*`[,[`*\<memws\>*`][,[`*\<iows\>*`]]]`
| `CPUSPD (W)armBoot`
| `CPUSPD (C)oldBoot`
*`<speed>`* is one of (H)alf, (F)ull, (D)ouble, or (Q)uad.
*`<memws>`* is a number specifying the desired memory wait states.
*`<iows>`* is a number specifying the desired I/O wait states.
*\<speed\>* is one of (H)alf, (F)ull, (D)ouble, or (Q)uad.
*\<memws\>* is a number specifying the desired memory wait states.
*\<iows\>* is a number specifying the desired I/O wait states.
#### Usage
@@ -1364,7 +1371,7 @@ and wait state information of the running system. Wait state
information is not available for all systems.
To modify the running speed of a system, you can specify the
`*`<speed>`*` parameter. To modify either or both of the wait
*\<speed\>* parameter. To modify either or both of the wait
states, you can enter the desired number. Either or both of the wait
state parameters may be omitted and the current wait state settings
will remain in effect.
@@ -1431,20 +1438,20 @@ The source code is provided in the RomWBW distribution.
The purpose of this utility is to allow the copying of whole disk slices
from one disk slice to another slice
This tool is only supported by RomWBW HBIOS, it uses HDIOS for all its
This tool is only supported by RomWBW HBIOS; it uses HBIOS for all its
disk IO. UNA UBIOS is not supported by this tool.
This tool is running on CP/M 2.2 or 3.0 and has access to full 64kb of
RAM, with a minimum of 48kb TPA
This tool only works with hard disk devices, other media types like
This tool only works with hard disk devices; other media types like
floppy, are not supported at this time. This tool works across different
hard disk device types, even of different physical type
Both hd1k and hd512 are fully supported, however copying from one layout
type to the other is not supported.
During operation data is copied in a single read/write pass, data is not
During operation, data is copied in a single read/write pass; data is not
verified by default. If there is a write error, it will be reported, and
operation will stop.
@@ -1472,7 +1479,7 @@ V - Verify. Does an additional read and verify after write.
#### Usage
When run COPYSL will perform command line argument validation and display
When run, COPYSL will perform command line argument validation and display
an error if they are illegal. Also any disk IO errors will cause COPYSL
to exit.
@@ -1724,7 +1731,7 @@ to format and test floppy disk media.
#### Syntax
`FDU`
| `FDU`
#### Usage
@@ -1761,7 +1768,7 @@ provided in the RomWBW distribution.
| Disk-based |Yes|
Most of the hardware platforms that run RomWBW support the use of
EEPROMs -- Electronically Erasable Programmable ROMs. The `FLASH`
EEPROMs -- Electrically Erasable Programmable ROMs. The `FLASH`
application can be used to reprogram such ROMS in-situ (in-place),
thus making it possible to upgrade ROMs without a programmer or even
removing the ROM from your system.
@@ -1794,7 +1801,7 @@ Options:
#### Usage
To program your EEPROM ROM chip, first transfer the file to your
RomWBW system. Then use the command `FLASH WRITE *`<filename>`*. The
RomWBW system. Then use the command `FLASH WRITE `*\<filename\>*. The
application will auto-detect the type of EEPROM chip you have,
program it, and verify it.
@@ -1845,7 +1852,7 @@ make it simpler to format media including floppy disks.
#### Syntax
`FORMAT`
| `FORMAT`
#### Notes
@@ -1872,16 +1879,16 @@ against HBIOS Character Units.
#### Syntax
`HTALK COMn:`
| `HTALK `*<unit>*
#### Usage
`HTALK` operates at the HBIOS level.
The parameter to `TALK` refers to a HBIOS character unit. Upon
execution all characters typed at the console will be sent to the
device specified and all characters received by the specified device
will be echoed on the console.
The *<unit>* parameter to `TALK` is a single number referring to an HBIOS
character unit. Upon execution all characters typed at the console will
be sent to the device specified and all characters received by the
specified device will be echoed on the console.
Press Control+Z on the console to terminate the application.
@@ -1908,8 +1915,8 @@ ports dynamically.
#### Syntax
`MODE /?`
`MODE COM`*`<n>`*`: [`*`<baud>`*`[,`*`<parity>`*`[,`*`<databits>`*`[,`*`<stopbits>`*`]]]] [/P]`
| `MODE /?`
| `MODE COM`*`<n>`*`: [`*`<baud>`*`[,`*`<parity>`*`[,`*`<databits>`*`[,`*`<stopbits>`*`]]]] [/P]`
`/?` displays command usage and version information
@@ -2024,7 +2031,7 @@ and set the time and registers of the RTC.
#### Syntax
`RTC`
| `RTC`
#### Usage
@@ -2076,14 +2083,14 @@ support most of the hardware variations included with RomWBW.
Display or change the label of a disk slice.
The label applied is only used as informational purposes, displayed by RomWBW
The label applied is only used for informational purposes, displayed by RomWBW
when an OS is booted. It has no correlation with any OS volume label scheme
that may exist. i.e. It does not affect the CP/M 3 disk label as applied by
the `SET` command
#### Syntax
`SLABEL [unit.slice=label] [/?]`
| `SLABEL [unit.slice=label] [/?]`
`unit.slice` the disk unit and slice number to apply the new label to. This
is in the same format as when booting the system to a disk
@@ -2108,7 +2115,7 @@ This will only display labels for the first 64 slices of any device. Slices
higher than this are currently ignored.
Only bootable RomWBW disk images have a label, which is defined by the OS
which is booted. i.e. NZ-COM has a label of "ZSDOS 1.1" since that is the
that is booted. i.e. NZ-COM has a label of "ZSDOS 1.1" since that is the
booted OS. Prior to RomWBW 3.5 all disk images were defined with the label
"Unlabeled".
@@ -2164,7 +2171,7 @@ discover ports that are 'write-only'.
| Disk-based |Yes|
System Configuration (`SYSCONF`) is a utility that allows system configuration to
be set, dynamically and stored in NVRAM provided by an RTC chip.
be set dynamically and stored in NVRAM provided by an RTC chip.
(`SYSCONF`) is both a ROM utility ('W' Menu option), and a CP/M application.
Noting however the CP/M application is not included on an disk image, it is found in
@@ -2200,7 +2207,6 @@ Commands:
(H)elp [{SW}] - This help menu, or help on a switch
e(X)it - Exit Configuration
$
```
When you run (`SYSCONF`) for the first time the NVRAM will be uninitialised, and can
@@ -2220,7 +2226,7 @@ To exit from the application use the (Q)uit command.
#### Commands and Syntax
The following are the accepted commands, unless otherwise specified a "Space"
The following are the accepted commands, unless otherwise specified. A "Space"
character is used to delimit parameters in the command.
| Command | Argument(s) | Description |
@@ -2254,7 +2260,7 @@ Making changes to auto boot has no affect until the next reboot.
| Type | Arguments | Description |
|----------|------------|--------------------------------------------------------|
| Enable | 'E' | Auto Boot. eg. "E,10" will auto boot, after 10 seconds |
| | Timout | Timeout in seconds in the range 0-15, 0 = immediate |
| | Timeout | Timeout in seconds in the range 0-15, 0 = immediate |
| Disabled | 'D' | No Auto Boot. e.g. "D" will disable autoboot |
**Examples**
@@ -2360,7 +2366,7 @@ considered its own operating system. Each slice can be made bootable
with its own system tracks.
`SYSCOPY` uses drive letters to specify where to read/write the system
boot images. However, at startup, the boot loaded will require you to
boot images. However, at startup, the boot(?) loaded will require you to
enter the actual disk device and slice to boot from. So, you need to
be careful to pay attention to the device and slice that is assigned
to a drive letter so you will know what to enter at the boot loader
@@ -2372,10 +2378,10 @@ not currently assigned to a drive letter, you will need to assign a
drive letter first.
Not all disk formats include space for system tracks. Such disk
formats cannot contains a system boot image and, therefore, cannot be
formats cannot contain a system boot image and, therefore, cannot be
made bootable. The best example of such disk formats are the ROM and
RAM disks. To maximize usable file space on these drives, they do not
have system tracks. Obviously, ROM operating system is supported by
have system tracks. Obviously, the ROM operating system is supported by
choosing a ROM operating system at the boot loader prompt. Any attempt
to write a system boot image to disk media with no system tracks will
cause SYSCOPY to fail with an error message.
@@ -2411,7 +2417,7 @@ shown on your console. The `TALK` application does this.
#### Syntax
`TALK [TTY:|CRT:|BAT:UC1:]`
| `TALK [TTY:|CRT:|BAT:|UC1:]`
#### Usage
@@ -2448,7 +2454,7 @@ Z80 port of Palo Alto Tiny Basic.
#### Syntax
`TBASIC` [*\<filename\>*]
| `TBASIC` [*\<filename\>*]
#### Usage
@@ -2479,19 +2485,22 @@ displays the value of the counter.
#### Syntax
`TIMER`
`TIMER /?`
`TIMER /C`
| `TIMER`
| `TIMER /?`
| `TIMER /C`
| `TIMER /Z`
#### Usage
Use `TIMER` to display the current value of the counter.
Use `TIMER /C` to display the value of the counter continuously.
Use `TIMER /C` to display the value of the counter continuously. Press any key to exit.
Use `TIMER /Z` to zero the seconds counter.
The display of the counter will be something like this:
`13426 Ticks 268.52 Seconds`
`2859 Ticks 24.18 Seconds 0:00:24.18 HH:MM:SS`
The first number is the total number of ticks since system startup, where
there are 50 ticks per second. The second number is the total number of
@@ -2499,15 +2508,18 @@ seconds since system startup. Numbers are displayed in decimal format.
#### Notes
The seconds value is displayed with a fractional value which is not a
an actual fraction, but rather the number of ticks past the seconds
rollover. All values are in hex.
Not all systems will have a system timer. In this case, the
`TIMER` command will output 0 for both ticks and seconds and never
increment.
The resolution of the timer is determined by the system timer
frequency which is typically 50Hz. This means that the seconds
fraction will increment 0.02 seconds with each timer tick.
The primary use of the `TIMER` application is to test the system
timer functionality of your system.
In theory, you could capture the value before and after some process
you want to time.
timer functionality of your system. However, it can be used to
capture the value before and after some process you want to measure
the elapsed runtime of.
#### Etymology
@@ -2527,12 +2539,12 @@ If your RomWBW system has a sound card based on either an AY-3-8190 or
YM2149F sound chip, you can use the `TUNE` application to play PT or
MYM sound files.
Note: TUNE will detect an AY-3-8910/YM2149 Sound Module re-gardless of
Note: TUNE will detect an AY-3-8910/YM2149 Sound Module regardless of
whether support for it is included in the RomWBW HBIOS configuration
#### Syntax
`TUNE `*`<filename>`* `*`<options>`*`
| `TUNE `*`<filename>`* `*`<options>`*`
*`<filename>`* is the name of a sound file ending in .PT2, .PT3, or
.MYM
@@ -2629,6 +2641,67 @@ The source code is provided in the RomWBW distribution.
`\clearpage`{=latex}
## VGMINFO (Video Game Music File Information)
| VGMPLAY | |
| --------------------|---|
| ROM-based |No |
| Disk-based |Yes|
A utility that scans all .VGM files in the current directory and
displays a table showing which audio chips each file uses.
Version 1.1 uses a hybrid detection approach:
- Checks VGM header clock values to detect chip types
- Scans VGM command stream to detect multiple instances of same chip type
#### Syntax
| `VGMINFO`
#### Usage
No command line arguments are needed. The program will automatically scan
all .VGM files in the current directory.
The program displays a formatted table with two columns:
- Filename: The name of the VGM file
- Chips Used: A comma-separated list of audio chips used in that file
The program can detect the following audio chips:
- SN76489 (PSG - Programmable Sound Generator)
- YM2612 (FM Synthesis chip used in Sega Genesis/Mega Drive)
- YM2151 (OPM - FM Operator Type-M)
- YM3812 (OPL2 - FM synthesis chip)
- YMF262 (OPL3 - Enhanced FM synthesis chip)
- AY-3-8910 (PSG used in many arcade and home computers)
#### Notes
- The program reads the VGM file headers and scans up to 255 commands from
the VGM data stream for accurate chip detection.
- Files that don't have a valid VGM header are silently skipped.
- Chip detection uses a hybrid approach:
* VGM header clock values (offsets 0x0C, 0x2C, 0x30, 0x74) determine
which chip types are present
* Command stream scanning detects multiple instances (e.g., "2xSN76489")
- AY-3-8910 clock detection respects VGM version - only checked for v1.51+
to avoid false positives from invalid header data in older VGM versions.
#### Etymology
The `VGMINFO` application was written and contributed to RomWBW by
Joao Miguel Duraes. An AI LLM was utilized in the creation of this
application.
`\clearpage`{=latex}
## VGMPLAY (Video Game Music Play)
| VGMPLAY | |
@@ -2667,7 +2740,7 @@ chips.
#### Syntax
`VGMPLAY `*`<filename>`*
| `VGMPLAY `*`<filename>`*
*`<filename>`* is the name of a sound file ending in .VGM
@@ -2818,6 +2891,7 @@ files between systems using a serial port.
| `XM R `*`<filename>`*
The following may be added to the action codes:
| `S`: Send a file
| `L`: Send a file from a library
| `R`: Receive a file
@@ -2854,7 +2928,7 @@ the following:
to be sent.
2. On your host computer, specify the name to assign to the received
file and initiate and XModem receive operation.
file and initiate an XModem receive operation.
Please refer to the documentation of your host computer's terminal
emulation software for specific instructions on how to use XModem.
@@ -2910,7 +2984,7 @@ to Z-System compatibility.
#### Syntax
`ZMD` *\<mode\>\<protocol\>\<unit\>* [*\<filename\>*]
| `ZMD` *\<mode\>\<protocol\>\<unit\>* [*\<filename\>*]
where *\<mode\>* can be:\
**` S -`** Send file from BBS \
@@ -2935,7 +3009,7 @@ To transfer a file from your host computer to your RomWBW computer, do
the following:
1. Enter one of the `ZMD` receive commands specifying the name you want
to give to the received file (no filename required for ZModem transfers).
to give to the received file (no filename required for ZModem transfers).["ZMD does not do ZModem transfers"]
2. On your host computer select a file to send and initiate an XModem or
YModem send operation.
@@ -2954,17 +3028,17 @@ emulation software for specific instructions on how to use XModem.
#### Notes
The ZMP adaptation that comes with RomWBW will default to using
The ZMD adaptation that comes with RomWBW will default to using
the current HBIOS console port for transfers. Note that if you
change your console port at the OS level (e.g., STAT CON:=UC1:),
this does not change the HBIOS console.
`ZMP` attempts to determine the best way to drive the serial port based
`ZMD` attempts to determine the best way to drive the serial port based
on your hardware configuration. When possible, it will bypass the
HBIOS for faster operation. However, in many cases, it will use HBIOS
so that flow control can be used.
`ZMP` is dependent on a reliable communications channel. You must
`ZMD` is dependent on a reliable communications channel. You must
ensure that the serial port can be serviced fast enough by either
using a baud rate that is low enough or ensuring that hardware flow
control is fully functional (end to end).
@@ -2990,7 +3064,7 @@ that is independent of the console running `ZMP`.
#### Syntax
`ZMD` *[\<unit\>]*
| `ZMD` *[\<unit\>]*
*\<unit\>* can specify a single digit (0-9) indicating
the RomWBW Character Unit to use for the modem port.

View File

@@ -729,6 +729,7 @@ distribution. Some provide command line help themselves. Some are fairly obvio
| `CRUNCH28.CFG` | | ZCNFG configuration file for CRUNCH & UNCR |
| `DDTZ.COM` | | Z80 debug tool (modified to use RST 6) |
| `DDTZ.DOC` | | Documentation for DDTZ |
| `DOWNLOAD.COM` | Grant Searle | Grant Searle's DOWNLOAD, used by File Packager |
| `EX.COM` | | Batch file processor (alternative to DRI SUBMIT) |
| `FIND.COM` | Jay Cotton | Search all drives for a file () |
| `GENHEX.COM` | | Generates an Intel Hex file from the input file |
@@ -769,7 +770,7 @@ distribution. Some provide command line help themselves. Some are fairly obvio
## OS General Files
The following files are spcific files share across several OS's.
The following files are specific files shared across several OS's.
In general, there is no documentation for these applications included with
the RomWBW distribution. Some provide command line help themselves.
Some are fairly obvious.
@@ -788,6 +789,7 @@ The following files are found in
| `COPY.COM` | Z | File copier with ZSDOS date stamping awareness |
| `COPY.CFG` | Z | ZCNFG configuration file for COPY application |
| `EDITNDR.COM` | Z3 | Edit named directory register in memory. |
| `HELLO.ASM` | CPM22 | Sample assembly language source file |
| `HP-RPN.HLP` | Z3 | Help File for ZP.COM - HP RPN Calculators |
| `HP-ZP.HLP` | Z3 | Help File for ZP.COM - HP ZP Calculators |
| `KERCPM22.COM` | CPM22 | Kermit communication application |
@@ -976,6 +978,7 @@ The following files are found in
| `TSTDSKNG.COM` | DSKY NEXT GENERATION TEST APPLICATION |
| `VDCONLY.COM` | COLOR VDU TEST |
| `VDCTEST.COM` | COLOR VDU TEST |
| `Z80TYPE.COM` | Z80 Chip Variant Detection |
| `ZEXALL.COM` | Z80 Instruction Set Exerciser |
| `ZEXDOC.COM` | Z80 Instruction Set Exerciser |
@@ -1121,7 +1124,7 @@ The following files are found in
| `TESTAS.SUB` | SUBMIT file to build TESTAS sample program |
| `Z80AS.COM` | Z80 assembler which assembles the output of COWFIX and other Z80 source files (see <https://github.com/Laci1953/Z80AS>) |
## Microsoft Fortran 80 (Fortran)
## Microsoft Fortran 80
| Floppy Disk Image: **fd_fortran.img**
| Hard Disk Image: **hd_fortran.img**
@@ -1237,6 +1240,7 @@ The following files are found in
| `DRTCPM.OBJ` | Startup Object File (???) |
| `EXEC.H` | Language include file (see manual) |
| `FLOAT.H` | Language include file (see manual) |
| `HELLO.C` | Sample C source file |
| `HITECH.H` | Language include file (see manual) |
| `LIBC.LIB` | Standard C Runtime Library |
| `LIBF.LIB` | Floating Point Library |
@@ -1267,6 +1271,107 @@ The following files are found in
| `UNIXIO.H` | Language include file (see manual) |
| `ZAS.COM` | The assembler - in fact a general purpose macro assembler |
## Infocom (Text Adventure Games)
| Hard Disk Image: **hd_infocom.img**
A collection of all Official releases of the interactive fiction games
produced by Infocom in the 1980's
The following files are found in
* /Source/Images/d_infocom
| **File** | **Description** |
|--------------|----------------------------------------------------|
| amfv.z4 | A Mind Forever Voyaging (*) |
| arthur.z6 | Arthur - The Quest for Excalibur (*) |
| ballyhoo.z3 | Ballyhoo |
| beyond.z5 | Beyond Zork (*) |
| border.z5 | Border Zone (*) |
| bureau.z4 | Bureaucracy (*) |
| cutthr.z3 | Cutthroats |
| deadline.z3 | Deadline |
| enchant.z3 | Enchanter |
| h2g2.z3 | The Hitchhiker's Guide to the Galaxy |
| hollyw.z3 | Hollywood Hijinx |
| infidel.z3 | Infidel |
| journey.z6 | Journey (*) |
| leather.z3 | Leather Goddesses of Phobos |
| lurking.z3 | The Lurking Horror |
| moonmist.z3 | Moonmist |
| nordbert.z4 | Nord and Bert Couldn't Make Head or Tail of It (*) |
| planet.z3 | Planetfall |
| plunder.z3 | Plundered Hearts |
| readme.txt | Documentation about the Infocom games |
| seastalk.z3 | Seastalker |
| sherlock.z5 | Sherlock (*) |
| shogun.z6 | Shogun (*) |
| sorcerer.z3 | Sorcerer |
| spellb.z3 | Spellbreaker |
| starcros.z3 | Starcross |
| stationf.z3 | Stationfall |
| suspect.z3 | Suspect |
| suspend.z3 | Suspended |
| trinity.z4 | Trinity (*) |
| wishb.z3 | Wishbringer |
| witness.z3 | Witness |
| zork0.z6 | Zork Zero (*) |
| zork1.z3 | Zork I |
| zork2.z3 | Zork II |
| zork3.z3 | Zork III |
| zorknote.txt | Documentation about terminal config of COM files |
The above games have been curated from here <https://eblong.com/infocom/>.
Full game documentation can be found here <https://infodoc.plover.net/>
The game files are a virtual machine code commonly known as Z-Machine, they
are portable and will run on any machine that has a Z-Machine interpreter.
* All the Z3 games come with the official CP/M interpreter (the `COM` file)
version C last updated by Inforcom on 5th Feb 1985. You can simply run the
game by running it from the `COM` program
* All latter games Z4, Z5,.. and above, (Marked as * in the listing above)
are more sophisticated and require a better interpreter. i.e. VEZZA.
#### VEZZA (User Area 15)
Vezza is a modern Infocom/Inform/Z-machine text adventure interpreter for 8 bit
z80 based computers. What makes it modern is that it is written in hand-crafted
z80 assembler for maximum speed, and can load not only the classics such as
Zork 1,2 and 3 but also the later games.
It can run Z1 up to Z8 inform format interactive fiction game files. To run
a game with Vezza just type Vezza followed by the game you want to run. e.g.
`VEZZA ZORK0.Z6`
**Note:** One of the bigger constraints is available RAM. An OS such as ZPM
since it uses banked RAM does have a good amount of available RAM and was
used to test these games work.
This tool is free but the developer accepts your support by letting
you pay what you think is fair for the tool. If you find this useful
consider donating at:
<https://sijnstra.itch.io/vezza>
You should (test and) choose one that works on you configuration,
and best to copy and rename it as vezza.com
| **File** | **Description** |
|--------------|-------------------------------------------------------------------|
| vezza-B.com | 80x24, VT52 + Banked CP/M 3 |
| vezza-FG.com | 80x25, VT100/ANSI (16 color) + CP/M 3 |
| vezza-C2.com | 80x24, VT100 - CP/M 2.2 large memory, no timed input |
| vezza-CC.com | 80x24, VT100 (256 colour) - CP/M 2.2 large memory, no timed input |
| vezza-AV.com | 80x24, VT100 (16 colour) - CP/M 2.2 high RAM. |
| vezza-AX.com | 80x25, VT100/ANSI (16 colour) - CP/M 2.2 high RAM. |
| vezza-RW.com | 80x24, VT100 - CP/M 2.2 |
The above is a subset of available builds. The full repository including
documentation is available at <https://gitlab.com/sijnstra1/vezza/>
## MSX ROMS
| Hard Disk Image: **hd_msxroms1.img**
@@ -1329,15 +1434,15 @@ The following files are found in
| `TURBO.OVR` | Part of TURBO Pascal |
| `TURBOMSG.OVR` | Part of TURBO Pascal |
## WordStar 4
## Word Processing
| Floppy Disk Image: **fd_ws4.img**
| Hard Disk Image: **hd_ws4.img**
| Floppy Disk Image: **fd_wp.img**
| Hard Disk Image: **hd_wp.img**
| Combo Disk Image: **Slice 5**
The following files are found in
* /Source/Images/d_ws4
* /Source/Images/d_wp
| **File** | **Description** |
|----------------|-----------------|

View File

@@ -28,6 +28,7 @@ including RC26, RC40, RC80, and BP80.
| **Description** | **Bus** | **ROM Image File** | **Baud Rate** |
|-------------------------------------------------------------|---------|------------------------------|--------------:|
| [RC2014 Z80 CPU Module], 512K RAM/ROM | RCBus | RC2014_std.rom | 115200 |
| [RCBus Z80 CPU Module], 512K RAM/ROM | RCBus | RCZ80_std.rom | 115200 |
| [RCBus Z80 CPU Module (KIO)], 512K w/KIO | RCBus | RCZ80_kio_std.rom | 115200 |
| [RCBus Z180 CPU Module (External)] | RCBus | RCZ180_ext_std.rom | 115200 |
@@ -116,9 +117,12 @@ Others
| [eZ80 for RCBus Module]^8^, 512K RAM/ROM | RCBus | RCEZ80_std.rom | 115200 |
| [Genesis Z180 System]^7^ | STD | GMZ180_std.rom | 115200 |
| [Heath H8 Z80 System]^5^ | H8 | HEATH_std.rom | 115200 |
| [MSX]^9^ | MSX | MSX_std.rom | 115200 |
| [N8 PC]^10^ | ISA | N8PC_std.rom | 38400 |
| [NABU w/ RomWBW Option Board]^5^ | NABU | NABU_std.rom | 115200 |
| [S100 Computers Z180 SBC]^4^ | S100 | S100_std.rom | 57600 |
| [S100 Computers FPGA Z80 SBC]^4^ | S100 | FZ80_std.rom | 9600 |
| [S100 Computers Z180 SBC]^4^ | S100 | SZ180_std.rom | 57600 |
| [S100 Computers Z80 CPU]^4^ | S100 | SZ80_std.rom | 19200 |
| [S100 Computers T35 FPGA Z80 SBC]^4^ | S100 | SZ80_t35.rom | 9600 |
| [UNA Hardware BIOS]^1^ | - | UNA_std.rom | - |
| [Z80-Retro SBC]^3^ | - | Z80RETRO_std.rom | 38400 |
| [Z180 Mark IV SBC]^1^ | ECB | MK4_std.rom | 38400 |
@@ -131,6 +135,8 @@ Others
| ^6^Designed by Alan Cox
| ^7^Designed by Doug Jackson
| ^8^Designed by Dean Netherton
| ^9^MSX Port by Henk Berends
| ^10^Designed by Dan Werner
`\clearpage`{=latex}
@@ -414,14 +420,16 @@ of the SIO ports, for ease of use with modern computers.
`\clearpage`{=latex}
## S100 Computers FPGA Z80 SBC
## S100 Computers
An FPGA Z80 based S100 SBC
### S100 Computers Z80 CPU
* Creator: John Monahan |
* Website: [S100 Computers FPGA Z80 SBC](http://www.s100computers.com/My%20System%20Pages/FPGA%20Z80%20SBC/FPGA%20Z80%20SBC.htm)
Z80-based S100 Modular System
#### ROM Image File: FZ80_std.rom
* Creator: John Monahan
* Website: [S100 Computers Z80 CPU](http://www.s100computers.com/My%20System%20Pages/Z80%20Board/Z80%20CPU%20Board.htm)
#### ROM Image File: SZ80_std.rom
| | |
|-------------------|---------------|
@@ -429,7 +437,56 @@ An FPGA Z80 based S100 SBC
| Default CPU Speed | 8.000 MHz |
| Interrupts | None |
| System Timer | None |
| Serial Default | 9600 Baud |
| Serial Default | 19200 Baud |
| Memory Manager | SZ80 |
| ROM Size | 0 KB |
| RAM Size | 1024 KB |
#### Supported Hardware
- FP: LEDIO=5
- DLPSER: IO=172
- SCC MODE=SZ80, IO=160, CHANNEL A
- SCC MODE=SZ80, IO=160, CHANNEL B
- SCON: IO=0
- ESPSD: IO=128, PRIMARY
- ESPSD: IO=128, SECONDARY
- MD: TYPE=RAM
- PPIDE: MODE=S100A, IO=48, MASTER
- PPIDE: MODE=S100A, IO=48, SLAVE
- PPIDE: MODE=S100B, IO=48, MASTER
- PPIDE: MODE=S100B, IO=48, SLAVE
#### Notes:
- Initial console will depend on the IOBYTE dip switch settings.
See website for dip switch settings.
- Version 6.0 or greater of the S100 Z80 Monitor ROM is required to
load and run RomWBW.
- RomWBW is loaded by the S100 monitor from either CF Card or SD Card.
The CF/SD Card should be imaged using SZ80_std_hd1k_combo.img which
includes RomWBW.
`\clearpage`{=latex}
### S100 Computers T35 FPGA Z80 SBC
A T35 FPGA Z80 based S100 SBC
* Creator: John Monahan
* Website: [S100 Computers FPGA Z80 SBC](http://www.s100computers.com/My%20System%20Pages/FPGA%20Z80%20SBC/FPGA%20Z80%20SBC.htm)
#### ROM Image File: SZ80_t35.rom
| | |
|-------------------|---------------|
| Bus | S100 |
| Default CPU Speed | 8.000 MHz |
| Interrupts | None |
| System Timer | None |
| Serial Default | 19200 Baud |
| Memory Manager | Z2 |
| ROM Size | 0 KB |
| RAM Size | 512 KB |
@@ -438,19 +495,41 @@ An FPGA Z80 based S100 SBC
- FP: LEDIO=255
- DS5RTC: RTCIO=104, IO=104
- SSER: IO=52
- LPT: MODE=S100, IO=199
- FV: IO=192, KBD MODE=FV, KBD IO=3
- TSER: IO=53
- DLPSER: IO=172
- SCC MODE=SZ80, IO=160, CHANNEL A
- SCC MODE=SZ80, IO=160, CHANNEL B
- LPT: MODE=T35, IO=199
- TVGA: IO=192, KBD MODE=T35, KBD IO=3
- KBD: ENABLED
- SCON: IO=0
- ESPSD: IO=128, PRIMARY
- ESPSD: IO=128, SECONDARY
- MD: TYPE=RAM
- PPIDE: IO=48, MASTER
- PPIDE: IO=48, SLAVE
- SD: MODE=FZ80, IO=108, UNITS=2
- PPIDE: MODE=STD, IO=48, MASTER
- PPIDE: MODE=STD, IO=48, SLAVE
- PPIDE: MODE=S100A, IO=56, MASTER
- PPIDE: MODE=S100A, IO=56, SLAVE
- PPIDE: MODE=S100B, IO=56, MASTER
- PPIDE: MODE=S100B, IO=56, SLAVE
- SD: MODE=T35, IO=108, UNITS=2
#### Notes:
- Requires matching FPGA code
- This RomWBW build is specifically for the Trion T35 based module on
the S100 Z80 FPGA board. The Waveshare FPGA module is not supported
at this time.
- Requires matching FPGA code, see
[S100 Projects RomWBW T35 Project](https://github.com/s100projects/ROMWBW_T35).
- Initial console will depend on the IOBYTE dip switch settings.
See website for dip switch settings.
- RomWBW is loaded by the S100 monitor from either CF Card or SD Card.
The CF/SD Card should be imaged using SZ80_t35_hd1k_combo.img which
includes RomWBW.
`\clearpage`{=latex}
@@ -577,6 +656,47 @@ It also has an interface to the RetroBrew bus (ECB) for access to additional per
`\clearpage`{=latex}
## MSX
Support for standard MSX hardware by Henk Berends
The default configuration is for a European MSX 2 (PAL) with international keyboard and 512KB RAM Mapper extension.
#### ROM Image File: MSX_std.rom
| | |
|-------------------|---------------|
| Bus | MSX |
| Default CPU Speed | 3.579 MHz |
| Interrupts | Mode 1 |
| System Timer | TMS |
| Serial Default | 115200 Baud |
| Memory Manager | MSX |
| ROM Size | 0 KB |
| RAM Size | 448 KB |
#### Supported Hardware
- RP5C01: IO=180
- UART: IO=128
- UART: IO=136
- TMS: MODE=MSXMKY, IO=152, SCREEN=80X24, KEYBOARD=MKY, INTERRUPTS ENABLED
- MKY: IO=168
- MD: TYPE=RAM
- IDE: MODE=RC, IO=16, MASTER
- IDE: MODE=RC, IO=16, SLAVE
- PPIDE: MODE=MSX_BEER, IO=48, MASTER
- PPIDE: MODE=MSX_BEER, NO SLAVE
- AY38910: MODE=MSX, IO=160, CLOCK=1789772 HZ
#### Notes:
- MSX 1 can be used with the TMS VDP set to 40 columns mode.
- Storage options are the BEER IDE and SODA IDE interfaces.
- Serial option is a 16550 UART interface.
`\clearpage`{=latex}
## NABU w/ RomWBW Option Board
No modifications to the NABU motherboard needed. Leave the standard NABU ROM in its socket
@@ -812,8 +932,101 @@ This configuration is for the N8-2312 and latter (4314) revisions
`\clearpage`{=latex}
## N8 PC
This is a variant of the N8 computer.
* Creator: Dan Werner
* Project GitHub: [N8 PC](https://github.com/danwerner21/N8PC)
#### ROM Image File: N8PC_std.rom
| | |
|-------------------|---------------|
| Bus | ISA |
| Default CPU Speed | 9.216 MHz |
| Interrupts | None |
| System Timer | Z180 |
| Serial Default | 38400 Baud |
| Memory Manager | N8 |
| ROM Size | 512 KB |
| RAM Size | 512 KB |
#### Supported Hardware
- PKD: IO=132, SIZE=8X1
- M6242RTC: IO=160
- ASCI: IO=64
- ASCI: IO=65
- TMS: MODE=N8PC, IO=152, SCREEN=80X24, KEYBOARD=KBD
- KBD: ENABLED
- MD: TYPE=RAM
- MD: TYPE=ROM
- FD: MODE=N8, IO=140, DRIVE 0, TYPE=3.5" HD
- FD: MODE=N8, IO=140, DRIVE 1, TYPE=3.5" HD
- PPIDE: MODE=STD, IO=132, MASTER
- PPIDE: MODE=STD, IO=132, SLAVE
- AY38910: MODE=N8, IO=156, CLOCK=3579545 HZ
#### Notes:
`\clearpage`{=latex}
## RCBus Z80
The RC2014 ROM is for the official RC2014 Kits by Spencer Owen.
* Creator: Spencer Owen
* Google Groups: [RC2014-Z80](https://groups.google.com/g/rc2014-z80)
* Github: [RC2014](https://github.com/RC2014Z80/RC2014)
### RC2014 Z80 CPU Module
Generic Rom Image.
#### ROM Image File: RC2014_std.rom
| | |
|-------------------|---------------|
| Bus | RCBus |
| Default CPU Speed | 7.372 MHz |
| Interrupts | Mode 1 |
| System Timer | None |
| Serial Default | 115200 Baud |
| Memory Manager | Z2 |
| ROM Size | 512 KB |
| RAM Size | 512 KB |
#### Supported Hardware
- FP: LEDIO=0, SWIO=0
- LCD: IO=218, SIZE=20X4
- DSRTC: MODE=STD, IO=192
- UART: IO=128
- UART: IO=136
- UART: IO=160
- UART: IO=168
- SIO MODE=RC, IO=128, CHANNEL A, INTERRUPTS ENABLED
- SIO MODE=RC, IO=128, CHANNEL B, INTERRUPTS ENABLED
- SIO MODE=RC, IO=132, CHANNEL A, INTERRUPTS ENABLED
- SIO MODE=RC, IO=132, CHANNEL B, INTERRUPTS ENABLED
- ACIA: IO=128, INTERRUPTS ENABLED
- CH: IO=62
- CH: IO=60
- CHUSB: IO=62
- CHUSB: IO=60
- MD: TYPE=RAM
- MD: TYPE=ROM
- FD: MODE=RCWDC, IO=80, DRIVE 0, TYPE=3.5" HD
- FD: MODE=RCWDC, IO=80, DRIVE 1, TYPE=3.5" HD
- IDE: MODE=RC, IO=16, MASTER
- IDE: MODE=RC, IO=16, SLAVE
- PPIDE: IO=32, MASTER
- PPIDE: IO=32, SLAVE
- SD: MODE=PIO, IO=105, UNITS=1
`\clearpage`{=latex}
### RCBus Z80 CPU Module
Generic Rom Image.
@@ -1136,7 +1349,8 @@ It is designed specifically for ROM-less RomWBW. HBIOS is loaded from disk at bo
Eazy80-512 is Eazy80 rev2 pc board configured with 512K RAM to run RomWBW.
The design was derived from modifications to Eazy80 Rev1 that supported RomWBW.
HBIOS is loaded from disk at boot by ROM monitor
HBIOS is loaded from disk at boot by ROM monitor or via a a compressed
ROM image.
(Not to be confused with EasyZ80)
@@ -1145,7 +1359,7 @@ HBIOS is loaded from disk at boot by ROM monitor
* Retrobrew Wiki: [Eazy80 Rev2, Glue-less Configuration](https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:eazy80:eazy80rev2:eazy80rev2home)
* Google Groups: [EaZy80, A Simple80 with KIO](https://groups.google.com/g/retro-comp/c/0cUDbZspHyQ)
#### ROM Image File: RCZ80_ez512_std.rom
#### ROM Image File: RCZ80_ez512_std.rom
| | |
|-------------------|---------------|
@@ -1158,6 +1372,41 @@ HBIOS is loaded from disk at boot by ROM monitor
| ROM Size | 0 KB |
| RAM Size | 512 KB |
#### Compressed ROM Image File: RCZ80_ez512_std_64k.rom
The RomWBW utility program 'compress' is designed to squeeze the
compiled RomWBW 128K file 'RCZ80_ez512_std.upd' into a 64K ROM. As there
are many areas in RomWBW with repeating bytes of the same value, it is
possible to compress the 128K file to fit into a 64K ROM.
The compression program looks for two or more consecutive bytes of the
same value (any values of $00 to $FF). If it finds duplicates, it leaves
two of the duplicate bytes followed by a byte count, n-1 (n <= $FF),
where n is the total number of duplicates. If the program succeeds in
compressing the input file to fit into the available space, the file
'RCZ80_ez512_std_64k.rom' is constructed, along with a short Z80
decompression program that will be stored in the last 256 bytes of the
ROM. The constructed 64K file is saved and the unused storage space is
output in bytes. Should compression fail to fit the input file into
available space, only an error message and the overrun in bytes is
output.
The decompression program, located at $FF00, is executed at startup via
the 3-byte jump at location $0000, decompressing the stored code in ROM
into the computer's RAM. When decompression finishes, control is passed
to RAM location $0000, which in turn starts execution of RomWBW.
The 64K ROM Layout:
* The first 3 bytes are always $C3 $00 $FF, a jump to the Z80
decompression code located at $FF00 in the ROM.
* Locations $0003 up to, and including, $FEFF are available to store
the compressed 128K input file.
* Location $FF00 up to, and including, $FFFF, is where the Z80
decompression program is stored.
#### Supported Hardware
- DSRTC: MODE=STD, IO=192
@@ -1744,7 +1993,7 @@ as defined by the IEEE-696 specs.
* Creator: John Monahan |
* Website: [S100 Computers Z180 SBC](http://www.s100computers.com/My%20System%20Pages/Z180%20SBC/Z180%20SBC.htm)
#### ROM Image File: S100_std.rom
#### ROM Image File: SZ180_std.rom
| | |
|-------------------|---------------|
@@ -1760,11 +2009,20 @@ as defined by the IEEE-696 specs.
#### Supported Hardware
- INTRTC: ENABLED
- DLPSER: IO=172
- ASCI: IO=192, INTERRUPTS ENABLED
- ASCI: IO=193, INTERRUPTS ENABLED
- SCC MODE=SZ80, IO=160, CHANNEL A
- SCC MODE=SZ80, IO=160, CHANNEL B
- SCON: IO=0
- ESPSD: IO=128, PRIMARY
- ESPSD: IO=128, SECONDARY
- MD: TYPE=RAM
- MD: TYPE=ROM
- PPIDE: MODE=S100A, IO=48, MASTER
- PPIDE: MODE=S100A, IO=48, SLAVE
- PPIDE: MODE=S100B, IO=48, MASTER
- PPIDE: MODE=S100B, IO=48, SLAVE
- SD: MODE=SC, IO=12, UNITS=1
#### Notes:
@@ -2081,7 +2339,7 @@ Z180 CPU (eg. SC722) with 1MB linear memory (eg. SC721)
- PPIDE: IO=32, SLAVE
- SD: MODE=SC, IO=12, UNITS=1
\clearpage`{=latex}
`\clearpage`{=latex}
## Z80-Retro SBC
@@ -2227,8 +2485,11 @@ may be discovered by RomWBW in your system.
| PPPCON | ParPortProp Serial Console Interface |
| PRPCON | PropIO Serial Console Interface |
| SCON | S100 Console |
| SIO | Zilog Serial Port Interface |
| SIO | Zilog Serial Input/Output Controller (SIO) |
| SCC | Zilog Serial Communications Controller (SCC) |
| SSER | Simple Serial Interface |
| TSER | Trion FPGA Serial Interface |
| DLPSER | DLP USB Serial Interface |
| UART | 16C550 Family Serial Interface |
| USB-FIFO | FT232H-based ECB USB FIFO |
| Z2U | Zilog Z280 CPU Built-in Serial Ports |
@@ -2238,16 +2499,20 @@ discovers for the initial console. The following character devices are
scanned in the order shown. The available character devices depend on
the active platform and configuration.
#. SSER: Simple Serial Interface
#. ASCI: Zilog Z180 CPU Built-in Serial Ports
#. Z2U: Zilog Z280 CPU Built-in Serial Ports
#. UART: 16C550 Family Serial Interface
#. DUART: SCC2681 or compatible Dual UART
#. SIO: Zilog Serial Port Interface
#. SIO: Zilog Serial Port Interface (SIO)
#. SCC: Zilog Serial Port Interface (SCC)
#. EZ80UART: eZ80 Serial Port Interface
#. ACIA: MC68B50 Asynchronous Communications Interface Adapter
#. SSER: Simple Serial Interface
#. TSER: Trion FPGA Serial Interface
#. DLPSER: DLP USB Serial Interface
#. USB-FIFO: FT232H-based ECB USB FIFO
## Disk
| **ID** | **Description** |
@@ -2266,6 +2531,8 @@ the active platform and configuration.
| RF | RAM Floppy Disk Interface |
| SD | SD Card Interface |
| SYQ | Iomega SparQ Drive on PPI |
| ESPSD | S100 ESP32-based SD Card Interface |
| SCSI | 5380 SCSI Interface |
## Video
@@ -2273,10 +2540,10 @@ the active platform and configuration.
|-----------|--------------------------------------------------------|
| CVDU | MC8563-based Video Display Controller |
| EF | EF9345 Video Display Controller |
| FV | S100 FPGA Z80 Onboard VGA/Keyboard |
| TVGA | S100 Trion FPGA Onboard VGA/Keyboard |
| GDC | uPD7220 Video Display Controller |
| TMS | TMS9918/38/58 Video Display Controller |
| VDU | MC6845 Family Video Display Controller (*) |
| VDU | MC6845 Family Video Display Controller (\*) |
| VGA | HD6445CP4-based Video Display Controller |
| VRC | VGARC Video Display Controller |
| XOSERA | XOSERA FPGA-based Video Display Controller |
@@ -2322,6 +2589,9 @@ Note:
| PCF | PCF8584-based I2C Real-Time Clock |
| RP5C01 | Ricoh RPC01A Real-Time Clock w/ NVRAM |
| SIMRTC | SIMH Simulator Real-Time Clock |
| MMRTC | NS MM58167B Real-Time Clock (no NVRAM) |
| DS12RTC | Dallas Semiconductor DS1288x Real-Time Clock w/ NVRAM |
| M6242 | MSM6242 Real-Time Clock (no NVRAM) |
## DsKy (DiSplay KeYpad)
@@ -2405,3 +2675,4 @@ for more information on UNA.
CP/M 3, ZPM3, and p-System.
- Some of the RomWBW-specific applications are not UNA compatible.

View File

@@ -71,7 +71,7 @@ Some of the included software:
* Support for other operating systems, p-System, FreeRTOS, and FUZIX.
* Programming Tools (Z80ASM, Turbo Pascal, Forth, Cowgol)
* C Compiler's including Aztec-C, and HI-TECH C
* Microsoft Basic Compiler, and Microsoft Fortran
* Microsoft Basic Compiler, Microsoft Fortran, and Microsoft COBOL
* Some games such as Colossal Cave, Zork, etc
* Wordstar Word processing software
@@ -273,8 +273,11 @@ please let me know if I missed you!
* Tasty Basic is a product of Dimitri Theulings.
* Dean Netherton contributed eZ80 CPU support, 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.
@@ -290,6 +293,7 @@ please let me know if I missed you!
- significant content in the Disk Catalog and User Guide
- creation of the Introduction and Hardware documents
- Z3PLUS operating system disk image
- 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
@@ -335,6 +339,17 @@ please let me know if I missed you!
* 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 Programmer's 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.
`\clearpage`{=latex}
## Related Projects

View File

@@ -659,8 +659,10 @@ latter version of the SBC.
On systems with RTC devices (that have Non-Volatile RAM), RomWBW supports storing
some limited configuration option options inside this RAM.
Several configuration options are currently supported; these are known as Switches.
The following switch ID's are defined, and described in sections below.
Several configuration options are currently supported; these are
referred to as Switches. In this case the term Switches refers to "soft"
switches stored in NVRAM, not physical panel switches. The following
switch ID's are defined, and described in sections below.
| Switch Number | Name | Description |
|---------------|--------------|-----------------------------------------------|
@@ -683,6 +685,11 @@ the bytes in NVRAM to check for authenticity before using the configuration.
The above data is copied into the HBIOS Configuration Block (HCB) at startup at
the location starting at CB_SWITCHES.
Although the switch data is stored in NVRAM, it is intended that you
use [SYSGET Subfunction 0xC0 -- Get Switches (SWITCH)] or
[SYSSET Subfunction 0xC0 -- Set Switches (SWITCH)] to read or write
the switch values described here.
### Boot Options (NVSW_BOOTOPTS)
16 bit Switch defining the ROM application or Disk device to boot if
@@ -705,13 +712,15 @@ automatic booting is enabled.
### Status Reset (0xFF)
The Status Reset switch is not a general purpose switch, it is a control mechanism
to allow the global status of all switches to be determined. The meaning of the switch
is different for Read (Get Status) and Write (Reset NVRAM)
The Status Reset switch is a virtual switch that does not have a
corresponding stored value. It is a control mechanism to allow the
global status of all switches to be determined. The meaning of the
switch is different for Read (Get Status) and Write (Reset NVRAM)
#### GET (Get Status)
The read Get Status of switches. This returns very specific values from the function call.
When the switch number 0xFF is read (using the Get Switches function),
the status of the NVRAM switches will be returned as follows:
| Status | A Register | Z / NZ Flag |
|----------------------------------------------|------------|--------------|
@@ -721,8 +730,10 @@ The read Get Status of switches. This returns very specific values from the func
#### SET (Reset NVRAM)
Reset NVRAM to default values. This will wipe any existing data and set default
values into NVRAM.
When the switch number 0xFF is written (using the Set Switches
function), the stored values of all switches will be reset to their
default values. This will wipe any existing data and set default values
into NVRAM.
# Driver Model
@@ -1088,6 +1099,9 @@ below enumerates their values.
| DIODEV_SYQ | 0x0C | Syquest Sparq Disk | syq.asm |
| DIODEV_CHUSB | 0x0D | CH375/376 USB Disk | ch.asm |
| DIODEV_CHSD | 0x0E | CH375/376 SD Card | ch.asm |
| DIODEV_USB | 0x0F | CH376 Native USB Device | ch376.asm |
| DIODEV_ESPSD | 0x10 | S100 ESP32 SD Card | espsd.asm |
| DIODEV_SCSI | 0x11 | 5380 SCSI Interface | scsi.asm |
A fixed set of media types are defined. The currently defined media
types identifiers are listed below. Each driver will support one or
@@ -1195,8 +1209,8 @@ point, all disk drivers support both LBA and CHS addressing.
| E: Sector Count | |
| HL: Buffer Address | |
Read Sector Count (E) sectors into the buffer located in Buffer Bank ID (D)
at Buffer Address (HL) starting at the Current Sector. The returned
Read Sector Count (E) sectors into the buffer located in Buffer Bank ID
(D) at Buffer Address (HL) starting at the Current Sector. The returned
Status (A) is a standard HBIOS result code.
The Current Sector is established by a prior DIOSEEK function call;
@@ -1206,18 +1220,21 @@ successfully read. On error, the Current Sector will be the sector where
the error occurred. Sectors Read (E) indicates the number of sectors
successfully read.
A Sector Count of zero will result in no sectors being read and a
status of success. The buffer will not be modified.
For buffers in the bottom 32KB ram, the Bank ID is used to identify the
bank to use for the buffer. If the buffer is located in your current
active bank, you will need to provide the current Bank ID, which can be
obtained using [Function 0xF3 -- System Get Bank (SYSGETBNK)]. For
buffers in the top 32K of memory the Bank ID is not strictly required as
this memory is always mapped to the common bank.
The caller must ensure that the Buffer Address is large enough to
contain all sectors requested. Disk data transfers will be faster if
the buffer resides in the top 32K of memory because it avoids a
double buffer copy.
Also for buffers in the top 32K of memory the Bank ID is not
strictly required as this memory is alway mapped to the common bank.
For buffers in the bottom 32KB ram, the Bank ID is used to identify
the bank to use for the buffer. If you do not wih to use banked memory
you will need to provide the current Bank ID, which can be obtained
using [Function 0xF3 -- System Get Bank (SYSGETBNK)]
### Function 0x14 -- Disk Write (DIOWRITE)
| **Entry Parameters** | **Returned Values** |
@@ -1228,9 +1245,9 @@ using [Function 0xF3 -- System Get Bank (SYSGETBNK)]
| E: Sector Count | |
| HL: Buffer Address | |
Write Sector Count (E) sectors from the buffer located in Buffer Bank ID (D)
at Buffer Address (HL) starting at the Current Sector. The returned
Status (A) is a standard HBIOS result code.
Write Sector Count (E) sectors from the buffer located in Buffer Bank ID
(D) at Buffer Address (HL) starting at the Current Sector. The
returned Status (A) is a standard HBIOS result code.
The Current Sector is established by a prior DIOSEEK function call;
however, multiple read/write/verify function calls can be made after a
@@ -1239,6 +1256,16 @@ successfully written. On error, the Current Sector will be the sector
where the error occurred. Sectors Written (E) indicates the number of
sectors successfully written.
A Sector Count of zero will result in no sectors being written and a
status of success. The buffer will not be modified.
For buffers in the bottom 32KB ram, the Bank ID is used to identify the
bank to use for the buffer. If the buffer is located in your current
active bank, you will need to provide the current Bank ID, which can be
obtained using [Function 0xF3 -- System Get Bank (SYSGETBNK)]. For
buffers in the top 32K of memory the Bank ID is not strictly required as
this memory is always mapped to the common bank.
Disk data transfers will be faster if the buffer resides in the top 32K
of memory because it avoids a double copy.
@@ -1417,6 +1444,8 @@ unit. The table below enumerates these values.
| RTCDEV_RP5 | 0x05 | Ricoh RPC01A Real-Time Clock w/ NVRAM | rp5rtc.asm |
| RTCDEV_EZ80 | 0x07 | eZ80 on-chip RTC | ez80rtc.asm |
| RTCDEV_PC | 0x08 | MC146818/DS1285/DS12885 RTC w/ NVRAM | pcrtc.asm |
| RTCDEV_MM | 0x09 | NS MM58167B RTC (no NVRAM) | mmrtc.asm |
| RTCDEV_DS12 | 0x0A | DS1288x RTC w/NVRAM | ds12rtc.asm |
The time functions to get and set the time (RTCGTM and RTCSTM) require a
6 byte date/time buffer in the following format. Each byte is BCD
@@ -1528,9 +1557,9 @@ Work in progress, documentation required...
Returns device information for the RTC unit. The Status (A) is a
standard HBIOS result code.
Device Attribute (C) values are not yet defined. Device Type (D)
indicates the specific hardware driver that handles the specified
character unit. Values are listed at the start of this section. Device
Device Attributes (C) values are not yet defined. Device Type (D)
indicates the specific hardware driver that handles the RTC unit.
Values are listed at the start of this section. Device
Number (E) indicates the physical device number assigned per driver
which is always 0 for RTC.
@@ -1774,7 +1803,7 @@ below enumerates their values.
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
| VDADEV_EF | 0x06 | EF9345 | ef.asm |
| VDADEV_FV | 0x07 | S100 FPGA VGA | fv.asm |
| VDADEV_TVGA | 0x07 | S100 TRION FPGA VGA | tvga.asm |
| VDADEV_XOSERA | 0x08 | Xosera FPGA-based Video Display Controller | xosera.asm |
Depending on the capabilities of the hardware, the use of colors and
@@ -2276,16 +2305,16 @@ using values that correspond to musical notes. The frequency will be
applied when the next SNDPLAY function is invoked. The returned Status
(A) is a standard HBIOS result code.
The Note (HL) values correspond to quarter notes. Increasing/decreasing
the value by 4 results in a full note increment/decrement.
The Note (HL) values correspond to eighth tones. Increasing/decreasing
the value by 8 results in a full tone increment/decrement.
Increasing/decreasing the value by 48 results in a full octave
increment/decrement. The value 0 corresponds to Bb/A# in octave 0.
The sound chip resolution and its oscillator limit the range and
accuracy of the notes played. The typical range of the AY-3-8910 is six
octaves: Bb2/A#2 to A7, where each value is a unique tone. Values above
and below can still be played but each quarter tone step may not result
in a note change.
and below can still be played but each eighth tone step may not result
in a tone change.
The following table shows the mapping of the Note (HL) value to the
corresponding octave and note.
@@ -2504,9 +2533,8 @@ If the Unit specified is not a hard disk the Media ID will be returned and
the slice parameter ignored. If there is no media in device, or the slice
number is invaid (Parameter Out Of Range) the function will return an error status.
**NOTE:
This function was placed in HBIOS to be shared between the diffeent CP/M
varients supported by RomWBW. It is not strictly a BIOS function,
**NOTE:** This function was placed in HBIOS to be shared between the different CP/M
variants supported by RomWBW. It is not strictly a BIOS function,
and may be moved in future.
`\clearpage`{=latex}
@@ -2582,14 +2610,14 @@ The hardware Platform (L) is identified as follows:
| PLT_MBC | 13 | NHYODYNE MULTI-BOARD COMPUTER |
| PLT_RPH | 14 | RHYOPHYRE GRAPHICS SBC |
| PLT_Z80RETRO | 15 | Z80 RETRO COMPUTER |
| PLT_S100 | 16 | S100 COMPUTERS Z180 |
| PLT_SZ180 | 16 | S100 COMPUTERS Z180 |
| PLT_DUO | 17 | DUODYNE Z80 SYSTEM |
| PLT_HEATH | 18 | HEATHKIT H8 Z80 SYSTEM |
| PLT_EPITX | 19 | Z180 MINI-ITX |
| PLT_MON | 20 | MONSPUTER (DEPRECATED) |
| PLT_GMZ180 | 21 | GENESIS Z180 SYSTEM |
| PLT_NABU | 22 | NABU PC W/ ROMWBW OPTION BOARD |
| PLT_FZ80 | 23 | S100 FPGA Z80 |
| PLT_SZ80 | 23 | S100 COMPUTERS Z80 |
| PLT_RCEZ80 | 24 | RCBUS W/ eZ80 |
For more information on these platforms see $doc_hardware$
@@ -3122,6 +3150,9 @@ performed. It includes the Boot Bank ID (L), the Boot Disk Unit (D),
and the Boot Disk Slice (E). The returned Status (A) is a standard
HBIOS result code.
This information is recorded in the HCB. HCB_BOOTBID is set to the Boot
Bank ID (L) and HCB_BOOTVOL is set to the BootDisk Unit/Slice (DE).
#### SYSSET Subfunction 0xF3 -- Set CPU Speed (CPUSPD)
| **Entry Parameters** | **Returned Values** |

View File

@@ -992,10 +992,10 @@ whether you boot your OS from ROM or from the disk media itself.
## Drive Letter Assignment
In legacy CP/M operating systems only 16 drive letters (A:-P:) available
to be assigned to disks Drive letters were generally mapped to disk
In CP/M operating systems only 16 drive letters (A:-P:) available
to be assigned to disks Drive letters were generally mapped to disk
drives in a completely fixed way. For example, drive A: would **always**
refer to the first floppy disk drive.
refer to the first floppy disk drive.
RomWBW implements a much more flexible drive letter assignment mechanism
so that any drive letter can dynamically be assigned to any disk device,
@@ -1117,100 +1117,6 @@ starting the operating system. Even better, you can use an auto-submit
batch file to customzie the assignments at startup without any user
intervention.
## Disk Operations/Commands
With some understanding of how RomWBW presents disk space to the
operating systems, we need to go over the options for actually setting
up your disk(s) with content.
### Preparing Media for First Use
You can initialize the media in-place using your RomWBW system.
Essentially, this means you are creating a set of blank directories on
your disk so that files can be saved there.
This is somewhat analogous to partitioning of a hard disk
or doing a low level format of a floppy disk.
Initilizing a Floppy disk is covered in the section [Floppy Disk Formatting],
or for a Hard disk the section [Hard Disk Preparation] covers the steps to
manually setup a hard disk for first use.
### Clearing (Formatting) Drives
This is somewhat analogous to doing a FORMAT operation on other systems.
With RomWBW you use the `CLRDIR` command to do this.
This command is merely "clearing out" the directory space of the drive
referred to by a drive letter and setting up the new empty directory.
Refer to $doc_apps$ for more information on use of the `CLRDIR` command.
Since `CLRDIR` works on drive letters, make
absolutely sure you know what media and slice are assigned to that
drive letter before using `CLRDIR` because `CLRDIR` will wipe out any
pre-existing contents of the slice.
After `CLRDIR` completes, the slice should be ready to use by the operating
system via the drive letter assigned.
Start by using the `DIR` command on the drive.
This should return without error, but list no files.
Here is an example of using `CLRDIR`. In this example, the `ASSIGN`
command is used to show the current drive letter assignments. Then
the `CLRDIR` command is used to initialize the directory of drive 'G'
which is slice 2 of hard disk device IDE0 ("IDE0:2").
```
B>ASSIGN
A:=MD0:0
B:=MD1:0
C:=FD0:0
D:=FD1:0
E:=IDE0:0
F:=IDE0:1
G:=IDE0:2
H:=IDE0:3
B>CLDIR G:
CLRDIR Version 1.2B May 2024 by Max Scane
Warning - this utility will overwrite the directory sectors of Drive: G
Type CAPITAL Y to proceed, any key other key to exit. Y
Directory cleared.
B>
```
### Checking Disk Layout
If you are not sure which disk layout is used for your existing
media, you can use the CP/M 2.2 `STAT` command to display information
including the number of "32 Byte Directory Entries"
for a drive letter on the corresponding hard disk.
- If it indicates 512, your disk layout is legacy (hd512).
- If it indicates 1024, your disk layout is modern (hd1k).
Here is an example of checking the disk layout.
```
B>STAT E:DSK:
E: Drive Characteristics
65408: 128 Byte Record Capacity
8176: Kilobyte Drive Capacity
1024: 32 Byte Directory Entries
0: Checked Directory Entries
256: Records/ Extent
32: Records/ Block
64: Sectors/ Track
2: Reserved Tracks
```
It is critical that you include `DSK:` after the drive letter in the
`STAT` command line. The important line to look at is labeled "32 Byte
Directory Entries".
# Disk Types
## RAM & ROM Disks
@@ -1335,14 +1241,14 @@ system.
Two hard disk layout schemes exist:
* Modern (hd1k)
* Legacy (hd512)
* Classic (hd512)
You **cannot** mix disk layouts on a single disk device,
however It is perfectly fine for one system to have
multiple hard disks with different layouts -- each physical disk
device is handled separately.
If you are setting up a new disk, the modern (hd1k) layout is
If you are setting up a new disk, the Modern (hd1k) layout is
recommended for the following reasons:
* Larger number of directory entries per filesystem
@@ -1350,8 +1256,8 @@ recommended for the following reasons:
* Reduces chances of data corruption
* Each slice occupies exactly 8MB (an exact power of 2) in size
Both the legacy and modern disk layouts continue to be fully supported
by RomWBW. There are no plans to deprecate the legacy layout.
Both the classic and modern disk layouts continue to be fully supported
by RomWBW. There are no plans to deprecate the classic layout.
#### Modern Layout
@@ -1368,14 +1274,14 @@ RomWBW does not support extended partitions -- only a single
primary partition can be used.
The existence of a partition table entry for RomWBW on
a hard disk makes it behave in the modern mode. Removing the RomWBW
partition entry from a modern hard disk layout
a hard disk makes it behaves in the modern disk layout mode.
Removing the RomWBW partition entry from a modern hard disk layout
will cause the existing data to be unavailable and/or corrupted
The CP/M filesystem in the slices of the modern disk layout
contain 1024 directory entries.
#### Legacy Layout
#### Classic Layout
Originally, RomWBW always used the very start of the hard disk media
for the location of the slices. In this layout, slice 0 referred to
@@ -1384,15 +1290,16 @@ chunk of ~8MB on the disk, and so on. The number of slices is limited
to the size of the disk media -- if you attempted to read/write to a
slice that would exceed the disk size, you would see I/O errors.
The legacy format takes steps to allow a partition table to still be
The classic disk layout takes steps to allow a partition table to still be
used for other types of filesystems such as DOS/FAT. It just does not
use a partition table entry to determine the start of the RomWBW slices.
The lack of a RomWBW partition table entry will cause legacy behaviour.
Adding a partition table entry on an existing legacy RomWBW hard disk
The lack of a RomWBW partition table entry will cause the classic disk
layout to be used.
Adding a partition table entry on an existing classic RomWBW hard disk
will cause the existing data to be unavailable and/or corrupted.
The CP/M filesystem in the slices of the legacy disk layout
The CP/M filesystem in the slices of the classic disk layout
contain 512 directory entries.
### Hard Disk Slices
@@ -1466,9 +1373,9 @@ system.
The exact number of CP/M filesystem slices that will fit on your
specific physical hard disk can be determined as follows:
- For modern (hd1k) disk layouts, it is 1024KB + (slices * 8192KB).
- For Modern (hd1k) disk layouts, it is 1024KB + (slices * 8192KB).
Or equivalent to say 1MB + (slices * 8MB).
- For legacy (hd512) disk layouts, it is slices * 8,320KB.
- For Classic (hd512) disk layouts, it is slices * 8,320KB.
**WARNING**: In this document KB means 1024 bytes and MB means 1048576
bytes (frequently expressed as KiB and MiB in modern terminology).
@@ -1499,7 +1406,9 @@ There are two approaches to preparing disks for use by RomWBW.
including files to a disk.
This section of the document describes the manual process of preparing
empty disks that are ready for use by an operating system.
empty disks that are ready for use by an operating system.
This is somewhat analogous to partitioning and formatting of a hard disk
or doing a low level format of a floppy disk.
Alternatively, you can use the pre-built RomWBW disk images to quickly
create disk media that already has a large selection of files and
@@ -1611,7 +1520,7 @@ This does not mean to imply it is the only possible way.
First you need to understand
* The disk layout approach (either hd1k or the legacy hd512).
* The disk layout approach (either the Modern hd1k or the Classic hd512).
See [Hard Disk Layouts] section if you are not sure.
hd1k should be the preferred layout.
* The number of 8MB slices that you want to allocate, preferred is 64 slices.
@@ -1640,7 +1549,7 @@ The disk unit number was assigned at boot See [Device Unit Assignments]
Refer to $doc_apps$ for more information on use of the `FDISK80` utility.
If you want to use the legacy hd512 layout skip down to the [Legacy (hd512)] section
If you want to use the Classic (hd512) layout skip down to the [Classic (hd512)] section
#### Modern (hd1k)
@@ -1702,14 +1611,14 @@ At this point, it is best to restart your system to make sure that
the operating system is aware of the partition table updates. Start
CP/M 2.2 or Z-System from ROM again.
#### Legacy (hd512)
#### Classic (hd512)
At this point, use the `I` command to initialize (reset)
the partition table to an empty state.
To use the hd512 layout, use `W` to write the empty table to the disk
and exit. Remember that the lack of a partition for RomWBW implies the
legacy (hd512) layout.
Classic (hd512) layout.
At this point, it is best to restart your system to make sure that
the operating system is aware of the partition table updates. Start
@@ -1727,12 +1636,7 @@ You need to initialize each slice for CP/M to use it.
This is somewhat analogous to doing a FORMAT operation on other systems,
and is done using the `CLRDIR` command.
This is covered in the section [Clearing (Formatting) Drives]
**WARNING**: Earlier versions of the `CLRDIR` application do not
appear to check for disk errors when it runs. If you attempt to run
`CLRDIR` on a drive that is mapped to a slice that does not actually fit
on the physical disk, it may behave erratically.
This is covered in the next section [Clearing (Formatting) Drives]
Assuming you want to use additional slices, you should initialize them
using the same process. You may need to reassign drive letters to
@@ -1741,11 +1645,57 @@ You can use the `ASSIGN` command to handle this.
## Post Disk Preparation
Once a disk (either floppy or hard disk) has been initialised and
formattted you may optionally;
Once a disk has been initialised you may need to do one or more of the following;
* Clear (Format) the drive
* Make the disk bootable
* Copy system (or other) files to the disk
### Clearing (Formatting) Drives
This is somewhat analogous to doing a FORMAT operation on other systems.
With RomWBW you use the `CLRDIR` command to do this.
This command is merely "clearing out" the directory space of the drive
referred to by a drive letter and setting up the new empty directory.
Refer to $doc_apps$ for more information on use of the `CLRDIR` command.
Since `CLRDIR` works on drive letters, make
absolutely sure you know what media and slice are assigned to that
drive letter before using `CLRDIR` because `CLRDIR` will wipe out any
pre-existing contents of the slice.
After `CLRDIR` completes, the drive should be ready to use by the operating
system via the drive letter assigned.
Start by using the `DIR` command on the drive.
This should return without error, but list no files.
Here is an example of using `CLRDIR`. In this example, the `ASSIGN`
command is used to show the current drive letter assignments. Then
the `CLRDIR` command is used to initialize the directory of drive 'G'
which is slice 2 of hard disk device IDE0 ("IDE0:2").
```
B>ASSIGN
A:=MD0:0
B:=MD1:0
C:=FD0:0
D:=FD1:0
E:=IDE0:0
F:=IDE0:1
G:=IDE0:2
H:=IDE0:3
B>CLDIR G:
CLRDIR Version 1.2B May 2024 by Max Scane
Warning - this utility will overwrite the directory sectors of Drive: G
Type CAPITAL Y to proceed, any key other key to exit. Y
Directory cleared.
B>
```
### Making a Disk Bootable
To make a disk bootable you will need to follow the specific instructions
@@ -1776,6 +1726,38 @@ system and application files to your disks.
Refer to [Transferring Files] for more information on getting
files onto your disks.
### Checking Disk Layout
If you are not sure which disk layout is used for your existing
media, you can use the CP/M 2.2 `STAT` command to display information
including the number of "32 Byte Directory Entries"
for a drive letter on the corresponding hard disk.
Note: For CP/M 3 the command is `SHOW [DRIVE]`
- If it indicates 512, your disk layout is Classic (hd512).
- If it indicates 1024, your disk layout is Modern (hd1k).
Here is an example of checking the disk layout.
```
B>STAT E:DSK:
E: Drive Characteristics
65408: 128 Byte Record Capacity
8176: Kilobyte Drive Capacity
1024: 32 Byte Directory Entries
0: Checked Directory Entries
256: Records/ Extent
32: Records/ Block
64: Sectors/ Track
2: Reserved Tracks
```
It is critical that you include `DSK:` after the drive letter in the
`STAT` command line. The important line to look at is labeled "32 Byte
Directory Entries".
# Disk Images
Since it would be quite a bit of work to transfer over all the files you
@@ -1806,12 +1788,13 @@ The following table shows the disk images available.
| xxx_fortran.img | Microsoft Fortran-80 Compiler | No |
| xxx_games.img | Games Disk for CP/M | No |
| xxx_hitechc.img | HI-TECH Z80 CP/M C compiler | No |
| xxx_infocom.img | Infocom Games Disk | No |
| xxx_msxroms1.img | MSX ROMs Disk 1 | No |
| xxx_msxroms2.img | MSX ROMs Disk 2 | No |
| xxx_nzcom.img | NZCOM ZCPR 3.4 Operating System | Yes |
| xxx_qpm.img | QPM Operating System | Yes |
| xxx_tpascal.img | Borland Turbo Pascal Compiler | No |
| xxx_ws4.img | WordStar v4 & ZDE Applications | No |
| xxx_wp.img | WordStar v4 & ZDE Applications | No |
| xxx_z80asm.img | Relocating macro assembler for CP/M | No |
| xxx_zpm3.img | ZPM3 Operating System | Yes |
| xxx_zsdos.img | ZCPR-DJ & ZSDOS 1.1 Operating System | Yes |
@@ -1820,8 +1803,8 @@ You will find 3 sets of these .img files in the distribution. The
"xxx" portion of the filename will be:
* "fd_" for a floppy image.
* "hd1k_" for a modern layout hard disk image.
* "hd512_" for a legacy layout hard disk image.
* "hd1k_" for a Modern layout hard disk image.
* "hd512_" for a Classic layout hard disk image.
In the case of xxx_dos65.img, only an hd512 variant is provided. This
is a constraint of the DOS65 distribution.
@@ -1895,7 +1878,7 @@ These partition sizes and locations were chosen to:
The standard partition table table entries are:
+---------------------------------+-------------------------------+-------------------------------+
| | **--- Modern (hd1k) ---** | **--- Legacy (hd512) ---** |
| | **--- Modern (hd1k) ---** | **--- Classic (hd512) ---** |
| +---------------+---------------+---------------+---------------+
| | Byte(s) | Sector(s) | Byte(s) | Sector(s) |
+=================================+==============:+==============:+==============:+==============:+
@@ -1998,7 +1981,52 @@ that there are more disk (slice) images than the 6 that are included in
the Combo Disk Images. These supplemental disk images are identified by
looking for the files that start with hd1k_ or hd512_.
#### Adding Slices to Combo Image
There are two approaches you can use to create custom hard disk
images with multiple slices.
- You can add/modify a configuration file and run the RomWBW
build process. This requires running the RomWBW build process, but
will cause your custom hard disk images to be created with every
build.
- You can manually combine the individual images using `COPY` (Windows)
or `cat` (Linux/MacOS). This does not require running the RomWBW
build process, but will require manually recreating your custom
hard disk images when you upgrade to new releases of RomWBW.
The following sections provide more detail on each approach.
#### Building Custom Hard Disk Images
The RomWBW build process builds the disk images defined in the
`Source/Images` directory. The resultant images are placed in the `Binary`
directory and are ready to copy to your media.
These aggregate disk images are defined using .def files. You will see there
is a combo.def file in the Images directory that defines the slices for the
Combo disk image. You can create your own .def files as desired to
automatically create custom aggregate disk images. When the RomWBW
build process is run, it will automatically look for all .def files
in the `Source/Images` directory and create aggregate disk images for
each using the same base name as the .def file.
There is an example of this in the `Images` directory called
`all.def.example`. You can remove the ".example" suffix so that the
file is called `all.def`. Now, if you run the RomWBW build process, it
will automatically generate `hd512_all.img` and `hd1k_all.img` files in
the `/Binary` directory. This example creates an aggregate disk image
with all of the possible slices.
You could also modify the contents of the Combo disk image by simply
modifying the `combo.def` configuration file. However, it is recommended
that you leave the Combo image alone and simply define your own.
NOTE: All of the `hd1k_xxx.img` aggregate disk image files created in
this way (including the Combo disk image) will already be prefixed with
`hd1k_prefix.dat`, so you do not need to add the prefix file. They are
ready to write to your media.
#### Combining Hard Disk Images Manually
You can add slices to the Combo Disk Images simply by tacking
slices onto the end. For example, if you want to add a slice
@@ -2017,7 +2045,7 @@ Linus/MaxOS:
Note that you **must** be sure to use either the hd1k_ or hd512_
prefixed files together. You cannot mix them.
#### Creating a new Custom Image
#### Creating a new Custom Image Manually
If you want to create a completely custom hard disk image that is not
based on the existing combo image, you can generate a disk image entirely
@@ -2446,6 +2474,7 @@ via the NZ-COM adaptation (see below).
* [ZCPR Manual]($doc_root$/CPM/ZCPR Manual.pdf)
* [ZCPR-DJ]($doc_root$/CPM/ZCPR-DJ.doc)
* [ZSDOS Manual]($doc_root$/CPM/ZSDOS Manual.pdf)
* [ZSDOS Programmer's Manual]($doc_root$/CPM/ZSDOS Programmers Manual.pdf)
#### Boot Disk
@@ -2526,6 +2555,7 @@ Manual.pdf" document in order to use this operating system effectively.
* [NZCOM Users Manual]($doc_root$/CPM/NZCOM Users Manual.pdf)
* [Z-System Users Guide]($doc_root$/CPM/Z-System Users Guide.pdf)
* [ZCPR3.3 User Guide]($doc_root$/CPM/ZCPR3.3 User Guide.pdf)
* [ZSDOS Programmer's Manual]($doc_root$/CPM/ZSDOS Programmers Manual.pdf)
#### Boot Disk

View File

@@ -3,9 +3,13 @@ setlocal
set TOOLS=../../Tools
set PATH=%TOOLS%\srecord;%PATH%
set PATH=%TOOLS%\zxcc;%TOOLS%\srecord;%TOOLS%\compress;%PATH%
for %%f in (..\..\Binary\RCZ80_ez512_*.rom) do call :build %%~nf
set CPMDIR80=%TOOLS%/cpm/
zxcc z80asm -decomp/HL
for %%f in (..\..\Binary\RCZ80_ez512_*.upd) do call :build %%~nf
goto :eof
@@ -21,6 +25,17 @@ srec_cat temp.dat -binary -exclude 0x1F000 0x20000 ez512_mon.bin -binary -offset
srec_cat temp.dat -binary -exclude 0x24000 0xA4000 ..\..\Binary\%1.rom -binary -offset 0x24000 -o temp.dat -binary
move temp.dat ..\..\Binary\%1_hd1k_prefix.dat
copy /b ..\..\Binary\%1_hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\%1_hd1k_combo.img || exit /b
copy /b ..\..\Binary\%1_hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_wp.img ..\..\Binary\%1_hd1k_combo.img || exit /b
::
:: The following lines produce a 64K ROM that can be used in the EaZy80-512.
:: In order to fit in the required 64K, TastyBASIC and the Game components
:: are removed from the ROM. If the layout of the ROM components
:: changes (see ..\Source\layout.inc), the address range that is carved
:: out below may need to be adjusted.
::
srec_cat ..\..\Binary\%1.upd -binary -exclude 0x13700 0x14A00 -fill 0xC9 0x13700 0x14A00 -o temp.upd -binary
compress temp.upd
srec_cat decomp.hex -intel temp.upd.cmp -binary -offset 3 -o ..\..\Binary\%1_64k.rom -binary
goto :eof

View File

@@ -1,3 +1,7 @@
@echo off
setlocal
if exist *.upd del *.upd
if exist *.cmp del *.cmp
if exist *.hex del *.hex
if exist *.lst del *.lst

View File

@@ -1,13 +1,15 @@
DEST=../../Binary
OTHERS=*.hex *.upd *.cmp
HD1KIMGS = $(DEST)/hd1k_cpm22.img $(DEST)/hd1k_zsdos.img $(DEST)/hd1k_nzcom.img \
$(DEST)/hd1k_cpm3.img $(DEST)/hd1k_zpm3.img $(DEST)/hd1k_ws4.img
$(DEST)/hd1k_cpm3.img $(DEST)/hd1k_zpm3.img $(DEST)/hd1k_wp.img
ROMS := $(wildcard $(DEST)/RCZ80_ez512_*.rom)
ROMS := $(patsubst $(DEST)/%.rom,%,$(ROMS))
ROMS := $(wildcard $(DEST)/RCZ80_ez512_*.upd)
ROMS := $(patsubst $(DEST)/%.upd,%,$(ROMS))
OBJECTS := $(patsubst %,%_hd1k_prefix.dat,$(ROMS))
OBJECTS += $(patsubst %,%_hd1k_combo.img,$(ROMS))
OBJECTS += $(patsubst %,%_64k.rom,$(ROMS))
TOOLS = ../../Tools
@@ -25,3 +27,14 @@ DIFFPATH = $(DIFFTO)/Binary
%_hd1k_combo.img: %_hd1k_prefix.dat $(HD1KIMGS)
cat $^ > $@
# The following recipe produces a 64K ROM that can be used in the EaZy80-512.
# In order to fit in the required 64K, TastyBASIC and the Game components
# are removed from the ROM. If the layout of the ROM components
# changes (see ..\Source\layout.inc), the address range that is carved
# out below may need to be adjusted.
%_64k.rom: $(DEST)/%.upd decomp.hex
srec_cat $< -binary -exclude 0x13700 0x14A00 -fill 0xC9 0x13700 0x14A00 -o temp.upd -binary
$(COMPRESS) temp.upd
srec_cat decomp.hex -intel temp.upd.cmp -binary -offset 3 -o $@ -binary

151
Source/EZ512/decomp.z80 Normal file
View File

@@ -0,0 +1,151 @@
; 251003 decomp_rom_v1.1
; Mark Pruden: Fix for omitted Bank 4
;
; 250208 decomp_rom v1.0
; Paul de Bak: Renamed and used in RomWBW utility program 'compress_upd.c'
; to compress *.upd binary files
;
;1/17/25
;decompress RomWBW v1.0 - Original version by Bill Shen
;Routine in ROM that decompress RomWBW data file into RAM and jump to it.
;copy data file to RAM starting from bank 0, addr 0.
;when encountered two consecutive bytes of same values, the tird byte following the consecutive values
; describe how many more identical bytes need to be added.
;decompression ends when 3 banks (96KB) are expanded
;compressed data is stored from address $3 to below $FF00
;decompress program is located at $FF00
;register usage
;regC points to bankreg
;regB is ROM source ($20)
;regD is RAM destination bank
;regE is previous value
;regHL is destination pointer
;regIX is source pointer
;regIY points to byte count
bankreg equ 0ch ;PIO port C is 512K RAM bank register
SIOAData equ 8h ;location of SIO chan A data
SIOACmd equ 9h ;location of SIO ch A command/status reg
SIOBData equ 0ah ;location of SIO chan B data
SIOBCmd equ 0bh ;location of SIO ch B command/status reg
PORTCData equ 0ch ;PIA port C data
PORTCCmd equ 0dh ;PIA port C command
org 0
jp 0ff00h ;do program at top of memory
dataRomWBW:
;compressed RomWBW data appended here
org 0ff00h
ld a,09h ;write to KIO command reg first, enable PIA mux
out (0eh),a ; SIO-CTC-PIO priority daisy chain
ld hl,0ff00h ;copy self into RAM
ld de,0ff00h
ld bc,100h
ldir
xor a ;PortC are all outputs. This will cause both RAM and ROM
out (PORTCCmd),a ; to be enabled until following OUT instruction, since RAM and
; ROM have same contents, this won't cause contention
ld a,00100010b ; ROM enable, RAM disable, bank$2, nRTSA, nRTSB enabled
out (PORTCData),a
;register usage
;regC points to bankreg
;regB is ROM source ($20)
;regD is RAM destination bank
;regE is previous value
;regHL is destination pointer
;regIX is source pointer
;regIY points to byte count
ld c,bankreg ;regC points to bank register IO address
ld e,0 ;make sure regE is not the same as very first byte which is 0xC3
ld b,20h ;regB is ROM source
ld d,80h ;regD is RAM destination
ld hl,0 ;destination starts from bank 0, address 0
ld ix,dataRomWBW ;regIX points to compressed RomWBW
ld iy,cSame ;regIY points to the count of same value
start:
out (c),b ;read data from ROM
;these two lines are executing program in ROM which has same program as RAM
ld a,(ix) ;read from source
out (c),d
;running in RAM
ld (hl),a ;write to destination
cp e ;two consecutive same values?
jp z,decomp
ld e,a ;update the 'previous' value
inc ix ;next value in ROM
inc hl ;next destination value
ld a,h
cp 80h ;check for address greater than 32KB
jp z,nxtDbank
jp start
nxtDbank:
ld hl,0
inc d ;next bank
ld a,d
;; cp 83h ;compare to bank 3
cp 84h ;MP compare to bank 4
jp z,decompDone
jp start
decomp:
out (c),b ;read data from ROM
;running in ROM
inc ix ;point to byte count of same value
ld a,(ix) ;get the count value
out (c),d ;switch to RAM bank
;running in RAM
dec a ;reduce by 1 because one byte is already written
ld (iy),a ;store count to cSame pointed by regIY
jp z,DoDecomp2 ;just two consecutive values
DoDecomp:
inc hl ;next destination value
ld a,h
cp 80h
jp z,nxtDbank1
DoDecomp1:
ld (hl),e ;write previous value (in regE) to destination
dec (iy)
jp nz,DoDecomp
DoDecomp2:
;done with block decompression, get ready to start over
out (c),b
;running in ROM
inc ix ;point to next data in ROM
ld e,(ix)
dec e ;make sure previous value does not match, in case of large
; block (>256) of same values
out (c),d
;running in RAM
inc hl
ld a,h
cp 80h ;check for address grater than 32KB
jp z,nxtDbank2
jp start
nxtDbank1:
ld hl,0
inc d ;next bank
ld a,d
cp 83h ;compare to bank3
jp z,decompDone
out (c),d ;update bank before continuing
jp DoDecomp1
nxtDbank2:
ld hl,0
inc d ;next bank
ld a,d
cp 83h ;compare to bank 3
jp z,decompDone
jp start
decompDone:
;decompression is done, reaching 96KB of data
ld a,80h ;ROM disable, RAM enable, bank$0, nRTSA, nRTSB enabled
out (c),a
jp 0 ;execute RomWBW
cSame: db 0 ;count of the same value
end

View File

@@ -1,18 +0,0 @@
FPGA Z80 has no real ROM. It has a single 512K RAM chip.
The ROMless startup mode treats the entire 512KB as RAM. 384KB of RAM
must be preloaded by the FPGA Monitor CF Loader. There will be no ROM
disk available under RomWBW. There will be a RAM Disk and it's initial
contents will be seeded by the image loaded by the CF Loader.
Bank Contents Description
-------- -------- -----------
0x0 BIOS HBIOS Bank (operating)
0x1 IMG0 ROM Loader, Monitor, ROM OSes
0x2 IMG1 ROM Applications
0x3 IMG2 Reserved
0x4-0xB RAMD RAM Disk Banks
0xC BUF OS Buffers (CP/M3)
0xD AUX Aux Bank (CP/M 3, BPBIOS, etc.)
0xE USR User Bank (CP/M TPA, etc.)
0xF COM Common Bank, Upper 32KB

View File

@@ -71,7 +71,7 @@ Bank ID Usage
0x82 User TPA
0x83 Common
ROMless Standard Bank Layout (512K): ZRC, ZRC512, EZ512, Z1RCC, ZZRCC, FZ80
ROMless Standard Bank Layout (512K): ZRC, ZRC512, EZ512, Z1RCC, ZZRCC
Bank ID Usage
------- ------

View File

@@ -108,10 +108,10 @@ tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit
:: Create platform specific hardware monitor
if %Platform%==S100 (
zxcc slr180 -s100mon/fh || exit /b
zxcc mload25 -s100mon || exit /b
set HwMon=s100mon.com
if %Platform%==SZ180 (
zxcc slr180 -sz180mon/fh || exit /b
zxcc mload25 -sz180mon || exit /b
set HwMon=sz180mon.com
) else (
call :asm hwmon || exit /b
set HwMon=hwmon.bin
@@ -233,9 +233,11 @@ call Build MBC std || exit /b
call Build ZETA std || exit /b
call Build ZETA2 std || exit /b
call Build N8 std || exit /b
call Build N8PC std || exit /b
call Build MK4 std || exit /b
call Build RCZ80 std || exit /b
call Build RC2014 std || exit /b
call Build RCEZ80 std || exit /b
call Build RCZ80 std || exit /b
call Build RCZ80 kio_std || exit /b
call Build EZZ80 easy_std || exit /b
call Build EZZ80 tiny_std || exit /b
@@ -263,13 +265,15 @@ call Build GMZ180 std || exit /b
call Build DYNO std || exit /b
call Build RPH std || exit /b
call Build Z80RETRO std || exit /b
call Build S100 std || exit /b
call Build SZ180 std || exit /b
call Build DUO std || exit /b
call Build HEATH std || exit /b
call Build EPITX std || exit /b
:: call Build MON std || exit /b
call Build NABU std || exit /b
call Build FZ80 std || exit /b
call Build SZ80 std || exit /b
call Build SZ80 t35 || exit /b
call Build UNA std || exit /b
call Build MSX std || exit /b
goto :eof

View File

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

View File

@@ -17,7 +17,9 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="N8"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="N8PC"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RC2014"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCEZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio_std"; bash Build.sh
@@ -47,13 +49,15 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="Z80RETRO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="S100"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SZ180"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="DUO"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="HEATH"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="EPITX"; ROM_CONFIG="std"; bash Build.sh
# ROM_PLATFORM="MON"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="NABU"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="FZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SZ80"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="SZ80"; ROM_CONFIG="t35"; bash Build.sh
ROM_PLATFORM="MSX"; ROM_CONFIG="std"; bash Build.sh
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
exit
fi

View File

@@ -0,0 +1,94 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR MSX
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_MSX.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
AUTOCON .SET FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
;
CPUOSC .SET 3579545 ; CPU OSC FREQ IN MHZ
;
RAMSIZE .SET 512-64 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!) (MSX_NOTE: SUBSTRACT 64K FROM RAM MAPPER SIZE)
;
KIOENABLE .SET FALSE ; ENABLE ZILOG KIO SUPPORT
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
LCDENABLE .SET FALSE ; ENABLE LCD DISPLAY
;
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
MKYKBLOUT .SET KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
;
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
RP5RTCENABLE .SET TRUE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM) (MSX_NOTE: MSX 1 MAY NOT HAVE A RTC, MSX 2 ALWAYS HAS ONE)
INTRTCENABLE .SET FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSXMKY ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|MSXUKY]
TMS80COLS .SET TRUE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9938/V9958
;
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM) (MSX_NOTE: REQUIRES SODA IDE CART)
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
CHENABLE .SET FALSE ; CH: ENABLE CH375/376 USB SUPPORT
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM) (MSX_NOTE: SOME MSX MACHINES DON'T HAVE A LPT PORT)
PPAENABLE .SET FALSE ; PPA: ENABLE IOMEGA ZIP DRIVE (PPA) DISK DRIVER (PPA.ASM)
IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM.ASM)
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER (MSX_NOTE: THERE ARE CARTS WITH THIS PSG LIKE THE MMM)
AY38910ENABLE .SET TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER

View File

@@ -0,0 +1,94 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR N8PC
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_38400_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_N8PC.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
AUTOCON .SET TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
;
CPUOSC .SET 9216000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 0 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
;
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
;
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
DSKYENABLE .SET FALSE ; ENABLES DSKY FUNCTIONALITY
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
PKDENABLE .SET FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
M6242RTCENABLE .SET TRUE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
;
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDCNT .SET 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
FD0TYPE .SET FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .SET FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
PPPENABLE .SET FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
;
AY38910ENABLE .SET TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
;
DSKYENABLE .SET FALSE ; ENABLES DSKY FUNCTIONALITY
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
PKDPPIBASE .SET N8_PPI0 ; BASE I/O ADDRESS OF PKD PPI
PKDOSC .SET 1000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
;
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES

View File

@@ -0,0 +1,112 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR RC2014 Z80
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_RC2014.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
AUTOCON .SET TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
;
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
;
KIOENABLE .SET FALSE ; ENABLE ZILOG KIO SUPPORT
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
;
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
LCDENABLE .SET TRUE ; ENABLE LCD DISPLAY
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
INTRTCENABLE .SET FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|MSXUKY]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
;
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
FD0TYPE .SET FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
FD1TYPE .SET FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
;
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;
CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT
CHNATIVEENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE USB DRIVER
CHSCSIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE MASS STORAGE DEVICES (REQUIRES CHNATIVEENABLE)
CHUFIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE UFI FLOPPY DISK DEVICES (REQUIRES CHNATIVEENABLE)
CHNATIVEFORCE .SET FALSE ; CH376: DISABLE AUTO-DETECTION OF MODULE - ASSUME ITS INSTALLED
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
;
PPAENABLE .SET FALSE ; PPA: ENABLE IOMEGA ZIP DRIVE (PPA) DISK DRIVER (PPA.ASM)
IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM.ASM)
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
;
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
;
AY38910ENABLE .SET TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AY_FORCE .SET TRUE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT

View File

@@ -55,7 +55,7 @@ CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
;;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|MSXUKY]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
@@ -71,6 +71,14 @@ PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;
CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT
CHNATIVEENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE USB DRIVER
CHSCSIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE MASS STORAGE DEVICES (REQUIRES CHNATIVEENABLE)
CHUFIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE UFI FLOPPY DISK DEVICES (REQUIRES CHNATIVEENABLE)
CHNATIVEEZ80 .SET TRUE ; CH376: DELEGATE USB DRIVERS TO EZ80'S FIRMWARE
CHNATIVEFORCE .SET FALSE ; CH376: DISABLE AUTO-DETECTION OF MODULE - ASSUME ITS INSTALLED
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
@@ -82,3 +90,5 @@ SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
EZ80TIMER .SET EZ80TMR_FIRM ; EZ80: TIMER TICK MODEL: EZ80TMR_[INT|FIRM]

View File

@@ -72,7 +72,7 @@ ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|MSXUKY]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
@@ -92,6 +92,10 @@ SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;
CHENABLE .SET TRUE ; CH: ENABLE CH375/376 USB SUPPORT
CHNATIVEENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE USB DRIVER
CHSCSIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE MASS STORAGE DEVICES (REQUIRES CHNATIVEENABLE)
CHUFIENABLE .SET FALSE ; CH376: ENABLE CH376 NATIVE UFI FLOPPY DISK DEVICES (REQUIRES CHNATIVEENABLE)
CHNATIVEFORCE .SET FALSE ; CH376: DISABLE AUTO-DETECTION OF MODULE - ASSUME ITS INSTALLED
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;

View File

@@ -87,5 +87,5 @@ PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_LINC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_LINC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT

View File

@@ -70,7 +70,7 @@ ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
;
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
@@ -88,5 +88,5 @@ SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT

View File

@@ -1,6 +1,6 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR S100
; ROMWBW DEFAULT BUILD SETTINGS FOR S100 Z180
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
@@ -45,7 +45,7 @@
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_57600_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_S100.asm"
#INCLUDE "cfg_SZ180.asm"
;
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
@@ -55,19 +55,32 @@ CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
;
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
Z180_MEMWAIT .SET 1 ; Z180: MEMORY WAIT STATES (0-3)
Z180_IOWAIT .SET 2 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
Z180_IOWAIT .SET 3 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
MMRTCENABLE .SET TRUE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
DS12RTCENABLE .SET TRUE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
DLPSERENABLE .SET TRUE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
DLPSERCNT .SET 1 ; DLPSER: NUMBER OF DEVICES TO DETECT (1-2)
DLPSER0STAT .SET $AA ; DLPSER1: STATUS PORT ADDRESS
DLPSER0DATA .SET $AC ; DLPSER1: DATA PORT ADDRESS
SCCENABLE .SET TRUE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
SCC0ACFG .SET SER_19200_8N1 ; SCC 0A: SERIAL LINE CONFIG
SCC0BCFG .SET SER_19200_8N1 ; SCC 0B: SERIAL LINE CONFIG
SCONENABLE .SET TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
;
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
;
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

View File

@@ -1,6 +1,6 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR S100 FPGA Z80
; ROMWBW DEFAULT BUILD SETTINGS FOR S100 Z80
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
@@ -43,14 +43,34 @@
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
#DEFINE DEFSERCFG SER_19200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_FZ80.asm"
#INCLUDE "cfg_SZ80.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
RAMSIZE .SET 896 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_SZ80 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512|SZ80]
;
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
FPLED_IO .SET $05 ; FP: PORT ADDRESS FOR FP LEDS
;
MMRTCENABLE .SET TRUE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
DS12RTCENABLE .SET TRUE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
DLPSERENABLE .SET TRUE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
DLPSERCNT .SET 2 ; DLPSER: NUMBER OF DEVICES TO DETECT (1-2)
DLPSER0STAT .SET $E8 ; DLPSER0: STATUS PORT ADDRESS
DLPSER0DATA .SET $E9 ; DLPSER0: DATA PORT ADDRESS
DLPSER1STAT .SET $AA ; DLPSER1: STATUS PORT ADDRESS
DLPSER1DATA .SET $AC ; DLPSER1: DATA PORT ADDRESS
SCCENABLE .SET TRUE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
SCONENABLE .SET TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
;
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

View File

@@ -0,0 +1,87 @@
;
;==================================================================================================
; ROMWBW DEFAULT BUILD SETTINGS FOR S100 T35 FPGA Z80
;==================================================================================================
;
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
; INDICATED ABOVE. THESE SETTINGS DEFINE THE OFFICIAL BUILD FOR THIS
; PLATFORM AS DISTRIBUTED IN ROMWBW RELEASES.
;
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
;
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
; |
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
; |
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
; |
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
;
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
; OVERRIDE THESE SETTINGS AS DESIRED.
;
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
; MODIFIED.
;
; TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THIS FILE, THE
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
;
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
;
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
;
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
;
#DEFINE PLATFORM_NAME "S100 TRION Z80", " [", CONFIG, "]" ; TEXT LABEL OF THIS CONFIG IN STARTUP MESSAGES
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
#DEFINE DEFSERCFG SER_19200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
;
#INCLUDE "cfg_SZ80.asm"
;
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512|SZ80]
;
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
;
DS5RTCENABLE .SET TRUE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
DLPSERENABLE .SET TRUE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
DLPSERCNT .SET 1 ; DLPSER: NUMBER OF DEVICES TO DETECT (1-2)
DLPSER0STAT .SET $AA ; DLPSER1: STATUS PORT ADDRESS
DLPSER0DATA .SET $AC ; DLPSER1: DATA PORT ADDRESS
TSERENABLE .SET TRUE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SCCENABLE .SET TRUE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
SCONENABLE .SET TRUE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
;
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
;
TVGAENABLE .SET TRUE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDECNT .SET 3 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $30 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE1MODE .SET PPIDEMODE_S100A ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $38 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE2MODE .SET PPIDEMODE_S100B ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $38 ; PPIDE 2: PPI REGISTERS BASE ADR
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
;
ESPSDENABLE .SET TRUE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDCNT .SET 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0DUAL .SET TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .SET TRUE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)

View File

@@ -3,66 +3,73 @@ Final Output Files
------------------
ROM Output File [512K] -> <config>.rom
hbios_rom [32K]
OSIMG [32K]
OSIMG1 [32K]
OSIMG2 [32K]
romdisk - [384K]
HBIOS_ROM [32K]
ROM1 [32K]
ROM2 [32K]
ROM3 [32K]
ROMDISK [384K] (size varies with ROM in system)
UPD Output File [128K] -> <config>.upd
hbios_rom [32K]
OSIMG [32K]
OSIMG1 [32K]
OSIMG2 [32K]
HBIOS_ROM [32K]
ROM1 [32K]
ROM2 [32K]
ROM3 [32K]
COM Output File -> <config>.com
hbios_app [varies]
OSIMG_SMALL [32K]
HBIOS_APP [<32K] (size varies, no padding]
APPBOOT [ 20K]
-------------------------
Intermediate Output Files
-------------------------
OSIMG [32K] -> osimg.bin
romldr [4K]
dbgmon [4K]
ZSYS (zcpr/zsdos/cbios) [12K]
CPM (ccp/bdos/cbios) [12K]
ROM1 [32K] -> rom1.bin
romldr [ 4K]
dbgmon [ 4K]
ZSYS [12K] (zcpr/zsdos/cbios)
CPM [12K] (ccp/bdos/cbios)
OSIMG_SMALL [20K] -> osimg_small.bin
romldr [4K]
dbgmon [4K]
ZSYS (zcpr/zsdos/cbios) [12K]
OSIMG1 [32K] -> osimg1.bin
ROM2 [32K] -> rom2.bin
camel80 [5.75K]
nascom [8K]
tastybasic [2.5K]
nascom [8.00K]
tastybasic [2.50K]
game [2.25K]
eastaegg [0.5K]
netboot [4K]
eastaegg [0.50K]
netboot [4.00K]
updater.bin [3.25K]
sysconf.bin [2K]
usrrom.bin [3.75K (padded)]
sysconf.bin [2.00K]
usrrom.bin [0.50K]
slack [3.25K]
OSIMG2 [32K] -> osimg2.bin
s100mon [8.25kb (optional)]
(OR) not populated
ROM3 [32K] -> rom3.bin
hwmon [ 8.00K]
invntdev [ 2.75K]
invntslc [ 0.50K]
fonts [ 8.00K]
slack [12.75K]
APPBOOT [20K] -> appboot.bin
romldr [ 4K]
dbgmon [ 4K]
ZSYS [12K] (zcpr/zsdos/cbios)
CPM [12K] -> cpm.bin
ccp [2K]
bdos [3.5K]
cbios [6.5K]
ccp [2.0K]
bdos [3.5K]
cbios [6.5K]
ZSYS [12K] -> zsys.bin
zcpr [2K]
zsdos [3.5K]
cbios [6.5K]
zcpr [2.0K]
zsdos [3.5K]
cbios [6.5K]
-----------------
Compilation Units
-----------------
NOTE: The following need to be reviewed. They are probably out
of date.
hbios.asm -> hbios_rom.bin, hbios_app.bin
std.asm
ver.inc
@@ -76,7 +83,7 @@ hbios.asm -> hbios_rom.bin, hbios_app.bin
bcd.asm
dsky.asm
romldr.asm -> romldr.bin: loader?
romldr.asm -> romldr.bin
std.asm
ver.inc
hbios.inc
@@ -125,18 +132,16 @@ tastybasic.asm -> tastybasic.bin
<config>.asm
plt_<platform>.inc
=======================================================================
HBIOS Loading Modes:
ROMBOOT: Startup from ROM Bank BID_BOOT
APPBOOT: Startup as CP/M application
IMGBOOT: Startup from RAM Bank BID_USR
IMGBOOT: Startup from RAM Bank BID_USR (deprecated)
=======================================================================
- If not (APPBOOT), include page 0
- Base Hardware Init
- Iff (ROMBOOT), init BBR
- Install Proxy
- Set CURBNK:
@@ -149,6 +154,6 @@ HBIOS Loading Modes:
- Copy OS Image to USR Bank
- If (ROM_MODE), copy BID_OS:0 --> BID_USR:0
- Else, copy BID_USR:<os image start> --> BID_USR:0
- Else, copy BID_BIOS:<os image start> --> BID_USR:0
- Chain to BID_USR:0

View File

@@ -42,8 +42,8 @@ else
BIOS=wbw
endif
ifeq ($(ROM_PLATFORM),S100)
HWMON=s100mon.bin
ifeq ($(ROM_PLATFORM),SZ180)
HWMON=sz180mon.bin
else
HWMON=hwmon.bin
endif
@@ -108,9 +108,9 @@ sysconf.com:
@$(TASM) -dCPM sysconf.asm sysconf.com sysconf_com.lst
cp $@ $(DEST)/Apps
s100mon.bin:
$(ZXCC) $(CPM)/SLR180 -s100mon/FH
$(ZXCC) $(CPM)/MLOAD25 -s100mon.bin=s100mon
sz180mon.bin:
$(ZXCC) $(CPM)/SLR180 -sz180mon/FH
$(ZXCC) $(CPM)/MLOAD25 -sz180mon.bin=sz180mon
tastybasic.bin:
cp ../TastyBasic/src/$@ .
@@ -139,7 +139,7 @@ eastaegg.bin: build.inc
updater.bin: build.inc
romfonts.bin: build.inc
hwmon.bin: build.inc
s100mon.bin: build.inc
sz180mon.bin: build.inc
dumps:
for i in $(MOREDIFF) ; do \

View File

@@ -6,7 +6,7 @@ DIST_OBJECTS := \
DUO_std SCZ180_sc126 SCZ180_sc130 SCZ180_sc131 SCZ180_sc140 \
SCZ180_sc503 SCZ180_sc700 S100_std UNA_std Z80RETRO_std \
ZETA_std ZETA2_std HEATH_std EPITX_std GMZ180_std
# RCZ80_mt RCZ80_duart MON_std
# RCZ80_mt RCZ80_duart MON_std N8PC_std
OBJECTS := $(DIST_OBJECTS)
OBJECTS := RCZ80_std
@@ -45,9 +45,9 @@ camel80.bin:
tastybasic.bin:
cp ../TastyBasic/src/$@ .
s100mon.bin:
$(ZXCC) $(CPM)/SLR180 -s100mon/FH
$(ZXCC) $(CPM)/MLOAD25 -s100mon.bin=s100mon
sz180mon.bin:
$(ZXCC) $(CPM)/SLR180 -sz180mon/FH
$(ZXCC) $(CPM)/MLOAD25 -sz180mon.bin=sz180mon
%.build.inc:
echo $@
@@ -117,7 +117,7 @@ DUO_%.osimg1.bin: NETBOOT=netboot-duo.mod
cat camel80.bin $(*F).nascom.bin tastybasic.bin $(*F).game.bin $(*F).eastaegg.bin $(NETBOOT) $(*F).updater.bin $(*F).sysconf.bin $(*F).usrrom.bin >$@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
S100_%.imgpad2.bin: s100mon.bin
S100_%.imgpad2.bin: sz180mon.bin
cp $< $@
srec_cat $@ -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $@ -Binary
@@ -143,4 +143,3 @@ UNA_%.rom: UNA_%.osimg.bin UNA_%.hbios_env.sh
%.upd: %.hbios_rom.bin %.osimg.bin %.osimg1.bin %.imgpad2.bin
cat $(*F).hbios_rom.bin $(*F).osimg.bin $(*F).osimg1.bin $(*F).imgpad2.bin >$@

View File

@@ -56,6 +56,24 @@ ACIA_ACIA .EQU 1
;
ACIA_RTSON .EQU %10111111 ; BIT MASK TO ASSERT RTS
ACIA_RTSOFF .EQU %01000000 ; BIT MASK TO DEASSERT RTS
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE HEADER
;--------------------------------------------------------------------------------------------------
;
ORG_ACIA .EQU $
;
.DW SIZ_ACIA ; MODULE SIZE
.DW ACIA_INITPHASE ; ADR OF INIT PHASE HANDLER
;
ACIA_INITPHASE:
; INIT PHASE HANDLER, A=PHASE
CP HB_PHASE_PREINIT ; PREINIT PHASE?
JP Z,ACIA_PREINIT ; DO PREINIT
CP HB_PHASE_INIT ; INIT PHASE?
JP Z,ACIA_INIT ; DO INIT
RET ; DONE
;
;
;
@@ -743,3 +761,14 @@ ACIA1_CFG:
#ENDIF
;
ACIA_CFGCNT .EQU ($ - ACIA_CFG) / ACIA_CFGSIZ
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE TRAILER
;--------------------------------------------------------------------------------------------------
;
END_ACIA .EQU $
SIZ_ACIA .EQU END_ACIA - ORG_ACIA
;
MEMECHO "ACIA occupies "
MEMECHO SIZ_ACIA
MEMECHO " bytes.\n"

View File

@@ -1554,4 +1554,4 @@ ANSI_DEVNUM .DB $FF ; TERMINAL DEVICE NUMBER
; E Light Cyan
; F Bright White
;=============================================================
;
;

View File

@@ -90,6 +90,23 @@ ASCI1_IVT .EQU IVT(INT_SER1)
;
#ENDIF
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE HEADER
;--------------------------------------------------------------------------------------------------
;
ORG_ASCI .EQU $
;
.DW SIZ_ASCI ; MODULE SIZE
.DW ASCI_INITPHASE ; ADR OF INIT PHASE HANDLER
;
ASCI_INITPHASE:
; INIT PHASE HANDLER, A=PHASE
CP HB_PHASE_PREINIT ; PREINIT PHASE?
JP Z,ASCI_PREINIT ; DO PREINIT
CP HB_PHASE_INIT ; INIT PHASE?
JP Z,ASCI_INIT ; DO INIT
RET ; DONE
;
;
;
ASCI_PREINIT:
@@ -899,3 +916,14 @@ ASCI1_CFG:
#ENDIF
;
ASCI_CFGCNT .EQU ($ - ASCI_CFG) / ASCI_CFGSIZ
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE TRAILER
;--------------------------------------------------------------------------------------------------
;
END_ASCI .EQU $
SIZ_ASCI .EQU END_ASCI - ORG_ASCI
;
MEMECHO "ASCI occupies "
MEMECHO SIZ_ASCI
MEMECHO " bytes.\n"

View File

@@ -45,8 +45,8 @@ AUD_SCALE .EQU 3
; ON ENTRY, DE IS ADDRESS OF NOTE TABLE, HL IS NOTE TO PLAY
; NOTE VALUE 0 MEANS B0b/A0# IN OCTAVE 0 WHICH IS THE FIRST ENTRY
; OF THE NOTE TABLE. THE NOTE TABLE REPRESENTS THE FREQUENCIES
; FOR 1 FULL OCTAVE IN QUARTER NOTES. SINCE THERE ARE 12 NOTES
; IN AN OCTAVE, THE TABLE HAS 48 ENTRIES FOR ALL QUARTER NOTES.
; FOR 1 FULL OCTAVE IN EIGHTH TONES. SINCE THERE ARE 12 HALF TONES
; IN AN OCTAVE, THE TABLE HAS 48 ENTRIES FOR ALL EIGHTH TONES.
;
; ON EXIT, HL CONTAINS THE PERIOD VALUE TO PROGRAM INTO THE PSG
; DERIVED FROM THE NOTE TABLE SCALED TO THE REQUESTED OCTAVE.

View File

@@ -47,6 +47,14 @@ AY_RIN .EQU AY_RSEL
AY_ACR .EQU N8_ACR
DEVECHO "N8"
#ENDIF
#IF (AYMODE == AYMODE_N8PC)
AY_RSEL .EQU $A0
AY_RDAT .EQU $A1
AY_RIN .EQU AY_RSEL
AY_ACR .EQU N8_ACR
DEVECHO "N8PC"
#ENDIF
;
#IF (AYMODE == AYMODE_RCZ80)
AY_RSEL .EQU $D8
@@ -114,6 +122,23 @@ AY_R3CHBP .EQU $03
AY_R7ENAB .EQU $07
AY_R8AVOL .EQU $08
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE HEADER
;--------------------------------------------------------------------------------------------------
;
ORG_AY .EQU $
;
.DW SIZ_AY ; MODULE SIZE
.DW AY_INITPHASE ; ADR OF INIT PHASE HANDLER
;
AY_INITPHASE:
; INIT PHASE HANDLER, A=PHASE
;CP HB_PHASE_PREINIT ; PREINIT PHASE?
;JP Z,AY38910_PREINIT ; DO PREINIT
CP HB_PHASE_INIT ; INIT PHASE?
JP Z,AY38910_INIT ; DO INIT
RET ; DONE
;
;======================================================================
;
; DRIVER FUNCTION TABLE AND INSTANCE DATA
@@ -171,6 +196,10 @@ AY38910_INIT:
PRTS(" MODE=N8$")
#ENDIF
;
#IF (AYMODE == AYMODE_N8PC)
PRTS(" MODE=N8PC$")
#ENDIF
;
#IF (AYMODE == AYMODE_RCZ80)
PRTS(" MODE=RCZ80$")
#ENDIF
@@ -199,7 +228,7 @@ AY38910_INIT:
LD A,AY_RSEL
CALL PRTHEXBYTE
;
#IF ((AYMODE == AYMODE_SCG) | (AYMODE == AYMODE_N8) | (AYMODE == AYMODE_MBC))
#IF ((AYMODE == AYMODE_SCG) | (AYMODE == AYMODE_N8) | (AYMODE == AYMODE_MBC) | (AYMODE == AYMODE_N8PC))
LD A,$FF ; ACTIVATE DEVICE BIT 4 IS AY RESET CONTROL, BIT 3 IS ACTIVE LED
OUT (AY_ACR),A ; SET INIT AUX CONTROL REG
#ENDIF
@@ -556,10 +585,10 @@ AYT_REGWR .DB "\r\nOUT AY-3-8910 $"
#ENDIF
;
;======================================================================
; QUARTER TONE FREQUENCY TABLE
; EIGHTH TONE FREQUENCY TABLE
;======================================================================
;
; THE FOLLOWING TABLE MAPS A FULL OCTAVE OF QUARTER-NOTES
; THE FOLLOWING TABLE MAPS A FULL OCTAVE OF EIGHTH-TONES
; STARTING AT A# IN OCTAVE 0 TO THE CORRESPONDING PERIOD
; VALUE TO USE ON THE PSG TO ACHIEVE THE DESIRED NOTE FREQUENCY.
;
@@ -635,3 +664,14 @@ AY3NOTETBL:
.DW AY_RATIO / 5579 ;
.DW AY_RATIO / 5661 ;
.DW AY_RATIO / 5743 ;
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE TRAILER
;--------------------------------------------------------------------------------------------------
;
END_AY .EQU $
SIZ_AY .EQU END_AY - ORG_AY
;
MEMECHO "AY occupies "
MEMECHO SIZ_AY
MEMECHO " bytes.\n"

View File

@@ -94,6 +94,23 @@ BQRTC_BUFSIZE .EQU 6 ; 6 BYTE BUFFER (YYMMDDHHMMSS)
DEVECHO "BQRTC: IO="
DEVECHO BQRTC_BASE
DEVECHO "\n"
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE HEADER
;--------------------------------------------------------------------------------------------------
;
ORG_BQRTC .EQU $
;
.DW SIZ_BQRTC ; MODULE SIZE
.DW BQRTC_INITPHASE ; ADR OF INIT PHASE HANDLER
;
BQRTC_INITPHASE:
; INIT PHASE HANDLER, A=PHASE
;CP HB_PHASE_PREINIT ; PREINIT PHASE?
;JP Z,BQRTC_PREINIT ; DO PREINIT
CP HB_PHASE_INIT ; INIT PHASE?
JP Z,BQRTC_INIT ; DO INIT
RET ; DONE
; RTC Device Initialization Entry
@@ -395,3 +412,14 @@ BQRTC_BUF_DAY: .DB 0 ; Day
BQRTC_BUF_HOUR: .DB 0 ; Hour
BQRTC_BUF_MIN: .DB 0 ; Minute
BQRTC_BUF_SEC: .DB 0 ; Second
;
;--------------------------------------------------------------------------------------------------
; HBIOS MODULE TRAILER
;--------------------------------------------------------------------------------------------------
;
END_BQRTC .EQU $
SIZ_BQRTC .EQU END_BQRTC - ORG_BQRTC
;
MEMECHO "BQRTC occupies "
MEMECHO SIZ_BQRTC
MEMECHO " bytes.\n"

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_DUO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_DUO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -168,6 +169,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -177,6 +186,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
@@ -222,6 +236,8 @@ SIO0BCLK .SET (7372800/4) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7
SIO0BCFG .SET DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .SET 1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
@@ -231,7 +247,7 @@ CVDUMODE .SET CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_DUO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_DUO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET TRUE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
@@ -239,7 +255,7 @@ VGASIZ .SET V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -282,18 +298,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $88 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $20 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $14 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -327,7 +346,7 @@ PIO0BASE .SET $68 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $6C ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $48 ; LPT 0: REGISTERS BASE ADR
@@ -354,6 +373,10 @@ SYQMODE .SET IMMMODE_SPP ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
@@ -371,10 +394,13 @@ SNMODE .SET SNMODE_DUO ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_DUO ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_DUO ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
SPKPORT .SET RTCIO ; SPK: THE PORT WITH THE SPEAKER IO BIT
SPKSHADOW .SET HB_RTCVAL ; SPK: THE SHADOW VALUE FOR THE PORT THAT HAS TO BE MAINTAINED
SPKMASK .SET %00000100 ; SPK: THE BIT MASK TO ACTUALLY TOGGLE
;
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
DMABASE .SET $40 ; DMA: DMA BASE ADDRESS

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -167,6 +168,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -176,6 +185,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -241,20 +255,22 @@ SIO1BCLK .SET 7372800 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372
SIO1BCFG .SET SER_115200_8N1 ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -297,18 +313,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $4C ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -338,6 +357,10 @@ IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM
;
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -351,7 +374,7 @@ SNMODE .SET SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_EPITX ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_EPITX ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -163,6 +164,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -172,6 +181,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 2 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -237,20 +251,22 @@ SIO1BCLK .SET 7372800 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372
SIO1BCFG .SET SER_115200_8N1 ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -293,18 +309,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_EPITX ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_EPITX ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $40 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 2 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -337,7 +356,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
@@ -364,6 +383,10 @@ SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -377,7 +400,7 @@ SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -167,6 +168,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -176,6 +185,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -246,20 +260,22 @@ SIO1BCLK .SET CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=73728
SIO1BCFG .SET DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -302,18 +318,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -346,7 +365,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
@@ -373,6 +392,10 @@ SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -386,7 +409,7 @@ SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_GMZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_GMZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -162,6 +163,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -171,6 +180,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -236,20 +250,22 @@ SIO1BCLK .SET 7372800 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372
SIO1BCFG .SET SER_115200_8N1 ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -292,18 +308,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_GM ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_GM ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -336,7 +355,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $18 ; LPT 0: REGISTERS BASE ADR
@@ -363,6 +382,10 @@ SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -376,7 +399,7 @@ SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_HEATH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_HEATH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -167,6 +168,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -176,6 +185,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -246,20 +260,22 @@ SIO1BCLK .SET CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=73728
SIO1BCFG .SET DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET TRUE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -302,18 +318,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -336,7 +355,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
@@ -363,6 +382,10 @@ SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -376,7 +399,7 @@ SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET TRUE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_MSX ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_MSX ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
;

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "hbios.inc"
;
PLATFORM .EQU PLT_NONE ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .EQU PLT_NONE ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .EQU CPU_NONE ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .EQU FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .EQU BIOS_NONE ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -206,6 +207,14 @@ DS5RTCENABLE .EQU FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
PCRTCENABLE .EQU FALSE ; PCRTC: DISABLE DS12885 etc. RTC
PCRTC_BASE .EQU $C0 ; Default port for PCRTC, like DSRTC.
;
MMRTCENABLE .EQU FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .EQU FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
DS12RTC_BASE .EQU $70 ; DS12RTC: I/O BASE ADDRESS
;
M6242RTCENABLE .EQU TRUE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
M6242RTC_BASE .EQU $A0 ; M6242RTC: I/O BASE ADDRESS
;
SSERENABLE .EQU FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .EQU SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .EQU $FF ; SSER: STATUS PORT
@@ -215,6 +224,16 @@ SSERIINV .EQU FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .EQU %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .EQU FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .EQU FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
DLPSERCNT .EQU 1 ; DLPSER: NUMBER OF DEVICES TO DETECT (1-2)
DLPSER0STAT .EQU $FF ; DLPSER0: STATUS PORT ADDRESS
DLPSER0DATA .EQU $FF ; DLPSER0: DATA PORT ADDRESS
DLPSER1STAT .EQU $FF ; DLPSER1: STATUS PORT ADDRESS
DLPSER1DATA .EQU $FF ; DLPSER1: DATA PORT ADDRESS
;
TSERENABLE .EQU FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .EQU SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .EQU 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .EQU $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -295,6 +314,28 @@ SIO1BCLK .EQU CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=73728
SIO1BCFG .EQU DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .EQU FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
SCCDEBUG .EQU FALSE ; SCC: ENABLE DEBUG OUTPUT
SCCBOOT .EQU 0 ; SCC: REBOOT ON RCV CHAR (0=DISABLED)
SCCCNT .EQU 2 ; SCC: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
SCCINTS .EQU FALSE ; SCC: INCLUDE SCC INTERRUPT SUPPORT UNDER IM1/2/3
SCC0MODE .EQU SCCMODE_SZ80 ; SCC 0: CHIP TYPE: SCCMODE_[STD|SZ80]
SCC0BASE .EQU $FF ; SCC 0: REGISTERS BASE ADR
SCC0ACLK .EQU 4915200 ; SCC 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SCC0ACFG .EQU DEFSERCFG ; SCC 0A: SERIAL LINE CONFIG
SCC0ACTCC .EQU -1 ; SCC 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SCC0BCLK .EQU 4915200 ; SCC 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SCC0BCFG .EQU DEFSERCFG ; SCC 0B: SERIAL LINE CONFIG
SCC0BCTCC .EQU -1 ; SCC 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SCC1MODE .EQU SCCMODE_SZ80 ; SCC 1: CHIP TYPE: SIOMODE_[STD|SZ80]
SCC1BASE .EQU $FF ; SCC 1: REGISTERS BASE ADR
SCC1ACLK .EQU 4915200 ; SCC 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SCC1ACFG .EQU DEFSERCFG ; SCC 1A: SERIAL LINE CONFIG
SCC1ACTCC .EQU -1 ; SCC 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
SCC1BCLK .EQU 4915200 ; SCC 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
SCC1BCFG .EQU DEFSERCFG ; SCC 1B: SERIAL LINE CONFIG
SCC1BCTCC .EQU -1 ; SCC 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
@@ -306,7 +347,7 @@ GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
GDCMODE .EQU GDCMODE_RPH ; GDC: GDC MODE: GDCMODE_[NONE|ECB|RPH]
GDCMON .EQU GDCMON_EGA ; GDC: GDC MONITOR SETUP: GDCMON_[NONE|CGA|EGA]
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .EQU FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
@@ -314,7 +355,7 @@ VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .EQU FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .EQU FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
XOSENABLE .EQU FALSE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
XOS_BASE .EQU $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
XOSSIZ .EQU V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
@@ -337,6 +378,7 @@ RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
;
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
IDEDETECTMEDIA .EQU FALSE ; IDE: PROBE FOR MEDIA IN MASTER UNIT, IF NOT DETECTED THEN DON'T ENABLE DRIVER
IDETRACE .EQU 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
IDECNT .EQU 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
IDE0MODE .EQU IDEMODE_NONE ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
@@ -361,18 +403,21 @@ IDE2B8BIT .EQU TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .EQU PPIDEMODE_NONE ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .EQU PPIDEMODE_NONE ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .EQU $20 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .EQU FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .EQU PPIDEMODE_NONE ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .EQU $14 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .EQU FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -414,7 +459,7 @@ PIO0BASE .EQU $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .EQU $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .EQU LPTMODE_NONE ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .EQU LPTMODE_NONE ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .EQU 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .EQU 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .EQU $E8 ; LPT 0: REGISTERS BASE ADR
@@ -441,6 +486,22 @@ SYQMODE .EQU IMMMODE_NONE ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .EQU LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .EQU LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .EQU FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
ESPSDTRACE .EQU 1 ; ESPSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
ESPSD_USECD .EQU FALSE ; ESPSD: ENABLE CARD DETECT SIGNAL USAGE
ESPSDCNT .EQU 1 ; ESPSD: NUMBER OF BOARDS TO DETECT (1-2), 1-2 DEVICES PER BOARD
ESPSD0BASE .EQU $80 ; ESPSD 0: ESP32 INTERFACE IO BASE ADR
ESPSD0DUAL .EQU TRUE ; ESPSD 0: DUAL INTERFACE BOARD (DUAL SD)
ESPSD1BASE .EQU $82 ; ESPSD 1: ESP32 INTERFACE IO BASE ADR
ESPSD1DUAL .EQU TRUE ; ESPSD 1: DUAL INTERFACE BOARD (DUAL SD)
;
SCSIENABLE .EQU FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
SCSITRACE .EQU 1 ; SCSI: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
SCSICNT .EQU 2 ; SCSI: NUMBER OF TARGET DEVICES (1-2)
SCSI_TID .EQU 0 ; SCSI: TARGET DEVICE ID (0-6)
SCSI0_LUN .EQU 0 ; SCSI 0: TARGET LUN
SCSI1_LUN .EQU 1 ; SCSI 1: TARGET LUN
;
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .EQU $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
@@ -459,10 +520,13 @@ SNMODE .EQU SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .EQU FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .EQU 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .EQU AYMODE_NONE ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .EQU FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
SPKPORT .EQU RTCIO ; SPK: THE PORT WITH THE SPEAKER IO BIT
SPKSHADOW .EQU HB_RTCVAL ; SPK: THE SHADOW VALUE FOR THE PORT THAT HAS TO BE MAINTAINED
SPKMASK .EQU %00000100 ; SPK: THE BIT MASK TO ACTUALLY TOGGLE
;
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
@@ -500,3 +564,13 @@ EZ80_WSMD_TYP .EQU EZ80WSMD_CALC ; BUS WAIT STATE CONFIG: EZ80WSMD_[CALC|CYCLES]
EZ80_FLSH_WS .EQU 1 ; WAIT STATES FOR ON CHIP FLASH (0-7)
EZ80_FLSH_MIN_NS .EQU 60 ; MINIMUM WAIT STATES TO APPLY TO ON-CHIP FLASH, IF EZ80_WSMD_TYP = EZ80WSMD_CALC
EZ80_FWSMD_TYP .EQU EZ80WSMD_CALC ; WAIT STATE TYPE: EZ80RMMD_[CALC|WAIT] (CYCLES NOT ALLOWED)
CHNATIVEENABLE .EQU FALSE ; CH376: ENABLE CH376 NATIVE USB DRIVER
CHSCSIENABLE .EQU FALSE ; CH376: ENABLE CH376 NATIVE MASS STORAGE DEVICES (REQUIRES CHNATIVEENABLE)
CHUFIENABLE .EQU FALSE ; CH376: ENABLE CH376 NATIVE UFI FLOPPY DISK DEVICES (REQUIRES CHNATIVEENABLE)
CHNATIVEFORCE .EQU FALSE ; CH376: DISABLE AUTO-DETECTION OF MODULE - ASSUME ITS INSTALLED (REQUIRES CHNATIVEENABLE)
CHNATIVEEZ80 .EQU FALSE ; CH376: DELEGATE USB DRIVERS TO EZ80'S FIRMWARE
_CH376_DATA_PORT .EQU $FF88 ; CH376: DATA PORT
_CH376_COMMAND_PORT .EQU $FF89 ; CH376: COMMAND PORT
_USB_MODULE_LEDS .EQU $FF8A ; CH376: LED CONTROL PORT

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -161,6 +162,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -170,6 +179,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
@@ -215,6 +229,8 @@ SIO0BCLK .SET (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7
SIO0BCFG .SET DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
@@ -224,7 +240,7 @@ CVDUMODE .SET CVDUMODE_MBC ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET TRUE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
@@ -232,7 +248,7 @@ VGASIZ .SET V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -276,18 +292,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $60 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $20 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $14 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -315,7 +334,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_SPP ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $E8 ; LPT 0: REGISTERS BASE ADR
@@ -342,6 +361,10 @@ SYQMODE .SET IMMMODE_SPP ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
@@ -359,9 +382,12 @@ SNMODE .SET SNMODE_NONE ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_MBC ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
;
SPKENABLE .SET TRUE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
SPKPORT .SET RTCIO ; SPK: THE PORT WITH THE SPEAKER IO BIT
SPKSHADOW .SET HB_RTCVAL ; SPK: THE SHADOW VALUE FOR THE PORT THAT HAS TO BE MAINTAINED
SPKMASK .SET %00000100 ; SPK: THE BIT MASK TO ACTUALLY TOGGLE
;
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
DMABASE .SET $E0 ; DMA: DMA BASE ADDRESS

View File

@@ -49,8 +49,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -167,6 +168,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -176,6 +185,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
;
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
@@ -226,6 +240,8 @@ SIO0BCLK .SET (4915200/8) ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7
SIO0BCFG .SET DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
@@ -235,7 +251,7 @@ CVDUMODE .SET CVDUMODE_ECB ; CVDU: CVDU MODE: CVDUMODE_[NONE|ECB|MBC]
CVDUMON .SET CVDUMON_EGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
@@ -243,7 +259,7 @@ VGASIZ .SET V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -287,18 +303,21 @@ IDE2B8BIT .SET FALSE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 2 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $14 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $20 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -335,6 +354,10 @@ IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM
;
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO4BASE .SET $90 ; PIO: PIO REGISTERS BASE ADR FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
@@ -353,7 +376,7 @@ SNMODE .SET SNMODE_VGM ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_SCG ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

View File

@@ -51,8 +51,9 @@
;
#INCLUDE "cfg_MASTER.asm"
;
PLATFORM .SET PLT_MON ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
PLATFORM .SET PLT_MON ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RC2014|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|SZ180|DUO|HEATH|EPITX|MON|STDZ180|NABU|SZ80|N8PC]
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
NMOSCPU .SET FALSE ; NMOS CPU (ENABLES INT STATUS BUG WORKAROUND)
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
@@ -164,6 +165,14 @@ DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
;
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
;
PCRTCENABLE .SET FALSE ; PCRTC: DISABLE DS12885 etc. RTC
;
MMRTCENABLE .SET FALSE ; MMRTC: ENABLE NS MM58167B RTC DRIVER (MMRTC.ASM)
;
DS12RTCENABLE .SET FALSE ; DS12RTC: ENABLE DS1288X RTC DRIVER (DS12RTC.ASM)
;
M6242RTCENABLE .SET FALSE ; M6242RTC: ENABLE M6242 CLOCK DRIVER (M6242.ASM)
;
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
SSERSTATUS .SET $FF ; SSER: STATUS PORT
@@ -173,6 +182,11 @@ SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
;
DLPSERENABLE .SET FALSE ; DLPSER: ENABLE DLP-USB SERIAL DRIVER (DLPSER.ASM)
;
TSERENABLE .SET FALSE ; TSER: ENABLE T35 SERIAL DRIVER (TSER.ASM)
TSERCFG .SET SER_9600_8N1 ; TSER: SERIAL LINE CONFIG
;
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
@@ -243,20 +257,22 @@ SIO1BCLK .SET CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=73728
SIO1BCFG .SET DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
;
SCCENABLE .SET FALSE ; SCC: ENABLE ZILOG SCC SERIAL DRIVER (SCC.ASM)
;
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
;
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU|N8PC]
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
TVGAENABLE .SET FALSE ; TVGA: ENABLE TRION VGA VIDEO DRIVER (TVGA.ASM)
;
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
MDROM .SET TRUE ; MD: ENABLE ROM DISK
@@ -299,18 +315,21 @@ IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
PPIDE0MODE .SET PPIDEMODE_STD ; PPIDE 0: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE1MODE .SET PPIDEMODE_STD ; PPIDE 1: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2MODE .SET PPIDEMODE_STD ; PPIDE 2: DRIVER MODE: IDEMODE_[STD|S100A|S100B]
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
PPIDE2B8BIT .SET FALSE ; PPIDE 2B (SLAVE): 8 BIT XFER
;
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
SDMODE .SET SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|T35|GM|EZ512|K80W]
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
SDCNT .SET 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
@@ -343,7 +362,7 @@ PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
;
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014|T35]
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
@@ -370,6 +389,10 @@ SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
;
ESPSDENABLE .SET FALSE ; ESPSD: ENABLE S100 ESP32 SD DISK DRIVER (ESPSD.ASM)
;
SCSIENABLE .SET FALSE ; SCSI: ENABLE 3580-BASED SCSI INTERFACE (SCSI.ASM)
;
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
@@ -383,7 +406,7 @@ SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
;
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU|N8PC]
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
;
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)

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