Compare commits

...

62 Commits

Author SHA1 Message Date
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
b1ackmai1er
d8b7f88dad Merge pull request #26 from wwarthen/master
Resync
2022-11-09 17:40:23 +08:00
237 changed files with 12103 additions and 3519 deletions

View File

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

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

@@ -12,6 +12,9 @@ Version 3.5
- 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
Version 3.4
-----------

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.

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

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

View File

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -3,7 +3,7 @@
**RomWBW ReadMe** \
Version 3.5 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
12 Feb 2024
17 May 2024
# Overview
@@ -112,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
@@ -229,6 +229,8 @@ let me know if I missed you!
- 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

View File

@@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
12 Feb 2024
17 May 2024
@@ -230,6 +230,8 @@ let me know if I missed you!
- 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.

View File

@@ -1,7 +1,7 @@
# RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
Author: Wayne Warthen \
Updated: 6-Jan-2024
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
@@ -72,6 +72,38 @@ creation.
- 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)
@@ -123,3 +155,4 @@ creation.
| 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 |

Binary file not shown.

View File

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

View File

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

View File

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

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

View File

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

View File

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

View File

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

View File

@@ -0,0 +1,177 @@
;
; Print character in A without destroying any registers
;
PRTCHR:
PUSH BC ; save registers
PUSH DE
PUSH HL
LD E,A ; character to print in E
LD C,$02 ; BDOS function to output a character
CALL BDOS ; do it
POP HL ; restore registers
POP DE
POP BC
RET
;
PRTDOT:
;
; shortcut to print a dot preserving all regs
PUSH AF ; save af
LD A,'.' ; load dot char
CALL PRTCHR ; print it
POP AF ; restore af
RET ; done
;
PRTCR:
;
; shortcut to print a carriage return preserving all regs
PUSH AF ; save af
LD A,13 ; load CR value
CALL PRTCHR ; print it
POP AF ; restore af
RET ; done
;
; Print a zero terminated string at (DE) without destroying any registers
;
PRTSTR:
PUSH AF
PUSH DE
;
PRTSTR1:
LD A,(DE) ; get next char
OR A
JR Z,PRTSTR2
CALL PRTCHR
INC DE
JR PRTSTR1
;
PRTSTR2:
POP DE ; restore registers
POP AF
RET
;
; Print the value in A in hex without destroying any registers
;
PRTHEX:
PUSH AF ; save AF
PUSH DE ; save DE
CALL HEXASCII ; convert value in A to hex chars in DE
LD A,D ; get the high order hex char
CALL PRTCHR ; print it
LD A,E ; get the low order hex char
CALL PRTCHR ; print it
POP DE ; restore DE
POP AF ; restore AF
RET ; done
;
; print the hex word value in bc
;
PRTHEXWORD:
PUSH AF
LD A,B
CALL PRTHEX
LD A,C
CALL PRTHEX
POP AF
RET
;
; print the hex dword value in de:hl
;
PRTHEX32:
PUSH BC
PUSH DE
POP BC
CALL PRTHEXWORD
PUSH HL
POP BC
CALL PRTHEXWORD
POP BC
RET
;
; Convert binary value in A to ascii hex characters in DE
;
HEXASCII:
LD D,A ; save A in D
CALL HEXCONV ; convert low nibble of A to hex
LD E,A ; save it in E
LD A,D ; get original value back
RLCA ; rotate high order nibble to low bits
RLCA
RLCA
RLCA
CALL HEXCONV ; convert nibble
LD D,A ; save it in D
RET ; done
;
; Convert low nibble of A to ascii hex
;
HEXCONV:
AND $0F ; low nibble only
ADD A,$90
DAA
ADC A,$40
DAA
RET
;
; Print value of A or HL in decimal with leading zero suppression
; Use prtdecb for A or prtdecw for HL
;
PRTDECB:
PUSH HL
LD H,0
LD L,A
CALL PRTDECW ; print it
POP HL
RET
;
PRTDECW:
PUSH AF
PUSH BC
PUSH DE
PUSH HL
CALL PRTDEC0
POP HL
POP DE
POP BC
POP AF
RET
;
PRTDEC0:
LD E,'0'
LD BC,-10000
CALL PRTDEC1
LD BC,-1000
CALL PRTDEC1
LD BC,-100
CALL PRTDEC1
LD C,-10
CALL PRTDEC1
LD E,0
LD C,-1
PRTDEC1:
LD A,'0' - 1
PRTDEC2:
INC A
ADD HL,BC
JR C,PRTDEC2
SBC HL,BC
CP E
RET Z
LD E,0
CALL PRTCHR
RET
;
; Start a new line
;
CRLF2:
CALL CRLF ; two of them
CRLF:
PUSH AF ; preserve AF
LD A,13 ; <CR>
CALL PRTCHR ; print it
LD A,10 ; <LF>
CALL PRTCHR ; print it
POP AF ; restore AF
RET

View File

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

View File

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

View File

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

View File

