Compare commits

...

226 Commits

Author SHA1 Message Date
Wayne Warthen
7e4c4d35e4 Merge pull request #422 from wwarthen/work
Config File Cleanup
2024-09-08 14:19:21 -07:00
Wayne Warthen
78917e78be Cleanup
- Update include file nesting comments
- Bump version number
2024-09-08 13:59:56 -07:00
Wayne Warthen
69e152c4fb Config Files Cleanup 2024-09-08 13:30:32 -07:00
Wayne Warthen
a14e64fced Update and rename cfg_SBC.asm to cfg_sbc.asm 2024-09-08 12:35:07 -07:00
Wayne Warthen
e3195669fc Update and rename cfg_sbc.asm to cfg_SBC.asm 2024-09-08 12:33:02 -07:00
Wayne Warthen
85834559d1 Cleanup (Cosmetic) 2024-09-07 19:47:46 -07:00
Wayne Warthen
1c66ec3ba4 Configuration File Improvements
- Modified configuration files so that all configurations now inherit from the Master Config file.
2024-09-07 18:02:45 -07:00
Wayne Warthen
99f8d0b3a6 Minor Cosmetic Improvements 2024-09-07 14:26:40 -07:00
Wayne Warthen
23160e3961 Merge pull request #421 from kiwisincebirth/map/userguide-fat
User Guide FAT
2024-09-07 11:20:26 -07:00
Mark Pruden
2c985070e8 Merge commit 'e1beb01a5181939abb0da8253b095e24f596c214' into map/userguide-fat 2024-09-07 16:44:27 +10:00
Mark Pruden
a14a2e6128 Binary Changes 2024-09-07 16:42:12 +10:00
Mark Pruden
c093cd2322 Merged FAT section into Transferring Files 2024-09-07 16:41:56 +10:00
Mark Pruden
a93bfb1e77 Misc Improvements to User Guide 2024-09-07 16:41:31 +10:00
Wayne Warthen
e1beb01a51 Update Configs to Handle GM3707 Enable
- The non-Genesis config files needed to be updated to disable the GM3707.
2024-09-06 18:12:46 -07:00
Wayne Warthen
d20c72fe21 Bump Version Number 2024-09-06 17:55:31 -07:00
Wayne Warthen
8d91176230 Cosmetic Updates 2024-09-06 17:54:02 -07:00
Wayne Warthen
1945826414 Merge pull request #420 from drj113/master
GM7303 LCD Keypad support
2024-09-06 17:43:34 -07:00
drj113
61d08e9f71 GM7303 LCD Keypad support
Changes to support a modified Prolog Keypad and LCD driver card - Heavily inspired by the lcd.asm module, but separated out to allow for future keyboard support.
2024-09-07 10:18:07 +10:00
Wayne Warthen
e212054774 Fix Missing Video Device String 2024-09-06 17:00:21 -07:00
Wayne Warthen
90a4d090f9 Minor Doc Updates 2024-09-05 14:14:33 -07:00
Wayne Warthen
d78127ca0f Merge pull request #418 from kiwisincebirth/map/doc-user-diskmanage
Doc Improvement - User Guide - Disk Management
2024-09-05 13:12:58 -07:00
Mark Pruden
fccd37f8dd Merge commit '6e8bdb141de0b906ce20cb00821db6cbbdfe0bf9' into map/doc-user-diskmanage
# Conflicts:
#	Doc/ChangeLog.txt
#	Doc/RomWBW Applications.pdf
#	Doc/RomWBW Disk Catalog.pdf
#	Doc/RomWBW Errata.pdf
#	Doc/RomWBW System Guide.pdf
#	Doc/RomWBW User Guide.pdf
2024-09-05 18:41:32 +10:00
Mark Pruden
08d88a98da Fix for LCD Display of CPU Type 2024-09-05 18:32:36 +10:00
Wayne Warthen
6e8bdb141d Finalize S100 FPGA Z80 Onboard VGA/PS2 Support
- RomWBW will now "follow" the S100 monitors console selection for all 3 possibilities (USB Serial, Propeller Console, and Onboard VGA/PS2).
2024-09-04 17:15:23 -07:00
Wayne Warthen
d152cab8c8 Update Doc 2024-09-04 12:22:58 -07:00
Wayne Warthen
3dd394e3c9 Update GMZ180_std.asm
- Minor filename case issue caused some build scenarios to fail.
2024-09-04 11:40:36 -07:00
Wayne Warthen
2fd65ab4b0 Miscellaneous
- Cosmetic updates
- Fix fv.asm keyboard status function
- Bump version number
2024-09-04 11:25:41 -07:00
Wayne Warthen
14dd7bf290 Merge pull request #416 from drj113/master
Genesis Modules initial commit
2024-09-04 10:46:25 -07:00
drj113
673f4358b2 Rectified GM configuration to support current hbios.asm
Re-added commented out code in the various disk drivers now that I am using the correct hbios.asm file
2024-09-04 11:16:45 +10:00
drj113
34e472a553 Initial Commit for Genesis Modules boards
Supports GM STD Z180 and GM IDE Disk Controller
2024-09-04 10:13:05 +10:00
Wayne Warthen
e07c38dc1a Doc Fixes per HubertH
See Issue #415.  This commit is intended to clarify the documentation with respect to this issue.  Thanks and credit to HubertH.
2024-09-03 15:04:50 -07:00
Wayne Warthen
9e6780a248 Add FPGA Z80 Onboard VGA/PS2 Support 2024-09-03 12:05:34 -07:00
Wayne Warthen
d80c44045f Merge pull request #414 from kiwisincebirth/map/fix-lcd-cpu 2024-08-30 08:11:04 -07:00
Mark Pruden
b7352da5c1 Fix for LCD Display of CPU Type 2024-08-30 13:33:44 +10:00
Wayne Warthen
2b6fbe7c58 HD44780 LCD Support 2024-08-27 15:34:44 -07:00
Wayne Warthen
e3173ff802 Regen PDF Docs 2024-08-26 13:11:13 -07:00
Wayne Warthen
8aebf93fdf Merge pull request #411 from kiwisincebirth/map/clock-userguide
Realtime Clock User Guide
2024-08-26 13:01:02 -07:00
Mark Pruden
51676238c7 Merge remote-tracking branch 'origin/master' into map/clock-userguide
# Conflicts:
#	Doc/ChangeLog.txt
2024-08-26 18:58:45 +10:00
Mark Pruden
983c0ff52b Improved section Real Time Clock in User Guide document 2024-08-26 18:37:09 +10:00
Mark Pruden
764abddb49 Improved section Reat Time Clock in User Guide document 2024-08-26 18:22:30 +10:00
Wayne Warthen
df0562bba8 Bump Build Version Number 2024-08-23 09:49:48 -07:00
Wayne Warthen
eaf0431b20 Merge pull request #409 from lesbird/master
Adding in Heathkit H8 support
2024-08-23 09:33:25 -07:00
Les Bird
6394605a20 Some minor formatting changes for Heathkit related HBIOS code. Add a script to build a CF image with MSX ROMs which includes CPM22,ZSDOS and CPM3 2024-08-22 09:48:44 -06:00
Les Bird
17f1d1cb99 Merge branch 'master' of https://github.com/lesbird/RomWBW 2024-08-21 15:08:46 -06:00
Les Bird
03e34a54d4 Add Heathkit H8 support. Front panel generates interrupts at 500Hz to update the LEDs and read the front panel keypad. 2024-08-21 15:04:17 -06:00
Wayne Warthen
797ee4d1a4 Update Makefile
- Missed a file.
2024-08-21 13:17:37 -07:00
Wayne Warthen
f775a07365 Add MSXROMs
- Les Bird has given permission to include his extensive library of MSX ROM images.  Please see https://github.com/lesbird/MSX8 for more information.
- Appropriate MSX8 ROM player and hardware required to use these.
- Provided as supplemental RomWBW disk image slices (msxroms1.img, msxroms2.img).

