Compare commits

...

422 Commits

Author SHA1 Message Date
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
Wayne Warthen
ce17be9ba6 CP/M 3 RAM Check
- Check to ensure that we have enough RAM banks for banked CP/M 3 startup.  If not, message and return to boot loader.
2023-11-18 16:58:23 -08:00
Wayne Warthen
badca621ba Merge pull request #372 from dylanhall/dev
Allow override of secondary console front panel switch selection
2023-11-18 16:54:50 -08:00
Dylan Hall
291cdd2c03 Use SECCON to override default secondary console selection 2023-11-17 17:47:01 +13:00
Wayne Warthen
888d9879c9 Preliminary Support for CH37x SD Cards
- Currently operates as a read only disk device.
2023-11-16 19:39:09 -08:00
Dylan Hall
39446d5e4f Add SECCON to config files 2023-11-17 16:36:29 +13:00
Wayne Warthen
af8385fba8 Fix IM1 Handling for Z180 - Credit to Dylan Hall
- Z180 code failed to initialize interrupt vector registers for IM1 startup
- Updated bad interrupt messaging to avoid interrupt stack overflow
2023-11-15 12:48:55 -08:00
Wayne Warthen
10ff97b6c6 ACIA Interrupt Fix & ROMless APPBOOT Fix
- ACIA driver was not properly returning ZF to indicate if it handled an interrupt.
- APPBOOT was failing on ROMless systems because it was copying the HBIOS code overtop of itself.
2023-11-09 14:37:46 -08:00
Wayne Warthen
7e9191f3ef Update ps2info.asm
- Updated PS2INFO to handle extraneous 0x00 byte after reset command.
2023-11-07 18:30:17 -08:00
Wayne Warthen
a67b1ecd0a Fix RTC Init on ROMless Restart
- On ROMless restart, the RTC was not being included in the boot messages.
2023-10-31 14:54:07 -07:00
Wayne Warthen
4012ee7775 Update User Guide
Based on input from Issue #364, I have attempted to clarify a few areas on the User Guide:
- Recommendation to only use ROM OSes only for limited purposes
- Added a more detailed description of the automatic drive assignment algorithm
- Added more detail on batch file auto-submission
2023-10-31 13:03:09 -07:00
Wayne Warthen
150ca6b50c Fix .gitignore 2023-10-30 15:03:59 -07:00
Wayne Warthen
6af84e9ad8 Update Makefile
- Fix Makefile
2023-10-30 14:29:02 -07:00
Wayne Warthen
6bcad122cd Add Z1RCC Support
- Added build support for Bill Chen's Z1RCC.
- Thanks and credit to Bill for supplying the bulk of the build changes.
2023-10-30 14:14:11 -07:00
Wayne Warthen
003481410f Update UNARC to Universal UNARC from Lars Nelson
- Credit and thanks to Lars Nelson for providing an enhanced version of UNARC.
2023-10-30 12:07:26 -07:00
Wayne Warthen
9a1c3f7929 Minor Fix in SPK Driver and Tick Counter Space Reservation
- Fix ensures that the speaker control bit is set the same as it was initially after playing a tone.
- Reserve 2 bytes in the proxy for a platform dependent tick counter value.  Currently for HEATH platform.
2023-10-30 11:41:31 -07:00
Wayne Warthen
ef536750ea Makefile Improvements
These changes improve the chances of a make operation actually failing when a nested error occurs.
2023-10-24 13:25:32 -07:00
Wayne Warthen
347a15a3b6 Build Script Updates
- Minor update to GitHub build scripts
2023-10-23 18:30:40 -07:00
Wayne Warthen
1e5b38c251 PS2INFO Update & OpenSpin Conversion
- Added support for Duodyne to PS2INFO application.
- Switched all build paths to consistently use OpenSpin since it appears to be compatible with all build environments supported by RomWBW.
2023-10-23 18:07:42 -07:00
Wayne Warthen
29f93fb153 Enable CH and LPT Drivers for Duodyne 2023-10-19 17:23:08 -07:00
Wayne Warthen
b0975745df Bump Version 2023-10-19 15:47:45 -07:00
Wayne Warthen
163460856a Add Real Time Clock Section to User Guide, Issue #368 2023-10-19 15:03:49 -07:00
Wayne Warthen
3ce9246904 Update FLASH to v1.3.7
Thanks and credit to Will Sowerbutts for contributing and maintaining this critical utility!
2023-10-19 14:09:45 -07:00
Wayne Warthen
1a021e02b9 Enable PIO Support for Duodyne 2023-10-16 15:51:14 -07:00
Wayne Warthen
f2d304ef0d Update cfg_duo.asm 2023-10-15 18:03:01 -07:00
Wayne Warthen
cbfbca8d92 Support New Duodyne Boards
- Added support for Duodyne Multi-IO board
- Added support for Duodyne Zilog-IO board
- Added SUPCTS equate in hbios.asm to allow selectively adding code to suppress use of CTS during HBIOS boot
- Added reference in User Guide to Bruce Hall's Assembly Language Programming document
2023-10-15 17:53:35 -07:00
Wayne Warthen
b175808a92 Fix for CP/M 3 Floppy Boot
- CP/M 3 ldrbios had not been properly updated for device type id change.
- ASSIGN command was not handling DPB's correctly due to device type id change.
2023-10-13 10:29:43 -07:00
Wayne Warthen
3e86e79133 Fix Makefiles 2023-10-12 17:45:00 -07:00
Wayne Warthen
3247e67ed4 ZRC and ZZRCC Image Creation Updates
- Modified ZRC and ZZRCC image creation scripts to allow up to 0x1B8 of boot code.
2023-10-12 17:25:40 -07:00
Wayne Warthen
bbc84f0c2d Fix FAT Application API Call
FAT application had not been updated to reflect a change in the HBIOS Disk Device API call return data.  This is corrected in this check-in.  Related discussion in #368.
2023-10-12 12:49:05 -07:00
Wayne Warthen
872d51e9b6 Detect CTS Stall
- Detect CTS at startup to ensure it is asserted.  If not, disable hardware flow control to avoid stalling the console at boot.  Only for UART driver because this is the only place it is currently relevant.
2023-10-10 14:09:21 -07:00
Wayne Warthen
b41f189a4c Miscellaneous
- Add minimal Fuzix instructions to User Guide
- Enable CTC auto-detect by default for RCBus.  It causes no problems to auto-detect it and it will stop a CTC from generating unexpected interrupts after a soft restart.
- Upgrade `SUPERSUB` to v1.3 (previously v1.1)
2023-10-09 16:50:18 -07:00
Wayne Warthen
25fb2bd59e Rename ZZRC -> ZZRCC, Update to CLRDIR
- The naming of ZZRCC was incorrectly ZZRC.  Corrected.
- Max Scane has provided a small bug fix for CLRDIR.
- Minor build updates for new HTalk utility.
2023-10-08 17:57:58 -07:00
Wayne Warthen
76867b8351 Merge pull request #367 from TomPlano/dev
Uploading HTalk program to supplement talk.com program
2023-10-08 17:12:49 -07:00
Tom Plano
43745f8c90 Uploading HTalk program to supliment talk.com program. Similar functionality, but uses HBIOS calls and Char IDs, as opposed to CP/M calls and IDs 2023-10-08 18:22:09 -05:00
Wayne Warthen
ed4daf06a4 CP/M 3 Memory Configuration Regression
Put CP/M 3 disk buffers back in alternate banks.
2023-10-08 07:32:01 -07:00
Wayne Warthen
14cc41c3c4 Fix hd512 Layout
- Slice protection changes broke hd512 layout.  Fixed.
- Updated documentation for slice protection changes.
2023-10-07 19:01:36 -07:00
Wayne Warthen
0598d921bc Floppy Fix
- Recent change to device type id's broke floppy access.  This is corrected.
2023-10-07 16:01:09 -07:00
Wayne Warthen
93dcfe9610 Slice Protection, Issue #366
- Dean Jenkins has motivated me to implement additional protection from using a slice that does not fit within the capacity of the physical disk being used.  You can still assign an unusable slice, but when you try to refer to it, you will immediately get a "no disk" error from the OS.
2023-10-07 15:15:10 -07:00
Wayne Warthen
d98547dea3 Minor Doc and Build Tweaks 2023-10-06 16:53:52 -07:00
Wayne Warthen
a157d9ba13 Device Type ID Reorganization
Driver Device Type ID's have been stored in the upper nibble.  However, running out of ID's, I have changed them to occupy the entire byte.

This is a breaking change, so I have updated the minor version number to maintain integrity between components.  So, v3.3 will never become a stable release and I am moving directly to v3.4.
2023-10-05 18:08:52 -07:00
Wayne Warthen
85783148be Bump Version 2023-10-05 15:33:41 -07:00
Wayne Warthen
7bd930bc76 Issue #366
Further refinements to User Guide based on input from Dean Jenkins.
2023-10-05 15:04:26 -07:00
Wayne Warthen
c1fa7b420a SD Media Automatic Drive Assignment - Issue #365
- Modified SD Media handling such that no OS drive letters will be assigned automatically at OS Startup if there is no media inserted.
2023-10-05 10:14:30 -07:00
Wayne Warthen
9072bc6d70 Issue #366
Based on input from Dean Jenkins:
- Updated User Guide to clarify some nuances related to use of Combo Disk Images
- Added "blank" slice images
2023-10-04 16:54:34 -07:00
Wayne Warthen
480dbe4f4c Add Disk Images for ROMless Configurations 2023-10-03 19:44:49 -07:00
Wayne Warthen
26fad23c3a Z280 ROMless Fixes
- Corrected a couple deficiencies that caused Z280 CPUs to fail in the new ROMless configuration
2023-10-03 15:24:18 -07:00
Wayne Warthen
883dab7e97 ROMless Operation Overhaul
- Implement new approach to ROMless boot and operation.  Still missing the ability to seed the RAM disk.
- Tweaks to CH driver
2023-10-01 17:22:19 -07:00
Wayne Warthen
d3f5643791 CH Driver Tweaks 2023-09-24 16:47:36 -07:00
Wayne Warthen
5299d24379 Merge pull request #363 from skullandbones/Issue-362_RPI4_no_bios.bin_v1
zxcc: Fix for load bios.bin failure on a RPi4
2023-09-24 16:25:50 -07:00
Dean Jenkins
a229db96a6 zxcc: Fix for load bios.bin failure on a RPi4
Fix load_bios() when used on a Raspberry Pi4.

The defect was corrupting the path of the zxcc executable.