@@ -2266,13 +2266,7 @@ INIT:
RST 08 ; DO IT, DE=MAJ/MIN/UP/PAT
LD A,D ; A := MAJ/MIN
CP ((RMJ << 4) | RMN) ; MATCH?
JR NZ,INIT1 ; HANDLE VER MISMATCH
LD A,E ; A := OS UP/PAT
AND $F0 ; PAT NOT INCLUDED IN MATCH
CP (RUP << 4) ; MATCH?
JR NZ,INIT1 ; HANDLE VER MISMATCH
JR INIT2 ; ALL GOOD, CONTINUE
INIT1:
JR Z,INIT2 ; ALL GOOD, CONTINUE
; DISPLAY VERSION MISMATCH
CALL NEWLINE2 ; FORMATTING
LD DE,STR_VERMIS ; VERSION MISMATCH
@@ -2753,10 +2747,12 @@ CLRRAM2:
#ENDIF
LD A,(BNKUSER) ; SWITCH BACK TO USER BANK
CALL HB_BNKSEL ; SELECT BANK
EI ; INTERRUPTS OK AGAIN
CALL NEWLINE2 ; FORMATTING
LD DE,STR_INITRAMDISK ; RAM DISK INIT MESSAGE
CALL WRITESTR ; DISPLAY IT
LD A,(BNKRAMD) ; SWITCH BACK TO FIRST BANK
DI ; DISABLE INTERRUPTS AGAIN
LD A,(BNKRAMD) ; SWITCH BACK TO FIRST RAM BANK
CALL HB_BNKSEL ; SELECT BANK
LD HL,0 ; SOURCE ADR FOR FILL
LD BC,$2000 ; LENGTH OF FILL IS 8K

View File

@@ -96,13 +96,7 @@ init$2:
rst 08 ; do it, de=maj/min/up/pat
ld a,d ; a := maj/min
cp ((rmj << 4) | rmn) ; match?
jr nz,init$3 ; handle ver mismatch
ld a,e ; a := os up/pat
and 0F0h ; pat not included in match
cp (rup << 4) ; match?
jr nz,init$3 ; handle ver mismatch
jr init$4 ; all good, continue
init$3:
jr z,init$4 ; all good, continue
; display version mismatch
ld hl,vermis$msg ; version mismatch
call ?pmsg ; display it

View File

