mirror of
https://github.com/wwarthen/RomWBW.git
synced 2026-02-06 22:43:15 -06:00
Compare commits
127 Commits
v3.1.1-pre
...
v3.1.1-pre
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c157d52c1d | ||
|
|
3034fb6b5b | ||
|
|
fee6f29cf0 | ||
|
|
a531551573 | ||
|
|
53bdee68d5 | ||
|
|
0b8cb94cc2 | ||
|
|
ce6622244d | ||
|
|
b649cf19ce | ||
|
|
96902ae2bd | ||
|
|
97cb2f1dfc | ||
|
|
146826b142 | ||
|
|
0a6009b38f | ||
|
|
4f48e48a99 | ||
|
|
cd161067db | ||
|
|
4d9c93734f | ||
|
|
71a8b2b177 | ||
|
|
979e763739 | ||
|
|
16475fe408 | ||
|
|
d2e1e5be4b | ||
|
|
2271c086b5 | ||
|
|
2b4631195a | ||
|
|
d5f0699fc3 | ||
|
|
5c84fc6213 | ||
|
|
d9f11b9f5e | ||
|
|
bb2a68e066 | ||
|
|
cd426ba6ca | ||
|
|
491bbb68a6 | ||
|
|
b3bf3e27ee | ||
|
|
523ce60093 | ||
|
|
3f00cfbfb8 | ||
|
|
2dd9edd8ca | ||
|
|
6145383a65 | ||
|
|
c0721a3f85 | ||
|
|
c10497bd03 | ||
|
|
5b1542e49b | ||
|
|
96269a7f45 | ||
|
|
bd03277bfe | ||
|
|
c072027b87 | ||
|
|
e409391f14 | ||
|
|
030228e9b8 | ||
|
|
d584d3d553 | ||
|
|
2049b35ee2 | ||
|
|
285bc6611f | ||
|
|
be8177b8a4 | ||
|
|
9c80db786e | ||
|
|
d062b4345d | ||
|
|
03bf1527cc | ||
|
|
38318262e9 | ||
|
|
eefad65904 | ||
|
|
4d6a922402 | ||
|
|
e32d6e2d5d | ||
|
|
9ea462ef7a | ||
|
|
1681e159bd | ||
|
|
3b8973fa12 | ||
|
|
ef1989f600 | ||
|
|
023e54a9a8 | ||
|
|
73b0a3d941 | ||
|
|
f86019a628 | ||
|
|
1839120e9d | ||
|
|
8e110221a3 | ||
|
|
8df7712633 | ||
|
|
149ffb899b | ||
|
|
4f60cd4e57 | ||
|
|
e83e26b6db | ||
|
|
4cd533117f | ||
|
|
20cab617c7 | ||
|
|
323cfec931 | ||
|
|
ced09b2b95 | ||
|
|
93f8c67f9f | ||
|
|
999849c62b | ||
|
|
4babc51588 | ||
|
|
44ccc167ff | ||
|
|
eae8295811 | ||
|
|
c76cb6737e | ||
|
|
af723c5370 | ||
|
|
57e4ed476c | ||
|
|
167c10fafc | ||
|
|
6d1a9f5b7c | ||
|
|
bd0bb94c52 | ||
|
|
e1a833b1a8 | ||
|
|
7bd6df1e99 | ||
|
|
d3fcf8cea2 | ||
|
|
c7eb82e4dd | ||
|
|
20d07ded7b | ||
|
|
fc57ca4a68 | ||
|
|
444c57fdfb | ||
|
|
ca61f340db | ||
|
|
601ac66762 | ||
|
|
c204110a6f | ||
|
|
e8d0eedc2b | ||
|
|
7b55b8ba86 | ||
|
|
069aa2b5be | ||
|
|
eeff03c7aa | ||
|
|
791fcea466 | ||
|
|
f56c9007bb | ||
|
|
360ba5ca95 | ||
|
|
7adf2038f1 | ||
|
|
a77744d8e6 | ||
|
|
dd47283fda | ||
|
|
5cc85e0444 | ||
|
|
6e51070590 | ||
|
|
a7853fe6d0 | ||
|
|
590dcd0b4f | ||
|
|
e25107309b | ||
|
|
def29c7668 | ||
|
|
0c92c69ed8 | ||
|
|
54ce18bb75 | ||
|
|
0ebde397fa | ||
|
|
8bf93619a0 | ||
|
|
2727c02c56 | ||
|
|
d6ac15df40 | ||
|
|
c2a6c7fa22 | ||
|
|
a742e5016e | ||
|
|
248ef0e1b4 | ||
|
|
19101fda39 | ||
|
|
9d1cfd4a22 | ||
|
|
cb20784685 | ||
|
|
66d524c096 | ||
|
|
aceef15481 | ||
|
|
d4ca3de40f | ||
|
|
f0def03d0e | ||
|
|
b2b070232d | ||
|
|
27935123cf | ||
|
|
d40c6be60d | ||
|
|
aa93eb62f2 | ||
|
|
94c32c9fd0 | ||
|
|
d9a3a5086c |
14
.github/workflows/commit.yml
vendored
14
.github/workflows/commit.yml
vendored
@@ -14,9 +14,9 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: rlespinasse/github-slug-action@v3.x
|
||||
- uses: rlespinasse/github-slug-action@v4.4.0
|
||||
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3.1.0
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@@ -33,7 +33,7 @@ jobs:
|
||||
find -type f -exec md5sum '{}' \;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW_Linux-${{env.GITHUB_REF_SLUG}}-${{env.GITHUB_SHA_SHORT}}
|
||||
path: .
|
||||
@@ -43,7 +43,7 @@ jobs:
|
||||
zip -r RomWBW-SnapShot-Package.zip .
|
||||
|
||||
- name: Post SnapShot
|
||||
uses: "marvinpinto/action-automatic-releases@latest"
|
||||
uses: wwarthen/actions/packages/automatic-releases@built-packages
|
||||
with:
|
||||
repo_token: "${{ secrets.GITHUB_TOKEN }}"
|
||||
automatic_release_tag: "SnapShot"
|
||||
@@ -53,10 +53,10 @@ jobs:
|
||||
RomWBW-SnapShot-Package.zip
|
||||
|
||||
buildMacOS:
|
||||
runs-on: macos-latest
|
||||
runs-on: macOS-12
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- uses: actions/checkout@v3.1.0
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
@@ -72,7 +72,7 @@ jobs:
|
||||
find . -type f -exec md5 -r -- '{}' +;
|
||||
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3.1.1
|
||||
with:
|
||||
name: RomWBW_MacOS
|
||||
path: .
|
||||
|
||||
1
.gitignore
vendored
1
.gitignore
vendored
@@ -20,6 +20,7 @@
|
||||
|
||||
Binary/**/*.mym
|
||||
Binary/**/*.pt3
|
||||
!Binary/cpnos-wbw.sys
|
||||
|
||||
Source/**/eeprom
|
||||
Source/Apps/Assign.com
|
||||
|
||||
@@ -7,4 +7,4 @@
|
||||
***********************************************************************
|
||||
|
||||
This directory contains some sample ProTracker and MYM sound
|
||||
files that can be played by the TUNE application.
|
||||
files that can be played by the TUNE or VGMPLAY application.
|
||||
@@ -75,8 +75,8 @@ The VDU video board requires a dedicated onboard ROM containing the
|
||||
font data. The "vdu.rom" file contains the binary data to program
|
||||
onto that chip.
|
||||
|
||||
Disk Images (fd_*.img, hd_*.img)
|
||||
------------------------------
|
||||
Disk Images (fd_*.img, hd_*.img, psys.img)
|
||||
------------------------------------------
|
||||
|
||||
RomWBW includes a mechanism for generating floppy disk and hard disk
|
||||
binary images that are ready to copy directly to a floppy, hard disk,
|
||||
@@ -96,16 +96,18 @@ RawWriteWin (as long as you have access to a floppy drive on your
|
||||
Windows computer). The resulting floppy disks will be usable on any
|
||||
RomWBW-based system with floppy drive(s).
|
||||
|
||||
Likewise, the hd_*.img files are hard disk images. Each file is
|
||||
intended to be copied to the start of any type of hard disk media
|
||||
(typically a CF Card or SD Card). The resulting media will be usable
|
||||
on any RomWBW-based system that accepts the corresponding media type.
|
||||
Likewise, the hd512_*.img and hd1k_*.img files are hard disk images.
|
||||
Each file is intended to be copied to the start of any type of hard
|
||||
disk media (typically a CF Card or SD Card). The resulting media will
|
||||
be usable on any RomWBW-based system that accepts the corresponding
|
||||
media type.
|
||||
|
||||
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.
|
||||
NOTE: The hd512_*.img files are equivalent to the hd_*.img
|
||||
files in previous distributions. The hd1k_*.img files
|
||||
contained a revised file system format that increases the
|
||||
maximum number of CP/M directory entries from 512 to 1024.
|
||||
Refer to the ReadMe.txt in the Source/Images directory
|
||||
for details.
|
||||
|
||||
Documentation of the pre-built disk images is contained in the
|
||||
DiskList.txt file in this directory.
|
||||
@@ -115,6 +117,12 @@ the BuildImages.cmd script in the Source directory. Additional
|
||||
information on how to generate custom disk images is found in the
|
||||
Source\Images ReadMe.txt file.
|
||||
|
||||
The psys.img file contains a full implementation of the UCSD p-System
|
||||
for the Z80 running under RomWBW. This image file must be placed on
|
||||
disk media by itself (not appended or concatenated with hd*.img files.
|
||||
Refer to the Source/pSys/ReadMe.txt file for more information on the
|
||||
p-System implementation.
|
||||
|
||||
Propeller ROM Images (*.eeprom)
|
||||
-------------------------------
|
||||
|
||||
|
||||
@@ -1,260 +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.
|
||||
|
||||
When distributed, RomWBW contains a set of pre-built ROM images that
|
||||
are ready to program onto the EEPROM of any of the Z80/Z180 based
|
||||
RetroBrew Computers CPU boards. Additionally, any custom built ROM
|
||||
images will be placed in this directory.
|
||||
|
||||
All of the pre-built ROM images are 512KB. This size is compatible
|
||||
with all of the Z80/Z180 systems. Some systems can accept different
|
||||
size ROM images. Creating alternative sizes requires a custom ROM
|
||||
build (see ReadMe.txt in the Source directory).
|
||||
|
||||
It is critical that the right ROM Imgae be selected for the target
|
||||
platform being used. The table below indicates the correct ROM
|
||||
image to use for each platform:
|
||||
|
||||
SBC V1/V2 SBC_std.rom
|
||||
SBC SimH SBC_simh.rom
|
||||
Zeta V1 ZETA_std.rom
|
||||
Zeta V2 ZETA2_std.rom
|
||||
N8 N8_std.rom
|
||||
Mark IV MK4_std.rom
|
||||
RC2014 w/ Z80 RCZ80_std.rom
|
||||
RC2014 w/ Z180 RCZ180_nat.rom (native Z180 memory addressing)
|
||||
RC2014 w/ Z180 RCZ180_ext.rom (external 512K RAM/ROM module)
|
||||
SC-series SC126, SC130, SC131
|
||||
Easy Z80 EZZ180_std.rom
|
||||
Dyno DYNO_std.rom
|
||||
|
||||
You will find there is one additional ROM image called
|
||||
"UNA_std.rom". This ROM image is an UNA-based RomWBW ROM image. As
|
||||
such, this ROM image can be used on any Z80/Z180 platform supported
|
||||
by John Coffman's UNA BIOS. Refer to RetroBrew Computers Wiki for
|
||||
more information on UNA hardware support.
|
||||
|
||||
For each of the ROM Images (".rom"), there are corresponding files
|
||||
with the extensions of ".com" and ".img". The .com variant can be
|
||||
copied to a functional RomWBW-based system and executed like a
|
||||
normal application under CP/M or Z-System. This will load the new
|
||||
ROM on-the-fly. It is an excellent way to test a ROM Image before
|
||||
actually burning it. Similarly, the .img files can be loaded using
|
||||
the UNA FAT loader for testing.
|
||||
|
||||
All of the standard ROM Images are configured for:
|
||||
- 512KB ROM Disk
|
||||
- 512KB RAM Disk
|
||||
- 38.4Kbps baud serial console (*)
|
||||
- Auto-discovery of all serial ports
|
||||
|
||||
* RC2014 and Stephen Cousins' kits run at 115,200Kbps baud
|
||||
|
||||
All hard disk type devices (IDE, PPIDE, CF Card, SD Card) will be
|
||||
automatically assigned at least two drive letters per device. The
|
||||
drive letters will refer to the first 2 slices of the device. The
|
||||
ASSIGN command can be used to display and reassign drives to disk
|
||||
devices and slices as desired.
|
||||
|
||||
Standard ROM Image Notes
|
||||
------------------------
|
||||
|
||||
The standard ROM images will detect and install support for certain
|
||||
devices and peripherals that are on-board or frequently used with
|
||||
each platform as documented below. If the device or peripheral is
|
||||
not detected at boot, the ROM will simply bypass support
|
||||
appropriately.
|
||||
|
||||
SBC (SBC_std.rom):
|
||||
- CPU speed is detected at startup
|
||||
- Console on onboard UART serial port at 38400 baud
|
||||
- Includes support for PPIDE/CF Card(s) connected to on-board
|
||||
parallel port.
|
||||
- Includes support for CVDU and VGA3 boards. If detected at
|
||||
startup, support for video and keyboard is installed
|
||||
including VT-100/ANSI terminal emulation.
|
||||
- Auto detects DiskIO v3 floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Auto-detects PropIO or PropIO V2 and installs associated
|
||||
video, keyboard and SD Card support if present.
|
||||
- If PropIO, PropIO V2, CVDU, or VGA hardware is detected,
|
||||
initial console output is determined by JP2. If JP2 is
|
||||
shorted, console will go to on-board serial port, if JP2
|
||||
is open, console will go to the detected video and keyboard
|
||||
ports.
|
||||
- SBC V1 has a known race condition in the bank switching
|
||||
circuit which is likely to cause system instability. SBC
|
||||
V2 does not have this issue.
|
||||
|
||||
SBC (SBC_simh.rom):
|
||||
- SBC variant customized to run under SimH
|
||||
- Implments two emulated SimH hard disk images
|
||||
- Uses SimH RTC
|
||||
|
||||
ZETA (ZETA_std.rom):
|
||||
- CPU speed is detected at startup
|
||||
- Console on onboard UART serial port at 38400 baud
|
||||
- Auto-detects FDC and installs 3.5" disk support
|
||||
if found
|
||||
- Auto detects on-board floppy disk controller and installs
|
||||
support for one attached 3.5" floppy disk if found
|
||||
- Auto-detects ParPortProp and includes support for it if it
|
||||
is attached.
|
||||
- If ParPortProp is installed, initial console output is
|
||||
determined by JP1. If JP1 is shorted, console will go to
|
||||
on-board serial port, if JP1 is open, console will go to
|
||||
ParPortProp video and keyboard ports.
|
||||
|
||||
ZETA2 (ZETA2_std.rom):
|
||||
- CPU speed is detected at startup
|
||||
- Console on onboard UART serial port at 38400 baud
|
||||
- Auto detects on-board floppy disk controller and installs
|
||||
support for one attached 3.5" floppy disk if found
|
||||
- Auto-detects ParPortProp and includes support for it if it
|
||||
is attached.
|
||||
- Uses CTC to generate periodic timer interrupts.
|
||||
- If ParPortProp is installed, initial console output is
|
||||
determined by JP1. If JP1 is shorted, console will go to
|
||||
on-board serial port, if JP1 is open, console will go to
|
||||
ParPortProp video and keyboard ports.
|
||||
|
||||
N8 (N8_std.rom):
|
||||
- CPU speed is detected at startup
|
||||
- Console on Z180 onboard primary ASCI serial port at 38400 baud
|
||||
- Auto detects onboard floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Includes support for on-board TMS9918 video and keyboard
|
||||
including VT-100/ANSI terminal emulation.
|
||||
- Includes support for on-board SD Card as hard disk and
|
||||
assumes a production level N8 board (date code >= 2312).
|
||||
|
||||
MK4 (MK4_std.rom):
|
||||
- CPU speed is detected at startup
|
||||
- Console on Z180 onboard primary ASCI serial port at 38400 baud
|
||||
- Includes support for on-board IDE port (CF Card via adapter).
|
||||
- Includes support for on-board SD Card port.
|
||||
- Auto detects Dual IDE floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Auto-detects PropIO or PropIO V2 and installs associated
|
||||
video, keyboard and SD Card support if present.
|
||||
- Includes support for CVDU and VGA3 boards. If detected at
|
||||
startup, support for video and keyboard is installed
|
||||
including VT-100/ANSI terminal emulation.
|
||||
|
||||
RCZ80 (RCZ80_std.rom):
|
||||
- Assumes CPU oscillator of 7.3728 MHz
|
||||
- Requires 512K RAM/ROM module
|
||||
- Auto detects Serial I/O Module (ACIA), Dual Serial
|
||||
Module (SIO/2), and EP Dual UART.
|
||||
- Console on whichever serial module is installed,
|
||||
order of priority is UART, SIO, then ACIA.
|
||||
- Baud rate is determined by hardware, but normally 115200.
|
||||
- Auto support for RC2014 Compact Flash Module
|
||||
- Auto support for RC2014 PPIDE Module
|
||||
- Support for Scott Baker SIO board may be enabled in config
|
||||
- Auto detects WDC floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Support for SMC floppy controller may be enabled in config
|
||||
- Support for J.B. Lang TMS9918 video card may be enabled in config
|
||||
- Support for PropIO V2 may be enabled in config (PRPENABLE). If
|
||||
enabled, will auto-detect and install associated
|
||||
video, keyboard and SD Card support if present.
|
||||
|
||||
RCZ80 w/ KIO (RCZ80_kio.rom):
|
||||
- Same as RCZ80_std
|
||||
- Requires KIO module
|
||||
- SIO ports provided by KIO
|
||||
|
||||
RCZ180 (RCZ180_nat.rom & RCZ180_ext.rom):
|
||||
- Assumes CPU oscillator of 18.432 MHz
|
||||
- Console on Z180 onboard primary ASCI serial port at 115200 baud
|
||||
- Auto support for RC2014 Compact Flash Module
|
||||
- Auto support for RC2014 PPIDE Module
|
||||
- Support for alternative serial modules may be enabled in config
|
||||
- Auto detects WDC floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Support for SMC floppy controller may be enabled in config
|
||||
- Support for J.B. Lang TMS9918 video card may be enabled in config
|
||||
- You must pick the variant (_ext or _nat) depending
|
||||
on which memory module you are using:
|
||||
- RCZ180_ext.rom uses external bank management to access
|
||||
memory, such as the 512K RAM/ROM module.
|
||||
- RCZ180_nat.rom uses the built-in Z180 memory manager
|
||||
for use with memory modules using direct physical
|
||||
addressing of memory, such as the SC119.
|
||||
- Support for PropIO V2 may be enabled in config (PRPENABLE). If
|
||||
enabled, will auto-detect and install associated
|
||||
video, keyboard and SD Card support if present.
|
||||
|
||||
RCZ280 (RCZ280_ext.rom, RCZ280_nat.rom, RCZ280_nat_zz.rom):
|
||||
- Assumes CPU oscillator of 24 MHz
|
||||
- Bus clock will be 6 MHz or 12 MHz, so does not match RC2014 standard!!!
|
||||
- Requires 512K RAM/ROM module (unless using ZZ80MB)
|
||||
- Auto detects Serial I/O Module (ACIA), Dual Serial
|
||||
Module (SIO), EP Dual UART (DUART), and built-in Z280 UART (Z2U).
|
||||
- ACIA module is only supported on _ext variant.
|
||||
- Built-in Z280 UART (Z2U) is buffered and interrupt driven only
|
||||
on _nat and _nat_zz variants. It uses polling I/O on _ext.
|
||||
- Console on whichever serial module is installed,
|
||||
order of priority is Z2U, UART, SIO, DUART, ACIA
|
||||
- Baud rate is determined by hardware, but normally 115200.
|
||||
- Auto support for RC2014 Compact Flash Module
|
||||
- Auto support for RC2014 PPIDE Module
|
||||
- Support for Scott Baker SIO board may be enabled in config
|
||||
- Auto detects WDC floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Support for SMC floppy controllers may be enabled in config
|
||||
- Support for J.B. Lang TMS9918 video card may be enabled in config
|
||||
- You must pick the variant (_ext, _nat, or _nat_zz) depending
|
||||
on which platform or memory module you are using:
|
||||
- RCZ280_ext.rom uses external bank management to access
|
||||
memory, such as the 512K RAM/ROM module.
|
||||
- RCZ280_nat.rom uses the built-in Z280 memory manager
|
||||
for use with memory modules using direct physical
|
||||
addressing of memory, such as the SC119.
|
||||
- RCZ280_nat_zz.rom is specifically for the ZZ80MB platform
|
||||
which has both CPU and memory onboard.
|
||||
- Support for PropIO V2 may be enabled in config (PRPENABLE). If
|
||||
enabled, will auto-detect and install associated
|
||||
video, keyboard and SD Card support if present.
|
||||
|
||||
SCZ180 (SCZ180_126.rom, SCZ180_130.rom, SCZ180_131.rom, SCZ140.rom):
|
||||
- Same as RCZ180
|
||||
- Adds auto support for onboard SPI SD Card
|
||||
- The 4 different variants of SCZ180 are provided to match the
|
||||
4 corresponding systems (SC126, SC130, SC131, and SC140)
|
||||
designed by Stephen Cousins.
|
||||
- Support for PropIO V2 may be enabled in config (PRPENABLE). If
|
||||
enabled, will auto-detect and install associated
|
||||
video, keyboard and SD Card support if present.
|
||||
|
||||
EZZ80 (EZZ80_std.rom):
|
||||
- Assumes CPU oscillator of 10.000 MHz
|
||||
- Console on primary SIO serial port at 115200 baud
|
||||
- Includes support for on-board SIO
|
||||
- Auto support for RC2014 Compact Flash Module
|
||||
- Auto support for RC2014 PPIDE Module
|
||||
- Auto detects WDC floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Support for SMC floppy controllers may be enabled in config
|
||||
- Support for PropIO V2 may be enabled in config (PRPENABLE). If
|
||||
enabled, will auto-detect and install associated
|
||||
video, keyboard and SD Card support if present.
|
||||
|
||||
DYNO (DYNO_std.rom):
|
||||
- Assumes CPU oscillator of 18.432 MHz
|
||||
- Console on Z180 onboard serial ports at 38400 baud
|
||||
- Includes support for BQ4842 RTC
|
||||
- Auto detects Dyno floppy disk controller and installs
|
||||
support for two attached 3.5" floppy disks if found
|
||||
- Includes support for onboard PPIDE
|
||||
BIN
Binary/cpnos-wbw.sys
Normal file
BIN
Binary/cpnos-wbw.sys
Normal file
Binary file not shown.
@@ -62,6 +62,13 @@ Version 3.1.1
|
||||
- WBW: ZPMLDR and ZPM3 fixes, credit to Lars Nelson for finding ZPM3 source!
|
||||
- DDW: Add support for MBC sound card
|
||||
- WBW: Add support for "romless" booting
|
||||
- L?N: Fixes for ZCPR-D&J (buffer overflow, default drive/user)
|
||||
- J?P: Add support for DS1501 RTC
|
||||
- LLS: Added a user defined mode for SD Card interfaces (not complete)
|
||||
- L?N: Updated ZDE to v1.8 including time stamp preservation fixes
|
||||
- D?M: Minor update to CP/NET client files, fix to CPNBOOT
|
||||
- WBW: Added p-System IV.0 Z80 implementation
|
||||
- WBW: Hacked SURVEY to work around bank switching crash
|
||||
|
||||
Version 3.1
|
||||
-----------
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
Doc/RomWBW Errata.pdf
Normal file
BIN
Doc/RomWBW Errata.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Doc/RomWBW ROM Applications.pdf
Normal file
BIN
Doc/RomWBW ROM Applications.pdf
Normal file
Binary file not shown.
BIN
Doc/RomWBW System Guide.pdf
Normal file
BIN
Doc/RomWBW System Guide.pdf
Normal file
Binary file not shown.
BIN
Doc/RomWBW User Guide.pdf
Normal file
BIN
Doc/RomWBW User Guide.pdf
Normal file
Binary file not shown.
BIN
Doc/UCSD p-System Users Manual.pdf
Normal file
BIN
Doc/UCSD p-System Users Manual.pdf
Normal file
Binary file not shown.
Binary file not shown.
BIN
Doc/qcp27.pdf
Normal file
BIN
Doc/qcp27.pdf
Normal file
Binary file not shown.
BIN
Doc/qdos27.pdf
Normal file
BIN
Doc/qdos27.pdf
Normal file
Binary file not shown.
BIN
Doc/qpm27.pdf
Normal file
BIN
Doc/qpm27.pdf
Normal file
Binary file not shown.
3
Makefile
3
Makefile
@@ -6,6 +6,7 @@ clean:
|
||||
$(MAKE) --directory Tools clean
|
||||
$(MAKE) --directory Source clean
|
||||
$(MAKE) --directory Binary clean
|
||||
rm -f make.log
|
||||
|
||||
clobber: clean
|
||||
|
||||
@@ -13,6 +14,6 @@ diff:
|
||||
$(MAKE) --directory Source diff
|
||||
|
||||
dist:
|
||||
$(MAKE) ROM_PLATFORM=dist
|
||||
$(MAKE) ROM_PLATFORM=dist 2>&1 | tee make.log
|
||||
$(MAKE) --directory Source clean
|
||||
$(MAKE) --directory Tools clean
|
||||
|
||||
1396
ReadMe.txt
1396
ReadMe.txt
File diff suppressed because it is too large
Load Diff
@@ -21,9 +21,6 @@ call :asm rtchb || exit /b
|
||||
|
||||
zxcc Z80ASM -SYSGEN/F || exit /b
|
||||
|
||||
zxcc MAC SURVEY.ASM -$PO || exit /b
|
||||
zxcc MLOAD25 -SURVEY.COM=SURVEY.HEX || exit /b
|
||||
|
||||
pushd XM && call Build || exit /b & popd
|
||||
pushd FDU && call Build || exit /b & popd
|
||||
pushd Tune && call Build || exit /b & popd
|
||||
@@ -34,6 +31,7 @@ pushd ZMD && call Build || exit /b & popd
|
||||
pushd Dev && call Build || exit /b & popd
|
||||
pushd VGM && call Build || exit /b & popd
|
||||
pushd cpuspd && call Build || exit /b & popd
|
||||
pushd Survey && call Build || exit /b & popd
|
||||
|
||||
copy *.com %APPBIN%\ || exit /b
|
||||
|
||||
|
||||
@@ -17,3 +17,4 @@ pushd ZMD && call Clean || exit /b 1 & popd
|
||||
pushd Dev && call Clean || exit /b 1 & popd
|
||||
pushd VGM && call Clean || exit /b 1 & popd
|
||||
pushd cpuspd && call Clean || exit /b 1 & popd
|
||||
pushd Survey && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1,13 +1,9 @@
|
||||
OBJECTS = sysgen.com survey.com \
|
||||
syscopy.com assign.com format.com talk.com mode.com rtc.com \
|
||||
timer.com rtchb.com
|
||||
SUBDIRS = XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd
|
||||
OBJECTS = sysgen.com syscopy.com assign.com format.com talk.com \
|
||||
mode.com rtc.com timer.com rtchb.com
|
||||
SUBDIRS = XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd Survey
|
||||
DEST = ../../Binary/Apps
|
||||
TOOLS =../../Tools
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
USETASM = 1
|
||||
|
||||
survey.com: USETASM = 0
|
||||
|
||||
|
||||
16
Source/Apps/Survey/Build.cmd
Normal file
16
Source/Apps/Survey/Build.cmd
Normal file
@@ -0,0 +1,16 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=..\..\..\Tools
|
||||
|
||||
set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
:: zxcc MAC survey.asm -$PO || exit /b
|
||||
:: zxcc MLOAD25 survey || exit /b
|
||||
|
||||
zxcc M80 -,=survey/L/R
|
||||
zxcc L80 -survey,survey/N/E
|
||||
|
||||
copy /Y survey.com ..\..\..\Binary\Apps\ || exit /b
|
||||
8
Source/Apps/Survey/Clean.cmd
Normal file
8
Source/Apps/Survey/Clean.cmd
Normal file
@@ -0,0 +1,8 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.hex del *.hex
|
||||
if exist *.rel del *.rel
|
||||
if exist *.prn del *.prn
|
||||
if exist *.lst del *.lst
|
||||
if exist *.com del *.com
|
||||
6
Source/Apps/Survey/Makefile
Normal file
6
Source/Apps/Survey/Makefile
Normal file
@@ -0,0 +1,6 @@
|
||||
OBJECTS = survey.com
|
||||
DEST = ../../../Binary/Apps
|
||||
TOOLS = ../../../Tools
|
||||
OTHERS = *.hex
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
@@ -15,6 +15,10 @@
|
||||
;
|
||||
;VERSION LIST - Most recent version first.
|
||||
;
|
||||
;10/Feb/23 - Total hack to avoid crash on ECB SBC
|
||||
; RomWBW now required by this version
|
||||
; Wayne Warthen
|
||||
;
|
||||
;16/Dec/17 - Handle 16-bit port addressing using
|
||||
; Z80 IN A,(C) instruction. Wayne Warthen
|
||||
;
|
||||
@@ -234,7 +238,21 @@ TABS EQU 9 ; Tab columns
|
||||
; MAIN PROGRAM ;
|
||||
;***********************;
|
||||
;
|
||||
ORG 100H
|
||||
;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
|
||||
@@ -242,7 +260,8 @@ START:
|
||||
SHLD OLDSP
|
||||
LXI SP,FINIS+64
|
||||
CALL TYPE ; Type initial CRLF
|
||||
DB TAB,TAB,'*** System Survey (December 17) ***'
|
||||
DW CRLF,CRLF
|
||||
DB TAB,'*** RomWBW System Survey (Feb 2023) ***'
|
||||
DW CRLF,CRLFE
|
||||
|
||||
;DISK SURVEY
|
||||
@@ -586,6 +605,13 @@ PDLY:
|
||||
MOV A,H ; ON CONSOLE STATUS PORT
|
||||
ORA L
|
||||
JNZ PDLY
|
||||
;
|
||||
.Z80
|
||||
; RECORD THE ACTIVE BANK
|
||||
LD A,(0FFE0H) ; GET CURRENT HBIOS BANK ID
|
||||
LD (BANK),A ; AND SAVE IT
|
||||
.8080
|
||||
;
|
||||
LXI H,0 ; Init active port counter
|
||||
mvi d,0 ; Init port counter
|
||||
mvi e,0ffh ; init port group variable
|
||||
@@ -596,11 +622,23 @@ PORTLP:
|
||||
CPI SKIPORT
|
||||
JZ ISPORT ; Print mask port
|
||||
ENDIF
|
||||
|
||||
;
|
||||
mov c,a ; port number to reg c
|
||||
mvi b,0 ; for 16 bit port addressing
|
||||
db 0edh,078h ; z80: in a,(c)
|
||||
.Z80
|
||||
in a,(c)
|
||||
.8080
|
||||
;
|
||||
.Z80
|
||||
; MAKE SURE CORRECT BANK IS STILL SELECTED!
|
||||
push af
|
||||
ld a,(BANK)
|
||||
call 0FFF3H
|
||||
pop af
|
||||
.8080
|
||||
;
|
||||
; inactive port could return 0xFF or 0x78 or the port address
|
||||
;
|
||||
cmp c
|
||||
jz nextpt
|
||||
cpi 0FFh
|
||||
@@ -708,7 +746,6 @@ BITSHF:
|
||||
JNZ BITSHF
|
||||
RET
|
||||
|
||||
|
||||
;***********************;
|
||||
; DATA STORAGE ;
|
||||
;***********************;
|
||||
@@ -722,6 +759,12 @@ 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
|
||||
FINIS EQU $ ; End of program
|
||||
;
|
||||
.DEPHASE
|
||||
;
|
||||
IMGEND:
|
||||
;
|
||||
END
|
||||
|
||||
329
Source/Apps/TEST/sound/Scales.asm
Normal file
329
Source/Apps/TEST/sound/Scales.asm
Normal file
@@ -0,0 +1,329 @@
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; PLAY SCALES USING HBIOS
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
FCB .EQU $5C ; Location of default FCB
|
||||
BDOS .EQU $0005
|
||||
;
|
||||
.ORG $0100
|
||||
;
|
||||
LD (OLDSTACK),SP ; save old stack pointer
|
||||
LD SP,STACK ; set new stack pointer
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; GET DEVICE # FROM COMMAND LINE
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
LD A,(FCB+1) ; GET FIRST CHAR
|
||||
SUB ' '
|
||||
JR Z,NO_ARG
|
||||
SUB '0'-' '
|
||||
JP C,EXIT
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; DISPLAY DEVICE AND NUMBER OF CHANNELS
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
NO_ARG: LD (DEVICE),A ;
|
||||
LD DE,TXT_DEV ; DEVICE:
|
||||
CALL PRTSTR
|
||||
CALL PRTDECB
|
||||
LD C,A ; GET DEVICE ID
|
||||
LD A,':'
|
||||
CALL PRTCHR
|
||||
LD B,$55
|
||||
PUSH BC
|
||||
LD E,4
|
||||
RST 08
|
||||
LD DE,TXT_NAME
|
||||
LD A,B
|
||||
RRCA \ RRCA \ RRCA \ RRCA
|
||||
CALL PRTIDXDEA ; SHOW NAME
|
||||
LD DE,TXT_CH
|
||||
CALL PRTSTR
|
||||
;
|
||||
POP BC ; GET & DISPLAY # CHANNELS
|
||||
LD E,1
|
||||
RST 08
|
||||
LD A,B
|
||||
CALL PRTDECB
|
||||
CALL CRLF ; NUMBER OF CHANNELS IS IN B
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; LOOP THROUGH EACH CHANNEL
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
CH__TONE: LD A,(DEVICE) ; C CONTAINS DEVICE
|
||||
LD C,A ; THROUGH THIS LOOP
|
||||
;
|
||||
PUSH BC
|
||||
LD B,50H ; RESET DEVICE
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
PUSH BC
|
||||
LD B,51H ; VOLUME FULL
|
||||
LD L,0FFH
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
LD A,B
|
||||
TST_TONE_LP: DEC A
|
||||
LD (CHANNEL),A ; SAVE CURRENT CHANNEL
|
||||
CALL TST_SCALES ; SCALES TEST
|
||||
; CALL TST_VOLUME ; VOLUME TEST
|
||||
CALL CRLF
|
||||
DJNZ TST_TONE_LP
|
||||
;
|
||||
PUSH BC
|
||||
LD B,50H ; RESET DEVICE
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; RESTORE STACK & EXIT
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
EXIT: LD SP, (OLDSTACK) ; Exit to CP/M
|
||||
RST 00H
|
||||
DI
|
||||
HALT
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; PLAY SCALES FROM HIGHEST HBIOS NOTE TO LOWEST
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
TST_SCALES: PUSH BC
|
||||
PUSH AF
|
||||
;
|
||||
LD HL,380 ; START NOTE
|
||||
LD (NOTE),HL ; Top of Octave 7 is 343
|
||||
|
||||
LD B,51H ; VOLUME HIGH
|
||||
LD L,0FFH
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
NEXT0: PUSH BC
|
||||
;
|
||||
LD DE,TXT_TSTCH ; DISPLAY CHANNEL
|
||||
CALL PRTSTR
|
||||
LD A,(CHANNEL)
|
||||
CALL PRTDECB
|
||||
;
|
||||
LD DE,TXT_NOTE ; DISPLAY NOTE
|
||||
CALL PRTSTR
|
||||
LD HL,(NOTE)
|
||||
CALL PRTDECW
|
||||
POP BC
|
||||
;
|
||||
LD B,53H ; SET NOTE
|
||||
LD HL,(NOTE)
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
|
||||
OR A ; DID DRIVER FAIL
|
||||
JR Z,NEXT4 ; THIS NOTE ?
|
||||
|
||||
LD DE,TXT_BAD_N
|
||||
CALL FAILMSG
|
||||
JR SKIP
|
||||
;
|
||||
NEXT4: LD B,57H ; DURATION
|
||||
LD HL,1000
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
|
||||
LD B,54H ; PLAY
|
||||
LD A,(CHANNEL)
|
||||
LD D,A
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
OR A ; DID DRIVER FAIL
|
||||
JR Z,NEXT2 ; TO PLAY ?
|
||||
|
||||
LD DE,TXT_BAD_N
|
||||
CALL FAILMSG
|
||||
JR SKIP
|
||||
;
|
||||
NEXT2: CALL DELAY
|
||||
CALL CRLF
|
||||
;
|
||||
SKIP: LD HL,(NOTE)
|
||||
DEC HL
|
||||
LD (NOTE),HL
|
||||
|
||||
INC HL
|
||||
LD A,H
|
||||
OR L
|
||||
DEC HL
|
||||
JR NZ,NEXT0
|
||||
;
|
||||
LD B,51H ; VOLUME
|
||||
LD L,00H ; OFF
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
LD B,54H ; PLAY
|
||||
LD A,(CHANNEL)
|
||||
LD D,A
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
|
||||
PUSH BC
|
||||
LD C, 6 ; check for keypress
|
||||
LD E,0FFH
|
||||
CALL BDOS
|
||||
POP BC
|
||||
OR A
|
||||
JP NZ,EXIT
|
||||
|
||||
POP AF
|
||||
POP BC
|
||||
;
|
||||
RET
|
||||
;
|
||||
FAILMSG: PUSH AF
|
||||
PUSH BC
|
||||
CALL PRTSTR
|
||||
CALL CRLF
|
||||
POP BC
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; CONSTANT TONE ON ALL CHANNELS, SCALE VOLUME
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
TST_VOLUME:
|
||||
LD HL,332+48 ; TONE
|
||||
LD (NOTE),HL
|
||||
;
|
||||
LD B,3
|
||||
NEXTCH1 LD A,B
|
||||
DEC A
|
||||
LD (CHANNEL),A
|
||||
PUSH BC ; ACROSS
|
||||
CALL TONE ; ALL
|
||||
|
||||
LD C, 6 ; KEYPRESS
|
||||
LD E, 0FFH
|
||||
CALL BDOS
|
||||
POP BC ; CHANNELS
|
||||
|
||||
OR A
|
||||
JP NZ,EXIT
|
||||
|
||||
DJNZ NEXTCH1
|
||||
|
||||
RET
|
||||
|
||||
TONE: LD A,(DEVICE)
|
||||
LD C,A
|
||||
|
||||
LD B,50H ; RESET
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
NEXT1: LD B,51H ; VOLUME
|
||||
LD A,(VOLUME)
|
||||
LD L,A
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
LD B,53H ; NOTE
|
||||
LD HL,(NOTE)
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
LD B,54H ; PLAY
|
||||
LD A,(CHANNEL)
|
||||
LD D,A
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
CALL DELAY
|
||||
;
|
||||
LD A,(VOLUME)
|
||||
DEC A
|
||||
LD (VOLUME),A
|
||||
JR NZ,NEXT1
|
||||
;
|
||||
LD B,51H ; VOLUME
|
||||
LD L,00H
|
||||
PUSH BC
|
||||
RST 08
|
||||
POP BC
|
||||
;
|
||||
LD B,54H ; PLAY
|
||||
PUSH BC
|
||||
LD A,(CHANNEL)
|
||||
LD D,A
|
||||
POP BC
|
||||
RST 08
|
||||
;
|
||||
RET
|
||||
;;
|
||||
;------------------------------------------------------------------------------
|
||||
; LONG DELAY
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
DELAY: LD HL,-1
|
||||
DELAY1: DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,DELAY1
|
||||
RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY 0
|
||||
; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS
|
||||
; TO THE START OF THE STRING LIST.
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
PRTIDXDEA: LD C,A
|
||||
OR A
|
||||
PRTIDXDEA1: JR Z,PRTIDXDEA3 ; FOUND TARGET SO EXIT
|
||||
PRTIDXDEA2: LD A,(DE) ; LOOP UNIT
|
||||
INC DE ; WE REACH
|
||||
OR A ; END OF STRING
|
||||
JR NZ,PRTIDXDEA2
|
||||
DEC C ; AT STRING END. SO GO
|
||||
JR PRTIDXDEA1 ; CHECK FOR INDEX MATCH
|
||||
PRTIDXDEA3: CALL PRTSTR ; DISPLAY THE STRING
|
||||
RET
|
||||
;
|
||||
#INCLUDE "printing.inc"
|
||||
;
|
||||
TXT_CH .DB "CHANNELS: ",0
|
||||
TXT_TSTCH .DB "CHANNEL: ",0
|
||||
TXT_BAD_N .DB " BAD NOTE",0
|
||||
TXT_BAD_P .DB " PLAY ERROR",0
|
||||
TXT_NOTE .DB " NOTE: ",0
|
||||
TXT_DEV .DB "DEVICE: ",0
|
||||
TXT_NAME .DB "SN76489 ",0
|
||||
.DB "AY-3-8910 ",0
|
||||
.DB "I/O PORT ",0
|
||||
.DB "YM2612 ",0
|
||||
MODE .DB 0 ; scales mode or volume mode
|
||||
DEVICE .DB 0
|
||||
NOTE .DW 128
|
||||
VOLUME .DB 0
|
||||
CHANNEL .DB 0
|
||||
OLDSTACK .DW 0 ; original stack pointer
|
||||
.DS 40H ; space for stack
|
||||
STACK ; top of stack
|
||||
;
|
||||
.END
|
||||
@@ -22,6 +22,7 @@ pushd kbdtest && call Build || exit /b & popd
|
||||
pushd ps2info && call Build || exit /b & popd
|
||||
pushd 2piotst && call Build || exit /b & popd
|
||||
pushd piomon && call Build || exit /b & popd
|
||||
pushd banktest && call Build || exit /b & popd
|
||||
|
||||
goto :eof
|
||||
|
||||
|
||||
@@ -19,3 +19,4 @@ pushd kbdtest && call Clean || exit /b 1 & popd
|
||||
pushd ps2info && call Clean || exit /b 1 & popd
|
||||
pushd 2piotst && call Clean || exit /b 1 & popd
|
||||
pushd piomon && call Clean || exit /b 1 & popd
|
||||
pushd banktest && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
OBJECTS =
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon
|
||||
SUBDIRS = DMAmon I2C inttest ppidetst ramtest tstdskng rzsz vdctest kbdtest ps2info 2piotst piomon banktest
|
||||
DEST = ../../../Binary/Apps/Test
|
||||
TOOLS =../../../Tools
|
||||
|
||||
|
||||
11
Source/Apps/Test/banktest/Build.cmd
Normal file
11
Source/Apps/Test/banktest/Build.cmd
Normal file
@@ -0,0 +1,11 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t80 -g3 -fFF banktest.asm banktest.com banktest.lst || exit /b
|
||||
|
||||
copy /Y banktest.com ..\..\..\..\Binary\Apps\Test\ || exit /b
|
||||
|
||||
6
Source/Apps/Test/banktest/Clean.cmd
Normal file
6
Source/Apps/Test/banktest/Clean.cmd
Normal file
@@ -0,0 +1,6 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
if exist *.com del *.com
|
||||
if exist *.lst del *.lst
|
||||
if exist *.bin del *.bin
|
||||
7
Source/Apps/Test/banktest/Makefile
Normal file
7
Source/Apps/Test/banktest/Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
OBJECTS = banktest.com
|
||||
DEST = ../../../../Binary/Apps/Test
|
||||
TOOLS =../../../../Tools
|
||||
|
||||
USETASM=1
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
564
Source/Apps/Test/banktest/banktest.asm
Normal file
564
Source/Apps/Test/banktest/banktest.asm
Normal file
@@ -0,0 +1,564 @@
|
||||
;===============================================================================
|
||||
; BANKTEST - Test RomWBW bank management API
|
||||
;
|
||||
;===============================================================================
|
||||
;
|
||||
; Author: Wayne Warthen (wwarthen@gmail.com)
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; Usage:
|
||||
; BANKTEST
|
||||
;
|
||||
; Operation:
|
||||
; Steps through a series of banking API tests
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; Change Log:
|
||||
; 2023-01-22 [WBW] Initial release
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
;===============================================================================
|
||||
; Definitions
|
||||
;===============================================================================
|
||||
;
|
||||
runloc .equ $C000 ; Running location (upper memory required)
|
||||
stksiz .equ $40 ; Working stack size
|
||||
;
|
||||
rmj .equ 3 ; intended HBIOS version - major
|
||||
rmn .equ 1 ; intended HBIOS version - minor
|
||||
;
|
||||
restart .equ $0000 ; CP/M restart vector
|
||||
;
|
||||
#include "../../../HBIOS/hbios.inc"
|
||||
;
|
||||
;===============================================================================
|
||||
; Code Section
|
||||
;===============================================================================
|
||||
;
|
||||
.org $100
|
||||
;
|
||||
; relocate worker code to upper memory
|
||||
ld hl,begin ; start of working code image
|
||||
ld de,runloc ; running location
|
||||
ld bc,size ; size of working code image
|
||||
ldir ; copy to upper RAM
|
||||
jp runloc ; and go
|
||||
;
|
||||
; Start of working code
|
||||
;
|
||||
begin .equ $ ; image loaded here
|
||||
;
|
||||
.org runloc ; now generate running location adresses
|
||||
;
|
||||
; setup stack (save old value)
|
||||
ld (stksav),sp ; save stack
|
||||
ld sp,stack ; set new stack
|
||||
;
|
||||
; initialization
|
||||
call init ; initialize
|
||||
jr nz,exit ; abort if init fails
|
||||
;
|
||||
; process
|
||||
call process ; do main processing
|
||||
jr nz,exit ; abort on error
|
||||
;
|
||||
exit: ; clean up and return to command processor
|
||||
call crlf ; formatting
|
||||
ld sp,(stksav) ; restore stack
|
||||
;jp restart ; return to CP/M via restart
|
||||
ret ; return to CP/M w/o restart
|
||||
;
|
||||
; Initialization
|
||||
;
|
||||
init:
|
||||
call crlf2 ; formatting
|
||||
ld de,msgban ; point to version message part 1
|
||||
call prtstr ; print it
|
||||
;
|
||||
call idbio ; identify active BIOS
|
||||
cp 1 ; check for HBIOS
|
||||
jp nz,errbio ; handle BIOS error
|
||||
;
|
||||
ld a,rmj << 4 | rmn ; expected HBIOS ver
|
||||
cp d ; compare with result above
|
||||
jp nz,errbio ; handle BIOS error
|
||||
;
|
||||
initx
|
||||
; initialization complete
|
||||
xor a ; signal success
|
||||
ret ; return
|
||||
;
|
||||
; Process
|
||||
;
|
||||
process:
|
||||
;
|
||||
; Start by testing a bank switch and dumping some memory
|
||||
; from the new bank.
|
||||
;
|
||||
di
|
||||
;
|
||||
; Get and display current RAM bank
|
||||
ld b,BF_SYSGETBNK ; HBIOS GetBank function
|
||||
rst 08 ; do it via RST vector, C=bank id
|
||||
ld a,c ; put bank id in A
|
||||
push af ; save bank id returned
|
||||
call crlf2
|
||||
ld de,msgcur ; load message
|
||||
call prtstr ; print it
|
||||
pop af ; restore bank id
|
||||
call prthex ; print the bank id
|
||||
;
|
||||
; Switch to first RAM bank
|
||||
ld b,BF_SYSSETBNK ; HBIOS SetBank function
|
||||
ld c,$80 ; first RAM bank
|
||||
rst 08 ; do it via RST vector
|
||||
ld a,c ; original bank id to accum
|
||||
ld (orgbnk),a ; save it
|
||||
;
|
||||
; NOTE: Once the page zero of the default bank is swapped out, we
|
||||
; cannot use RST 08 for HBIOS function calls because the vector is
|
||||
; no longer in context. Instead, we rely on the alternate call
|
||||
; address entry point.
|
||||
;
|
||||
; Do an HBIOS function call while bank switched
|
||||
call crlf2
|
||||
ld de,msg80 ; message to print
|
||||
call prtstr ; do it
|
||||
;
|
||||
; Dump chunk of memory from bank
|
||||
call crlf
|
||||
ld de,0 ; from 0x0000
|
||||
call dump_buffer
|
||||
;
|
||||
; Switch back to original bank
|
||||
ld b,BF_SYSSETBNK ; HBIOS SetBank function
|
||||
ld a,(orgbnk) ; get original bank back
|
||||
ld c,a ; to C for function call
|
||||
call HB_INVOKE ; do it via call
|
||||
;
|
||||
ei
|
||||
;
|
||||
; Now poke a small procedure into an alternate bank and do an
|
||||
; inter-bank call to execute it.
|
||||
;
|
||||
; Copy test procedure to a foreign bank
|
||||
ld b,BF_SYSSETCPY ; HBIOS SysSetCopy function
|
||||
ld a,(orgbnk) ; our current bank is source
|
||||
ld e,a ; put in D
|
||||
ld d,xproc_bnk ; target bank is 0x80
|
||||
ld hl,xproc_len ; length to copy
|
||||
rst 08 ; do it
|
||||
;
|
||||
ld b,BF_SYSBNKCPY ; HBIOS SysBnkCopy function
|
||||
ld de,xproc_loc ; destination address
|
||||
ld hl,xproc ; source address
|
||||
rst 08 ; do it
|
||||
;
|
||||
; Do an inter-bank call to the test procedure
|
||||
di ; interrupts off
|
||||
ld a,xproc_bnk ; target bank
|
||||
ld ix,xproc_loc ; target address
|
||||
call HB_BNKCALL ; do it and pray
|
||||
ei ; interrupts back on
|
||||
;
|
||||
call crlf2
|
||||
ld de,msgdone ; message to print
|
||||
call prtstr ; do it
|
||||
;
|
||||
ret ; all done
|
||||
;
|
||||
; Test procedure to be copied into an alternate bank. Code should
|
||||
; be entirely relocatable.
|
||||
;
|
||||
xproc_bnk .equ $80 ; alternate bank for test proc
|
||||
xproc_loc .equ $1000 ; run location for test proc
|
||||
;
|
||||
xproc:
|
||||
call crlf2
|
||||
ld de,msgxcal
|
||||
call prtstr
|
||||
ret
|
||||
;
|
||||
xproc_end .equ $
|
||||
xproc_len .equ xproc_end - xproc
|
||||
;
|
||||
; Identify active BIOS. RomWBW HBIOS=1, UNA UBIOS=2, else 0
|
||||
;
|
||||
idbio:
|
||||
;
|
||||
; Check for UNA (UBIOS)
|
||||
ld a,($FFFD) ; fixed location of UNA API vector
|
||||
cp $C3 ; jp instruction?
|
||||
jr nz,idbio1 ; if not, not UNA
|
||||
ld hl,($FFFE) ; get jp address
|
||||
ld a,(hl) ; get byte at target address
|
||||
cp $FD ; first byte of UNA push ix instruction
|
||||
jr nz,idbio1 ; if not, not UNA
|
||||
inc hl ; point to next byte
|
||||
ld a,(hl) ; get next byte
|
||||
cp $E5 ; second byte of UNA push ix instruction
|
||||
jr nz,idbio1 ; if not, not UNA, check others
|
||||
;
|
||||
ld bc,$04FA ; UNA: get BIOS date and version
|
||||
rst 08 ; DE := ver, HL := date
|
||||
;
|
||||
ld a,2 ; UNA BIOS id = 2
|
||||
ret ; and done
|
||||
;
|
||||
idbio1:
|
||||
; Check for RomWBW (HBIOS)
|
||||
ld hl,(HB_IDENT) ; HL := HBIOS ident location
|
||||
ld a,'W' ; First byte of ident
|
||||
cp (hl) ; Compare
|
||||
jr nz,idbio2 ; Not HBIOS
|
||||
inc hl ; Next byte of ident
|
||||
ld a,~'W' ; Second byte of ident
|
||||
cp (hl) ; Compare
|
||||
jr nz,idbio2 ; Not HBIOS
|
||||
;
|
||||
ld b,BF_SYSVER ; HBIOS: VER function
|
||||
ld c,0 ; required reserved value
|
||||
rst 08 ; DE := version, L := platform id
|
||||
;
|
||||
ld a,1 ; HBIOS BIOS id = 1
|
||||
ret ; and done
|
||||
;
|
||||
idbio2:
|
||||
; No idea what this is
|
||||
xor a ; Setup return value of 0
|
||||
ret ; and done
|
||||
;
|
||||
; Print character in A without destroying any registers
|
||||
;
|
||||
prtchr:
|
||||
push bc ; save registers
|
||||
push de
|
||||
push hl
|
||||
ld e,a ; character to print in E
|
||||
ld b,BF_CIOOUT ; HBIOS function to output a character
|
||||
ld c,CIO_CONSOLE ; write to current console unit
|
||||
call HB_INVOKE ; invoke HBIOS via call
|
||||
pop hl ; restore registers
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
;
|
||||
prtdot:
|
||||
;
|
||||
; shortcut to print a dot preserving all regs
|
||||
push af ; save af
|
||||
ld a,'.' ; load dot char
|
||||
call prtchr ; print it
|
||||
pop af ; restore af
|
||||
ret ; done
|
||||
;
|
||||
prtspace:
|
||||
;
|
||||
; shortcut to print a space preserving all regs
|
||||
push af ; save af
|
||||
ld a,' ' ; load dot char
|
||||
call prtchr ; print it
|
||||
pop af ; restore af
|
||||
ret ; done
|
||||
;
|
||||
prtcr:
|
||||
;
|
||||
; shortcut to print a dot preserving all regs
|
||||
push af ; save af
|
||||
ld a,13 ; load CR value
|
||||
call prtchr ; print it
|
||||
pop af ; restore af
|
||||
ret ; done
|
||||
;
|
||||
; Print a zero terminated string at (DE) without destroying any registers
|
||||
;
|
||||
prtstr:
|
||||
push de
|
||||
;
|
||||
prtstr1:
|
||||
ld a,(de) ; get next char
|
||||
or a
|
||||
jr z,prtstr2
|
||||
call prtchr
|
||||
inc de
|
||||
jr prtstr1
|
||||
;
|
||||
prtstr2:
|
||||
pop de ; restore registers
|
||||
ret
|
||||
;
|
||||
; Print a block of memory nicely formatted
|
||||
; de=buffer address
|
||||
;
|
||||
dump_buffer:
|
||||
call crlf
|
||||
|
||||
push de
|
||||
pop hl
|
||||
inc d
|
||||
inc d
|
||||
|
||||
db_blkrd:
|
||||
push bc
|
||||
push hl
|
||||
pop bc
|
||||
call prthexword ; print start location
|
||||
pop bc
|
||||
call prtspace ;
|
||||
ld c,16 ; set for 16 locs
|
||||
push hl ; save starting hl
|
||||
db_nxtone:
|
||||
ld a,(hl) ; get byte
|
||||
call prthex ; print it
|
||||
call prtspace ;
|
||||
db_updh:
|
||||
inc hl ; point next
|
||||
dec c ; dec. loc count
|
||||
jr nz,db_nxtone ; if line not done
|
||||
; now print 'decoded' data to right of dump
|
||||
db_pcrlf:
|
||||
call prtspace ; space it
|
||||
ld c,16 ; set for 16 chars
|
||||
pop hl ; get back start
|
||||
db_pcrlf0:
|
||||
ld a,(hl) ; get byte
|
||||
and 060h ; see if a 'dot'
|
||||
ld a,(hl) ; o.k. to get
|
||||
jr nz,db_pdot ;
|
||||
db_dot:
|
||||
ld a,2eh ; load a dot
|
||||
db_pdot:
|
||||
call prtchr ; print it
|
||||
inc hl ;
|
||||
ld a,d ;
|
||||
cp h ;
|
||||
jr nz,db_updh1 ;
|
||||
ld a,e ;
|
||||
cp l ;
|
||||
jp z,db_end ;
|
||||
db_updh1:
|
||||
; if block not dumped, do next character or line
|
||||
dec c ; dec. char count
|
||||
jr nz,db_pcrlf0 ; do next
|
||||
db_contd:
|
||||
call crlf ;
|
||||
jp db_blkrd ;
|
||||
|
||||
db_end:
|
||||
ret
|
||||
;
|
||||
; Print the value in A in hex without destroying any registers
|
||||
;
|
||||
prthex:
|
||||
push af ; save AF
|
||||
push de ; save DE
|
||||
call hexascii ; convert value in A to hex chars in DE
|
||||
ld a,d ; get the high order hex char
|
||||
call prtchr ; print it
|
||||
ld a,e ; get the low order hex char
|
||||
call prtchr ; print it
|
||||
pop de ; restore DE
|
||||
pop af ; restore AF
|
||||
ret ; done
|
||||
;
|
||||
; print the hex word value in bc
|
||||
;
|
||||
prthexword:
|
||||
push af
|
||||
ld a,b
|
||||
call prthex
|
||||
ld a,c
|
||||
call prthex
|
||||
pop af
|
||||
ret
|
||||
;
|
||||
; print the hex dword value in de:hl
|
||||
;
|
||||
prthex32:
|
||||
push bc
|
||||
push de
|
||||
pop bc
|
||||
call prthexword
|
||||
push hl
|
||||
pop bc
|
||||
call prthexword
|
||||
pop bc
|
||||
ret
|
||||
;
|
||||
; Convert binary value in A to ascii hex characters in DE
|
||||
;
|
||||
hexascii:
|
||||
ld d,a ; save A in D
|
||||
call hexconv ; convert low nibble of A to hex
|
||||
ld e,a ; save it in E
|
||||
ld a,d ; get original value back
|
||||
rlca ; rotate high order nibble to low bits
|
||||
rlca
|
||||
rlca
|
||||
rlca
|
||||
call hexconv ; convert nibble
|
||||
ld d,a ; save it in D
|
||||
ret ; done
|
||||
;
|
||||
; Convert low nibble of A to ascii hex
|
||||
;
|
||||
hexconv:
|
||||
and $0F ; low nibble only
|
||||
add a,$90
|
||||
daa
|
||||
adc a,$40
|
||||
daa
|
||||
ret
|
||||
;
|
||||
; Print value of A or HL in decimal with leading zero suppression
|
||||
; Use prtdecb for A or prtdecw for HL
|
||||
;
|
||||
prtdecb:
|
||||
push hl
|
||||
ld h,0
|
||||
ld l,a
|
||||
call prtdecw ; print it
|
||||
pop hl
|
||||
ret
|
||||
;
|
||||
prtdecw:
|
||||
push af
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
call prtdec0
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
ret
|
||||
;
|
||||
prtdec0:
|
||||
ld e,'0'
|
||||
ld bc,-10000
|
||||
call prtdec1
|
||||
ld bc,-1000
|
||||
call prtdec1
|
||||
ld bc,-100
|
||||
call prtdec1
|
||||
ld c,-10
|
||||
call prtdec1
|
||||
ld e,0
|
||||
ld c,-1
|
||||
prtdec1:
|
||||
ld a,'0' - 1
|
||||
prtdec2:
|
||||
inc a
|
||||
add hl,bc
|
||||
jr c,prtdec2
|
||||
sbc hl,bc
|
||||
cp e
|
||||
ret z
|
||||
ld e,0
|
||||
call prtchr
|
||||
ret
|
||||
;
|
||||
; Start a new line
|
||||
;
|
||||
crlf2:
|
||||
call crlf ; two of them
|
||||
crlf:
|
||||
push af ; preserve AF
|
||||
ld a,13 ; <CR>
|
||||
call prtchr ; print it
|
||||
ld a,10 ; <LF>
|
||||
call prtchr ; print it
|
||||
pop af ; restore AF
|
||||
ret
|
||||
;
|
||||
; Get the next non-blank character from (HL).
|
||||
;
|
||||
nonblank:
|
||||
ld a,(hl) ; load next character
|
||||
or a ; string ends with a null
|
||||
ret z ; if null, return pointing to null
|
||||
cp ' ' ; check for blank
|
||||
ret nz ; return if not blank
|
||||
inc hl ; if blank, increment character pointer
|
||||
jr nonblank ; and loop
|
||||
;
|
||||
; Convert character in A to uppercase
|
||||
;
|
||||
ucase:
|
||||
cp 'a' ; if below 'a'
|
||||
ret c ; ... do nothing and return
|
||||
cp 'z' + 1 ; if above 'z'
|
||||
ret nc ; ... do nothing and return
|
||||
res 5,a ; clear bit 5 to make lower case -> upper case
|
||||
ret ; and return
|
||||
;
|
||||
; Add the value in A to HL (HL := HL + A)
|
||||
;
|
||||
addhl:
|
||||
add a,l ; A := A + L
|
||||
ld l,a ; Put result back in L
|
||||
ret nc ; if no carry, we are done
|
||||
inc h ; if carry, increment H
|
||||
ret ; and return
|
||||
;
|
||||
; Jump indirect to address in HL
|
||||
;
|
||||
jphl:
|
||||
jp (hl)
|
||||
;
|
||||
; Errors
|
||||
;
|
||||
erruse: ; command usage error (syntax)
|
||||
ld de,msguse
|
||||
jr err
|
||||
;
|
||||
errprm: ; command parameter error (syntax)
|
||||
ld de,msgprm
|
||||
jr err
|
||||
;
|
||||
errbio: ; invalid BIOS or version
|
||||
ld de,msgbio
|
||||
jr err
|
||||
;
|
||||
err: ; print error string and return error signal
|
||||
call crlf2 ; print newline
|
||||
;
|
||||
err1: ; without the leading crlf
|
||||
call prtstr ; print error string
|
||||
;
|
||||
err2: ; without the string
|
||||
; call crlf ; print newline
|
||||
or $FF ; signal error
|
||||
ret ; done
|
||||
;
|
||||
;===============================================================================
|
||||
; Storage Section
|
||||
;===============================================================================
|
||||
;
|
||||
orgbnk .db 0 ; original bank id at startup
|
||||
;
|
||||
stksav .dw 0 ; stack pointer saved at start
|
||||
.fill stksiz,0 ; stack
|
||||
stack .equ $ ; stack top
|
||||
;
|
||||
; Messages
|
||||
;
|
||||
msgban .db "BANKTEST v1.0, 22-Jan-2023",13,10
|
||||
.db "Copyright (C) 2023, Wayne Warthen, GNU GPL v3",0
|
||||
msguse .db "Usage: BANKTEST",13,10
|
||||
msgprm .db "Parameter error (BANKTEST /? for usage)",0
|
||||
msgbio .db "Incompatible BIOS or version, "
|
||||
.db "HBIOS v", '0' + rmj, ".", '0' + rmn, " required",0
|
||||
msgcur .db "Initial Bank ID = 0x",0
|
||||
msg80 .db "Hello from bank 0x80!",0
|
||||
msgxcal .db "Inter-bank procedure call test...",0
|
||||
msgdone .db "End of bank test",0
|
||||
;
|
||||
;
|
||||
;
|
||||
size .equ $ - runloc
|
||||
;
|
||||
.end
|
||||
@@ -34,6 +34,7 @@ PRTCR:
|
||||
; Print a zero terminated string at (DE) without destroying any registers
|
||||
;
|
||||
PRTSTR:
|
||||
PUSH AF
|
||||
PUSH DE
|
||||
;
|
||||
PRTSTR1:
|
||||
@@ -46,6 +47,7 @@ PRTSTR1:
|
||||
;
|
||||
PRTSTR2:
|
||||
POP DE ; restore registers
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; Print the value in A in hex without destroying any registers
|
||||
|
||||
@@ -6,6 +6,7 @@ set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t180 -g3 -fFF -dWBW vgmplay.asm vgmplay.com vgmplay.lst || exit /b
|
||||
tasm -t180 -g3 -fFF -dWBW ymfmdemo.asm ymfmdemo.com ymfmdemo.lst || exit /b
|
||||
|
||||
copy /Y vgmplay.com ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y Tunes\*.* ..\..\..\Binary\Apps\Tunes\ || exit /b
|
||||
copy /Y Tunes\*.vgm ..\..\..\Binary\Apps\Tunes\ || exit /b
|
||||
|
||||
@@ -10,6 +10,9 @@ DEPS := vgmplay.asm $(shell find . -name '*.inc')
|
||||
vgmplay.com: $(DEPS)
|
||||
$(TASM) -dWBW vgmplay.asm vgmplay.com vgmplay.lst
|
||||
|
||||
ym2612.com:
|
||||
$(TASM) -dWBW ymfmdemo.asm ymfmdemo.com ymfmdemo.lst
|
||||
|
||||
all::
|
||||
mkdir -p $(DEST)/Tunes
|
||||
cp Tunes/* $(DEST)/Tunes
|
||||
cp Tunes/*.vgm $(DEST)/Tunes
|
||||
|
||||
BIN
Source/Apps/VGM/Tunes/More/aggress.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/aggress.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/anna.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/anna.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/bgm.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/bgm.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/descent.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/descent.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/fieldmap.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/fieldmap.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/qix.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/qix.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/startdem.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/startdem.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/More/teddy.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/More/teddy.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/bgm.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/bgm.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/ending.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/ending.vgm
Normal file
Binary file not shown.
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/inchina.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/inchina.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/shirakaw.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/shirakaw.vgm
Normal file
Binary file not shown.
BIN
Source/Apps/VGM/Tunes/startdem.vgm
Normal file
BIN
Source/Apps/VGM/Tunes/startdem.vgm
Normal file
Binary file not shown.
@@ -34,6 +34,7 @@ PRTCR:
|
||||
; Print a zero terminated string at (DE) without destroying any registers
|
||||
;
|
||||
PRTSTR:
|
||||
PUSH AF
|
||||
PUSH DE
|
||||
;
|
||||
PRTSTR1:
|
||||
@@ -46,6 +47,7 @@ PRTSTR1:
|
||||
;
|
||||
PRTSTR2:
|
||||
POP DE ; restore registers
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
; Print the value in A in hex without destroying any registers
|
||||
|
||||
@@ -9,122 +9,173 @@
|
||||
; YM2151 support from Ed Brindley
|
||||
;
|
||||
; YM2162/YM3484, GD3 support, VGM Chip identification,
|
||||
; default file type, basic file size checking added by Phil Summers
|
||||
; 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
|
||||
;
|
||||
; 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
|
||||
; available use a much lower sample rate and are playable. Where the processor
|
||||
; speed is low and the sample rate is high, the playback overhead will cause
|
||||
; playback speed to be inaccurate.
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Device and system specific definitions
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
P8X180 .EQU 0 ; System configuration
|
||||
RC2014 .EQU 0
|
||||
SBCECB .EQU 1
|
||||
MBC .EQU 0
|
||||
custom .equ 0 ; System configurations
|
||||
P8X180 .equ 1
|
||||
RC2014 .equ 2
|
||||
sbcecb .equ 3
|
||||
MBC .equ 4
|
||||
;
|
||||
.IF 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
|
||||
FRAME_DLY .EQU 48 ; Frame delay (~ 1/44100)
|
||||
.ENDIF
|
||||
plt_romwbw .equ 1 ; Build for ROMWBW?
|
||||
plt_type .equ sbcecb ; Select build configuration
|
||||
debug .equ 0 ; Display port, register, config info
|
||||
;
|
||||
.IF RC2014
|
||||
RSEL .EQU 0D8H ; Primary AY-3-8910 Register selection
|
||||
RDAT .EQU 0D0H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .EQU 0A0H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .EQU 0A1H ; Secondary AY-3-8910 Register data
|
||||
PSG1REG .EQU 0FFH ; Primary SN76489
|
||||
PSG2REG .EQU 0FBH ; Secondary SN76489
|
||||
YM2151_SEL1 .EQU 0FEH ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .EQU 0FFH ; Primary YM2151 register data
|
||||
YM2151_SEL2 .EQU 0D0H ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .EQU 0D1H ; Secondary YM2151 register data
|
||||
FRAME_DLY .EQU 15 ; Frame delay (~ 1/44100)
|
||||
.ENDIF
|
||||
#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
|
||||
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
|
||||
FRAME_DLY .equ 10 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 6 ; Non ROMWBW cpu speed default
|
||||
#ENDIF
|
||||
;
|
||||
.IF SBCECB
|
||||
RSEL .EQU 0D8H ; Primary AY-3-8910 Register selection
|
||||
RDAT .EQU 0D0H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .EQU 0A0H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .EQU 0A1H ; Secondary AY-3-8910 Register data
|
||||
YMSEL .EQU 0C0H ; Primary YM2162 11000000 a1=0 a0=0
|
||||
YMDAT .EQU 0C1H ; Primary YM2162 11000001 a1=0 a0=1
|
||||
YM2SEL .EQU 0C2H ; Secondary YM2162 11000010 a1=1 a0=0
|
||||
YM2DAT .EQU 0C3H ; Secondary YM2162 11000011 a1=1 a0=1
|
||||
PSG1REG .EQU 0C6H ; Primary SN76489
|
||||
PSG2REG .EQU 0C7H ; Secondary SN76489
|
||||
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
|
||||
FRAME_DLY .EQU 8 ; 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
|
||||
#ENDIF
|
||||
;
|
||||
.IF MBC
|
||||
RSEL .EQU 0A0H ; Primary AY-3-8910 Register selection
|
||||
RDAT .EQU 0A1H ; Primary AY-3-8910 Register data
|
||||
RSEL .EQU 0D8H ; Secondary AY-3-8910 Register selection
|
||||
RDAT .EQU 0D0H ; Secondary AY-3-8910 Register data
|
||||
YMSEL .EQU 0C0H ; 11000000 a1=0 a0=0
|
||||
YMDAT .EQU 0C1H ; 11000001 a1=0 a0=1
|
||||
YM2SEL .EQU 0C2H ; 11000010 a1=1 a0=0
|
||||
YM2DAT .EQU 0C3H ; 11000011 a1=1 a0=1
|
||||
PSGREG .EQU 0C6H ; Primary SN76489
|
||||
PSG2REG .EQU 0C7H ; Secondary SN76489
|
||||
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
|
||||
FRAME_DLY .EQU 10 ; Frame delay (~ 1/44100)
|
||||
.ENDIF
|
||||
#IF (plt_type=RC2014)
|
||||
RSEL .equ 0D8H ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 0D0H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 0A0H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 0A1H ; Secondary AY-3-8910 Register data
|
||||
PSG1REG .equ 0FFH ; Primary SN76489
|
||||
PSG2REG .equ 0FBH ; Secondary SN76489
|
||||
YM2151_SEL1 .equ 0FEH ; Primary YM2151 register selection
|
||||
YM2151_DAT1 .equ 0FFH ; Primary YM2151 register data
|
||||
YM2151_SEL2 .equ 0D0H ; Secondary YM2151 register selection
|
||||
YM2151_DAT2 .equ 0D1H ; 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 12 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 7 ; Non ROMWBW cpu speed default
|
||||
#ENDIF
|
||||
;
|
||||
#IF (plt_type=sbcecb)
|
||||
RSEL .equ 09AH ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 09BH ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 0A0H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 0A1H ; 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+06H ; Primary SN76489
|
||||
PSG2REG .equ VGMBASE+07H ; 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
|
||||
FRAME_DLY .equ 13 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 8 ; Non ROMWBW cpu speed default
|
||||
#ENDIF
|
||||
;
|
||||
#IF (plt_type=MBC)
|
||||
RSEL .equ 0A0H ; Primary AY-3-8910 Register selection
|
||||
RDAT .equ 0A1H ; Primary AY-3-8910 Register data
|
||||
RSEL2 .equ 0D8H ; Secondary AY-3-8910 Register selection
|
||||
RDAT2 .equ 0D0H ; Secondary AY-3-8910 Register data
|
||||
YMSEL .equ 0C0H ; 11000000 a1=0 a0=0
|
||||
YMDAT .equ 0C1H ; 11000001 a1=0 a0=1
|
||||
YM2SEL .equ 0C2H ; 11000010 a1=1 a0=0
|
||||
YM2DAT .equ 0C3H ; 11000011 a1=1 a0=1
|
||||
PSG1REG .equ 0C6H ; Primary SN76489
|
||||
PSG2REG .equ 0C7H ; Secondary SN76489
|
||||
ctcbase .equ 000H ; 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
|
||||
FRAME_DLY .equ 13 ; Frame delay (~ 1/44100)
|
||||
plt_cpuspd .equ 8 ; Non ROMWBW cpu speed default
|
||||
#ENDIF
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Your customer overrides can go in here i.e. ports
|
||||
; Configure timing loop
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;RSEL .SET 09AH ; Primary AY-3-8910 Register selection
|
||||
;RDAT .SET 09BH ; Primary AY-3-8910 Register data
|
||||
cpu_loop: .equ 0
|
||||
ctc_poll: .equ 1
|
||||
ctc_int: .equ 2 ; not implemented
|
||||
;
|
||||
delay_type: .equ cpu_loop ; cpu timed loop or utilize ctc
|
||||
delay_wait .equ 0 ; funny wait mode for ctc
|
||||
;
|
||||
D60 .equ 735 ; 735x60=44100 Frame delay values for ntsc
|
||||
D50 .equ 882 ; 882x50=44100 Frame delay values for pal
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Frame delay overide values for different processor speeds.
|
||||
; CTC Defaults
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;FRAME_DLY .SET 10 ; 1Mhz ; not
|
||||
;FRAME_DLY .SET 10 ; 2Mhz ; implemented
|
||||
;FRAME_DLY .SET 10 ; 4Mhz ; yet
|
||||
;FRAME_DLY .SET 15 ; 8Mhz
|
||||
;FRAME_DLY .SET 10 ; 10Mhz
|
||||
;FRAME_DLY .SET 20 ; 12Mhz
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Frame delay values for pal/ntsc
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
D60 .EQU 735
|
||||
D50 .EQU 882
|
||||
ctcdiv0 .equ 1 ; Divider chain for 3.579545MHz input
|
||||
ctcdiv1 .equ 1 ; Ctc with 3 step divider base address
|
||||
ctcdiv2 .equ 16
|
||||
ctcdiv3 .equ 3 ; 3579545 / 1 / 2 / 41 = 43653 = 1% error
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Processor speed control for SBCV2004+
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;#DEFINE SBCV2004 ; My SBC board at 12Mhz needs this to switch to
|
||||
HB_RTCVAL .EQU 0FFEEH ; 6MHz for it to work with the ECB-VGM reliably.
|
||||
RTCIO .EQU 070H
|
||||
|
||||
HB_RTCVAL .equ 0FFEEH ; 6MHz for it to work with the ECB-VGM reliably.
|
||||
RTCIO .equ 070H
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; YM2162 Register write macros
|
||||
; YM2162 Register write macros - with wait and timeout
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
#DEFINE setreg(reg,val) \
|
||||
@@ -132,53 +183,57 @@ RTCIO .EQU 070H
|
||||
#DEFCONT \ out (YMSEL),a
|
||||
#DEFCONT \ ld a,val
|
||||
#DEFCONT \ out (YMDAT),a
|
||||
#DEFCONT \ ld b,0
|
||||
#DEFCONT \ in a,(YMSEL)
|
||||
#DEFCONT \ rlca
|
||||
#DEFCONT \ jp c,$-3
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
;
|
||||
#DEFINE setreg2(reg,val) \
|
||||
#DEFCONT \ ld a,reg
|
||||
#DEFCONT \ out (YM2SEL),a
|
||||
#DEFCONT \ ld a,val
|
||||
#DEFCONT \ out (YM2DAT),a
|
||||
#DEFCONT \ ld b,0
|
||||
#DEFCONT \ in a,(YMSEL)
|
||||
#DEFCONT \ rlca
|
||||
#DEFCONT \ jp c,$-3
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; VGM Codes
|
||||
; VGM Codes - see vgmrips.net/wiki/VGM_specification
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
VGM_GG_W .EQU 04FH ; GAME GEAR PSG STEREO. WRITE DD TO PORT 0X06
|
||||
VGM_PSG1_W .EQU 050H ; PSG (SN76489/SN76496) #1 WRITE VALUE DD
|
||||
VGM_PSG2_W .EQU 030H ; PSG (SN76489/SN76496) #2 WRITE VALUE DD
|
||||
VGM_YM26121_W .EQU 052H ; YM2612 #1 WRITE VALUE DD
|
||||
VGM_YM26122_W .EQU 053H ; YM2612 #2 WRITE VALUE DD
|
||||
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 #2WRITE VALUE DD
|
||||
VGM_GG_W .equ 04FH ; GAME GEAR PSG STEREO. WRITE DD TO PORT 0X06
|
||||
VGM_PSG1_W .equ 050H ; PSG (SN76489/SN76496) #1 WRITE VALUE DD
|
||||
VGM_PSG2_W .equ 030H ; PSG (SN76489/SN76496) #2 WRITE VALUE DD
|
||||
VGM_YM26121_W .equ 052H ; YM2612 #1 WRITE VALUE DD
|
||||
VGM_YM26122_W .equ 053H ; YM2612 #2 WRITE VALUE DD
|
||||
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
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Generic CP/M definitions
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
BOOT .EQU 0000H ; boot location
|
||||
BDOS .EQU 0005H ; bdos entry point
|
||||
FCB .EQU 005CH ; file control block
|
||||
FCBCR .EQU FCB + 20H ; fcb current record
|
||||
BUFF .EQU 0080H ; DMA buffer
|
||||
TOPM .EQU 0002H ; Top of memory
|
||||
BOOT .equ 0000H ; boot location
|
||||
BDOS .equ 0005H ; bdos entry point
|
||||
FCB .equ 005CH ; file control block
|
||||
FCBCR .equ FCB + 20H ; fcb current record
|
||||
BUFF .equ 0080H ; DMA buffer
|
||||
TOPM .equ 0002H ; Top of memory
|
||||
|
||||
PRINTF .EQU 9 ; BDOS print string function
|
||||
OPENF .EQU 15 ; BDOS open file function
|
||||
CLOSEF .EQU 16 ; BDOS close file function
|
||||
READF .EQU 20 ; BDOS sequential read function
|
||||
PRINTF .equ 9 ; BDOS print string function
|
||||
OPENF .equ 15 ; BDOS open file function
|
||||
CLOSEF .equ 16 ; BDOS close file function
|
||||
READF .equ 20 ; BDOS sequential read function
|
||||
|
||||
CR .EQU 0DH ; carriage return
|
||||
LF .EQU 0AH ; line feed
|
||||
CR .equ 0DH ; carriage return
|
||||
LF .equ 0AH ; line feed
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Program Start
|
||||
@@ -188,12 +243,29 @@ LF .EQU 0AH ; line feed
|
||||
|
||||
LD (OLDSTACK),SP ; save old stack pointer
|
||||
LD SP,STACK ; set new stack pointer
|
||||
|
||||
LD DE,MSG_WELC ; Welcome Message
|
||||
CALL PRTSTR
|
||||
|
||||
;
|
||||
#IF (delay_type==cpu_loop)
|
||||
call setfdelay ; Setup the frame delay based on cpu speed
|
||||
#ENDIF
|
||||
;
|
||||
#IF (delay_type==ctc_poll)
|
||||
call cfgctc_poll ; If building for polled ctc, initialize it
|
||||
#ENDIF
|
||||
;
|
||||
#IF (delay_type==ctc_int) ; If building for interrupt driven ctc, initialize it
|
||||
call cfgctc_int
|
||||
#ENDIF
|
||||
;
|
||||
#IF (debug)
|
||||
; LD A,0 ; tone to validate presence
|
||||
;TST: LD C,PSG1REG
|
||||
; OUT (C),A
|
||||
; LD C,PSG2REG
|
||||
; OUT (C),A
|
||||
; JR TST
|
||||
#ENDIF
|
||||
call welcome ; Welcome message and build debug info
|
||||
CALL READVGM ; Read in the VGM file
|
||||
|
||||
CALL VGMINFO ; Check and display VGM Information
|
||||
|
||||
LD HL, (VGMDATA + 34H) ; Determine start of VGM
|
||||
@@ -206,25 +278,63 @@ _S1 LD DE, VGMDATA + 34H
|
||||
LD (VGMPOS), HL
|
||||
|
||||
LD HL,D60 ; VGM delay (60hz)
|
||||
LD (VGMDLY), HL
|
||||
|
||||
LD (vdelay), HL
|
||||
;
|
||||
LD IX,VGM_DEV ; IX points to device mask
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Play loop
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
MAINLOOP CALL PLAY ; Play one frame
|
||||
|
||||
LD C,6 ; Check for keypress
|
||||
LD E,0FFH
|
||||
CALL BDOS
|
||||
;
|
||||
LD HL,KEYCHK ; Check for keypress
|
||||
DEC (HL)
|
||||
JR NZ,NO_CHK
|
||||
;
|
||||
LD C,6 ; Every 256 commands
|
||||
LD E,0FFH ; because HBIOS calls
|
||||
CALL BDOS ; take a long time
|
||||
OR A
|
||||
JR NZ,EXIT
|
||||
NO_CHK:
|
||||
#IF (delay_type==cpu_loop)
|
||||
vdelay: .equ $+1
|
||||
ld hl,vdelay
|
||||
fdelay: .equ $+1
|
||||
lp1: LD B,FRAME_DLY ; 44100 one frame = 0.0000226757 seconds
|
||||
DJNZ $
|
||||
DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JP NZ,lp1 ; Normally NZ so jp is faster
|
||||
#ENDIF
|
||||
;
|
||||
#IF (delay_type==ctc_poll)
|
||||
vdelay: .equ $+1
|
||||
ld hl,vdelay ; Frame delay
|
||||
lp1: in a,(ctcch3) ; wait for counter to reach zero
|
||||
dec a
|
||||
jr nz,lp1
|
||||
#IF (delay_wait)
|
||||
lp2: in a,(ctcch3) ; wait for counter to pass zero
|
||||
dec a
|
||||
jr z,lp2
|
||||
|
||||
LD HL,(VGMDLY) ; Frame delay
|
||||
L1 LD B,FRAME_DLY
|
||||
DJNZ $
|
||||
DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JR NZ,L1
|
||||
|
||||
JR MAINLOOP
|
||||
lp3: in a,(ctcch3) ; wait for counter to reach zero
|
||||
dec a
|
||||
jr nz,lp3
|
||||
#ENDIF
|
||||
DEC HL
|
||||
LD A,H
|
||||
OR L
|
||||
JP NZ,lp1 ; Normally NZ so jp is faster
|
||||
#ENDIF
|
||||
;
|
||||
#IF (delay_type==ctc_int)
|
||||
#ENDIF
|
||||
;
|
||||
JP MAINLOOP
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Program Exit
|
||||
@@ -240,6 +350,194 @@ EXIT: CALL VGMDEVICES ; Display devices used
|
||||
EXIT_ERR: CALL PRTSTR ; Generic message or error
|
||||
LD SP, (OLDSTACK) ; Exit to CP/M
|
||||
RST 00H
|
||||
DI
|
||||
HALT
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Welcome
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
welcome: LD DE,MSG_WELC ; Welcome Message
|
||||
CALL PRTSTR
|
||||
;
|
||||
#IF (plt_romwbw)
|
||||
LD DE,MSG_ROMWBW ; display system type
|
||||
CALL PRTSTR
|
||||
#ENDIF
|
||||
;
|
||||
LD A,delay_type ; display build type
|
||||
LD DE,MSG_CPU
|
||||
CALL PRTIDXDEA
|
||||
;
|
||||
LD A,plt_type ; display system type
|
||||
LD DE,MSG_CUSTOM
|
||||
CALL PRTIDXDEA
|
||||
call CRLF
|
||||
;
|
||||
#IF (debug)
|
||||
#IF (delay_type==cpu_loop)
|
||||
ld a,'f' ; Display frame rate delay
|
||||
call PRTCHR
|
||||
call PRTDOT
|
||||
ld a,(fdelay)
|
||||
call PRTDECB
|
||||
LD A,' '
|
||||
#ENDIF
|
||||
CALL PRTCHR
|
||||
ld a,'c'
|
||||
call PRTCHR
|
||||
call PRTDOT
|
||||
ld a,ctcdiv0 ; Display ctc divider values
|
||||
call PRTDECB
|
||||
CALL PRTDOT
|
||||
ld a,ctcdiv1
|
||||
call PRTDECB
|
||||
CALL PRTDOT
|
||||
ld a,ctcdiv2
|
||||
call PRTDECB
|
||||
CALL PRTDOT
|
||||
ld a,ctcdiv3
|
||||
call PRTDECB
|
||||
;
|
||||
#IF (delay_wait)
|
||||
ld a,' '
|
||||
CALL PRTCHR
|
||||
LD A,'w' ; Display if using double wait
|
||||
CALL PRTCHR
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
CALL CRLF
|
||||
ret
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Setup frame delay value - Loop count for DJNZ $ loop
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
setfdelay:
|
||||
#IF (delay_type==cpu_loop)
|
||||
#IF (plt_romwbw)
|
||||
LD BC,$F8F0 ; GET CPU SPEED
|
||||
RST 08 ; FROM HBIOS
|
||||
LD A,L ;
|
||||
#ELSE
|
||||
ld a,plt_cpuspd ; USE STANDALONE CPU SPEED
|
||||
#ENDIF
|
||||
LD HL,CLKTBL-1 ; CPU SPEED
|
||||
ADD A,L ; INDEXES
|
||||
LD L,A ; INTO
|
||||
ADC A,H ; TABLE
|
||||
SUB L
|
||||
LD H,A ; LOOK IT UP IN THE
|
||||
LD A,(HL) ; CLOCK TABLE
|
||||
|
||||
LD (fdelay),A ; SAVE LOOP COUNTER FOR CPU SPEED
|
||||
RET
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Frame delay values for different processor speeds.
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; 1/44100hz = 22676ns
|
||||
; 16Mhz = 62.5ns : DJNZ $ = 1 frame delay= 22676ns/13*62.5ns = 27.91
|
||||
; 12Mhz = 83.3ns : DJNZ $ = 1 frame delay= 22676ns/13*83.3ns = 20.94
|
||||
; 10Mhz = 100ns : DJNZ $ = 1 frame delay= 22676ns/13*100ns = 17.44
|
||||
; 8Mhz = 125ns : DJNZ $ = 1 frame delay= 22676ns/13*125ns = 13.95
|
||||
; 7.3728Mhz = 135.6ns : DJNZ $ = 1 frame delay= 22676ns/13*135.6ns = 12.86
|
||||
; 6Mhz = 166.6s : DJNZ $ = 1 frame delay= 22676ns/13*166.6ns = 10.47
|
||||
; 4Mhz = 250ns : DJNZ $ = 1 frame delay= 22676ns/13*250ns = 6.98
|
||||
; 2Mhz = 500ns : DJNZ $ = 1 frame delay= 22676ns/13*500ns = 3.49
|
||||
; 1Mhz = 1000ns : DJNZ $ = 1 frame delay= 22676ns/13*1000ns = 1.74
|
||||
;
|
||||
CLKTBL: .DB 1 ; 1Mhz ; none of these
|
||||
.DB 3 ; 2Mhz ; have been
|
||||
.DB 0 ; 3Mhz ; validated
|
||||
.DB 6 ; 4Mhz
|
||||
.DB 0 ; 5Mhz
|
||||
.DB 10 ; 6Mhz
|
||||
.DB 12 ; 7Mhz 7.3728Mhz
|
||||
.DB 13 ; 8Mhz
|
||||
.DB 0 ; 9Mhz
|
||||
.DB 17 ; 10Mhz
|
||||
.DB 0 ; 11Mhz
|
||||
.DB 20 ; 12Mhz
|
||||
.DB 0 ; 13Mhz
|
||||
.DB 0 ; 14Mhz
|
||||
.DB 0 ; 15Mhz
|
||||
.DB 27 ; 16Mhz
|
||||
.DB 0 ; 17Mhz
|
||||
.DB 0 ; 18Mhz
|
||||
.DB 0 ; 19Mhz
|
||||
.DB 0 ; 20Mhz
|
||||
#ENDIF
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Initialize CTC
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; %01010011 ; CTC DEFAULT CONFIG
|
||||
; %01010111 ; CTC COUNTER MODE CONFIG
|
||||
; %11010111 ; CTC COUNTER INTERRUPT MODE CONFIG
|
||||
; |||||||+-- CONTROL WORD FLAG
|
||||
; ||||||+--- SOFTWARE RESET
|
||||
; |||||+---- TIME CONSTANT FOLLOWS
|
||||
; ||||+----- AUTO TRIGGER WHEN TIME CONST LOADED
|
||||
; |||+------ RISING EDGE TRIGGER
|
||||
; ||+------- TIMER MODE PRESCALER (0=16, 1=256)
|
||||
; |+-------- COUNTER MODE
|
||||
; +--------- INTERRUPT ENABLE
|
||||
;
|
||||
cfgctc_poll:
|
||||
;
|
||||
ctcch0 .equ ctcbase
|
||||
ctcch1 .equ ctcbase+1
|
||||
ctcch2 .equ ctcbase+2
|
||||
ctcch3 .equ ctcbase+3
|
||||
;
|
||||
ctccfg0 .equ %01010011
|
||||
ctccfg1 .equ %01010111
|
||||
ctccfg2 .equ %01010111
|
||||
ctccfg3 .equ %01010111
|
||||
;
|
||||
ld a,ctccfg0 & $7f ; ; Channel 0
|
||||
out (ctcch0),a
|
||||
;
|
||||
ld a,ctccfg1 & $7f ; Channel 1
|
||||
out (ctcch1),a ;
|
||||
ld a,ctcdiv1 & $ff ;
|
||||
out (ctcch1),a ;
|
||||
;
|
||||
ld a,ctccfg2 & $7f ; Channel 2
|
||||
out (ctcch2),a ;
|
||||
ld a,ctcdiv2 & $ff ;
|
||||
out (ctcch2),a ;
|
||||
;
|
||||
ld a,ctccfg3 & $7f ; Channel 3
|
||||
out (ctcch3),a ;
|
||||
ld a,ctcdiv3 & $ff ;
|
||||
out (ctcch3),a ;
|
||||
;
|
||||
ret
|
||||
;
|
||||
#IF (debug)
|
||||
ctctest:
|
||||
ld b,0
|
||||
|
||||
ctclp1: in a,(ctcch3) ; wait for counter to reach zero
|
||||
dec a
|
||||
jr nz,ctclp1
|
||||
|
||||
ctclp2: in a,(ctcch3) ; wait for counter to pass zero
|
||||
dec a
|
||||
jr z,ctclp2
|
||||
|
||||
call PRTDOT
|
||||
;
|
||||
djnz ctclp1
|
||||
#ENDIF
|
||||
ret
|
||||
;
|
||||
cfgctc_int:
|
||||
ret
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Read VGM file into memory
|
||||
@@ -396,7 +694,6 @@ PLAY
|
||||
#IFDEF SBCV2004
|
||||
CALL SLOWIO
|
||||
#ENDIF
|
||||
LD IX,VGM_DEV
|
||||
LD HL, (VGMPOS) ; Start processing VGM commands
|
||||
NEXT LD A, (HL)
|
||||
INC HL
|
||||
@@ -406,19 +703,14 @@ NEXT LD A, (HL)
|
||||
LD HL, (VGMDATA + 1CH) ; Loop offset
|
||||
LD A, H
|
||||
OR L
|
||||
JP Z, EXIT
|
||||
JP Z, EXIT
|
||||
LD DE, VGMDATA + 1CH
|
||||
ADD HL, DE
|
||||
LD (VGMPOS), HL
|
||||
JR NEXT
|
||||
|
||||
NEXT1 CP VGM_GG_W ; Game Gear SN76489 stereo. Ignored
|
||||
JR NZ, PSG
|
||||
LD IX,VGM_DEV
|
||||
SET 0,(IX+1)
|
||||
INC HL
|
||||
JR NEXT
|
||||
|
||||
NEXT1:
|
||||
;
|
||||
; SN76489 SECTION
|
||||
|
||||
PSG CP VGM_PSG1_W ; Write byte to SN76489.
|
||||
@@ -426,7 +718,6 @@ PSG CP VGM_PSG1_W ; Write byte to SN76489.
|
||||
LD A, (HL)
|
||||
INC HL
|
||||
OUT (PSG1REG), A
|
||||
LD IX,VGM_DEV
|
||||
SET 0,(IX+0)
|
||||
JR NEXT
|
||||
|
||||
@@ -435,7 +726,6 @@ PSG2 CP VGM_PSG2_W ; Write byte to second SN76489.
|
||||
LD A, (HL)
|
||||
INC HL
|
||||
OUT (PSG2REG), A
|
||||
LD IX,VGM_DEV
|
||||
SET 1,(IX+0)
|
||||
JR NEXT
|
||||
|
||||
@@ -452,19 +742,17 @@ AY CP 0A0H
|
||||
LD A, (HL)
|
||||
INC HL
|
||||
OUT (RDAT2), A
|
||||
LD IX,VGM_DEV
|
||||
SET 2,(IX+0)
|
||||
JR NEXT
|
||||
AY1 OUT (RSEL), A
|
||||
LD A, (HL)
|
||||
INC HL
|
||||
OUT (RDAT), A
|
||||
LD IX,VGM_DEV
|
||||
SET 3,(IX+0)
|
||||
JR NEXT
|
||||
|
||||
;
|
||||
; YM2612 SECTION
|
||||
|
||||
;
|
||||
YM2162_1 CP VGM_YM26121_W
|
||||
JR NZ, YM2162_2
|
||||
LD A,(HL)
|
||||
@@ -473,7 +761,6 @@ YM2162_1 CP VGM_YM26121_W
|
||||
LD A,(HL)
|
||||
OUT (YMDAT),A
|
||||
INC HL
|
||||
LD IX,VGM_DEV
|
||||
SET 4,(IX+0)
|
||||
JP NEXT
|
||||
;
|
||||
@@ -485,12 +772,11 @@ YM2162_2 CP VGM_YM26122_W
|
||||
LD A,(HL)
|
||||
OUT (YM2DAT),A
|
||||
INC HL
|
||||
LD IX,VGM_DEV
|
||||
SET 4,(IX+0) ; 2nd channel
|
||||
JP NEXT
|
||||
|
||||
;
|
||||
; YM2151 SECTION
|
||||
|
||||
;
|
||||
YM2151_1 CP VGM_YM21511_W
|
||||
JR NZ,YM2151_2
|
||||
LD A,(HL)
|
||||
@@ -499,21 +785,27 @@ YM2151_1 CP VGM_YM21511_W
|
||||
LD A,(HL)
|
||||
OUT (YM2151_DAT1),A
|
||||
INC HL
|
||||
LD IX,VGM_DEV
|
||||
SET 6,(IX+0)
|
||||
JP NEXT
|
||||
;
|
||||
YM2151_2 CP VGM_YM21512_W
|
||||
JR NZ,WAITNN
|
||||
JR NZ,GG
|
||||
LD A,(HL)
|
||||
OUT (YM2151_SEL2),A
|
||||
INC HL
|
||||
LD A,(HL)
|
||||
OUT (YM2151_DAT2),A
|
||||
INC HL
|
||||
LD IX,VGM_DEV
|
||||
SET 7,(IX+0)
|
||||
JP NEXT
|
||||
;
|
||||
; GAME GEAR SN76489 STEREO SECTION
|
||||
;
|
||||
GG: CP VGM_GG_W ; Stereo steering port value
|
||||
JR NZ, WAITNN
|
||||
; SET 0,(IX+1)
|
||||
INC HL
|
||||
JP NEXT
|
||||
;
|
||||
WAITNN CP VGM_WNS ; Wait nn samples
|
||||
JR NZ, WAIT60
|
||||
@@ -524,36 +816,43 @@ WAITNN CP VGM_WNS ; Wait nn samples
|
||||
LD (VGMPOS), HL
|
||||
LD L, A
|
||||
LD H, D
|
||||
LD (VGMDLY), HL
|
||||
LD (vdelay), HL
|
||||
RET
|
||||
;
|
||||
WAIT60 CP VGM_W735 ; Wait 735 samples (60Hz)
|
||||
JR NZ, WAIT50
|
||||
LD (VGMPOS), HL
|
||||
LD HL, D60
|
||||
LD (VGMDLY), HL
|
||||
LD (vdelay), HL
|
||||
RET
|
||||
;
|
||||
WAIT50 CP VGM_W882 ; Wait 882 samples (50Hz)
|
||||
JR NZ, WAIT1
|
||||
LD (VGMPOS), HL
|
||||
LD HL, D50
|
||||
LD (VGMDLY), HL
|
||||
WAIT50: CP VGM_W882 ; Wait 882 samples (50Hz)
|
||||
JR NZ, WAIT1
|
||||
LD (VGMPOS), HL
|
||||
LD HL, D50
|
||||
LD (vdelay), HL
|
||||
RET
|
||||
;
|
||||
WAIT1 CP 70H ; WAIT 0-15 SAMPLES
|
||||
WAIT1: CP 70H ; WAIT 0-15 SAMPLES
|
||||
JR C, UNK ; CODES 70-7FH
|
||||
CP 80H
|
||||
JP NC, UNK
|
||||
SUB 6FH
|
||||
LD L, A
|
||||
LD H, 0
|
||||
LD (VGMDLY), HL
|
||||
LD (vdelay), HL
|
||||
RET
|
||||
;
|
||||
UNK LD IX,VGM_DEV ; Set flag for
|
||||
SET 0,(IX+1) ; unknown device
|
||||
UNK: SET 0,(IX+1) ; unknown device
|
||||
INC HL ; Try and skip
|
||||
#IF (debug)
|
||||
ld a,'u' ; Display unknow command
|
||||
call PRTCHR
|
||||
call PRTDOT
|
||||
call PRTHEX
|
||||
ld a,' '
|
||||
call PRTCHR
|
||||
#ENDIF
|
||||
JP NEXT
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
@@ -609,12 +908,6 @@ CHKDEV: AND %00000011 ; Display
|
||||
CALL PRTCHR ; Skip if not
|
||||
CALL PRTSTR ; used.
|
||||
RET
|
||||
|
||||
DEBUG: PUSH AF
|
||||
LD A,'*'
|
||||
CALL PRTCHR
|
||||
POP AF
|
||||
RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Mute Devices.
|
||||
@@ -939,6 +1232,28 @@ FASTIO:
|
||||
RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; PRINT THE nTH STRING IN A LIST OF STRINGS WHERE EACH IS TERMINATED BY 0
|
||||
; A REGISTER DEFINES THE nTH STRING IN THE LIST TO PRINT AND DE POINTS
|
||||
; TO THE START OF THE STRING LIST.
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
PRTIDXDEA:
|
||||
LD C,A
|
||||
OR A
|
||||
PRTIDXDEA1:
|
||||
JR Z,PRTIDXDEA3 ; FOUND TARGET SO EXIT
|
||||
PRTIDXDEA2:
|
||||
LD A,(DE) ; LOOP UNIT
|
||||
INC DE ; WE REACH
|
||||
OR A ; END OF STRING
|
||||
JR NZ,PRTIDXDEA2
|
||||
DEC C ; AT STRING END. SO GO
|
||||
JR PRTIDXDEA1 ; CHECK FOR INDEX MATCH
|
||||
PRTIDXDEA3:
|
||||
CALL PRTSTR ; DISPLAY THE STRING
|
||||
RET
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; External routines.
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
@@ -948,8 +1263,8 @@ FASTIO:
|
||||
; Strings and constants.
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
MSG_WELC: .DB "VGM Player for RomWBW v0.3, 2-Jul-2022",CR,LF
|
||||
; .DB "J.B. Langston/Marco Maccaferri/Phil Summers",CR,LF
|
||||
MSG_WELC: .DB "VGM Player v0.4, 11-Dec-2022"
|
||||
; .DB CR,LF, "J.B. Langston/Marco Maccaferri/Ed Brindley/Phil Summers",CR,LF
|
||||
.DB 0
|
||||
MSG_BADF: .DB "Not a VGM file",CR,LF,0
|
||||
MSG_PO .DB "Played on : ",0
|
||||
@@ -963,17 +1278,33 @@ MSG_NOFILE: .DB "File not found", CR, LF, 0
|
||||
MSG_MEM: .DB "File to big", CR, LF, 0
|
||||
MSG_TITLE: .DB " from: ",0
|
||||
MSG_TRACK .DB "Playing: ",0
|
||||
MSG_CPU .DB "[cpu]",0
|
||||
MSG_CTCPOLL .DB "[ctc polled]",0
|
||||
MSG_CTCINT .DB "[ctc interrupts]",0
|
||||
MSG_ROMWBW .DB " [romwbw] ",0
|
||||
MSG_CUSTOM .DB " [custom] ",0
|
||||
MSG_P8X180 .DB " [p8x180] ",0
|
||||
MSG_RC2014 .DB " [rc2014] ",0
|
||||
MSG_SBCECB .DB " [sbc] ",0
|
||||
MSG_MBC .DB " [mbc] ",0
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Variables
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
VGMPOS .DW 0
|
||||
VGMDLY .DW 0
|
||||
VGMUNK_F .DB 0 ; Flag for unknown device
|
||||
VGM_DEV .DB %00000000 ; yyYYAASS
|
||||
.DB %00000000 ; Unimplemented device flags
|
||||
;VGMDLY .DW 0 ; Saves number of frames to delay
|
||||
KEYCHK .DB 0 ; Counter for keypress checks
|
||||
;
|
||||
VGM_DEV .DB %00000000 ; IX+0 Flags for devices
|
||||
; xx...... ym2151 1 & 2
|
||||
; ..x..... ym2612 2 (not supported)
|
||||
; ...x.... ym2612 1
|
||||
; ....xx.. ay-3-8910 1 & 2
|
||||
; ......xx sn76489 1 & 2
|
||||
|
||||
.DB %00000000 ; IX+1 Unimplemented device flags & future devices
|
||||
;
|
||||
OLDSTACK .DW 0 ; original stack pointer
|
||||
.DS 40H ; space for stack
|
||||
STACK ; top of stack
|
||||
|
||||
@@ -5,39 +5,70 @@ Simple player for VGM (Video Game Music) files.
|
||||
|
||||
Usage:
|
||||
|
||||
VGMPLAY MUSIC.VGM
|
||||
VGMPLAY MUSIC[.VGM]
|
||||
|
||||
Default Ports:
|
||||
Press a key to exit the program.
|
||||
|
||||
D8H-D0H - First AY-3-8910 (RSEL/RDAT)
|
||||
A0H-A1H - Second AY-3-8910
|
||||
FFH - First SN76489
|
||||
FBH - Second SN76489
|
||||
C6H-C7H - YM2612/YM3484
|
||||
Supported devices
|
||||
=================
|
||||
|
||||
If your system uses different ports you need to recompile the source.
|
||||
SN76489
|
||||
AY-3-89810
|
||||
YM2612/YM3484
|
||||
YM2151
|
||||
|
||||
Note: The player should be compatible with VGM files up to version 1.51
|
||||
but there are very few controls (if any) in the code, be sure to have
|
||||
a good VGM file that doesn't contain much extra data. These files can be
|
||||
very big, the player is limited to the available TPA space which is
|
||||
typically around 54-55k, bigger files will overwrite the CP/M code and/or
|
||||
wrap around the 64k limit.
|
||||
Supported platforms
|
||||
===================
|
||||
|
||||
The played is designed to run on a standard RC2014 with a 7.3728 MHz clock,
|
||||
if your system uses a different clock you need to adjust the frame delay accordingly.
|
||||
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.
|
||||
It can be configured to run with other hardware such as RC2014, P8X180 and nhyodyne MBC.
|
||||
|
||||
VGM files can be very big and are limited in size by the available TPA space, which is typically 52k.
|
||||
|
||||
Processor speed affects the playback speed. Under ROMWBW the player will detect the cpu speed configuration
|
||||
and adjust timing loops. For other platforms, default speeds are configured but may need to be changed
|
||||
to suit your hardware. Counter/Timer hardware may be supported in future.
|
||||
|
||||
Example Music Files
|
||||
===================
|
||||
|
||||
LEMMIN01.VGM - SN76489 - Lemmings: Title Screen
|
||||
PENGUI03.VGM - AY-3-8910 - Penguin Adventure: Forest Path
|
||||
PITFAL02.VGM - 2xSN76489 - Pitfall II: Scene 1
|
||||
TIGER02.VGM - 2xAY-3-8910 - Tiger Hely: First Mission
|
||||
WONDER01.VGM - 2xSN76489 - Wonder Boy in Monster Land
|
||||
FILTHY01.VGM - YM3484 - Columns : Filthy
|
||||
ITSGAMOV.VGM - YM3484+SN76489 - Puyo Puyo Tsuu : It's Game Over!
|
||||
ENDING.VGM - AY-3-8910 * Puyo Puyo: Ending (Unused) : 24K
|
||||
QIX.VGM - AY-3-8910 - Super Qix: Main BGM 2 : 28K
|
||||
AGGRESS.VGM - AY-3-8910 - Rastan Saga: Aggressive World : 32K
|
||||
PENGUI03.VGM - AY-3-8910 - Penguin Adventure: Forest Path : 44K
|
||||
TIGER02.VGM - 2xAY-3-8910 - Tiger Hely: First Mission : 28K
|
||||
BGM.VGM - 2xAY-3-8910 * SHM: BGM : 8K
|
||||
LEMMIN01.VGM - SN76489 - Lemmings: Title Screen : 44K
|
||||
TEDDY.VGM - 2xSN76489 - TeddyBoy Blues: Title ~ Main Theme : 52K
|
||||
PITFAL02.VGM - 2xSN76489 - Pitfall II: Scene 1 : 16K
|
||||
WONDER01.VGM - 2xSN76489 * Wonder Boy in Monster Land: Monster Land : 40K
|
||||
DESCENT.VGM - SN76489+YM2612 - Flashback: The Quest for Identity: Descent into the Tunnels : 40K
|
||||
SHIRAKAW.VGM - SN76489+YM2612 * Jantei Monogatari: St. Shirakawa University : 32K
|
||||
ANNA.VGM - SN76489+YM2612 - Jantei Monogatari: Anna : 32K
|
||||
FIELDMAP.VGM - SN76489+YM2612 - Taikou Risshiden: Field Map: Summer : 8K
|
||||
ITSGAMOV.VGM - SN76489+YM2612 - Puyo Puyo Tsuu: It's Game Over! : 16K
|
||||
STARTDEM.VGN - 2xSN76489+AY-3-8910 * Exed Exes / Savage Bees: Start Demo ~Main BGM : 32K
|
||||
INCHINA.VGM - YM2612 * Double Dragon 3: The Rosetta Stone: In China : 44K
|
||||
|
||||
Original Source by J.B Langston, Marco Maccaferri
|
||||
ROMWBW + YM2612/YM3484 version by Phil Summers
|
||||
* Included in disk images
|
||||
|
||||
VGM sources
|
||||
===========
|
||||
https://www.smspower.org/forums/15359-VGMPacksGameGearMegaCollection
|
||||
https://vgmrips.net/packs/chip/ym2612
|
||||
https://project2612.org/
|
||||
|
||||
VGM Tools
|
||||
=========
|
||||
https://vgmrips.net/wiki/VGMTool
|
||||
https://github.com/vgmrips/vgmtools
|
||||
|
||||
References
|
||||
==========
|
||||
http://www.primrosebank.net/computers/mtx/tools/PD/vgmplayer.zip - Paul Daniels MTX SN76489 interrupt version with embedded VGM tune.
|
||||
https://github.com/jblang/SN76489/blob/master/examples/vgmplayer.asm - J.B. Langston RC2014 polled version with file loading.
|
||||
https://groups.google.com/g/rc2014-z80/c/9nHnETJzGKU - Marco Maccaferri P8X180 & AY-3-8910 support
|
||||
https://github.com/electrified/rc2014-ym2151/tree/main/software/vgmplay - Ed Brindly RC2014 & YM2151 support
|
||||
|
||||
ROMWBW version by Phil Summers. VGM Player is still in development. The ECB-VGM is also still under development.
|
||||
|
||||
779
Source/Apps/VGM/ymfmdemo.asm
Normal file
779
Source/Apps/VGM/ymfmdemo.asm
Normal file
@@ -0,0 +1,779 @@
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Simple Z80 FM Music Driver.
|
||||
; Adapted from https://github.com/michaelcmartin/bumbershoot/genesis/fm_mus.asm
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; A song in this system is a series of records, where each record
|
||||
; begins with a byte for the number of frames this record lasts,
|
||||
; followed by a byte for the number of register writes to the first
|
||||
; block of FM registers, followed by that many pairs of (register,
|
||||
; value) bytes.
|
||||
; When a zero byte is reached for a record length, the playback
|
||||
; loops back to the "segno" label.
|
||||
;
|
||||
; Song data is created from a Music Macro Language score (mml)
|
||||
; by the makebach.py script
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Device and system specific definitions
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
custom .equ 0 ; System configurations
|
||||
sbcecb .equ 1
|
||||
MBC .equ 2
|
||||
;
|
||||
plt_romwbw .equ 1 ; Build for ROMWBW?
|
||||
plt_type .equ sbcecb ; Select build configuration
|
||||
plt_cpuspd .equ 6 ; Non ROMWBW cpu speed default
|
||||
debug .equ 0
|
||||
|
||||
ctc_delay .equ 0
|
||||
;
|
||||
.org 100H
|
||||
;
|
||||
BDOS .equ 0005h
|
||||
;
|
||||
YMSEL .equ $c0
|
||||
YMDAT .equ $c1
|
||||
ctcbase .equ $cc
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Initialize sound chip and ctc etc
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
init:
|
||||
#IF (debug)
|
||||
call ym_init
|
||||
#ENDIF
|
||||
#IF (ctc_delay)
|
||||
call ctc_config
|
||||
#ENDIF
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Main loop
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
mloop: LD C, 6 ; check for keypress
|
||||
LD E, 0FFH
|
||||
CALL 5
|
||||
OR A
|
||||
JP NZ,0
|
||||
;
|
||||
call ploop ; PLAY
|
||||
jp z,0
|
||||
;
|
||||
ld hl,$1000 ; DELAY
|
||||
dlp: dec hl
|
||||
ld a,h
|
||||
or l
|
||||
jr nz,dlp
|
||||
;
|
||||
jr mloop
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Play loop
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
ploop: ld hl, wait ; HAVE WE REACHED THE
|
||||
dec (hl) ; LAST FRAME
|
||||
ret nz
|
||||
|
||||
ld hl, (ptr) ; POINT TO START OF SONG
|
||||
ld a, (hl) ; GET NO OF FRAMES
|
||||
and a ;
|
||||
ret z
|
||||
; jr nz, nolp
|
||||
;
|
||||
; ld a,'@'
|
||||
; call PRTCHR
|
||||
;
|
||||
; ld hl, segno ; POINT TO CURRENT SEGMENT
|
||||
; ld a, (hl) ; GET FRAME COUNT
|
||||
nolp: ld (wait), a ; AND SAVE IT
|
||||
inc hl
|
||||
call PRTHEX
|
||||
call PRTDOT
|
||||
|
||||
ld b, (hl) ; GET NUMBER OF REGISTER PAIRS TO WRITE
|
||||
inc hl ; POINT TO REGISTER
|
||||
ld a,b
|
||||
call PRTHEX
|
||||
call PRTDOT
|
||||
|
||||
rlp: ld a, (hl) ; SELECT REGISTER
|
||||
out (YMSEL),a
|
||||
call PRTHEX
|
||||
|
||||
inc hl ; GET VALUE
|
||||
ld a, (hl)
|
||||
call PRTHEX
|
||||
|
||||
inc hl
|
||||
|
||||
out (YMDAT),a ; WRITE THE VALUE
|
||||
|
||||
djnz rlp ; DO ALL THE PAIRS IN THIS SEGMENT
|
||||
|
||||
ld (ptr), hl ; SAVE WHERE WE ARE AT
|
||||
call CRLF
|
||||
|
||||
ret
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; CTC initialization
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
ctc_config:
|
||||
; ld b,4 ; 4 channels
|
||||
; ld c,ctcbase ; first channel port
|
||||
;ctc_lp: ld a,ctc_defcfg ; ctc default config
|
||||
; out (c),a ; ctc command
|
||||
; inc c ; next channel port
|
||||
; djnz ctc_lp
|
||||
|
||||
; ld hl,hb_timint ; TIMER INT HANDLER ADR
|
||||
; ld (ivt(ctctivt)),hl
|
||||
;
|
||||
; ld a,int_ctc0a * 2
|
||||
out (ctcbase),a ; SETUP CTC BASE INT VECTOR
|
||||
;
|
||||
ctcch0 .equ ctcbase
|
||||
ctcch1 .equ ctcbase+1
|
||||
ctcch2 .equ ctcbase+2
|
||||
ctcch3 .equ ctcbase+3
|
||||
|
||||
ctccfg0 .equ %01010011
|
||||
ctccfg1 .equ %01010111
|
||||
ctccfg2 .equ %01010111
|
||||
ctccfg3 .equ %01010111
|
||||
|
||||
ctcdiv0 .equ 1 ; 3.579545MHz input 60Hz timer tick
|
||||
ctcdiv1 .equ 8
|
||||
ctcdiv2 .equ 0
|
||||
ctcdiv3 .equ 29
|
||||
|
||||
;ctcdiv0 .equ 1 ; 3.579545MHz input 50Hz timer tick
|
||||
;ctcdiv1 .equ 8
|
||||
;ctcdiv2 .equ 0
|
||||
;ctcdiv3 .equ 34
|
||||
|
||||
;ctcdiv0 .equ 1 ; 3.579545MHz input 44100z timer tick
|
||||
;ctcdiv1 .equ 1
|
||||
;ctcdiv2 .equ 1
|
||||
;ctcdiv3 .equ 81
|
||||
|
||||
ld a,ctccfg0 & $7f ; ; Channel 0
|
||||
out (ctcch0),a
|
||||
;
|
||||
ld a,ctccfg1 & $7f ; Channel 1
|
||||
out (ctcch1),a ;
|
||||
ld a,ctcdiv1 & $ff ;
|
||||
out (ctcch1),a ;
|
||||
;
|
||||
ld a,ctccfg2 & $7f ; Channel 2
|
||||
out (ctcch2),a ;
|
||||
ld a,ctcdiv2 & $ff ;
|
||||
out (ctcch2),a ;
|
||||
;
|
||||
ld a,ctccfg3 & $7f ; Channel 3
|
||||
out (ctcch3),a ;
|
||||
ld a,ctcdiv3 & $ff ;
|
||||
out (ctcch3),a ;
|
||||
;
|
||||
ret
|
||||
;
|
||||
ptr: .dw song
|
||||
wait: .db $01
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; YM2612 initialization - not required if included in song data
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
#DEFINE setreg(reg,val) \
|
||||
#DEFCONT \ ld a,reg
|
||||
#DEFCONT \ out (YMSEL),a
|
||||
#DEFCONT \ ld a,val
|
||||
#DEFCONT \ out (YMDAT),a
|
||||
#DEFCONT \ ld b,0
|
||||
#DEFCONT \ in a,(YMSEL)
|
||||
#DEFCONT \ rlca
|
||||
#DEFCONT \ jp nc,$+5
|
||||
#DEFCONT \ djnz $-6
|
||||
;
|
||||
ym_init:
|
||||
setreg($22,$00) ; lfo off
|
||||
setreg($27,$00) ; note off ch 0
|
||||
setreg($28,$01) ; note off ch 1
|
||||
setreg($28,$02) ; note off ch 2
|
||||
setreg($28,$03) ; 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($28,$01) ; note off ch 1
|
||||
setreg($2b,$00) ; dac off
|
||||
setreg($30,$71)
|
||||
setreg($34,$0d)
|
||||
setreg($38,$33)
|
||||
setreg($3c,$01) ; dt1/mul
|
||||
setreg($40,$23)
|
||||
setreg($44,$2d)
|
||||
setreg($48,$26)
|
||||
setreg($4c,$00) ; total level
|
||||
setreg($50,$5f)
|
||||
setreg($54,$99)
|
||||
setreg($58,$5f)
|
||||
setreg($5c,$94) ; rs/ar
|
||||
setreg($60,$05)
|
||||
setreg($64,$05)
|
||||
setreg($68,$05)
|
||||
setreg($6c,$07) ; am/dir
|
||||
setreg($70,$02)
|
||||
setreg($74,$02)
|
||||
setreg($78,$02)
|
||||
setreg($7c,$02) ; d2r
|
||||
setreg($80,$11)
|
||||
setreg($84,$11)
|
||||
setreg($88,$11)
|
||||
setreg($8c,$a6) ; d1l/rr
|
||||
setreg($90,$00)
|
||||
setreg($94,$00)
|
||||
setreg($98,$00)
|
||||
setreg($9c,$00) ; proprietary
|
||||
setreg($b0,$32) ; feedback/algorithm
|
||||
setreg($b4,$c0) ; both speakers on
|
||||
setreg($28,$00) ; key off
|
||||
setreg($a4,$22)
|
||||
setreg($a0,$69) ; set frequency
|
||||
;
|
||||
ret
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Example breakdown of first section, which is initialization
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
; BYTE NUMBER OF FRAMES
|
||||
; BYTE NUMBER OF REGISTER WRITES
|
||||
; BYTE REGISTER
|
||||
; BYTE VALUE
|
||||
;
|
||||
; CNT $0D 13 frames
|
||||
; $42 66 register writes (132 BYTES)
|
||||
; 2 $30,$71 dac
|
||||
; 4 $34,$0D dac
|
||||
; 6 $38,$33 dac
|
||||
; 8 $3C,$01 dt1/mul
|
||||
; 10 $40,$23 dt1/mul
|
||||
; 12 $44,$2D dt1/mul
|
||||
; 14 $48,$26 dt1/mul
|
||||
; 16 $4C,$00 total level
|
||||
; 18 $50,$5F total level
|
||||
; 20 $54,$99 total level
|
||||
; 22 $58,$5F total level
|
||||
; 24 $5C,$94 rs/ar
|
||||
; 26 $60,$05 rs/ar
|
||||
; 28 $64,$05 rs/ar
|
||||
; 30 $68,$05 rs/ar
|
||||
; 32 $6C,$07 am/dir
|
||||
; 34 $70,$02 am/dir
|
||||
; 36 $74,$02 am/dir
|
||||
; 38 $78,$02 am/dir
|
||||
; 40 $7c,$02 d2r
|
||||
; 42 $80,$11 d2r
|
||||
; 44 $84,$11 d2r
|
||||
; 46 $88,$11 d2r
|
||||
; 48 $8C,$A6
|
||||
; 50 $90,$00
|
||||
; 52 $94,$00
|
||||
; 54 $98,$00
|
||||
; 56 $9C,$00
|
||||
; 58 $B0,$32
|
||||
; 60 $B4,$C0
|
||||
; 62 $31,$71
|
||||
; 64 $35,$0D
|
||||
; 66 $39,$33
|
||||
; 68 $3D,$01
|
||||
; 70 $41,$23
|
||||
; 72 $45,$2D
|
||||
; 74 $49,$26
|
||||
; 76 $4D,$00
|
||||
; 78 $51,$5F
|
||||
; 80 $55,$99
|
||||
; 82 $59,$5F
|
||||
; 84 $5D,$94
|
||||
; 86 $61,$05
|
||||
; 88 $65,$05
|
||||
; 90 $69,$05
|
||||
; 92 $6D,$07
|
||||
; 94 $71,$02
|
||||
; 96 $75,$02
|
||||
; 98 $79,$02
|
||||
; 100 $7D,$02
|
||||
; 102 $81,$11
|
||||
; 104 $85,$11
|
||||
; 106 $89,$11
|
||||
; 108 $8D,$A6
|
||||
; 110 $91,$00
|
||||
; 112 $95,$00
|
||||
; 114 $99,$00
|
||||
; 116 $9D,$00
|
||||
; 118 $B0,$32
|
||||
; 120 $B4,$C0
|
||||
; 122 $A4,$17
|
||||
; 124 $A0,$89
|
||||
; 126 $28,$F0
|
||||
; 128 $A5,$0F
|
||||
; 130 $A1,$89
|
||||
; 132 $28,$F1
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
; Song data created from Music Macro Language (mml) by makebach
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
song:
|
||||
segno: .db $0D,$42,$30,$71,$34,$0D,$38,$33,$3C,$01,$40,$23,$44,$2D,$48,$26
|
||||
.db $4C,$00,$50,$5F,$54,$99,$58,$5F,$5C,$94,$60,$05,$64,$05,$68,$05
|
||||
.db $6C,$07,$70,$02,$74,$02,$78,$02,$7C,$02,$80,$11,$84,$11,$88,$11
|
||||
.db $8C,$A6,$90,$00,$94,$00,$98,$00,$9C,$00,$B0,$32,$B4,$C0,$31,$71
|
||||
.db $35,$0D,$39,$33,$3D,$01,$41,$23,$45,$2D,$49,$26,$4D,$00,$51,$5F
|
||||
.db $55,$99,$59,$5F,$5D,$94,$61,$05,$65,$05,$69,$05,$6D,$07,$71,$02
|
||||
.db $75,$02,$79,$02,$7D,$02,$81,$11,$85,$11,$89,$11,$8D,$A6,$91,$00
|
||||
.db $95,$00,$99,$00,$9D,$00,$B0,$32,$B4,$C0,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01
|
||||
.db $28,$00,$07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C
|
||||
.db $A0,$BF,$28,$F0,$02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0
|
||||
.db $02,$01,$28,$00,$07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C
|
||||
.db $A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1E
|
||||
.db $A0,$56,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$89,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0C
|
||||
.db $A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$1D,$A0,$A5
|
||||
.db $28,$F0,$A5,$0F,$A1,$89,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1D,$A0,$A5,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0C,$A1,$3B,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0F,$A1,$1D
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$08,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56
|
||||
.db $28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0F,$A1,$1D,$28,$F1,$02,$01
|
||||
.db $28,$01,$0D,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0D,$03
|
||||
.db $A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$01,$03,$03,$A5,$0F,$A1,$1D
|
||||
.db $28,$F1,$0A,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C
|
||||
.db $A0,$BF,$28,$F0,$02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0
|
||||
.db $02,$01,$28,$00,$07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C
|
||||
.db $A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17
|
||||
.db $A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03
|
||||
.db $A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5
|
||||
.db $28,$F0,$02,$01,$28,$00,$07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0
|
||||
.db $A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17
|
||||
.db $A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03
|
||||
.db $A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$1A,$06
|
||||
.db $A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$04,$02,$28,$00
|
||||
.db $28,$01,$0D,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0E,$A1,$56,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C,$A0,$3B,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0C
|
||||
.db $A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$08
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C
|
||||
.db $A0,$BF,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C
|
||||
.db $A0,$3B,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$17,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$08,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$02,$01,$28,$00
|
||||
.db $08,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$00,$06,$03,$A4,$1D
|
||||
.db $A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$15
|
||||
.db $A0,$A5,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $1A,$06,$A4,$17,$A0,$1D,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$1A,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$04,$01,$28,$01,$1A,$03,$A5,$0D,$A1,$A5,$28,$F1,$04,$01
|
||||
.db $28,$01,$12,$03,$A5,$07,$A1,$89,$28,$F1,$08,$01,$28,$00,$04,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$00
|
||||
.db $0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03,$A4,$1F
|
||||
.db $A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C
|
||||
.db $A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$01
|
||||
.db $0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$07,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D
|
||||
.db $A1,$08,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$1E,$A0,$56
|
||||
.db $28,$F0,$A5,$0F,$A1,$89,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$A5,$28,$F0
|
||||
.db $A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D,$A0,$08
|
||||
.db $28,$F0,$A5,$0C,$A1,$3B,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1D,$A0,$A5,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$01
|
||||
.db $0D,$03,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56,$28,$F1
|
||||
.db $02,$01,$28,$01,$03,$03,$A5,$0F,$A1,$1D,$28,$F1,$0A,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$07
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0
|
||||
.db $02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00
|
||||
.db $07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0
|
||||
.db $A5,$0D,$A1,$08,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D
|
||||
.db $A0,$A5,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1C,$A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$08,$06,$A4,$1C,$A0,$3B,$28,$F0
|
||||
.db $A5,$0D,$A1,$08,$28,$F1,$02,$01,$28,$00,$08,$03,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$02,$01,$28,$00,$06,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$1A,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$17,$A0,$1D
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06
|
||||
.db $A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$04,$01,$28,$01
|
||||
.db $1A,$03,$A5,$0D,$A1,$A5,$28,$F1,$04,$01,$28,$01,$12,$03,$A5,$07
|
||||
.db $A1,$89,$28,$F1,$08,$01,$28,$00,$04,$01,$28,$01,$0D,$06,$A4,$17
|
||||
.db $A0,$89,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$BF,$28,$F0,$A5,$0D,$A1,$FB,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1C,$A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$17,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$1A,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0E,$A1,$56,$28,$F1
|
||||
.db $04,$02,$28,$00,$28,$01,$1A,$06,$A4,$16,$A0,$56,$28,$F0,$A5,$0C
|
||||
.db $A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$16,$A0,$56
|
||||
.db $28,$F0,$A5,$06,$A1,$56,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1F,$A0,$1D,$28,$F0,$A5,$14,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$1E,$A0,$56,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$1D,$28,$F0,$A5,$0C,$A1,$BF
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$FB,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F
|
||||
.db $A1,$1D,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$14,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0
|
||||
.db $A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$FB
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1E
|
||||
.db $A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1F,$A0,$1D,$28,$F0,$A5,$14,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1E,$A0,$56,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1F,$A0,$1D,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$1A,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$14,$A1,$3B
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0
|
||||
.db $A5,$0F,$A1,$89,$28,$F1,$04,$02,$28,$00,$28,$01,$08,$06,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$A5,$14,$A1,$3B,$28,$F1,$02,$01,$28,$00,$08,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$00,$06,$03,$A4,$24,$A0,$3B
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$A5,$14,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06
|
||||
.db $A4,$1D,$A0,$FB,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00
|
||||
.db $28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0E,$A1,$56,$28,$F1
|
||||
.db $04,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$FB,$28,$F0,$02,$01,$28,$00
|
||||
.db $0D,$03,$A4,$1E,$A0,$56,$28,$F0,$02,$01,$28,$00,$12,$03,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$08,$01,$28,$01,$04,$01,$28,$00,$1A,$06,$A4,$1F
|
||||
.db $A0,$89,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1E,$A0,$56,$28,$F0
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$A5
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1D,$A0,$08
|
||||
.db $28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C
|
||||
.db $A0,$BF,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D
|
||||
.db $A0,$08,$28,$F0,$A5,$0C,$A1,$3B,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $0D,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$08,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$89,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$1A,$06,$A4,$17,$A0,$1D,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$16,$A0,$56,$28,$F0
|
||||
.db $A5,$0C,$A1,$3B,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$1D
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$15,$A0,$A5
|
||||
.db $28,$F0,$A5,$05,$A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01
|
||||
.db $0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$15,$A0,$A5,$28,$F0
|
||||
.db $A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1D,$A0,$08
|
||||
.db $28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06
|
||||
.db $A4,$1D,$A0,$A5,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$01
|
||||
.db $0D,$03,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56,$28,$F1
|
||||
.db $02,$01,$28,$01,$03,$03,$A5,$0F,$A1,$1D,$28,$F1,$0A,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$07
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0
|
||||
.db $02,$01,$28,$00,$0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00
|
||||
.db $07,$03,$A4,$1F,$A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1
|
||||
.db $02,$01,$28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0
|
||||
.db $A5,$0D,$A1,$08,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D
|
||||
.db $A0,$A5,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1C,$A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1D,$A0,$A5,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0
|
||||
.db $A5,$0D,$A1,$08,$28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$02,$01,$28,$00,$16,$03,$A4,$15,$A0,$A5,$28,$F0,$04,$01
|
||||
.db $28,$01,$04,$01,$28,$00,$1A,$06,$A4,$17,$A0,$1D,$28,$F0,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$17,$A0,$89
|
||||
.db $28,$F0,$A5,$0F,$A1,$89,$28,$F1,$04,$01,$28,$01,$1A,$03,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$04,$01,$28,$01,$12,$03,$A5,$07,$A1,$89,$28,$F1
|
||||
.db $08,$01,$28,$00,$04,$01,$28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0
|
||||
.db $A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C,$A0,$3B
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$A5,$0D,$A1,$FB,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C
|
||||
.db $A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$17
|
||||
.db $A0,$89,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$17,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06
|
||||
.db $A4,$17,$A0,$89,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$04,$02,$28,$00
|
||||
.db $28,$01,$1A,$06,$A4,$16,$A0,$56,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1
|
||||
.db $04,$02,$28,$00,$28,$01,$1A,$06,$A4,$16,$A0,$56,$28,$F0,$A5,$06
|
||||
.db $A1,$56,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1E
|
||||
.db $A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1F,$A0,$1D,$28,$F0,$A5,$14,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1E,$A0,$56,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $0D,$06,$A4,$1F,$A0,$1D,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0D,$A1,$FB,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$14,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$1D
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$FB,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$0D,$06,$A4,$1F,$A0,$89,$28,$F0,$A5,$0E
|
||||
.db $A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$1D,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1E,$A0,$56,$28,$F0
|
||||
.db $A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1F,$A0,$1D
|
||||
.db $28,$F0,$A5,$14,$A1,$BF,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1E
|
||||
.db $A0,$56,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $1A,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$14,$A1,$3B,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$08,$06,$A4,$1F,$A0,$1D,$28,$F0
|
||||
.db $A5,$14,$A1,$3B,$28,$F1,$02,$01,$28,$00,$08,$03,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$02,$01,$28,$00,$06,$03,$A4,$24,$A0,$3B,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$14
|
||||
.db $A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06,$A4,$1D,$A0,$FB
|
||||
.db $28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$1A,$06
|
||||
.db $A4,$1E,$A0,$56,$28,$F0,$A5,$0E,$A1,$56,$28,$F1,$04,$01,$28,$00
|
||||
.db $0D,$03,$A4,$1D,$A0,$FB,$28,$F0,$02,$01,$28,$00,$0D,$03,$A4,$1E
|
||||
.db $A0,$56,$28,$F0,$02,$01,$28,$00,$12,$03,$A4,$1F,$A0,$1D,$28,$F0
|
||||
.db $08,$01,$28,$01,$04,$01,$28,$00,$1A,$06,$A4,$1F,$A0,$89,$28,$F0
|
||||
.db $A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1F
|
||||
.db $A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1E,$A0,$56,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$A5
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0E
|
||||
.db $A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C,$A0,$BF,$28,$F0
|
||||
.db $02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D,$A0,$08,$28,$F0
|
||||
.db $A5,$0C,$A1,$3B,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D
|
||||
.db $A0,$08,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$08,$28,$F1,$02,$01,$28,$00
|
||||
.db $0B,$03,$A4,$17,$A0,$89,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00
|
||||
.db $1A,$06,$A4,$17,$A0,$1D,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$04,$02
|
||||
.db $28,$00,$28,$01,$0D,$06,$A4,$16,$A0,$56,$28,$F0,$A5,$0C,$A1,$3B
|
||||
.db $28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$1D,$28,$F0,$02,$01
|
||||
.db $28,$01,$02,$01,$28,$00,$1A,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$05
|
||||
.db $A1,$A5,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1C,$A0,$3B
|
||||
.db $28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D
|
||||
.db $A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06,$A4,$15
|
||||
.db $A0,$A5,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01,$0B,$03
|
||||
.db $A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06
|
||||
.db $A4,$15,$A0,$A5,$28,$F0,$A5,$0F,$A1,$1D,$28,$F1,$02,$01,$28,$01
|
||||
.db $0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$1C,$A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0F,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$0D,$06,$A4,$15,$A0,$A5,$28,$F0,$A5,$0F,$A1,$89
|
||||
.db $28,$F1,$02,$01,$28,$01,$0B,$03,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$02,$01,$28,$01,$1A,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0F
|
||||
.db $A1,$1D,$28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$A5
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D
|
||||
.db $A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C
|
||||
.db $A0,$BF,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1D,$A0,$08,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01
|
||||
.db $0D,$03,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0F
|
||||
.db $A1,$1D,$28,$F1,$02,$01,$28,$01,$0D,$03,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0D,$03,$A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$01
|
||||
.db $03,$03,$A5,$0F,$A1,$1D,$28,$F1,$0A,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01
|
||||
.db $28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$00,$0D,$03
|
||||
.db $A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03,$A4,$1F,$A0,$89
|
||||
.db $28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B
|
||||
.db $28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1F
|
||||
.db $A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1F
|
||||
.db $A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$01,$0B,$03
|
||||
.db $A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01,$0D,$06
|
||||
.db $A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$01
|
||||
.db $0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$00
|
||||
.db $0D,$03,$A4,$1D,$A0,$A5,$28,$F0,$02,$01,$28,$00,$07,$03,$A4,$1F
|
||||
.db $A0,$89,$28,$F0,$06,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C
|
||||
.db $A0,$3B,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01,$28,$00,$0B,$03
|
||||
.db $A4,$1F,$A0,$1D,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06
|
||||
.db $A4,$1F,$A0,$89,$28,$F0,$A5,$07,$A1,$89,$28,$F1,$02,$01,$28,$01
|
||||
.db $0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00,$02,$01,$28,$01
|
||||
.db $0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$01,$0B,$03,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$02,$01
|
||||
.db $28,$01,$0D,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $02,$01,$28,$01,$0B,$03,$A5,$0C,$A1,$BF,$28,$F1,$02,$01,$28,$00
|
||||
.db $02,$01,$28,$01,$1A,$06,$A4,$1E,$A0,$56,$28,$F0,$A5,$0D,$A1,$08
|
||||
.db $28,$F1,$04,$02,$28,$00,$28,$01,$0D,$06,$A4,$1D,$A0,$A5,$28,$F0
|
||||
.db $A5,$0E,$A1,$56,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1D,$A0,$08
|
||||
.db $28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$BF
|
||||
.db $28,$F0,$A5,$0F,$A1,$89,$28,$F1,$02,$01,$28,$00,$0B,$03,$A4,$1C
|
||||
.db $A0,$3B,$28,$F0,$02,$01,$28,$01,$02,$01,$28,$00,$1A,$06,$A4,$1D
|
||||
.db $A0,$A5,$28,$F0,$A5,$0C,$A1,$BF,$28,$F1,$04,$02,$28,$00,$28,$01
|
||||
.db $0D,$06,$A4,$1D,$A0,$08,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1,$02,$01
|
||||
.db $28,$00,$0B,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01,$28,$01,$02,$01
|
||||
.db $28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0F,$A1,$89,$28,$F1
|
||||
.db $02,$01,$28,$00,$0B,$03,$A4,$17,$A0,$89,$28,$F0,$02,$01,$28,$01
|
||||
.db $02,$01,$28,$00,$0D,$06,$A4,$1C,$A0,$3B,$28,$F0,$A5,$0D,$A1,$08
|
||||
.db $28,$F1,$02,$01,$28,$00,$0D,$03,$A4,$1C,$A0,$BF,$28,$F0,$02,$01
|
||||
.db $28,$00,$16,$03,$A4,$15,$A0,$A5,$28,$F0,$04,$01,$28,$01,$04,$01
|
||||
.db $28,$00,$1A,$06,$A4,$17,$A0,$1D,$28,$F0,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $04,$02,$28,$00,$28,$01,$1A,$06,$A4,$17,$A0,$89,$28,$F0,$A5,$0F
|
||||
.db $A1,$89,$28,$F1,$04,$01,$28,$01,$1A,$03,$A5,$0D,$A1,$A5,$28,$F1
|
||||
.db $04,$01,$28,$01,$12,$03,$A5,$07,$A1,$89,$28,$F1,$08,$01,$28,$00
|
||||
.db $04,$01,$28,$01,$00
|
||||
;; 7045 bytes in song
|
||||
|
||||
#include "printing.inc"
|
||||
|
||||
.end
|
||||
@@ -432,7 +432,7 @@ end
|
||||
# New format: 1024 dir entries, 16,384 sectors / slice
|
||||
# Pure filesystem image, no MBR prefix
|
||||
|
||||
diskdef wbw_hd1024
|
||||
diskdef wbw_hd1k
|
||||
seclen 512
|
||||
tracks 1024
|
||||
sectrk 16
|
||||
@@ -443,11 +443,11 @@ diskdef wbw_hd1024
|
||||
os 2.2
|
||||
end
|
||||
|
||||
# First 4 slices of wbw_hd1024
|
||||
# First 4 slices of wbw_hd1k
|
||||
# Assumes standard 1MB prefix
|
||||
# Offset of any slice (in tracks) = 128 + (1024 * <slice_num)
|
||||
|
||||
diskdef wbw_hd1024_0
|
||||
diskdef wbw_hd1k_0
|
||||
seclen 512
|
||||
tracks 1024
|
||||
sectrk 16
|
||||
@@ -459,7 +459,7 @@ diskdef wbw_hd1024_0
|
||||
os 2.2
|
||||
end
|
||||
|
||||
diskdef wbw_hd1024_1
|
||||
diskdef wbw_hd1k_1
|
||||
seclen 512
|
||||
tracks 1024
|
||||
sectrk 16
|
||||
@@ -471,7 +471,7 @@ diskdef wbw_hd1024_1
|
||||
os 2.2
|
||||
end
|
||||
|
||||
diskdef wbw_hd1024_2
|
||||
diskdef wbw_hd1k_2
|
||||
seclen 512
|
||||
tracks 1024
|
||||
sectrk 16
|
||||
@@ -483,7 +483,7 @@ diskdef wbw_hd1024_2
|
||||
os 2.2
|
||||
end
|
||||
|
||||
diskdef wbw_hd1024_3
|
||||
diskdef wbw_hd1k_3
|
||||
seclen 512
|
||||
tracks 1024
|
||||
sectrk 16
|
||||
|
||||
@@ -9,6 +9,7 @@ pushd ZCPR-DJ && call Build || exit /b & popd
|
||||
pushd ZSDOS && call Build || exit /b & popd
|
||||
pushd CPM3 && call Build || exit /b & popd
|
||||
pushd ZPM3 && call Build || exit /b & popd
|
||||
pushd pSys && call Build || exit /b & popd
|
||||
pushd Apps && call Build || exit /b & popd
|
||||
pushd Forth && call Build || exit /b & popd
|
||||
pushd TastyBasic && call Build || exit /b & popd
|
||||
|
||||
BIN
Source/CPM22/License.pdf
Normal file
BIN
Source/CPM22/License.pdf
Normal file
Binary file not shown.
@@ -167,11 +167,56 @@ STR_ERR .DB " Read Error!",0
|
||||
;
|
||||
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
|
||||
;
|
||||
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
|
||||
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
|
||||
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
|
||||
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
|
||||
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
|
||||
;
|
||||
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
|
||||
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
|
||||
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
|
||||
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
|
||||
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
|
||||
; IRRELEVANT.
|
||||
;
|
||||
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
|
||||
; CCCCCCCC:CCSSSSSS
|
||||
; 76543210:98543210
|
||||
;
|
||||
PART0:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
PART1:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 6 ; PART TYPE ID
|
||||
.DB 15 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW $4000,$0010 ; LBA FIRST (DWORD)
|
||||
.DW $0000,$000C ; LBA COUNT (DWORD)
|
||||
PART2:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
PART3:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
;
|
||||
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
|
||||
;
|
||||
|
||||
BIN
Source/CPM3/License.pdf
Normal file
BIN
Source/CPM3/License.pdf
Normal file
Binary file not shown.
@@ -9,7 +9,7 @@ BNKSWT = Y
|
||||
COMBAS = 80
|
||||
LERROR = Y
|
||||
NUMSEGS = 04
|
||||
MEMSEG00 = 01,43,00
|
||||
MEMSEG00 = 01,17,00
|
||||
MEMSEG01 = 0E,72,02
|
||||
MEMSEG02 = 01,7F,03
|
||||
MEMSEG03 = 01,7F,04
|
||||
|
||||
@@ -171,11 +171,56 @@ STR_ERR .DB " Read Error!",0
|
||||
;
|
||||
.FILL PT_LOC - $,0 ; FILL TO START OF PARTITION TABLE
|
||||
;
|
||||
; RESERVE SPACE FOR STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
|
||||
; STANDARD IBM-PC PARTITION TABLE. ALTHOUGH A
|
||||
; PARTITION TABLE IS NOT RELEVANT FOR A FLOPPY DISK, IT DOES NO HARM.
|
||||
; THE CONTENTS OF THE PARTITION TABLE MUST BE MANAGED BY FDISK80.
|
||||
; THE CONTENTS OF THE PARTITION TABLE CAN BE MANAGED BY FDISK80.
|
||||
;
|
||||
PARTTBL .FILL PT_SIZ,0 ; PARTITION TABLE, FILL WITH ZEROES
|
||||
; BELOW WE ALLOW FOR 32 SLICES OF ROMWBW CP/M FILESYSTEMS
|
||||
; FOLLOWED BY A FAT16 PARTITION. THE SLICES FOLLOW THE ORIGINAL
|
||||
; HD512 ROMWBW FORMAT. IF THE DISK IS USING HD1K, A SEPARATE
|
||||
; PARTITION TABLE WILL BE IN PLACE AND RENDER THIS PARTITION TABLE
|
||||
; IRRELEVANT.
|
||||
;
|
||||
; THE CYL/SEC FIELDS ENCODE CYLINDER AND SECTOR AS:
|
||||
; CCCCCCCC:CCSSSSSS
|
||||
; 76543210:98543210
|
||||
;
|
||||
PART0:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
PART1:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW %1111111111000001 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 6 ; PART TYPE ID
|
||||
.DB 15 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW %1111111111010000 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW $4000,$0010 ; LBA FIRST (DWORD)
|
||||
.DW $0000,$000C ; LBA COUNT (DWORD)
|
||||
PART2:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
PART3:
|
||||
.DB 0 ; ACTIVE IF $80
|
||||
.DB 0 ; CHS START ADDRESS (HEAD)
|
||||
.DW 0 ; CHS START ADDRESS (CYL/SEC)
|
||||
.DB 0 ; PART TYPE ID
|
||||
.DB 0 ; CHS LAST ADDRESS (HEAD)
|
||||
.DW 0 ; CHS LAST ADDRESS (CYL/SEC)
|
||||
.DW 0,0 ; LBA FIRST (DWORD)
|
||||
.DW 0,0 ; LBA COUNT (DWORD)
|
||||
;
|
||||
; THE END OF THE FIRST SECTOR MUST CONTAIN THE TWO BYTE BOOT SIGNATURE.
|
||||
;
|
||||
|
||||
@@ -10,6 +10,7 @@ pushd ZSDOS && call Clean.cmd & popd
|
||||
pushd CBIOS && call Clean.cmd & popd
|
||||
pushd CPM3 && call Clean.cmd & popd
|
||||
pushd ZPM3 && call Clean.cmd & popd
|
||||
pushd pSys && call Clean.cmd & popd
|
||||
pushd Forth && call Clean.cmd & popd
|
||||
pushd TastyBasic && call Clean & popd
|
||||
pushd Fonts && call Clean.cmd & popd
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
$define{doc_title}{Applications}$
|
||||
$include{"Common.h"}$
|
||||
$include{"Book.h"}$
|
||||
|
||||
# Summary
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
65
Source/Doc/Basic.h
Normal file
65
Source/Doc/Basic.h
Normal file
@@ -0,0 +1,65 @@
|
||||
$define{doc_ver}{Version 3.1 Pre-release}$
|
||||
$define{doc_product}{RomWBW}$
|
||||
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
|
||||
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
|
||||
$ifndef{doc_author}$ $define{doc_author}{Wayne Warthen}$ $endif$
|
||||
$define{doc_date}{$date{%d %b %Y}$}$
|
||||
$ifndef{doc_authmail}$ $define{doc_authmail}{wwarthen@gmail.com}$ $endif$
|
||||
$define{doc_orgname}{RetroBrew Computers Group}$
|
||||
$define{doc_orgurl}{www.retrobrewcomputers.org}$
|
||||
$define{doc_user}{[RomWBW User Guide]($doc_root$/RomWBW User Guide.pdf)}$
|
||||
$define{doc_sys}{[RomWBW System Guide]($doc_root$/RomWBW System Guide.pdf)}$
|
||||
$define{doc_apps}{[RomWBW Applications]($doc_root$/RomWBW Applications.pdf)}$
|
||||
$define{doc_romapps}{[RomWBW ROM Applications]($doc_root$/RomWBW ROM Applications.pdf)}$
|
||||
$define{doc_catalog}{[RomWBW Disk Catalog]($doc_root$/RomWBW Disk Catalog.pdf)}$
|
||||
$define{doc_errata}{[RomWBW Errata]($doc_root$/RomWBW Errata.pdf)}$
|
||||
|
||||
---
|
||||
title: $doc_product$ $doc_title$
|
||||
subtitle: $doc_ver$
|
||||
author: $doc_author$ ([$doc_authmail$](mailto:$doc_authmail$))
|
||||
date: $doc_date$
|
||||
institution: $doc_orgname$
|
||||
papersize: letter
|
||||
geometry:
|
||||
- top=1.5in
|
||||
- bottom=1.5in
|
||||
- left=1.5in
|
||||
- right=1.5in
|
||||
# - showframe
|
||||
# - pass
|
||||
fontsize: 12pt
|
||||
# linestretch: 1.25
|
||||
colorlinks: true
|
||||
# sansfont: helvetic
|
||||
sansfont: roboto
|
||||
# sansfont: bera
|
||||
# sansfont: DejaVuSans
|
||||
# sansfont: arial
|
||||
monofont: roboto-mono
|
||||
# monofont: bera
|
||||
# monofont: inconsolata
|
||||
# monofont: DejaVuSansMono
|
||||
monofontoptions: 'Scale=0.75'
|
||||
header-includes:
|
||||
- |
|
||||
```{=latex}
|
||||
\renewcommand*{\familydefault}{\sfdefault}
|
||||
```
|
||||
---
|
||||
|
||||
```{=gfm}
|
||||
**$doc_product$ $doc_title$** \
|
||||
$doc_ver$ \
|
||||
$doc_author$ ([$doc_authmail$](mailto:$doc_authmail$)) \
|
||||
$doc_date$
|
||||
|
||||
```
|
||||
|
||||
```{=dokuwiki}
|
||||
**$doc_product$ $doc_title$**\\
|
||||
$doc_ver$\\
|
||||
$doc_author$ <$doc_authmail$>\\
|
||||
$doc_date$\\
|
||||
|
||||
```
|
||||
@@ -1,38 +1,15 @@
|
||||
$define{doc_ver}{3.1 Pre-release}$
|
||||
$define{doc_product}{RomWBW}$
|
||||
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$
|
||||
$ifndef{doc_author}$ $define{doc_author}{Wayne Warthen}$ $endif$
|
||||
$define{doc_date}{$date{%d %b %Y}$}$
|
||||
$ifndef{doc_authmail}$ $define{doc_authmail}{wwarthen@gmail.com}$ $endif$
|
||||
$define{doc_orgname}{RetroBrew Computers Group}$
|
||||
$define{doc_orgurl}{www.retrobrewcomputers.org}$
|
||||
$include{"Basic.h"}$
|
||||
|
||||
---
|
||||
# Force pandoc to enable graphics for Logo in title page!
|
||||
graphics: true
|
||||
title: $doc_product$ $doc_title$
|
||||
author: $doc_author$ (mailto:$doc_authmail$)
|
||||
date: $doc_date$
|
||||
institution: $doc_orgname$
|
||||
documentclass: book
|
||||
classoption:
|
||||
- oneside
|
||||
toc: true
|
||||
toc-depth: 1
|
||||
toc-depth: 2
|
||||
numbersections: true
|
||||
secnumdepth: 1
|
||||
papersize: letter
|
||||
geometry:
|
||||
- top=1.5in
|
||||
- bottom=1.5in
|
||||
- left=1.5in
|
||||
- right=1.5in
|
||||
# - showframe
|
||||
# - pass
|
||||
linestretch: 1.25
|
||||
colorlinks: true
|
||||
fontfamily: helvet
|
||||
fontsize: 12pt
|
||||
secnumdepth: 2
|
||||
header-includes:
|
||||
- \setlength{\headheight}{15pt}
|
||||
- |
|
||||
@@ -52,7 +29,7 @@ header-includes:
|
||||
{\scshape \bfseries \fontsize{48pt}{56pt} \selectfont $doc_product$ \par}
|
||||
{\bfseries \fontsize{32pt}{36pt} \selectfont $doc_title$ \par}
|
||||
\vspace{24pt}
|
||||
{\huge Version $doc_ver$ \\ $doc_date$ \par}
|
||||
{\huge $doc_ver$ \\ $doc_date$ \par}
|
||||
\vspace{24pt}
|
||||
{\large \itshape $doc_orgname$ \\ \href{http://$doc_orgurl$}{$doc_orgurl$} \par}
|
||||
\vspace{12pt}
|
||||
@@ -62,7 +39,7 @@ header-includes:
|
||||
\pagestyle{empty}
|
||||
```
|
||||
include-before:
|
||||
- \renewcommand{\chaptername}{Section}
|
||||
# - \renewcommand{\chaptername}{Section}
|
||||
- |
|
||||
```{=latex}
|
||||
\pagestyle{fancyplain}
|
||||
@@ -75,5 +52,5 @@ include-before:
|
||||
```{=latex}
|
||||
\clearpage
|
||||
\pagenumbering{arabic}
|
||||
\lhead{\fancyplain{}{\nouppercase{\footnotesize \bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
|
||||
\lhead{\fancyplain{}{\nouppercase{\bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
|
||||
```
|
||||
@@ -7,26 +7,26 @@ setlocal
|
||||
::
|
||||
|
||||
set TOOLS=..\..\Tools
|
||||
set PATH=%TOOLS%\m4;%TOOLS%\gpp;%PATH%
|
||||
set PATH=%TOOLS%\gpp;%PATH%
|
||||
|
||||
if not "%1"=="" (call :GenDoc %1 & goto :eof)
|
||||
|
||||
call :GenDoc GettingStarted
|
||||
:: call :GenDoc UserGuide
|
||||
call :GenDoc ReadMe
|
||||
call :GenDoc UserGuide
|
||||
call :GenDoc SystemGuide
|
||||
call :GenDoc Applications
|
||||
:: call :GenDoc Errata
|
||||
:: call :GenDoc ZSystem
|
||||
call :GenDoc Architecture
|
||||
call :GenDoc Catalog
|
||||
call :GenDoc ROM_Applications
|
||||
call :GenDoc Catalog
|
||||
call :GenDoc Errata
|
||||
|
||||
if exist GettingStarted.pdf copy GettingStarted.pdf "..\..\Doc\RomWBW Getting Started.pdf" || exit /b
|
||||
if exist GettingStarted.gfm copy GettingStarted.gfm ..\..\ReadMe.md || exit /b
|
||||
if exist GettingStarted.txt copy GettingStarted.txt ..\..\ReadMe.txt || exit /b
|
||||
if exist ReadMe.gfm copy Readme.gfm ..\..\ReadMe.md || exit /b
|
||||
if exist ReadMe.txt copy ReadMe.txt ..\..\ReadMe.txt || exit /b
|
||||
if exist UserGuide.pdf copy UserGuide.pdf "..\..\Doc\RomWBW User Guide.pdf" || exit /b
|
||||
if exist SystemGuide.pdf copy SystemGuide.pdf "..\..\Doc\RomWBW System Guide.pdf" || exit /b
|
||||
if exist Applications.pdf copy Applications.pdf "..\..\Doc\RomWBW Applications.pdf" || exit /b
|
||||
if exist Architecture.pdf copy Architecture.pdf "..\..\Doc\RomWBW Architecture.pdf" || exit /b
|
||||
if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\RomWBW ROM Applications.pdf" || exit /b
|
||||
if exist Catalog.pdf copy Catalog.pdf "..\..\Doc\RomWBW Disk Catalog.pdf" || exit /b
|
||||
if exist ROM_Applications.pdf copy ROM_Applications.pdf "..\..\Doc\ROM Applications.pdf" || exit /b
|
||||
if exist Errata.pdf copy Errata.pdf "..\..\Doc\RomWBW Errata.pdf" || exit /b
|
||||
|
||||
echo.
|
||||
goto :eof
|
||||
@@ -35,23 +35,23 @@ goto :eof
|
||||
|
||||
echo.
|
||||
|
||||
echo Processing document %1.md...
|
||||
echo Processing document %1...
|
||||
|
||||
::gpp -o %1.tmp %1.md
|
||||
::gpp -o %1.tmp -U "\\" "" "{" "}{" "}" "{" "}" "#" "" %1.md
|
||||
::gpp -o %1.tmp -U "" "" "(" "," ")" "(" ")" "#" "" -M "#" "\n" " " " " "\n" "(" ")" %1.md
|
||||
gpp -o %1.tmp -U "$" "$" "{" "}{" "}$" "{" "}" "@@@" "" -M "$" "$" "{" "}{" "}$" "{" "}" %1.md
|
||||
gpp -o %1.tmp -U "$" "$" "{" "}{" "}$" "{" "}" "@@@" "" -M "$" "$" "{" "}{" "}$" "{" "}" %1.md || exit /b
|
||||
|
||||
:: pandoc %1.tmp -f markdown -s -o %1.tex --default-image-extension=pdf || exit /b
|
||||
:: pause
|
||||
:: rem texify --pdf --clean %1.ltx || exit /b
|
||||
:: texify --pdf %1.tex || exit /b
|
||||
:: goto :eof
|
||||
::pandoc %1.tmp -f markdown -t latex -s -o %1.tex --default-image-extension=pdf || exit /b
|
||||
::::rem texify --pdf --clean %1.ltx || exit /b
|
||||
::texify --pdf --clean --engine=luatex --verbose %1.tex || exit /b
|
||||
::goto :eof
|
||||
|
||||
pandoc %1.tmp -f markdown -t pdf -s -o %1.pdf --default-image-extension=pdf || exit /b
|
||||
pandoc %1.tmp -f markdown -t html -s -o %1.html --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t pdf -s -o %1.pdf --default-image-extension=pdf --pdf-engine=lualatex || exit /b
|
||||
pandoc %1.tmp -f markdown -t html -s -o %1.html --default-image-extension=png --css pandoc.css --embed-resources || exit /b
|
||||
pandoc %1.tmp -f markdown -t dokuwiki -s -o %1.dw --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t gfm -o %1.gfm --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t plain -s -o %1.txt --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t gfm-yaml_metadata_block -s -o %1.gfm --default-image-extension=png || exit /b
|
||||
::pandoc %1.tmp -f markdown -t gfm-yaml_metadata_block -s -o %1.txt --markdown-headings=setext --default-image-extension=png || exit /b
|
||||
pandoc %1.tmp -f markdown -t plain+gutenberg -s -o %1.txt || exit /b
|
||||
|
||||
goto :eof
|
||||
@@ -1,7 +1,7 @@
|
||||
$define{doc_title}{Disk Catalog}$
|
||||
$define{doc_author}{Mykl Orders}$
|
||||
$define{doc_authmail}{}$
|
||||
$include{"Common.h"}$
|
||||
$include{"Book.h"}$
|
||||
|
||||
# RomWBW Distribution File Catalog
|
||||
|
||||
|
||||
19
Source/Doc/Errata.md
Normal file
19
Source/Doc/Errata.md
Normal file
@@ -0,0 +1,19 @@
|
||||
$define{doc_title}{Errata}$
|
||||
$include{"Book.h"}$
|
||||
|
||||
# Errata
|
||||
|
||||
The following errata apply to $doc_product$ $doc_ver$:
|
||||
|
||||
* The use of high density floppy disks requires a CPU speed of 8 MHz or
|
||||
greater.
|
||||
|
||||
* The PropIO support is based on RomWBW specific firmware. Be sure to
|
||||
program/update your PropIO firmware with the corresponding firmware
|
||||
image provided in the Binary directory of the RomWBW distribution.
|
||||
|
||||
* Reading bytes from the video memory of the VDU board (not Color
|
||||
VDU) appears to be problematic. This is only an issue when the driver
|
||||
needs to scroll a portion of the screen which is done by applications
|
||||
such as WordStar or ZDE. You are likely to see screen corruption in
|
||||
this case.
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
@@ -3,7 +3,7 @@
|
||||
# and available on commandline for this build to work!!!
|
||||
# Typically "sudo apt install pandoc, texlive-latex-extra, gpp"
|
||||
#
|
||||
OBJECTS = GettingStarted.pdf GettingStarted.gfm GettingStarted.txt Applications.pdf Architecture.pdf Catalog.pdf ROM_Applications.pdf
|
||||
OBJECTS = ReadMe.gfm ReadMe.txt UserGuide.pdf SystemGuide.pdf Applications.pdf ROM_Applications.pdf Catalog.pdf Errata.pdf
|
||||
# DEST = ../../Doc
|
||||
TOOLS = ../../Tools
|
||||
OTHERS = *.tmp
|
||||
@@ -13,7 +13,7 @@ include $(TOOLS)/Makefile.inc
|
||||
all :: deploy
|
||||
|
||||
%.tmp : %.md
|
||||
gpp -o $@ -U "$" "$" "{" "}{" "}$" "{" "}" "@@@" "" -M "$" "$" "{" "}{" "}$" "{" "}" $<
|
||||
gpp -o $@ -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $<
|
||||
|
||||
%.pdf : %.tmp
|
||||
pandoc $< -f markdown -t latex -s -o $@ --default-image-extension=pdf
|
||||
@@ -31,10 +31,11 @@ all :: deploy
|
||||
pandoc $< -f markdown -t plain -s -o $@ --default-image-extension=pdf
|
||||
|
||||
deploy :
|
||||
cp GettingStarted.pdf "../../Doc/RomWBW Getting Started.pdf"
|
||||
cp GettingStarted.gfm "../../ReadMe.md"
|
||||
cp GettingStarted.txt "../../ReadMe.txt"
|
||||
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
|
||||
cp Architecture.pdf "../../Doc/RomWBW Architecture.pdf"
|
||||
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
|
||||
cp ROM_Applications.pdf "../../Doc/ROM Applications.pdf"
|
||||
cp ReadMe.gfm "../../ReadMe.md"
|
||||
cp ReadMe.txt "../../ReadMe.txt"
|
||||
cp UserGuide.pdf "../../Doc/RomWBW User Guide.pdf"
|
||||
cp SystemGuide.pdf "../../Doc/RomWBW System Guide.pdf"
|
||||
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
|
||||
cp ROM_Applications.pdf "../../Doc/RomWBW ROM Applications.pdf"
|
||||
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
|
||||
cp Errata.pdf "../../Doc/RomWBW Errata.pdf"
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
$define{doc_title}{ROM Applications}$
|
||||
$define{doc_author}{Phillip Summers}$
|
||||
$define{doc_authmail}{}$
|
||||
$include{"Common.h"}$
|
||||
$include{"Book.h"}$
|
||||
|
||||
# Summary
|
||||
|
||||
@@ -316,7 +316,9 @@ D+ | d1 d2 -- d1+d2 | Add double numbers
|
||||
2>R | d -- | 2 to R
|
||||
2R> | d -- | fetch 2 from R
|
||||
M*/ | d1 n2 u3 -- d=(d1*n2)/u3 | double precision mult. div
|
||||
|
||||
SVC | hl de bc n -- hl de bc af | Execute a ROMWBW function
|
||||
P! | n p -- | Write a byte to a I/O port
|
||||
P@ | p -- n | Read a byte from and I/O port
|
||||
|
||||
# BASIC
|
||||
|
||||
|
||||
226
Source/Doc/ReadMe.md
Normal file
226
Source/Doc/ReadMe.md
Normal file
@@ -0,0 +1,226 @@
|
||||
$define{doc_title}{ReadMe}$
|
||||
$include{"Basic.h"}$
|
||||
|
||||
# Overview
|
||||
|
||||
RomWBW software provides a complete, commercial quality
|
||||
implementation of CP/M (and workalike) operating systems and
|
||||
applications for modern Z80/180/280 retro-computing hardware systems.
|
||||
A wide variety of platforms are supported including those
|
||||
produced by these developer communities:
|
||||
|
||||
* [RetroBrew Computers](https://www.retrobrewcomputers.org)
|
||||
* [RC2014](https://rc2014.co.uk), [RC2014-Z80](https://groups.google.com/g/rc2014-z80)
|
||||
* [retro-comp](https://groups.google.com/forum/#!forum/retro-comp)
|
||||
* [Small Computer Central](https://smallcomputercentral.com/)
|
||||
|
||||
General features include:
|
||||
|
||||
* Banked memory services for several banking designs
|
||||
* Disk drivers for RAM, ROM, Floppy, IDE, CF, and SD
|
||||
* Serial drivers including UART (16550-like), ASCI, ACIA, SIO
|
||||
* Video drivers including TMS9918, SY6545, MOS8563, HD6445
|
||||
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
|
||||
* Real time clock drivers including DS1302, BQ4845
|
||||
* OSes: CP/M 2.2, ZSDOS, CP/M 3, NZ-COM, ZPM3, QPM, p-System, and FreeRTOS
|
||||
* Built-in VT-100 terminal emulation support
|
||||
|
||||
RomWBW is distributed as both source code and pre-built ROM and disk
|
||||
images. Some of the provided software can be launched directly from the
|
||||
ROM firmware itself:
|
||||
|
||||
* System Monitor
|
||||
* Operating Systems (CP/M 2.2, ZSDOS)
|
||||
* ROM BASIC (Nascom BASIC and Tasty BASIC)
|
||||
* ROM Forth
|
||||
|
||||
A dynamic disk drive letter assignment mechanism allows mapping
|
||||
operating system drive letters to any available disk media.
|
||||
Additionally, mass storage devices (IDE Disk, CF Card, SD Card) support
|
||||
the use of multiple slices (up to 256 per device). Each slice contains
|
||||
a complete CP/M filesystem and can be mapped independently to any
|
||||
drive letter. This overcomes the inherent size limitations in legacy
|
||||
OSes and allows up to 2GB of accessible storage on a single device.
|
||||
|
||||
The pre-built ROM firmware images are generally suitable for most
|
||||
users. However, it is also very easy to modify and build custom ROM
|
||||
images that fully tailor the firmware to your specific preferences.
|
||||
All tools required to build custom ROM firmware under Windows are
|
||||
included -- no need to install assemblers, etc. The firmware can also
|
||||
be built using Linux or MacOS after confirming a few standard tools
|
||||
have been installed.
|
||||
|
||||
Multiple disk images are provided in the distribution. Most disk
|
||||
images contain a complete, bootable, ready-to-run implementation of a
|
||||
specific operating system. A "combo" disk image contains multiple
|
||||
slices, each with a full operating system implementation. If you use
|
||||
this disk image, you can easily pick whichever operating system you
|
||||
want to boot without changing media.
|
||||
|
||||
By design, RomWBW isolates all of the hardware specific functions in
|
||||
the ROM chip itself. The ROM provides a hardware abstraction layer
|
||||
such that all of the operating systems and applications on a disk
|
||||
will run on any RomWBW-based system. To put it simply, you can take
|
||||
a disk (or CF/SD Card) and move it between systems transparently.
|
||||
|
||||
A tool is provided that allows you to access a FAT-12/16/32 filesystem.
|
||||
The FAT filesystem may be coresident on the same disk media as RomWBW
|
||||
slices or on stand-alone media. This makes exchanging files with modern
|
||||
OSes such as Windows, MacOS, and Linux very easy.
|
||||
|
||||
# Acquiring RomWBW
|
||||
|
||||
The [RomWBW Repository](https://github.com/wwarthen/RomWBW) on GitHub is
|
||||
the official distribution location for all project source and
|
||||
documentation. The fully-built distribution releases are available on
|
||||
the [RomWBW Releases Page](https://github.com/wwarthen/RomWBW/releases)
|
||||
of the repository. On this page, you will normally see a Development
|
||||
Snapshot as well as recent stable releases. Unless you have a specific
|
||||
reason, I suggest you stick to the most recent stable release. Expand
|
||||
the "Assets" drop-down for the release you want to download, then select
|
||||
the asset named RomWBW-vX.X.X-Package.zip. The Package asset includes
|
||||
all pre-built ROM and Disk images as well as full source code. The other
|
||||
assets contain only source code and do not have the pre-built ROM or
|
||||
disk images.
|
||||
|
||||
All source code and distributions are maintained on GitHub. Code
|
||||
contributions are very welcome.
|
||||
|
||||
# Installation & Operation
|
||||
|
||||
In general, installation of RomWBW on your platform is very simple. You
|
||||
just need to program your ROM with the correct ROM image from the RomWBW
|
||||
distribution. Subsequently, you can write disk images on your disk
|
||||
drives (IDE disk, CF Card, SD Card, etc.) which then provides even more
|
||||
functionality.
|
||||
|
||||
Complete instructions for installation and operation of RomWBW are
|
||||
found in the $doc_user$.
|
||||
|
||||
## Documentation
|
||||
|
||||
Documentation for $doc_product$ includes:
|
||||
|
||||
* $doc_user$
|
||||
* $doc_sys$
|
||||
* $doc_apps$
|
||||
* $doc_romapps$
|
||||
* $doc_errata$
|
||||
|
||||
# Acknowledgments
|
||||
|
||||
I want to acknowledge that a great deal of the code and inspiration
|
||||
for RomWBW has been provided by or derived from the work of others
|
||||
in the RetroBrew Computers Community. I sincerely appreciate all of
|
||||
their 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.
|
||||
|
||||
* 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.
|
||||
|
||||
* Douglas Goodall contributed code, time, testing, and advice in "the
|
||||
early days". He created an entire suite of application programs to
|
||||
enhance the use of RomWBW. Unfortunately, they have become unusable
|
||||
due to internal changes within RomWBW. As of RomWBW 2.6, these
|
||||
applications are no longer provided.
|
||||
|
||||
* David Giles created support for the Z180 CSIO which is now included
|
||||
SD Card driver.
|
||||
|
||||
* Ed Brindley contributed some of the code that supports the RC2014
|
||||
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.
|
||||
|
||||
* Stephen Cousins has likewise created a series of hobbyist kit
|
||||
computers at Small Computer Central and is distributing RomWBW
|
||||
with many of them.
|
||||
|
||||
* The CP/NET client files were developed by Douglas Miller.
|
||||
|
||||
* Phillip Stevens contributed support for FreeRTOS.
|
||||
|
||||
* Curt Mayer contributed the original Linux / MacOS build process.
|
||||
|
||||
* UNA BIOS and FDISK80 are the products of John Coffman.
|
||||
|
||||
* FLASH4 is a product of Will Sowerbutts.
|
||||
|
||||
* CLRDIR is a product of Max Scane.
|
||||
|
||||
* Tasty Basic is a product of Dimitri Theulings.
|
||||
|
||||
* Dean Netherton contributed the sound driver interface and
|
||||
the SN76489 sound driver.
|
||||
|
||||
* The RomWBW Disk Catalog document was produced by Mykl Orders.
|
||||
|
||||
Contributions of all kinds to RomWBW are very welcome.
|
||||
|
||||
# Licensing
|
||||
|
||||
RomWBW is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation, either version 3 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
RomWBW is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with RomWBW. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
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
|
||||
licensing, please notify:
|
||||
|
||||
> 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 different from other programs within the aggregate.
|
||||
|
||||
In some cases, a single program (e.g., CP/M Operating System) is
|
||||
composed of multiple components with different licenses. It is
|
||||
believed that in all such cases the licenses are compatible with
|
||||
GPL version 3.
|
||||
|
||||
RomWBW encourages code contributions from others. Contributors
|
||||
may assert their own copyright in their contributions by
|
||||
annotating the contributed source code appropriately. Contributors
|
||||
are further encouraged to submit their contributions via the RomWBW
|
||||
source code control system to ensure their contributions are clearly
|
||||
documented.
|
||||
|
||||
All contributions to RomWBW are subject to this license.
|
||||
|
||||
# Getting Assistance
|
||||
|
||||
The best way to get assistance with RomWBW or any aspect of the
|
||||
RetroBrew Computers projects is via one of the community forums:
|
||||
|
||||
* [RetroBrew Computers Forum](https://www.retrobrewcomputers.org/forum/)
|
||||
* [RC2014 Google Group](https://groups.google.com/forum/#!forum/rc2014-z80)
|
||||
* [retro-comp Google Group](https://groups.google.com/forum/#!forum/retro-comp)
|
||||
|
||||
Submission of issues and bugs are welcome at the
|
||||
[RomWBW GitHub Repository](https://github.com/wwarthen/RomWBW).
|
||||
|
||||
Also feel free to email $doc_author$ at [$doc_authmail$](mailto:$doc_authmail$).
|
||||
2535
Source/Doc/SystemGuide.md
Normal file
2535
Source/Doc/SystemGuide.md
Normal file
File diff suppressed because it is too large
Load Diff
3684
Source/Doc/UserGuide.md
Normal file
3684
Source/Doc/UserGuide.md
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
327
Source/Doc/pandoc.css
Normal file
327
Source/Doc/pandoc.css
Normal file
@@ -0,0 +1,327 @@
|
||||
/*
|
||||
* I add this to html files generated with pandoc.
|
||||
*/
|
||||
|
||||
html {
|
||||
font-size: 100%;
|
||||
overflow-y: scroll;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
-ms-text-size-adjust: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
color: #444;
|
||||
font-family: sans-serif;
|
||||
font-size: 12px;
|
||||
line-height: 1.7;
|
||||
padding: 1em;
|
||||
margin: auto;
|
||||
max-width: 42em;
|
||||
background: #fefefe;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #0645ad;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:visited {
|
||||
color: #0b0080;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: #06e;
|
||||
}
|
||||
|
||||
a:active {
|
||||
color: #faa700;
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: thin dotted;
|
||||
}
|
||||
|
||||
*::-moz-selection {
|
||||
background: rgba(255, 255, 0, 0.3);
|
||||
color: #000;
|
||||
}
|
||||
|
||||
*::selection {
|
||||
background: rgba(255, 255, 0, 0.3);
|
||||
color: #000;
|
||||
}
|
||||
|
||||
a::-moz-selection {
|
||||
background: rgba(255, 255, 0, 0.3);
|
||||
color: #0645ad;
|
||||
}
|
||||
|
||||
a::selection {
|
||||
background: rgba(255, 255, 0, 0.3);
|
||||
color: #0645ad;
|
||||
}
|
||||
|
||||
p {
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
color: #111;
|
||||
line-height: 125%;
|
||||
margin-top: 2em;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
h4, h5, h6 {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5em;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2em;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.5em;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 0.9em;
|
||||
}
|
||||
|
||||
blockquote {
|
||||
color: #666666;
|
||||
margin: 0;
|
||||
padding-left: 3em;
|
||||
border-left: 0.5em #EEE solid;
|
||||
}
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
height: 2px;
|
||||
border: 0;
|
||||
border-top: 1px solid #aaa;
|
||||
border-bottom: 1px solid #eee;
|
||||
margin: 1em 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
pre, code, kbd, samp {
|
||||
color: #000;
|
||||
font-family: monospace, monospace;
|
||||
_font-family: 'courier new', monospace;
|
||||
font-size: 0.98em;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre;
|
||||
white-space: pre-wrap;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
b, strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
ins {
|
||||
background: #ff9;
|
||||
color: #000;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
sub, sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
ul, ol {
|
||||
margin: 1em 0;
|
||||
padding: 0 0 0 2em;
|
||||
}
|
||||
|
||||
li p:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
ul ul, ol ol {
|
||||
margin: .3em 0;
|
||||
}
|
||||
|
||||
dl {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
margin-bottom: .8em;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0 0 .8em 2em;
|
||||
}
|
||||
|
||||
dd:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
figure {
|
||||
display: block;
|
||||
text-align: center;
|
||||
margin: 1em 0;
|
||||
}
|
||||
|
||||
figure img {
|
||||
border: none;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
figcaption {
|
||||
font-size: 0.8em;
|
||||
font-style: italic;
|
||||
margin: 0 0 .8em;
|
||||
}
|
||||
|
||||
table {
|
||||
margin-bottom: 2em;
|
||||
border-bottom: 1px solid #ddd;
|
||||
border-right: 1px solid #ddd;
|
||||
border-spacing: 0;
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
table th {
|
||||
padding: .2em 1em;
|
||||
background-color: #eee;
|
||||
border-top: 1px solid #ddd;
|
||||
border-left: 1px solid #ddd;
|
||||
}
|
||||
|
||||
table td {
|
||||
padding: .2em 1em;
|
||||
border-top: 1px solid #ddd;
|
||||
border-left: 1px solid #ddd;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.author {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
@media only screen and (min-width: 480px) {
|
||||
body {
|
||||
font-size: 14px;
|
||||
}
|
||||
}
|
||||
@media only screen and (min-width: 768px) {
|
||||
body {
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
@media print {
|
||||
* {
|
||||
background: transparent !important;
|
||||
color: black !important;
|
||||
filter: none !important;
|
||||
-ms-filter: none !important;
|
||||
}
|
||||
|
||||
body {
|
||||
font-size: 12pt;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
a, a:visited {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
hr {
|
||||
height: 1px;
|
||||
border: 0;
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
a[href]:after {
|
||||
content: " (" attr(href) ")";
|
||||
}
|
||||
|
||||
abbr[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
.ir a:after, a[href^="javascript:"]:after, a[href^="#"]:after {
|
||||
content: "";
|
||||
}
|
||||
|
||||
pre, blockquote {
|
||||
border: 1px solid #999;
|
||||
padding-right: 1em;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
tr, img {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100% !important;
|
||||
}
|
||||
|
||||
@page :left {
|
||||
margin: 15mm 20mm 15mm 10mm;
|
||||
}
|
||||
|
||||
@page :right {
|
||||
margin: 15mm 10mm 15mm 20mm;
|
||||
}
|
||||
|
||||
p, h2, h3 {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h2, h3 {
|
||||
page-break-after: avoid;
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,7 @@ setlocal
|
||||
if "%1" == "dist" goto :dist
|
||||
|
||||
::
|
||||
:: Build [<platform> [<config> [<romsize> [<romname>]]]]
|
||||
:: Build [<platform> [<config> [<romname>]]]
|
||||
::
|
||||
|
||||
set TOOLS=../../Tools
|
||||
@@ -28,11 +28,21 @@ PowerShell -ExecutionPolicy Unrestricted .\Build.ps1 %* || exit /b
|
||||
::
|
||||
:: Below, we process the command file created by the PowerShell script.
|
||||
:: This sets the environment variables: Platform, Config, ROMName,
|
||||
:: ROMSize, & CPUType.
|
||||
:: & CPUType.
|
||||
::
|
||||
|
||||
call build_env.cmd
|
||||
|
||||
::
|
||||
:: Create a small app that is used to export key build variables of the build.
|
||||
:: Then run the app to output a file with the variables. Finally, read the
|
||||
:: file into variables usable in this batch file.
|
||||
::
|
||||
|
||||
tasm -t80 -g3 -dCMD hbios_env.asm hbios_env.com hbios_env.lst || exit /b
|
||||
zxcc hbios_env >hbios_env.cmd
|
||||
call hbios_env.cmd
|
||||
|
||||
::
|
||||
:: Start of the actual build process for a given ROM.
|
||||
::
|
||||
@@ -183,34 +193,34 @@ goto :eof
|
||||
|
||||
:dist
|
||||
|
||||
call Build SBC std 512 || exit /b
|
||||
call Build SBC simh 512 || exit /b
|
||||
call Build MBC std 512 || exit /b
|
||||
call Build ZETA std 512 || exit /b
|
||||
call Build ZETA2 std 512 || exit /b
|
||||
call Build N8 std 512 || exit /b
|
||||
call Build MK4 std 512 || exit /b
|
||||
call Build RCZ80 std 512 || exit /b
|
||||
call Build RCZ80 skz 512 || exit /b
|
||||
call Build RCZ80 kio 512 || exit /b
|
||||
call Build RCZ80 mt 512 || exit /b
|
||||
call Build RCZ80 duart 512 || exit /b
|
||||
call Build RCZ80 zrc 512 || exit /b
|
||||
call Build RCZ80 zrc_ram 0 || exit /b
|
||||
call Build RCZ180 ext 512 || exit /b
|
||||
call Build RCZ180 nat 512 || exit /b
|
||||
call Build RCZ280 ext 512 || exit /b
|
||||
call Build RCZ280 nat 512 || exit /b
|
||||
call Build RCZ280 nat_zz 512 || exit /b
|
||||
call Build RCZ280 nat_zzr 256 || exit /b
|
||||
call Build SCZ180 126 512 || exit /b
|
||||
call Build SCZ180 130 512 || exit /b
|
||||
call Build SCZ180 131 512 || exit /b
|
||||
call Build SCZ180 140 512 || exit /b
|
||||
call Build EZZ80 std 512 || exit /b
|
||||
call Build EZZ80 tz80 512 || exit /b
|
||||
call Build DYNO std 512 || exit /b
|
||||
call Build UNA std 512 || exit /b
|
||||
call Build RPH std 512 || exit /b
|
||||
call Build SBC std || exit /b
|
||||
call Build SBC simh || exit /b
|
||||
call Build MBC std || exit /b
|
||||
call Build ZETA std || exit /b
|
||||
call Build ZETA2 std || exit /b
|
||||
call Build N8 std || exit /b
|
||||
call Build MK4 std || exit /b
|
||||
call Build RCZ80 std || exit /b
|
||||
call Build RCZ80 kio || exit /b
|
||||
call Build RCZ80 easy || exit /b
|
||||
call Build RCZ80 tiny || exit /b
|
||||
call Build RCZ80 skz || exit /b
|
||||
:: call Build RCZ80 mt || exit /b
|
||||
:: call Build RCZ80 duart || exit /b
|
||||
call Build RCZ80 zrc || exit /b
|
||||
call Build RCZ80 zrc_ram || exit /b
|
||||
call Build RCZ180 ext || exit /b
|
||||
call Build RCZ180 nat || exit /b
|
||||
call Build RCZ280 ext || exit /b
|
||||
call Build RCZ280 nat || exit /b
|
||||
call Build RCZ280 nat_zz || exit /b
|
||||
call Build RCZ280 nat_zzr || exit /b
|
||||
call Build SCZ180 126 || exit /b
|
||||
call Build SCZ180 130 || exit /b
|
||||
call Build SCZ180 131 || exit /b
|
||||
call Build SCZ180 140 || exit /b
|
||||
call Build DYNO std || exit /b
|
||||
call Build UNA std || exit /b
|
||||
call Build RPH std || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
param([string]$Platform = "", [string]$Config = "", [int]$RomSize = 512, [string]$ROMName = "")
|
||||
param([string]$Platform = "", [string]$Config = "", [string]$ROMName = "")
|
||||
|
||||
# If a PowerShell exception occurs, just stop the script immediately.
|
||||
$ErrorAction = 'Stop'
|
||||
@@ -67,19 +67,6 @@ while ($true)
|
||||
$Config = (Read-Host -prompt "Configuration").Trim()
|
||||
}
|
||||
|
||||
#
|
||||
# Establish the ROM size (in KB). It may have been passed in on the command line. Validate
|
||||
# $RomSize and loop requesting a new value as long as it is not valid. The valid ROM sizes
|
||||
# are just hard-coded for now. The ROM size does nothing more than determine the size of the
|
||||
# ROM disk portion of the ROM image.
|
||||
#
|
||||
|
||||
while ($true)
|
||||
{
|
||||
if (($RomSize -eq 0) -or ($RomSize -eq 128) -or ($RomSize -eq 256) -or ($RomSize -eq 512) -or ($RomSize -eq 1024)) {break}
|
||||
$RomSize = (Read-Host -prompt "ROM Size [0|128|256|512|1024]").Trim()
|
||||
}
|
||||
|
||||
#
|
||||
# TASM should be invoked with the proper CPU type. Below, the CPU type is inferred
|
||||
# from the platform.
|
||||
@@ -103,7 +90,7 @@ while ($ROMName -eq "")
|
||||
}
|
||||
|
||||
# Current date/time is queried here to be subsequently imbedded in image
|
||||
$TimeStamp = '"' + (Get-Date -Format 'yyyy-MM-dd') + '"'
|
||||
$TimeStamp = (Get-Date -Format 'yyyy-MM-dd')
|
||||
|
||||
#
|
||||
# Since TASM has no mechanism to include files dynamically based on variables, a file
|
||||
@@ -115,9 +102,8 @@ $TimeStamp = '"' + (Get-Date -Format 'yyyy-MM-dd') + '"'
|
||||
@"
|
||||
; RomWBW Configured for ${Platform} ${Config}, $(Get-Date -Format "s")
|
||||
;
|
||||
#DEFINE TIMESTAMP ${TimeStamp}
|
||||
;
|
||||
ROMSIZE .EQU ${ROMSize}
|
||||
#DEFINE TIMESTAMP "${TimeStamp}"
|
||||
#DEFINE CONFIG "${Platform}_${Config}"
|
||||
;
|
||||
#INCLUDE "${ConfigFile}"
|
||||
;
|
||||
@@ -134,6 +120,5 @@ ROMSIZE .EQU ${ROMSize}
|
||||
set Platform=${Platform}
|
||||
set Config=${Config}
|
||||
set ROMName=${ROMName}
|
||||
set ROMSize=${ROMSize}
|
||||
set CPUType=${CPUType}
|
||||
"@ | Out-File "build_env.cmd" -Encoding ASCII
|
||||
|
||||
@@ -6,38 +6,39 @@ set -e
|
||||
export ROM_PLATFORM
|
||||
export ROM_CONFIG
|
||||
export ROMSIZE
|
||||
export CPUFAM
|
||||
|
||||
if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
echo "!!!DISTRIBUTION BUILD!!!"
|
||||
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="EZZ80"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="EZZ80"; ROM_CONFIG="tz80"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="N8"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zz"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zzr"; ROMSIZE="256"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; ROMSIZE="0"; bash Build.sh
|
||||
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="126"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="130"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="131"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="140"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="UNA"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="ZETA"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="ZETA2"; ROM_CONFIG="std"; ROMSIZE="512"; bash Build.sh
|
||||
ROM_PLATFORM="DYNO"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="MK4"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="N8"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ180"; ROM_CONFIG="ext"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ180"; ROM_CONFIG="nat"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="ext"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zz"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ280"; ROM_CONFIG="nat_zzr"; bash Build.sh
|
||||
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="mt"; bash Build.sh
|
||||
# ROM_PLATFORM="RCZ80"; ROM_CONFIG="duart"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="easy"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="tiny"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram"; bash Build.sh
|
||||
ROM_PLATFORM="RPH"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SBC"; ROM_CONFIG="simh"; bash Build.sh
|
||||
ROM_PLATFORM="MBC"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="126"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="130"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="131"; bash Build.sh
|
||||
ROM_PLATFORM="SCZ180"; ROM_CONFIG="140"; bash Build.sh
|
||||
ROM_PLATFORM="UNA"; 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
|
||||
fi
|
||||
|
||||
@@ -59,19 +60,12 @@ done
|
||||
|
||||
CONFIGFILE=Config/${ROM_PLATFORM}_${ROM_CONFIG}.asm
|
||||
|
||||
if [ -z "${ROMSIZE}" ] ; then
|
||||
ROMSIZE="512"
|
||||
fi
|
||||
|
||||
while [ ! '(' "${ROMSIZE}" = 1024 -o "${ROMSIZE}" = 512 -o "${ROMSIZE}" = 256 -o "${ROMSIZE}" = 128 -o "${ROMSIZE}" = 0 ')' ] ; do
|
||||
echo -n "Romsize :"
|
||||
read ROMSIZE
|
||||
done
|
||||
|
||||
if [ -z "${ROMNAME}" ] ; then
|
||||
ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
|
||||
fi
|
||||
|
||||
echo -e "\n\nBuilding $ROM_PLATFORM $ROM_CONFIG\n\n"
|
||||
|
||||
TIMESTAMP=$(date +%Y-%m-%d)
|
||||
|
||||
if [ "$1" = "-d" ] ; then
|
||||
@@ -86,19 +80,21 @@ fi
|
||||
|
||||
CONFIGFILE=Config/${ROM_PLATFORM}_${ROM_CONFIG}.asm
|
||||
|
||||
echo Building $ROMNAME for $ROM_PLATFORM $ROM_CONFIG $ROMSIZE
|
||||
|
||||
cat <<- EOF > build.inc
|
||||
; RomWBW Configured for ${ROM_PLATFORM} ${ROM_CONFIG} ${TIMESTAMP}
|
||||
;
|
||||
#DEFINE TIMESTAMP "${TIMESTAMP}"
|
||||
;
|
||||
ROMSIZE .EQU ${ROMSIZE}
|
||||
#DEFINE CONFIG "${ROM_PLATFORM}_${ROM_CONFIG}"
|
||||
;
|
||||
#INCLUDE "${CONFIGFILE}"
|
||||
;
|
||||
EOF
|
||||
|
||||
make hbios_env.sh
|
||||
source hbios_env.sh
|
||||
|
||||
echo Creating ${ROMSIZE}K ROM named ${ROMNAME}.rom
|
||||
|
||||
export OBJECTS
|
||||
OBJECTS="${ROMNAME}.rom"
|
||||
if [ "${ROM_PLATFORM}" != "UNA" ] ; then
|
||||
|
||||
@@ -14,3 +14,4 @@ if exist *.sys del *.sys
|
||||
if exist build.inc del build.inc
|
||||
if exist font*.asm del font*.asm
|
||||
if exist build_env.cmd del build_env.cmd
|
||||
if exist hbios_env.cmd del hbios_env.cmd
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; EASY Z80 STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_ezz80.asm"
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 10000000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
@@ -1,43 +0,0 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; EASY Z80 STANDARD CONFIGURATION
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
; CFG_<PLT>.ASM INCLUDED FILE WHICH IS FOUND IN THE PARENT DIRECTORY. THIS FILE CONTAINS
|
||||
; COMMON CONFIGURATION SETTINGS THAT OVERRIDE THE DEFAULTS. IT IS INTENDED THAT YOU MAKE
|
||||
; YOUR CUSTOMIZATIONS IN THIS FILE AND JUST INHERIT ALL OTHER SETTINGS FROM THE DEFAULTS.
|
||||
; EVEN BETTER, YOU CAN MAKE A COPY OF THIS FILE WITH A NAME LIKE <PLT>_XXX.ASM AND SPECIFY
|
||||
; YOUR FILE IN THE BUILD PROCESS.
|
||||
;
|
||||
; THE SETTINGS BELOW ARE THE SETTINGS THAT ARE MOST COMMONLY MODIFIED FOR THIS PLATFORM.
|
||||
; MANY OF THEM ARE EQUAL TO THE SETTINGS IN THE INCLUDED FILE, SO THEY DON'T REALLY DO
|
||||
; ANYTHING AS IS. THEY ARE LISTED HERE TO MAKE IT EASY FOR YOU TO ADJUST THE MOST COMMON
|
||||
; SETTINGS.
|
||||
;
|
||||
; N.B., SINCE THE SETTINGS BELOW ARE REDEFINING VALUES ALREADY SET IN THE INCLUDED FILE,
|
||||
; TASM INSISTS THAT YOU USE THE .SET OPERATOR AND NOT THE .EQU OPERATOR BELOW. ATTEMPTING
|
||||
; TO REDEFINE A VALUE WITH .EQU BELOW WILL CAUSE TASM ERRORS!
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "TINYZ80"
|
||||
;
|
||||
#include "cfg_ezz80.asm"
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 16000000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
;
|
||||
EIPCENABLE .SET TRUE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
CTCBASE .SET $10 ; CTC BASE I/O ADDRESS
|
||||
LEDENABLE .SET TRUE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDPORT .SET $6E ; STATUS LED PORT ADDRESS
|
||||
SIO0BASE .SET $18 ; SIO 0: REGISTERS BASE ADR
|
||||
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS
|
||||
@@ -22,7 +22,6 @@
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE SOURCE DIRECTORY (TWO
|
||||
; DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "Multi Board Computer"
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD ON <CR> OR AUTO BOOT
|
||||
;
|
||||
#include "cfg_mbc.asm"
|
||||
|
||||
@@ -26,9 +26,8 @@
|
||||
;
|
||||
#include "cfg_rcz180.asm"
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
@@ -39,17 +38,22 @@ Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|RC|RCV9958|RCKBD]
|
||||
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
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; RC2014 Z180 STANDARD CONFIGURATION (NATIVE Z180 MMU W/ LINEAR MEMORY)
|
||||
; RC2014 Z180 STANDARD CONFIGURATION (NATIVE Z180 MMU W/ LINEAR MEMORY MODULE)
|
||||
;==================================================================================================
|
||||
;
|
||||
; THE COMPLETE SET OF DEFAULT CONFIGURATION SETTINGS FOR THIS PLATFORM ARE FOUND IN THE
|
||||
@@ -26,9 +26,8 @@
|
||||
;
|
||||
#include "cfg_rcz180.asm"
|
||||
;
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
CPUOSC .SET 18432000 ; CPU OSC FREQ IN MHZ
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
;
|
||||
MEMMGR .SET MM_Z180 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
@@ -39,17 +38,22 @@ Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ASCIENABLE .SET TRUE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|RC|RCV9958|RCKBD]
|
||||
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
|
||||
;
|
||||
AY38910ENABLE .SET TRUE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
;
|
||||
#include "cfg_rcz280.asm"
|
||||
;
|
||||
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
|
||||
;
|
||||
CPUOSC .SET 24000000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
INTMODE .SET 1
|
||||
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180]
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_MEMHIWAIT .SET 0 ; Z280: HIGH 8MB MEMORY WAIT STATES (0-3)
|
||||
@@ -42,11 +42,20 @@ UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|RC|RCV9958|RCKBD]
|
||||
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
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
@@ -26,14 +26,12 @@
|
||||
;
|
||||
#include "cfg_rcz280.asm"
|
||||
;
|
||||
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
|
||||
;
|
||||
CPUOSC .SET 12000000 ; CPU OSC FREQ IN MHZ
|
||||
;
|
||||
MEMMGR .SET MM_Z280 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280]
|
||||
;
|
||||
INTMODE .SET 3
|
||||
;
|
||||
Z280_MEMLOWAIT .SET 0 ; Z280: LOW 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_MEMHIWAIT .SET 0 ; Z280: HIGH 8MB MEMORY WAIT STATES (0-3)
|
||||
Z280_IOWAIT .SET 1 ; Z280: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
|
||||
@@ -41,14 +39,23 @@ Z280_INTWAIT .SET 0 ; Z280: INT ACK WAIT STATUS (0-3)
|
||||
;
|
||||
Z2UENABLE .SET TRUE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
ACIAENABLE .SET TRUE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
SIOENABLE .SET TRUE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
;
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MBC|RC|RCV9958|RCKBD]
|
||||
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
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: AY-3-8910 / YM2149 SOUND DRIVER
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
;
|
||||
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
|
||||
;
|
||||
IDEENABLE .SET TRUE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
;
|
||||
PPIDEENABLE .SET TRUE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user