The fix is to NUL terminate the path string from the readlink()
call.
2023-09-24 17:04:35 +01:00
Wayne Warthen
092e44c62e RPi Builds & CH375/6 Support
- The build process was enhanced by Dean  Jenkins to support the Raspberry Pi.  Note that the Propeller firmware will not be generated by a RPi build.  See Issue #358.
- Initial support for USB storage via CH375/6.
2023-09-22 14:13:12 -07:00
Wayne Warthen
722bce819b Bump Version 2023-09-16 13:41:32 -07:00
Wayne Warthen
2d470a2a90 Merge pull request #360 from danwerner21/dev
ESP32 Driver updates
2023-09-16 13:24:08 -07:00
Dan Werner
b6700dfa4c ESP32 Driver updates 2023-09-16 14:47:09 -05:00
Wayne Warthen
cfc76d0659 Add Heath H8 Framework 2023-09-14 19:38:17 -07:00
Wayne Warthen
7fce3277a0 Create SCZ180_sc700.asm
- Missed this file on last commit
2023-09-13 14:56:24 -07:00
Wayne Warthen
2219e4c82d Miscellaneous
- Add SCZ180_sc700 standard build
- Minor fix to DMAMON
2023-09-13 14:03:54 -07:00
Wayne Warthen
68e841e62c Miscellaneous
- Minor correction to DMAMON to restore proper operation of interrupt testing
- Minor improvements to QPM documentation
2023-09-11 10:17:57 -07:00
Wayne Warthen
bb70c36b36 Improve QPM Build
The QPM portion of the build has been updated to dynamically combine the current CBIOS with the static QPM CCP and BDOS binaries.  This will keep the QPM system image up to date and avoid HBIOS version mismatch warnings.
2023-09-09 16:18:40 -07:00
Wayne Warthen
c391fd6d56 Support S100 Propeller Console 2023-09-07 18:16:25 -07:00
Wayne Warthen
e69caf5059 Add SROM (Serial ROM) Utility 2023-09-05 16:29:05 -07:00
Wayne Warthen
8b7e71049b FDC Detection Update & Enable ESP Driver on Duodyne
- Based on reports from Martin R, the FDC detection algorithm has been updated to try reading the FDC MSR register twice to try and get the desired value of 0x80.
- Dan Werner's ESP board for Duodyne is working well, so the default Duodyne config has been changed to automatically detect this board.
2023-08-25 10:25:07 -07:00
Wayne Warthen
50e190c755 Merge pull request #357 from fernandocarolo/dev
Fix references to the EPFDC driver in comments.
2023-08-23 14:44:47 -07:00
Wayne Warthen
d0eccf026b Enable INTRTC for Easy Z80 2023-08-23 14:28:20 -07:00
Fernando Carolo
39f796ce22 Fix references to the EPFDC driver in comments.
The EtchedPixels floppy disk controller is known by the identifier
'FDMODE_EPFDC', but the comments in the Config subdirectory have an
incorrect reference to 'EPWDC'. This fix updates the comments to use the
correct name.
2023-08-23 21:02:48 +01:00
Wayne Warthen
5610e79db4 Improve FD Driver Detection
Credit to Martin R for reporting that his FDC was not being detected.  The delay between FDC status register reads was increased in the detection routine to correct this.
2023-08-22 15:22:11 -07:00
Wayne Warthen
e782b78b16 Bump Version 2023-08-22 11:02:08 -07:00
Wayne Warthen
c0d3969244 Merge pull request #356 from b1ackmai1er/dev
Duo/MBC IM2 Hardware Timer support
2023-08-22 10:54:30 -07:00
b1ackmai1er
c62af3df33 MBC / DUO IM2 template
Template for setting up interrupts using the IM2 pin header on MBC and DUO platforms.
2023-08-22 13:16:42 +08:00
b1ackmai1er
6d736996fd Merge pull request #60 from wwarthen/dev
Support Serial Ports on ESP32 Board
2023-08-22 12:32:56 +08:00
Wayne Warthen
8bc801d0a4 Support Serial Ports on ESP32 Board 2023-08-21 17:40:34 -07:00
b1ackmai1er
2c6b7f7fb1 Update std.asm 2023-08-21 16:38:59 +08:00
b1ackmai1er
c3503f56d1 Update cfg_z80retro.asm 2023-08-21 16:29:27 +08:00
b1ackmai1er
d4c87996f0 Merge branch 'dev' of https://github.com/b1ackmai1er/RomWBW into dev 2023-08-21 16:25:29 +08:00
b1ackmai1er
9f5b3a8b1c Duo/MBC IM2 Hardware Timer support 2023-08-21 16:00:47 +08:00
Wayne Warthen
d06e1e2a5c Initial DUO Interrupt Handling 2023-08-20 15:03:34 -07:00
Wayne Warthen
22a0c52af3 Bump Version 2023-08-20 12:10:32 -07:00
Wayne Warthen
85aa7e89c2 Merge pull request #355 from b1ackmai1er/dev
Update DMAMON
2023-08-20 11:56:16 -07:00
b1ackmai1er
59d04f2446 Update std.asm 2023-08-20 18:18:55 +08:00
b1ackmai1er
9cc52e30d6 Update dmamon.asm 2023-08-20 18:16:19 +08:00
Wayne Warthen
e1a4e815dc Fix S100 Z180 Board LED Operation
- Status LED for S100 Z180 board was not enabled.  Credit to Jay Cotton for finding this.
2023-08-17 12:53:59 -07:00
Wayne Warthen
3c340d1ab9 Miscellaneous
- Minor documentation updates
- Improve ESP driver hardware detection
2023-08-17 11:26:19 -07:00
Wayne Warthen
138248fafc Merge pull request #354 from oholiab/xm_send_on_port
Add port option to XM's send mode
2023-08-16 19:40:40 -07:00
Matt Carroll
834eefb0bb Add port option to XM's send mode 2023-08-16 15:03:12 +01:00
Wayne Warthen
7835eb5deb Duodyne Work in Progress
- Updated DMA Driver
- Updated PCF I2C Driver
2023-08-02 13:21:52 -07:00
Wayne Warthen
d1a5c66147 Update DUO_std.asm 2023-07-28 15:43:31 -07:00
Wayne Warthen
b184ccfb78 Miscellaneous
- Updated S100 Monitor launch code to warn user if console will be directed to S100 bus vs. active on-board UART.
- Updated Duodyne early boot to add a delay to stabilize the boot process.  This is temporary and needs to be further investigated.
2023-07-28 15:19:54 -07:00
Wayne Warthen
4776b32cd3 Revise S100 Monitor Boot Option 2023-07-26 13:52:50 -07:00
Wayne Warthen
2bc5333f2b Add Boot Loader Menu Entry for S100 Z180 Monitor Invocation 2023-07-25 16:47:51 -07:00
Wayne Warthen
a5575456e2 Initial Support for Duodyne 2023-07-24 19:24:49 -07:00
Wayne Warthen
bdb8dc020b Update S100 Monitor to v0.34 2023-07-22 18:56:37 -07:00
Wayne Warthen
faaba69554 Improve sd.asm SD Card Compatibility
- PIO mode of sd.asm driver modified to setup shadow register (Issue #352).
- Relocated Z280 IVT to improve space utilization in HBIOS bank.
2023-07-17 14:52:14 -07:00
Wayne Warthen
0395bba4f5 Preliminary Support for ESP32 Nhyodyne Module
- Initial console support for Dan Werner's ESP32 Module
2023-07-10 13:16:24 -07:00
Wayne Warthen
14ac7a917b Upgrade s100mon to Latest
- Incorporated latest S100 Board Monitor code from John Monahan
2023-07-09 12:38:48 -07:00
Wayne Warthen
7a209d4053 S100 Monitor Update
The S100 Monitor will now allow launching RomWBW using the 'B' command.
2023-07-08 18:03:13 -07:00
Wayne Warthen
7e5b140c2f Update Makefile 2023-07-07 17:19:39 -07:00
Wayne Warthen
1f1952fb19 Add S100 and DUO Platforms 2023-07-07 16:18:01 -07:00
Wayne Warthen
229bdaa308 Support Z180 IM1
Added proper support for interrupt mode 1 on Z180.
2023-07-01 15:33:18 -07:00
Wayne Warthen
5c0894b8c1 Merge pull request #351 from jblang/dev
Add ColecoVision-compatible configuration
2023-07-01 11:56:15 -07:00
J.B. Langston
9cefcfb0bc Add ColecoVision-compatible configuration 2023-07-01 10:16:49 -05:00
Wayne Warthen
5d34a5c5d5 Miscellaneous
- Implement SHOWHEX functions in ICM and PKD drivers
- Improve DSKY common routines in HBIOS
- Include key CP/M 2.2 programs in NZCOM floppy image
2023-06-29 16:33:22 -07:00
Wayne Warthen
f8c800e527 Create DSKY Driver Framework
Added a new driver category for DSKY (Display/Keypad) devices.  Existing DSKY devices were converted into drivers ICM and PKD.  These devices were previously DSKY and DSKYNG.

This removes substantial code duplication and recovers significant space in romldr and dbgmon.
2023-06-28 15:06:53 -07:00
Wayne Warthen
b90e4d932a Update fd.asm
- Fix typo
2023-06-20 16:12:49 -07:00
Wayne Warthen
5457a7e7fd Improve OS Boot Drive Assignment
- Modified the Disk Device function call (DIODEVICE) to provide new attributes related to disk size and removability.
- Leveraged API change to allow handling drive assignment differently depending on ATAPI vs. ATA interface.
2023-06-20 15:52:34 -07:00
Wayne Warthen
8f5cc510ee Missing Files 2023-06-16 15:18:49 -07:00
Wayne Warthen
0475f5e853 Minor Cleanup
- Update FPLED port values for some configs
- Fix Linux/MacOS build for new disk images
2023-06-16 14:56:20 -07:00
Wayne Warthen
5b7dee0689 Merge pull request #348 from rprouse/issue/347
Adds programming and games disk images
2023-06-16 13:37:25 -07:00
Rob Prouse
6532f61747 Remove DELBR.COM 2023-06-16 10:51:20 -04:00
Rob Prouse
4bdae4eccb Remove USQ.COM 2023-06-16 10:47:55 -04:00
Rob Prouse
efb9840b86 Remove MBASIC85 2023-06-16 08:57:19 -04:00
Wayne Warthen
308a11cb32 Merge pull request #350 from wwarthen/master
Update pull_request_template.md
2023-06-15 12:51:55 -07:00
Wayne Warthen
3a7421de33 Update pull_request_template.md 2023-06-15 12:50:51 -07:00
Wayne Warthen
21a58397b6 Merge pull request #349 from wwarthen/master
Create pull_request_template.md
2023-06-15 12:16:59 -07:00
Wayne Warthen
9ae61806dc Create pull_request_template.md 2023-06-15 12:15:37 -07:00
Rob Prouse
87ac6f07f8 Fix spelling mistake, Tory -> Tony 2023-06-15 13:37:17 -04:00
Rob Prouse
1cd5313259 Remove all HLP files that I added 2023-06-15 13:28:44 -04:00
Rob Prouse
04c1ff04ac Remove CPM2.HLP 2023-06-15 13:19:55 -04:00
Rob Prouse
0e1a0afa2c Replace HI-TECH C with latest version from https://github.com/agn453/HI-TECH-Z80-C 2023-06-15 13:16:52 -04:00
Rob Prouse
5227bb68b5 Added documentation for the new disk images 2023-06-14 14:10:15 -04:00
Rob Prouse
fb68941768 Adds programming and games disk images 2023-06-14 12:45:41 -04:00
Wayne Warthen
8747ec8d02 Clean-up of ATAPI Support
- Improved media handling and error reporting.
2023-06-13 17:02:13 -07:00
Wayne Warthen
abd939625f Support ATAPI in IDE and PPIDE Drivers
- Support is limited to 512 byte sectors.  So, devices such as ATAPI Zip Drives will work.  CD-ROM devices will not because they use a larger sector size.
2023-06-12 15:56:36 -07:00
Wayne Warthen
69716abb25 Regen Doc 2023-06-08 12:34:42 -07:00
Wayne Warthen
1f526d440a Add WDATE Command, Final PPA/IMM/SYQ Driver Cleanup
- Added WDATE command courtesy Kevin Boone.  See https://github.com/kevinboone/wdate-cpm for more information.
- Final cleanup of PPA/IMM/SYQ drivers including CPU speed compensated timeouts.
2023-06-08 11:59:07 -07:00
Wayne Warthen
84374c86e6 Cleanup and Optimizations for PPA/IMM/SYQ Drivers 2023-06-06 16:21:56 -07:00
Wayne Warthen
45ea46b105 Small Bug Fix for PPA/IMM/SYQ Drivers
Credit to Mark Elkin for testing and finding this issue.
2023-06-03 14:27:33 -07:00
Wayne Warthen
1333d6a491 Functional PPA Driver 2023-06-02 15:30:10 -07:00
Wayne Warthen
b7e865dbf1 Preliminary SyQuest Driver 2023-06-01 16:13:26 -07:00
Wayne Warthen
1c411f5552 Add IBM Standard Parallel Port Support to IMM Driver 2023-05-27 16:45:21 -07:00
Wayne Warthen
364e48a5d3 IMM Driver Cleanup, PPA Driver Skeleton
IMM Driver has rational timeouts now.  It also lights the MG014 LED during activity.
The PPA skeleton just attempts to determine if the PPA interface is present.  It does not attempt any I/O.
2023-05-26 16:48:13 -07:00
Wayne Warthen
63cb89dcfc Preliminary IMM Driver (Zip Drive)
Thanks to Alan Cox for inspiring this.  Much of the code was usurped from Fuzix.
2023-05-23 18:35:18 -07:00
Wayne Warthen
6e316b46f0 Document p-System Volume Management Python Script
- Andrew Davidson created a nice Python script to extract/insert p-System volumes from/to disk images.  Added a reference to his website in the p-System ReadMe.txt file.
2023-05-11 14:20:54 -07:00
Wayne Warthen
3f23396536 Support for MG014 RCBus Parallel Port Module 2023-05-10 18:37:47 -07:00
Wayne Warthen
c628ba10f2 Workaround Z280 CPU Bug for LZSA2
The LZSA2 decompressor invoked a known Z280 CPU bug.  A small modification to the code resolves this.
2023-05-07 17:45:43 -07:00
Wayne Warthen
9358299f14 Z280 Workaround for VGARC
Z280 is having an issue with OTDR instruction when loading the font for VGARC.  For now, the use of OTDR has been eliminated.
2023-05-07 16:27:25 -07:00
Wayne Warthen
d445c4a015 Disable LZSA Compression for Z280
- The LZSA2 decompressor code is failing mysteriously on Z280 CPUs.  I have simply disabled it in the Z280 primary configuration file.
2023-05-04 14:14:36 -07:00
Wayne Warthen
e32002545b VGARC Improvements, Doc Fix
- Added ability to enable VGARC and front panel in default config without I/O conflicts (does **not** support having both types of hardware present at the same time).
- Fixed documentation error in issue #345 reported by @MorfeoMatrixx.
2023-05-03 15:58:12 -07:00
Wayne Warthen
7ac88efac1 Support for VGARC
Initial support for Bill Shen's VGARC video/keyboard module for RCBus.
2023-05-02 19:23:51 -07:00
Wayne Warthen
9f71fe05aa Cleanup IDE and PPIDE drivers
- The use of hardware reset has been improved such that it is generally only used at initial boot up.
- Minor improvements to CF card detection and initialization.
- Implement a simple wait mechanism to accommodate the startup time of the RC2014 SD Pico module.
- Front panel I/O port for SC series of systems has been moved to 0x00 which is consistent with all other systems and avoids some I/O conflicts.
2023-04-30 12:03:16 -07:00
Wayne Warthen
ad3c533145 Fix IDE Detection on Spinning Disks
Prior improvement to IDE device detection broke detection of spinning hard disks.  IDE registers cannot be used prior to device init completion (spin up).  Not a problem for CF, but special steps required to ensure devices are fully initialized before register testing.
2023-04-23 18:47:43 -07:00
Wayne Warthen
e43a939f54 Improve IDE Device Detection
Per issue #343, some systems could initially detect a non-existent IDE device which would cause a long time-out.  This should resolve the issue.
2023-04-21 17:08:18 -07:00
Wayne Warthen
e5b7409f44 Support Per-floppy Device Drive Types
- Floppy devices are now configured per-device so that each floppy drive can be different (e.g., first floppy is 3.5" and second floppy is 5.25").
- Removed need to use termination signal on floppy sector I/O.

Addresses issue #318
2023-04-20 16:24:14 -07:00
Wayne Warthen
9100f199b1 Z80-Retro SD Card Support (Alan Cox) 2023-04-18 11:40:22 -07:00
Wayne Warthen
bcc50a31a9 Fix SIO Ports in Z80R Mode 2023-04-17 19:22:37 -07:00
Wayne Warthen
c891ba2bad Support Z80-Retro Platform
Code provided by Alan Cox
2023-04-16 20:30:16 -07:00
Wayne Warthen
2f9e77ca13 Merge branch 'dev' of https://github.com/wwarthen/RomWBW into dev 2023-04-14 19:05:49 -07:00
Wayne Warthen
f346209c82 Front Panel Switch Support 2023-04-14 19:05:37 -07:00
Wayne Warthen
0742fb6188 Merge pull request #342 from wwarthen/master
Merge pull request #340 from wwarthen/dev
2023-04-14 19:00:02 -07:00
Wayne Warthen
94239866a5 Merge pull request #340 from wwarthen/dev
Dev
2023-04-14 18:29:17 -07:00
Wayne Warthen
2681b84a20 Finalize v3.2.1 2023-04-14 18:10:24 -07:00
Wayne Warthen
b5437c56e9 Suppress Serial HFC During Boot
If serial hardware flow control is enabled, but not working, then a system will appear dead because it won't send any data to the host computer.  This change suppresses hardware flow control during boot just to ensure that boot messages can make it to the serial console.  This will only be effective for serial interfaces that support dynamic management of HFC.
2023-04-11 13:09:22 -07:00
Wayne Warthen
f640630a06 CPU Speed Calc Tweek
- Exit CPU speed detection routine earlier if the clock is not ticking.
- Fix minor regression in the SBC_simh.asm config file.
2023-04-10 16:20:12 -07:00
Wayne Warthen
53e201bd28 Handle Overflow in CPUSPD
Edge case where the CPU speed detection routine would overflow in a fast emulator and return a speed of 0.000 MHz.  Modified to fail back to the default CPU speed from the config file if an overflow occurs.
2023-04-09 12:48:36 -07:00
Wayne Warthen
51d962aeab Finalize v3.2.1 2023-04-07 10:22:46 -07:00
Wayne Warthen
5f36cf9a12 Fix TUNE Delay Factor Handling 2023-04-03 13:44:52 -07:00
Wayne Warthen
d812066f2e Update Z80 Tests
Update Z80 CPU instruction test suite to v1.2.
2023-03-29 15:46:46 -07:00
Wayne Warthen
7563863be2 DOS/65 Refresh
- Refresh WIP files of DOS/65 from Dan Werner
- Another tweak to SURVEY
- Regen PDF docs
2023-03-27 14:44:54 -07:00
Wayne Warthen
9654d487ba Merge pull request #338 from b1ackmai1er/dev
VGMPLAY documentation and YM2151 support
2023-03-27 14:14:14 -07:00
b1ackmai1er
5b339aef3e Update vgmplay.txt 2023-03-27 23:39:26 +08:00
b1ackmai1er
47a7d81bb9 Update Applications.md
Add basic VGMPLAY information
2023-03-27 23:36:24 +08:00
b1ackmai1er
a92c44e53f ym2151 vgm files 2023-03-26 20:43:47 +08:00
b1ackmai1er
cc9f5dd516 Update vgmplay.asm
YM2151 updates
2023-03-26 19:31:52 +08:00
Wayne Warthen
6e34de0e02 Cosmetic
Minor cosmetic changes in source.
2023-03-25 12:05:57 -07:00
Wayne Warthen
5a6d7f853b Update HEXCOM.COM
Renamed HEXCOM.CPM -> HEXCOM.COM.
2023-03-25 11:57:26 -07:00
b1ackmai1er
a646f49866 Merge pull request #52 from wwarthen/dev
Dev
2023-03-24 17:06:35 +08:00
Wayne Warthen
98a33b8b50 CTC & CPU Speed
- Revamped CTC detection algorithm hoping to handle problem XRBR is having
- Fixed typo in dynamic CPU speed test that caused it to not be properly recorded/reported (credit XRBR)
- Allow use of DEL/RUBOUT keys as backspace in ROM Loader and Debug Monitor
2023-03-23 12:54:57 -07:00
Wayne Warthen
8aebaab3fe Fix SURVEY.COM (again)
- Previous fix to SURVEY.COM port survey broke the memory survey.  Everything should be OK now.
- Regenerated documentation.
2023-03-22 16:15:04 -07:00
Wayne Warthen
798d8c3ea3 Merge pull request #337 from wwarthen/master
Sync
2023-03-22 15:58:32 -07:00
Wayne Warthen
bbaf2b0714 Merge pull request #336 from elevendroids/master
Fix default ZETA V2 SBC configuration
2023-03-22 15:57:43 -07:00
Michal Potrzebicz
74a8283bba Fix default ZETA V2 SBC configuration
- Set the default CPUOSC to 8MHz (default value in the project's
  documentation), updated the User Guide
- Set the FDD controller to ZETA2 - regression introduced in bd664c3
2023-03-22 22:37:22 +00:00
Wayne Warthen
e869e55252 Prep v3.2.1 Development Branch 2023-03-21 14:48:28 -07:00
Wayne Warthen
e8a76817dc Merge pull request #335 from wwarthen/master
Catch-up
2023-03-18 20:09:02 -07:00
Wayne Warthen
e839c77844 Merge pull request #332 from wwarthen/dev
Fix Doc URL Path
2023-03-18 19:37:13 -07:00
Wayne Warthen
ada7254b84 Fix Doc URL Path 2023-03-18 19:20:48 -07:00
Wayne Warthen
cd96ea7e26 Merge pull request #331 from wwarthen/dev
Merge Final v3.2
2023-03-18 19:11:38 -07:00
Wayne Warthen
0098540cc9 Finalize 3.2.0 2023-03-18 18:50:46 -07:00
Wayne Warthen
b3e7e2ff62 Doc Updates 2023-03-18 17:57:44 -07:00
Wayne Warthen
582937de8e Merge branch 'dev' of https://github.com/wwarthen/RomWBW into dev 2023-03-18 17:13:01 -07:00
Wayne Warthen
5f5953edd8 Doc Tweaks 2023-03-18 17:12:46 -07:00
Wayne Warthen
50cd6ff955 Merge pull request #330 from b1ackmai1er/dev
Update dma.asm
2023-03-17 17:33:23 -07:00
Wayne Warthen
82c53bd20b Update to Small Computer Z50 Configurations
- Improve adherence to Z50 standard.
2023-03-17 15:53:58 -07:00
b1ackmai1er
0d0f5fb182 Update dma.asm
cp/m fails to boot with the dma driver included but no dma hardware installed. This is because the default "dma_fail_flag" indicates that the dma is good to go. But in safe mode the dma initialization never takes place to find no dma and set this flag, so the memory driver hangs. This change is to make the default status of the flag the failed state so the memory driver will fallback to software in recovery mode.
2023-03-18 02:13:00 +08:00
Wayne Warthen
3773c9c7fa Regen Docs
Regenerate pdf files based on Phil's updates.
2023-03-17 11:04:31 -07:00
Wayne Warthen
b7dc67b9c7 Merge pull request #329 from b1ackmai1er/dev
Update SystemGuide.md
2023-03-17 10:44:52 -07:00
b1ackmai1er
76c4209a5e Update ReadMe.md 2023-03-17 20:49:46 +08:00
b1ackmai1er
76d9a99758 Update SystemGuide.md 2023-03-17 20:15:55 +08:00
b1ackmai1er
1db858027e Update ROM_Applications.md
spelling and grammar
2023-03-17 20:11:14 +08:00
b1ackmai1er
d3fb3710ff Update UserGuide.md 2023-03-17 20:05:57 +08:00
b1ackmai1er
170cecd112 Update UserGuide.md 2023-03-17 20:04:12 +08:00
b1ackmai1er
f469699449 Update UserGuide.md
Spelling
2023-03-17 19:58:46 +08:00
b1ackmai1er
c4ff7315c9 Update Applications.md
Spelling corrections.
2023-03-17 19:20:14 +08:00
b1ackmai1er
ddbd338b6f Update SystemGuide.md
Spelling and grammer fixes
2023-03-17 19:02:38 +08:00
Wayne Warthen
77c6f934dc More Documentation Cleanup 2023-03-16 20:48:49 -07:00
Wayne Warthen
f72bf4e4c5 Documentation Cleanup 2023-03-16 16:23:14 -07:00
Wayne Warthen
dcc6bd2b62 Documentation Cleanup 2023-03-16 16:22:04 -07:00
Wayne Warthen
01fac79902 Merge pull request #328 from b1ackmai1er/dev
Some driver documentation updates and corrections
2023-03-15 10:56:26 -07:00
b1ackmai1er
70d3f54834 Some driver documentation updates and corrections 2023-03-15 20:57:51 +08:00
b1ackmai1er
650dcdb35f Merge pull request #51 from wwarthen/dev
Dev
2023-03-15 20:07:46 +08:00
Wayne Warthen
b27e14826a Allow Inaccurate CTC Divisor for Tick Frequency
See Issue #327.  This change makes an inaccurate CTC divisor a warning instead of an error.  Credit to Phillip Summers.
2023-03-14 12:53:15 -07:00
Wayne Warthen
d2b9333288 Merge pull request #326 from b1ackmai1er/dev
uart4 writing to port when not enabled. dmamon updates
2023-03-14 11:58:27 -07:00
b1ackmai1er
cbd60d02d9 Merge pull request #50 from wwarthen/dev
Dev
2023-03-14 20:49:19 +08:00
b1ackmai1er
93a1eade2a Update uart.asm
Make sure when UART4 is disabled, that the driver does not access the UART4 I/O ports.
2023-03-14 19:21:08 +08:00
Wayne Warthen
5073a9c506 Fix for Issue #324 ZPM Named Directory Handling Error
Credit to Jose Luis for discovering this bug and bringing it to my attention.  The fix is a small patch on top of the patches previously applied from Jon Saxton.  See the ZPM3 directory in Sources for  more information.
2023-03-12 21:02:08 -07:00
Wayne Warthen
86f8df03b6 Update release.yml 2023-03-11 15:13:36 -08:00
b1ackmai1er
a7ef76b9c4 Update dmamon.asm 2023-03-11 10:51:21 +08:00
Wayne Warthen
0a6719cf24 Minor Doc Updates 2023-03-10 16:33:05 -08:00
Wayne Warthen
0b0f68d579 GitHub Automation Tweaks 2023-03-10 14:55:27 -08:00
Wayne Warthen
c2d58ebe3a GitHub Automation Updates 2023-03-10 14:42:27 -08:00
Wayne Warthen
894898a75d Merge pull request #323 from wwarthen/master
Catch Up w/ Master Branch
2023-03-09 14:50:39 -08:00
Wayne Warthen
5da1f70b6c Update release.yml 2023-03-09 14:36:22 -08:00
Wayne Warthen
15e90c628a Update FLASH.DOC 2023-03-09 14:31:27 -08:00
Wayne Warthen
bc0d1ed5e8 Update release.yml 2023-03-08 16:15:15 -08:00
Wayne Warthen
fa12858bd3 Minor 2023-03-07 13:08:35 -08:00
Wayne Warthen
2f733ff1aa Merge pull request #322 from b1ackmai1er/dev
DMA updates
2023-03-07 12:39:16 -08:00
b1ackmai1er
ee0369c553 Update dmamon.asm 2023-03-06 17:01:59 +08:00
b1ackmai1er
d17f531d19 Update dmamon.asm 2023-03-06 15:56:44 +08:00
b1ackmai1er
0c4400920c Update dmamon.asm 2023-03-06 15:54:51 +08:00
b1ackmai1er
15b2dcb6b6 Update dbgmon.asm 2023-03-06 15:40:00 +08:00
b1ackmai1er
39f51a9620 Update fdu.doc 2023-03-06 15:32:37 +08:00
b1ackmai1er
632cc0e7db dma updates
Tidy up driver, standardize terminology half/full
Update dmamon so port address is not hardcoded.
2023-03-06 15:26:56 +08:00
Wayne Warthen
f5cb22da8f Minor Cosmetic Cleanup
No functional changes.
2023-03-05 07:10:22 -08:00
Wayne Warthen
7f186df54d Merge pull request #321 from b1ackmai1er/dev
Update dmamon.asm
2023-03-05 07:00:28 -08:00
b1ackmai1er
590f5cff9a Update dmamon.asm
Additional test enhancements
2023-03-05 14:18:04 +08:00
Wayne Warthen
e6908ee259 Merge pull request #320 from b1ackmai1er/dev
Minors
2023-02-26 06:56:45 -08:00
b1ackmai1er
5b7ca9d9e6 Update dmamon.asm
Stripped out all the speed selection stuff added an option for the velesoft datagear.
Speed selection can now be done from the command line. May add it back in later but will use HBIOS function call.
2023-02-26 14:58:32 +08:00
b1ackmai1er
93ac0ba5d0 Update SystemGuide.md
To match hbios
2023-02-26 14:09:49 +08:00
b1ackmai1er
5d3c1e2d4a Update util.asm 2023-02-26 11:42:23 +08:00
b1ackmai1er
f080f5b80a Merge pull request #49 from wwarthen/dev
Config File Fixes
2023-02-26 09:52:19 +08:00
Wayne Warthen
f1382b75ec Config File Fixes
I had accidentally set CRTACT to TRUE in a few standard configs inadvertently.
2023-02-25 12:56:44 -08:00
b1ackmai1er
d175981c71 Merge pull request #48 from wwarthen/dev
Dev
2023-02-24 16:00:37 +08:00
Wayne Warthen
5e42066874 Release Candidate for v3.2 2023-02-23 17:24:07 -08:00
Wayne Warthen
52a41663eb Regen Doc, Bump Version 2023-02-21 14:01:03 -08:00
Wayne Warthen
f0183bdd8a Merge pull request #319 from b1ackmai1er/dev
Update hbios.asm
2023-02-21 13:42:16 -08:00
b1ackmai1er
2398805617 Update HBIOS 2023-02-21 20:44:31 +08:00
b1ackmai1er
08168681b6 Update hbios.asm 2023-02-21 19:37:43 +08:00
b1ackmai1er
fa3874ec45 Update hbios.asm
Device display list improvements
2023-02-20 22:20:33 +08:00
Wayne Warthen
fc634380b0 Merge pull request #317 from b1ackmai1er/dev
vgmplay updates, romldr baud improvements, hbios/cbios low memory handling and other minors
2023-02-19 18:25:52 -08:00
b1ackmai1er
6b84dd36b0 Update vgmplay.asm
Cleanup, move init code so that memory can be reused.
2023-02-19 21:52:11 +08:00
b1ackmai1er
93245434c0 Device display optimizations 2023-02-19 21:47:51 +08:00
b1ackmai1er
06913144f8 Create ay-test.asm
From the archives ...
2023-02-19 18:52:19 +08:00
b1ackmai1er
04947015aa Update config.asm 2023-02-19 15:44:03 +08:00
b1ackmai1er
e7ab778929 Slightly better handling of low HBIOS heap memory
CBIOS reports *** HBIOS Heap Overflow, when the HBIOS is big (i.e. lots of included drivers)

Trigger build failure when CCP will not fit in heap.
Slightly more informative CBIOS error message
2023-02-19 15:42:59 +08:00
b1ackmai1er
147ab2ce4c minors 2023-02-19 13:55:07 +08:00
b1ackmai1er
af2a025cff AY-3-8910 MINORS 2023-02-19 13:06:45 +08:00
b1ackmai1er
2da5ba80ba Merge pull request #47 from wwarthen/dev
Dev
2023-02-19 10:53:10 +08:00
b1ackmai1er
d4700d0cdd Update vgmplay.asm 2023-02-19 10:50:37 +08:00
b1ackmai1er
e2426eff08 Update vgmplay.asm
Resync
2023-02-19 10:47:31 +08:00
Wayne Warthen
2b16617ea3 Fix Missing Files 2023-02-17 19:06:01 -08:00
Wayne Warthen
816234f0fa More Cleanup 2023-02-17 18:07:44 -08:00
b1ackmai1er
d960efdc4d Merge pull request #46 from wwarthen/dev
Dev
2023-02-17 17:57:18 +08:00
Wayne Warthen
bd664c3a1f More Cleanup 2023-02-16 13:59:15 -08:00
Wayne Warthen
dc151ad1a7 Rename PORTSWP -> PORTSCAN 2023-02-16 11:09:05 -08:00
Wayne Warthen
2f3fb51884 More Cleanup
- Tweaks to SURVEY and PORTSWP to improve port detection accuracy and handle Z280 better
- Recover a **lot** of wasted space in dbgmon using a few built-in utility routines instead of entire util.asm
- Improve the (D)evice command in romldr to use the HBIOS routine which is much more complete and saves space
2023-02-15 19:31:05 -08:00
b1ackmai1er
29c7f3a920 Merge pull request #45 from wwarthen/dev
Fix SURVEY.COM (again)
2023-02-15 17:46:24 +08:00
Wayne Warthen
36fe842bec Fix SURVEY.COM (again)
See Issue #316
2023-02-14 18:47:09 -08:00
b1ackmai1er
3a8a503c8e Merge pull request #44 from wwarthen/dev
Dev
2023-02-14 19:12:29 +08:00
Wayne Warthen
73213d4321 Fix Missing Files 2023-02-13 19:53:35 -08:00
Wayne Warthen
7d19d3e403 More Cleanup 2023-02-13 19:32:43 -08:00
b1ackmai1er
975656ef6f Merge pull request #43 from wwarthen/dev
Dev
2023-02-08 18:59:48 +08:00
b1ackmai1er
00158b0107 Merge pull request #42 from wwarthen/dev
Continuing Doc Update
2023-02-06 19:27:27 +08:00
b1ackmai1er
979276e0b5 Merge pull request #41 from wwarthen/dev
Another Iteration of Documentation Updates
2023-01-31 19:38:47 +08:00
b1ackmai1er
8656cf992e Merge pull request #40 from wwarthen/dev
First Round of Clean-up for Stable Release
2023-01-29 11:06:48 +08:00
b1ackmai1er
6dac01102d Merge pull request #39 from wwarthen/dev
Update CF Card Detection
2023-01-22 17:51:11 +08:00
b1ackmai1er
a9173c076b Update ReadMe.txt 2023-01-20 00:37:03 +08:00
b1ackmai1er
8ffe53ea68 Merge pull request #38 from wwarthen/dev
Support Serial Keyboard with Video Displays
2023-01-20 00:34:38 +08:00
b1ackmai1er
83ff343186 Merge pull request #37 from wwarthen/dev
Finalize p-System Implementation
2023-01-17 17:05:23 +08:00
b1ackmai1er
c51963529d Merge pull request #36 from wwarthen/dev
Introducing p-System IV.0 for RomWBW
2023-01-14 21:54:27 +08:00
b1ackmai1er
834f2d7682 Merge pull request #35 from wwarthen/dev
Audio Driver Cleanup
2023-01-10 21:37:21 +08:00
b1ackmai1er
ec5b19acad Merge pull request #34 from wwarthen/dev
Enable WAIT Signal for 9958 Video
2023-01-09 17:50:09 +08:00
b1ackmai1er
3603ef9c9d Update unlzsa2s.asm 2023-01-07 08:02:32 +08:00
b1ackmai1er
3aed60afe2 Merge pull request #33 from wwarthen/dev
Minor IDE/CF/SD Disk Handling Updates
2023-01-06 23:27:14 +08:00
b1ackmai1er
e1e2c2efa9 Update unlzsa2s.asm
ver.07 by spke (04-05/04/2022, 134(-5) bytes, +1% speed, using self-modifying code by default)
2023-01-06 23:24:53 +08:00
b1ackmai1er
55b4e1e26d Use new hbios routine for speed setting. 2023-01-05 20:56:49 +08:00
b1ackmai1er
cb336c9ba5 Update vgmplay.asm
Reorganize and clarify some configuration settings
2023-01-03 19:50:59 +08:00
b1ackmai1er
ad0a6af047 Update romldr.asm
Rorder table to eliminate need for translation
2023-01-03 19:14:34 +08:00
b1ackmai1er
22afb8333c Merge pull request #32 from wwarthen/dev
Dev
2023-01-02 10:27:44 +08:00
b1ackmai1er
d8b7f88dad Merge pull request #26 from wwarthen/master
Resync
2022-11-09 17:40:23 +08:00
Wayne Warthen
25382b01e2 Create CODE_OF_CONDUCT.md 2022-03-25 08:58:41 -07:00
Wayne Warthen
d55587e341 Merge pull request #285 from wwarthen/add-license-1
Create LICENSE
2022-03-25 08:53:48 -07:00
Wayne Warthen
7d9ff0599b Create LICENSE 2022-03-25 08:53:03 -07:00
1034 changed files with 163238 additions and 11601 deletions

11
.github/pull_request_template.md vendored Normal file
View File

@@ -0,0 +1,11 @@
<!--
BEFORE YOU CREATE A PULL REQUEST:
- Please base all pull requests against the master branch
- Include a clear description of your change
- Reference related Issue(s) (e.g., "Resolves Issue #123")
Thank you for contributing to RomWBW! I will review your pull request as soon as possible.
DELETE EVERYTHING IN THIS COMMENT BLOCK AND REPLACE WITH YOUR COMMENTS
-->

View File

@@ -3,10 +3,9 @@ name: Commit Build
on:
push:
branches:
- master
- dev
- '**'
tags-ignore:
- v*
- '**'
jobs:
buildLinux:
@@ -14,16 +13,20 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: rlespinasse/github-slug-action@v4.4.0
- uses: actions/checkout@v3.1.0
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Get Commit Ref
run: |
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
echo "COMMIT_REF: $COMMIT_REF"
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
- name: Build
run: |
export TZ='America/Los_Angeles'
sudo apt-get install libncurses-dev
sudo apt-get install srecord
make dist
make distlog
rm -rf .git*
- name: List Output
@@ -33,36 +36,29 @@ 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_Linux-${{env.GITHUB_REF_SLUG}}-${{env.GITHUB_SHA_SHORT}}
name: RomWBW-${{env.COMMIT_REF}}-Linux
path: .
- name: Create Package Archive
run: |
zip -r RomWBW-SnapShot-Package.zip .
- name: Post SnapShot
uses: wwarthen/actions/packages/automatic-releases@built-packages
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
automatic_release_tag: "SnapShot"
prerelease: true
title: "RomWBW Development SnapShot Build"
files: |
RomWBW-SnapShot-Package.zip
buildMacOS:
runs-on: macOS-12
runs-on: macOS-latest
steps:
- uses: actions/checkout@v3.1.0
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Get Commit Ref
run: |
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
echo "COMMIT_REF: $COMMIT_REF"
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
- name: Build
run: |
export TZ='America/Los_Angeles'
brew install srecord
make dist
make distlog
rm -rf .git*
- name: List Output
@@ -72,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_MacOS
name: RomWBW-${{env.COMMIT_REF}}-MacOS
path: .

View File

@@ -1,8 +1,9 @@
name: Release Build
on:
release:
types: published
push:
tags:
- '**'
jobs:
build:
@@ -10,41 +11,99 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Create Package Label
run: |
LABEL=`echo "$GITHUB_REF" | sed "s|^refs/tags/||"`
echo "::set-env name=PKGLBL::$LABEL"
- name: Display Diagnostics
run: |
echo PKGLBL: "$PKGLBL"
echo Upload URL: "${{github.event.release.upload_url}}"
echo GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
- name: Checkout
uses: actions/checkout@v4.1.1
- name: Build
run: |
export TZ='America/Los_Angeles'
sudo apt-get install libncurses-dev
make dist
sudo apt-get install srecord
make distlog
rm -rf .git*
- name: Upload Artifact
uses: actions/upload-artifact@v1
with:
name: RomWBW-${{env.PKGLBL}}-Package
path: .
- name: Create Package Archive
run: |
zip -r Package.zip .
- name: Upload Release Asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
zip -r RomWBW-${{github.ref_name}}-Package.zip .
- name: Set Title
run: |
echo "Tag: ${{github.ref_name}}"
if grep -q "dev" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Development Snapshot"
elif grep -q "pre" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Prerelease"
elif grep -q "rc" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Release Candidate"
else
TITLE="RomWBW"
fi
echo "Title: $TITLE"
echo "TITLE=$TITLE" >>$GITHUB_ENV
- name: Attach Package Archive
uses: wwarthen/actions/packages/automatic-releases@built-packages
with:
upload_url: ${{github.event.release.upload_url}}
asset_path: Package.zip
asset_name: RomWBW-${{env.PKGLBL}}-Package.zip
asset_content_type: application/zip
repo_token: "${{secrets.GITHUB_TOKEN}}"
draft: true
prerelease: true
title: "${{env.TITLE}} ${{github.ref_name}}"
files: |
RomWBW-${{github.ref_name}}-Package.zip
# - name: Upload Package Archive
# uses: AButler/upload-release-assets@v2.0.2
# with:
# repo-token: ${{secrets.github_token}}
# files: |
# RomWBW-${{env.PKGLBL}}-Package.zip
# - name: Post SnapShot
# uses: docker://antonyurchenko/git-release:latest
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# RELEASE_NAME_PREFIX: "${{env.TITLE}} "
# CHANGELOG_FILE: "none"
# with:
# args: |
# RomWBW-SnapShot-Package.zip
# - name: Post SnapShot
# uses: cb80/pubrel@latest
# with:
# replace: true
# files: |
# RomWBW-SnapShot-Package.zip
# - name: Post SnapShot
# uses: wwarthen/actions/packages/automatic-releases@built-packages
# with:
# repo_token: "${{ secrets.GITHUB_TOKEN }}"
# prerelease: true
# title: "RomWBW Development SnapShot ${{env.GITHUB_REF_SLUG}}"
# files: |
# RomWBW-SnapShot-Package.zip
# - name: Remove Older Releases
# uses: wwarthen/delete-release-action@v1.2
# with:
# release-drop: true
# release-keep-count: 0
# release-drop-tag: true
# pre-release-drop: false
# pre-release-keep-count: 0
# pre-release-drop-tag: true
# draft-drop: true
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# - name: Remove Older Releases
# uses: s00d/delete-older-releases@0.2.1
# with:
# keep_latest: 1
## delete_tag_pattern: beta # defaults to ""
# delete_type: 'release'
# delete_branch: 'main'
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

8
.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,9 @@ Tools/unix/zx/zx
!Source/ZPM3/*.[Cc][Oo][Mm]
!Source/ZSDOS/*.[Cc][Oo][Mm]
!Source/ZRC/*.bin
!Source/ZZR/*.bin
!Source/ZZR/*.hex
!Source/ZRC512/*.bin
!Source/Z1RCC/*.bin
!Source/ZZRCC/*.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

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,173 +0,0 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory ("Binary") is part of the RomWBW System Software
distribution archive. Refer to the ReadMe.txt file in this
directory for more information on the overall contents of the
directory.
RomWBW includes a set of disk images that are ready to copy onto
a floppy or hard/CF/SD disk. You can use your modern computer
(Windows/Linux/Mac) to copy the disk image file onto your disk
media. The disk media will then be ready to use in your RomWBW
System.
WARNING: The hdnew_*.img disk images are part of a new disk
format that is a work in progress. Do not use these disk
images without knowing exactly what you are doing! The
hd_*.img disk images continue to be the images you should
be using under normal circumstances.
A description of the disk images is provided later in this file.
For more information on the creatioin of these images including
instructions for customizing them or creating your own, refer to
the ReadMe.txt file in the Source\Images directory.
Installing Images
-----------------
The following instructions apply to Windows computers. Alternatively,
you can use the "dd" command on Linux or Mac.
First of all, a MAJOR WARNING!!!! The tools described below are
quite capable of obliterating your running Windows system drive. Use
with extreme caution and make sure you have backups.
To install a floppy image on floppy media, you can use the tool
called RaWriteWin. This tool is included in the Tools directory of
the distribution. This tool will write your floppy image (fd_xxx.img)
to a floppy disk using a raw block transfer. The tool is GUI based
and it's operation is self explanatory.
To install a hard disk image on a CF card or SD card, you must have
the appropriate media card slot on your computer. If you do, you can
use the tool called Win32DiskImager. This tool is also included in
the Tools directory of the distribution. It will write your
hard disk image (hd_xxx.img) to the designated media card. This tool
is also GUI based and self explanatory.
The use of the SIMH emulator is outside of the scope of this document.
However, if you use SIMH, you will find that you can attach the hard
disk images to the emulator with lines such as the following in your
SIMH configuration file:
| attach hdsk0 hd_cpm22.img
| set hdsk0 format=HDSK
| set hdsk0 geom=T:2048/N:256/S:512
| set hdsk0 wrtenb
Making Disk Images Bootable
---------------------------
The Operating System disk images below are ready to boot by the
RomWBW Boot Loader. However, if you update your RomWBW ROM, then
you should also update the system tracks of your bootable disk
images. You would use SYSCOPY to do this. SYSCOPY can also be
used to make a disk bootable if it is not already bootable.
You would use a command like the following to make drive C bootable:
| B>SYSCOPY C:=CPM.SYS
The system file to use depends on the operating system you are trying
to boot from the slice you are initializing with SYSCOPY:
CP/M 2.2 - cpm.sys
ZSDOS 1.1 - zsys.sys
CP/M 3 - cpmldr.sys
ZPM3 - cpmldr.sys
Slices
------
A RomWBW CP/M filesystem is fixed at 8MB. This is because it is the
largest size filesystem supported by all common CP/M variants. Since
all modern hard disks (including SD Cards and CF Cards) are much
larger than 8MB, RomWBW supports the concept of "slices". This
simply means that you can concatenate multiple CP/M filesystems (up
to 256 of them) on a single physical hard disk and RomWBW will allow
you to assign drive letters to them and treat them as multiple
independent CP/M drives.
With the exception of the hd_combo image, each of the disk images
includes a single CP/M file system (i.e., a single slice). However,
you can easily create a multi-slice disk image by merely concatenating
multiple images together. For example, if you wanted to create a 2
slice disk image that has ZSDOS in the first slice and Wordstar in
the second slice, you could use the following command from a Windows
command prompt:
| C:\RomWBW\Binary>copy /b hd_zsdos.img + hd_ws.img hd_multi.img
You can now write hd_multi.img onto your SD or CF Card and you will
have ZSDOS in the first slice and Wordstar in the second slice.
The hd_combo disk image is an example of this. It contains several
slices in one image file. The contents of this special disk image
are described below.
The concept of slices applies ONLY to hard disks. Floppy disks are
not large enough to support multiple slices.
Disk Image Contents
-------------------
What follows is a brief description of the contents of the
disk images automatically provided in the RomWBW distribution.
Note that all of the OS images include the RomWBW custom
support apps.
cpm22 - DRI CP/M 2.2 (Bootable Floppy and Hard Disk)
Standard DRI CP/M 2.2 distribution files along with a few commonly
used utilities.
zsdos - ZCPR1 + ZSDOS 1.1 (Bootable Floppy and Hard Disk)
Contains ZCPR1 and ZSDOS 1.1. This is roughly equivalent to the
ROM boot contents, but provides a full set of the applications
and related files that would not all fit on the ROM drive.
nzcom - NZCOM (Bootable Floppy and Hard Disk)
Standard NZCOM distribution. Note that you will need to run the
NZCOM setup before this will run properly. You will need
to refer to the NZCOM documentation.
cpm3 - DRI CP/M3 (Bootable Floppy and Hard Disk)
Standard DRI CP/M 3 adaptation for RomWBW that is ready to run.
It can be started by running CPMLDR.
zpm3 - ZPM3 (Bootable Floppy and Hard Disk)
Simeon Cran's ZCPR 3 compatible OS for CP/M 3 adapted for RomWBW and
ready to run. It can be started by running CPMLDR (which seems
wrong, but ZPMLDR is somewhat broken).
ws4 - WordStar 4 (Floppy and Hard Disk)
Micropro Wordstar 4 full distribution. This image is not bootable
and is intended to be added as an additional slice to an OS image.
bp - BPBIOS (Hard Disk only)
Adaptation of BPBIOS for RomWBW. This is NOT complete and NOT
useable in it's current state.
combo - Multi-Boot Combination (Bootable Hard Disk)
A pre-created combo image that contains the following slices. The
slices are identical to the individual images listed above.
Slice 0: cpm22 (bootable)
Slice 1: zsdos (bootable)
Slice 2: nzcom (bootable)
Slice 3: cpm3 (bootable)
Slice 4: zpm3 (bootable)
Slice 5: ws4 (not bootable)

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

@@ -39,8 +39,8 @@ 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 the
RomList.txt file in this directory.
Documentation of the pre-built ROM Images is contained in
"RomWBW User Guide.pdf" in the Doc directory.
ROM Firmware Update Images (<plt>_<cfg>.upd)
-------------------------------------
@@ -49,7 +49,7 @@ The files with a ".upd" extension are binary images identical to the
.rom files, but they only have the first 128K bytes. The first 128K
is the system image without the ROM disk contents. These files can be
used to update the system image without modifying the ROM disk
contents. Refer to the Getting Started document for more information.
contents. Refer to the RomWBW User Guide for more information.
ROM Executable Images (<plt>_<cfg>.com)
---------------------------------------
@@ -110,7 +110,9 @@ 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.
"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

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,3 +1,99 @@
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
- M?P: Reorganization of Doc directory introducing subfolders
- WBW: Upgraded BBCBASIC to v5.00
- W?S: Updated FLASH utility to v1.3.9
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
- A?C: Support for Z80-Retro SD interface
- WBW: Support per-drive floppy configuration
- WBW: Support for Bill Shen's VGARC
- WBW: Support for MG014 Parallel Port module + printer
- 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
- R?P: Added new disk images: Aztec C, MS BASIC Compiler, MS Fortran, Games, HiTech-C, Turbo Pascal, SLR Z80ASM
- JBL: Added RCZ80 configuration for ColecoVision
- WBW: Support for Z180 running interrupt mode 1
- WBW: Preliminary support for S100 Computers Z180
- WBW: Preliminary support for Dan Werner's ESP32 MBC Module
- WBW: Early support for Duodyne base system (CPU/UART/ROM/RAM/RTC/SPK)
- M?C: Fixed XM to allow specifying HBIOS port for send operations
- WBW: Fix S100 Z180 LED operation (credit to Jay Cotton for finding this issue)
- WBW: QPM system image is now combined with current CBIOS during build
- WBW: Added framework for Heath platform
- WBW: Support for USB Disks via CH375/CH376
- D?J: Support for Raspberry Pi build process
Version 3.2.1
-------------
- M?P: Fixed Zeta 2 FDD and CPUSPD config settings
- WBW: Fixed SURVEY.COM (again)
- DDW: Updates to DOS/65 binaries in disk images
- PMS: Updates to VGMPLAY including support for YM2151
- WBW: Fix for quark delay adjustment being trashed
Version 3.2
-----------
- WBW: Version bump for release
Version 3.1.1
-------------
- WBW: Version bumped due to pervasive changes
@@ -9,7 +105,7 @@ Version 3.1.1
- HCS: ZRC memory manager support
- S?K: Support for Tiny Z80 by Sergey
- E?B: Support for v6 YM/AY sound card
- C?M: Support for RC2014 bus PropIO V2
- C?M: Support for RCBus bus PropIO V2
- W?S: Updated FLASH software to v1.3.4
- PMS: Preliminary support for writing to FLASH ROMs
- PMS: Creation of process to update ROM system area w/o updating ROM disk contents
@@ -75,7 +171,7 @@ Version 3.1
- WBW: Refactored ROM Loader
- WBW: INTRTC periodic timer based clock
- WBW: FDISK80 updated to allow reserving up to 256 slices
- WBW: Added support dual 16C550 UART on RC2014 platform
- WBW: Added support dual 16C550 UART on RCBus platform
- WBW: Made .com images smaller (contain only Z-System now)
- WBW: Support automatic clock hardware detection and fallback
- WBW: Support use of CTC for SIO baud rate divisors
@@ -113,8 +209,8 @@ Version 2.9.2
- WBW: Support two SIO modules w/ auto-detection
- PMS: Support ECB USB-FIFO board
- WBW: Fixed ASSIGN issue with incorrect DPB selection
- WBW: Add RC2014 Z180 AY sound support to TUNE app
- WBW: Add RC2014 AY sound support to AY driver
- WBW: Add RCBus Z180 AY sound support to TUNE app
- WBW: Add RCBus AY sound support to AY driver
- WBW: Add SC126 platform
- WBW: Config files cleanup
- WBW: Add interrupt support to ASCI driver
@@ -133,7 +229,7 @@ Version 2.9.2
- PMS: Add sound support to NASCOM BASIC
- WBW: Updated FAT to add MD and FORMAT commands
- WBW: Add CP/M 3 (experimental)
- M?T: Support Shift register SPI WIZNET for RC2014
- M?T: Support Shift register SPI WIZNET for RCBus
- PLS: Added seconds register in HBIOS
- WBW: More flexible table-driven config in TUNE.COM
- PMS: Added timer support for Zilog Peripherals ECB Board
@@ -161,7 +257,7 @@ Version 2.9.2
Version 2.9.1
-------------
- E?B: Added support for RC2014 RTC
- E?B: Added support for RCBus RTC
- WBW: Converted PTXPLAY to TUNE (now plays PT2/PT3/MYM sounds files)
- WBW: Updated Win32DiskImager to v1.0
- WBW: Implemented character attributes on Propeller based consoles
@@ -171,7 +267,7 @@ Version 2.9.1
- WBW: Update default IOBYTE so that LST:=LPT: by default
- WBW: Fixed missing drive/head setup for writes in PPIDE
- WBW: Fixed XModem HBIOS console driver for file send operations
- WBW: Preliminary support for RC180 platform (Z180 module in RC2014)
- WBW: Preliminary support for RC180 platform (Z180 module in RCBus)
- WBW: Added NZCOM distribution files to third slice of hard disk image
- WBW: Fixed getnum32 bug in MODE command (found by Phil Summers)
- PMS: Added serial support for Zilog Peripherals Baord
@@ -189,26 +285,26 @@ Version 2.9.1
- WBW: Added timer interrupt support for CTC under Zeta 2 and Easy Z80
- WBW: Support LBA style access in floppy driver
- WBW: Added beta version of FAT filesystem utility (copy, dir, del, ren)
- SCC: Added support for native memory addressing on Z180-based RC2014
- SCC: Added support for native memory addressing on Z180-based RCBus
- PMS: Dynamically discover and display processor type at boot
- J?L: Added German keyboard support to PPK and KBD drivers
Version 2.9.0
-------------
- WBW: Implemented multi-sector I/O in all disk drivers
- WBW: Added support for RC2014 SMB Floppy controller modules (SMC and WDC)
- WBW: Added support for RCBus SMB Floppy controller modules (SMC and WDC)
- WBW: New function dispatching for character/disk/video drivers
- WBW: Updated FDU app to support RC2014 floppy controllers
- WBW: Updated FDU app to support RCBus floppy controllers
- WBW: Added TIMER app to display system timer value
- WBW: Refactored interrupt management code
- WBW: Added PTXPLAY application and sample tunes
Version 2.8.6
-------------
- WBW: Added support for RC2014 (SIO and ACIA drivers primarily)
- WBW: Added support for RCBus (SIO and ACIA drivers primarily)
- WBW: Automatically detect and run PROFILE.SUB on boot drive if it exists
- WBW: Fixed Dual SD Board detection
- WBW: Added console support to XModem (for RC2014 primarily)
- WBW: Added console support to XModem (for RCBus primarily)
- E?B: Fixed IDE/PPIDE when used with non-CF drives
- WBW: Patched SUBMIT.COM so that it always puts temp file on A: for immediate execution
- WBW: Accommodate spin up time for true IDE hard disks (IDE or PPIDE)

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

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

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.

File diff suppressed because one or more lines are too long

Binary file not shown.

View File

@@ -6,28 +6,41 @@
*** ***
***********************************************************************
This directory ("Doc") is part of the RomWBW System Software
distribution archive. It contains documentation for components of
This directory ("Doc") is part of the RomWBW System Software
distribution archive. It contains documentation for components of
the system.
CPM (Directory)
---------------
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.
Documentation specific to CP/M, including all versions and derivatives.
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")
------------------------------------------------------
Language (Directory)
--------------------
The original DRI CP/M 3.0 Operating System Documentation Set. This
should be considered the primary reference for CP/M 3 system operation.
Documentation specific to programming languages, provided with the system
ChangeLog.txt
-------------
Log of changes in RomWBW by version.
RomWBW User Guide ("RomWBW User Guide.pdf")
RomWBW System Guide ("RomWBW System Guide.pdf")
RomWBW Applications ("RomWBW Applications.pdf")
RomWBW ROM Applications ("RomWBW ROM Applications.pdf")
RomWBW Disk Catalog ("RomWBW Disk Catalog.pdf")
RomWBW Errata ("RomWBW Errata.pdf")
-------------------------------------------------------
Documentation set for RomWBW. The primary document is the
User Guide. The System Guide explains internal system operation
and has a reference for the HBIOS API. Use of included tools
and utilities are detailed in the Applications and
ROM Applications documents.
DDTZ Manual ("DDTZ.doc")
@@ -39,39 +52,21 @@ Manual for the DDTZ v2.7 debug tool included on the ROM drive.
FDisk Manual ("FDisk Manual.pdf")
---------------------------------
The operational manual for John Coffman's hard disk partitioning
The operational manual for John Coffman's hard disk partitioning
program. This program is included in RomWBW as FDISK80.
Floppy Disk Utility Documentation ("FDU.tst")
---------------------------------------------
Operational documentation for the RomWBW FDU application.
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")
----------------------------------------------
SIO+CTC Baud Rate Options (SIO+CTC Baud Rate Options.pdf)
---------------------------------------------------------
NZCOM operating system operation manual.
RomWBW Architecture ("RomWBW Architecture.pdf")
-----------------------------------------------
Document describing the architecture of the RomWBW HBIOS. It
includes reference information for the HBIOS calls.
ROM Applications ("ROM Applications.pdf")
-----------------------------------------
Breif instructions for the ROM based applications included in
in the boot ROM.
Documents possible baud rates available based on different baud
clock rates for Zilog SIO using CTC for baud rate clock generation.
Z180 ASCI Baud Rate Options ("Z180 ASCI Baud Rate Options.pdf")
@@ -83,19 +78,10 @@ clock rate. This document provides a list of the possible
baud rates for typical CPU clock rates.
ZCPR Manual ("ZCPR Manual.pdf")
-------------------------------
UCSD p-System Users Manual ("UCSD p-System Users 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.
Official user manual for p-System operating system included with
RomWBW.
ZSDOS Manual ("ZSDOS Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual fo 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.
--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.

Binary file not shown.

View File

@@ -23,7 +23,7 @@ Zeta 2 (X)
- Test FD driver
- Test FDU app
RC2014 (X)
RCBus (X)
------
- Test SIO driver (Serial Module)
- Test ACIA driver (Dual Serial Module)
@@ -40,7 +40,7 @@ N8-2312 (X)
- Test FDU app
- Test TMS driver (video & kbd)
N8-2511 ( )
N8-2511 (X)
-------
- Test ASCI driver
- Test SD driver (Juha mode)
@@ -139,27 +139,6 @@ GENERAL (X)
- ASSIGN app
- MODE app
- SYSCOPY app
- OSLDR app
- FDU app
- FDISK80 app
- TUNE app
RESULTS
-------
- Missing HBIOS startup banner (X)
- PANIC while printing Serial device inventory (X)
- Unexpected interrupt signals not handled well (X)
- Fix IT_??? usage (X)
- Fix HB_DI/HB_EI in PEEK/POKE/BNKCPY (X)
- Fix SIMH timer interrupt setup (X)
- Move DI/EI in PEEK/POKE/BNKCPY to API layer? (X)
- RETI vs. JP in page zero when INTMODE = 0 (X)
- Check interrupt stack space (X)
- If an early INT fires, we return with INTs enabled (not good) (X)
- PPPCON init should display ANSI 80x25 or similar (X)
- Add INT MODE X message to early boot messages (X)
- OSLDR fails when LDDS is loaded (X)
- Add "!!!" to force assembly error as needed ( )
- TIMER app should check for HBIOS active (X)
- Halt system after bad interrupt??? ( )
- Adapt and bundle PLAYER.COM (X)

Binary file not shown.

View File

@@ -1,5 +1,14 @@
all:
.PHONY: tools source clean clobber diff dist
.ONESHELL:
.SHELLFLAGS = -cex
all: tools source
tools:
$(MAKE) --directory Tools
source:
$(MAKE) --directory Source
clean:
@@ -14,6 +23,9 @@ diff:
$(MAKE) --directory Source diff
dist:
$(MAKE) ROM_PLATFORM=dist 2>&1 | tee make.log
$(MAKE) --directory Source clean
$(MAKE) ROM_PLATFORM=dist
$(MAKE) --directory Tools clean
$(MAKE) --directory Source clean
distlog:
$(MAKE) dist 2>&1 | tee make.log

136
ReadMe.md
View File

@@ -1,9 +1,9 @@
**RomWBW ReadMe** \
Version 3.1 Pre-release \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
12 Feb 2023
17 May 2024
# Overview
@@ -14,15 +14,24 @@ platforms are supported including those produced by these developer
communities:
- [RetroBrew Computers](https://www.retrobrewcomputers.org)
- [RC2014](https://rc2014.co.uk),
(<https://www.retrobrewcomputers.org>)
- [RC2014](https://rc2014.co.uk) (<https://rc2014.co.uk>),
[RC2014-Z80](https://groups.google.com/g/rc2014-z80)
- [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
(<https://groups.google.com/g/rc2014-z80>)
- [Retro Computing](https://groups.google.com/g/retro-comp)
(<https://groups.google.com/g/retro-comp>)
- [Small Computer Central](https://smallcomputercentral.com/)
(<https://smallcomputercentral.com/>)
A complete list of the currently supported platforms is found in the
\[Installation\] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
@@ -42,11 +51,11 @@ ROM firmware itself:
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
@@ -66,7 +75,7 @@ changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
@@ -76,18 +85,19 @@ OSes such as Windows, MacOS, and Linux very easy.
# Acquiring RomWBW
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
The [RomWBW Repository](https://github.com/wwarthen/RomWBW)
(<https://github.com/wwarthen/RomWBW>) on GitHub is the official
distribution location for all project source and documentation. The
fully-built distribution releases are available on the [RomWBW Releases
Page](https://github.com/wwarthen/RomWBW/releases)
(<https://github.com/wwarthen/RomWBW/releases>) of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
@@ -102,22 +112,22 @@ 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).
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/dev/Doc/RomWBW%20User%20Guide.pdf)
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20User%20Guide.pdf)
- [RomWBW System
Guide](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20System%20Guide.pdf)
Guide](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20System%20Guide.pdf)
- [RomWBW
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Applications.pdf)
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Applications.pdf)
- [RomWBW ROM
Applications](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20ROM%20Applications.pdf)
Applications](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20ROM%20Applications.pdf)
- [RomWBW
Errata](https://github.com/wwarthen/RomWBW/raw/dev/Doc/RomWBW%20Errata.pdf)
Errata](https://github.com/wwarthen/RomWBW/raw/master/Doc/RomWBW%20Errata.pdf)
# Acknowledgments
@@ -128,8 +138,8 @@ 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 code can still
be found in RomWBW.
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.
@@ -140,23 +150,30 @@ let me know if I missed you!
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.
- Ed Brindley contributed some of the code that supports the RC2014
- 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.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
- Spencer Owen created the RC2014 series of hobbyist kit computers which
has exponentially increased RomWBW usage.
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.
@@ -176,6 +193,44 @@ let me know if I missed you!
- 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.
- 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
@@ -197,14 +252,15 @@ 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
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen wwarthen@gmail.com
> 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
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

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
12 Feb 2023
17 May 2024
@@ -13,15 +13,21 @@ Z80/180/280 retro-computing hardware systems. A wide variety of
platforms are supported including those produced by these developer
communities:
- RetroBrew Computers
- RC2014, RC2014-Z80
- retro-comp
- Small Computer Central
- RetroBrew Computers (https://www.retrobrewcomputers.org)
- RC2014 (https://rc2014.co.uk),
RC2014-Z80 (https://groups.google.com/g/rc2014-z80)
- Retro Computing (https://groups.google.com/g/retro-comp)
- Small Computer Central (https://smallcomputercentral.com/)
A complete list of the currently supported platforms is found in the
[Installation] section.
General features include:
- Z80 Family CPUs including Z80, Z180, and Z280
- Banked memory services for several banking designs
- Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
Iomega
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
@@ -41,11 +47,11 @@ ROM firmware itself:
A dynamic disk drive letter assignment mechanism allows mapping
operating system drive letters to any available disk media.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
the use of multiple slices (up to 256 per device). Each slice contains a
complete CP/M filesystem and can be mapped independently to any drive
letter. This overcomes the inherent size limitations in legacy OSes and
allows up to 2GB of accessible storage on a single device.
Additionally, mass storage devices (IDE Disk, CF Card, SD Card, etc.)
support the use of multiple slices (up to 256 per device). Each slice
contains a complete CP/M filesystem and can be mapped independently to
any drive letter. This overcomes the inherent size limitations in legacy
OSes and allows up to 2GB of accessible storage on a single device.
The pre-built ROM firmware images are generally suitable for most users.
However, it is also very easy to modify and build custom ROM images that
@@ -65,7 +71,7 @@ changing media.
By design, RomWBW isolates all of the hardware specific functions in the
ROM chip itself. The ROM provides a hardware abstraction layer such that
all of the operating systems and applications on a disk will run on any
RomWBW-based system. To put it simply, you can take a disk (or CF/SD
RomWBW-based system. To put it simply, you can take a disk (or CF/SD/USB
Card) and move it between systems transparently.
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
@@ -78,16 +84,18 @@ OSes such as Windows, MacOS, and Linux very easy.
ACQUIRING ROMWBW
The RomWBW Repository on GitHub is the official distribution location
for all project source and documentation. The fully-built distribution
releases are available on the RomWBW Releases Page of the repository. On
this page, you will normally see a Development Snapshot as well as
recent stable releases. Unless you have a specific reason, I suggest you
stick to the most recent stable release. Expand the “Assets” drop-down
for the release you want to download, then select the asset named
RomWBW-vX.X.X-Package.zip. The Package asset includes all pre-built ROM
and Disk images as well as full source code. The other assets contain
only source code and do not have the pre-built ROM or disk images.
The RomWBW Repository (https://github.com/wwarthen/RomWBW) on GitHub is
the official distribution location for all project source and
documentation. The fully-built distribution releases are available on
the RomWBW Releases Page (https://github.com/wwarthen/RomWBW/releases)
of the repository. On this page, you will normally see a Development
Snapshot as well as recent stable releases. Unless you have a specific
reason, I suggest you stick to the most recent stable release. Expand
the “Assets” drop-down for the release you want to download, then select
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
all pre-built ROM and Disk images as well as full source code. The other
assets contain only source code and do not have the pre-built ROM or
disk images.
All source code and distributions are maintained on GitHub. Code
contributions are very welcome.
@@ -129,8 +137,8 @@ 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 code can
still be found in RomWBW.
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
@@ -142,23 +150,30 @@ let me know if I missed you!
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.
- Ed Brindley contributed some of the code that supports the RC2014
- 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.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
- Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage.
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.
@@ -178,6 +193,45 @@ let me know if I missed you!
- 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.
- 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.
@@ -202,14 +256,15 @@ 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
If anyone feels their work is being used outside of its intended
licensing, please notify:
Wayne Warthen wwarthen@gmail.com
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
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

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

@@ -0,0 +1,455 @@
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
(C) Copyright R.T.Russell 1982-1999
1. INTRODUCTION
BBC BASIC (Z80) has been designed to be as compatible as possible with
Version 4 of the 6502 BBC BASIC resident in the BBC Micro Master series.
The language syntax is not always identical to that of the 6502 version,
but in most cases the Z80 version is more tolerant.
BBC BASIC (Z80) is as machine independent as possible and, as supplied,
it will run on any CP/M 2.2 (or later) system using a Z80 processor
(checks are carried out to ensure that the processor is a Z80 and that
the version of CP/M is at least 2.2). It is minimally configured for an
ADM3a-compatible VDU.
Few CP/M systems offer colour graphics of the quality provided as
standard on the BBC Microcomputer, and no software can provide colour
high-resolution graphics from a monochrome character-orientated computer.
However, many CP/M system users are interested in the advanced program
structures available from BBC BASIC and, within the limitations of the
host computer, BBC BASIC (Z80) provides the programming structures and
the non-graphic commands and functions specified for BBC BASIC.
In order to make full use of the facilities available in BBC BASIC (Z80)
it is necessary to install a small patch to adapt it to the capabilities
of the host computer. The source code of the patch present in the
distribution version is supplied as BBCDIST.MAC.
This documentation should be read in conjunction with a standard BBC
BASIC manual. Only those features which differ from the standard Acorn
versions are documented here.
2. MEMORY UTILISATION
BBC BASIC (Z80) requires about 16 Kbytes of code space, resulting in a
value of PAGE of about &3E00. The remainder of the user memory is
available for BASIC programs, variables (heap) and stack. Depending on
the system configuration, HIMEM can have a value up to &FE00.
3. COMMANDS, STATEMENTS AND FUNCTIONS
The syntax of BASIC commands, statements and functions is in most cases
identical to that of the BBC Micro version (BASIC 4). The few
differences are documented here:
ADVAL
This function is not implemented.
CALL
CALL sets up a table in RAM containing details of the parameters; the
processor's IX register is set to the address of this parameter table.
The other processor registers are initialised as follows:
A is initialised to the least significant byte of A%
B is initialised to the least significant byte of B%
C is initialised to the least significant byte of C%
D is initialised to the least significant byte of D%
E is initialised to the least significant byte of E%
F is initialised to the least significant byte of F%
H is initialised to the least significant byte of H%
L is initialised to the least significant byte of L%
The parameter types are:
Code No. Parameter Type Example
0 Byte (8 bits) ?A%
4 Word (32 bits) !A% or A%
5 Real (40 bits) A
128 Fixed string $A%
129 Movable string A$
On entry to the subroutine the parameter table contains the following
values:
Number of parameters 1 byte (at IX)
Parameter type 1 byte (at IX+1)
Parameter address 2 bytes (at IX+2, IX+3, LSB first)
Parameter type ) repeated as often as necessary
Parameter address )
Except in the case of a movable string (normal string variable), the
parameter address given is the absolute address at which the item is
stored. In the case of movable strings (type 129) it is the address of a
4-byte parameter block containing the current length, the maximum length
and the start address of the string (LSB first) in that order.
Integer variables are stored in twos complement form with their least
significant byte first.
Fixed strings are stored as the characters of the string followed by a
carriage return (&0D).
Floating point variables are stored in binary floating point format with
their least significant byte first; the fifth byte is the exponent. The
mantissa is stored as a binary fraction in sign and magnitude format.
Bit 7 of the most significant byte is the sign bit and, for the purposes
of calculating the magnitude of the number, this bit is assumed to be set
to one. The exponent is stored as an integer in excess 127 format (to
find the exponent subtract 127 from the value in the fifth byte).
If the exponent byte of a floating point number is zero, the number is an
integer stored in integer format in the mantissa bytes. Thus an integer
can be represented in two different ways in a real variable. For example
the value +5 can be stored as:
05 00 00 00 00 Integer 5
00 00 00 20 82 (0.5 + 0.125) * 2^3
COLOUR (COLOR)
This statement is not implemented.
DRAW
This statement is not implemented.
EDIT
A command to edit or concatenate and edit the specified program line(s).
The specified lines (including their line numbers) are listed as a single
line. By changing only the line number you can use EDIT to duplicate a
line.
EDIT 230
EDIT 200,230
The following control functions are active both in the EDIT mode and in
the immediate entry mode (i.e. at the BASIC prompt):
Move the cursor one character position to the left
Move the cursor one character position to the right
Move the cursor to the start of the line
Move the cursor to the end of the line
Insert a space at the current cursor position
Delete the character at the current cursor position
Backspace and delete the character to the left of the cursor
Delete all characters to the left of the cursor
Delete all characters from the cursor to the end of the line
The choice of which keys activate these functions is made when BBC BASIC
is configured for a particular system. The distribution version uses ^H,
^I, ^K, ^J, ^A, ^E, DEL (&7F), ^L and ^X.
To exit EDIT mode and replace the edited line, type RETURN (ENTER).
To abort the edit and leave the line unchanged, type ESCape.
ENVELOPE
This statement is not implemented.
GET
This function waits for a character to be typed at the keyboard, and
returns the ASCII code.
GET can also be used to read data from a processor I/O port; full 16-bit
port addressing is available:
N% = GET(X%) : REM input from port X%
INKEY
This function waits for a specified maximum number of centiseconds for a
character to be typed at the keyboard. If no character is typed in that
time, the value -1 is returned. In the distribution version the delay is
determined by a simple software timing loop, and may be very inaccurate.
The customisation patch allows this to be adjusted to suit the system in
use.
INPUT#
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
return (&0D).
MODE
This statement is not implemented.
MOVE
This statement is not implemented.
PLOT
This statement is not implemented.
POINT
This function is not implemented.
PRINT#
The format of data files is different from that used by the BBC Micro, in
part to improve compatibility with standard CP/M files. Numeric values
are stored as five bytes in the format documented under CALL; if the
fifth byte is zero the value is an integer. Strings are stored as the
characters of the string (in the correct order!) followed by a carriage
return (&0D).
PUT
A statement to output data to a processor port. Full 16-bit addressing
is available.
PUT A%,N% : REM Output N% to port A%
SOUND
This statement is not implemented.
TIME
This pseudo-variable is not implemented in the distribution version, but
can be supported by means of the customisation patch. See BBCDIST.MAC.
USR
As with CALL, the processor's registers are initialised as follows:
A is initialised to the least significant byte of A%
B is initialised to the least significant byte of B%
C is initialised to the least significant byte of C%
D is initialised to the least significant byte of D%
E is initialised to the least significant byte of E%
F is initialised to the least significant byte of F%
H is initialised to the least significant byte of H%
L is initialised to the least significant byte of L%
USR returns a 32-bit integer result composed of the processor's H, L, H'
and L' registers, with H being the most significant.
4. RESIDENT Z80 ASSEMBLER
The in-line assembler is accessed in exactly the same way as the 6502
assembler in the BBC Micro version of BBC BASIC. That is, '[' enters
assembler mode and ']' exits assembler mode.
All standard Zilog mnemonics are accepted: ADD, ADC and SBC must be
followed by A or HL. For example, ADD A,C is accepted but ADD C is not.
However, the brackets around the port number in IN and OUT are optional.
Thus both OUT (5),A and OUT 5,A are accepted. The instruction IN F,(C)
is not accepted, but the equivalent code is produced from IN (HL),C
The pseudo-ops DEFB, DEFW and DEFM are included. DEFM works like EQUS in
the 6502 version.
5. OPERATING SYSTEM INTERFACE
The following resident Operating System ("star") commands are
implemented. They may be accessed directly (e.g. *BYE) or via the OSCLI
statement (OSCLI "BYE").
Control characters, lower-case characters, DEL and quotation marks may be
incorporated in filenames by using the 'escape' character '|'. However,
there is no equivalent to the BBC Microcomputer's '|!' to set bit 7.
*BYE
Returns control to the operating system (CP/M).
*CPM
Same as *BYE.
*. [filespec]
*DIR [filespec]
List the files which match the (optional) ambiguous filespec. If the
filespec is omitted, all .BBC files are listed:
*DIR List all .BBC files on the disk
*DIR B:*.* List all files on disk B:
*.*.* List all files on the current disk
*DRIVE d:
Select drive d as the default drive for subsequent disk operations.
*ERA filespec
Erase (delete) the specified disk file or files. The extension defaults
to .BBC if omitted.
*ESC [ON|OFF]
*ESC OFF disables the abort action of the ESCape key; after *ESC OFF the
ESCape key simply returns the ASCII code ESC (27). *ESC ON, or *ESC,
restores the normal action of the ESCape key.
*EXEC filespec
Accept console input from the specified file instead of from the
keyboard. If the extension is omitted, .BBC is assumed.
*LOAD filespec aaaa
Loads the specified file into memory at address aaaa. The load address
must be specified. If the extension is omitted, .BBC is assumed.
*OPT [n]
Select the destination for console output characters. The value n is in
the range 0 to 2, as follows:
0 Send characters to the console output
1 Send characters to the auxiliary output
2 Send characters to the printer (list) output
*REN newfile=oldfile
*RENAME newfile=oldfile
Renames 'oldfile' as 'newfile'. If the extension is omitted, .BBC is
assumed.
*RESET
Rest the disk system (CP/M function 13). This command does not close any
files nor does it perform any other housekeeping function. You should
use *RESET after you have changed a disk.
*SAVE filespec aaaa bbbb
*SAVE filespec aaaa +llll
This command saves a specified range of memory to disk. The address range
is specified either as start (aaaa) and end+1 (bbbb) or as start (aaaa)
and length (llll). If the extension is omitted, .BBC is assumed.
*SPOOL [filespec]
Copy all subsequent console output to the specified file. If the filename
is omitted, any current spool file is closed and spooling is terminated.
If the extension is omitted, .BBC is assumed.
*TYPE filespec
Type the specified file to the screen. If the extension is omitted, .BBC
is assumed.
*| comment
This is a comment line. Anything following the | is ignored.
6. ERROR MESSAGES AND CODES
Untrappable:
No room RENUMBER space
Silly LINE space
Sorry Bad program
Trappable - BASIC:
1 Out of range 24 Exp range
2 25
3 26 No such variable
4 Mistake 27 Missing )
5 Missing , 28 Bad HEX
6 Type mismatch 29 No such FN/PROC
7 No FN 30 Bad call
8 31 Arguments
9 Missing " 32 No FOR
10 Bad DIM 33 Can't match FOR
11 DIM space 34 FOR variable
12 Not LOCAL 35
13 No PROC 36 No TO
14 Array 37
15 Subscript 38 No GOSUB
16 Syntax error 39 ON syntax
17 Escape 40 ON range
18 Division by zero 41 No such line
19 String too long 42 Out of DATA
20 Too big 43 No REPEAT
21 -ve root 44
22 Log range 45 Missing #
23 Accuracy lost
Trappable - OS:
190 Directory full 214 File not found
192 Too many open files 222 Channel
196 File exists 253 Bad string
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

@@ -0,0 +1,241 @@
TITLE BBCDIST.Z80 (C) R.T.RUSSELL 1982-2024
NAME ('DIST3')
;
;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
;PARTICULAR CHARACTERISTICS OF HIS SYSTEM HARDWARE ETC.
;
;THE PROGRAM RESIDES AT 100H FOR EASE OF LOADING.
;*** IT MUST NOT EXCEED 256 BYTES IN TOTAL LENGTH ***
;
;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, 12-05-2024
;
CPM EQU 5
COLD EQU 200H
;
CR EQU 0DH
LF EQU 0AH
ESC EQU 1BH
;
GLOBAL CLRSCN
GLOBAL PUTCSR
GLOBAL GETCSR
GLOBAL PUTIME
GLOBAL GETIME
GLOBAL GETKEY
GLOBAL BYE
GLOBAL BEGIN
; GLOBAL BDOS
;
; EXTRN PRTDEC16
;
;ASEG
;ORG 100H
;
;JUMP TABLE - BASIC makes calls to hardware-dependent
;features via this table:
;
BEGIN: JP INIT
CLRSCN: JP CLS ;CLEAR SCREEN
PUTCSR: JP PCSR ;SET CURSOR POSN.
GETCSR: JP GCSR ;READ CURSOR POSN.
PUTIME: JP PTIME ;SET ELAPSED TIME
GETIME: JP GTIME ;READ ELAPSED TIME
GETKEY: JP INKEY ;READ KEY (TIME LIMIT)
BYE: JP REBOOT ;RETURN TO CP/M
;
;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
;
;INIT - Perform hardware initialisation (if any).
;
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
;
NOTHB: DEFB 'CP/M w/ HBIOS required$'
;
;REBOOT - Switch off interrupts and return to CP/M
;
REBOOT: RST 0
;
;GTIME - Read elapsed-time clock.
; Outputs: DEHL = elapsed time (centiseconds)
; Destroys: A,D,E,H,L,F
;
GTIME: JR TICKS
;
;PTIME - Load elapsed-time clock.
; Inputs: DEHL = time to load (centiseconds)
; Destroys: A,D,E,H,L,F
;
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
;
;INKEY - Sample keyboard with specified wait.
; Inputs: HL = Time to wait (centiseconds)
; Outputs: Carry reset indicates time-out.
; If carry set, A = character typed.
; Destroys: A,D,E,H,L,F
;
INKEY: PUSH BC
PUSH HL
CALL TICKS
POP DE
ADD HL,DE
WAIT: PUSH HL
LD C,6
LD E,0FFH
CALL BDOS
POP HL
OR A
SCF
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)
; 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,9 ; output string command
LD DE,CURS ; start of string
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
CONVLP: INC A ; now B times increment AL in decimal
CP '9'+1 ; low byte overflow?
JR NZ,CONT ; no, continue incrementing
LD A,'0' ; reset low byte
INC L ; and increment high byte
CONT: DJNZ CONVLP ; B times
LD H,A ; put low byte into right place
RET
;
;GCSR - Return cursor coordinates.
; Outputs: DE = X coordinate (POS)
; HL = Y coordinate (VPOS)
; Destroys: A,D,E,H,L,F
;
GCSR: LD DE,0
LD HL,0
RET
;
;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 1F0H
DEFS 0F0H - ($ - BEGIN)
;
OFFLO: DEFW 0 ;TIME OFFSET LO
OFFHI: DEFW 0 ;TIME OFFSET HI
DEFB 80 ;WIDTH
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
@@ -32,6 +29,8 @@ pushd Dev && call Build || exit /b & popd
pushd VGM && call Build || exit /b & popd
pushd cpuspd && call Build || exit /b & popd
pushd Survey && call Build || exit /b & popd
pushd HTalk && call Build || exit /b & popd
pushd BBCBASIC && call Build || exit /b & popd
copy *.com %APPBIN%\ || exit /b

View File

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

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,104 +0,0 @@
RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen
Updated: 12-Apr-2021
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

Binary file not shown.

View File

@@ -38,7 +38,7 @@
; DYNAMIC FDC SELECTION AT STARTUP
; DYNAMIC CPU SPEED ADJUSTMENT
; 2017-12-16: V5.1 IMPROVED POLLING READ/WRITE PERFORMANCE
; 2018-01-08: V5.2 ADDED RC2014 SUPPORT FOR:
; 2018-01-08: V5.2 ADDED RCBUS SUPPORT FOR:
; - SCOTT BAKER (SMB) SMC 9266 FDC
; - SCOTT BAKER (SMB) WDC 37C65 FDC
; 2018-09-05: v5.3 ADDED SUPPORT FOR SMALLZ80
@@ -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,13 +86,14 @@ FDC_SMZ80 .EQU 8
FDC_DYNO .EQU 9
FDC_EPFDC .EQU 10
FDC_MBC .EQU 11
FDC_DUO .EQU 12
;
; FDC MODE
;
_DIO .EQU $01 ; CUSTOM FOR DIO BOARD
_DIO3 .EQU $02 ; CUSTOM FOR DIO3 BOARD
_ZETA .EQU $04 ; CUSTOM FOR ZETA
_RCSMC .EQU $08 ; CUSTOM FOR RC2014 SMB SMC MODULE
_RCSMC .EQU $08 ; CUSTOM FOR RCBUS SMB SMC MODULE
_PCAT .EQU $10 ; PC/AT MODE IN NEWER CONTROLLERS
;
;===============================================================================
@@ -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)
@@ -465,12 +480,13 @@ FSS_MENU:
.TEXT " (D) Zeta 2 SBC Onboard FDC\r\n"
.TEXT " (E) Dual IDE ECB Board\r\n"
.TEXT " (F) N8 Onboard FDC\r\n"
.TEXT " (G) RC2014 SMC (SMB)\r\n"
.TEXT " (H) RC2014 WDC (SMB)\r\n"
.TEXT " (G) RCBus SMC (SMB)\r\n"
.TEXT " (H) RCBus WDC (SMB)\r\n"
.TEXT " (I) SmallZ80 Expansion\r\n"
.TEXT " (J) Dyno-Card FDC, D1030\r\n"
.TEXT " (K) RC2014 EPFDC\r\n"
.TEXT " (L) Multi-Board Computer FDC\r\n"
.TEXT " (K) RCBus EPFDC\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 / RC2014 / 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
@@ -33,7 +34,7 @@ like to acknowledge that much was derived from the previous
work of Andrew Lynch and Dan Werner. I also want to credit
Sergio Gimenez with testing the 5.25" drive support and Jim
Harre with testing the 8" drive support. Support for Zeta 2
comes from Segey Kiselev. Thanks!
comes from Sergey Kiselev. Thanks!
General Usage
-------------
@@ -74,12 +75,13 @@ supported:
- Zeta 2
- N8
- Mark IV
- RC2014
- 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:
@@ -89,17 +91,18 @@ You must have one of the following floppy disk controllers:
- Zeta SBC onboard FDC
- Zeta 2 SBC onboard FDC
- N8 SBC onboard FDC
- RC2014 Scott Baker SMC-based Floppy Module
- RC2014 Scott Baker WDC-based Floppy Module
- RCBus Scott Baker SMC-based Floppy Module
- 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:
Disk IO - no twist in cable, drive unit 0/1 must be selected by jumper on drive
DISK IO 3, Zeta, Zeta 2, RC2014, Dyno - cable with twist, unit 0 after twist, unit 1 before twist
DISK IO 3, Zeta, Zeta 2, RCBus, Dyno - cable with twist, unit 0 after twist, unit 1 before twist
DIDE, N8, Mark IV, SmallZ80 - cable with twist, unit 0 before twist, unit 1 after twist
Note that FDU does not utilize your systems ROM or OS to
@@ -147,15 +150,16 @@ P5 (bd ID): 1-2, 3-4 (for $20-$3F port range)
There are no specific N8 jumper settings, but the default
I/O range starting at $80 is assumed in the published code.
The RC2014 Scott Baker SMC-based floppy module should be jumpered
The RCBus Scott Baker SMC-based floppy module should be jumpered
for I/O base address 0x50 (SV1: 11-12), JP1 (TS) shorted,
JP2 (/FAULT) shorted, JP3 (MINI): 2-3, JP4 (/DC/RDY): 2-3.
The RC2014 Scott Baker WDC-based floppy module should be jumpered
The RCBus Scott Baker WDC-based floppy module should be jumpered
for I/O base address 0x50 (SV1: 11-12), JP1 (/DACK): 1-2,
JP2 (TC): 2-3.
JP2 (TC): 2-3. Note that pin 1 of JPX jumpers is toward the bottom
of the board.
The RC2014 FDC by Alan Cox (Etched Pixels) needs to be strapped
The RCBus FDC by Alan Cox (Etched Pixels) needs to be strapped
for base I/O address 0x48.
SmallZ80 does not have any relevant jumper settings. The
@@ -164,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
------------------
@@ -506,7 +513,7 @@ Improved polling version of read/write to fix occasional overrun errors.
WW 1/8/2018: v5.2
Added support for RC2014 hardware:
Added support for RCBus hardware:
- Scott Baker SMC 9266 FDC module
- Scott Baker WDC 37C65 FDC module
@@ -532,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

@@ -0,0 +1,14 @@
@echo off
setlocal
set TOOLS=../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
echo Building HTalk...
tasm -t80 -g3 -fFF htalk.asm htalk.com %htalk.lst || exit /b
copy /Y htalk.com ..\..\..\Binary\Apps\ || exit /b
rem copy /Y *.ovr ..\..\..\Binary\Apps\ || exit /b
rem copy /Y *.hlp ..\..\..\Binary\Apps\ || exit /b
rem copy /Y *.doc ..\..\..\Binary\Apps\ || exit /b

View File

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

View File

@@ -0,0 +1,10 @@
OBJECTS = htalk.com
#DOCS = htalk.txt
DEST = ../../../Binary/Apps
DOCDEST = ../../../Binary/Apps
TOOLS = ../../../Tools
include $(TOOLS)/Makefile.inc
%.com: USETASM=1

725
Source/Apps/HTalk/htalk.asm Normal file
View File

@@ -0,0 +1,725 @@
;===============================================================================
;HTALK - BARE MINIMUM TERMINAL INTERFACE
;
; CONSOLE TALKS TO ARBITRARY CHARACTER DEVICE.
;===============================================================================
;
; AUTHOR: TOM PLANO (TOMPLANO@PROTON.ME)
;
; USAGE:
; HTALK $<CHAR_DEVICE_NUM>
;
;_______________________________________________________________________________
;
; CHANGE LOG:
; I'VE NOTATED SECTIONS OF CODE THAT ARNT REQUIRED IF THIS APP IS
; INCORPORATED INTO DBGMOD WITH A <OPT> TAG
;
;_______________________________________________________________________________
;
; TODO:
; SEE ENUM_DEV1 TODO
;
;
;_______________________________________________________________________________
;
;===============================================================================
; DEFINITIONS
;===============================================================================
;
STKSIZ .EQU $FF
;
; HBIOS SYSTEM CALLS AND ID STRING ADDRESS
;
ROMWBW_ID .EQU $FFFE ; ROMWBW ID STRING ADDRESS
HBIOS_SYS .EQU $FFF0 ; HBIOS SYSCALL ADDRESS
H_SYSGET .EQU $F8 ; GET SYSTEM INFO
H_CIOCNT .EQU $00 ; GET CHAR DEV COUNT SUBFUNCTION
BF_CIOIN .EQU $00 ; HBIOS CHAR INPUT
BF_CIOOUT .EQU $01 ; HBIOS CHAR OUTPUT
BF_CIOIST .EQU $02 ; HBIOS CHAR INPUT STATUS
BF_CIOOST .EQU $03 ; HBIOS CHAR OUTPUT STATUS
BF_CIOINIT .EQU $04 ; HBIOS CHAR I/O INIT
BF_CIOQUERY .EQU $05 ; HBIOS CHAR I/O QUERY
BF_CIODEVICE .EQU $06 ; HBIOS CHAR I/O DEVICE
;
; SUPPORTED HBIOS CIO DEVICE TYPES
;
CIODEV_UART .EQU $00 ; 16C550 FAMILY SERIAL INTERFACE UART.ASM
CIODEV_ASCI .EQU $10 ; Z180 BUILT-IN SERIAL PORTS ASCI.ASM
CIODEV_TERM .EQU $20 ; TERMINAL ANSI.ASM
CIODEV_PRPCON .EQU $30 ; PROPIO SERIAL CONSOLE INTERFACE PRP.ASM
CIODEV_PPPCON .EQU $40 ; PARPORTPROP SERIAL CONSOLE INTERFACE PPP.ASM
CIODEV_SIO .EQU $50 ; ZILOG SERIAL PORT INTERFACE SIO.ASM
CIODEV_ACIA .EQU $60 ; MC68B50 ASYNCHRONOUS INTERFACE ACIA.ASM
CIODEV_PIO .EQU $70 ; ZILOG PARALLEL INTERFACE CONTROLLER PIO.ASM
CIODEV_UF .EQU $80 ; FT232H-BASED ECB USB FIFO UF.ASM
CIODEV_DUART .EQU $90 ; SCC2681 FAMILY DUAL UART DUART.ASM
CIODEV_Z2U .EQU $A0 ; ZILOG Z280 BUILT-IN SERIAL PORTS Z2U.ASM
CIODEV_LPT .EQU $B0 ; PARALLEL I/O CONTROLLER LPT.ASM
; HBIOS CURRENT CONSOLE NUMBER
CIO_CONSOLE .EQU $80
; SPECIAL CHARS
CTRLC .EQU $03
CHR_BEL .EQU $07
CHR_CR .EQU $0D
CHR_LF .EQU $0A
CHR_BS .EQU $08
CHR_ESC .EQU $1B
CHR_DEL .EQU $7F
;
;===============================================================================
; BEGIN MAIN PROGRAM
;===============================================================================
;
.ORG $0100
;
; SETUP STACK (SAVE OLD VALUE)
; <OPT> HANDLED BY DBGMON
LD (STKSAV),SP
LD SP,STACK
;
; INITIALIZATION + STARTUP MESSAGE + HBIOS DETECT
; <OPT> HANDLED BY DBGMON
CALL INIT_PROG
JP NZ,EXIT
;
; LIST HBIOS DEV OPTIONS FOR REFERENCE
; ALSO GETS MAX CONN
;
; <OPT> THIS IS OPTIONAL BECAUSE IF A CHAR DEVICE DOESNT EXIST, WE NEVER READ OR
; WRITE TO IT, WE SIMPLY CALL CIOIST AND CIOOST OVER AND OVER ON IT, WITHOUT
; EVER PUSHING DATA TO IT
CALL ENUM_DEV
JP NZ,EXIT
;
; PARSE COMMAND LINE
;
CALL PARSE
JP NZ,EXIT
;
; RUN CONVERSTION WITH CHAR DEVICE
;
CALL TALK
;
; DONE
JP EXIT
;
; CLEAN UP AND RETURN TO CALLING PROCESS
;
EXIT:
CALL NEWLINE ; ...
LD HL,STR_EXITMSG ; LOAD EXIT STRING
CALL PRTSTR ; PRINT IT
CALL NEWLINE ; ...
LD SP,(STKSAV) ; RESET STACK
RET ; RETURN TO CALLER
;
;===============================================================================
; END MAIN PROGRAM
;===============================================================================
;
;
;===============================================================================
; BEGIN MAIN PROGRAM SUBROUTINES
;===============================================================================
;
INIT_PROG:
LD HL, STR_BANNER ; LOAD WELCOME BANNER
CALL PRTSTR ; PRINT IT
CALL NEWLINE ; ...
LD HL,(ROMWBW_ID) ; GET FIRST BYTE OF ROMWBW MARKER
LD A,(HL) ; ... THROUGH HL
CP 'W' ; MATCH?
JP NZ,NOTHBIOS ; ABORT WITH INVALID CONFIG BLOCK
INC HL ; NEXT BYTE (MARKER BYTE 2)
LD A,(HL) ; LOAD IT
CP ~'W' ; MATCH?
JP NZ,NOTHBIOS ; ABORT WITH INVALID CONFIG BLOCK
LD HL,STR_HBIOS ; POINT TO HBIOS STR
CALL PRTSTR ; PRINT IT
CALL NEWLINE ; ...
RET
;
; HBOIS NOT DETECTED, BAIL OUT W/ ERROR
;
NOTHBIOS:
LD HL,STR_BIOERR ; LOAD HBIOS NOT FOUND STR
CALL PRTSTR ; PRINT IT
CALL NEWLINE ; ...
AND $FF ; SET FLAGS
RET
ENUM_DEV:
;
; CHAR COUNT HEADER
;
LD HL,STR_DEVS_FOUND
CALL PRTSTR
;
;GET COUNT OF CHAR UNITS
;
LD B,H_SYSGET ; LOAD SYSGET HBIOS FUNCTION
LD C,H_CIOCNT ; LOAD SYSGET CHAR DEV COUNT SUBFUNCTION
CALL HBIOS_SYS ; JUMP TO HBIOS
OR A ; SET FLAGS
JP NZ, EXIT ; JUMP TO EXIT ON FAILED
LD A,E ; NUM CHAR DEVICES NOW IN A
DEC A ; DEC NUM DEVICES TO BE 0 INDEXED
LD (CIODEV_CNT), A ; STORE BEFORE PRINT
LD (CIODEV_MAX), A ; STORE BEFORE PRINT
INC A ; RESTORE NUM DEVICES VALUE
CALL PRTHEX ; PRINT NUMBER OF UNITS FOUND
CALL NEWLINE ; ...
ENUM_DEV1:
LD IX, TGT_DEV
; TODO: H AND L DONT ALWAYS GET SET BY THE DRIVERS. FIND SOME WAY TO MASK
; THEM OUT IF THEY ARE THE SAME BEFORE AND AFTER THE CALL?
LD B, BF_CIODEVICE ; LOAD HBIOS FUNCTION TO QUERRY DEVICE INFO
LD HL, CIODEV_CNT ; REQUEST A CHAR DEVICE
LD C, (HL) ; ...
LD (IX), C ; REMEMBER WHAT DEVICE WE ASKED FOR BEFORE BE
CALL HBIOS_SYS ; EXECUTE HBIOS SUBROUTINE
OR A ; SET FLAGS
RET NZ ; RETURN FAILED
;
; STORE RESULTS OF HBOIS DEVICE QUERRY
;
LD A,C ; MOVE C TO A
LD (IX+1), A ; STORE A DEVICE ATTRIBUTES, SKIP FIRST ENTRY
LD A,D
LD (IX+2), A
LD A,E
LD (IX+3), A
LD A,H
LD (IX+4), A
LD A,L
LD (IX+5), A
;
; PRINT FORMATED DATA LOOP
;
LD B, $06 ; PRINT THE 5 ELEMENTS OF DEV_STR_TBL
LD HL,DEV_STR_TBL ; TABLE BASE PTR
PLOOP_BASE:
CALL PRTSTR ; PTRSTR INCREMENTS HL FOR US
LD A, (IX)
CALL PRTHEX
LD A, '|'
CALL COUT
INC IX
DJNZ PLOOP_BASE
CALL NEWLINE
LD A, (CIODEV_CNT)
DEC A
LD (CIODEV_CNT), A
JP P, ENUM_DEV1 ; JUMP WHILE CIODEV_CNT >=0
AND $00
RET
;
; RUN CONVERSTION WITH CHAR DEVICE
;
TALK:
;
; INIT PING PONG DEVICE POINTERS
;
LD IX, USER_CON ; LOAD VALUE AT ADDR USER_CON
LD A, (IX) ; LOAD VALUE AT ADDR USER_CON
LD (RF_DEV), A ; STORE TO ADDR RF_DEV
LD A, (IX+1) ; LOAD VALUE AT ADDR TARGET_CON
LD (WT_DEV), A ; STORE TO ADDR WT_DEV
;
; READ FROM RF_DEV -> WRITE TO WT_DEV
;
TALK_LOOP:
;
; CHECK FOR DATA ON RF_DEV
;
LD B,BF_CIOIST ; SET HBIOS FUNCTION TO RUN
LD HL, RF_DEV
LD C,(HL)
CALL HBIOS_SYS ; CHECK FOR CHAR PENDING ON INPUT BUFFER USING HBIOS
OR A ; SET FLAGS
JP Z,TALK_NEXT ; JUMP NO CHARACTERS READY
JP M,TALK_NEXT ; JUMP ERROR ON READ
;
; EXEC READ FROM RF_DEV
;
LD B,BF_CIOIN ; SET FUNCTION TO RUN
LD HL, RF_DEV
LD C,(HL) ; RETRIEVE CON_DEV_NUM TO READ/WRITE FROM ACTIVE CONSOLE
CALL HBIOS_SYS ; CHECK FOR CHAR PENDING USING HBIOS
LD A,E ; MOVE RESULT TO A
CP CTRLC ; CHECK FOR EXIT REQUEST (CTRL+C)
RET Z ; IF SO, BAIL OUT
PUSH AF ; SAVE THE CHAR WE READ
;
; CHECK FOR SPACE ON WT_DEV
;
LD B,BF_CIOOST ; SET HBIOS FUNCTION TO RUN
LD HL, WT_DEV
LD C,(HL)
CALL HBIOS_SYS ; CHECK FOR SPACE IN OUTPUT BUFFER USING HBIOS
OR A ; 0 OR 1 IS A VALID RETURN
JP Z,TALK_NEXT ; JUMP NO SPACE
JP M,TALK_NEXT ; JUMP ERROR ON WRITE
;
; EXEC WRITE TO WT_DEV
;
LD B,BF_CIOOUT ; SET HBIOS FUNCTION TO RUN
LD HL, WT_DEV
LD C,(HL) ; RETRIEVE TGT_DEV_NUM TO READ/WRITE FROM TARGET CHAR DEVICE
;
POP AF ; RECOVER THE CHARACTER
LD E,A ; MOVE CHARACTER TO E
CALL HBIOS_SYS ; WRITE CHAR USING HBIOS
TALK_NEXT:
;
; SWAP RF_DEV AND WT_DEV
;
LD IX, RF_DEV ; LOAD VALUE AT ADDR USER_CON
LD A, (IX) ; LOAD VALUE AT ADDR RF_DEV
LD B, (IX+1) ; LOAD VALUE AT ADDR WT_DEV
LD (IX+1), A ; STORE TO OLD RF_DEV TO ADDR WT_DEV
LD A, B ; MOVE OLD WT_DEV TO A
LD (IX), A ; STORE TO OLD WT_DEF TO ADDR RF_DEV
JP TALK_LOOP ; LOOP
;
;===============================================================================
; END MAIN PROGRAM SUBROUTINES
;===============================================================================
;
;
;===============================================================================
; BEGIN ROUTINES THAT ARE NOT COMPATIBLE WITH DBGMON
;===============================================================================
;
PARSE:
;
LD HL,$81 ; POINT TO START OF COMMAND TAIL (AFTER LENGTH BYTE)
CALL NONBLANK ; SKIP LEADING BLANKS,
CALL HEXBYTE
JP C,ERRHEXRD ; IF NOT, ERR
LD (TARGET_CON),A ; REQUESTED TARGET CONN
LD B,A ; MOVE TO B
LD HL,CIODEV_MAX ; GRAB MAX VALUE OF TARGETCON
LD A,(HL)
CP B ; CHECK IF B<=A
JP M, ERROOR ; IF B>A, and both are less then 80 then S SET, ERR
JP C, ERROOR ; IF B> 80 carry set instead (signed numbers problem)
; swap A and B
JP PE, ERROOR ; IF B>A, C SET, ERR
LD HL, MSGTALKING ; PRINT TARGET DEVICE
CALL PRTSTR
LD A, B ; RETRIEVE TARGET CON
CALL PRTHEX
CALL NEWLINE
AND $00
RET
;
;NOT COMPATIBLE WITH THE DBGMON FUNCTION OF THE SAME NAME
;
NONBLANK:
LD A,(HL) ; LOAD NEXT CHARACTER
OR A ; STRING ENDS WITH A NULL
RET Z ; IF NULL, RETURN POINTING TO NULL
CP ' ' ; CHECK FOR BLANK
RET NZ ; RETURN IF NOT BLANK
INC HL ; IF BLANK, INCREMENT CHARACTER POINTER
JR NONBLANK ; AND LOOP
;
;
;===============================================================================
; END ROUTINES THAT ARE NOT COMPATIBLE WITH DBGMON
;===============================================================================
;
;
;===============================================================================
; BEGIN ROUTINES THAT ARE LIFTED FROM DBGMON
;===============================================================================
;
;
; PRINT THE VALUE IN A IN HEX WITHOUT DESTROYING ANY REGISTERS
;
PRTHEX:
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 COUT ; PRINT IT
LD A,E ; GET THE LOW ORDER HEX CHAR
CALL COUT ; PRINT IT
POP DE ; RESTORE DE
RET ; DONE
;
; 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
;
;
; ADD THE VALUE IN A TO HL (HL := HL + A)
;
ADDHL:
ADD A,L ; A := A + L
LD L,A ; PUT RESULT BACK IN L
RET NC ; IF NO CARRY, WE ARE DONE
INC H ; IF CARRY, INCREMENT H
RET ; AND RETURN
;
;__________________________________________________________________________________________________
;
; UTILITY PROCS TO PRINT SINGLE CHARACTERS WITHOUT TRASHING ANY REGISTERS
;
;__________________________________________________________________________________________________
;
PC_SPACE:
PUSH AF
LD A,' '
JR PC_PRTCHR
PC_COLON:
PUSH AF
LD A,':'
JR PC_PRTCHR
PC_CR:
PUSH AF
LD A,CHR_CR
JR PC_PRTCHR
PC_LF:
PUSH AF
LD A,CHR_LF
JR PC_PRTCHR
PC_PRTCHR:
CALL COUT
POP AF
RET
NEWLINE2:
CALL NEWLINE
NEWLINE:
CALL PC_CR
CALL PC_LF
RET
PRTSTR:
LD A,(HL)
INC HL
CP '$'
RET Z
CALL COUT
JR PRTSTR
;
;__COUT_______________________________________________________________________
;
; OUTPUT CHARACTER FROM A
;_____________________________________________________________________________
;
COUT:
; SAVE ALL INCOMING REGISTERS
PUSH AF
PUSH BC
PUSH DE
PUSH HL
;
; OUTPUT CHARACTER TO CONSOLE VIA HBIOS
LD E,A ; OUTPUT CHAR TO E
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
LD B,BF_CIOOUT ; HBIOS FUNC: OUTPUT CHAR
CALL HBIOS_SYS ; HBIOS OUTPUTS CHARACTER
;
; RESTORE ALL REGISTERS
POP HL
POP DE
POP BC
POP AF
RET
;
;__CIN________________________________________________________________________
;
; INPUT CHARACTER TO A
;_____________________________________________________________________________
;
CIN:
; SAVE INCOMING REGISTERS (AF IS OUTPUT)
PUSH BC
PUSH DE
PUSH HL
;
; INPUT CHARACTER FROM CONSOLE VIA HBIOS
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
LD B,BF_CIOIN ; HBIOS FUNC: INPUT CHAR
CALL HBIOS_SYS ; HBIOS READS CHARACTER
LD A,E ; MOVE CHARACTER TO A FOR RETURN
;
; RESTORE REGISTERS (AF IS OUTPUT)
POP HL
POP DE
POP BC
RET
;
;__CST________________________________________________________________________
;
; RETURN INPUT STATUS IN A (0 = NO CHAR, !=0 CHAR WAITING)
;_____________________________________________________________________________
;
CST:
; SAVE INCOMING REGISTERS (AF IS OUTPUT)
PUSH BC
PUSH DE
PUSH HL
;
; GET CONSOLE INPUT STATUS VIA HBIOS
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
LD B,BF_CIOIST ; HBIOS FUNC: INPUT STATUS
CALL HBIOS_SYS ; HBIOS RETURNS STATUS IN A
;
; RESTORE REGISTERS (AF IS OUTPUT)
POP HL
POP DE
POP BC
RET
;
;
;__ISHEX______________________________________________________________________
;
; CHECK BYTE AT (HL) FOR HEX CHAR, RET Z IF SO, ELSE NZ
;_____________________________________________________________________________
;
ISHEX:
LD A,(HL) ; CHAR TO AS
CP '0' ; < '0'?
JR C,ISHEX1 ; YES, NOT 0-9, CHECK A-F
CP '9' + 1 ; > '9'
JR NC,ISHEX1 ; YES, NOT 0-9, CHECK A-F
XOR A ; MUST BE 0-9, SET ZF
RET ; AND DONE
ISHEX1:
CP 'A' ; < 'A'?
JR C,ISHEX2 ; YES, NOT A-F, FAIL
CP 'F' + 1 ; > 'F'
JR NC,ISHEX2 ; YES, NOT A-F, FAIL
XOR A ; MUST BE A-F, SET ZF
RET ; AND DONE
ISHEX2:
OR $FF ; CLEAR ZF
RET ; AND DONE
;
;__HEXBYTE____________________________________________________________________
;
; GET ONE BYTE OF HEX DATA FROM BUFFER IN HL, RETURN IN A
;_____________________________________________________________________________
;
HEXBYTE:
LD C,0 ; INIT WORKING VALUE
HEXBYTE1:
CALL ISHEX ; DO WE HAVE A HEX CHAR?
JR NZ,HEXBYTE3 ; IF NOT, WE ARE DONE
LD B,4 ; SHIFT WORKING VALUE (C := C * 16)
HEXBYTE2:
SLA C ; SHIFT ONE BIT
RET C ; RETURN W/ CF SET INDICATING OVERFLOW ERROR
DJNZ HEXBYTE2 ; LOOP FOR 4 BITS
CALL NIBL ; CONVERT HEX CHAR TO BINARY VALUE IN A & INC HL
OR C ; COMBINE WITH WORKING VALUE
LD C,A ; AND PUT BACK IN WORKING VALUE
JR HEXBYTE1 ; DO ANOTHER CHARACTER
HEXBYTE3:
LD A,C ; WORKING VALUE TO A
OR A ; CLEAR CARRY
RET
;
;__NIBL_______________________________________________________________________
;
; GET ONE BYTE OF HEX DATA FROM BUFFER IN HL, RETURN IN A
;_____________________________________________________________________________
;
NIBL:
LD A,(HL) ; GET K B. DATA
INC HL ; INC KB POINTER
CP 40H ; TEST FOR ALPHA
JR NC,ALPH
AND 0FH ; GET THE BITS
RET
ALPH:
AND 0FH ; GET THE BITS
ADD A,09H ; MAKE IT HEX A-F
RET
;
;===============================================================================
; END ROUTINES THAT ARE LIFTED FROM DBGMON
;===============================================================================
;
;
;===============================================================================
; ERROR RESPONCES
;===============================================================================
;
ERROOR: ; REQUESTED DEV OUT OF RANGE (SYNTAX)
CALL NEWLINE
LD A, 'R'
CALL COUT
LD HL,TARGET_CON
LD A,(HL)
CALL PRTHEX
LD A, ':'
CALL COUT
LD A, 'M'
CALL COUT
LD HL,CIODEV_MAX
LD A,(HL)
CALL PRTHEX
LD HL,MSGOOR
JR ERROR
ERRHEXRD: ; COMMAND HEX READ ERROR (SYNTAX)
LD HL,MSGHEXRD
JR ERROR
ERRUSE: ; COMMAND USAGE ERROR (SYNTAX)
LD HL,MSGUSE
JR ERROR
ERRPRM: ; COMMAND PARAMETER ERROR (SYNTAX)
LD HL,MSGPRM
JR ERROR
ERROR: ; PRINT ERROR STRING AND RETURN ERROR SIGNAL
CALL NEWLINE ; PRINT NEWLINE
CALL PRTSTR ; PRINT ERROR STRING
OR $FF ; SIGNAL ERROR
RET ; DONE
;===============================================================================
; STORAGE SECTION
;===============================================================================
;
; CHAR DEV COUNT
CIODEV_CNT .DB $0
CIODEV_MAX .DB $0
;TALK LOOP DATA, DEFAULT TO LOOPBACK
USER_CON .DB $80
TARGET_CON .DB $80
; PING PONG POINTERS
RF_DEV .DB 0
WT_DEV .DB 0
; TARGET CHARACTER DEVICE DATA
TGT_DEV:
.DB 0 ; HBIOS CHAR NUM
.DB 0 ; C: DEVICE ATTRIBUTES
.DB 0 ; D: DEVICE TYPE
.DB 0 ; E: DEVICE NUMBER
.DB 0 ; H: DEVICE MODE
.DB 0 ; L: DEVICE I/O BASE ADDRESS
; STRING LITERALS
MSGUSE .TEXT "USAGE: HTALK <CIO_DEV_ID>$"
MSGPRM .TEXT "PARAMETER ERROR$"
MSGOOR .TEXT "CIO VAL TOO LARGE$"
MSGHEXRD .TEXT "HEX READ ERR$"
MSGTALKING .TEXT "CONNECTING TO CHAR:$"
DEV_STR_TBL:
.TEXT "CHAR:$"
.TEXT "ATTR:$"
.TEXT "TYPE:$"
.TEXT "NUMB:$"
.TEXT "MODE:$"
.TEXT "ADDR:$"
STR_DEVS_FOUND .TEXT "NUM CHAR DEVICES FOUND - $"
STR_EXITMSG .TEXT "HTALK DONE$"
STR_BANNER .TEXT "HTALK V1.0 (CTRL-C TO EXIT)$"
STR_HBIOS .TEXT "HBIOS DETECTED$"
STR_BIOERR .TEXT "*** UNKNOWN BIOS - BAILING OUT ***$"
STKSAV .DW 0 ; STACK POINTER SAVED AT START
.FILL STKSIZ,0 ; STACK
STACK .EQU $ ; STACK TOP
;
.END

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

@@ -15,6 +15,13 @@
;
;VERSION LIST - Most recent version first.
;
;21/Mar/23 - Previous hack was worthless because it broke
; the memory survey. Rehacked to use HBIOS to
; detect if N8VEM SBC MPCL memory management is
; in use and bypass MPCL ports if so. HBIOS check
; should allow use in non-RomWBW systems again.
; Wayne Warthen
;
;10/Feb/23 - Total hack to avoid crash on ECB SBC
; RomWBW now required by this version
; Wayne Warthen
@@ -240,20 +247,6 @@ TABS EQU 9 ; Tab columns
;
;ORG 100H
;
;
;
.Z80
LD HL,IMGORG
LD DE,START
LD BC,IMGEND-IMGORG
LDIR
JP START
.8080
;
IMGORG:
;
.PHASE 8000H
;
START:
LXI H,0 ; Save stack pointer
DAD SP
@@ -261,9 +254,38 @@ START:
LXI SP,FINIS+64
CALL TYPE ; Type initial CRLF
DW CRLF,CRLF
DB TAB,'*** RomWBW System Survey (Feb 2023) ***'
DB TAB,'*** RomWBW System Survey (Mar 2023) ***'
DW CRLF,CRLFE
;
; Are we running an N8VEM SBC w/ MPCL on RomWBW???
;
.Z80
XOR A ; assume not
LD (ISMPCL),A ; save it
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,NOTMPCL ; Not HBIOS
INC HL ; Next byte of ident
LD A,NOT 'W' ; Second byte of ident
CP (HL) ; Compare
JR NZ,NOTMPCL ; Not HBIOS
;
LD B,0F1H ; HBIOS: VER function
LD C,0 ; required reserved value
RST 08 ; DE := version, L := platform id
LD A,L ; Platform ID
CP 01H ; SBC?
JR NZ,NOTMPCL ; Not SBC
LD A,0FFH ; Flag
LD (ISMPCL),A ; Set flag
;
.8080
;
NOTMPCL:
;
;DISK SURVEY
LXI H,8 ; Init drive counter
MVI C,24 ; Get login vector
@@ -445,20 +467,19 @@ MSURV:
ENDM
DB '|'
DW CRLF
db ' ' ; dmb 31-May-82
DB 'T'+EOL
DB 'TT','T'+EOL
LXI H,RAM
MVI M,LOW 1023 ; Init RAM counter
MVI M,LOW 2047 ; Init RAM counter
INX H
MVI M,HIGH 1023
MVI M,HIGH 2047
MVI B,4 ; Clear ROM, EMP
CLREG:
INX H
MVI M,0
DCR B
JNZ CLREG
LXI H,1024 ; Init memory pointer
MVI C,63 ; K to be checked
LXI H,2048 ; Init memory pointer
MVI C,62 ; K to be checked
;Start of analysis loop
BEGANA:
@@ -492,7 +513,7 @@ NOTEM:
INXI ROM
NEXT:
INX H ; Index next byte
DCX D ; Decrement K counter
DCX D ; DEC DE; Decrement K counter
XRA A
ORA D
ORA E
@@ -545,8 +566,19 @@ NEXTK:
; contents of first page
call type
db 'BIOS at',' '+eol
hexout bios+2
hexout bios+1
;hexout bios+2
;hexout bios+1
.z80
ld hl,(bios+1)
ld de,-3
add hl,de
push hl
ld a,h
call hexprn
pop hl
ld a,l
call hexprn
.8080
call type
db tab,'iobyte',' '+eol
hexout bios+3
@@ -555,8 +587,19 @@ NEXTK:
hexout bios+4
call type
db tab,'BDOS at',' '+eol
hexout bdos+2
hexout bdos+1
;hexout bdos+2
;hexout bdos+1
.z80
ld hl,(bdos+1)
ld de,-6
add hl,de
push hl
ld a,h
call hexprn
pop hl
ld a,l
call hexprn
.8080
call type
dw crlf,crlfe
;
@@ -572,6 +615,8 @@ NEXTK:
CALL TYPE
DB ' Bytes ROM',TAB,TAB+EOL
LHLD BDOS+1
LXI D,-6
DAD D
CALL BINDEC
CALL TYPE
DB ' Bytes in TPA'
@@ -607,9 +652,17 @@ PDLY:
JNZ PDLY
;
.Z80
; RECORD THE ACTIVE BANK
LD A,(0FFE0H) ; GET CURRENT HBIOS BANK ID
LD (BANK),A ; AND SAVE IT
; Check for Z180 CPU
xor a ; assume Z80
ld (IS180),a ; save it
ld de,0506H ; 5 x 6
db 0EDH,05CH ; MLT DE: de = 30 if z180
ld a,e ; result to A
cp 30 ; check if multiply happened
jr nz,z80 ; if invalid, then Z80
or 0ffH ; flag value for Z180
ld (IS180),a ; save it
z80:
.8080
;
LXI H,0 ; Init active port counter
@@ -623,28 +676,82 @@ PORTLP:
JZ ISPORT ; Print mask port
ENDIF
;
mov c,a ; port number to reg c
mvi b,0 ; for 16 bit port addressing
.Z80
;
ld a,(ISMPCL) ; MPCL?
or a ; set flags
jr z,PCONT ; if not, skip ahead
ld a,d ; get port to test
and 0F8H ; range of 8 ports
cp 078H ; starting at 78H
jr z,ISPORT ; if in range, assume real port
;
PCONT:
di ; interrupts off
ld a,(IS180) ; Z180?
or a
jr nz,rd180
;
; Z80 port read
; Read port using IN A,(C), push result
ld a,d
ld c,a
ld (pnum0a),a ; dynamic update
ld (pnum0b),a ; dynamic update
ld b,0
in a,(c)
.8080
;
.Z80
; MAKE SURE CORRECT BANK IS STILL SELECTED!
push af
ld a,(BANK)
call 0FFF3H
pop af
; Read port using IN A,(port), push result
in a,(0ffh) ; IN0
pnum0a equ $-1
push af
; Read port using IN A,(port), push result
in a,(0ffh) ; IN0
pnum0b equ $-1
push af
jr rdz
;
rd180:
; Z180 port read
; Read port using IN A,(C), push result
ld a,d
ld c,a
ld (pnum1a),a ; dynamic update
ld (pnum1b),a ; dynamic update
ld b,0
in a,(c)
push af
; Read port using IN0 A,(port), push result
db 0EDH,038H,0FFH ; IN0
pnum1a equ $-1
push af
; Read port using IN0 A,(port), push result
db 0EDH,038H,0FFH ; IN0
pnum1b equ $-1
push af
;
rdz:
;
ei ; interrupts back on now
;
; port is considered inactive if values read from different port
; read mechanisms differ or if the value $FF is read consistently,
; or if the value read is equal to the port number itself
;
pop bc ; second IN0 (port) value
pop af ; first IN0 (port) valule
cp b ; same?
pop bc ; IN (C) value
jr nz,ISPORT ; if no, active running ctr port
cp b ; same?
jr nz,NEXTPT ; if not, inactive port
cp 0FFh ; pullup value???
jr z,NEXTPT ; if so, consider not active
cp d ; value same as port num???
jr z,NEXTPT ; if so, consider not active
;
.8080
;
; inactive port could return 0xFF or 0x78 or the port address
;
cmp c
jz nextpt
cpi 0FFh
jz nextpt
cpi 078h
jz nextpt
ISPORT:
mov a,d ; got a live one, probably
ani 0f0h ; is port in same group as last ?
@@ -759,12 +866,9 @@ RAMF: DS 1 ; RAM good flag
EMPF: DS 1 ; Empty so far flag
BLKSHF: DS 1 ; block shift factor
MAXALL: DS 2 ; maximum block number
BANK: DS 1 ; saved HBIOS bank id
IS180: DS 1 ; non-zero for Z180 CPU
ISMPCL: DS 1 ; non-zero for N8VEM SBC MPCL
FINIS EQU $ ; End of program
;
.DEPHASE
;
IMGEND:
;
END


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

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

View File

@@ -20,3 +20,5 @@ pushd ps2info && call Clean || exit /b 1 & popd
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

File diff suppressed because it is too large Load Diff

View File

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

View File

@@ -1,4 +1,4 @@
OBJECTS = i2cscan.com rtcds7.com i2clcd.com
OBJECTS = i2cscan.com rtcds7.com i2clcd.com srom.com
DEST = ../../../../Binary/Apps/Test/
TOOLS = ../../../../Tools

View File

@@ -5,12 +5,13 @@
; MARCO MACCAFERRI, HTTPS://WWW.MACCASOFT.COM
; HBIOS VERSION BY PHIL SUMMERS (B1ACKMAILER) DIFFICULTLEVELHIGH@GMAIL.COM
;
PCF .EQU 1
P8X180 .EQU 0
SC126 .EQU 0
SC137 .EQU 0
PCFECB .EQU 0
PCFDUO .EQU 1
P8X180 .EQU 0
SC126 .EQU 0
SC137 .EQU 0
;
#IF (PCF)
#IF (PCFECB)
I2C_BASE .EQU 0F0H
PCF_ID .EQU 0AAH
CPU_CLK .EQU 12
@@ -20,6 +21,16 @@ PCF_RS1 .EQU PCF_RS0+1
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
#ENDIF
;
#IF (PCFDUO)
I2C_BASE .EQU 056H
PCF_ID .EQU 0AAH
CPU_CLK .EQU 12
;
PCF_RS0 .EQU I2C_BASE
PCF_RS1 .EQU PCF_RS0+1
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
#ENDIF
;
#IF (P8X180)
I2C_BASE .EQU 0A0h
_sda .EQU 0
@@ -153,8 +164,11 @@ lp5f: ld a,(addr) ; next address
jp 0
signon: .db "I2C Bus Scanner"
#IF (PCF)
.DB " - PCF8584"
#IF (PCFECB)
.DB " - PCF8584 (ECB)"
#ENDIF
#IF (PCFDUO)
.DB " - PCF8584 (Duodyne)"
#ENDIF
#IF (SC126)
.DB " - SC126"
@@ -219,7 +233,7 @@ _cout: ; character
ret
;-----------------------------------------------------------------------------
#IF (PCF)
#IF (PCFECB | PCFDUO)
_i2c_start:
PCF_START:
LD A,PCF_START_
@@ -418,7 +432,7 @@ PCF_PINFAIL .DB "PIN FAIL$"
PCF_BBFAIL .DB "BUS BUSY$"
;
;-----------------------------------------------------------------------------
#IF (PCF)
#IF (PCFECB | PCFDUO)
_i2c_stop:
PCF_STOP:
LD A,PCF_STOP_ ; issue

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
OBJECTS =
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest
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

@@ -27,11 +27,10 @@
runloc .equ $C000 ; Running location (upper memory required)
stksiz .equ $40 ; Working stack size
;
rmj .equ 3 ; intended HBIOS version - major
rmn .equ 1 ; intended HBIOS version - minor
;
restart .equ $0000 ; CP/M restart vector
;
#include "../../../ver.inc"
;
#include "../../../HBIOS/hbios.inc"
;
;===============================================================================

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,11 @@
@echo off
setlocal
set TOOLS=../../../../Tools
set PATH=%TOOLS%\tasm32;%PATH%
set TASMTABS=%TOOLS%\tasm32
tasm -t180 -g3 -fFF portscan.asm portscan.com portscan.lst || exit /b
copy /Y portscan.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,9 @@
OBJECTS = portscan.com
DEST = ../../../../Binary/Apps/Test
TOOLS =../../../../Tools
USETASM=1
include $(TOOLS)/Makefile.inc
TASM=$(BINDIR)/uz80as -t hd64180

View File

@@ -0,0 +1,602 @@
;===============================================================================
; PORTSCAN - Sweep Ports
;
;===============================================================================
;
; Author: Wayne Warthen (wwarthen@gmail.com)
;_______________________________________________________________________________
;
; Usage:
; PORTSCAN
;
; Operation:
; Reads all ports (multiple ways) and displays values read
;_______________________________________________________________________________
;
; Change Log:
; 2023-02-14 [WBW] Initial release
;_______________________________________________________________________________
;
; ToDo:
;_______________________________________________________________________________
;
;===============================================================================
; Definitions
;===============================================================================
;
runloc .equ $C000 ; Running location (upper memory required)
stksiz .equ $40 ; Working stack size
;
restart .equ $0000 ; CP/M restart vector
;
;
#include "../../../ver.inc"
;
#include "../../../HBIOS/hbios.inc"
;
;===============================================================================
; Code Section
;===============================================================================
;
.org $100
;
; relocate worker code to upper memory
ld hl,begin ; start of working code image
ld de,runloc ; running location
ld bc,size ; size of working code image
ldir ; copy to upper RAM
jp runloc ; and go
;
; Start of working code
;
begin .equ $ ; image loaded here
;
.org runloc ; now generate running location adresses
;
; setup stack (save old value)
ld (stksav),sp ; save stack
ld sp,stack ; set new stack
;
; initialization
call init ; initialize
jr nz,exit ; abort if init fails
;
; process
call process ; do main processing
jr nz,exit ; abort on error
;
exit: ; clean up and return to command processor
call crlf ; formatting
ld sp,(stksav) ; restore stack
;jp restart ; return to CP/M via restart
ret ; return to CP/M w/o restart
;
; Initialization
;
init:
call crlf2 ; formatting
ld de,msgban ; point to version message part 1
call prtstr ; print it
;
call idbio ; identify active BIOS
cp 1 ; check for HBIOS
jp nz,errbio ; handle BIOS error
;
ld a,rmj << 4 | rmn ; expected HBIOS ver
cp d ; compare with result above
jp nz,errbio ; handle BIOS error
;
initx
; initialization complete
xor a ; signal success
ret ; return
;
; Process
;
process:
call crlf
ld a,($FFE0) ; get current hbios bank id
ld (orgbnk),a ; and save it
ld a,0 ; start with port 0
ld (curport),a ; save it for use below
; Test for z180 using mlt
ld de,$0506 ; 5 x 6
mlt de ; de = 30 if z180
ld a,e ; result to A
cp 30 ; check if multiply happened
jr nz,prtcpu ; if invalid, then Z80
or $FF ; flag value for Z180
ld (is180),a ; save it
;
prtcpu:
ld de,msgcpu
call prtstr
ld a,(is180)
or a
ld de,msgz80
jr z,prtcpu1
ld de,msgz180
prtcpu1:
call prtstr
call crlf
;
loop:
call crlf
ld a,(curport)
call prthex
ld a,':'
call prtchr
;
di ; interrupts off
;
ld hl,vallist ; init value list pointer
call portread ; read the port
call portread ; do it again
;
; restore possibly corrupted bank registers
ld a,(orgbnk) ; get proper bank id
call $FFF3 ; restore it
;
ei ; interrupts safe now
;
ld hl,vallist ; re-init value list pointer
ld b,4 ; print 4 values
prtloop:
ld a,' '
call prtchr
ld a,(hl)
call prthex
inc hl
djnz prtloop
;
; update port and loop as needed
ld a,(curport) ; get current port
inc a ; move to next
ld (curport),a ; save it
jr z,done ; done on wraparound
jr loop ; loop until done
;
done:
;
call crlf2
ld de,msgdone ; message to print
call prtstr ; do it
ret ; all done
;
;
;
portread:
ld a,(is180)
or a
jr nz,portread_z180
;
portread_z80: ; use traditional "IN"
; read port using IN <portnum>
ld a,(curport) ; get current port
ld (pnum0),a ; modify IN instruction
nop ; defeat Z280 pipeline
nop
in a,($FF) ; read the port
pnum0 .equ $-1
ld (hl),a ; save it
inc hl ; bump value list pointer
jr portread1
;
portread_z180: ; use "IN0"
; read port using IN <portnum>
ld a,(curport) ; get current port
ld (pnum1),a ; modify IN instruction
in0 a,($FF) ; read the port
pnum1 .equ $-1
ld (hl),a ; save it
inc hl ; bump value list pointer
;
portread1:
; read port using IN (C)
ld a,(curport) ; get current port
ld b,0 ; in case 16 bits decoded
ld c,a ; move to reg C
in a,(c) ; read the port
ld (hl),a ; save it
inc hl ; bump value list pointer
ret
;
; Identify active BIOS. RomWBW HBIOS=1, UNA UBIOS=2, else 0
;
idbio:
;
; Check for UNA (UBIOS)
ld a,($FFFD) ; fixed location of UNA API vector
cp $C3 ; jp instruction?
jr nz,idbio1 ; if not, not UNA
ld hl,($FFFE) ; get jp address
ld a,(hl) ; get byte at target address
cp $FD ; first byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA
inc hl ; point to next byte
ld a,(hl) ; get next byte
cp $E5 ; second byte of UNA push ix instruction
jr nz,idbio1 ; if not, not UNA, check others
;
ld bc,$04FA ; UNA: get BIOS date and version
rst 08 ; DE := ver, HL := date
;
ld a,2 ; UNA BIOS id = 2
ret ; and done
;
idbio1:
; Check for RomWBW (HBIOS)
ld hl,(HB_IDENT) ; HL := HBIOS ident location
ld a,'W' ; First byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
inc hl ; Next byte of ident
ld a,~'W' ; Second byte of ident
cp (hl) ; Compare
jr nz,idbio2 ; Not HBIOS
;
ld b,BF_SYSVER ; HBIOS: VER function
ld c,0 ; required reserved value
rst 08 ; DE := version, L := platform id
;
ld a,1 ; HBIOS BIOS id = 1
ret ; and done
;
idbio2:
; No idea what this is
xor a ; Setup return value of 0
ret ; and done
;
; 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 b,BF_CIOOUT ; HBIOS function to output a character
ld c,CIO_CONSOLE ; write to current console unit
call HB_INVOKE ; invoke HBIOS via call
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
;
prtspace:
;
; shortcut to print a space 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 dot 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 de
;
prtstr1:
ld a,(de) ; get next char
or a
jr z,prtstr2
call prtchr
inc de
jr prtstr1
;
prtstr2:
pop de ; restore registers
ret
;
; Print a block of memory nicely formatted
; de=buffer address
;
dump_buffer:
call crlf
push de
pop hl
inc d
inc d
db_blkrd:
push bc
push hl
pop bc
call prthexword ; print start location
pop bc
call prtspace ;
ld c,16 ; set for 16 locs
push hl ; save starting hl
db_nxtone:
ld a,(hl) ; get byte
call prthex ; print it
call prtspace ;
db_updh:
inc hl ; point next
dec c ; dec. loc count
jr nz,db_nxtone ; if line not done
; now print 'decoded' data to right of dump
db_pcrlf:
call prtspace ; space it
ld c,16 ; set for 16 chars
pop hl ; get back start
db_pcrlf0:
ld a,(hl) ; get byte
and 060h ; see if a 'dot'
ld a,(hl) ; o.k. to get
jr nz,db_pdot ;
db_dot:
ld a,2eh ; load a dot
db_pdot:
call prtchr ; print it
inc hl ;
ld a,d ;
cp h ;
jr nz,db_updh1 ;
ld a,e ;
cp l ;
jp z,db_end ;
db_updh1:
; if block not dumped, do next character or line
dec c ; dec. char count
jr nz,db_pcrlf0 ; do next
db_contd:
call crlf ;
jp db_blkrd ;
db_end:
ret
;
; Print the value in A in hex without destroying any registers
;
prthex:
push af ; save AF
push de ; save DE
call hexascii ; convert value in A to hex chars in DE
ld a,d ; get the high order hex char
call prtchr ; print it
ld a,e ; get the low order hex char
call prtchr ; print it
pop de ; restore DE
pop af ; restore AF
ret ; done
;
; print the hex word value in bc
;
prthexword:
push af
ld a,b
call prthex
ld a,c
call prthex
pop af
ret
;
; print the hex dword value in de:hl
;
prthex32:
push bc
push de
pop bc
call prthexword
push hl
pop bc
call prthexword
pop bc
ret
;
; Convert binary value in A to ascii hex characters in DE
;
hexascii:
ld d,a ; save A in D
call hexconv ; convert low nibble of A to hex
ld e,a ; save it in E
ld a,d ; get original value back
rlca ; rotate high order nibble to low bits
rlca
rlca
rlca
call hexconv ; convert nibble
ld d,a ; save it in D
ret ; done
;
; Convert low nibble of A to ascii hex
;
hexconv:
and $0F ; low nibble only
add a,$90
daa
adc a,$40
daa
ret
;
; Print value of A or HL in decimal with leading zero suppression
; Use prtdecb for A or prtdecw for HL
;
prtdecb:
push hl
ld h,0
ld l,a
call prtdecw ; print it
pop hl
ret
;
prtdecw:
push af
push bc
push de
push hl
call prtdec0
pop hl
pop de
pop bc
pop af
ret
;
prtdec0:
ld e,'0'
ld bc,-10000
call prtdec1
ld bc,-1000
call prtdec1
ld bc,-100
call prtdec1
ld c,-10
call prtdec1
ld e,0
ld c,-1
prtdec1:
ld a,'0' - 1
prtdec2:
inc a
add hl,bc
jr c,prtdec2
sbc hl,bc
cp e
ret z
ld e,0
call prtchr
ret
;
; Start a new line
;
crlf2:
call crlf ; two of them
crlf:
push af ; preserve AF
ld a,13 ; <CR>
call prtchr ; print it
ld a,10 ; <LF>
call prtchr ; print it
pop af ; restore AF
ret
;
; Get the next non-blank character from (HL).
;
nonblank:
ld a,(hl) ; load next character
or a ; string ends with a null
ret z ; if null, return pointing to null
cp ' ' ; check for blank
ret nz ; return if not blank
inc hl ; if blank, increment character pointer
jr nonblank ; and loop
;
; Convert character in A to uppercase
;
ucase:
cp 'a' ; if below 'a'
ret c ; ... do nothing and return
cp 'z' + 1 ; if above 'z'
ret nc ; ... do nothing and return
res 5,a ; clear bit 5 to make lower case -> upper case
ret ; and return
;
; Add the value in A to HL (HL := HL + A)
;
addhl:
add a,l ; A := A + L
ld l,a ; Put result back in L
ret nc ; if no carry, we are done
inc h ; if carry, increment H
ret ; and return
;
; Jump indirect to address in HL
;
jphl:
jp (hl)
;
; Short delay functions. No clock speed compensation, so they
; will run longer on slower systems. The number indicates the
; number of call/ret invocations. a single call/ret is
; 27 t-states on a z80, 25 t-states on a z180
;
; ; Z80 Z180
; ; ---- ----
dly64: call dly32 ; 1728 1600
dly32: call dly16 ; 864 800
dly16: call dly8 ; 432 400
dly8: call dly4 ; 216 200
dly4: call dly2 ; 108 100
dly2: call dly1 ; 54 50
dly1: ret ; 27 25
;
; Errors
;
erruse: ; command usage error (syntax)
ld de,msguse
jr err
;
errprm: ; command parameter error (syntax)
ld de,msgprm
jr err
;
errbio: ; invalid BIOS or version
ld de,msgbio
jr err
;
err: ; print error string and return error signal
call crlf2 ; print newline
;
err1: ; without the leading crlf
call prtstr ; print error string
;
err2: ; without the string
; call crlf ; print newline
or $FF ; signal error
ret ; done
;
;===============================================================================
; Storage Section
;===============================================================================
;
is180 .db 0 ; non-zero for z180
orgbnk .db 0 ; original bank id
curport .db 0 ; current port being processed
vallist .fill 8,0 ; port values read
;
stksav .dw 0 ; stack pointer saved at start
.fill stksiz,0 ; stack
stack .equ $ ; stack top
;
; Messages
;
msgban .db "PORTSCAN v1.0, 16-Feb-2023",13,10
.db "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",0
msguse .db "Usage: PORTSCAN",13,10
msgprm .db "Parameter error (PORTSCAN /? for usage)",0
msgbio .db "Incompatible BIOS or version, "
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
str_sep .db ": ",0
;
msgcpu .db "CPU is ",0
msgz80 .db "Z80",0
msgz180 .db "Z180",0
msgdone .db "End of Port Sweep",0
;
;
;
size .equ $ - runloc
;
.end

View File

@@ -7,20 +7,24 @@
; keyboard, and mouse.
;
; WBW 2022-03-28: Add menu driven port selection
; Add support for RHYOPHYRE
; Add support for Rhyophyre
; 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
;
;=======================================================================
;
; PS/2 Keyboard/Mouse controller port addresses (adjust as needed)
;
; MBC:
; Nhyodyne:
iocmd_mbc .equ $E3 ; PS/2 controller command port address
iodat_mbc .equ $E2 ; PS/2 controller data port address
; RPH:
; Rhyophyre:
iocmd_rph .equ $8D ; PS/2 controller command port address
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
;
cpumhz .equ 8 ; for time delay calculations (not critical)
;
@@ -77,10 +81,12 @@ setup1:
jr z,setup1
call upcase
call prtchr
cp '1' ; MBC
cp '1' ; Nhyodyne
jr z,setup_mbc
cp '2' ; RHYOPHYRE
cp '2' ; Rhyophyre
jr z,setup_rph
cp '3' ; Duodyne
jr z,setup_duo
cp 'X'
jr z,exit
jr setup
@@ -101,6 +107,14 @@ setup_rph:
ld de,str_rph
jr setup2
;
setup_duo:
ld a,iocmd_duo
ld (iocmd),a
ld a,iodat_duo
ld (iodat),a
ld de,str_duo
jr setup2
;
setup2:
call prtstr
call crlf2
@@ -181,6 +195,12 @@ test_kbd:
;
call ctlr_test
jr nz,test_kbd_fail
;
ld a,$20 ; kbd enabled, mse disabled, no ints
call ctlr_setup
jr nz,test_kbd_fail
;
call ctlr_flush
;
call test_kbd_basic
jr nz,test_kbd_fail
@@ -228,9 +248,13 @@ test_mse:
ld a,$10 ; kbd disabled, mse enabled, no ints
call ctlr_setup
jr nz,test_mse_fail
;
call ctlr_flush
;
call mse_reset
jr nz,test_mse_fail
;
call ctlr_flush
;
call mse_ident
jr nz,test_mse_fail
@@ -262,15 +286,21 @@ test_kbdmse:
ld a,$00 ; kbd enabled, mse enabled, no ints
call ctlr_setup
jr nz,test_kbdmse_fail
;
call ctlr_flush
;
call kbd_reset
jr nz,test_kbdmse_fail
;
call ctlr_flush
;
ld a,2
call kbd_setsc
;
call mse_reset
jr nz,test_kbdmse_fail
;
call ctlr_flush
;
call mse_stream
jr nz,test_kbdmse_fail
@@ -290,15 +320,13 @@ test_kbdmse_fail:
; inventory the supported scan code sets.
;
test_kbd_basic:
ld a,$20 ; Xlat off for this checking
call ctlr_setup
ret nz
;
call kbd_reset
ret nz
;
call ctlr_flush
;
call kbd_ident
;ret nz
ret nz
;
ld b,3 ; Loop control, 3 scan code sets
ld c,1 ; Current scan code number
@@ -436,6 +464,19 @@ ctlr_setup:
xor a
ret
;
; Flush incoming data buffer
;
ctlr_flush:
call crlf2
ld de,str_ctlr_flush
call prtstr
ctlr_flush1:
call delay ; small delay
call check_read ; data pending?
ret nz ; return if nothing there
call get_data_dbg ; get and discard byte
jr ctlr_flush1 ; loop
;
; Perform a keyboard reset
;
kbd_reset:
@@ -612,13 +653,17 @@ mse_reset:
call crlf2
ld de,str_mse_reset
call prtstr
ld a,$f2 ; Identify mouse command
ld a,$ff ; Identify mouse command
call put_data_mse_dbg
jp c,err_ctlr_to ; handle controller error
call get_data_dbg
jp c,err_ctlr_to ; handle controller error
cp $fa ; Is it an ack as expected?
jp nz,err_mse_reset
call get_data_dbg
jp c,err_ctlr_to ; handle controller error
cp $aa ; Success?
jp nz,err_mse_reset
call crlf
ld de,str_mse_reset_ok
call prtstr
@@ -634,18 +679,61 @@ mse_ident:
ld a,$f2 ; Identify mouse command
call put_data_mse_dbg
jp c,err_ctlr_to ; handle controller error
mse_ident0:
call get_data_dbg
jp c,err_ctlr_to ; handle controller error
;cp $00 ; extraneous?
;jr z,mse_ident0 ; ignore it, get another
cp $fa ; Is it an ack as expected?
jp nz,err_mse_ident
call get_data_dbg
jp c,err_ctlr_to ; handle controller error
; Now we need to receive 0-2 bytes. There is no way to know
; how many are coming, so we receive bytes until there is a
; timeout error. Timeout is shortened here so that we don't
; have to wait seconds for the routine to complete normally.
; A short timeout is more than sufficient here.
ld ix,workbuf
ld a,(timeout) ; save current timeout
push af
ld a,stimout ; set a short timeout
ld (timeout),a
ld b,8 ; buf max
ld c,0 ; buf len
mse_ident1:
push bc
call get_data_dbg
pop bc
jr c,mse_ident2
ld (ix),a
inc ix
inc c
djnz mse_ident1
mse_ident2:
pop af ; restore original timeout
ld (timeout),a
call crlf
ld de,str_mse_ident_disp
call prtstr
pop af
call prtdecb
ld a,'['
call prtchr
ld ix,workbuf
ld a,c ; bytes to print
or a ; check for zero
jr z,mse_ident4 ; handle zero
ld b,a ; setup loop counter
jr mse_ident3a
mse_ident3:
ld a,','
call prtchr
mse_ident3a:
ld a,(ix)
call prthex
inc ix
djnz mse_ident3
mse_ident4:
ld a,']'
call prtchr
xor a
ret
;
@@ -658,8 +746,13 @@ mse_stream:
ld a,$f4 ; Stream packets cmd
call put_data_mse_dbg
jp c,err_ctlr_to ; handle controller error
mse_stream0:
call get_data_dbg
jp c,err_ctlr_to ; handle controller error
;cp $00 ; extraneous?
;jr z,mse_stream0 ; ignore it, get another
cp $FA ; Is it an ack as expected?
jp nz,err_mse_stream
xor a
@@ -1344,14 +1437,16 @@ delay1:
; Constants
;=======================================================================
;
str_banner .db "PS/2 Keyboard/Mouse Information v0.6a, 2-Apr-2022",0
str_banner .db "PS/2 Keyboard/Mouse Information v0.8, 6-Nov-2023",0
str_hwmenu .db "PS/2 Controller Port Options:\r\n\r\n"
.db " 1 - MBC\r\n"
.db " 2 - RHYOPHYRE\r\n"
.db " 1 - Nhyodyne\r\n"
.db " 2 - Rhyophyre\r\n"
.db " 3 - Duodyne\r\n"
.db " X - Exit Application\r\n"
.db "\r\nSelection? ",0
str_mbc .db "MBC",0
str_rph .db "RHYOPHYRE",0
str_mbc .db "Nhyodyne",0
str_rph .db "Rhyophyre",0
str_duo .db "Duodyne",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"
@@ -1382,6 +1477,7 @@ str_trans_off .db "***** Testing Keyboard with Scan Code Translation DISABLED *
str_trans_on .db "***** Testing Keyboard with Scan Code Translation ENABLED *****",0
str_basic_mse .db "***** Basic Mouse Tests *****",0
str_kbdmse .db "***** Test All Devices Combined *****",0
str_ctlr_flush .db "Flushing controller input buffer",0
str_kbd_reset .db "Attempting Keyboard Reset",0
str_kbd_reset_ok .db "Keyboard Reset OK",0
str_err_kbd_reset .db "Keyboard Reset Failed",0

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

@@ -0,0 +1,201 @@
;*****************************************************************************
;*****************************************************************************
;** **
;** AY-3-8910 Sound Test Program **
;** Author: Wayne Warthen -- 10/8/2017 **
;** **
;*****************************************************************************
;*****************************************************************************
;
;=============================================================================
; Constants Section
;=============================================================================
;
; Hardware port addresses
;
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
;
cpuspd .equ 4 ; CPU speed in MHz
;
; BDOS invocation constants
;
bdos .equ $0005 ; BDOS invocation vector
print .equ 9 ; BDOS print function number
conwrt .equ 2 ; BDOS console write char
;
;=============================================================================
; Code Section
;=============================================================================
;
.org $100
;
ld (stksav),sp ; save incoming stack frame
ld sp,stack ; setup our private stack
;
ld de,banner ; load banner string address
ld c,print ; BDOS print function number
call bdos ; do it
;
ld a,$FF ; SCG board activation value
out (acr),a ; write value to ACR
;
xor a ; zero accum
ld (chan),a ; init channel number
;
chloop:
; Test each channel
call tstchan ; test the current channel
ld hl,chan ; point to channel number
ld a,(chan) ; get current channel
inc a ; bump to next
ld (chan),a ; save it
cp 3 ; end of channels?
jr nz,chloop ; loop if not done
;
ld de,crlf ; newline
ld c,print ; BDOS print function
call bdos ; do it
;
ld sp,(stksav) ; restore stack
;
ret ; end of program
;
tstchan:
; Display channel being tested
ld de,chmsg ; point to channel message
ld c,print ; BDOS print function number
call bdos ; do it
ld a,(chan) ; get current channel number
add a,'A' ; offset to print as alpha
ld e,a ; put in E
ld c,conwrt ; BDOS console out function number
call bdos ; do it
ld de,chmsg2 ; point to channel message
ld c,print ; BDOS print function number
call bdos ; do it
;
ld hl,0 ; initial pitch value
ld (pitch),hl ; save it
;
; Setup mixer register
ld a,(chan) ; get channel num (0-2)
inc a ; adjust index (1-3)
ld b,a ; and use as loop counter
xor a ; clear accum
scf ; set carry
mixloop:
rla ; rotate bit
djnz mixloop ; loop based on channel num
cpl ; invert bits
and $FF ; so only target bit is cleared
push af ; save value
ld a,7 ; mixer register
out (rsel),a ; select it
pop af ; recover value
out (rdat),a ; and set register value
;
; Set channel volume to max
ld a,(chan) ; get channel
add a,8 ; adjust for start of vol regs
out (rsel),a ; select register
ld a,$0F ; max volume
out (rdat),a ; write it
;
pitloop:
; Pitch loop
ld a,(chan) ; get channel
sla a ; A := channel pitch reg, 2 bytes per chan
out (rsel),a ; select low byte register
push af ; save register
ld a,l ; get low byte of pitch value
out (rdat),a ; and write it to register
pop af ; recover register index
inc a ; inc to high byte pitch register
out (rsel),a ; select high byte register
ld a,h ; get high byte of pitch value
out (rdat),a ; and write it to register
;
; Delay
ld b,cpuspd ; cpu speed scalar
dlyloop:
call dly64 ; arbitrary delay
djnz dlyloop ; loop based on cpu speed
;
; Next pitch value
ld hl,(pitch) ; get current pitch
inc hl ; increment
ld (pitch),hl ; save new value
ld a,h ; get high byte
;cp 16 ; end of max range?
cp 4 ; end of max range?
jr nz,pitloop ; loop till done
;
; Clean up
call clrpsg ; shut down psg
;
ret ; done
;
; Clear PSG registers to default
;
clrpsg:
ld b,16 ; loop for 18 registers
ld c,0 ; init register index
clrpsg1:
ld a,c ; register num to accum
out (rsel),a ; select it
xor a ; clear accum
out (rdat),a ; and write to register
inc c ; next register
djnz clrpsg1 ; loop through all registers
ret ; return
;
; Program PSG registers from list at HL
;
setpsg:
ld a,(hl) ; get psg reg number
inc hl ; bump index
cp $FF ; check for end
ret z ; return if end marker $FF
out (rsel),a ; select psg register
ld a,(hl) ; get register value
inc hl ; bump index
out (rdat),a ; set register value
jr setpsg ; loop till done
;
; Short delay functions. No clock speed compensation, so they
; will run longer on slower systems. The number indicates the
; number of call/ret invocations. A single call/ret is
; 27 t-states on a z80, 25 t-states on a z180
;
dly256: call dly128
dly128: call dly64
dly64: call dly32
dly32: call dly16
dly16: call dly8
dly8: call dly4
dly4: call dly2
dly2: call dly1
dly1: ret
;
;=============================================================================
; Data Section
;=============================================================================
;
chan .db 0 ; active audio channel
pitch .dw 0 ; current pitch
;
banner .text "\r\nRetroBrew Computers SCG AY-3-8910 Sound Test\r\n"
.text "Set SCG board base I/O address to 0x98\r\n$"
chmsg .text "\r\nPlaying descending tones on channel $"
chmsg2 .text "...$"
crlf .text "\r\n$"
;
stksav .dw 0 ; saved stack frame
.fill 80,$FF ; 40 level private stack
stack .equ $ ; start of stack
;
.end

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