@@ -10,5 +10,7 @@ zxcc nulu --O -cpn12mt "-<30" --A mt011/cpnet12/*.* --L --X || exit /b
zxcc nulu --O -cpn3mt "-<30" --A mt011/cpnet3/*.* --L --X || exit /b
zxcc nulu --O -cpn12duo "-<30" --A duo/cpnet12/*.* --L --X || exit /b
zxcc nulu --O -cpn3duo "-<30" --A duo/cpnet3/*.* --L --X || exit /b
zxcc nulu --O -cpn12ser "-<30" --A serial/cpnet12/*.* --L --X || exit /b
zxcc nulu --O -cpn3ser "-<30" --A serial/cpnet3/*.* --L --X || exit /b
copy *.lbr ..\..\Binary\CPNET

View File

@@ -1,4 +1,4 @@
OBJECTS = cpn12mt.lbr cpn3mt.lbr cpn12duo.lbr cpn3duo.lbr
OBJECTS = cpn12mt.lbr cpn3mt.lbr cpn12duo.lbr cpn3duo.lbr cpn12ser.lbr cpn3ser.lbr
DEST = ../../Binary/CPNET/
TOOLS = ../../Tools
@@ -8,6 +8,7 @@ cpn12%.lbr: CPNETVER=cpnet12
cpn3%.lbr: CPNETVER=cpnet3
%mt.lbr: HWVER=mt011
%duo.lbr: HWVER=duo
%ser.lbr: HWVER=serial
%.lbr:
rm -f $@

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.

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.

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.

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.

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.

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

@@ -48,8 +48,9 @@ found:
| RTC | Yes | Yes | Yes |
| TIMER | Yes | Yes | Yes |
| CPUSPD | Yes | Yes | Yes |
| FAT | Yes | Yes | Yes |
| CLRDIR | Yes | Yes | Yes |
| INTTEST | No | Yes | Yes |
| FAT | No | Yes | Yes |
| TUNE | No | Yes | Yes |
| WDATE | No | Yes | Yes |
| HTALK | No | Yes | Yes |
@@ -545,7 +546,7 @@ distribution in the Doc/Contrib directory.
The application supports a significant number of EEPROM parts. It
should automatically detect your part. If it does not recognize your
chip, make sure that you do not have a write protect jumper set --
this jumper can prevent the ROM chip from being recognized.
this jumper will prevent the ROM chip from being recognized.
Reprogramming a ROM chip in-place is inherently dangerous. If anything
goes wrong, you will be left with a non-functional system and no
@@ -921,6 +922,15 @@ 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`.
## Etymology
The `FAT` application is an original RomWBW work, but utilizes the
@@ -953,6 +963,60 @@ can corrupt a file if it occurs. Be careful to avoid this.
`\clearpage`{=latex}
# CLRDIR
`CLRDIR` is used to initialize a CP/M filesystem. This is frequently
used to prepare RomWBW disk slices for use. If there is any data
on the filesystem, it will be destroyed. `CLRDIR` works on CP/M
drive letters. To initialize a RomWBW slice, the slice must first be
assigned to a CP/M drive letter.
This application is provided by Max Scane.
## Syntax
| `CLRDIR `*`<drive>`*` [options]`
*`<drive>`* is the CP/M drive letter to be cleared (e.g., "A:")
Options:
| `-D`: Enable debug output
| `-Y`: Do not ask for confirmation
## Usage
This application has a command line interface only. Type an
appropriately formatted command at the command prompt at any of the
RomWBW CP/M operatings systems (CP/M 2.2, ZSDOS, CP/M 3, etc.).
You will be prompted for confirmation to continue. You must type a
**capital** 'Y' to proceed. The application will confirm that the
drive has been cleared.
If used under ZSDOS, you should issue a `RELOG` command after using
`CLRDIR` to ensure that CP/M relogs the cleared drive.
## Notes
This command is inherently dangerous. It will completely destroy the
directory area of the target drive. Be very careful to ensure you do
not target a drive that contains useful data.
`CLRDIR` understands the directory formats of all of the RomWBW
CPM-like operating systems and devices including floppy disks, CF/SD
Cards, etc.
## Etymology
This application was written and provided by Max Scane. He
provides it in binary format and is included in the RomWBW
distribution as a binary file.
`\clearpage`{=latex}
# TUNE
If your RomWBW system has a sound card based on either an AY-3-8190 or

View File

@@ -1,6 +1,7 @@
$define{doc_ver}{Version 3.5}$
$define{doc_product}{RomWBW}$
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
$define{file_root}{https://github.com/wwarthen/RomWBW/raw/master}$
$define{doc_root}{$file_root$/Doc}$
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
$ifndef{doc_author}$ $define{doc_author}{Wayne Warthen}$ $endif$
$define{doc_date}{$date{%d %b %Y}$}$

View File

@@ -10,6 +10,11 @@ distributed with RomWBW. Specifically, RomWBW provides a set
of floppy and hard disk images in the Binary directory of the
distribution. The contents of these images is listed here.
**NOTE:** This document has become somewhat out-of-date. I apologize
for this. It is very difficult to maintain due to the volume of
disk content updates and the way that files are dynamically merged
into disk images during the build process.
The files on the disk images were sourced from a variety of locations.
The primary sources of these files are listed below. Note that the
primary documentation for each of these sources is listed. You are
@@ -20,7 +25,7 @@ on using the applications and files listed.
- **RomWBW**: RomWBW Custom Applications
Documentation: RomWBW Applications.pdf*
Documentation: *RomWBW Applications.pdf*
These files are custom applications built exclusively to enhance the
functionality of RomWBW. In some cases they are built from scratch
@@ -28,7 +33,7 @@ on using the applications and files listed.
- **CPM22**: Digital Research CP/M-80 2.2 Distribution Files
Documentation: CPM Manual.pdf
Documentation: *CPM Manual.pdf*
These files are from the official Digital Research distribution
of CP/M 2.2. Applications have been patched according to the

View File

@@ -10,7 +10,7 @@ programming languages.
`\clearpage`{=latex}
# ROMWBW Monitor
# RomWBW Monitor
The Monitor program is a low level utility that can be used
for testing and programming. It allows programs to be entered,
@@ -339,8 +339,8 @@ A comprehensive instruction manual is available in the Doc\\Contrib directory.
## ROMWBW unsupported features
- Cassette loading
- Cassette saving
- This ROM-hosted implementation does not support cassette or disk
access for loading and saving programs.
# TastyBASIC
@@ -350,10 +350,12 @@ original source can be found here [https://github.com/dimitrit/tastybasic](https
## Features / Limitations
Integer arithmetic, numbers -32767 to 32767
Singles letter variables A-Z
1-dimensional array support
Strings are not supported
- This ROM-hosted implementation does not support disk access for
loading and saving programs.
- Integer arithmetic, numbers -32767 to 32767
- Singles letter variables A-Z
- 1-dimensional array support
- Strings are not supported
## Direct Commands
@@ -494,7 +496,8 @@ Due to different platform processor speeds, serials speeds and flow control cap
See the ROMWBW Applications guide for additional information on performing upgrades.
## Console Options
## Console Options
Option ( C ) - Set Console Device
Option ( S ) - Set Serial Device
@@ -576,7 +579,7 @@ Can be used to verify if a ROM image has been transferred and flashed correctly.
In Windows, right clicking on a file should also give you a context menu option CRC SHA which will allow you to select a CRC32 calculation to be done on the selected file.
## Teraterm macro configuration
## Tera Term macro configuration
Macros are a useful tool for automatic common tasks. There are a number of instances where using macros to facilitate the update process could be worthwhile if you are:
@@ -595,20 +598,21 @@ crc32file crc '\\desktop\users\phillip\documents\github\romwbw\binary\sbc_std_cu
sprintf '0x%08x' crc
messagebox inputstr 'crc32'
```
## Serial speed guidelines
As identified in the introduction, there are limitations on serial speed depending on processor speed and flow control settings. Listed below are some of the results identified during testing.
Platform / Configuration | Processor Speed | Maximum Serial Speed
-------------------------------|-----------------|---------------------
Sbc-v2 uart no flow control | 2mhz | 9600
sbc-v2 uart no flow control | 4mhz | 19200
sbc-v2 uart no flow control | 5mhz | 19200
sbc-v2 uart no flow control | 8mhz | 38400
sbc-v2 uart no flow control | 10mhz | 38400
sbc-v2 usb-fifo 2mhz+ | | n/a
sbc-mk4 asci no flow control | 18.432mhz | 9600
sbc-mk4 asci with flow control | 18.432mhz | 38400
SBC-V2 UART no flow control | 2mhz | 9600
SBC-V2 UART no flow control | 4mhz | 19200
SBC-V2 UART no flow control | 5mhz | 19200
SBC-V2 UART no flow control | 8mhz | 38400
SBC-V2 UART no flow control | 10mhz | 38400
SBC-V2 USB-FIFO 2mhz+ | | n/a
SBC-MK4 ASCI no flow control | 18.432mhz | 9600
SBC-MK4 ASCI with flow control | 18.432mhz | 38400
The **Set Recommend Baud Rate** option in the Updater menu follows the following guidelines.
@@ -623,9 +627,9 @@ These can be customized in the updater.asm source code in the CLKTBL table if d
Feedback to the ROMWBW developers on these guidelines would be appreciated.
## Notes:
All testing was done with Teraterm x-modem, Forcing checksum mode using macros was found to give the most reliable transfer.
Partial writes can be completed with 39SF040 chips. Other chips require entire flash to be erased before being written.
An SBC V2-005 MegaFlash or Z80 MBC required for 1mb flash support. The Updater assumes both chips are same type
Failure handling has not been tested.
Timing broadly calibrated on a Z80 SBC-v2
Unabios not supported
- All testing was done with Teraterm x-modem, Forcing checksum mode using macros was found to give the most reliable transfer.
- Partial writes can be completed with 39SF040 chips. Other chips require entire flash to be erased before being written.
- An SBC V2-005 MegaFlash or Z80 MBC required for 1mb flash support. The Updater assumes both chips are same type
- Failure handling has not been tested.
- Timing broadly calibrated on a Z80 SBC-v2
- UNA BIOS not supported

View File

@@ -220,6 +220,8 @@ please let me know if I missed you!
* 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

View File

@@ -1327,7 +1327,7 @@ specified (set to 0 for default/not specified). Video Mode (E) values
are specific to each VDA. The returned Status (A) is a standard HBIOS
result code.
If the hardware and driver support it, you can specify a Font Bitmap
If the hardware and driver supports it, you can specify a Font Bitmap
(HL) buffer address containing the character bitmap data to be loaded
into the video processor. The buffer **must** be located entirely in the
top 32K of the CPU memory space. HL must be set to zero if no character
@@ -1372,10 +1372,10 @@ data, then Font Bitmap (HL) will be set to zero on return.
| B: 0x42 | A: Status |
| C: Video Unit | |
Performs a soft reset of the specified Video Unit (C). Will clear the
screen, home the cursor, and restore active attribute/color to defaults.
Keyboard will be flushed. The current video mode will not be changed.
The returned Status (A) is a standard HBIOS result code.
Performs a non-destructive reset of the specified Video Unit (C).
Should re-initialize the video hardware without destroying the screen
contents or cursor position. The current video mode will not be
changed. The returned Status (A) is a standard HBIOS result code.
### Function 0x43 -- Video Device (VDADEV)

View File

@@ -263,6 +263,7 @@ is discussed in [Customizing RomWBW].
| [Duodyne Z80 System]^1^ | Duo | DUO_std.rom | 38400 |
| [Heath H8 Z80 System]^10^ | H8 | HEATH_std.rom | 115200 |
| [EP Mini-ITX Z180]^11^ | RCBus? | EPITX_std.rom | 115200 |
| [NABU w/ RomWBW Option Board]^10^ | NABU | NABU_std.rom | 115200 |
| ^1^Designed by Andrew Lynch
| ^2^Designed by Sergey Kiselev
@@ -630,6 +631,7 @@ prompt:
| CP/M 2.2 | Digital Research CP/M 2.2 OS |
| Z-System | ZSDOS 1.1 w/ ZCPR 1 (Enhanced CP/M compatible OS) |
| Forth | Brad Rodriguez's ANSI compatible Forth language |
| BASIC | Microsoft ROM BASIC |
| Tasty&nbsp;BASIC | Dimitri Theuling's Tiny BASIC implementation |
| Play | A simple video game (requires ANSI terminal emulation) |
| Network&nbsp;Boot | Boot system via Wiznet MT011 device |
@@ -649,9 +651,17 @@ in the ROM (CP/M 2.2 & Z-System) are described in the Operating Systems
chapter of this document.
In general, the command to exit any of these applications and restart
the system is `BYE`. The exceptions are the Monitor which uses `B` and
the system is `BYE`. The exceptions are the Monitor which uses `X` and
Play which uses `Q`.
**NOTE:** Of the ROM Applications, only the operating systems (CP/M and
Z-System) have the ability to interact with disk drives. So, other than
these 2 OSes, the ROM Applications do **not** have any way to save or
load data from peristent/disk storage. For example, if you launch BASIC
from the Boot Loader, you will not be able to save or load your
programs. You will need to start an operating system first and then run
BASIC in order to save or load programs.
Two of the ROM Applications are, in fact, complete operating systems.
Specifically, "CP/M 2.2" and "Z-System" are provided so that you can
actually start either operating system directly from your ROM. This
@@ -1108,11 +1118,11 @@ system.
The drive letter assignments **do not** change during an OS session
unless you use the `ASSIGN` command yourself to do it. Additionally, the
assignments at boot will stay the same on each boot as long as you do
assignments at boot will stay the same on each boot as long as you do
not make changes to your hardware configuration. Note that the
assignments **are** dependent on the media currently inserted in hard
disk drives when the operating system is started. So, notice that if you
insert or remove an SD Card, CF Card or USB Drive, the drive
insert or remove an SD Card, CF Card or USB Drive, the drive
assignments will change. Since drive letter assignments can change, you
must be careful when doing destructive things like using `CLRDIR` to
make sure the drive letter you use is referring to the desired media.
@@ -1394,15 +1404,24 @@ filesystem format used is 8MB. This ensures any filesystem will be
accessible to any of the operating systems.
Since storage devices today are quite large, RomWBW implements a
mechanism called slicing to allow up to 256 8MB filesystems on a
single large storage device. This allows up to 2GB of usable space on
mechanism called slicing to allow up to 256 8MB CP/M filesystems on a
single large storage device. To say it another way, the media is
"sliced up" into many 8MB CP/M filesystems. Each slice is a complete
CP/M filesystem. This allows up to 2GB of usable space on
one media. You can think of slices as a way to refer to any of
the first 256 8MB chunks of space on a single media.
the first 256 8MB chunks of space on a single media. Each chunk
is a CP/M filesystem.
Note that although you can use up to 256 slices per physical disk, this
large number of slices is rarely used. The recommended RomWBW disk
layout provides for 64 slices which is more than enough for most
use cases.
Note that slices are **not** the same thing as a hard disk partition.
In fact, these slices all live inside of a single hard disk partition.
Normally, a RomWBW hard disk will have one partition (called the
RomWBW partition) containing 64 slices. Optionally, there may be
a second partition which contains a FAT filesystem. For now, we
are just talking about the slices within the single RomWBW partition.
Although you can use up to 256 slices per physical disk, this large
number of slices is rarely used. The recommended RomWBW disk layout
provides for 64 slices which is more than enough for most use cases.
Of course, the problem is that CP/M-like operating systems have only
16 drive letters (A:-P:) available. Under the covers, RomWBW allows
@@ -1438,22 +1457,28 @@ the same device/slice at the same time. Second, there must always be a
drive assigned to A:. Any attempt to violate these rules will be blocked
by the `ASSIGN` command.
As you see, the name of a slice does not reference the hard disk
partition containing the slices. Since there can only be a single
RomWBW partition containing slices on any disk, the partition is
determined automatically.
In case this wasn't already clear, you **cannot** refer directly
to slices using CP/M. CP/M only understands drive letters, so
to access a given slice, you must assign a drive letter to it first.
While it may be obvious, you cannot use slices on any media less
than 8MB in size. Specifically, you cannot slice RAM disks, ROM
disks, floppy disks, etc. All of these are considered to have a single
slice and any attempt to ASSIGN a drive letter to a slice beyond that
will result in an error message.
While it may be obvious, you cannot use slices on any media less than
8MB in size. Specifically, you cannot slice RAM disks, ROM disks, floppy
disks, etc. All of these are considered to have a single slice (slice
0) and any attempt to ASSIGN a drive letter to a slice beyond that will
fail and produce an error message.
It is very important to understand that RomWBW slices are not
individually created or allocated on your hard disk. RomWBW uses a
single, large chunk of space on your hard disk to contain the slices.
You should think of slices as just an index into a sequential set of 8MB
areas that exist in this large chunk of space. The next section will
go into more detail on how slices are located on your hard disk.
single, large chunk of space (partition) on your hard disk to contain
the slices. You should think of slices as just an index into a
sequential set of 8MB areas that exist in this large chunk of space.
The next section will go into more detail on how slices are located on
your hard disk.
Although you do not need to allocate slices individually, you do need to
initialize each slice for CP/M to use it. This is somewhat analogous
@@ -1465,10 +1490,10 @@ absolutely sure you know what media and slice are assigned to that
drive letter before using `CLRDIR` because CLRDIR will wipe out any
pre-existing contents of the slice.
**WARNING**: The `CLRDIR` application does not appear to check for
disk errors when it runs. If you attempt to run `CLRDIR` on a drive
that is mapped to a slice that does not actually fit on the physical
disk, it may behave erratically.
**WARNING**: Earlier versions of the `CLRDIR` application does not
appear to check for disk errors when it runs. If you attempt to run
`CLRDIR` on a drive that is mapped to a slice that does not actually fit
on the physical disk, it may behave erratically.
Here is an example of using `CLRDIR`. In this example, the `ASSIGN`
command is used to show the current drive letter assignments. Then
@@ -1488,10 +1513,10 @@ B>assign
H:=IDE0:3
B>clrdir G:
CLRDIR Version 1.2 April 2020 by Max Scane
CLRDIR Version 1.2B May 2024 by Max Scane
Warning - this utility will overwrite the directory sectors of Drive: G
Type Y to proceed, any key other key to exit. Y
Type CAPITAL Y to proceed, any key other key to exit. Y
Directory cleared.
B>
```
@@ -1695,9 +1720,9 @@ transferring your files over individually. You use your modern
computer (Windows, Linux, MacOS) to write the disk image onto the
disk media, then just move the media over to your system.
The disk image files are found in the Binary directory of the
distribution. Floppy disk images are prefixed with "fd_" and hard
disk images are prefixed with either "hd512_" or "hd1k_" depending on the
The disk image files are found in the Binary directory of the
distribution. Floppy disk images are prefixed with "fd_" and hard disk
images are prefixed with either "hd512_" or "hd1k_" depending on the
hard disk layout they are for.
Each disk image has the complete set of normal applications and tools
@@ -1968,10 +1993,12 @@ custom hard disk image file, it will need to be written to the media
using your modern computer. Note that you **do not** run `CLRDIR` or
`SYSCOPY` on the slices that contain the data. When using this method,
the disk will be partitioned and setup with 1 or more slices containing
ready-to-run bootable operating systems.
ready-to-run bootable operating systems. You **do** need to run
`CLRDIR` and optionally `SYSCOPY` on slices that are not part of the
image (slices beyond the ones included with the image).
To write a hard disk image file onto your actual media (actual hard disk
or CF/SD/USB Media), you need to use an image writing utility on your
or CF/SD/USB Media), you need to use an image writing utility on your
modern computer. Your modern computer will need to have an appropriate
interface or slot that accepts the media. To actually copy the image,
you can use the `dd` command on Linux or MacOS. On Windows, in the
@@ -2214,7 +2241,7 @@ less likely to encounter compatibility issues.
#### Documentation
* [CPM Manual]($doc_root$/CPM Manual.pdf)
* [CPM Manual]($doc_root$/CPM/CPM Manual.pdf)
#### Boot Disk
@@ -2254,15 +2281,15 @@ significant improvements such as date/time stamping of files.
Z-System is a somewhat ambiguous term because there are multiple
generations of this software. RomWBW Z-System is a combination of both
ZCPR-DJ (the CCP) and ZSDOS 1.1 (the BDOS) when referring to Z-System.
ZCPR-DJ (the CCP) and ZSDOS 1.1 (the BDOS) when referring to Z-System.
The latest version of Z-System (ZCPR 3.4) is also provided with RomWBW
via the NZ-COM adaptation (see below).
#### Documentation
* [ZCPR Manual]($doc_root$/ZCPR Manual.pdf)
* [ZCPR-DJ]($doc_root$/ZCPR-DJ.doc)
* [ZSDOS Manual]($doc_root$/ZSDOS Manual.pdf)
* [ZCPR Manual]($doc_root$/CPM/ZCPR Manual.pdf)
* [ZCPR-DJ]($doc_root$/CPM/ZCPR-DJ.doc)
* [ZSDOS Manual]($doc_root$/CPM/ZSDOS Manual.pdf)
#### Boot Disk
@@ -2349,7 +2376,7 @@ Manual.pdf" document in order to use this operating system effectively.
#### Documentation
* [NZCOM Users Manual]($doc_root$/NZCOM Users Manual.pdf)
* [NZCOM Users Manual]($doc_root$/CPM/NZCOM Users Manual.pdf)
#### Boot Disk
@@ -2374,10 +2401,10 @@ has a new suite of support tools and help system.
#### Documentation
* [CPM3 Users Guide]($doc_root$/CPM3 Users Guide.pdf)
* [CPM3 Command Summary]($doc_root$/CPM3 Command Summary.pdf)
* [CPM3 Programmers Guide]($doc_root$/CPM3 Programmers Guide.pdf)
* [CPM3 System Guide]($doc_root$/CPM3 System Guide.pdf)
* [CPM3 Users Guide]($doc_root$/CPM/CPM3 Users Guide.pdf)
* [CPM3 Command Summary]($doc_root$/CPM/CPM3 Command Summary.pdf)
* [CPM3 Programmers Guide]($doc_root$/CPM/CPM3 Programmers Guide.pdf)
* [CPM3 System Guide]($doc_root$/CPM/CPM3 System Guide.pdf)
#### Boot Disk
@@ -2469,7 +2496,7 @@ CP/M 3 and ZCPR 3.
To create (or update) a ZPM3 boot drive, you must place `ZPMLDR.SYS` on
the system track of the disk. You must also place `CPM3.SYS`,
`ZCCP.COM`, `ZINSTAL.ZPM`, and `STARTZPM.COM` on the target drive as
regular files. Do **not** place CPM3.SYS on the boot track.
regular files. Do **not** place CPM3.SYS on the boot track.
`ZPMLDR.SYS` chain loads `CPM3.SYS` which must exist as a regular file
on the disk. Subsequently, `CPM3.SYS` loads `CCP.COM`.
@@ -2526,9 +2553,9 @@ regarding the RomWBW adaptation and customizations.
#### Documentation
* [QP/M 2.7 Installation Guide and Supplements]($doc_root$/qpm27.pdf)
* [QP/M 2.7 Interface Guide]($doc_root$/qdos27.pdf)
* [QP/M 2.7 Features and Facilities]($doc_root$/qcp27.pdf)
* [QP/M 2.7 Installation Guide and Supplements]($doc_root$/CPM/qpm27.pdf)
* [QP/M 2.7 Interface Guide]($doc_root$/CPM/qdos27.pdf)
* [QP/M 2.7 Features and Facilities]($doc_root$/CPM/qcp27.pdf)
#### Boot Disk
@@ -2548,9 +2575,9 @@ the QP/M components. To do this, you can perform the following steps:
1. Use RomWBW `SYSCOPY` to place the stock RomWBW CP/M OS image
onto the system tracks of the QP/M boot disk:
`SYSCOPY A:=x:CPM.SYS`
where x is the drive letter of your ROM Disk.
1. Run `QINSTALL` to overlay the QP/M OS components on your
@@ -2601,7 +2628,19 @@ selecting slice 0 of the corresponding hard disk unit at
the RomWBW Boot Loader prompt. Do not attempt to use
CP/M slices on the same disk.
Refer to the ReadMe.txt file in Source/pSys for more details.
Due to limitations in the p-System configuration mechanism, it does
not recognize the arrow keys of an ANSI Terminal. To work around
this, the following control keys have been defined:
| Function | Key |
|------------|------------|
| Up | ctrl+E |
| Down | ctrl+X |
| Left | ctrl+S |
| Right | ctrl+D |
Refer to [Source/pSys/ReadMe.txt]($file_root$/Source/pSys/ReadMe.txt)
for more details about the p-System adaptation.
#### Documentation
@@ -2674,34 +2713,95 @@ containing the Fuzix image at the RomWBW Loader prompt.
To create a Fuzix disk image:
* Locate and download the Fuzix disk image for your system from
<https://www.fuzix.org/>.
<https://www.fuzix.org/>. For each platform, you will typically
find two image files. An emulator image (`emu-xxx.img`) and a
disk image (`disk.img`). You want the disk image file.
* Remove the 1KB header from the image file. The Fuzix disk images
are built to run under an emulator that requires a 1KB prefix. You
must remove this prefix before writing the image to your physical
disk media. Unix dd is the easiest way to do this:
`dd bs=1024 skip=1 if=sc126-0.3.ide of=sc126-0.3.trimmed`
* Write the trimmed image to your disk media. This can also be
done with dd or with Win32DiskImager under Windows.
* Write the disk image file to your physical media (CF Card, SD Card,
etc.) starting at the beginning of the media (first sector). Do
not combine the Fuzix image with the RomWBW disk images -- they are
entirely separate.
To boot into Fuzix:
* Insert your Fuzix disk media.
* Power-up or reset your system. RomWBW should load normally
and bring you to the RomWBW Boot Loader prompt.
* Change your baud rate to 38,400. This can be done from the
RomWBW Boot Loader prompt with the following command:
* Depending on the platform, Fuzix may be built to run at a different
baud rate that the default RomWBW baud rate. If so, it is best to
change your RomWBW baud rate prior to initiating the Fuzix startup.
You can do this at the loader prompt with a command like this:
`I 0 38400`
You will also need to change your terminal baud rate at this time.
Replace 38400 with the desired baud rate for Fuzix. You will be
prompted to change your terminal's baud rate at this time.
* At the RomWBW Boot Loader prompt, enter the disk unit number of
the Fuzix media. Fuzix should load and you will see device
discovery/information messages that vary depending on your
platform. This is a typical example:
```
RCBus [RCZ180_nat_wbw] Boot Loader
FP Switches = 0x00
Boot [H=Help]: 2
Booting Disk Unit 2, Slice 0, Sector 0x00000000...
Volume "Fuzix 126 Loader" [0xF200-0xF400, entry @ 0xF200]...
FUZIX version 0.4
Copyright (c) 1988-2002 by H.F.Bower, D.Braun, S.Nitschke, H.Peraza
Copyright (c) 1997-2001 by Arcady Schekochikhin, Adriano C. R. da Cunha
Copyright (c) 2013-2015 Will Sowerbutts <wi...@sowerbutts.com>
Copyright (c) 2014-2023 Alan Cox <al...@etchedpixels.co.uk>
Devboot
512kB total RAM, 448kB available to processes (15 processes max)
Enabling interrupts ... ok.
0000 : CF Card - OK
0001 : - absent
hda: hda1 hda2 (swap)
bootdev:
```
* At the `bootdev:` prompt, enter `hda1`. Fuzix should load and
you will be prompted for a date/time.
you will be prompted for a date/time. Here is a typical example:
* At the `login:` prompt, enter `root`. No password is required.
```
bootdev: hda1
Mounting root fs (root_dev=1, ro): OK
Starting /init
init version 0.9.1
Checking root file system.
Current date is Fri 2023-08-18
Enter new date:
Current time is 13:30:24
Enter new time:
^ ^
n n Fuzix 0.4
>@<
Welcome to Fuzix
m m
login:
```
* At the `login:` prompt, enter `root`. No password is required. You
should then get a Fuzix `#` command prompt.
```
login: root
Welcome to FUZIX.
#
```
You may now use Fuzix as desired. The general operation and use of
Fuzix is outside of the scope of this document.
# Custom Applications
@@ -2779,7 +2879,7 @@ This application understands both FAT filesystems as well as CP/M filesystems.
characters are **not permitted** in a CP/M filename:
`< > . , ; : = ? * [ ] _ % | ( ) / \`
The FAT application does not auto-rename files when it encounters
invalid filenames. It will just issue an error and quit.
Additionally, the error message is not very clear about the problem.
@@ -2854,8 +2954,8 @@ computer and access it using `FAT` based on its RomWBW unit number.
**WARNING**: Microsoft Windows will sometimes suggest reformatting
partitions that it does not recognize. If you are prompted to format a
partition of your SD/CF/USB Media when inserting the card into a Windows
computer, you probably want to select Cancel.
computer, you probably want to select Cancel.
## FAT Application Usage
Complete instructions for the `FAT` application are found in $doc_apps$.
@@ -3129,6 +3229,11 @@ ethernet interface module. At this time, the following are supported:
(e.g., Adafruit SPI Non-Volatile FRAM Breakout)
* Duodyne Disk I/O w/ Wiz850IO and (optionally) SPI NVRAM
(e.g., 25LC256)
* Generic Serial Interface
**NOTE:** The Generic Serial Interface is supported by RomWBW, but is
not documented here. You must refer to the CP/NET documentation
referenced below.
The client software interacts directly with this hardware. In a future
version of RomWBW, I hope to add a generic networking API that will
@@ -3161,6 +3266,8 @@ library files are found in user area 4.
| 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 |
| CPN12SER.LBR | CP/NET 1.2 | CP/M 2.2 | RomWBW Serial Port |
| CPN3SER.LBR | CP/NET 3 | CP/M 3 | RomWBW Serial Port |
First, you need to merge the files from the correct library file
into user area 0. This is done by extracting the files using the
@@ -3188,6 +3295,8 @@ NULU 1.52 (07/12/87)
Copyright (C) 1984, 1985 & 1987 by Martin Murray
Bug fixes in version 1.52 by Mick Waters
TYPE -H FOR HELP
Library A4:CPN12MT.LBR open.
(Buffer size: 259 sectors)
Active entries: 27, Deleted: 0, Free: 5, Total: 32.
@@ -3322,7 +3431,7 @@ The document is called "dri-cpnet.pdf".
Under CP/M 2.2, you will start the networking client using the command
`CPNETLDR`. Under CP/M 3, you use the command `NDOS3`. If that works,
you can map network drives as local drives using the `NETWORK` command.
The `CPNETSTS` command is useful for displaying the current status.
The `CPNETSTS` command is useful for displaying the current status.
Here is a sample session from CP/M 2.2:
```
@@ -4113,6 +4222,8 @@ please let me know if I missed you!
* 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
@@ -5610,6 +5721,16 @@ S- MD: TYPE=RAM
##### Notes:
- Z180 SBC SW2 (IOBYTE) Dip Switches:
| Bit | Setting | Function |
|-----|---------|-------------------------------------|
| 0 | Off | Use Z180 ASCI Channel A for console |
| | On | Use Propeller Console |
| | | |
| 1 | Off | Boot to RomWBW Boot Loader |
| | On | Boot to S100 Monitor |
`\clearpage`{=latex}
### Duodyne Z80 System
@@ -5740,6 +5861,36 @@ S- MD: TYPE=RAM
`\clearpage`{=latex}
### NABU w/ RomWBW Option Board
#### ROM Image File: NABU_std.rom
| | |
|-------------------|---------------|
| Default CPU Speed | 3.580 MHz |
| Interrupts | Mode 1 |
| System Timer | None |
| Serial Default | 115200 Baud |
| Memory Manager | Z2 |
| ROM Size | 512 KB |
| RAM Size | 512 KB |
##### Supported Hardware (see [Appendix B - Device Summary]):
- UART: MODE=NABU, IO=72
- TMS: MODE=NABU, IO=160
- MD: TYPE=RAM
- MD: TYPE=ROM
- PPIDE: IO=96, MASTER
- PPIDE: IO=96, SLAVE
- AY38910: MODE=NABU, IO=65, CLOCK=1789772 HZ
##### Notes:
- TMS video assumes F18A replacement for TMS9918
`\clearpage`{=latex}
## Appendix B - Device Summary
The table below briefly describes each of the possible devices that

View File

@@ -27,7 +27,7 @@ Bank ID Module Start Size
0x04 - N ROM Disk Data
Typical ROM Bank Layout
Typical ROM Bank Layout (512K)
Bank ID Usage
------- ------
@@ -35,22 +35,43 @@ Bank ID Usage
0x01 ROM Loader, Monitor, ROM OSes
0x02 ROM Applications
0x03 Reserved
0x04-0x0F ROM Disk Banks
0x04-0x0F ROM Disk Banks (12)
Typical RAM Bank Layout
Standard RAM Bank Layout (512K)
Bank ID Usage
------- ------
0x80 RomWBW HBIOS
0x81-0x8B RAM Disk Data
0x81-0x88 RAM Disk Data (3)
0x89-0x8B App Banks (8)
0x8C CP/M 3 Buffers
0x8D CP/M 3 OS
0x8E User TPA
0x8F Common
Large RAM Bank Layout (2048K)
Typical ROMless Bank Layout
Bank ID Usage
------- ------
0x80 RomWBW HBIOS
0x81-0xB0 RAM Disk Data (30)
0xB1-0xBB App Banks (11)
0xBC CP/M 3 Buffers
0x8D CP/M 3 OS
0x8E User TPA
0x8F Common
Tiny RAM Bank Layout (128K)
Bank ID Usage
------- ------
0x80 RomWBW HBIOS
0x81 CP/M 3 OS
0x82 User TPA
0x83 Common
ROMless Standard Bank Layout (512K)
Bank ID Usage
------- ------
@@ -58,7 +79,7 @@ Bank ID Usage
0x81 Loader, DbgMon, CP/M 2.2, ZSDOS
0x82 ROM Apps
0x83 More ROM Apps
0x84-0x8B RAM Disk Data
0x84-0x8B RAM Disk Data (8)
0x8C CP/M 3 Buffers
0x8D CP/M 3 OS
0x8E User TPA

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