mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
62 Commits
v3.5.0-dev
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
78a765147e | ||
|
|
1cb5f0b3b4 | ||
|
|
a34afaa11e | ||
|
|
e8d79bdf0a | ||
|
|
e5232c6696 | ||
|
|
70fcb2cbee | ||
|
|
dab2408166 | ||
|
|
d02c734478 | ||
|
|
c4cc800040 | ||
|
|
f82b4c9bc7 | ||
|
|
1db620d2d7 | ||
|
|
3b2c5b57ad | ||
|
|
69ab236d53 | ||
|
|
e7ed6ed27c | ||
|
|
5ea5003d01 | ||
|
|
7c41ef6fc9 | ||
|
|
7497e233d2 | ||
|
|
157af16d32 | ||
|
|
e0414bca05 | ||
|
|
2a6a3f36c2 | ||
|
|
337374c9e9 | ||
|
|
4946b313e1 | ||
|
|
a6505fbbb1 | ||
|
|
dd93a178fa | ||
|
|
a4fdebea2b | ||
|
|
3f63c92fd5 | ||
|
|
c8794d2b9c | ||
|
|
bf2d0b8196 | ||
|
|
e41cd6d8d2 | ||
|
|
47120dcf8c | ||
|
|
67d23dc540 | ||
|
|
99d5c50556 | ||
|
|
438df9a80b | ||
|
|
8c4a3d2b3d | ||
|
|
585c892a54 | ||
|
|
49025dca44 | ||
|
|
2d8c37307d | ||
|
|
d294fb6d09 | ||
|
|
1649b6093b | ||
|
|
d50593a70e | ||
|
|
874cc450ba | ||
|
|
918ed66967 | ||
|
|
7fe0312359 | ||
|
|
842a79ae5d | ||
|
|
34d25cb906 | ||
|
|
b8af62d7de | ||
|
|
b28c3b7978 | ||
|
|
bf9a8400de | ||
|
|
c3c541d150 | ||
|
|
cecd13fba9 | ||
|
|
7ce7bda43e | ||
|
|
bb5161dcb0 | ||
|
|
285853e65d | ||
|
|
ab1e9ccab8 | ||
|
|
33cbdd2040 | ||
|
|
792e76b069 | ||
|
|
d572a7ca32 | ||
|
|
c4f78bb3ae | ||
|
|
77ba29c73f | ||
|
|
1a24fcb61b | ||
|
|
9dbceb4a15 | ||
|
|
d8b7f88dad |
@@ -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
67
Doc/CPM/ReadMe.txt
Normal 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.
|
||||
@@ -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
|
||||
-----------
|
||||
|
||||
@@ -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.
|
||||
|
||||
BIN
Doc/Language/Cowgol Language.pdf
Normal file
BIN
Doc/Language/Cowgol Language.pdf
Normal file
Binary file not shown.
62
Doc/Language/ReadMe.txt
Normal file
62
Doc/Language/ReadMe.txt
Normal 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.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
107
Doc/ReadMe.txt
107
Doc/ReadMe.txt
@@ -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.
16
ReadMe.md
16
ReadMe.md
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
|
||||
@@ -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.
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
12
Source/Apps/Test/sound/Build.cmd
Normal file
12
Source/Apps/Test/sound/Build.cmd
Normal 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
|
||||
6
Source/Apps/Test/sound/Clean.cmd
Normal file
6
Source/Apps/Test/sound/Clean.cmd
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.lst del *.lst
|
||||
if exist *.bin del *.bin
|
||||
7
Source/Apps/Test/sound/Makefile
Normal file
7
Source/Apps/Test/sound/Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
OBJECTS = ay-test.com sound.com
|
||||
DEST = ../../../../Binary/Apps/Test
|
||||
TOOLS =../../../../Tools
|
||||
|
||||
USETASM=1
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
@@ -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
|
||||
177
Source/Apps/Test/sound/printing.inc
Normal file
177
Source/Apps/Test/sound/printing.inc
Normal 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
|
||||
460
Source/Apps/Test/sound/sound.asm
Normal file
460
Source/Apps/Test/sound/sound.asm
Normal 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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 $@
|
||||
|
||||
BIN
Source/CPNET/serial/cpnet12/ccp.spr
Normal file
BIN
Source/CPNET/serial/cpnet12/ccp.spr
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/cpm2net.hlp
Normal file
BIN
Source/CPNET/serial/cpnet12/cpm2net.hlp
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/cpnet12.hlp
Normal file
BIN
Source/CPNET/serial/cpnet12/cpnet12.hlp
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/cpnetldr.com
Normal file
BIN
Source/CPNET/serial/cpnet12/cpnetldr.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/cpnetsts.com
Normal file
BIN
Source/CPNET/serial/cpnet12/cpnetsts.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/dskreset.com
Normal file
BIN
Source/CPNET/serial/cpnet12/dskreset.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/endlist.com
Normal file
BIN
Source/CPNET/serial/cpnet12/endlist.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/local.com
Normal file
BIN
Source/CPNET/serial/cpnet12/local.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/login.com
Normal file
BIN
Source/CPNET/serial/cpnet12/login.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/logoff.com
Normal file
BIN
Source/CPNET/serial/cpnet12/logoff.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/mail.com
Normal file
BIN
Source/CPNET/serial/cpnet12/mail.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/ndos.spr
Normal file
BIN
Source/CPNET/serial/cpnet12/ndos.spr
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/netdown.com
Normal file
BIN
Source/CPNET/serial/cpnet12/netdown.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/netstat.com
Normal file
BIN
Source/CPNET/serial/cpnet12/netstat.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/network.com
Normal file
BIN
Source/CPNET/serial/cpnet12/network.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/pipnet.com
Normal file
BIN
Source/CPNET/serial/cpnet12/pipnet.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/rdate.com
Normal file
BIN
Source/CPNET/serial/cpnet12/rdate.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/snios.spr
Normal file
BIN
Source/CPNET/serial/cpnet12/snios.spr
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/srvstat.com
Normal file
BIN
Source/CPNET/serial/cpnet12/srvstat.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/tr.com
Normal file
BIN
Source/CPNET/serial/cpnet12/tr.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet12/xsubnet.com
Normal file
BIN
Source/CPNET/serial/cpnet12/xsubnet.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/cpm3net.hlp
Normal file
BIN
Source/CPNET/serial/cpnet3/cpm3net.hlp
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/cpnet3.hlp
Normal file
BIN
Source/CPNET/serial/cpnet3/cpnet3.hlp
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/cpnetsts.com
Normal file
BIN
Source/CPNET/serial/cpnet3/cpnetsts.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/dskreset.com
Normal file
BIN
Source/CPNET/serial/cpnet3/dskreset.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/endlist.com
Normal file
BIN
Source/CPNET/serial/cpnet3/endlist.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/local.com
Normal file
BIN
Source/CPNET/serial/cpnet3/local.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/login.com
Normal file
BIN
Source/CPNET/serial/cpnet3/login.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/logoff.com
Normal file
BIN
Source/CPNET/serial/cpnet3/logoff.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/mail.com
Normal file
BIN
Source/CPNET/serial/cpnet3/mail.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/ndos3.com
Normal file
BIN
Source/CPNET/serial/cpnet3/ndos3.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/netdown.com
Normal file
BIN
Source/CPNET/serial/cpnet3/netdown.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/netstat.com
Normal file
BIN
Source/CPNET/serial/cpnet3/netstat.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/network.com
Normal file
BIN
Source/CPNET/serial/cpnet3/network.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/ntpdate.com
Normal file
BIN
Source/CPNET/serial/cpnet3/ntpdate.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/rdate.com
Normal file
BIN
Source/CPNET/serial/cpnet3/rdate.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/rsxls.com
Normal file
BIN
Source/CPNET/serial/cpnet3/rsxls.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/rsxrm.com
Normal file
BIN
Source/CPNET/serial/cpnet3/rsxrm.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/srvstat.com
Normal file
BIN
Source/CPNET/serial/cpnet3/srvstat.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/tr.com
Normal file
BIN
Source/CPNET/serial/cpnet3/tr.com
Normal file
Binary file not shown.
BIN
Source/CPNET/serial/cpnet3/xsubnet.com
Normal file
BIN
Source/CPNET/serial/cpnet3/xsubnet.com
Normal file
Binary file not shown.
@@ -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
|
||||
|
||||
@@ -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}$}$
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
@@ -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 BASIC | Dimitri Theuling's Tiny BASIC implementation |
|
||||
| Play | A simple video game (requires ANSI terminal emulation) |
|
||||
| Network 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
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user