mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
192 Commits
v3.2.0-rc.
...
v3.4.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
f2d304ef0d | ||
|
|
cbfbca8d92 | ||
|
|
b175808a92 | ||
|
|
3e86e79133 | ||
|
|
3247e67ed4 | ||
|
|
bbc84f0c2d | ||
|
|
872d51e9b6 | ||
|
|
b41f189a4c | ||
|
|
25fb2bd59e | ||
|
|
76867b8351 | ||
|
|
43745f8c90 | ||
|
|
ed4daf06a4 | ||
|
|
14cc41c3c4 | ||
|
|
0598d921bc | ||
|
|
93dcfe9610 | ||
|
|
d98547dea3 | ||
|
|
a157d9ba13 | ||
|
|
85783148be | ||
|
|
7bd930bc76 | ||
|
|
c1fa7b420a | ||
|
|
9072bc6d70 | ||
|
|
480dbe4f4c | ||
|
|
26fad23c3a | ||
|
|
883dab7e97 | ||
|
|
d3f5643791 | ||
|
|
5299d24379 | ||
|
|
a229db96a6 | ||
|
|
092e44c62e | ||
|
|
722bce819b | ||
|
|
2d470a2a90 | ||
|
|
b6700dfa4c | ||
|
|
cfc76d0659 | ||
|
|
7fce3277a0 | ||
|
|
2219e4c82d | ||
|
|
68e841e62c | ||
|
|
bb70c36b36 | ||
|
|
c391fd6d56 | ||
|
|
e69caf5059 | ||
|
|
8b7e71049b | ||
|
|
50e190c755 | ||
|
|
d0eccf026b | ||
|
|
39f796ce22 | ||
|
|
5610e79db4 | ||
|
|
e782b78b16 | ||
|
|
c0d3969244 | ||
|
|
c62af3df33 | ||
|
|
6d736996fd | ||
|
|
8bc801d0a4 | ||
|
|
2c6b7f7fb1 | ||
|
|
c3503f56d1 | ||
|
|
d4c87996f0 | ||
|
|
9f5b3a8b1c | ||
|
|
d06e1e2a5c | ||
|
|
22a0c52af3 | ||
|
|
85aa7e89c2 | ||
|
|
59d04f2446 | ||
|
|
9cc52e30d6 | ||
|
|
e1a4e815dc | ||
|
|
3c340d1ab9 | ||
|
|
138248fafc | ||
|
|
834eefb0bb | ||
|
|
7835eb5deb | ||
|
|
d1a5c66147 | ||
|
|
b184ccfb78 | ||
|
|
4776b32cd3 | ||
|
|
2bc5333f2b | ||
|
|
a5575456e2 | ||
|
|
bdb8dc020b | ||
|
|
faaba69554 | ||
|
|
0395bba4f5 | ||
|
|
14ac7a917b | ||
|
|
7a209d4053 | ||
|
|
7e5b140c2f | ||
|
|
1f1952fb19 | ||
|
|
229bdaa308 | ||
|
|
5c0894b8c1 | ||
|
|
9cefcfb0bc | ||
|
|
5d34a5c5d5 | ||
|
|
f8c800e527 | ||
|
|
b90e4d932a | ||
|
|
5457a7e7fd | ||
|
|
8f5cc510ee | ||
|
|
0475f5e853 | ||
|
|
5b7dee0689 | ||
|
|
6532f61747 | ||
|
|
4bdae4eccb | ||
|
|
efb9840b86 | ||
|
|
308a11cb32 | ||
|
|
3a7421de33 | ||
|
|
21a58397b6 | ||
|
|
9ae61806dc | ||
|
|
87ac6f07f8 | ||
|
|
1cd5313259 | ||
|
|
04c1ff04ac | ||
|
|
0e1a0afa2c | ||
|
|
5227bb68b5 | ||
|
|
fb68941768 | ||
|
|
8747ec8d02 | ||
|
|
abd939625f | ||
|
|
69716abb25 | ||
|
|
1f526d440a | ||
|
|
84374c86e6 | ||
|
|
45ea46b105 | ||
|
|
1333d6a491 | ||
|
|
b7e865dbf1 | ||
|
|
1c411f5552 | ||
|
|
364e48a5d3 | ||
|
|
63cb89dcfc | ||
|
|
6e316b46f0 | ||
|
|
3f23396536 | ||
|
|
c628ba10f2 | ||
|
|
9358299f14 | ||
|
|
d445c4a015 | ||
|
|
e32002545b | ||
|
|
7ac88efac1 | ||
|
|
9f71fe05aa | ||
|
|
ad3c533145 | ||
|
|
e43a939f54 | ||
|
|
e5b7409f44 | ||
|
|
9100f199b1 | ||
|
|
bcc50a31a9 | ||
|
|
c891ba2bad | ||
|
|
2f9e77ca13 | ||
|
|
f346209c82 | ||
|
|
0742fb6188 | ||
|
|
94239866a5 | ||
|
|
2681b84a20 | ||
|
|
b5437c56e9 | ||
|
|
f640630a06 | ||
|
|
53e201bd28 | ||
|
|
51d962aeab | ||
|
|
5f36cf9a12 | ||
|
|
d812066f2e | ||
|
|
7563863be2 | ||
|
|
9654d487ba | ||
|
|
5b339aef3e | ||
|
|
47a7d81bb9 | ||
|
|
a92c44e53f | ||
|
|
cc9f5dd516 | ||
|
|
6e34de0e02 | ||
|
|
5a6d7f853b | ||
|
|
a646f49866 | ||
|
|
98a33b8b50 | ||
|
|
8aebaab3fe | ||
|
|
798d8c3ea3 | ||
|
|
bbaf2b0714 | ||
|
|
74a8283bba | ||
|
|
e869e55252 | ||
|
|
e8a76817dc | ||
|
|
e839c77844 | ||
|
|
ada7254b84 | ||
|
|
cd96ea7e26 | ||
|
|
0098540cc9 | ||
|
|
b3e7e2ff62 | ||
|
|
582937de8e | ||
|
|
5f5953edd8 | ||
|
|
50cd6ff955 | ||
|
|
82c53bd20b | ||
|
|
0d0f5fb182 | ||
|
|
3773c9c7fa | ||
|
|
b7dc67b9c7 | ||
|
|
76c4209a5e | ||
|
|
76d9a99758 | ||
|
|
1db858027e | ||
|
|
d3fb3710ff | ||
|
|
170cecd112 | ||
|
|
f469699449 | ||
|
|
c4ff7315c9 | ||
|
|
ddbd338b6f | ||
|
|
77c6f934dc | ||
|
|
f72bf4e4c5 | ||
|
|
dcc6bd2b62 | ||
|
|
01fac79902 | ||
|
|
70d3f54834 | ||
|
|
650dcdb35f | ||
|
|
b27e14826a | ||
|
|
d2b9333288 | ||
|
|
cbd60d02d9 | ||
|
|
93a1eade2a | ||
|
|
5073a9c506 | ||
|
|
86f8df03b6 | ||
|
|
a7ef76b9c4 | ||
|
|
0a6719cf24 | ||
|
|
0b0f68d579 | ||
|
|
c2d58ebe3a | ||
|
|
894898a75d | ||
|
|
5da1f70b6c | ||
|
|
15e90c628a | ||
|
|
bc0d1ed5e8 | ||
|
|
25382b01e2 | ||
|
|
d55587e341 | ||
|
|
7d9ff0599b |
11
.github/pull_request_template.md
vendored
Normal file
11
.github/pull_request_template.md
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
<!--
|
||||
BEFORE YOU CREATE A PULL REQUEST:
|
||||
|
||||
- Please base all pull requests against the dev branch
|
||||
- Include a clear description of your change
|
||||
- Reference related Issue(s) (e.g., "Resolves Issue #123")
|
||||
|
||||
Thank you for contributing to RomWBW! I will review your pull request as soon as possible.
|
||||
|
||||
DELETE EVERYTHING IN THIS COMMENT BLOCK AND REPLACE WITH YOUR COMMENTS
|
||||
-->
|
||||
46
.github/workflows/commit.yml
vendored
46
.github/workflows/commit.yml
vendored
@@ -3,10 +3,9 @@ name: Commit Build
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
- dev
|
||||
- '**'
|
||||
tags-ignore:
|
||||
- v*
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
buildLinux:
|
||||
@@ -14,14 +13,18 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: rlespinasse/github-slug-action@v4.4.0
|
||||
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
|
||||
echo "COMMIT_REF: $COMMIT_REF"
|
||||
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export TZ='America/Los_Angeles'
|
||||
sudo apt-get install libncurses-dev
|
||||
sudo apt-get install srecord
|
||||
make dist
|
||||
rm -rf .git*
|
||||
@@ -35,28 +38,21 @@ jobs:
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW_Linux-${{env.GITHUB_REF_SLUG}}-${{env.GITHUB_SHA_SHORT}}
|
||||
name: RomWBW-${{env.COMMIT_REF}}-Linux
|
||||
path: .
|
||||
|
||||
- name: Create Package Archive
|
||||
run: |
|
||||
zip -r RomWBW-SnapShot-Package.zip .
|
||||
|
||||
- name: Post SnapShot
|
||||
uses: wwarthen/actions/packages/automatic-releases@built-packages
|
||||
with:
|
||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
automatic_release_tag: "SnapShot"
|
||||
prerelease: true
|
||||
title: "RomWBW Development SnapShot Build"
|
||||
files: |
|
||||
RomWBW-SnapShot-Package.zip
|
||||
|
||||
buildMacOS:
|
||||
runs-on: macOS-12
|
||||
runs-on: macOS-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3.1.0
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Get Commit Ref
|
||||
run: |
|
||||
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
|
||||
echo "COMMIT_REF: $COMMIT_REF"
|
||||
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@@ -74,5 +70,5 @@ jobs:
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW_MacOS
|
||||
name: RomWBW-${{env.COMMIT_REF}}-MacOS
|
||||
path: .
|
||||
|
||||
121
.github/workflows/release.yml
vendored
121
.github/workflows/release.yml
vendored
@@ -1,8 +1,9 @@
|
||||
name: Release Build
|
||||
|
||||
on:
|
||||
release:
|
||||
types: published
|
||||
push:
|
||||
tags:
|
||||
- '**'
|
||||
|
||||
jobs:
|
||||
build:
|
||||
@@ -10,41 +11,99 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
|
||||
- name: Create Package Label
|
||||
run: |
|
||||
LABEL=`echo "$GITHUB_REF" | sed "s|^refs/tags/||"`
|
||||
echo "::set-env name=PKGLBL::$LABEL"
|
||||
|
||||
- name: Display Diagnostics
|
||||
run: |
|
||||
echo PKGLBL: "$PKGLBL"
|
||||
echo Upload URL: "${{github.event.release.upload_url}}"
|
||||
echo GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export TZ='America/Los_Angeles'
|
||||
sudo apt-get install libncurses-dev
|
||||
sudo apt-get install srecord
|
||||
make dist
|
||||
rm -rf .git*
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v1
|
||||
with:
|
||||
name: RomWBW-${{env.PKGLBL}}-Package
|
||||
path: .
|
||||
|
||||
- name: Create Package Archive
|
||||
run: |
|
||||
zip -r Package.zip .
|
||||
|
||||
- name: Upload Release Asset
|
||||
uses: actions/upload-release-asset@v1
|
||||
env:
|
||||
GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
|
||||
zip -r RomWBW-${{github.ref_name}}-Package.zip .
|
||||
|
||||
- name: Set Title
|
||||
run: |
|
||||
echo "Tag: ${{github.ref_name}}"
|
||||
if grep -q "dev" <<< "${{github.ref_name}}"; then
|
||||
TITLE="RomWBW Development Snapshot"
|
||||
elif grep -q "pre" <<< "${{github.ref_name}}"; then
|
||||
TITLE="RomWBW Prerelease"
|
||||
elif grep -q "rc" <<< "${{github.ref_name}}"; then
|
||||
TITLE="RomWBW Release Candidate"
|
||||
else
|
||||
TITLE="RomWBW"
|
||||
fi
|
||||
echo "Title: $TITLE"
|
||||
echo "TITLE=$TITLE" >>$GITHUB_ENV
|
||||
|
||||
- name: Attach Package Archive
|
||||
uses: wwarthen/actions/packages/automatic-releases@built-packages
|
||||
with:
|
||||
upload_url: ${{github.event.release.upload_url}}
|
||||
asset_path: Package.zip
|
||||
asset_name: RomWBW-${{env.PKGLBL}}-Package.zip
|
||||
asset_content_type: application/zip
|
||||
repo_token: "${{secrets.GITHUB_TOKEN}}"
|
||||
draft: true
|
||||
prerelease: true
|
||||
title: "${{env.TITLE}} ${{github.ref_name}}"
|
||||
files: |
|
||||
RomWBW-${{github.ref_name}}-Package.zip
|
||||
|
||||
# - name: Upload Package Archive
|
||||
# uses: AButler/upload-release-assets@v2.0.2
|
||||
# with:
|
||||
# repo-token: ${{secrets.github_token}}
|
||||
# files: |
|
||||
# RomWBW-${{env.PKGLBL}}-Package.zip
|
||||
|
||||
|
||||
# - name: Post SnapShot
|
||||
# uses: docker://antonyurchenko/git-release:latest
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# RELEASE_NAME_PREFIX: "${{env.TITLE}} "
|
||||
# CHANGELOG_FILE: "none"
|
||||
# with:
|
||||
# args: |
|
||||
# RomWBW-SnapShot-Package.zip
|
||||
|
||||
# - name: Post SnapShot
|
||||
# uses: cb80/pubrel@latest
|
||||
# with:
|
||||
# replace: true
|
||||
# files: |
|
||||
# RomWBW-SnapShot-Package.zip
|
||||
|
||||
# - name: Post SnapShot
|
||||
# uses: wwarthen/actions/packages/automatic-releases@built-packages
|
||||
# with:
|
||||
# repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
# prerelease: true
|
||||
# title: "RomWBW Development SnapShot ${{env.GITHUB_REF_SLUG}}"
|
||||
# files: |
|
||||
# RomWBW-SnapShot-Package.zip
|
||||
|
||||
# - name: Remove Older Releases
|
||||
# uses: wwarthen/delete-release-action@v1.2
|
||||
# with:
|
||||
# release-drop: true
|
||||
# release-keep-count: 0
|
||||
# release-drop-tag: true
|
||||
# pre-release-drop: false
|
||||
# pre-release-keep-count: 0
|
||||
# pre-release-drop-tag: true
|
||||
# draft-drop: true
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# - name: Remove Older Releases
|
||||
# uses: s00d/delete-older-releases@0.2.1
|
||||
# with:
|
||||
# keep_latest: 1
|
||||
## delete_tag_pattern: beta # defaults to ""
|
||||
# delete_type: 'release'
|
||||
# delete_branch: 'main'
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
***********************************************************************
|
||||
*** ***
|
||||
*** R o m W B W ***
|
||||
*** ***
|
||||
*** Z80/Z180 System Software ***
|
||||
*** ***
|
||||
***********************************************************************
|
||||
|
||||
This directory ("Binary") is part of the RomWBW System Software
|
||||
distribution archive. Refer to the ReadMe.txt file in this
|
||||
directory for more information on the overall contents of the
|
||||
directory.
|
||||
|
||||
RomWBW includes a set of disk images that are ready to copy onto
|
||||
a floppy or hard/CF/SD disk. You can use your modern computer
|
||||
(Windows/Linux/Mac) to copy the disk image file onto your disk
|
||||
media. The disk media will then be ready to use in your RomWBW
|
||||
System.
|
||||
|
||||
WARNING: The hdnew_*.img disk images are part of a new disk
|
||||
format that is a work in progress. Do not use these disk
|
||||
images without knowing exactly what you are doing! The
|
||||
hd_*.img disk images continue to be the images you should
|
||||
be using under normal circumstances.
|
||||
|
||||
A description of the disk images is provided later in this file.
|
||||
For more information on the creatioin of these images including
|
||||
instructions for customizing them or creating your own, refer to
|
||||
the ReadMe.txt file in the Source\Images directory.
|
||||
|
||||
Installing Images
|
||||
-----------------
|
||||
|
||||
The following instructions apply to Windows computers. Alternatively,
|
||||
you can use the "dd" command on Linux or Mac.
|
||||
|
||||
First of all, a MAJOR WARNING!!!! The tools described below are
|
||||
quite capable of obliterating your running Windows system drive. Use
|
||||
with extreme caution and make sure you have backups.
|
||||
|
||||
To install a floppy image on floppy media, you can use the tool
|
||||
called RaWriteWin. This tool is included in the Tools directory of
|
||||
the distribution. This tool will write your floppy image (fd_xxx.img)
|
||||
to a floppy disk using a raw block transfer. The tool is GUI based
|
||||
and it's operation is self explanatory.
|
||||
|
||||
To install a hard disk image on a CF card or SD card, you must have
|
||||
the appropriate media card slot on your computer. If you do, you can
|
||||
use the tool called Win32DiskImager. This tool is also included in
|
||||
the Tools directory of the distribution. It will write your
|
||||
hard disk image (hd_xxx.img) to the designated media card. This tool
|
||||
is also GUI based and self explanatory.
|
||||
|
||||
The use of the SIMH emulator is outside of the scope of this document.
|
||||
However, if you use SIMH, you will find that you can attach the hard
|
||||
disk images to the emulator with lines such as the following in your
|
||||
SIMH configuration file:
|
||||
|
||||
| attach hdsk0 hd_cpm22.img
|
||||
| set hdsk0 format=HDSK
|
||||
| set hdsk0 geom=T:2048/N:256/S:512
|
||||
| set hdsk0 wrtenb
|
||||
|
||||
Making Disk Images Bootable
|
||||
---------------------------
|
||||
|
||||
The Operating System disk images below are ready to boot by the
|
||||
RomWBW Boot Loader. However, if you update your RomWBW ROM, then
|
||||
you should also update the system tracks of your bootable disk
|
||||
images. You would use SYSCOPY to do this. SYSCOPY can also be
|
||||
used to make a disk bootable if it is not already bootable.
|
||||
|
||||
You would use a command like the following to make drive C bootable:
|
||||
|
||||
| B>SYSCOPY C:=CPM.SYS
|
||||
|
||||
The system file to use depends on the operating system you are trying
|
||||
to boot from the slice you are initializing with SYSCOPY:
|
||||
|
||||
CP/M 2.2 - cpm.sys
|
||||
ZSDOS 1.1 - zsys.sys
|
||||
CP/M 3 - cpmldr.sys
|
||||
ZPM3 - cpmldr.sys
|
||||
|
||||
Slices
|
||||
------
|
||||
|
||||
A RomWBW CP/M filesystem is fixed at 8MB. This is because it is the
|
||||
largest size filesystem supported by all common CP/M variants. Since
|
||||
all modern hard disks (including SD Cards and CF Cards) are much
|
||||
larger than 8MB, RomWBW supports the concept of "slices". This
|
||||
simply means that you can concatenate multiple CP/M filesystems (up
|
||||
to 256 of them) on a single physical hard disk and RomWBW will allow
|
||||
you to assign drive letters to them and treat them as multiple
|
||||
independent CP/M drives.
|
||||
|
||||
With the exception of the hd_combo image, each of the disk images
|
||||
includes a single CP/M file system (i.e., a single slice). However,
|
||||
you can easily create a multi-slice disk image by merely concatenating
|
||||
multiple images together. For example, if you wanted to create a 2
|
||||
slice disk image that has ZSDOS in the first slice and Wordstar in
|
||||
the second slice, you could use the following command from a Windows
|
||||
command prompt:
|
||||
|
||||
| C:\RomWBW\Binary>copy /b hd_zsdos.img + hd_ws.img hd_multi.img
|
||||
|
||||
You can now write hd_multi.img onto your SD or CF Card and you will
|
||||
have ZSDOS in the first slice and Wordstar in the second slice.
|
||||
|
||||
The hd_combo disk image is an example of this. It contains several
|
||||
slices in one image file. The contents of this special disk image
|
||||
are described below.
|
||||
|
||||
The concept of slices applies ONLY to hard disks. Floppy disks are
|
||||
not large enough to support multiple slices.
|
||||
|
||||
Disk Image Contents
|
||||
-------------------
|
||||
|
||||
What follows is a brief description of the contents of the
|
||||
disk images automatically provided in the RomWBW distribution.
|
||||
Note that all of the OS images include the RomWBW custom
|
||||
support apps.
|
||||
|
||||
cpm22 - DRI CP/M 2.2 (Bootable Floppy and Hard Disk)
|
||||
|
||||
Standard DRI CP/M 2.2 distribution files along with a few commonly
|
||||
used utilities.
|
||||
|
||||
zsdos - ZCPR1 + ZSDOS 1.1 (Bootable Floppy and Hard Disk)
|
||||
|
||||
Contains ZCPR1 and ZSDOS 1.1. This is roughly equivalent to the
|
||||
ROM boot contents, but provides a full set of the applications
|
||||
and related files that would not all fit on the ROM drive.
|
||||
|
||||
nzcom - NZCOM (Bootable Floppy and Hard Disk)
|
||||
|
||||
Standard NZCOM distribution. Note that you will need to run the
|
||||
NZCOM setup before this will run properly. You will need
|
||||
to refer to the NZCOM documentation.
|
||||
|
||||
cpm3 - DRI CP/M3 (Bootable Floppy and Hard Disk)
|
||||
|
||||
Standard DRI CP/M 3 adaptation for RomWBW that is ready to run.
|
||||
It can be started by running CPMLDR.
|
||||
|
||||
zpm3 - ZPM3 (Bootable Floppy and Hard Disk)
|
||||
|
||||
Simeon Cran's ZCPR 3 compatible OS for CP/M 3 adapted for RomWBW and
|
||||
ready to run. It can be started by running CPMLDR (which seems
|
||||
wrong, but ZPMLDR is somewhat broken).
|
||||
|
||||
ws4 - WordStar 4 (Floppy and Hard Disk)
|
||||
|
||||
Micropro Wordstar 4 full distribution. This image is not bootable
|
||||
and is intended to be added as an additional slice to an OS image.
|
||||
|
||||
bp - BPBIOS (Hard Disk only)
|
||||
|
||||
Adaptation of BPBIOS for RomWBW. This is NOT complete and NOT
|
||||
useable in it's current state.
|
||||
|
||||
combo - Multi-Boot Combination (Bootable Hard Disk)
|
||||
|
||||
A pre-created combo image that contains the following slices. The
|
||||
slices are identical to the individual images listed above.
|
||||
|
||||
Slice 0: cpm22 (bootable)
|
||||
Slice 1: zsdos (bootable)
|
||||
Slice 2: nzcom (bootable)
|
||||
Slice 3: cpm3 (bootable)
|
||||
Slice 4: zpm3 (bootable)
|
||||
Slice 5: ws4 (not bootable)
|
||||
@@ -39,8 +39,8 @@ image for the Mark IV with the standard configuration. If a custom
|
||||
configuration called "custom" is created and built, a new file called
|
||||
MK4_custom.rom will be added to this directory.
|
||||
|
||||
Documentation of the pre-built ROM Images is contained in the
|
||||
RomList.txt file in this directory.
|
||||
Documentation of the pre-built ROM Images is contained in
|
||||
"RomWBW User Guide.pdf" in the Doc directory.
|
||||
|
||||
ROM Firmware Update Images (<plt>_<cfg>.upd)
|
||||
-------------------------------------
|
||||
@@ -49,7 +49,7 @@ The files with a ".upd" extension are binary images identical to the
|
||||
.rom files, but they only have the first 128K bytes. The first 128K
|
||||
is the system image without the ROM disk contents. These files can be
|
||||
used to update the system image without modifying the ROM disk
|
||||
contents. Refer to the Getting Started document for more information.
|
||||
contents. Refer to the RomWBW User Guide for more information.
|
||||
|
||||
ROM Executable Images (<plt>_<cfg>.com)
|
||||
---------------------------------------
|
||||
|
||||
BIN
Doc/Aztec_C_1.06_User_Manual_Mar84.pdf
Normal file
BIN
Doc/Aztec_C_1.06_User_Manual_Mar84.pdf
Normal file
Binary file not shown.
@@ -1,3 +1,46 @@
|
||||
Version 3.4
|
||||
-----------
|
||||
NOTE: Changes require HBIOS/CBIOS/Apps sync, version bump to 3.4 to ensure integrity
|
||||
- WBW: Device type number moved from upper nibble to full byte
|
||||
|
||||
Version 3.3
|
||||
-----------
|
||||
- WBW: Support Front Panel switches
|
||||
- A?C: Preliminary support for Z80-Retro
|
||||
- A?C: Support for SD PIO
|
||||
- A?C: Support for Z80-Retro SD interface
|
||||
- WBW: Support per-drive floppy configuration
|
||||
- WBW: Support for Bill Shen's VGARC
|
||||
- WBW: Support for MG014 Parallel Port module + printer
|
||||
- WBW: Support for EMM Zip Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for PPA Zip Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for SyQuest SparQ Drive on PPI interface (much inspiration from Alan Cox)
|
||||
- WBW: Support for ATAPI Disk Drives (not CD-ROMs) on IDE and PPIDE interfaces
|
||||
- R?P: Added new disk images: Aztec C, MS BASIC Compiler, MS Fortran, Games, HiTech-C, Turbo Pascal, SLR Z80ASM
|
||||
- JBL: Added RCZ80 configuration for ColecoVision
|
||||
- WBW: Support for Z180 running interrupt mode 1
|
||||
- WBW: Preliminary support for S100 Computers Z180
|
||||
- WBW: Preliminary support for Dan Werner's ESP32 MBC Module
|
||||
- WBW: Early support for Duodyne base system (CPU/UART/ROM/RAM/RTC/SPK)
|
||||
- M?C: Fixed XM to allow specifying HBIOS port for send operations
|
||||
- WBW: Fix S100 Z180 LED operation (credit to Jay Cotton for finding this issue)
|
||||
- WBW: QPM system image is now combined with current CBIOS during build
|
||||
- WBW: Added framework for Heath platform
|
||||
- WBW: Support for USB Disks via CH375/CH376
|
||||
- D?J: Support for Raspberry Pi build process
|
||||
|
||||
Version 3.2.1
|
||||
-------------
|
||||
- M?P: Fixed Zeta 2 FDD and CPUSPD config settings
|
||||
- WBW: Fixed SURVEY.COM (again)
|
||||
- DDW: Updates to DOS/65 binaries in disk images
|
||||
- PMS: Updates to VGMPLAY including support for YM2151
|
||||
- WBW: Fix for quark delay adjustment being trashed
|
||||
|
||||
Version 3.2
|
||||
-----------
|
||||
- WBW: Version bump for release
|
||||
|
||||
Version 3.1.1
|
||||
-------------
|
||||
- WBW: Version bumped due to pervasive changes
|
||||
|
||||
11351
Doc/HI-TECH Z80 C Compiler Manual.txt
Normal file
11351
Doc/HI-TECH Z80 C Compiler Manual.txt
Normal file
File diff suppressed because it is too large
Load Diff
4090
Doc/Microsoft_FORTRAN-80_Users_Manual_1977.pdf
Normal file
4090
Doc/Microsoft_FORTRAN-80_Users_Manual_1977.pdf
Normal file
File diff suppressed because one or more lines are too long
131
Doc/ReadMe.txt
131
Doc/ReadMe.txt
@@ -6,17 +6,37 @@
|
||||
*** ***
|
||||
***********************************************************************
|
||||
|
||||
This directory ("Doc") is part of the RomWBW System Software
|
||||
distribution archive. It contains documentation for components of
|
||||
This directory ("Doc") is part of the RomWBW System Software
|
||||
distribution archive. It contains documentation for components of
|
||||
the system.
|
||||
|
||||
ChangeLog.txt
|
||||
-------------
|
||||
|
||||
Log of changes in RomWBW by version.
|
||||
|
||||
|
||||
RomWBW User Guide ("RomWBW User Guide.pdf")
|
||||
RomWBW System Guide ("RomWBW System Guide.pdf")
|
||||
RomWBW Applications ("RomWBW Applications.pdf")
|
||||
RomWBW ROM Applications ("RomWBW ROM Applications.pdf")
|
||||
RomWBW Disk Catalog ("RomWBW Disk Catalog.pdf")
|
||||
RomWBW Errata ("RomWBW Errata.pdf")
|
||||
-------------------------------------------------------
|
||||
|
||||
Documentation set for RomWBW. The primary document is the
|
||||
User Guide. The System Guide explains internal system operation
|
||||
and has a reference for the HBIOS API. Use of included tools
|
||||
and utilities are detailed in the Applications and
|
||||
ROM Applications documents.
|
||||
|
||||
|
||||
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
|
||||
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.
|
||||
|
||||
|
||||
@@ -39,16 +59,10 @@ Manual for the DDTZ v2.7 debug tool included on the ROM drive.
|
||||
FDisk Manual ("FDisk Manual.pdf")
|
||||
---------------------------------
|
||||
|
||||
The operational manual for John Coffman's hard disk partitioning
|
||||
The operational manual for John Coffman's hard disk partitioning
|
||||
program. This program is included in RomWBW as FDISK80.
|
||||
|
||||
|
||||
Floppy Disk Utility Documentation ("FDU.tst")
|
||||
---------------------------------------------
|
||||
|
||||
Operational documentation for the RomWBW FDU application.
|
||||
|
||||
|
||||
Hard Disk Anatomy ("Hard Disk Anatomy.pdf")
|
||||
-------------------------------------------
|
||||
|
||||
@@ -61,17 +75,46 @@ NZCOM User's Manual ("NZCOM Users Manual.pdf")
|
||||
NZCOM operating system operation manual.
|
||||
|
||||
|
||||
RomWBW Architecture ("RomWBW Architecture.pdf")
|
||||
-----------------------------------------------
|
||||
ZCPR Manual ("ZCPR Manual.pdf")
|
||||
-------------------------------
|
||||
|
||||
Document describing the architecture of the RomWBW HBIOS. It
|
||||
includes reference information for the HBIOS calls.
|
||||
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.
|
||||
|
||||
ROM Applications ("ROM Applications.pdf")
|
||||
-----------------------------------------
|
||||
ZCPR D&J Manual ("ZCPR-DJ.doc")
|
||||
-------------------------------
|
||||
|
||||
Breif instructions for the ROM based applications included in
|
||||
in the boot ROM.
|
||||
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)
|
||||
---------------------------------------------------------
|
||||
|
||||
Documents possible baud rates available based on different baud
|
||||
clock rates for Zilog SIO using CTC for baud rate clock generation.
|
||||
|
||||
|
||||
Z180 ASCI Baud Rate Options ("Z180 ASCI Baud Rate Options.pdf")
|
||||
@@ -83,19 +126,43 @@ clock rate. This document provides a list of the possible
|
||||
baud rates for typical CPU clock rates.
|
||||
|
||||
|
||||
ZCPR Manual ("ZCPR Manual.pdf")
|
||||
-------------------------------
|
||||
UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
|
||||
-------------------------------------------------------------
|
||||
|
||||
ZCPR is the command proccessor portion of Z-System. This is the
|
||||
manual for ZCPR 1.x as included in RomWBW. The installation
|
||||
instructions can be ignored since that work has already been
|
||||
completed as part of the RomWBW distribution.
|
||||
Official user manual for p-System operating system included with
|
||||
RomWBW.
|
||||
|
||||
|
||||
ZSDOS Manual ("ZSDOS Manual.pdf")
|
||||
---------------------------------
|
||||
Z80 Assembler User Manual (z80asm (SLR Systems).pdf)
|
||||
----------------------------------------------------
|
||||
|
||||
ZSDOS is the DOS portion of Z-System. This is the manual fo ZSDOS
|
||||
1.x as included in RomWBW. The installation instructions can be
|
||||
ignored since that work has already been completed as part of the
|
||||
RomWBW distribution.
|
||||
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
|
||||
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.
@@ -40,7 +40,7 @@ N8-2312 (X)
|
||||
- Test FDU app
|
||||
- Test TMS driver (video & kbd)
|
||||
|
||||
N8-2511 ( )
|
||||
N8-2511 (X)
|
||||
-------
|
||||
- Test ASCI driver
|
||||
- Test SD driver (Juha mode)
|
||||
@@ -139,27 +139,6 @@ GENERAL (X)
|
||||
- ASSIGN app
|
||||
- MODE app
|
||||
- SYSCOPY app
|
||||
- OSLDR app
|
||||
- FDU app
|
||||
- FDISK80 app
|
||||
- TUNE app
|
||||
|
||||
RESULTS
|
||||
-------
|
||||
- Missing HBIOS startup banner (X)
|
||||
- PANIC while printing Serial device inventory (X)
|
||||
- Unexpected interrupt signals not handled well (X)
|
||||
- Fix IT_??? usage (X)
|
||||
- Fix HB_DI/HB_EI in PEEK/POKE/BNKCPY (X)
|
||||
- Fix SIMH timer interrupt setup (X)
|
||||
- Move DI/EI in PEEK/POKE/BNKCPY to API layer? (X)
|
||||
- RETI vs. JP in page zero when INTMODE = 0 (X)
|
||||
- Check interrupt stack space (X)
|
||||
- If an early INT fires, we return with INTs enabled (not good) (X)
|
||||
- PPPCON init should display ANSI 80x25 or similar (X)
|
||||
- Add INT MODE X message to early boot messages (X)
|
||||
- OSLDR fails when LDDS is loaded (X)
|
||||
- Add "!!!" to force assembly error as needed ( )
|
||||
- TIMER app should check for HBIOS active (X)
|
||||
- Halt system after bad interrupt??? ( )
|
||||
- Adapt and bundle PLAYER.COM (X)
|
||||
|
||||
49495
Doc/Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
Normal file
49495
Doc/Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
Normal file
File diff suppressed because one or more lines are too long
Binary file not shown.
BIN
Doc/z80asm (SLR Systems).pdf
Normal file
BIN
Doc/z80asm (SLR Systems).pdf
Normal file
Binary file not shown.
8
Makefile
8
Makefile
@@ -1,5 +1,11 @@
|
||||
all:
|
||||
.PHONY: tools source clean clobber diff dist
|
||||
|
||||
all: tools source
|
||||
|
||||
tools:
|
||||
$(MAKE) --directory Tools
|
||||
|
||||
source:
|
||||
$(MAKE) --directory Source
|
||||
|
||||
clean:
|
||||
|
||||
36
ReadMe.md
36
ReadMe.md
@@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.2 \
|
||||
Version 3.4 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
05 Mar 2023
|
||||
13 Oct 2023
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -128,8 +128,8 @@ contributions. The list below is probably missing many names – please
|
||||
let me know if I missed you!
|
||||
|
||||
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
|
||||
became the first platform RomWBW supported. Some of his code can still
|
||||
be found in RomWBW.
|
||||
became the first platform RomWBW supported. Some of his original code
|
||||
can still be found in RomWBW.
|
||||
|
||||
- Dan Werner wrote much of the code from which RomWBW was originally
|
||||
derived and he has always been a great source of knowledge and advice.
|
||||
@@ -140,23 +140,30 @@ let me know if I missed you!
|
||||
due to internal changes within RomWBW. As of RomWBW 2.6, these
|
||||
applications are no longer provided.
|
||||
|
||||
- Sergey Kiselev created several hardware platforms for RomWBW including
|
||||
the very popular Zeta.
|
||||
|
||||
- David Giles created support for the Z180 CSIO which is now included SD
|
||||
Card driver.
|
||||
|
||||
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver, DMA support, and a long list of general code
|
||||
and documentation enhancements.
|
||||
|
||||
- Ed Brindley contributed some of the code that supports the RCBus
|
||||
platform.
|
||||
|
||||
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver as well as a long list of general code
|
||||
enhancements.
|
||||
|
||||
- Spencer Owen created the RC2014 series of hobbyist kit computers which
|
||||
has exponentially increased RomWBW usage.
|
||||
has exponentially increased RomWBW usage. Some of his kits include
|
||||
RomWBW.
|
||||
|
||||
- Stephen Cousins has likewise created a series of hobbyist kit
|
||||
computers at Small Computer Central and is distributing RomWBW with
|
||||
many of them.
|
||||
|
||||
- Alan Cox has contributed some driver code and has provided a great
|
||||
deal of advice.
|
||||
|
||||
- The CP/NET client files were developed by Douglas Miller.
|
||||
|
||||
- Phillip Stevens contributed support for FreeRTOS.
|
||||
@@ -176,6 +183,10 @@ let me know if I missed you!
|
||||
|
||||
- The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
- Rob Prouse has created many of the supplemental disk images including
|
||||
Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft BASIC Compiler,
|
||||
Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
@@ -197,14 +208,15 @@ Portions of RomWBW were created by, contributed by, or derived from the
|
||||
work of others. It is believed that these works are being used in
|
||||
accordance with the intentions and/or licensing of their creators.
|
||||
|
||||
If anyone feels their work is being used outside of it’s intended
|
||||
If anyone feels their work is being used outside of its intended
|
||||
licensing, please notify:
|
||||
|
||||
> Wayne Warthen wwarthen@gmail.com
|
||||
> Wayne Warthen
|
||||
> <wwarthen@gmail.com>
|
||||
|
||||
RomWBW is an aggregate work. It is composed of many individual,
|
||||
standalone programs that are distributed as a whole to function as a
|
||||
cohesive system. Each program may have it’s own licensing which may be
|
||||
cohesive system. Each program may have its own licensing which may be
|
||||
different from other programs within the aggregate.
|
||||
|
||||
In some cases, a single program (e.g., CP/M Operating System) is
|
||||
|
||||
34
ReadMe.txt
34
ReadMe.txt
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
05 Mar 2023
|
||||
13 Oct 2023
|
||||
|
||||
|
||||
|
||||
@@ -129,8 +129,8 @@ contributions. The list below is probably missing many names – please
|
||||
let me know if I missed you!
|
||||
|
||||
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
|
||||
became the first platform RomWBW supported. Some of his code can
|
||||
still be found in RomWBW.
|
||||
became the first platform RomWBW supported. Some of his original
|
||||
code can still be found in RomWBW.
|
||||
|
||||
- Dan Werner wrote much of the code from which RomWBW was originally
|
||||
derived and he has always been a great source of knowledge and
|
||||
@@ -142,23 +142,30 @@ let me know if I missed you!
|
||||
due to internal changes within RomWBW. As of RomWBW 2.6, these
|
||||
applications are no longer provided.
|
||||
|
||||
- Sergey Kiselev created several hardware platforms for RomWBW
|
||||
including the very popular Zeta.
|
||||
|
||||
- David Giles created support for the Z180 CSIO which is now included
|
||||
SD Card driver.
|
||||
|
||||
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver, DMA support, and a long list of general code
|
||||
and documentation enhancements.
|
||||
|
||||
- Ed Brindley contributed some of the code that supports the RCBus
|
||||
platform.
|
||||
|
||||
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver as well as a long list of general code
|
||||
enhancements.
|
||||
|
||||
- Spencer Owen created the RC2014 series of hobbyist kit computers
|
||||
which has exponentially increased RomWBW usage.
|
||||
which has exponentially increased RomWBW usage. Some of his kits
|
||||
include RomWBW.
|
||||
|
||||
- Stephen Cousins has likewise created a series of hobbyist kit
|
||||
computers at Small Computer Central and is distributing RomWBW with
|
||||
many of them.
|
||||
|
||||
- Alan Cox has contributed some driver code and has provided a great
|
||||
deal of advice.
|
||||
|
||||
- The CP/NET client files were developed by Douglas Miller.
|
||||
|
||||
- Phillip Stevens contributed support for FreeRTOS.
|
||||
@@ -178,6 +185,10 @@ let me know if I missed you!
|
||||
|
||||
- The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
- Rob Prouse has created many of the supplemental disk images
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
|
||||
@@ -202,14 +213,15 @@ Portions of RomWBW were created by, contributed by, or derived from the
|
||||
work of others. It is believed that these works are being used in
|
||||
accordance with the intentions and/or licensing of their creators.
|
||||
|
||||
If anyone feels their work is being used outside of it’s intended
|
||||
If anyone feels their work is being used outside of its intended
|
||||
licensing, please notify:
|
||||
|
||||
Wayne Warthen wwarthen@gmail.com
|
||||
Wayne Warthen
|
||||
wwarthen@gmail.com
|
||||
|
||||
RomWBW is an aggregate work. It is composed of many individual,
|
||||
standalone programs that are distributed as a whole to function as a
|
||||
cohesive system. Each program may have it’s own licensing which may be
|
||||
cohesive system. Each program may have its own licensing which may be
|
||||
different from other programs within the aggregate.
|
||||
|
||||
In some cases, a single program (e.g., CP/M Operating System) is
|
||||
|
||||
@@ -32,6 +32,7 @@ pushd Dev && call Build || exit /b & popd
|
||||
pushd VGM && call Build || exit /b & popd
|
||||
pushd cpuspd && call Build || exit /b & popd
|
||||
pushd Survey && call Build || exit /b & popd
|
||||
pushd HTalk && call Build || exit /b & popd
|
||||
|
||||
copy *.com %APPBIN%\ || exit /b
|
||||
|
||||
|
||||
@@ -18,3 +18,4 @@ pushd Dev && call Clean || exit /b 1 & popd
|
||||
pushd VGM && call Clean || exit /b 1 & popd
|
||||
pushd cpuspd && call Clean || exit /b 1 & popd
|
||||
pushd Survey && call Clean || exit /b 1 & popd
|
||||
pushd HTalk && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
RomWBW HBIOS CP/M FAT Utility ("FAT.COM")
|
||||
|
||||
Author: Wayne Warthen
|
||||
Updated: 12-Apr-2021
|
||||
Updated: 12-Oct-2023
|
||||
|
||||
Application to manipulate and exchange files with a FAT (DOS)
|
||||
filesystem. Runs on any HBIOS hosted CP/M implementation.
|
||||
@@ -101,4 +101,5 @@ HISTORY:
|
||||
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.
@@ -153,7 +153,8 @@ JP2 (/FAULT) shorted, JP3 (MINI): 2-3, JP4 (/DC/RDY): 2-3.
|
||||
|
||||
The RCBus Scott Baker WDC-based floppy module should be jumpered
|
||||
for I/O base address 0x50 (SV1: 11-12), JP1 (/DACK): 1-2,
|
||||
JP2 (TC): 2-3.
|
||||
JP2 (TC): 2-3. Note that pin 1 of JPX jumpers is toward the bottom
|
||||
of the board.
|
||||
|
||||
The RCBus FDC by Alan Cox (Etched Pixels) needs to be strapped
|
||||
for base I/O address 0x48.
|
||||
|
||||
14
Source/Apps/HTalk/Build.cmd
Normal file
14
Source/Apps/HTalk/Build.cmd
Normal file
@@ -0,0 +1,14 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
echo Building HTalk...
|
||||
tasm -t80 -g3 -fFF htalk.asm htalk.com %htalk.lst || exit /b
|
||||
|
||||
copy /Y htalk.com ..\..\..\Binary\Apps\ || exit /b
|
||||
rem copy /Y *.ovr ..\..\..\Binary\Apps\ || exit /b
|
||||
rem copy /Y *.hlp ..\..\..\Binary\Apps\ || exit /b
|
||||
rem copy /Y *.doc ..\..\..\Binary\Apps\ || exit /b
|
||||
5
Source/Apps/HTalk/Clean.cmd
Normal file
5
Source/Apps/HTalk/Clean.cmd
Normal file
@@ -0,0 +1,5 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.lst del *.lst
|
||||
10
Source/Apps/HTalk/Makefile
Normal file
10
Source/Apps/HTalk/Makefile
Normal file
@@ -0,0 +1,10 @@
|
||||
OBJECTS = htalk.com
|
||||
#DOCS = htalk.txt
|
||||
DEST = ../../../Binary/Apps
|
||||
DOCDEST = ../../../Binary/Apps
|
||||
TOOLS = ../../../Tools
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
%.com: USETASM=1
|
||||
|
||||
|
||||
725
Source/Apps/HTalk/htalk.asm
Normal file
725
Source/Apps/HTalk/htalk.asm
Normal file
@@ -0,0 +1,725 @@
|
||||
;===============================================================================
|
||||
;HTALK - BARE MINIMUM TERMINAL INTERFACE
|
||||
;
|
||||
; CONSOLE TALKS TO ARBITRARY CHARACTER DEVICE.
|
||||
;===============================================================================
|
||||
;
|
||||
; AUTHOR: TOM PLANO (TOMPLANO@PROTON.ME)
|
||||
;
|
||||
; USAGE:
|
||||
; HTALK $<CHAR_DEVICE_NUM>
|
||||
;
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; CHANGE LOG:
|
||||
; I'VE NOTATED SECTIONS OF CODE THAT ARNT REQUIRED IF THIS APP IS
|
||||
; INCORPORATED INTO DBGMOD WITH A <OPT> TAG
|
||||
;
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; TODO:
|
||||
; SEE ENUM_DEV1 TODO
|
||||
;
|
||||
;
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
;===============================================================================
|
||||
; DEFINITIONS
|
||||
;===============================================================================
|
||||
;
|
||||
STKSIZ .EQU $FF
|
||||
;
|
||||
; HBIOS SYSTEM CALLS AND ID STRING ADDRESS
|
||||
;
|
||||
ROMWBW_ID .EQU $FFFE ; ROMWBW ID STRING ADDRESS
|
||||
HBIOS_SYS .EQU $FFF0 ; HBIOS SYSCALL ADDRESS
|
||||
|
||||
H_SYSGET .EQU $F8 ; GET SYSTEM INFO
|
||||
H_CIOCNT .EQU $00 ; GET CHAR DEV COUNT SUBFUNCTION
|
||||
|
||||
BF_CIOIN .EQU $00 ; HBIOS CHAR INPUT
|
||||
BF_CIOOUT .EQU $01 ; HBIOS CHAR OUTPUT
|
||||
BF_CIOIST .EQU $02 ; HBIOS CHAR INPUT STATUS
|
||||
BF_CIOOST .EQU $03 ; HBIOS CHAR OUTPUT STATUS
|
||||
BF_CIOINIT .EQU $04 ; HBIOS CHAR I/O INIT
|
||||
BF_CIOQUERY .EQU $05 ; HBIOS CHAR I/O QUERY
|
||||
BF_CIODEVICE .EQU $06 ; HBIOS CHAR I/O DEVICE
|
||||
;
|
||||
; SUPPORTED HBIOS CIO DEVICE TYPES
|
||||
;
|
||||
CIODEV_UART .EQU $00 ; 16C550 FAMILY SERIAL INTERFACE UART.ASM
|
||||
CIODEV_ASCI .EQU $10 ; Z180 BUILT-IN SERIAL PORTS ASCI.ASM
|
||||
CIODEV_TERM .EQU $20 ; TERMINAL ANSI.ASM
|
||||
CIODEV_PRPCON .EQU $30 ; PROPIO SERIAL CONSOLE INTERFACE PRP.ASM
|
||||
CIODEV_PPPCON .EQU $40 ; PARPORTPROP SERIAL CONSOLE INTERFACE PPP.ASM
|
||||
CIODEV_SIO .EQU $50 ; ZILOG SERIAL PORT INTERFACE SIO.ASM
|
||||
CIODEV_ACIA .EQU $60 ; MC68B50 ASYNCHRONOUS INTERFACE ACIA.ASM
|
||||
CIODEV_PIO .EQU $70 ; ZILOG PARALLEL INTERFACE CONTROLLER PIO.ASM
|
||||
CIODEV_UF .EQU $80 ; FT232H-BASED ECB USB FIFO UF.ASM
|
||||
CIODEV_DUART .EQU $90 ; SCC2681 FAMILY DUAL UART DUART.ASM
|
||||
CIODEV_Z2U .EQU $A0 ; ZILOG Z280 BUILT-IN SERIAL PORTS Z2U.ASM
|
||||
CIODEV_LPT .EQU $B0 ; PARALLEL I/O CONTROLLER LPT.ASM
|
||||
|
||||
; HBIOS CURRENT CONSOLE NUMBER
|
||||
CIO_CONSOLE .EQU $80
|
||||
|
||||
; SPECIAL CHARS
|
||||
CTRLC .EQU $03
|
||||
CHR_BEL .EQU $07
|
||||
CHR_CR .EQU $0D
|
||||
CHR_LF .EQU $0A
|
||||
CHR_BS .EQU $08
|
||||
CHR_ESC .EQU $1B
|
||||
CHR_DEL .EQU $7F
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; BEGIN MAIN PROGRAM
|
||||
;===============================================================================
|
||||
;
|
||||
.ORG $0100
|
||||
;
|
||||
; SETUP STACK (SAVE OLD VALUE)
|
||||
; <OPT> HANDLED BY DBGMON
|
||||
LD (STKSAV),SP
|
||||
LD SP,STACK
|
||||
|
||||
|
||||
;
|
||||
; INITIALIZATION + STARTUP MESSAGE + HBIOS DETECT
|
||||
; <OPT> HANDLED BY DBGMON
|
||||
CALL INIT_PROG
|
||||
JP NZ,EXIT
|
||||
;
|
||||
; LIST HBIOS DEV OPTIONS FOR REFERENCE
|
||||
; ALSO GETS MAX CONN
|
||||
;
|
||||
; <OPT> THIS IS OPTIONAL BECAUSE IF A CHAR DEVICE DOESNT EXIST, WE NEVER READ OR
|
||||
; WRITE TO IT, WE SIMPLY CALL CIOIST AND CIOOST OVER AND OVER ON IT, WITHOUT
|
||||
; EVER PUSHING DATA TO IT
|
||||
CALL ENUM_DEV
|
||||
JP NZ,EXIT
|
||||
;
|
||||
; PARSE COMMAND LINE
|
||||
;
|
||||
CALL PARSE
|
||||
JP NZ,EXIT
|
||||
;
|
||||
; RUN CONVERSTION WITH CHAR DEVICE
|
||||
;
|
||||
CALL TALK
|
||||
;
|
||||
; DONE
|
||||
JP EXIT
|
||||
|
||||
|
||||
;
|
||||
; CLEAN UP AND RETURN TO CALLING PROCESS
|
||||
;
|
||||
EXIT:
|
||||
CALL NEWLINE ; ...
|
||||
LD HL,STR_EXITMSG ; LOAD EXIT STRING
|
||||
CALL PRTSTR ; PRINT IT
|
||||
CALL NEWLINE ; ...
|
||||
LD SP,(STKSAV) ; RESET STACK
|
||||
RET ; RETURN TO CALLER
|
||||
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; END MAIN PROGRAM
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; BEGIN MAIN PROGRAM SUBROUTINES
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
INIT_PROG:
|
||||
LD HL, STR_BANNER ; LOAD WELCOME BANNER
|
||||
CALL PRTSTR ; PRINT IT
|
||||
CALL NEWLINE ; ...
|
||||
LD HL,(ROMWBW_ID) ; GET FIRST BYTE OF ROMWBW MARKER
|
||||
LD A,(HL) ; ... THROUGH HL
|
||||
CP 'W' ; MATCH?
|
||||
JP NZ,NOTHBIOS ; ABORT WITH INVALID CONFIG BLOCK
|
||||
INC HL ; NEXT BYTE (MARKER BYTE 2)
|
||||
LD A,(HL) ; LOAD IT
|
||||
CP ~'W' ; MATCH?
|
||||
JP NZ,NOTHBIOS ; ABORT WITH INVALID CONFIG BLOCK
|
||||
LD HL,STR_HBIOS ; POINT TO HBIOS STR
|
||||
CALL PRTSTR ; PRINT IT
|
||||
CALL NEWLINE ; ...
|
||||
RET
|
||||
;
|
||||
; HBOIS NOT DETECTED, BAIL OUT W/ ERROR
|
||||
;
|
||||
NOTHBIOS:
|
||||
LD HL,STR_BIOERR ; LOAD HBIOS NOT FOUND STR
|
||||
CALL PRTSTR ; PRINT IT
|
||||
CALL NEWLINE ; ...
|
||||
AND $FF ; SET FLAGS
|
||||
RET
|
||||
|
||||
ENUM_DEV:
|
||||
;
|
||||
; CHAR COUNT HEADER
|
||||
;
|
||||
LD HL,STR_DEVS_FOUND
|
||||
CALL PRTSTR
|
||||
;
|
||||
;GET COUNT OF CHAR UNITS
|
||||
;
|
||||
LD B,H_SYSGET ; LOAD SYSGET HBIOS FUNCTION
|
||||
LD C,H_CIOCNT ; LOAD SYSGET CHAR DEV COUNT SUBFUNCTION
|
||||
CALL HBIOS_SYS ; JUMP TO HBIOS
|
||||
OR A ; SET FLAGS
|
||||
JP NZ, EXIT ; JUMP TO EXIT ON FAILED
|
||||
LD A,E ; NUM CHAR DEVICES NOW IN A
|
||||
|
||||
DEC A ; DEC NUM DEVICES TO BE 0 INDEXED
|
||||
LD (CIODEV_CNT), A ; STORE BEFORE PRINT
|
||||
LD (CIODEV_MAX), A ; STORE BEFORE PRINT
|
||||
INC A ; RESTORE NUM DEVICES VALUE
|
||||
|
||||
CALL PRTHEX ; PRINT NUMBER OF UNITS FOUND
|
||||
CALL NEWLINE ; ...
|
||||
|
||||
ENUM_DEV1:
|
||||
|
||||
LD IX, TGT_DEV
|
||||
; TODO: H AND L DONT ALWAYS GET SET BY THE DRIVERS. FIND SOME WAY TO MASK
|
||||
; THEM OUT IF THEY ARE THE SAME BEFORE AND AFTER THE CALL?
|
||||
LD B, BF_CIODEVICE ; LOAD HBIOS FUNCTION TO QUERRY DEVICE INFO
|
||||
LD HL, CIODEV_CNT ; REQUEST A CHAR DEVICE
|
||||
LD C, (HL) ; ...
|
||||
LD (IX), C ; REMEMBER WHAT DEVICE WE ASKED FOR BEFORE BE
|
||||
CALL HBIOS_SYS ; EXECUTE HBIOS SUBROUTINE
|
||||
OR A ; SET FLAGS
|
||||
RET NZ ; RETURN FAILED
|
||||
;
|
||||
; STORE RESULTS OF HBOIS DEVICE QUERRY
|
||||
;
|
||||
LD A,C ; MOVE C TO A
|
||||
LD (IX+1), A ; STORE A DEVICE ATTRIBUTES, SKIP FIRST ENTRY
|
||||
LD A,D
|
||||
LD (IX+2), A
|
||||
LD A,E
|
||||
LD (IX+3), A
|
||||
LD A,H
|
||||
LD (IX+4), A
|
||||
LD A,L
|
||||
LD (IX+5), A
|
||||
;
|
||||
; PRINT FORMATED DATA LOOP
|
||||
;
|
||||
LD B, $06 ; PRINT THE 5 ELEMENTS OF DEV_STR_TBL
|
||||
LD HL,DEV_STR_TBL ; TABLE BASE PTR
|
||||
|
||||
PLOOP_BASE:
|
||||
CALL PRTSTR ; PTRSTR INCREMENTS HL FOR US
|
||||
LD A, (IX)
|
||||
CALL PRTHEX
|
||||
LD A, '|'
|
||||
CALL COUT
|
||||
INC IX
|
||||
DJNZ PLOOP_BASE
|
||||
|
||||
CALL NEWLINE
|
||||
|
||||
LD A, (CIODEV_CNT)
|
||||
DEC A
|
||||
LD (CIODEV_CNT), A
|
||||
JP P, ENUM_DEV1 ; JUMP WHILE CIODEV_CNT >=0
|
||||
AND $00
|
||||
RET
|
||||
|
||||
|
||||
;
|
||||
; RUN CONVERSTION WITH CHAR DEVICE
|
||||
;
|
||||
TALK:
|
||||
;
|
||||
; INIT PING PONG DEVICE POINTERS
|
||||
;
|
||||
LD IX, USER_CON ; LOAD VALUE AT ADDR USER_CON
|
||||
LD A, (IX) ; LOAD VALUE AT ADDR USER_CON
|
||||
LD (RF_DEV), A ; STORE TO ADDR RF_DEV
|
||||
LD A, (IX+1) ; LOAD VALUE AT ADDR TARGET_CON
|
||||
LD (WT_DEV), A ; STORE TO ADDR WT_DEV
|
||||
;
|
||||
; READ FROM RF_DEV -> WRITE TO WT_DEV
|
||||
;
|
||||
TALK_LOOP:
|
||||
;
|
||||
; CHECK FOR DATA ON RF_DEV
|
||||
;
|
||||
LD B,BF_CIOIST ; SET HBIOS FUNCTION TO RUN
|
||||
LD HL, RF_DEV
|
||||
LD C,(HL)
|
||||
CALL HBIOS_SYS ; CHECK FOR CHAR PENDING ON INPUT BUFFER USING HBIOS
|
||||
OR A ; SET FLAGS
|
||||
JP Z,TALK_NEXT ; JUMP NO CHARACTERS READY
|
||||
JP M,TALK_NEXT ; JUMP ERROR ON READ
|
||||
;
|
||||
; EXEC READ FROM RF_DEV
|
||||
;
|
||||
LD B,BF_CIOIN ; SET FUNCTION TO RUN
|
||||
LD HL, RF_DEV
|
||||
LD C,(HL) ; RETRIEVE CON_DEV_NUM TO READ/WRITE FROM ACTIVE CONSOLE
|
||||
CALL HBIOS_SYS ; CHECK FOR CHAR PENDING USING HBIOS
|
||||
LD A,E ; MOVE RESULT TO A
|
||||
CP CTRLC ; CHECK FOR EXIT REQUEST (CTRL+C)
|
||||
RET Z ; IF SO, BAIL OUT
|
||||
PUSH AF ; SAVE THE CHAR WE READ
|
||||
;
|
||||
; CHECK FOR SPACE ON WT_DEV
|
||||
;
|
||||
LD B,BF_CIOOST ; SET HBIOS FUNCTION TO RUN
|
||||
LD HL, WT_DEV
|
||||
LD C,(HL)
|
||||
CALL HBIOS_SYS ; CHECK FOR SPACE IN OUTPUT BUFFER USING HBIOS
|
||||
|
||||
OR A ; 0 OR 1 IS A VALID RETURN
|
||||
JP Z,TALK_NEXT ; JUMP NO SPACE
|
||||
JP M,TALK_NEXT ; JUMP ERROR ON WRITE
|
||||
;
|
||||
; EXEC WRITE TO WT_DEV
|
||||
;
|
||||
LD B,BF_CIOOUT ; SET HBIOS FUNCTION TO RUN
|
||||
LD HL, WT_DEV
|
||||
LD C,(HL) ; RETRIEVE TGT_DEV_NUM TO READ/WRITE FROM TARGET CHAR DEVICE
|
||||
;
|
||||
POP AF ; RECOVER THE CHARACTER
|
||||
LD E,A ; MOVE CHARACTER TO E
|
||||
CALL HBIOS_SYS ; WRITE CHAR USING HBIOS
|
||||
|
||||
TALK_NEXT:
|
||||
;
|
||||
; SWAP RF_DEV AND WT_DEV
|
||||
;
|
||||
LD IX, RF_DEV ; LOAD VALUE AT ADDR USER_CON
|
||||
LD A, (IX) ; LOAD VALUE AT ADDR RF_DEV
|
||||
LD B, (IX+1) ; LOAD VALUE AT ADDR WT_DEV
|
||||
LD (IX+1), A ; STORE TO OLD RF_DEV TO ADDR WT_DEV
|
||||
LD A, B ; MOVE OLD WT_DEV TO A
|
||||
LD (IX), A ; STORE TO OLD WT_DEF TO ADDR RF_DEV
|
||||
JP TALK_LOOP ; LOOP
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; END MAIN PROGRAM SUBROUTINES
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; BEGIN ROUTINES THAT ARE NOT COMPATIBLE WITH DBGMON
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
|
||||
PARSE:
|
||||
;
|
||||
LD HL,$81 ; POINT TO START OF COMMAND TAIL (AFTER LENGTH BYTE)
|
||||
CALL NONBLANK ; SKIP LEADING BLANKS,
|
||||
CALL HEXBYTE
|
||||
JP C,ERRHEXRD ; IF NOT, ERR
|
||||
LD (TARGET_CON),A ; REQUESTED TARGET CONN
|
||||
|
||||
LD B,A ; MOVE TO B
|
||||
|
||||
LD HL,CIODEV_MAX ; GRAB MAX VALUE OF TARGETCON
|
||||
LD A,(HL)
|
||||
|
||||
CP B ; CHECK IF B<=A
|
||||
JP M, ERROOR ; IF B>A, and both are less then 80 then S SET, ERR
|
||||
JP C, ERROOR ; IF B> 80 carry set instead (signed numbers problem)
|
||||
; swap A and B
|
||||
|
||||
JP PE, ERROOR ; IF B>A, C SET, ERR
|
||||
|
||||
LD HL, MSGTALKING ; PRINT TARGET DEVICE
|
||||
CALL PRTSTR
|
||||
LD A, B ; RETRIEVE TARGET CON
|
||||
CALL PRTHEX
|
||||
CALL NEWLINE
|
||||
|
||||
AND $00
|
||||
RET
|
||||
|
||||
|
||||
|
||||
;
|
||||
;NOT COMPATIBLE WITH THE DBGMON FUNCTION OF THE SAME NAME
|
||||
;
|
||||
NONBLANK:
|
||||
LD A,(HL) ; LOAD NEXT CHARACTER
|
||||
OR A ; STRING ENDS WITH A NULL
|
||||
RET Z ; IF NULL, RETURN POINTING TO NULL
|
||||
CP ' ' ; CHECK FOR BLANK
|
||||
RET NZ ; RETURN IF NOT BLANK
|
||||
INC HL ; IF BLANK, INCREMENT CHARACTER POINTER
|
||||
JR NONBLANK ; AND LOOP
|
||||
|
||||
;
|
||||
;
|
||||
;===============================================================================
|
||||
; END ROUTINES THAT ARE NOT COMPATIBLE WITH DBGMON
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; BEGIN ROUTINES THAT ARE LIFTED FROM DBGMON
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; PRINT THE VALUE IN A IN HEX WITHOUT DESTROYING ANY REGISTERS
|
||||
;
|
||||
PRTHEX:
|
||||
PUSH DE ; SAVE DE
|
||||
CALL HEXASCII ; CONVERT VALUE IN A TO HEX CHARS IN DE
|
||||
LD A,D ; GET THE HIGH ORDER HEX CHAR
|
||||
CALL COUT ; PRINT IT
|
||||
LD A,E ; GET THE LOW ORDER HEX CHAR
|
||||
CALL COUT ; PRINT IT
|
||||
POP DE ; RESTORE DE
|
||||
RET ; DONE
|
||||
|
||||
;
|
||||
; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE
|
||||
;
|
||||
|
||||
HEXASCII:
|
||||
LD D,A ; SAVE A IN D
|
||||
CALL HEXCONV ; CONVERT LOW NIBBLE OF A TO HEX
|
||||
LD E,A ; SAVE IT IN E
|
||||
LD A,D ; GET ORIGINAL VALUE BACK
|
||||
RLCA ; ROTATE HIGH ORDER NIBBLE TO LOW BITS
|
||||
RLCA
|
||||
RLCA
|
||||
RLCA
|
||||
CALL HEXCONV ; CONVERT NIBBLE
|
||||
LD D,A ; SAVE IT IN D
|
||||
RET ; DONE
|
||||
|
||||
;
|
||||
; CONVERT LOW NIBBLE OF A TO ASCII HEX
|
||||
;
|
||||
HEXCONV:
|
||||
AND $0F ; LOW NIBBLE ONLY
|
||||
ADD A,$90
|
||||
DAA
|
||||
ADC A,$40
|
||||
DAA
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
; ADD THE VALUE IN A TO HL (HL := HL + A)
|
||||
;
|
||||
ADDHL:
|
||||
ADD A,L ; A := A + L
|
||||
LD L,A ; PUT RESULT BACK IN L
|
||||
RET NC ; IF NO CARRY, WE ARE DONE
|
||||
INC H ; IF CARRY, INCREMENT H
|
||||
RET ; AND RETURN
|
||||
|
||||
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; UTILITY PROCS TO PRINT SINGLE CHARACTERS WITHOUT TRASHING ANY REGISTERS
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
PC_SPACE:
|
||||
PUSH AF
|
||||
LD A,' '
|
||||
JR PC_PRTCHR
|
||||
PC_COLON:
|
||||
PUSH AF
|
||||
LD A,':'
|
||||
JR PC_PRTCHR
|
||||
PC_CR:
|
||||
PUSH AF
|
||||
LD A,CHR_CR
|
||||
JR PC_PRTCHR
|
||||
|
||||
PC_LF:
|
||||
PUSH AF
|
||||
LD A,CHR_LF
|
||||
JR PC_PRTCHR
|
||||
|
||||
PC_PRTCHR:
|
||||
CALL COUT
|
||||
POP AF
|
||||
RET
|
||||
|
||||
NEWLINE2:
|
||||
CALL NEWLINE
|
||||
NEWLINE:
|
||||
CALL PC_CR
|
||||
CALL PC_LF
|
||||
RET
|
||||
|
||||
PRTSTR:
|
||||
LD A,(HL)
|
||||
INC HL
|
||||
CP '$'
|
||||
RET Z
|
||||
CALL COUT
|
||||
JR PRTSTR
|
||||
|
||||
;
|
||||
;__COUT_______________________________________________________________________
|
||||
;
|
||||
; OUTPUT CHARACTER FROM A
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
COUT:
|
||||
; SAVE ALL INCOMING REGISTERS
|
||||
PUSH AF
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
;
|
||||
; OUTPUT CHARACTER TO CONSOLE VIA HBIOS
|
||||
LD E,A ; OUTPUT CHAR TO E
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOOUT ; HBIOS FUNC: OUTPUT CHAR
|
||||
CALL HBIOS_SYS ; HBIOS OUTPUTS CHARACTER
|
||||
;
|
||||
; RESTORE ALL REGISTERS
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
;__CIN________________________________________________________________________
|
||||
;
|
||||
; INPUT CHARACTER TO A
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
CIN:
|
||||
; SAVE INCOMING REGISTERS (AF IS OUTPUT)
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
;
|
||||
; INPUT CHARACTER FROM CONSOLE VIA HBIOS
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOIN ; HBIOS FUNC: INPUT CHAR
|
||||
CALL HBIOS_SYS ; HBIOS READS CHARACTER
|
||||
LD A,E ; MOVE CHARACTER TO A FOR RETURN
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
;__CST________________________________________________________________________
|
||||
;
|
||||
; RETURN INPUT STATUS IN A (0 = NO CHAR, !=0 CHAR WAITING)
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
CST:
|
||||
; SAVE INCOMING REGISTERS (AF IS OUTPUT)
|
||||
PUSH BC
|
||||
PUSH DE
|
||||
PUSH HL
|
||||
;
|
||||
; GET CONSOLE INPUT STATUS VIA HBIOS
|
||||
LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
LD B,BF_CIOIST ; HBIOS FUNC: INPUT STATUS
|
||||
CALL HBIOS_SYS ; HBIOS RETURNS STATUS IN A
|
||||
;
|
||||
; RESTORE REGISTERS (AF IS OUTPUT)
|
||||
POP HL
|
||||
POP DE
|
||||
POP BC
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
;
|
||||
;__ISHEX______________________________________________________________________
|
||||
;
|
||||
; CHECK BYTE AT (HL) FOR HEX CHAR, RET Z IF SO, ELSE NZ
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
ISHEX:
|
||||
LD A,(HL) ; CHAR TO AS
|
||||
CP '0' ; < '0'?
|
||||
JR C,ISHEX1 ; YES, NOT 0-9, CHECK A-F
|
||||
CP '9' + 1 ; > '9'
|
||||
JR NC,ISHEX1 ; YES, NOT 0-9, CHECK A-F
|
||||
XOR A ; MUST BE 0-9, SET ZF
|
||||
RET ; AND DONE
|
||||
ISHEX1:
|
||||
CP 'A' ; < 'A'?
|
||||
JR C,ISHEX2 ; YES, NOT A-F, FAIL
|
||||
CP 'F' + 1 ; > 'F'
|
||||
JR NC,ISHEX2 ; YES, NOT A-F, FAIL
|
||||
XOR A ; MUST BE A-F, SET ZF
|
||||
RET ; AND DONE
|
||||
ISHEX2:
|
||||
OR $FF ; CLEAR ZF
|
||||
RET ; AND DONE
|
||||
;
|
||||
;__HEXBYTE____________________________________________________________________
|
||||
;
|
||||
; GET ONE BYTE OF HEX DATA FROM BUFFER IN HL, RETURN IN A
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
HEXBYTE:
|
||||
LD C,0 ; INIT WORKING VALUE
|
||||
HEXBYTE1:
|
||||
CALL ISHEX ; DO WE HAVE A HEX CHAR?
|
||||
JR NZ,HEXBYTE3 ; IF NOT, WE ARE DONE
|
||||
LD B,4 ; SHIFT WORKING VALUE (C := C * 16)
|
||||
HEXBYTE2:
|
||||
SLA C ; SHIFT ONE BIT
|
||||
RET C ; RETURN W/ CF SET INDICATING OVERFLOW ERROR
|
||||
DJNZ HEXBYTE2 ; LOOP FOR 4 BITS
|
||||
CALL NIBL ; CONVERT HEX CHAR TO BINARY VALUE IN A & INC HL
|
||||
OR C ; COMBINE WITH WORKING VALUE
|
||||
LD C,A ; AND PUT BACK IN WORKING VALUE
|
||||
JR HEXBYTE1 ; DO ANOTHER CHARACTER
|
||||
HEXBYTE3:
|
||||
LD A,C ; WORKING VALUE TO A
|
||||
OR A ; CLEAR CARRY
|
||||
RET
|
||||
|
||||
;
|
||||
;__NIBL_______________________________________________________________________
|
||||
;
|
||||
; GET ONE BYTE OF HEX DATA FROM BUFFER IN HL, RETURN IN A
|
||||
;_____________________________________________________________________________
|
||||
;
|
||||
NIBL:
|
||||
LD A,(HL) ; GET K B. DATA
|
||||
INC HL ; INC KB POINTER
|
||||
CP 40H ; TEST FOR ALPHA
|
||||
JR NC,ALPH
|
||||
AND 0FH ; GET THE BITS
|
||||
RET
|
||||
ALPH:
|
||||
AND 0FH ; GET THE BITS
|
||||
ADD A,09H ; MAKE IT HEX A-F
|
||||
RET
|
||||
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; END ROUTINES THAT ARE LIFTED FROM DBGMON
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
|
||||
|
||||
|
||||
;
|
||||
;===============================================================================
|
||||
; ERROR RESPONCES
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
ERROOR: ; REQUESTED DEV OUT OF RANGE (SYNTAX)
|
||||
CALL NEWLINE
|
||||
LD A, 'R'
|
||||
CALL COUT
|
||||
LD HL,TARGET_CON
|
||||
LD A,(HL)
|
||||
CALL PRTHEX
|
||||
|
||||
|
||||
LD A, ':'
|
||||
CALL COUT
|
||||
LD A, 'M'
|
||||
CALL COUT
|
||||
LD HL,CIODEV_MAX
|
||||
LD A,(HL)
|
||||
CALL PRTHEX
|
||||
|
||||
LD HL,MSGOOR
|
||||
JR ERROR
|
||||
ERRHEXRD: ; COMMAND HEX READ ERROR (SYNTAX)
|
||||
LD HL,MSGHEXRD
|
||||
JR ERROR
|
||||
ERRUSE: ; COMMAND USAGE ERROR (SYNTAX)
|
||||
LD HL,MSGUSE
|
||||
JR ERROR
|
||||
ERRPRM: ; COMMAND PARAMETER ERROR (SYNTAX)
|
||||
LD HL,MSGPRM
|
||||
JR ERROR
|
||||
ERROR: ; PRINT ERROR STRING AND RETURN ERROR SIGNAL
|
||||
CALL NEWLINE ; PRINT NEWLINE
|
||||
CALL PRTSTR ; PRINT ERROR STRING
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET ; DONE
|
||||
|
||||
;===============================================================================
|
||||
; STORAGE SECTION
|
||||
;===============================================================================
|
||||
;
|
||||
|
||||
; CHAR DEV COUNT
|
||||
CIODEV_CNT .DB $0
|
||||
CIODEV_MAX .DB $0
|
||||
|
||||
;TALK LOOP DATA, DEFAULT TO LOOPBACK
|
||||
USER_CON .DB $80
|
||||
TARGET_CON .DB $80
|
||||
|
||||
; PING PONG POINTERS
|
||||
RF_DEV .DB 0
|
||||
WT_DEV .DB 0
|
||||
|
||||
; TARGET CHARACTER DEVICE DATA
|
||||
TGT_DEV:
|
||||
.DB 0 ; HBIOS CHAR NUM
|
||||
.DB 0 ; C: DEVICE ATTRIBUTES
|
||||
.DB 0 ; D: DEVICE TYPE
|
||||
.DB 0 ; E: DEVICE NUMBER
|
||||
.DB 0 ; H: DEVICE MODE
|
||||
.DB 0 ; L: DEVICE I/O BASE ADDRESS
|
||||
|
||||
; STRING LITERALS
|
||||
MSGUSE .TEXT "USAGE: HTALK <CIO_DEV_ID>$"
|
||||
MSGPRM .TEXT "PARAMETER ERROR$"
|
||||
MSGOOR .TEXT "CIO VAL TOO LARGE$"
|
||||
MSGHEXRD .TEXT "HEX READ ERR$"
|
||||
MSGTALKING .TEXT "CONNECTING TO CHAR:$"
|
||||
|
||||
|
||||
DEV_STR_TBL:
|
||||
.TEXT "CHAR:$"
|
||||
.TEXT "ATTR:$"
|
||||
.TEXT "TYPE:$"
|
||||
.TEXT "NUMB:$"
|
||||
.TEXT "MODE:$"
|
||||
.TEXT "ADDR:$"
|
||||
|
||||
STR_DEVS_FOUND .TEXT "NUM CHAR DEVICES FOUND - $"
|
||||
STR_EXITMSG .TEXT "HTALK DONE$"
|
||||
STR_BANNER .TEXT "HTALK V1.0 (CTRL-C TO EXIT)$"
|
||||
STR_HBIOS .TEXT "HBIOS DETECTED$"
|
||||
STR_BIOERR .TEXT "*** UNKNOWN BIOS - BAILING OUT ***$"
|
||||
|
||||
STKSAV .DW 0 ; STACK POINTER SAVED AT START
|
||||
.FILL STKSIZ,0 ; STACK
|
||||
STACK .EQU $ ; STACK TOP
|
||||
;
|
||||
.END
|
||||
@@ -1,6 +1,6 @@
|
||||
OBJECTS = sysgen.com syscopy.com assign.com format.com talk.com \
|
||||
mode.com rtc.com timer.com rtchb.com
|
||||
SUBDIRS = XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
|
||||
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
|
||||
DEST = ../../Binary/Apps
|
||||
TOOLS =../../Tools
|
||||
|
||||
|
||||
@@ -15,6 +15,13 @@
|
||||
;
|
||||
;VERSION LIST - Most recent version first.
|
||||
;
|
||||
;21/Mar/23 - Previous hack was worthless because it broke
|
||||
; the memory survey. Rehacked to use HBIOS to
|
||||
; detect if N8VEM SBC MPCL memory management is
|
||||
; in use and bypass MPCL ports if so. HBIOS check
|
||||
; should allow use in non-RomWBW systems again.
|
||||
; Wayne Warthen
|
||||
;
|
||||
;10/Feb/23 - Total hack to avoid crash on ECB SBC
|
||||
; RomWBW now required by this version
|
||||
; Wayne Warthen
|
||||
@@ -240,20 +247,6 @@ TABS EQU 9 ; Tab columns
|
||||
;
|
||||
;ORG 100H
|
||||
;
|
||||
;
|
||||
;
|
||||
.Z80
|
||||
LD HL,IMGORG
|
||||
LD DE,START
|
||||
LD BC,IMGEND-IMGORG
|
||||
LDIR
|
||||
JP START
|
||||
.8080
|
||||
;
|
||||
IMGORG:
|
||||
;
|
||||
.PHASE 8000H
|
||||
;
|
||||
START:
|
||||
LXI H,0 ; Save stack pointer
|
||||
DAD SP
|
||||
@@ -261,9 +254,38 @@ START:
|
||||
LXI SP,FINIS+64
|
||||
CALL TYPE ; Type initial CRLF
|
||||
DW CRLF,CRLF
|
||||
DB TAB,'*** RomWBW System Survey (Feb 2023) ***'
|
||||
DB TAB,'*** RomWBW System Survey (Mar 2023) ***'
|
||||
DW CRLF,CRLFE
|
||||
;
|
||||
; Are we running an N8VEM SBC w/ MPCL on RomWBW???
|
||||
;
|
||||
.Z80
|
||||
XOR A ; assume not
|
||||
LD (ISMPCL),A ; save it
|
||||
|
||||
; Check for RomWBW (HBIOS)
|
||||
LD HL,(0FFFEH) ; HL := HBIOS ident location
|
||||
LD A,'W' ; First byte of ident
|
||||
CP (HL) ; Compare
|
||||
JR NZ,NOTMPCL ; Not HBIOS
|
||||
INC HL ; Next byte of ident
|
||||
LD A,NOT 'W' ; Second byte of ident
|
||||
CP (HL) ; Compare
|
||||
JR NZ,NOTMPCL ; Not HBIOS
|
||||
;
|
||||
LD B,0F1H ; HBIOS: VER function
|
||||
LD C,0 ; required reserved value
|
||||
RST 08 ; DE := version, L := platform id
|
||||
LD A,L ; Platform ID
|
||||
CP 01H ; SBC?
|
||||
JR NZ,NOTMPCL ; Not SBC
|
||||
LD A,0FFH ; Flag
|
||||
LD (ISMPCL),A ; Set flag
|
||||
;
|
||||
.8080
|
||||
;
|
||||
NOTMPCL:
|
||||
;
|
||||
;DISK SURVEY
|
||||
LXI H,8 ; Init drive counter
|
||||
MVI C,24 ; Get login vector
|
||||
@@ -445,20 +467,19 @@ MSURV:
|
||||
ENDM
|
||||
DB '|'
|
||||
DW CRLF
|
||||
db ' ' ; dmb 31-May-82
|
||||
DB 'T'+EOL
|
||||
DB 'TT','T'+EOL
|
||||
LXI H,RAM
|
||||
MVI M,LOW 1023 ; Init RAM counter
|
||||
MVI M,LOW 2047 ; Init RAM counter
|
||||
INX H
|
||||
MVI M,HIGH 1023
|
||||
MVI M,HIGH 2047
|
||||
MVI B,4 ; Clear ROM, EMP
|
||||
CLREG:
|
||||
INX H
|
||||
MVI M,0
|
||||
DCR B
|
||||
JNZ CLREG
|
||||
LXI H,1024 ; Init memory pointer
|
||||
MVI C,63 ; K to be checked
|
||||
LXI H,2048 ; Init memory pointer
|
||||
MVI C,62 ; K to be checked
|
||||
|
||||
;Start of analysis loop
|
||||
BEGANA:
|
||||
@@ -492,7 +513,7 @@ NOTEM:
|
||||
INXI ROM
|
||||
NEXT:
|
||||
INX H ; Index next byte
|
||||
DCX D ; Decrement K counter
|
||||
DCX D ; DEC DE; Decrement K counter
|
||||
XRA A
|
||||
ORA D
|
||||
ORA E
|
||||
@@ -545,8 +566,19 @@ NEXTK:
|
||||
; contents of first page
|
||||
call type
|
||||
db 'BIOS at',' '+eol
|
||||
hexout bios+2
|
||||
hexout bios+1
|
||||
;hexout bios+2
|
||||
;hexout bios+1
|
||||
.z80
|
||||
ld hl,(bios+1)
|
||||
ld de,-3
|
||||
add hl,de
|
||||
push hl
|
||||
ld a,h
|
||||
call hexprn
|
||||
pop hl
|
||||
ld a,l
|
||||
call hexprn
|
||||
.8080
|
||||
call type
|
||||
db tab,'iobyte',' '+eol
|
||||
hexout bios+3
|
||||
@@ -555,8 +587,19 @@ NEXTK:
|
||||
hexout bios+4
|
||||
call type
|
||||
db tab,'BDOS at',' '+eol
|
||||
hexout bdos+2
|
||||
hexout bdos+1
|
||||
;hexout bdos+2
|
||||
;hexout bdos+1
|
||||
.z80
|
||||
ld hl,(bdos+1)
|
||||
ld de,-6
|
||||
add hl,de
|
||||
push hl
|
||||
ld a,h
|
||||
call hexprn
|
||||
pop hl
|
||||
ld a,l
|
||||
call hexprn
|
||||
.8080
|
||||
call type
|
||||
dw crlf,crlfe
|
||||
;
|
||||
@@ -572,6 +615,8 @@ NEXTK:
|
||||
CALL TYPE
|
||||
DB ' Bytes ROM',TAB,TAB+EOL
|
||||
LHLD BDOS+1
|
||||
LXI D,-6
|
||||
DAD D
|
||||
CALL BINDEC
|
||||
CALL TYPE
|
||||
DB ' Bytes in TPA'
|
||||
@@ -607,9 +652,6 @@ PDLY:
|
||||
JNZ PDLY
|
||||
;
|
||||
.Z80
|
||||
; record the active bank
|
||||
ld a,(0ffe0h) ; get current hbios bank id
|
||||
ld (BANK),a ; and save it
|
||||
; Check for Z180 CPU
|
||||
xor a ; assume Z80
|
||||
ld (IS180),a ; save it
|
||||
@@ -635,6 +677,17 @@ PORTLP:
|
||||
ENDIF
|
||||
;
|
||||
.Z80
|
||||
;
|
||||
ld a,(ISMPCL) ; MPCL?
|
||||
or a ; set flags
|
||||
jr z,PCONT ; if not, skip ahead
|
||||
ld a,d ; get port to test
|
||||
and 0F8H ; range of 8 ports
|
||||
cp 078H ; starting at 78H
|
||||
jr z,ISPORT ; if in range, assume real port
|
||||
;
|
||||
PCONT:
|
||||
|
||||
di ; interrupts off
|
||||
ld a,(IS180) ; Z180?
|
||||
or a
|
||||
@@ -679,11 +732,6 @@ pnum1b equ $-1
|
||||
push af
|
||||
;
|
||||
rdz:
|
||||
; Make sure correct bank is still selected!
|
||||
push af
|
||||
ld a,(BANK)
|
||||
call 0FFF3H
|
||||
pop af
|
||||
;
|
||||
ei ; interrupts back on now
|
||||
;
|
||||
@@ -818,13 +866,9 @@ RAMF: DS 1 ; RAM good flag
|
||||
EMPF: DS 1 ; Empty so far flag
|
||||
BLKSHF: DS 1 ; block shift factor
|
||||
MAXALL: DS 2 ; maximum block number
|
||||
BANK: DS 1 ; saved HBIOS bank id
|
||||
IS180: DS 1 ; non-zero for Z180 CPU
|
||||
ISMPCL: DS 1 ; non-zero for N8VEM SBC MPCL
|
||||
FINIS EQU $ ; End of program
|
||||
;
|
||||
.DEPHASE
|
||||
;
|
||||
IMGEND:
|
||||
;
|
||||
END
|
||||
|
||||
@@ -12,12 +12,26 @@ DMAMODE_Z180 .EQU 2 ; Z180 INTEGRATED DMA
|
||||
DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA
|
||||
DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA
|
||||
DMAMODE_MBC .EQU 5 ; MBC
|
||||
DMAMODE_VDG .EQU 6 ; VELESOFT DATAGEAR
|
||||
DMAMODE_DUO .EQU 6 ; DUO
|
||||
DMAMODE_VDG .EQU 7 ; VELESOFT DATAGEAR
|
||||
;
|
||||
DMAMODE .EQU DMAMODE_DUO ; SELECT DMA DEVICE FOR TESTING
|
||||
;
|
||||
;==================================================================================================
|
||||
; SOME DEFAULT PLATFORM CONFIGURATIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
|
||||
DMAMODE .EQU DMAMODE_MBC ; SELECT DMA DEVICE FOR TESTING
|
||||
DMALATCH .EQU DMABASE+1 ; DMA: DMA LATCH ADDRESS
|
||||
DMAIOTST .EQU $68 ; AN OUTPUT PORT FOR TESTING - 16C450 SERIAL OUT
|
||||
;
|
||||
#IF (DMAMODE==DMAMODE_DUO)
|
||||
DMABASE .SET $40 ; DMA: DMA0 BASE ADDRESS
|
||||
DMALATCH .SET $43 ; DMA: DMA LATCH ADDRESS
|
||||
DMAIOTST .SET $58 ; AN OUTPUT PORT FOR TESTING - 16C450 SERIAL OUT
|
||||
;DMAIOTST .SET $94 ; AN ALT OUTPUT PORT FOR TESTING - RTC/SPEAKER/LEDS PORT
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; HELPER MACROS AND EQUATES
|
||||
;==================================================================================================
|
||||
@@ -39,12 +53,36 @@ INTENABLE .EQU TRUE ; ENABLE INT TESTING
|
||||
INTIDX .EQU 1 ; INT VECTOR INDEX
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA MODE BYTES
|
||||
; DMA MODE BYTES - I/O ROUTINES CLEAR b3 AND ONLY PROGRAM LOW ADDRESS
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_CONTINUOUS .equ %10111101 ; + Pulse
|
||||
DMA_BYTE .equ %10011101 ; + Pulse
|
||||
DMA_BURST .equ %11011101 ; + Pulse
|
||||
DMA_BYTE .equ %10011101 ; b7b1b0 = Register = 1xxxxx01 = Program R4
|
||||
; b6b5 = Transfer Mode = x00xxxxx = Byte transfer mode
|
||||
; b2 = start address (low) = xxxxx1xx = low address follows (1 byte)
|
||||
; b3 = start address (high) = xxxx1xxx = high address follows (1 byte)
|
||||
; b4 = int control byte = xxx1xxxx = interrupt, pulse or vector byte follow
|
||||
;
|
||||
DMA_CONTINUOUS .equ %10111101 ; b7b1b0 = Register = 1xxxxx01 = Program R4
|
||||
; b6b5 = Transfer Mode = x01xxxxx = Continuous transfer mode (default)
|
||||
; b2 = start address (low) = xxxxx1xx = low address follows (1 byte)
|
||||
; b3 = start address (high) = xxxx1xxx = high address follows (1 byte)
|
||||
; b4 = int control byte = xxx1xxxx = interrupt, pulse or vector byte follow
|
||||
;
|
||||
DMA_BURST .equ %11011101 ; b7b1b0 = Register = 1xxxxx01 = Program R4
|
||||
; b6b5 = Transfer Mode = x10xxxxx = Burst transfer mode
|
||||
; b2 = start address (low) = xxxxx1xx = low address follows (1 byte)
|
||||
; b3 = start address (high) = xxxx1xxx = high address follows (1 byte)
|
||||
; b4 = int control byte = xxx1xxxx = interrupt, pulse or vector byte follow
|
||||
;
|
||||
DMA_ICBYTE .equ %00001100 ; b7 = Interrupt Cont. Byte = 0xxxxxxx = Interrupt Control Byte identifier
|
||||
; b6 = Interrupt on RDY = x0xxxxxx = Do not interrupt on RDY
|
||||
; b5 = Status affects vector= xx0xxxxx = Status does not affect vector
|
||||
; b4 = Interrupt vector byte= xxx0xxxx = No interrupt vector byte will follow
|
||||
; b3 = Pulse control byte = xxxx1xxx = A pulse control byte will follow
|
||||
; b2 = Pulse generation = xxxxx100 = A pulse will be generated
|
||||
; b1 = Interrupt @ block end= xxxxxx0x = No interrupt at block end
|
||||
; b0 = Interrupt on match = xxxxxxx0 = No interrupt on match
|
||||
;
|
||||
DMA_LOAD .equ $cf ; %11001111
|
||||
DMA_ENABLE .equ $87 ; %10000111
|
||||
DMA_FORCE_READY .equ $b3
|
||||
@@ -64,6 +102,7 @@ DMA_REINIT_STATUS_BYTE .equ $8b
|
||||
;
|
||||
DMA_RDY .EQU %00001000
|
||||
DMA_FORCE .EQU 0
|
||||
DMA_XMODE .equ 1 ; Byte = 0, Continuous = 1, Burst = 2
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW HBIOS DEFINITIONS
|
||||
@@ -88,7 +127,7 @@ MAIN:
|
||||
LD SP,STACK ; STACK
|
||||
;
|
||||
call PRTSTRD ; WELCOME
|
||||
.db "\n\rDMA Monitor V3\n\r$"
|
||||
.db "\n\rDMA Monitor V3.1\n\r$"
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
@@ -97,6 +136,8 @@ MAIN:
|
||||
ld de,$A000
|
||||
ld bc,hsiz
|
||||
ldir
|
||||
ld a,(dmaport)
|
||||
ld (int_dmaport),a
|
||||
;
|
||||
; Install interrupt vector (RomWBW specific!!!)
|
||||
ld hl,int ; pointer to my interrupt handler
|
||||
@@ -116,6 +157,8 @@ MENULP: CALL DISPM ; DISPLAY MENU
|
||||
;
|
||||
MENULP1:
|
||||
CALL NEWLINE
|
||||
CP 'C'
|
||||
JP Z,DMACFG_C ; CONFIGURE XFER MODE
|
||||
CP 'D'
|
||||
JP Z,DMATST_D ; DUMP REGISTERS
|
||||
CP 'I'
|
||||
@@ -129,50 +172,64 @@ MENULP1:
|
||||
CP 'N'
|
||||
JP Z,DMATST_N ; MEMORY COPY ITER
|
||||
CP '0'
|
||||
JP Z,DMATST_01
|
||||
JP Z,DMATST_0 ; PULSE DMA PORT
|
||||
CP '1'
|
||||
JP Z,DMATST_1 ; PULSE LATCH PORT
|
||||
CP 'O'
|
||||
JP Z,DMATST_O
|
||||
#IF !(DMAMODE==DMAMODE_VDG)
|
||||
CP '1'
|
||||
JP Z,DMATST_01
|
||||
CP 'R'
|
||||
JP Z,DMATST_R ; TOGGLE RESET
|
||||
CP 'Y'
|
||||
JP Z,DMATST_Y ; TOGGLE READY
|
||||
#ENDIF
|
||||
JP Z,DMATST_Y
|
||||
cp 'L'
|
||||
jp z,DMACFG_L ; SET LATCH PORT
|
||||
cp 'S'
|
||||
call z,DMACFG_S ; SET PORT
|
||||
jp z,DMACFG_S ; SET PORT
|
||||
cp 'V'
|
||||
jp z,DMACFG_V ; TOGGLE VERBOSE
|
||||
CP 'X'
|
||||
JP Z,DMABYE ; EXIT
|
||||
;
|
||||
JR MENULP
|
||||
;
|
||||
DMACFG_S:
|
||||
call PRTSTRD
|
||||
.db "\n\rSet port address\n\rPort:$"
|
||||
call HEXIN
|
||||
ld hl,dmaport
|
||||
ld (hl),a
|
||||
inc hl
|
||||
inc a
|
||||
ld (hl),a
|
||||
jp MENULP
|
||||
;
|
||||
DMABYE:
|
||||
#IF (INTENABLE)
|
||||
; Deinstall interrupt vector
|
||||
ld hl,(orgvec) ; original vector
|
||||
ld hl,(orgvec) ; original vector
|
||||
ld b,bf_sysint
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
di
|
||||
rst 08 ; do it
|
||||
ei ; interrupts back on
|
||||
rst 08 ; do it
|
||||
ei ; interrupts back on
|
||||
#ENDIF
|
||||
;
|
||||
LD SP,(SAVSTK) ; RESTORE CP/M STACK
|
||||
RET
|
||||
;
|
||||
;==================================================================================================
|
||||
; CONFIGURE PORT
|
||||
;==================================================================================================
|
||||
;
|
||||
DMACFG_S:
|
||||
call PRTSTRD
|
||||
.db "\n\rSet DMA port address\n\rPort:$"
|
||||
call HEXIN
|
||||
ld hl,dmaport
|
||||
ld (hl),a
|
||||
#IF (INTENABLE)
|
||||
ld (int_dmaport),a
|
||||
#ENDIF
|
||||
jp MENULP
|
||||
;
|
||||
DMACFG_L:
|
||||
call PRTSTRD
|
||||
.db "\n\rSet Latch port address\n\rPort:$"
|
||||
call HEXIN
|
||||
ld hl,dmalach
|
||||
ld (hl),a
|
||||
jp MENULP
|
||||
;
|
||||
DMATST_I:
|
||||
call PRTSTRD
|
||||
.db "\n\rStart Initialization\n\r$"
|
||||
@@ -201,11 +258,17 @@ DMATST_N:
|
||||
CALL DMAMemTestIter
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_01:
|
||||
DMATST_0:
|
||||
call PRTSTRD
|
||||
.db "\n\rPerforming Port Selection Test\n\r$"
|
||||
CALL DMA_Port01
|
||||
JP MENULP
|
||||
.db "\n\rPerforming DMA Port Selection Test\n\r$"
|
||||
CALL DMA_Port0
|
||||
ret
|
||||
|
||||
DMATST_1:
|
||||
call PRTSTRD
|
||||
.db "\n\rPerforming Latch Port Selection Test\n\r$"
|
||||
CALL DMA_Port1
|
||||
ret
|
||||
;
|
||||
DMATST_O:
|
||||
call PRTSTRD
|
||||
@@ -222,7 +285,7 @@ DMATST_D:
|
||||
DMATST_Y:
|
||||
call PRTSTRD
|
||||
.db "\n\rPerforming Ready Bit Test\n\r$"
|
||||
CALL DMA_ReadyT
|
||||
CALL DMA_ReadyY
|
||||
JP MENULP
|
||||
;
|
||||
DMATST_R:
|
||||
@@ -230,6 +293,16 @@ DMATST_R:
|
||||
.db "\n\rPerforming Reset\n\r$"
|
||||
; CALL
|
||||
JP MENULP
|
||||
|
||||
DMACFG_C:
|
||||
CALL DMA_XferM
|
||||
call PRTSTRD
|
||||
.db "\n\rTransfer mode change to: $"
|
||||
LD a,(dmaxfer)
|
||||
LD DE,DMA_XFRMODE
|
||||
CALL PRTIDXDEA
|
||||
CALL NEWLINE
|
||||
JP MENULP
|
||||
;
|
||||
;==================================================================================================
|
||||
; DISPLAY MENU
|
||||
@@ -246,6 +319,10 @@ DISPM: call PRTSTRD
|
||||
.db ", Port=0x$"
|
||||
LD A,(dmaport) ; DISPLAY
|
||||
CALL PRTHEXBYTE ; DMA PORT
|
||||
call PRTSTRD
|
||||
.db ", Latch Port=0x$"
|
||||
ld A,(dmalach)
|
||||
CALL PRTHEXBYTE ; DMA PORT
|
||||
;
|
||||
#IF (INTENABLE)
|
||||
;
|
||||
@@ -274,7 +351,6 @@ DISPM_INT:
|
||||
#ENDIF
|
||||
call PRTSTRD ; DISPLAY SPEED
|
||||
.db "\n\rCPU at $"
|
||||
|
||||
LD B,bf_sysget
|
||||
LD C,bf_sysgetcpuspd ; GET CURRENT
|
||||
RST 08 ; SPEED SETTING
|
||||
@@ -282,9 +358,14 @@ DISPM_INT:
|
||||
LD A,L
|
||||
JR Z,SPDDISP
|
||||
LD A,3
|
||||
;
|
||||
SPDDISP:LD DE,DMA_SPD_STR
|
||||
CALL PRTIDXDEA
|
||||
;
|
||||
call PRTSTRD
|
||||
.db "\n\rTransfer Mode: $" ; DIPLAY TRANSFER
|
||||
LD a,(dmaxfer) ; MODE
|
||||
LD DE,DMA_XFRMODE
|
||||
CALL PRTIDXDEA
|
||||
CALL NEWLINE
|
||||
;
|
||||
LD HL,MENU_OPT ; DISPLAY
|
||||
@@ -304,22 +385,26 @@ DMA_INIT:
|
||||
CALL PRTHEXBYTE
|
||||
;
|
||||
#IF !(DMAMODE==DMAMODE_VDG)
|
||||
ld a,(dmautil)
|
||||
ld a,(dmalach)
|
||||
ld c,a
|
||||
LD A,DMA_FORCE
|
||||
out (c),a ; force ready off
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
call DMAProbe ; do we have a dma?
|
||||
jr nz,DMA_NOTFOUND
|
||||
;
|
||||
call PRTSTRD
|
||||
.db " DMA Found\n\r$"
|
||||
;
|
||||
ld hl,DMAInitMode ; setup the
|
||||
call SETXFER ; transfer mode
|
||||
set 3,(hl) ; upper and lower address
|
||||
;
|
||||
ld hl,DMACode ; program the
|
||||
ld b,DMACode_Len ; dma command
|
||||
ld c,DMABASE ; block
|
||||
ld a,(dmaport)
|
||||
ld c,a ; block
|
||||
;
|
||||
di
|
||||
otir ; load dma
|
||||
@@ -338,6 +423,27 @@ DMA_NOTFOUND:
|
||||
;
|
||||
DMA_FAIL_FLAG:
|
||||
.db 0
|
||||
;
|
||||
DMACode ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
.db %01111101 ; R0-Transfer mode, A -> B, start address, block length follow
|
||||
.dw 0 ; R0-Port A, Start address
|
||||
.dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00010000 ; R2-No timing bytes follow, address increments, is memory
|
||||
.db %10000000 ; R3-DMA, interrupt, stop on match disabled
|
||||
DMAInitMode: .db DMA_CONTINUOUS ; R4-Transfer mode, destination address, interrupt and control byte follow
|
||||
.dw 0 ; R4-Port B, Destination address
|
||||
.db DMA_ICBYTE ; R4-Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse offset
|
||||
.db %10010010+DMA_RDY; R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
; .db DMA_FORCE_READY ; R6-Command Force ready
|
||||
; .db DMA_ENABLE ; R6-Command Enable DMA
|
||||
DMACode_Len .equ $-DMACode
|
||||
;
|
||||
;==================================================================================================
|
||||
; STRINGS
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_DEV_STR:
|
||||
.TEXT "NONE$"
|
||||
@@ -346,6 +452,7 @@ DMA_DEV_STR:
|
||||
.TEXT "Z280$"
|
||||
.TEXT "RCBUS$"
|
||||
.TEXT "MBC$"
|
||||
.TEXT "DUODYNE$"
|
||||
.TEXT "DATAGEAR$"
|
||||
;
|
||||
DMA_SPD_STR:
|
||||
@@ -354,8 +461,14 @@ DMA_SPD_STR:
|
||||
.TEXT "double speed.$"
|
||||
.TEXT "unknown speed.$"
|
||||
;
|
||||
DMA_XFRMODE:
|
||||
.TEXT "Byte.$"
|
||||
.TEXT "Continuous.$"
|
||||
.TEXT "Burst.$"
|
||||
;
|
||||
MENU_OPT:
|
||||
.TEXT "\n\r"
|
||||
.TEXT "C) Change transfer mode\n\r"
|
||||
.TEXT "D) Dump DMA registers\n\r"
|
||||
.TEXT "I) Initialize DMA\n\r"
|
||||
.TEXT "T) Toggle Interrupt Usage\n\r"
|
||||
@@ -368,20 +481,46 @@ MENU_OPT:
|
||||
.TEXT "Y) Test Ready Bit\n\r"
|
||||
#ENDIF
|
||||
.TEXT "S) Set DMA port\n\r"
|
||||
.TEXT "L) Set Latch port\n\r"
|
||||
.TEXT "V) Verbose status toggle\n\r"
|
||||
.TEXT "X) Exit\n\r"
|
||||
|
||||
.TEXT ">$"
|
||||
;
|
||||
;==================================================================================================
|
||||
; TOGGLE TRANSFER MODE
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_XferM: ; Set next transfer mode
|
||||
ld a,(dmaxfer)
|
||||
inc a
|
||||
cp 3
|
||||
jr nz,NextX
|
||||
ld a,0
|
||||
NextX: ld (dmaxfer),a
|
||||
ret
|
||||
;
|
||||
;==================================================================================================
|
||||
; TOGGLE VERBOSE MODE
|
||||
;==================================================================================================
|
||||
;
|
||||
DMACFG_V:
|
||||
ld a,(dmavbs)
|
||||
cpl
|
||||
ld (dmavbs),a
|
||||
jp MENULP
|
||||
;
|
||||
;==================================================================================================
|
||||
; OUTPUT A BUFFER OF TEXT TO AN IOPORT
|
||||
;==================================================================================================
|
||||
;
|
||||
DMABUF .TEXT "0123456789abcdef"
|
||||
;DMABUF .DB $04,$00,$04,$00,$04,$00,$04,$00,$04,$00,$04,$00,$04,$00,$04,$00,$00,$00,$00 ; SPEAKER
|
||||
;
|
||||
DMA_ReadyO:
|
||||
call PRTSTRD
|
||||
.db "\r\nOutputing string to port 0x$"
|
||||
ld a,DMAIOTST
|
||||
ld a,(tstport)
|
||||
call PRTHEXBYTE
|
||||
call NEWLINE
|
||||
;
|
||||
@@ -389,32 +528,28 @@ DMA_ReadyO:
|
||||
IOLoop: push bc
|
||||
call NEWLINE
|
||||
ld hl,DMABUF
|
||||
ld a,DMAIOTST
|
||||
ld a,(tstport)
|
||||
ld bc,16
|
||||
;
|
||||
call DMAOTIR
|
||||
;
|
||||
call PRTSTRD
|
||||
.db " Return Status: $"
|
||||
call PRTHEXBYTE
|
||||
;
|
||||
pop bc
|
||||
djnz IOLoop
|
||||
call NEWLINE
|
||||
|
||||
ret
|
||||
;
|
||||
;==================================================================================================
|
||||
; PULSE PORT (COMMON ROUTINE WITH A CONTAINING ASCII PORT OFFSET)
|
||||
; PULSE PORT
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_Port01:
|
||||
DMA_Port0:
|
||||
ld a,(dmaport)
|
||||
jr DMA_Port
|
||||
DMA_Port1:
|
||||
ld a,(dmalach)
|
||||
DMA_Port:
|
||||
call PRTSTRD
|
||||
.db "\r\nPulsing port 0x$"
|
||||
sub '0' ; Calculate
|
||||
ld c,a
|
||||
ld a,(dmaport) ; Port to
|
||||
add a,c
|
||||
call PRTHEXBYTE
|
||||
call NEWLINE
|
||||
ld c,a ; toggle
|
||||
@@ -446,12 +581,9 @@ dlylp: dec bc
|
||||
; TOGGLE READY BIT
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_ReadyT:
|
||||
DMA_ReadyY:
|
||||
call NEWLINE
|
||||
#IF !(DMAMODE==DMAMODE_VDG)
|
||||
|
||||
#ENDIF
|
||||
ld a,(dmautil)
|
||||
ld a,(dmalach)
|
||||
ld c,a ; toggle
|
||||
ld b,$20 ; loop counter
|
||||
portlp2:push bc
|
||||
@@ -461,14 +593,12 @@ portlp2:push bc
|
||||
.db ": ON$"
|
||||
call delay
|
||||
ld a,$FF
|
||||
; ld c,DMABASE+1
|
||||
out (c),a
|
||||
call PRTSTRD
|
||||
.db " -> OFF$"
|
||||
call delay
|
||||
call PRTSTRD
|
||||
.db "\r \r$"
|
||||
; ld c,DMABASE+1
|
||||
ld a,0
|
||||
out (c),a
|
||||
pop bc
|
||||
@@ -480,7 +610,6 @@ portlp2:push bc
|
||||
;==================================================================================================
|
||||
;
|
||||
DMAMemMove:
|
||||
;
|
||||
LD HL,$8000 ; PREFILL DESTINATION WITH $55
|
||||
LD A,$55
|
||||
LD (HL),A
|
||||
@@ -509,20 +638,24 @@ DMAMemMove1:
|
||||
;
|
||||
DMAMemMove2:
|
||||
;
|
||||
; LD HL,$8400 ; PLANT
|
||||
; LD A,$00 ; BAD
|
||||
; LD (HL),A ; SEED
|
||||
;LD HL,$8400 ; PLANT
|
||||
;LD A,$00 ; BAD
|
||||
;LD (HL),A ; SEED
|
||||
;
|
||||
call PRTSTRD
|
||||
.db "Return Status: $"
|
||||
call PRTHEXBYTE
|
||||
|
||||
LD A,$AA ; CHECK COPY SUCCESSFULL
|
||||
LD HL,$8000
|
||||
LD BC,4096
|
||||
NXTCMP: CPI
|
||||
JP PO,CMPOK
|
||||
JR Z,NXTCMP
|
||||
|
||||
DEC HL
|
||||
CALL PRTHEXWORDHL
|
||||
LD A,' '
|
||||
CALL COUT
|
||||
LD A,(HL)
|
||||
CALL PRTHEXBYTE
|
||||
|
||||
RET ; RET W/ ZF CLEAR
|
||||
;
|
||||
CMPOK:
|
||||
@@ -616,23 +749,6 @@ DMAProbe:
|
||||
cpl
|
||||
ret
|
||||
;
|
||||
DMACode ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
.db %01111101 ; R0-Transfer mode, A -> B, start address, block length follow
|
||||
.dw 0 ; R0-Port A, Start address
|
||||
.dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00010000 ; R2-No timing bytes follow, address increments, is memory
|
||||
.db %10000000 ; R3-DMA, interrupt, stop on match disabled
|
||||
.db DMA_CONTINUOUS ; R4-Continuous mode, destination address, interrupt and control byte follow
|
||||
.dw 0 ; R4-Port B, Destination address
|
||||
.db %00001100 ; R4-Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse offset
|
||||
.db %10010010+DMA_RDY; R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
; .db DMA_FORCE_READY ; R6-Command Force ready
|
||||
; .db DMA_ENABLE ; R6-Command Enable DMA
|
||||
DMACode_Len .equ $-DMACode
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA COPY BLOCK CODE - ASSUMES DMA PREINITIALIZED
|
||||
;==================================================================================================
|
||||
@@ -641,6 +757,10 @@ DMALDIR:
|
||||
ld (DMASource),hl ; populate the dma
|
||||
ld (DMADest),de ; register template
|
||||
ld (DMALength),bc
|
||||
;
|
||||
ld hl,DMACopyMode
|
||||
call SETXFER
|
||||
set 3,(hl) ; upper and lower address
|
||||
;
|
||||
ld hl,DMACopy ; program the
|
||||
ld b,DMACopy_Len ; dma command
|
||||
@@ -651,11 +771,7 @@ DMALDIR:
|
||||
otir ; load and execute dma
|
||||
ei
|
||||
;
|
||||
ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (c),a ; of transfer
|
||||
in a,(c) ; set non-zero
|
||||
; and %00111011 ; if failed
|
||||
; sub %00011011
|
||||
call DMASTATUS
|
||||
ret
|
||||
;
|
||||
DMACopy ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
@@ -665,9 +781,9 @@ DMALength .dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00010000 ; R2-No timing bytes follow, address increments, is memory
|
||||
.db %10000000 ; R3-DMA, interrupt, stop on match disabled
|
||||
.db DMA_CONTINUOUS ; R4-Continuous mode, destination address, interrupt and control byte follow
|
||||
DMACopyMode: .db DMA_CONTINUOUS ; R4-Transfer mode. Destination address, interrupt and control byte follow
|
||||
DMADest .dw 0 ; R4-Port B, Destination address
|
||||
.db %00001100 ; R4-Pulse byte follows, Pulse generated
|
||||
.db DMA_ICBYTE ; R4-Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse offset
|
||||
; .db %10010010+DMA_RDY;R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
@@ -687,6 +803,10 @@ DMALDIRINT:
|
||||
ld (DMASourceInt),hl ; populate the dma
|
||||
ld (DMADestInt),de ; register template
|
||||
ld (DMALengthInt),bc
|
||||
;
|
||||
ld hl,DMAICopyMode
|
||||
call SETXFER
|
||||
set 3,(hl) ; upper and lower address
|
||||
;
|
||||
ld hl,DMACopyInt ; program the
|
||||
ld b,DMACopyInt_Len ; dma command
|
||||
@@ -697,17 +817,7 @@ DMALDIRINT:
|
||||
otir ; load and execute dma
|
||||
ei
|
||||
;
|
||||
ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (c),a ; of transfer
|
||||
in a,(c)
|
||||
|
||||
call PRTSTRD
|
||||
.db "Return Status: $"
|
||||
call PRTHEXBYTE
|
||||
|
||||
; and %00111011 ; set non-zero
|
||||
; sub %00011011 ; if failed
|
||||
;
|
||||
call DMASTATUS
|
||||
#ENDIF
|
||||
;
|
||||
ret
|
||||
@@ -721,7 +831,7 @@ DMALengthInt .dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00010000 ; R2-No timing bytes follow, address increments, is memory
|
||||
.db %10100000 ; R3-DMA, interrupt, stop on match disabled
|
||||
.db DMA_CONTINUOUS ; R4-Continuous mode, destination address, interrupt and control byte follow
|
||||
DMAICopyMode: .db DMA_CONTINUOUS ; R4-Transfer mode, destination address, interrupt and control byte follow
|
||||
DMADestInt .dw 0 ; R4-Port B, Destination address
|
||||
.db %00011110 ; R4-Interrupt control byte: Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse control byte
|
||||
@@ -743,6 +853,10 @@ DMAOTIR:
|
||||
ld (DMAOutSource),hl ; populate the dma
|
||||
ld (DMAOutDest),a ; register template
|
||||
ld (DMAOutLength),bc
|
||||
;
|
||||
ld hl,DMAOutMode
|
||||
call SETXFER
|
||||
res 3,(hl) ; no upper address
|
||||
;
|
||||
ld hl,DMAOutCode ; program the
|
||||
ld b,DMAOut_Len ; dma command
|
||||
@@ -753,14 +867,7 @@ DMAOTIR:
|
||||
otir ; load and execute dma
|
||||
ei
|
||||
;
|
||||
ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (c),a ; of transfer
|
||||
in a,(c) ; set non-zero
|
||||
|
||||
|
||||
; and %00111011 ; if failed
|
||||
; sub %00011011
|
||||
;
|
||||
call DMASTATUS
|
||||
ret
|
||||
;
|
||||
DMAOutCode ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
@@ -772,10 +879,10 @@ DMAOutLength .dw 0 ; R0-Block length
|
||||
.db %00101000 ; R2-No timing bytes follow, address static, is i/o
|
||||
.db %10000000 ; R3-DMA, interrupt, stop on match disabled
|
||||
|
||||
.db %10100101 ; R4-Continuous mode, destination port, interrupt and control byte follow
|
||||
DMAOutMode: .db DMA_CONTINUOUS ; R4-Transfer Mode, destination port, interrupt and control byte follow
|
||||
DMAOutDest .db 0 ; R4-Port B, Destination port
|
||||
; .db %00001100 ; R4-Pulse byte follows, Pulse generated
|
||||
; .db 0 ; R4-Pulse offset
|
||||
.db DMA_ICBYTE ; R4-Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse offset
|
||||
|
||||
.db %10010010+DMA_RDY;R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
@@ -794,6 +901,10 @@ DMAINIR:
|
||||
ld (DMAInSource),a ; register template
|
||||
ld (DMAInLength),bc
|
||||
;
|
||||
ld hl,DMAOutMode
|
||||
call SETXFER
|
||||
res 3,(hl) ; no upper address
|
||||
|
||||
ld hl,DMAInCode ; program the
|
||||
ld b,DMAIn_Len ; dma command
|
||||
ld a,(dmaport) ; block
|
||||
@@ -803,13 +914,7 @@ DMAINIR:
|
||||
otir ; load and execute dma
|
||||
ei
|
||||
;
|
||||
ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (c),a ; of transfer
|
||||
in a,(c) ; set non-zero
|
||||
|
||||
; and %00111011 ; if failed
|
||||
; sub %00011011
|
||||
;
|
||||
call DMASTATUS
|
||||
ret
|
||||
;
|
||||
DMAInCode ;.db DMA_DISABLE ; R6-Command Disable DMA
|
||||
@@ -819,10 +924,10 @@ DMAInLength .dw 0 ; R0-Block length
|
||||
.db %00010100 ; R1-No timing bytes follow, address increments, is memory
|
||||
.db %00111000 ; R2-No timing bytes follow, address static, is i/o
|
||||
.db %10000000 ; R3-DMA, interrupt, stop on match disabled
|
||||
.db %10100101 ; R4-Continuous mode, destination port, no interrupt, control byte.
|
||||
DMAInMode: .db DMA_CONTINUOUS ; R4-Transfer mode, destination port, no interrupt, control byte.
|
||||
DMAInSource .db 0 ; R4-Port B, Destination port
|
||||
; .db %00001100 ; R4-Pulse byte follows, Pulse generated
|
||||
; .db 0 ; R4-Pulse offset
|
||||
.db DMA_ICBYTE ; R4-Pulse byte follows, Pulse generated
|
||||
.db 0 ; R4-Pulse offset
|
||||
.db %10010010+DMA_RDY;R5-Stop on end of block, ce/wait multiplexed, READY active config
|
||||
.db DMA_LOAD ; R6-Command Load
|
||||
.db DMA_FORCE_READY ; R6-Command Force ready
|
||||
@@ -831,6 +936,99 @@ DMAInSource .db 0 ; R4-Port B, Destination port
|
||||
DMAIn_Len .equ $-DMAInCode
|
||||
;
|
||||
;==================================================================================================
|
||||
; SET TRANSFER MODE
|
||||
;==================================================================================================
|
||||
;
|
||||
SETXFER:
|
||||
ld a,(dmaxfer) ; setup the
|
||||
cp 0 ; transfer mode
|
||||
jr nz,DMAX1
|
||||
ld a,DMA_BYTE
|
||||
jr DMAX3
|
||||
DMAX1: cp 1
|
||||
jr nz,DMAX2
|
||||
ld a,DMA_CONTINUOUS
|
||||
jr DMAX3
|
||||
DMAX2: cp 2
|
||||
ret nz
|
||||
ld a,DMA_BURST
|
||||
DMAX3: ld (hl),a
|
||||
ret
|
||||
;
|
||||
;==================================================================================================
|
||||
; GET STATUS
|
||||
;==================================================================================================
|
||||
;
|
||||
DMASTATUS:
|
||||
ld a,(dmaxfer) ; if byte mode
|
||||
cp 0 ; give some time to finish
|
||||
jr nz,DMASTS1
|
||||
|
||||
; ld b,1
|
||||
;DMASTS2:call delay
|
||||
; djnz DMASTS2
|
||||
;
|
||||
DMASTS1:ld a,DMA_READ_STATUS_BYTE ; check status
|
||||
out (c),a ; of transfer
|
||||
in a,(c)
|
||||
and %00111011
|
||||
;
|
||||
; push af
|
||||
; ld a,DMA_REINIT_STATUS_BYTE
|
||||
; out (c),a
|
||||
; pop af
|
||||
;
|
||||
call PRTSTRD
|
||||
.db "\n\rReturn Status: $"
|
||||
call PRTHEXBYTE
|
||||
call NEWLINE
|
||||
;
|
||||
ld c,a
|
||||
ld a,(dmavbs)
|
||||
or a
|
||||
jr z,DMSSTS2
|
||||
ld a,c
|
||||
;
|
||||
ld a,%00000001
|
||||
ld de,DMASTSBIT0
|
||||
call PRTIDXMSK
|
||||
;
|
||||
ld a,%00000010
|
||||
ld de,DMASTSBIT1
|
||||
call PRTIDXMSK
|
||||
;
|
||||
ld a,%00001000
|
||||
ld de,DMASTSBIT3
|
||||
call PRTIDXMSK
|
||||
;
|
||||
ld a,%00010000
|
||||
ld de,DMASTSBIT4
|
||||
call PRTIDXMSK
|
||||
;
|
||||
ld a,%00100000
|
||||
ld de,DMASTSBIT5
|
||||
call PRTIDXMSK
|
||||
;
|
||||
DMSSTS2:ld a,c
|
||||
ret
|
||||
|
||||
DMASTSBIT0:
|
||||
.TEXT "DMA Bus request did not occur after LOAD command\n\r$"
|
||||
.TEXT "DMA Bus request occurred after the LOAD command\n\r$"
|
||||
DMASTSBIT1:
|
||||
.TEXT "Ready line inactive\n\r$"
|
||||
.TEXT "Ready line active\n\r$"
|
||||
DMASTSBIT3:
|
||||
.TEXT "Interrupt pending\n\r$"
|
||||
.TEXT "No interrupt pending\n\r$"
|
||||
DMASTSBIT4:
|
||||
.TEXT "Match found\n\r$"
|
||||
.TEXT "No match found\n\r$"
|
||||
DMASTSBIT5:
|
||||
.TEXT "End of block reached\n\r$"
|
||||
.TEXT "End of block not reached\n\r$"
|
||||
;
|
||||
;==================================================================================================
|
||||
; DEBUG - READ START, DESTINATION AND COUNT REGISTERS
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -1010,7 +1208,11 @@ CST:
|
||||
RET
|
||||
;
|
||||
USEINT .DB FALSE ; USE INTERRUPTS FLAG
|
||||
;
|
||||
dmaport .db DMABASE
|
||||
dmalach .db DMALATCH
|
||||
dmaxfer .db DMA_XMODE
|
||||
tstport .db DMAIOTST
|
||||
dmavbs .db 0
|
||||
SAVSTK: .DW 2
|
||||
.FILL 64
|
||||
STACK: .EQU $
|
||||
@@ -1026,11 +1228,16 @@ reladr .equ $ ; relocation start adr
|
||||
.org $A000 ; code will run here
|
||||
;
|
||||
int:
|
||||
;LD E,'.' ; OUTPUT CHAR TO E
|
||||
;LD C,CIO_CONSOLE ; CONSOLE UNIT TO C
|
||||
;LD B,BF_CIOOUT ; HBIOS FUNC: OUTPUT CHAR
|
||||
;CALL $FFF0 ; HBIOS OUTPUTS CHARACTER
|
||||
|
||||
; According to the DMA doc, you must issue
|
||||
; a DMA_DISABLE command prior to a
|
||||
; DMA_REINIT_STATUS_BYTE command to avoid a
|
||||
; potential race condition.
|
||||
ld a,(dmaport)
|
||||
ld a,(int_dmaport)
|
||||
ld c,a
|
||||
ld a,DMA_DISABLE
|
||||
out (c),a
|
||||
@@ -1050,9 +1257,10 @@ int:
|
||||
or $ff ; signal int handled
|
||||
ret
|
||||
;
|
||||
counter .dw 0
|
||||
dmaport .db DMABASE
|
||||
dmautil .db DMABASE+1
|
||||
; data referred to in handler must reside in high mem
|
||||
;
|
||||
int_dmaport .db 0 ; hi mem copy of dmaport
|
||||
counter .dw 0 ; interrupt counter
|
||||
;
|
||||
hsiz .equ $ - $A000 ; size of handler to relocate
|
||||
;
|
||||
|
||||
@@ -8,6 +8,8 @@ set TASMTABS=%TOOLS%\tasm32
|
||||
tasm -t180 -g3 -fFF i2cscan.asm i2cscan.com i2cscan.lst || exit /b
|
||||
tasm -t180 -g3 -fFF rtcds7.asm rtcds7.com rtcds7.lst || exit /b
|
||||
tasm -t180 -g3 -fFF i2clcd.asm i2clcd.com i2clcd.lst || exit /b
|
||||
tasm -t80 -g3 -ff srom.asm srom.com srom.lst || exit /b
|
||||
|
||||
copy /Y i2c*.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
copy /Y rtcds7*.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
copy /Y srom.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
OBJECTS = i2cscan.com rtcds7.com i2clcd.com
|
||||
OBJECTS = i2cscan.com rtcds7.com i2clcd.com srom.com
|
||||
DEST = ../../../../Binary/Apps/Test/
|
||||
TOOLS = ../../../../Tools
|
||||
|
||||
|
||||
@@ -5,12 +5,13 @@
|
||||
; MARCO MACCAFERRI, HTTPS://WWW.MACCASOFT.COM
|
||||
; HBIOS VERSION BY PHIL SUMMERS (B1ACKMAILER) DIFFICULTLEVELHIGH@GMAIL.COM
|
||||
;
|
||||
PCF .EQU 1
|
||||
P8X180 .EQU 0
|
||||
SC126 .EQU 0
|
||||
SC137 .EQU 0
|
||||
PCFECB .EQU 0
|
||||
PCFDUO .EQU 1
|
||||
P8X180 .EQU 0
|
||||
SC126 .EQU 0
|
||||
SC137 .EQU 0
|
||||
;
|
||||
#IF (PCF)
|
||||
#IF (PCFECB)
|
||||
I2C_BASE .EQU 0F0H
|
||||
PCF_ID .EQU 0AAH
|
||||
CPU_CLK .EQU 12
|
||||
@@ -20,6 +21,16 @@ PCF_RS1 .EQU PCF_RS0+1
|
||||
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PCFDUO)
|
||||
I2C_BASE .EQU 056H
|
||||
PCF_ID .EQU 0AAH
|
||||
CPU_CLK .EQU 12
|
||||
;
|
||||
PCF_RS0 .EQU I2C_BASE
|
||||
PCF_RS1 .EQU PCF_RS0+1
|
||||
PCF_OWN .EQU (PCF_ID >> 1) ; PCF'S ADDRESS IN SLAVE MODE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (P8X180)
|
||||
I2C_BASE .EQU 0A0h
|
||||
_sda .EQU 0
|
||||
@@ -153,8 +164,11 @@ lp5f: ld a,(addr) ; next address
|
||||
jp 0
|
||||
|
||||
signon: .db "I2C Bus Scanner"
|
||||
#IF (PCF)
|
||||
.DB " - PCF8584"
|
||||
#IF (PCFECB)
|
||||
.DB " - PCF8584 (ECB)"
|
||||
#ENDIF
|
||||
#IF (PCFDUO)
|
||||
.DB " - PCF8584 (Duodyne)"
|
||||
#ENDIF
|
||||
#IF (SC126)
|
||||
.DB " - SC126"
|
||||
@@ -219,7 +233,7 @@ _cout: ; character
|
||||
ret
|
||||
|
||||
;-----------------------------------------------------------------------------
|
||||
#IF (PCF)
|
||||
#IF (PCFECB | PCFDUO)
|
||||
_i2c_start:
|
||||
PCF_START:
|
||||
LD A,PCF_START_
|
||||
@@ -418,7 +432,7 @@ PCF_PINFAIL .DB "PIN FAIL$"
|
||||
PCF_BBFAIL .DB "BUS BUSY$"
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
#IF (PCF)
|
||||
#IF (PCFECB | PCFDUO)
|
||||
_i2c_stop:
|
||||
PCF_STOP:
|
||||
LD A,PCF_STOP_ ; issue
|
||||
|
||||
1679
Source/Apps/Test/I2C/srom.asm
Normal file
1679
Source/Apps/Test/I2C/srom.asm
Normal file
File diff suppressed because it is too large
Load Diff
@@ -45,6 +45,7 @@
|
||||
; 2021-08-13 [WBW] Add support for LiNC Z50 Sound Card
|
||||
; 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
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -301,6 +302,11 @@ GOPT3 LD A,0 ; SETUP value to PT3 sound files
|
||||
JR GOPTX ; Play PTx file
|
||||
|
||||
GOPTX
|
||||
LD HL,(QDLY) ; Get basic quark delay
|
||||
OR A ; Clear carry
|
||||
SBC HL,DE ; Adjust for file type
|
||||
LD (QDLY),HL ; Save updated quark delay factor
|
||||
|
||||
CALL CRLF2
|
||||
LD DE, MSGSONGNAME ; Print song name message
|
||||
CALL PRTSTR
|
||||
@@ -322,10 +328,6 @@ GOPTX2 LD A,(DE)
|
||||
CALL CRLF2 ; Formatting
|
||||
LD DE,MSGPLY ; Playing message
|
||||
CALL PRTSTR ; Print message
|
||||
LD HL,(QDLY) ; Get basic quark delay
|
||||
OR A ; Clear carry
|
||||
SBC HL,DE ; Adjust for file type
|
||||
LD (QDLY),HL ; Save updated quark delay factor
|
||||
CALL START ; Do initialization
|
||||
PTXLP CALL START+5 ; Play one quark
|
||||
LD A,(START+10) ; Get setup byte
|
||||
@@ -627,6 +629,9 @@ CFGTBL: ; PLT RSEL RDAT RIN Z180 ACR
|
||||
;
|
||||
.DB 13, $A0, $A1, $A0, $FF, $A2 ; MBC
|
||||
.DW HWSTR_MBC
|
||||
;
|
||||
.DB 17, $A0, $A1, $A0, $FF, $A2 ; DUODYNE
|
||||
.DW HWSTR_DUO
|
||||
;
|
||||
.DB $FF ; END OF TABLE MARKER
|
||||
;
|
||||
@@ -655,8 +660,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.5, 20-Mar-2022",0
|
||||
MSGUSE .DB "Copyright (C) 2021, Wayne Warthen, GNU GPL v3",13,10
|
||||
MSGBAN .DB "Tune Player for RomWBW v3.5a, 30-Mar-2023",0
|
||||
MSGUSE .DB "Copyright (C) 2023, 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
|
||||
@@ -680,6 +685,7 @@ HWSTR_RCEB6 .DB "RCBus Sound Module (EBv6)",0
|
||||
HWSTR_RCMF .DB "RCBus Sound Module (MF)",0
|
||||
HWSTR_LINC .DB "Z50 LiNC Sound Module",0
|
||||
HWSTR_MBC .DB "NHYODYNE Sound Module",0
|
||||
HWSTR_DUO .DB "DUODYNE Sound Module",0
|
||||
|
||||
MSGUNSUP .db "MYM files not supported with HBIOS yet!\r\n", 0
|
||||
|
||||
|
||||
BIN
Source/Apps/VGM/Tunes/More/sabredan.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/sabredan.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/sure.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/sure.vgm
Normal file
Binary file not shown.
@@ -12,14 +12,12 @@
|
||||
; default file type, basic file size checking, polled CTC mode
|
||||
; added by Phil Summers
|
||||
;
|
||||
; Bugs: YM2151 playback untested & no mute.
|
||||
; CTC polled timing - predicted 44100 divider is too slow
|
||||
; Bugs: CTC polled timing - predicted 44100 divider is too slow
|
||||
;
|
||||
; Assemble with:
|
||||
;
|
||||
; TASM -80 -b VGMPLAY.ASM VGMPLAY.COM
|
||||
;
|
||||
;
|
||||
; A VGM file can play 44100 samples a second. This may be sound chip
|
||||
; register commands or PCM data. This player does not support PCM playback
|
||||
; due to the high processor speed and file size required. Typical VGM files
|
||||
@@ -31,60 +29,59 @@
|
||||
; Device and system specific definitions
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
custom .equ 0 ; System configurations
|
||||
custom .equ 0 ; System configurations
|
||||
P8X180 .equ 1
|
||||
RCBUS .equ 2
|
||||
sbcecb .equ 3
|
||||
sbcecb .equ 3
|
||||
MBC .equ 4
|
||||
;
|
||||
plt_romwbw .equ 1 ; Build for ROMWBW?
|
||||
plt_type .equ sbcecb ; Select build configuration
|
||||
debug .equ 0 ; Display port, register, config info
|
||||
plt_romwbw .equ 1 ; Build for ROMWBW?
|
||||
plt_type .equ sbcecb ; Select build configuration
|
||||
debug .equ 0 ; Display port, register, config info
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Platform specific definitions. If building for ROMWBW, these may be overridden
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
#IF (plt_type=custom)
|
||||
RSEL .equ 09AH ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 09BH ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 88H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 89H ; Secondary AY-3-8910 Register data
|
||||
RSEL .equ 09AH ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 09BH ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 88H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 89H ; Secondary AY-3-8910 Register data
|
||||
VGMBASE .equ $C0
|
||||
YMSEL .equ VGMBASE+00H ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .equ VGMBASE+01H ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .equ VGMBASE+02H ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .equ VGMBASE+03H ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
PSG1REG .equ VGMBASE+08H ; Primary SN76489
|
||||
PSG2REG .equ VGMBASE+09H ; Secondary SN76489
|
||||
ctcbase .equ VGMBASE+0CH ; CTC base address
|
||||
YM2151_SEL1 .equ 0FEH ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .equ 0FFH ; Primary YM2151 register data
|
||||
YM2151_SEL2 .equ 0FEH ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .equ 0FFH ; Secondary YM2151 register data
|
||||
plt_cpuspd .equ 6;000000 ; Non ROMWBW cpu speed default
|
||||
FRAME_DLY .equ 10 ; Frame delay (~ 1/44100)
|
||||
|
||||
YMSEL .equ VGMBASE+00H ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .equ VGMBASE+01H ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .equ VGMBASE+02H ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .equ VGMBASE+03H ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
PSG1REG .equ VGMBASE+04H ; Primary SN76489
|
||||
PSG2REG .equ VGMBASE+05H ; Secondary SN76489
|
||||
YM2151_SEL1 .equ VGMBASE+08H ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .equ VGMBASE+09H ; Primary YM2151 register data
|
||||
YM2151_SEL2 .equ VGMBASE+0AH ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .equ VGMBASE+0BH ; Secondary YM2151 register data
|
||||
ctcbase .equ VGMBASE+0CH ; CTC base address
|
||||
plt_cpuspd .equ 6;000000 ; Non ROMWBW cpu speed default
|
||||
FRAME_DLY .equ 10 ; Frame delay (~ 1/44100)
|
||||
#ENDIF
|
||||
;
|
||||
#IF (plt_type=P8X180)
|
||||
RSEL .equ 82H ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 83H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 88H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 89H ; Secondary AY-3-8910 Register data
|
||||
PSG1REG .equ 84H ; Primary SN76489
|
||||
PSG2REG .equ 8AH ; Secondary SN76489
|
||||
YM2151_SEL1 .equ 0B0H ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .equ 0B1H ; Primary YM2151 register data
|
||||
YM2151_SEL2 .equ 0B2H ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .equ 0B3H ; Secondary YM2151 register data
|
||||
ctcbase .equ 000H ; CTC base address
|
||||
YMSEL .equ 000H ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .equ 000H ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .equ 000H ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .equ 000H ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
FRAME_DLY .equ 48 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 20 ; Non ROMWBW cpu speed default
|
||||
RSEL .equ 82H ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 83H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 88H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 89H ; Secondary AY-3-8910 Register data
|
||||
PSG1REG .equ 84H ; Primary SN76489
|
||||
PSG2REG .equ 8AH ; Secondary SN76489
|
||||
YM2151_SEL1 .equ 0B0H ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .equ 0B1H ; Primary YM2151 register data
|
||||
YM2151_SEL2 .equ 0B2H ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .equ 0B3H ; Secondary YM2151 register data
|
||||
ctcbase .equ 000H ; CTC base address
|
||||
YMSEL .equ 000H ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .equ 000H ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .equ 000H ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .equ 000H ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
FRAME_DLY .equ 48 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 20 ; Non ROMWBW cpu speed default
|
||||
#ENDIF
|
||||
;
|
||||
#IF (plt_type=RCBUS)
|
||||
@@ -103,7 +100,7 @@ YMSEL .equ 000H ; UNDEFINED ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .equ 000H ; UNDEFINED ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .equ 000H ; UNDEFINED ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .equ 000H ; UNDEFINED ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
plt_cpuspd .equ 7;372800 ; CPUOSC ; Non ROMWBW cpu speed default
|
||||
plt_cpuspd .equ 7;372800 ; CPUOSC ; Non ROMWBW cpu speed default
|
||||
FRAME_DLY .equ 12 ; Frame delay (~ 1/44100)
|
||||
#ENDIF
|
||||
;
|
||||
@@ -184,7 +181,7 @@ RTCIO .equ 070H
|
||||
; YM2162 Register write macros - with wait and timeout
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
#DEFINE setreg(reg,val) \
|
||||
#DEFINE s2612reg(reg,val) \
|
||||
#DEFCONT \ ld a,reg
|
||||
#DEFCONT \ out (YMSEL),a
|
||||
#DEFCONT \ ld a,val
|
||||
@@ -195,7 +192,7 @@ RTCIO .equ 070H
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
;
|
||||
#DEFINE setreg2(reg,val) \
|
||||
#DEFINE s2612reg2(reg,val) \
|
||||
#DEFCONT \ ld a,reg
|
||||
#DEFCONT \ out (YM2SEL),a
|
||||
#DEFCONT \ ld a,val
|
||||
@@ -205,9 +202,30 @@ RTCIO .equ 070H
|
||||
#DEFCONT \ rlca
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; VGM Codes - see vgmrips.net/wiki/VGM_specification
|
||||
; YM2151 Register write macros - with wait and timeout
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; Status Byte: Bit
|
||||
; 7 Busy Flag (1=Busy)
|
||||
; 6-2 Not Used
|
||||
; 1 Timer B Overflow (0=No Overflow, 1=Overflow)
|
||||
; 0 Timer A Overflow (0=No Overflow, 1=Overflow)
|
||||
;
|
||||
#DEFINE s2151reg(reg,val) \
|
||||
#DEFCONT \ ld a,reg
|
||||
#DEFCONT \ out (YM2151_SEL1),a
|
||||
#DEFCONT \ ld a,val
|
||||
#DEFCONT \ out (YM2151_DAT1),a
|
||||
#DEFCONT \ ld b,0
|
||||
#DEFCONT \ in a,(YM2151_SEL1)
|
||||
#DEFCONT \ rlca
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; VGM Codes - see vgmrips.net/wiki/VGM_Specification
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
VGM_GG_W .equ 04FH ; GAME GEAR PSG STEREO. WRITE DD TO PORT 0X06
|
||||
@@ -219,8 +237,8 @@ VGM_WNS .equ 061H ; WAIT N SAMPLES
|
||||
VGM_W735 .equ 062H ; WAIT 735 SAMPLES (1/60TH SECOND)
|
||||
VGM_W882 .equ 063H ; WAIT 882 SAMPLES (1/50TH SECOND)
|
||||
VGM_ESD .equ 066H ; END OF SOUND DATA
|
||||
VGM_YM21511_W .equ 054H ; YM2612 #1 WRITE VALUE DD
|
||||
VGM_YM21512_W .equ 0A4H ; YM2612 #2 WRITE VALUE DD
|
||||
VGM_YM21511_W .equ 054H ; YM2151 #1 WRITE VALUE DD
|
||||
VGM_YM21512_W .equ 0A4H ; YM2151 #2 WRITE VALUE DD
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Generic CP/M definitions
|
||||
@@ -490,7 +508,7 @@ YM2162_2 CP VGM_YM26122_W
|
||||
; YM2151 SECTION
|
||||
;
|
||||
YM2151_1 CP VGM_YM21511_W
|
||||
JR NZ,YM2151_2
|
||||
JR NZ,YM2151_2
|
||||
LD A,(HL)
|
||||
OUT (YM2151_SEL1),A
|
||||
INC HL
|
||||
@@ -759,252 +777,254 @@ SKIP1: LD A,(IX+0)
|
||||
XOR A
|
||||
OUT (RDAT), A
|
||||
OUT (RDAT2), A
|
||||
#IFDEF SBCV2004
|
||||
CALL FASTIO
|
||||
#ENDIF
|
||||
|
||||
SKIP2: LD A,(IX+0) ; mute all channels on ym2612
|
||||
AND %00110000
|
||||
JP Z,SKIP3
|
||||
|
||||
setreg($22,$00) ; lfo off
|
||||
s2612reg($22,$00) ; lfo off
|
||||
|
||||
setreg($27,$00) ; Disable independant Channel 3
|
||||
setreg($28,$00) ; note off ch 1
|
||||
setreg($28,$01) ; note off ch 2
|
||||
setreg($28,$02) ; note off ch 3
|
||||
setreg($28,$04) ; note off ch 4
|
||||
setreg($28,$05) ; note off ch 5
|
||||
setreg($28,$06) ; note off ch 6
|
||||
setreg($2b,$00) ; dac off
|
||||
s2612reg($27,$00) ; Disable independant Channel 3
|
||||
s2612reg($28,$00) ; note off ch 1
|
||||
s2612reg($28,$01) ; note off ch 2
|
||||
s2612reg($28,$02) ; note off ch 3
|
||||
s2612reg($28,$04) ; note off ch 4
|
||||
s2612reg($28,$05) ; note off ch 5
|
||||
s2612reg($28,$06) ; note off ch 6
|
||||
s2612reg($2b,$00) ; dac off
|
||||
|
||||
setreg($b4,$00) ; sound off ch 1-3
|
||||
setreg($b5,$00)
|
||||
setreg($b6,$00)
|
||||
setreg2($b4,$00) ; sound off ch 4-6
|
||||
setreg2($b5,$00)
|
||||
setreg2($b6,$00)
|
||||
s2612reg($b4,$00) ; sound off ch 1-3
|
||||
s2612reg($b5,$00)
|
||||
s2612reg($b6,$00)
|
||||
s2612reg2($b4,$00) ; sound off ch 4-6
|
||||
s2612reg2($b5,$00)
|
||||
s2612reg2($b6,$00)
|
||||
|
||||
setreg($40,$7f) ; ch 1-3 total level minimum
|
||||
setreg($41,$7f)
|
||||
setreg($42,$7f)
|
||||
setreg($44,$7f)
|
||||
setreg($45,$7f)
|
||||
setreg($46,$7f)
|
||||
setreg($48,$7f)
|
||||
setreg($49,$7f)
|
||||
setreg($4a,$7f)
|
||||
setreg($4c,$7f)
|
||||
setreg($4d,$7f)
|
||||
setreg($4e,$7f)
|
||||
s2612reg($40,$7f) ; ch 1-3 total level minimum
|
||||
s2612reg($41,$7f)
|
||||
s2612reg($42,$7f)
|
||||
s2612reg($44,$7f)
|
||||
s2612reg($45,$7f)
|
||||
s2612reg($46,$7f)
|
||||
s2612reg($48,$7f)
|
||||
s2612reg($49,$7f)
|
||||
s2612reg($4a,$7f)
|
||||
s2612reg($4c,$7f)
|
||||
s2612reg($4d,$7f)
|
||||
s2612reg($4e,$7f)
|
||||
|
||||
setreg2($40,$7f) ; ch 4-6 total level minimum
|
||||
setreg2($41,$7f)
|
||||
setreg2($42,$7f)
|
||||
setreg2($44,$7f)
|
||||
setreg2($45,$7f)
|
||||
setreg2($46,$7f)
|
||||
setreg2($48,$7f)
|
||||
setreg2($49,$7f)
|
||||
setreg2($4a,$7f)
|
||||
setreg2($4c,$7f)
|
||||
setreg2($4d,$7f)
|
||||
setreg2($4e,$7f)
|
||||
s2612reg2($40,$7f) ; ch 4-6 total level minimum
|
||||
s2612reg2($41,$7f)
|
||||
s2612reg2($42,$7f)
|
||||
s2612reg2($44,$7f)
|
||||
s2612reg2($45,$7f)
|
||||
s2612reg2($46,$7f)
|
||||
s2612reg2($48,$7f)
|
||||
s2612reg2($49,$7f)
|
||||
s2612reg2($4a,$7f)
|
||||
s2612reg2($4c,$7f)
|
||||
s2612reg2($4d,$7f)
|
||||
s2612reg2($4e,$7f)
|
||||
|
||||
#if (0)
|
||||
|
||||
setreg($2a,$00) ; dac value
|
||||
s2612reg($2a,$00) ; dac value
|
||||
|
||||
setreg($24,$00) ; timer A frequency
|
||||
setreg($25,$00) ; timer A frequency
|
||||
setreg($26,$00) ; time B frequency
|
||||
s2612reg($24,$00) ; timer A frequency
|
||||
s2612reg($25,$00) ; timer A frequency
|
||||
s2612reg($26,$00) ; time B frequency
|
||||
|
||||
setreg($30,$00) ; ch 1-3 multiply & detune
|
||||
setreg($31,$00)
|
||||
setreg($32,$00)
|
||||
setreg($34,$00)
|
||||
setreg($35,$00)
|
||||
setreg($36,$00)
|
||||
setreg($38,$00)
|
||||
setreg($39,$00)
|
||||
setreg($3a,$00)
|
||||
setreg($3c,$00)
|
||||
setreg($3d,$00)
|
||||
setreg($3e,$00)
|
||||
s2612reg($30,$00) ; ch 1-3 multiply & detune
|
||||
s2612reg($31,$00)
|
||||
s2612reg($32,$00)
|
||||
s2612reg($34,$00)
|
||||
s2612reg($35,$00)
|
||||
s2612reg($36,$00)
|
||||
s2612reg($38,$00)
|
||||
s2612reg($39,$00)
|
||||
s2612reg($3a,$00)
|
||||
s2612reg($3c,$00)
|
||||
s2612reg($3d,$00)
|
||||
s2612reg($3e,$00)
|
||||
|
||||
setreg2($30,$00) ; ch 4-6 multiply & detune
|
||||
setreg2($31,$00)
|
||||
setreg2($32,$00)
|
||||
setreg2($34,$00)
|
||||
setreg2($35,$00)
|
||||
setreg2($36,$00)
|
||||
setreg2($38,$00)
|
||||
setreg2($39,$00)
|
||||
setreg2($3a,$00)
|
||||
setreg2($3c,$00)
|
||||
setreg2($3d,$00)
|
||||
setreg2($3e,$00)
|
||||
s2612reg2($30,$00) ; ch 4-6 multiply & detune
|
||||
s2612reg2($31,$00)
|
||||
s2612reg2($32,$00)
|
||||
s2612reg2($34,$00)
|
||||
s2612reg2($35,$00)
|
||||
s2612reg2($36,$00)
|
||||
s2612reg2($38,$00)
|
||||
s2612reg2($39,$00)
|
||||
s2612reg2($3a,$00)
|
||||
s2612reg2($3c,$00)
|
||||
s2612reg2($3d,$00)
|
||||
s2612reg2($3e,$00)
|
||||
|
||||
setreg($50,$00) ; ch 1-3 attack rate and scaling
|
||||
setreg($51,$00)
|
||||
setreg($52,$00)
|
||||
setreg($54,$00)
|
||||
setreg($55,$00)
|
||||
setreg($56,$00)
|
||||
setreg($58,$00)
|
||||
setreg($59,$00)
|
||||
setreg($5a,$00)
|
||||
setreg($5c,$00)
|
||||
setreg($5d,$00)
|
||||
setreg($5e,$00)
|
||||
s2612reg($50,$00) ; ch 1-3 attack rate and scaling
|
||||
s2612reg($51,$00)
|
||||
s2612reg($52,$00)
|
||||
s2612reg($54,$00)
|
||||
s2612reg($55,$00)
|
||||
s2612reg($56,$00)
|
||||
s2612reg($58,$00)
|
||||
s2612reg($59,$00)
|
||||
s2612reg($5a,$00)
|
||||
s2612reg($5c,$00)
|
||||
s2612reg($5d,$00)
|
||||
s2612reg($5e,$00)
|
||||
|
||||
setreg2($50,$00) ; ch 4-6 attack rate and scaling
|
||||
setreg2($51,$00)
|
||||
setreg2($52,$00)
|
||||
setreg2($54,$00)
|
||||
setreg2($55,$00)
|
||||
setreg2($56,$00)
|
||||
setreg2($58,$00)
|
||||
setreg2($59,$00)
|
||||
setreg2($5a,$00)
|
||||
setreg2($5c,$00)
|
||||
setreg2($5d,$00)
|
||||
setreg2($5e,$00)
|
||||
s2612reg2($50,$00) ; ch 4-6 attack rate and scaling
|
||||
s2612reg2($51,$00)
|
||||
s2612reg2($52,$00)
|
||||
s2612reg2($54,$00)
|
||||
s2612reg2($55,$00)
|
||||
s2612reg2($56,$00)
|
||||
s2612reg2($58,$00)
|
||||
s2612reg2($59,$00)
|
||||
s2612reg2($5a,$00)
|
||||
s2612reg2($5c,$00)
|
||||
s2612reg2($5d,$00)
|
||||
s2612reg2($5e,$00)
|
||||
|
||||
setreg($60,$00) ; ch 1-3 decay rate and am enable
|
||||
setreg($61,$00)
|
||||
setreg($62,$00)
|
||||
setreg($64,$00)
|
||||
setreg($65,$00)
|
||||
setreg($66,$00)
|
||||
setreg($68,$00)
|
||||
setreg($69,$00)
|
||||
setreg($6a,$00)
|
||||
setreg($6c,$00)
|
||||
setreg($6d,$00)
|
||||
setreg($6e,$00)
|
||||
s2612reg($60,$00) ; ch 1-3 decay rate and am enable
|
||||
s2612reg($61,$00)
|
||||
s2612reg($62,$00)
|
||||
s2612reg($64,$00)
|
||||
s2612reg($65,$00)
|
||||
s2612reg($66,$00)
|
||||
s2612reg($68,$00)
|
||||
s2612reg($69,$00)
|
||||
s2612reg($6a,$00)
|
||||
s2612reg($6c,$00)
|
||||
s2612reg($6d,$00)
|
||||
s2612reg($6e,$00)
|
||||
|
||||
setreg2($60,$00) ; ch 4-6 decay rate and am enable
|
||||
setreg2($61,$00)
|
||||
setreg2($62,$00)
|
||||
setreg2($64,$00)
|
||||
setreg2($65,$00)
|
||||
setreg2($66,$00)
|
||||
setreg2($68,$00)
|
||||
setreg2($69,$00)
|
||||
setreg2($6a,$00)
|
||||
setreg2($6c,$00)
|
||||
setreg2($6d,$00)
|
||||
setreg2($6e,$00)
|
||||
s2612reg2($60,$00) ; ch 4-6 decay rate and am enable
|
||||
s2612reg2($61,$00)
|
||||
s2612reg2($62,$00)
|
||||
s2612reg2($64,$00)
|
||||
s2612reg2($65,$00)
|
||||
s2612reg2($66,$00)
|
||||
s2612reg2($68,$00)
|
||||
s2612reg2($69,$00)
|
||||
s2612reg2($6a,$00)
|
||||
s2612reg2($6c,$00)
|
||||
s2612reg2($6d,$00)
|
||||
s2612reg2($6e,$00)
|
||||
|
||||
setreg($70,$00) ; ch 1-3 sustain rate
|
||||
setreg($71,$00)
|
||||
setreg($72,$00)
|
||||
setreg($74,$00)
|
||||
setreg($75,$00)
|
||||
setreg($76,$00)
|
||||
setreg($78,$00)
|
||||
setreg($79,$00)
|
||||
setreg($7a,$00)
|
||||
setreg($7c,$00)
|
||||
setreg($7d,$00)
|
||||
setreg($7e,$00)
|
||||
s2612reg($70,$00) ; ch 1-3 sustain rate
|
||||
s2612reg($71,$00)
|
||||
s2612reg($72,$00)
|
||||
s2612reg($74,$00)
|
||||
s2612reg($75,$00)
|
||||
s2612reg($76,$00)
|
||||
s2612reg($78,$00)
|
||||
s2612reg($79,$00)
|
||||
s2612reg($7a,$00)
|
||||
s2612reg($7c,$00)
|
||||
s2612reg($7d,$00)
|
||||
s2612reg($7e,$00)
|
||||
|
||||
setreg2($70,$00) ; ch 4-6 sustain rate
|
||||
setreg2($71,$00)
|
||||
setreg2($72,$00)
|
||||
setreg2($74,$00)
|
||||
setreg2($75,$00)
|
||||
setreg2($76,$00)
|
||||
setreg2($78,$00)
|
||||
setreg2($79,$00)
|
||||
setreg2($7a,$00)
|
||||
setreg2($7c,$00)
|
||||
setreg2($7d,$00)
|
||||
setreg2($7e,$00)
|
||||
s2612reg2($70,$00) ; ch 4-6 sustain rate
|
||||
s2612reg2($71,$00)
|
||||
s2612reg2($72,$00)
|
||||
s2612reg2($74,$00)
|
||||
s2612reg2($75,$00)
|
||||
s2612reg2($76,$00)
|
||||
s2612reg2($78,$00)
|
||||
s2612reg2($79,$00)
|
||||
s2612reg2($7a,$00)
|
||||
s2612reg2($7c,$00)
|
||||
s2612reg2($7d,$00)
|
||||
s2612reg2($7e,$00)
|
||||
|
||||
setreg($80,$00) ; ch 1-3 release rate and sustain level
|
||||
setreg($81,$00)
|
||||
setreg($82,$00)
|
||||
setreg($84,$00)
|
||||
setreg($85,$00)
|
||||
setreg($86,$00)
|
||||
setreg($88,$00)
|
||||
setreg($89,$00)
|
||||
setreg($8a,$00)
|
||||
setreg($8c,$00)
|
||||
setreg($8d,$00)
|
||||
setreg($8e,$00)
|
||||
s2612reg($80,$00) ; ch 1-3 release rate and sustain level
|
||||
s2612reg($81,$00)
|
||||
s2612reg($82,$00)
|
||||
s2612reg($84,$00)
|
||||
s2612reg($85,$00)
|
||||
s2612reg($86,$00)
|
||||
s2612reg($88,$00)
|
||||
s2612reg($89,$00)
|
||||
s2612reg($8a,$00)
|
||||
s2612reg($8c,$00)
|
||||
s2612reg($8d,$00)
|
||||
s2612reg($8e,$00)
|
||||
|
||||
setreg2($80,$00) ; ch 4-6 release rate and sustain level
|
||||
setreg2($81,$00)
|
||||
setreg2($82,$00)
|
||||
setreg2($84,$00)
|
||||
setreg2($85,$00)
|
||||
setreg2($86,$00)
|
||||
setreg2($88,$00)
|
||||
setreg2($89,$00)
|
||||
setreg2($8a,$00)
|
||||
setreg2($8c,$00)
|
||||
setreg2($8d,$00)
|
||||
setreg2($8e,$00)
|
||||
s2612reg2($80,$00) ; ch 4-6 release rate and sustain level
|
||||
s2612reg2($81,$00)
|
||||
s2612reg2($82,$00)
|
||||
s2612reg2($84,$00)
|
||||
s2612reg2($85,$00)
|
||||
s2612reg2($86,$00)
|
||||
s2612reg2($88,$00)
|
||||
s2612reg2($89,$00)
|
||||
s2612reg2($8a,$00)
|
||||
s2612reg2($8c,$00)
|
||||
s2612reg2($8d,$00)
|
||||
s2612reg2($8e,$00)
|
||||
|
||||
setreg($90,$00) ; ch 1-3 ssg-eg
|
||||
setreg($91,$00)
|
||||
setreg($92,$00)
|
||||
setreg($94,$00)
|
||||
setreg($95,$00)
|
||||
setreg($96,$00)
|
||||
setreg($98,$00)
|
||||
setreg($99,$00)
|
||||
setreg($9a,$00)
|
||||
setreg($9c,$00)
|
||||
setreg($9d,$00)
|
||||
setreg($9e,$00)
|
||||
s2612reg($90,$00) ; ch 1-3 ssg-eg
|
||||
s2612reg($91,$00)
|
||||
s2612reg($92,$00)
|
||||
s2612reg($94,$00)
|
||||
s2612reg($95,$00)
|
||||
s2612reg($96,$00)
|
||||
s2612reg($98,$00)
|
||||
s2612reg($99,$00)
|
||||
s2612reg($9a,$00)
|
||||
s2612reg($9c,$00)
|
||||
s2612reg($9d,$00)
|
||||
s2612reg($9e,$00)
|
||||
|
||||
setreg2($90,$00) ; ch 4-6 ssg-eg
|
||||
setreg2($91,$00)
|
||||
setreg2($92,$00)
|
||||
setreg2($94,$00)
|
||||
setreg2($95,$00)
|
||||
setreg2($96,$00)
|
||||
setreg2($98,$00)
|
||||
setreg2($99,$00)
|
||||
setreg2($9a,$00)
|
||||
setreg2($9c,$00)
|
||||
setreg2($9d,$00)
|
||||
setreg2($9e,$00)
|
||||
s2612reg2($90,$00) ; ch 4-6 ssg-eg
|
||||
s2612reg2($91,$00)
|
||||
s2612reg2($92,$00)
|
||||
s2612reg2($94,$00)
|
||||
s2612reg2($95,$00)
|
||||
s2612reg2($96,$00)
|
||||
s2612reg2($98,$00)
|
||||
s2612reg2($99,$00)
|
||||
s2612reg2($9a,$00)
|
||||
s2612reg2($9c,$00)
|
||||
s2612reg2($9d,$00)
|
||||
s2612reg2($9e,$00)
|
||||
|
||||
setreg($a0,$00) ; ch 1-3 frequency
|
||||
setreg($a1,$00)
|
||||
setreg($a2,$00)
|
||||
setreg($a4,$00)
|
||||
setreg($a5,$00)
|
||||
setreg($a6,$00)
|
||||
; setreg($a8,$00) ; ch 3 special mode
|
||||
; setreg($a9,$00)
|
||||
; setreg($aa,$00)
|
||||
; setreg($ac,$00)
|
||||
; setreg($ad,$00)
|
||||
; setreg($ae,$00)
|
||||
s2612reg($a0,$00) ; ch 1-3 frequency
|
||||
s2612reg($a1,$00)
|
||||
s2612reg($a2,$00)
|
||||
s2612reg($a4,$00)
|
||||
s2612reg($a5,$00)
|
||||
s2612reg($a6,$00)
|
||||
; s2612reg($a8,$00) ; ch 3 special mode
|
||||
; s2612reg($a9,$00)
|
||||
; s2612reg($aa,$00)
|
||||
; s2612reg($ac,$00)
|
||||
; s2612reg($ad,$00)
|
||||
; s2612reg($ae,$00)
|
||||
|
||||
setreg2($a0,$00) ; ch 4-6 frequency
|
||||
setreg2($a1,$00)
|
||||
setreg2($a2,$00)
|
||||
setreg2($a4,$00)
|
||||
setreg2($a5,$00)
|
||||
setreg2($a6,$00)
|
||||
; setreg2($a8,$00) ; ch 3 special mode
|
||||
; setreg2($a9,$00)
|
||||
; setreg2($aa,$00)
|
||||
; setreg2($ac,$00)
|
||||
; setreg2($ad,$00)
|
||||
; setreg2($ae,$00)
|
||||
s2612reg2($a0,$00) ; ch 4-6 frequency
|
||||
s2612reg2($a1,$00)
|
||||
s2612reg2($a2,$00)
|
||||
s2612reg2($a4,$00)
|
||||
s2612reg2($a5,$00)
|
||||
s2612reg2($a6,$00)
|
||||
; s2612reg2($a8,$00) ; ch 3 special mode
|
||||
; s2612reg2($a9,$00)
|
||||
; s2612reg2($aa,$00)
|
||||
; s2612reg2($ac,$00)
|
||||
; s2612reg2($ad,$00)
|
||||
; s2612reg2($ae,$00)
|
||||
|
||||
setreg($b0,$00) ; ch 1-3 algorith + feedback
|
||||
setreg($b1,$00)
|
||||
setreg($b2,$00)
|
||||
setreg2($b0,$00) ; ch 4-6 algorith + feedback
|
||||
setreg2($b1,$00)
|
||||
setreg2($b2,$00)
|
||||
s2612reg($b0,$00) ; ch 1-3 algorith + feedback
|
||||
s2612reg($b1,$00)
|
||||
s2612reg($b2,$00)
|
||||
s2612reg2($b0,$00) ; ch 4-6 algorith + feedback
|
||||
s2612reg2($b1,$00)
|
||||
s2612reg2($b2,$00)
|
||||
|
||||
#endif
|
||||
|
||||
@@ -1014,6 +1034,64 @@ SKIP3: LD A,(IX+0) ; For YM2151 ... Unimplemented
|
||||
|
||||
; MUTE YM2151
|
||||
|
||||
s2151reg($14,$30) ; disable timer %00110000
|
||||
|
||||
s2151reg($0f,$00) ; disable noise
|
||||
;
|
||||
s2151reg($1b,$00) ; CTx output off, LFO waveform
|
||||
|
||||
s2151reg($08,$00) ; key off all channels
|
||||
s2151reg($08,$01)
|
||||
s2151reg($08,$02)
|
||||
s2151reg($08,$03)
|
||||
s2151reg($08,$04)
|
||||
s2151reg($08,$05)
|
||||
s2151reg($08,$06)
|
||||
s2151reg($08,$07)
|
||||
|
||||
s2151reg($60,$7f) ; total level = silent
|
||||
s2151reg($61,$7f)
|
||||
s2151reg($62,$7f)
|
||||
s2151reg($63,$7f)
|
||||
s2151reg($64,$7f)
|
||||
s2151reg($65,$7f)
|
||||
s2151reg($66,$7f)
|
||||
s2151reg($67,$7f)
|
||||
s2151reg($68,$7f)
|
||||
s2151reg($69,$7f)
|
||||
s2151reg($6A,$7f)
|
||||
s2151reg($6B,$7f)
|
||||
s2151reg($6C,$7f)
|
||||
s2151reg($6D,$7f)
|
||||
s2151reg($6E,$7f)
|
||||
s2151reg($6F,$7f)
|
||||
s2151reg($70,$7f)
|
||||
s2151reg($71,$7f)
|
||||
s2151reg($72,$7f)
|
||||
s2151reg($73,$7f)
|
||||
s2151reg($74,$7f)
|
||||
s2151reg($75,$7f)
|
||||
s2151reg($76,$7f)
|
||||
s2151reg($77,$7f)
|
||||
s2151reg($78,$7f)
|
||||
s2151reg($79,$7f)
|
||||
s2151reg($7A,$7f)
|
||||
s2151reg($7B,$7f)
|
||||
s2151reg($7C,$7f)
|
||||
s2151reg($7D,$7f)
|
||||
s2151reg($7E,$7f)
|
||||
s2151reg($7F,$7f)
|
||||
|
||||
s2151reg($20,$00) ; channel output off, no feedback
|
||||
s2151reg($21,$00)
|
||||
s2151reg($22,$00)
|
||||
s2151reg($23,$00)
|
||||
s2151reg($24,$00)
|
||||
s2151reg($25,$00)
|
||||
s2151reg($26,$00)
|
||||
s2151reg($27,$00)
|
||||
;
|
||||
|
||||
SKIP4 RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
@@ -21,7 +21,7 @@ Supported platforms
|
||||
===================
|
||||
|
||||
VGM Player is currently being developed on the ROMWBW platform using the Retrobrew computers
|
||||
EBC-SBC-V2 (Z80), ECB-SCG (AY-3-8910) and ECB-VGM (YM2612 and 2xSN76489) board.
|
||||
EBC-SBC-V2 (Z80), ECB-SCG (AY-3-8910) and ECB-VGM (YM2612,YM2151 2xSN76489) board.
|
||||
It can be configured to run with other hardware such as RCBus, P8X180 and nhyodyne MBC.
|
||||
|
||||
VGM files can be very big and are limited in size by the available TPA space, which is typically 52k.
|
||||
@@ -50,13 +50,15 @@ FIELDMAP.VGM - SN76489+YM2612 - Taikou Risshiden: Field Map: Summer
|
||||
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
|
||||
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
|
||||
* Included in disk images
|
||||
|
||||
VGM sources
|
||||
===========
|
||||
https://www.smspower.org/forums/15359-VGMPacksGameGearMegaCollection
|
||||
https://vgmrips.net/packs/chip/ym2612
|
||||
https://vgmrips.net/packs/chip/ym2151
|
||||
https://project2612.org/
|
||||
|
||||
VGM Tools
|
||||
|
||||
@@ -720,12 +720,17 @@ NOBYE: LXI H,FCB+1 ; Get primary option
|
||||
; Send option processor
|
||||
; Single option: "K" - force 1k mode
|
||||
;
|
||||
INX H ; Look for a 'K'
|
||||
CALL SNDOPC
|
||||
CALL SNDOPC
|
||||
JMP ALLSET
|
||||
SNDOPC:INX H ; Look for an option
|
||||
MOV A,M
|
||||
CPI ' ' ; Is it a space?
|
||||
JZ ALLSET ; Then we're ready to send...
|
||||
CPI 'K'
|
||||
JNZ OPTERR ; "K" is the only setable 2nd option
|
||||
JNZ CHKK
|
||||
POP PSW
|
||||
JMP ALLSET
|
||||
CHKK: CPI 'K'
|
||||
JNZ CHK6TH ; If it's not K it should be a port number
|
||||
LDA MSPEED
|
||||
CPI MINKSP ; If less than MINKSP bps, ignore 1k
|
||||
JC ALLSET ; Request
|
||||
@@ -733,7 +738,7 @@ NOBYE: LXI H,FCB+1 ; Get primary option
|
||||
STA KFLAG ; First, force us to 1K mode
|
||||
CALL ILPRT
|
||||
DB '(1k protocol selected)',CR,LF,0
|
||||
JMP ALLSET ; That's it for send...
|
||||
RET ; That's it for send...
|
||||
;
|
||||
; Receive option processor
|
||||
; 3 or 4 options: "X" - disable auto-protocol select
|
||||
@@ -5789,4 +5794,4 @@ BDPTOS EQU 83 ; Print Time on System
|
||||
ENDIF ; BYEBDOS
|
||||
;
|
||||
END
|
||||
|
||||
|
||||
|
||||
@@ -30,11 +30,13 @@
|
||||
; 2021-12-06 [WBW] Fix inverted ROM/RAM DPB mapping in buffer alloc
|
||||
; 2022-02-28 [WBW] Use HBIOS to swap banks under CP/M 3
|
||||
; Use CPM3 BDOS direct BIOS call to get DRVTBL adr
|
||||
; 2023-06-19 [WBW] Update for revised DIODEVICE API
|
||||
; 2023-09-19 [WBW] Added CHUSB & CHSD device support
|
||||
; 2023-10-13 [WBW] Fixed DPH creation to select correct DPB
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
; 1) Do something to prevent assigning slices when device does not support them
|
||||
; 2) ASSIGN C: causes drive map to be reinstalled unnecessarily
|
||||
; 1) ASSIGN C: causes drive map to be reinstalled unnecessarily
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
;===============================================================================
|
||||
@@ -664,10 +666,10 @@ makdphwbw: ; determine appropriate dpb (WBW mode, unit number in A)
|
||||
jr makdph0 ; jump ahead
|
||||
makdph00:
|
||||
ld e,6 ; assume floppy
|
||||
cp $10 ; floppy?
|
||||
cp $01 ; floppy?
|
||||
jr z,makdph0 ; yes, jump ahead
|
||||
ld e,3 ; assume ram floppy
|
||||
cp $20 ; ram floppy?
|
||||
cp $02 ; ram floppy?
|
||||
jr z,makdph0 ; yes, jump ahead
|
||||
ld e,4 ; everything else is assumed to be hard disk
|
||||
jr makdph0 ; yes, jump ahead
|
||||
@@ -1065,10 +1067,6 @@ drvmap1: ; loop through device table looking for a match
|
||||
drvmap2:
|
||||
; convert index to device type id
|
||||
ld a,c ; index to accum
|
||||
rlca ; move it to upper nibble
|
||||
rlca ; ...
|
||||
rlca ; ...
|
||||
rlca ; ...
|
||||
ld (device),a ; save as device id
|
||||
;
|
||||
; loop thru hbios units looking for device type/unit match
|
||||
@@ -1308,10 +1306,6 @@ prtdev:
|
||||
rst 08 ; call hbios, D := device, E := unit
|
||||
push de ; save results
|
||||
ld a,d ; device to A
|
||||
rrca ; isolate high nibble (device)
|
||||
rrca ; ...
|
||||
rrca ; ...
|
||||
rrca ; ... into low nibble
|
||||
and $0F ; mask out undesired bits
|
||||
push hl ; save HL
|
||||
add a,a ; multiple A by two for word table
|
||||
@@ -1405,12 +1399,11 @@ chkdev: ; HBIOS variant
|
||||
; get device/unit info
|
||||
ld b,$17 ; hbios func: diodevice
|
||||
ld c,a ; unit to C
|
||||
rst 08 ; call hbios, D := device, E := unit
|
||||
ld a,d ; device to A
|
||||
rst 08 ; call hbios, C := device attributes
|
||||
;
|
||||
; check slice support
|
||||
cp $30 ; A has device/unit, in hard disk range?
|
||||
jr c,chkdev1 ; if not hard disk, check slice val
|
||||
bit 5,c ; high capacity device?
|
||||
jr z,chkdev1 ; if not high cap, check slice val
|
||||
xor a ; otherwise, signal OK
|
||||
ret
|
||||
;
|
||||
@@ -1918,11 +1911,11 @@ dev06 .db "SD",0
|
||||
dev07 .db "PRPSD",0
|
||||
dev08 .db "PPPSD",0
|
||||
dev09 .db "HDSK",0
|
||||
dev10 .equ devunk
|
||||
dev11 .equ devunk
|
||||
dev12 .equ devunk
|
||||
dev13 .equ devunk
|
||||
dev14 .equ devunk
|
||||
dev10 .db "PPA",0
|
||||
dev11 .db "IMM",0
|
||||
dev12 .db "SYQ",0
|
||||
dev13 .db "CHUSB",0
|
||||
dev14 .db "CHSD",0
|
||||
dev15 .equ devunk
|
||||
;
|
||||
devcnt .equ 10 ; 10 devices defined
|
||||
@@ -1943,13 +1936,13 @@ stack .equ $ ; stack top
|
||||
; Messages
|
||||
;
|
||||
indent .db " ",0
|
||||
msgban1 .db "ASSIGN v1.5 for RomWBW CP/M ",0
|
||||
msgban1 .db "ASSIGN v1.8 for RomWBW CP/M ",0
|
||||
msg22 .db "2.2",0
|
||||
msg3 .db "3",0
|
||||
msbban2 .db ", 28-Feb-2022",0
|
||||
msbban2 .db ", 13-Oct-2023",0
|
||||
msghb .db " (HBIOS Mode)",0
|
||||
msgub .db " (UBIOS Mode)",0
|
||||
msgban3 .db "Copyright 2021, Wayne Warthen, GNU GPL v3",0
|
||||
msgban3 .db "Copyright 2023, Wayne Warthen, GNU GPL v3",0
|
||||
msguse .db "Usage: ASSIGN D:[=[{D:|<device>[<unitnum>]:[<slicenum>]}]][,...]",13,10
|
||||
.db " ex. ASSIGN (display all active assignments)",13,10
|
||||
.db " ASSIGN /? (display version and usage)",13,10
|
||||
|
||||
@@ -31,6 +31,8 @@
|
||||
;
|
||||
;[2022/03/27] v1.8 Support RHYOPHYRE
|
||||
;
|
||||
;[2023/07/07] v1.9 Support DUODYNE
|
||||
;
|
||||
; Constants
|
||||
;
|
||||
mask_data .EQU %10000000 ; RTC data line
|
||||
@@ -49,6 +51,7 @@ PORT_DYNO .EQU $0C ; RTC port for DYNO
|
||||
PORT_RCZ280 .EQU $C0 ; RTC port for RCZ280
|
||||
PORT_MBC .EQU $70 ; RTC port for MBC
|
||||
PORT_RPH .EQU $84 ; RTC port for RHYOPHYRE
|
||||
PORT_DUO .EQU $94 ; RTC port for DUODYNE
|
||||
|
||||
|
||||
BDOS .EQU 5 ; BDOS invocation vector
|
||||
@@ -1079,61 +1082,66 @@ HINIT:
|
||||
LD C,PORT_SBC
|
||||
LD DE,PLT_SBC
|
||||
CP $01 ; SBC
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
CP $02 ; ZETA
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
CP $03 ; ZETA 2
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_N8
|
||||
LD DE,PLT_N8
|
||||
CP $04 ; N8
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_MK4
|
||||
LD DE,PLT_MK4
|
||||
CP $05 ; Mark IV
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ80
|
||||
LD DE,PLT_RCZ80
|
||||
CP $07 ; RCBus w/ Z80
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ180
|
||||
LD DE,PLT_RCZ180
|
||||
CP $08 ; RCBus w/ Z180
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_EZZ80
|
||||
LD DE,PLT_EZZ80
|
||||
CP $09 ; Easy Z80
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_SCZ180
|
||||
LD DE,PLT_SCZ180
|
||||
CP $0A ; SCZ180
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_DYNO
|
||||
LD DE,PLT_DYNO
|
||||
CP 11 ; DYNO
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RCZ280
|
||||
LD DE,PLT_RCZ280
|
||||
CP 12 ; RCZ280
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_MBC
|
||||
LD DE,PLT_MBC
|
||||
CP 13 ; MBC
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_RPH
|
||||
LD DE,PLT_RPH
|
||||
CP 14 ; RHYOPHYRE
|
||||
JR Z,RTC_INIT2
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
LD C,PORT_DUO
|
||||
LD DE,PLT_DUO
|
||||
CP 17 ; DUODYNE
|
||||
JP Z,RTC_INIT2
|
||||
;
|
||||
; Unknown platform
|
||||
LD DE,PLTERR ; BIOS error message
|
||||
@@ -1630,7 +1638,7 @@ TESTING_BIT_DELAY_OVER:
|
||||
|
||||
RTC_HELP_MSG:
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
.TEXT "RTC: Version 1.8"
|
||||
.TEXT "RTC: Version 1.9"
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
.TEXT "Commands: E)xit T)ime st(A)rt S)et R)aw L)oop C)harge N)ocharge D)elay I)nit G)et P)ut B)oot W)arm-start H)elp"
|
||||
.DB 0Ah, 0Dh ; line feed and carriage return
|
||||
@@ -1760,6 +1768,7 @@ PLT_DYNO .TEXT ", DYNO RTC Module Latch Port 0x0C\r\n$"
|
||||
PLT_RCZ280 .TEXT ", RCBus Z280 RTC Module Latch Port 0xC0\r\n$"
|
||||
PLT_MBC .TEXT ", MBC RTC Latch Port 0x70\r\n$"
|
||||
PLT_RPH .TEXT ", RHYOPHYRE RTC Latch Port 0x84\r\n$"
|
||||
PLT_DUO .TEXT ", DUODYNE RTC Latch Port 0x70\r\n$"
|
||||
|
||||
;
|
||||
; Generic FOR-NEXT loop algorithm
|
||||
|
||||
@@ -310,6 +310,32 @@ diskdef wbw_rom1024
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 512KB RAM (256KB reserved, 256KB RAM Disk)
|
||||
|
||||
diskdef wbw_ram512
|
||||
seclen 512
|
||||
tracks 8
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 1024KB RAM (256KB reserved, 768KB RAM Disk)
|
||||
|
||||
diskdef wbw_ram1024
|
||||
seclen 512
|
||||
tracks 24
|
||||
sectrk 64
|
||||
blocksize 2048
|
||||
maxdir 256
|
||||
skew 0
|
||||
boottrk 0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# RomWBW 720K floppy media
|
||||
|
||||
diskdef wbw_fd720
|
||||
|
||||
@@ -8,7 +8,7 @@ call BuildShared || exit /b
|
||||
call BuildImages || exit /b
|
||||
call BuildROM %* || exit /b
|
||||
call BuildZRC || exit /b
|
||||
call BuildZZRC || exit /b
|
||||
call BuildZZRCC || exit /b
|
||||
|
||||
if "%1" == "dist" (
|
||||
call Clean || exit /b
|
||||
|
||||
@@ -4,6 +4,7 @@ setlocal
|
||||
pushd HDIAG && call Build || exit /b & popd
|
||||
pushd CBIOS && call Build || exit /b & popd
|
||||
pushd CPM22 && call Build || exit /b & popd
|
||||
pushd QPM && call Build || exit /b & popd
|
||||
pushd ZCPR && call Build || exit /b & popd
|
||||
pushd ZCPR-DJ && call Build || exit /b & popd
|
||||
pushd ZSDOS && call Build || exit /b & popd
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
pushd ZZRC && call Build || exit /b & popd
|
||||
4
Source/BuildZZRCC.cmd
Normal file
4
Source/BuildZZRCC.cmd
Normal file
@@ -0,0 +1,4 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
pushd ZZRCC && call Build || exit /b & popd
|
||||
@@ -1350,7 +1350,6 @@ DSK_SELECT1A:
|
||||
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
|
||||
RST 08 ; GET UNIT INFO, DEVICE TYPE IN D
|
||||
LD A,D ; DEVICE TYPE -> A
|
||||
AND $F0 ; ISOLATE HIGH BITS
|
||||
CP DIODEV_FD ; FLOPPY?
|
||||
JR NZ,DSK_SELECT1B ; IF NOT, DO LBA IO
|
||||
LD HL,SEKLBA+3 ; POINT TO HIGH ORDER BYTE
|
||||
@@ -1511,8 +1510,8 @@ DSK_MBR3:
|
||||
;
|
||||
DSK_MBR4:
|
||||
; IF BOOT FROM PARTITION, USE NEW SECTORS PER SLICE VALUE
|
||||
LD HL,16384 ; NEW SECTORS PER SLICE
|
||||
LD (SPS),HL ; SAVE IT
|
||||
LD HL,16384 ; NEW SECTORS PER SLICE
|
||||
LD (SPS),HL ; SAVE IT
|
||||
|
||||
; UPDATE MEDIA ID
|
||||
LD A,MID_HDNEW ; NEW MEDIA ID
|
||||
@@ -1520,20 +1519,80 @@ DSK_MBR4:
|
||||
;
|
||||
DSK_MBR5:
|
||||
; ADJUST LBA OFFSET BASED ON TARGET SLICE
|
||||
LD A,(SLICE) ; GET SLICE, A IS LOOP CNT
|
||||
LD HL,(SEKLBA) ; SET DE:HL
|
||||
LD DE,(SEKLBA+2) ; ... TO STARTING LBA
|
||||
LD BC,(SPS) ; SECTORS PER SLICE
|
||||
DSK_MBR6:
|
||||
OR A ; SET FLAGS TO CHECK LOOP CNTR
|
||||
JR Z,DSK_MBR8 ; DONE IF COUNTER EXHAUSTED
|
||||
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
|
||||
JR NC,DSK_MBR7 ; CHECK FOR CARRY
|
||||
INC DE ; IF SO, BUMP HIGH WORD
|
||||
DSK_MBR7:
|
||||
DEC A ; DEC LOOP DOWNCOUNTER
|
||||
JR DSK_MBR6 ; AND LOOP
|
||||
LD A,(SLICE) ; GET SLICE, A IS LOOP CNT
|
||||
LD HL,(SEKLBA) ; SET DE:HL
|
||||
LD DE,(SEKLBA+2) ; ... TO STARTING LBA
|
||||
LD BC,(SPS) ; SECTORS PER SLICE
|
||||
RES 7,D ; CLEAR LBA MODE BIT
|
||||
DSK_MBR6:
|
||||
OR A ; SET FLAGS TO CHECK LOOP CNTR
|
||||
JR Z,DSK_MBR8 ; DONE IF COUNTER EXHAUSTED
|
||||
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
|
||||
JR NC,DSK_MBR7 ; CHECK FOR CARRY
|
||||
INC DE ; IF SO, BUMP HIGH WORD
|
||||
DSK_MBR7:
|
||||
DEC A ; DEC LOOP DOWNCOUNTER
|
||||
JR DSK_MBR6 ; AND LOOP
|
||||
DSK_MBR8:
|
||||
; LBA OFFSET OF DESIRED SLICE IS NOW IN DE:HL
|
||||
; NEED TO CHECK IF THE SLICE IS BEYOND CAPACITY OF MEDIA
|
||||
; IF LBA_OFF + SPS >= DSK_CAP, ERROR!
|
||||
;
|
||||
; SAVE LBA_OFF
|
||||
PUSH DE ; MSW
|
||||
PUSH HL ; LSW
|
||||
;
|
||||
; ADD SPS TO COMPUTE LBA_REQ
|
||||
LD BC,(SPS) ; SECTORS PER SLICE
|
||||
ADD HL,BC ; ADD ONE SLICE TO LOW WORD
|
||||
JR NC,DSK_MBR9 ; CHECK FOR CARRY
|
||||
INC DE ; IF SO, BUMP HIGH WORD
|
||||
DSK_MBR9:
|
||||
; SAVE CAP_REQ
|
||||
LD (CAP_REQ),HL ; LSW
|
||||
LD (CAP_REQ+2),DE ; MSW
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
; GET DSK_CAP (DE:HL)
|
||||
LD B,BF_DIOCAP ; HBIOS DISK CAPACITY FUNC
|
||||
LD A,(SEKUNIT) ; DISK UNIT NUMBER
|
||||
LD C,A ; ... INTO C
|
||||
RST 08 ; HBIOS CALL (DE:HL = CAPACITY)
|
||||
#ENDIF
|
||||
;
|
||||
#IFDEF PLTUNA
|
||||
; GET DSK_CAP (DE:HL)
|
||||
LD C,$45 ; UBIOS DISK INFO FUNC
|
||||
LD A,(SEKUNIT) ; DISK UNIT NUMBER
|
||||
LD B,A ; ... INTO B
|
||||
RST 08 ; CALL UNA (DE:HL = CAPACITY)
|
||||
#ENDIF
|
||||
;
|
||||
; SAVE DSK_CAP (DE:HL)
|
||||
PUSH DE ; SAVE DSK_CAP (MSW)
|
||||
PUSH HL ; SAVE DSK_CAP (LSW)
|
||||
;
|
||||
; CHECK DSK_CAP >= CAP_REQ, CF SET ON OVERFLOW
|
||||
; NO NEED SAVE ACTUAL RESULT
|
||||
OR A ; CLEAR CARRY FOR SBC
|
||||
POP HL ; DSK_CAP LSW
|
||||
LD DE,(CAP_REQ) ; CAP_REQ LSW
|
||||
SBC HL,DE ; DSK_CAP - LBA_REQ (LSW)
|
||||
POP HL ; DSK_CAP MSW
|
||||
LD DE,(CAP_REQ+2) ; CAP_REQ MSW
|
||||
SBC HL,DE ; DSK_CAP - LBA_REQ (MSW)
|
||||
;
|
||||
; RESTORE LBA_OFF
|
||||
POP HL ; LSW
|
||||
POP DE ; MSW
|
||||
;
|
||||
; ABORT ON OVERFLOW WITH ERROR!
|
||||
JR NC,DSK_MBR10 ; IF NO OVERFLOW, CONTINUE
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET ; DONE
|
||||
;
|
||||
DSK_MBR10:
|
||||
; FINALIZE SLICE LBA
|
||||
SET 7,D ; SET LBA ACCESS FLAG
|
||||
; RESAVE IT
|
||||
LD (SEKLBA),HL ; LOWORD
|
||||
@@ -1758,6 +1817,7 @@ CCPBUF .DW 0 ; ADDRESS OF CCP BUF IN BIOS BANK
|
||||
MEDID .DB 0 ; TEMP STORAGE FOR MEDIA ID
|
||||
SLICE .DB 0 ; CURRENT SLICE
|
||||
SPS .DW 0 ; SECTORS PER SLICE
|
||||
CAP_REQ .DW 0,0 ; LBA CAP REQUIRED FOR SLICE
|
||||
STKSAV .DW 0 ; TEMP SAVED STACK POINTER
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
@@ -2291,8 +2351,8 @@ INIT2:
|
||||
LD C,(HL) ; PUT UNIT NUM IN C
|
||||
RST 08 ; CALL HBIOS
|
||||
LD A,C ; GET ATTRIBUTES
|
||||
AND %00111000 ; ISOLATE TYPE BITS
|
||||
CP %00101000 ; TYPE = RAM?
|
||||
AND %10001111 ; ISOLATE TYPE BITS
|
||||
CP %00000101 ; NOT FLOPPY, TYPE = RAM?
|
||||
JR NZ,INIT2X ; IF NOT THEN DONE
|
||||
;
|
||||
; CHECK IF SECOND UNIT IS ROM OR FLASH
|
||||
@@ -2303,10 +2363,10 @@ INIT2:
|
||||
LD C,(HL) ; PUT UNIT NUM IN C
|
||||
RST 08 ; CALL HBIOS
|
||||
LD A,C ; GET ATTRIBUTES
|
||||
AND %00111000 ; ISOLATE TYPE BITS
|
||||
CP %00100000 ; TYPE = ROM?
|
||||
AND %10001111 ; ISOLATE TYPE BITS
|
||||
CP %00000100 ; NOT FLOPPY, TYPE = ROM?
|
||||
JR Z,INIT2A ; IF SO, ADJUST DEF DRIVE
|
||||
CP %00111000 ; TYPE = FLASH?
|
||||
CP %00000111 ; NOT FLOPPY, TYPE = FLASH?
|
||||
JR NZ,INIT2X ; IF NOT THEN DONE
|
||||
;
|
||||
INIT2A:
|
||||
@@ -2529,24 +2589,21 @@ MD_INIT:
|
||||
; UDPATE THE RAM/ROM DPB STRUCTURES BASED ON HARDWARE
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
; TODO: HANDLE DISABLED RAM/ROM DISK BETTER.
|
||||
; IF RAM OR ROM DISK ARE DISABLED, BELOW WILL STILL
|
||||
; TRY TO ADJUST THE DPB BASED ON RAM BANK CALCULATIONS.
|
||||
; IT SHOULD NOT MATTER BECAUSE THE DPB SHOULD NEVER BE
|
||||
; USED. IT WOULD BE BETTER TO GET RAMD0/ROMD0 AND
|
||||
; RAMDN/ROMDN FROM THE HCB AND USE THOSE TO CALC THE
|
||||
; DPB ADJUSTMENT. IF DN-D0=0, BYPASS ADJUSTMENT.
|
||||
LD A,(HCB + HCB_ROMBANKS) ; ROM BANK COUNT
|
||||
SUB 4 ; REDUCE BANK COUNT BY RESERVED PAGES
|
||||
LD IX,DPB_ROM ; ADDRESS OF DPB
|
||||
CALL MD_INIT1 ; FIX IT UP
|
||||
; NOTE: ROM AND/OR RAM DISK MAY NOT BE ACTIVE, BUT WE GO
|
||||
; AHEAD AND UPDATE BOTH DPBS ANYWAY. IT CAUSES NO HARM SINCE
|
||||
; INACTIVE RAM/ROM DISK WILL NEVER BE ACCESSED.
|
||||
;
|
||||
LD A,(HCB + HCB_RAMBANKS) ; RAM BANK COUNT
|
||||
SUB 8 ; REDUCE BANK COUNT BY RESERVED PAGES
|
||||
LD IX,DPB_RAM ; ADDRESS OF DPB
|
||||
CALL MD_INIT1 ; FIX IT UP
|
||||
; ROM DISK
|
||||
LD A,(HCB + HCB_ROMD_BNKS) ; ROM DISK SIZE IN BANKS
|
||||
LD IX,DPB_ROM ; ADDRESS OF DPB
|
||||
CALL MD_INIT1 ; FIX IT UP
|
||||
;
|
||||
JR MD_INIT4 ; DONE
|
||||
; RAM DISK
|
||||
LD A,(HCB + HCB_RAMD_BNKS) ; RAM DISK SIZE IN BANKS
|
||||
LD IX,DPB_RAM ; ADDRESS OF DPB
|
||||
CALL MD_INIT1 ; FIX IT UP
|
||||
;
|
||||
JR MD_INIT4 ; DONE
|
||||
;
|
||||
MD_INIT1:
|
||||
;
|
||||
@@ -2904,52 +2961,51 @@ DRV_INIT:
|
||||
LD HL,DRVLST ; INIT HL PTR TO DRIVE LIST
|
||||
;
|
||||
DRV_INIT2:
|
||||
PUSH BC ; SAVE LOOP CNT & UNIT
|
||||
CALL DRV_INIT3 ; CHECK DRIVE
|
||||
POP BC ; RECOVER LOOP CNT & UNIT
|
||||
INC C ; NEXT UNIT
|
||||
DJNZ DRV_INIT2 ; LOOP
|
||||
LD A,D ; TOTAL DEVICE COUNT TO D
|
||||
LD A,D ; TOTAL DEVICE COUNT TO A
|
||||
LD (DRVLSTC),A ; SAVE THE COUNT
|
||||
JR DRV_INIT4 ; CONTINUE
|
||||
;
|
||||
DRV_INIT3:
|
||||
; GET DEVICE ATTRIBUTES
|
||||
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
|
||||
PUSH HL ; SAVE DRIVE LIST PTR
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
|
||||
RST 08 ; CALL HBIOS, UNIT TO C
|
||||
LD A,D ; DEVICE TYPE TO A
|
||||
LD A,C ; DEVICE ATTRIBUTES TO A
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
POP HL ; RESTORE DRIVE LIST PTR
|
||||
POP DE ; RESTORE DE
|
||||
CP DIODEV_IDE ; HARD DISK DEVICE?
|
||||
JR NC,DRV_INIT3A ; IF SO, HANDLE SPECIAL
|
||||
LD (HL),C ; SAVE UNIT NUM IN LIST
|
||||
INC HL ; BUMP PTR
|
||||
INC D ; INC TOTAL DEVICE COUNT
|
||||
RET
|
||||
LD B,A ; ATTRIBUTES TO B
|
||||
;
|
||||
DRV_INIT3A:
|
||||
; CHECK FOR ACTIVE AND RETURN IF NOT
|
||||
; IF DEVICE IS NOT REMOVABLE, THEN CHECK TO ENSURE IT IS
|
||||
; ACTUALLY ONLINE. IF NOT, SKIP UNIT ENTIRELY.
|
||||
BIT 6,B ; REMOVABLE?
|
||||
JR NZ,DRV_INIT3A ; IF SO, SKIP MEDIA CHECK
|
||||
PUSH DE ; SAVE DE (HARD DISK VOLUME COUNTER)
|
||||
PUSH HL ; SAVE DRIVE LIST PTR
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
|
||||
LD B,BF_DIOMEDIA ; HBIOS FUNC: SENSE MEDIA
|
||||
LD E,1 ; PERFORM MEDIA DISCOVERY
|
||||
RST 08
|
||||
|
||||
RST 08 ; DO IT
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
POP HL ; RESTORE DRIVE LIST PTR
|
||||
POP DE ; RESTORE DE
|
||||
|
||||
RET NZ ; IF NO MEDIA, JUST RETURN
|
||||
|
||||
; IF ACTIVE...
|
||||
RET NZ ; OFFLINE, SKIP ENTIRE UNIT
|
||||
;
|
||||
DRV_INIT3A:
|
||||
LD (HL),C ; SAVE UNIT NUM IN LIST
|
||||
INC HL ; BUMP PTR
|
||||
INC D ; INC TOTAL DEVICE COUNT
|
||||
BIT 5,B ; HIGH CAPACITY?
|
||||
RET Z ; DONE IF NOT
|
||||
INC E ; INCREMENT HARD DISK COUNT
|
||||
RET ; AND RETURN
|
||||
RET ; DONE
|
||||
;
|
||||
DRV_INIT4: ; SET SLICES PER VOLUME (HDSPV) BASED ON HARD DISK VOLUME COUNT
|
||||
LD A,E ; HARD DISK VOLUME COUNT TO A
|
||||
@@ -2978,7 +3034,8 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
|
||||
LD C,(HL) ; GET UNIT NUM FROM LIST
|
||||
PUSH BC ; PRESERVE LOOP CONTROL
|
||||
LD B,BF_DIODEVICE ; HBIOS FUNC: REPORT DEVICE INFO
|
||||
RST 08 ; CALL HBIOS, D := DEVICE TYPE
|
||||
RST 08 ; CALL HBIOS, C := DEVICE ATTRIBUTES
|
||||
LD A,C ; DEVICE ATTRIBUTES TO A
|
||||
POP BC ; GET UNIT INDEX BACK IN C
|
||||
PUSH BC ; RESAVE LOOP CONTROL
|
||||
CALL DRV_INIT7 ; MAKE DRIVE MAP ENTRY(S)
|
||||
@@ -2992,10 +3049,9 @@ DRV_INIT6: ; LOOP THRU ALL UNITS AVAILABLE
|
||||
DRV_INIT7: ; PROCESS UNIT
|
||||
LD E,0 ; INITIALIZE SLICE INDEX
|
||||
LD B,1 ; DEFAULT LOOP COUNTER
|
||||
LD A,D ; DEVICE TYPE TO ACCUM
|
||||
LD D,C ; UNIT NUMBER TO D
|
||||
CP DIODEV_IDE ; HARD DISK DEVICE?
|
||||
JR C,DRV_INIT8 ; NOPE, LEAVE LOOP COUNT AT 1
|
||||
BIT 5,A ; HIGH CAPACITY DEVICE?
|
||||
JR Z,DRV_INIT8 ; NOPE, LEAVE LOOP COUNT AT 1
|
||||
LD A,(HDSPV) ; GET SLICES PER VOLUME TO ACCUM
|
||||
LD B,A ; MOVE TO B FOR LOOP COUNTER
|
||||
;
|
||||
@@ -3350,10 +3406,6 @@ DEVUNK .DB "UNK$"
|
||||
RST 08 ; CALL HBIOS
|
||||
LD A,D ; RESULTANT DEVICE TYPE
|
||||
PUSH DE ; NEED TO SAVE UNIT NUMBER (IN E)
|
||||
RRCA ; ROTATE DEVICE
|
||||
RRCA ; ... BITS
|
||||
RRCA ; ... INTO
|
||||
RRCA ; ... LOWEST 4 BITS
|
||||
AND $0F ; ISOLATE DEVICE BITS
|
||||
ADD A,A ; MULTIPLY BY TWO FOR WORD TABLE
|
||||
LD HL,DEVTBL ; POINT TO START OF DEVICE NAME TABLE
|
||||
@@ -3392,11 +3444,11 @@ DEV06 .DB "SD$"
|
||||
DEV07 .DB "PRPSD$"
|
||||
DEV08 .DB "PPPSD$"
|
||||
DEV09 .DB "HDSK$"
|
||||
DEV10 .EQU DEVUNK
|
||||
DEV11 .EQU DEVUNK
|
||||
DEV12 .EQU DEVUNK
|
||||
DEV13 .EQU DEVUNK
|
||||
DEV14 .EQU DEVUNK
|
||||
DEV10 .DB "PPA$"
|
||||
DEV11 .DB "IMM$"
|
||||
DEV12 .DB "SYQ$"
|
||||
DEV13 .DB "CHUSB$"
|
||||
DEV14 .DB "CHSD$"
|
||||
DEV15 .EQU DEVUNK
|
||||
;
|
||||
#ENDIF
|
||||
@@ -3406,7 +3458,7 @@ DIRBUF .DW 0 ; DIR BUF POINTER
|
||||
HEAPTOP .DW BUFPOOL ; CURRENT TOP OF HEAP
|
||||
BOOTVOL .DW 0 ; BOOT VOLUME, MSB=BOOT UNIT, LSB=BOOT SLICE
|
||||
HDSPV .DB 2 ; SLICES PER VOLUME FOR HARD DISKS (MUST BE >= 1)
|
||||
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURINT DRV_INIT
|
||||
DRVLST .FILL 32 ; ACTIVE DRIVE LIST USED DURING DRV_INIT
|
||||
DRVLSTC .DB 0 ; ENTRY COUNT FOR ACTIVE DRIVE LIST
|
||||
;
|
||||
#IFDEF PLTWBW
|
||||
|
||||
@@ -346,8 +346,7 @@ read:
|
||||
ld b,17h ; HBIOS DEVICE function
|
||||
rst 08 ; Do it, D=device type
|
||||
ld a,d ; put in accum
|
||||
and 0F0h ; isolate high bits
|
||||
cp 10h ; floppy?
|
||||
cp 01h ; floppy?
|
||||
jr nz,read2 ; if not, do LBA i/o
|
||||
|
||||
; Floppy I/O
|
||||
|
||||
@@ -44,7 +44,7 @@ tpa$bank equ 0
|
||||
if banked
|
||||
|
||||
; Clone page zero from bank 0 to additional banks
|
||||
ld b,4 ; last bank
|
||||
ld b,2 ; last bank
|
||||
ld c,0 ; src bank
|
||||
init$2:
|
||||
push bc ; save bank id's
|
||||
@@ -156,7 +156,9 @@ dinit:
|
||||
ld hl,drvlst ; init hl ptr to drive list
|
||||
;
|
||||
dinit2:
|
||||
push bc ; save loop cnt & unit
|
||||
call dinit3 ; check drive
|
||||
pop bc ; recover loop cnt & unit
|
||||
inc c ; next unit
|
||||
djnz dinit2 ; loop
|
||||
ld a,d ; total device count to d
|
||||
@@ -169,39 +171,35 @@ dinit3:
|
||||
push bc ; save loop control
|
||||
ld b,17h ; hbios func: report device info
|
||||
rst 08 ; call hbios, unit to c
|
||||
ld a,d ; device type to a
|
||||
ld a,c ; device attributes to a
|
||||
pop bc ; restore loop control
|
||||
pop hl ; restore drive list ptr
|
||||
pop de ; restore de
|
||||
cp 30h ; hard disk device?
|
||||
jr nc,dinit3a ; if so, handle special
|
||||
ld (hl),c ; save unit num in list
|
||||
inc hl ; bump ptr
|
||||
inc d ; inc total device count
|
||||
ret
|
||||
ld b,a ; attributes to b
|
||||
;
|
||||
dinit3a:
|
||||
; check for active and return if not
|
||||
; if device is not removable, then check to ensure it is
|
||||
; actually online. if not, skip unit entirely.
|
||||
bit 6,b ; removable?
|
||||
jr nz,dinit3a ; if so, skip media check
|
||||
push de ; save de (hard disk volume counter)
|
||||
push hl ; save drive list ptr
|
||||
push bc ; save loop control
|
||||
|
||||
ld b,18h ; hbios func: sense media
|
||||
ld e,1 ; perform media discovery
|
||||
rst 08
|
||||
|
||||
rst 08 ; do it
|
||||
pop bc ; restore loop control
|
||||
pop hl ; restore drive list ptr
|
||||
pop de ; restore de
|
||||
|
||||
ret nz ; if no media, just return
|
||||
|
||||
; if active...
|
||||
ret nz ; offline, skip entire unit
|
||||
;
|
||||
dinit3a:
|
||||
ld (hl),c ; save unit num in list
|
||||
inc hl ; bump ptr
|
||||
inc d ; inc total device count
|
||||
bit 5,b ; high capacity?
|
||||
ret z ; done if not
|
||||
inc e ; increment hard disk count
|
||||
ret ; and return
|
||||
ret ; done
|
||||
|
||||
dinit4: ; set slices per volume (hdspv) based on hard disk volume count
|
||||
ld a,e ; hard disk volume count to a
|
||||
@@ -238,7 +236,8 @@ dinit6:
|
||||
push bc ; preserve loop control
|
||||
push hl ; preserve dph pointer
|
||||
ld b,17h ; hbios func: report device info
|
||||
rst 08 ; call hbios, d := device type
|
||||
rst 08 ; call hbios, a := device attributes
|
||||
ld a,c ; device attributes to a
|
||||
pop hl ; restore dph pointer
|
||||
pop bc ; get unit index back in c
|
||||
push bc ; resave loop control
|
||||
@@ -253,10 +252,9 @@ dinit6:
|
||||
dinit7: ; process a unit (all slices)
|
||||
ld e,0 ; initialize slice index
|
||||
ld b,1 ; default loop counter
|
||||
ld a,d ; device type to accum
|
||||
ld d,c ; unit number to d
|
||||
cp 030h ; hard disk device?
|
||||
jr c,dinit8 ; nope, leave loop count at 1
|
||||
bit 5,a ; high capacity device?
|
||||
jr z,dinit8 ; nope, leave loop count at 1
|
||||
ld a,(hdspv) ; get slices per volume to accum
|
||||
ld b,a ; move to b for loop counter
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
|
||||
extrn ?bnkxlt
|
||||
|
||||
extrn phex8, cout
|
||||
extrn phex16, phex8, cout, crlf, crlf2
|
||||
|
||||
|
||||
; CP/M 3 Disk definition macros
|
||||
@@ -355,38 +355,30 @@ dpb$hdnew: ; 8MB Hard Disk Drive (new format)
|
||||
; called for first time initialization.
|
||||
|
||||
dsk$init:
|
||||
; TODO: Handle disabled RAM/ROM disk better.
|
||||
; If RAM or ROM disk are disabled, below will still
|
||||
; try to adjust the DPB based on RAM bank calculations.
|
||||
; It should not matter because the DPB should never be
|
||||
; used. It would be better to get RAMD0/ROMD0 and
|
||||
; RAMDN/ROMDN from the HCB and use those to calc the
|
||||
; DPB adjustment. If DN-D0=0, bypass adjustment.
|
||||
ld b,0FAh ; HBIOS Peek Function
|
||||
ld a,(@hbbio) ; HBIOS bank id
|
||||
ld d,a ; ... goes in D
|
||||
ld hl,10Ch ; Offset 10Ch is ROM bank cnt
|
||||
rst 08 ; Call HBIOS, value in E
|
||||
ld a,e ; move count to accum
|
||||
sub 4 ; reduce by # reserved banks
|
||||
ld ix,dpb$rom ; address of DPB
|
||||
call dsk$init1 ; fix it up
|
||||
|
||||
ld b,0FAh ; HBIOS Peek Function
|
||||
ld a,(@hbbio) ; HBIOS bank id
|
||||
ld d,a ; ... goes in D
|
||||
ld hl,10Bh ; Offset 10Bh is RAM bank cnt
|
||||
rst 08 ; Call HBIOS, value in E
|
||||
ld a,e ; move count to accum
|
||||
sub 8 ; reduce by # reserved banks
|
||||
ld ix,dpb$ram ; address of DPB
|
||||
call dsk$init1 ; fix it up
|
||||
|
||||
; NOTE: ROM and/or RAM disk may not be active, but we go
|
||||
; ahead and update both DPBs anyway. It causes no harm since
|
||||
; inactive RAM/ROM disk will never be accessed.
|
||||
|
||||
ld hl,1DFh ; ROM disk bank cnt in HCB
|
||||
ld ix,dpb$rom ; address of ROM Disk DPB
|
||||
call dsk$init1 ; fix it up
|
||||
ld hl,1DDh ; RAM dsik bank cnt in HCB
|
||||
ld ix,dpb$ram ; address of RAM Disk DPB
|
||||
call dsk$init1 ; fix it up
|
||||
ret ; done
|
||||
|
||||
dsk$init1:
|
||||
; Get bank count of RAM/ROM disk
|
||||
ld b,0FAh ; HBIOS Peek Function
|
||||
ld a,(@hbbio) ; HBIOS bank id
|
||||
ld d,a ; ... goes in D
|
||||
rst 08 ; Call HBIOS, value in E
|
||||
;ld a,e ; move count to accum
|
||||
|
||||
; Setup HL with bank count
|
||||
ld l,a ; lsb
|
||||
;ld l,a ; lsb
|
||||
ld l,e ; lsb
|
||||
ld h,0 ; msb is always zero
|
||||
|
||||
; Update EXM field
|
||||
@@ -501,8 +493,7 @@ media:
|
||||
ld b,17h ; HBIOS func: report device info
|
||||
call 0FFF0h ; get unit info, device type in D
|
||||
ld a,d ; device type -> A
|
||||
and 0F0h ; isolate high bits
|
||||
cp 10h ; floppy?
|
||||
cp 01h ; floppy?
|
||||
jr nz,media1 ; if not, do LBA I/O
|
||||
ld hl,lba+3 ; point to high order byte
|
||||
res 7,(hl) ; switch from LBA -> CHS
|
||||
@@ -585,29 +576,77 @@ media4:
|
||||
; adjust the sectors per slice and media id.
|
||||
|
||||
; Use new slice format sectors per slice value
|
||||
ld hl,16384 ; new sectors per slice
|
||||
ld (sps),hl ; save it
|
||||
ld hl,16384 ; new sectors per slice
|
||||
ld (sps),hl ; save it
|
||||
|
||||
; Update media id for new hard disk format
|
||||
ld a,10 ; new media id
|
||||
ld (medid),a ; save it
|
||||
ld a,10 ; new media id
|
||||
ld (medid),a ; save it
|
||||
|
||||
media5:
|
||||
; Adjust LBA offset based on target slice
|
||||
ld a,(slice) ; get slice, A is loop cnt
|
||||
ld hl,(lba) ; set DE:HL
|
||||
ld de,(lba+2) ; ... to starting LBA
|
||||
ld bc,(sps) ; sectors per slice
|
||||
ld a,(slice) ; get slice, A is loop cnt
|
||||
ld hl,(lba) ; set DE:HL
|
||||
ld de,(lba+2) ; ... to starting LBA
|
||||
ld bc,(sps) ; sectors per slice
|
||||
res 7,d ; clear lba mode bit
|
||||
boot6:
|
||||
or a ; set flags to check loop cntr
|
||||
jr z,boot8 ; done if counter exhausted
|
||||
add hl,bc ; add one slice to low word
|
||||
jr nc,boot7 ; check for carry
|
||||
inc de ; if so, bump high word
|
||||
or a ; set flags to check loop cntr
|
||||
jr z,boot8 ; done if counter exhausted
|
||||
add hl,bc ; add one slice to low word
|
||||
jr nc,boot7 ; check for carry
|
||||
inc de ; if so, bump high word
|
||||
boot7:
|
||||
dec a ; dec loop downcounter
|
||||
jr boot6 ; and loop
|
||||
dec a ; dec loop downcounter
|
||||
jr boot6 ; and loop
|
||||
boot8:
|
||||
|
||||
; LBA offset of desired slice is now in DE:HL.
|
||||
; Need to check if the slice is beyond capacity of media.
|
||||
; If lba_off + sps >= dsk_cap, error!
|
||||
|
||||
; Save lba_off
|
||||
push de ; msw
|
||||
push hl ; lsw
|
||||
|
||||
; Add sps to compute lba_req
|
||||
ld bc,(sps) ; sectors per slice
|
||||
add hl,bc ; add one slice to low word
|
||||
jr nc,dsk_mbr9 ; check for carry
|
||||
inc de ; if so, bump high word
|
||||
dsk_mbr9:
|
||||
; Save cap_req
|
||||
ld (cap_req),hl ; lsw
|
||||
ld (cap_req+2),de ; msw
|
||||
|
||||
; Get dsk_cap (de:hl)
|
||||
ld b,1Ah ; hbios disk capacity func
|
||||
ld a,(unit) ; disk unit number
|
||||
ld c,a ; ... into c
|
||||
rst 08 ; hbios call (de:hl = capacity)
|
||||
|
||||
; Save dsk_cap (de:hl)
|
||||
push de ; save dsk_cap (msw)
|
||||
push hl ; save dsk_cap (lsw)
|
||||
|
||||
; Check dsk_cap >= cap_req, cf set on overflow
|
||||
; No need save actual result
|
||||
or a ; clear carry for sbc
|
||||
pop hl ; dsk_cap lsw
|
||||
ld de,(cap_req) ; cap_req lsw
|
||||
sbc hl,de ; dsk_cap - lba_req (lsw)
|
||||
pop hl ; dsk_cap msw
|
||||
ld de,(cap_req+2) ; cap_req msw
|
||||
sbc hl,de ; dsk_cap - lba_req (msw)
|
||||
|
||||
; Restore lba_off
|
||||
pop hl ; lsw
|
||||
pop de ; msw
|
||||
|
||||
; Abort on overflow with error!
|
||||
jp c,err_noslice ; slice too high, error exit
|
||||
|
||||
; Finalize slice lba
|
||||
set 7,d ; set LBA access flag
|
||||
ld (lba),hl ; save new lba, low word
|
||||
ld (lba+2),de ; save new lba, high word
|
||||
@@ -878,6 +917,7 @@ unit db 0 ; working disk unit num
|
||||
slice db 0 ; working slice num
|
||||
lba dw 0,0 ; working lba
|
||||
sps dw 0 ; sectors per slice
|
||||
cap_req dw 0,0 ; lba cap required for slice
|
||||
mbrsec ds 512 ; MBR sector buffer
|
||||
dma dw 0 ; current DMA address
|
||||
bank db 0 ; HBIOS DMA bank
|
||||
|
||||
@@ -8,12 +8,12 @@ MEMTOP = FD
|
||||
BNKSWT = Y
|
||||
COMBAS = 80
|
||||
LERROR = Y
|
||||
NUMSEGS = 04
|
||||
NUMSEGS = 02
|
||||
MEMSEG00 = 01,17,00
|
||||
MEMSEG01 = 0E,72,02
|
||||
MEMSEG02 = 01,7F,03
|
||||
MEMSEG03 = 01,7F,04
|
||||
MEMSEG04 = 01,7F,05
|
||||
MEMSEG03 = 00,C0,04
|
||||
MEMSEG04 = 00,C0,05
|
||||
MEMSEG05 = 00,C0,06
|
||||
MEMSEG06 = 00,C0,07
|
||||
MEMSEG07 = 00,C0,08
|
||||
@@ -25,22 +25,22 @@ MEMSEG0C = 00,C0,0D
|
||||
MEMSEG0D = 00,C0,0E
|
||||
MEMSEG0E = 00,C0,0F
|
||||
MEMSEG0F = 00,C0,10
|
||||
HASHDRVA = Y
|
||||
HASHDRVB = Y
|
||||
HASHDRVC = Y
|
||||
HASHDRVD = Y
|
||||
HASHDRVE = Y
|
||||
HASHDRVF = Y
|
||||
HASHDRVG = Y
|
||||
HASHDRVH = Y
|
||||
HASHDRVI = Y
|
||||
HASHDRVJ = Y
|
||||
HASHDRVK = Y
|
||||
HASHDRVL = Y
|
||||
HASHDRVM = Y
|
||||
HASHDRVN = Y
|
||||
HASHDRVO = Y
|
||||
HASHDRVP = Y
|
||||
HASHDRVA = N
|
||||
HASHDRVB = N
|
||||
HASHDRVC = N
|
||||
HASHDRVD = N
|
||||
HASHDRVE = N
|
||||
HASHDRVF = N
|
||||
HASHDRVG = N
|
||||
HASHDRVH = N
|
||||
HASHDRVI = N
|
||||
HASHDRVJ = N
|
||||
HASHDRVK = N
|
||||
HASHDRVL = N
|
||||
HASHDRVM = N
|
||||
HASHDRVN = N
|
||||
HASHDRVO = N
|
||||
HASHDRVP = N
|
||||
ALTBNKSA = Y
|
||||
ALTBNKSB = Y
|
||||
ALTBNKSC = Y
|
||||
|
||||
@@ -8,7 +8,7 @@ MEMTOP = FD
|
||||
BNKSWT = N
|
||||
COMBAS = 00
|
||||
LERROR = Y
|
||||
NUMSEGS = 03
|
||||
NUMSEGS = 01
|
||||
MEMSEG00 = 00,80,00
|
||||
MEMSEG01 = 00,C0,02
|
||||
MEMSEG02 = 00,C0,03
|
||||
|
||||
@@ -65,12 +65,11 @@ xbnkmov:
|
||||
; ------------ -------------- -------
|
||||
; COMMON BID_COM 8Fh
|
||||
; 0: OS/BUFS BID_USR 8Eh
|
||||
; BID_BIOS 8Dh
|
||||
; 1: TPA BID_AUX 8Ch
|
||||
; 2: BUFS BID_AUX-1 8Bh
|
||||
; 3: BUFS BID_AUX-2 8Ah
|
||||
; 4: BUFS BID_AUX-3 89h
|
||||
; 5: BUFS BID_AUX-4 88h
|
||||
; 1: TPA BID_AUX 8Dh
|
||||
; 2: BUFS BID_AUX-1 8Ch
|
||||
; 3: BUFS BID_AUX-2 8Bh
|
||||
; 4: BUFS BID_AUX-3 8Ah
|
||||
; 5: BUFS BID_AUX-4 89h
|
||||
;
|
||||
; N.B., Below BID_AUX is considered RAM disk bank. Need to
|
||||
; make sure RAM disk is kept small enough to stay below
|
||||
@@ -80,17 +79,13 @@ xbnkmov:
|
||||
; to adjust for real size of RAM in system
|
||||
;
|
||||
?bnkxlt:
|
||||
or a
|
||||
jr z,bank0
|
||||
neg ; 2 -> -2
|
||||
add a,8Dh ; 8Dh - 2 = 8Bh
|
||||
@hbbio equ $ - 1 ; BID_BIOS
|
||||
ret
|
||||
bank0:
|
||||
ld a,8Eh ; 0 -> 8Eh
|
||||
neg ; ex: 2 -> -2
|
||||
add a,8Eh ; ex: 8Eh - 2 = 8Ch
|
||||
@hbusr equ $ - 1 ; BID_USR
|
||||
ret
|
||||
|
||||
|
||||
@hbbio db 0 ; BID_BIOS
|
||||
|
||||
movtyp db 0 ; non-zero for interbank move
|
||||
|
||||
movbnks:
|
||||
|
||||
@@ -4,6 +4,7 @@ setlocal
|
||||
pushd HDIAG && call Clean.cmd & popd
|
||||
pushd Apps && call Clean.cmd & popd
|
||||
pushd CPM22 && call Clean.cmd & popd
|
||||
pushd QPM && call Clean.cmd & popd
|
||||
pushd ZCPR && call Clean.cmd & popd
|
||||
pushd ZCPR-DJ && call Clean.cmd & popd
|
||||
pushd ZSDOS && call Clean.cmd & popd
|
||||
@@ -21,4 +22,4 @@ pushd Prop && call Clean & popd
|
||||
pushd RomDsk && call Clean & popd
|
||||
pushd Doc && call Clean & popd
|
||||
pushd ZRC && call Clean & popd
|
||||
pushd ZZRC && call Clean & popd
|
||||
pushd ZZRCC && call Clean & popd
|
||||
|
||||
@@ -51,6 +51,8 @@ found:
|
||||
| INTTEST | No | Yes | Yes |
|
||||
| FAT | No | Yes | Yes |
|
||||
| TUNE | No | Yes | Yes |
|
||||
| WDATE | No | Yes | Yes |
|
||||
| HTALK | No | Yes | Yes |
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
@@ -104,7 +106,7 @@ The `ASSIGN` command supports "stacking" of instructions. For example,
|
||||
two slices of IDE 0 and will unassign E:.
|
||||
|
||||
When the command runs it will echo the resultant assignments to the
|
||||
console to confirm it's actions. It will also display the remaining
|
||||
console to confirm its actions. It will also display the remaining
|
||||
space available in disk buffers.
|
||||
|
||||
## Notes
|
||||
@@ -158,12 +160,19 @@ should only be specified for hard disk devices (SD, IDE, PPIDE).
|
||||
Only one drive letter may be assigned to a specific device/unit/slice
|
||||
at a time. Attempts to assign a duplicate drive letter will fail and
|
||||
display an error. If you wish to assign a different drive letter to a
|
||||
device/unit/slice, unassign the the existing drive letter first.
|
||||
device/unit/slice, unassign the existing drive letter first.
|
||||
|
||||
Be aware that this command will allow you to reassign or remove the
|
||||
assignment of your system drive letter. This can cause your operating
|
||||
system to fail and force you to reboot.
|
||||
|
||||
The `ASSIGN` command does **not** prevent you from assigning a drive
|
||||
letter to a slice that does not fit on the physical media. However,
|
||||
any subsequent attempt to refer to that drive letter will result in
|
||||
an immediate OS error of "no disk". Refer to "Hard Disk Capacity"
|
||||
in the $doc_user$ for a discussion of the exact number of slices that
|
||||
will fit on a specific physical disk size.
|
||||
|
||||
This command is particularly sensitive to being matched to the
|
||||
appropriate version of the RomWBW ROM you are using. Be very careful
|
||||
to keep all copies of `ASSIGN.COM` up to date with your ROM.
|
||||
@@ -235,8 +244,8 @@ confusing that ZPM3 is in the file called CPM3.SYS, but it is normal
|
||||
for ZPM3.
|
||||
|
||||
For the purposes of booting an operating system, each disk slice is
|
||||
considered it's own operating system. Each slice can be made bootable
|
||||
with it's own system tracks.
|
||||
considered its own operating system. Each slice can be made bootable
|
||||
with its own system tracks.
|
||||
|
||||
`SYSCOPY` uses drive letters to specify where to read/write the system
|
||||
boot images. However, at startup, the boot loaded will require you to
|
||||
@@ -246,7 +255,7 @@ to a drive letter so you will know what to enter at the boot loader
|
||||
prompt. By way of explanation, the boot loader does not know about
|
||||
drive letters because the operating system is not loaded yet.
|
||||
|
||||
If you want to put a a boot system image on a device and slice that is
|
||||
If you want to put a boot system image on a device and slice that is
|
||||
not currently assigned to a drive letter, you will need to assign a
|
||||
drive letter first.
|
||||
|
||||
@@ -466,7 +475,7 @@ control is fully functional (end to end).
|
||||
The `XM` application provided in RomWBW is an adaptation of a
|
||||
pre-existing XModem application. Based on the source code comments, it
|
||||
was originally adapted from Ward Christensen's MODEM2 by Keith
|
||||
Petersen and is labeled version 12.5.
|
||||
Petersen and is labelled version 12.5.
|
||||
|
||||
The original source of the application was found in the Walnut Creek
|
||||
CD-ROM and is called XMDM125.ARK dated 7/15/86.
|
||||
@@ -529,14 +538,14 @@ manually perform a verification function with the `FLASH VERIFY` form
|
||||
of the command.
|
||||
|
||||
The author's documentation for the application is found in the RomWBW
|
||||
distribution in the Doc\\Contrib directory.
|
||||
distribution in the Doc/Contrib directory.
|
||||
|
||||
## Notes
|
||||
|
||||
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 will cause the ROM chip type to be unrecognized.
|
||||
this jumper can 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
|
||||
@@ -557,12 +566,17 @@ GitHub repository](https://github.com/willsowerbutts/flash4).
|
||||
|
||||
# FDISK80
|
||||
|
||||
RomWBW supports disk media with MS-DOS FAT filesystems (see FAT
|
||||
application). If you wish to put a FAT filesystem on your media, the
|
||||
FDISK80 application can be used to partition your media which is
|
||||
required in order to add a FAT filesystem.
|
||||
`FDISK80` allows you to create and manage traditional partitions on
|
||||
your hard disk media. Depending on the hard disk format and features
|
||||
you are using, RomWBW may need hard disk partitions defined.
|
||||
|
||||
This application is provided by John Coffman.
|
||||
Please refer to the $doc_user$ for more information on the use of
|
||||
partitions within RomWBW. It is very important to understand that
|
||||
RomWBW slices are completely different from disk partitions.
|
||||
|
||||
This application is provided by John Coffman. The primary
|
||||
documentation is in the file "FDisk Manual.pdf" found in the
|
||||
Doc directory of the RomWBW distribution.
|
||||
|
||||
## Usage
|
||||
|
||||
@@ -577,20 +591,15 @@ applications. Please refer to the file called "FDisk Manual.pdf" in
|
||||
the Doc directory of the RomWBW distribution for further instructions.
|
||||
|
||||
There is also more information on using FAT partitions with RomWBW in
|
||||
the "RomWBW Getting Started.pdf" document in the Doc directory of the
|
||||
distribution.
|
||||
the $doc_user$ document in the Doc directory of the distribution.
|
||||
|
||||
## Notes
|
||||
|
||||
Partitioning of RomWBW media is **only** required if you want to add a
|
||||
FAT filesystem to your media. Do not partition your media if you are
|
||||
simply using it for RomWBW. To be clear, RomWBW slices do not require
|
||||
partitioning.
|
||||
|
||||
As described in "RomWBW Getting Started.pdf", you should be careful
|
||||
when adding a FAT partition to your media that the partition does not
|
||||
overlap with the area of the media being used for RomWBW slices. The
|
||||
"(R)eserve" function in `FDISK80` can help prevent this.
|
||||
Hard disk partition tables allow a maximum of 1024 cylinders when
|
||||
defining partitions. However, RomWBW uses exclusively Logical Block
|
||||
Addressing (LBA) which does not have this limitation. When defining
|
||||
partitions is usually best to define the start and size of of the
|
||||
partition using bytes or sectors.
|
||||
|
||||
## Etymology
|
||||
|
||||
@@ -620,9 +629,9 @@ shown on your console. The `TALK` application does this.
|
||||
`TALK` operates at the operating system level (not HBIOS).
|
||||
|
||||
The parameter to `TALK` refers to logical CP/M serial devices. Upon
|
||||
execution all characters types at the console will be sent to the
|
||||
execution all characters typed at the console will be sent to the
|
||||
device specified and all characters received by the specified device
|
||||
will be echoes on the console.
|
||||
will be echoed on the console.
|
||||
|
||||
Press Control+Z on the console to terminate the application.
|
||||
|
||||
@@ -638,6 +647,36 @@ provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# HTALK
|
||||
|
||||
`HTALK` is a variation of the `TALK` utility, but it works directly
|
||||
against HBIOS Character Units.
|
||||
|
||||
## Syntax
|
||||
|
||||
`HTALK COMn:`
|
||||
|
||||
## Usage
|
||||
|
||||
`HTALK` operates at the HBIOS level.
|
||||
|
||||
The parameter to `TALK` refers to a HBIOS character unit. Upon
|
||||
execution all characters typed at the console will be sent to the
|
||||
device specified and all characters received by the specified device
|
||||
will be echoed on the console.
|
||||
|
||||
Press Control+Z on the console to terminate the application.
|
||||
|
||||
## Notes
|
||||
|
||||
|
||||
## Etymology
|
||||
|
||||
The `TALK` command was created and donated to RomWBW by Tom Plano. It
|
||||
is an original product designed specifically for RomWBW.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# RTC
|
||||
|
||||
Many RomWBW systems provide real time clock hardware. The RTC
|
||||
@@ -661,7 +700,7 @@ After startup, the application provides the following options:
|
||||
| `R)aw` | will read the minute/second of the RTC clock iteratively every time the space key is pressed. Press enter to end. |
|
||||
| `L)oop` | will read the full date/time of the RTC clock iteratively every time the space key is pressed. Press enter to end. |
|
||||
| `C)harge` | will enable the battery charging function of the RTC. |
|
||||
| `N)ocharge` | will disable the battery charging functino of the RTC. |
|
||||
| `N)ocharge` | will disable the battery charging function of the RTC. |
|
||||
| `D)elay` | allows you to test the built-in timing delay in the program. It is not unusual for it to be wrong. |
|
||||
| `I)nit` | allows you to enter a date/time value for subsequent programming of the RTC using the S)et option. |
|
||||
| `G)et` | allows you to read the value of a non-volatile register in the RTC. |
|
||||
@@ -683,7 +722,7 @@ bypassing HBIOS.
|
||||
|
||||
## Etymology
|
||||
|
||||
The `RTC` application was originally written by Andrew Lync as part of
|
||||
The `RTC` application was originally written by Andrew Lynch as part of
|
||||
the original ECB SBC board development. It has since been modified to
|
||||
support most of the hardware variations included with RomWBW.
|
||||
|
||||
@@ -889,6 +928,28 @@ written in C and requires SDCC to compile. As such it is not part of
|
||||
the RomWBW build process. However, the full project and source code is
|
||||
found in the [FAT GitHub Repository](https://github.com/wwarthen/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.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# TUNE
|
||||
@@ -922,7 +983,7 @@ for the hardware found. If no hardware is detected, it will abort with
|
||||
an error message.
|
||||
|
||||
On Z180 systems, I/O wait states are added when writing to the sound
|
||||
chip to avoid exceeding it's speed limitations. On Z80 systems, you
|
||||
chip to avoid exceeding its speed limitations. On Z80 systems, you
|
||||
will need to ensure that the CPU clock speed of your system does not
|
||||
exceed the timing limitations of your sound chip.
|
||||
|
||||
@@ -939,7 +1000,7 @@ By default the application will attempt to interface directly to the sound
|
||||
chip. The optional argument `--hbios` supplied after the filename, will
|
||||
enable the application to use the HBIOS sound driver.
|
||||
|
||||
The HBIOS mode also support other switch as desribed below.
|
||||
The HBIOS mode also support other switch as described below.
|
||||
|
||||
| Switch | Description |
|
||||
| ----------- | ------------------------------------------------------ |
|
||||
@@ -1012,9 +1073,9 @@ speed will actually work on the current hardware. Setting a CPU
|
||||
speed that exceeds the capabilities of the system will result in
|
||||
unstable operation or a system stall.
|
||||
|
||||
Some peripherals are dependant on the CPU speed. For example, the Z180
|
||||
Some peripherals are dependent on the CPU speed. For example, the Z180
|
||||
ASCI baud rate and system timer are derived from the CPU speed. The
|
||||
CPUSPD applicastion will attempt to adjust these peripherals for
|
||||
CPUSPD application will attempt to adjust these peripherals for
|
||||
correct operation after modifying the CPU speed. However, in some
|
||||
cases this may not be possible. The baud rate of ASCI ports have a
|
||||
limited set of divisors. If there is no satisfactory divisor to
|
||||
@@ -1028,3 +1089,163 @@ hardware interface code is specific to RomWBW and the application will
|
||||
not operate correctly on non-RomWBW systems.
|
||||
|
||||
The source code is provided in the RomWBW distribution.
|
||||
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# VGMPLAY
|
||||
|
||||
This application will allow you to play Video Game Music files. VGM
|
||||
files contain music samples from a range of different sound chips
|
||||
that were used in arcade games, game consoles and personal computer
|
||||
systems.
|
||||
|
||||
Video Game Music files have a .VGM file extension and each file
|
||||
contains an embedded header that identifies the hardware it is
|
||||
intended for and also the title of the music.
|
||||
|
||||
All RomWBW operating system boot disks include a selection of sound
|
||||
files in user area 3. Additional music files can be found at:
|
||||
|
||||
[VGMRIPS website](https://vgmrips.net)
|
||||
|
||||
[PROJECT2612 website](https://project2612.org/)
|
||||
|
||||
Sound files are loaded into memory for playback, so the maximum size
|
||||
file that can be played is around 52Kb.
|
||||
|
||||
Sound chips currently supported are:
|
||||
|
||||
* AY-3-8190 (and equivalent YM2149)
|
||||
* YM2612 (and equivalent YM3848)
|
||||
* SN76489 (single chip mono and dual chip stereo)
|
||||
* YM2151
|
||||
|
||||
VGMPLAY supports playback of files with multiple combinations of these
|
||||
chips.
|
||||
|
||||
## Syntax
|
||||
|
||||
`VGMPLAY `*`<filename>`*
|
||||
|
||||
*`<filename>`* is the name of a sound file ending in .VGM
|
||||
|
||||
## Usage
|
||||
|
||||
VGMPLAY does not automatically detect the hardware platform or sound
|
||||
hardware that you are using. This means a version customized for your
|
||||
system must be assembled before use.
|
||||
|
||||
To play a sound file, just use the VGMPLAY command and specify the file
|
||||
to play after the command. So, for example, `VGMPLAY TEDDY` will load
|
||||
the TEDDY.VGM sound file into memory and begin playing it.
|
||||
|
||||
Playback can be stopped by pressing a key. There may be a delay before
|
||||
playback stops.
|
||||
|
||||
## Notes
|
||||
|
||||
The default build configuration for VGMPLAY is:
|
||||
|
||||
CPU speed: Autodetected
|
||||
|
||||
| chip | number | port | notes
|
||||
| --------- | ------- | -------- | ----------
|
||||
| AY-3-8910 | 1st | 09ah | stereo
|
||||
| AY-3-8910 | 2nd | not set | stereo
|
||||
| YM2612 | 1st | 0c0h | stereo
|
||||
| YM2612 | 2nd | 0c4h | stereo
|
||||
| SN76489 | 1st | 0c8h | mono/left
|
||||
| SN76489 | 2nd | 0c9h | mono/right
|
||||
| YM2151 | 1st | 0cah | stereo
|
||||
| YM2151 | 2nd | 0cbh | stereo
|
||||
|
||||
Inconsistant, garbled or distorted playback can be an indication that
|
||||
your CPU clock speed is too high for your sound chip. In this case, if
|
||||
your platform supports speed switching, then the CPUSPD application
|
||||
can be used to reduce your processor speed.
|
||||
|
||||
VGMPLAY is still under development. The source code is provided in the
|
||||
RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
# WDATE
|
||||
|
||||
`wdate` is a utility for CP/M systems that have Wayne Warthen's
|
||||
ROMWBW firmware. It reads or sets the real-time clock, using function
|
||||
calls in the BIOS. It should work on any RTC device that is supported by
|
||||
ROMWBW, including the internal interrupt-driven timer that is is available
|
||||
on some systems.
|
||||
|
||||
`wdate` differs from the `rtc.com` utility that is provided with the
|
||||
ROMWBW version of CP/M in that it only gets and sets the date/time.
|
||||
`rtc.com` can also manipulate the nonvolatile RAM in certain clock
|
||||
devices, and modify the charge controller. However, `wdate` is (I would
|
||||
argue) easier to use, as it takes its input from the command line, which
|
||||
can be edited, and it's less fussy about the format. It doesn't require
|
||||
the date to be set if you only want to change the time, for example.
|
||||
In addition, `wdate` has at least some error checking.
|
||||
|
||||
`wdate` displays the day-of-week and month as English text, not
|
||||
numbers. It calculates the day-of-week from the year, month, and day.
|
||||
RTC chips usually store a day-of-week value, but it's useless in this
|
||||
application for two reasons: first, the BIOS does not expose it. Second,
|
||||
there is no universally-accepted way to interpret it (which day does
|
||||
the week start on? Is '0' a valid day of the week?)
|
||||
|
||||
## Syntax
|
||||
|
||||
| `WDATE`
|
||||
| `WDATE ` *`<hr> <min>`*
|
||||
| `WDATE ` *`<hr> <min> <sec>`*
|
||||
| `WDATE ` *`<year> <month> <day> <hr> <min> <sec>`*
|
||||
|
||||
## Usage
|
||||
|
||||
A> wdate
|
||||
Saturday 27 May 13:14:39 2023
|
||||
|
||||
With no arguments, displays the current date and time.
|
||||
|
||||
A> wdate hr min
|
||||
|
||||
With two arguments, sets the time in hours and minutes, without changing date
|
||||
or seconds
|
||||
|
||||
A> wdate hr min sec
|
||||
|
||||
With three arguments, sets the time in hours, minutes, and seconds, without
|
||||
changing date
|
||||
|
||||
A> wdate year month day hr min sec
|
||||
|
||||
With six arguments, sets date and time. All numbers are one or two digits. The
|
||||
two-digit year starts at 2000.
|
||||
|
||||
A> wdate /?
|
||||
|
||||
Show a summary of the command-line usage.
|
||||
|
||||
## Notes
|
||||
|
||||
I've tested this utility with the DS1302 clock board designed by Ed
|
||||
Brindly, and on the interrupt-driven timer built into my Z180 board.
|
||||
However, it does not interact with hardware, only BIOS; I would expect
|
||||
it to work with other hardware.
|
||||
|
||||
wdate checks for the non-existence of ROMWBW, and also for failing
|
||||
operations on the RTC. It will display the terse "No RTC" message in
|
||||
both cases.
|
||||
|
||||
The ROMWBW functions that manipulate the date and time operate on BCD
|
||||
numbers, as RTC chips themselves usually do. wdate works in decimal, so
|
||||
that it can check that the user input makes sense. A substantial part of
|
||||
the program's code is taken up by number format conversion and range
|
||||
checking.
|
||||
|
||||
## Etymology
|
||||
|
||||
The `WDATE` application was written and contributed by Kevin Boone.
|
||||
The source code is available on GitHub at
|
||||
[https://github.com/kevinboone/wdate-cpm/blob/main/README.md](https://github.com/kevinboone/wdate-cpm/blob/main/README.md).
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$define{doc_ver}{Version 3.2}$
|
||||
$define{doc_ver}{Version 3.4}$
|
||||
$define{doc_product}{RomWBW}$
|
||||
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
|
||||
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
|
||||
|
||||
@@ -11,12 +11,13 @@ toc-depth: 2
|
||||
numbersections: true
|
||||
secnumdepth: 2
|
||||
header-includes:
|
||||
- \setlength{\headheight}{15pt}
|
||||
- |
|
||||
```{=latex}
|
||||
\setlength{\headheight}{15pt}
|
||||
\usepackage{fancyhdr}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{xhfill}
|
||||
\usepackage{tocloft}
|
||||
\renewcommand*{\familydefault}{\sfdefault}
|
||||
\renewcommand{\maketitle}{
|
||||
\begin{titlepage}
|
||||
@@ -44,6 +45,7 @@ include-before:
|
||||
```{=latex}
|
||||
\pagestyle{fancyplain}
|
||||
\fancyhf{}
|
||||
\lhead{\fancyplain{}{\nouppercase{\bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
|
||||
\lfoot{\small RetroBrew Computing Group ~~ {\xrfill[3pt]{1pt}[cyan]} ~~ \thepage}
|
||||
\pagenumbering{roman}
|
||||
```
|
||||
@@ -52,5 +54,4 @@ include-before:
|
||||
```{=latex}
|
||||
\clearpage
|
||||
\pagenumbering{arabic}
|
||||
\lhead{\fancyplain{}{\nouppercase{\bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
|
||||
```
|
||||
|
||||
BIN
Source/Doc/Graphics/Panel.pdf
Normal file
BIN
Source/Doc/Graphics/Panel.pdf
Normal file
Binary file not shown.
BIN
Source/Doc/Graphics/Panel.png
Normal file
BIN
Source/Doc/Graphics/Panel.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 18 KiB |
BIN
Source/Doc/Graphics/Panel.vsdx
Normal file
BIN
Source/Doc/Graphics/Panel.vsdx
Normal file
Binary file not shown.
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# NOTE: Pandoc, Latex (MiKTeX or TexLive), and gpp must be installed
|
||||
# NOTE: gpp, Pandoc, and Latex (MiKTeX or TexLive) must be installed
|
||||
# and available on commandline for this build to work!!!
|
||||
# Typically "sudo apt install pandoc, texlive-latex-extra, gpp"
|
||||
# Typically "sudo apt install gpp pandoc texlive-latex-extra texlive-luatex texlive-fonts-extra fonts-roboto"
|
||||
#
|
||||
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf ROM_Applications.pdf Catalog.pdf Errata.pdf
|
||||
# DEST = ../../Doc
|
||||
@@ -16,7 +16,7 @@ all :: deploy
|
||||
gpp -o $@ -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $<
|
||||
|
||||
%.pdf : %.tmp
|
||||
pandoc $< -f markdown -t latex -s -o $@ --default-image-extension=pdf
|
||||
pandoc $< -f markdown -t pdf -s -o $@ --default-image-extension=pdf --pdf-engine=lualatex
|
||||
|
||||
%.html : %.tmp
|
||||
pandoc $< -f markdown -t html -s -o $@ --default-image-extension=pdf
|
||||
|
||||
@@ -246,7 +246,7 @@ memory starting at location xxxx.
|
||||
protocol.
|
||||
|
||||
If the monitor is assembled with the DSKY functionality,
|
||||
this feature will be exclude due to space limitions.
|
||||
this feature will be exclude due to space limitations.
|
||||
|
||||
|
||||
## NOTES:
|
||||
@@ -624,7 +624,7 @@ 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 before being written.
|
||||
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
|
||||
|
||||
@@ -117,7 +117,7 @@ please let me know if I missed you!
|
||||
|
||||
* Andrew Lynch started it all when he created the N8VEM Z80 SBC
|
||||
which became the first platform RomWBW supported. Some of his
|
||||
code can still be found in RomWBW.
|
||||
original code can still be found in RomWBW.
|
||||
|
||||
* Dan Werner wrote much of the code from which RomWBW was originally
|
||||
derived and he has always been a great source of knowledge and
|
||||
@@ -129,23 +129,30 @@ please let me know if I missed you!
|
||||
due to internal changes within RomWBW. As of RomWBW 2.6, these
|
||||
applications are no longer provided.
|
||||
|
||||
* Sergey Kiselev created several hardware platforms for RomWBW
|
||||
including the very popular Zeta.
|
||||
|
||||
* David Giles created support for the Z180 CSIO which is now included
|
||||
SD Card driver.
|
||||
|
||||
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver, DMA support, and a long list of general code
|
||||
and documentation enhancements.
|
||||
|
||||
* Ed Brindley contributed some of the code that supports the RCBus
|
||||
platform.
|
||||
|
||||
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
|
||||
AY-3-8910 sound driver as well as a long list of general code
|
||||
enhancements.
|
||||
|
||||
* Spencer Owen created the RC2014 series of hobbyist kit computers
|
||||
which has exponentially increased RomWBW usage.
|
||||
which has exponentially increased RomWBW usage. Some of his kits
|
||||
include RomWBW.
|
||||
|
||||
* Stephen Cousins has likewise created a series of hobbyist kit
|
||||
computers at Small Computer Central and is distributing RomWBW
|
||||
with many of them.
|
||||
|
||||
* Alan Cox has contributed some driver code and has provided a great
|
||||
deal of advice.
|
||||
|
||||
* The CP/NET client files were developed by Douglas Miller.
|
||||
|
||||
* Phillip Stevens contributed support for FreeRTOS.
|
||||
@@ -165,6 +172,11 @@ please let me know if I missed you!
|
||||
|
||||
* The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
* Rob Prouse has created many of the supplemental disk images
|
||||
including Aztec C, HiTech C, SLR Z80ASM, Turbo Pascal, Microsoft
|
||||
BASIC Compiler, Microsoft Fortran Compiler, and a Games
|
||||
compendium.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
@@ -186,15 +198,15 @@ Portions of RomWBW were created by, contributed by, or derived from
|
||||
the work of others. It is believed that these works are being used
|
||||
in accordance with the intentions and/or licensing of their creators.
|
||||
|
||||
If anyone feels their work is being used outside of it's intended
|
||||
If anyone feels their work is being used outside of its intended
|
||||
licensing, please notify:
|
||||
|
||||
> Wayne Warthen
|
||||
> wwarthen@gmail.com
|
||||
> $doc_author$ \
|
||||
> [$doc_authmail$](mailto:$doc_authmail$)
|
||||
|
||||
RomWBW is an aggregate work. It is composed of many individual,
|
||||
standalone programs that are distributed as a whole to function as
|
||||
a cohesive system. Each program may have it's own licensing which
|
||||
a cohesive system. Each program may have its own licensing which
|
||||
may be different from other programs within the aggregate.
|
||||
|
||||
In some cases, a single program (e.g., CP/M Operating System) is
|
||||
|
||||
Binary file not shown.
@@ -182,7 +182,7 @@ not know anything about what is being loaded (the image is usually an
|
||||
operating system, but could be any executable code image). Once the Boot
|
||||
Loader has loaded the image at the selected location, it will transfer
|
||||
control to it. Assuming the typical situation where the image was an
|
||||
operating system, the loaded operating system will then perform it's own
|
||||
operating system, the loaded operating system will then perform its own
|
||||
initialization and begin normal operation.
|
||||
|
||||
## Application Boot
|
||||
@@ -207,8 +207,8 @@ the previously running operating system starting at $0100. Note that the
|
||||
program image contains a full copy of the HBIOS to be installed and run. Once
|
||||
the Application Boot program is loaded by the previous operating system,
|
||||
control is passed to it and it performs a system initialization similar
|
||||
to the ROM Boot, but using the image loaded in RAM. Once te new
|
||||
HBIOS completes it's initialization, it will launch the Boot Loader
|
||||
to the ROM Boot, but using the image loaded in RAM. Once the new
|
||||
HBIOS completes its initialization, it will launch the Boot Loader
|
||||
just like a ROM boot.
|
||||
|
||||
The Application Boot program actually contains two other components
|
||||
@@ -228,7 +228,7 @@ they have a small hardware bootstrap that loads a chunk of code from a
|
||||
disk device directly into RAM at system startup.
|
||||
|
||||
The startup then proceeds very much like the Application Boot
|
||||
process described above. HBIOS is installed in it's operating bank
|
||||
process described above. HBIOS is installed in its operating bank
|
||||
and control is passed to the Boot Loader.
|
||||
|
||||
# Driver Model
|
||||
@@ -245,7 +245,7 @@ layout expected by the operating system and application.
|
||||
Drivers do need to be aware of the bank switching if a buffer address
|
||||
is being used in the function call.
|
||||
|
||||
* If the buffer address is in the lower 32K of RAM, then the memroy
|
||||
* If the buffer address is in the lower 32K of RAM, then the memory
|
||||
it points to will be from the User Bank, not the HBIOS bank which
|
||||
is now active. In this case, the driver must use an inter-bank
|
||||
copy to access the data.
|
||||
@@ -363,7 +363,7 @@ HBIOS functions. Most function calls will return a result in register A.
|
||||
| -1 | undefined error |
|
||||
| -2 | function not implemented |
|
||||
| -3 | invalid function |
|
||||
| -4 | invalid unit numberr |
|
||||
| -4 | invalid unit number |
|
||||
| -5 | out of memory |
|
||||
| -6 | parameter out of range |
|
||||
| -7 | media not present |
|
||||
@@ -390,17 +390,20 @@ below enumerates these values.
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| CIODEV_UART | 0x00 | 16C550 Family Serial Interface | uart.asm |
|
||||
| CIODEV_ASCI | 0x10 | Z180 Built-in Serial Ports | asci.asm |
|
||||
| CIODEV_TERM | 0x20 | Terminal | ansi.asm |
|
||||
| CIODEV_PRPCON | 0x30 | PropIO Serial Console Interface | prp.asm |
|
||||
| CIODEV_PPPCON | 0x40 | ParPortProp Serial Console Interface | ppp.asm |
|
||||
| CIODEV_SIO | 0x50 | Zilog Serial Port Interface | sio.asm |
|
||||
| CIODEV_ACIA | 0x60 | MC68B50 Asynchronous Interface | acia.asm |
|
||||
| CIODEV_PIO | 0x70 | Zilog Parallel Interface Controller | pio.asm |
|
||||
| CIODEV_UF | 0x80 | FT232H-based ECB USB FIFO | uf.asm |
|
||||
| CIODEV_DUART | 0x90 | SCC2681 Family Dual UART | duart.asm |
|
||||
| CIODEV_Z2U | 0xA0 | Zilog Z280 Built-in Serial Ports | z2u.asm |
|
||||
| CIODEV_LPT | 0xB0 | Parallel I/O Controller | lpt.asm |
|
||||
| CIODEV_ASCI | 0x01 | Z180 Built-in Serial Ports | asci.asm |
|
||||
| CIODEV_TERM | 0x02 | Terminal | ansi.asm |
|
||||
| CIODEV_PRPCON | 0x03 | PropIO Serial Console Interface | prp.asm |
|
||||
| CIODEV_PPPCON | 0x04 | ParPortProp Serial Console Interface | ppp.asm |
|
||||
| CIODEV_SIO | 0x05 | Zilog Serial Port Interface | sio.asm |
|
||||
| CIODEV_ACIA | 0x06 | MC68B50 Asynchronous Interface | acia.asm |
|
||||
| CIODEV_PIO | 0x07 | Zilog Parallel Interface Controller | pio.asm |
|
||||
| CIODEV_UF | 0x08 | FT232H-based ECB USB FIFO | uf.asm |
|
||||
| CIODEV_DUART | 0x09 | SCC2681 Family Dual UART | duart.asm |
|
||||
| CIODEV_Z2U | 0x0A | Zilog Z280 Built-in Serial Ports | z2u.asm |
|
||||
| CIODEV_LPT | 0x0B | Parallel I/O Controller | lpt.asm |
|
||||
| CIODEV_ESPCON | 0x0B | ESP32 VGA Console | esp.asm |
|
||||
| CIODEV_ESPSER | 0x0B | ESP32 Serial Port | esp.asm |
|
||||
| CIODEV_SCON | 0x0B | S100 Console | scon.asm |
|
||||
|
||||
Character devices can usually be configured with line characteristics
|
||||
such as speed, framing, etc. A word value (16 bit) is used to describe
|
||||
@@ -568,15 +571,20 @@ below enumerates there values.
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| DIODEV_MD | 0x00 | Memory Disk | md.asm |
|
||||
| DIODEV_FD | 0x10 | Floppy Disk | fd.asm |
|
||||
| DIODEV_RF | 0x20 | RAM Floppy | rf.asm |
|
||||
| DIODEV_IDE | 0x30 | IDE Disk | ide.asm |
|
||||
| DIODEV_ATAPI | 0x40 | ATAPI Disk (not implemented) | |
|
||||
| DIODEV_PPIDE | 0x50 | PPIDE Disk | ppide.asm |
|
||||
| DIODEV_SD | 0x60 | SD Card | sd.asm |
|
||||
| DIODEV_PRPSD | 0x70 | PropIO SD Card | prp.asm |
|
||||
| DIODEV_PPPSD | 0x80 | ParPortProp SD Card | ppp.asm |
|
||||
| DIODEV_HDSK | 0x90 | SIMH HDSK Disk | hdsk.asm |
|
||||
| DIODEV_FD | 0x01 | Floppy Disk | fd.asm |
|
||||
| DIODEV_RF | 0x02 | RAM Floppy | rf.asm |
|
||||
| DIODEV_IDE | 0x03 | IDE Disk | ide.asm |
|
||||
| DIODEV_ATAPI | 0x04 | ATAPI Disk (not implemented) | |
|
||||
| DIODEV_PPIDE | 0x05 | PPIDE Disk | ppide.asm |
|
||||
| DIODEV_SD | 0x06 | SD Card | sd.asm |
|
||||
| DIODEV_PRPSD | 0x07 | PropIO SD Card | prp.asm |
|
||||
| DIODEV_PPPSD | 0x08 | ParPortProp SD Card | ppp.asm |
|
||||
| DIODEV_HDSK | 0x09 | SIMH HDSK Disk | hdsk.asm |
|
||||
| DIODEV_PPA | 0x0A | Iomega PPA Disk | ppa.asm |
|
||||
| DIODEV_IMM | 0x0B | Iomega IMM Disk | imm.asm |
|
||||
| DIODEV_SYQ | 0x0C | Syquest Sparq Disk | syq.asm |
|
||||
| DIODEV_CHUSB | 0x0D | CH375/376 USB Disk | ch.asm |
|
||||
| DIODEV_CHSD | 0x0E | CH375/376 SD Card | ch.asm |
|
||||
|
||||
A fixed set of media types are defined. The currently defined media
|
||||
types identifiers are listed below. Each driver will support one or
|
||||
@@ -617,7 +625,7 @@ Returns the driver specific Status (A) of the specified disk device unit
|
||||
The return value in register A is used as both a device status and a
|
||||
standard HBIOS result code. Negative values (bit 7 set) indicate a
|
||||
standard HBIOS result (error) code. Otherwise, the return value
|
||||
represents a driver-specific device status. In call cases, the value 0
|
||||
represents a driver-specific device status. In all cases, the value 0
|
||||
means OK.
|
||||
|
||||
### Function 0x11 -- Disk Reset (DIORESET)
|
||||
@@ -757,28 +765,36 @@ of memory because it avoids a double copy.
|
||||
Reports device information about the specified Disk Unit (C). The
|
||||
Status (A) is a standard HBIOS result code.
|
||||
|
||||
Bit 7 of the Device Attribute (C) value returned indicates whether the
|
||||
device is a floppy disk. If it is a floppy disk, the Device Attribute
|
||||
(C) value is encoded as follows:
|
||||
The Device Attribute (C) value returned indicates various
|
||||
feature indicators related to the device being referenced
|
||||
by the specified Disk Unit (C). The high 3 bits apply to
|
||||
all devices. The definition of the low 5 bits depends on
|
||||
whether the device is a Floppy (indicated by bit 5).
|
||||
|
||||
The common bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 7 | = 1 (Floppy Disk) |
|
||||
| 6-5 | Form Factor: 0=8", 1=5.25", 2=3.5", 3=Other |
|
||||
| 4 | Sides: 0=SS, 1=DS |
|
||||
| 3-2 | Density: 0=SD, 1=DD, 2=HD, 3=ED |
|
||||
| 1-0 | Reserved |
|
||||
|
||||
If the Disk Unit (C) specified is a not floppy disk, then the Device
|
||||
Attribute (C) encoding is as follows:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 7 | = 0 (not Floppy Disk) |
|
||||
| 7 | Floppy |
|
||||
| 6 | Removable |
|
||||
| 5-3 | Type: 0=Hard, 1=CF, 2=SD, 3=USB, |
|
||||
| | 4=ROM, 5=RAM, 6=RAMF, 7=FLASH |
|
||||
| 2-0 | Reserved |
|
||||
| 5 | High Capacity (>8 MB) |
|
||||
|
||||
The Floppy specific bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 4-3 | Form Factor: 0=8", 1=5.25", 2=3.5", 3=Other |
|
||||
| 2 | Sides: 0=SS, 1=DS |
|
||||
| 1-0 | Density: 0=SD, 1=DD, 2=HD, 3=ED |
|
||||
|
||||
The non-Floppy specific bits are:
|
||||
|
||||
| **Bits** | **Definition** |
|
||||
|---------:|--------------------------------------------------|
|
||||
| 4 | LBA Capable |
|
||||
| 3-0 | Media Type: 0=Hard Disk, 1=CF, 2=SD, 3=USB, |
|
||||
| | 4=ROM, 5=RAM, 6=RAMF, 7=FLASH, 8=CD-ROM, |
|
||||
| | 9=Cartridge |
|
||||
|
||||
Device Type (D) indicates the specific hardware driver that handles the
|
||||
specified Disk Unit (C). Values are listed at the start of this
|
||||
@@ -870,11 +886,11 @@ unit. The table below enumerates these values.
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| RTCDEV_DS | 0x00 | Maxim DS1302 Real-Time Clock w/ NVRAM | dsrtc.asm |
|
||||
| RTCDEV_BQ | 0x10 | BQ4845P Real Time Clock | bqrtc.asm |
|
||||
| RTCDEV_SIMH | 0x20 | SIMH Simulator Real-Time Clock | simrtc.asm |
|
||||
| RTCDEV_INT | 0x30 | Interrupt-based Real Time Clock | intrtc.asm |
|
||||
| RTCDEV_DS7 | 0x40 | Maxim DS1307 PCF I2C RTC w/ NVRAM | ds7rtc.asm |
|
||||
| RTCDEV_RP5 | 0x50 | Ricoh RPC01A Real-Time Clock w/ NVRAM | rp5rtc.asm |
|
||||
| RTCDEV_BQ | 0x01 | BQ4845P Real Time Clock | bqrtc.asm |
|
||||
| RTCDEV_SIMH | 0x02 | SIMH Simulator Real-Time Clock | simrtc.asm |
|
||||
| RTCDEV_INT | 0x03 | Interrupt-based Real Time Clock | intrtc.asm |
|
||||
| RTCDEV_DS7 | 0x04 | Maxim DS1307 PCF I2C RTC w/ NVRAM | ds7rtc.asm |
|
||||
| RTCDEV_RP5 | 0x05 | Ricoh RPC01A Real-Time Clock w/ NVRAM | rp5rtc.asm |
|
||||
|
||||
The time functions to get and set the time (RTCGTM and RTCSTM) require a
|
||||
6 byte date/time buffer in the following format. Each byte is BCD
|
||||
@@ -1001,6 +1017,198 @@ used.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Display Keypad (DSKY)
|
||||
|
||||
The Display Keypad functions provide read/write access to a segment
|
||||
style display and associated hex keypad.
|
||||
|
||||
HBIOS only supports a single DSKY device since there is no reason to have
|
||||
more than one at a time. The DSKY unit is assigned a Device Type ID
|
||||
which indicates the specific hardware device driver that handles the
|
||||
unit. The table below enumerates these values.
|
||||
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| DSKYDEV_ICM | 0x01 | Original ICM7218 based DSKY | icm.asm |
|
||||
| DSKYDEV_PKD | 0x02 | Next Gen Intel P8279 based DSKY | pkd.asm |
|
||||
|
||||
When segment display function encodes the display data in a byte per
|
||||
character format. Currently, all segment displays are exactly
|
||||
8 charadcters and this is assumed in API calls. The encoding of each
|
||||
byte is as shown below:
|
||||
|
||||
```
|
||||
+---01---+
|
||||
| |
|
||||
20 02
|
||||
| |
|
||||
+---40---+
|
||||
| |
|
||||
10 04
|
||||
| |
|
||||
+---08---+ 80
|
||||
```
|
||||
|
||||
The keypad keys are identified by the following key ids. Not all
|
||||
keypads will contain all keys.
|
||||
|
||||
| **Key Id** | **Key Definition** | **Key Id** | **Key Definition** |
|
||||
|------------|--------------------|------------|--------------------|
|
||||
| $00 | Hex Numeric 0 | $10 | Forward |
|
||||
| $01 | Hex Numeric 1 | $11 | Backward |
|
||||
| $02 | Hex Numeric 2 | $12 | Clear |
|
||||
| $03 | Hex Numeric 3 | $13 | Enter |
|
||||
| $04 | Hex Numeric 4 | $14 | Deposit |
|
||||
| $05 | Hex Numeric 5 | $15 | Examine |
|
||||
| $06 | Hex Numeric 6 | $16 | Go |
|
||||
| $07 | Hex Numeric 7 | $17 | Boot |
|
||||
| $08 | Hex Numeric 8 | $18 | F4 |
|
||||
| $09 | Hex Numeric 9 | $19 | F3 |
|
||||
| $0A | Hex Numeric A | $1A | F2 |
|
||||
| $0B | Hex Numeric B | $1B | F1 |
|
||||
| $0C | Hex Numeric C | | |
|
||||
| $0D | Hex Numeric D | | |
|
||||
| $0E | Hex Numeric E | | |
|
||||
| $0F | Hex Numeric F | | |
|
||||
|
||||
### Function 0x30 -- DSKY Reset (DSKYRESET)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x30 | A: Status |
|
||||
|
||||
This function performs a device dependent reset operation on the DSKY.
|
||||
The display will be cleared, keyboard queue will be flushed, and
|
||||
chip will be reinitialized. The returned Status (A) is a standard
|
||||
HBIOS result code.
|
||||
|
||||
### Function 0x31 -- DSKY (DSKYSTATUS)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x31 | A: Status / Characters Pending |
|
||||
|
||||
Return the count of Characters Pending (A) in the input buffer of the
|
||||
DSKY. If the unit has no input buffer or the
|
||||
buffer utilization is not available, the function may return simply 0 or
|
||||
1 where 0 means there is no character available and 1 means there is at
|
||||
least one character available.
|
||||
|
||||
The value returned in register A is used as both a Status (A) code and
|
||||
the return value. Negative values (bit 7 set) indicate a standard HBIOS
|
||||
result (error) code. Otherwise, the return value represents the number
|
||||
of characters in the buffer.
|
||||
|
||||
### Function 0x32 -- DSKY Get Key (DSKYGETKEY)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x32 | A: Status |
|
||||
| | E: Character Value |
|
||||
|
||||
Read and return a Character (E) from the DSKY.
|
||||
If no character(s) are available in the unit's input buffer, this
|
||||
function will wait indefinitely. The returned Status (A) is a standard
|
||||
HBIOS result code.
|
||||
|
||||
The Character Value (E) returned is not ASCII. It is a keypad key
|
||||
id. The possible id values are listed at the start of this section.
|
||||
|
||||
### Function 0x33 -- DSKY Show HEX (RTCSHOWHEX)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x33 | A: Status |
|
||||
| DE:HL=Binary Value | |
|
||||
|
||||
Display the 32-bit binary value (DE:HL) in hex on the DSKY segment
|
||||
display. All decimal points of the display will be off.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x34 -- DSKY Show Segments (DSKYSHOWSEG)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x34 | A: Status |
|
||||
| HL: Buffer Address | |
|
||||
|
||||
Display the segment-encoded values on the segment display. The encoding
|
||||
is defined at the start of this section. The entire displa is updated
|
||||
and it is assumed that an 8 character buffer will be pointed to by HL.
|
||||
The buffer must reside in high memory.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x35 -- DSKY Keypad LEDs (DSKYKEYLEDS)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x35 | A: Status |
|
||||
| HL: Buffer Address | |
|
||||
|
||||
Light the LEDs for the keypad keys according to the
|
||||
bitmap contained in the buffer pointed to by HL. The buffer
|
||||
must be located in high memory and is assumed to be 8 bytes.
|
||||
|
||||
At this time, the bitmap is specific to the PKD hardware.
|
||||
This function is ignored by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x36 -- DSKY Status LED (DSKYSTATLED)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x36 | A: Status |
|
||||
| D: LED Number | |
|
||||
| E: LED State | |
|
||||
|
||||
Set or clear the status LED specified in D. The state of
|
||||
the LED is contained in E. If E=0, the LED will be turned
|
||||
off. If E=1, the LED will be turned on.
|
||||
|
||||
This function is specific to the PKD hardware. It will be ignored
|
||||
by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x37 -- DSKY Beep (DSKYBEEP)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x37 | A: Status |
|
||||
|
||||
Beep the onboard speaker of the DSKY.
|
||||
This function is specific to the PKD hardware. It will be ignored
|
||||
by the ICM hardware.
|
||||
The Status (A) is a standard HBIOS result code.
|
||||
|
||||
### Function 0x38 -- DSKY Device (DSKYDEVICE)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0x38 | A: Status |
|
||||
| | C: Device Attributes |
|
||||
| | D: Device Type |
|
||||
| | E: Device Number |
|
||||
| | H: Device Unit Mode |
|
||||
| | L: Device I/O Base Address |
|
||||
|
||||
Returns device information for the DSKY unit. The Status (A) is a
|
||||
standard HBIOS result code.
|
||||
|
||||
Device Attribute (C) values are not yet defined. Device Type (D)
|
||||
indicates the specific hardware driver that handles the specified
|
||||
character unit. Values are listed at the start of this section. Device
|
||||
Number (E) indicates the physical device number assigned per driver
|
||||
which is always 0 for DSKY.
|
||||
|
||||
Device Mode (H) is used to indicate the variant of the chip or circuit
|
||||
that is used by the specified unit. The Device I/O Base Address (L)
|
||||
indicates the starting port address of the hardware interface that is
|
||||
servicing the specified unit. Both of these values are considered
|
||||
driver specific. Refer to the associated hardware driver for the values
|
||||
used.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Video Display Adapter (VDA)
|
||||
|
||||
The VDA functions are provided as a common interface to Video Display
|
||||
@@ -1014,10 +1222,11 @@ below enumerates there values.
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
|
||||
| VDADEV_CVDU | 0x10 | MC8563-based Video Display Controller | cvdu.asm |
|
||||
| VDADEV_GDC | 0x20 | uPD7220 Video Display Controller | gdc.asm |
|
||||
| VDADEV_TMS | 0x30 | TMS9918/38/58 Video Display Controller | tms.asm |
|
||||
| VDADEV_VGA | 0x40 | HD6445CP4-based Video Display Controller | vga.asm |
|
||||
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
|
||||
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
|
||||
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
|
||||
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
|
||||
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
|
||||
|
||||
Depending on the capabilities of the hardware, the use of colors and
|
||||
attributes may or may not be supported. If the hardware does not support
|
||||
@@ -1429,9 +1638,9 @@ below enumerates these values.
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|----------------------------------------------|-------------|
|
||||
| SNDDEV_SN76489 | $00 | SN76489 Programmable Sound Generator | sn76489.asm |
|
||||
| SNDDEV_AY38910 | $10 | AY-3-8910/YM2149 Programmable Sound Generator| ay38910.asm |
|
||||
| SNDDEV_BITMODE | $20 | Bit-bang Speaker | spk.asm |
|
||||
| SNDDEV_YM2612 | $30 | YM2612 Programmable Sound Generator | ym2612.asm |
|
||||
| SNDDEV_AY38910 | $01 | AY-3-8910/YM2149 Programmable Sound Generator| ay38910.asm |
|
||||
| SNDDEV_BITMODE | $02 | Bit-bang Speaker | spk.asm |
|
||||
| SNDDEV_YM2612 | $03 | YM2612 Programmable Sound Generator | ym2612.asm |
|
||||
|
||||
The Sound functions defer the actual programming of the sound chip
|
||||
until the SNDPLAY function is called. You will call the volume
|
||||
@@ -1619,7 +1828,7 @@ Status (A) is a standard HBIOS result code.
|
||||
| E: 0x04 | HL: Ports |
|
||||
| | DE: Ports |
|
||||
|
||||
This subfunction reports detailed device informatoin for the specified
|
||||
This subfunction reports detailed device information for the specified
|
||||
Sound Unit (C).
|
||||
|
||||
Driver Identity (B) reports the audio device type. Ports (HL & DE)
|
||||
@@ -1652,7 +1861,7 @@ the duration, the actual duration is applied in the SNDPLAY function.
|
||||
If the Duration (HL) is set to zero, then the SNDPLAY function will
|
||||
operate in a non-blocking mode. i.e. a tone will start playing and the
|
||||
play function will return. The tone will continue to play until the next
|
||||
tone is played. If the Duration (HL) is greater than zero, the the
|
||||
tone is played. If the Duration (HL) is greater than zero, the
|
||||
sound will play for the duration defined in HL and then return.
|
||||
|
||||
**\*\*\* Function Not Implemented \*\*\**
|
||||
@@ -1752,6 +1961,9 @@ The hardware Platform (L) is identified as follows:
|
||||
| PLT_RCZ280 |12 | RCBUS W/ Z280 |
|
||||
| PLT_MBC |13 | NHYODYNE MULTI-BOARD COMPUTER |
|
||||
| PLT_RPH |14 | RHYOPHYRE GRAPHICS SBC |
|
||||
| PLT_Z80RETRO |15 | Z80 RETRO COMPUTER |
|
||||
| PLT_S100 |16 | S100 COMPUTERS Z180 |
|
||||
| PLT_DUO |17 | DUODYNE Z80 SYSTEM |
|
||||
|
||||
### Function 0xF2 -- System Set Bank (SYSSETBNK)
|
||||
|
||||
@@ -2024,7 +2236,7 @@ lookup.
|
||||
|
||||
Return the value of the global system timer Tick Count (DEHL). This is
|
||||
a double-word binary value. The frequency of the system timer in Hertz
|
||||
is returned in Frequncy (C). The returned Status (A) is a standard HBIOS
|
||||
is returned in Frequency (C). The returned Status (A) is a standard HBIOS
|
||||
result code.
|
||||
|
||||
Note that not all hardware configuration have a system timer. You
|
||||
@@ -2123,6 +2335,17 @@ Wait States (D) is the actual number of wait states, not the number
|
||||
of wait states added. The returned Status (A) is a standard HBIOS
|
||||
result code.
|
||||
|
||||
#### SYSGET Subfunction 0xF4 -- Get Front Panel Swithes (PANEL)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0xF8 | A: Status |
|
||||
| C: 0xF4 | L: Switches |
|
||||
|
||||
This function will return the current value of the switches (L) from the
|
||||
front panel of the system. If no front panel is available in the
|
||||
system, the returned Status (A) will indicate a No Hardware error.
|
||||
|
||||
### Function 0xF9 -- System Set (SYSSET)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
@@ -2197,7 +2420,7 @@ Wait States (E) will be set if possible. The value of Memory Wait
|
||||
States (D) is the actual number of wait states, not the number of wait
|
||||
states added.
|
||||
|
||||
Some peripherals are dependant on the CPU speed. For example, the Z180
|
||||
Some peripherals are dependent on the CPU speed. For example, the Z180
|
||||
ASCI baud rate and system timer are derived from the CPU speed. The
|
||||
Set CPU Speed function will attempt to adjust these peripherals for
|
||||
correct operation after modifying the CPU speed. However, in some
|
||||
@@ -2206,6 +2429,18 @@ limited set of divisors. If there is no satisfactory divisor to
|
||||
retain the existing baud rate under the new CPU speed, then the baud
|
||||
rate of the ASCI port(s) will be affected.
|
||||
|
||||
#### SYSSET Subfunction 0xF4 -- Set Front Panel LEDs (PANEL)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
|----------------------------------------|----------------------------------------|
|
||||
| B: 0xF9 | A: Status |
|
||||
| C: 0xF4 | |
|
||||
| L: LEDs | |
|
||||
|
||||
This function will set the front panel LEDs based on the bits in L. If
|
||||
no front panel is available in the system, the returned Status (A) will
|
||||
indicate a No Hardware error.
|
||||
|
||||
### Function 0xFA -- System Peek (SYSPEEK)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
@@ -2389,7 +2624,7 @@ are not reported to the console.
|
||||
|
||||
If the diagnosis level is set to display the diagnosis information, then
|
||||
memory address, register dump and error code is displayed.
|
||||
A key differance with the PANIC error is that execution may be continued.
|
||||
A key difference with the PANIC error is that execution may be continued.
|
||||
|
||||
Example error message:
|
||||
|
||||
|
||||
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -11,8 +11,8 @@ echo Preparing compressed font files...
|
||||
lzsa -f2 -r font8x8u.bin font8x8c.bin || exit /b
|
||||
lzsa -f2 -r font8x11u.bin font8x11c.bin || exit /b
|
||||
lzsa -f2 -r font8x16u.bin font8x16c.bin || exit /b
|
||||
|
||||
lzsa -f2 -r fontcgau.bin fontcgac.bin || exit /b
|
||||
lzsa -f2 -r fontvgarcu.bin fontvgarcc.bin || exit /b
|
||||
|
||||
fonttool font8x8u.bin > font8x8u.asm || exit /b
|
||||
fonttool font8x11u.bin > font8x11u.asm || exit /b
|
||||
@@ -20,6 +20,7 @@ fonttool font8x16u.bin > font8x16u.asm || exit /b
|
||||
fonttool font8x8c.bin > font8x8c.asm || exit /b
|
||||
fonttool font8x11c.bin > font8x11c.asm || exit /b
|
||||
fonttool font8x16c.bin > font8x16c.asm || exit /b
|
||||
|
||||
fonttool fontcgau.bin > fontcgau.asm || exit /b
|
||||
fonttool fontcgac.bin > fontcgac.asm || exit /b
|
||||
fonttool fontvgarcu.bin > fontvgarcu.asm || exit /b
|
||||
fonttool fontvgarcc.bin > fontvgarcc.asm || exit /b
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
OBJECTS = \
|
||||
font8x8u.asm font8x11u.asm font8x16u.asm fontcgau.asm \
|
||||
font8x8c.asm font8x11c.asm font8x16c.asm fontcgac.asm
|
||||
font8x8u.asm font8x11u.asm font8x16u.asm fontcgau.asm fontvgarcu.asm \
|
||||
font8x8c.asm font8x11c.asm font8x16c.asm fontcgac.asm fontvgarcc.asm
|
||||
|
||||
OTHERS = font8x8c.bin font8x11c.bin font8x16c.bin fontcgac.bin
|
||||
OTHERS = font8x8c.bin font8x11c.bin font8x16c.bin fontcgac.bin fontvgarcc.bin
|
||||
|
||||
TOOLS = ../../Tools
|
||||
|
||||
@@ -26,5 +26,8 @@ font8x16c.bin: font8x16u.bin
|
||||
fontcgac.bin: fontcgau.bin
|
||||
$(BINDIR)/lzsa -f2 -r $< $@
|
||||
|
||||
fontvgarcc.bin: fontvgarcu.bin
|
||||
$(BINDIR)/lzsa -f2 -r $< $@
|
||||
|
||||
%.asm: %.bin
|
||||
$(BINDIR)/bin2asm $< > $@
|
||||
|
||||
BIN
Source/Fonts/fontvgarcu.bin
Normal file
BIN
Source/Fonts/fontvgarcu.bin
Normal file
Binary file not shown.
@@ -117,7 +117,11 @@ GET ($F8):
|
||||
L=Clock Mult (0:Half, 1:Full, 2: Double)
|
||||
D=Memory Wait States
|
||||
E=I/O Wait States
|
||||
|
||||
|
||||
PANEL ($F4):
|
||||
BC=Function/Subfunction A=Result
|
||||
L=Switch Values
|
||||
|
||||
|
||||
SET ($F9):
|
||||
BC=Function/Subfunction A=Result
|
||||
@@ -142,6 +146,11 @@ SET ($F9):
|
||||
E=I/O Wait States
|
||||
|
||||
|
||||
PANEL ($F4):
|
||||
BC=Function/Subfunction A=Result
|
||||
L=LED Values
|
||||
|
||||
|
||||
PEEK ($FA):
|
||||
B=Function A=Result
|
||||
D=Bank E=Byte Value
|
||||
@@ -475,3 +484,93 @@ TERM_ATTACH: (C=VIDEO UNIT, DE=<VDA>_DISPATCH)
|
||||
- QUERY ATTACHED VDA FOR SCREEN SIZE (VIA <EMU>_VDADISP)
|
||||
- INITIALIZE ALL WORKING VARIABLES AND EMULATOR STATE
|
||||
- RETURN (A=STATUS)
|
||||
|
||||
|
||||
==============
|
||||
DSKY Functions
|
||||
==============
|
||||
|
||||
RESET ($30):
|
||||
B=Function A=Result
|
||||
|
||||
STAT ($31):
|
||||
B=Function A=Result / Bytes Pending
|
||||
|
||||
A=Number of characters waiting or error code if negative
|
||||
|
||||
GETKEY ($32):
|
||||
B=Function A=Result
|
||||
E=Key Code
|
||||
|
||||
A=DSKY key value or error code if negative
|
||||
|
||||
SHOWHEX ($33):
|
||||
B=Function A=Result
|
||||
DE:HL=Value (32-bit)
|
||||
|
||||
Display value of DE:HL in hex on display. It is not
|
||||
possible to show decimal points.
|
||||
|
||||
SHOWSEG ($34):
|
||||
B=Function A=Result
|
||||
HL=Buffer (raw segment encoded)
|
||||
|
||||
Display raw segment values. Each byte represents one
|
||||
character. Each segment of the character is represented
|
||||
by a bit. The buffer must be located in high memory.
|
||||
The segments are encoded as shown below:
|
||||
|
||||
+--01--+
|
||||
20 02
|
||||
+--40--+
|
||||
10 04
|
||||
+--08--+ 80
|
||||
|
||||
KEYLEDS ($35):
|
||||
B=Function A=Result
|
||||
HL=Buffer (LED bitmap)
|
||||
|
||||
Light the LEDs for the keypad keys according to the
|
||||
bitmap contained in the buffer pointed to by HL. The buffer
|
||||
must be located in high memory.
|
||||
|
||||
At this time, the bitmap is specific to the DSKYNG hardware.
|
||||
This function is ignored by the original DSKY.
|
||||
|
||||
STATLED ($36):
|
||||
B=Function A=Result
|
||||
D=LED Number
|
||||
E=LED State (0/1)
|
||||
|
||||
Set or clear the status LED specified in D. The state of
|
||||
the LED is contained in E. If E=0, the LED will be turned
|
||||
off. If E=1, the LED will be turned on.
|
||||
|
||||
BEEP ($37):
|
||||
B=Function A=Result
|
||||
|
||||
Beep the onboard speaker of the DSKY. Only the DSKYNG hardware
|
||||
has a speaker. This function will be ignored by the original
|
||||
DSKY.
|
||||
|
||||
DEVICE ($38):
|
||||
B=Function A=Result
|
||||
D=Device Type
|
||||
E=Device Number
|
||||
C=Device Attributes
|
||||
H=Device Mode
|
||||
L=Base I/O Adr
|
||||
|
||||
Returns device information for the DSKY unit. The Status (A) is a
|
||||
standard HBIOS result code. Device Attribute (C) values are not yet
|
||||
defined. Device Type (D) indicates the specific hardware driver that
|
||||
handles the specified character unit. Values are listed at the start
|
||||
of this section. Device Number (E) indicates the physical device
|
||||
number assigned per driver which is always 0 for DSKY.
|
||||
|
||||
Device Mode (H) is used to indicate the variant of the chip or circuit
|
||||
that is used by the specified unit. The Device I/O Base Address (L)
|
||||
indicates the starting port address of the hardware interface that is
|
||||
servicing the specified unit. Both of these values are considered
|
||||
driver specific. Refer to the associated hardware driver for the
|
||||
values used.
|
||||
|
||||
85
Source/HBIOS/Bank Layout.txt
Normal file
85
Source/HBIOS/Bank Layout.txt
Normal file
@@ -0,0 +1,85 @@
|
||||
ROM Bank Layout
|
||||
|
||||
Bank ID Module Start Size
|
||||
------ ------ ------ ------
|
||||
0x00 hbios 0x0000 0x8000
|
||||
<end> 0x8000
|
||||
|
||||
0x01 loader 0x0000 0x1000
|
||||
dbgmon 0x1000 0x2000
|
||||
cpm22 0x2000 0x3000
|
||||
zsys 0x5000 0x3000
|
||||
<end> 0x8000
|
||||
|
||||
0x02 forth 0x0000 0x1700
|
||||
basic 0x1700 0x2000
|
||||
tbasic 0x3700 0x0900
|
||||
game 0x4000 0x0900
|
||||
egg 0x4900 0x0200
|
||||
netboot 0x4B00 0x1000
|
||||
updater 0x5B00 0x0D00
|
||||
usrrom 0x6800 0x1800
|
||||
<end> 0x8000
|
||||
|
||||
0x03 imgpad2 0x0000 0x8000
|
||||
<end> 0x8000
|
||||
|
||||
0x04 - N ROM Disk Data
|
||||
|
||||
|
||||
Typical ROM Bank Layout
|
||||
|
||||
Bank ID Usage
|
||||
------- ------
|
||||
0x00 Boot Bank (HBIOS image)
|
||||
0x01 ROM Loader, Monitor, ROM OSes
|
||||
0x02 ROM Applications
|
||||
0x03 Reserved
|
||||
0x04-0x0F ROM Disk Banks
|
||||
|
||||
|
||||
Typical RAM Bank Layout
|
||||
|
||||
Bank ID Usage
|
||||
------- ------
|
||||
0x80 RomWBW HBIOS
|
||||
0x81-0x8B RAM Disk Data
|
||||
0x8C CP/M 3 Buffers
|
||||
0x8D CP/M 3 OS
|
||||
0x8E User TPA
|
||||
0x8F Common
|
||||
|
||||
|
||||
Typical ROMless Bank Layout
|
||||
|
||||
Bank ID Usage
|
||||
------- ------
|
||||
0x80 RomWBW HBIOS
|
||||
0x81 Loader, DbgMon, CP/M 2.2, ZSDOS
|
||||
0x82 ROM Apps
|
||||
0x83 More ROM Apps
|
||||
0x84-0x8B RAM Disk Data
|
||||
0x8C CP/M 3 Buffers
|
||||
0x8D CP/M 3 OS
|
||||
0x8E User TPA
|
||||
0x8F Common
|
||||
|
||||
|
||||
ROMless Tiny Bank Layout (128K)
|
||||
NOTE: no ROM Apps, no CP/M 3 support, no RAM disk
|
||||
|
||||
Bank ID Usage
|
||||
------- ------
|
||||
0x80 RomWBW HBIOS
|
||||
0x81 Loader, DbgMon, CP/M 2.2, ZSDOS
|
||||
0x82 User TPA
|
||||
0x83 Common
|
||||
|
||||
Disk Image Sizes
|
||||
|
||||
Image Size ROM System ROMless System
|
||||
---------- ---------- --------------
|
||||
1024K 896K 768K
|
||||
512 384K 256K
|
||||
256 128K 0K
|
||||
128 (tiny) n/a 0K
|
||||
@@ -93,7 +93,14 @@ call :asm imgpad2 || exit /b
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin osimg.bin || exit /b
|
||||
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + netboot.mod + updater.bin + usrrom.bin osimg1.bin || exit /b
|
||||
copy /b imgpad2.bin osimg2.bin || exit /b
|
||||
|
||||
if %Platform%==S100 (
|
||||
zxcc slr180 -s100mon/fh
|
||||
zxcc mload25 -s100mon || exit /b
|
||||
copy /b s100mon.com osimg2.bin || exit /b
|
||||
) else (
|
||||
copy /b imgpad2.bin osimg2.bin || exit /b
|
||||
)
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit /b
|
||||
|
||||
@@ -103,10 +110,8 @@ copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit
|
||||
:: should yield a result of zero.
|
||||
::
|
||||
|
||||
if %ROMSize% gtr 0 (
|
||||
for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
|
||||
"%TOOLS%\srecord\srec_cat.exe" %%f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o %%f -Binary || exit /b
|
||||
)
|
||||
for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
|
||||
"%TOOLS%\srecord\srec_cat.exe" %%f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o %%f -Binary || exit /b
|
||||
)
|
||||
|
||||
::
|
||||
@@ -130,8 +135,8 @@ if %ROMSize% gtr 0 (
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
) else (
|
||||
copy /b hbios_rom.bin + osimg_small.bin %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg_small.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\ram%ROMSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
)
|
||||
|
||||
@@ -214,14 +219,20 @@ call Build RCZ180 nat || exit /b
|
||||
call Build RCZ280 ext || exit /b
|
||||
call Build RCZ280 nat || exit /b
|
||||
call Build RCZ280 zz80mb || exit /b
|
||||
call Build RCZ280 zzrc || exit /b
|
||||
call Build RCZ280 zzrcc || exit /b
|
||||
call Build RCZ280 zzrcc_ram || exit /b
|
||||
call Build SCZ180 sc126 || exit /b
|
||||
call Build SCZ180 sc130 || exit /b
|
||||
call Build SCZ180 sc131 || exit /b
|
||||
call Build SCZ180 sc140 || exit /b
|
||||
call Build SCZ180 sc503 || exit /b
|
||||
call Build SCZ180 sc700 || exit /b
|
||||
call Build DYNO std || exit /b
|
||||
call Build UNA std || exit /b
|
||||
call Build RPH std || exit /b
|
||||
call Build Z80RETRO std || exit /b
|
||||
call Build S100 std || exit /b
|
||||
call Build DUO std || exit /b
|
||||
call Build HEATH std || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -27,8 +27,8 @@ $ErrorAction = 'Stop'
|
||||
# UNA BIOS is simply imbedded, it is not built here.
|
||||
#
|
||||
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "UNA"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH"
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100"
|
||||
$PlatformListZ280 = "RCZ280"
|
||||
|
||||
#
|
||||
|
||||
@@ -18,7 +18,8 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zz80mb"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrc"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="zzrcc_ram"; bash Build.sh
|
||||
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; bash Build.sh
|
||||
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
|
||||
@@ -32,14 +33,19 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh
|
||||
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="DUO"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc126"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc130"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc131"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc140"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc503"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc700"; bash Build.sh
|
||||
ROM_PLATFORM="S100"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="Z80RETRO"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="HEATH"; ROM_CONFIG="std"; bash Build.sh
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
@@ -11,6 +11,7 @@ if exist *.exp del *.exp
|
||||
if exist *.tmp del *.tmp
|
||||
if exist *.mrk del *.mrk
|
||||
if exist *.sys del *.sys
|
||||
if exist *.hex del *.hex
|
||||
if exist build.inc del build.inc
|
||||
if exist font*.asm del font*.asm
|
||||
if exist build_env.cmd del build_env.cmd
|
||||
|
||||
47
Source/HBIOS/Config/DUO_std.asm
Normal file
47
Source/HBIOS/Config/DUO_std.asm
Normal file
@@ -0,0 +1,47 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; DUODYNE STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_duo.asm"
|
||||
;
|
||||
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
;;;DMAENABLE .SET TRUE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
;
|
||||
BATCOND .SET TRUE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
;
|
||||
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
;
|
||||
PCFENABLE .SET TRUE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
;
|
||||
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
;
|
||||
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
@@ -34,8 +34,6 @@ Z180_MEMWAIT .SET 0 ; Z180: MEMORY WAIT STATES (0-3)
|
||||
Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
;
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
;ASCI0CFG .SET SER_115200_8N1 ; ASCI 0: SERIAL LINE CONFIG
|
||||
;ASCI1CFG .SET SER_115200_8N1 ; ASCI 1: SERIAL LINE CONFIG
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
;
|
||||
|
||||
69
Source/HBIOS/Config/HEATH_std.asm
Normal file
69
Source/HBIOS/Config/HEATH_std.asm
Normal file
@@ -0,0 +1,69 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; HEATH H8 Z80 STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz80.asm"
|
||||
;
|
||||
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
|
||||
H8PENABLE .SET TRUE ; ENABLES HEATH H8 FRONT PANEL
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|USR]
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
IMMENABLE .SET FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
@@ -42,11 +42,15 @@ RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
;
|
||||
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
DSKYENABLE .SET FALSE ; ENABLES DSKY
|
||||
DSKYMODE .SET DSKYMODE_NG ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY FUNCTIONALITY
|
||||
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
PKDENABLE .SET TRUE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
;
|
||||
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
;UARTCFG .SET UARTCFG | SER_RTS
|
||||
;
|
||||
ESPENABLE .SET TRUE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
LPTENABLE .SET TRUE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
CVDUMON .SET CVDUMON_CGA ; CVDU: CVDU MONITOR SETUP: CVDUMON_[NONE|CGA|EGA]
|
||||
;
|
||||
|
||||
@@ -47,7 +47,7 @@ VGAENABLE .SET TRUE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
@@ -46,6 +49,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
;
|
||||
@@ -54,7 +58,7 @@ AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LI
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
@@ -46,15 +49,15 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ180 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -30,6 +30,9 @@ CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
@@ -45,6 +48,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
@@ -52,7 +56,7 @@ AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LIN
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -30,6 +30,9 @@ CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
@@ -45,6 +48,7 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
@@ -52,7 +56,7 @@ AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LIN
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -28,14 +28,16 @@
|
||||
;
|
||||
#include "cfg_rcz280.asm"
|
||||
;
|
||||
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
RAMLOC .SET 23 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .SET (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .SET 8192 ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_MEMHIWAIT .SET 0 ; Z280: HIGH 8MB MEMORY WAIT STATES (0-3)
|
||||
@@ -51,14 +53,15 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RCBUS Z280 STANDARD CONFIGURATION (NATIVE Z280 MMU W/ LINEAR MEMORY ON ZZRC)
|
||||
; RCBUS Z280 ZZRCC CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
@@ -22,7 +22,7 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "ZZRC", " [", CONFIG, "]"
|
||||
#DEFINE PLATFORM_NAME "ZZRCC", " [", CONFIG, "]"
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
@@ -32,14 +32,14 @@ CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
RAMSIZE .SET 256 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .SET 256 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE_CHK .SET 256 ; ROMSIZE VALUE VERIFICATION (0=DISABLED)
|
||||
;
|
||||
RAMLOC .SET 18 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .SET (1 << (RAMLOC - 10)) ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_MEMHIWAIT .SET 0 ; Z280: HIGH 8MB MEMORY WAIT STATES (0-3)
|
||||
@@ -47,7 +47,7 @@ Z280_IOWAIT .SET 1 ; Z280: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z280_INTWAIT .SET 0 ; Z280: INT ACK WAIT STATUS (0-3)
|
||||
;
|
||||
MDROM .SET TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .SET FALSE ; MD: ENABLE RAM DISK
|
||||
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
|
||||
;
|
||||
Z2UENABLE .SET TRUE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
Z2UOSC .SET (CPUOSC / 8) ; Z2U: OSC FREQUENCY IN MHZ
|
||||
@@ -59,14 +59,15 @@ SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
77
Source/HBIOS/Config/RCZ280_zzrcc_ram.asm
Normal file
77
Source/HBIOS/Config/RCZ280_zzrcc_ram.asm
Normal file
@@ -0,0 +1,77 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RCBUS Z280 ZZRCC CONFIGURATION (ROMLESS)
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "ZZRCC", " [", CONFIG, "]"
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz280.asm"
|
||||
;
|
||||
CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 3 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
RAMBIAS .SET ROMSIZE ; OFFSET OF START OF RAM IN PHYSICAL ADDRESS SPACE
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_MEMHIWAIT .SET 0 ; Z280: HIGH 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_IOWAIT .SET 1 ; Z280: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
Z280_INTWAIT .SET 0 ; Z280: INT ACK WAIT STATUS (0-3)
|
||||
;
|
||||
MDROM .SET FALSE ; MD: ENABLE ROM DISK
|
||||
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
|
||||
;
|
||||
Z2UENABLE .SET TRUE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
Z2UOSC .SET (CPUOSC / 8) ; Z2U: OSC FREQUENCY IN MHZ
|
||||
Z2U0HFC .SET TRUE ; Z2U0: ENABLE HARDWARE FLOW CONTROL
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET TRUE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
@@ -33,13 +33,15 @@ CPUOSC .SET 10000000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
WDOGMODE .SET WDOG_EZZ80 ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
WDOGIO .SET $6F ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
CTCENABLE .SET TRUE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCTIMER .SET TRUE ; ENABLE CTC PERIODIC TIMER
|
||||
@@ -60,6 +62,7 @@ TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
VDAEMU_SERKBD .SET 0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
@@ -67,11 +70,12 @@ AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LIN
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
IMMENABLE .SET FALSE ; IMM: ENABLE IMM DISK DRIVER (IMM.ASM)
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
79
Source/HBIOS/Config/RCZ80_jbl.asm
Normal file
@@ -0,0 +1,79 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RCBUS Z80 COLECOVISION-COMPATIBLE CONFIGURATION FOR J.B. LANGSTON'S GAME BOARDS
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS CONFIGURATION ENABLES DRIVERS FOR THE TMS9918 AND SN76489 BOARDS BY J.B. LANGSTON
|
||||
; AND THE YM2149 BOARD BY ED BRINDLEY. THE TMS9918 IS CONFIGURED TO USE THE COLECOVISION
|
||||
; PORTS AND HAS INTERRUPTS DISABLED BECAUSE COLECOVISION USES NMI, WHICH WOULD BREAK CP/M
|
||||
; WHEN ENABLED. IT IS CONFIGURED FOR A 3.686MHZ CPU CLOCK IN ORDER TO BE COMPATIBLE WITH
|
||||
; COLECOVISION GAMES. THE FIRST SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE CPU
|
||||
; RUNNING AT THIS SPEED. THE SECOND SIO PORT IS CONFIGURED TO RUN AT 115200 BPS WITH THE
|
||||
; SECOND CLOCK SET TO 7.373MHZ. LOWER BAUD RATES CAN BE ACHIEVED ON THE SECOND PORT BY
|
||||
; MOVING THE SECONDARY CLOCK DIVIDER JUMPER (E.G., 38400 @ 2.458MHZ). THE BAUD RATE DOES
|
||||
; NOT NEED TO BE CHANGED IN THIS CONFIGURATION FILE IN ORDER TO DO THIS, BUT THE DEVICE
|
||||
; LIST WILL INCORRECTLY SHOW THE PORT RUNNING AT 115200 REGARDLESS OF THE CLOCK DIVIDER.
|
||||
; UNCOMMENT THE LINE THAT SETS BOOTCON TO 1 TO BOOT ON THE SECOND SIO PORT BY DEFAULT.
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "Z" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_rcz80.asm"
|
||||
;
|
||||
CPUOSC .SET 3686400 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;BOOTCON .SET 1 ; BOOT CONSOLE DEVICE
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .SET FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .SET 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .SET 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .SET SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .SET CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .SET SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .SET -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .SET 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .SET SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
TMSENABLE .SET TRUE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
TMSMODE .SET TMSMODE_COLECO ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
MKYENABLE .SET FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
VDAEMU_SERKBD .SET 1 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC]
|
||||
SN76489ENABLE .SET TRUE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user