Co-Authored-By: Les Bird <lesbird65@gmail.com>
2024-08-21 12:18:58 -07:00
Wayne Warthen
e6117e9639 Refactor Build Post-processing
- Post-processing of disk-hosted ROMs such as FZ80 and ZRC has been modified to handle custom user configurations.
- Standardized all distribution ROM names to end in _std.
2024-08-19 14:53:11 -07:00
Wayne Warthen
9df87738ad Fix FZ80 Makefile (Issue #407)
- FZ80 Makefile failed to handle individual ROM build scenario.  Credit and thanks to Mark Pruden for this.
- Updated SIMH emulator to v4.1
2024-08-18 19:31:06 -07:00
Wayne Warthen
ebfb5b3fed Bump Version Number 2024-08-18 12:43:22 -07:00
Wayne Warthen
f125efcca3 Customize NZ-COM Disk Image
- Substantial customization of NZ-COM Disk Image
2024-08-18 11:33:10 -07:00
Wayne Warthen
317ba99b37 Update ReadMe.txt
Windows marks files downloaded from the Internet and may prompt you during the RomWBW build process with repeated security warnings.  Added instructions for "unblocking" distribution files when using the Windows build.  Credit and Thanks to Derek for this tip.

Co-Authored-By: Extreme Electronics <102665314+extremeelectronics@users.noreply.github.com>
2024-08-17 13:57:36 -07:00
Wayne Warthen
add41fdb69 SD Driver Bug Fix
- Fixes a stupid bug I introduced in the previous change to sd.asm.  SD Card initialization could hang in previous release.
2024-08-16 18:13:22 -07:00
Wayne Warthen
457aa44832 SD Card Compatibility Improvement
- Modified SD driver to keep SD card clock consistently fast after card init.  This only seemed to effect a Lexar 32GB uSD Card on CSIO interface.  Thanks and credit to Richard Deane for reporting this.
- Improved hard disk layout documentation.
2024-08-16 14:06:36 -07:00
Wayne Warthen
7e2b2b8f40 Implement SIOINTS Setting in SIO Driver
- SIOINTS allows disabling use of interrupts in the SIO driver when interrupts are enabled globally.  It will not allow you to enable SIO interrupts if interrupts are globally disabled (INTMODE 0).
2024-08-04 13:39:44 -07:00
Wayne Warthen
e68cbded97 SD Card Speed Improvement for FZ80
- Removed wait routines for FZ80 in SD driver.  Latest FPGA code does not require them.
- Minor improvements to disk layout documentation.
2024-08-04 12:12:16 -07:00
Wayne Warthen
cd70a62d67 Documentation Updates
- Minor improvements to hard disk documentation in System Guide.
2024-08-01 11:40:23 -07:00
Wayne Warthen
307b8bb11b Add Tick Counter Size
- Documents the date field size of the tick counter.
2024-07-31 14:53:58 -07:00
Wayne Warthen
fd59d2e4f8 Add UMAP
- UMAP application has been added to the ZPM3 and NZCOM disk images.
2024-07-30 11:06:25 -07:00
Wayne Warthen
e021735876 More Enhancements to Startup Command Documentation 2024-07-28 13:31:06 -07:00
Wayne Warthen
91debe53c4 Improve Startup Commands Documentation 2024-07-28 12:08:35 -07:00
Wayne Warthen
8e0af1720a Application Boot Tweaks
- Reduces failure scenarios with application boot
- Catches and diagnoses common bank mismatch which application boot cannot handle
2024-07-27 15:17:58 -07:00
Wayne Warthen
83d26a4faf - Improve PPIDE Device Detection
- Some PPI chips were falsely detecting the presence of an IDE device.  Added code to preset PPI register with a value that avoids false positives.
2024-07-26 09:38:24 -07:00
Wayne Warthen
c2f7a75cdd Add hour/minute/second display to TIMER app (MartinR)
Co-Authored-By: MartinR <174514335+MartinR-UK@users.noreply.github.com>
2024-07-24 11:24:41 -07:00
Wayne Warthen
888706149d Improve Application Start Mode
- If the new AUX bank happens to be the same as the old HBIOS bank, an application start would fail.  Relocated the copy to avoid this.
2024-07-22 16:40:53 -07:00
Wayne Warthen
a078820745 Fix Duodyne MMU Regression 2024-07-21 16:40:59 -07:00
Wayne Warthen
21df9d8797 Missing Files 2024-07-20 17:27:59 -07:00
Wayne Warthen
cd23863226 Refactor UART Mode Settings
- Replaced hard-coded mode settings with per-chip configuration settings.
2024-07-20 15:20:05 -07:00
Wayne Warthen
3999039102 Support for Les Bird's Dual 16C550 UART Module 2024-07-19 17:31:53 -07:00
Wayne Warthen
df2ab201a2 TMS Driver Cleanup 2024-07-17 18:45:52 -07:00
Wayne Warthen
cdc2b3964d Remove Short IDE/PPIDE Timeout, Issue #397
The Microdrives behave slightly differently than either normal spinning drives or CF Cards.  This update removes the "short" timeout that is used in the IDE/PPIDE drivers which caused timeout issues for the Microdrives.

The short timeout was originally used to workaround excessive wait/stall during boot of some media.  I don't think it is necessary any more because of additional intelligence in the initialization routines.
2024-07-15 14:49:52 -07:00
Wayne Warthen
21b2eee7ab Add Beep Function to Sound Driver Interface, Issue #402 2024-07-15 12:49:27 -07:00
Wayne Warthen
b80d395266 Update for Les Bird's Graphics/Sound/Joystick Module
- Unique I/O configuration for Les Bird's Graphics/Sound/Joystick Module has been removed because the module now conforms to generic MSX port conventions.
2024-07-11 14:11:51 -07:00
Wayne Warthen
fff0959f96 Added Support for Les Bird's RCBus Graphics/Sound/Joystick Module 2024-07-08 16:51:53 -07:00
Wayne Warthen
b781f16add Missing Files from Prior Commit 2024-07-08 10:57:14 -07:00
Wayne Warthen
273e61bc94 Support for DS1305 RTC on S100 FPGA Z80 2024-07-08 10:45:19 -07:00
Wayne Warthen
e1e485501c Applications Document Overhaul by MartinR
- ROM Applications document has been consolidated into the Applications document
- Martin has done a significant overhaul of the Applications document

Co-Authored-By: MartinR <174514335+martinr-uk@users.noreply.github.com>
2024-07-04 08:10:00 -07:00
Wayne Warthen
48ab169c60 S100 FPGA Z80 SD Card Support WIP
- Not yet working
2024-07-03 10:39:19 -07:00
Wayne Warthen
0f4d16400f S100 FPGA Z80 Cleanup
- Restore 16-bit I/O in S100 Console driver
- Boot to Console or USB Serial depending on IO Switch
2024-07-01 16:48:58 -07:00
Wayne Warthen
329a0f4d7f Fix gitignore 2024-06-30 20:03:01 -07:00
Wayne Warthen
058a67dd40 Preliminary Support for S100 FPGA Z80 Platform
- S100 FPGA Z80 Platform
- Simple Serial Driver
2024-06-30 19:32:17 -07:00
Wayne Warthen
40f2a9f35a Enhanced TIMER App from MartinR
- MartinR has enhanced the TIMER application to display output in decimal.
2024-06-30 11:53:38 -07:00
Wayne Warthen
3eea703d02 Miscellaneous
- Support RCBus PS/2 Keyboard (EtchedPixels & Sally)
- Added AT-3-8910 register spreadsheet (Martin R)
- Improved FD hardware detection to eliminate a false positive
- Reorder Boot Loader menu (Martin R)
- Minor enhancement to new usrrom.asm (Martin R)
2024-06-17 11:53:40 -07:00
Wayne Warthen
74daa4d3c5 New usrrom.asm from MartinR
- MartinR has contributed a new usrrom.asm that prints a nice RomWBW logo and does a better job with the messages.
2024-05-31 11:08:42 -07:00
Wayne Warthen
0539b25046 Updated FLASH to v1.3.9
- Will Sowerbutts provided an updated flash4 v1.3.9
- Modified HBIOS to be more proactive about disabling interrupts on systems with interrupts disabled to avoid issues with applications that turn them on.
- Updated NABU default configuration to run under interrupt mode 2.

Co-Authored-By: Will Sowerbutts <will@sowerbutts.com>
2024-05-31 08:56:02 -07:00
Wayne Warthen
a7e767d0b7 Upgrade BBCBASIC to v5 2024-05-30 14:30:27 -07:00
Wayne Warthen
78a765147e NABU Keyboard Typeahead
- Implemented a 16 character typeahead buffer for interrupt-enabled builds of NABU.
2024-05-25 16:16:14 -07:00
Wayne Warthen
1cb5f0b3b4 NABU Code Cleanup 2024-05-23 11:00:51 -07:00
Wayne Warthen
a34afaa11e Add p-System Keyboard Usage to User Guide 2024-05-17 15:25:29 -07:00
Wayne Warthen
e8d79bdf0a Modify XModem Updater for Z280 Compatibility
- Changed bank select vector to the well-known entry point in HBIOS proxy.
2024-05-17 11:27:53 -07:00
Wayne Warthen
e5232c6696 Cleanup
- Add Z280 interrupt mode 3 to INTTEST app
- Make application boot handle restart by using HBIOS restart in place
- Resolve multiple issues with HBIOS restart in place
2024-05-16 19:50:37 -07:00
Wayne Warthen
70fcb2cbee Enable Interrupt Driven RTC for NABU 2024-05-14 10:35:20 -07:00
Wayne Warthen
dab2408166 Fix RAM Disk Formatting w/ TMS System Timer
- The RAM Disk formatting function was writing to the screen inside of DI/EI bracketed code (not good).  This is now corrected.
2024-05-13 19:27:39 -07:00
Wayne Warthen
d02c734478 Update std.asm
- Correct comments
2024-05-13 17:49:48 -07:00
Wayne Warthen
c4cc800040 Add ZEXALL and ZEXDOC 2024-05-13 17:49:08 -07:00
Wayne Warthen
f82b4c9bc7 Follow-up for Mark Pruden's Changes
- Remove duplicate Cowgol Language document
- Regen PDF documents from source
2024-05-13 11:10:02 -07:00
Wayne Warthen
1db620d2d7 Merge pull request #396 from kiwisincebirth/doc_folder
Moved Documentation into Doc/CPM folder
2024-05-13 10:45:17 -07:00
Mark Pruden
3b2c5b57ad Correction 2024-05-12 21:27:40 +10:00
Mark Pruden
69ab236d53 Moved Documentation into Doc/Language folder 2024-05-11 18:47:47 +10:00
Mark Pruden
e7ed6ed27c Moved Documentation into Doc/CPM folder 2024-05-11 18:08:57 +10:00
Wayne Warthen
5ea5003d01 Revise Z80 Tests to Improve Interrupt Management
- Moved the saving/restoring of the interrupt state to bracket each individual test instead of the entire application.
- Removed the IM n test because there is no way to save/restore it.
2024-05-10 19:30:42 -07:00
Wayne Warthen
7c41ef6fc9 Implement System Timer for NABU 2024-05-10 15:44:51 -07:00
Wayne Warthen
7497e233d2 Fix NABU Config
- CRTACT was not being set correctly.
2024-05-10 14:24:12 -07:00
Wayne Warthen
157af16d32 More NABU Stuff
- Add a hack to TUNE application to avoid corrupting PSG R7 which is used by and critical to NABU.
- NABU default baud rate to 38400 to get file transfers working without flow control.
- NABU default to console on video instead of UART.
2024-05-10 14:09:43 -07:00
Wayne Warthen
e0414bca05 NABU Stuff
- Implement Interrupt Mode 2 (Mode 1 is still default)
- Implement interrupt driven keyboard support
- Improve UART keyboard driver to support interrupt driven flow control
2024-05-10 11:13:34 -07:00
Wayne Warthen
2a6a3f36c2 Update nabu.asm
Ongoing work on NABU interrupt processing.

Co-Authored-By: Les Bird <lesbird65@gmail.com>
2024-05-06 18:57:14 -07:00
Wayne Warthen
337374c9e9 More HBIOS Cleaning, FLASH & FAT App Updates
- Additional HBIOS reorganization - no functional changes (in theory)
- Upgrade to v1.3.8 of FLASH4 from Will Sowerbutts
- Upgrade to FAT v1.1 based on input from Peter (@z80micro-mc)

Co-Authored-By: Will Sowerbutts <will@sowerbutts.com>
2024-05-06 14:53:58 -07:00
Wayne Warthen
4946b313e1 Update nabu.asm
- Fix R16 register addressing
2024-05-06 13:10:44 -07:00
Wayne Warthen
a6505fbbb1 Update ay38910.asm
- Exception for NABU in PSG initialization
2024-05-06 11:24:38 -07:00
Wayne Warthen
dd93a178fa Update nabu.asm
- Initialize PSG I/O ports for NABU
2024-05-06 11:15:45 -07:00
Wayne Warthen
a4fdebea2b Update CLRDIR
Update CLRDIR with minor update from the author Max Scane to emphasize the need to type a capital Y to proceed.  Thanks and credit to Max Scane for this application.

Adds CLRDIR to the Applications document.
2024-05-03 09:21:20 -07:00
Wayne Warthen
3f63c92fd5 HBIOS Cleaning
- Rearranged HBIOS code to improve colocation of related code.
- Implemented macros to improve control over assembly diagnostic output.
- Improved handling of diagnostic LEDs.
- Improved application boot bank management.
- Implemented application boot for Z280 systems.
- Moved Z280_BNKSEL into proxy.
-
2024-04-30 14:18:59 -07:00
Wayne Warthen
c8794d2b9c NABU LEDs
- Utilize NABU front panel LEDs for startup diagnostics and disk activity.
- Modified NABU keyboard driver to pass thru joystick activity codes.
2024-04-19 16:49:12 -07:00
Wayne Warthen
bf2d0b8196 Update NABU Keyboard Driver
- Translate NABU special keys to standard RomWBW values to allow things like arrow keys to emit proper escape sequences within ANSI emulation.
- Add a simple, single byte buffer to avoid keyboard status returning a key is ready when it is only a special character that has no translation.
2024-04-18 15:58:01 -07:00
Wayne Warthen
e41cd6d8d2 Support 40 and 80 Column Video for NABU
- 40 column mode will work with original TMS9918 video chip
- 80 column mode requires FPGA TMS video chip replacement
2024-04-17 17:02:41 -07:00
Wayne Warthen
47120dcf8c Doc Updates
- Various edits to address feedback from Andrew Kendall.
2024-04-17 14:47:55 -07:00
Wayne Warthen
67d23dc540 Tweaks to NABU Support
- Include NABU in pre-built ROMs
- AY sound driver works (but poorly)
2024-04-16 17:03:30 -07:00
Wayne Warthen
99d5c50556 Merge pull request #393 from lesbird/master
NABU Personal Computer integration - nabu.asm and nabukb.asm contain …
2024-04-16 10:59:29 -07:00
Les Bird
438df9a80b NABU Personal Computer integration - nabu.asm and nabukb.asm contain code to support the NABU hardware. 2024-04-15 20:21:09 -06:00
Wayne Warthen
8c4a3d2b3d Final Video Hardware Reset Changes
- Modified TMS driver to always imbed an uncompressed font.  This is because I have found no reasonable way to decompress a font while an OS is still active without mangling some of the OSes RAM.
2024-04-12 17:04:36 -07:00
Wayne Warthen
585c892a54 Add Genesis Platform ID (STDZ180) 2024-04-07 18:56:39 -07:00
Wayne Warthen
49025dca44 Cleanup
- Documentation update
- Fixed minor screen anomaly related to new video reset handling
2024-04-03 18:47:02 -07:00
Wayne Warthen
2d8c37307d Improve Video Hardware Reset
- This change avoids clearing the screen every time an OS reset occurs.  A non-destructive VDC reset is now performed that leaves the screen contents and cursor position unchanged.
- If an application overwrites the video RAM, then the screen may contain garbage upon return to OS.  However, the console will still be functional and the user can just press enter a few times to clear the screen.
2024-04-03 15:53:24 -07:00
Wayne Warthen
d294fb6d09 Reset Video Hardware on OS Reset
- When an OS performs a reset operation, the HBIOS hook has been extended to automatically reset the video hardware of the CRT device (if it exists).
- This should go a long way toward fixing corrupt video after an application is run that reprograms the video hardware.
- An OS reset may or may not be performed when an application exits depending on the behavior of the application.  So, if an application exits without initiating a reset, then the video will not be reset.  Most applications that muck with the video chip directly will perform the reset at exit, so this is not normally an issue.
- If the OS encounters an error (such as drive not ready when doing a DIR), the error message may be erased by this new behavior depending on the specific scenario.
2024-04-03 11:52:18 -07:00
Wayne Warthen
1649b6093b Improve TMS Reset 2024-04-02 19:05:05 -07:00
Wayne Warthen
d50593a70e Improve TMS Reset & SN76489 Early Init
- The TMS reset function was missing a call to re-initialize the CRT registers.  This has been added.
- The SN76489 powers up in a dreadful state where it is emitting loud noise until initialized.  Added a PREINIT entry point to initialize the registers earlier.  Still not great, but a lot better.
2024-04-01 13:36:59 -07:00
Wayne Warthen
874cc450ba Add K80W RTC Support 2024-03-25 17:02:18 -07:00
Wayne Warthen
918ed66967 Merge pull request #392 from b1ackmai1er/master
Recovery button support for Duo
2024-03-24 19:15:19 -07:00
b1ackmai1er
7fe0312359 Align assembly outout with data structure 2024-03-24 17:53:42 +08:00
b1ackmai1er
842a79ae5d Correct the logical sequence of the Duo Dual UART ports
Make the first UART port detected be Channel A $78-$7F : CHSEL=1. ( logic 0 on the CHSEL selects the UART channel B while a logic 1 selects UART channel A. )
2024-03-24 15:36:32 +08:00
b1ackmai1er
34d25cb906 Recovery button support for Duo 2024-03-24 12:19:58 +08:00
Wayne Warthen
b8af62d7de Merge pull request #391 from b1ackmai1er/master
Typos
2024-03-23 10:56:19 -07:00
b1ackmai1er
b28c3b7978 Typos 2024-03-23 16:15:45 +08:00
b1ackmai1er
bf9a8400de Merge pull request #63 from wwarthen/master
Resync
2024-03-22 19:38:39 +08:00
Wayne Warthen
c3c541d150 Duodyne Voice I/O Support
- Adds support for SN76489 on Voice I/O Board
- Updated SOUND.COM utility
2024-03-21 16:51:53 -07:00
Wayne Warthen
cecd13fba9 Add Cowgol Language Document
Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2024-03-09 15:28:24 -08:00
Wayne Warthen
7ce7bda43e Cowgol Optimization
Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2024-03-06 16:09:11 -08:00
Wayne Warthen
bb5161dcb0 Cowgol Update
- Updated COWFIX on Cowgol disk image
- Add Cowgol language manual

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2024-03-03 14:43:26 -08:00
Wayne Warthen
285853e65d Correct ReadMe.txt in Binary Directory
Correct obsolete reference to DiskList.txt in the ReadMe.txt file in the Binary Directory.

Thanks and credit to @shawnshekari (issue #390) for reporting this.
2024-02-28 12:32:11 -08:00
Wayne Warthen
ab1e9ccab8 Bump Version Number 2024-02-25 12:07:17 -08:00
Wayne Warthen
33cbdd2040 Cowgol Improvements
- Replaced COWFIX.COM with updated version
- Added Adventure game source to disk image

Credit and thanks to Ladislau Szilagyi.

Co-Authored-By: ladislau szilagyi <87603175+Laci1953@users.noreply.github.com>
2024-02-25 11:48:35 -08:00
Wayne Warthen
792e76b069 Duodyne PS/2 Keyboard
- Enable PS/2 keyboard input for Duodyne Media I/O board video terminal.
- Minor cleanup in TUNE to properly handle Duodyne ACR values.
2024-02-23 14:43:50 -08:00
Wayne Warthen
d572a7ca32 Update Build Version 2024-02-16 09:04:40 -08:00
Wayne Warthen
c4f78bb3ae Update Fuzix Section of User Guide 2024-02-16 09:03:28 -08:00
Wayne Warthen
77ba29c73f Fix Missing Help Files 2024-02-14 14:43:27 -08:00
Wayne Warthen
1a24fcb61b Update NULU.COM 2024-02-13 16:12:48 -08:00
Wayne Warthen
9dbceb4a15 Add CP/NET Serial Interface Client Files
- Generic serial interface client support files have been added.  This mode of operation is not documented in the RomWBW User Guide.  Refer to <https://github.com/durgadas311/cpnet-z80>.
- Minor patch to NULU so it does not spit out a directory listing every time it is invoked.
2024-02-13 15:53:52 -08:00
Wayne Warthen
c2721d1572 More Build Tweaks 2024-02-12 17:36:17 -08:00
Wayne Warthen
b7a26bb274 Build Tweaks 2024-02-12 17:10:54 -08:00
Wayne Warthen
6ecf8f9920 Update Doc 2024-02-12 13:57:05 -08:00
Wayne Warthen
c1d7a41c82 Merge pull request #389 from danwerner21/master
Add support for Duodyne media board
2024-02-12 12:44:05 -08:00
Wayne Warthen
c622e43c14 Fix .gitignore (again) 2024-02-12 12:02:04 -08:00
Wayne Warthen
119e2d5421 Update Makefile
- Fix for MacOS build
2024-02-12 11:51:48 -08:00
Wayne Warthen
b574768e2b Fix .gitignore 2024-02-12 11:34:58 -08:00
Wayne Warthen
2aa3bc2018 Update Makefile 2024-02-12 11:22:53 -08:00
Wayne Warthen
627e012f3f Fix Build (again) 2024-02-12 10:57:13 -08:00
Dan Werner
4d39bf93ba Add Duodyne media board support 2024-02-12 02:23:56 +00:00
danwerner21
d2f7830b9e Merge branch 'wwarthen:master' into master 2024-02-11 20:15:23 -06:00
Dan Werner
30db4c7fe9 Add Duodyne media board support 2024-02-12 02:14:09 +00:00
Wayne Warthen
b020fc3901 Fix Build 2024-02-11 15:24:30 -08:00
Wayne Warthen
3f102e0151 Add CP/NET Support for Duodyne
Co-Authored-By: Douglas Miller <16920069+durgadas311@users.noreply.github.com>
2024-02-11 15:05:00 -08:00
Wayne Warthen
e18014a8a7 Added Cowgol Disk Image
- Credit and thanks to Ladislau Szilagyi.

Co-Authored-By: ladislau szilagyi <87603175+laci1953@users.noreply.github.com>
2024-02-10 13:11:09 -08:00
Wayne Warthen
074f2cfdb2 Fix for ROMless Restart
Registration of terminal emulation was failing under ROMless operation after a (R)estart was performed at the Boot Loader.  See <https://groups.google.com/g/retro-comp/c/bILDMVI97vo/m/Oj8sXdr7DAAJ>.
2024-02-08 17:43:55 -08:00
Wayne Warthen
91f5b36fbc Support for EF9345 Video Display Controller
- Thanks and credit to Laszlo Szolnoki for contributing this driver.
2024-02-07 19:15:46 -08:00
Wayne Warthen
9ad7798713 Update romldr.asm
Correct conditional compilation for UNA.
2024-02-07 13:25:08 -08:00
Wayne Warthen
807999928e Tweak Console Takeover Mechanism
Based on input from Martin R, the console takeover mechanism has been modified to require that the space bar be pressed twice in a row on the character unit desiring to be the console.  This reduces the chance of a spurious console takeover due to garbage input on serial ports.
2024-02-07 13:14:27 -08:00
Wayne Warthen
0b1bbf3d2b Improve Propeller Font
Lars Nelson has tweaked the special graphics characters on the Propeller so that the vertical bar character is better aligned with the other graphics characters.
2024-02-07 13:11:35 -08:00
Wayne Warthen
d93e639e4b Added Console Takeover Mechanism
- If enabled by AUTOCON config setting, you can press <space> at any character device to take over the console at the boot loader prompt.
- Correction to SIOSEEK documentation in System Guide.  Thanks and credit to Martin R.
2024-02-04 15:08:34 -08:00
Wayne Warthen
b633c309f4 Documentation Fixes 2024-01-24 16:31:25 -08:00
Wayne Warthen
a00cf821c7 Update release.yml 2024-01-24 14:54:44 -08:00
Wayne Warthen
d13ea96f35 Update commit.yml 2024-01-24 14:29:51 -08:00
Wayne Warthen
8e4bb575f1 Support for Application Banks 2024-01-24 12:39:10 -08:00
Wayne Warthen
ee8cdfa4b8 Propeller Firmware Enhancements
- Support DEC graphics character set
- Allow use of all lines on VGA display
- Support inverted bits on front panel LEDs and switches by config
2024-01-22 14:21:20 -08:00
Wayne Warthen
6f7d1447ea Fixes for RTCHB and DS1501RTC
Thanks and credit to Marten Feldman for contributing these.
2024-01-15 16:24:43 -08:00
Wayne Warthen
3e6120e0fa ACIA Driver Interrupt Handling Performance Improvements
Thanks and credit to Derek Cooper, Wesley Isacks, Bill Shen, and
Phillip Stevens.
2024-01-14 11:22:26 -08:00
Wayne Warthen
61565bffd7 Correct Version Number String 2024-01-12 16:00:31 -08:00
Wayne Warthen
0bac6f32ea Update BPBIOS Disk Reference Lookup
- Modified BPBIOS to implement proper physical/logical disk unit lookups.
2024-01-12 15:22:13 -08:00
Wayne Warthen
462545bfe7 Update FAT Utility
- Update to v1.0 of FAT Utility
2024-01-09 16:24:20 -08:00
Wayne Warthen
cc4ad0d4b9 Fixed Type in User Guide
Thanks and credit to Bill Lewis for this correction.
2024-01-07 17:24:17 -08:00
Wayne Warthen
458b04404e Merge pull request #382 from feilipu/patch-1
add serial SER_STOP2 options
2024-01-07 17:02:09 -08:00
Wayne Warthen
4143cfa4cf Merge pull request #383 from feilipu/patch-2
Typo in Source/ReadMe.txt
2024-01-07 17:01:28 -08:00
Phillip Stevens
438e59a05e Typo in Source/ReadMe.txt
Just a typo.
2024-01-07 15:31:56 +11:00
Phillip Stevens
7385d07b9a add serial SER_STOP2 options
Add configuration for 8N2 serial options
2024-01-07 15:25:51 +11:00
Wayne Warthen
5bea1f400e Create CONTRIBUTING.md
Add contribution guidelines.
2024-01-01 15:19:25 -08:00
Wayne Warthen
1a9701e51d Version 3.4 Final 2023-12-31 16:35:43 -08:00
Wayne Warthen
23e0b82112 Merge pull request #378 from wwarthen/dev
RomWBW v3.4
2023-12-31 16:12:45 -08:00
Wayne Warthen
b4b5ef19fc Regen Doc 2023-12-31 15:32:17 -08:00
Wayne Warthen
4dd46c3df6 Regenerate Documentation 2023-12-30 14:15:35 -08:00
Wayne Warthen
17e3a95768 Add FAT.COM to Standard ROM Disk
- Added FAT.COM application to standard ROM Disk (ROM size >= 512K)
- Removed RMAC.COM and LINK.COM to make space for FAT.COM
2023-12-30 13:29:26 -08:00
Wayne Warthen
3529cdaa2f Update cpuspd.asm
- Improve display of CPUSPD utility.
2023-12-29 19:55:21 -08:00
Wayne Warthen
556b7074ae Missed Files 2023-12-29 15:55:25 -08:00
Wayne Warthen
952489eac4 Miscellaneous
- Corrected inconsistencies in CPU oscillator speed configuration for Z280 systems.
- Updated Bill Chen's ZZRCC monitor from v0.5 to v0.6.
2023-12-29 15:18:34 -08:00
Wayne Warthen
8f326fb081 Fix Makefile for MacOS 2023-12-28 14:44:25 -08:00
Wayne Warthen
2925ab3d42 Miscellaneous
- Update PR template for new branching under v3.4
- Tweak Makefile.inc for slightly improved performance
- Improve UART driver messaging when bad CTS signal is detected
2023-12-28 12:50:04 -08:00
Wayne Warthen
cdb9f9b40a Initial Release Candidate for v3.4
- Minor doc updates
- Comment updates in ansi.asm and tms.asm
- Correction to build process for ROMless systems
- Fix for ZRC (default configuration) to use all available RAM
2023-12-27 17:31:01 -08:00
Wayne Warthen
def84eded9 Integrate Jose Collado's Screen Color Enhancements
Credit and thanks to Jose Collado

- This change enhances both the TMS driver and ANSI emulation to handle setting of screen foreground/background.
2023-12-22 16:09:33 -08:00
Wayne Warthen
d89e055f18 Doc Updates
- Updated change log and code attribution in preparation for upcoming stable release.
2023-12-22 11:45:07 -08:00
Wayne Warthen
62f9330de8 Enable DSKY by Default for Duodyne
- Updated main Duodyne config file to enable DSKY
- Fixed issue in dbgmon.asm that caused DSKY auto-increment when examining/modifying RAM to fail.
2023-12-21 17:52:06 -08:00
Wayne Warthen
374ed7ab97 CH37x Driver Cleanup
- Split out the SD and USB specific support from the main CH37x driver to optimize code space usage.
- Ensure CH37x mode switch is handled properly when there are multiple devices active in a system.
2023-12-20 15:38:37 -08:00
Wayne Warthen
c7bee46f60 Workaround CH376 Reset Behavior
I am encountering some CH376 chips that go haywire after a
reset command.  They stop responding for a very long time.
I am seeing this only on "LC Tech" adapters and only on Z80
systems (not Z180).  No idea what is going on, so I am
giving up for now and removing the reset.
2023-12-18 17:35:57 -08:00
Wayne Warthen
e9b9782ede Correction for CH Driver Config
- Last check-in had a couple of config file errors which are corrected here.
- Also updated Appendix A of the User Guide to reflect new CH37x port addressing.
2023-12-18 14:44:26 -08:00
Wayne Warthen
af00df9182 Update CH Driver Port Config for RCBus Systems
- Updated to standardize on 0x3E/0x3F for primary CH device and 0x3C/0x3D for secondary CH device.  Both devices are optional and detected automatically.
2023-12-18 13:04:50 -08:00
Wayne Warthen
e286a428bf Preliminary Support for Monsputer 2023-12-14 11:28:07 -08:00
Wayne Warthen
f2fc049f07 Support Duodyne SD Card Interface 2023-12-12 14:11:26 -08:00
Wayne Warthen
d8a485a5fb Add Support for Duodyne PPIDE Disk Interface 2023-12-10 18:04:38 -08:00
Wayne Warthen
ed53030de2 Extend IDE Reset Delay & Support Duodyne FDC
- The post-reset delay of both the IDE and PPIDE drivers has been extended.  The SD-IDE adapters need more time to initialize before being ready to behave as proper IDE devices.
- Added support for the FDC section of the Duodyne Disk-IO board.
2023-12-10 17:28:04 -08:00
Wayne Warthen
4b88986de8 Fix .gitignore 2023-12-09 17:02:45 -08:00
Wayne Warthen
3df34b4ce0 Add ZRC512 Support
Thanks and credit to Bill Shen for providing the build updates.
2023-12-09 16:26:23 -08:00
Wayne Warthen
f230fb22da Enable Duodyne Front Panel
- Support for LEDs and switches by default
2023-12-08 11:05:45 -08:00
Wayne Warthen
2225847212 Additional Improvement to BPBIOS Bank Management 2023-12-07 12:58:44 -08:00
Wayne Warthen
edbe7d0781 Improved BPBIOS Bank Id Management 2023-12-06 19:37:02 -08:00
Wayne Warthen
1d3438fb29 Convert BPBIOS to hd1k Hard Disk Format 2023-12-05 20:29:00 -08:00
Wayne Warthen
a5de77438b Resurrect BPBIOS Build
- Corrected to handle latest changes in RomWBW HBIOS bank layout.
2023-12-05 16:07:16 -08:00
Wayne Warthen
b841705023 Final Round of User Guide Updates per Martin R 2023-11-30 12:52:11 -08:00
Wayne Warthen
72cdbdd4ad Documentation Updates Inspired by Martin R
- Implemented a crude mechanism to output config settings during a build which can be imported into the User Guide appendix.
2023-11-29 18:54:51 -08:00
Wayne Warthen
b8ef50fad5 Update ZETA_std.asm
- Correct assumed CPU speed in ZETA std config.
2023-11-27 19:15:19 -08:00
Wayne Warthen
c7d22892c1 Update std.asm
Fix assembly error.
2023-11-27 17:58:24 -08:00
Wayne Warthen
8b3deb057f User Guide Updates per Martin R
- Credit and thanks to Martin R for providing a substantial list of suggested fixes and improvements to the User Guide.  I have done my best to address them -- others will require more time and will hopefully be addressed in the future.
2023-11-27 17:44:53 -08:00
Wayne Warthen
df42cf544e Support Mini-ITX Z180 Platform by Alan Cox
Support for Mini-ITX contributed by Alan Cox.
2023-11-24 18:03:19 -08:00
Wayne Warthen
55a41ec0a3 TMS Driver Enhancement by Jose Collado
- The 40 column mode of the TMS driver now conforms to the memory map from the TMS9918 documentation and is also now consistent with the existing TMS9918 video programs from the RC2014 forum.
2023-11-24 17:15:29 -08:00
Wayne Warthen
4417f871e5 Update AddRom.cmd
- Minor improvements
2023-11-21 14:55:14 -08:00
Wayne Warthen
1c10f734bd Create AddRom.cmd
Experimental command line script (Windows only) to add a ROM image to user area 0 of hd1k_combo.img.  Intended to make it easier to get a ROM image to a system for subsequent FLASHing.
2023-11-21 14:36:56 -08:00
Wayne Warthen
214182b514 Fix RTC Initialization
When using the Z2 memory manager, if the HBIOS exceeds 16K, RTCDEFVAL will not be accessible prior to programming the Z2 memory bank registers.  In this corner case the RTC latch could be mis-programmed.  This commit introduces a workaround.
2023-11-21 11:59:31 -08:00
Wayne Warthen
08942fb944 Support Duodyne SelfHost UART 2023-11-20 17:01:53 -08:00
Wayne Warthen
5dc724785b Completed CH37x Driver
The ch.asm driver now supports SD Card operations (only possible for CH376).
2023-11-19 14:48:41 -08:00
b1ackmai1er
d8b7f88dad Merge pull request #26 from wwarthen/master
Resync
2022-11-09 17:40:23 +08:00
1369 changed files with 57365 additions and 18500 deletions

View File

@@ -1,7 +1,7 @@
<!--
BEFORE YOU CREATE A PULL REQUEST:
- Please base all pull requests against the dev branch
- 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")

View File

@@ -14,7 +14,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.1.1
- name: Get Commit Ref
run: |
@@ -36,7 +36,7 @@ jobs:
find -type f -exec md5sum '{}' \;
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v4.3.0
with:
name: RomWBW-${{env.COMMIT_REF}}-Linux
path: .
@@ -46,7 +46,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.1.1
- name: Get Commit Ref
run: |
@@ -68,7 +68,7 @@ jobs:
find . -type f -exec md5 -r -- '{}' +;
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
uses: actions/upload-artifact@v4.3.0
with:
name: RomWBW-${{env.COMMIT_REF}}-MacOS
path: .

View File

@@ -12,7 +12,7 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v3.3.0
uses: actions/checkout@v4.1.1
- name: Build
run: |

5
.gitignore vendored
View File

@@ -20,7 +20,7 @@
Binary/**/*.mym
Binary/**/*.pt3
!Binary/cpnos-wbw.sys
!Binary/CPNET/NetBoot/cpnos-wbw.sys
Source/**/eeprom
Source/Apps/Assign.com
@@ -85,6 +85,7 @@ Tools/unix/zx/zx
!Source/BPBIOS/*.lib
!Source/BPBIOS/Z34RCP11/cledinst.com
!Source/BPBIOS/Z34RCP11/cledsave.com
!Source/CPNET/**
!Source/Fonts/*
!Source/Images/**
!Source/RomDsk/**
@@ -95,8 +96,10 @@ Tools/unix/zx/zx
!Source/ZPM3/*.[Cc][Oo][Mm]
!Source/ZSDOS/*.[Cc][Oo][Mm]
!Source/ZRC/*.bin
!Source/ZRC512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.bin
!Source/FZ80/*.bin
!Tools/cpm/**
!Tools/unix/zx/*
!Tools/zx/*

View File

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

View File

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

View File

@@ -0,0 +1,44 @@
INTTEST
=======
RomWBW includes an API allowing applications to "hook" interrupts.
The `INTTEST` utility allows you to test this functionality.
** Syntax **
`INTTEST`
** Usage **
`INTTEST` is an interactive application. At startup, it will display
a list of the interrupt vector slots in your system along with the
current vector address for each of them.
It then prompts you to enter the slot number (in hex) of a vector to
hook. After entering this, the application will watch the hooked
vector and countdown from 0xFF to 0x00 as interrupts are noted.
When the counter reaches 0x00, the interrupt is unhooked and the
application terminates. The application can also be terminated by
pressing <esc>.
** Notes **
If your system is running without interrupts active, the application
will terminate immediately.
All slots have vectors even if the corresponding interrupt is not
doing anything. In this case, the vector is pointing to the "bad
interrupt" handler.
If you hook a vector that is not receiving any interrupts, the
down-counter will not do anything.
** Etymology* *
The `INTTEST` command is an original product and the source code is
provided in the RomWBW distribution.

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

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

7
Binary/CPNET/Makefile Normal file
View File

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

38
Binary/CPNET/ReadMe.txt Normal file
View File

@@ -0,0 +1,38 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory contains the CP/NET client packages. Please refer to
the RomWBW User Guide for instructions on installing these packages.
Either the MT011 RCBus module or the Duodyne Disk I/O board is required.
All of these files come from Douglas Miller. Please refer to
https://github.com/durgadas311/cpnet-z80 for more information, complete
documentation and the latest source code. Refer to the RomWBW
User Guide for basic installation and usage instructions under RomWBW.
| File | CP/NET Version | OS | Hardware |
+--------------+----------------+----------+-----------------------+
| CPN12MT.LBR | CP/NET 1.2 | CP/M 2.2 | RCBus w/ MT011 |
| CPN3MT.LBR | CP/NET 3 | CP/M 3 | RCBus w/ MT011 |
| CPN12DUO.LBR | CP/NET 1.2 | CP/M 2.2 | Duodyne w/ Disk I/O |
| CPN3DUO.LBR | CP/NET 3 | CP/M 3 | Duodyne w/ Disk I/O |
In general, to use CP/NET on RomWBW, it is intended that you will
extract the appropriate set of files into your default directory in
user area 0. Refer to the RomWBW User Guide for more information.
The libraries include enhanced help files appropriate for the version
of CP/NET. Rename the desired topic collection to HELP.HLP on the
target system.
CPM2NET.HLP CP/M 2.2 basic system with CP/NET 1.2
CPNET12.HLP CP/NET 1.2 help only
CPM3NET.HLP CP/M 3 basic system with CP/NET 3
CPNET3.HLP CP/NET 3 help only
-- WBW 7:14 AM 2/11/2024

View File

@@ -14,3 +14,4 @@ if exist *.eeprom del *.eeprom
pushd Apps && call Clean || exit /b 1 & popd
pushd CPM3 && call Clean || exit /b 1 & popd
pushd ZPM3 && call Clean || exit /b 1 & popd
pushd CPNET && call Clean || exit /b 1 & popd

View File

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

View File

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

42
CONTRIBUTING.md Normal file
View File

@@ -0,0 +1,42 @@
# 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.
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
## 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.
- 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.
- 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.
## 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.
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.
## 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.

67
Doc/CPM/ReadMe.txt Normal file
View File

@@ -0,0 +1,67 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory ("Doc/CPM") is part of the RomWBW System Software
distribution archive. It contains documentation for the CP/M and
CP/M work-alike operating system components of the system.
CPM Manual ("CPM Manual.pdf")
-----------------------------
The original DRI CP/M 2.x Operating System Manual. This should be
considered the primary reference for system operation. The section
on CP/M 2 Alteration can be ignored since this work has already been
completed as part of the RomWBW distribution.
CPM3 Command Summary ("CPM3 Command Summary.pdf")
CPM3 Programmer's Guide ("CPM3 Programmers Guide.pdf")
CPM3 System Guide ("CPM3 System Guide.pdf")
CPM3 User's Guide ("CPM3 Users Guide.pdf")
------------------------------------------------------
The original DRI CP/M 3.0 Operating System Documentation Set. This
should be considered the primary reference for CP/M 3 system operation.
NZCOM User's Manual ("NZCOM Users Manual.pdf")
----------------------------------------------
NZCOM operating system operation manual.
QP/M 2.7 Installation Guide and Supplements ("qpm27.pdf")
QP/M 2.7 Interface Guide ("qdos27.pdf")
QP/M 2.7 Features and Facilities ("qcp27.pdf")
--------------------------------------------
Official documentation set for QP/M 2.7 from original QP/M distribution.
ZCPR Manual ("ZCPR Manual.pdf")
-------------------------------
ZCPR is the command proccessor portion of Z-System. This is the
manual for ZCPR 1.x as included in RomWBW. The installation
instructions can be ignored since that work has already been
completed as part of the RomWBW distribution.
ZCPR D&J Manual ("ZCPR-DJ.doc")
-------------------------------
ZCPR D&J User Manual. This manual supplements the ZCPR Manual.
ZSDOS Manual ("ZSDOS Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
1.x as included in RomWBW. The installation instructions can be
ignored since that work has already been completed as part of the
RomWBW distribution.

View File

@@ -1,10 +1,81 @@
Version 3.5
-----------
- M?F: Fix for hours display in HBRTC application
- M?F: Fix for assembly error in DS1501RTC driver
- WBW: Add VT-100 graphics char selection to Propeller firmware
- WBW: Allow all lines of VGA display to be used on Propeller firmware
- WBW: Allow front panel LED/Switch bits to be inverted in config
- WBW: Add API to expose application banks available
- WBW: Added console takeover at boot loader prompt
- L?N: Fixed Propeller font vertical line character to align properly
- L?S: EF9345 video display controller driver
- WBW: Added Cowgol disk image based on the work of Ladislau Szilagyi
- WBW: Added support for CP/NET on Duodyne Disk I/O
- DDW: Added support for Duodyne Media board
- WBW: Auto restore TMS video on user reset (CP/M warm boot)
- L?B: Added support for NABU w/ RomWBW Option Board
- MAP: Reorganization of Doc directory introducing subfolders
- WBW: Upgraded BBCBASIC to v5.00
- W?S: Updated FLASH utility to v1.3.9
- WBW: Support RCBus PS/2 Keyboard (EP/Sally)
- M?R: Update Timer app to display output in decimal
- WBW: Preliminary support for S100 FPGA Z80 platform
- WBW: Added simple serial (SSER) driver
- WBW: Added preliminary support for S100 FPGA Z80 SD Cards
- M?R: Consolidated ROM Applications document into the Applications document
- M?R: Reviewed and substantially improved the Applications document
- WBW: Added support for DS1305 RTC on S100 FPGA Z80
- WBW: Added support for Les Bird's RCBus Graphics/Sound/Joystick module
- WBW: Added support for Les Bird's Dual 16C550 UART module
- WBW: Refactor UART driver for more flexible configuration
- M?R: Added hour/minute/second display to timer app
- WBW: Substantial customization of NZ-COM disk image
- WBW: Refactor build post-processing (ZRC, ZZRCC, etc.)
- MAP: Improved section Real Time Clock in User Guide document
- WBW: Support for Hitachi HD44780-based LCD display
- DRJ: Added support for Genesis STD Bus Z180 platform
- MAP: Improved section Disk Management in User Guide document
Version 3.4
-----------
NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integrity
- WBW: Device type number moved from upper nibble to full byte
- A?C: Support for EP ITX-Mini Z180 Platform
- M?R: Significant improvement in User Guide document
- J?P: Preliminary support for Monsputer (MON)
- JLC: Standardize TMS driver memory map for compatibility
- WBW: Improved IDE device detection
- WBW: Fixed decompression when run on Z280
- K?B: WDATE generic HBIOS date/time utility
- WBW: Create new DSKY framework with simple driver style interface
- JBL: Added ColecoVision config in TMS driver
- WBW: Added support for interrupt mode 1 on Z180
- WBW: Added S100 platform
- WBW: Added Duodyne platform
- WBW: Incorporated John Monahan's S100 Monitor in S100 platform build
- WBW: Support ESP32 on Duodyne
- M?C: Fixed port specification when using XM.COM send transfers
- PMS: Support for Duodyne DMA
- WBW: Added Serial ROM (SROM.COM) utility
- WBW: Support S100 Propeller Console
- SCC: Added support for SC700
- WBW: Added Heath H8 platform
- D?J: Enhanced build to run on Raspberry Pi 4
- WBW: Complete overhaul of ROMless boot operation
- WBW: Prevent access to slices outside of partition
- T?P: Contributed the HTALK utility
- WBW: CTS stall detection
- W?S: Updated FLASH utility to v1.3.7
- L?N: Updated UNARC to new OS universal version
- B?C: Added support for Z1RCC
- M?R: User Guide enhancements and corrections
- D?H: Added support for specification of secondary console
- WBW: Added platform for Monsputer
- WBW: Added FAT.COM to standard ROM Disk (removed RMAC.COM & LINK.COM)
Version 3.3
-----------
NOTE: v3.3 was never released
- WBW: Support Front Panel switches
- A?C: Preliminary support for Z80-Retro
- A?C: Support for SD PIO
@@ -12,7 +83,7 @@ Version 3.3
- WBW: Support per-drive floppy configuration
- WBW: Support for Bill Shen's VGARC
- WBW: Support for MG014 Parallel Port module + printer
- WBW: Support for EMM Zip Drive on PPI interface (much inspiration from Alan Cox)
- WBW: Support for IMM Zip Drive on PPI interface (much inspiration from Alan Cox)
- WBW: Support for PPA Zip Drive on PPI interface (much inspiration from Alan Cox)
- WBW: Support for SyQuest SparQ Drive on PPI interface (much inspiration from Alan Cox)
- WBW: Support for ATAPI Disk Drives (not CD-ROMs) on IDE and PPIDE interfaces
@@ -632,4 +703,4 @@ interrupts disabled the BIOS will now start OK even if some vagrant
hardware is asserting an interrupt (DISKIO). Seems like this is better
anyway -- general idea is that we only enable interupts precisely
when desired for very specific controled purposes since there is no
concept of interrupt dispatching available.
concept of interrupt dispatching available.

Binary file not shown.

View File

@@ -4,7 +4,7 @@ ZSDOS Adaptation Notes for RomWBW
Wayne Warthen
wwarthen@gmail.com
This file is a log of the work done to adapt the ZSDOS distribution to the N8VEM platforms under RomWBW. I strongly recommend reviewing the zsdos.pdf file in the Doc directory.
This file is a log of the work done to adapt the ZSDOS distribution to the N8VEM platforms under RomWBW. I strongly recommend reviewing the zsdos.pdf file in the Doc/CPM directory.
The starting point was the general public release of ZSDOS that is generally available. The first line of the README file is "ZSDOS-GP. General Public Release of the ZSDOS 1.x Operating System."
@@ -20,7 +20,7 @@ Beyond the construction and integration of the actual DOS itself, the majority o
The remainder of this document details the changes I made as I went along. In all cases, my goal was to keep the result as close to the original distribution as possible. I started by copying all of the files from the distribution (contained in zsdos2.zip) into Support\ZSDOS. From there I tested, modified, updated, and customized as documented below. Finally, I cherry picked files that made sense to include on the ZSystem ROM disks.
1. CLOCKS.DAT has been updated to include the RomWBW clock driver, HBCLK. I have also added the SIMHCLOK clock driver.
1. CLOCKS.DAT has been updated to include the RomWBW clock driver, WBWCLK. I have also added the SIMHCLOK clock driver.
2. STAMPS.DAT has been replaced with an updated version. The update was called STAMPS11.DAT and was found on the Walnut Creek CP/M CDROM. The original version has a bug that prevents RSX (resident system extension) mode to load properly.
@@ -52,4 +52,4 @@ Usage Notes
6. After using PUTDS to initialize a directory for ZDS date stamping, I am finding that it is necessary to run RELOG before the stamping routines will actually start working.
7. Generic CP/M PIP and ZSDOS path searching do not play well together if you use PIP to copy to or from a directory in the ZSDOS search path. Best to use COPY from the ZSDOS distribution.
7. Generic CP/M PIP and ZSDOS path searching do not play well together if you use PIP to copy to or from a directory in the ZSDOS search path. Best to use COPY from the ZSDOS distribution.

Binary file not shown.

Binary file not shown.

62
Doc/Language/ReadMe.txt Normal file
View File

@@ -0,0 +1,62 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory ("Doc/Language") is part of the RomWBW System Software
distribution archive. It contains documentation for Programming
Languages provided with the system.
Aztec C Compiler User Manual (Aztec_C_1.06_User_Manual_Mar84.pdf)
-----------------------------------------------------------------
Official user manual for the Aztec C Compiler included in the aztecc disk image.
Borland TurboPascal User Manual (Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf)
------------------------------------------------------------------------------------
Official user manual Borland TurboPascal included in the pascal disk image.
Cowgol Lanaguage (Cowgol Language.pdf)
--------------------------------------
Documentation for Cowgol Language included in the cowgol disk image
HI-TECH C Compiler User Manual (HI-TECH Z80 C Compiler Manual.txt)
------------------------------------------------------------------
Official user manual for the HI-TECH C Compiler included in the
hitechc disk image.
Microsoft Basic-80 Reference Manual v5.0 (Microsoft Basic-80 Reference Manual v5.0.pdf)
---------------------------------------------------------------------------------------
Official manual for Microsoft BASIC as included in RomWBW.
Microsoft FORTRAN-80 User Manual (Microsoft_FORTRAN-80_Users_Manual_1977.pdf)
-----------------------------------------------------------------------------
Official user manual for Microsoft's FORTRAN-80 compiler included in the fortran
disk image.
Z80 Assembler User Manual (z80asm (SLR Systems).pdf)
----------------------------------------------------
Official user manual for the Z80 Macro Assembler by SLR Systems
included in the z80asm disk image.

View File

@@ -10,6 +10,18 @@ This directory ("Doc") is part of the RomWBW System Software
distribution archive. It contains documentation for components of
the system.
CPM (Directory)
---------------
Documentation specific to CP/M, including all versions and derivatives.
Language (Directory)
--------------------
Documentation specific to programming languages, provided with the system
ChangeLog.txt
-------------
@@ -31,25 +43,6 @@ and utilities are detailed in the Applications and
ROM Applications documents.
CPM Manual ("CPM Manual.pdf")
-----------------------------
The original DRI CP/M 2.x Operating System Manual. This should be
considered the primary reference for system operation. The section
on CP/M 2 Alteration can be ignored since this work has already been
completed as part of the RomWBW distribution.
CPM3 Command Summary ("CPM3 Command Summary.pdf")
CPM3 Programmer's Guide ("CPM3 Programmers Guide.pdf")
CPM3 System Guide ("CPM3 System Guide.pdf")
CPM3 User's Guide ("CPM3 Users Guide.pdf")
------------------------------------------------------
The original DRI CP/M 3.0 Operating System Documentation Set. This
should be considered the primary reference for CP/M 3 system operation.
DDTZ Manual ("DDTZ.doc")
------------------------
@@ -69,47 +62,6 @@ Hard Disk Anatomy ("Hard Disk Anatomy.pdf")
Diagram of a CP/M & MS-DOS (FAT) hybrid hard disk layout.
NZCOM User's Manual ("NZCOM Users Manual.pdf")
----------------------------------------------
NZCOM operating system operation manual.
ZCPR Manual ("ZCPR Manual.pdf")
-------------------------------
ZCPR is the command proccessor portion of Z-System. This is the
manual for ZCPR 1.x as included in RomWBW. The installation
instructions can be ignored since that work has already been
completed as part of the RomWBW distribution.
ZCPR D&J Manual ("ZCPR-DJ.doc")
-------------------------------
ZCPR D&J User Manual. This manual supplements the ZCPR Manual.
ZSDOS Manual ("ZSDOS Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
1.x as included in RomWBW. The installation instructions can be
ignored since that work has already been completed as part of the
RomWBW distribution.
Microsoft Basic-80 Reference Manual v5.0 (Microsoft Basic-80 Reference Manual v5.0.pdf)
---------------------------------------------------------------------------------------
Official manual for Microsoft BASIC as included in RomWBW.
QP/M 2.7 Installation Guide and Supplements ("qpm27.pdf")
QP/M 2.7 Interface Guide ("qdos27.pdf")
QP/M 2.7 Features and Facilities ("qcp27.pdf")
--------------------------------------------
Official documentation set for QP/M 2.7 from original QP/M distribution.
SIO+CTC Baud Rate Options (SIO+CTC Baud Rate Options.pdf)
---------------------------------------------------------
@@ -132,37 +84,4 @@ UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
Official user manual for p-System operating system included with
RomWBW.
Z80 Assembler User Manual (z80asm (SLR Systems).pdf)
----------------------------------------------------
Official user manual for the Z80 Macro Assembler by SLR Systems
included in the z80asm disk image.
HI-TECH C Compiler User Manual (HI-TECH Z80 C Compiler Manual.txt)
------------------------------------------------------------------
Official user manual for the HI-TECH C Compiler included in the
hitechc disk image.
Borland TurboPascal User Manual (Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf)
------------------------------------------------------------------------------------
Official user manual Borland TurboPascal included in the pascal disk image.
Aztec C Compiler User Manual (Aztec_C_1.06_User_Manual_Mar84.pdf)
-----------------------------------------------------------------
Official user manual for the Aztec C Compiler included in the aztecc disk image.
FORTRAN-80 User Manual (Microsoft_FORTRAN-80_Users_Manual_1977.pdf)
---------------------------------------------------------------
Official user manual for Microsoft's FORTRAN-80 compiler included in the fortran
disk image.
--WBW 5:18 PM 6/14/2023
--WBW 5:18 PM 6/14/2023

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,144 +0,0 @@
SIMH (X)
----
- Test UART driver
- Test HDSK driver
Zeta 1 (X)
------
- Test UART driver
- Test PPP detection (startup w/ and w/o PPP)
- Test boot to CRT
- Test PPPSD driver
- Test PPPCON driver (video & kbd)
- Test FD driver
- Test FDU app
Zeta 2 (X)
------
- Test UART driver
- Test PPP detection (startup w/ and w/o PPP)
- Test boot to CRT
- Test PPPSD driver
- Test PPPCON driver (video & kbd)
- Test FD driver
- Test FDU app
RCBus (X)
------
- Test SIO driver (Serial Module)
- Test ACIA driver (Dual Serial Module)
- Test IDE driver (Compact Flash Module)
- Test PPIDE driver (IDE Module)
- Test FD driver (SMC and WDC)
- Test FDU app (SMC and WDC)
N8-2312 (X)
-------
- Test ASCI driver
- Test SD driver (CSIO mode)
- Test FD driver
- Test FDU app
- Test TMS driver (video & kbd)
N8-2511 (X)
-------
- Test ASCI driver
- Test SD driver (Juha mode)
- Test FD driver
- Test FDU app
- Test TMS driver (video & kbd)
SBC (X)
---
- Test UART driver
- Test PPIDE driver
- Test PPISD driver
- Test PRP detection
- Test boot to CRT console
MK4 (X)
---
- Test ASCI driver
- Test IDE driver
- Test SD driver
- Test PRP detection
RAMF (X)
----
- Test RAMF driver
PRP (X)
---
- Test PRPSD driver
- Test PRPCON driver (video & kbd)
SCG (X)
---
- Test TMS driver (video)
VDU (X)
---
- Test CVDU driver (video & kbd)
CVDU (X)
----
- Test CVDU driver (video & kbd)
VGA (X)
---
- Test VGA driver (video & kbd)
DIO (X)
---
- Test FD driver
- Test FDU app
- Test IDE driver
DIO3 (X)
----
- Test FD driver
- Test FDU app
- Test PPIDE driver
DIDE (X)
----
- Test FD driver
- Test FDU app
- Test IDE driver
DSD (X)
---
- Test SD driver
4UART (X)
-----
- Test UART driver
UNA (X)
---
- General Startup
- Boot from disk functionality
- Image loading
- Monitor
- XM app
- ASSIGN app
- MODE app
- SYSCOPY app
- OSLDR app
- FDU app
- FDISK80 app
GENERAL (X)
-------
- Boot to ROM
- Boot to Disk
- Boot to Monitor
- XM app
- XM port auto-detect
- ASSIGN app
- MODE app
- SYSCOPY app
- FDU app
- FDISK80 app
- TUNE app

541
ReadMe.md
View File

@@ -1,248 +1,293 @@
**RomWBW ReadMe** \
Version 3.4 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
31 Oct 2023
# Overview
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- [RetroBrew Computers](https://www.retrobrewcomputers.org)
- [RC2014](https://rc2014.co.uk),
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
- [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
- [Small Computer Central](https://smallcomputercentral.com/)
General features include:
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
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.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
# 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/dev/Doc/RomWBW%20User%20Guide.pdf).
## Documentation
Documentation for RomWBW includes:
- [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20User%20Guide.pdf)
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20System%20Guide.pdf)
- [RomWBW
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Applications.pdf)
- [RomWBW ROM
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20ROM%20Applications.pdf)
- [RomWBW
Errata](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Errata.pdf)
# 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 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.
Contributions of all kinds to RomWBW are very welcome.
# Licensing
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.
# 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>.
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
06 Sep 2024
# Overview
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- [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 the
\[Installation\] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
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.
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.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the [RomWBW Releases
Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
# 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).
## Documentation
Documentation for RomWBW includes:
- [RomWBW User
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf)
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf)
- [RomWBW
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf)
- [RomWBW
Errata](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Errata.pdf)
# 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 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 also contributed a great deal of content to the User
Guide.
- 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
Contributions of all kinds to RomWBW are very welcome.
# Licensing
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.
# Getting Assistance
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/)
- [RC2014 Google
Group](https://groups.google.com/forum/#!forum/rc2014-z80)
- [retro-comp Google
Group](https://groups.google.com/forum/#!forum/retro-comp)
Submission of issues and bugs are welcome at the [RomWBW GitHub
Repository](https://github.com/wwarthen/RomWBW).
Also feel free to email Wayne Warthen at <wwarthen@gmail.com>.

View File

@@ -1,254 +1,299 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
31 Oct 2023
OVERVIEW
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- RetroBrew Computers
- RC2014, RC2014-Z80
- retro-comp
- Small Computer Central
General features include:
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
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.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
ACQUIRING ROMWBW
The RomWBW Repository on GitHub is the official distribution location
for all project source and documentation. The fully-built distribution
releases are available on the RomWBW Releases Page of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
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.
Documentation
Documentation for RomWBW includes:
- RomWBW User Guide
- RomWBW System Guide
- RomWBW Applications
- RomWBW ROM Applications
- RomWBW Errata
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 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.
Contributions of all kinds to RomWBW are very welcome.
LICENSING
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.
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.
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
06 Sep 2024
OVERVIEW
RomWBW software provides a complete, commercial quality implementation
of CP/M (and workalike) operating systems and applications for modern
Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- RetroBrew Computers (https://www.retrobrewcomputers.org)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A complete list of the currently supported platforms is found in the
[Installation] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
- Real time clock drivers including DS1302, BQ4845
- OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and
FreeRTOS
- Built-in VT-100 terminal emulation support
RomWBW is distributed as both source code and pre-built ROM and disk
images. Some of the provided software can be launched directly from the
ROM firmware itself:
- System Monitor
- Operating Systems (CP/M 2.2, ZSDOS)
- ROM BASIC (Nascom BASIC and Tasty BASIC)
- ROM Forth
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
fully tailor the firmware to your specific preferences. All tools
required to build custom ROM firmware under Windows are included no
need to install assemblers, etc. The firmware can also be built using
Linux or MacOS after confirming a few standard tools have been
installed.
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.
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.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
The FAT filesystem may be coresident on the same disk media as RomWBW
slices or on stand-alone media. This makes exchanging files with modern
OSes such as Windows, MacOS, and Linux very easy.
ACQUIRING ROMWBW
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the RomWBW Releases Page (https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
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.
Documentation
Documentation for RomWBW includes:
- RomWBW User Guide
- RomWBW System Guide
- RomWBW Applications
- RomWBW Errata
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 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 also contributed a great deal of content to the User
Guide.
- 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
Contributions of all kinds to RomWBW are very welcome.
LICENSING
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.
GETTING ASSISTANCE
The best way to get assistance with RomWBW or any aspect of the
RetroBrew Computers projects is via one of the community forums:
- RetroBrew Computers Forum
- RC2014 Google Group
- retro-comp Google Group
Submission of issues and bugs are welcome at the RomWBW GitHub
Repository.
Also feel free to email Wayne Warthen at wwarthen@gmail.com.

View File

@@ -0,0 +1,23 @@
@echo off
setlocal
set TOOLS=..\..\..\Tools
set PATH=%TOOLS%\zxcc;%PATH%
set CPMDIR80=%TOOLS%/cpm/
zxcc z80asm -dist/FM
zxcc z80asm -main/FM
zxcc z80asm -exec/FM
zxcc z80asm -eval/FM
zxcc z80asm -asmb/FM
zxcc z80asm -cmos/FM
zxcc z80asm -math/FM
zxcc z80asm -hook/FM
zxcc z80asm -data/FM
zxcc slrnk -/v,/a:0100,dist,main,exec,eval,asmb,math,hook,cmos,/p:4B00,data,bbcbasic/n,/e
copy /Y bbcbasic.com ..\..\..\Binary\Apps\ || exit /b
copy /Y bbcbasic.txt ..\..\..\Binary\Apps\ || exit /b

View File

@@ -0,0 +1,9 @@
@echo off
setlocal
if exist *.com del *.com
if exist *.lst del *.lst
if exist *.hex del *.hex
if exist *.prn del *.prn
if exist *.rel del *.rel
if exist *.sym del *.sym

View File

@@ -0,0 +1,11 @@
OBJECTS = bbcbasic.com
DOCS = bbcbasic.txt
DEST = ../../../Binary/Apps
DOCDEST = ../../../Binary/Apps
TOOLS = ../../../Tools
OTHERS = *.rel
include $(TOOLS)/Makefile.inc
bbcbasic.com: dist.rel main.rel exec.rel eval.rel asmb.rel cmos.rel math.rel hook.rel data.rel
$(ZXCC) SLRNK -/V,/A:0100,DIST,MAIN,EXEC,EVAL,ASMB,MATH,HOOK,CMOS,/P:4B00,DATA,BBCBASIC/N,/E

File diff suppressed because it is too large Load Diff

View File

@@ -1,3 +1,20 @@
This is a RomWBW HBIOS adaptation of BBCBASIC v5.00. The
cursor and screen management assumes the use of an ANSI/VT-100 terminal
which is generally correct for RomWBW. Support for a hardware system
timer is also implemented. If your system does not have a hardware
timer, the TIME function will always return 0 and the timeout
parameter of the INKEY(n) function will not be observed (will never
timeout).
What follows is some basic information on BBCBASIC from the
distribution. Note that it starts with the v3.00 information and
later on provides information on the changes in v5.00.
-- WBW 1:15 PM 5/30/2024
BBC BASIC (Z80)
Generic CP/M Version 3.00
@@ -366,4 +383,73 @@
198 Disk full 254 Bad command
200 Close error 255 CP/M error
204 Bad name


New features in BBC BASIC (Z80) version 5.00, May 2024:
1. BASIC V statements
1.1 WHILE...ENDWHILE
1.2 Multi-line IF...THEN...ELSE...ENDIF
1.3 CASE...WHEN...OTHERWISE...ENDCASE
1.4 LOCAL DATA / RESTORE DATA
1.5 ON ERROR LOCAL / RESTORE ERROR
1.6 DIM var LOCAL size
1.7 ERROR err, message$
1.8 RESTORE +n
1.9 SWAP var1,var2
1.10 BPUT #file,string$[;]
1.11 QUIT
2. BASIC V functions
2.1 DIM(array()[,sub])
2.2 END (pointer to free space)
2.3 REPORT$
2.4 Binary constants
2.5 LEFT$ & RIGHT$ with last parameter omitted
2.6 MOD(array)
2.7 SUM(array)
2.8 SUMLEN(array)
2.9 GET$#file
3. BASIC V whole array operations
3.1 Pass a whole array to a FN/PROC
3.2 Pass a whole array to CALL
3.3 Whole array assignment
3.4 Whole array arithmetic *
3.5 Array dot-product operator
3.6 Array initialisation lists
3.7 Array compound assignment (+= etc.)
3.8 Make a whole array LOCAL
3.9 DIM a LOCAL array (on the stack) +
* String array expressions A$() = B$() + C$() are not currently supported.
+ LOCAL string arrays should be initialised to their maximum needed length
to eliminate the risk of a memory leak each time the PROC/FN is called:
LOCAL a$() : DIM a$(size%) : a$() = STRING$(max%, "a") : a$() = ""
4. Miscellaneous BASIC V features
4.1 Bit-shifts <<, >>, >>>
4.2 Floating-point indirection (|)
4.3 RETURNed parameters from FN/PROC
4.4 Compound assignment (+=, -=, *=, /= etc.)
4.5 Assigning to a sub-string: LEFT$()=, MID$()= , RIGHT$()=
4.6 Hooks for CIRCLE,ELLIPSE,FILL,LINE,MOUSE,ORIGIN,RECTANGLE,TINT,SYS,WAIT
4.7 Hooks for WIDTH function, TINT function, MODE function
5. Extensions to Acorn's BASIC V, compatible with BB4W, BBCSDL and BBCTTY
5.1 EXIT REPEAT / WHILE / FOR [var]
5.2 Address-of operator ^
5.3 Byte variables and arrays (& suffix)
5.4 'BY len' and 'TO term' qualifiers to GET$#file
5.5 ELSE IF <condition> THEN; (trailing semicolon)
5.6 == synonymous with = in comparisons
5.7 DIM a global array inside a FN/PROC (use RETURN)
Note: The token for PUT has changed from &CE in version 3 to &0E in version 5.
If this token is present in existing programs it will list as ENDWHILE rather
than PUT, and the programs will need to be modified to restore functionality.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,69 @@
TITLE BBC BASIC (C) R.T.RUSSELL 1981-2024
NAME ('DATA')
;
;RAM MODULE FOR BBC BASIC INTERPRETER
;FOR USE WITH VERSION 5.0 OF BBC BASIC
;(C) COPYRIGHT R.T.RUSSELL 1981-2024
;
GLOBAL ACCS
GLOBAL BUFFER
GLOBAL ONERSP
GLOBAL LIBASE
GLOBAL PAGE
GLOBAL LOMEM
GLOBAL FREE
GLOBAL HIMEM
GLOBAL RANDOM
GLOBAL COUNT
GLOBAL WIDTH
GLOBAL ERL
GLOBAL ERR
GLOBAL ERRTRP
GLOBAL ERRTXT
GLOBAL TRACEN
GLOBAL AUTONO
GLOBAL INCREM
GLOBAL LISTON
GLOBAL DATPTR
GLOBAL FNPTR
GLOBAL PROPTR
GLOBAL STAVAR
GLOBAL OC
GLOBAL PC
GLOBAL DYNVAR
GLOBAL CURLIN
GLOBAL USER
;
;n.b. ACCS, BUFFER & STAVAR must be on page boundaries.
;
ACCS: DEFS 256 ;STRING ACCUMULATOR
BUFFER: DEFS 256 ;STRING INPUT BUFFER
STAVAR: DEFS 27*4 ;STATIC VARIABLES
OC EQU STAVAR+15*4 ;CODE ORIGIN (O%)
PC EQU STAVAR+16*4 ;PROGRAM COUNTER (P%)
DYNVAR: DEFS 54*2 ;DYN. VARIABLE POINTERS
FNPTR: DEFS 2 ;DYN. FUNCTION POINTER
PROPTR: DEFS 2 ;DYN. PROCEDURE POINTER
;
PAGE: DEFS 2 ;START OF USER PROGRAM
LOMEM: DEFS 2 ;START OF DYN. STORAGE
FREE: DEFS 2 ;FIRST FREE-SPACE BYTE
HIMEM: DEFS 2 ;FIRST BYTE ABOVE STACK
LIBASE: DEFS 2 ;START OF FIRST LIBRARY
;
TRACEN: DEFS 2 ;TRACE FLAG AND NUMBER
AUTONO: DEFS 2 ;AUTO FLAG AND NUMBER
ERRTRP: DEFS 2 ;ON ERROR STMT POINTER \
ONERSP: DEFS 2 ;ON ERROR LOCAL STKPTR /
ERRTXT: DEFS 2 ;ERROR MESSAGE POINTER
DATPTR: DEFS 2 ;DATA POINTER
ERL: DEFS 2 ;LINE NO OF LAST ERROR
CURLIN: DEFS 2 ;POINTER TO CURRENT LINE
RANDOM: DEFS 5 ;RANDOM NUMBER
COUNT: DEFS 1 ;PRINT POSITION
WIDTH: DEFS 1 ;PRINT WIDTH
ERR: DEFS 1 ;ERROR NUMBER
LISTON: DEFS 1 ;LISTO & OPT FLAG
INCREM: DEFS 1 ;AUTO INCREMENT
;
USER: END

View File

@@ -1,7 +1,8 @@
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982-2024
NAME ('DIST3')
;
;BBC BASIC (Z80) - CP/M VERSION 2.30 & 3.00
;(C) COPYRIGHT R.T.RUSSELL, 1982.
;BBC BASIC (Z80) - CP/M VERSION 2.20 & 3.00
;(C) COPYRIGHT R.T.RUSSELL, 1982-2024.
;ALL RIGHTS RESERVED.
;
;THIS PROGRAM ALLOWS THE USER TO ADAPT BBC BASIC TO THE
@@ -13,11 +14,14 @@
;PLEASE NOTE THAT A Z80 PROCESSOR AND CP/M VERSION 2.2
;OR LATER ARE REQUIRED.
;
;R.T.RUSSELL, 11-03-1984, 03-05-1989
;ALTERNATE REGISTERS SAVED FOR BDOS CALL, 04-06-2000
;R.T.RUSSELL, 11-03-1984, 03-05-1989, 12-05-2024
;
CPM EQU 5
COLD EQU 200H
;
CR EQU 0DH
LF EQU 0AH
ESC EQU 1BH
;
GLOBAL CLRSCN
GLOBAL PUTCSR
@@ -26,14 +30,18 @@ COLD EQU 200H
GLOBAL GETIME
GLOBAL GETKEY
GLOBAL BYE
GLOBAL BEGIN
; GLOBAL BDOS
;
ASEG
ORG 100H
; EXTRN PRTDEC16
;
;ASEG
;ORG 100H
;
;JUMP TABLE - BASIC makes calls to hardware-dependent
;features via this table:
;
JP INIT
BEGIN: JP INIT
CLRSCN: JP CLS ;CLEAR SCREEN
PUTCSR: JP PCSR ;SET CURSOR POSN.
GETCSR: JP GCSR ;READ CURSOR POSN.
@@ -42,30 +50,33 @@ GETIME: JP GTIME ;READ ELAPSED TIME
GETKEY: JP INKEY ;READ KEY (TIME LIMIT)
BYE: JP REBOOT ;RETURN TO CP/M
;
;THE CODE WHICH FOLLOWS IS A SKELETON VERSION SUITABLE
;FOR ANY CP/M SYSTEM. IT HAS BEEN CONFIGURED FOR A VT100 TO SOME DEGREE
;BY PETER SCHORN.
;BDOS - Save the IX and IY registers and before performing a
; CP/M function call.
;
BDOS: PUSH IX
PUSH IY
CALL CPM
POP IY
POP IX
RET
;
PRSTR EQU 9
;INIT - Perform hardware initialisation (if any).
;
INIT: LD A,2
INC A
LD DE,NOTZ80
JP PE,FAIL
LD C,12
CALL BDOS
OR A
LD DE,NOTV2
JP NZ,COLD
FAIL: LD C,PRSTR
INIT: LD HL,40H ;CPM/HBIOS MARKER LOC
LD A,'W'
CP (HL)
JR NZ,FAIL
INC HL
LD A,NOT 'W'
CP (HL)
JR NZ,FAIL
JP COLD
FAIL: LD DE,NOTHB
LD C,9
CALL BDOS
RST 0
;
NOTZ80: DEFB 'Wrong processor$'
NOTV2: DEFB 'Wrong CP/M version$'
NOTHB: DEFB 'CP/M w/ HBIOS required$'
;
;REBOOT - Switch off interrupts and return to CP/M
;
@@ -75,31 +86,34 @@ REBOOT: RST 0
; Outputs: DEHL = elapsed time (centiseconds)
; Destroys: A,D,E,H,L,F
;
GTIME: LD DE,0
LD HL,0
RET
GTIME: JR TICKS
;
;PTIME - Load elapsed-time clock.
; Inputs: DEHL = time to load (centiseconds)
; Destroys: A,D,E,H,L,F
;
PTIME: RET
;
;CLS - Clear screen for VT100.
; Destroys: A,D,E,H,L,F
;
CLS: PUSH BC ; save BC
LD C,PRSTR ; command for output string
LD DE,CLSSTR ; start address of string
CALL BDOS ; output to terminal
POP BC ; restore BC
PTIME:
LD BC,0F9D0H
SRL D
RR E
RR H
RR L
RST 08
RET
;
; Get OS elapsed-time clock
; Outputs: DEHL = time (centiseconds)
; Destroys: A,B,C,D,E,H,L,F
;
TICKS: LD BC,0F8D0H
RST 08
SLA L
RL H
RL E
RL D
RET
CLSSTR: DEFB 27,'[2J$' ; VT100 string for clear screen
;
;INKEY - Sample keyboard with specified wait.
; This version uses a simple software timing loop.
; Modify to use hardware/interrupt timer if available.
; Inputs: HL = Time to wait (centiseconds)
; Outputs: Carry reset indicates time-out.
; If carry set, A = character typed.
@@ -107,52 +121,64 @@ CLSSTR: DEFB 27,'[2J$' ; VT100 string for clear screen
;
INKEY: PUSH BC
PUSH HL
CALL TICKS
POP DE
ADD HL,DE
WAIT: PUSH HL
LD C,6
LD E,0FFH
CALL BDOS ;CONSOLE INPUT
CALL BDOS
POP HL
POP BC
OR A
SCF
RET NZ ;KEY PRESSED
OR H
OR L
RET Z ;TIME-OUT
PUSH BC
LD A,-1
LD BC,1250 ;DELAY CONSTANT
WAIT: DEC BC
CP B
JP NZ,WAIT ;WAIT FOR APPROX 10ms
POP BC
DEC HL
JR INKEY
JR NZ,INKEY1
PUSH HL
CALL TICKS
POP DE
SBC HL,DE
EX DE,HL
JR C,WAIT
INKEY1: POP BC
RET
;
;CLS - Clear screen.
; (Customise to suit your VDU)
; Destroys: A,D,E,H,L,F
;
CLS:
LD DE,CLSSTR
LD C,9
JP BDOS
;
CLSSTR: DEFB ESC,'[H',ESC,'[2J$'
;
;PCSR - Move cursor to specified position.
; Inputs: DE = horizontal position (LHS=0)
; HL = vertical position (TOP=0)
; called by TAB(column, row)
; Destroys: A,D,E,H,L,F
;
PCSR: LD B,L ; vertical = line (row)
CALL CONV ; normalized and convert to decimal
LD (LIN),HL ; and store into string
LD B,E ; horizontal = column
CALL CONV ; normalized and convert to decimal
LD (COL),HL ; and store into string
LD C,PRSTR ; output string command
LD C,9 ; output string command
LD DE,CURS ; start of string
JR BDOS ; output string to terminal
JP BDOS ; output string to terminal
;
; VT100 sequence for cursor positioning
CURS: DEFB 27, '['
LIN: DEFW 0 ; high byte, low byte for decimal line
DEFB ';'
COL: DEFW 0 ; high byte, low byte for decimal column
DEFB 'H$'
;
; convert binary B (0 <= B < 99, not checked) into B+1 in decimal.
; L = upper byte, H = lower byte. ready for LD (...), HL
; destroys A, B, L, H
; optimized for space over time
;
CONV: INC B ; normalize, home in VT100 is (1,1)
LD A,'0' ; A is counter for low byte of result
LD L,A ; L is counter for high byte of result
@@ -164,35 +190,7 @@ CONVLP: INC A ; now B times increment AL in decimal
CONT: DJNZ CONVLP ; B times
LD H,A ; put low byte into right place
RET
;BDOS - Save the IX and IY and alternate registers
; before performing a CP/M function call.
;
BDOS: PUSH IX
PUSH IY
EXX
PUSH BC
PUSH DE
PUSH HL
EXX
EX AF,AF'
PUSH AF
EX AF,AF'
CALL CPM
EX AF,AF'
POP AF
EX AF,AF'
EXX
POP HL
POP DE
POP BC
EXX
POP IY
POP IX
RET
;GCSR - Return cursor coordinates.
; Outputs: DE = X coordinate (POS)
; HL = Y coordinate (VPOS)
@@ -202,24 +200,42 @@ GCSR: LD DE,0
LD HL,0
RET
;
IF $ GT 1F4H
;COUT - Output a character to the console
; Inputs: A = character
; Destroys: A,F
;
COUT: PUSH BC
PUSH DE
PUSH HL
LD E,A
LD C,2
CALL BDOS
POP HL
POP DE
POP BC
RET
;
;IF $ GT 1F0H
IF $-BEGIN GT 0F0H
ERROR 'INSUFFICIENT SPACE'
ENDIF
;
ORG 1F4H
;ORG 1F0H
DEFS 0F0H - ($ - BEGIN)
;
OFFLO: DEFW 0 ;TIME OFFSET LO
OFFHI: DEFW 0 ;TIME OFFSET HI
DEFB 80 ;WIDTH
DEFB 'E' AND 1FH ;CURSOR UP
DEFB 'X' AND 1FH ;CURSOR DOWN
DEFB 'A' AND 1FH ;START OF LINE
DEFB 'F' AND 1FH ;END OF LINE
DEFB 'T' AND 1FH ;DELETE TO END OF LINE
DEFB 'H' AND 1FH ;BACKSPACE
DEFB 'U' AND 1FH ;CANCEL LINE
DEFB 'S' AND 1FH ;CURSOR LEFT
DEFB 'D' AND 1FH ;CURSOR RIGHT
DEFB 'G' AND 1FH ;DELETE CHARACTER
DEFB 'V' AND 1FH ;INSERT CHARACTER
DEFB 'G' AND 1FH ;CURSOR UP
DEFB 'O' AND 1FH ;CURSOR DOWN
DEFB 'F' AND 1FH ;START OF LINE
DEFB 'N' AND 1FH ;END OF LINE
DEFB 'X' AND 1FH ;DELETE TO END OF LINE
DEFB 08H ;BACKSPACE & DELETE
DEFB 'U' AND 1FH ;DEL TO START OF LINE
DEFB 'J' AND 1FH ;CURSOR LEFT
DEFB 'L' AND 1FH ;CURSOR RIGHT
DEFB 'R' AND 1FH ;DELETE CHARACTER
DEFB 'Q' AND 1FH ;INS/OVR TOGGLE
;
FIN: END


File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,10 @@
@echo off
setlocal
set TOOLS=../../Tools
set TOOLS=..\..\Tools
set APPBIN=..\..\Binary\Apps
set PATH=%TOOLS%\tasm32;%TOOLS%\zxcc;%PATH%
set TASMTABS=%TOOLS%\tasm32
set CPMDIR80=%TOOLS%/cpm/
call :asm syscopy || exit /b
@@ -33,6 +30,7 @@ pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd Survey && call Build || exit /b & popd
pushd HTalk && call Build || exit /b & popd
pushd BBCBASIC && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b

View File

@@ -19,3 +19,4 @@ pushd VGM && call Clean || exit /b 1 & popd
pushd cpuspd && call Clean || exit /b 1 & popd
pushd Survey && call Clean || exit /b 1 & popd
pushd HTalk && call Clean || exit /b 1 & popd
pushd BBCBASIC && call Clean || exit /b 1 & popd

158
Source/Apps/FAT/ReadMe.md Normal file
View File

@@ -0,0 +1,158 @@
# RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen \
Updated: 6-May-2024
This application allows copying files between CP/M filesystems and FAT
filesystems (DOS, Windows, Mac, Linux, etc.). The application runs on
RomWBW hosted CP/M (and compatible) operating systems. The application
also has limited file management capabilities on FAT filesystems
including directory listing, renaming, deleting, and sub-directory
creation.
### Usage:
```
FAT DIR <path>
FAT COPY <src> <dst>
FAT REN <from> <to>
FAT DEL <path>[<file>|<dir>]
FAT MD <path>
FAT FORMAT <drv>
```
CP/M filespec: \<d\>:FILENAME.EXT (\<d\> is CP/M drive letter A-P) \
FAT filespec: \<u\>:/DIR/FILENAME.EXT (\<u\> is disk unit #)
### Notes:
- Partitioned or non-partitioned media is handled automatically.
A floppy drive is a good example of a non-partitioned FAT
filesystem and will be recognized. Larger media will typically
have a partition table which will be recognized by the
application to find the FAT filesystem.
- Although RomWBW-style CP/M media does not know anything about
partition tables, it is entirely possible to have media that
has both CP/M and FAT file systems on it. This is accomplished
by creating a FAT filesystem on the media that starts on a track
beyond the last track used by CP/M. Each CP/M slice can occupy
up to 8MB. So, make sure to start your FAT partition beyond
(slice count) * 9MB.
- The application infers whether you are attempting to reference
a FAT or CP/M filesystem via the drive specifier (char before ':').
A numeric drive character specifies the HBIOS disk unit number
for FAT access. An alpha (A-P) character indicates a CP/M
file system access targeting the specified drive letter. If there
is no drive character specified, the current CP/M filesystem and
current CP/M drive is assumed. For example:
`2:README.TXT` refers to FAT file README.TXT on disk unit #2 \
`C:README.TXT` refers to CP/M file README.TXT on CP/M drive C: \
`README.TXT` refers to CP/M file README.TXT on current CP/M drive
- FAT files with SYS, HIDDEN, or R/O attributes are not given
any special treatment. Such files are found and processed
like any other file. However, any attempt to write to a
read-only file will fail and the application will abort.
- It is not currently possible to reference CP/M user areas other
than the current user. To copy files to alternate user areas,
you must switch to the desired user number first or use an
additional step to copy the file to the desired user area.
- Accessing FAT filesystems on a floppy requires the use of
RomWBW HBIOS v2.9.1-pre.13 or greater.
- Only the first 8 RomWBW disk units (0-7) can be referenced.
- Files written are not verified.
- Wildcard matching in FAT filesystems is a bit unusual as
implemented by FatFs. See FatFs documentation.
- The `FAT FORMAT` command will not perform a physical format on
floppy disks. You must use FDU to do this prior to using
`FAT FORMAT`.
- Formatting (`FAT FORMAT`) of floppies does not work well. The
underlying FatFs library uses some non-standard fields. The
resulting floppy may or may not be useable on other systems. It is
best to format a FAT floppy on a Windows or DOS system. You should
have no problems copying files to/from such a floppy using `FAT`.
### Known Issues
- CP/M (and workalike) OSes have significant restrictions on filename
characters. The FAT application will block any attempt to create a
file on the CP/M filesystem containing any of these prohibited
characters:
| `< > . , ; : ? * [ ] |/ \`
The operation will be aborted with "`Error: Invalid Path Name`" if such
a filename character is encountered.
Since MS-DOS does allow some of these characters, you can have
issues when copying files from MS-DOS to CP/M if the MS-DOS filenames
use these characters. Unfortunately, FAT is not yet smart enough to
substitute illegal characters with legal ones. So, you will need to
clean the filenames before trying to copy them to CP/M.
- The FAT application does try to detect the scenario where you are
copying a file to itself. However, this detection is not perfect and
can corrupt a file if it occurs. Be careful to avoid this.
### License:
GNU GPLv3 (see file LICENSE.txt)
### Build Notes:
- Source is maintained on GitHub at <https://github.com/wwarthen/FAT>.
- Application is based on FatFs. FatFs source is included. See
<http://elm-chan.org/fsw/ff/>.
- SDCC compiler v4.3 or greater is required to build. New calling
conventions introduced in v4.3 are assumed.
- See Build.cmd for sample build script under Windows. References
to SDCC must be updated for your environment.
- Note that ff.c (core FatFs code) generates quite a few compiler
warnings (all appear to be benign).
### To Do:
- Allow ^C to abort any operation in progress.
- Allow referencing more than the first 8 RomWBW disk units.
- Handle wildcards in destination, e.g.:
`FAT REN 2:/*.TXT 2:/*.BAK`
- Do something intelligent with R/O and SYS file attributes
- Support UNA
### History:
| 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) |
| 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 |
| 11-Oct-2019 | v0.9.7 | (beta) fix FORMAT to use existing partition table entries |
| | | 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) |
| | | updated to latest SDCC (v4.3) |
| 6-May-2024 | v1.1.0 | improve floppy format boot record |

View File

@@ -1,105 +0,0 @@
RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen
Updated: 12-Oct-2023
Application to manipulate and exchange files with a FAT (DOS)
filesystem. Runs on any HBIOS hosted CP/M implementation.
USAGE:
FAT DIR <path>
FAT COPY <src> <dst>
FAT REN <from> <to>
FAT DEL <path>[<file>|<dir>]
FAT MD <path>
FAT FORMAT <drv>
CP/M filespec: <d>:FILENAME.EXT (<d> is CP/M drive letter A-P)
FAT filespec: <u>:/DIR/FILENAME.EXT (<u> is disk unit #)
LICENSE:
GNU GPLv3 (see file LICENSE.txt)
NOTES:
- Partitioned or non-partitioned media is handled automatically.
A floppy drive is a good example of a non-partitioned FAT
filesystem and will be recognized. Larger media will typically
have a partition table which will be recognized by the
application to find the FAT filesystem.
- Although RomWBW-style CP/M media does not know anything about
partition tables, it is entirely possible to have media that
has both CP/M and FAT file systems on it. This is accomplished
by creating a FAT filesystem on the media that starts on a track
beyond the last track used by CP/M. Each CP/M slice on a
media will occupy a little over 8MB. So, make sure to start
your FAT partition beyond (slice count) * 8MB.
- The application infers whether you are attempting to reference
a FAT or CP/M filesystem via the drive specifier (char before ':').
A numeric drive character specifies the HBIOS disk unit number
for FAT access. An alpha (A-P) character indicates a CP/M
file system access targeting the specified drive letter. If there
is no drive character specified, the current CP/M filesystem and
current CP/M drive is assumed. For example:
"2:README.TXT" refers to FAT file README.TXT on disk unit #2
"C:README.TXT" refers to CP/M file README.TXT on CP/M drive C
"README.TXT" refers to CP/M file README.TXT on current CP/M drive
- FAT files with SYS, HIDDEN, or R/O only attributes are not given
any special treatment. Such files are found and processed
like any other file. However, any attempt to write to a
read-only file will fail and the application will abort.
- It is not currently possible to reference CP/M user areas other
than the current user. To copy files to alternate user areas,
you must switch to the desired user number first or use an
additional step to copy the file to the desired user area.
- Accessing FAT filesystems on a floppy requires the use of
RomWBW HBIOS v2.9.1-pre.13 or greater.
- Files written are not verified.
- Wildcard matching in FAT filesystems is a bit unusual as
implemented by FatFs. See FatFs documentation.
BUILD NOTES:
- Source is maintained on GitHub at https://github.com/wwarthen/FAT
- Application is based on FatFs. FatFs source is included.
- SDCC compiler is required to build (v4.0.0 known working).
- ZX CP/M emulator is required to build (from RomWBW distribution).
- See Build.cmd for sample build script under Windows. References
to SDCC and ZX must be updated for your environment.
- Note that ff.c (core FatFs code) generates quite a few compiler
warnings (all appear to be benign).
TO DO:
- Allow ^C to abort any operation in progress.
- Handle wildcards in destination, e.g.:
"FAT REN 2:/*.TXT 2:/*.BAK"
- Do something intelligent with R/O and SYS files on FAT
- Support UNA
HISTORY:
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
11-Oct-2019: v0.9.7 (beta) fix FORMAT to use existing partition table entries
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

Binary file not shown.

View File

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

View File

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

View File

@@ -1,6 +1,6 @@
OBJECTS = sysgen.com syscopy.com assign.com format.com talk.com \
mode.com rtc.com timer.com rtchb.com
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey BBCBASIC
DEST = ../../Binary/Apps
TOOLS =../../Tools

View File

@@ -24,6 +24,7 @@ pushd 2piotst && call Build || exit /b & popd
pushd piomon && call Build || exit /b & popd
pushd banktest && call Build || exit /b & popd
pushd portscan && call Build || exit /b & popd
pushd sound && call Build || exit /b & popd
goto :eof

View File

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

View File

@@ -1,5 +1,5 @@
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound
DEST = ../../../Binary/Apps/Test
TOOLS =../../../Tools

View File

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

View File

@@ -1,5 +1,7 @@
OBJECTS = inttest.com
DOCS = inttest.doc
DEST = ../../../../Binary/Apps/Test
DOCDEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools
USETASM=1

View File

@@ -176,6 +176,8 @@ estidx:
jr z,hkim
cp 2
jr z,hkim
cp 3
jr z,hkim
ret
;
; Setup interrupt handler
@@ -545,8 +547,8 @@ stack .equ $ ; stack top
;
; Messages
;
msgban .db "INTTEST v1.2, 15-May-2019",13,10
.db "Copyright (C) 2019, Wayne Warthen, GNU GPL v3",0
msgban .db "INTTEST v1.3, 16-May-2024",13,10
.db "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",0
msginfo .db "Interrupt information request...",0
msgmode .db " Active interrupt mode: ",0
msgcnt .db " Vector entries in use: ",0

View File

@@ -0,0 +1,44 @@
INTTEST
=======
RomWBW includes an API allowing applications to "hook" interrupts.
The `INTTEST` utility allows you to test this functionality.
** Syntax **
`INTTEST`
** Usage **
`INTTEST` is an interactive application. At startup, it will display
a list of the interrupt vector slots in your system along with the
current vector address for each of them.
It then prompts you to enter the slot number (in hex) of a vector to
hook. After entering this, the application will watch the hooked
vector and countdown from 0xFF to 0x00 as interrupts are noted.
When the counter reaches 0x00, the interrupt is unhooked and the
application terminates. The application can also be terminated by
pressing <esc>.
** Notes **
If your system is running without interrupts active, the application
will terminate immediately.
All slots have vectors even if the corresponding interrupt is not
doing anything. In this case, the vector is pointing to the "bad
interrupt" handler.
If you hook a vector that is not receiving any interrupts, the
down-counter will not do anything.
** Etymology* *
The `INTTEST` command is an original product and the source code is
provided in the RomWBW distribution.

View File

@@ -11,6 +11,7 @@
; WBW 2022-04-01: Add menu for test functions
; 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
;
;=======================================================================
;
@@ -25,6 +26,10 @@ iodat_rph .equ $8C ; PS/2 controller data port address
; Duodyne:
iocmd_duo .equ $4D ; PS/2 controller command port address
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
;
cpumhz .equ 8 ; for time delay calculations (not critical)
;
@@ -87,6 +92,8 @@ setup1:
jr z,setup_rph
cp '3' ; Duodyne
jr z,setup_duo
cp '4' ; RC2014 EP/Sally
jr z,setup_rc
cp 'X'
jr z,exit
jr setup
@@ -115,6 +122,14 @@ setup_duo:
ld de,str_duo
jr setup2
;
setup_rc:
ld a,iocmd_rc
ld (iocmd),a
ld a,iodat_rc
ld (iodat),a
ld de,str_rc
jr setup2
;
setup2:
call prtstr
call crlf2
@@ -1437,16 +1452,18 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "PS/2 Keyboard/Mouse Information v0.8, 6-Nov-2023",0
str_banner .db "PS/2 Keyboard/Mouse Information v0.9, 10-Jun-2024",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 " 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_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

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

View File

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

View File

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

View File

@@ -1,329 +0,0 @@
;
;------------------------------------------------------------------------------
; PLAY SCALES USING HBIOS
;------------------------------------------------------------------------------
;
FCB .EQU $5C ; Location of default FCB
BDOS .EQU $0005
;
.ORG $0100
;
LD (OLDSTACK),SP ; save old stack pointer
LD SP,STACK ; set new stack pointer
;
;------------------------------------------------------------------------------
; GET DEVICE # FROM COMMAND LINE
;------------------------------------------------------------------------------
;
LD A,(FCB+1) ; GET FIRST CHAR
SUB ' '
JR Z,NO_ARG
SUB '0'-' '
JP C,EXIT
;
;------------------------------------------------------------------------------
; DISPLAY DEVICE AND NUMBER OF CHANNELS
;------------------------------------------------------------------------------
;
NO_ARG: LD (DEVICE),A ;
LD DE,TXT_DEV ; DEVICE:
CALL PRTSTR
CALL PRTDECB
LD C,A ; GET DEVICE ID
LD A,':'
CALL PRTCHR
LD B,$55
PUSH BC
LD E,4
RST 08
LD DE,TXT_NAME
LD A,B
RRCA \ RRCA \ RRCA \ RRCA
CALL PRTIDXDEA ; SHOW NAME
LD DE,TXT_CH
CALL PRTSTR
;
POP BC ; GET & DISPLAY # CHANNELS
LD E,1
RST 08
LD A,B
CALL PRTDECB
CALL CRLF ; NUMBER OF CHANNELS IS IN B
;
;------------------------------------------------------------------------------
; LOOP THROUGH EACH CHANNEL
;------------------------------------------------------------------------------
CH__TONE: LD A,(DEVICE) ; C CONTAINS DEVICE
LD C,A ; THROUGH THIS LOOP
;
PUSH BC
LD B,50H ; RESET DEVICE
RST 08
POP BC
;
PUSH BC
LD B,51H ; VOLUME FULL
LD L,0FFH
RST 08
POP BC
;
LD A,B
TST_TONE_LP: DEC A
LD (CHANNEL),A ; SAVE CURRENT CHANNEL
CALL TST_SCALES ; SCALES TEST
; CALL TST_VOLUME ; VOLUME TEST
CALL CRLF
DJNZ TST_TONE_LP
;
PUSH BC
LD B,50H ; RESET DEVICE
RST 08
POP BC
;
;------------------------------------------------------------------------------
; RESTORE STACK & EXIT
;------------------------------------------------------------------------------
;
EXIT: LD SP, (OLDSTACK) ; Exit to CP/M
RST 00H
DI
HALT
;
;------------------------------------------------------------------------------
; PLAY SCALES FROM HIGHEST HBIOS NOTE TO LOWEST
;------------------------------------------------------------------------------
;
TST_SCALES: PUSH BC
PUSH AF
;
LD HL,380 ; START NOTE
LD (NOTE),HL ; Top of Octave 7 is 343
LD B,51H ; VOLUME HIGH
LD L,0FFH
PUSH BC
RST 08
POP BC
;
NEXT0: PUSH BC
;
LD DE,TXT_TSTCH ; DISPLAY CHANNEL
CALL PRTSTR
LD A,(CHANNEL)
CALL PRTDECB
;
LD DE,TXT_NOTE ; DISPLAY NOTE
CALL PRTSTR
LD HL,(NOTE)
CALL PRTDECW
POP BC
;
LD B,53H ; SET NOTE
LD HL,(NOTE)
PUSH BC
RST 08
POP BC
OR A ; DID DRIVER FAIL
JR Z,NEXT4 ; THIS NOTE ?
LD DE,TXT_BAD_N
CALL FAILMSG
JR SKIP
;
NEXT4: LD B,57H ; DURATION
LD HL,1000
PUSH BC
RST 08
POP BC
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
OR A ; DID DRIVER FAIL
JR Z,NEXT2 ; TO PLAY ?
LD DE,TXT_BAD_N
CALL FAILMSG
JR SKIP
;
NEXT2: CALL DELAY
CALL CRLF
;
SKIP: LD HL,(NOTE)
DEC HL
LD (NOTE),HL
INC HL
LD A,H
OR L
DEC HL
JR NZ,NEXT0
;
LD B,51H ; VOLUME
LD L,00H ; OFF
PUSH BC
RST 08
POP BC
;
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
PUSH BC
LD C, 6 ; check for keypress
LD E,0FFH
CALL BDOS
POP BC
OR A
JP NZ,EXIT
POP AF
POP BC
;
RET
;
FAILMSG: PUSH AF
PUSH BC
CALL PRTSTR
CALL CRLF
POP BC
POP AF
RET
;
;------------------------------------------------------------------------------
; CONSTANT TONE ON ALL CHANNELS, SCALE VOLUME
;------------------------------------------------------------------------------
;
TST_VOLUME:
LD HL,332+48 ; TONE
LD (NOTE),HL
;
LD B,3
NEXTCH1 LD A,B
DEC A
LD (CHANNEL),A
PUSH BC ; ACROSS
CALL TONE ; ALL
LD C, 6 ; KEYPRESS
LD E, 0FFH
CALL BDOS
POP BC ; CHANNELS
OR A
JP NZ,EXIT
DJNZ NEXTCH1
RET
TONE: LD A,(DEVICE)
LD C,A
LD B,50H ; RESET
PUSH BC
RST 08
POP BC
;
NEXT1: LD B,51H ; VOLUME
LD A,(VOLUME)
LD L,A
PUSH BC
RST 08
POP BC
;
LD B,53H ; NOTE
LD HL,(NOTE)
PUSH BC
RST 08
POP BC
;
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
CALL DELAY
;
LD A,(VOLUME)
DEC A
LD (VOLUME),A
JR NZ,NEXT1
;
LD B,51H ; VOLUME
LD L,00H
PUSH BC
RST 08
POP BC
;
LD B,54H ; PLAY
PUSH BC
LD A,(CHANNEL)
LD D,A
POP BC
RST 08
;
RET
;;
;------------------------------------------------------------------------------
; LONG DELAY
;------------------------------------------------------------------------------
;
DELAY: LD HL,-1
DELAY1: DEC HL
LD A,H
OR L
JR NZ,DELAY1
RET
;
;------------------------------------------------------------------------------
; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY 0
; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS
; TO THE START OF THE STRING LIST.
;------------------------------------------------------------------------------
;
PRTIDXDEA: LD C,A
OR A
PRTIDXDEA1: JR Z,PRTIDXDEA3 ; FOUND TARGET SO EXIT
PRTIDXDEA2: LD A,(DE) ; LOOP UNIT
INC DE ; WE REACH
OR A ; END OF STRING
JR NZ,PRTIDXDEA2
DEC C ; AT STRING END. SO GO
JR PRTIDXDEA1 ; CHECK FOR INDEX MATCH
PRTIDXDEA3: CALL PRTSTR ; DISPLAY THE STRING
RET
;
#INCLUDE "printing.inc"
;
TXT_CH .DB "CHANNELS: ",0
TXT_TSTCH .DB "CHANNEL: ",0
TXT_BAD_N .DB " BAD NOTE",0
TXT_BAD_P .DB " PLAY ERROR",0
TXT_NOTE .DB " NOTE: ",0
TXT_DEV .DB "DEVICE: ",0
TXT_NAME .DB "SN76489 ",0
.DB "AY-3-8910 ",0
.DB "I/O PORT ",0
.DB "YM2612 ",0
MODE .DB 0 ; scales mode or volume mode
DEVICE .DB 0
NOTE .DW 128
VOLUME .DB 0
CHANNEL .DB 0
OLDSTACK .DW 0 ; original stack pointer
.DS 40H ; space for stack
STACK ; top of stack
;
.END

View File

@@ -13,9 +13,9 @@
;
; Hardware port addresses
;
rsel .equ $9A ; Register seelection port address
rdat .equ $9B ; Register data port address
acr .equ $9C ; Aux control register port address
rsel .equ $A4 ; Register seelection port address
rdat .equ $A5 ; Register data port address
acr .equ $A2 ; Aux control register port address
;
; CPU speed for delay scaling
;

View File

@@ -0,0 +1,177 @@
;
; 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
;
PRTCR:
;
; shortcut to print a carriage return preserving all regs
PUSH AF ; save af
LD A,13 ; load CR value
CALL PRTCHR ; print it
POP AF ; restore af
RET ; done
;
; Print a zero terminated string at (DE) without destroying any registers
;
PRTSTR:
PUSH AF
PUSH DE
;
PRTSTR1:
LD A,(DE) ; get next char
OR A
JR Z,PRTSTR2
CALL PRTCHR
INC DE
JR PRTSTR1
;
PRTSTR2:
POP DE ; restore registers
POP AF
RET
;
; Print 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

View File

@@ -0,0 +1,460 @@
;
;=======================================================================
; RomWBW HBIOS Sound Device Test Tool (SOUND)
;=======================================================================
;
; Simple utility that can exercise a sound device in RomWBW. It can
; play a single tone, sliding scale, or sliding volume.
;
; I'm not actually sure who wrote the original version of this, but I
; suspect it was Phil Summers.
;
; WBW 2024-03-21: Control test function by command line
; Add (T)one function
;
;=======================================================================
;
;------------------------------------------------------------------------------
; PLAY SCALES USING HBIOS
;------------------------------------------------------------------------------
;
FCB .EQU $5C ; Location of default FCB
BDOS .EQU $0005
;
.ORG $0100
;
LD (OLDSTACK),SP ; save old stack pointer
LD SP,STACK ; set new stack pointer
;
LD DE,TXT_BANNER
CALL PRTSTR
;
;------------------------------------------------------------------------------
; PARSE COMMAND LINE
;------------------------------------------------------------------------------
;
LD HL,FCB+1 ; POINT TO FCB CHARS
LD B,8 ; PARSE 8 CHARS
PARSE:
PUSH BC
LD A,(HL) ; GET NEXT CHAR
;
; IF NUMBER, SET DEVICE ID
CP '0'
JR C,PARSE1 ; IF < 0, SKIP
CP '9'+ 1
JR NC,PARSE1 ; IF > 9, SKIP
SUB '0' ; MAKE BINARY
LD (DEVICE),A ; SAVE DEVICE NUM
JR PARSE2 ; CONTINUE LOOP
PARSE1:
; IF LETTER, SET RUN OPTION
CP 'A'
JR C,PARSE2 ; IF < A, SKIP
CP 'Z'+ 1
JR NC,PARSE1 ; IF > Z, SKIP
LD (OPTION),A ; SAVE RUN OPTION
JR PARSE2 ; CONTINUE LOOP
;
PARSE2:
INC HL ; BUMP PTR
DJNZ PARSE
;
LD A,(OPTION) ; GET OPTION
CP ' ' ; HAVE OPTION?
JR NZ,RUN ; IF SO, RUN
LD DE,TXT_USAGE ; ELSE GET USAGE
CALL PRTSTR ; AND DISPLAY IT
JP EXIT ; AND GET OUT
;
;------------------------------------------------------------------------------
; DISPLAY DEVICE AND NUMBER OF CHANNELS
;------------------------------------------------------------------------------
;
RUN:
LD DE,TXT_DEV ; DEVICE:
CALL PRTSTR
LD A,(DEVICE)
CALL PRTDECB
LD C,A ; GET DEVICE ID
LD A,':'
CALL PRTCHR
;
LD B,$55 ; HBIOS SND QUERY
LD A,(DEVICE)
LD C,A
;
PUSH BC ; SAVE FUNC AND ID
LD E,4 ; HBIOS SNDQ DEV
RST 08
LD A,B
;RRCA \ RRCA \ RRCA \ RRCA
LD DE,TXT_NAME
CALL PRTIDXDEA ; SHOW NAME
;
LD DE,TXT_CH
CALL PRTSTR
POP BC ; RESTORE FUNC AND ID
LD E,1 ; HBIOS SNDQ_CHCNT
RST 08
LD A,B ; NUMBER OF CHANNELS IS IN B
LD (CHANNELS),A ; SAVE IT
CALL PRTDECB ; PRINT IT
CALL CRLF
;
;------------------------------------------------------------------------------
; LOOP THROUGH EACH CHANNEL
;------------------------------------------------------------------------------
;
LD A,(DEVICE) ; GET DEVICE
LD C,A ; INTO C
PUSH BC ; SAVE IT
LD B,$50 ; RESET SND DEVICE
RST 08 ; DO IT
POP BC ; RECOVER DEVICE
LD B,$51 ; SET VOLUME
LD L,$FF ; TO MAX
RST 08 ; DO IT
;
LD A,(CHANNELS)
LD B,A ; B IS LOOP COUNTER
LD C,0 ; C IS CHANNEL INDEX
;
CH_LOOP:
PUSH BC ; SAVE LOOP CTL
LD A,C ; CHANNEL
LD (CHANNEL),A ; TO STORAGE
CALL CH_RUN ; DO CHANNEL
PUSH AF
LD A,(DEVICE)
LD C,A
LD B,50H ; RESET
RST 08
POP AF
POP BC ; RECOVER LOOP CTL
JR NZ,EXIT ; HANDLE ERROR/ABORT
INC C ; NEXT CHANNEL
DJNZ CH_LOOP ; LOOP AS NEEDED
;
LD A,(DEVICE) ; GET DEVICE
LD C,A ; TO C
LD B,50H ; RESET DEVICE
RST 08 ; DO IT
JR EXIT ; DONE
;
CH_RUN:
LD A,(OPTION) ; RUN OPTION
CP 'S' ; SCALES?
JP Z,TST_SCALES ; IF SO, DO SCALES
CP 'V' ; VOLUME?
JP Z,TST_VOLUME ; IF SO, DO VOLUME
CP 'T' ; TONE
JP Z,TST_TONE ; IF SO, DO TONE
RET
;
;------------------------------------------------------------------------------
; RESTORE STACK & EXIT
;------------------------------------------------------------------------------
;
EXIT: LD SP, (OLDSTACK) ; Exit to CP/M
RST 00H
DI
HALT
;
;------------------------------------------------------------------------------
; PLAY SCALES FROM HIGHEST HBIOS NOTE TO LOWEST
;------------------------------------------------------------------------------
;
TST_SCALES: LD A,(DEVICE) ; SETUP DEVICE FOR BELOW
LD C,A
;
LD HL,380 ; START NOTE
LD (NOTE),HL ; Top of Octave 7 is 343
LD B,51H ; VOLUME HIGH
LD L,0FFH ; MAX
PUSH BC
RST 08
POP BC
;
NEXT0: PUSH BC
;
LD DE,TXT_TSTCH ; DISPLAY CHANNEL
CALL PRTSTR
LD A,(CHANNEL)
CALL PRTDECB
;
LD DE,TXT_NOTE ; DISPLAY NOTE
CALL PRTSTR
LD HL,(NOTE)
CALL PRTDECW
POP BC
;
LD B,53H ; SET NOTE
LD HL,(NOTE)
PUSH BC
RST 08
POP BC
OR A ; DID DRIVER FAIL
JR Z,NEXT4 ; THIS NOTE ?
LD DE,TXT_BAD_N
CALL FAILMSG
JR SKIP
;
NEXT4: LD B,57H ; DURATION
LD HL,1000
PUSH BC
RST 08
POP BC
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
OR A ; DID DRIVER FAIL
JR Z,NEXT2 ; TO PLAY ?
LD DE,TXT_BAD_N
CALL FAILMSG
JR SKIP
;
NEXT2: CALL DELAY
CALL CRLF
;
SKIP:
PUSH BC
LD C, 6 ; CHECK FOR KEYPRESS
LD E,0FFH
CALL BDOS
POP BC
OR A ; SET RESULT
RET NZ ; RETURN IF ABORT
LD HL,(NOTE)
DEC HL
LD (NOTE),HL
INC HL
LD A,H
OR L
DEC HL
JR NZ,NEXT0
;
LD B,51H ; VOLUME
LD L,00H ; OFF
PUSH BC
RST 08
POP BC
;
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
XOR A ; SET RESULT
RET
;
FAILMSG: PUSH BC
CALL PRTSTR
CALL CRLF
POP BC
RET
;
;------------------------------------------------------------------------------
; CONSTANT TONE ON ALL CHANNELS, SCALE VOLUME
;------------------------------------------------------------------------------
;
TST_VOLUME:
; LD HL,332+48 ; TONE
LD HL,244 ; ~1000 HZ
LD (NOTE),HL
;
LD DE,TXT_TSTCH ; DISPLAY CHANNEL
CALL PRTSTR
LD A,(CHANNEL)
CALL PRTDECB
LD A,(DEVICE)
LD C,A
LD B,50H ; RESET
PUSH BC
RST 08
POP BC
;
NEXT1:
LD B,51H ; VOLUME
LD A,(VOLUME)
LD L,A
PUSH BC
RST 08
POP BC
;
LD B,53H ; NOTE
LD HL,(NOTE)
PUSH BC
RST 08
POP BC
;
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
CALL DELAY
PUSH BC
LD C, 6 ; KEYPRESS
LD E, 0FFH
CALL BDOS
POP BC ; RECOVER LOOP CTRL
OR A ; KEY PRESSED?
RET NZ ; BAIL OUT IF SO
;
LD A,(VOLUME)
DEC A
LD (VOLUME),A
JR NZ,NEXT1
;
CALL CRLF
;
RET
;
;------------------------------------------------------------------------------
; 1 KHZ TONE ON CHANNEL, PLAY TILL KEYPRESS
;------------------------------------------------------------------------------
;
TST_TONE:
LD HL,244 ; ~1000 HZ
LD (NOTE),HL
;
LD DE,TXT_TSTCH ; DISPLAY CHANNEL
CALL PRTSTR
LD A,(CHANNEL)
CALL PRTDECB
;
LD A,(DEVICE)
LD C,A
;
LD B,50H ; RESET
PUSH BC
RST 08
POP BC
;
LD B,51H ; VOLUME
LD A,$FF ; MAX
LD L,A
PUSH BC
RST 08
POP BC
;
LD B,53H ; NOTE
LD HL,(NOTE)
PUSH BC
RST 08
POP BC
;
TST_TONE1:
;
LD B,54H ; PLAY
LD A,(CHANNEL)
LD D,A
PUSH BC
RST 08
POP BC
;
;CALL DELAY
;
PUSH BC
LD C, 6 ; KEYPRESS
LD E, 0FFH
CALL BDOS
OR A ; KEY PRESSED?
POP BC
JR Z,TST_TONE1
CALL CRLF
XOR A
RET ; RETURN ON KEYPRESS
;
;------------------------------------------------------------------------------
; LONG DELAY
;------------------------------------------------------------------------------
;
;DELAY: LD HL,-1
DELAY: LD HL,1000
DELAY1: DEC HL
LD A,H
OR L
JR NZ,DELAY1
RET
;
;------------------------------------------------------------------------------
; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY 0
; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS
; TO THE START OF THE STRING LIST.
;------------------------------------------------------------------------------
;
PRTIDXDEA: LD C,A
OR A
PRTIDXDEA1: JR Z,PRTIDXDEA3 ; FOUND TARGET SO EXIT
PRTIDXDEA2: LD A,(DE) ; LOOP UNIT
INC DE ; WE REACH
OR A ; END OF STRING
JR NZ,PRTIDXDEA2
DEC C ; AT STRING END. SO GO
JR PRTIDXDEA1 ; CHECK FOR INDEX MATCH
PRTIDXDEA3: CALL PRTSTR ; DISPLAY THE STRING
RET
;
#INCLUDE "printing.inc"
;
TXT_BANNER .DB 13,10,"RomWBW HBIOS Sound Tool v1.0, 21-Mar-2024",13,10,13,10,0
TXT_USAGE .DB "Usage:",13,10
.DB "SOUND <d><o>",13,10
.DB "",13,10
.DB " <d> is number of sound device",13,10
.DB " <o> is option to run:",13,10
.DB " 'T': play a 1 KHz tone on each channel until keypress",13,10
.DB " 'S': play a scale of notes on each channel",13,10
.DB " 'V': play a 1 KHz tone at all volumes on each channel",13,10
.DB "",13,10
.DB "Examples:",13,10
.DB "SOUND 1T - play a tone on all channels of sound device unit #1",13,10
.DB "SOUND 0S - play a scale on all channels of sound device unit #0",13,10,0
TXT_CH .DB "CHANNELS=",0
TXT_TSTCH .DB "CHANNEL: ",0
TXT_BAD_N .DB " BAD NOTE",0
TXT_BAD_P .DB " PLAY ERROR",0
TXT_NOTE .DB " NOTE: ",0
TXT_VOL .DB " VOLUME: ",0
TXT_DEV .DB "DEVICE: ",0
TXT_NAME .DB "SN76489 ",0
.DB "AY-3-8910 ",0
.DB "I/O PORT ",0
.DB "YM2612 ",0
MODE .DB 0 ; scales mode or volume mode
DEVICE .DB 0
OPTION .DB ' ' ; run scales
NOTE .DW 128
VOLUME .DB 0
CHANNEL .DB 0
CHANNELS .DB 0
OLDSTACK .DW 0 ; original stack pointer
.DS 40H ; space for stack
STACK ; top of stack
;
.END

View File

@@ -46,6 +46,11 @@
; 2021-08-17 [WBW] When playing via HBIOS, call BF_SNDRESET at end
; 2022-03-20 [DDW] Add support for MBC PSG module
; 2023-03-30 [WBW] Fix for quark delay adjustment being trashed
; 2024-02-23 [WBW] Include ACR value in config table
; 2024-04-16 [WBW] Add support for NABU AY-3-8910
; 2024-05-10 [WBW] Hack to avoid corrupting bits 6&7 of PSG R7 for NABU!
; 2024-07-08 [WBW] Add support for Les Bird's Graphics, Sound, Joystick
; 2024-07-11 [WBW] Updated, Les Bird's module now uses same settings as EB6
;_______________________________________________________________________________
;
; ToDo:
@@ -138,11 +143,10 @@ CFGSEL:
; Activate card if applicable
CALL SLOWIO ; Slow down I/O now
LD A,(ACR) ; Get ACR port address (if any)
LD C,A ; Copy to C for I/O later
INC A ; $FF -> $00 & set flags
JR Z,PROBE ; Skip ahead to probe if no ACR
DEC A ; Restore real ACR port address
LD C,A ; Put in C for I/O
LD A,$FF ; Value to activate card
JR Z,PROBE ; If no ACR, skip ahead
LD A,(ACRVAL) ; Value to activate card
OUT (C),A ; Write value to ACR
;
PROBE:
@@ -554,84 +558,87 @@ ERR2: ; without the string
;
; CONFIG TABLE, ENTRY ORDER MATCHES HBIOS PLATFORM ID
;
CFGSIZ .EQU 8
;
CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR ACRVAL
; DESC
.DB $01, $9A, $9B, $9A, $FF, $9C ; SBC W/ SCG
.DB $01, $9A, $9B, $9A, $FF, $9C, $FF ; SBC W/ SCG
.DW HWSTR_SCG
;
.DB $04, $9C, $9D, $9C, $40, $FF ; N8 W/ ONBOARD PSG
CFGSIZ .EQU $ - CFGTBL
;
.DB $04, $9C, $9D, $9C, $40, $FF, $FF ; N8 W/ ONBOARD PSG
.DW HWSTR_N8
;
.DB $05, $9A, $9B, $9A, $40, $9C ; MK4 W/ SCG
.DB $05, $9A, $9B, $9A, $40, $9C, $FF ; MK4 W/ SCG
.DW HWSTR_SCG
;
.DB $07, $D8, $D0, $D8, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (EB)
.DB $07, $D8, $D0, $D8, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $07, $A0, $A1, $A2, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $07, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $07, $D1, $D0, $D0, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MF)
.DB $07, $D1, $D0, $D0, $FF, $FF, $FF ; RCZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $07, $33, $32, $32, $FF, $FF ; RCZ80 W/ LINC SOUND MODULE
.DB $07, $33, $32, $32, $FF, $FF, $FF ; RCZ80 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $08, $68, $60, $68, $C0, $FF ; RCZ180 W/ RC SOUND MODULE (EB)
.DB $08, $68, $60, $68, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $08, $A0, $A1, $A2, $C0, $FF ; RCZ180 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $08, $A0, $A1, $A2, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $08, $61, $60, $60, $C0, $FF ; RCZ180 W/ RC SOUND MODULE (MF)
.DB $08, $61, $60, $60, $C0, $FF, $FF ; RCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $08, $33, $32, $32, $C0, $FF ; RCZ180 W/ LINC SOUND MODULE
.DB $08, $33, $32, $32, $C0, $FF, $FF ; RCZ180 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $09, $D8, $D0, $D8, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB)
.DB $09, $D8, $D0, $D8, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $09, $A0, $A1, $A2, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $09, $A0, $A1, $A2, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $09, $D1, $D0, $D0, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MF)
.DB $09, $D1, $D0, $D0, $FF, $FF, $FF ; EZZ80 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $09, $33, $32, $32, $FF, $FF ; EZZ80 W/ LINC SOUND MODULE
.DB $09, $33, $32, $32, $FF, $FF, $FF ; EZZ80 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $0A, $68, $60, $68, $C0, $FF ; SCZ180 W/ RC SOUND MODULE (EB)
.DB $0A, $68, $60, $68, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $0A, $A0, $A1, $A2, $C0, $FF ; SCZ180 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $0A, $A0, $A1, $A2, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (MS6)
.DW HWSTR_RCMSX
;
.DB $0A, $61, $60, $60, $C0, $FF ; SCZ180 W/ RC SOUND MODULE (MF)
.DB $0A, $61, $60, $60, $C0, $FF, $FF ; SCZ180 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $0A, $33, $32, $32, $C0, $FF ; SCZ180 W/ LINC SOUND MODULE
.DB $0A, $33, $32, $32, $C0, $FF, $FF ; SCZ180 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB $0B, $D8, $D0, $D8, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB)
.DB $0B, $D8, $D0, $D8, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB)
.DW HWSTR_RCEB
;
.DB $0B, $A0, $A1, $A2, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (EB Rev 6)
.DW HWSTR_RCEB6
.DB $0B, $A0, $A1, $A2, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MSX)
.DW HWSTR_RCMSX
;
.DB $0B, $D1, $D0, $D0, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MF)
.DB $0B, $D1, $D0, $D0, $FF, $FF, $FF ; RCZ280 W/ RC SOUND MODULE (MF)
.DW HWSTR_RCMF
;
.DB $0B, $33, $32, $32, $FF, $FF ; RCZ280 W/ LINC SOUND MODULE
.DB $0B, $33, $32, $32, $FF, $FF, $FF ; RCZ280 W/ LINC SOUND MODULE
.DW HWSTR_LINC
;
.DB 13, $A0, $A1, $A0, $FF, $A2 ; MBC
.DB 13, $A0, $A1, $A0, $FF, $A2, $FE ; MBC
.DW HWSTR_MBC
;
.DB 17, $A0, $A1, $A0, $FF, $A2 ; DUODYNE
.DB 17, $A4, $A5, $A4, $FF, $A6, $FE ; DUODYNE
.DW HWSTR_DUO
;
.DB 22, $41, $40, $40, $FF, $FF, $FF ; NABU
.DW HWSTR_NABU
;
.DB $FF ; END OF TABLE MARKER
;
@@ -642,7 +649,8 @@ RSEL .DB 0 ; Register selection port
RDAT .DB 0 ; Register data port
RIN .DB 0 ; Register input port
Z180 .DB 0 ; Z180 base I/O port
ACR .DB 0 ; Aux Ctrl Reg I/O port on SCG
ACR .DB 0 ; Aux Ctrl Reg I/O port (ACR)
ACRVAL .DB 0 ; ACR sound enable value
DESC .DW 0 ; Hardware description string adr
;
CURPLT .DB 0 ; Current platform id reported by HBIOS
@@ -660,8 +668,8 @@ TMP .DB 0 ; work around use of undocumented Z80
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
MSGBAN .DB "Tune Player for RomWBW v3.5a, 30-Mar-2023",0
MSGUSE .DB "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",13,10
MSGBAN .DB "Tune Player for RomWBW v3.10, 11-Jul-2024",0
MSGUSE .DB "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",13,10
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [--hbios] [+tn|-tn]",0
@@ -681,11 +689,12 @@ MSGERR .DB "App Error", 0
HWSTR_SCG .DB "SCG ECB Board",0
HWSTR_N8 .DB "N8 Onboard Sound",0
HWSTR_RCEB .DB "RCBus Sound Module (EB)",0
HWSTR_RCEB6 .DB "RCBus Sound Module (EBv6)",0
HWSTR_RCMSX .DB "RCBus Sound Module (MSX)",0
HWSTR_RCMF .DB "RCBus Sound Module (MF)",0
HWSTR_LINC .DB "Z50 LiNC Sound Module",0
HWSTR_MBC .DB "NHYODYNE Sound Module",0
HWSTR_DUO .DB "DUODYNE Sound Module",0
HWSTR_NABU .DB "NABU Onboard Sound",0
MSGUNSUP .db "MYM files not supported with HBIOS yet!\r\n", 0
@@ -2079,8 +2088,23 @@ LOUT OUT (C),A
LD HL, AYREGS ; START OF VALUE LIST
LOUT OUT (C), A ; SELECT REGISTER
LD C, D ; POINT TO DATA PORT
OUTI ; WRITE (HL) TO DATA PORT, BUMP HL
LD C, E ; POINT TO ADDRESS PORT
; UGLINESS FOR NABU! WE NEED TO KEEP BIT 7 = 0, AND BIT 6 = 1
; FOR PSG REG 7
CP 7 ; PSG REG 7?
JR NZ,LOUT1 ; SKIP SPECIAL PROCESSING
PUSH AF ; SAVE AF
LD A,(HL) ; GET VALUE BYTE
AND %00111111 ; FIX BITS 6 & 7
OR %01000000 ; ... FOR NABU!
OUT (C),A ; SEND THE FIXED VALUE
DEC B ; SIMULATE THE RESET
INC HL ; ... OF OUTI
POP AF ; RESTORE AF
JR LOUT1A ; RESUME LOOP
LOUT1 OUTI ; WRITE (HL) TO DATA PORT, BUMP HL
LOUT1A LD C, E ; POINT TO ADDRESS PORT
INC A ; NEXT REGISTER
CP 13 ; REG 13?
JR NZ, LOUT ; IF NOT, LOOP
@@ -2090,6 +2114,7 @@ LOUT OUT (C), A ; SELECT REGISTER
JP M, LOUT2 ; IF BIT 7 SET, RETURN W/O WRITING VALUE
LD C, D ; SELECT DATA PORT
OUT (C), A ; WRITE VALUE TO REGISTER 13
LOUT2 CALL NORMIO
EI
RET ; AND DONE
@@ -2536,8 +2561,23 @@ upsg1: ld hl,(psource)
psglp: ld c, e ; C := RSEL
out (c), a ; Select register
ld c, d ; C := RDAT
outi ; Set register value
inc a ; Next register
; ugliness for nabu! we need to keep bit 7 = 0, and bit 6 = 1
; for psg reg 7
cp 7 ; psg reg 7?
jr nz,psglp1 ; if not, skip special processing
push af ; save af
ld a,(hl) ; get value byte
and %00111111 ; fix bits 6 & 7
or %01000000 ; ... for NABU!
out (c),a ; send the fixed value
dec b ; simulate the rest
inc hl ; ... of outi
pop af ; restore af
jr psglp2 ; resume loop
psglp1: outi ; Set register value
psglp2: inc a ; Next register
ld bc, (3 * FRAG) - 1 ; Bytes to skip before next reg-1
add hl, bc ; Update HL

View File

@@ -48,7 +48,7 @@ SHIRAKAW.VGM - SN76489+YM2612 * Jantei Monogatari: St. Shirakawa University
ANNA.VGM - SN76489+YM2612 - Jantei Monogatari: Anna : 32K
FIELDMAP.VGM - SN76489+YM2612 - Taikou Risshiden: Field Map: Summer : 8K
ITSGAMOV.VGM - SN76489+YM2612 - Puyo Puyo Tsuu: It's Game Over! : 16K
STARTDEM.VGN - 2xSN76489+AY-3-8910 * Exed Exes / Savage Bees: Start Demo ~Main BGM : 32K
STARTDEM.VGM - 2xSN76489+AY-3-8910 * Exed Exes / Savage Bees: Start Demo ~Main BGM : 32K
INCHINA.VGM - YM2612 * Double Dragon 3: The Rosetta Stone: In China : 44K
SURE.VGM - YM2151 - Martial Age: Sure?? : 36K
SABERDAN.VGM - YM2151 - Road Runner: Sabre Dance (Attract Mode - Stage 4) : 28K

View File

@@ -189,9 +189,9 @@ show_spd:
ld b,BF_SYSGET
ld c,BF_SYSGET_CPUINFO
rst 08
jp nz,err_not_sup
jp nz,err_api
call crlf2
ld (cpu_spd),de ; save CPU speed for now
push de ; save CPU speed for now
push bc ; Oscillator speed to HL
pop hl
ld de,str_spacer
@@ -199,10 +199,18 @@ show_spd:
call prtd3m ; print it
ld de,str_oscspd
call prtstr
call crlf
ld de,str_cpuspd
call prtstr
pop hl ; recover CPU speed
call prtd3m ; print it
ld de,str_mhz
call prtstr
;
ld b,BF_SYSGET
ld c,BF_SYSGET_CPUSPD
rst 08
jp nz,err_not_sup
ret nz ; no CPU speed info, done
push de ; save wait states for now
ld a,l
ld de,str_slow
@@ -216,11 +224,6 @@ show_spd:
jr z,show_spd1
jp err_invalid
show_spd1:
call crlf
call prtstr
ld hl,(cpu_spd) ; recover CPU speed
call prtd3m
ld de,str_cpuspd
call prtstr
pop hl
ld a,h ; memory wait states
@@ -284,6 +287,9 @@ err_not_sup:
err_invalid:
ld de,str_err_invalid
jr err_ret
err_api:
ld de,str_err_api
jr err_ret
;
err_ret:
call crlf2
@@ -659,21 +665,24 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "RomWBW CPU Speed Selector v0.5, 2-Feb-2022",0
str_banner .db "RomWBW CPU Speed Selector v0.6, 29-Dec-2023",0
str_spacer .db " ",0
str_oscspd .db " MHz Oscillator",0
str_slow .db " CPU speed is HALF (",0
str_full .db " CPU speed is FULL (",0
str_dbl .db " CPU speed is DOUBLE (",0
str_cpuspd .db " MHz)",0
str_cpuspd .db " CPU speed is ",0
str_mhz .db " MHz",0
str_slow .db " (Half)",0
str_full .db " (Full)",0
str_dbl .db " (Double)",0
str_memws .db " Memory Wait State(s)",0
str_iows .db " I/O Wait State(s)",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 (CPUSPD /? for usage)",0
str_err_not_sup .db " ERROR: Platform or configuration not supported!",0
str_err_not_sup .db " ERROR: Platform or configuration does not support CPU speed configuration!",0
str_err_invalid .db " ERROR: Invalid configuration!",0
str_err_api .db " ERROR: HBIOS API error!",0
str_usage .db " Usage: CPUSPD <cpuspd>,<memws>,<iows>\r\n"
.db "\r\n"
.db " <cpuspd>: \"Half\", \"Full\", or \"Double\"\r\n"
@@ -693,7 +702,6 @@ stack .equ $ ; stack top
;
;
tmpstr .fill 9,0 ; temp string (8 chars, 0 term)
cpu_spd .dw 0 ; current cpu speed
new_cpu_spd .db $FF ; new CPU speed
new_ws_mem .db $FF ; new memory wait states
new_ws_io .db $FF ; new I/O wait states

View File

@@ -19,6 +19,8 @@
; 1) Actually implement this
;_______________________________________________________________________________
;
#include "../ver.inc"
;
;===============================================================================
; Definitions
;===============================================================================
@@ -30,9 +32,6 @@ bdos .equ $0005 ; BDOS invocation vector
;;
;stamp .equ $40 ; loc of RomWBW CBIOS zero page stamp
;
rmj .equ 3 ; CBIOS version - major
rmn .equ 0 ; CBIOS version - minor
;
;===============================================================================
; Code Section
;===============================================================================

View File

@@ -33,6 +33,8 @@
;
;[2023/07/07] v1.9 Support DUODYNE
;
;[2024/09/02] v1.10 Support Genesis STD Z180
;
; Constants
;
mask_data .EQU %10000000 ; RTC data line
@@ -52,6 +54,7 @@ PORT_RCZ280 .EQU $C0 ; RTC port for RCZ280
PORT_MBC .EQU $70 ; RTC port for MBC
PORT_RPH .EQU $84 ; RTC port for RHYOPHYRE
PORT_DUO .EQU $94 ; RTC port for DUODYNE
PORT_STDZ180 .EQU $84 ; RTC Port for STD Bus Z180 board
BDOS .EQU 5 ; BDOS invocation vector
@@ -1143,7 +1146,13 @@ HINIT:
CP 17 ; DUODYNE
JP Z,RTC_INIT2
;
; Unknown platform
LD C,PORT_STDZ180
LD DE,PLT_STDZ180
CP 21 ; STD Z180
JP Z,RTC_INIT2
;
; Unknown platform
LD DE,PLTERR ; BIOS error message
LD C,9 ; BDOS string display function
CALL BDOS ; Do it
@@ -1769,6 +1778,7 @@ PLT_RCZ280 .TEXT ", RCBus Z280 RTC Module Latch Port 0xC0\r\n$"
PLT_MBC .TEXT ", MBC RTC Latch Port 0x70\r\n$"
PLT_RPH .TEXT ", RHYOPHYRE RTC Latch Port 0x84\r\n$"
PLT_DUO .TEXT ", DUODYNE RTC Latch Port 0x70\r\n$"
PLT_STDZ180 .TEXT ", STD Z180 RTC Module latch port 0x84\r\n$"
;
; Generic FOR-NEXT loop algorithm

View File

@@ -58,7 +58,7 @@ HBC_CLKTBL:
.DB 02H, 00111111B, '/'
.DB 01H, 00011111B, '/'
.DB 00H, 11111111B, ' '
.DB 03H, 00011111B, ':'
.DB 03H, 00111111B, ':'
.DB 04H, 01111111B, ':'
.DB 05H, 01111111B, 00H
;

File diff suppressed because it is too large Load Diff

View File

@@ -12,7 +12,7 @@ Operating System (DOS), and Basic I/O System (BIOS). The CCP and DOS components
are pre-built, relocatable binaries. The BIOS (BPBIOS) is assembled into a relocatable
binary by the build, then the build links together all three components to form the
final loadable image (.IMG) file. The linking process is performed by the custom BPBIOS
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also sets
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also
adjusts the ZCPR environment configuration.
BPBUILD is designed to be run interactively. However, it can be started with an
@@ -24,8 +24,8 @@ running of BPBUILD.
The CCP can be ZCPR 3.3 (ZCPR33?.REL), ZCPR 3.4 (Z34.REL), or ZCPR 4.1 (Z41.ZRL). ZCPR 3.3
uses static references to the ZCPR segments, so a custom version of it must be assembled.
The ZCPR33 subdirectory provides a build process for doing this. It produces a specific
version for each of the memory segment configurations (ZCPR33T.REL & ZCPR33N.REL).
The ZCPR33 subdirectory provides a build process for doing this. It produces a custom
version of ZCPR33.REL with the correct static references to the ZCPR segments.
The DOS can be ZSDOS 1.1 (ZSDOS.ZRL) or ZSDOS 2.03 (ZS203.ZRL). These are both pre-built
relocatable binaries. Note that only certain version combinations of ZSDOS and ZCPR are

View File

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

View File

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

View File

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

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