mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
72 Commits
v3.4.0-dev
...
v3.5.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d50593a70e | ||
|
|
874cc450ba | ||
|
|
918ed66967 | ||
|
|
7fe0312359 | ||
|
|
842a79ae5d | ||
|
|
34d25cb906 | ||
|
|
b8af62d7de | ||
|
|
b28c3b7978 | ||
|
|
bf9a8400de | ||
|
|
c3c541d150 | ||
|
|
cecd13fba9 | ||
|
|
7ce7bda43e | ||
|
|
bb5161dcb0 | ||
|
|
285853e65d | ||
|
|
ab1e9ccab8 | ||
|
|
33cbdd2040 | ||
|
|
792e76b069 | ||
|
|
d572a7ca32 | ||
|
|
c4f78bb3ae | ||
|
|
77ba29c73f | ||
|
|
1a24fcb61b | ||
|
|
9dbceb4a15 | ||
|
|
c2721d1572 | ||
|
|
b7a26bb274 | ||
|
|
6ecf8f9920 | ||
|
|
c1d7a41c82 | ||
|
|
c622e43c14 | ||
|
|
119e2d5421 | ||
|
|
b574768e2b | ||
|
|
2aa3bc2018 | ||
|
|
627e012f3f | ||
|
|
4d39bf93ba | ||
|
|
d2f7830b9e | ||
|
|
30db4c7fe9 | ||
|
|
b020fc3901 | ||
|
|
3f102e0151 | ||
|
|
e18014a8a7 | ||
|
|
074f2cfdb2 | ||
|
|
91f5b36fbc | ||
|
|
9ad7798713 | ||
|
|
807999928e | ||
|
|
0b1bbf3d2b | ||
|
|
d93e639e4b | ||
|
|
b633c309f4 | ||
|
|
a00cf821c7 | ||
|
|
d13ea96f35 | ||
|
|
8e4bb575f1 | ||
|
|
ee8cdfa4b8 | ||
|
|
6f7d1447ea | ||
|
|
3e6120e0fa | ||
|
|
61565bffd7 | ||
|
|
0bac6f32ea | ||
|
|
462545bfe7 | ||
|
|
cc4ad0d4b9 | ||
|
|
458b04404e | ||
|
|
4143cfa4cf | ||
|
|
438e59a05e | ||
|
|
7385d07b9a | ||
|
|
5bea1f400e | ||
|
|
1a9701e51d | ||
|
|
23e0b82112 | ||
|
|
b4b5ef19fc | ||
|
|
4dd46c3df6 | ||
|
|
17e3a95768 | ||
|
|
3529cdaa2f | ||
|
|
556b7074ae | ||
|
|
952489eac4 | ||
|
|
8f326fb081 | ||
|
|
2925ab3d42 | ||
|
|
cdb9f9b40a | ||
|
|
def84eded9 | ||
|
|
d8b7f88dad |
2
.github/pull_request_template.md
vendored
2
.github/pull_request_template.md
vendored
@@ -1,7 +1,7 @@
|
||||
<!--
|
||||
BEFORE YOU CREATE A PULL REQUEST:
|
||||
|
||||
- Please base all pull requests against the dev branch
|
||||
- Please base all pull requests against the master branch
|
||||
- Include a clear description of your change
|
||||
- Reference related Issue(s) (e.g., "Resolves Issue #123")
|
||||
|
||||
|
||||
8
.github/workflows/commit.yml
vendored
8
.github/workflows/commit.yml
vendored
@@ -14,7 +14,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -36,7 +36,7 @@ jobs:
|
||||
find -type f -exec md5sum '{}' \;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-Linux
|
||||
path: .
|
||||
@@ -46,7 +46,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
@@ -68,7 +68,7 @@ jobs:
|
||||
find . -type f -exec md5 -r -- '{}' +;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
uses: actions/upload-artifact@v4.3.0
|
||||
with:
|
||||
name: RomWBW-${{env.COMMIT_REF}}-MacOS
|
||||
path: .
|
||||
|
||||
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
@@ -12,7 +12,7 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
uses: actions/checkout@v4.1.1
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
|
||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -20,7 +20,7 @@
|
||||
|
||||
Binary/**/*.mym
|
||||
Binary/**/*.pt3
|
||||
!Binary/cpnos-wbw.sys
|
||||
!Binary/CPNET/NetBoot/cpnos-wbw.sys
|
||||
|
||||
Source/**/eeprom
|
||||
Source/Apps/Assign.com
|
||||
@@ -85,6 +85,7 @@ Tools/unix/zx/zx
|
||||
!Source/BPBIOS/*.lib
|
||||
!Source/BPBIOS/Z34RCP11/cledinst.com
|
||||
!Source/BPBIOS/Z34RCP11/cledsave.com
|
||||
!Source/CPNET/**
|
||||
!Source/Fonts/*
|
||||
!Source/Images/**
|
||||
!Source/RomDsk/**
|
||||
|
||||
4
Binary/CPNET/Clean.cmd
Normal file
4
Binary/CPNET/Clean.cmd
Normal file
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.lbr del *.lbr
|
||||
7
Binary/CPNET/Makefile
Normal file
7
Binary/CPNET/Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
TOOLS = ../../Tools
|
||||
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.lbr)
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
clean::
|
||||
@rm -f *.lbr
|
||||
38
Binary/CPNET/ReadMe.txt
Normal file
38
Binary/CPNET/ReadMe.txt
Normal file
@@ -0,0 +1,38 @@
|
||||
***********************************************************************
|
||||
*** ***
|
||||
*** R o m W B W ***
|
||||
*** ***
|
||||
*** Z80/Z180 System Software ***
|
||||
*** ***
|
||||
***********************************************************************
|
||||
|
||||
This directory contains the CP/NET client packages. Please refer to
|
||||
the RomWBW User Guide for instructions on installing these packages.
|
||||
Either the MT011 RCBus module or the Duodyne Disk I/O board is required.
|
||||
|
||||
All of these files come from Douglas Miller. Please refer to
|
||||
https://github.com/durgadas311/cpnet-z80 for more information, complete
|
||||
documentation and the latest source code. Refer to the RomWBW
|
||||
User Guide for basic installation and usage instructions under RomWBW.
|
||||
|
||||
| File | CP/NET Version | OS | Hardware |
|
||||
+--------------+----------------+----------+-----------------------+
|
||||
| CPN12MT.LBR | CP/NET 1.2 | CP/M 2.2 | RCBus w/ MT011 |
|
||||
| CPN3MT.LBR | CP/NET 3 | CP/M 3 | RCBus w/ MT011 |
|
||||
| CPN12DUO.LBR | CP/NET 1.2 | CP/M 2.2 | Duodyne w/ Disk I/O |
|
||||
| CPN3DUO.LBR | CP/NET 3 | CP/M 3 | Duodyne w/ Disk I/O |
|
||||
|
||||
In general, to use CP/NET on RomWBW, it is intended that you will
|
||||
extract the appropriate set of files into your default directory in
|
||||
user area 0. Refer to the RomWBW User Guide for more information.
|
||||
|
||||
The libraries include enhanced help files appropriate for the version
|
||||
of CP/NET. Rename the desired topic collection to HELP.HLP on the
|
||||
target system.
|
||||
|
||||
CPM2NET.HLP CP/M 2.2 basic system with CP/NET 1.2
|
||||
CPNET12.HLP CP/NET 1.2 help only
|
||||
CPM3NET.HLP CP/M 3 basic system with CP/NET 3
|
||||
CPNET3.HLP CP/NET 3 help only
|
||||
|
||||
-- WBW 7:14 AM 2/11/2024
|
||||
@@ -14,3 +14,4 @@ if exist *.eeprom del *.eeprom
|
||||
pushd Apps && call Clean || exit /b 1 & popd
|
||||
pushd CPM3 && call Clean || exit /b 1 & popd
|
||||
pushd ZPM3 && call Clean || exit /b 1 & popd
|
||||
pushd CPNET && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
TOOLS = ../Tools
|
||||
MOREDIFF := $(shell $(TOOLS)/unix/casefn.sh *.img *.rom *.com *.eeprom)
|
||||
SUBDIRS = Apps CPM3 ZPM3
|
||||
SUBDIRS = Apps CPM3 ZPM3 CPNET
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
|
||||
@@ -110,7 +110,9 @@ Refer to the ReadMe.txt in the Source/Images directory
|
||||
for details.
|
||||
|
||||
Documentation of the pre-built disk images is contained in the
|
||||
DiskList.txt file in this directory.
|
||||
"RomWBW User Guide" found in the Doc directory. The contents of
|
||||
the disk images is contained in the "RomWBW Disk Catalog", but it
|
||||
is significantly out-of-date.
|
||||
|
||||
The contents of the floppy/hard disk images are created by
|
||||
the BuildImages.cmd script in the Source directory. Additional
|
||||
|
||||
42
CONTRIBUTING.md
Normal file
42
CONTRIBUTING.md
Normal file
@@ -0,0 +1,42 @@
|
||||
# Contributing to RomWBW
|
||||
|
||||
> **WARNING**: The `dev` branch of RomWBW has been deprecated as of v3.4. All Pull Requests should now target the `master` branch.
|
||||
|
||||
Contributions of all kinds to RomWBW are welcomed and greatly appreciated.
|
||||
|
||||
- Reporting bug(s) and suggesting new feature(s)
|
||||
- Discussing the current state of the code
|
||||
- Submitting a fixes and enhancements
|
||||
|
||||
## RomWBW GitHub Repository
|
||||
|
||||
The [RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW) is the primary location for developing, supporting, and distributing RomWBW. Although input is gladly accepted from almost any channel, the GitHub Repository is preferred.
|
||||
|
||||
- Use **Issues** to report bugs, request enhancements, or ask usage questions.
|
||||
- Use **Discussions** to interact with others
|
||||
- Use **Pull Requests** to submit content (code, documentation, etc.)
|
||||
|
||||
## Submitting Content
|
||||
|
||||
This RomWBW Project uses the standard [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow). Submission of content changes (including code) are ideally done via Pull Requests.
|
||||
|
||||
- Submitters are advised to contact [Wayne Warthen](mailto:wwarthen@gmail.com) or start a GitHub Discussion prior to starting any significant work. This is simply to ensure that submissions are consistent
|
||||
with the overall goals and intentions of RomWBW.
|
||||
- All submissions should be based on the `master` branch. To create your submission, fork the RomWBW repository and create your branch from `master`. Make (and test) your changes in your personal fork.
|
||||
- Please update relevant documentation and the `ChangeLog` found in the `Doc` folder.
|
||||
- You are encouraged to comment your submissions to ensure your work is properly attributed.
|
||||
- When ready, submit a Pull Request to merge your forked branch into the RomWBW master branch.
|
||||
|
||||
## Coding Style
|
||||
|
||||
Due to the nature of the project, you will find a variety of coding styles. When making changes to existing code, please try to be consistent with the existing coding style. You may not like the current style, but no one likes mixed styles
|
||||
in one file/module.
|
||||
|
||||
Be careful with white space. RomWBW is primarily assembly langauge code. The use of tab stops at every 8 characters is pretty standard for assembler. If you use something else, then your code will look odd when viewed by others.
|
||||
|
||||
In most cases, the use of `<cr><lf>` line endings is preferred. This is standard for the operating systems of the era that RomWBW provides. Also note that CP/M text files should end with a ctrl-Z (0x1A). This is not magically added by the
|
||||
tools that generate the disk images.
|
||||
|
||||
## License
|
||||
|
||||
RomWBW is licensed under GPLv3. When you submit code changes, your submissions are understood to be under the same [GPLv3 License](https://www.gnu.org/licenses/gpl-3.0.html) that covers the project.
|
||||
@@ -1,3 +1,18 @@
|
||||
Version 3.5
|
||||
-----------
|
||||
- M?F: Fix for hours display in HBRTC application
|
||||
- M?F: Fix for assembly error in DS1501RTC driver
|
||||
- WBW: Add VT-100 graphics char selection to Propeller firmware
|
||||
- WBW: Allow all lines of VGA display to be used on Propeller firmware
|
||||
- WBW: Allow front panel LED/Switch bits to be inverted in config
|
||||
- WBW: Add API to expose application banks available
|
||||
- WBW: Added console takeover at boot loader prompt
|
||||
- L?N: Fixed Propeller font vertical line character to align properly
|
||||
- L?S: EF9345 video display controller driver
|
||||
- WBW: Added Cowgol disk image based on the work of Ladislau Szilagyi
|
||||
- WBW: Added support for CP/NET on Duodyne Disk I/O
|
||||
- DDW: Added support for Duodyne Media board
|
||||
|
||||
Version 3.4
|
||||
-----------
|
||||
NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integrity
|
||||
@@ -33,6 +48,7 @@ NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integ
|
||||
- M?R: User Guide enhancements and corrections
|
||||
- D?H: Added support for specification of secondary console
|
||||
- WBW: Added platform for Monsputer
|
||||
- WBW: Added FAT.COM to standard ROM Disk (removed RMAC.COM & LINK.COM)
|
||||
|
||||
Version 3.3
|
||||
-----------
|
||||
|
||||
BIN
Doc/Cowgol Language.pdf
Normal file
BIN
Doc/Cowgol Language.pdf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/The Cowgol language.pdf
Normal file
BIN
Doc/The Cowgol language.pdf
Normal file
Binary file not shown.
36
ReadMe.md
36
ReadMe.md
@@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.4 \
|
||||
Version 3.5 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
22 Dec 2023
|
||||
28 Feb 2024
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -197,6 +197,38 @@ let me know if I missed you!
|
||||
Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler,
|
||||
Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
- Martin R has provided substantial help reviewing and improving the
|
||||
User Guide.
|
||||
|
||||
- Jacques Pelletier has contributed the DS1501 RTC driver code.
|
||||
|
||||
- Jose Collado has contributed enhancements to the TMS driver including
|
||||
compatibility with standard TMS register configuration.
|
||||
|
||||
- Kevin Boone has contributed a generic HBIOS date/time utility (WDATE).
|
||||
|
||||
- Matt Carroll has contributed a fix to XM.COM that corrects the port
|
||||
specification when doing a send.
|
||||
|
||||
- Dean Jenkins enhanced the build process to accommodate the Raspberry
|
||||
Pi 4.
|
||||
|
||||
- Tom Plano has contributed a new utility (HTALK) to allow talking
|
||||
directly to HBIOS COM ports.
|
||||
|
||||
- Lars Nelson has contributed several generic utilities such as a
|
||||
universal (OS agnostic) UNARC application.
|
||||
|
||||
- Dylan Hall added support for specifying a secondary console.
|
||||
|
||||
- Bill Shen has contributed boot loaders for several of his systems.
|
||||
|
||||
- Laszlo Szolnoki has contributed an EF9345 video display controller
|
||||
driver.
|
||||
|
||||
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
|
||||
that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
35
ReadMe.txt
35
ReadMe.txt
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
22 Dec 2023
|
||||
28 Feb 2024
|
||||
|
||||
|
||||
|
||||
@@ -197,6 +197,39 @@ let me know if I missed you!
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
- Martin R has provided substantial help reviewing and improving the
|
||||
User Guide.
|
||||
|
||||
- Jacques Pelletier has contributed the DS1501 RTC driver code.
|
||||
|
||||
- Jose Collado has contributed enhancements to the TMS driver
|
||||
including compatibility with standard TMS register configuration.
|
||||
|
||||
- Kevin Boone has contributed a generic HBIOS date/time utility
|
||||
(WDATE).
|
||||
|
||||
- Matt Carroll has contributed a fix to XM.COM that corrects the port
|
||||
specification when doing a send.
|
||||
|
||||
- Dean Jenkins enhanced the build process to accommodate the Raspberry
|
||||
Pi 4.
|
||||
|
||||
- Tom Plano has contributed a new utility (HTALK) to allow talking
|
||||
directly to HBIOS COM ports.
|
||||
|
||||
- Lars Nelson has contributed several generic utilities such as a
|
||||
universal (OS agnostic) UNARC application.
|
||||
|
||||
- Dylan Hall added support for specifying a secondary console.
|
||||
|
||||
- Bill Shen has contributed boot loaders for several of his systems.
|
||||
|
||||
- Laszlo Szolnoki has contributed an EF9345 video display controller
|
||||
driver.
|
||||
|
||||
- Ladislau Szilagyi has contributed an enhanced version of CP/M Cowgol
|
||||
that leverages RomWBW memory banking.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
|
||||
|
||||
125
Source/Apps/FAT/ReadMe.md
Normal file
125
Source/Apps/FAT/ReadMe.md
Normal file
@@ -0,0 +1,125 @@
|
||||
# RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
|
||||
|
||||
Author: Wayne Warthen \
|
||||
Updated: 6-Jan-2024
|
||||
|
||||
This application allows copying files between CP/M filesystems and FAT
|
||||
filesystems (DOS, Windows, Mac, Linux, etc.). The application runs on
|
||||
RomWBW hosted CP/M (and compatible) operating systems. The application
|
||||
also has limited file management capabilities on FAT filesystems
|
||||
including directory listing, renaming, deleting, and sub-directory
|
||||
creation.
|
||||
|
||||
### Usage:
|
||||
|
||||
```
|
||||
FAT DIR <path>
|
||||
FAT COPY <src> <dst>
|
||||
FAT REN <from> <to>
|
||||
FAT DEL <path>[<file>|<dir>]
|
||||
FAT MD <path>
|
||||
FAT FORMAT <drv>
|
||||
```
|
||||
|
||||
CP/M filespec: \<d\>:FILENAME.EXT (\<d\> is CP/M drive letter A-P) \
|
||||
FAT filespec: \<u\>:/DIR/FILENAME.EXT (\<u\> is disk unit #)
|
||||
|
||||
### Notes:
|
||||
|
||||
- Partitioned or non-partitioned media is handled automatically.
|
||||
A floppy drive is a good example of a non-partitioned FAT
|
||||
filesystem and will be recognized. Larger media will typically
|
||||
have a partition table which will be recognized by the
|
||||
application to find the FAT filesystem.
|
||||
|
||||
- Although RomWBW-style CP/M media does not know anything about
|
||||
partition tables, it is entirely possible to have media that
|
||||
has both CP/M and FAT file systems on it. This is accomplished
|
||||
by creating a FAT filesystem on the media that starts on a track
|
||||
beyond the last track used by CP/M. Each CP/M slice can occupy
|
||||
up to 8MB. So, make sure to start your FAT partition beyond
|
||||
(slice count) * 9MB.
|
||||
|
||||
- The application infers whether you are attempting to reference
|
||||
a FAT or CP/M filesystem via the drive specifier (char before ':').
|
||||
A numeric drive character specifies the HBIOS disk unit number
|
||||
for FAT access. An alpha (A-P) character indicates a CP/M
|
||||
file system access targeting the specified drive letter. If there
|
||||
is no drive character specified, the current CP/M filesystem and
|
||||
current CP/M drive is assumed. For example:
|
||||
|
||||
`2:README.TXT` refers to FAT file README.TXT on disk unit #2 \
|
||||
`C:README.TXT` refers to CP/M file README.TXT on CP/M drive C: \
|
||||
`README.TXT` refers to CP/M file README.TXT on current CP/M drive
|
||||
|
||||
- FAT files with SYS, HIDDEN, or R/O attributes are not given
|
||||
any special treatment. Such files are found and processed
|
||||
like any other file. However, any attempt to write to a
|
||||
read-only file will fail and the application will abort.
|
||||
|
||||
- It is not currently possible to reference CP/M user areas other
|
||||
than the current user. To copy files to alternate user areas,
|
||||
you must switch to the desired user number first or use an
|
||||
additional step to copy the file to the desired user area.
|
||||
|
||||
- Accessing FAT filesystems on a floppy requires the use of
|
||||
RomWBW HBIOS v2.9.1-pre.13 or greater.
|
||||
|
||||
- Only the first 8 RomWBW disk units (0-7) can be referenced.
|
||||
|
||||
- Files written are not verified.
|
||||
|
||||
- Wildcard matching in FAT filesystems is a bit unusual as
|
||||
implemented by FatFs. See FatFs documentation.
|
||||
|
||||
### License:
|
||||
|
||||
GNU GPLv3 (see file LICENSE.txt)
|
||||
|
||||
### Build Notes:
|
||||
|
||||
- Source is maintained on GitHub at <https://github.com/wwarthen/FAT>.
|
||||
|
||||
- Application is based on FatFs. FatFs source is included. See
|
||||
<http://elm-chan.org/fsw/ff/>.
|
||||
|
||||
- SDCC compiler v4.3 or greater is required to build. New calling
|
||||
conventions introduced in v4.3 are assumed.
|
||||
|
||||
- See Build.cmd for sample build script under Windows. References
|
||||
to SDCC must be updated for your environment.
|
||||
|
||||
- Note that ff.c (core FatFs code) generates quite a few compiler
|
||||
warnings (all appear to be benign).
|
||||
|
||||
### To Do:
|
||||
|
||||
- Allow ^C to abort any operation in progress.
|
||||
|
||||
- Allow referencing more than the first 8 RomWBW disk units.
|
||||
|
||||
- Handle wildcards in destination, e.g.:
|
||||
|
||||
`FAT REN 2:/*.TXT 2:/*.BAK`
|
||||
|
||||
- Do something intelligent with R/O and SYS file attributes
|
||||
|
||||
- Support UNA
|
||||
|
||||
### History:
|
||||
|
||||
| Date | Version | Notes |
|
||||
|------------:|-------- |-------------------------------------------------------------|
|
||||
| 2-May-2019 | v0.9 | (beta) initial release |
|
||||
| 7-May-2019 | v0.9.1 | (beta) added REN and DEL |
|
||||
| 8-May-2019 | v0.9.2 | (beta) handle file collisions w/ user prompt |
|
||||
| 8-Oct-2019 | v0.9.3 | (beta) fixed incorrect filename buffer size (MAX_FN) |
|
||||
| 10-Oct-2019 | v0.9.4 | (beta) upgraded to FatFs R0.13c |
|
||||
| 10-Oct-2019 | v0.9.5 | (beta) added MD (make directory) |
|
||||
| 10-Oct-2019 | v0.9.6 | (beta) added FORMAT |
|
||||
| 11-Oct-2019 | v0.9.7 | (beta) fix FORMAT to use existing partition table entries |
|
||||
| | | add attributes to directory listing |
|
||||
| 12-Apr-2021 | v0.9.8 | (beta) support CP/NET drives |
|
||||
| 12-Oct-2023 | v0.9.9 | (beta) handle updated HBIOS Disk Device call |
|
||||
| 6-Jan-2024 | v1.0.0 | updated to latest FsFat (v0.15) |
|
||||
| | | updated to latest SDCC (v4.3) |
|
||||
@@ -1,105 +0,0 @@
|
||||
RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
|
||||
|
||||
Author: Wayne Warthen
|
||||
Updated: 12-Oct-2023
|
||||
|
||||
Application to manipulate and exchange files with a FAT (DOS)
|
||||
filesystem. Runs on any HBIOS hosted CP/M implementation.
|
||||
|
||||
USAGE:
|
||||
FAT DIR <path>
|
||||
FAT COPY <src> <dst>
|
||||
FAT REN <from> <to>
|
||||
FAT DEL <path>[<file>|<dir>]
|
||||
FAT MD <path>
|
||||
FAT FORMAT <drv>
|
||||
|
||||
CP/M filespec: <d>:FILENAME.EXT (<d> is CP/M drive letter A-P)
|
||||
FAT filespec: <u>:/DIR/FILENAME.EXT (<u> is disk unit #)
|
||||
|
||||
LICENSE:
|
||||
GNU GPLv3 (see file LICENSE.txt)
|
||||
|
||||
NOTES:
|
||||
- Partitioned or non-partitioned media is handled automatically.
|
||||
A floppy drive is a good example of a non-partitioned FAT
|
||||
filesystem and will be recognized. Larger media will typically
|
||||
have a partition table which will be recognized by the
|
||||
application to find the FAT filesystem.
|
||||
|
||||
- Although RomWBW-style CP/M media does not know anything about
|
||||
partition tables, it is entirely possible to have media that
|
||||
has both CP/M and FAT file systems on it. This is accomplished
|
||||
by creating a FAT filesystem on the media that starts on a track
|
||||
beyond the last track used by CP/M. Each CP/M slice on a
|
||||
media will occupy a little over 8MB. So, make sure to start
|
||||
your FAT partition beyond (slice count) * 8MB.
|
||||
|
||||
- The application infers whether you are attempting to reference
|
||||
a FAT or CP/M filesystem via the drive specifier (char before ':').
|
||||
A numeric drive character specifies the HBIOS disk unit number
|
||||
for FAT access. An alpha (A-P) character indicates a CP/M
|
||||
file system access targeting the specified drive letter. If there
|
||||
is no drive character specified, the current CP/M filesystem and
|
||||
current CP/M drive is assumed. For example:
|
||||
|
||||
"2:README.TXT" refers to FAT file README.TXT on disk unit #2
|
||||
"C:README.TXT" refers to CP/M file README.TXT on CP/M drive C
|
||||
"README.TXT" refers to CP/M file README.TXT on current CP/M drive
|
||||
|
||||
- FAT files with SYS, HIDDEN, or R/O only attributes are not given
|
||||
any special treatment. Such files are found and processed
|
||||
like any other file. However, any attempt to write to a
|
||||
read-only file will fail and the application will abort.
|
||||
|
||||
- It is not currently possible to reference CP/M user areas other
|
||||
than the current user. To copy files to alternate user areas,
|
||||
you must switch to the desired user number first or use an
|
||||
additional step to copy the file to the desired user area.
|
||||
|
||||
- Accessing FAT filesystems on a floppy requires the use of
|
||||
RomWBW HBIOS v2.9.1-pre.13 or greater.
|
||||
|
||||
- Files written are not verified.
|
||||
|
||||
- Wildcard matching in FAT filesystems is a bit unusual as
|
||||
implemented by FatFs. See FatFs documentation.
|
||||
|
||||
BUILD NOTES:
|
||||
- Source is maintained on GitHub at https://github.com/wwarthen/FAT
|
||||
|
||||
- Application is based on FatFs. FatFs source is included.
|
||||
|
||||
- SDCC compiler is required to build (v4.0.0 known working).
|
||||
|
||||
- ZX CP/M emulator is required to build (from RomWBW distribution).
|
||||
|
||||
- See Build.cmd for sample build script under Windows. References
|
||||
to SDCC and ZX must be updated for your environment.
|
||||
|
||||
- Note that ff.c (core FatFs code) generates quite a few compiler
|
||||
warnings (all appear to be benign).
|
||||
|
||||
TO DO:
|
||||
- Allow ^C to abort any operation in progress.
|
||||
|
||||
- Handle wildcards in destination, e.g.:
|
||||
"FAT REN 2:/*.TXT 2:/*.BAK"
|
||||
|
||||
- Do something intelligent with R/O and SYS files on FAT
|
||||
|
||||
- Support UNA
|
||||
|
||||
HISTORY:
|
||||
2-May-2019: v0.9 (beta) initial release
|
||||
7-May-2019: v0.9.1 (beta) added REN and DEL
|
||||
8-May-2019: v0.9.2 (beta) handle file collisions w/ user prompt
|
||||
8-Oct-2019: v0.9.3 (beta) fixed incorrect filename buffer size (MAX_FN)
|
||||
10-Oct-2019: v0.9.4 (beta) upgraded to FatFs R0.13c
|
||||
10-Oct-2019: v0.9.5 (beta) added MD (make directory)
|
||||
10-Oct-2019: v0.9.6 (beta) added FORMAT
|
||||
11-Oct-2019: v0.9.7 (beta) fix FORMAT to use existing partition table entries
|
||||
add attributes to directory listing
|
||||
12-Apr-2021: v0.9.8 (beta) support CP/NET drives
|
||||
12-Oct-2023: v0.9.9 (beta) handle updated HBIOS Disk Device call
|
||||
|
||||
Binary file not shown.
@@ -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
|
||||
OBJECTS =
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest portscan sound
|
||||
DEST = ../../../Binary/Apps/Test
|
||||
TOOLS =../../../Tools
|
||||
|
||||
|
||||
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
|
||||
@@ -13,9 +13,9 @@
|
||||
;
|
||||
; Hardware port addresses
|
||||
;
|
||||
rsel .equ $9A ; Register seelection port address
|
||||
rdat .equ $9B ; Register data port address
|
||||
acr .equ $9C ; Aux control register port address
|
||||
rsel .equ $A4 ; Register seelection port address
|
||||
rdat .equ $A5 ; Register data port address
|
||||
acr .equ $A2 ; Aux control register port address
|
||||
;
|
||||
; CPU speed for delay scaling
|
||||
;
|
||||
|
||||
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,7 @@
|
||||
; 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
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -138,11 +139,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,83 +554,83 @@ 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, $A0, $A1, $A0, $FF, $A2 ; DUODYNE
|
||||
.DB 17, $A4, $A5, $A4, $FF, $A6, $FE ; DUODYNE
|
||||
.DW HWSTR_DUO
|
||||
;
|
||||
.DB $FF ; END OF TABLE MARKER
|
||||
@@ -642,7 +642,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 +661,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.6, 23-Feb-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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -189,9 +189,9 @@ show_spd:
|
||||
ld b,BF_SYSGET
|
||||
ld c,BF_SYSGET_CPUINFO
|
||||
rst 08
|
||||
jp nz,err_not_sup
|
||||
jp nz,err_api
|
||||
call crlf2
|
||||
ld (cpu_spd),de ; save CPU speed for now
|
||||
push de ; save CPU speed for now
|
||||
push bc ; Oscillator speed to HL
|
||||
pop hl
|
||||
ld de,str_spacer
|
||||
@@ -199,10 +199,18 @@ show_spd:
|
||||
call prtd3m ; print it
|
||||
ld de,str_oscspd
|
||||
call prtstr
|
||||
call crlf
|
||||
ld de,str_cpuspd
|
||||
call prtstr
|
||||
pop hl ; recover CPU speed
|
||||
call prtd3m ; print it
|
||||
ld de,str_mhz
|
||||
call prtstr
|
||||
;
|
||||
ld b,BF_SYSGET
|
||||
ld c,BF_SYSGET_CPUSPD
|
||||
rst 08
|
||||
jp nz,err_not_sup
|
||||
ret nz ; no CPU speed info, done
|
||||
push de ; save wait states for now
|
||||
ld a,l
|
||||
ld de,str_slow
|
||||
@@ -216,11 +224,6 @@ show_spd:
|
||||
jr z,show_spd1
|
||||
jp err_invalid
|
||||
show_spd1:
|
||||
call crlf
|
||||
call prtstr
|
||||
ld hl,(cpu_spd) ; recover CPU speed
|
||||
call prtd3m
|
||||
ld de,str_cpuspd
|
||||
call prtstr
|
||||
pop hl
|
||||
ld a,h ; memory wait states
|
||||
@@ -284,6 +287,9 @@ err_not_sup:
|
||||
err_invalid:
|
||||
ld de,str_err_invalid
|
||||
jr err_ret
|
||||
err_api:
|
||||
ld de,str_err_api
|
||||
jr err_ret
|
||||
;
|
||||
err_ret:
|
||||
call crlf2
|
||||
@@ -659,21 +665,24 @@ delay1:
|
||||
; Constants
|
||||
;=======================================================================
|
||||
;
|
||||
str_banner .db "RomWBW CPU Speed Selector v0.5, 2-Feb-2022",0
|
||||
str_banner .db "RomWBW CPU Speed Selector v0.6, 29-Dec-2023",0
|
||||
str_spacer .db " ",0
|
||||
str_oscspd .db " MHz Oscillator",0
|
||||
str_slow .db " CPU speed is HALF (",0
|
||||
str_full .db " CPU speed is FULL (",0
|
||||
str_dbl .db " CPU speed is DOUBLE (",0
|
||||
str_cpuspd .db " MHz)",0
|
||||
str_cpuspd .db " CPU speed is ",0
|
||||
str_mhz .db " MHz",0
|
||||
|
||||
str_slow .db " (Half)",0
|
||||
str_full .db " (Full)",0
|
||||
str_dbl .db " (Double)",0
|
||||
str_memws .db " Memory Wait State(s)",0
|
||||
str_iows .db " I/O Wait State(s)",0
|
||||
str_err_una .db " ERROR: UNA not supported by application",0
|
||||
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
|
||||
str_err_ver .db " ERROR: Unexpected HBIOS version",0
|
||||
str_err_parm .db " ERROR: Parameter error (CPUSPD /? for usage)",0
|
||||
str_err_not_sup .db " ERROR: Platform or configuration not supported!",0
|
||||
str_err_not_sup .db " ERROR: Platform or configuration does not support CPU speed configuration!",0
|
||||
str_err_invalid .db " ERROR: Invalid configuration!",0
|
||||
str_err_api .db " ERROR: HBIOS API error!",0
|
||||
str_usage .db " Usage: CPUSPD <cpuspd>,<memws>,<iows>\r\n"
|
||||
.db "\r\n"
|
||||
.db " <cpuspd>: \"Half\", \"Full\", or \"Double\"\r\n"
|
||||
@@ -693,7 +702,6 @@ stack .equ $ ; stack top
|
||||
;
|
||||
;
|
||||
tmpstr .fill 9,0 ; temp string (8 chars, 0 term)
|
||||
cpu_spd .dw 0 ; current cpu speed
|
||||
new_cpu_spd .db $FF ; new CPU speed
|
||||
new_ws_mem .db $FF ; new memory wait states
|
||||
new_ws_io .db $FF ; new I/O wait states
|
||||
|
||||
@@ -19,6 +19,8 @@
|
||||
; 1) Actually implement this
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
#include "../ver.inc"
|
||||
;
|
||||
;===============================================================================
|
||||
; Definitions
|
||||
;===============================================================================
|
||||
@@ -30,9 +32,6 @@ bdos .equ $0005 ; BDOS invocation vector
|
||||
;;
|
||||
;stamp .equ $40 ; loc of RomWBW CBIOS zero page stamp
|
||||
;
|
||||
rmj .equ 3 ; CBIOS version - major
|
||||
rmn .equ 0 ; CBIOS version - minor
|
||||
;
|
||||
;===============================================================================
|
||||
; Code Section
|
||||
;===============================================================================
|
||||
|
||||
@@ -58,7 +58,7 @@ HBC_CLKTBL:
|
||||
.DB 02H, 00111111B, '/'
|
||||
.DB 01H, 00011111B, '/'
|
||||
.DB 00H, 11111111B, ' '
|
||||
.DB 03H, 00011111B, ':'
|
||||
.DB 03H, 00111111B, ':'
|
||||
.DB 04H, 01111111B, ':'
|
||||
.DB 05H, 01111111B, 00H
|
||||
;
|
||||
|
||||
@@ -12,7 +12,7 @@ Operating System (DOS), and Basic I/O System (BIOS). The CCP and DOS components
|
||||
are pre-built, relocatable binaries. The BIOS (BPBIOS) is assembled into a relocatable
|
||||
binary by the build, then the build links together all three components to form the
|
||||
final loadable image (.IMG) file. The linking process is performed by the custom BPBIOS
|
||||
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also sets
|
||||
linker (BPBUILD.COM). In addition to linking the 3 components, BPBUILD also
|
||||
adjusts the ZCPR environment configuration.
|
||||
|
||||
BPBUILD is designed to be run interactively. However, it can be started with an
|
||||
@@ -24,8 +24,8 @@ running of BPBUILD.
|
||||
|
||||
The CCP can be ZCPR 3.3 (ZCPR33?.REL), ZCPR 3.4 (Z34.REL), or ZCPR 4.1 (Z41.ZRL). ZCPR 3.3
|
||||
uses static references to the ZCPR segments, so a custom version of it must be assembled.
|
||||
The ZCPR33 subdirectory provides a build process for doing this. It produces a specific
|
||||
version for each of the memory segment configurations (ZCPR33T.REL & ZCPR33N.REL).
|
||||
The ZCPR33 subdirectory provides a build process for doing this. It produces a custom
|
||||
version of ZCPR33.REL with the correct static references to the ZCPR segments.
|
||||
|
||||
The DOS can be ZSDOS 1.1 (ZSDOS.ZRL) or ZSDOS 2.03 (ZS203.ZRL). These are both pre-built
|
||||
relocatable binaries. Note that only certain version combinations of ZSDOS and ZCPR are
|
||||
|
||||
@@ -421,6 +421,12 @@ DRVTBL: LD HL,DPHTBL ; Point to DPH table
|
||||
PAGE
|
||||
ENDIF ;HARDDSK
|
||||
|
||||
IF RAMDSK ; << ****** Hardware Specific ****** >>
|
||||
INCLUDE RAMD-WW.Z80 ; << This Driver is for HBIOS >>
|
||||
|
||||
PAGE
|
||||
ENDIF ;RAMDSK
|
||||
|
||||
|
||||
; << ****** Hardware Specific ****** >>
|
||||
; << Enter Warm Boot routines in >>
|
||||
|
||||
@@ -120,14 +120,14 @@ DYNLP: LD E,(HL)
|
||||
DEC DE ; Else back up Ptr to Driver
|
||||
DEC DE
|
||||
LD A,(DE) ; Get driver #
|
||||
; IF RAMDSK
|
||||
; DEC A
|
||||
; DEC A ; Hard Disk (Driver 2)?
|
||||
; JR Z,ADDSIZ ; ..jump if so
|
||||
; DEC A ; RAM Disk (Driver 3)?
|
||||
; ELSE
|
||||
IF RAMDSK
|
||||
DEC A
|
||||
DEC A ; Hard Disk (Driver 2)?
|
||||
JR Z,ADDSIZ ; ..jump if so
|
||||
DEC A ; RAM Disk (Driver 3)?
|
||||
ELSE
|
||||
CP 2 ; Hard Disk (Driver 2)?
|
||||
; ENDIF ; Ramdsk
|
||||
ENDIF ; Ramdsk
|
||||
JR NZ,DYNCHK ; ..jump to end if Not
|
||||
ADDSIZ: PUSH BC ; Save loop counter
|
||||
PUSH HL ; and ptr to DPH
|
||||
|
||||
@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
|
||||
|
||||
;;--- RAM Disk Section ---
|
||||
;
|
||||
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
|
||||
;--- Hard Disk Section ---
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
|
||||
|
||||
;;--- RAM Disk Section ---
|
||||
;
|
||||
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
|
||||
;--- Hard Disk Section ---
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
|
||||
|
||||
;;--- RAM Disk Section ---
|
||||
;
|
||||
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
|
||||
;--- Hard Disk Section ---
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
|
||||
|
||||
;;--- RAM Disk Section ---
|
||||
;
|
||||
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
|
||||
;--- Hard Disk Section ---
|
||||
|
||||
|
||||
@@ -74,7 +74,7 @@ MORDPB EQU NO ; Include additional Floppy DPB Formats?
|
||||
|
||||
;;--- RAM Disk Section ---
|
||||
;
|
||||
;RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
RAMDSK EQU YES ; YES = Make RAM-Disk Code, NO = No code made
|
||||
|
||||
;--- Hard Disk Section ---
|
||||
|
||||
|
||||
@@ -271,9 +271,9 @@ diskdef interak
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 256KB ROM (128KB reserved, 128KB ROM Disk)
|
||||
# RomWBW 128KB ROM Disk
|
||||
|
||||
diskdef wbw_rom256
|
||||
diskdef wbw_rom128
|
||||
seclen 512
|
||||
tracks 4
|
||||
sectrk 64
|
||||
@@ -284,35 +284,9 @@ diskdef wbw_rom256
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk)
|
||||
# RomWBW 256KB ROM Disk
|
||||
|
||||
diskdef wbw_rom512
|
||||
seclen 512
|
||||
tracks 12
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk)
|
||||
|
||||
diskdef wbw_rom1024
|
||||
seclen 512
|
||||
tracks 28
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk)
|
||||
|
||||
diskdef wbw_ram512
|
||||
diskdef wbw_rom256
|
||||
seclen 512
|
||||
tracks 8
|
||||
sectrk 64
|
||||
@@ -323,11 +297,24 @@ diskdef wbw_ram512
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk)
|
||||
# RomWBW 384KB ROM Disk
|
||||
|
||||
diskdef wbw_ram1024
|
||||
diskdef wbw_rom384
|
||||
seclen 512
|
||||
tracks 24
|
||||
tracks 12
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 896KB ROM Disk
|
||||
|
||||
diskdef wbw_rom896
|
||||
seclen 512
|
||||
tracks 28
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
|
||||
@@ -9,10 +9,11 @@
|
||||
; 1.0 - 31 Aug 92 - General Release. HFB
|
||||
; 0.1 - 3 Jan 92 - Initial release. HFB
|
||||
;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
; The Physical Drive Number byte (XDPH+3) is simply an index to the Physical
|
||||
; Drive as specified in the ICFG-xx.Z80 file. Up to three physical drives
|
||||
; may be defined in that section, the first byte of which defines the
|
||||
; Physical/Logical Unit Address (Device & LUN for SCSI, Master/Slave for IDE),
|
||||
; The Logical Drive Number byte (XDPH+3) is simply an index into the
|
||||
; BPBIOS physical drive table as specified in the ICFG-xx.Z80 file.
|
||||
; BPBIOS supports exactly three logical drives which
|
||||
; are defined in that section, the first byte of which defines the
|
||||
; Physical Unit (HBIOS Disk Unit)
|
||||
; and a flag bit to specify whether or not the drive is physically present.
|
||||
; See ICFG-xx.Z80 for a definition of the data.
|
||||
|
||||
@@ -21,7 +22,7 @@
|
||||
|
||||
XDPH90: DEFB TRUE ; Format lock flag (Lock RAM Drive)
|
||||
DEFB FIXDSK ; Disk Drive Type
|
||||
DEFB 2 ; Driver ID = Treat as Hard Drive
|
||||
DEFB 3 ; Driver ID = Treat as Hard Drive
|
||||
DEFB HB_MDRAM ; Physical Drive Number
|
||||
DPH$90: DEFW 0 ; Skew Table pointer
|
||||
DEFW 0,0,0 ; Scratch area
|
||||
@@ -34,7 +35,7 @@ DPH$90: DEFW 0 ; Skew Table pointer
|
||||
|
||||
XDPH91: DEFB TRUE ; Format lock flag (Lock ROM Drive)
|
||||
DEFB FIXDSK ; Disk Drive Type
|
||||
DEFB 2 ; Driver ID = Treat as Hard Drive
|
||||
DEFB 3 ; Driver ID = Treat as Hard Drive
|
||||
DEFB HB_MDROM ; Physical Drive Number
|
||||
DPH$91: DEFW 0 ; Skew Table pointer
|
||||
DEFW 0,0,0 ; Scratch area
|
||||
@@ -48,7 +49,7 @@ DPH$91: DEFW 0 ; Skew Table pointer
|
||||
XDPH50: DEFB TRUE ; Format lock flag (Lock First Hard Drive)
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$50: DEFW 0 ; Skew table pointer
|
||||
DEFW 0,0,0 ; Scratch area
|
||||
DEFW DIRBUF ; Directory buffer pointer
|
||||
@@ -61,7 +62,7 @@ DPH$50: DEFW 0 ; Skew table pointer
|
||||
XDPH51: DEFB TRUE ; --- Second Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$51: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -74,7 +75,7 @@ DPH$51: DEFW 0
|
||||
XDPH52: DEFB TRUE ; --- Third Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..2] for this Partition
|
||||
DEFB 0 ; Physical drive [0..2] for this Partition
|
||||
DPH$52: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -87,7 +88,7 @@ DPH$52: DEFW 0
|
||||
XDPH53: DEFB TRUE ; --- Fourth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$53: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -100,7 +101,7 @@ DPH$53: DEFW 0
|
||||
XDPH54: DEFB TRUE ; --- Fifth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$54: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -113,7 +114,7 @@ DPH$54: DEFW 0
|
||||
XDPH55: DEFB TRUE ; --- Sixth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$55: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -126,7 +127,7 @@ DPH$55: DEFW 0
|
||||
XDPH56: DEFB TRUE ; --- Seventh Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$56: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -139,7 +140,7 @@ DPH$56: DEFW 0
|
||||
XDPH57: DEFB TRUE ; --- Eighth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV0 ; Physical drive [0..6] for this Partition
|
||||
DEFB 0 ; Logical drive [0..2] for this Partition
|
||||
DPH$57: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -152,7 +153,7 @@ DPH$57: DEFW 0
|
||||
XDPH58: DEFB TRUE ; --- Ninth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
|
||||
DEFB 1 ; Logical drive [0..2] for this Partition
|
||||
DPH$58: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -165,7 +166,7 @@ DPH$58: DEFW 0
|
||||
XDPH59: DEFB TRUE ; --- Tenth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
|
||||
DEFB 1 ; Logical drive [0..2] for this Partition
|
||||
DPH$59: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -178,7 +179,7 @@ DPH$59: DEFW 0
|
||||
XDPH60: DEFB TRUE ; --- Eleventh Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
|
||||
DEFB 1 ; Logical drive [0..2] for this Partition
|
||||
DPH$60: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
@@ -191,7 +192,7 @@ DPH$60: DEFW 0
|
||||
XDPH61: DEFB TRUE ; --- Twelveth Hard Drive/Partition
|
||||
DEFB FIXDSK ; Disk drive type
|
||||
DEFB 2 ; Driver ID - 2=hard drive
|
||||
DEFB HB_HDDEV1 ; Physical drive [0..6] for this Partition
|
||||
DEFB 1 ; Logical drive [0..2] for this Partition
|
||||
DPH$61: DEFW 0
|
||||
DEFW 0,0,0
|
||||
DEFW DIRBUF
|
||||
|
||||
@@ -104,15 +104,69 @@ SELHD: ; SET DEVICE
|
||||
; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number.
|
||||
; NOTE: This routine uses physical drive characteristics from ICFG-xx.
|
||||
|
||||
HDWRIT:
|
||||
HDWRIT:
|
||||
; CALL PRTSTRD
|
||||
; DEFB '[HD WRITE]$'
|
||||
|
||||
XOR A
|
||||
LD (HSTWRT),A ; Show no active writes pending
|
||||
JP HDSK_WRITE ; ..continue
|
||||
|
||||
LD B,HB_DIOWRITE ; HBIOS WRITE
|
||||
JR HDIO ; ..continue
|
||||
|
||||
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
; Read from Hard Disk Drive < Internal BIOS Routine >
|
||||
; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number.
|
||||
|
||||
HDREAD:
|
||||
; CALL PRTSTRD ; DEBUG
|
||||
; DEFB '[HD READ]$' ; DEBUG
|
||||
|
||||
LD B,HB_DIOREAD ; HBIOS READ
|
||||
JR HDIO ; ..continue
|
||||
|
||||
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
; Common read/write code for hard disk
|
||||
|
||||
HDIO:
|
||||
LD HL,(HSTDPH) ; GET ACTIVE DPH POINTER
|
||||
DEC HL ; ADJUST TO POINT TO BPBIOS LOGICAL UNIT NUMBER
|
||||
LD A,(HL) ; LOAD IT IN A
|
||||
;
|
||||
; Convert logical -> physical
|
||||
; Code below is ugly brute force approach, but since there are
|
||||
; always exactly 3 logical drives in BPBIOS and the first one
|
||||
; is the most commonly used, this turns out to be reasonably
|
||||
; efficient.
|
||||
LD HL,HDRV0 ; PERHAPS HDRV0
|
||||
OR A ; A == 0?
|
||||
JR Z,HDSK_HDIO1 ; HANDLE IF SO
|
||||
LD HL,HDRV1 ; PERHAPS HDRV1
|
||||
DEC A ; A == 1?
|
||||
JR Z,HDSK_HDIO1 ; HANDLE IF SO
|
||||
LD HL,HDRV2 ; PERHAPS HDRV2
|
||||
DEC A ; A == 2?
|
||||
JR Z,HDSK_HDIO1 ; HANDLE IF SO
|
||||
CALL PANIC ; INVALID LOGICAL UNIT NUMBER
|
||||
HDSK_HDIO1:
|
||||
LD A,(HL) ; LOAD PHYS UNIT NUM (HBIOS DISK UNIT)
|
||||
AND 0FH ; REMOVE EXTRANEOUS BITS
|
||||
LD C,A ; PUT IN C FOR BELOW
|
||||
JR HB_DSKIO
|
||||
|
||||
IF BANKED
|
||||
COMMON /BANK2/
|
||||
ELSE
|
||||
CSEG
|
||||
ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; HBIOS Disk Driver Interface
|
||||
;==================================================================================================
|
||||
;
|
||||
; Enter with B=HBIOS disk function code (read/write)
|
||||
; C=HBIOS disk unit number
|
||||
;
|
||||
; NOTE: This routine uses physical drive characteristics from ICFG-xx.
|
||||
; The routine computes a sequential block number with the algorithm;
|
||||
; Trk * 16 + Sector, HBIOS uses LBA addressing for hard drive like
|
||||
@@ -127,43 +181,8 @@ HDWRIT:
|
||||
; Sector := (Block# MOD hdSPT)+1 (* Quotient1 := Block# DIV hdSPT *)
|
||||
; Head := Quotient1 MOD hdHds (* Quotient2 := Quotient1 DIV hdHds *)
|
||||
; Track := Quotient2
|
||||
;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
HDREAD:
|
||||
JP HDSK_READ
|
||||
|
||||
IF BANKED
|
||||
COMMON /BANK2/
|
||||
ELSE
|
||||
CSEG
|
||||
ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; HBIOS Disk Driver Interface
|
||||
;==================================================================================================
|
||||
;
|
||||
; HBIOS disk commands
|
||||
;
|
||||
HB_DSKRD EQU 13H
|
||||
HB_DSKWR EQU 14H
|
||||
;
|
||||
HDSK_READ:
|
||||
; CALL PRTSTRD ; DEBUG
|
||||
; DEFB '[HDSK READ]$' ; DEBUG
|
||||
|
||||
LD B,HB_DSKRD ; HBIOS DISK READ (13H)
|
||||
JR HDSK_RW
|
||||
;
|
||||
HDSK_WRITE:
|
||||
; CALL PRTSTRD
|
||||
; DEFB '[HDSK WRITE]$'
|
||||
|
||||
LD B,HB_DSKWR ; HBIOS DISK WRITE (14H)
|
||||
;
|
||||
HDSK_RW:
|
||||
LD HL,(HSTDPH) ; GET ACTIVE DPH POINTER
|
||||
DEC HL ; ADJUST TO POINT TO UNIT NUMBER
|
||||
LD C,(HL) ; LOAD IT IN C FOR HBIOS CALL LATER
|
||||
HB_DSKIO:
|
||||
PUSH BC ; SAVE FUNCTION AND DEVICE FOR LATER
|
||||
LD HL,(HSTTRK) ; GET TRACK VALUE
|
||||
LD A,L ; LSB OF TRACK TO A
|
||||
@@ -172,10 +191,10 @@ HDSK_RW:
|
||||
LD A,(HSTSEC) ; GET SECTOR
|
||||
LD E,A ; STUFF IT IN E
|
||||
LD B,4 ; PREPARE TO SHIFT OUT 4 BIT HEAD VALUE
|
||||
HDSK_RW1:
|
||||
HB_DSKIO1:
|
||||
SRL H ; SHIFT ONE BIT OUT
|
||||
RR L ; ... OF HL
|
||||
DJNZ HDSK_RW1 ; DO ALL 4 BITS
|
||||
DJNZ HB_DSKIO1 ; DO ALL 4 BITS
|
||||
POP BC ; RECOVER FUNCTION AND DEVICE
|
||||
PUSH BC ; SAVE INCOMING FUNCTION, DEVICE/UNIT
|
||||
LD B,12H ; SETUP FOR NEW SEEK CALL
|
||||
@@ -192,17 +211,3 @@ HDSK_RW1:
|
||||
|
||||
OR 0FFH ; A=$FF TO SIGNAL ERROR
|
||||
RET ; AND DONE W/ ERROR
|
||||
;
|
||||
;==================================================================================================
|
||||
; HDSK DISK DRIVER - DATA
|
||||
;==================================================================================================
|
||||
;
|
||||
IF BANKED
|
||||
COMMON /B2RAM/
|
||||
ELSE
|
||||
DSEG
|
||||
ENDIF
|
||||
|
||||
HDSK_PDN DEFS 1 ; PHYSICAL DEVICE
|
||||
|
||||
|
||||
@@ -27,6 +27,11 @@ HBX_SRCBNK EQU 0FFE4H
|
||||
HBX_DSTADR EQU 0FFE5H
|
||||
HBX_DSTBNK EQU 0FFE7H
|
||||
HBX_CPYLEN EQU 0FFE8H
|
||||
;
|
||||
; HBIOS disk commands
|
||||
;
|
||||
HB_DIOREAD EQU 13H
|
||||
HB_DIOWRITE EQU 14H
|
||||
|
||||
CSEG
|
||||
|
||||
|
||||
@@ -11,9 +11,8 @@
|
||||
COMMON /BANK2/
|
||||
ENDIF
|
||||
|
||||
; This module creates a RAM Drive using the available memory (if available)
|
||||
; above the TPA and possible System banks. For a banked system, the minimum
|
||||
; needed is a 64k Main TPA and a 32k System Bank.
|
||||
; This module implements the HBIOS RAM disk driver by using the
|
||||
; RomWBW disk interface.
|
||||
|
||||
;.....
|
||||
; Select the RAM Drive. This routine performs any setup required in a select.
|
||||
@@ -22,70 +21,28 @@ SELRAM: JP SETPARMS ; No action locally.
|
||||
|
||||
;.....
|
||||
; Read a 128-byte logical sector from the RAM Drive to main memory.
|
||||
; This routine uses the HSTxxx values from the base BIOS routines.
|
||||
|
||||
RAMRD: OR 0FFH ; Set Read flag (non-0)
|
||||
JR RamRW ; ..go to common code
|
||||
RAMRD:
|
||||
LD B,HB_DIOREAD ; HBIOS READ
|
||||
JR RAMIO ; READ/WRITE COMMON CODE
|
||||
|
||||
;.....
|
||||
; Write a 128-byte logical sector from main memory to the RAM Drive.
|
||||
; This routine uses the HSTxxx values from the base BIOS routines.
|
||||
|
||||
RAMWR: XOR A ; Set Write flag with 0, Read w/AFH
|
||||
RAMWR:
|
||||
XOR A ; Set Write flag with 0, Read w/AFH
|
||||
LD (HSTWRT),A ; clear pending write flag
|
||||
;..fall thru to common code..
|
||||
;
|
||||
LD B,HB_DIOWRITE ; HBIOS WRITE
|
||||
JR RAMIO ; READ/WRITE COMMON CODE
|
||||
|
||||
; The following performs calculations for the proper address and bank, sets
|
||||
; the DMA block and executes the Move to/from the Host Buffer.
|
||||
|
||||
RamRW:
|
||||
PUSH AF ; Save R/W flag for later
|
||||
; BUILD TOTAL BYTE OFFSET INTO A:HL
|
||||
XOR A,A ; A STARTS OUT ZERO
|
||||
LD HL,(HSTTRK) ; HL STARTS WITH TRACK NUM
|
||||
LD H,0 ; ONLY LSB IS NEEDED (INIRAMD PASSES INVALID MSB)
|
||||
LD B,5 ; MULT BY 32 SECTORS PER TRACK
|
||||
RAMWR1:
|
||||
ADD HL,HL ; DOUBLE VALUE
|
||||
ADC A,A ; ... INCLUDING A WITH CARRY
|
||||
DJNZ RAMWR1 ; LOOP 5 TIMES FOR MULT BY 32
|
||||
LD DE,(HSTSEC) ; SECTOR VALUE TO 3 (ONE BYTE)
|
||||
LD D,0 ; CLEAR MSB SINCE HSTSEC IS JUST ONE BYTE
|
||||
ADD HL,DE ; ADD TO WORKING VALUE
|
||||
ADC A,0 ; HANDLE POSSIBLE CARRY
|
||||
LD B,7 ; MULT BY 128 BYTES PER SECTOR
|
||||
RAMWR2:
|
||||
ADD HL,HL ; DOUBLE VALUE
|
||||
ADC A,A ; ... INCLUDING A WITH CARRY
|
||||
DJNZ RAMWR2 ; LOOP 7 TIME FOR MULT BY 128
|
||||
; CONVERT BYTE OFFSET IN A:HL TO BANK(A):OFFSET(HL)
|
||||
SLA H ; ROTATE HIGH BIT OF H INTO CF
|
||||
RL A ; ROTATE CF INTO LOW BIT OF A
|
||||
SRL H ; FIX H (ROTATE BACK W/ ZERO INTO HIGH BIT)
|
||||
; ADJUST FOR STARTING RAM BANK
|
||||
LD C,A ; BANK TO C
|
||||
LD A,(RAMBNK) ; GET STARTING RAM BANK NUM
|
||||
ADD A,C ; COMBINE TO GET ACTUAL SOURCE BANK NUM
|
||||
; SETUP FOR INTERBANK COPY
|
||||
LD C,A ; SOURCE BANK TO C
|
||||
LD B,BID_HB ; DEST BANK TO B (HSTBUF IN HBIOS)
|
||||
;LD A,(HB_BNKBIOS) ; DEST BANK (HSTBUF IN HBIOS)
|
||||
;LD B,A ; PUT IN B
|
||||
LD DE,(HB_DSKBUF) ; DEST ADDRESS TO DE; HL ALREADY HAS SOURCE ADDRESS
|
||||
; REVERSE VALUES IF WRITE
|
||||
POP AF ; Read or Write?
|
||||
JR NZ,RAMWR3 ; ..jump if Read
|
||||
EX DE,HL ; Else swap things around
|
||||
LD A,C
|
||||
LD C,B
|
||||
LD B,A
|
||||
RAMWR3:
|
||||
; PERFORM THE COPY
|
||||
CALL XMOVE ; SET BANKS FOR COPY
|
||||
LD BC,128 ; SET LENGTH OF COPY (ONE SECTOR)
|
||||
CALL MOVE ; DO THE COPY
|
||||
; CLEAN UP AND RETURN
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND RETURN
|
||||
;.....
|
||||
; Common code to setup RomWBW disk access
|
||||
;
|
||||
RAMIO:
|
||||
LD HL,(HSTDPH) ; GET ACTIVE DPH PTR
|
||||
DEC HL ; ADJUST TO POINT TO BPBIOS LOGICAL UNIT
|
||||
LD C,(HL) ; USE AS HBIOS DISK UNIT NUMBER
|
||||
JP HB_DSKIO ; DO THE REST IN HARD DISK DRIVER
|
||||
|
||||
;================== End of RAM Disk Code ====================
|
||||
|
||||
@@ -27,7 +27,11 @@ HB_IODEV EQU 80H ; 0x80 is current HBIOS console
|
||||
HB_MDRAM EQU 0 ; HBIOS Disk Unit #0 is usually the RAM Disk
|
||||
HB_MDROM EQU 1 ; HBIOS Disk Unit #1 is usually the ROM Disk
|
||||
;
|
||||
; Set HB_HDDEVN to appropriate HBIOS disk device numbers
|
||||
; Map BPBIOS logical drive numbers (0-2) to HBIOS physical disk units
|
||||
; HB_HDDEVn values map to HDRVn (see icfg-ww).
|
||||
;
|
||||
; The values below will be the default mapping. They can be changed
|
||||
; using BPCNFG *Physical Drive* configuration.
|
||||
;
|
||||
; If the RomWBW system has no floppy drives, then the hard disk units
|
||||
; will start right after the memory disk units. So, the first hard disk
|
||||
|
||||
@@ -115,17 +115,17 @@ DVRVCT: DEFW SELERR ; Driver 0 Select
|
||||
DEFW HDREAD ; Driver 2 Read
|
||||
DEFW HDWRIT ; Driver 2 Write
|
||||
ENDIF ; harddsk
|
||||
; IF [RAMDSK AND NOT HARDDSK]
|
||||
; DEFW SELERR ; Driver 2 Select (Dummy if No Hard Drive)
|
||||
; DEFW ISTRUE ; Driver 2 Read
|
||||
; DEFW ISTRUE ; Driver 2 Write
|
||||
; ENDIF ;ramdsk & not harddsk
|
||||
IF [RAMDSK AND NOT HARDDSK]
|
||||
DEFW SELERR ; Driver 2 Select (Dummy if No Hard Drive)
|
||||
DEFW ISTRUE ; Driver 2 Read
|
||||
DEFW ISTRUE ; Driver 2 Write
|
||||
ENDIF ;ramdsk & not harddsk
|
||||
|
||||
; IF RAMDSK
|
||||
; DEFW SELHD ; Driver 3 Select (RAM Drive)
|
||||
; DEFW HDREAD ; Driver 3 Read
|
||||
; DEFW HDWRIT ; Driver 3 Write
|
||||
; ENDIF ;ramdsk
|
||||
IF RAMDSK
|
||||
DEFW SELRAM ; Driver 3 Select (RAM Drive)
|
||||
DEFW RAMRD ; Driver 3 Read
|
||||
DEFW RAMWR ; Driver 3 Write
|
||||
ENDIF ;ramdsk
|
||||
|
||||
SELERR: LD HL,0 ; Send null DPH pointer back to caller
|
||||
RET
|
||||
|
||||
@@ -10,6 +10,7 @@ pushd ZCPR-DJ && call Build || exit /b & popd
|
||||
pushd ZSDOS && call Build || exit /b & popd
|
||||
pushd CPM3 && call Build || exit /b & popd
|
||||
pushd ZPM3 && call Build || exit /b & popd
|
||||
pushd CPNET && call Build || exit /b & popd
|
||||
pushd pSys && call Build || exit /b & popd
|
||||
pushd Apps && call Build || exit /b & popd
|
||||
pushd Forth && call Build || exit /b & popd
|
||||
|
||||
16
Source/CPNET/Build.cmd
Normal file
16
Source/CPNET/Build.cmd
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=%~dp0..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
set CPMDIR80=%TOOLS%\cpm\
|
||||
|
||||
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
|
||||
4
Source/CPNET/Clean.cmd
Normal file
4
Source/CPNET/Clean.cmd
Normal file
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.lbr del *.lbr
|
||||
19
Source/CPNET/Makefile
Normal file
19
Source/CPNET/Makefile
Normal file
@@ -0,0 +1,19 @@
|
||||
OBJECTS = cpn12mt.lbr cpn3mt.lbr cpn12duo.lbr cpn3duo.lbr cpn12ser.lbr cpn3ser.lbr
|
||||
DEST = ../../Binary/CPNET/
|
||||
TOOLS = ../../Tools
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
cpn12%.lbr: CPNETVER=cpnet12
|
||||
cpn3%.lbr: CPNETVER=cpnet3
|
||||
%mt.lbr: HWVER=mt011
|
||||
%duo.lbr: HWVER=duo
|
||||
%ser.lbr: HWVER=serial
|
||||
|
||||
%.lbr:
|
||||
rm -f $@
|
||||
$(ZXCC) NULU --O -$(*F) -\<30 --X
|
||||
for f in `ls $(HWVER)/$(CPNETVER) | sort` ; \
|
||||
do \
|
||||
$(ZXCC) NULU --O -$(*F) --A $(HWVER)/$(CPNETVER)/$$f --X ; \
|
||||
done
|
||||
@@ -6,12 +6,15 @@
|
||||
*** ***
|
||||
***********************************************************************
|
||||
|
||||
This directory contains the CP/M 2.2 client tools for CP/NET. These
|
||||
tools work only with the MT011 RCBus module.
|
||||
This directory contains the CP/M client components for CP/NET. These
|
||||
components require either the MT011 RCBus module or the Duodyne
|
||||
Disk I/O board.
|
||||
|
||||
All of these files come from Douglas Miller. Please refer to
|
||||
https://github.com/durgadas311/cpnet-z80 for more information and
|
||||
the latest source code.
|
||||
|
||||
In general, to use CP/NET on RomWBW, it is intended that you will
|
||||
copy all of these files into your user 0 directory.
|
||||
The build process packages the client files into .lbr packages
|
||||
appropriate for the hardware variations and CP/NET versions.
|
||||
|
||||
-- WBW 7:15 AM 2/11/2024
|
||||
BIN
Source/CPNET/duo/cpnet12/ccp.spr
Normal file
BIN
Source/CPNET/duo/cpnet12/ccp.spr
Normal file
Binary file not shown.
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/cpnboot.com
Normal file
BIN
Source/CPNET/duo/cpnet12/cpnboot.com
Normal file
Binary file not shown.
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/cpnetldr.com
Normal file
BIN
Source/CPNET/duo/cpnet12/cpnetldr.com
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/ndos.spr
Normal file
BIN
Source/CPNET/duo/cpnet12/ndos.spr
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/nvram.com
Normal file
BIN
Source/CPNET/duo/cpnet12/nvram.com
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/snios.spr
Normal file
BIN
Source/CPNET/duo/cpnet12/snios.spr
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/wizcfg.com
Normal file
BIN
Source/CPNET/duo/cpnet12/wizcfg.com
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/wizdbg.com
Normal file
BIN
Source/CPNET/duo/cpnet12/wizdbg.com
Normal file
Binary file not shown.
BIN
Source/CPNET/duo/cpnet12/wiztest.com
Normal file
BIN
Source/CPNET/duo/cpnet12/wiztest.com
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Source/CPNET/duo/cpnet3/ndos3.com
Normal file
BIN
Source/CPNET/duo/cpnet3/ndos3.com
Normal file
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user