mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
68 Commits
v3.2.0-rc.
...
v3.3.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
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 | ||
|
|
a7ef76b9c4 |
25
.github/workflows/commit.yml
vendored
25
.github/workflows/commit.yml
vendored
@@ -13,16 +13,18 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Make Slugs
|
||||
uses: rlespinasse/github-slug-action@v4.4.1
|
||||
|
||||
- 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*
|
||||
@@ -36,19 +38,22 @@ jobs:
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW-${{env.GITHUB_SHA_SHORT}}-Linux
|
||||
name: RomWBW-${{env.COMMIT_REF}}-Linux
|
||||
path: .
|
||||
|
||||
buildMacOS:
|
||||
runs-on: macOS-latest
|
||||
|
||||
steps:
|
||||
- name: Make Slugs
|
||||
uses: rlespinasse/github-slug-action@v4.4.1
|
||||
|
||||
- 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'
|
||||
@@ -65,5 +70,5 @@ jobs:
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW-${{env.GITHUB_SHA_SHORT}}-MacOS
|
||||
path: .
|
||||
name: RomWBW-${{env.COMMIT_REF}}-MacOS
|
||||
path: .
|
||||
|
||||
36
.github/workflows/release.yml
vendored
36
.github/workflows/release.yml
vendored
@@ -14,15 +14,6 @@ jobs:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3.3.0
|
||||
|
||||
- name: Create Package Label
|
||||
run: |
|
||||
echo GITHUB_REF: "$GITHUB_REF"
|
||||
LABEL=`echo "$GITHUB_REF" | sed "s|^refs/tags/||"`
|
||||
echo "PKGLBL=$LABEL" >> $GITHUB_ENV
|
||||
echo PKGLBL: "$PKGLBL"
|
||||
echo Upload URL: "${{github.event.release.upload_url}}"
|
||||
echo GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export TZ='America/Los_Angeles'
|
||||
@@ -33,22 +24,37 @@ jobs:
|
||||
|
||||
- name: Create Package Archive
|
||||
run: |
|
||||
zip -r RomWBW-${{env.PKGLBL}}-Package.zip .
|
||||
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:
|
||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
repo_token: "${{secrets.GITHUB_TOKEN}}"
|
||||
draft: true
|
||||
prerelease: true
|
||||
title: "RomWBW Development SnapShot ${{env.PKGLBL}}"
|
||||
title: "${{env.TITLE}} ${{github.ref_name}}"
|
||||
files: |
|
||||
RomWBW-${{env.PKGLBL}}-Package.zip
|
||||
RomWBW-${{github.ref_name}}-Package.zip
|
||||
|
||||
# - name: Upload Package Archive
|
||||
# uses: AButler/upload-release-assets@v2.0.2
|
||||
# with:
|
||||
# repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
# repo-token: ${{secrets.github_token}}
|
||||
# files: |
|
||||
# RomWBW-${{env.PKGLBL}}-Package.zip
|
||||
|
||||
@@ -57,7 +63,7 @@ jobs:
|
||||
# uses: docker://antonyurchenko/git-release:latest
|
||||
# env:
|
||||
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
# RELEASE_NAME_PREFIX: "Development SnapShot Release "
|
||||
# RELEASE_NAME_PREFIX: "${{env.TITLE}} "
|
||||
# CHANGELOG_FILE: "none"
|
||||
# with:
|
||||
# args: |
|
||||
|
||||
@@ -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)
|
||||
@@ -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)
|
||||
---------------------------------------
|
||||
|
||||
@@ -1,3 +1,23 @@
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
@@ -10,6 +10,26 @@ 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")
|
||||
-----------------------------
|
||||
@@ -43,12 +63,6 @@ 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,47 @@ 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 +127,10 @@ clock rate. This document provides a list of the possible
|
||||
baud rates for typical CPU clock rates.
|
||||
|
||||
|
||||
ZCPR Manual ("ZCPR Manual.pdf")
|
||||
-------------------------------
|
||||
UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
|
||||
-------------------------------------------------------------
|
||||
|
||||
ZCPR is the command proccessor portion of Z-System. This is the
|
||||
manual for ZCPR 1.x as included in RomWBW. The installation
|
||||
instructions can be ignored since that work has already been
|
||||
completed as part of the RomWBW distribution.
|
||||
Official user manual for p-System operating system included with
|
||||
RomWBW.
|
||||
|
||||
|
||||
ZSDOS Manual ("ZSDOS Manual.pdf")
|
||||
---------------------------------
|
||||
|
||||
ZSDOS is the DOS portion of Z-System. This is the manual fo ZSDOS
|
||||
1.x as included in RomWBW. The installation instructions can be
|
||||
ignored since that work has already been completed as part of the
|
||||
RomWBW distribution.
|
||||
--WBW 5:18 PM 3/16/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.
@@ -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)
|
||||
|
||||
32
ReadMe.md
32
ReadMe.md
@@ -1,9 +1,9 @@
|
||||
|
||||
|
||||
**RomWBW ReadMe** \
|
||||
Version 3.2 \
|
||||
Version 3.3 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
05 Mar 2023
|
||||
03 May 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.
|
||||
@@ -197,14 +204,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
|
||||
|
||||
30
ReadMe.txt
30
ReadMe.txt
@@ -1,6 +1,6 @@
|
||||
RomWBW ReadMe
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
05 Mar 2023
|
||||
03 May 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.
|
||||
@@ -202,14 +209,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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -39,12 +39,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 +88,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
|
||||
@@ -116,6 +141,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'
|
||||
@@ -141,12 +168,33 @@ MENULP1:
|
||||
JP Z,DMATST_Y ; TOGGLE READY
|
||||
#ENDIF
|
||||
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
|
||||
;
|
||||
DMABYE:
|
||||
#IF (INTENABLE)
|
||||
; Deinstall interrupt vector
|
||||
ld hl,(orgvec) ; original vector
|
||||
ld b,bf_sysint
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
di
|
||||
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 port address\n\rPort:$"
|
||||
@@ -158,21 +206,6 @@ DMACFG_S:
|
||||
ld (hl),a
|
||||
jp MENULP
|
||||
;
|
||||
DMABYE:
|
||||
#IF (INTENABLE)
|
||||
; Deinstall interrupt vector
|
||||
ld hl,(orgvec) ; original vector
|
||||
ld b,bf_sysint
|
||||
ld c,bf_sysintset ; set new vector
|
||||
ld e,INTIDX ; vector idx
|
||||
di
|
||||
rst 08 ; do it
|
||||
ei ; interrupts back on
|
||||
#ENDIF
|
||||
;
|
||||
LD SP,(SAVSTK) ; RESTORE CP/M STACK
|
||||
RET
|
||||
;
|
||||
DMATST_I:
|
||||
call PRTSTRD
|
||||
.db "\n\rStart Initialization\n\r$"
|
||||
@@ -230,6 +263,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
|
||||
@@ -274,7 +317,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 +324,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
|
||||
@@ -309,13 +356,16 @@ DMA_INIT:
|
||||
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
|
||||
@@ -338,6 +388,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$"
|
||||
@@ -354,8 +425,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,11 +445,36 @@ 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
|
||||
;==================================================================================================
|
||||
;
|
||||
@@ -393,19 +495,14 @@ IOLoop: push bc
|
||||
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 (COMMON ROUTINE WHERE A CONTAINS THE ASCII PORT OFFSET)
|
||||
;==================================================================================================
|
||||
;
|
||||
DMA_Port01:
|
||||
@@ -480,7 +577,6 @@ portlp2:push bc
|
||||
;==================================================================================================
|
||||
;
|
||||
DMAMemMove:
|
||||
;
|
||||
LD HL,$8000 ; PREFILL DESTINATION WITH $55
|
||||
LD A,$55
|
||||
LD (HL),A
|
||||
@@ -513,10 +609,6 @@ DMAMemMove2:
|
||||
; 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
|
||||
@@ -616,23 +708,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 +716,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 +730,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 +740,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 +762,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 +776,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 +790,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 +812,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 +826,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 +838,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 +860,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 +873,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 +883,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 +895,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 +1167,11 @@ CST:
|
||||
RET
|
||||
;
|
||||
USEINT .DB FALSE ; USE INTERRUPTS FLAG
|
||||
;
|
||||
counter .dw 0
|
||||
dmaport .db DMABASE
|
||||
dmautil .db DMABASE+1
|
||||
dmaxfer .db DMA_XMODE
|
||||
dmavbs .db 0
|
||||
SAVSTK: .DW 2
|
||||
.FILL 64
|
||||
STACK: .EQU $
|
||||
@@ -1050,10 +1211,6 @@ int:
|
||||
or $ff ; signal int handled
|
||||
ret
|
||||
;
|
||||
counter .dw 0
|
||||
dmaport .db DMABASE
|
||||
dmautil .db DMABASE+1
|
||||
;
|
||||
hsiz .equ $ - $A000 ; size of handler to relocate
|
||||
;
|
||||
.org reladr + hsiz
|
||||
|
||||
@@ -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
|
||||
@@ -655,8 +657,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
|
||||
|
||||
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
|
||||
|
||||
@@ -104,7 +104,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,7 +158,7 @@ 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
|
||||
@@ -235,8 +235,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 +246,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 +466,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 +529,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 +557,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 +582,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
|
||||
|
||||
@@ -661,7 +661,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 +683,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.
|
||||
|
||||
@@ -922,7 +922,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 +939,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 +1012,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 +1028,81 @@ 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.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$define{doc_ver}{Version 3.2}$
|
||||
$define{doc_ver}{Version 3.3}$
|
||||
$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.
@@ -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.
|
||||
@@ -186,15 +193,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
|
||||
|
||||
@@ -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 |
|
||||
@@ -617,7 +617,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)
|
||||
@@ -1619,7 +1619,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 +1652,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 \*\*\**
|
||||
@@ -2024,7 +2024,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 +2123,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 +2208,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 +2217,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 +2412,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:
|
||||
|
||||
|
||||
@@ -133,7 +133,7 @@ contributions are very welcome.
|
||||
#### Distribution Directory Layout
|
||||
|
||||
The RomWBW distribution is a compressed zip archive file organized in
|
||||
a set of directories. Each of these directories has it's own
|
||||
a set of directories. Each of these directories has its own
|
||||
ReadMe.txt file describing the contents in detail. In summary, these
|
||||
directories are:
|
||||
|
||||
@@ -201,6 +201,7 @@ below, **carefully** pick the appropriate ROM image for your hardware.
|
||||
| [Z80 ZRC CPU Module]^7^ | RCBus | RCZ80_zrc.rom | 115200 |
|
||||
| [Z280 ZZRCC CPU Module]^7^ | RCBus | RCZ280_zzrc.rom | 115200 |
|
||||
| [Z280 ZZ80MB SBC]^7^ | RCBus | RCZ280_zz80mb.rom | 115200 |
|
||||
| [Z80-Retro SBC]^8^ | - | Z80RETRO_std.rom | 38400 |
|
||||
|
||||
| ^1^Designed by Andrew Lynch
|
||||
| ^2^Designed by Sergey Kiselev
|
||||
@@ -209,6 +210,7 @@ below, **carefully** pick the appropriate ROM image for your hardware.
|
||||
| ^5^Designed by Stephen Cousins
|
||||
| ^6^Designed by Steve Garcia
|
||||
| ^7^Designed by Bill Shen
|
||||
| ^8^Designed by Peter Wilson
|
||||
|
||||
RCBus refers to Spencer Owen's RC2014 bus specification and derivatives
|
||||
including RC26, RC40, RC80, and BP80.
|
||||
@@ -405,8 +407,9 @@ to your system that is not automatically identified, you may need
|
||||
to build a custom ROM to add support for it. Building a custom ROM
|
||||
is covered later.
|
||||
|
||||
[Appendix A - Device Summary] contains a list of the RomWBW hardware devices which may
|
||||
help you identify the hardware discovered in your system.
|
||||
[Appendix B - Device Summary] contains a list of the RomWBW hardware
|
||||
devices which may help you identify the hardware discovered in your
|
||||
system.
|
||||
|
||||
## Device Unit Assignments
|
||||
|
||||
@@ -529,7 +532,7 @@ ROM Applications:
|
||||
|
||||
To start a ROM application you just enter the corresponding letter at
|
||||
the Boot Loader prompt. In the following example, we launch the
|
||||
built-in Micrsosoft BASIC interpreter. From within BASIC, we use the
|
||||
built-in Microsoft BASIC interpreter. From within BASIC, we use the
|
||||
`BYE` command to return to the Boot Loader:
|
||||
|
||||
```
|
||||
@@ -620,7 +623,7 @@ Boot [H=Help]: 4
|
||||
|
||||
Booting Disk Unit 4, Slice 0, Sector 0x00000800...
|
||||
|
||||
Volume "Unlabeled" [0xD000-0xFE00, entry @ 0xE600]...
|
||||
Volume "Unlabelled" [0xD000-0xFE00, entry @ 0xE600]...
|
||||
|
||||
CBIOS v3.1.1-pre.194 [WBW]
|
||||
|
||||
@@ -660,7 +663,7 @@ Boot [H=Help]: 4.3
|
||||
|
||||
Booting Disk Unit 4, Slice 3, Sector 0x0000C800...
|
||||
|
||||
Volume "Unlabeled" [0x0100-0x1000, entry @ 0x0100]...
|
||||
Volume "Unlabelled" [0x0100-0x1000, entry @ 0x0100]...
|
||||
|
||||
CP/M V3.0 Loader
|
||||
Copyright (C) 1998, Caldera Inc.
|
||||
@@ -720,7 +723,7 @@ The 'R' command within the Boot Loader performs a software reset of
|
||||
the system. It is the software equivalent of pressing the reset
|
||||
button.
|
||||
|
||||
There is generallhy no need to do this, but it can be convenient when
|
||||
There is generally no need to do this, but it can be convenient when
|
||||
you want to see the boot messages again or ensure your system is in
|
||||
a clean state.
|
||||
|
||||
@@ -735,7 +738,7 @@ Restarting System...
|
||||
Your system can support a number of devices for the console. They may
|
||||
be VDU type devices or serial devices. If you want to change which
|
||||
device is the console, the ***I*** menu option can be used to choose
|
||||
the unit and it's speed.
|
||||
the unit and its speed.
|
||||
|
||||
The command format is ```I <unit> [<baudrate>]```
|
||||
|
||||
@@ -781,6 +784,55 @@ The use of diagnostic levels above 4 are really intended only for
|
||||
software developers. I do not recommend changing this under
|
||||
normal circumstances.
|
||||
|
||||
## Front Panel
|
||||
|
||||
RomWBW supports the concept of a simple front panel. The following
|
||||
image is a conceptual view of such a front panel. If your system has a
|
||||
front panel, it should look similar to the [RomWBW Front Panel](#panel).
|
||||
|
||||
{#panel width=50% }
|
||||
|
||||
The LEDs in the top row of the panel are used for multiple purposes.
|
||||
They are initially used to display the progress of the
|
||||
system boot. This may help in diagnosing a hardware or configuration
|
||||
issue in a system that does not progress far enough to display text
|
||||
output on the console. The meaning of the LEDs is:
|
||||
|
||||
| | |
|
||||
|------------|------------------------------|
|
||||
| `O-------` | System Boot has started |
|
||||
| `OO------` | Common RAM bank activated |
|
||||
| `OOO-----` | HBIOS transitioned to RAM |
|
||||
| `OOOO----` | Basic initialization done |
|
||||
| `OOOOO---` | CPU detection complete |
|
||||
| `OOOOOO--` | System timer configured |
|
||||
| `OOOOOOO-` | Pre-console device init done |
|
||||
| `OOOOOOOO` | Console activation |
|
||||
|
||||
Once the system has booted, the LEDs are used to indicate disk device
|
||||
activity. Each LED numbered 7-0 represents disk units 7-0. As each
|
||||
disk device performs I/O, the LED will light.
|
||||
|
||||
The second row of the front panel is composed of switches that allow
|
||||
you to control a few aspects of the system startup.
|
||||
|
||||
The first two switches affect the device used as the console initially.
|
||||
Setting the CRT/Serial switch will cause the system to boot directly
|
||||
to an attached CRT device (if available). Setting the Pri/Sec switch
|
||||
will cause the system to boot to the secondary Serial or CRT device
|
||||
(depending on the setting of the first switch).
|
||||
|
||||
The final six switches allow you to cause the system to automatically
|
||||
boot into a desired function. The Auto/Menu switch must be set to
|
||||
enable this, otherwise the normal ROM Loader prompt will be used.
|
||||
If the Disk/ROM switch is not set, then you can use the last 3
|
||||
switches to select a ROM app to auto-start. If the Disk/ROM switch is
|
||||
set, then the system will attempt a disk boot based on the following
|
||||
switches. The Floppy/Hard switch can be used to boot to a Floppy or
|
||||
Hard Disk. In either case, the first Floppy or Hard Disk will be used
|
||||
for the boot. If a Hard Disk boot is selected, then the last three
|
||||
switches can be used to select any of the first 8 slices.
|
||||
|
||||
# Disk Management
|
||||
|
||||
The systems supported by RomWBW all have the ability to use persistent
|
||||
@@ -823,11 +875,11 @@ The messages you see will vary depending on your hardware and the
|
||||
media you have installed. But, they will all have the same general
|
||||
format as the example above.
|
||||
|
||||
Once your your system has working disk devices, they will be accessible
|
||||
Once your system has working disk devices, they will be accessible
|
||||
from any operating system you choose to run. Disk storage is available
|
||||
whether you boot your OS from ROM or from the disk media itself.
|
||||
|
||||
Refering back to the Boot Loader section on "Launching from ROM", you
|
||||
Referring back to the Boot Loader section on "Launching from ROM", you
|
||||
could start CP/M 2.2 using the 'C' command. As the operating system
|
||||
starts up, you should see a list of drive letters assigned to the disk
|
||||
media you have installed. Here is an example of this:
|
||||
@@ -1071,7 +1123,7 @@ PROGRESS: TRACK=4F HEAD=01 SECTOR=01
|
||||
```
|
||||
|
||||
Since the physical format of floppy media is the same as that used
|
||||
in a standard MS-DOS/Windows computer, you can also physicall format
|
||||
in a standard MS-DOS/Windows computer, you can also physical format
|
||||
floppy media in a modern computer. However, the directory format
|
||||
itself will not be compatible with CP/M OSes. In this case, you
|
||||
can use the `CLRDIR` application supplied with RomWBW to reformat
|
||||
@@ -1091,7 +1143,7 @@ after inserting a new floppy disk.
|
||||
|
||||
Under RomWBW, a hard disk is similar to a floppy disk in that it is
|
||||
considered a disk unit. However, RomWBW has multiple features that
|
||||
allow it's legacy operating systems to take advantage of modern
|
||||
allow its legacy operating systems to take advantage of modern
|
||||
mass storage media.
|
||||
|
||||
To start with, the concept of a hard disk in RomWBW applies to any
|
||||
@@ -1340,7 +1392,7 @@ B>stat e:dsk:
|
||||
```
|
||||
|
||||
It is critical that you include "dsk:" after the drive letter in the
|
||||
`STAT` command line. The important line to look at is labeled "32 Byte
|
||||
`STAT` command line. The important line to look at is labelled "32 Byte
|
||||
Directory Entries". In this case, the value is 1024 which implies that
|
||||
this drive is located on a modern (hd1k) disk layout. If the value
|
||||
was 512, it would indicate a legacy (hd512) disk layout.
|
||||
@@ -1366,7 +1418,7 @@ Essentially, this means you are creating a set of blank directories on
|
||||
your disk so that files can be saved there. This process is described
|
||||
below under Disk Initialization. In this scenario, you will need to
|
||||
subsequently copy any files you want to use onto the newly initialized
|
||||
disk (see Transferring Files).
|
||||
disk (see [Transferring Files]).
|
||||
|
||||
You will notice that in the following instructions there is no mention
|
||||
of specific hardware. Because the RomWBW firmware provides a
|
||||
@@ -1402,6 +1454,7 @@ The following table shows the disk images available.
|
||||
| xxx_cpm3.img | DRI CP/M 3 Operating System | Yes |
|
||||
| xxx_zpm3.img | ZPM3 Operating System | Yes |
|
||||
| xxx_qpm.img | QPM Operating System | Yes |
|
||||
| xxx_dos65.img | DOS/65 Operating System | Yes |
|
||||
| xxx_ws4.img | WordStar v4 & ZDE Applications | No |
|
||||
|
||||
You will find 3 sets of these .img files in the distribution. The
|
||||
@@ -1411,8 +1464,8 @@ layout hard disk image.
|
||||
|
||||
There is also an image file called "psys.img" which contains a bootable
|
||||
p-System hard disk image. It contains 6 p-System filesystem slices, but
|
||||
these are not interoperable with the CP/M slices described above. This
|
||||
file is discussed separately under p-System in the Operating Systems
|
||||
these are not interoperable with the CP/M slices described above. This
|
||||
file is discussed separately under p-System in the [Operating Systems]
|
||||
section.
|
||||
|
||||
### Floppy Disk Images
|
||||
@@ -1462,7 +1515,7 @@ hard disk image with the specific slice contents you choose.
|
||||
#### Combo Hard Disk Image
|
||||
|
||||
The combo disk image is essentially just a single image that has several
|
||||
of the individual filesystem images already concatenated together. The
|
||||
of the individual filesystem images already concatenated together. The
|
||||
combo disk image contains the following 6 slices in the positions
|
||||
indicated:
|
||||
|
||||
@@ -1516,6 +1569,9 @@ In all of the examples above, the resulting file (hd.img) would now be
|
||||
written to your hard disk media and would be ready to use in a RomWBW
|
||||
system.
|
||||
|
||||
If you wish to further customize or create new disk image definitions,
|
||||
please refer to the ReadMe.txt file in the Source/Images directory.
|
||||
|
||||
#### Writing Hard Disk Images
|
||||
|
||||
Once you have chosen a combo hard disk image file or prepared your own
|
||||
@@ -1539,7 +1595,7 @@ image that you write to your hard disk media. You can use additional
|
||||
slices as long your media has room for them. However, writing the disk
|
||||
image will not initialize the additional slices. If these additional
|
||||
slices were previously initialized, they will not be corrupted when you
|
||||
write the new image and will still contain their prvious contents. If
|
||||
write the new image and will still contain their previous contents. If
|
||||
the additional slices were not previously initialized, you can use
|
||||
`CLRDIR` to do so and optionally `SYSCOPY` if you want them to be
|
||||
bootable.
|
||||
@@ -1770,7 +1826,7 @@ less likely to encounter compatibility issues.
|
||||
|
||||
#### Boot Disk
|
||||
|
||||
To make make a bootable CP/M disk, use the RomWBW `SYSCOPY` tool
|
||||
To make a bootable CP/M disk, use the RomWBW `SYSCOPY` tool
|
||||
to place a copy of the operating system on the boot track of
|
||||
the disk. The RomWBW ROM disk has a copy of the boot track
|
||||
call "CPM.SYS". For example:
|
||||
@@ -1786,7 +1842,7 @@ call "CPM.SYS". For example:
|
||||
|
||||
* `SUBMIT.COM` has been patched per DRI to always place submit
|
||||
files on A:. This ensures the submitted file will always be
|
||||
properlly executed.
|
||||
properly executed.
|
||||
|
||||
* The original versions of DDT, DDTZ, and ZSID used the RST 38
|
||||
vector which conflicts with interrupt mode 1 use of this vector.
|
||||
@@ -1818,7 +1874,7 @@ via the NZ-COM adaptation (see below).
|
||||
|
||||
#### Boot Disk
|
||||
|
||||
To make make a bootable Z-System disk, use the RomWBW `SYSCOPY` tool
|
||||
To make a bootable Z-System disk, use the RomWBW `SYSCOPY` tool
|
||||
to place a copy of the operating system on the boot track of
|
||||
the disk. The RomWBW ROM disk has a copy of the boot track
|
||||
call "ZSYS.SYS". For example:
|
||||
@@ -1896,7 +1952,7 @@ configured in the most basic way possible. You should refer to the
|
||||
documentation and use `MKZCM` as desired to customize your system.
|
||||
|
||||
NZCOM has substantially more functionality than CP/M or basic
|
||||
Z-System. It is important to read the the "NZCOM Users
|
||||
Z-System. It is important to read the "NZCOM Users
|
||||
Manual.pdf" document in order to use this operating system effectively.
|
||||
|
||||
#### Documentation
|
||||
@@ -1933,29 +1989,48 @@ has a new suite of support tools and help system.
|
||||
|
||||
#### Boot Disk
|
||||
|
||||
To make a CP/M 3 boot disk, you actually place CPMLDR.SYS
|
||||
on the system tracks of the disk. You do not place CPM3.SYS on the
|
||||
system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS` which must
|
||||
exist as a file on the disk.
|
||||
|
||||
CP/M 3 uses a multi-step boot process involving multiple files.
|
||||
To create (or update) a CP/M 3 boot drive, you must place `CPMLDR.SYS` on
|
||||
the system track of the disk. You must also place `CPM3.SYS` and
|
||||
`CCP.COM` on the target drive as regular files. Do **not** place
|
||||
CPM3.SYS on the boot track. `CPMLDR.SYS` chain loads `CPM3.SYS` which
|
||||
must exist as a regular file on the disk. Subsequently, `CPM3.SYS`
|
||||
loads `CCP.COM`.
|
||||
|
||||
The CP/M 3 boot files are not included on the ROM disk due to
|
||||
space constraints. You will need to transfer the files to your
|
||||
system from the RomWBW distribution directory Binary\\CPM3.
|
||||
space constraints. You will need to transfer the following files to
|
||||
your system from the RomWBW distribution directory Binary/CPM3. You
|
||||
can use XModem for this (or any of the mechanisms in [Transferring
|
||||
Files].
|
||||
|
||||
After this is done, you will need to use `SYSCOPY` to place
|
||||
the CP/M 3 loader image on the boot tracks of all CP/M 3
|
||||
boot disks/slices. The loader image is called `CPMLDR.SYS`.
|
||||
You must then copy (at a minimum) `CPM3.SYS` and `CCP.COM`
|
||||
onto the disk/slice. Assuming you copied the CP/M 3 boot files
|
||||
onto your RAM disk at A:, you would use:
|
||||
- `CPMLDR.SYS`
|
||||
- `CPM3.SYS` or `CPM3BNK.SYS`
|
||||
- `CCP.COM`
|
||||
|
||||
The `CPM3.SYS` boot file is provided in 2 versions. In the Binary/CPM3
|
||||
distribution directory, `CPM3.SYS` is the "non-banked" version of
|
||||
CP/M 3. The `CPM3BNK.SYS` file is the "banked" version of CP/M 3. You
|
||||
almost certainly want to transfer the banked `CPM3BNK.SYS` version.
|
||||
|
||||
After transferring the boot files to your RomWBW system, you will
|
||||
need to use `SYSCOPY` to place `CPMLDR.SYS` on the boot track of the
|
||||
target drive. `CPM3.SYS` and `CCP.COM` can be copied to the target
|
||||
drive using any standard file copy tool such as `PIP` or `COPY`.
|
||||
|
||||
You do not need to be booted into CP/M 3 to create or update a CP/M 3
|
||||
disk. The recommended approach is to boot CP/M 2.2 or Z-System from
|
||||
ROM. Transfer the boot files to the RAM disk. Then simply copy the
|
||||
files onto the CP/M 3 disk. Assuming the target CP/M 3 disk is F:, you
|
||||
can use the following commands to place the files on the target drive:
|
||||
|
||||
```
|
||||
SYSCOPY C:=CPMLDR.SYS
|
||||
PIP C:=CPM3.SYS
|
||||
PIP C:=CCP.COM
|
||||
SYSCOPY F:=A:CPMLDR.SYS
|
||||
COPY A:CPM3BNK.SYS F:CPM3.SYS
|
||||
COPY A:CCP.COM F:
|
||||
```
|
||||
|
||||
Note in the example above that `CPM3BNK.SYS` is renamed to `CPM3.SYS`
|
||||
in the copy command.
|
||||
|
||||
#### Notes
|
||||
|
||||
- The `COPYSYS` command described in the DRI CP/M 3 documentation is
|
||||
@@ -1968,16 +2043,29 @@ PIP C:=CCP.COM
|
||||
program of CP/M 3 is completely different/incompatible from the
|
||||
`SUBMIT` program of CP/M 2.2.
|
||||
|
||||
* RomWBW fully suppoerts CP/M 3 file date/time stamping, but this
|
||||
- RomWBW fully supports CP/M 3 file date/time stamping, but this
|
||||
requires that the disk be properly initialized for it. This process
|
||||
has not been performed on the CP/M 3 disk image. Follow the
|
||||
CP/M 3 documentation to complete this process.
|
||||
CP/M 3 documentation to complete this process, if desired.
|
||||
|
||||
## Simeon Cran's ZPM3
|
||||
## ZPM3
|
||||
|
||||
ZPM3 is an interesting combination of the features of both CP/M 3 and
|
||||
ZCPR 3. Essentially, it has the features of and compatibility with
|
||||
both.
|
||||
Simeon Cran's ZPM3 is an interesting combination of the features of both
|
||||
CP/M 3 and ZCPR3. Essentially, it has the features of and
|
||||
compatibility with both.
|
||||
|
||||
Due to this dual compatibility, the ZPM3 distribution image contains
|
||||
most of the standard CP/M 3 files as well as a variety of common ZCPR3
|
||||
applications. However, you will notice that user area 0 of the disk has
|
||||
only a few files. Most of the files are distributed among other user
|
||||
areas which is standard practice for ZCPR3. Most importantly, you will
|
||||
see most of the applications in user area 15. The applications can be
|
||||
executed from any user area because ZPM3 has a default search path that
|
||||
includes User 15.
|
||||
|
||||
The ZPM3 distribution comes with essentially no utility programs at
|
||||
all. In addition to the standard CP/M 3 utilities, RomWBW includes
|
||||
a variety of common ZCPR3 utilities.
|
||||
|
||||
#### Documentation
|
||||
|
||||
@@ -1986,31 +2074,55 @@ CP/M 3 and ZCPR 3.
|
||||
|
||||
#### Boot Disk
|
||||
|
||||
ZPM3 uses a multi-step boot process involving multiple files. The ZPM3
|
||||
boot files are not included on the ROM disk due to space constraints.
|
||||
You will need to transfer the files to your system from the RomWBW
|
||||
distribution directory Binary\\ZPM3.
|
||||
To create (or update) a ZPM3 boot drive, you must place `ZPMLDR.SYS` on
|
||||
the system track of the disk. You must also place `CPM3.SYS`,
|
||||
`ZCCP.COM`, `ZINSTAL.ZPM`, and `STARTZPM.COM` on the target drive as
|
||||
regular files. Do **not** place CPM3.SYS on the boot track.
|
||||
`ZPMLDR.SYS` chain loads `CPM3.SYS` which must exist as a regular file
|
||||
on the disk. Subsequently, `CPM3.SYS` loads `CCP.COM`.
|
||||
|
||||
After this is done, you will need to use `SYSCOPY` to place the ZPM3
|
||||
loader image on the boot tracks of the disk. The loader image is called
|
||||
`ZPMLDR.SYS`. You must then copy (at a minimum) `CPM3.SYS`, `ZCCP.COM`,
|
||||
`ZINSTAL.ZPM`, and `STARTZPM.COM` onto the disk/slice. Assuming you
|
||||
copied the ZPM3 boot files onto your RAM disk at A:, you would use:
|
||||
The CP/M 3 boot files are not included on the ROM disk due to space
|
||||
constraints. You will need to transfer the following files to your
|
||||
system from the RomWBW distribution directory Binary/ZPM3. You can use
|
||||
XModem for this (or any of the mechanisms in [Transferring Files].
|
||||
|
||||
- `ZPMLDR.SYS`
|
||||
- `CPM3.SYS`
|
||||
- `ZCCP.COM`
|
||||
- `ZINSTAL.ZPM`
|
||||
- `STARTZPM.COM`
|
||||
|
||||
You may be surprised to see the file called `CPM3.SYS`. This is not a
|
||||
typo. Although it is called `CPM3.SYS`, it is ZPM and not the same as
|
||||
`CPM3.SYS` in the CPM3 directory. Also, unlike CP/M 3, ZPM3 is always
|
||||
banked, so you will not find two versions of the file. `CPM3.SYS` is a
|
||||
banked implementation of ZPM3.
|
||||
|
||||
After transferring the boot files to your RomWBW system, you will
|
||||
need to use `SYSCOPY` to place `ZPMLDR.SYS` on the boot track of the
|
||||
target drive. The remaining boot files can be copied to the target
|
||||
drive using any standard file copy tool such as `PIP` or `COPY`.
|
||||
|
||||
You do not need to be booted into ZPM3 to create or update a ZPM3
|
||||
disk. The recommended approach is to boot CP/M 2.2 or Z-System from
|
||||
ROM. Transfer the boot files to the RAM disk. Then simply copy the
|
||||
files onto the ZPM disk. Assuming the target ZPM3 disk is F:, you
|
||||
can use the following commands to place the files on the target drive:
|
||||
|
||||
```
|
||||
A>B:SYSCOPY C:=ZPMLDR.SYS
|
||||
A>B:COPY CPM3.SYS C:
|
||||
A>B:COPY ZCCP.COM C:
|
||||
A>B:COPY ZINSTAL.ZPM C:
|
||||
A>B:COPY STARTZPM.COM C:
|
||||
SYSCOPY F:=A:ZPMLDR.SYS
|
||||
COPY A:CPM3.SYS F:CPM3.SYS
|
||||
COPY A:CCP.COM F:
|
||||
COPY A:ZINSTAL.ZPM F:
|
||||
COPY A:STARTZPM.COM F:
|
||||
```
|
||||
|
||||
#### Notes
|
||||
|
||||
* The ZPM operating system is contained in the file called CPM3.SYS
|
||||
- The ZPM3 operating system is contained in the file called CPM3.SYS
|
||||
which is confusing, but this is as intended by the ZPM3 distribution.
|
||||
I believe it was done this way to make it easier for users to transition
|
||||
from CP/M 3 to ZPM3.
|
||||
I believe it was done this way to make it easier for users to
|
||||
transition from CP/M 3 to ZPM3.
|
||||
|
||||
## QP/M
|
||||
|
||||
@@ -2029,18 +2141,27 @@ regarding the RomWBW adaptation and customizations.
|
||||
#### Boot Disk
|
||||
|
||||
There is no RomWBW-specific boot disk creation procedure. QP/M
|
||||
comes with a QINSTALL tool for this purpose. You can use the
|
||||
tool if you want to perform a fresh installation.
|
||||
comes with a QINSTALL which is used to install QPM over an existing
|
||||
CP/M 2 installation or to update an existing QPM disk. `QINSTALL.COM`
|
||||
is included with the RomWBW distribution.
|
||||
|
||||
#### Notes
|
||||
|
||||
* QPM is not available as source. This implementation was based
|
||||
- QPM is not available as source. This implementation was based
|
||||
on the QPM binary distribution and has been minimally customized
|
||||
for RomWBW.
|
||||
|
||||
* QINSTALL is used to customize QPM. It is included on the
|
||||
|
||||
- QINSTALL is used to customize QPM. It is included on the
|
||||
disk image. You should review the notes in the ReadMe.txt
|
||||
file in Source/Image/d_qpm before making changes.
|
||||
file in Source/Images/d_qpm before making changes.
|
||||
|
||||
- In addition to the QPM disk image, all of the QPM distribution
|
||||
files can be found in the RomWBW distribution in the
|
||||
Source/Images/d_qpm/u0 directory.
|
||||
|
||||
- The QPM disk image is not included as one of the slices on the
|
||||
RomWBW combo disk image. If you want to include QPM, you can do
|
||||
so by following the directions in Source/Images/Readme.txt.
|
||||
|
||||
## UCSD p-System
|
||||
|
||||
@@ -2053,7 +2174,7 @@ some other distributions, this implements a native p-System
|
||||
Z80 Extended BIOS, it does not rely on a CP/M BIOS layer.
|
||||
|
||||
The p-System is provided on a hard disk image file called
|
||||
psys.img. This must be copied to it's own dedicated hard
|
||||
psys.img. This must be copied to its own dedicated hard
|
||||
disk media (CF Card, SD Card, etc.). It is booted by
|
||||
selecting slice 0 of the corresponding hard disk unit at
|
||||
the RomWBW Boot Loader prompt. Do not attempt to use
|
||||
@@ -2153,7 +2274,7 @@ therefore, globally available.
|
||||
| CPUSPD | Change the running CPU speed and wait states of the system. |
|
||||
|
||||
Some custom applications do not fit on the ROM disk. They are found on the
|
||||
disk image files or the individual files can be found in the Binary\\Apps
|
||||
disk image files or the individual files can be found in the Binary/Apps
|
||||
directory of the distribution.
|
||||
|
||||
| **Application** | **Description** |
|
||||
@@ -2207,7 +2328,7 @@ default FAT partition.
|
||||
You can confirm the existence of the FAT partition with `FDISK80` by
|
||||
using the 'P' command to show the current partition table. Here is an
|
||||
example of a partition table listing from `FDISK80` that includes the
|
||||
FAT partition (labeled "FAT16"):
|
||||
FAT partition (labelled "FAT16"):
|
||||
|
||||
```
|
||||
Capacity of disk 4: ( 4G) 7813120 Geom 77381010
|
||||
@@ -2221,7 +2342,7 @@ Nr ---Type- A -- Start End LBA start LBA count Size
|
||||
If your hard disk media does not have a FAT partition already defined,
|
||||
you will need to define one using FDISK80 by using the 'N' command.
|
||||
Ensure that the location and size of the FAT partition does not
|
||||
overlap any of the CP/M slice area and that it fits within the szie
|
||||
overlap any of the CP/M slice area and that it fits within the size
|
||||
of your media.
|
||||
|
||||
Once the partition is defined, you will still need to format it. Just
|
||||
@@ -2246,7 +2367,7 @@ If your RomWBW system has multiple disk drives/slots, you can also just
|
||||
create a disk with your modern computer that is a dedicated FAT
|
||||
filesystem disk. You can use your modern computer to format the disk
|
||||
(floppy, CF Card, SD Card, etc.), then insert the disk in your RomWBW
|
||||
computer and access if using `FAT` based on it's RomWBW unit number.
|
||||
computer and access if using `FAT` based on its RomWBW unit number.
|
||||
|
||||
## FAT Application Usage
|
||||
|
||||
@@ -2334,7 +2455,7 @@ Copying...
|
||||
SAMPLE.TXT ==> 4:/SAMPLE.TXT Overwrite? (Y/N) ... [OK]
|
||||
SAMPLE2.TXT ==> 4:/SAMPLE2.TXT ... [OK]
|
||||
|
||||
2 File(s) Copiedd
|
||||
2 File(s) Copied
|
||||
```
|
||||
|
||||
# CP/NET Networking
|
||||
@@ -2719,7 +2840,7 @@ usage documents.
|
||||
Note that the build scripts for RomWBW create the default disk images
|
||||
supplied with RomWBW. It is relatively easy to customize the contents
|
||||
of the disk images that are part of RomWBW. This is described in more
|
||||
detail in the Source\\Images directory of the distribution.
|
||||
detail in the Source/Images directory of the distribution.
|
||||
|
||||
## FAT Filesystem Transfers
|
||||
|
||||
@@ -2779,7 +2900,7 @@ boot. To customize this file, you use the ZCPR ALIAS facility. You
|
||||
will need to refer to ZCPR documentation for more information on the
|
||||
ALIAS facility.
|
||||
|
||||
p-System has it's own startup command processing mechanism that is
|
||||
p-System has its own startup command processing mechanism that is
|
||||
covered in the p-System documentation.
|
||||
|
||||
## ROM Customization
|
||||
@@ -2815,7 +2936,7 @@ built into the ROM.
|
||||
# UNA Hardware BIOS
|
||||
|
||||
John Coffman has produced a new generation of hardware BIOS called
|
||||
UNA. The standard RomWBW distribution includes it's own hardware
|
||||
UNA. The standard RomWBW distribution includes its own hardware
|
||||
BIOS. However, RomWBW can alternatively be constructed with UNA as
|
||||
the hardware BIOS portion of the ROM. If you wish to use the UNA
|
||||
variant of RomWBW, then just program your ROM with the ROM image
|
||||
@@ -2845,6 +2966,31 @@ Please refer to the
|
||||
[UNA BIOS Firmware Page](https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:una:start)
|
||||
for more information on UNA.
|
||||
|
||||
## UNA Usage Notes
|
||||
|
||||
- At startup, UNA will display a prompt similar to this:
|
||||
|
||||
`Boot UNA unit number or ROM? [R,X,0..3] (R):`
|
||||
|
||||
You generally want to choose 'R' which will then launch the RomWBW
|
||||
loader. Attempting to boot from a disk using a number at the UNA
|
||||
prompt will only work for the legacy (hd512) disk format. However,
|
||||
if you go to the RomWBW loader, you will be able to perform a disk
|
||||
boot on either disk format.
|
||||
|
||||
- The disk images created and distributed with RomWBW do not have the
|
||||
correct system track code for UNA. In order to boot to disk under
|
||||
UNA, you must first use SYSCOPY to update the system track of the
|
||||
target disk. The UNA ROM disk has the correct system track files
|
||||
for UNA: `CPM.SYS` and `ZSYS.SYS`. So, you can boot a ROM OS and
|
||||
then use one of these files to update the system track.
|
||||
|
||||
- Only Z-System and CP/M 2 are available OSes under UNA at this time.
|
||||
Since NZ-COM launches from CP/M 2, it is usable. p-System is not
|
||||
usable under UNA.
|
||||
|
||||
- Some of the RomWBW-specific applications are not UNA compatible.
|
||||
|
||||
# Upgrading
|
||||
|
||||
Upgrading to a newer release of RomWBW is essentially just a matter of
|
||||
@@ -2915,7 +3061,7 @@ occurred.
|
||||
|
||||
Similar to using the Flash utility, the system ROM can be updated
|
||||
or upgraded through the ROM based updater utility. This works by
|
||||
by reprogrammed the flash ROM as the file is being transfered.
|
||||
by reprogrammed the flash ROM as the file is being transferred.
|
||||
|
||||
This has the advantage that secondary storage is not required to
|
||||
hold the new image.
|
||||
@@ -2937,7 +3083,7 @@ firmware, you are likely to have odd problems.
|
||||
|
||||
The simplest way to update your disk media is to just use your modern
|
||||
computer to overwrite the entire media with the latest disk image of
|
||||
your choice. This process is described below in the Disk Images
|
||||
your choice. This process is described below in the [Disk Images]
|
||||
section. If you wish to update existing disk media in your system, you
|
||||
need to perform the following steps.
|
||||
|
||||
@@ -2953,7 +3099,7 @@ them over any older versions of the app on your disk:
|
||||
* ASSIGN.COM
|
||||
* SYSCOPY.COM
|
||||
* MODE.COM
|
||||
* FDU.COM (was FDTST.COM)
|
||||
* FDU.COM
|
||||
* FORMAT.COM
|
||||
* XM.COM
|
||||
* FLASH.COM
|
||||
@@ -2961,14 +3107,13 @@ them over any older versions of the app on your disk:
|
||||
* TALK.COM
|
||||
* RTC.COM
|
||||
* TIMER.COM
|
||||
* INTTEST.COM
|
||||
|
||||
For example: `B>COPY ASSIGN.COM C:`
|
||||
|
||||
Some RomWBW custom applications are too large to fit on the ROM disk.
|
||||
If you are using any of these you will need to transfer them to your
|
||||
system and then update all copies. These applications are found in
|
||||
the Binary\\Apps directory of the distribution and in all of the disk
|
||||
the Binary/Apps directory of the distribution and in all of the disk
|
||||
images.
|
||||
|
||||
* FAT.COM
|
||||
@@ -2976,30 +3121,34 @@ images.
|
||||
|
||||
## System Update
|
||||
|
||||
If the system running ROMWBW utilizes the SST39SF040 Flash chip then it
|
||||
is possible to do a System Update in place of a System Upgrade in some
|
||||
cases.
|
||||
As previously described, a RomWBW ROM contains ROM applications as well
|
||||
as a ROM disk image. If you are upgrading your ROM with a new patch
|
||||
level release, you may wish to upgrade just the application portion of
|
||||
the ROM. This is referred to as a System Update.
|
||||
|
||||
A System Update would involve only updating the BIOS, ROM applications
|
||||
and CP/M system.
|
||||
If the system running ROMWBW utilizes the SST39SF040 Flash chip then it
|
||||
is possible to do a System Update in place of a System Upgrade in some
|
||||
cases. A System Update would involve only updating the BIOS, ROM
|
||||
applications and ROM-hosted operating systems.
|
||||
|
||||
A System Update may be more favorable than a System Upgrade in cases
|
||||
such as:
|
||||
|
||||
- Overwriting of the ROM drive is not desired.
|
||||
- Space is unavailable to hold a full ROMWBW ROM.
|
||||
- To mimimize time taken to transfer and flash a full ROM.
|
||||
- Configuration changes are only minor and do not impact disk applications.
|
||||
- Overwriting of the ROM drive contents is not desired.
|
||||
- Temporary disk space is unavailable to hold a full ROM image.
|
||||
- To reduce the time taken to transfer and flash a full ROM.
|
||||
- Configuration changes are only minor and do not impact disk
|
||||
applications.
|
||||
|
||||
The ROMWBW build process generates a system upgrade file along with
|
||||
The RomWBW build process generates a system update file along with
|
||||
the normal ROM image and can be identified by the extension ".upd". It
|
||||
will be 128Kb in size. In comparison the normal ROM image will have
|
||||
the extension ".rom" and be 512Kb or 1024Kb in size.
|
||||
|
||||
Transferring and flashing the System Update is accomplished in the
|
||||
same manner as described above in *Upgrading* with the required
|
||||
difference being that the flash application needs to be directed to
|
||||
complete a partial flash using the /P command line switch.
|
||||
Transferring and flashing the System Update is accomplished in the same
|
||||
manner as described above in [Upgrading via Flash Utility] with the
|
||||
required difference being that the flash application needs to be
|
||||
directed to complete a partial flash using the /P command line switch.
|
||||
|
||||
`E>FLASH WRITE ROM.UPD /P`
|
||||
|
||||
@@ -3013,7 +3162,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
|
||||
@@ -3025,23 +3174,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.
|
||||
@@ -3082,15 +3238,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
|
||||
@@ -3248,7 +3404,7 @@ the RomWBW HBIOS configuration.
|
||||
| Interrupts | Mode 2 |
|
||||
|
||||
- CPU speed is detected at startup if DS1302 RTC is active
|
||||
- Otherwise 20.000 MHz assumed
|
||||
- Otherwise 8.000 MHz assumed
|
||||
- System timer is generated by onboard CTC
|
||||
- Hardware auto-detected:
|
||||
- Onboard DS1302 RTC
|
||||
@@ -3703,6 +3859,21 @@ the RomWBW HBIOS configuration.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
### Z80-Retro SBC
|
||||
|
||||
| | |
|
||||
|-------------------|------------------|
|
||||
| ROM Image File | Z80RETRO_std.rom |
|
||||
| Console Baud Rate | 38400 |
|
||||
| Interrupts | Mode 2 |
|
||||
|
||||
- CPU speed is assumed to be 14.7456 MHz
|
||||
- Hardware auto-detected:
|
||||
- SIO Serial Interface Module
|
||||
- Onboard CTC
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Appendix B - Device Summary
|
||||
|
||||
The table below briefly describes each of the possible devices that
|
||||
@@ -3752,5 +3923,6 @@ may be discovered by RomWBW in your system.
|
||||
| USB-FIFO | Char | FT232H-based ECB USB FIFO |
|
||||
| VDU | Video | MC6845 Family Video Display Controller |
|
||||
| VGA | Video | HD6445CP4-based Video Display Controller |
|
||||
| VRC | Video | VGARC Video Display Controller s |
|
||||
| YM | Audio | YM2612 Programmable Sound Generator |
|
||||
| Z2U | Char | Zilog Z280 CPU Built-in Serial Ports |
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -223,5 +223,6 @@ call Build SCZ180 sc503 || 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
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -27,7 +27,7 @@ $ErrorAction = 'Stop'
|
||||
# UNA BIOS is simply imbedded, it is not built here.
|
||||
#
|
||||
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "UNA"
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "UNA"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH"
|
||||
$PlatformListZ280 = "RCZ280"
|
||||
|
||||
|
||||
@@ -38,6 +38,7 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc140"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="sc503"; 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
|
||||
exit
|
||||
|
||||
@@ -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
|
||||
;
|
||||
;
|
||||
|
||||
@@ -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,9 +49,9 @@ 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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -32,6 +32,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]
|
||||
;
|
||||
RAMLOC .SET 23 ; START OF RAM AS POWER OF 2 (2^N) IN PHYSICAL ADDRESS SPACE
|
||||
@@ -51,7 +54,8 @@ 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]
|
||||
|
||||
@@ -32,6 +32,9 @@ 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!!!)
|
||||
@@ -59,7 +62,8 @@ 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]
|
||||
|
||||
@@ -33,11 +33,12 @@ 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)
|
||||
;
|
||||
@@ -60,6 +61,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
|
||||
|
||||
@@ -30,6 +30,9 @@ CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 2 ; 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
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
KIOENABLE .SET TRUE ; ENABLE ZILOG KIO SUPPORT
|
||||
@@ -55,6 +58,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
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
CPUOSC .SET 7372800 ; 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
|
||||
;
|
||||
SKZENABLE .SET TRUE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
SKZDIV .SET DIV_12 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
|
||||
WDOGMODE .SET WDOG_SKZ ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
@@ -50,6 +53,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
|
||||
|
||||
@@ -29,6 +29,9 @@
|
||||
CPUOSC .SET 7372800 ; 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
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
@@ -41,6 +44,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
|
||||
@@ -53,6 +57,7 @@ FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3
|
||||
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
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
@@ -33,11 +33,13 @@ CPUOSC .SET 16000000 ; 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
|
||||
;
|
||||
EIPCENABLE .SET TRUE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
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
|
||||
LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .SET $6E ; STATUS LED PORT ADDRESS
|
||||
;
|
||||
@@ -65,6 +67,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
|
||||
|
||||
@@ -30,6 +30,9 @@
|
||||
CPUOSC .SET 14745600 ; 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
|
||||
;
|
||||
RAMSIZE .SET 1536 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
@@ -42,7 +45,8 @@ 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)
|
||||
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]
|
||||
|
||||
@@ -31,6 +31,9 @@
|
||||
CPUOSC .SET 7372800 ; 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
|
||||
;
|
||||
RAMSIZE .SET 2048 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .SET 0 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
MEMMGR .SET MM_ZRC ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
@@ -46,6 +49,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 TRUE ; 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
|
||||
|
||||
@@ -35,7 +35,8 @@ USELZSA2 .SET TRUE ; ENABLE FONT COMPRESSION
|
||||
;
|
||||
KIOENABLE .SET TRUE ; ENABLE ZILOG KIO SUPPORT
|
||||
;
|
||||
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
DSKYENABLE .SET TRUE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
;
|
||||
|
||||
@@ -30,6 +30,9 @@ INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
;
|
||||
HTIMENABLE .SET TRUE ; ENABLE SIMH TIMER SUPPORT
|
||||
;
|
||||
SIMRTCENABLE .SET TRUE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
;
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTSBCFORCE .SET TRUE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)
|
||||
;
|
||||
|
||||
@@ -35,8 +35,9 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
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)
|
||||
;
|
||||
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPLED_IO .SET $0D ; FP: PORT ADDRESS FOR FP LEDS
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
@@ -50,6 +51,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 TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -35,8 +35,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
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)
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
@@ -50,6 +52,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 TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
|
||||
@@ -34,8 +34,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
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)
|
||||
;
|
||||
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
DIAGENABLE .SET FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
;
|
||||
DSRTCENABLE .SET FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
|
||||
@@ -34,9 +34,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
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)
|
||||
;
|
||||
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
@@ -59,3 +60,5 @@ SDENABLE .SET TRUE ; 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)
|
||||
;
|
||||
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS
|
||||
|
||||
@@ -34,9 +34,10 @@ Z180_CLKDIV .SET 1 ; Z180: CHK DIV: 0=OSC/2, 1=OSC, 2=OSC*2
|
||||
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)
|
||||
;
|
||||
FPLED_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPSW_ENABLE .SET TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
|
||||
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
@@ -59,3 +60,5 @@ SDENABLE .SET TRUE ; 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)
|
||||
;
|
||||
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS
|
||||
|
||||
35
Source/HBIOS/Config/Z80RETRO_std.asm
Normal file
35
Source/HBIOS/Config/Z80RETRO_std.asm
Normal file
@@ -0,0 +1,35 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ZETA2 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_z80retro.asm"
|
||||
;
|
||||
CPUOSC .SET 14745600 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
;
|
||||
SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
@@ -26,7 +26,7 @@
|
||||
;
|
||||
#include "cfg_zeta2.asm"
|
||||
;
|
||||
CPUOSC .SET 20000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
|
||||
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
@@ -35,7 +35,7 @@ UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTSBC .SET TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
FDMODE .SET FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
|
||||
@@ -634,9 +634,9 @@ ANSI_BEL:
|
||||
ANSI_BS:
|
||||
LD A,(ANSI_COL) ; GET CURRENT COLUMN
|
||||
DEC A ; BACK IT UP BY ONE
|
||||
RET C ; IF CARRY, MARGIN EXCEEDED, ABORT
|
||||
RET M ; IF CARRY, MARGIN EXCEEDED, ABORT
|
||||
LD (ANSI_COL),A ; SAVE NEW COLUMN
|
||||
JP ANSI_XY ; UDPATE CUSROR AND RETURN
|
||||
JP ANSI_XY ; UDPATE CURSOR AND RETURN
|
||||
;
|
||||
ANSI_CR:
|
||||
XOR A ; ZERO ACCUM
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
; ASEXT:
|
||||
; 7 6 5 4 3 2 1 0
|
||||
; R D C X B F D S
|
||||
; 0 1 1 0 0 1 1 0 DEFAULT VALUES
|
||||
; 0 1 1 0 0 0 0 0 DEFAULT VALUES
|
||||
; | | | | | | | |
|
||||
; | | | | | | | +-- SEND BREAK
|
||||
; | | | | | | +---- BREAK DETECT (RO)
|
||||
@@ -64,6 +64,10 @@
|
||||
; | +-------------- DCD0 DISABLE
|
||||
; +---------------- RDRF INT INHIBIT
|
||||
;
|
||||
ASCI_DEF_CNTLA .EQU $64
|
||||
ASCI_DEF_CNTLB .EQU $20
|
||||
ASCI_DEF_ASEXT .EQU $60
|
||||
;
|
||||
ASCI_BUFSZ .EQU 32 ; RECEIVE RING BUFFER SIZE
|
||||
;
|
||||
ASCI_NONE .EQU 0 ; NOT PRESENT
|
||||
@@ -513,17 +517,29 @@ ASCI_INITDEV3:
|
||||
SET 4,C ; SET CNTLB BIT 4 FOR ODD PARITY
|
||||
;
|
||||
ASCI_INITDEV4:
|
||||
; SETUP ASEXT
|
||||
LD A,D ; CONFIG HIGH BYTE
|
||||
AND %00100000 ; BIT 5 IS RTS
|
||||
CPL ; INVERT FOR ASEXT
|
||||
LD L,A ; MOVE TO L
|
||||
LD A,ASCI_DEF_ASEXT ; GET ASEXT DEFAULT
|
||||
AND L ; COMBINE
|
||||
LD L,A ; AND LEAVE IN L
|
||||
;
|
||||
; SAVE CONFIG PERMANENTLY NOW
|
||||
LD (IY+4),E ; SAVE LOW WORD
|
||||
LD (IY+5),D ; SAVE HI WORD
|
||||
JR ASCI_INITGO
|
||||
;
|
||||
ASCI_INITSAFE:
|
||||
LD B,$64 ; CNTLA FAILSAFE VALUE
|
||||
LD C,$20 ; CNTLB FAILSAFE VALUE
|
||||
LD B,ASCI_DEF_CNTLA ; CNTLA FAILSAFE VALUE
|
||||
LD C,ASCI_DEF_CNTLB ; CNTLB FAILSAFE VALUE
|
||||
LD L,ASCI_DEF_ASEXT ; ASEXT FAILSAFE VALUE
|
||||
;
|
||||
ASCI_INITGO:
|
||||
; IMPLEMENT CONFIGURATION
|
||||
; B = CNTLA, C=CNTLB, L=ASEXT
|
||||
PUSH HL ; SAVE ASEXT
|
||||
LD H,B ; H := CNTLA VAL
|
||||
LD L,C ; L := CNTLB VAL
|
||||
LD B,0 ; MSB OF PORT MUST BE ZERO!
|
||||
@@ -532,6 +548,7 @@ ASCI_INITGO:
|
||||
INC C ; BUMP TO
|
||||
INC C ; ... CNTLB REG, B IS STILL 0
|
||||
OUT (C),L ; WRITE CNTLB VALUE
|
||||
POP HL ; RECOVER ASEXT
|
||||
INC C ; BUMP TO
|
||||
INC C ; ... STAT REG, B IS STILL 0
|
||||
#IF ((ASCIINTS) & (INTMODE > 0))
|
||||
@@ -543,8 +560,11 @@ ASCI_INITGO:
|
||||
LD A,$0E ; BUMP TO
|
||||
ADD A,C ; ... ASEXT REG
|
||||
LD C,A ; PUT IN C FOR I/O, B IS STILL 0
|
||||
LD A,$66 ; STATIC VALUE FOR ASEXT
|
||||
OUT (C),A ; WRITE ASEXT REG
|
||||
BIT 0,C ; IS C ADDRESSING AN ODD NUMBERED PORT?
|
||||
JR NZ,ASCI_INITGOZ ; IF SO, THIS IS SEC SERIAL, NO CTS!
|
||||
OUT (C),L ; WRITE ASEXT REG
|
||||
;
|
||||
ASCI_INITGOZ:
|
||||
;
|
||||
#IF ((ASCIINTS) & (INTMODE > 0))
|
||||
;
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_DYNO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -66,9 +66,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -146,7 +149,7 @@ SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -154,7 +157,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU SER_115200_8N1 ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -172,6 +175,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -183,9 +187,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_DYNO ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -225,7 +229,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -95,9 +95,12 @@ SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
WDOGIO .EQU $6F ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -194,7 +197,7 @@ SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -202,7 +205,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -226,6 +229,7 @@ TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|M
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -237,9 +241,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_NONE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -280,7 +284,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_NONE ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_MBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -60,9 +60,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU TRUE ; ENABLES STATUS LED
|
||||
@@ -132,7 +135,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -154,6 +157,7 @@ TMSMODE .EQU TMSMODE_MBC ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -166,9 +170,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_MBC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -209,7 +213,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_MK4 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -66,9 +66,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -143,7 +146,7 @@ SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -165,6 +168,7 @@ TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -176,9 +180,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_DIDE ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -219,7 +223,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_MK4 ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_N8 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -68,9 +68,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
@@ -145,7 +148,7 @@ SIOENABLE .EQU FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -167,6 +170,7 @@ TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSX
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -178,9 +182,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -221,7 +225,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT]
|
||||
SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU N8_PPI0 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_RCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -66,9 +66,18 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPENABLE .EQU FALSE ; ENABLES FRONT PANEL SWITCHES
|
||||
FPBASE .EQU $00 ; FRONT PANEL I/O PORT BASE ADDRESS
|
||||
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -146,7 +155,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -154,7 +163,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU SER_115200_8N1 ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -172,6 +181,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -183,9 +193,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -225,7 +235,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_RCZ280 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z280 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
USELZSA2 .EQU FALSE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
@@ -66,9 +66,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -156,7 +159,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -164,7 +167,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -182,6 +185,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -193,9 +197,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -235,7 +239,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_RCZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -65,9 +65,12 @@ SKZDIV .EQU DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
WDOGIO .EQU $6E ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -84,8 +87,8 @@ VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKTRACE .EQU 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
KBDTRACE .EQU 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
PPKKBLOUT .EQU KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
MKYKBLOUT .EQU KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
;
|
||||
@@ -150,7 +153,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -158,7 +161,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -176,6 +179,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -187,9 +191,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -229,7 +233,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_MT ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_RPH ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU TRUE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -66,9 +66,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
@@ -156,6 +159,7 @@ TMSMODE .EQU TMSMODE_N8 ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSX
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -167,9 +171,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_N8 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -210,7 +214,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_CSIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU RPH_PPI0 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_SBC ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -60,9 +60,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
@@ -132,7 +135,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_ZP ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $B0 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU (4915200/8) ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -154,6 +157,7 @@ TMSMODE .EQU TMSMODE_SCG ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MS
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VGASIZ .EQU V80X25 ; VGA: DISPLAY FORMAT [V80X25|V80X30|V80X43]
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -161,14 +165,13 @@ MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
|
||||
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
;
|
||||
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_DIO3 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
RFCNT .EQU 1 ; RF: NUMBER OF RAM FLOPPY UNITS (1-4)
|
||||
@@ -209,7 +212,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_JUHA ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_SCZ180 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z180 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -66,9 +66,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $0D ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU TRUE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $0D ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
@@ -146,7 +149,7 @@ SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO0MODE .EQU SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU 7372800 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU SER_115200_8N1 ; SIO 0A: SERIAL LINE CONFIG
|
||||
@@ -154,7 +157,7 @@ SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU 7372800 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU SER_115200_8N1 ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP]
|
||||
SIO1MODE .EQU SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU 7372800 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU SER_115200_8N1 ; SIO 1A: SERIAL LINE CONFIG
|
||||
@@ -172,6 +175,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -183,9 +187,9 @@ FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -225,7 +229,7 @@ PPIDE2A8BIT .EQU FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_SC ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,10 +15,14 @@
|
||||
;
|
||||
#INCLUDE "../UBIOS/ubios.inc"
|
||||
;
|
||||
;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
;PLATFORM .EQU PLT_UNA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_UNA ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
;
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
@@ -32,5 +36,3 @@ ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY (DO NOT COMBINE WITH PPIDE)
|
||||
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
|
||||
225
Source/HBIOS/cfg_z80retro.asm
Normal file
225
Source/HBIOS/cfg_z80retro.asm
Normal file
@@ -0,0 +1,225 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW 2.X CONFIGURATION DEFAULTS FOR SIMPLE Z80 RETRO
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE CONTAINS THE FULL SET OF DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD, YOU SHOULD
|
||||
; OVERRIDE ANY SETTINGS YOU WANT USING A CONFIGURATION FILE IN THE CONFIG DIRECTORY
|
||||
; UNDER THIS DIRECTORY.
|
||||
;
|
||||
; THIS FILE CAN BE CONSIDERED A REFERENCE THAT LISTS ALL POSSIBLE CONFIGURATION SETTINGS
|
||||
; FOR THE PLATFORM.
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "Z80Retro", " [", CONFIG, "]"
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_Z80RETRO ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .EQU FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .EQU TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .EQU 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .EQU -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
CPUOSC .EQU 14745600 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
RAMSIZE .EQU 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .EQU 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE_CHK .EQU 0 ; ROMSIZE VALUE VERIFICATION (0=DISABLED)
|
||||
MEMMGR .EQU MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH]
|
||||
MPGSEL_0 .EQU $60 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .EQU $61 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_2 .EQU $62 ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_3 .EQU $63 ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGENA .EQU $64 ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
|
||||
;
|
||||
RTCIO .EQU $70 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
KIOENABLE .EQU FALSE ; ENABLE ZILOG KIO SUPPORT
|
||||
KIOBASE .EQU $80 ; KIO BASE I/O ADDRESS
|
||||
;
|
||||
CTCENABLE .EQU TRUE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCDEBUG .EQU FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
|
||||
CTCBASE .EQU $40 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .EQU FALSE ; ENABLE CTC PERIODIC TIMER (too fast for RomWBW right now)
|
||||
CTCMODE .EQU CTCMODE_CTR ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
|
||||
CTCPRE .EQU 256 ; PRESCALE CONSTANT (1-256)
|
||||
CTCPRECH .EQU 0 ; PRESCALE CHANNEL (0-3)
|
||||
CTCTIMCH .EQU 1 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .EQU 7372800 ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
LEDMODE .EQU LEDMODE_RTC ; LEDMODE_[STD|RTC]
|
||||
LEDPORT .EQU $00 ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .EQU FALSE ; ENABLES DSKY
|
||||
DSKYMODE .EQU DSKYMODE_V1 ; DSKY VERSION: DSKYMODE_[V1|NG]
|
||||
DSKYPPIBASE .EQU $60 ; BASE I/O ADDRESS OF DSKY PPI
|
||||
DSKYOSC .EQU 3000000 ; OSCILLATOR FREQ FOR DSKYNG (IN HZ)
|
||||
;
|
||||
BOOTCON .EQU 0 ; BOOT CONSOLE DEVICE
|
||||
CRTACT .EQU FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .EQU EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
VDAEMU_SERKBD .EQU $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
ANSITRACE .EQU 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MKYENABLE .EQU FALSE ; MSX 5255 PPI KEYBOARD COMPATIBLE DRIVER (REQUIRES TMS VDA DRIVER)
|
||||
;
|
||||
DSRTCENABLE .EQU FALSE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .EQU DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTC_[STD|MFPIC]
|
||||
DSRTCCHG .EQU FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
|
||||
;
|
||||
DS1501RTCENABLE .EQU FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
|
||||
DS1501RTC_BASE .EQU $50 ; DS1501RTC: I/O BASE ADDRESS
|
||||
;
|
||||
BQRTCENABLE .EQU FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
|
||||
BQRTC_BASE .EQU $50 ; BQRTC: I/O BASE ADDRESS
|
||||
;
|
||||
INTRTCENABLE .EQU FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
RP5RTCENABLE .EQU FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
HTIMENABLE .EQU FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .EQU FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
DS7RTCENABLE .EQU FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
|
||||
DS7RTCMODE .EQU DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTC_[PCF]
|
||||
;
|
||||
DUARTENABLE .EQU FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
;
|
||||
UARTENABLE .EQU FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTOSC .EQU 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .EQU FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UARTCFG .EQU DEFSERCFG ; UART: LINE CONFIG FOR UART PORTS
|
||||
UARTCASSPD .EQU SER_300_8N1 ; UART: ECB CASSETTE UART DEFAULT SPEED
|
||||
UARTSBC .EQU TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
|
||||
UARTSBCFORCE .EQU FALSE ; UART: FORCE DETECTION OF SBC UART (FOR SIMH)
|
||||
UARTCAS .EQU FALSE ; UART: AUTO-DETECT ECB CASSETTE UART
|
||||
UARTMFP .EQU FALSE ; UART: AUTO-DETECT MF/PIC UART
|
||||
UART4 .EQU FALSE ; UART: AUTO-DETECT 4UART UART
|
||||
UARTRC .EQU FALSE ; UART: AUTO-DETECT RC UART
|
||||
UARTDUAL .EQU FALSE ; UART: AUTO-DETECT DUAL UART
|
||||
;
|
||||
ASCIENABLE .EQU FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
;
|
||||
Z2UENABLE .EQU FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .EQU FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
;
|
||||
SIOENABLE .EQU TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .EQU FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .EQU 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .EQU 1 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIO0MODE .EQU SIOMODE_Z80R ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .EQU $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .EQU CPUOSC/2 ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .EQU DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .EQU -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .EQU CPUOSC/2 ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .EQU DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .EQU -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .EQU SIOMODE_Z80R ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .EQU $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .EQU CPUOSC/2 ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .EQU DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
|
||||
SIO1ACTCC .EQU -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1BCLK .EQU CPUOSC/2 ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1BCFG .EQU DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
|
||||
SIO1BCTCC .EQU -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
XIOCFG .EQU DEFSERCFG ; XIO: SERIAL LINE CONFIG
|
||||
;
|
||||
VDUENABLE .EQU FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
|
||||
CVDUENABLE .EQU FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
GDCENABLE .EQU FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
|
||||
TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .EQU TRUE ; MD: ENABLE RAM DISK
|
||||
MDTRACE .EQU 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MDFFENABLE .EQU FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
FDENABLE .EQU FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
IDEENABLE .EQU FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .EQU FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
PPIDETRACE .EQU 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPIDECNT .EQU 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
|
||||
PPIDE0BASE .EQU $60 ; PPIDE 0: PPI REGISTERS BASE ADR
|
||||
PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_Z80R ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SDCSIOFAST .EQU FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
|
||||
;
|
||||
PRPENABLE .EQU FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
;
|
||||
PPPENABLE .EQU FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
PPPBASE .EQU $60 ; PPP: PPI REGISTERS BASE ADDRESS
|
||||
PPPSDENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER SD CARD SUPPORT
|
||||
PPPSDTRACE .EQU 1 ; PPP: SD CARD TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPPCONENABLE .EQU TRUE ; PPP: ENABLE PPP DRIVER VIDEO/KBD SUPPORT
|
||||
;
|
||||
HDSKENABLE .EQU FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .EQU FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
;
|
||||
LPTENABLE .EQU FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
;
|
||||
PIO_4P .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .EQU FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
PIOSBASE .EQU $60 ; PIO: PIO REGISTERS BASE ADR FOR SBC PPI
|
||||
;
|
||||
UFENABLE .EQU FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
|
||||
;
|
||||
SN76489ENABLE .EQU FALSE ; SN76489 SOUND DRIVER
|
||||
AY38910ENABLE .EQU FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
SPKENABLE .EQU FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
|
||||
;
|
||||
DMAENABLE .EQU FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
DMABASE .EQU $E0 ; DMA: DMA BASE ADDRESS
|
||||
DMAMODE .EQU DMAMODE_NONE ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC)
|
||||
;
|
||||
YM2612ENABLE .EQU FALSE ; YM2612: ENABLE YM2612 DRIVER (MUTE STUB)
|
||||
VGMBASE .EQU $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76469s/CTC)
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_ZETA ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; BIOS_[WBW|UNA]: HARDWARE BIOS
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -52,9 +52,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
@@ -126,6 +129,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -137,9 +141,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -153,7 +157,7 @@ PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
;
|
||||
#INCLUDE "hbios.inc"
|
||||
;
|
||||
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH]
|
||||
PLATFORM .EQU PLT_ZETA2 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCZ180|EZZ80|SCZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO]
|
||||
CPUFAM .EQU CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280]
|
||||
BIOS .EQU BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .EQU FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
@@ -28,7 +28,7 @@ BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
;
|
||||
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ
|
||||
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
@@ -63,9 +63,12 @@ SKZENABLE .EQU FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
;
|
||||
WDOGMODE .EQU WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
;
|
||||
DIAGENABLE .EQU FALSE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
|
||||
DIAGPORT .EQU $00 ; DIAGNOSTIC PORT ADDRESS
|
||||
DIAGDISKIO .EQU TRUE ; ENABLES DISK I/O ACTIVITY ON DIAGNOSTIC LEDS
|
||||
FPLED_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .EQU $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_DSKACT .EQU TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .EQU FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .EQU $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
;
|
||||
DIAGLVL .EQU DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .EQU FALSE ; ENABLES STATUS LED
|
||||
@@ -137,6 +140,7 @@ TMSENABLE .EQU FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .EQU TMSMODE_NONE ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|MSX|MSX9958|MSXKBD|COLECO]
|
||||
TMSTIMENABLE .EQU FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .EQU FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
@@ -148,9 +152,9 @@ FDENABLE .EQU TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .EQU FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .EQU 1 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .EQU 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMEDIA .EQU FDM144 ; FD: DEFAULT MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMEDIAALT .EQU FDM720 ; FD: ALTERNATE MEDIA FORMAT FDM[720|144|360|120|111]
|
||||
FDMAUTO .EQU TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .EQU FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .EQU FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .EQU FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
@@ -164,7 +168,7 @@ PPIDE0A8BIT .EQU FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .EQU FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .EQU FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR]
|
||||
SDMODE .EQU SDMODE_PPI ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|PIO|Z80R|USR]
|
||||
SDPPIBASE .EQU $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .EQU 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .EQU 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
|
||||
@@ -9,7 +9,7 @@ CTC_DEFCFG .EQU %01010011 ; CTC DEFAULT CONFIG
|
||||
CTC_CTRCFG .EQU %01010111 ; CTC COUNTER MODE CONFIG
|
||||
CTC_TIM16CFG .EQU %00010111 ; CTC TIMER/16 MODE CONFIG
|
||||
CTC_TIM256CFG .EQU %00110111 ; CTC TIMER/256 MODE CONFIG
|
||||
CTC_TIMCFG .EQU %11010111 ; CTC TIMER CHANNEL CONFIG
|
||||
;CTC_TIMCFG .EQU %11010111 ; CTC TIMER CHANNEL CONFIG
|
||||
; |||||||+-- CONTROL WORD FLAG
|
||||
; ||||||+--- SOFTWARE RESET
|
||||
; |||||+---- TIME CONSTANT FOLLOWS
|
||||
@@ -19,6 +19,12 @@ CTC_TIMCFG .EQU %11010111 ; CTC TIMER CHANNEL CONFIG
|
||||
; |+-------- COUNTER MODE
|
||||
; +--------- INTERRUPT ENABLE
|
||||
;
|
||||
;==================================================================================================
|
||||
; ONLY IM2 IMPLEMENTED BELOW. I DON'T SEE ANY REASONABLE WAY TO IMPLEMENT AN IM1 TIMER BECAUSE
|
||||
; THE CTC PROVIDES NO WAY TO DETERMINE IF IT WAS THE CAUSE OF AN INTERRUPT OR A WAY TO
|
||||
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT.
|
||||
;==================================================================================================
|
||||
;
|
||||
#IF (INTMODE != 2)
|
||||
.ECHO "*** WARNING: CTC TIMER DISABLED -- INTMODE 2 REQUIRED!!!\n"
|
||||
#ENDIF
|
||||
@@ -32,15 +38,56 @@ CTC_TIMCFG .EQU %11010111 ; CTC TIMER CHANNEL CONFIG
|
||||
.ECHO (INT_CTC0A % 4)
|
||||
.ECHO "\n"
|
||||
|
||||
.ECHO "*** ERROR: CTC BASE VECTOR NOT /4 ALIGNED!!!\n"
|
||||
.ECHO "*** ERROR: CTC BASE VECTOR NOT DWORD ALIGNED!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
#ENDIF
|
||||
;
|
||||
; ONLY IM2 IMPLEMENTED BELOW. I DON'T SEE ANY REASONABLE WAY TO
|
||||
; IMPLEMENT AN IM1 TIMER BECAUSE THE CTC PROVIDES NO WAY TO
|
||||
; DETERMINE IF IT WAS THE CAUSE OF AN INTERRUPT OR A WAY TO
|
||||
; DETERMINE WHICH CHANNEL CAUSED AN INTERRUPT.
|
||||
;
|
||||
;==================================================================================================
|
||||
; TIMER SETUP
|
||||
;
|
||||
; A PERIODIC INTERRUPT TIMER CAN BE SETUP USING EITHER THE CPU SYSTEM CLOCK OR AN EXTERNAL
|
||||
; OSCILLATOR CONNECTED TO THE CTC. THE DEFACTO PERIOD FOR THIS TIMER IS 50Hz OR 60Hz.
|
||||
;
|
||||
; THE DESIRED TIMER PERIOD IS SET IN THE CONFIGURATION:
|
||||
; TICKFREQ .SET 60 ; OR
|
||||
; TICKFREQ .SET 50
|
||||
;
|
||||
; THIS DRIVER USES TWO CTC CHANNELS TO CREATE A TWO STEP DIVIDER THAT DIVIDES THE CPU SYSTEM
|
||||
; CLOCK OR EXTERNAL OSCILLATOR INTO A PERIODIC TICK THAT GENERATES AN INTERRUPT.
|
||||
;
|
||||
; THE CPU CLOCK OR CTC EXTERNAL OSCILLATOR NEEDS TO BE LESS THAN 3.932160MHz FOR A 60HZ TIMER
|
||||
; TICK OR 3.276800MHz FOR A 50Hz TIMER TICK.
|
||||
;
|
||||
; THE CHANNELS USED ARE DEFINED BY THE CTCPRECH AND CTCTIMCH DEFINITIONS - TYPICALLY 2 & 3.
|
||||
; EXTERNAL HARDWARE MUST BE CONFIGURED TO MATCH THIS CONFIGURATION.
|
||||
;
|
||||
; EACH CHANNEL SUCCESSIVELY DIVIDES THE CLOCK OR OSCILLATOR FREQUENCY DOWN TO A 50 OR 60Hz TICK.
|
||||
; THE FIRST DIVIDER CHANNEL IS THE PRESCALER, THE SECOND IS THE TIMER CHANNEL.
|
||||
;
|
||||
; IF CTCMODE IS CTCMODE_CTR THEN THE OSCILLATOR CONNECTED TO CTC PRESCALER CHANNEL IS USED.
|
||||
;
|
||||
; THE CONFIGURATION FILES DEFINE THE OSCILLATOR FREQUENCY THAT IS CONNECTED TO THE PRESCALER
|
||||
; CHANNEL. I.E. THE EXTERNAL HARDWARE CONNECTED TO THE CTC.
|
||||
;
|
||||
; FOR A 60Hz TIMER WITH A 3.579545Mhz OSCILLATOR USE:
|
||||
; CTCMODE .SET CTCMODE_CTR
|
||||
; TICKFREQ .SET 60
|
||||
; CTCOSC .SET 3579545
|
||||
;
|
||||
; IF CTCMODE IS CTCMODE_TIM16 OR CTCMODE_TIM256 THE CPU SYSTEM CLOCK FREQUENCY IS USED.
|
||||
;
|
||||
; THIS MODE HAS LIMITED VALUE AS MANY SYSTEMS OPERATE ABOVE THE USABLE TOP FREQUENCY.
|
||||
; THE CONFIGURATION FILE MUST BE UPDATED TO MATCH YOUR CPU CLOCK FREQUENCY.
|
||||
;
|
||||
; FOR A 60Hz TIMER WITH A 2Mhz OSCILLATOR USE:
|
||||
; CTCMODE .SET CTCMODE_TIM256
|
||||
; TICKFREQ .SET 60
|
||||
; CTCOSC .SET 2000000
|
||||
;
|
||||
; NOTE THAT IF CPU SPEED IS CHANGED IN THIS MODE, THE TIMER SPEED WILL ALSO CHANGE.
|
||||
;
|
||||
;==================================================================================================
|
||||
;
|
||||
CTC_PREIO .EQU CTCBASE + CTCPRECH
|
||||
CTC_SCLIO .EQU CTCBASE + CTCTIMCH
|
||||
;
|
||||
@@ -81,29 +128,35 @@ CTC_DIVLO .EQU (CTC_DIV / CTC_DIVHI)
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((CTC_DIVHI * CTC_DIVLO * CTC_PRESCL * TICKFREQ) != CTCOSC)
|
||||
.ECHO "COMPUTED CTC DIVISOR IS UNUSABLE!\n"
|
||||
!!!
|
||||
.ECHO "WARNING: COMPUTED CTC DIVISOR IS INACCURATE!\n"
|
||||
#ENDIF
|
||||
;
|
||||
CTCTIVT .EQU INT_CTC0A + CTCTIMCH
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
;==================================================================================================
|
||||
; CTC PRE-INITIALIZATION
|
||||
;
|
||||
; CHECK TO SEE IF A CTC EXISTS. IF IT EXISTS, ALL FOUR CTC CHANNELS ARE PROGRAMMED TO:
|
||||
; INTERRUPTS DISABLED, COUNTER MODE, RISING EDGE TRIGGER, RESET STATE.
|
||||
;
|
||||
; IF THE CTCTIMER CONFIGURATION IS SET, THEN A PERIOD INTERRUPT TIMER IS SET UP USING CTC CHANNELS
|
||||
; 2 (CTCPRECH) & 3 (CTCTIMCH). THE TIMER WILL BE SETUP TO 50 OR 60HZ DEPENDING ON CONFIGURATION
|
||||
; SETTING TICKFREQ. CHANNEL 3 WILL GENERATE THE TICK INTERRUPT..
|
||||
;==================================================================================================
|
||||
;
|
||||
CTC_PREINIT:
|
||||
; BLINDLY RESET THE CTC ASSUMING IT IS THERE
|
||||
LD A,CTC_DEFCFG
|
||||
OUT (CTCBASE),A
|
||||
OUT (CTCBASE+1),A
|
||||
OUT (CTCBASE+2),A
|
||||
OUT (CTCBASE+3),A
|
||||
;
|
||||
CALL CTC_DETECT ; DO WE HAVE ONE?
|
||||
LD (CTC_EXIST),A ; SAVE IT
|
||||
RET NZ ; ABORT IF NONE
|
||||
;
|
||||
; RESET ALL CTC CHANNELS
|
||||
LD B,4 ; 4 CHANNELS
|
||||
LD C,CTCBASE ; FIRST CHANNEL PORT
|
||||
CTC_PREINIT1:
|
||||
LD A,CTC_DEFCFG ; CTC DEFAULT CONFIG
|
||||
OUT (C),A ; CTC COMMAND
|
||||
INC C ; NEXT CHANNEL PORT
|
||||
DJNZ CTC_PREINIT1
|
||||
;
|
||||
#IF (CTCTIMER & (INTMODE == 2))
|
||||
; SETUP TIMER INTERRUPT IVT SLOT
|
||||
@@ -122,12 +175,12 @@ CTC_PREINIT1:
|
||||
; CTC CHANNEL AS A PRESCALER AND ANOTHER AS THE ACTUAL
|
||||
; TIMER INTERRUPT. THE PRESCALE CHANNEL OUTPUT MUST BE WIRED
|
||||
; TO THE TIMER CHANNEL TRIGGER INPUT VIA HARDWARE.
|
||||
LD A,CTC_PRECFG ; PRESCALE CHANNEL CONFIGURATION
|
||||
LD A,CTC_PRECFG ; PRESCALE TIMER CHANNEL CFG
|
||||
OUT (CTC_PREIO),A ; SETUP PRESCALE CHANNEL
|
||||
LD A,CTC_DIVHI & $FF ; PRESCALE CHANNEL CONSTANT
|
||||
OUT (CTC_PREIO),A ; SET PRESCALE CONSTANT
|
||||
;
|
||||
LD A,CTC_TIMCFG ; TIMER CHANNEL CONTROL WORD VALUE
|
||||
LD A,CTC_CTRCFG | $80 ; TIMER CHANNEL + INT CFG
|
||||
OUT (CTC_SCLIO),A ; SETUP TIMER CHANNEL
|
||||
LD A,CTC_DIVLO & $FF ; TIMER CHANNEL CONSTANT
|
||||
OUT (CTC_SCLIO),A ; SET TIMER CONSTANT
|
||||
@@ -137,7 +190,9 @@ CTC_PREINIT1:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;==================================================================================================
|
||||
; DRIVER INITIALIZATION
|
||||
;==================================================================================================
|
||||
;
|
||||
CTC_INIT: ; MINIMAL INIT
|
||||
CTC_PRTCFG:
|
||||
@@ -200,30 +255,34 @@ CTC_PRTCFG1:
|
||||
XOR A
|
||||
RET
|
||||
;
|
||||
;
|
||||
;==================================================================================================
|
||||
; DETECT CTC BY PROGRAMMING THE FIRST CHANNEL TO COUNT IN TIMER
|
||||
; MODE (BASED ON CPU CLOCK). THEN CHECK IF COUNTER IS ACTUALLY
|
||||
; RUNNING.
|
||||
;==================================================================================================
|
||||
;
|
||||
CTC_DETECT:
|
||||
LD A,CTC_TIM256CFG
|
||||
OUT (CTCBASE),A
|
||||
XOR A
|
||||
OUT (CTCBASE),A
|
||||
; CTC SHOULD NOW BE RUNNING WITH TIME CONSTANT 0
|
||||
LD A,CTC_TIM256CFG ; RESET
|
||||
OUT (CTCBASE),A
|
||||
IN A,(CTCBASE) ; SHOULD READ 0 NOW
|
||||
CP 0
|
||||
JR NZ,CTC_NO
|
||||
LD A,CTC_TIM16CFG ; RESET & SETUP TIMER MODE
|
||||
OUT (CTCBASE),A ; SEND TO CTC
|
||||
LD A,$FF ; TIME CONSTANT $FF
|
||||
OUT (CTCBASE),A
|
||||
IN A,(CTCBASE) ; SHOULD NOT BE 0 NOW
|
||||
CP 0
|
||||
JR Z,CTC_NO
|
||||
XOR A
|
||||
RET
|
||||
OUT (CTCBASE),A ; SEND CONSTANT & START CTR
|
||||
NOP ; BRIEF DELAY
|
||||
IN A,(CTCBASE) ; READ COUNTER
|
||||
LD C,A ; SAVE VALUE
|
||||
CALL DLY8 ; WAIT A BIT
|
||||
IN A,(CTCBASE) ; READ COUNTER AGAIN
|
||||
PUSH AF ; SAVE RESULT
|
||||
LD A,CTC_DEFCFG ; DEFAULT CHANNEL CFG
|
||||
OUT (CTCBASE),A ; RESTORE TO DEFAULTS
|
||||
POP AF ; GET RESULT BACK
|
||||
CP C ; COMPARE TO PREVIOUS
|
||||
JR Z,CTC_NO ; IF SAME, FAIL
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; AND DONE
|
||||
CTC_NO:
|
||||
OR $FF
|
||||
RET
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET ; AND DONE
|
||||
;
|
||||
; CTC DRIVER DATA STORAGE
|
||||
;
|
||||
;
|
||||
CTC_EXIST .DB $FF
|
||||
CTC_EXIST .DB $FF ; SET TO ZERO IF EXISTS
|
||||
|
||||
@@ -902,5 +902,6 @@ CVDU_INIT8563:
|
||||
;==================================================================================================
|
||||
;
|
||||
CVDU_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB CVDU_KBDST
|
||||
.DB CVDU_KBDDATA
|
||||
|
||||
@@ -878,6 +878,8 @@ GETLNLOP:
|
||||
JR Z,GETLNDONE ; YES, EXIT
|
||||
CP CHR_BS ; IS <BS>?
|
||||
JR Z,GETLNBS ; IF SO, HANDLE IT
|
||||
CP CHR_DEL ; IS <DEL>?
|
||||
JR Z,GETLNBS ; IF SO, HANDLE AS <BS>
|
||||
CP ' ' ; UNEXPECTED CONTROL CHAR?
|
||||
JR C,GETLNLOP ; IF SO, IGNORE IT AND GET NEXT
|
||||
LD B,A ; SAVE CHAR IN B FOR NOW
|
||||
@@ -1854,6 +1856,7 @@ CHR_CR .EQU 0DH
|
||||
CHR_LF .EQU 0AH
|
||||
CHR_BS .EQU 08H
|
||||
CHR_ESC .EQU 1BH
|
||||
CHR_DEL .EQU 7FH
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
|
||||
@@ -72,7 +72,9 @@ DMA_INIT:
|
||||
di
|
||||
otir ; load dma
|
||||
ei
|
||||
|
||||
xor a ; set status
|
||||
ld (DMA_FAIL_FLAG),a ; ok to use dma
|
||||
;
|
||||
DMA_EXIT:
|
||||
DMAIOFULL
|
||||
@@ -94,7 +96,7 @@ DMA_NOTFOUND:
|
||||
jr DMA_EXIT
|
||||
;
|
||||
DMA_FAIL_FLAG:
|
||||
.db 0
|
||||
.db DMA_FAIL_FLAG
|
||||
;
|
||||
;==================================================================================================
|
||||
; DMA PROBE - WRITE TO ADDRESS REGISTER AND READ BACK
|
||||
|
||||
@@ -109,7 +109,7 @@ FRC_TOSEEKWT .EQU -15H ; EB
|
||||
; FD DEVICE CONFIGURATION
|
||||
;
|
||||
FD_DEVCNT .EQU FDCNT ; 2 DEVICES SUPPORTED
|
||||
FD_CFGSIZ .EQU 8 ; SIZE OF CFG TBL ENTRIES
|
||||
FD_CFGSIZ .EQU 9 ; SIZE OF CFG TBL ENTRIES
|
||||
;
|
||||
; PER DEVICE DATA OFFSETS
|
||||
; ; OFFSET OF...
|
||||
@@ -121,25 +121,28 @@ FD_HST .EQU 4 ; HOSTS SEEK POSITION
|
||||
FD_HSTTRK .EQU FD_HST + 0 ; HOST TRACK (WORD)
|
||||
FD_HSTSEC .EQU FD_HST + 2 ; HOST SECTOR (BYTE)
|
||||
FD_HSTHD .EQU FD_HST + 3 ; HOST HEAD (BYTE)
|
||||
FD_TYPE .EQU 8 ; FLOPPY DSIK TYPE (BYTE)
|
||||
;
|
||||
FD_CFGTBL:
|
||||
; DEVICE 0, PRIMARY MASTER
|
||||
.DB 0 ; DEVICE NUMBER
|
||||
.DB 0 ; DEVICE STATUS
|
||||
.DB FDMEDIA ; MEDIA TYPE
|
||||
.DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE)
|
||||
.DB $FF ; CURRENT TRACK
|
||||
.DW 0 ; HOST TRACK
|
||||
.DB 0 ; HOST SECTOR
|
||||
.DB 0 ; HOST HEAD
|
||||
.DB FD0TYPE ; DRIVE TYPE
|
||||
#IF (FD_DEVCNT >= 2)
|
||||
; DEVICE 1, PRIMARY SLAVE
|
||||
.DB 1 ; DRIVER DEVICE NUMBER
|
||||
.DB 0 ; DEVICE STATUS
|
||||
.DB FDMEDIA ; MEDIA TYPE
|
||||
.DB $FF ; CURRENT MEDIA TYPE (INIT TO NONE)
|
||||
.DB $FF ; CURRENT TRACK
|
||||
.DW 0 ; HOST TRACK
|
||||
.DB 0 ; HOST SECTOR
|
||||
.DB 0 ; HOST HEAD
|
||||
.DB FD1TYPE ; DRIVE TYPE
|
||||
#ENDIF
|
||||
;
|
||||
#IF ($ - FD_CFGTBL) != (FD_DEVCNT * FD_CFGSIZ)
|
||||
@@ -199,6 +202,42 @@ FSST_ENTSIZ .EQU $ - FSST
|
||||
FSST_COUNT .EQU (($ - FSST) / FSST_ENTSIZ) ; # ENTRIES IN TABLE
|
||||
#ENDIF
|
||||
;
|
||||
; FDC DRIVE TYPE MEDIA OPTIONS
|
||||
;
|
||||
; THIS TABLE LISTS THE TYPES OF MEDIA THAT SHOULD BE ATTEMPTED
|
||||
; FOR EACH POSSIBLE DRIVE TYPE. THE ENTRIES MATCH THE ORDER OF THE
|
||||
; FDT_ VALUES DEFINED IN STD.ASM
|
||||
;
|
||||
FD_MEDIAMAP:
|
||||
.DW FDMM_NONE ; NO DRIVE TYPE
|
||||
.DW FDMM_3DD
|
||||
.DW FDMM_3HD
|
||||
.DW FDMM_5DD
|
||||
.DW FDMM_5HD
|
||||
.DW FDMM_8
|
||||
;
|
||||
FDMM_NONE .DB $FF
|
||||
FDMM_3DD .DB FDM720, $FF
|
||||
FDMM_3HD .DB FDM144, FDM720, $FF
|
||||
FDMM_5DD .DB FDM360, $FF
|
||||
FDMM_5HD .DB FDM120, FDM360, $FF
|
||||
FDMM_8 .DB FDM111, $FF
|
||||
;
|
||||
; FDC DRIVE TYPE ATTRIBUTES
|
||||
;
|
||||
; LOOKUP TABLE TO MAP THE DEVICE ATTRIBUTES BYTE RETURNED
|
||||
; BY THE FD_DEVICE FUNCTION BASED ON THE DRIVE TYPE.
|
||||
; THE ENTRIES MATCH THE ORDER OF THE
|
||||
; FDT_ VALUES DEFINED IN STD.ASM
|
||||
;
|
||||
FD_DEVATTR:
|
||||
.DB %11100000 ; DRIVE TYPE NONE
|
||||
.DB %11010100 ; DRIVE TYPE 3.5 DD
|
||||
.DB %11011000 ; DRIVE TYPE 3.5 HD
|
||||
.DB %10110100 ; DRIVE TYPE 5.25 DD
|
||||
.DB %10111000 ; DRIVE TYPE 5.25 HD
|
||||
.DB %10010100 ; DRIVE TYPE 8
|
||||
;
|
||||
; FDC COMMANDS
|
||||
;
|
||||
CFD_READ .EQU 00000110B ; CMD,HDS/DS,C,H,R,N,EOT,GPL,DTL --> ST0,ST1,ST2,C,H,R,N
|
||||
@@ -498,21 +537,11 @@ FD_DEFMED:
|
||||
FD_DEVICE:
|
||||
LD D,DIODEV_FD ; D := DEVICE TYPE
|
||||
LD E,(IY+FD_DEV) ; E := PHYSICAL DEVICE NUMBER
|
||||
#IF (FDMEDIA == FDM720)
|
||||
LD C,%11010100 ; 3.5" DS/DD
|
||||
#ENDIF
|
||||
#IF (FDMEDIA == FDM144)
|
||||
LD C,%11011000 ; 3.5" DS/HD
|
||||
#ENDIF
|
||||
#IF (FDMEDIA == FDM360)
|
||||
LD C,%10110100 ; 5.25" DS/DD
|
||||
#ENDIF
|
||||
#IF (FDMEDIA == FDM120)
|
||||
LD C,%10111000 ; 5.25" DS/HD
|
||||
#ENDIF
|
||||
#IF (FDMEDIA == FDM111)
|
||||
LD C,%10010100 ; 8" DS/DD
|
||||
#ENDIF
|
||||
|
||||
LD A,(IY+FD_TYPE) ; DRIVE TYPE
|
||||
LD HL,FD_DEVATTR ; DEVICE ATTR TABLE
|
||||
CALL ADDHLA ; POINT TO ENTRY
|
||||
LD C,(HL) ; GET IT
|
||||
LD H,FDMODE ; H := MODE
|
||||
LD L,FDC_MSR ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
@@ -527,9 +556,7 @@ FD_MEDIA:
|
||||
|
||||
#IF (FDMAUTO)
|
||||
; SETUP TO READ TRK 0, HD 0, SEC 0
|
||||
;LD A,C ; C STILL HAS REQUESTED DRIVE
|
||||
LD A,(IY+FD_DEV) ; GET DRIVE UNIT
|
||||
;AND 0FH
|
||||
LD (FCD_DS),A
|
||||
LD A,0
|
||||
LD (FCD_C),A
|
||||
@@ -538,53 +565,77 @@ FD_MEDIA:
|
||||
LD (FCD_R),A
|
||||
LD A,DOP_READID
|
||||
LD (FCD_DOP),A
|
||||
#ENDIF
|
||||
|
||||
#IF (FDTRACE < 3)
|
||||
|
||||
LD A,(IY+FD_TYPE) ; GET DRIVE TYPE VALUE
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
LD HL,FD_MEDIAMAP ; POINT TO MEDIA MAP TABLE
|
||||
ADD A,A ; TABLE IS WORD SIZED
|
||||
CALL ADDHLA ; LOOKUP ENTRY
|
||||
LD A,(HL) ; DEREFERENCE
|
||||
INC HL
|
||||
LD H,(HL)
|
||||
LD L,A
|
||||
|
||||
#IF (FDMAUTO)
|
||||
#IF (FDTRACE < 3)
|
||||
; SUPPRESS TRACING FOR MEDIA TESTS
|
||||
LD A,0
|
||||
LD (FCD_TRACE),A
|
||||
#ENDIF
|
||||
|
||||
LD B,5
|
||||
#ENDIF
|
||||
|
||||
LD B,5 ; 5 ATTEMPTS
|
||||
FD_MEDIARETRY:
|
||||
; TRY PRIMARY MEDIA CHOICE FIRST
|
||||
LD A,FDMEDIA
|
||||
CALL FD_TESTMEDIA
|
||||
JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE
|
||||
|
||||
; TRY ALTERNATE MEDIA CHOICE
|
||||
LD A,FDMEDIAALT
|
||||
CALL FD_TESTMEDIA
|
||||
JR Z,FD_MEDIA3 ; IF SUCCESS, WE ARE DONE
|
||||
|
||||
DJNZ FD_MEDIARETRY
|
||||
PUSH HL ; SAVE MEDIA MAP PTR
|
||||
CALL FD_MEDIALOOP ; TRY IT
|
||||
POP HL ; RECOVER MEDIA MAP PTR
|
||||
JR Z,FD_MEDIA3 ; CONTINUE ON SUCCESS
|
||||
DJNZ FD_MEDIARETRY ; LOOP TILL DONE
|
||||
|
||||
FD_MEDIARETRY1:
|
||||
; NO JOY, RETURN WITH E=0 (NO MEDIA)
|
||||
;LD HL,(FDDS_MEDIAADR)
|
||||
;LD (HL),0 ; SET TO NO MEDIA
|
||||
LD (IY+FD_MEDTYP),0 ; SET DRIVE = NO MEDIA
|
||||
LD E,0
|
||||
LD (IY+FD_MEDTYP),$FF ; SET MEDIA TYPE TO UNDEFINED
|
||||
LD E,0 ; NO MEDIA FLAG
|
||||
LD A,ERR_NOMEDIA ; SIGNAL ERROR
|
||||
OR A ; SET FLAGS
|
||||
RET
|
||||
|
||||
FD_MEDIALOOP:
|
||||
LD A,(HL) ; LOAD NEXT MEDIA TYPE TO TRY
|
||||
CP $FF ; END OF MEDIA TYPES TO TRY?
|
||||
JR Z,FD_MEDIALOOP1 ; NO MORE TO TRY, LOOP EXIT
|
||||
CALL FD_TESTMEDIA ; TRY IT
|
||||
RET Z ; RETURN ON SUCCESS
|
||||
INC HL ; NEXT MEDIA TYPE TO TRY
|
||||
JR FD_MEDIALOOP ; LOOP
|
||||
FD_MEDIALOOP1:
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET ; RETURN
|
||||
|
||||
FD_TESTMEDIA:
|
||||
;LD HL,(FDDS_MEDIAADR)
|
||||
;LD (HL),A
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
LD (IY+FD_MEDTYP),A
|
||||
PUSH HL
|
||||
PUSH BC
|
||||
CALL FD_START
|
||||
POP BC
|
||||
POP HL
|
||||
;CALL PRTHEXBYTE ; *DEBUG*
|
||||
RET
|
||||
|
||||
FD_MEDIA3:
|
||||
|
||||
#IF (FDTRACE < 3)
|
||||
#IF (FDTRACE < 3)
|
||||
; RESTORE TRACING FOR MEDIA TESTS
|
||||
LD A,FDTRACE
|
||||
LD (FCD_TRACE),A
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ELSE
|
||||
|
||||
LD A,(HL)
|
||||
LD (IY+FD_MEDTYP),A
|
||||
|
||||
#ENDIF
|
||||
|
||||
FD_MEDIA4:
|
||||
@@ -778,7 +829,7 @@ FD_DETECT1:
|
||||
;
|
||||
FD_INITUNIT:
|
||||
LD (IY+FD_STAT),0 ; CLEAR STATUS
|
||||
LD (IY+FD_MEDTYP),FDMEDIA ; SET DEFAULT MEDIA TYPE
|
||||
LD (IY+FD_MEDTYP),$FF ; SET UNKNOWN MEDIA TYPE
|
||||
LD (IY+FD_CURTRK),$FE ; SPECIAL VALUE FOR CURTRK
|
||||
RET
|
||||
;
|
||||
@@ -1285,7 +1336,8 @@ FC_SETUPIO:
|
||||
LD (DE),A
|
||||
INC DE
|
||||
|
||||
LD A,(FCD_EOT)
|
||||
;LD A,(FCD_EOT)
|
||||
LD A,(FCD_R) ; READ ONLY ONE SECTOR
|
||||
LD (DE),A
|
||||
INC DE
|
||||
|
||||
@@ -1397,15 +1449,17 @@ FC_RESETFDC:
|
||||
; PULSE TERMCT TO TERMINATE ANY ACTIVE EXECUTION PHASE
|
||||
;
|
||||
FC_PULSETC:
|
||||
#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
|
||||
IN A,(FDC_TC)
|
||||
#ELSE
|
||||
LD A,(FST_DOR)
|
||||
SET 0,A
|
||||
OUT (FDC_DOR),A
|
||||
RES 0,A
|
||||
OUT (FDC_DOR),A
|
||||
#ENDIF
|
||||
; PULSING TC NO LONGER REQUIRED BECAUSE WE ONLY READ A SINGLE SECTOR
|
||||
;
|
||||
;#IF ((FDMODE == FDMODE_DIDE) | (FDMODE == FDMODE_N8) | (FDMODE == FDMODE_ZETA2) | (FDMODE == FDMODE_RCWDC) | (FDMODE == FDMODE_DYNO) | (FDMODE == FDMODE_EPFDC) | (FDMODE == FDMODE_MBC))
|
||||
; IN A,(FDC_TC)
|
||||
;#ELSE
|
||||
; LD A,(FST_DOR)
|
||||
; SET 0,A
|
||||
; OUT (FDC_DOR),A
|
||||
; RES 0,A
|
||||
; OUT (FDC_DOR),A
|
||||
;#ENDIF
|
||||
RET
|
||||
;
|
||||
; SET FST_DOR FOR MOTOR CONTROL ON
|
||||
@@ -1694,7 +1748,7 @@ FXR_TO: ; TIMEOUT
|
||||
;
|
||||
FXR_ABORT: ; EXECUTION ABORTED
|
||||
HB_EI ; INTERRUPTS OK AGAIN
|
||||
JR FOP_RES ; GET RSEULTS, NO NEED TO PULSE TC
|
||||
JR FOP_RES ; GET RESULTS, NO NEED TO PULSE TC
|
||||
;
|
||||
FXR_END: ; EXECUTION COMPLETED NORMALLY
|
||||
CALL FC_PULSETC ; PULSE TC TO END EXECUTION
|
||||
@@ -1828,7 +1882,9 @@ FOP_EVALST1:
|
||||
|
||||
LD C,FRC_ENDCYL
|
||||
BIT 7,A
|
||||
JR NZ,FOP_SETFST
|
||||
; THI IS NORMAL BECAUSE WE NOW READ ONLY A SINGLE SECTOR
|
||||
;JR NZ,FOP_SETFST
|
||||
JR NZ,FOP_EXIT
|
||||
|
||||
LD C,FRC_DATAERR
|
||||
BIT 5,A
|
||||
|
||||
@@ -325,5 +325,6 @@ GDC_POS .DW 0 ; CURRENT DISPLAY POSITION
|
||||
;==================================================================================================
|
||||
;
|
||||
GDC_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB GDC_KBDST
|
||||
.DB GDC_KBDDATA
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -109,11 +109,13 @@ BF_SYSGET_CPUINFO .EQU $F0 ; GET CPU INFORMATION
|
||||
BF_SYSGET_MEMINFO .EQU $F1 ; GET MEMORY CAPACTITY INFO
|
||||
BF_SYSGET_BNKINFO .EQU $F2 ; GET BANK ASSIGNMENT INFO
|
||||
BF_SYSGET_CPUSPD .EQU $F3 ; GET CLOCK SPEED & WAIT STATES
|
||||
BF_SYSGET_PANEL .EQU $F4 ; GET FRONT PANEL SWITCHES VAL
|
||||
;
|
||||
BF_SYSSET_TIMER .EQU $D0 ; SET TIMER VALUE
|
||||
BF_SYSSET_SECS .EQU $D1 ; SET SECONDS VALUE
|
||||
BF_SYSSET_BOOTINFO .EQU $E0 ; SET BOOT INFORMATION
|
||||
BF_SYSSET_CPUSPD .EQU $F3 ; SET CLOCK SPEED & WAIT STATES
|
||||
BF_SYSSET_PANEL .EQU $F4 ; SET FRONT PANEL LEDS
|
||||
;
|
||||
BF_SYSINT_INFO .EQU $00 ; GET INTERRUPT SYSTEM INFO
|
||||
BF_SYSINT_GET .EQU $10 ; GET INT VECTOR ADDRESS
|
||||
@@ -137,6 +139,7 @@ PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD
|
||||
PLT_RCZ280 .EQU 12 ; RCBUS W/ Z280
|
||||
PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER
|
||||
PLT_RPH .EQU 14 ; RHYOPHYRE GRAPHICS COMPUTER
|
||||
PLT_Z80RETRO .EQU 15 ; Z80 RETRO COMPUTER
|
||||
;
|
||||
; HBIOS GLOBAL ERROR RETURN VALUES
|
||||
;
|
||||
@@ -261,6 +264,15 @@ DIAG_08 .EQU 11111111B ; ON
|
||||
DIAG_09 .EQU 11111111B ; ON
|
||||
#ENDIF
|
||||
;
|
||||
; FRONT PANEL SWITCHES
|
||||
;
|
||||
SW_CRT .EQU %10000000 ; CRT/SER CONSOLE
|
||||
SW_SEC .EQU %01000000 ; SEC/PRI CONSOLE
|
||||
SW_AUTO .EQU %00100000 ; AUTO/MENU BOOT
|
||||
SW_DISK .EQU %00010000 ; DISK/ROM
|
||||
SW_FLOP .EQU %00001000 ; FLOP/HD
|
||||
SW_OPT .EQU %00000111 ; SLICE/ROM APP
|
||||
;
|
||||
; MEDIA ID VALUES
|
||||
;
|
||||
MID_NONE .EQU 0
|
||||
@@ -326,7 +338,7 @@ VDADEV_CVDU .EQU $10 ; ECB COLOR VDU - MOS 8563
|
||||
VDADEV_GDC .EQU $20 ; GRAPHICS DISPLAY CTLR - UPD7220
|
||||
VDADEV_TMS .EQU $30 ; N8 ONBOARD VDA SUBSYSTEM - TMS 9918
|
||||
VDADEV_VGA .EQU $40 ; ECB VGA3 - HITACHI HD6445
|
||||
;VDADEV_V9958 .EQU $50 ; V9958 VDU
|
||||
VDADEV_VRC .EQU $50 ; VGARC
|
||||
;
|
||||
; SOUND DEVICE IDS
|
||||
;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -14,9 +14,10 @@
|
||||
;
|
||||
; DRIVER DATA OFFSETS (FROM IY)
|
||||
;
|
||||
KBD_ST .EQU 0 ; BYTE, STATUS PORT NUM (R)
|
||||
KBD_MODE .EQU 0 ; BYTE, KEYBOARD MODE (STD OR VRC)
|
||||
KBD_ST .EQU 1 ; BYTE, STATUS PORT NUM (R)
|
||||
KBD_CMD .EQU KBD_ST ; BYTE, CMD PORT NUM (W)
|
||||
KBD_DAT .EQU 1 ; BYTE, DATA PORT NUM (R/W)
|
||||
KBD_DAT .EQU 2 ; BYTE, DATA PORT NUM (R/W)
|
||||
;
|
||||
; TIMING CONSTANTS
|
||||
;
|
||||
@@ -69,17 +70,33 @@ KBD_INIT:
|
||||
LD (KBD_REPEAT),A ; SAVE IT
|
||||
LD A,KBD_DEFSTATE ; GET DEFAULT STATE
|
||||
LD (KBD_STATE),A ; SAVE IT
|
||||
|
||||
;
|
||||
LD A,(IY+KBD_MODE) ; GET KBD MODE BYTE
|
||||
CP KBDMODE_VRC ; VRC?
|
||||
JR Z,KBD_INIT1 ; IF SO, MUST ASSUME PRESENT
|
||||
;
|
||||
LD A,$AA ; CONTROLLER SELF TEST
|
||||
CALL KBD_PUTCMD ; SEND IT
|
||||
CALL KBD_GETDATA ; CONTROLLER SHOULD RESPOND WITH $55 (ACK)
|
||||
|
||||
;
|
||||
CP $55 ; IS IT THERE?
|
||||
JR Z,KBD_INIT1 ; IF SO, CONTINUE
|
||||
PRTS(" NOT PRESENT$") ; DIAGNOSE PROBLEM
|
||||
RET ; BAIL OUT
|
||||
|
||||
;
|
||||
KBD_INIT1:
|
||||
PRTS(" MODE=$") ; TAG
|
||||
LD A,(IY+KBD_MODE) ; GET MODE VALUE
|
||||
LD DE,KBD_STR_MODEPS2
|
||||
CP KBDMODE_PS2
|
||||
JR Z,KBD_INIT2
|
||||
LD DE,KBD_STR_MODEVRC
|
||||
CP KBDMODE_VRC
|
||||
JR Z,KBD_INIT2
|
||||
LD DE,KBD_STR_MODEUNK
|
||||
KBD_INIT2:
|
||||
CALL WRITESTR
|
||||
;
|
||||
LD A,$60 ; SET COMMAND REGISTER
|
||||
CALL KBD_PUTCMD ; SEND IT
|
||||
; LD A,$60 ; XLAT ENABLED, MOUSE DISABLED, NO INTS
|
||||
@@ -88,11 +105,6 @@ KBD_INIT1:
|
||||
|
||||
CALL KBD_GETDATA ; GOBBLE UP $AA FROM POWER UP, AS NEEDED
|
||||
|
||||
; LD A,$AE ; COMMAND = ENABLE KEYBOARD
|
||||
; CALL KBD_PUTCMD ; SEND IT
|
||||
; LD A,$A7 ; COMMAND = DISABLE MOUSE
|
||||
; CALL KBD_PUTCMD ; SEND IT
|
||||
|
||||
CALL KBD_RESET ; RESET THE KEYBOARD
|
||||
CALL KBD_SETLEDS ; UPDATE LEDS BASED ON CURRENT TOGGLE STATE BITS
|
||||
CALL KBD_SETRPT ; UPDATE REPEAT RATE BASED ON CURRENT SETTING
|
||||
@@ -177,6 +189,9 @@ KBD_PUTCMD:
|
||||
; PUT A CMD BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT
|
||||
;
|
||||
LD E,A ; SAVE INCOMING VALUE IN E
|
||||
LD A,(IY+KBD_MODE) ; GET MODE BYTE
|
||||
CP KBDMODE_VRC ; VGARC KEYBOARD?
|
||||
JR Z,KBD_PUTCMD2 ; BAIL OUT
|
||||
LD B,KBD_WAITTO ; SETUP TO LOOP
|
||||
KBD_PUTCMD0:
|
||||
CALL KBD_OST ; GET OUTPUT REGISTER STATUS
|
||||
@@ -194,6 +209,7 @@ KBD_PUTCMD1:
|
||||
#ENDIF
|
||||
LD C,(IY+KBD_CMD) ; COMMAND PORT
|
||||
OUT (C),A ; WRITE IT
|
||||
KBD_PUTCMD2:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
@@ -203,6 +219,9 @@ KBD_PUTDATA:
|
||||
; PUT A DATA BYTE FROM A TO THE KEYBOARD INTERFACE WITH TIMEOUT
|
||||
;
|
||||
LD E,A ; SAVE INCOMING VALUE IN E
|
||||
LD A,(IY+KBD_MODE) ; GET MODE BYTE
|
||||
CP KBDMODE_VRC ; VGARC KEYBOARD?
|
||||
JR Z,KBD_PUTDATA2 ; BAIL OUT
|
||||
LD B,KBD_WAITTO ; SETUP TO LOOP
|
||||
KBD_PUTDATA0:
|
||||
CALL KBD_OST ; GET OUTPUT REGISTER STATUS
|
||||
@@ -219,6 +238,7 @@ KBD_PUTDATA1:
|
||||
#ENDIF
|
||||
LD C,(IY+KBD_DAT) ; DATA PORT
|
||||
OUT (C),A ; WRITE IT
|
||||
KBD_PUTDATA2:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
@@ -681,11 +701,21 @@ KBD_DECNEW: ; START NEW KEYPRESS (CLEAR ALL STATUS BITS)
|
||||
LD (KBD_STATUS),A ; CLEAR STATUS
|
||||
JP KBD_DEC1 ; RESTART THE ENGINE
|
||||
;
|
||||
; DRIVER DATA
|
||||
;
|
||||
KBD_STR_MODEPS2 .TEXT "PS2$"
|
||||
KBD_STR_MODEVRC .TEXT "VRC$"
|
||||
KBD_STR_MODEUNK .TEXT "???$"
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF (KBDKBLOUT == KBD_US)
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; MAPPING TABLES US/ENGLISH
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
KBD_MAPSTD: ; SCANCODE IS INDEX INTO TABLE TO RESULTANT LOOKUP KEYCODE
|
||||
.DB $FF,$E8,$FF,$E4,$E2,$E0,$E1,$EB,$FF,$E9,$E7,$E5,$E3,$09,'`',$FF
|
||||
.DB $FF,$B4,$B0,$FF,$B2,'q','1',$FF,$FF,$FF,'z','s','a','w','2',$FF
|
||||
@@ -722,7 +752,9 @@ KBD_MAPNUMPAD: ; KEYCODE TRANSLATION FROM NUMPAD RANGE TO STD ASCII/KEYCODES
|
||||
.DB $F3,$F7,$F5,$F8,$FF,$F9,$F2,$F6,$F4,$F0,$F1,$2F,$2A,$2D,$2B,$0D
|
||||
.DB $31,$32,$33,$34,$35,$36,$37,$38,$39,$30,$2E,$2F,$2A,$2D,$2B,$0D
|
||||
#ENDIF
|
||||
;
|
||||
#IF (KBDKBLOUT == KBD_DE)
|
||||
;
|
||||
;__________________________________________________________________________________________________
|
||||
;
|
||||
; MAPPING TABLES GERMAN
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; PIO DRIVER (SERIAL PORT)
|
||||
; PIO DRIVER (PARALLEL PORT)
|
||||
;==================================================================================================
|
||||
;
|
||||
; SETUP PARAMETER WORD:
|
||||
@@ -12,7 +12,7 @@
|
||||
;
|
||||
; THIS DRIVER IS JUST A STUB TO DETECT AND INITIALIZE PIO HARDWARE
|
||||
; IF IT EXISTS. FOR NOW, IT DOES NOT REGISTER ANY OF THE PIO CHANNELS
|
||||
; AS CHARCTER DEVICE UNITS.
|
||||
; AS CHARACTER DEVICE UNITS.
|
||||
;
|
||||
PIO_NONE .EQU 0
|
||||
PIO_PIO .EQU 1
|
||||
@@ -34,7 +34,7 @@ PIO1B_DAT .EQU PIO1BASE + $01
|
||||
PIO_PREINIT:
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
; NOTE: INTS WILL BE DISABLED WHEN PREINIT IS CALLED AND THEY MUST REMIAIN
|
||||
; NOTE: INTS WILL BE DISABLED WHEN PREINIT IS CALLED AND THEY MUST REMAIN
|
||||
; DISABLED.
|
||||
;
|
||||
CALL PIO_PROBE ; PROBE FOR CHIPS
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -41,6 +41,7 @@ bel .equ 7 ; ASCII bell
|
||||
bs .equ 8 ; ASCII backspace
|
||||
lf .equ 10 ; ASCII linefeed
|
||||
cr .equ 13 ; ASCII carriage return
|
||||
del .equ 127 ; ASCII del/rubout
|
||||
;
|
||||
cmdbuf .equ $80 ; cmd buf is in second half of page zero
|
||||
cmdmax .equ 60 ; max cmd len (arbitrary), must be < bufsiz
|
||||
@@ -179,6 +180,30 @@ start1:
|
||||
call pstr ; do it
|
||||
call clrbuf ; zero fill the cmd buffer
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
;
|
||||
ld b,BF_SYSGET ; HBIOS SysGet
|
||||
ld c,BF_SYSGET_PANEL ; ... Panel swiches value
|
||||
rst 08 ; do it
|
||||
jr nz,nofp ; no switches, skip over
|
||||
ld a,l ; put value in A
|
||||
ld (switches),a ; save it
|
||||
;
|
||||
call nl ; formatting
|
||||
ld hl,str_switches ; tag
|
||||
call pstr ; display
|
||||
ld a,(switches) ; get switches value
|
||||
call prthexbyte ; display
|
||||
;
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_AUTO ; auto boot?
|
||||
call nz,runfp ; process front panel
|
||||
;
|
||||
nofp:
|
||||
; fall thru
|
||||
;
|
||||
#endif
|
||||
;
|
||||
#if (BOOT_TIMEOUT != -1)
|
||||
; Initialize auto command timeout downcounter
|
||||
or $FF ; auto cmd active value
|
||||
@@ -211,12 +236,12 @@ prompt:
|
||||
ld hl,msg_sel ; boot select msg
|
||||
call DSKY_SHOW ; show on DSKY
|
||||
|
||||
#IF (DSKYMODE == DSKYMODE_NG)
|
||||
#if (DSKYMODE == DSKYMODE_NG)
|
||||
call DSKY_PUTLED
|
||||
.db $3f,$3f,$3f,$3f,$00,$00,$00,$00
|
||||
call DSKY_BEEP
|
||||
call DSKY_L2ON
|
||||
#ENDIF
|
||||
#endif
|
||||
|
||||
#endif
|
||||
;
|
||||
@@ -365,6 +390,125 @@ runcmd2:
|
||||
ld (bootslice),a ; save boot slice
|
||||
jp diskboot ; boot the disk unit/slice
|
||||
;
|
||||
#if (BIOS == BIOS_WBW)
|
||||
;
|
||||
;=======================================================================
|
||||
; Process Front Panel switches
|
||||
;=======================================================================
|
||||
;
|
||||
runfp:
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_DISK ; disk boot?
|
||||
jr nz,fp_diskboot ; handle disk boot
|
||||
;
|
||||
fp_romboot:
|
||||
; Handle FP ROM boot
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_OPT ; isolate options bits
|
||||
ld hl,fpapps ; rom apps cmd char list
|
||||
call addhla ; point to the right one
|
||||
ld a,(hl) ; get it
|
||||
;
|
||||
; Attempt ROM application launch
|
||||
ld ix,(ra_tbl_loc) ; point to start of ROM app tbl
|
||||
ld c,a ; save command in C
|
||||
fp_romboot1:
|
||||
ld a,(ix+ra_conkey) ; get match char
|
||||
and ~$80 ; clear "hidden entry" bit
|
||||
cp c ; compare
|
||||
jp z,romload ; if match, load it
|
||||
ld de,ra_entsiz ; table entry size
|
||||
add ix,de ; bump IX to next entry
|
||||
ld a,(ix) ; check for end
|
||||
or (ix+1) ; ... of table
|
||||
jr nz,fp_romboot1 ; loop till done
|
||||
ret ; no match, return
|
||||
;
|
||||
fpapps .db "MBFPCZNU"
|
||||
;
|
||||
fp_diskboot:
|
||||
; get count of disk units
|
||||
ld b,BF_SYSGET ; HBIOS Get function
|
||||
ld c,BF_SYSGET_DIOCNT ; HBIOS DIO Count sub fn
|
||||
rst 08 ; call HBIOS
|
||||
ld a,e ; count to A
|
||||
ld (diskcnt),a ; save it
|
||||
or a ; set flags
|
||||
ret z ; bort if no disk units
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_FLOP ; floppy switch bit
|
||||
jr nz,fp_flopboot ; handle auto flop boot
|
||||
; fall thru for auto hd boot
|
||||
;
|
||||
fp_hdboot:
|
||||
; Find the first hd with media and boot to that unit using
|
||||
; the slice specified by the FP switches.
|
||||
ld a,(diskcnt) ; get disk count
|
||||
ld b,a ; init loop counter
|
||||
ld c,0 ; init disk index
|
||||
fp_hdboot1:
|
||||
push bc ; save loop control
|
||||
ld b,BF_DIODEVICE ; HBIOS Disk Device func
|
||||
rst 08 ; unit in C, do it
|
||||
pop bc ; restore loop control
|
||||
ld a,d ; device type to A
|
||||
cp DIODEV_IDE ; type IDE or greater is HD
|
||||
jr c,fp_hdboot2 ; if not, continue loop
|
||||
push bc ; save loop control
|
||||
ld b,BF_DIOMEDIA ; HBIOS Sense Media
|
||||
ld e,1 ; perform media discovery
|
||||
rst 08 ; do it
|
||||
pop bc ; restore loop control
|
||||
jr z,fp_hdboot3 ; if has media, go boot it
|
||||
fp_hdboot2:
|
||||
inc c ; else next disk
|
||||
djnz fp_hdboot1 ; loop thru all disks
|
||||
ret ; nothing works, abort
|
||||
;
|
||||
fp_hdboot3:
|
||||
ld a,c ; disk unit to A
|
||||
ld (bootunit),a ; save it
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_OPT ; isolate slice value
|
||||
ld (bootslice),a ; save it
|
||||
jp diskboot ; do it
|
||||
;
|
||||
fp_flopboot:
|
||||
; Find the nth floppy drive and boot to that unit. The
|
||||
; floppy number is based on the option switches.
|
||||
ld a,(diskcnt) ; get disk count
|
||||
ld b,a ; init loop counter
|
||||
ld c,0 ; init disk index
|
||||
ld a,(switches) ; get switches value
|
||||
and SW_OPT ; isolate option bits
|
||||
ld e,a ; floppy unit down counter
|
||||
inc e ; pre-increment for ZF check
|
||||
fp_flopboot1:
|
||||
push bc ; save loop control
|
||||
push de ; save floppy down ctr
|
||||
ld b,BF_DIODEVICE ; HBIOS Disk Device func
|
||||
rst 08 ; unit in C, do it
|
||||
ld a,d ; device type to A
|
||||
pop de ; restore loop control
|
||||
pop bc ; restore floppy down ctr
|
||||
cp DIODEV_FD ; type FD?
|
||||
jr nz,fp_flopboot3 ; if not floppy, skip
|
||||
dec e ; decrement down ctr
|
||||
jr z,fp_flopboot2 ; if ctr expired, boot this unit
|
||||
fp_flopboot3:
|
||||
inc c ; else next disk
|
||||
djnz fp_flopboot1 ; loop thru all disks
|
||||
ret ; nothing works, abort
|
||||
;
|
||||
fp_flopboot2:
|
||||
ld a,c ; disk unit to A
|
||||
ld (bootunit),a ; save it
|
||||
xor a ; ; zero accum
|
||||
ld (bootslice),a ; floppy boot slice is always 0
|
||||
jp diskboot ; do it
|
||||
;
|
||||
#endif
|
||||
;
|
||||
;=======================================================================
|
||||
; Process a DSKY command from key in A
|
||||
;=======================================================================
|
||||
@@ -1208,20 +1352,24 @@ diskread:
|
||||
;
|
||||
clrled:
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (DIAGENABLE)
|
||||
xor a ; zero accum
|
||||
out (DIAGPORT),a ; clear diag leds
|
||||
#if (FPLED_ENABLE)
|
||||
;xor a ; zero accum
|
||||
;out (FPLED_IO),a ; clear diag leds
|
||||
ld b,BF_SYSSET ; HBIOS SysGet
|
||||
ld c,BF_SYSSET_PANEL ; ... Panel swiches value
|
||||
ld l,$00 ; all LEDs off
|
||||
rst 08 ; do it
|
||||
#endif
|
||||
#if (LEDENABLE)
|
||||
#if (LEDMODE == LEDMODE_STD)
|
||||
ld a,$FF ; led is inverted
|
||||
out (LEDPORT),a ; clear led
|
||||
ld a,$FF ; led is inverted
|
||||
out (LEDPORT),a ; clear led
|
||||
#endif
|
||||
#if (LEDMODE == LEDMODE_RTC)
|
||||
; Bits 0 and 1 of the RTC latch are for the LEDs.
|
||||
ld a,(HB_RTCVAL)
|
||||
and ~%00000011
|
||||
out (RTCIO),a ; clear led
|
||||
out (RTCIO),a ; clear led
|
||||
ld (HB_RTCVAL),a
|
||||
#endif
|
||||
#endif
|
||||
@@ -1281,6 +1429,8 @@ rdln_nxt:
|
||||
call cin ; get a character
|
||||
cp bs ; backspace?
|
||||
jr z,rdln_bs ; handle it if so
|
||||
cp del ; del/rubout?
|
||||
jr z,rdln_bs ; handle as backspace
|
||||
cp cr ; return?
|
||||
jr z,rdln_cr ; handle it if so
|
||||
;
|
||||
@@ -2165,6 +2315,7 @@ str_upd .db "XModem Flash Updater",0
|
||||
str_user .db "User App",0
|
||||
str_egg .db "",0
|
||||
str_net .db "Network Boot",0
|
||||
str_switches .db "FP Switches = 0x",0
|
||||
newcon .db 0
|
||||
newspeed .db 0
|
||||
;
|
||||
@@ -2191,6 +2342,8 @@ ra_tbl_loc .dw 0 ; points to active ra_tbl
|
||||
bootunit .db 0 ; boot disk unit
|
||||
bootslice .db 0 ; boot disk slice
|
||||
loadcnt .db 0 ; num disk sectors to load
|
||||
switches .db 0 ; front panel switches
|
||||
diskcnt .db 0 ; disk unit count value
|
||||
;
|
||||
;=======================================================================
|
||||
; Pad remainder of ROM Loader
|
||||
|
||||
@@ -282,6 +282,35 @@ SD_INVCS .EQU FALSE ; INVERT CS
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
#IF (SDMODE == SDMODE_PIO) ; Z80 PIO
|
||||
;
|
||||
; These mappings work for the RCbus Gluino card with an Arduino
|
||||
; shield attached and are the ones also used in other bitbang setups
|
||||
; directly attached to a PIO. It also works on a straight digital I/O
|
||||
; port as the config writes will disappear into oblivion harmlessly
|
||||
;
|
||||
; The Gluino mapping (ie Arduino pin mapping equivalent) is thus
|
||||
; D10 SS, D11 CIPO, D12 COPI, D13 SCL.
|
||||
;
|
||||
; For speed reasons MISO/MOSI are mapped to the top and bottom bits.
|
||||
; RomWBW doesn't yet use this fact but the optimized Fuzix routines do.
|
||||
;
|
||||
SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
|
||||
SD_IOBASE .EQU $69 ; IO BASE ADDRESS FOR SD INTERFACE
|
||||
SD_OPRREG .EQU SD_IOBASE ; OUTPUT PORT (OUTPUT: CS, CLK, DIN)
|
||||
SD_OPRDEF .EQU %11111111 ; OUTPUT PORT DEFAULT STATE
|
||||
SD_INPREG .EQU SD_IOBASE ; INPUT REGISTER
|
||||
SD_CS0 .EQU %00001000 ; SELECT
|
||||
SD_CLK .EQU %00010000 ; CLOCK
|
||||
SD_DI .EQU %00000001 ; DATA IN (CARD <- CPU) MOSI
|
||||
SD_DO .EQU %10000000 ; DATA OUT (CARD -> CPU) MISO
|
||||
SD_CINIT .EQU TRUE ; INITIALIZE OUTPUT PORT
|
||||
SD_DDR .EQU $6B ; DATA DIRECTION REGISTER
|
||||
SD_DDRVAL .EQU %11100110 ; DATA DIRECTION REGISTER VALUE
|
||||
SD_INVCS .EQU TRUE ; INVERT CS
|
||||
#ENDIF
|
||||
;
|
||||
;
|
||||
#IF (SDMODE == SDMODE_USR) ; USER DEFINED HARDWARE CONFIGURATION
|
||||
;
|
||||
; THIS MODE IS INTENDED TO ALLOW A USER TO EASILY CONFIGURE A CUSTOM
|
||||
@@ -304,6 +333,27 @@ SD_DDRVAL .EQU %00001101 ; DATA DIRECTION REGISTER VALUE
|
||||
SD_INVCS .EQU FALSE ; INVERT CS
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_Z80R) ; Z80 Retro
|
||||
;
|
||||
; SPLIT OVER TWO REGISTERS TO DRIVE CLK. THE CS LINE IS ON THE GPIO
|
||||
; WHICH IS THE SAME LATCHES THAT CONTROL MMU ON/OFF, SO DON;T GLITCH
|
||||
; THEM WHEN UPDATING!
|
||||
;
|
||||
SD_DEVMAX .EQU 1 ; NUMBER OF PHYSICAL UNITS (SOCKETS)
|
||||
SD_OPRDEF .EQU %00000001 ; OUTPUT PORT DEFAULT STATE
|
||||
SD_OPRMSK .EQU %00000101 ; OUTPUT PORT MASK
|
||||
SD_OPRREG .EQU $64 ; CS VIA GPIO
|
||||
SD_IOBASE .EQU $68 ; 68/69 FOR OUTPUT
|
||||
SD_IOREG .EQU SD_IOBASE ; INPUT REGISTER
|
||||
SD_IOCLK .EQU SD_IOBASE+1 ; CLOCK IS OFF A0
|
||||
SD_GPIO .EQU $64 ; MISO IS ON THE GPIO
|
||||
SD_CS0 .EQU %00000100 ; SELECT
|
||||
SD_DI .EQU %00000001 ; DATA IN (CARD <- CPU) MOSI
|
||||
SD_DO .EQU %00000001 ; DATA OUT (CARD -> CPU) MISO
|
||||
SD_CINIT .EQU FALSE ; INITIALIZE OUTPUT PORT
|
||||
SD_INVCS .EQU FALSE ; INVERT CS
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SD_DEVCNT > SD_DEVMAX)
|
||||
.ECHO "*** ERROR: SDCNT EXCEEDS MAXIMUM SUPPORTED BY INTERFACE!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR
|
||||
@@ -510,6 +560,22 @@ SD_INIT:
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_PIO)
|
||||
PRTS(" MODE=PIO$")
|
||||
PRTS(" IO=0x$")
|
||||
LD A,SD_IOBASE
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_Z80R)
|
||||
PRTS(" MODE=Z80R$")
|
||||
PRTS(" IO=0x$")
|
||||
LD A,SD_IOBASE
|
||||
CALL PRTHEXBYTE
|
||||
LD A,SD_OPRDEF
|
||||
LD (SD_OPRVAL),A
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_USR)
|
||||
PRTS(" MODE=USER$")
|
||||
PRTS(" IO=0x$")
|
||||
@@ -1736,6 +1802,17 @@ SD_SETUP:
|
||||
OUT (SD_OPRREG),A ; OPRREG == SIO_MCR
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_PIO)
|
||||
LD A,SD_OPRDEF ; All output bits high
|
||||
OUT (SD_OPRREG),A
|
||||
LD A,$CF ; Port B mode 3
|
||||
OUT (SD_DDR),A
|
||||
LD A,SD_DDRVAL ; Set the direction bits
|
||||
OUT (SD_DDR),A
|
||||
LD A,$07 ; No interrupts
|
||||
OUT (SD_DDR),A
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SDMODE == SDMODE_USR)
|
||||
#IF (SD_CINIT == TRUE)
|
||||
LD A,(SD_OPRMSK) ; GET OUTPUT PORT MASK
|
||||
@@ -1863,7 +1940,7 @@ SD_DESELECT:
|
||||
AND ~SD_CS0
|
||||
#ENDIF
|
||||
; ADJUST BIT(S) FOR INTERFACES USING INVERTED CS BITS
|
||||
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC))
|
||||
#IF ((SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_UART) | (SDMODE == SDMODE_SC) | (SDMODE == SDMODE_PIO) | (SDMODE == SDMODE_Z80R))
|
||||
#IF ((SDMODE == SDMODE_SC) & (SD_DEVCNT > 1))
|
||||
XOR SD_CS0 | SD_CS1
|
||||
#ELSE
|
||||
@@ -1910,9 +1987,48 @@ SD_PUT:
|
||||
SET 4,A ; SET TRANSMIT ENABLE
|
||||
OUT0 (SD_CNTR),A
|
||||
#ELSE
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
|
||||
#IF (SDMODE == SDMODE_Z80R)
|
||||
; USE C - THE CALLING CODE FOR COMMAND SEND FAILS TO SAVE HL/DE
|
||||
; WHILST THE OTHER PATHS DO ?
|
||||
LD C,A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
RL C
|
||||
RLA
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
#ELSE
|
||||
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
XOR $FF ; DI IS INVERTED ON UART
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
LD C,A ; C=BYTE TO SEND
|
||||
LD B,8 ; SEND 8 BITS (LOOP 8 TIMES)
|
||||
LD A,(SD_OPRVAL) ; LOAD CURRENT OPR VALUE
|
||||
@@ -1928,6 +2044,7 @@ SD_PUT1:
|
||||
DJNZ SD_PUT1 ; REPEAT FOR ALL 8 BITS
|
||||
LD A,(SD_OPRVAL) ; LOAD CURRENT OPR VALUE
|
||||
OUT (SD_OPRREG),A ; LEAVE WITH CLOCK LOW
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
RET ; DONE
|
||||
@@ -1950,34 +2067,83 @@ SD_GET:
|
||||
CALL MIRROR ; MSB<-->LSB MIRROR BITS
|
||||
LD A,C ; KEEP RESULT
|
||||
#ELSE
|
||||
#IF (SDMODE == SDMODE_Z80R)
|
||||
; MUST PRESERVE HL,DE
|
||||
PUSH DE
|
||||
LD A,1
|
||||
LD C,SD_GPIO
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
OUT (SD_IOREG),A
|
||||
OUT (SD_IOCLK),A
|
||||
IN B,(C)
|
||||
RR B
|
||||
RL E
|
||||
LD A,E
|
||||
POP DE
|
||||
#ELSE
|
||||
LD B,8 ; RECEIVE 8 BITS (LOOP 8 TIMES)
|
||||
LD A,(SD_OPRVAL) ; LOAD CURRENT OPR VALUE
|
||||
SD_GET1:
|
||||
XOR SD_CLK ; TOGGLE CLOCK
|
||||
OUT (SD_OPRREG),A ; UPDATE CLOCK
|
||||
IN A,(SD_INPREG) ; READ THE DATA WHILE CLOCK IS ACTIVE
|
||||
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_PPI))
|
||||
#IF ((SDMODE == SDMODE_JUHA) | (SDMODE == SDMODE_PPI) | (SDMODE == SDMODE_PIO))
|
||||
RLA ; ROTATE INP:7 INTO CF
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_N8)
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_N8)
|
||||
RLA ; ROTATE INP:6 INTO CF
|
||||
RLA ; "
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
RLA ; ROTATE INP:5 INTO CF
|
||||
RLA ; "
|
||||
RLA ; "
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_DSD)
|
||||
#ENDIF
|
||||
#IF (SDMODE == SDMODE_DSD)
|
||||
RRA ; ROTATE INP:0 INTO CF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
RL C ; ROTATE CF INTO C:0
|
||||
LD A,(SD_OPRVAL) ; BACK TO INITIAL VALUES (TOGGLE CLOCK)
|
||||
OUT (SD_OPRREG),A ; DO IT
|
||||
DJNZ SD_GET1 ; REPEAT FOR ALL 8 BITS
|
||||
LD A,C ; GET BYTE RECEIVED INTO A
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
#IF (SDMODE == SDMODE_UART)
|
||||
XOR $FF ; DO IS INVERTED ON UART
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
|
||||
@@ -60,13 +60,20 @@ SIO0B_CMD .EQU SIO0BASE + $03
|
||||
SIO0B_DAT .EQU SIO0BASE + $01
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SIO0MODE == SIOMODE_ZP)
|
||||
#IF (SIO0MODE == SIOMODE_ZP)
|
||||
SIO0A_CMD .EQU SIO0BASE + $06
|
||||
SIO0A_DAT .EQU SIO0BASE + $04
|
||||
SIO0B_CMD .EQU SIO0BASE + $07
|
||||
SIO0B_DAT .EQU SIO0BASE + $05
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SIO0MODE == SIOMODE_Z80R)
|
||||
SIO0A_CMD .EQU SIO0BASE + $03
|
||||
SIO0A_DAT .EQU SIO0BASE + $01
|
||||
SIO0B_CMD .EQU SIO0BASE + $02
|
||||
SIO0B_DAT .EQU SIO0BASE + $00
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SIOCNT >= 2)
|
||||
;
|
||||
#IF (SIO1MODE == SIOMODE_STD)
|
||||
@@ -97,6 +104,13 @@ SIO1B_CMD .EQU SIO1BASE + $07
|
||||
SIO1B_DAT .EQU SIO1BASE + $05
|
||||
#ENDIF
|
||||
;
|
||||
#IF (SIO1MODE == SIOMODE_Z80R)
|
||||
SIO1A_CMD .EQU SIO0BASE + $03
|
||||
SIO1A_DAT .EQU SIO0BASE + $01
|
||||
SIO1B_CMD .EQU SIO0BASE + $02
|
||||
SIO1B_DAT .EQU SIO0BASE + $00
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
SIO_PREINIT:
|
||||
@@ -785,10 +799,14 @@ SIO_INITBROK:
|
||||
;
|
||||
; SET RECEIVE DATA BITS WR3
|
||||
;
|
||||
LD A,D ; HI WORD OF CONFIG
|
||||
AND %00100000 ; BIT 5 IS AUTO-CTS
|
||||
LD H,A ; SAVE IN H
|
||||
LD A,L ; DATA BITS
|
||||
AND $C0 ; CLEAR OTHER BITS
|
||||
OR $21 ; CTS/DCD AUTO, RX ENABLE
|
||||
;
|
||||
OR $01 ; RX ENABLE
|
||||
OR H ; COMBINE WITH AUTO-CTS
|
||||
;
|
||||
LD (SIO_WR3),A
|
||||
;
|
||||
; SAVE CONFIG PERMANENTLY NOW
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
; The purpose of this file is to define generic symbols and to include
|
||||
; the requested build configuraton file to bring in platform specifics.
|
||||
; the requested build configuration file to bring in platform specifics.
|
||||
|
||||
; There are several hardware platforms supported by SBC.
|
||||
; 1. SBC Z80 SBC (v1 or v2) w/ ECB interface
|
||||
@@ -16,6 +16,7 @@
|
||||
; 12. RCZ280 Z280 CPU on RCBUS or ZZ80MB
|
||||
; 13. MBC Andrew Lynch's Multi Board Computer
|
||||
; 14. RPH Andrew Lynch's RHYOPHYRE Graphics Computer
|
||||
; 15. Z80RETRO Peter Wilson's Z80-Retro Computer
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;
|
||||
@@ -91,6 +92,15 @@ FDM360 .EQU 2 ; 5.25" FLOPPY, 360KB, 2 SIDES, 40 TRKS, 9 SECTORS
|
||||
FDM120 .EQU 3 ; 5.25" FLOPPY, 1.2MB, 2 SIDES, 80 TRKS, 15 SECTORS
|
||||
FDM111 .EQU 4 ; 8" FLOPPY, 1.11MB, 2 SIDES, 74 TRKS, 15 SECTORS
|
||||
;
|
||||
; FLOPPY DISK TYPE
|
||||
;
|
||||
FDT_NONE .EQU 0 ; NONE
|
||||
FDT_3DD .EQU 1 ; 3.5" FLOPPY, DOUBLE DENSITY
|
||||
FDT_3HD .EQU 2 ; 3.5" FLOPPY, HIGH DENSITY
|
||||
FDT_5DD .EQU 3 ; 5.25" FLOPPY, DOUBLE DENSITY
|
||||
FDT_5HD .EQU 4 ; 5.25" FLOPPY, HIGH DNSITY
|
||||
FDT_8 .EQU 5 ; 8" FLOPPY, DOUBLE DENSITY
|
||||
;
|
||||
; ZILOG CTC MODE SELECTIONS
|
||||
;
|
||||
CTCMODE_NONE .EQU 0 ; NO CTC
|
||||
@@ -116,6 +126,7 @@ SIOMODE_STD .EQU 1 ; STD SIO REG CFG (EZZ80, KIO)
|
||||
SIOMODE_RC .EQU 2 ; RCBUS SIO MODULE (SPENCER OWEN)
|
||||
SIOMODE_SMB .EQU 3 ; RCBUS SIO MODULE (SCOTT BAKER)
|
||||
SIOMODE_ZP .EQU 4 ; ECB-ZILOG PERIPHERALS BOARD
|
||||
SIOMODE_Z80R .EQU 5 ; SIO A/B SWAPPED
|
||||
;
|
||||
; TYPE OF CONSOLE BELL TO USE
|
||||
;
|
||||
@@ -182,6 +193,8 @@ SDMODE_MK4 .EQU 7 ; MARK IV
|
||||
SDMODE_SC .EQU 8 ; SC (Steve Cousins)
|
||||
SDMODE_MT .EQU 9 ; MT (Shift register SPI WIZNET for RCBUS)
|
||||
SDMODE_USR .EQU 10 ; USER DEFINED (in sd.asm) (NOT COMPLETE)
|
||||
SDMODE_PIO .EQU 11 ; Z80 PIO bitbang
|
||||
SDMODE_Z80R .EQU 12 ; Z80 Retro
|
||||
;
|
||||
; AY SOUND CHIP MODE SELECTIONS
|
||||
;
|
||||
@@ -244,6 +257,12 @@ DMAMODE_Z280 .EQU 3 ; Z280 INTEGRATED DMA
|
||||
DMAMODE_RC .EQU 4 ; RCBUS Z80 DMA
|
||||
DMAMODE_MBC .EQU 5 ; MBC
|
||||
;
|
||||
; KEYBOARD MODE SELECTIONS
|
||||
;
|
||||
KBDMODE_NONE .EQU 0
|
||||
KBDMODE_PS2 .EQU 1 ; PS/2 KEYBOARD CONTROLLER
|
||||
KBDMODE_VRC .EQU 2 ; VGARC KEYBOARD CONTROLLER
|
||||
;
|
||||
; SERIAL DEVICE CONFIGURATION CONSTANTS
|
||||
;
|
||||
SER_DATA5 .EQU 0 << 0
|
||||
|
||||
@@ -942,10 +942,10 @@ TMS_IDAT:
|
||||
.DB TMS_PPIX ; PPI CONTROL PORT
|
||||
#ENDIF
|
||||
#IF ((TMSMODE == TMSMODE_MSXKBD) | (TMSMODE == TMSMODE_MBC))
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB TMS_KBDST ; 8242 CMD/STATUS PORT
|
||||
.DB TMS_KBDDATA ; 8242 DATA PORT
|
||||
.DB 0 ; FILLER
|
||||
.DB 0 ; FILER
|
||||
#ENDIF
|
||||
;
|
||||
.DB TMS_DATREG
|
||||
|
||||
@@ -78,11 +78,13 @@ UART1_IVT .EQU IVT(INT_UART1)
|
||||
;
|
||||
;
|
||||
UART_PREINIT:
|
||||
#IF (UART4)
|
||||
;
|
||||
; INIT UART4 BOARD CONFIG REGISTER (NO HARM IF IT IS NOT THERE)
|
||||
;
|
||||
LD A,$80 ; SELECT 7.3728MHZ OSC & LOCK CONFIG REGISTER
|
||||
OUT (UART4BASE+$0F),A ; DO IT
|
||||
#ENDIF
|
||||
;
|
||||
; SETUP THE DISPATCH TABLE ENTRIES
|
||||
;
|
||||
@@ -737,7 +739,7 @@ UART_DETECT2:
|
||||
LD A,C ; RETURN RESULT IN A
|
||||
RET
|
||||
;
|
||||
; DETERMINE TEH UART CHIP VARIANT AND RETURN IN A
|
||||
; DETERMINE THE UART CHIP VARIANT AND RETURN IN A
|
||||
;
|
||||
UART_CHIP:
|
||||
;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
; WARNING: This code does not seem to be working on Z280. WBW - 5/3/2023
|
||||
;
|
||||
; Size-optimized LZSA2 decompressor by spke & uniabis (134 bytes)
|
||||
;
|
||||
|
||||
@@ -1039,5 +1039,6 @@ REGS_VGA:
|
||||
;==================================================================================================
|
||||
;
|
||||
VGA_IDAT:
|
||||
.DB KBDMODE_PS2 ; PS/2 8242 KEYBOARD CONTROLLER
|
||||
.DB VGA_KBDST
|
||||
.DB VGA_KBDDATA
|
||||
|
||||
647
Source/HBIOS/vrc.asm
Normal file
647
Source/HBIOS/vrc.asm
Normal file
@@ -0,0 +1,647 @@
|
||||
;======================================================================
|
||||
; VIDEO DRIVER FOR VGARC
|
||||
; https://www.retrobrewcomputers.org/doku.php?id=builderpages:plasmo:vgarc1:vgarc1home
|
||||
;
|
||||
; WRITTEN BY: WAYNE WARTHEN -- 5/1/2023
|
||||
;======================================================================
|
||||
;
|
||||
; TODO:
|
||||
;
|
||||
;======================================================================
|
||||
; VGARC DRIVER - CONSTANTS
|
||||
;======================================================================
|
||||
;
|
||||
VRC_BASE .EQU $00 ; FIRST CHAR DATA PORT
|
||||
VRC_FONTBASE .EQU VRC_BASE + $0C ; FIRST FONT PORT
|
||||
VRC_SCROLLIO .EQU $F5 ; SCROLL REG PORT
|
||||
;
|
||||
VRC_KBDDATA .EQU $F4
|
||||
VRC_KBDST .EQU $F5
|
||||
;
|
||||
VRC_ROWS .EQU 48
|
||||
VRC_COLS .EQU 64
|
||||
;
|
||||
#DEFINE USEFONT8X8
|
||||
#DEFINE VRC_FONT FONT8X8
|
||||
;
|
||||
TERMENABLE .SET TRUE ; INCLUDE TERMINAL PSEUDODEVICE DRIVER
|
||||
;
|
||||
;======================================================================
|
||||
; VRC DRIVER - INITIALIZATION
|
||||
;======================================================================
|
||||
;
|
||||
VRC_INIT:
|
||||
LD IY,VRC_IDAT ; POINTER TO INSTANCE DATA
|
||||
;
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("VRC: IO=0x$")
|
||||
LD A,VRC_BASE
|
||||
CALL PRTHEXBYTE
|
||||
CALL VRC_PROBE ; CHECK FOR HW PRESENCE
|
||||
JR Z,VRC_INIT1 ; CONTINUE IF HW PRESENT
|
||||
;
|
||||
; HARDWARE NOT PRESENT
|
||||
PRTS(" NOT PRESENT$")
|
||||
OR $FF ; SIGNAL FAILURE
|
||||
RET
|
||||
;
|
||||
VRC_INIT1:
|
||||
; RECORD DRIVER ACTIVE
|
||||
OR $FF
|
||||
LD (VRC_ACTIVE),A
|
||||
; DISPLAY CONSOLE DIMENSIONS
|
||||
LD A,VRC_COLS
|
||||
CALL PC_SPACE
|
||||
CALL PRTDECB
|
||||
LD A,'X'
|
||||
CALL COUT
|
||||
LD A,VRC_ROWS
|
||||
CALL PRTDECB
|
||||
PRTS(" TEXT$")
|
||||
|
||||
; HARDWARE INITIALIZATION
|
||||
CALL VRC_CRTINIT ; SETUP THE VGARC CHIP REGISTERS
|
||||
CALL VRC_LOADFONT ; LOAD FONT DATA FROM ROM TO VGARC STORAGE
|
||||
CALL VRC_VDARES ; RESET
|
||||
CALL KBD_INIT ; INITIALIZE KEYBOARD DRIVER
|
||||
|
||||
; ADD OURSELVES TO VDA DISPATCH TABLE
|
||||
LD BC,VRC_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
LD DE,VRC_IDAT ; DE := VGARC INSTANCE DATA PTR
|
||||
CALL VDA_ADDENT ; ADD ENTRY, A := UNIT ASSIGNED
|
||||
|
||||
; INITIALIZE EMULATION
|
||||
LD C,A ; C := ASSIGNED VIDEO DEVICE NUM
|
||||
LD DE,VRC_FNTBL ; DE := FUNCTION TABLE ADDRESS
|
||||
LD HL,VRC_IDAT ; HL := VGARC INSTANCE DATA PTR
|
||||
CALL TERM_ATTACH ; DO IT
|
||||
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
;======================================================================
|
||||
; VGARC DRIVER - VIDEO DISPLAY ADAPTER (VDA) FUNCTIONS
|
||||
;======================================================================
|
||||
;
|
||||
VRC_FNTBL:
|
||||
.DW VRC_VDAINI
|
||||
.DW VRC_VDAQRY
|
||||
.DW VRC_VDARES
|
||||
.DW VRC_VDADEV
|
||||
.DW VRC_VDASCS
|
||||
.DW VRC_VDASCP
|
||||
.DW VRC_VDASAT
|
||||
.DW VRC_VDASCO
|
||||
.DW VRC_VDAWRC
|
||||
.DW VRC_VDAFIL
|
||||
.DW VRC_VDACPY
|
||||
.DW VRC_VDASCR
|
||||
.DW KBD_STAT
|
||||
.DW KBD_FLUSH
|
||||
.DW KBD_READ
|
||||
.DW VRC_VDARDC
|
||||
#IF (($ - VRC_FNTBL) != (VDA_FNCNT * 2))
|
||||
.ECHO "*** INVALID VRC FUNCTION TABLE ***\n"
|
||||
!!!!!
|
||||
#ENDIF
|
||||
|
||||
VRC_VDAINI:
|
||||
; RESET VDA
|
||||
; CURRENTLY IGNORES VIDEO MODE AND BITMAP DATA
|
||||
CALL VRC_VDARES ; RESET VDA
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDAQRY:
|
||||
LD C,$00 ; MODE ZERO IS ALL WE KNOW
|
||||
LD D,VRC_ROWS ; ROWS
|
||||
LD E,VRC_COLS ; COLS
|
||||
LD HL,0 ; EXTRACTION OF CURRENT BITMAP DATA NOT SUPPORTED YET
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDARES:
|
||||
XOR A ; CLEAR ATTRIBUTES (REV VIDEO OFF)
|
||||
LD (VRC_ATTR),A ; SAVE IT
|
||||
DEC A ; INIT CUR NESTING, INIT TO HIDDEN
|
||||
LD (VRC_CURSOR),A ; SAVE IT
|
||||
LD HL,0 ; ZERO THE SCROLL OFFSET
|
||||
LD (VRC_OFF),HL ; SAVE VALUE
|
||||
XOR A ; ZERO
|
||||
LD (VRC_LOFF),A ; SCROLL OFFSET (LINES)
|
||||
LD A,' ' ; BLANK THE SCREEN
|
||||
LD DE,VRC_ROWS*VRC_COLS ; FILL ENTIRE BUFFER
|
||||
CALL VRC_FILL ; DO IT
|
||||
LD DE,0 ; ROW = 0, COL = 0
|
||||
CALL VRC_XY ; SEND CURSOR TO TOP LEFT
|
||||
CALL VRC_SHOWCUR ; NOW SHOW THE CURSOR
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDADEV:
|
||||
LD D,VDADEV_VRC ; D := DEVICE TYPE
|
||||
LD E,0 ; E := PHYSICAL UNIT IS ALWAYS ZERO
|
||||
LD H,0 ; H := 0, DRIVER HAS NO MODES
|
||||
LD L,VRC_BASE ; L := BASE I/O ADDRESS
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDASCS:
|
||||
SYSCHKERR(ERR_NOTIMPL) ; NOT IMPLEMENTED (YET)
|
||||
RET
|
||||
|
||||
VRC_VDASCP:
|
||||
CALL VRC_XY ; SET CURSOR POSITION
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDASAT:
|
||||
; INCOMING IS: -----RUB (R=REVERSE, U=UNDERLINE, B=BLINK)
|
||||
;
|
||||
; ALL WE SUPPORT IS REVERSE. MOVE BIT TO BIT 7 OF ATTR BYTE
|
||||
LD A,E ; GET ATTR VALUE
|
||||
RRCA ; ROTATE TO BIT 7
|
||||
RRCA
|
||||
RRCA
|
||||
AND $80 ; ENSURE ONLY BIT 7
|
||||
LD (VRC_ATTR),A ; SAVE IT
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
|
||||
VRC_VDASCO:
|
||||
; INCOMING IS: IBGRIBGR (I=INTENSITY, B=BLUE, G=GREEN, R=RED)
|
||||
;
|
||||
; NONE SUPPORTED, IGNORE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
|
||||
VRC_VDAWRC:
|
||||
LD A,E ; CHARACTER TO WRITE GOES IN A
|
||||
CALL VRC_PUTCHAR ; PUT IT ON THE SCREEN
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDAFIL:
|
||||
LD A,E ; FILL CHARACTER GOES IN A
|
||||
EX DE,HL ; FILL LENGTH GOES IN DE
|
||||
CALL VRC_FILL ; DO THE FILL
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
|
||||
VRC_VDACPY:
|
||||
; LENGTH IN HL, SOURCE ROW/COL IN DE, DEST IS VRC_POS
|
||||
; BLKCPY USES: HL=SOURCE, DE=DEST, BC=COUNT
|
||||
PUSH HL ; SAVE LENGTH
|
||||
CALL VRC_XY2IDX ; ROW/COL IN DE -> SOURCE ADR IN HL
|
||||
POP BC ; RECOVER LENGTH IN BC
|
||||
LD DE,(VRC_POS) ; PUT DEST IN DE
|
||||
JP VRC_BLKCPY ; DO A BLOCK COPY
|
||||
|
||||
VRC_VDASCR:
|
||||
LD A,E ; LOAD E INTO A
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; IF ZERO, WE ARE DONE
|
||||
PUSH DE ; SAVE E
|
||||
JP M,VRC_VDASCR1 ; E IS NEGATIVE, REVERSE SCROLL
|
||||
CALL VRC_SCROLL ; SCROLL FORWARD ONE LINE
|
||||
POP DE ; RECOVER E
|
||||
DEC E ; DECREMENT IT
|
||||
JR VRC_VDASCR ; LOOP
|
||||
VRC_VDASCR1:
|
||||
CALL VRC_RSCROLL ; SCROLL REVERSE ONE LINE
|
||||
POP DE ; RECOVER E
|
||||
INC E ; INCREMENT IT
|
||||
JR VRC_VDASCR ; LOOP
|
||||
|
||||
;----------------------------------------------------------------------
|
||||
; READ VALUE AT CURRENT VDU BUFFER POSITION
|
||||
; RETURN E = CHARACTER, B = COLOUR, C = ATTRIBUTES
|
||||
;----------------------------------------------------------------------
|
||||
|
||||
VRC_VDARDC:
|
||||
OR $FF ; UNSUPPORTED FUNCTION
|
||||
RET
|
||||
;
|
||||
;======================================================================
|
||||
; VGARC DRIVER - PRIVATE DRIVER FUNCTIONS
|
||||
;======================================================================
|
||||
;
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; PROBE FOR VGARC HARDWARE
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
; ON RETURN, ZF SET INDICATES HARDWARE FOUND
|
||||
;
|
||||
VRC_PROBE:
|
||||
LD C,VRC_BASE + 1 ; +1 AVOIDS LEDS
|
||||
LD B,$00
|
||||
LD A,$AA
|
||||
OUT (C),A
|
||||
INC B
|
||||
LD A,$55
|
||||
OUT (C),A
|
||||
DEC B
|
||||
IN A,(C)
|
||||
CP $AA
|
||||
RET NZ
|
||||
INC B
|
||||
IN A,(C)
|
||||
CP $55
|
||||
RET
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; CRTC DISPLAY CONTROLLER CHIP INITIALIZATION
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_CRTINIT:
|
||||
XOR A ; ZERO ACCUM
|
||||
LD A,$80 ; ACTIVATE AND ZERO HW SCROLL
|
||||
OUT (VRC_SCROLLIO),A ; RESET HW SCROLL
|
||||
RET ; DONE
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; LOAD FONT DATA
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_LOADFONT:
|
||||
;
|
||||
#IF USELZSA2
|
||||
LD (VRC_STACK),SP ; SAVE STACK
|
||||
LD HL,(VRC_STACK) ; AND SHIFT IT
|
||||
LD DE,$2000 ; DOWN 4KB TO
|
||||
OR A ; CREATE A
|
||||
SBC HL,DE ; DECOMPRESSION BUFFER
|
||||
LD SP,HL ; HL POINTS TO BUFFER
|
||||
EX DE,HL ; START OF STACK BUFFER
|
||||
PUSH DE ; SAVE IT
|
||||
LD HL,VRC_FONT ; START OF FONT DATA
|
||||
CALL DLZSA2 ; DECOMPRESS TO DE
|
||||
POP HL ; RECALL STACK BUFFER POSITION
|
||||
#ELSE
|
||||
LD HL,VRC_FONT ; START OF FONT DATA
|
||||
#ENDIF
|
||||
;
|
||||
LD DE,0+(128*8)-1 ; LENGTH OF FONT DATA - 1
|
||||
ADD HL,DE ; ADD TO HL
|
||||
; LD HL,ENDFONT-1
|
||||
LD BC,VRC_FONTBASE+3 ; WORK BACKWARDS
|
||||
OTDR ; DO 4 PAGES
|
||||
DEC C
|
||||
OTDR
|
||||
DEC C
|
||||
OTDR
|
||||
DEC C
|
||||
OTDR
|
||||
DEC C
|
||||
;
|
||||
#IF USELZSA2
|
||||
LD HL,(VRC_STACK) ; ERASE DECOMPRESS BUFFER
|
||||
LD SP,HL ; BY RESTORING THE STACK
|
||||
RET ; DONE
|
||||
VRC_STACK .DW 0
|
||||
#ELSE
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; SET CURSOR POSITION TO ROW IN D AND COLUMN IN E
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_XY:
|
||||
PUSH DE ; SAVE NEW POSITION FOR NOW
|
||||
CALL VRC_HIDECUR ; HIDE THE CURSOR
|
||||
POP DE ; RECOVER INCOMING ROW/COL
|
||||
CALL VRC_XY2IDX ; CONVERT ROW/COL TO BUF IDX
|
||||
LD (VRC_POS),HL ; SAVE THE RESULT (DISPLAY POSITION)
|
||||
JP VRC_SHOWCUR ; SHOW THE CURSOR AND EXIT
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; CONVERT XY COORDINATES IN DE INTO LINEAR INDEX IN HL
|
||||
; D=ROW, E=COL
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_XY2IDX:
|
||||
LD A,E ; SAVE COLUMN NUMBER IN A
|
||||
LD H,D ; SET H TO ROW NUMBER
|
||||
LD E,VRC_COLS ; SET E TO ROW LENGTH
|
||||
CALL MULT8 ; MULTIPLY TO GET ROW OFFSET, H * E = HL, E=0, B=0
|
||||
LD E,A ; GET COLUMN BACK
|
||||
ADD HL,DE ; ADD IT IN
|
||||
|
||||
LD DE,(VRC_OFF) ; SCREEN OFFSET
|
||||
ADD HL,DE ; ADJUST
|
||||
;
|
||||
PUSH HL ; SAVE IT
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; SUBTRACT FROM HL
|
||||
JR C,VRC_XY2IDX1 ; BYPASS IF NO WRAP
|
||||
POP DE ; THROW AWAY TOS
|
||||
RET ; DONE
|
||||
VRC_XY2IDX1:
|
||||
POP HL ; NO WRAP, RESTORE
|
||||
RET ; RETURN
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; SHOW OR HIDE CURSOR
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
; VGARC USES HIGH BIT OF CHAR VALUE FOR INVERSE VIDEO. WE HAVE NO
|
||||
; HARDWARE CURSOR, SO WE LEVERAGE THE INVERSE VIDEO TO SHOW A CURSOR.
|
||||
; SINCE ANY OPERATION THAT POTENTIALLY OVERWERITES THE CURSOR POSITION
|
||||
; COULD DESTROY THE CURSOR, WE HAVE A COUPLE FUNCTIONS TO SHOW AND
|
||||
; HIDE THE CURSOR. A VARIABLE IS USED TO TRACK THE SHOW/HIDE
|
||||
; OPERATIONS BECAUSE WE MAY HAVE NESTED CALLS. ZERO MEANS SHOW
|
||||
; REAL CURSOR. ANY VALUE LESS THAN ZERO MEANS HIDDEN.
|
||||
;
|
||||
VRC_SHOWCUR:
|
||||
LD A,(VRC_CURSOR) ; GET CURRENT NESTING VALUE
|
||||
INC A ; INCREMENT TO SHOW
|
||||
LD (VRC_CURSOR),A ; SAVE IT
|
||||
RET NZ ; ALREADY SHOWN, NOTHING TO DO
|
||||
;
|
||||
; WE TRANSITIONED FROM NON-ZERO TO ZERO. NEED TO ACTUALLY
|
||||
; SHOW THE CURSOR NOW.
|
||||
;
|
||||
JR VRC_FLIPCUR
|
||||
;
|
||||
VRC_HIDECUR:
|
||||
LD A,(VRC_CURSOR) ; GET CURRENT NESTING VALUE
|
||||
DEC A ; DECREMENT TO HIDE
|
||||
LD (VRC_CURSOR),A ; SAVE IT
|
||||
INC A ; BACK TO ORIGINAL VALUE
|
||||
RET NZ ; ALREADY HIDDEN, NOTHING TO DO
|
||||
;
|
||||
; WE TRANSITIONED FROM ZERO TO NEGATIVE. NEED TO ACTUALLY
|
||||
; HIDE THE CURSOR NOW. SINCE SHOWING AND HIDING ARE THE
|
||||
; SAME OPERATION (FLIP REV VID BIT), WE REUSE CODE ABOVE.
|
||||
;
|
||||
JR VRC_FLIPCUR
|
||||
;
|
||||
VRC_FLIPCUR:
|
||||
; SHOWING OR HIDING THE CURSOR IS THE SAME OPERATION.
|
||||
; SO WE USE COMMON CODE TO FLIP THE REV VID BIT.
|
||||
LD HL,(VRC_POS) ; CURSOR POSITION
|
||||
LD B,L ; INVERT FOR I/O
|
||||
LD C,H
|
||||
IN A,(C) ; GET VALUE
|
||||
XOR $80 ; FLIP REV VID BIT
|
||||
OUT (C),A ; WRITE NEW VALUE
|
||||
RET
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; WRITE VALUE IN A TO CURRENT VDU BUFFER POSITION, ADVANCE CURSOR
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_PUTCHAR:
|
||||
; WRITE CHAR AT CURRENT CURSOR POSITION. SINCE THE CURSOR
|
||||
; IS JUST THE HIGH BIT (REV VIDEO), WE FIRST TURN OFF THE
|
||||
; CURSOR, WRITE THE CHAR, UPDATE THE CURSOR POSITION, AND
|
||||
; FINALLY TURN THE CURSOR BACK ON AT THE NEW POSITION.
|
||||
;
|
||||
PUSH AF ; SAVE INCOMING CHAR
|
||||
CALL VRC_HIDECUR ; HIDE CURSOR
|
||||
POP AF
|
||||
LD HL,(VRC_POS) ; GET CUR BUF POSITION
|
||||
LD B,L ; INVERT FOR I/O
|
||||
LD C,H
|
||||
AND $7F ; SUPPRESS ATTRIBUTE (HI BIT)
|
||||
LD L,A ; PUT VALUE IN L
|
||||
LD A,(VRC_ATTR) ; GET CURRENT ATTRIBUTE
|
||||
OR L ; COMBINE WITH CHAR VALUE
|
||||
OUT (C),A ; WRITE VALUE TO BUFFER
|
||||
;
|
||||
; SET CURSOR AT NEW POSITION
|
||||
LD HL,(VRC_POS) ; GET CURRENT BUF OFFSET
|
||||
INC HL ; INCREMENT
|
||||
PUSH HL ; SAVE IT
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; SUBTRACT FROM HL
|
||||
JR C,VRC_PUTCHAR1 ; BYPASS IF NO WRAP
|
||||
POP DE ; THROW AWAY TOS
|
||||
LD HL,0 ; BACK TO START
|
||||
JR VRC_PUTCHAR2 ; CONTINUE
|
||||
VRC_PUTCHAR1:
|
||||
POP HL ; NO WRAP, RESTORE
|
||||
VRC_PUTCHAR2:
|
||||
LD (VRC_POS),HL ; SAVE NEW POSITION
|
||||
JP VRC_SHOWCUR ; SHOW IT AND RETURN
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; FILL AREA IN BUFFER WITH SPECIFIED CHARACTER AND CURRENT COLOR/ATTRIBUTE
|
||||
; STARTING AT THE CURRENT FRAME BUFFER POSITION
|
||||
; A: FILL CHARACTER
|
||||
; DE: NUMBER OF CHARACTERS TO FILL
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_FILL:
|
||||
LD (VRC_FILL1+1),A ; SAVE FILL CHAR
|
||||
PUSH DE ; SAVE INCOMING DE
|
||||
CALL VRC_HIDECUR ; HIDE CURSOR
|
||||
POP DE ; RESTORE INCOMING DE
|
||||
LD HL,(VRC_POS) ; STARTING POSITION
|
||||
;
|
||||
VRC_FILL1:
|
||||
LD A,$FF ; FILL CHAR
|
||||
LD B,L ; INVERT FOR I/O
|
||||
LD C,H
|
||||
OUT (C),A ; PUT CHAR TO BUF
|
||||
;
|
||||
DEC DE ; DECREMENT COUNT
|
||||
LD A,D ; TEST FOR ZERO
|
||||
OR E
|
||||
JP Z,VRC_SHOWCUR ; EXIT VIA SHOW CURSOR IF DONE
|
||||
;
|
||||
INC HL ; INCREMENT
|
||||
PUSH HL ; SAVE IT
|
||||
LD BC,VRC_ROWS * VRC_COLS ; BC := BUF SIZE
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,BC ; SUBTRACT FROM HL
|
||||
JR C,VRC_FILL2 ; BYPASS IF NO WRAP
|
||||
POP BC ; THROW AWAY TOS
|
||||
LD HL,0 ; BACK TO START
|
||||
JR VRC_FILL3 ; CONTINUE
|
||||
VRC_FILL2:
|
||||
POP HL ; NO WRAP, RESTORE
|
||||
VRC_FILL3:
|
||||
LD (VRC_POS),HL ; SAVE NEW POSITION
|
||||
JR VRC_FILL1 ; LOOP TILL DONE
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; SCROLL ENTIRE SCREEN FORWARD BY ONE LINE (CURSOR POSITION UNCHANGED)
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_SCROLL:
|
||||
; SCROLL DOWN 1 LINE VIA HARDWARE
|
||||
CALL VRC_HIDECUR ; SUPPRESS CURSOR
|
||||
LD A,(VRC_LOFF) ; GET LINE OFFSET
|
||||
INC A ; BUMP
|
||||
CP VRC_ROWS ; OVERFLOW?
|
||||
JR C,VRC_SCROLL1 ; IF NOT, SKIP
|
||||
XOR A ; ELSE, BACK TO ZERO
|
||||
VRC_SCROLL1:
|
||||
LD (VRC_LOFF),A ; SAVE NEW VALUE
|
||||
OR $80 ; SET HW SCROLL ENABLE BIT
|
||||
OUT (VRC_SCROLLIO),A ; DO IT
|
||||
;
|
||||
; ADJUST BUFFER OFFSET
|
||||
LD HL,(VRC_OFF) ; BUFFER OFFSET
|
||||
LD DE,VRC_COLS ; COLUMNS
|
||||
ADD HL,DE ; ADD TO GET NEW OFFSET
|
||||
PUSH HL ; SAVE IT
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DE := BUF SIZE
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; SUBTRACT FROM HL
|
||||
JR C,VRC_SCROLL2 ; BYPASS IF NO WRAP
|
||||
POP DE ; BURN TOS
|
||||
JR VRC_SCROLL3 ; CONTINUE
|
||||
VRC_SCROLL2:
|
||||
POP HL ; NO WRAP, RESTORE HL
|
||||
VRC_SCROLL3:
|
||||
LD (VRC_OFF),HL ; SAVE NEW OFFSET
|
||||
;
|
||||
; FILL EXPOSED LINE
|
||||
LD HL,(VRC_POS) ; GET CURSOR POS
|
||||
PUSH HL ; SAVE IT
|
||||
LD D,VRC_ROWS - 1 ; LAST ROW
|
||||
LD E,0 ; FIRST COLUMN
|
||||
CALL VRC_XY2IDX ; HL = START OF LAST LINE
|
||||
LD (VRC_POS),HL ; SET FILL POSITION
|
||||
LD A,' ' ; FILL WITH BLANKS
|
||||
LD DE,VRC_COLS ; FILL ONE LINE
|
||||
CALL VRC_FILL ; FILL LAST LINE
|
||||
POP HL ; RECOVER CURSOR POS
|
||||
LD (VRC_POS),HL ; PUT VALUE BACK
|
||||
;
|
||||
; ADJUST CURSOR POSITION
|
||||
LD HL,(VRC_POS) ; CURSOR POSITION
|
||||
LD DE,VRC_COLS ; COLUMNS
|
||||
ADD HL,DE ; NEW CURSOR POS
|
||||
PUSH HL ; SAVE IT
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DE := DISPLAY SIZE
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; SUBTRACT FROM HL
|
||||
JR C,VRC_SCROLL4 ; BYPASS IF NO WRAP
|
||||
POP DE ; BURN TOS
|
||||
JR VRC_SCROLL5 ; CONTINUE
|
||||
VRC_SCROLL4:
|
||||
POP HL ; NO WRAP, RESTORE HL
|
||||
VRC_SCROLL5:
|
||||
LD (VRC_POS),HL ; SAVE NEW CURSOR POS
|
||||
JP VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; REVERSE SCROLL ENTIRE SCREEN BY ONE LINE (CURSOR POSITION UNCHANGED)
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_RSCROLL:
|
||||
; SCROLL UP 1 LINE VIA HARDWARE
|
||||
CALL VRC_HIDECUR ; SUPPRESS CURSOR
|
||||
LD A,(VRC_LOFF) ; GET LINE OFFSET
|
||||
DEC A ; BUMP
|
||||
CP $FF ; OVERFLOW?
|
||||
JR NZ,VRC_RSCROLL1 ; IF NOT, SKIP
|
||||
LD A,VRC_ROWS - 1 ; ELSE, BACK TO LAST ROW
|
||||
VRC_RSCROLL1:
|
||||
LD (VRC_LOFF),A ; SAVE NEW VALUE
|
||||
OR $80 ; SET HW SCROLL ENABLE BIT
|
||||
OUT (VRC_SCROLLIO),A ; DO IT
|
||||
;
|
||||
; ADJUST BUFFER OFFSET
|
||||
LD HL,(VRC_OFF) ; BUFFER OFFSET
|
||||
LD DE,VRC_COLS ; COLUMNS
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; SUBTRACT TO GET NEW OFFSET
|
||||
PUSH HL ; SAVE IT
|
||||
JR NC,VRC_RSCROLL2 ; BYPASS IF NO WRAP
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DISPLAY SIZE
|
||||
ADD HL,DE ; HANDLE WRAP
|
||||
POP DE ; BURN TOS
|
||||
JR VRC_RSCROLL3 ; CONTINUE
|
||||
VRC_RSCROLL2:
|
||||
POP HL ; NO WRAP, RESTORE HL
|
||||
VRC_RSCROLL3:
|
||||
LD (VRC_OFF),HL ; SAVE NEW OFFSET
|
||||
;
|
||||
; FILL EXPOSED LINE
|
||||
LD HL,(VRC_POS) ; GET CURSOR POS
|
||||
PUSH HL ; SAVE IT
|
||||
LD D,0 ; FIRST ROW
|
||||
LD E,0 ; FIRST COLUMN
|
||||
CALL VRC_XY2IDX ; HL = START OF FIRST LINE
|
||||
LD (VRC_POS),HL ; SET FILL POSITION
|
||||
LD A,' ' ; FILL WITH BLANKS
|
||||
LD DE,VRC_COLS ; FILL ONE LINE
|
||||
CALL VRC_FILL ; FILL FIRST LINE
|
||||
POP HL ; RECOVER CURSOR POS
|
||||
LD (VRC_POS),HL ; PUT VALUE BACK
|
||||
;
|
||||
; ADJUST CURSOR POSITION
|
||||
LD HL,(VRC_POS) ; CURSOR POSITION
|
||||
LD DE,VRC_COLS ; COLUMNS
|
||||
OR A ; CLEAR CARRY
|
||||
SBC HL,DE ; NEW CURSOR POS
|
||||
PUSH HL ; SAVE IT
|
||||
JR NC,VRC_RSCROLL4 ; BYPASS IF NO WRAP
|
||||
LD DE,VRC_ROWS * VRC_COLS ; DISPLAY SIZE
|
||||
ADD HL,DE ; HANDLE WRAP
|
||||
POP DE ; BURN TOS
|
||||
JR VRC_RSCROLL5 ; CONTINUE
|
||||
VRC_RSCROLL4:
|
||||
POP HL ; NO WRAP, RESTORE HL
|
||||
VRC_RSCROLL5:
|
||||
LD (VRC_POS),HL ; SAVE NEW CURSOR POS
|
||||
JP VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
|
||||
;
|
||||
;----------------------------------------------------------------------
|
||||
; BLOCK COPY BC BYTES FROM HL TO DE
|
||||
;----------------------------------------------------------------------
|
||||
;
|
||||
VRC_BLKCPY:
|
||||
PUSH BC
|
||||
PUSH HL
|
||||
CALL VRC_HIDECUR
|
||||
POP HL
|
||||
POP BC
|
||||
;
|
||||
VRC_BLKCPY1:
|
||||
LD A,B
|
||||
OR C
|
||||
JP Z,VRC_SHOWCUR ; EXIT VIA SHOW CURSOR
|
||||
;
|
||||
PUSH BC ; SAVE LOOP CTL
|
||||
LD B,L ; INVERT FOR I/O
|
||||
LD C,H
|
||||
IN A,(C) ; GET SOURCE CHAR
|
||||
LD B,E ; INVERT FOR I/O
|
||||
LD C,D
|
||||
OUT (C),A ; WRITE DEST CHAR
|
||||
POP BC ; RESTORE LOOP CTL
|
||||
;
|
||||
INC HL ; NEXT SRC CHAR
|
||||
INC DE ; NEXT DEST CHAR
|
||||
DEC BC ; DEC COUNT
|
||||
JR VRC_BLKCPY1 ; LOOP TILL DONE
|
||||
;
|
||||
;==================================================================================================
|
||||
; VGARC DRIVER - DATA
|
||||
;==================================================================================================
|
||||
;
|
||||
VRC_ATTR .DB 0 ; CURRENT COLOR
|
||||
VRC_POS .DW 0 ; CURRENT DISPLAY POSITION
|
||||
VRC_OFF .DW 0 ; SCREEN START OFFSET INTO DISP BUF
|
||||
VRC_LOFF .DB 0 ; LINE OFFSET INTO DISP BUF
|
||||
VRC_CURSOR .DB 0 ; CURSOR NESTING LEVEL
|
||||
VRC_ACTIVE .DB FALSE ; FLAG FOR DRIVER ACTIVE
|
||||
;
|
||||
;==================================================================================================
|
||||
; VGA DRIVER - INSTANCE DATA
|
||||
;==================================================================================================
|
||||
;
|
||||
VRC_IDAT:
|
||||
.DB KBDMODE_VRC ; VGARC KEYBOARD CONTROLLER
|
||||
.DB VRC_KBDST
|
||||
.DB VRC_KBDDATA
|
||||
@@ -105,7 +105,7 @@ where:
|
||||
<disk> specifies the disk contents (e.g., "cpm22")
|
||||
<type> specifies disk type ("fd" for floppy, or "hd" for hard disk)
|
||||
<format> specifies the disk format which must be one of:
|
||||
- "fd144": 1.44M floppy disk
|
||||
- "fd144": 1.44M floppy disk
|
||||
- "hd512": hard disk with 512 directory entries
|
||||
- "hd1k": hard disk with 1024 directory entries
|
||||
<system> optionally specifies a boot system image to place in the
|
||||
@@ -203,10 +203,11 @@ command prompt:
|
||||
| C:\RomWBW\Binary>copy /b hd1k_prefix.dat + hd1k_zsdos.img + hd1k_ws4.img hd_multi.img
|
||||
|
||||
Since the hd512 format does not utilize a partition, you do not
|
||||
prefix the hd512_xxx.img files with anything. They are ready to write
|
||||
to your media as is.
|
||||
prefix the hd512_xxx.img files with anything. You can simply
|
||||
concatenate the desired hd512_xxx.img files together and write the
|
||||
resulting file to the start of your hard disk media.
|
||||
|
||||
In general, the hd1k format is considered the better format to use.
|
||||
In general, the hd1k format is considered the preferred format to use.
|
||||
It provides double the directory space and places all slices inside
|
||||
of a hard disk partition that DOS/Windows should respect as "used"
|
||||
space.
|
||||
|
||||
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user