Compare commits
88 Commits
v3.5.1-dev
...
v3.6.0-dev
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1b2f452373 | ||
|
|
4f25b011e1 | ||
|
|
6c95a4285a | ||
|
|
f2e42dd9d8 | ||
|
|
936a3958a5 | ||
|
|
eb8b76819d | ||
|
|
11bc9703c0 | ||
|
|
9a77d7f93e | ||
|
|
2f5cf8fce4 | ||
|
|
0d0360b277 | ||
|
|
7515359c3f | ||
|
|
30a89dedbd | ||
|
|
f5e1987367 | ||
|
|
45222d6b2a | ||
|
|
3513b220c0 | ||
|
|
81278afefe | ||
|
|
eaca39b557 | ||
|
|
27864e8128 | ||
|
|
ec77861fae | ||
|
|
52ea94161c | ||
|
|
ed77b3ef84 | ||
|
|
2f61c3fc81 | ||
|
|
2ffd248eb5 | ||
|
|
ed4ced1ab6 | ||
|
|
77d201f9d3 | ||
|
|
3e1e640bb3 | ||
|
|
5c6ccbf0d3 | ||
|
|
4559608aa5 | ||
|
|
e0b6a23e4a | ||
|
|
f42c53f9e5 | ||
|
|
9563ae4c15 | ||
|
|
331a55ec89 | ||
|
|
6fec2aaf90 | ||
|
|
27ec33e007 | ||
|
|
275291e61f | ||
|
|
ee6621cc63 | ||
|
|
57007a60fc | ||
|
|
e048febffb | ||
|
|
12e76b3434 | ||
|
|
aa6375c093 | ||
|
|
9599a2c37b | ||
|
|
f5f3927e69 | ||
|
|
696b737612 | ||
|
|
09e868eec0 | ||
|
|
6cbe5ad9b7 | ||
|
|
5976afce2e | ||
|
|
8581f477d2 | ||
|
|
7d3bc01899 | ||
|
|
bd558d6a30 | ||
|
|
5d4b234fdb | ||
|
|
149601d17c | ||
|
|
b79709f61c | ||
|
|
7922ac4da5 | ||
|
|
d55f3bdcae | ||
|
|
aee00b0ff8 | ||
|
|
a0d1825701 | ||
|
|
cc2fda0cc2 | ||
|
|
e67b0f7e24 | ||
|
|
96d0900cf7 | ||
|
|
98441355c9 | ||
|
|
2e0f7922ec | ||
|
|
df3a9e7756 | ||
|
|
5e7f359b82 | ||
|
|
4ef452bcd8 | ||
|
|
d1af2ea8c0 | ||
|
|
cda51f7277 | ||
|
|
094545dcbb | ||
|
|
d79dce64fe | ||
|
|
c1152cfe17 | ||
|
|
ea418f9dc4 | ||
|
|
5118ab8d0a | ||
|
|
e42c04d40f | ||
|
|
3618e0a976 | ||
|
|
d0aad220df | ||
|
|
98e633461f | ||
|
|
cb33018341 | ||
|
|
07c08e2817 | ||
|
|
37f01810f5 | ||
|
|
9b4dd7b1bb | ||
|
|
98414da4d5 | ||
|
|
3450ce71a6 | ||
|
|
f162081ec1 | ||
|
|
6222f7410a | ||
|
|
665067eb25 | ||
|
|
dd25180f7c | ||
|
|
ea38e8e93b | ||
|
|
ddb2da2b8f | ||
|
|
3268d99b43 |
2
.github/pull_request_template.md
vendored
@@ -7,5 +7,7 @@ BEFORE YOU CREATE A PULL REQUEST:
|
||||
|
||||
Thank you for contributing to RomWBW! I will review your pull request as soon as possible.
|
||||
|
||||
-Wayne
|
||||
|
||||
DELETE EVERYTHING IN THIS COMMENT BLOCK AND REPLACE WITH YOUR COMMENTS
|
||||
-->
|
||||
|
||||
15
.github/workflows/release.yml
vendored
@@ -52,6 +52,21 @@ jobs:
|
||||
title: "${{env.TITLE}} ${{github.ref_name}}"
|
||||
files: |
|
||||
RomWBW-${{github.ref_name}}-Package.zip
|
||||
|
||||
- name: Build Docs
|
||||
run: |
|
||||
export TZ='America/Los_Angeles'
|
||||
sudo apt-get install gpp pandoc
|
||||
pip install mkdocs
|
||||
make -C Source/Doc deploy_mkdocs
|
||||
mkdocs build -f Source/Doc/mkdocs.yml
|
||||
|
||||
- name: Deploy Docs
|
||||
uses: peaceiris/actions-gh-pages@v4
|
||||
if: github.ref == 'refs/heads/master'
|
||||
with:
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
publish_dir: Source/Doc/site
|
||||
|
||||
# - name: Upload Package Archive
|
||||
# uses: AButler/upload-release-assets@v2.0.2
|
||||
|
||||
76
.gitignore
vendored
@@ -77,7 +77,6 @@ Tools/unix/zx/zx
|
||||
|
||||
!Source/ver.lib
|
||||
!Source/Apps/FAT/FAT.COM
|
||||
!Source/Apps/copysl/copysl.com
|
||||
!Source/Apps/ZMP/zmpx.com
|
||||
!Source/Apps/ZMD/zmdsubs.rel
|
||||
!Source/Apps/Test/vdctest/font.asm
|
||||
@@ -121,11 +120,14 @@ Binary/Apps/Tunes/inchina.vgm
|
||||
Binary/Apps/Tunes/shirakaw.vgm
|
||||
Binary/Apps/Tunes/startdem.vgm
|
||||
Binary/Apps/Tunes/wonder01.vgm
|
||||
Binary/Apps/copysl.doc
|
||||
Binary/Apps/fdu.doc
|
||||
Binary/Apps/zmconfig.ovr
|
||||
Binary/Apps/zminit.ovr
|
||||
Binary/Apps/zmp.doc
|
||||
Binary/Apps/zmp.hlp
|
||||
Binary/Apps/zmp.cfg
|
||||
Binary/Apps/zmp.fon
|
||||
Binary/Apps/zmterm.ovr
|
||||
Binary/Apps/zmxfer.ovr
|
||||
Binary/CPM3/bdos3.spr
|
||||
@@ -144,8 +146,7 @@ Binary/CPNET/cpn12ser.lbr
|
||||
Binary/CPNET/cpn3duo.lbr
|
||||
Binary/CPNET/cpn3mt.lbr
|
||||
Binary/CPNET/cpn3ser.lbr
|
||||
Binary/RCEZ80_std.upd
|
||||
Binary/RCZ80_std.upd
|
||||
Binary/*.upd
|
||||
Binary/ZPM3/bnkbdos3.spr
|
||||
Binary/ZPM3/bnkbios3.spr
|
||||
Binary/ZPM3/gencpm.dat
|
||||
@@ -174,74 +175,17 @@ Source/Fonts/fontcgau.asm
|
||||
Source/Fonts/fontvgarcc.asm
|
||||
Source/Fonts/fontvgarcc.bin
|
||||
Source/Fonts/fontvgarcu.asm
|
||||
Source/HBIOS/RCEZ80_std.upd
|
||||
Source/HBIOS/RCZ80_std.upd
|
||||
Source/HBIOS/*.upd
|
||||
Source/HBIOS/build_env.cmd
|
||||
Source/HBIOS/hbios_env.sh
|
||||
Source/HBIOS/netboot.mod
|
||||
Source/Images/*.cat
|
||||
Source/Images/*.img
|
||||
Source/Images/blank144
|
||||
Source/Images/blankhd1k
|
||||
Source/Images/blankhd512
|
||||
Source/Images/fd144_aztecc.img
|
||||
Source/Images/fd144_bascomp.img
|
||||
Source/Images/fd144_cowgol.img
|
||||
Source/Images/fd144_cpm22.img
|
||||
Source/Images/fd144_cpm3.img
|
||||
Source/Images/fd144_fortran.img
|
||||
Source/Images/fd144_games.img
|
||||
Source/Images/fd144_hitechc.img
|
||||
Source/Images/fd144_nzcom.img
|
||||
Source/Images/fd144_qpm.img
|
||||
Source/Images/fd144_tpascal.img
|
||||
Source/Images/fd144_ws4.img
|
||||
Source/Images/fd144_z80asm.img
|
||||
Source/Images/fd144_zpm3.img
|
||||
Source/Images/fd144_zsdos.img
|
||||
Source/Images/hd1k_aztecc.img
|
||||
Source/Images/hd1k_bascomp.img
|
||||
Source/Images/hd1k_blank.img
|
||||
Source/Images/hd1k_bp.img
|
||||
Source/Images/hd1k_combo.img
|
||||
Source/Images/hd1k_cowgol.img
|
||||
Source/Images/hd1k_cpm22.img
|
||||
Source/Images/hd1k_cpm3.img
|
||||
Source/Images/hd1k_fortran.img
|
||||
Source/Images/hd1k_games.img
|
||||
Source/Images/hd1k_hitechc.img
|
||||
Source/Images/hd1k_nzcom.img
|
||||
Source/Images/hd1k_qpm.img
|
||||
Source/Images/hd1k_tpascal.img
|
||||
Source/Images/hd1k_ws4.img
|
||||
Source/Images/hd1k_z80asm.img
|
||||
Source/Images/hd1k_zpm3.img
|
||||
Source/Images/hd1k_zsdos.img
|
||||
Source/Images/hd512_aztecc.img
|
||||
Source/Images/hd512_bascomp.img
|
||||
Source/Images/hd512_blank.img
|
||||
Source/Images/hd512_combo.img
|
||||
Source/Images/hd512_cowgol.img
|
||||
Source/Images/hd512_cpm22.img
|
||||
Source/Images/hd512_cpm3.img
|
||||
Source/Images/hd512_dos65.img
|
||||
Source/Images/hd512_fortran.img
|
||||
Source/Images/hd512_games.img
|
||||
Source/Images/hd512_hitechc.img
|
||||
Source/Images/hd512_nzcom.img
|
||||
Source/Images/hd512_qpm.img
|
||||
Source/Images/hd512_tpascal.img
|
||||
Source/Images/hd512_ws4.img
|
||||
Source/Images/hd512_z80asm.img
|
||||
Source/Images/hd512_zpm3.img
|
||||
Source/Images/hd512_zsdos.img
|
||||
Source/RomDsk/rom0_una.dat
|
||||
Source/RomDsk/rom0_wbw.dat
|
||||
Source/RomDsk/rom128_una.dat
|
||||
Source/RomDsk/rom128_wbw.dat
|
||||
Source/RomDsk/rom256_una.dat
|
||||
Source/RomDsk/rom256_wbw.dat
|
||||
Source/RomDsk/rom384_una.dat
|
||||
Source/RomDsk/rom384_wbw.dat
|
||||
Source/RomDsk/rom896_una.dat
|
||||
Source/RomDsk/rom896_wbw.dat
|
||||
Source/RomDsk/*.cat
|
||||
Source/RomDsk/*.dat
|
||||
Source/ZCPR-DJ/zcprdemo.com
|
||||
Source/ZPM3/autotog.com
|
||||
Source/ZPM3/clrhist.com
|
||||
|
||||
@@ -9,6 +9,8 @@ if exist Tunes\*.pt? del Tunes\*.pt?
|
||||
if exist Tunes\*.mym del Tunes\*.mym
|
||||
if exist Tunes\*.vgm del Tunes\*.vgm
|
||||
if exist bbcbasic.txt del bbcbasic.txt
|
||||
if exist *.cfg del *.cfg
|
||||
if exist *.fon del *.fon
|
||||
|
||||
pushd Test && call Clean || exit /b 1 & popd
|
||||
pushd ZDE && call Clean || exit /b 1 & popd
|
||||
|
||||
@@ -8,4 +8,4 @@ all::
|
||||
mkdir -p Tunes
|
||||
|
||||
clean::
|
||||
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm bbcbasic.txt
|
||||
@rm -f *.bin *.com *.img *.rom *.pdf *.log *.eeprom *.ovr *.hlp *.doc *.COM *.BIN Tunes/*.mym Tunes/*.pt? Tunes/*.vgm bbcbasic.txt *.cfg *.fon
|
||||
|
||||
@@ -1,9 +1,26 @@
|
||||
Version 3.6
|
||||
-----------
|
||||
- RDG: Added VDA driver for Xosera FPGA-based VDC
|
||||
- MGG: Added COBOL language disk image
|
||||
- WDC: Added config options to PCF driver
|
||||
- WBW: Enabled dynamic CPU speed update on LCD screen
|
||||
- WBW: Improve LPT driver boot messaging when not detected (per Robb Bates)
|
||||
- WBW: Correct DS1307 boot date/time display (per Tadeusz Pycio)
|
||||
- WBW: Add -DELAY option to TUNE app (per Robb Bates)
|
||||
- RDG: Add online documentation site
|
||||
- WBW: Added enhanced Hi-Tech C Compiler files from Ladislau Szilagyi
|
||||
- WBW: Added boundary check to ram/rom disk driver
|
||||
- WBW: Per Peter Onion, switch KERMIT default file xfer mode to binary
|
||||
|
||||
Version 3.5.1
|
||||
-------------
|
||||
- WBW: Fix CPMLDR.SYS & ZPMLDR.SYS for SYSCOPY (reported by Guido Santer)
|
||||
- MAP: Enhanced SLR Tools Disk Image with Plus versions
|
||||
- WBW: Add missing BCLOAD file to MS BASIC Compiler Disk Image (reported by Marshall Gates)
|
||||
- WBW: Doc improvements (per Fraser and Rob Gowin)
|
||||
- WBW: Correct ZMP application crash
|
||||
- MAP: Contribution of the SLABEL.COM tool for displaying and changing slice labels.
|
||||
- MAP: Hardware documentation, Significant new content added with project links.
|
||||
|
||||
Version 3.5
|
||||
-----------
|
||||
|
||||
28084
Doc/Language/Microsoft_COBOL-80_Manuals_1878.pdf
Normal file
@@ -13,6 +13,24 @@ release of RomWBW.
|
||||
applications. This is discussed in the "Upgrading" section of the
|
||||
RomWBW User Guide.
|
||||
|
||||
## Version 3.5.1
|
||||
|
||||
This is a patch release of v3.5.
|
||||
|
||||
### Fixes
|
||||
|
||||
- Corrects an issue with the `CPMLDR.SYS` and `ZPMLDR.SYS` files that
|
||||
caused `SYSCOPY` to fail when used with them.
|
||||
|
||||
- Added missing `BCLOAD` file to the MS BASIC Compiler disk image.
|
||||
|
||||
### New Features
|
||||
|
||||
- Added `SLABEL` application (Mark Pruden).
|
||||
|
||||
- Variety of documentation improvements, especially an overhaul of
|
||||
the Hardware Document (Mark Pruden).
|
||||
|
||||
## Version 3.5
|
||||
|
||||
### Upgrade Notes
|
||||
@@ -67,6 +85,8 @@ release of RomWBW.
|
||||
|
||||
- `COPYSL` slice copy application (Mark Pruden).
|
||||
|
||||
- `SLABEL` slice label display/edit tool (Mark Pruden).
|
||||
|
||||
- Improved disk slice management and protection (Mark Pruden).
|
||||
|
||||
- Initial NVRAM configuration support (Mark Pruden).
|
||||
|
||||
10
ReadMe.md
@@ -5,9 +5,9 @@
|
||||
|
||||
|
||||
**RomWBW Introduction** \
|
||||
Version 3.5 \
|
||||
Version 3.6 \
|
||||
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
|
||||
09 Apr 2025
|
||||
02 Jun 2025
|
||||
|
||||
# Overview
|
||||
|
||||
@@ -49,7 +49,7 @@ Supported hardware features of RomWBW include:
|
||||
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
|
||||
Iomega
|
||||
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
|
||||
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
|
||||
- Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
|
||||
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
|
||||
- Real time clock drivers including DS1302, BQ4845
|
||||
- Support for CP/NET networking using Wiznet, MT011 or Serial
|
||||
@@ -305,6 +305,7 @@ let me know if I missed you!
|
||||
- creation of the Introduction and Hardware documents
|
||||
- Z3PLUS operating system disk image
|
||||
- COPYSL utility
|
||||
- SLABEL utility
|
||||
- a feature for RomWBW configuration by NVRAM
|
||||
- the /B bulk mode of disk assignment to the ASSIGN utility
|
||||
|
||||
@@ -339,6 +340,9 @@ let me know if I missed you!
|
||||
|
||||
- Les Bird has contributed support for the NABU w/ Option Board
|
||||
|
||||
- Rob Gowin created an online documentation site via MkDocs, and
|
||||
contributed a driver for the Xosera FPGA-based video controller.
|
||||
|
||||
## Related Projects
|
||||
|
||||
Outside of the hardware platforms adapted to RomWBW, there are a variety
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
RomWBW Introduction
|
||||
Wayne Warthen (wwarthen@gmail.com)
|
||||
09 Apr 2025
|
||||
02 Jun 2025
|
||||
|
||||
|
||||
|
||||
@@ -46,7 +46,7 @@ Supported hardware features of RomWBW include:
|
||||
- Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip,
|
||||
Iomega
|
||||
- Serial drivers including UART (16550-like), ASCI, ACIA, SIO
|
||||
- Video drivers including TMS9918, SY6545, MOS8563, HD6445
|
||||
- Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
|
||||
- Keyboard (PS/2) drivers via VT8242 or PPI interfaces
|
||||
- Real time clock drivers including DS1302, BQ4845
|
||||
- Support for CP/NET networking using Wiznet, MT011 or Serial
|
||||
@@ -312,6 +312,7 @@ let me know if I missed you!
|
||||
- creation of the Introduction and Hardware documents
|
||||
- Z3PLUS operating system disk image
|
||||
- COPYSL utility
|
||||
- SLABEL utility
|
||||
- a feature for RomWBW configuration by NVRAM
|
||||
- the /B bulk mode of disk assignment to the ASSIGN utility
|
||||
|
||||
@@ -346,6 +347,9 @@ let me know if I missed you!
|
||||
|
||||
- Les Bird has contributed support for the NABU w/ Option Board
|
||||
|
||||
- Rob Gowin created an online documentation site via MkDocs, and
|
||||
contributed a driver for the Xosera FPGA-based video controller.
|
||||
|
||||
|
||||
Related Projects
|
||||
|
||||
|
||||
@@ -29,6 +29,7 @@ call :build Survey || exit /b
|
||||
call :build HTalk || exit /b
|
||||
call :build BBCBASIC || exit /b
|
||||
call :build copysl || exit /b
|
||||
call :build slabel || exit /b
|
||||
call :build ZDE || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -24,6 +24,7 @@ call :clean Survey || exit /b
|
||||
call :clean HTalk || exit /b
|
||||
call :clean BBCBASIC || exit /b
|
||||
call :clean copysl || exit /b
|
||||
call :clean slabel || exit /b
|
||||
call :clean ZDE || exit /b
|
||||
|
||||
goto :eof
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
SUBDIRS = HTalk XM FDU FAT Tune Test ZMP ZMD Dev VGM cpuspd reboot Survey BBCBASIC copysl \
|
||||
sysgen syscopy assign format talk mode rtc timer ZDE
|
||||
slabel sysgen syscopy assign format talk mode rtc timer ZDE
|
||||
TOOLS =../../Tools
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
@@ -23,6 +23,19 @@ CLI_HAVE_HBIOS_SWITCH1 ; NOT MATCHED --HBIOS
|
||||
LD (HBIOSMD), A
|
||||
RET
|
||||
|
||||
CLI_HAVE_DELAY_SWITCH:
|
||||
LD HL, CLIARGS ; TEST FOR --DELAY ON COMMAND LINE
|
||||
LD DE, DELAYOPT
|
||||
CALL STRINDEX
|
||||
JR NZ, CLI_HAVE_DELAY_SWITCH1
|
||||
OR $FF ; MATCHED --DELAY
|
||||
LD (DELAYMD), A
|
||||
RET
|
||||
CLI_HAVE_DELAY_SWITCH1 ; NOT MATCHED --HBIOS
|
||||
XOR A
|
||||
LD (DELAYMD), A
|
||||
RET
|
||||
|
||||
CLI_PORTS:
|
||||
LD HL, CLIARGS ; TEST FOR -MSX ON COMMAND LINE
|
||||
LD DE, OPT_MSX
|
||||
@@ -101,7 +114,8 @@ CLI_OCTAVE_ADJST5:
|
||||
|
||||
OPT_MSX .DB "-MSX", 0 ; USE MSX PORTS
|
||||
OPT_RC .DB "-RC", 0 ; USE RC PORTS
|
||||
HBIOSOPT: .DB "--HBIOS", 0
|
||||
HBIOSOPT: .DB "--HBIOS", 0 ; USE HBIOS API FOR PLAYBACK
|
||||
DELAYOPT: .DB "-DELAY",0 ; FORCE DELAY MODE
|
||||
DOWN1 .DB "-t1", 0 ; DOWN AN OCTAVE
|
||||
DOWN2 .DB "-t2", 0 ; DOWN TWO OCTAVE
|
||||
UP1 .DB "+t1", 0 ; UP AN OCTAVE
|
||||
|
||||
@@ -41,8 +41,14 @@ DLY1 DEC BC ; [6]
|
||||
; Test for timer running to determine if it can be used for delay
|
||||
; Return string message in DE
|
||||
; Assigned (WMOD) with 0 if no hardware time, 1 if hardware timer found
|
||||
; If -DELAY on command line, force delay mode
|
||||
;
|
||||
PROBETIMER:
|
||||
LD A,(DELAYMD) ; GET COMMAND LINE DELAY FLAG
|
||||
OR A ; TEST IT
|
||||
LD A,0 ; ASSUME NO TIMER
|
||||
LD DE,MSGDLY ; DELAY MODE MESSAGE
|
||||
JR NZ,SETDLY ; IF TRUE, DONE
|
||||
LD B,BF_SYSGET ; HBIOS: GET function
|
||||
LD C,$D0 ; TIMER subfunction
|
||||
RST 08 ; DE:HL := current tick count
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
; 2024-07-11 [WBW] Updated, Les Bird's module now uses same settings as EB6
|
||||
; 2024-09-17 [WBW] Add support for HEATH H8 with Les Bird's MSX Card
|
||||
; 2024-12-12 [WBW] Add options to force standard MSX or RC ports
|
||||
; 2025-05-28 [WBW] Add option to force delay mode
|
||||
;_______________________________________________________________________________
|
||||
;
|
||||
; ToDo:
|
||||
@@ -113,6 +114,7 @@ Id .EQU 1 ; 5) Insert official identificator
|
||||
CALL CLI_ABRT_IF_OPT_FIRST
|
||||
CALL CLI_PORTS
|
||||
CALL CLI_HAVE_HBIOS_SWITCH
|
||||
CALL CLI_HAVE_DELAY_SWITCH
|
||||
CALL CLI_OCTAVE_ADJST
|
||||
JP CONTINUE
|
||||
|
||||
@@ -703,15 +705,16 @@ FILTYP .DB 0 ; Sound file type (TYPPT2, TYPPT3, TYPMYM)
|
||||
TMP .DB 0 ; work around use of undocumented Z80
|
||||
|
||||
HBIOSMD .DB 0 ; NON-ZERO IF USING HBIOS SOUND DRIVER, ZERO OTHERWISE
|
||||
DELAYMD .DB 0 ; FORCE DELAY MODE IF TRUE (NON-ZERO)
|
||||
OCTAVEADJ .DB 0 ; AMOUNT TO ADJUST OCTAVE UP OR DOWN
|
||||
|
||||
USEPORTS .DB 0 ; AUDIO CHIP PORT SELECTION MODE
|
||||
|
||||
MSGBAN .DB "Tune Player for RomWBW v3.12, 12-Dec-2024",0
|
||||
MSGUSE .DB "Copyright (C) 2024, Wayne Warthen, GNU GPL v3",13,10
|
||||
MSGBAN .DB "Tune Player for RomWBW v3.13, 28-May-2025",0
|
||||
MSGUSE .DB "Copyright (C) 2025, Wayne Warthen, GNU GPL v3",13,10
|
||||
.DB "PTxPlayer Copyright (C) 2004-2007 S.V.Bulba",13,10
|
||||
.DB "MYMPlay by Marq/Lieves!Tuore",13,10,13,10
|
||||
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [-msx|-rc] [--hbios] [+tn|-tn]",0
|
||||
.DB "Usage: TUNE <filename>.[PT2|PT3|MYM] [-msx|-rc] [-delay] [--hbios] [+tn|-tn]",0
|
||||
MSGBIO .DB "Incompatible BIOS or version, "
|
||||
.DB "HBIOS v", '0' + RMJ, ".", '0' + RMN, " required",0
|
||||
MSGPLT .DB "Hardware error, system not supported!",0
|
||||
|
||||
@@ -291,7 +291,7 @@ EXTRA3:
|
||||
BIOID DB 0 ; BIOS ID, 1=HBIOS, 2=UBIOS
|
||||
CPUSPD DB 10 ; CPU speed in MHz
|
||||
RCVSCL DW 6600 ; RECV loop timeout scalar
|
||||
UNIT DB 0 ; BIOS serial device unit number
|
||||
UNIT DB 0FFH ; BIOS serial device unit number
|
||||
BIOSBID DB 00H ; BIOS bank id
|
||||
;
|
||||
TAG DB "RomWBW, 30-May-2020$"
|
||||
@@ -330,7 +330,7 @@ HB_JPTBL:
|
||||
JP HB_GETCHR ; get character from modem
|
||||
JP HB_RCVRDY ; check receive ready
|
||||
JP HB_SNDRDY ; check send ready
|
||||
JP HB_SPEED ; get speed value for file transfer time
|
||||
JP HB_SPEED ; get speed value for file transfer time
|
||||
;
|
||||
;-----------------------------------------------------------------------
|
||||
;
|
||||
@@ -819,7 +819,6 @@ UF_INIT:
|
||||
; Send character on top of stack
|
||||
;
|
||||
UF_SENDR:
|
||||
|
||||
POP AF ; get character to send from stack
|
||||
OUT (0FFH),A ; write to fifo
|
||||
UF_SCDP EQU $-1 ; data port
|
||||
|
||||
@@ -81,7 +81,7 @@ MINIT1:
|
||||
SUB '0' ; Got it, convert to binary
|
||||
LD (UNIT),A ; Save it
|
||||
LD A,' ' ; Space character to accum
|
||||
LD (HL),A ; Remove numberic from FCB
|
||||
LD (HL),A ; Remove numeric from FCB
|
||||
JR MINIT3 ; Proceed with initialization
|
||||
|
||||
MINIT2:
|
||||
@@ -188,7 +188,6 @@ MINIT_UB1:
|
||||
LD (UNIT),A ; and save it
|
||||
;
|
||||
MINIT_UB2:
|
||||
;
|
||||
JP UB_INIT ; UNA BIOS init
|
||||
;
|
||||
MINIT_RET:
|
||||
@@ -221,7 +220,6 @@ MINIT_RET:
|
||||
;
|
||||
; Return with CPU speed in A
|
||||
LD A,(CPUSPD) ; A := CPU speed in MHz
|
||||
LD HL,(RCVSCL) ; HL := receive scalar
|
||||
RET ; and return
|
||||
;
|
||||
;-----------------------------------------------------------------------
|
||||
@@ -307,6 +305,22 @@ FAIL:
|
||||
CALL BDOS ; Do it
|
||||
JP 0 ; Bail out!
|
||||
;
|
||||
; Adjust CPUSPD to account for overhead of HBIOS or UBIOS. It appears
|
||||
; that dividing CPU speed in MHz by 8 results in timeouts that are
|
||||
; roughly correct.
|
||||
;
|
||||
SLOW:
|
||||
LD A,(CPUSPD) ; Get true CPU speed
|
||||
ADD A,4 ; Add for rounding
|
||||
SRL A ; Divide by 8
|
||||
SRL A
|
||||
SRL A
|
||||
JR NZ,SLOW1 ; If not zero, we are good
|
||||
LD A,1 ; else, make it 1
|
||||
SLOW1:
|
||||
LD (CPUSPD),A ; Save it
|
||||
RET
|
||||
;
|
||||
;-----------------------------------------------------------------------
|
||||
;
|
||||
; The following are all dummy routines that are unused because MINIT
|
||||
@@ -326,7 +340,6 @@ EXTRA3:
|
||||
;
|
||||
BIOID DB 0 ; BIOS ID, 1=HBIOS, 2=UBIOS
|
||||
CPUSPD DB 10 ; CPU speed in MHz
|
||||
RCVSCL DW 6600 ; RECV loop timeout scalar
|
||||
UNIT DB 0FFH ; BIOS serial device unit number
|
||||
BIOSBID DB 00H ; BIOS bank id
|
||||
;
|
||||
@@ -373,8 +386,7 @@ HB_JPTBL:
|
||||
; HBIOS initialization
|
||||
;
|
||||
HB_INIT:
|
||||
LD HL,2150 ; Smaller receive loop timeout scalar
|
||||
LD (RCVSCL),HL ; ... to compensate for BIOS overhead
|
||||
CALL SLOW ; Adjust CPUSPD for HBIOS overhead
|
||||
;
|
||||
; Patch SENDR w/ FastPath addresses
|
||||
LD BC,0F801H ; Get CIO func/data adr
|
||||
@@ -412,10 +424,6 @@ HB_INIT:
|
||||
RST 08
|
||||
JP NZ,APIERR ; handle API error
|
||||
LD (HB_SRFN),HL ; Plug in func adr
|
||||
;
|
||||
; Claim 1 MHz CPU to offset overhead of HBIOS
|
||||
LD A,1
|
||||
LD (CPUSPD),A ; Save it
|
||||
;
|
||||
LD HL,HB_JPTBL
|
||||
LD DE,HB_LBL
|
||||
@@ -564,14 +572,8 @@ UB_INIT:
|
||||
;
|
||||
; TODO:
|
||||
; - TEST!!!
|
||||
; - ADJUST RCVSCL?
|
||||
;
|
||||
LD HL,3000 ; Smaller receive loop timeout scalar
|
||||
LD (RCVSCL),HL ; ... to compensate for BIOS overhead
|
||||
;
|
||||
; Claim 1 MHz CPU to offset overhead of HBIOS
|
||||
LD A,1
|
||||
LD (CPUSPD),A ; Save it
|
||||
CALL SLOW ; Adjust CPUSPD for UBIOS overhead
|
||||
;
|
||||
LD HL,UB_JPTBL
|
||||
LD DE,UB_LBL
|
||||
@@ -721,9 +723,6 @@ UA_JPTBL:
|
||||
; UART initialization
|
||||
;
|
||||
UA_INIT:
|
||||
LD DE,13000 ; receive loop timeout scalar
|
||||
LD (RCVSCL),DE ; ... for UART RCVRDY timing
|
||||
;
|
||||
LD A,L ; get base I/O port address
|
||||
LD (UA_SCP),A ; set port value in SENDR
|
||||
LD (UA_GCP),A ; set port value in GETCHR
|
||||
@@ -842,9 +841,6 @@ UF_JPTBL:
|
||||
; USB-FIFO initialization
|
||||
;
|
||||
UF_INIT:
|
||||
LD DE,12000 ; receive loop timeout scalar
|
||||
LD (RCVSCL),DE ; ... for UART RCVRDY timing
|
||||
;
|
||||
LD A,L ; get base I/O port address (data port)
|
||||
LD (UF_SCDP),A ; set data port in SENDR
|
||||
LD (UF_GCDP),A ; set data port in GETCHR/MDIN
|
||||
@@ -863,7 +859,6 @@ UF_INIT:
|
||||
; Send character on top of stack
|
||||
;
|
||||
UF_SENDR:
|
||||
|
||||
POP AF ; get character to send from stack
|
||||
OUT (0FFH),A ; write to fifo
|
||||
UF_SCDP EQU $-1 ; data port
|
||||
|
||||
@@ -7,10 +7,13 @@ set PATH=%TOOLS%\zxcc;%PATH%
|
||||
|
||||
set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
zxcc Z80ASM -ZMO-RW01/H || exit /b
|
||||
zxcc MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01 || exit /b
|
||||
:: zxcc Z80ASM -ZMO-RW01/LH || exit /b
|
||||
zxcc Z80ASM -ZMO-WBW/LH || exit /b
|
||||
zxcc MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-WBW || exit /b
|
||||
|
||||
copy /Y zmp.com ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y *.ovr ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y zmp.cfg ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y zmp.fon ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y *.hlp ..\..\..\Binary\Apps\ || exit /b
|
||||
copy /Y zmp.doc ..\..\..\Binary\Apps\ || exit /b
|
||||
@@ -1,10 +1,10 @@
|
||||
OBJECTS = zmp.com *.ovr *.hlp zmp.doc
|
||||
OBJECTS = zmp.com *.ovr zmp.cfg zmp.fon *.hlp zmp.doc
|
||||
DEST = ../../../Binary/Apps
|
||||
TOOLS = ../../../Tools
|
||||
OTHERS = *.hex
|
||||
NODELETE = *.ovr zmp.doc *.hlp
|
||||
NODELETE = *.ovr zmp.doc zmp.cfg zmp.fon *.hlp
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
|
||||
zmp.com: zmo-rw01.hex
|
||||
$(ZXCC) MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-RW01
|
||||
zmp.com: zmo-wbw.hex
|
||||
$(ZXCC) MLOAD25 -ZMP.COM=ZMPX.COM,ZMO-WBW
|
||||
|
||||
@@ -27,4 +27,15 @@ as at Aug 23rd, 2021.
|
||||
Untested on Ron Murrays ZMP15
|
||||
- Space getting short so messages shortened.
|
||||
|
||||
--PMS 8/24/2021
|
||||
--PMS 8/24/2021
|
||||
|
||||
- Refactored overlay to resolve some stack issues.
|
||||
- Removed support for setport because it didn't make much sense
|
||||
with ability to specify port on command line.
|
||||
- Added an equate (pcfg) which controls whether port configuration
|
||||
is implemented. It is set to false (no port configuration).
|
||||
because ZMP it is unable to handle many RomWBW serial port settings
|
||||
(notably the hard-wired 115200 baud of many RCBus systems). You
|
||||
must now used MODE to configure port before starting ZMP.
|
||||
|
||||
--WBW 1:55 PM 4/16/2025
|
||||
844
Source/Apps/ZMP/zmo-wbw.z80
Normal file
@@ -0,0 +1,844 @@
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
; Overlay for ZMP (Z-Modem Program)
|
||||
;
|
||||
; Name ZMO-WBW.Z80
|
||||
;
|
||||
; Dated April 14, 2025
|
||||
;
|
||||
; Written by -
|
||||
; Phil Summers, Wayne Warthen
|
||||
;
|
||||
; ROMWBW version using HBIOS and https://github.com/mecparts/zmp
|
||||
; version of zmodem
|
||||
;
|
||||
; - All modem/serial i/o is through RomWBW HBIOS.
|
||||
;
|
||||
; - Data bits, stop bits, and parity are determined by HBIOS.
|
||||
; The ZMP settings will have no effect. Use RomWBW MODE
|
||||
; command to set serial port config before starting ZMP.
|
||||
;
|
||||
; - Timing delay calculations based on HBIOS reported CPU speed.
|
||||
;
|
||||
; - The pcfg equate determines whether the overlay will
|
||||
; implement port initialization. Normally, pcfg will be
|
||||
; set to false because ZMP does not allow configuring
|
||||
; many HBIOS speeds (notably the 115200 baud hardwired
|
||||
; into many RCBus systems). In this case, you must
|
||||
; configure the modem port using the RomWBW
|
||||
; MODE command as desired before starting ZMP.
|
||||
;
|
||||
; - The modem port is assigned to an HBIOS character unit. By
|
||||
; default, the modem is assigned to HBIOS character unit 1.
|
||||
; An alternate HBIOS character unit may be specified as a
|
||||
; parameter on the command line as a single number. For
|
||||
; example, the following will assign HBIOS port 3 as the
|
||||
; ZMP modem port:
|
||||
;
|
||||
; ZMP 3
|
||||
;
|
||||
; - The original version of ZMP from Ron Murray allows you to
|
||||
; select from 2 logical modem ports. This overlay ignores
|
||||
; any attempt to select ports from within ZMP. The desired
|
||||
; modem port should be assigned using the command line
|
||||
; parameter as described above.
|
||||
;
|
||||
; - Teraterm users may need to change the ZmodemWinSize value
|
||||
; to 1024 in the teraterm.ini configuration file.
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
;
|
||||
; System-dependent code overlay for ZMODEM
|
||||
;
|
||||
;
|
||||
;
|
||||
; Insert your own code as necessary in this file. Code contained herein
|
||||
; has been written in Z80 code for use with M80 or SLR. Assemble as follows:
|
||||
;
|
||||
; SLR ZMO-xx01/h
|
||||
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
|
||||
; or
|
||||
; M80 =ZMO-xx01.Z80
|
||||
; RELHEX ZMO-xx01
|
||||
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
|
||||
;
|
||||
;
|
||||
; (Don't use L80 without changing the source for assembly as a
|
||||
; cseg file.)
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
;
|
||||
; Notes on modifying this file:
|
||||
;
|
||||
; C requires that functions do not change either index register (IX or IY).
|
||||
; If your overlay requires either of these to be changed, ensure they are
|
||||
; restored to the original values on return.
|
||||
; Since collecting parameters from C functions can be tricky, only change
|
||||
; the parts marked 'Insert your own code here'. Do NOT modify the jump
|
||||
; table at the start. Do NOT modify the entry/exit sections of each
|
||||
; function. Do NOT pass 'GO'. Do NOT collect $200.
|
||||
; Apart from defining modem functions, this file also defines terminal
|
||||
; characteristics. Examples provided are for ADM-3A (with a few of my own
|
||||
; additions). Modify to suit your own terminal. An inline print routine
|
||||
; is provided for printing strings in the usual way: usage is
|
||||
;
|
||||
; call print
|
||||
; db 'required string',0
|
||||
;
|
||||
;-----------------------------------------------------------------------------
|
||||
;
|
||||
;
|
||||
; Don't forget to set your clock speed at the clkspd variable.
|
||||
;
|
||||
;
|
||||
; If you find your overlay exceeds the maximum size (currently 0400h),
|
||||
; you will have to contact me for another version. If too many people need
|
||||
; to do it, we haven't allowed enough room.
|
||||
;
|
||||
; Ron Murray 15/8/88
|
||||
;
|
||||
;
|
||||
;
|
||||
;---------------------------------------------------------------------------
|
||||
|
||||
false equ 0
|
||||
true equ not false
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
; User-set variables:
|
||||
|
||||
debug equ false ; to allow debugging of overlay with Z8E etc.
|
||||
clkspd equ 8 ; Processor clock speed in MHz
|
||||
pcfg equ false ; Allow ZMP to configure port
|
||||
|
||||
;
|
||||
;Set the following two equates to the drive and user area which will contain
|
||||
; ZMP's .OVR files, .CFG file, .FON file and .HLP file. Set both to zero
|
||||
; (null) to locate them on the drive from which ZMP was invoked.
|
||||
|
||||
overdrive equ 0 ; Drive to find overlay files on ('A'-'P')
|
||||
overuser equ 0 ; User area to find files
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
|
||||
; NOT user-set variables
|
||||
|
||||
userdef equ 0145h ; origin of this overlay
|
||||
; This address should not change with
|
||||
; subsequent revisions.
|
||||
mspeed equ 03ch ; location of current baud rate.
|
||||
ovsize equ 0400h ; max size of this overlay
|
||||
|
||||
fcb equ 05ch ; primary command line CP/M fcb
|
||||
|
||||
.z80 ; use z80 code
|
||||
aseg ; absolute
|
||||
|
||||
if debug
|
||||
org 100h ; so you can debug it with cebug, zsid, etc
|
||||
else
|
||||
org userdef
|
||||
endif
|
||||
|
||||
|
||||
esc equ 1bh
|
||||
ctrlq equ 11h
|
||||
cr equ 0dh
|
||||
lf equ 0ah
|
||||
bdos equ 5
|
||||
|
||||
|
||||
codebgn equ $
|
||||
|
||||
;Jump table for the overlay: do NOT change this
|
||||
jump_tab:
|
||||
jp scrnpr ; screen print
|
||||
jp mrd ; modem read with timeout
|
||||
jp mchin ; get a character from modem
|
||||
jp mchout ; send a character to the modem
|
||||
jp mordy ; test for tx buffer empty
|
||||
jp mirdy ; test for character received
|
||||
jp sndbrk ; send break
|
||||
jp cursadd ; cursor addressing
|
||||
jp cls ; clear screen
|
||||
jp invon ; inverse video on
|
||||
jp invoff ; inverse video off
|
||||
jp hide ; hide cursor
|
||||
jp show ; show cursor
|
||||
jp savecu ; save cursor position
|
||||
jp rescu ; restore cursor position
|
||||
jp mint ; service modem interrupt
|
||||
jp invec ; initialise interrupt vectors
|
||||
jp dinvec ; de-initialise interrupt vectors
|
||||
jp mdmerr ; test uart flags for error
|
||||
jp dtron ; turn DTR on
|
||||
jp dtroff ; turn DTR OFF
|
||||
jp init ; initialise uart
|
||||
jp wait ; wait seconds
|
||||
jp mswait ; wait milliseconds
|
||||
jp userin ; user-defined entry routine
|
||||
jp userout ; user-defined exit routine
|
||||
jp getvars ; get system variables
|
||||
jp setport ; set port (0 or 1)
|
||||
|
||||
; Spare jumps for compatibility with future versions
|
||||
jp spare ; spare for later use
|
||||
jp spare ; spare for later use
|
||||
jp spare ; spare for later use
|
||||
jp spare ; spare for later use
|
||||
jp spare ; spare for later use
|
||||
jp spare ; spare for later use
|
||||
|
||||
; Local storage
|
||||
|
||||
hbunit db 1 ; Active HBIOS unit for modem I/O
|
||||
cpumhz db clkspd ; CPU clock speed in MHz
|
||||
|
||||
;
|
||||
; Main code starts here
|
||||
;
|
||||
;Screen print function
|
||||
scrnpr:
|
||||
; <== Insert your own code here
|
||||
call print
|
||||
db 'Screen print not supported.',cr,lf,0
|
||||
; <== End of your own code
|
||||
spare:
|
||||
ret
|
||||
|
||||
|
||||
; User-defined entry routine: leave empty if not needed
|
||||
userin:
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
|
||||
call print
|
||||
db cr,lf,'ZMP Overlay for RomWBW HBIOS v1.0',cr,lf,0
|
||||
|
||||
; Scan and parse default FCB to initialize HBIOS unit if
|
||||
; specified.
|
||||
ld a,(fcb + 1) ; get parm from fcb
|
||||
cp ' ' ; anything there?
|
||||
jr z,userin1 ; if empty, done
|
||||
sub '0' ; ASCII to binary
|
||||
jr c,parmerr ; less than 0, parm error
|
||||
cp 10 ; >= 10?
|
||||
jr nc,parmerr ; greater than 9, parm error
|
||||
ld (hbunit),a ; save it
|
||||
|
||||
userin1:
|
||||
call showcom ; show com port info
|
||||
|
||||
; check that unit is actually available in HBIOS
|
||||
ld bc,0f800h ; get HBIOS char unit count
|
||||
rst 8 ; do it
|
||||
ld a,(hbunit) ; get active modem unit
|
||||
cp e ; compare to units available
|
||||
jr nc,porterr ; unit too high, port error
|
||||
|
||||
if pcfg
|
||||
|
||||
; Force port initialization by setting an invalid
|
||||
; baud rate (mspeed).
|
||||
; speed to an arbitrary value of 8 (9600 baud).
|
||||
ld a,-1
|
||||
ld (mspeed),a
|
||||
|
||||
else
|
||||
|
||||
; We don't support port configuration. Here we set the modem
|
||||
; speed to an arbitrary value of 8 (9600 baud).
|
||||
ld a,8
|
||||
ld (mspeed),a
|
||||
|
||||
endif
|
||||
|
||||
|
||||
ld bc,0f8f0h ; HBIOS func get CPU info
|
||||
rst 08 ; do it, l = CPU speed in MHz
|
||||
ld a,l ; to accum
|
||||
ld (cpumhz),a ; and save it for wait loop
|
||||
|
||||
ld hl,2
|
||||
call waithls
|
||||
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
|
||||
parmerr:
|
||||
; Handle a bad parameter
|
||||
call print ; print error message
|
||||
db cr,lf,'ZMP parameter error!',cr,lf,0
|
||||
rst 0 ; bail out to OS
|
||||
|
||||
porterr:
|
||||
; Handle a bad port
|
||||
call print ; print error message
|
||||
db cr,lf,'Invalid HBIOS unit for ZMP Modem port!',cr,lf,0
|
||||
rst 0 ; bail out to OS
|
||||
|
||||
showcom:
|
||||
; Display the HBIOS unit to be used for the ZMP Modem
|
||||
call print
|
||||
db cr,lf,'ZMP Modem on HBIOS Unit #',0
|
||||
ld a,(hbunit)
|
||||
add a,'0'
|
||||
call cout
|
||||
call print
|
||||
db cr,lf,0
|
||||
|
||||
; User-defined exit routine: leave empty if not needed
|
||||
userout:
|
||||
ret
|
||||
|
||||
;Get a character from the modem: return in HL
|
||||
mchin:
|
||||
push bc
|
||||
|
||||
; <== Insert your own code here
|
||||
ld a,(hbunit)
|
||||
ld c,a
|
||||
ld b,00h
|
||||
rst 08
|
||||
ld a,e
|
||||
; <== End of your own code
|
||||
|
||||
ld l,a ; put in HL
|
||||
ld h,0
|
||||
or a ; set/clear Z
|
||||
pop bc
|
||||
ret
|
||||
|
||||
;Send a character to the modem
|
||||
mchout:
|
||||
ld hl,2 ; get the character
|
||||
add hl,sp
|
||||
ld a,(hl)
|
||||
|
||||
; <== Insert your own code here
|
||||
push bc
|
||||
ld e,a
|
||||
ld a,(hbunit)
|
||||
ld c,a
|
||||
ld b,01h
|
||||
rst 08
|
||||
pop bc
|
||||
; <== End of your own code
|
||||
|
||||
ret ; done
|
||||
|
||||
;Test for output ready: return TRUE (1) in HL if ok
|
||||
mordy:
|
||||
; <== Insert your own code here
|
||||
push bc
|
||||
ld a,(hbunit)
|
||||
ld c,a
|
||||
ld b,03h
|
||||
rst 08
|
||||
ld h,0
|
||||
ld l,a
|
||||
pop bc
|
||||
; <== End of your own code
|
||||
|
||||
ld a,l ; set/clear Z
|
||||
or a
|
||||
ret
|
||||
|
||||
;Test for character at modem: return TRUE (1) in HL if so
|
||||
mirdy:
|
||||
; <== Insert your own code here
|
||||
push bc
|
||||
ld a,(hbunit)
|
||||
ld c,a
|
||||
ld b,02h
|
||||
rst 08
|
||||
ld h,0
|
||||
ld l,a
|
||||
pop bc
|
||||
; <== End of your own code
|
||||
|
||||
ld a,l ; set/clear Z
|
||||
or a
|
||||
ret
|
||||
|
||||
;Send a break to the modem: leave empty if your system can't do it
|
||||
sndbrk:
|
||||
; <== Insert your own code here
|
||||
ld hl,300 ; wait 300 mS
|
||||
call waithlms
|
||||
; <== End of your own code
|
||||
|
||||
ret
|
||||
;
|
||||
;Test UART flags for error: return TRUE (1) in HL if error.
|
||||
mdmerr:
|
||||
; <== Insert your own code here
|
||||
xor a ; not implemented
|
||||
; <== End of your own code
|
||||
|
||||
ld a,l ; set/clear Z
|
||||
or a
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;Turn DTR ON
|
||||
dtron:
|
||||
; <== Insert your own code here
|
||||
|
||||
; <== End of your own code
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;Turn DTR OFF
|
||||
dtroff:
|
||||
; <== Insert your own code here
|
||||
|
||||
|
||||
; <== End of your own code
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;Initialise the uart
|
||||
init:
|
||||
ld hl,2 ; get parameters
|
||||
add hl,sp
|
||||
ex de,hl
|
||||
call getparm ; in HL
|
||||
ld (brate),hl ; baud rate
|
||||
call getparm
|
||||
ld (parity),hl ; parity
|
||||
call getparm
|
||||
ld (data),hl ; data bits (BINARY 7 or 8)
|
||||
call getparm
|
||||
ld (stop),hl ; stop bits (BINARY 1 or 2)
|
||||
|
||||
; <== Insert your own code here
|
||||
; using values below
|
||||
; don't forget to load mspeed with the
|
||||
; current brate value if the new rate is
|
||||
; valid. See table of values below.
|
||||
|
||||
push bc
|
||||
|
||||
; If pcfg is true, attempt to initialize the active
|
||||
; HBIOS unit. If false, initialization if bypassed with
|
||||
; the assumption that the RomWBW MODE command was used
|
||||
; to initialize the port priot to running ZMP.
|
||||
|
||||
if pcfg
|
||||
|
||||
call print
|
||||
db 'Initializing device: ',0
|
||||
call diport
|
||||
|
||||
ld a,(hbunit) ; get device type
|
||||
ld c,a
|
||||
ld b,06h
|
||||
rst 08
|
||||
or a ; check if valid
|
||||
jr nz,initerr
|
||||
|
||||
ld a,(brate) ; get baud rate to set
|
||||
ld c,a
|
||||
ld b,0
|
||||
ld hl,baudtbl
|
||||
add hl,bc
|
||||
ld a,(hl) ; convert to encoded hbios
|
||||
cp a,-1
|
||||
jr z,initerr
|
||||
|
||||
push af
|
||||
ld a,(hbunit) ; get line characteristics
|
||||
ld c,a
|
||||
ld b,05h
|
||||
rst 08
|
||||
ld a,d ; mask out exisitng
|
||||
and 11100000b ; replace with rate
|
||||
ld d,a
|
||||
pop af
|
||||
or d
|
||||
ld d,a
|
||||
|
||||
ld b,04h ; set new
|
||||
ld a,(hbunit) ; speed
|
||||
ld c,a
|
||||
rst 08
|
||||
or a
|
||||
jr nz,initerr
|
||||
|
||||
ld a,(brate) ; load mspeed with the current brate value if
|
||||
ld (mspeed),a ; the new rate is valid. See table of values below.
|
||||
|
||||
call print
|
||||
db lf,lf,'Initization completed, device: ',0
|
||||
call diport
|
||||
|
||||
jr init_z
|
||||
|
||||
initerr:call print
|
||||
db lf,lf,'Initization failed, device: ',0
|
||||
call diport
|
||||
|
||||
jr init_z
|
||||
|
||||
diport: ld a,(hbunit) ; Display port
|
||||
diport1:add a,'0'
|
||||
call cout
|
||||
call print
|
||||
db cr,lf,0
|
||||
ld hl,2
|
||||
call waithls
|
||||
ret
|
||||
|
||||
else
|
||||
|
||||
;call print
|
||||
;db cr,lf,'Modem port initialization...',0
|
||||
;ld hl,2
|
||||
;call waithls
|
||||
|
||||
ld b,05h ; HBIOS port reset function
|
||||
ld a,(hbunit) ; get active modem port
|
||||
ld c,a ; and put in accum
|
||||
rst 8 ; reset port
|
||||
or a ; check result
|
||||
jr nz,init1 ; if error, handle it
|
||||
ld a,8 ; dummy value for speed
|
||||
ld (mspeed),a ; save it
|
||||
jr init_z ; done
|
||||
|
||||
init1:
|
||||
; Handle error return from initialization
|
||||
call print
|
||||
db cr,lf,'Modem port initialization failed!',cr,lf,0
|
||||
ld hl,2
|
||||
call waithls
|
||||
|
||||
jr init_z
|
||||
|
||||
endif
|
||||
|
||||
init_z:
|
||||
pop bc
|
||||
|
||||
; <== End of your own code
|
||||
|
||||
ret
|
||||
;--------------------------------------------------------------------------
|
||||
|
||||
stop: dw 1 ; stop bits
|
||||
parity: dw 'N' ; parity
|
||||
data: dw 8 ; data bits
|
||||
brate: dw 7 ; baud rate:
|
||||
|
||||
;--------------------------------------------------------------------------
|
||||
;
|
||||
;Values of brate for each baud rate
|
||||
;
|
||||
; hb encode baud rate brate
|
||||
;
|
||||
baudtbl:
|
||||
db -1 ; 110 0 not supported
|
||||
db 2 ; 300 1
|
||||
db 17 ; 450 2
|
||||
db 3 ; 600 3
|
||||
db -1 ; 710 4 not supported
|
||||
db 4 ; 1200 5
|
||||
db 5 ; 2400 6
|
||||
db 6 ; 4800 7
|
||||
db 7 ; 9600 8
|
||||
db 8 ; 19200 9
|
||||
db 9 ; 38400 10
|
||||
db 24 ; 57600 11
|
||||
db 10 ; 76800 12
|
||||
;
|
||||
; Set the port. ZMP supplies either 0 or 1 as a parameter. You're on your
|
||||
; own here -- your system is bound to be different from any other! You may
|
||||
; implement a software switch on all the modem-dependent routines, or perhaps
|
||||
; you can have one or two centralised routines for accessing the UARTs and
|
||||
; modify the code from this routine to select one or the other. (Who said
|
||||
; there was anything wrong with self-modifying code?). If you have only one
|
||||
; UART port, or if you don't want to go through all the hassles, just have
|
||||
; this routine returning with no changes made. Note that ZMP calls this
|
||||
; routine with both values for the port on initialisation.
|
||||
;
|
||||
; Only originl ZMP calls setport. MECPARTS variant does not.
|
||||
;
|
||||
; We ignore this call. Since we are using a command line parameter
|
||||
; to specify the desired modem port, it makes no sense.
|
||||
;
|
||||
setport:
|
||||
ld hl,2 ; get port number
|
||||
add hl,sp
|
||||
ex de,hl
|
||||
call getparm ; in HL (values are 0 and 1)
|
||||
|
||||
; <== Insert your own code here
|
||||
|
||||
; <== End of your own code
|
||||
|
||||
ret
|
||||
|
||||
|
||||
;
|
||||
;****************************************************************************
|
||||
;Video terminal sequences: these are for VT-100: Modify as you wish
|
||||
;Cursor addressing:
|
||||
cursadd:
|
||||
ld hl,2 ; get parameters
|
||||
add hl,sp
|
||||
ex de,hl
|
||||
call getparm ; in HL
|
||||
inc hl
|
||||
ld (row),hl ; row
|
||||
call getparm
|
||||
inc hl
|
||||
ld (col),hl ; column
|
||||
;
|
||||
push bc
|
||||
|
||||
call print
|
||||
db esc,'[',0
|
||||
ld a,(row) ; row first
|
||||
call cursconv
|
||||
ld a,';'
|
||||
call cout
|
||||
ld a,(col) ; same for column
|
||||
call cursconv
|
||||
ld a,'H'
|
||||
call cout
|
||||
|
||||
pop bc
|
||||
|
||||
ret
|
||||
;
|
||||
cursconv:
|
||||
ld b,a
|
||||
xor a
|
||||
ca1: add a,1
|
||||
daa
|
||||
djnz ca1
|
||||
ld (num),a
|
||||
and 0f0h
|
||||
jr z,ca2
|
||||
srl a
|
||||
srl a
|
||||
srl a
|
||||
srl a
|
||||
or '0'
|
||||
call cout
|
||||
ca2: ld a,(num)
|
||||
and 0fh
|
||||
or '0'
|
||||
call cout
|
||||
ret
|
||||
;
|
||||
row: ds 2 ; row
|
||||
col: ds 2 ; column
|
||||
num: ds 1
|
||||
;
|
||||
;Clear screen:
|
||||
cls:
|
||||
call print
|
||||
db esc,"[H",esc,"[2J",0
|
||||
ret
|
||||
;
|
||||
;Inverse video on:
|
||||
invon:
|
||||
call print
|
||||
db esc,"[7m",0
|
||||
ret
|
||||
;
|
||||
;Inverse video off:
|
||||
invoff:
|
||||
call print
|
||||
db esc,"[m",0
|
||||
ret
|
||||
;
|
||||
;Turn off cursor:
|
||||
hide:
|
||||
call print
|
||||
db esc,'[?25l',0
|
||||
ret
|
||||
;
|
||||
;Turn on cursor:
|
||||
show:
|
||||
call print
|
||||
db esc,'[?25h',0
|
||||
ret
|
||||
;
|
||||
;Save cursor position:
|
||||
savecu:
|
||||
call print
|
||||
db esc,'[7',0
|
||||
ret
|
||||
;
|
||||
;Restore cursor position:
|
||||
rescu:
|
||||
call print
|
||||
db esc,'[8',0
|
||||
ret
|
||||
|
||||
;****************************************************************************
|
||||
|
||||
;Service modem interrupt:
|
||||
mint:
|
||||
ret ; handled in HBIOS
|
||||
|
||||
;Initialise interrupt vectors:
|
||||
invec:
|
||||
ret ; ditto
|
||||
|
||||
;De-initialise interrupt vectors:
|
||||
dinvec:
|
||||
ret ; ditto
|
||||
|
||||
;****************** End of user-defined code ********************************
|
||||
; Do not change anything below here.
|
||||
|
||||
;Modem character test for 100 ms
|
||||
mrd:
|
||||
push bc ; save bc
|
||||
ld bc,100 ; set limit
|
||||
mrd1:
|
||||
call mirdy ; char at modem?
|
||||
jr nz,mrd2 ; yes, exit
|
||||
ld hl,1 ; else wait 1ms
|
||||
call waithlms
|
||||
dec bc ; loop till done
|
||||
ld a,b
|
||||
or c
|
||||
jr nz,mrd1
|
||||
ld hl,0 ; none there, result=0
|
||||
xor a
|
||||
mrd2:
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; Inline print routine: destroys A and HL
|
||||
|
||||
print:
|
||||
ex (sp),hl ; get address of string
|
||||
ploop:
|
||||
ld a,(hl) ; get next
|
||||
inc hl ; bump pointer
|
||||
or a ; done if zero
|
||||
jr z,pdone
|
||||
call cout ; else print
|
||||
jr ploop ; and loop
|
||||
pdone:
|
||||
ex (sp),hl ; restore return address
|
||||
ret ; and quit
|
||||
|
||||
;
|
||||
;Output a character in A to the console
|
||||
;
|
||||
cout:
|
||||
push bc ; save regs
|
||||
push de
|
||||
push hl
|
||||
ld e,a ; character to E
|
||||
ld c,2
|
||||
call bdos ; print it
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
|
||||
|
||||
;Wait seconds
|
||||
wait:
|
||||
ld hl,2
|
||||
add hl,sp
|
||||
ex de,hl ; get delay size
|
||||
call getparm
|
||||
; fall thru to..
|
||||
;Wait seconds in HL
|
||||
waithls:
|
||||
push hl ; save loop control
|
||||
ld hl,1000 ; 1000ms = 1 second
|
||||
call waithlms
|
||||
pop hl ; restore loop control
|
||||
dec hl
|
||||
ld a,h
|
||||
or l
|
||||
jr nz,waithls
|
||||
ret
|
||||
|
||||
|
||||
|
||||
;Wait milliseconds
|
||||
mswait:
|
||||
ld hl,2
|
||||
add hl,sp
|
||||
ex de,hl ; get delay size
|
||||
call getparm
|
||||
; fall thru to..
|
||||
;Wait milliseconds in HL
|
||||
waithlms:
|
||||
; burn 1000us (1ms)
|
||||
ld a,(cpumhz)
|
||||
ld e,a
|
||||
hlms1:
|
||||
; burn 1000 t-states
|
||||
; 50 * 20 = 1000 t-states
|
||||
ld d,50
|
||||
hlms2:
|
||||
nop ; 4
|
||||
dec d ; 4
|
||||
jr nz,hlms2 ; 12 20
|
||||
|
||||
dec e
|
||||
jr nz,hlms1
|
||||
|
||||
dec hl
|
||||
ld a,h
|
||||
or l
|
||||
jr nz,waithlms
|
||||
|
||||
ret
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
;Get next parameter from (de) into hl
|
||||
getparm:
|
||||
ex de,hl ; get address into hl
|
||||
ld e,(hl) ; get lo
|
||||
inc hl
|
||||
ld d,(hl) ; then hi
|
||||
inc hl ; bump for next
|
||||
ex de,hl ; result in hl, address still in de
|
||||
ret
|
||||
|
||||
;Get address of user-defined variables
|
||||
|
||||
getvars:
|
||||
ld hl,uservars
|
||||
ret
|
||||
|
||||
uservars:
|
||||
dw overdrive ; .OVR etc. drive/user
|
||||
dw overuser
|
||||
|
||||
|
||||
if ($ - codebgn) gt ovsize
|
||||
toobig: jp errval ; Overlay too large!
|
||||
endif
|
||||
|
||||
end
|
||||
|
||||
@@ -26,11 +26,11 @@
|
||||
; has been written in Z80 code for use with M80 or SLR. Assemble as follows:
|
||||
;
|
||||
; SLR ZMO-xx01/h
|
||||
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
|
||||
; MLOAD ZMP.COM=ZMPX.COM,ZMO-xx01.HEX
|
||||
; or
|
||||
; M80 =ZMO-xx01.Z80
|
||||
; RELHEX ZMO-xx01
|
||||
; MLOAD ZMP.COM=ZMODEM.COM,ZMO-xx01.HEX
|
||||
; MLOAD ZMP.COM=ZMPX.COM,ZMO-xx01.HEX
|
||||
;
|
||||
;
|
||||
; (Don't use L80 without changing the source for assembly as a
|
||||
@@ -570,4 +570,3 @@ toobig: jp errval ; Overlay too large!
|
||||
endif
|
||||
|
||||
end
|
||||
|
||||
@@ -12,6 +12,10 @@ awhile (some, a few decades):
|
||||
* In keyboard macros, ! translates to a CR now, not CR/LF.
|
||||
* \ escapes ! and ~ so those literal characters can be used in
|
||||
keyboard macros.
|
||||
* Waits in keyboard macros now allow characters from the modem to
|
||||
be handled.
|
||||
* Keys in keyboard macros now have 25ms waits between them as to
|
||||
not overrun the remove system.
|
||||
* Long distance access code has been removed.
|
||||
* Quick dialing letters limited to A-T.
|
||||
|
||||
@@ -23,5 +27,5 @@ version in ZMP15.LBR. So, to quote the original author,
|
||||
new one with the config option. There have again been changes to
|
||||
the format of this file."
|
||||
|
||||
June 7, 2021
|
||||
|
||||
August 15, 2023
|
||||
|
||||
|
||||
10
Source/Apps/slabel/Build.cmd
Normal file
@@ -0,0 +1,10 @@
|
||||
@echo off
|
||||
setlocal
|
||||
|
||||
set TOOLS=../../../Tools
|
||||
set PATH=%TOOLS%\tasm32;%PATH%
|
||||
set TASMTABS=%TOOLS%\tasm32
|
||||
|
||||
tasm -t80 -g3 -fFF slabel.asm slabel.com slabel.lst || exit /b
|
||||
|
||||
copy /Y slabel.com ..\..\..\Binary\Apps\ || exit /b
|
||||
6
Source/Apps/slabel/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/slabel/Makefile
Normal file
@@ -0,0 +1,7 @@
|
||||
OBJECTS = slabel.com
|
||||
DEST = ../../../Binary/Apps
|
||||
TOOLS =../../../Tools
|
||||
|
||||
USETASM=1
|
||||
|
||||
include $(TOOLS)/Makefile.inc
|
||||
763
Source/Apps/slabel/slabel.asm
Normal file
@@ -0,0 +1,763 @@
|
||||
;==============================================================================
|
||||
; SLICE LABEL - Update Disk Labels
|
||||
; Version December-2024
|
||||
;==============================================================================
|
||||
;
|
||||
; Author: Mark Pruden
|
||||
;______________________________________________________________________________
|
||||
;
|
||||
; Usage:
|
||||
; SLABEL [unit.slice,label] [/?]
|
||||
; ex: SLABEL Display current list of Labels
|
||||
; SLABEL unit.slice=label Assign a disk Label to the Slice on Unit
|
||||
; SLABEL /? Display version and usage
|
||||
;
|
||||
; Operation:
|
||||
; Print and Assign a Disk Label to a Hard Disk Slice.
|
||||
;
|
||||
; Technical:
|
||||
; On the third sector of "bootable" Disk Slice there is metadata used by RomWBW to know how
|
||||
; to boot the OS found on the slice. This includes a Label for the volume, which is printed
|
||||
; out by RomWBW during the boot process.
|
||||
; Note this label is not associated to any label the OS may assign to the volume.
|
||||
; See loader.asm in each of the O/S directories e.g. /src/CPM22 which describe these sectors
|
||||
;
|
||||
; This ony works on slices which have existing media information in the third sector.
|
||||
; There is no capabiity to write this information on demand.
|
||||
;
|
||||
; known Issues:
|
||||
; - Listing the slabel for all slices can be time consuming, because of the use of the EXT_MEDIA
|
||||
; function call. This function reads the partition table (on each call) to assert (if valid)
|
||||
; the LBA location of the requested slice. Ideally we would only need to read the partition
|
||||
; table once (per device), and work out all the LBA's from this single read.
|
||||
; Note this doesnt omit the fact that the 3 rd sector of each slice wold need to be read regarless.
|
||||
; To slightly reduce some IO only slices < 64 are considered.
|
||||
;
|
||||
; This code will only execute on a Z80 CPU (or derivitive)
|
||||
; This code requirs the use of HBIOS
|
||||
;
|
||||
;______________________________________________________________________________
|
||||
;
|
||||
; Change Log:
|
||||
; 2024-12-11 [MAP] Started - Reboot v1.0 used as the basis for this code
|
||||
; 2024-12-14 [MAP] Initial 0.9 alpha with basic working functionality
|
||||
; 2025-04-21 [MAP] Initial v1.0 release for distribution, fixing all issues
|
||||
;______________________________________________________________________________
|
||||
;
|
||||
; Include Files
|
||||
;
|
||||
#include "../../ver.inc" ; to ensure it is the correct ver
|
||||
#include "../../HBIOS/hbios.inc"
|
||||
;
|
||||
;===============================================================================
|
||||
;
|
||||
; General operational equates (should not requre adjustment)
|
||||
;
|
||||
stksiz .equ $40 ; Working stack size
|
||||
;
|
||||
restart .equ $0000 ; CP/M restart vector
|
||||
bdos .equ $0005 ; BDOS invocation vector
|
||||
cmdbuf .equ $0081 ; CPM command buffer
|
||||
;
|
||||
bf_sysreset .equ $F0 ; restart system
|
||||
bf_sysres_int .equ $00 ; reset hbios internal
|
||||
bf_sysres_warm .equ $01 ; warm start (restart boot loader)
|
||||
;
|
||||
ident .equ $FFFE ; loc of RomWBW HBIOS ident ptr
|
||||
;
|
||||
sigbyte1 .equ $A5 ; 1st sig byte boot info sector (bb_sig)
|
||||
sigbyte2 .equ $5A ; 2nd sig byte boot info sector (bb_sig)
|
||||
;
|
||||
labelterm .equ '$' ; terminating charater for disk label
|
||||
;
|
||||
;===============================================================================
|
||||
;
|
||||
.org $0100 ; standard CP/M TPA executable
|
||||
;
|
||||
ld (stksav),sp ; save stack
|
||||
ld sp,stack ; set new stack
|
||||
;
|
||||
ld de,str_banner
|
||||
call prtstr ; print the banner
|
||||
;
|
||||
call init ; initialize
|
||||
jr nz,exit ; abort if init fails
|
||||
;
|
||||
call main ; do the real work
|
||||
;
|
||||
exit:
|
||||
call crlf ; print terminating crlf
|
||||
ld sp,(stksav) ; restore stack to prior state
|
||||
jp restart ; return to CP/M via restart
|
||||
;
|
||||
;===============================================================================
|
||||
; Initialization
|
||||
;
|
||||
init:
|
||||
; check for UNA (UBIOS)
|
||||
ld a,($FFFD) ; fixed location of UNA API vector
|
||||
cp $C3 ; jp instruction?
|
||||
jr nz,initwbw ; 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,initwbw ; 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,initwbw ; if not, not UNA
|
||||
jp err_una ; UNA not supported
|
||||
;
|
||||
initwbw:
|
||||
; get location of config data and verify integrity
|
||||
ld hl,(ident) ; HL := adr or RomWBW HBIOS ident
|
||||
ld a,(hl) ; get first byte of RomWBW marker
|
||||
cp 'W' ; match?
|
||||
jp nz,err_inv ; abort with invalid config block
|
||||
inc hl ; next byte (marker byte 2)
|
||||
ld a,(hl) ; load it
|
||||
cp ~'W' ; match?
|
||||
jp nz,err_inv ; abort with invalid config block
|
||||
inc hl ; next byte (major/minor version)
|
||||
ld a,(hl) ; load it
|
||||
cp rmj << 4 | rmn ; match?
|
||||
jp nz,err_ver ; abort with invalid os version
|
||||
;
|
||||
initz:
|
||||
; initialization complete
|
||||
xor a ; signal success
|
||||
ret ; return
|
||||
;
|
||||
;===============================================================================
|
||||
; Main Execution
|
||||
;
|
||||
main:
|
||||
call initdiskio ; initi DiskIO routines (bank ID)
|
||||
;
|
||||
ld de,cmdbuf ; start of command input buffer
|
||||
call skipws ; skip whitespace on cmd line
|
||||
;
|
||||
ld a,(de) ; get first non-ws char
|
||||
or a ; test for terminator, no parms
|
||||
jr z,prtslc ; if so, print details, and return
|
||||
;
|
||||
call isnum ; do we have a number?
|
||||
jp z,setlabel ; if so, then we are setting Label.
|
||||
;
|
||||
jp usage ; otherwise print usage and return
|
||||
ret ; and exit
|
||||
;
|
||||
;===============================================================================
|
||||
; Print Usage /? Information
|
||||
;
|
||||
usage:
|
||||
ld de,str_usage ; display the cmd options for this utility
|
||||
call prtstr
|
||||
;
|
||||
ret ; exit back out to CP/M CCP
|
||||
;
|
||||
;===============================================================================
|
||||
; Print list of all slices
|
||||
;
|
||||
prtslc:
|
||||
ld de,PRTSLC_HDR ; Header for list of Slices
|
||||
call prtstr ; Print It
|
||||
;
|
||||
ld bc,BC_SYSGET_DIOCNT ; FUNC: SYSTEM INFO GET DISK DRIVES
|
||||
rst 08 ; E := UNIT COUNT
|
||||
;
|
||||
ld b,e ; MOVE Disk CNT TO B FOR LOOP COUNT
|
||||
ld c,0 ; C WILL BE UNIT INDEX
|
||||
prtslc1:
|
||||
ld a,b ; loop counter
|
||||
or a ; set flags
|
||||
ret z ; IF no more drives, finished
|
||||
;
|
||||
ld a,c ; unit index
|
||||
ld (currunit),a ; store the unit number
|
||||
;
|
||||
push bc ; save loop vars
|
||||
call prtslc2 ; for each disk Unit, print its details
|
||||
pop bc ; restore loop variables
|
||||
;
|
||||
inc c ; bump the unit number
|
||||
djnz prtslc1 ; main disk loop
|
||||
;
|
||||
ret ; loop has finished
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print list of All Slices for a given Unit
|
||||
;
|
||||
prtslc2:
|
||||
; get the media infor
|
||||
ld b,BF_DIOMEDIA ; get media information
|
||||
ld e,1 ; with media discovery
|
||||
rst 08 ; do media discovery
|
||||
ret nz ; an error
|
||||
;
|
||||
ld a,MID_HD ; hard disk
|
||||
cp e ; is it hard disk
|
||||
ret nz ; if not noting to do
|
||||
;
|
||||
; setup the loop
|
||||
ld b,64 ; arbitrary (?) number of slices to check.
|
||||
; NOTE: could be higher, but each slice check has disk IO
|
||||
ld c,0 ; starting at slice 0
|
||||
;
|
||||
prtslc2a:
|
||||
ld a,c ; slice number
|
||||
ld (currslice),a ; save slice number
|
||||
;
|
||||
push bc ; save loop
|
||||
call prtslc3 ; print detals of the slice
|
||||
pop bc ; restore loop
|
||||
ret nz ; if error dont continie
|
||||
;
|
||||
inc c ; next slice number
|
||||
djnz prtslc2a ; loop if more slices
|
||||
;
|
||||
ret ; return from Slice Loop
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print details of a Slice for a given Unit/Slice
|
||||
;
|
||||
prtslc3:
|
||||
; get the details of the device / slice
|
||||
ld a,(currunit)
|
||||
ld d,a ; unit
|
||||
ld a,(currslice)
|
||||
ld e,a ; slice
|
||||
ld b,BF_EXTSLICE ; EXT function to check compute slice offset
|
||||
rst 08 ; noting this call checks partition table.
|
||||
ret NZ ; an error, for lots of reasons, e.g. Slice not valid
|
||||
;
|
||||
call thirdsector ; point to the third sector of partition
|
||||
;
|
||||
call diskread ; do the sector read
|
||||
ret nz ; read error. exit the slice loop
|
||||
;
|
||||
; Check signature
|
||||
ld bc,(bb_sig) ; get signature read
|
||||
ld a,sigbyte1 ; expected value of first byte
|
||||
cp b ; compare
|
||||
jr nz,prtslc5 ; ignore missing signature and loop
|
||||
ld a,sigbyte2 ; expected value of second byte
|
||||
cp c ; compare
|
||||
jr nz,prtslc5 ; ignore missing signature and loop
|
||||
;
|
||||
; Print volume label string at HL, '$' terminated, 16 chars max
|
||||
ld a,(currunit)
|
||||
call prtdecb ; print unit number as decimal
|
||||
call pdot ; print a DOT
|
||||
ld a,(currslice)
|
||||
call prtdecb
|
||||
ld a,' '
|
||||
call cout ; print a space
|
||||
call cout ; print a space
|
||||
ld hl,bb_label ; point to label
|
||||
call pvol ; print it
|
||||
call crlf
|
||||
;
|
||||
prtslc5:
|
||||
xor a
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print volume label string at HL, '$' terminated, 16 chars max
|
||||
;
|
||||
pvol:
|
||||
ld b,16 ; init max char downcounter
|
||||
pvol1:
|
||||
ld a,(hl) ; get next character
|
||||
cp labelterm ; set flags based on terminator $
|
||||
inc hl ; bump pointer regardless
|
||||
ret z ; done if null
|
||||
call cout ; display character
|
||||
djnz pvol1 ; loop till done
|
||||
ret ; hit max of 16 chars
|
||||
;
|
||||
;===============================================================================
|
||||
; Set Label Information onto disk
|
||||
;
|
||||
setlabel:
|
||||
call getnum ; parse a number
|
||||
jp c,err_parm ; handle overflow error
|
||||
ld (currunit),a ; save boot unit
|
||||
xor a ; zero accum
|
||||
ld (currslice),a ; save default slice
|
||||
call skipws ; skip possible whitespace
|
||||
ld a,(de) ; get separator char
|
||||
or a ; test for terminator
|
||||
jp z,err_parm ; if so, incomplete
|
||||
cp '=' ; otherwise, is ','?
|
||||
jr z,setlabel4 ; if so, skip the Slice parm
|
||||
cp '.' ; otherwise, is '.'?
|
||||
jp NZ,err_parm ; if not, format error
|
||||
;
|
||||
inc de ; bump past separator
|
||||
call skipws ; skip possible whitespace
|
||||
call isnum ; do we have a number?
|
||||
jp nz,err_parm ; if not, format error
|
||||
call getnum ; get number
|
||||
jp c,err_parm ; handle overflow error
|
||||
ld (currslice),a ; save boot slice
|
||||
setlabel3:
|
||||
call skipws ; skip possible whitespace
|
||||
ld a,(de) ; get separator char
|
||||
or a ; test for terminator
|
||||
jp z,err_parm ; if so, then an error
|
||||
cp '=' ; otherwise, is ','?
|
||||
jp nz,err_parm ; if not, format error
|
||||
setlabel4:
|
||||
inc de ; bump past separator
|
||||
call skipws ; skip possible whitespace
|
||||
ld (newlabel),de ; address of disk label after '='
|
||||
;
|
||||
ld a,(currunit) ; passing boot unit
|
||||
ld d,a
|
||||
ld a,(currslice) ; and slice
|
||||
ld e,a
|
||||
ld b,BF_EXTSLICE ; HBIOS func: SLICE CALC - extended
|
||||
rst 08 ; info for the Device, and Slice
|
||||
;
|
||||
; Check errors from the Function
|
||||
cp ERR_NOUNIT ; compare to no unit error
|
||||
jp z,err_nodisk ; handle no disk err
|
||||
cp ERR_NOMEDIA ; no media in the device
|
||||
jp z,err_nomedia ; handle the error
|
||||
cp ERR_RANGE ; slice is invalid
|
||||
jp z,err_badslice ; bad slice, handle err
|
||||
or a ; any other error
|
||||
jp nz,err_diskio ; handle as general IO error
|
||||
;
|
||||
call thirdsector ; point to the third sector of partition
|
||||
;
|
||||
call diskread ; read the sector
|
||||
jp nz,err_diskio ; abort on error
|
||||
;
|
||||
; Check signature
|
||||
ld de,(bb_sig) ; get signature read
|
||||
ld a,sigbyte1 ; expected value of first byte
|
||||
cp d ; compare
|
||||
jp nz,err_sig ; handle error
|
||||
ld a,sigbyte2 ; expected value of second byte
|
||||
cp e ; compare
|
||||
jp nz,err_sig ; handle error
|
||||
;
|
||||
ld b,16 ; loop down counter (max size of label)
|
||||
ld de,(newlabel) ; reading from cmd line
|
||||
ld hl,bb_label ; writing to disk label in sector buffer
|
||||
updatelabel:
|
||||
ld a,(de) ; read input
|
||||
or a ; look for string terminator
|
||||
jr z,updatelabel2 ; if terminator then complete
|
||||
ld (hl),a ; store char in sector buff
|
||||
inc de ; update pointers
|
||||
inc hl
|
||||
djnz updatelabel ; loop for next character
|
||||
updatelabel2:
|
||||
ld a,labelterm
|
||||
ld (hl),a ; store the final terminator $ char
|
||||
writelabel:
|
||||
; write the sector
|
||||
ld hl,(lba) ; lba, low word, same as read sector
|
||||
ld de,(lba+2) ; lba, high word
|
||||
call diskwrite ; write the sector back to disk
|
||||
jp nz,err_diskio ; abort on error
|
||||
;
|
||||
; print the outcome.
|
||||
ld de,PRTSLC_HDR ; Header for list of Slices
|
||||
call prtstr ; Print header
|
||||
call prtslc3 ; print updated label for unit/slice
|
||||
;
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; advance the DE HL LBA sector by 2, ie third sector
|
||||
;
|
||||
thirdsector:
|
||||
ld bc,2 ; sector offset
|
||||
add hl,bc ; add to LBA value low word
|
||||
jr nc,sectornum ; check for carry
|
||||
inc de ; if so, bump high word
|
||||
sectornum:
|
||||
ld (lba),hl ; update lba, low word
|
||||
ld (lba+2),de ; update lba, high word
|
||||
ret
|
||||
;
|
||||
;===============================================================================
|
||||
; Error Handlers
|
||||
;
|
||||
err_una:
|
||||
ld de,str_err_una
|
||||
jr err_ret
|
||||
err_inv:
|
||||
ld de,str_err_inv
|
||||
jr err_ret
|
||||
err_ver:
|
||||
ld de,str_err_ver
|
||||
jr err_ret
|
||||
err_parm:
|
||||
ld de,str_err_parm
|
||||
jr err_ret
|
||||
err_nodisk:
|
||||
ld de,str_err_nodisk
|
||||
jr err_ret
|
||||
err_nomedia:
|
||||
ld de,str_err_nomedia
|
||||
jr err_ret
|
||||
err_badslice:
|
||||
ld de,str_err_badslc
|
||||
jr err_ret
|
||||
err_sig:
|
||||
ld de,str_err_sig
|
||||
jr err_ret
|
||||
err_diskio:
|
||||
ld de,str_err_diskio
|
||||
jr err_ret
|
||||
err_ret:
|
||||
call crlf2
|
||||
call prtstr
|
||||
or $FF ; signal error
|
||||
ret
|
||||
;
|
||||
;===============================================================================
|
||||
; Utility Routines
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print a dot on console
|
||||
;
|
||||
pdot:
|
||||
push af
|
||||
ld a,'.'
|
||||
call cout
|
||||
pop af
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print character in A without destroying any registers
|
||||
;
|
||||
prtchr:
|
||||
cout:
|
||||
push af ; save registers
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
ld e,a ; character to print in E
|
||||
ld c,$02 ; BDOS function to output a character
|
||||
call bdos ; do it
|
||||
pop hl ; restore registers
|
||||
pop de
|
||||
pop bc
|
||||
pop af
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Start a newline on console (cr/lf)
|
||||
;
|
||||
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
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print a zero terminated string at (de) without destroying any registers
|
||||
;
|
||||
prtstr:
|
||||
push af
|
||||
push de
|
||||
;
|
||||
prtstr1:
|
||||
ld a,(de) ; get next char
|
||||
or a
|
||||
jr z,prtstr2
|
||||
call prtchr
|
||||
inc de
|
||||
jr prtstr1
|
||||
;
|
||||
prtstr2:
|
||||
pop de ; restore registers
|
||||
pop af
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print value of a in decimal with leading zero suppression
|
||||
;
|
||||
prtdecb:
|
||||
push hl
|
||||
push af
|
||||
ld l,a
|
||||
ld h,0
|
||||
call prtdec
|
||||
pop af
|
||||
pop hl
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Print value of HL in decimal with leading zero suppression
|
||||
;
|
||||
prtdec:
|
||||
push bc
|
||||
push de
|
||||
push hl
|
||||
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
|
||||
call prtdec1
|
||||
pop hl
|
||||
pop de
|
||||
pop bc
|
||||
ret
|
||||
prtdec1:
|
||||
ld a,'0' - 1
|
||||
prtdec2:
|
||||
inc a
|
||||
add hl,bc
|
||||
jr c,prtdec2
|
||||
sbc hl,bc
|
||||
cp e
|
||||
jr z,prtdec3
|
||||
ld e,0
|
||||
call cout
|
||||
prtdec3:
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; INPUT ROUTINES
|
||||
;-------------------------------------------------------------------------------
|
||||
; Skip whitespace at buffer adr in DE, returns with first
|
||||
; non-whitespace character in A.
|
||||
;
|
||||
skipws:
|
||||
ld a,(de) ; get next char
|
||||
or a ; check for eol
|
||||
ret z ; done if so
|
||||
cp ' ' ; blank?
|
||||
ret nz ; nope, done
|
||||
inc de ; bump buffer pointer
|
||||
jr skipws ; and loop
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Convert character in A to uppercase
|
||||
;
|
||||
upcase:
|
||||
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
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Get numeric chars at DE and convert to number returned in A
|
||||
; Carry flag set on overflow
|
||||
;
|
||||
getnum:
|
||||
ld c,0 ; C is working register
|
||||
getnum1:
|
||||
ld a,(de) ; get the active char
|
||||
cp '0' ; compare to ascii '0'
|
||||
jr c,getnum2 ; abort if below
|
||||
cp '9' + 1 ; compare to ascii '9'
|
||||
jr nc,getnum2 ; abort if above
|
||||
;
|
||||
; valid digit, add new digit to C
|
||||
ld a,c ; get working value to A
|
||||
rlca ; multiply by 10
|
||||
ret c ; overflow, return with carry set
|
||||
rlca ; ...
|
||||
ret c ; overflow, return with carry set
|
||||
add a,c ; ...
|
||||
ret c ; overflow, return with carry set
|
||||
rlca ; ...
|
||||
ret c ; overflow, return with carry set
|
||||
ld c,a ; back to C
|
||||
ld a,(de) ; get new digit
|
||||
sub '0' ; make binary
|
||||
add a,c ; add in working value
|
||||
ret c ; overflow, return with carry set
|
||||
ld c,a ; back to C
|
||||
;
|
||||
inc de ; bump to next char
|
||||
jr getnum1 ; loop
|
||||
;
|
||||
getnum2: ; return result
|
||||
ld a,c ; return result in A
|
||||
or a ; with flags set, CF is cleared
|
||||
ret
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Is character in A numeric? NZ if not
|
||||
;
|
||||
isnum:
|
||||
cp '0' ; compare to ascii '0'
|
||||
jr c,isnum1 ; abort if below
|
||||
cp '9' + 1 ; compare to ascii '9'
|
||||
jr nc,isnum1 ; abort if above
|
||||
cp a ; set Z
|
||||
ret
|
||||
isnum1:
|
||||
or $FF ; set NZ
|
||||
ret ; and done
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; DISK IO ROUTINES
|
||||
;-------------------------------------------------------------------------------
|
||||
; Init Disk IO
|
||||
;
|
||||
initdiskio:
|
||||
; Get current RAM bank
|
||||
ld b,BF_SYSGETBNK ; HBIOS GetBank function
|
||||
RST 08 ; do it via RST vector, C=bank id
|
||||
RET NZ ; had to replace this line below.
|
||||
ld a,c ; put bank id in A
|
||||
ld (BID_USR),a ; put bank id in Argument
|
||||
RET
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; Read disk sector(s)
|
||||
; DE:HL is LBA, B is sector count, C is disk unit
|
||||
;
|
||||
diskread:
|
||||
;
|
||||
; Seek to requested sector in DE:HL
|
||||
ld a,(currunit)
|
||||
ld c,a ; from the specified unit
|
||||
set 7,d ; set LBA access flag
|
||||
ld b,BF_DIOSEEK ; HBIOS func: seek
|
||||
rst 08 ; do it
|
||||
ret nz ; handle error
|
||||
;
|
||||
; Read sector(s) into buffer
|
||||
ld a,(currunit)
|
||||
ld c,a ; from the specified unit
|
||||
ld e,1 ; read 1 sector
|
||||
ld hl,(dma) ; read into info sec buffer
|
||||
ld a,(BID_USR) ; get user bank to accum
|
||||
ld d,a ; and move to D
|
||||
ld b,BF_DIOREAD ; HBIOS func: disk read
|
||||
rst 08 ; do it
|
||||
ret ; and done
|
||||
;
|
||||
;-------------------------------------------------------------------------------
|
||||
; WRITE disk sector(s)
|
||||
; DE:HL is LBA, B is sector count, C is disk unit
|
||||
;
|
||||
diskwrite:
|
||||
;
|
||||
ld a,(currunit) ; disk unit to read
|
||||
ld c,a ; put in C
|
||||
ld b,1 ; one sector
|
||||
;
|
||||
; Seek to requested sector in DE:HL
|
||||
push bc ; save unit & count
|
||||
set 7,d ; set LBA access flag
|
||||
ld b,BF_DIOSEEK ; HBIOS func: seek
|
||||
rst 08 ; do it
|
||||
pop bc ; recover unit & count
|
||||
ret nz ; handle error
|
||||
;
|
||||
; Read sector(s) into buffer
|
||||
ld e,b ; transfer count
|
||||
ld b,BF_DIOWRITE ; HBIOS func: disk read
|
||||
ld hl,(dma) ; read into info sec buffer
|
||||
ld a,(BID_USR) ; get user bank to accum
|
||||
ld d,a ; and move to D
|
||||
rst 08 ; do it
|
||||
ret ; and done
|
||||
;
|
||||
;===============================================================================
|
||||
; Constants
|
||||
;===============================================================================
|
||||
;
|
||||
str_banner .db "\r\n"
|
||||
.db "Slice Label, v1.0, April 2025 - M.Pruden",0
|
||||
;
|
||||
str_err_una .db " ERROR: UNA not supported by application",0
|
||||
str_err_inv .db " ERROR: Invalid BIOS (signature missing)",0
|
||||
str_err_ver .db " ERROR: Unexpected HBIOS version",0
|
||||
str_err_parm .db " ERROR: Parameter error (SLABEL /? for usage)",0
|
||||
str_err_nodisk .db " ERROR: Disk unit not available",0
|
||||
str_err_nomedia .db " ERROR: Media not present",0
|
||||
str_err_badslc .db " ERROR: Slice specified is illegal",0
|
||||
str_err_sig .db " ERROR: No system image on disk",0
|
||||
str_err_diskio .db " ERROR: Disk I/O failure",0
|
||||
;
|
||||
str_usage .db "\r\n\r\n"
|
||||
.db " Usage: SLABEL - list current labels\r\n"
|
||||
.db " SLABEL unit[.slice]=label - Defines a label\r\n"
|
||||
.db " SLABEL /? - Display this help info.\r\n"
|
||||
.db " Options are case insensitive.\r\n",0
|
||||
;
|
||||
PRTSLC_HDR .TEXT "\r\n\r\n"
|
||||
.TEXT "Un.Sl Drive \r\n"
|
||||
.TEXT "----- ----------------\r\n"
|
||||
.DB 0
|
||||
;
|
||||
;===============================================================================
|
||||
; Working data
|
||||
;===============================================================================
|
||||
;
|
||||
currunit .db 0 ; parameters for disk unit, current unit
|
||||
currslice .db 0 ; parameters for disk slice, current slice
|
||||
lba .dw 0, 0 ; lba address (4 bytes), of slice
|
||||
newlabel .dw 0 ; address of parameter, new label to write
|
||||
;
|
||||
BID_USR .db 0 ; Bank ID for user bank
|
||||
dma .dw bl_infosec ; address for disk buffer
|
||||
;
|
||||
stksav .dw 0 ; stack pointer saved at start
|
||||
.fill stksiz,0 ; stack
|
||||
stack .equ $ ; stack top
|
||||
;
|
||||
;===============================================================================
|
||||
; Disk Buffer
|
||||
;===============================================================================
|
||||
;
|
||||
; define origin of disk buffer above 8000 for performance.
|
||||
.org $8000
|
||||
;
|
||||
; Below is copied from ROM LDR
|
||||
; Boot info sector is read into area below.
|
||||
; The third sector of a disk device is reserved for boot info.
|
||||
;
|
||||
bl_infosec .equ $
|
||||
.ds (512 - 128)
|
||||
bb_metabuf .equ $
|
||||
bb_sig .ds 2 ; signature (0xA55A if set)
|
||||
bb_platform .ds 1 ; formatting platform
|
||||
bb_device .ds 1 ; formatting device
|
||||
bb_formatter .ds 8 ; formatting program
|
||||
bb_drive .ds 1 ; physical disk drive #
|
||||
bb_lu .ds 1 ; logical unit (lu)
|
||||
.ds 1 ; msb of lu, now deprecated
|
||||
.ds (bb_metabuf + 128) - $ - 32
|
||||
bb_protect .ds 1 ; write protect boolean
|
||||
bb_updates .ds 2 ; update counter
|
||||
bb_rmj .ds 1 ; rmj major version number
|
||||
bb_rmn .ds 1 ; rmn minor version number
|
||||
bb_rup .ds 1 ; rup update number
|
||||
bb_rtp .ds 1 ; rtp patch level
|
||||
bb_label .ds 16 ; 16 character drive label
|
||||
bb_term .ds 1 ; label terminator ('$')
|
||||
bb_biloc .ds 2 ; loc to patch boot drive info
|
||||
bb_cpmloc .ds 2 ; final ram dest for cpm/cbios
|
||||
bb_cpmend .ds 2 ; end address for load
|
||||
bb_cpment .ds 2 ; CP/M entry point (cbios boot)
|
||||
;
|
||||
;===============================================================================
|
||||
;
|
||||
.end
|
||||
@@ -38,7 +38,7 @@ It is an independent disassembly and reconstruction of CCP/BDOS.
|
||||
DRI CPM22PAT01 was already applied. Unclear why, but the BDOS
|
||||
source was checking for a blank instead of a ctrl-s in the
|
||||
KBSTAT routine. Ctrl-s seems to be correct based on all other
|
||||
BDOS images I have encountered. Also, these files imbed the
|
||||
BDOS images I have encountered. Also, these files embed the
|
||||
CP/M version number into the serial number fields. Other than
|
||||
this, they are byte identical to the OS2CCP/OS3BDOS images above.
|
||||
|
||||
@@ -51,17 +51,24 @@ BDOS22.ASM - Modified ORG & fix for ctrl-S
|
||||
CCPB03 & BDOSB01
|
||||
----------------
|
||||
|
||||
Sourced from N8VEM effort to create an enhanced
|
||||
variant of CP/M 2.2.
|
||||
These files were derived from a disassembly of the Jade DD CP/M-80
|
||||
image by William Beech in 1982.
|
||||
|
||||
It appears to be a disassembly and reconstruction of CCP/BDOS,
|
||||
but there are no comments attributing the work. DRI CPM22PAT01
|
||||
was already applied. The message string literals are all
|
||||
- Modified by Bill Beech for global CP/M size configuration
|
||||
and separate CCP and BDOSE 2013.
|
||||
|
||||
- Modified by Bill Beech for addition of MON
|
||||
command and display/change of user on command line
|
||||
1984. Also removed all SN checks.
|
||||
|
||||
Eventually modified as part of the N8VEM project and converted to
|
||||
the Z80 instruction set.
|
||||
|
||||
DRI CPM22PAT01 has been applied. The message string literals are all
|
||||
in CAPS in BDOS. Additionally, there is explicit filler of 0x55
|
||||
value bytes at the end of the CCP/BDOS files padding their
|
||||
length out to full page. Other than this, the BDOS
|
||||
is byte identical to the others above. CCP contains multiple
|
||||
enhancements and is, therefore, not identical to others.
|
||||
is byte identical to the others above.
|
||||
|
||||
CCPB03.ASM - Enhanced reassembly of CCP
|
||||
|
||||
|
||||
@@ -1286,7 +1286,7 @@ provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## BBCBASIC
|
||||
## BBCBASIC (BBC BASIC)
|
||||
|
||||
| BBCBASIC | |
|
||||
| --------------------|---|
|
||||
@@ -1330,7 +1330,7 @@ The adaptation to RomWBW was minimal and includes:
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## CLRDIR
|
||||
## CLRDIR (Clear Directory)
|
||||
|
||||
| CLRDIR | |
|
||||
| --------------------|---|
|
||||
@@ -1370,7 +1370,7 @@ reinitialised and the data previously stored will be lost.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## CPUSPD
|
||||
## CPUSPD (CPU Speed)
|
||||
|
||||
| CPUSPD | |
|
||||
| --------------------|---|
|
||||
@@ -1457,7 +1457,7 @@ The source code is provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## COPYSL
|
||||
## COPYSL (Copy Slice)
|
||||
|
||||
| COPYSL | |
|
||||
| --------------------|---|
|
||||
@@ -1547,7 +1547,7 @@ by Mark Pruden.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## FAT
|
||||
## FAT (FAT Utility)
|
||||
|
||||
| FAT | |
|
||||
| --------------------|---|
|
||||
@@ -1748,7 +1748,7 @@ Please contact John Coffman if you would like a copy of the source.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## FDU
|
||||
## FDU (Floppy Disk Utility)
|
||||
|
||||
| FDU | |
|
||||
| --------------------|---|
|
||||
@@ -1789,7 +1789,7 @@ provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## FLASH
|
||||
## FLASH (Flash EEPROM)
|
||||
|
||||
| FLASH | |
|
||||
| --------------------|---|
|
||||
@@ -1896,7 +1896,7 @@ provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## HTALK
|
||||
## HTALK (HBIOS Talk)
|
||||
|
||||
| HTALK | |
|
||||
| --------------------|---|
|
||||
@@ -2047,7 +2047,7 @@ The source code is provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## RTC
|
||||
## RTC (Real Time Clock)
|
||||
|
||||
| RTC | |
|
||||
| --------------------|---|
|
||||
@@ -2103,6 +2103,56 @@ support most of the hardware variations included with RomWBW.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## SLABEL (Slice Label)
|
||||
|
||||
| SLABEL | |
|
||||
| --------------------|-----|
|
||||
| ROM-based | No |
|
||||
| Disk-based | Yes |
|
||||
|
||||
Display or change the label of a disk slice.
|
||||
|
||||
The label applied is only used as informational purposes, displayed by RomWBW
|
||||
when an OS is booted. It has no correlation with any OS volume label scheme
|
||||
that may exist. i.e. It does not affect the CP/M 3 disk label as applied by
|
||||
the `SET` command
|
||||
|
||||
#### Syntax
|
||||
|
||||
`SLABEL [unit.slice=label] [/?]`
|
||||
|
||||
`unit.slice` the disk unit and slice number to apply the new label to. This
|
||||
is in the same format as when booting the system to a disk
|
||||
|
||||
`label` is the new disk label to apply to the disk
|
||||
|
||||
#### Usage
|
||||
|
||||
`SLABEL` with no arguments will list All existing labels across All disks
|
||||
|
||||
`SLABEL 2.5=MYDRIVE` will set the disk label of the 6th slice of disk unit 2
|
||||
|
||||
`SLABEL /?` (or other unrecognised parameters) will display a usage message.
|
||||
|
||||
#### Notes
|
||||
|
||||
There is no capability to update a label onto media that currently does not have
|
||||
existing media information in the third sector, typically this means only
|
||||
bootable media.
|
||||
|
||||
This will only display labels for the first 64 slices of any device. Slices
|
||||
higher than this are currently ignored.
|
||||
|
||||
Only bootable RomWBW disk images have a label, which is defined by the OS
|
||||
which is booted. i.e. NZ-COM has a label of "ZSDOS 1.1" since that is the
|
||||
booted OS. Prior to RomWBW 3.5 all disk images were defined with the label
|
||||
"Unlabeled".
|
||||
|
||||
#### Etymology
|
||||
|
||||
The `SLABEL` application was custom written for RomWBW and contributed
|
||||
by Mark Pruden.
|
||||
|
||||
## SURVEY
|
||||
|
||||
| SURVEY | |
|
||||
@@ -2142,7 +2192,7 @@ discover ports that are 'write-only'.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## SYSCOPY
|
||||
## SYSCOPY (System Copy)
|
||||
|
||||
| SYSCOPY | |
|
||||
| --------------------|---|
|
||||
@@ -2282,7 +2332,7 @@ provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## TBASIC
|
||||
## TBASIC (Tasty BASIC)
|
||||
|
||||
| TBASIC | |
|
||||
| --------------------|---|
|
||||
@@ -2373,6 +2423,9 @@ If your RomWBW system has a sound card based on either an AY-3-8190 or
|
||||
YM2149F sound chip, you can use the `TUNE` application to play PT or
|
||||
MYM sound files.
|
||||
|
||||
Note: TUNE will detect an AY-3-8910/YM2149 Sound Module re-gardless of
|
||||
whether support for it is included in the RomWBW HBIOS configuration
|
||||
|
||||
#### Syntax
|
||||
|
||||
`TUNE `*`<filename>`* `*`<options>`*`
|
||||
@@ -2385,10 +2438,11 @@ MYM sound files.
|
||||
| `-MSX` | Force MSX port addresses A0H/A1H (no PSG detection) |
|
||||
| `-RC` | Force RCBus port addresses D8H/D0H (no PSG detection) |
|
||||
| `--HBIOS` | Utilise HBIOS' sound driver |
|
||||
| `+T1` | Play tune an octave higher |
|
||||
| `+T2` | Play tune two octaves higher |
|
||||
| `-T1` | Play tune an octave lower |
|
||||
| `-T2` | Play tune two octaves lower |
|
||||
| `-DELAY` | Force delay mode (don't use hardware timer) |
|
||||
| `+T1` | Play tune an octave higher |
|
||||
| `+T2` | Play tune two octaves higher |
|
||||
| `-T1` | Play tune an octave lower |
|
||||
| `-T2` | Play tune two octaves lower |
|
||||
|
||||
The +t and -t options apply only to HBIOS mode operation. The `-MSX`,
|
||||
`-RC`, and `--HBIOS` options are mutually exclusive. See Notes below.
|
||||
@@ -2412,7 +2466,7 @@ an error message.
|
||||
|
||||
Some hardware (notably Why-Em-Ulator) cannot be detected due limitations
|
||||
of the emulation. In such cases, you can force the use of the two
|
||||
most common port addresses using the `-msx` or `-rc` options.
|
||||
most common port addresses using the `-MSX` or `-RC` options.
|
||||
|
||||
On Z180 systems, I/O wait states are added when writing to the sound
|
||||
chip to avoid exceeding its speed limitations. On Z80 systems, you
|
||||
@@ -2420,9 +2474,13 @@ will need to ensure that the CPU clock speed of your system does not
|
||||
exceed the timing limitations of your sound chip.
|
||||
|
||||
The application probes for an active system timer and uses it to
|
||||
accurately pace the sound file output. If no system timer is
|
||||
accurately pace the sound file playback. If no system timer is
|
||||
available, a delay loop is calculated instead. The delay loop will not
|
||||
be as accurate as the system timer.
|
||||
be as accurate as the system timer. If the `-DELAY` options is
|
||||
specified on the command line, then the delay loop will be used
|
||||
regardless of whether the system has a hardware timer. This is useful
|
||||
if the hardware timer does not run at the 50Hz desired for sound
|
||||
playback.
|
||||
|
||||
There are two modes of operation. A direct hardware interface for the
|
||||
AY-3-8910 or YM2149 chips, or a compatibility layer thru HBIOS supporting
|
||||
@@ -2467,7 +2525,7 @@ The source code is provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## VGMPLAY
|
||||
## VGMPLAY (Video Game Music Play)
|
||||
|
||||
| VGMPLAY | |
|
||||
| --------------------|---|
|
||||
@@ -2550,7 +2608,7 @@ RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## WDATE
|
||||
## WDATE (WBW DATE)
|
||||
|
||||
| WDATE | |
|
||||
| --------------------|---|
|
||||
@@ -2637,7 +2695,7 @@ The source code is available on GitHub at
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## XM
|
||||
## XM (X-Modem)
|
||||
|
||||
| XM | |
|
||||
| --------------------|---|
|
||||
@@ -2655,15 +2713,25 @@ files between systems using a serial port.
|
||||
| `XM LK `*`<library> <filename>`*
|
||||
| `XM R `*`<filename>`*
|
||||
|
||||
`S`: Send a file
|
||||
`L`: Send a file from a library
|
||||
`R`: Receive a file
|
||||
`K`: Use 1K blocksize for transfer
|
||||
The following may be added to the action codes:
|
||||
| `S`: Send a file
|
||||
| `L`: Send a file from a library
|
||||
| `R`: Receive a file
|
||||
| `K`: Use 1K blocksize (send operations)
|
||||
| `C`: Force use of checksum (receive operations)
|
||||
| `X`: Force 128-byte protocol (receive operations)
|
||||
| `0`-`9`: Specifies HBIOS character unit for transfers
|
||||
|
||||
*`<filename>`* is the name of a file to send or receive
|
||||
|
||||
*`<library>`* is the name of a library (.lbr) to extract a file to send
|
||||
|
||||
For example, the following command will receive a file
|
||||
using checksums on HBIOS character unit 3 and will name the
|
||||
received file `MYFILE.TXT`.
|
||||
|
||||
`XM RC3 MYFILE.TXT`
|
||||
|
||||
#### Usage
|
||||
|
||||
To transfer a file from your host computer to your RomWBW computer, do
|
||||
@@ -2689,9 +2757,10 @@ emulation software for specific instructions on how to use XModem.
|
||||
|
||||
#### Notes
|
||||
|
||||
The XModem adaptation that comes with RomWBW will automatically use
|
||||
the primary character device unit (character device unit 0) for the
|
||||
file transfer.
|
||||
The XModem adaptation that comes with RomWBW will default to using
|
||||
the current HBIOS console port for transfers. Note that if you
|
||||
change your console port at the OS level (e.g., STAT CON:=UC1:),
|
||||
this does not change the HBIOS console.
|
||||
|
||||
`XM` attempts to determine the best way to drive the serial port based
|
||||
on your hardware configuration. When possible, it will bypass the
|
||||
@@ -2722,7 +2791,7 @@ The source code is provided in the RomWBW distribution.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## ZMD
|
||||
## ZMD (Z-Modem)
|
||||
|
||||
| ZMD | |
|
||||
| --------------------|---|
|
||||
@@ -2732,6 +2801,9 @@ The source code is provided in the RomWBW distribution.
|
||||
An adaptation of Robert Kramer's Remote CP/M File Transfer Program
|
||||
with support for XModem and YModem transfers.
|
||||
|
||||
**NOTE**: ZMD does not do ZModem transfers. The Z in ZMD refers
|
||||
to Z-System compatibility.
|
||||
|
||||
#### Syntax
|
||||
|
||||
`ZMD` *\<mode\>\<protocol\>\<unit\>* [*\<filename\>*]
|
||||
@@ -2755,10 +2827,43 @@ the RomWBW Character Unit to use for the file transfer.
|
||||
|
||||
#### Usage
|
||||
|
||||
To transfer a file from your host computer to your RomWBW computer, do
|
||||
the following:
|
||||
|
||||
1. Enter one of the `ZMD` receive commands specifying the name you want
|
||||
to give to the received file (no filename required for ZModem transfers).
|
||||
|
||||
2. On your host computer select a file to send and initiate an XModem or
|
||||
YModem send operation.
|
||||
|
||||
To transfer a file from your RomWBW computer to your host computer, do
|
||||
the following:
|
||||
|
||||
1. Enter one of the `ZMD` send commands specifying the name of the file
|
||||
to be sent.
|
||||
|
||||
2. On your host computer, specify the name to assign to the received
|
||||
file and initiate an XModem or YModem receive operation.
|
||||
|
||||
Please refer to the documentation of your host computer's terminal
|
||||
emulation software for specific instructions on how to use XModem.
|
||||
|
||||
#### Notes
|
||||
|
||||
If no *\<unit\>* is specified, ZMD will use the current HBIOS
|
||||
console for the file transfer.
|
||||
The ZMP adaptation that comes with RomWBW will default to using
|
||||
the current HBIOS console port for transfers. Note that if you
|
||||
change your console port at the OS level (e.g., STAT CON:=UC1:),
|
||||
this does not change the HBIOS console.
|
||||
|
||||
`ZMP` attempts to determine the best way to drive the serial port based
|
||||
on your hardware configuration. When possible, it will bypass the
|
||||
HBIOS for faster operation. However, in many cases, it will use HBIOS
|
||||
so that flow control can be used.
|
||||
|
||||
`ZMP` is dependent on a reliable communications channel. You must
|
||||
ensure that the serial port can be serviced fast enough by either
|
||||
using a baud rate that is low enough or ensuring that hardware flow
|
||||
control is fully functional (end to end).
|
||||
|
||||
#### Etymology
|
||||
|
||||
@@ -2767,32 +2872,68 @@ uses the RomWBW HBIOS serial API.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## ZMP
|
||||
## ZMP (Z-Modem Program)
|
||||
|
||||
| ZMP | |
|
||||
| --------------------|---|
|
||||
| ROM-based |No |
|
||||
| Disk-based |Yes|
|
||||
|
||||
`ZMP` is a terminal program for interacting with a modem attached to
|
||||
your system. It includes X/Y/ZModem file transfer protocols. An
|
||||
actual modem is not required, but you must have a port for ZMP to use
|
||||
that is independent of the console running `ZMP`.
|
||||
|
||||
#### Syntax
|
||||
|
||||
`ZMD` *[\<unit\>]*
|
||||
|
||||
*\<unit\>* can specify a single digit (0-9) indicating
|
||||
the RomWBW Character Unit to use for the modem port.
|
||||
|
||||
#### Usage
|
||||
|
||||
Refer to the file `ZMP.DOC` found on all disk images that include
|
||||
the `ZMP` application.
|
||||
|
||||
#### Notes
|
||||
|
||||
`ZMP` requires access to multiple overlay and configuration files
|
||||
to run. It will look for these on the default driver and user area.
|
||||
Depending the operating system used, you may be able to set up a
|
||||
search path and locate these files in other locations. The files
|
||||
used by `ZMP` are:
|
||||
|
||||
- `ZMP.HLP`
|
||||
- `ZMP.DOC`
|
||||
- `ZMP.CFG`
|
||||
- `ZMP.FON`
|
||||
- `ZMXFER.OVR`
|
||||
- `ZMTERM.OVR`
|
||||
- `ZMINIT.OVR`
|
||||
- `ZMCONFIG.OVR`
|
||||
|
||||
The `ZMP` console is always the active OS console.
|
||||
If no *\<unit\>* is specified on the command line, `ZMP` will
|
||||
default to using HBIOS Character Unit 1 as the modem port. Take care
|
||||
to avoid using the same HBIOS Character Unit as both the console and
|
||||
the modem or various strangeness will occur.
|
||||
|
||||
`ZMP` is a full screen application and is configured to use
|
||||
ANSI/VT-100 screen control.
|
||||
|
||||
`ZMP` does not support the range of port configurations provided by
|
||||
RomWBW. The RomWBW adaptation of `ZMP` ignores the port configuration
|
||||
options within `ZMP`. Instead, you should configure the HBIOS Character
|
||||
Unit using the RomWBW MODE command before launching `ZMP`.
|
||||
|
||||
`ZMP` is written in C. As a result, file transfers will be noticeably
|
||||
slower than other assembly language file transfer tools.
|
||||
|
||||
#### Etymology
|
||||
|
||||
ZMP was produced by Ron Murray and was based on HMODEM II. Wayne
|
||||
Hortensius updated the source to compile with the latest version
|
||||
of Hi-Tech C and implemented a few enhancements.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
The RomWBW overlay was developed by Phil Summers.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
$define{doc_ver}{Version 3.5}$
|
||||
$define{doc_ver}{Version 3.6}$
|
||||
$define{doc_product}{RomWBW}$
|
||||
$define{file_root}{https://github.com/wwarthen/RomWBW/raw/master}$
|
||||
$define{doc_root}{$file_root$/Doc}$
|
||||
@@ -14,7 +14,14 @@ $define{doc_sys}{[RomWBW System Guide]($doc_root$/RomWBW System Guide.pdf)}$
|
||||
$define{doc_apps}{[RomWBW Applications]($doc_root$/RomWBW Applications.pdf)}$
|
||||
$define{doc_catalog}{[RomWBW Disk Catalog]($doc_root$/RomWBW Disk Catalog.pdf)}$
|
||||
$define{doc_hardware}{[RomWBW Hardware]($doc_root$/RomWBW Hardware.pdf)}$
|
||||
|
||||
$ifdef{GFM}$
|
||||
$define{doc_intro}{[RomWBW Introduction](Introduction.md)}$
|
||||
$define{doc_user}{[RomWBW User Guide](UserGuide.md)}$
|
||||
$define{doc_sys}{[RomWBW System Guide](SystemGuide.md)}$
|
||||
$define{doc_apps}{[RomWBW Applications](Applications.md)}$
|
||||
$define{doc_catalog}{[RomWBW Disk Catalog](Catalog.md)}$
|
||||
$define{doc_hardware}{[RomWBW Hardware](Hardware.md)}$
|
||||
$endif$
|
||||
---
|
||||
title: $doc_product$ $doc_title$
|
||||
subtitle: $doc_ver$
|
||||
|
||||
@@ -573,7 +573,7 @@ This is a generic ZPM3 adaptation for RomWBW.
|
||||
|
||||
The following files came from from Microcode Consulting. The official
|
||||
distribution files can be found on the Microcode Consulting website at
|
||||
[https://www.microcodeconsulting.com/z80/qpm.htm].
|
||||
<https://www.microcodeconsulting.com/z80/qpm.htm>.
|
||||
Also included in this image are debugz, and linkz frm the same company.
|
||||
|
||||
This disk includes the standard DRI CP/M 2.2 files in addition to the
|
||||
@@ -651,7 +651,7 @@ look a little strange depending on the terminal emulation you are using.
|
||||
|
||||
User area 4 contains a full implementation of the CP/NET 1.2 client
|
||||
provided by Doug Miller. Please refer to
|
||||
[https://github.com/durgadas311/cpnet-z80] for more information,
|
||||
<https://github.com/durgadas311/cpnet-z80> for more information,
|
||||
complete documentation and the latest source code.
|
||||
|
||||
Please refer to the RomWBW User Guide for instructions on installing
|
||||
@@ -979,7 +979,7 @@ The following files are found in
|
||||
| `ZEXDOC.COM` | Z80 Instruction Set Exerciser |
|
||||
|
||||
And The following CPU Tests - Which are probably originally from this source.
|
||||
[https://github.com/raxoft/z80test]
|
||||
<https://github.com/raxoft/z80test>
|
||||
|
||||
| **File** | **Description** |
|
||||
|----------------|---------------------------------------------------------------|
|
||||
@@ -1002,7 +1002,7 @@ including MS-DOS, Apple II DOS 3.3 and PRoDOS, Commodore 64, Macintosh and
|
||||
Amiga. This disk contains the CP/M version of that compiler. A cross-compiler
|
||||
for MS-DOS or Windows XP is also available.
|
||||
|
||||
For full documentation, see [https://www.aztecmuseum.ca]
|
||||
For full documentation, see <https://www.aztecmuseum.ca>
|
||||
The user manual is available in the Doc/Language directory
|
||||
Aztec_C_1.06_User_Manual_Mar84.pdf
|
||||
|
||||
@@ -1048,10 +1048,10 @@ NOTE : The above is incomplete
|
||||
|
||||
The Cowgol 2.0 compiler and related tools.
|
||||
These files were provided by Ladislau Szilagyi and were sourced
|
||||
from his GitHub repository at [https://github.com/Laci1953/Cowgol_on_CP_M].
|
||||
from his GitHub repository at <https://github.com/Laci1953/Cowgol_on_CP_M>.
|
||||
|
||||
The primary distribution site for Cowgol 2.0 is at
|
||||
[https://github.com/davidgiven/cowgol].
|
||||
<https://github.com/davidgiven/cowgol>.
|
||||
The user manual is available in the Doc/Language directory
|
||||
Cowgol Language.pdf
|
||||
|
||||
@@ -1114,12 +1114,12 @@ Zork 1 through 3, Planetfall and Hitchhiker's Guide to the Galaxy.
|
||||
Nemesis and Dungeon Master is a Rogue-like game released in 1981. It is playable
|
||||
on a text terminal using ASCII graphics to represent the dungeon. Only a few
|
||||
thousand copies of the game were ever made, making it very rare. See
|
||||
[http://crpgaddict.blogspot.com/2019/03/game-322-nemesis-1981.html]
|
||||
<http://crpgaddict.blogspot.com/2019/03/game-322-nemesis-1981.html>
|
||||
|
||||
Colossal Cave Adventure is a CP/M port of the 1976 classic game originally
|
||||
written by Will Crowther for the PDP-10 mainframe. See
|
||||
[https://en.wikipedia.org/wiki/Colossal_Cave_Adventure] and
|
||||
[https://if50.substack.com/p/1976-adventure]
|
||||
<https://en.wikipedia.org/wiki/Colossal_Cave_Adventure> and
|
||||
<https://if50.substack.com/p/1976-adventure>
|
||||
|
||||
The following files are found in
|
||||
|
||||
@@ -1144,13 +1144,32 @@ which produce programs for execution in embedded systems
|
||||
without an operating system.
|
||||
|
||||
This is the Mar 21, 2023 update 17 released by Tony Nicholson who currently
|
||||
maintains HI-TECH C at [https://github.com/agn453/HI-TECH-Z80-C]
|
||||
maintains HI-TECH C at <https://github.com/agn453/HI-TECH-Z80-C>
|
||||
|
||||
The manual is available in the Doc/Language directory,
|
||||
HI-TECH Z80 C Compiler Manual.txt
|
||||
|
||||
A good blog post about the HI-TECH C Compiler is available at
|
||||
[https://techtinkering.com/2008/10/22/installing-the-hi-tech-z80-c-compiler-for-cpm]
|
||||
<https://techtinkering.com/2008/10/22/installing-the-hi-tech-z80-c-compiler-for-cpm>
|
||||
|
||||
User area 1 contains another complete copy of the HI-TECH C Compiler.
|
||||
It is identical to the copy in user area 0 except for the following files
|
||||
which were enhanced by Ladislau Szilagyi from his GitHub Repository at
|
||||
<https://github.com/Laci1953/HiTech-C-compiler-enhanced>. The files
|
||||
take advantage of additional banked memory using the RomWBW HBIOS API.
|
||||
As such, they require RomWBW to operate. They should be compatible with
|
||||
all CP/M and compatible operations systems provided in RomWBW.
|
||||
|
||||
The enhanced files are:
|
||||
|
||||
- CGEN.COM
|
||||
- CPP.COM
|
||||
- OPTIM.COM
|
||||
- P1.COM
|
||||
- ZAS.COM (replaced with Z80AS)
|
||||
|
||||
A thread discussing this enhanced version of HI-TECH C is found at
|
||||
<https://groups.google.com/g/rc2014-z80/c/sBCCIpOnnGg>.
|
||||
|
||||
The following files are found in
|
||||
|
||||
@@ -1170,7 +1189,7 @@ NOTE : The above is incomplete
|
||||
The collection of MSX ROMs (2 disks) as provided by Les Bird.
|
||||
These ROMs are "run" by using the
|
||||
appropriate variant of Les' MSX8 ROM loader. You can download the
|
||||
loader binaries from [https://github.com/lesbird/MSX8]. You will need
|
||||
loader binaries from <https://github.com/lesbird/MSX8>. You will need
|
||||
appropriate hardware to run the loader.
|
||||
|
||||
Please review the file ROMLIST.TXT for information on the current
|
||||
@@ -1206,7 +1225,7 @@ The manual can be found in the Docs/Language directory,
|
||||
Turbo_Pascal_Version_3.0_Reference_Manual_1986.pdf
|
||||
|
||||
A good overview of using Turbo Pascal in CP/M is available at
|
||||
[https://techtinkering.com/2013/03/05/turbo-pascal-a-great-choice-for-programming-under-cpm]
|
||||
<https://techtinkering.com/2013/03/05/turbo-pascal-a-great-choice-for-programming-under-cpm>
|
||||
|
||||
The following files are found in
|
||||
|
||||
@@ -1309,7 +1328,7 @@ Also contained on this image in User Area 1 are.
|
||||
| Floppy Disk Image: **fd_z80asm.img**
|
||||
| Hard Disk Image: **hd_z80asm.img**
|
||||
|
||||
This disk contains 4 major components
|
||||
This disk contains 6 major components
|
||||
|
||||
* Z80ASM is a relocating macro assembler for CP/M. It takes assembly language
|
||||
source statements from a disk file, converts them into their binary equivalent,
|
||||
@@ -1319,19 +1338,20 @@ listing output may be sent to a disk file, the console and/or the printer, in
|
||||
any combination. Output files may also be generated containing cross-reference
|
||||
information on each symbol used.
|
||||
|
||||
* Z80ASMP (Z80ASM Plus)
|
||||
* Z80ASMP (Z80ASM Plus). Referred to as the "Virtual Memory" version which
|
||||
uses disk for working storage, thus not constrained by RAM.
|
||||
|
||||
* SLR180 is a powerful relocating macro assembler for Z80
|
||||
compatible CP/M systems. It takes assembly language source
|
||||
statements from a disk file, converts them into their binary
|
||||
equivalent, and stores the output in either a core-image, Intel
|
||||
hex format, or relocatable object file. The mnemonics recognized
|
||||
are those of Zilog/Hitachi. The optional listing output may be
|
||||
are those of Zilog (Z180)/Hitachi. The optional listing output may be
|
||||
sent to a disk file, the console and/or the printer, in any
|
||||
combination. Output files may also be generated containing
|
||||
cross-reference information on each symbol used.
|
||||
|
||||
* SLRMAC Intel 8080 mnemonics
|
||||
* SLRMAC relocating macro assembler for Intel 8080 mnemonics
|
||||
|
||||
* SLRNK is a powerful linking loader for Z80-based CP/M systems.
|
||||
It takes relocatable binary information in either Microsoft or
|
||||
@@ -1339,7 +1359,8 @@ SLR Systems format from a disk file, resolves external and entry
|
||||
point references, and stores the output in memory for execution
|
||||
or outputs it to a disk file.
|
||||
|
||||
* SLRNKP (SLRNK Plus)
|
||||
* SLRNKP (SLRNK Plus). Referred to as the "Virtual Memory" version which
|
||||
uses disk for working storage, thus not constrained by RAM.
|
||||
|
||||
* Z80DIS is an entirely new disassembler for Z80 based CP/M sys-
|
||||
tems. Z80DIS is written in TURBO PASCAL. Z80DIS generates Z80
|
||||
@@ -1356,10 +1377,10 @@ The manual(s) are available in the Doc/Language directory,
|
||||
* Z80DIS User Manual (1985).pdf
|
||||
|
||||
A run through of using the assembler is available at
|
||||
[https://8bitlabs.ca/Posts/2023/05/20/learning-z80-asm]
|
||||
<https://8bitlabs.ca/Posts/2023/05/20/learning-z80-asm>
|
||||
|
||||
And another shorter, but shows linker usage guide
|
||||
[https://pollmyfinger.wordpress.com/2022/01/10/modular-retro-z80-assembly-language-programming-using-slr-systems-z80asm-and-srlnk/]
|
||||
<https://pollmyfinger.wordpress.com/2022/01/10/modular-retro-z80-assembly-language-programming-using-slr-systems-z80asm-and-srlnk/>
|
||||
|
||||
The following files are found in
|
||||
|
||||
@@ -1376,7 +1397,7 @@ User Area 0 - Assembler
|
||||
| DUMP.* | Sample Program |
|
||||
| MAKESYM.COM | Symbol File .SYM file generation |
|
||||
| MAKESYM.DOC | Documentation for MAKESYM.COM |
|
||||
| SLR180.COM | HD64180 Relocating Macro Assembler |
|
||||
| SLR180.COM | HD64180 (Z180) Relocating Macro Assembler |
|
||||
| SLR180.DOC | Release Notes for SLR180.COM |
|
||||
| SLRMAC.COM | 8080 Relocating Macro Assembler |
|
||||
| SYNTAX.HLP | Documentation basic usage for all SLR Tools |
|
||||
|
||||
@@ -41,7 +41,7 @@ Supported hardware features of RomWBW include:
|
||||
* Banked memory services for several banking designs
|
||||
* Disk drivers for RAM, ROM, Floppy, IDE ATA/ATAPI, CF, SD, USB, Zip, Iomega
|
||||
* Serial drivers including UART (16550-like), ASCI, ACIA, SIO
|
||||
* Video drivers including TMS9918, SY6545, MOS8563, HD6445
|
||||
* Video drivers including TMS9918, SY6545, MOS8563, HD6445, Xosera
|
||||
* Keyboard (PS/2) drivers via VT8242 or PPI interfaces
|
||||
* Real time clock drivers including DS1302, BQ4845
|
||||
* Support for CP/NET networking using Wiznet, MT011 or Serial
|
||||
@@ -288,6 +288,7 @@ please let me know if I missed you!
|
||||
- creation of the Introduction and Hardware documents
|
||||
- Z3PLUS operating system disk image
|
||||
- COPYSL utility
|
||||
- SLABEL utility
|
||||
- a feature for RomWBW configuration by NVRAM
|
||||
- the /B bulk mode of disk assignment to the ASSIGN utility
|
||||
|
||||
@@ -323,6 +324,10 @@ please let me know if I missed you!
|
||||
|
||||
* Les Bird has contributed support for the NABU w/ Option Board
|
||||
|
||||
* Rob Gowin created an online documentation site via MkDocs, and
|
||||
contributed a driver for the Xosera FPGA-based video
|
||||
controller.
|
||||
|
||||
`\clearpage`{=latex}
|
||||
|
||||
## Related Projects
|
||||
|
||||
@@ -18,6 +18,10 @@ include $(TOOLS)/Makefile.inc
|
||||
|
||||
all :: deploy
|
||||
|
||||
clean ::
|
||||
rm -rf mkdocs
|
||||
rm -rf site
|
||||
|
||||
%.tmp : %.md
|
||||
gpp -o $@ -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $<
|
||||
|
||||
@@ -31,11 +35,16 @@ all :: deploy
|
||||
pandoc $< -f markdown -t dokuwiki -s -o $@ --default-image-extension=pdf
|
||||
|
||||
%.gfm : %.tmp
|
||||
pandoc $< -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=pdf
|
||||
pandoc $< -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=svg
|
||||
|
||||
%.txt : %.tmp
|
||||
pandoc $< -f markdown -t plain -s -o $@ --default-image-extension=pdf
|
||||
|
||||
mkdocs/%.md : %.md
|
||||
-mkdir -p mkdocs
|
||||
gpp -DGFM -U "$$" "$$" "{" "}{" "}$$" "{" "}" "@@@" "" -M "$$" "$$" "{" "}{" "}$$" "{" "}" $< \
|
||||
| pandoc -f markdown -t gfm-yaml_metadata_block -s -o $@ --default-image-extension=svg
|
||||
|
||||
deploy :
|
||||
cp Introduction.gfm "../../ReadMe.md"
|
||||
cp Introduction.txt "../../ReadMe.txt"
|
||||
@@ -45,3 +54,10 @@ deploy :
|
||||
cp Applications.pdf "../../Doc/RomWBW Applications.pdf"
|
||||
cp Catalog.pdf "../../Doc/RomWBW Disk Catalog.pdf"
|
||||
cp Hardware.pdf "../../Doc/RomWBW Hardware.pdf"
|
||||
|
||||
deploy_mkdocs : mkdocs/Introduction.md mkdocs/UserGuide.md mkdocs/SystemGuide.md mkdocs/Applications.md \
|
||||
mkdocs/Catalog.md mkdocs/Hardware.md mkdocs/ReadMe.md
|
||||
mkdir -p mkdocs/UserGuide/Graphics mkdocs/SystemGuide/Graphics
|
||||
mv mkdocs/ReadMe.md mkdocs/README.md
|
||||
cp Graphics/*.svg mkdocs/UserGuide/Graphics
|
||||
cp Graphics/*.svg mkdocs/SystemGuide/Graphics
|
||||
|
||||
@@ -199,7 +199,7 @@ please let me know if I missed you!
|
||||
- significant content in the Disk Catalog and User Guide
|
||||
- creation of the Introduction and Hardware documents
|
||||
- Z3PLUS operating system disk image
|
||||
- COPYSL utility
|
||||
- COPYSL and SLABEL utility
|
||||
- a feature for RomWBW configuration by NVRAM
|
||||
- the /B bulk mode of disk assignment to the ASSIGN utility
|
||||
|
||||
|
||||
@@ -142,6 +142,14 @@ currently selected. The upper 32KB is "fixed". This area of memory
|
||||
is never swapped out and is used to contain software and operating
|
||||
systems that must remain in the Z80 address space.
|
||||
|
||||
Throughout this document, this mechanism of selecting banks of memory
|
||||
into the lower 32K is referred to as memory management. Achieving
|
||||
this functionality requires some type of hardware which is generally
|
||||
referred to as the system's Memory Management Unit (MMU). RomWBW
|
||||
supports a variety of MMUs -- but they all perform the same function
|
||||
of swapping in/out banks of memory in the lower 32K of CPU address
|
||||
space.
|
||||
|
||||
Figure 4.1 depicts the memory layout for a system running the CP/M
|
||||
operating system. Applications residing in TPA invoke BDOS services
|
||||
of CP/M, BDOS invokes the custom CBIOS APIs, and finally CBIOS
|
||||
@@ -290,6 +298,54 @@ Common Bank:
|
||||
It is a fixed mapping that is never changed in normal RomWBW operation
|
||||
hence the name "Common".
|
||||
|
||||
## Memory Managers
|
||||
|
||||
The following hardware memory managers are supported by RomWBW. The
|
||||
operation of these memory managers is not documented here -- please
|
||||
refer to the documentation of your hardware provider for that.
|
||||
|
||||
Z2:
|
||||
|
||||
: Memory memory manager introduced by Sergey Kiselv in the Zeta 2 SBC.
|
||||
Popular in many RCBus systems.
|
||||
|
||||
Z180:
|
||||
|
||||
: Memory manager built into the Z180 CPU
|
||||
|
||||
Z280:
|
||||
|
||||
: Memory manager built into the Z280 CPU
|
||||
|
||||
ZRC:
|
||||
|
||||
: Memory manager onboard the ZRC series of computers by Bill Shen.
|
||||
|
||||
SBC:
|
||||
|
||||
: Memory manager onboard the N8VEM SBC series of computers by
|
||||
Andrew Lynch.
|
||||
|
||||
MBC:
|
||||
|
||||
: Memory manager onboard the Nhyodyne computer system by Andrew Lynch.
|
||||
|
||||
N8:
|
||||
|
||||
: Memory manager onboard the N8 SBC computer by Andrew Lynch.
|
||||
|
||||
EZ512:
|
||||
|
||||
: Memory manager onboard the EaZy80-512 Z80 CPU Module by Bill Shen.
|
||||
|
||||
RPH:
|
||||
|
||||
: Memory manager onboard the Rhyophyre computer system by Andrew Lynch.
|
||||
|
||||
The memory manager used is determined by the configuration choices
|
||||
that are part of a RomWBW build process. A given ROM can only have a
|
||||
single memory manager -- it is not selected dynamically.
|
||||
|
||||
# Disk Layout
|
||||
|
||||
## Floppy Disk Layout
|
||||
@@ -1147,6 +1203,13 @@ contain all sectors requested. Disk data transfers will be faster if
|
||||
the buffer resides in the top 32K of memory because it avoids a
|
||||
double buffer copy.
|
||||
|
||||
Also for buffers in the top 32K of memory the Bank ID is not
|
||||
strictly required as this memory is alway mapped to the common bank.
|
||||
For buffers in the bottom 32KB ram, the Bank ID is used to identify
|
||||
the bank to use for the buffer. If you do not wih to use banked memory
|
||||
you will need to provide the current Bank ID, which can be obtained
|
||||
using [Function 0xF3 -- System Get Bank (SYSGETBNK)]
|
||||
|
||||
### Function 0x14 -- Disk Write (DIOWRITE)
|
||||
|
||||
| **Entry Parameters** | **Returned Values** |
|
||||
@@ -1693,14 +1756,17 @@ All video units are assigned a Device Type ID which indicates
|
||||
the specific hardware device driver that handles the unit. The table
|
||||
below enumerates their values.
|
||||
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|------------------------------------------|------------|
|
||||
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
|
||||
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
|
||||
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
|
||||
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
|
||||
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
|
||||
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
|
||||
| **Device Type** | **ID** | **Description** | **Driver** |
|
||||
|-----------------|-------:|--------------------------------------------|------------|
|
||||
| VDADEV_VDU | 0x00 | MC6845 Family Video Display Controller | vdu.asm |
|
||||
| VDADEV_CVDU | 0x01 | MC8563-based Video Display Controller | cvdu.asm |
|
||||
| VDADEV_GDC | 0x02 | uPD7220 Video Display Controller | gdc.asm |
|
||||
| VDADEV_TMS | 0x03 | TMS9918/38/58 Video Display Controller | tms.asm |
|
||||
| VDADEV_VGA | 0x04 | HD6445CP4-based Video Display Controller | vga.asm |
|
||||
| VDADEV_VRC | 0x05 | VGARC | vrc.asm |
|
||||
| VDADEV_EF | 0x06 | EF9345 | ef.asm |
|
||||
| VDADEV_FV | 0x07 | S100 FPGA VGA | fv.asm |
|
||||
| VDADEV_XOSERA | 0x08 | Xosera FPGA-based Video Display Controller | xosera.asm |
|
||||
|
||||
Depending on the capabilities of the hardware, the use of colors and
|
||||
attributes may or may not be supported. If the hardware does not support
|
||||
@@ -2054,12 +2120,16 @@ standard HBIOS result code.
|
||||
| | E: Keycode |
|
||||
|
||||
Read the next key data from keyboard of the specified Video Unit (C). If
|
||||
a keyboard buffer is used, return the next key code in the buffer. If
|
||||
a keyboard buffer is used, return the next Keycode in the buffer. If
|
||||
no key data is available, this function will wait indefinitely for a
|
||||
keypress. The Status (A) is a standard HBIOS result code.
|
||||
|
||||
The Scancode (C) value is the raw scancode from the keyboard for the
|
||||
keypress. Scancodes are from the PS/2 scancode set 2 standard.
|
||||
keypress. Scancodes are optional and may not be implemented by the
|
||||
driver. The Scancode values are driver dependent. In the case of a
|
||||
PS/2 keyboard driver, they should be the PS/2 scancode. Other keyboard
|
||||
drivers may return values appropriate for their specific keyboard. If
|
||||
the driver does not implement this, it should return 0 in C.
|
||||
|
||||
The Keystate (D) is a bitmap representing the value of all modifier keys
|
||||
and shift states as they existed at the time of the keystroke. The
|
||||
@@ -2076,6 +2146,9 @@ bitmap is defined as:
|
||||
| 1 | Control key was held down |
|
||||
| 0 | Shift key was held down |
|
||||
|
||||
Not all of these bits may be relevant for all keyboards. Any bit that
|
||||
is not relevant should be returned as 0.
|
||||
|
||||
The Keycode (E) is generally returned as appropriate ASCII values, if
|
||||
possible. Special keys, like function keys and arrows, are returned as
|
||||
reserved codes as described at the start of this section.
|
||||
@@ -2483,26 +2556,34 @@ version 3.1.0, build 2.
|
||||
|
||||
The hardware Platform (L) is identified as follows:
|
||||
|
||||
| **Name** | **Id** | **Platform ** |
|
||||
| **Name** | **Id** | **Platform ** |
|
||||
|---------------|-------:|-----------------------------------------|
|
||||
| PLT_SBC |1 | ECB Z80 SBC |
|
||||
| PLT_ZETA |2 | ZETA Z80 SBC |
|
||||
| PLT_ZETA2 |3 | ZETA Z80 V2 SBC |
|
||||
| PLT_N8 |4 | N8 (HOME COMPUTER) Z180 SBC |
|
||||
| PLT_MK4 |5 | MARK IV |
|
||||
| PLT_UNA |6 | UNA BIOS |
|
||||
| PLT_RCZ80 |7 | RCBUS W/ Z80 |
|
||||
| PLT_RCZ180 |8 | RCBUS W/ Z180 |
|
||||
| PLT_EZZ80 |9 | EASY/TINY Z80 |
|
||||
| PLT_SCZ180 |10 | RCBUS SC126, SC130, SC131, SC140 |
|
||||
| PLT_DYNO |11 | DYNO MICRO-ATX MOTHERBOARD |
|
||||
| PLT_RCZ280 |12 | RCBUS W/ Z280 |
|
||||
| PLT_MBC |13 | NHYODYNE MULTI-BOARD COMPUTER |
|
||||
| PLT_RPH |14 | RHYOPHYRE GRAPHICS SBC |
|
||||
| PLT_Z80RETRO |15 | Z80 RETRO COMPUTER |
|
||||
| PLT_S100 |16 | S100 COMPUTERS Z180 |
|
||||
| PLT_DUO |17 | DUODYNE Z80 SYSTEM |
|
||||
| PLT_RCEZ80 |24 | RCBUS W/ eZ80 |
|
||||
| PLT_SBC | 1 | ECB Z80 SBC |
|
||||
| PLT_ZETA | 2 | ZETA Z80 SBC |
|
||||
| PLT_ZETA2 | 3 | ZETA Z80 V2 SBC |
|
||||
| PLT_N8 | 4 | N8 (HOME COMPUTER) Z180 SBC |
|
||||
| PLT_MK4 | 5 | MARK IV |
|
||||
| PLT_UNA | 6 | UNA BIOS |
|
||||
| PLT_RCZ80 | 7 | RCBUS W/ Z80 |
|
||||
| PLT_RCZ180 | 8 | RCBUS W/ Z180 |
|
||||
| PLT_EZZ80 | 9 | EASY/TINY Z80 |
|
||||
| PLT_SCZ180 | 10 | SMALL COMPUTER CENTRAL Z180 |
|
||||
| PLT_DYNO | 11 | DYNO MICRO-ATX MOTHERBOARD |
|
||||
| PLT_RCZ280 | 12 | RCBUS W/ Z280 |
|
||||
| PLT_MBC | 13 | NHYODYNE MULTI-BOARD COMPUTER |
|
||||
| PLT_RPH | 14 | RHYOPHYRE GRAPHICS SBC |
|
||||
| PLT_Z80RETRO | 15 | Z80 RETRO COMPUTER |
|
||||
| PLT_S100 | 16 | S100 COMPUTERS Z180 |
|
||||
| PLT_DUO | 17 | DUODYNE Z80 SYSTEM |
|
||||
| PLT_HEATH | 18 | HEATHKIT H8 Z80 SYSTEM |
|
||||
| PLT_EPITX | 19 | Z180 MINI-ITX |
|
||||
| PLT_MON | 20 | MONSPUTER (DEPRECATED) |
|
||||
| PLT_GMZ180 | 21 | GENESIS Z180 SYSTEM |
|
||||
| PLT_NABU | 22 | NABU PC W/ ROMWBW OPTION BOARD |
|
||||
| PLT_FZ80 | 23 | S100 FPGA Z80 |
|
||||
| PLT_RCEZ80 | 24 | RCBUS W/ eZ80 |
|
||||
|
||||
For more information on these platforms see $doc_hardware$
|
||||
|
||||
### Function 0xF2 -- System Set Bank (SYSSETBNK)
|
||||
|
||||
|
||||
@@ -2736,7 +2736,14 @@ a variety of common ZCPR3 utilities.
|
||||
#### Documentation
|
||||
|
||||
ZPM3 has no real documentation. You are expected to understand both
|
||||
CP/M 3 and ZCPR 3.
|
||||
CP/M 3 and ZCPR 3. The best source of information is:
|
||||
|
||||
* [CPM3 Users Guide]($doc_root$/CPM/CPM3 Users Guide.pdf)
|
||||
* [CPM3 Command Summary]($doc_root$/CPM/CPM3 Command Summary.pdf)
|
||||
* [CPM3 Programmers Guide]($doc_root$/CPM/CPM3 Programmers Guide.pdf)
|
||||
* [CPM3 System Guide]($doc_root$/CPM/CPM3 System Guide.pdf)
|
||||
* [Z-System Users Guide]($doc_root$/CPM/Z-System Users Guide.pdf)
|
||||
* [ZCPR3.3 User Guide]($doc_root$/CPM/ZCPR3.3 User Guide.pdf)
|
||||
|
||||
#### Boot Disk
|
||||
|
||||
@@ -2796,6 +2803,39 @@ The CP/M 3 `DEVICE` command is used to manipulate the device mappings.
|
||||
I believe it was done this way to make it easier for users to
|
||||
transition from CP/M 3 to ZPM3.
|
||||
|
||||
- The command line editing key bindings were slightly modified by
|
||||
Jon Saxton when he applied a few ZPM3 fixes. This is explained
|
||||
in the file zpm3fix.txt in the distribution folder Source/ZPM3.
|
||||
The current key bindings are from the "New" column below.
|
||||
|
||||
| **Old** | **New** | **Function** |
|
||||
|---------|---------|-------------------------------------------|
|
||||
| ^A | ^A | one word left |
|
||||
| ^B | ^B | to beginning/end of line |
|
||||
| ^C | ^C | reboot if at start of line |
|
||||
| ^D | ^D | right one char |
|
||||
| ^E | ^E | get previous line |
|
||||
| ^F | ^F | right one word |
|
||||
| ^G | ^G | delete char at cursor |
|
||||
| ^H | ^H | destructive backspace |
|
||||
| ^I | ^I | (TAB) ignored here |
|
||||
| ^J | ^J | (LF) exit editor |
|
||||
| ^K | ^K | delete all to the right |
|
||||
| ^L | ^L | ignored |
|
||||
| ^M | ^M | (CR) exit editor |
|
||||
| ^N | ^N | ignored |
|
||||
| ^O | ^O | ignored |
|
||||
| ^P | ^P | toggle printer echoing |
|
||||
| ^Q | ^Q | toggle autoprompt (if enabled) |
|
||||
| ^R | ^R | ignored |
|
||||
| ^S | ^S | left one char |
|
||||
| ^T | ^T | delete word at cursor |
|
||||
| ^U | ^U | add line to history |
|
||||
| ^V | ^V | clear line, delete from history |
|
||||
| ^W | ^X | get next line from history |
|
||||
| ^X | ^W | delete all to the left |
|
||||
| ^Y | ^Y | clear line |
|
||||
|
||||
## QP/M
|
||||
|
||||
QP/M is another OS providing compatibility with and enhancements
|
||||
@@ -3123,7 +3163,7 @@ floppy disk and hard disk images.
|
||||
| TUNE | Play .PT2, .PT3, .MYM audio files. |
|
||||
| INTTEST | Test interrupt vector hooking. |
|
||||
|
||||
# Real Time Clock
|
||||
# Real Time Clock & Date/Time Stamping
|
||||
|
||||
RomWBW supports a variety of real time clock hardware. If your
|
||||
system has this hardware, then it will be able to maintain the
|
||||
|
||||
16
Source/Doc/mkdocs.yml
Normal file
@@ -0,0 +1,16 @@
|
||||
site_name: RomWBW Documentation V3.6
|
||||
repo_url: https://github.com/wwarthen/RomWBW
|
||||
edit_uri: ""
|
||||
docs_dir: mkdocs
|
||||
nav:
|
||||
- Introduction: Introduction.md
|
||||
- User Guide: UserGuide.md
|
||||
- System Guide: SystemGuide.md
|
||||
- Applications: Applications.md
|
||||
- Catalog: Catalog.md
|
||||
- Hardware: Hardware.md
|
||||
theme:
|
||||
name: mkdocs
|
||||
color_mode: auto
|
||||
user_color_mode_toggle: true
|
||||
navigation_depth: 3
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
BIN
Source/Fonts/fontcga.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 9.1 KiB |
BIN
Source/Fonts/fontvgarc.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
@@ -17,8 +17,8 @@ set CPMDIR80=%TOOLS%/cpm/
|
||||
|
||||
::
|
||||
:: This PowerShell script validates the build variables passed in. If
|
||||
:: necessary, the user is prmopted to pick the variables. It then creates
|
||||
:: an include file that is imbedded in the HBIOS assembly (build.inc).
|
||||
:: necessary, the user is prompted to pick the variables. It then creates
|
||||
:: an include file that is embedded in the HBIOS assembly (build.inc).
|
||||
:: It also creates a batch command file that sets environment variables
|
||||
:: for use by the remainder of this batch file (build_env.cmd).
|
||||
::
|
||||
@@ -97,7 +97,6 @@ call :asm nascom || exit /b
|
||||
call :asm game || exit /b
|
||||
call :asm usrrom || exit /b
|
||||
call :asm updater || exit /b
|
||||
call :asm imgpad2 || exit /b
|
||||
|
||||
:: Sysconf builds as both BIN and COM files
|
||||
tasm -t%CPUType% -g3 -fFF -dROMWBW sysconf.asm sysconf.bin sysconf_bin.lst || exit /b
|
||||
@@ -106,30 +105,32 @@ tasm -t%CPUType% -g3 -fFF -dCPM sysconf.asm sysconf.com sysconf_com.lst || exit
|
||||
::
|
||||
:: Create additional ROM bank images by assembling components into
|
||||
:: 32K chunks which can be concatenated later. Note that
|
||||
:: osimg_small is a special case because it is 20K in size. This
|
||||
:: appboot is a special case because it is 20K in size. This
|
||||
:: image is subsequently used to generate the .com loadable file.
|
||||
::
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin osimg.bin || exit /b
|
||||
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin osimg1.bin || exit /b
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin + ..\cpm22\cpm_wbw.bin rom1.bin || exit /b
|
||||
copy /b ..\Forth\camel80.bin + nascom.bin + ..\tastybasic\src\tastybasic.bin + game.bin + eastaegg.bin + %NETBOOT% + updater.bin + sysconf.bin + usrrom.bin rom2.bin || exit /b
|
||||
|
||||
if %Platform%==S100 (
|
||||
zxcc slr180 -s100mon/fh
|
||||
zxcc mload25 -s100mon || exit /b
|
||||
copy /b s100mon.com osimg2.bin || exit /b
|
||||
copy /b s100mon.com rom3.bin || exit /b
|
||||
) else (
|
||||
copy /b imgpad2.bin osimg2.bin || exit /b
|
||||
copy nul rom3.bin
|
||||
)
|
||||
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin osimg_small.bin || exit /b
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_wbw.bin appboot.bin || exit /b
|
||||
|
||||
::
|
||||
:: Inject one byte checksum at the last byte of all 4 ROM bank image files.
|
||||
:: This means that computing a checksum over any of the 32K osimg banks
|
||||
:: should yield a result of zero.
|
||||
:: This means that computing a checksum over any of the 32K rom banks
|
||||
:: should yield a result of zero. Any bank image file that is not
|
||||
:: 32K will be automatically normalized to 32K by the srec_cat
|
||||
:: formula (extended or truncated)!!!
|
||||
::
|
||||
|
||||
for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
|
||||
for %%f in (hbios_rom.bin rom1.bin rom2.bin rom3.bin) do (
|
||||
"%TOOLS%\srecord\srec_cat.exe" %%f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o %%f -Binary || exit /b
|
||||
)
|
||||
|
||||
@@ -150,13 +151,13 @@ for %%f in (hbios_rom.bin osimg.bin osimg1.bin osimg2.bin) do (
|
||||
::
|
||||
|
||||
if %ROMSize% gtr 0 (
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%ROMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b
|
||||
) else (
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + osimg.bin + osimg1.bin + osimg2.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + osimg_small.bin %ROMName%.com || exit /b
|
||||
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin + ..\RomDsk\rom%RAMDiskSize%_wbw.dat %ROMName%.rom || exit /b
|
||||
copy /b hbios_rom.bin + rom1.bin + rom2.bin + rom3.bin %ROMName%.upd || exit /b
|
||||
copy /b hbios_app.bin + appboot.bin %ROMName%.com || exit /b
|
||||
)
|
||||
|
||||
::
|
||||
@@ -187,14 +188,14 @@ call :asm dbgmon || exit /b
|
||||
call :asm romldr || exit /b
|
||||
|
||||
:: Create the OS bank
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin osimg.bin || exit /b
|
||||
copy /b romldr.bin + dbgmon.bin + ..\zsdos\zsys_una.bin + ..\cpm22\cpm_una.bin rom2.bin || exit /b
|
||||
|
||||
:: Copy OS Bank and ROM Disk image files to output
|
||||
copy /b osimg.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b
|
||||
copy /b rom2.bin ..\..\Binary\UNA_WBW_SYS.bin || exit /b
|
||||
copy /b ..\RomDsk\rom%ROMDiskSize%_una.dat ..\..\Binary\UNA_WBW_ROM%ROMDiskSize%.bin || exit /b
|
||||
|
||||
:: Create the final ROM image
|
||||
copy /b ..\UBIOS\UNA-BIOS.BIN + osimg.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b
|
||||
copy /b ..\UBIOS\UNA-BIOS.BIN + rom2.bin + ..\UBIOS\FSFAT.BIN + ..\RomDsk\rom%ROMDiskSize%_una.dat %ROMName%.rom || exit /b
|
||||
|
||||
:: Copy to output
|
||||
copy %ROMName%.rom ..\..\Binary || exit /b
|
||||
@@ -229,8 +230,8 @@ call Build MK4 std || exit /b
|
||||
call Build RCZ80 std || exit /b
|
||||
call Build RCEZ80 std || exit /b
|
||||
call Build RCZ80 kio_std || exit /b
|
||||
call Build RCZ80 easy_std || exit /b
|
||||
call Build RCZ80 tiny_std || exit /b
|
||||
call Build EZZ80 easy_std || exit /b
|
||||
call Build EZZ80 tiny_std || exit /b
|
||||
call Build RCZ80 skz_std || exit /b
|
||||
call Build RCZ80 zrc_std || exit /b
|
||||
call Build RCZ80 zrc_ram_std || exit /b
|
||||
|
||||
@@ -27,7 +27,7 @@ $ErrorAction = 'Stop'
|
||||
# UNA BIOS is simply imbedded, it is not built here.
|
||||
#
|
||||
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80", "RCEZ80"
|
||||
$PlatformListZ80 = "SBC", "MBC", "ZETA", "ZETA2", "RCZ80", "EZZ80", "Z80RETRO", "DUO", "UNA", "HEATH", "MON", "NABU", "FZ80", "RCEZ80"
|
||||
$PlatformListZ180 = "N8", "MK4", "RCZ180", "SCZ180", "DYNO", "RPH", "S100", "EPITX", "GMZ180"
|
||||
$PlatformListZ280 = "RCZ280"
|
||||
|
||||
|
||||
@@ -21,8 +21,8 @@ if [ "${ROM_PLATFORM}" == "dist" ] ; then
|
||||
ROM_PLATFORM="RCEZ80"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="kio_std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="easy_std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="tiny_std"; bash Build.sh
|
||||
ROM_PLATFORM="EZZ80"; ROM_CONFIG="easy_std"; bash Build.sh
|
||||
ROM_PLATFORM="EZZ80"; ROM_CONFIG="tiny_std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="skz_std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_std"; bash Build.sh
|
||||
ROM_PLATFORM="RCZ80"; ROM_CONFIG="zrc_ram_std"; bash Build.sh
|
||||
|
||||
@@ -46,9 +46,7 @@
|
||||
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
|
||||
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
|
||||
;
|
||||
#INCLUDE "cfg_RCZ80.asm"
|
||||
;
|
||||
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
|
||||
#INCLUDE "cfg_EZZ80.asm"
|
||||
;
|
||||
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
|
||||
@@ -46,9 +46,7 @@
|
||||
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
|
||||
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
|
||||
;
|
||||
#INCLUDE "cfg_RCZ80.asm"
|
||||
;
|
||||
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
|
||||
#INCLUDE "cfg_EZZ80.asm"
|
||||
;
|
||||
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
|
||||
54
Source/HBIOS/Config/RCZ80_xosera.asm
Normal file
@@ -0,0 +1,54 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW CUSTOM USER BUILD SETTINGS EXAMPLE FOR RCBUS Z80
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE IS AN EXAMPLE OF A CUSTOM USER SETTINGS FILE. THESE
|
||||
; SETTINGS OVERRIDE THE DEFAULT SETTINGS OF THE INHERITED FILES AS
|
||||
; DESIRED BY A USER.
|
||||
;
|
||||
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
|
||||
;
|
||||
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
|
||||
; |
|
||||
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
|
||||
; |
|
||||
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
|
||||
; |
|
||||
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
|
||||
;
|
||||
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
|
||||
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
|
||||
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
|
||||
; OVERRIDE THESE SETTINGS AS DESIRED.
|
||||
;
|
||||
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
|
||||
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
|
||||
; MODIFIED.
|
||||
;
|
||||
; THIS FILE EXEMPLIFIES THE IDEAL WAY TO CREATE A USER SPECIFIC BUILD
|
||||
; CONFIGURATION. NOTICE THAT IT INCLUDES THE DEFAULT BUILD SETTINGS
|
||||
; FILE AND OVERRIDES SOME DESIRED SETTINGS.
|
||||
;
|
||||
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
|
||||
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
|
||||
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
|
||||
;
|
||||
; PLEASE REFER TO THE CUSTOM BUILD INSTRUCTIONS (README.TXT) IN THE
|
||||
; SOURCE DIRECTORY (TWO DIRECTORIES ABOVE THIS ONE).
|
||||
;
|
||||
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
|
||||
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
|
||||
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
|
||||
;
|
||||
; THIS FILE ENABLES THE XOSERA DRIVER WITH A BASE ADDRESS Of 0XE0
|
||||
; AND DISPLAY SIZE OF 80 COLUMNS X 30 ROWS
|
||||
;
|
||||
#INCLUDE "Config/RCZ80_std.asm" ; INHERIT FROM OFFICIAL BUILD SETTINGS
|
||||
;
|
||||
XOSENABLE .SET TRUE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
|
||||
XOS_BASE .SET $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
|
||||
XOSSIZ .SET V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
|
||||
;
|
||||
AUTOCON .SET FALSE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
VDAEMU_SERKBD .SET $0 ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
@@ -1,7 +1,7 @@
|
||||
|
||||
MOREDIFF = game.bin hbios_rom.bin nascom.bin usrrom.bin \
|
||||
dbgmon.bin hbios_app.bin imgpad2.bin osimg1.bin osimg2.bin romldr.bin \
|
||||
eastaegg.bin hbios_img.bin osimg.bin game.bin updater.bin usrrom.bin
|
||||
dbgmon.bin hbios_app.bin imgpad2.bin rom2.bin rom3.bin romldr.bin \
|
||||
eastaegg.bin hbios_img.bin rom1.bin game.bin updater.bin usrrom.bin
|
||||
|
||||
DEST = ../../Binary
|
||||
TOOLS =../../Tools
|
||||
@@ -58,37 +58,37 @@ ROMNAME=${ROM_PLATFORM}_${ROM_CONFIG}
|
||||
# $(info TASM=$(TASM))
|
||||
|
||||
$(OBJECTS) : $(ROMDEPS)
|
||||
@cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >osimg.bin
|
||||
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >osimg_small.bin
|
||||
@cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin ../CPM22/cpm_$(BIOS).bin >rom1.bin
|
||||
cat romldr.bin dbgmon.bin ../ZSDOS/zsys_$(BIOS).bin >appboot.bin
|
||||
if [ $(ROM_PLATFORM) = DUO ] ; then \
|
||||
cat netboot-duo.mod >netboot.mod ; \
|
||||
else \
|
||||
cat netboot-mt.mod >netboot.mod ; \
|
||||
fi
|
||||
if [ $(ROM_PLATFORM) != UNA ] ; then \
|
||||
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >osimg1.bin ; \
|
||||
cat camel80.bin nascom.bin tastybasic.bin game.bin eastaegg.bin netboot.mod updater.bin sysconf.bin usrrom.bin >rom2.bin ; \
|
||||
if [ $(ROM_PLATFORM) = S100 ] ; then \
|
||||
cat s100mon.bin >osimg2.bin ; \
|
||||
cat s100mon.bin >rom3.bin ; \
|
||||
else \
|
||||
cat imgpad2.bin >osimg2.bin ; \
|
||||
>rom3.bin ; \
|
||||
fi ; \
|
||||
for f in hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ; do \
|
||||
for f in hbios_rom.bin rom1.bin rom2.bin rom3.bin ; do \
|
||||
srec_cat $$f -Binary -Crop 0 0x7FFF -Checksum_Negative_Big_Endian 0x7FFF 1 1 -o $$f -Binary ; \
|
||||
done \
|
||||
fi
|
||||
if [ $(ROM_PLATFORM) = UNA ] ; then \
|
||||
cp osimg.bin $(DEST)/UNA_WBW_SYS.bin ; \
|
||||
cp rom1.bin $(DEST)/UNA_WBW_SYS.bin ; \
|
||||
cp ../RomDsk/rom$(ROMDISKSIZE)_una.dat $(DEST)/UNA_WBW_ROM$(ROMDISKSIZE).bin ; \
|
||||
cat ../UBIOS/UNA-BIOS.BIN osimg.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \
|
||||
cat ../UBIOS/UNA-BIOS.BIN rom1.bin ../UBIOS/FSFAT.BIN ../RomDsk/rom$(ROMDISKSIZE)_una.dat >$(ROMNAME).rom ; \
|
||||
else \
|
||||
if [ $(ROMSIZE) -gt 0 ] ; then \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
|
||||
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(ROMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \
|
||||
else \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin osimg.bin osimg1.bin osimg2.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin osimg_small.bin > $(ROMNAME).com ; \
|
||||
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin ../RomDsk/rom$(RAMDISKSIZE)_wbw.dat >$(ROMNAME).rom ; \
|
||||
cat hbios_rom.bin rom1.bin rom2.bin rom3.bin >$(ROMNAME).upd ; \
|
||||
cat hbios_app.bin appboot.bin > $(ROMNAME).com ; \
|
||||
fi \
|
||||
fi
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
DIST_OBJECTS := \
|
||||
DYNO_std MK4_std N8_std RCZ180_ext RCZ180_nat RCZ180_z1rcc \
|
||||
RCZ280_ext RCZ280_nat RCZ280_zz80mb RCZ280_zzrcc RCZ280_zzrcc_ram \
|
||||
RCZ80_std RCZ80_kio RCZ80_easy RCZ80_tiny RCZ80_skz RCZ80_zrc \
|
||||
RCZ80_std RCZ80_kio EZZ80_easy EZZ80_tiny RCZ80_skz RCZ80_zrc \
|
||||
RCZ80_zrc_ram RCZ80_zrc512 RPH_std SBC_std SBC_simh MBC_std \
|
||||
DUO_std SCZ180_sc126 SCZ180_sc130 SCZ180_sc131 SCZ180_sc140 \
|
||||
SCZ180_sc503 SCZ180_sc700 S100_std UNA_std Z80RETRO_std \
|
||||
|
||||
@@ -96,6 +96,8 @@ CTCOSC .SET (7372800/8) ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $56 ; PCF8584 BASE I/O ADDRESS
|
||||
PCFCLK .SET PCFCLK_12 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
|
||||
PCFTRNS .SET PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -92,7 +92,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
398
Source/HBIOS/cfg_EZZ80.asm
Normal file
@@ -0,0 +1,398 @@
|
||||
;
|
||||
;==================================================================================================
|
||||
; ROMWBW PLATFORM CONFIGURATION DEFAULTS FOR PLATFORM: EZZ80
|
||||
;==================================================================================================
|
||||
;
|
||||
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD,
|
||||
; YOU SHOULD OVERRIDE SETTINGS YOU WANT USING A CONFIGURATION FILE IN
|
||||
; THE CONFIG DIRECTORY UNDER THIS DIRECTORY.
|
||||
;
|
||||
; THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. IT IS MAINTAINED BY THE
|
||||
; AUTHORS OF ROMWBW. TO OVERRIDE SETTINGS YOU SHOULD USE A
|
||||
; CONFIGURATION FILE IN THE CONFIG DIRECTORY UNDER THIS DIRECTORY.
|
||||
;
|
||||
; ROMWBW USES CASCADING CONFIGURATION FILES AS INDICATED BELOW:
|
||||
;
|
||||
; cfg_MASTER.asm - MASTER: CONFIGURATION FILE DEFINES ALL POSSIBLE ROMWBW SETTINGS
|
||||
; |
|
||||
; +-> cfg_<platform>.asm - PLATFORM: DEFAULT SETTINGS FOR SPECIFIC PLATFORM
|
||||
; |
|
||||
; +-> Config/<plt>_std.asm - BUILD: SETTINGS FOR EACH OFFICIAL DIST BUILD
|
||||
; |
|
||||
; +-> Config/<plt>_<cust>.asm - USER: CUSTOM USER BUILD SETTINGS
|
||||
;
|
||||
; THE TOP (MASTER CONFIGURATION) FILE DEFINES ALL POSSIBLE ROMWBW
|
||||
; CONFIGURATION SETTINGS. EACH FILE BELOW THE MASTER CONFIGURATION FILE
|
||||
; INHERITS THE CUMULATIVE SETTINGS OF THE FILES ABOVE IT AND MAY
|
||||
; OVERRIDE THESE SETTINGS AS DESIRED.
|
||||
;
|
||||
; OTHER THAN THE TOP MASTER FILE, EACH FILE MUST "#INCLUDE" ITS PARENT
|
||||
; FILE (SEE #INCLUDE STATEMENT BELOW). THE TOP TWO FILES SHOULD NOT BE
|
||||
; MODIFIED. TO CUSTOMIZE YOUR BUILD SETTINGS YOU SHOULD MODIFY THE
|
||||
; DEFAULT BUILD SETTINGS (Config/<platform>_std.asm) OR PREFERABLY
|
||||
; CREATE AN OPTIONAL CUSTOM USER SETTINGS FILE THAT INCLUDES THE DEFAULT
|
||||
; BUILD SETTINGS FILE (SEE EXAMPLE Config/SBC_user.asm).
|
||||
;
|
||||
; BY CREATING A CUSTOM USER SETTINGS FILE, YOU ARE LESS LIKELY TO BE
|
||||
; IMPACTED BY FUTURE CHANGES BECAUSE YOU WILL BE INHERITING MOST
|
||||
; OF YOUR SETTINGS WHICH WILL BE UPDATED BY AUTHORS AS ROMWBW EVOLVES.
|
||||
;
|
||||
; *** WARNING: ASIDE FROM THE MASTER CONFIGURATION FILE, YOU MUST USE
|
||||
; ".SET" TO OVERRIDE SETTINGS. THE ASSEMBLER WILL ERROR IF YOU ATTEMPT
|
||||
; TO USE ".EQU" BECAUSE IT WON'T LET YOU REDEFINE A SETTING WITH ".EQU".
|
||||
;
|
||||
#DEFINE PLATFORM_NAME "EZZ80", " [", CONFIG, "]" ; TEXT LABEL OF THIS CONFIG IN STARTUP MESSAGES
|
||||
#DEFINE BOOT_DEFAULT "H" ; DEFAULT BOOT LOADER CMD FOR EMPTY CMD LINE
|
||||
#DEFINE AUTO_CMD "" ; AUTO CMD WHEN BOOT_TIMEOUT IS ENABLED
|
||||
#DEFINE DEFSERCFG SER_115200_8N1 | SER_RTS ; DEFAULT SERIAL CONFIGURATION
|
||||
;
|
||||
#INCLUDE "cfg_MASTER.asm"
|
||||
;
|
||||
PLATFORM .SET PLT_EZZ80 ; PLT_[SBC|ZETA|ZETA2|N8|MK4|UNA|RCZ80|RCEZ80|RCZ180|EZZ80|SCZ180|GMZ180|DYNO|RCZ280|MBC|RPH|Z80RETRO|S100|DUO|HEATH|EPITX|MON|STDZ180|NABU|FZ80]
|
||||
CPUFAM .SET CPU_Z80 ; CPU FAMILY: CPU_[Z80|Z180|Z280|EZ80]
|
||||
BIOS .SET BIOS_WBW ; HARDWARE BIOS: BIOS_[WBW|UNA]
|
||||
BATCOND .SET FALSE ; ENABLE LOW BATTERY WARNING MESSAGE
|
||||
HBIOS_MUTEX .SET FALSE ; ENABLE REENTRANT CALLS TO HBIOS (ADDS OVERHEAD)
|
||||
USELZSA2 .SET TRUE ; ENABLE FONT COMPRESSION
|
||||
TICKFREQ .SET 50 ; DESIRED PERIODIC TIMER INTERRUPT FREQUENCY (HZ)
|
||||
;
|
||||
BOOT_TIMEOUT .SET -1 ; AUTO BOOT TIMEOUT IN SECONDS, -1 TO DISABLE, 0 FOR IMMEDIATE
|
||||
BOOT_DELAY .SET 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
|
||||
BOOT_PRETTY .SET FALSE ; BOOT WITH PRETTY PLATFORM NAME
|
||||
BT_REC_TYPE .SET BT_REC_NONE ; BOOT RECOVERY METHOD TO USE: BT_REC_[NONE|FORCE|SBCB0|SBC1B|SBCRI|DUORI]
|
||||
AUTOCON .SET TRUE ; ENABLE CONSOLE TAKEOVER AT LOADER PROMPT
|
||||
STRICTPART .SET TRUE ; ENFORCE STRICT PARTITION TABLE VALIDATION
|
||||
;
|
||||
CPUSPDCAP .SET SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
|
||||
CPUSPDDEF .SET SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
|
||||
CPUOSC .SET 7372800 ; CPU OSC FREQ IN MHZ
|
||||
INTMODE .SET 1 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
|
||||
;
|
||||
RAMSIZE .SET 512 ; SIZE OF RAM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
ROMSIZE .SET 512 ; SIZE OF ROM IN KB (MUST MATCH YOUR HARDWARE!!!)
|
||||
APP_BNKS .SET $FF ; BANKS TO RESERVE FOR APP USE ($FF FOR AUTO SIZING)
|
||||
MEMMGR .SET MM_Z2 ; MEMORY MANAGER: MM_[SBC|Z2|N8|Z180|Z280|MBC|RPH|MON|EZ512]
|
||||
MPGSEL_0 .SET $78 ; Z2 MEM MGR BANK 0 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_1 .SET $79 ; Z2 MEM MGR BANK 1 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_2 .SET $7A ; Z2 MEM MGR BANK 2 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGSEL_3 .SET $7B ; Z2 MEM MGR BANK 3 PAGE SELECT REG (WRITE ONLY)
|
||||
MPGENA .SET $7C ; Z2 MEM MGR PAGING ENABLE REGISTER (BIT 0, WRITE ONLY)
|
||||
;
|
||||
RTCIO .SET $C0 ; RTC LATCH REGISTER ADR
|
||||
;
|
||||
KIOENABLE .SET FALSE ; ENABLE ZILOG KIO SUPPORT
|
||||
KIOBASE .SET $80 ; KIO BASE I/O ADDRESS
|
||||
;
|
||||
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
|
||||
CTCDEBUG .SET FALSE ; ENABLE CTC DRIVER DEBUG OUTPUT
|
||||
CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
CTCMODE .SET CTCMODE_TIM16 ; CTC MODE: CTCMODE_[NONE|CTR|TIM16|TIM256]
|
||||
CTCPRE .SET 256 ; PRESCALE CONSTANT (1-256)
|
||||
CTCPRECH .SET 2 ; PRESCALE CHANNEL (0-3)
|
||||
CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
SKZENABLE .SET FALSE ; ENABLE SERGEY'S Z80-512K FEATURES
|
||||
SKZDIV .SET DIV_1 ; UART CLK (CLK2) DIVIDER FOR Z80-512K
|
||||
;
|
||||
WDOGMODE .SET WDOG_NONE ; WATCHDOG MODE: WDOG_[NONE|EZZ80|SKZ]
|
||||
WDOGIO .SET $6F ; WATCHDOG REGISTER ADR
|
||||
;
|
||||
FPLED_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL LEDS
|
||||
FPLED_IO .SET $00 ; FP: PORT ADDRESS FOR FP LEDS
|
||||
FPLED_INV .SET FALSE ; FP: LED BITS ARE INVERTED
|
||||
FPLED_DSKACT .SET TRUE ; FP: ENABLES DISK I/O ACTIVITY ON FP LEDS
|
||||
FPSW_ENABLE .SET FALSE ; FP: ENABLES FRONT PANEL SWITCHES
|
||||
FPSW_IO .SET $00 ; FP: PORT ADDRESS FOR FP SWITCHES
|
||||
FPSW_INV .SET FALSE ; FP: SWITCH BITS ARE INVERTED
|
||||
;
|
||||
DIAGLVL .SET DL_CRITICAL ; ERROR LEVEL REPORTING
|
||||
;
|
||||
LEDENABLE .SET FALSE ; ENABLES STATUS LED (SINGLE LED)
|
||||
LEDMODE .SET LEDMODE_STD ; LEDMODE_[STD|SC|RTC|NABU]
|
||||
LEDPORT .SET $0E ; STATUS LED PORT ADDRESS
|
||||
LEDDISKIO .SET TRUE ; ENABLES DISK I/O ACTIVITY ON STATUS LED
|
||||
;
|
||||
DSKYENABLE .SET FALSE ; ENABLES DSKY FUNCTIONALITY
|
||||
DSKYDSKACT .SET TRUE ; ENABLES DISK ACTIVITY ON DSKY DISPLAY
|
||||
ICMENABLE .SET FALSE ; ENABLES ORIGINAL DSKY ICM DRIVER (7218)
|
||||
ICMPPIBASE .SET $60 ; BASE I/O ADDRESS OF ICM PPI
|
||||
PKDENABLE .SET FALSE ; ENABLES DSKY NG PKD DRIVER (8259)
|
||||
PKDPPIBASE .SET $60 ; BASE I/O ADDRESS OF PKD PPI
|
||||
PKDOSC .SET 3000000 ; OSCILLATOR FREQ FOR PKD (IN HZ)
|
||||
H8PENABLE .SET FALSE ; ENABLES HEATH H8 FRONT PANEL
|
||||
LCDENABLE .SET FALSE ; ENABLE LCD DISPLAY
|
||||
LCDBASE .SET $DA ; BASE I/O ADDRESS OF LCD CONTROLLER
|
||||
GM7303ENABLE .SET FALSE ; ENABLES THE GM7303 BOARD WITH 16X2 LCD
|
||||
;
|
||||
BOOTCON .SET 0 ; BOOT CONSOLE DEVICE
|
||||
SECCON .SET $FF ; SECONDARY CONSOLE DEVICE
|
||||
CRTACT .SET FALSE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
|
||||
VDAEMU .SET EMUTYP_ANSI ; VDA EMULATION: EMUTYP_[TTY|ANSI]
|
||||
VDAEMU_SERKBD .SET $FF ; VDA EMULATION: SERIAL KBD UNIT #, OR $FF FOR HW KBD
|
||||
ANSITRACE .SET 1 ; ANSI DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKTRACE .SET 1 ; PPK DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
KBDTRACE .SET 1 ; KBD DRIVER TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPKKBLOUT .SET KBD_US ; PPK KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDKBLOUT .SET KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
MKYKBLOUT .SET KBD_US ; KBD KEYBOARD LANGUAGE: KBD_[US|DE]
|
||||
KBDINTS .SET FALSE ; ENABLE KBD (PS2) KEYBOARD INTERRUPTS
|
||||
;
|
||||
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
|
||||
DSRTCMODE .SET DSRTCMODE_STD ; DSRTC: OPERATING MODE: DSRTCMODE_[STD|MFPIC|K80W]
|
||||
DSRTCCHG .SET FALSE ; DSRTC: FORCE BATTERY CHARGE ON (USE WITH CAUTION!!!)
|
||||
;
|
||||
DS1501RTCENABLE .SET FALSE ; DS1501RTC: ENABLE DS-1501 CLOCK DRIVER (DS1501RTC.ASM)
|
||||
DS1501RTC_BASE .SET $50 ; DS1501RTC: I/O BASE ADDRESS
|
||||
;
|
||||
BQRTCENABLE .SET FALSE ; BQRTC: ENABLE BQ4845 CLOCK DRIVER (BQRTC.ASM)
|
||||
BQRTC_BASE .SET $50 ; BQRTC: I/O BASE ADDRESS
|
||||
;
|
||||
INTRTCENABLE .SET FALSE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
|
||||
;
|
||||
RP5RTCENABLE .SET FALSE ; RP5C01 RTC BASED CLOCK (RP5RTC.ASM)
|
||||
;
|
||||
HTIMENABLE .SET FALSE ; ENABLE SIMH TIMER SUPPORT
|
||||
SIMRTCENABLE .SET FALSE ; ENABLE SIMH CLOCK DRIVER (SIMRTC.ASM)
|
||||
;
|
||||
DS7RTCENABLE .SET FALSE ; DS7RTC: ENABLE DS-1307 I2C CLOCK DRIVER (DS7RTC.ASM)
|
||||
DS7RTCMODE .SET DS7RTCMODE_PCF ; DS7RTC: OPERATING MODE: DS7RTCMODE_[PCF]
|
||||
;
|
||||
DS5RTCENABLE .SET FALSE ; DS5RTC: ENABLE DS-1305 SPI CLOCK DRIVER (DS5RTC.ASM)
|
||||
;
|
||||
SSERENABLE .SET FALSE ; SSER: ENABLE SIMPLE SERIAL DRIVER (SSER.ASM)
|
||||
SSERCFG .SET SER_9600_8N1 ; SSER: SERIAL LINE CONFIG
|
||||
SSERSTATUS .SET $FF ; SSER: STATUS PORT
|
||||
SSERDATA .SET $FF ; SSER: DATA PORT
|
||||
SSERIRDY .SET %00000001 ; SSER: INPUT READY BIT MASK
|
||||
SSERIINV .SET FALSE ; SSER: INPUT READY BIT INVERTED
|
||||
SSERORDY .SET %00000010 ; SSER: OUTPUT READY BIT MASK
|
||||
SSEROINV .SET FALSE ; SSER: OUTPUT READY BIT INVERTED
|
||||
;
|
||||
DUARTENABLE .SET FALSE ; DUART: ENABLE 2681/2692 SERIAL DRIVER (DUART.ASM)
|
||||
DUARTCNT .SET 1 ; DUART: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
DUART0BASE .SET $A0 ; DUART 0: BASE ADDRESS OF CHIP
|
||||
DUART0ACFG .SET DEFSERCFG ; DUART 0A: SERIAL LINE CONFIG
|
||||
DUART0BCFG .SET DEFSERCFG ; DUART 0B: SERIAL LINE CONFIG
|
||||
DUART1BASE .SET $40 ; DUART 1: BASE ADDRESS OF CHIP
|
||||
DUART1ACFG .SET DEFSERCFG ; DUART 1A: SERIAL LINE CONFIG
|
||||
DUART1BCFG .SET DEFSERCFG ; DUART 1B: SERIAL LINE CONFIG
|
||||
;
|
||||
UARTENABLE .SET FALSE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
|
||||
UARTCNT .SET 4 ; UART: NUMBER OF CHIPS TO DETECT (1-8)
|
||||
UARTOSC .SET 1843200 ; UART: OSC FREQUENCY IN MHZ
|
||||
UARTINTS .SET FALSE ; UART: INCLUDE INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
UART4UART .SET FALSE ; UART: SUPPORT 4UART ECB BOARD
|
||||
UART4UARTBASE .SET $C0 ; UART: BASE IO ADDRESS OF 4UART ECB BOARD
|
||||
UART0BASE .SET $80 ; UART 0: REGISTERS BASE ADR
|
||||
UART0CFG .SET DEFSERCFG ; UART 0: SERIAL LINE CONFIG
|
||||
UART1BASE .SET $88 ; UART 1: REGISTERS BASE ADR
|
||||
UART1CFG .SET DEFSERCFG ; UART 1: SERIAL LINE CONFIG
|
||||
UART2BASE .SET $A0 ; UART 2: REGISTERS BASE ADR
|
||||
UART2CFG .SET DEFSERCFG ; UART 2: SERIAL LINE CONFIG
|
||||
UART3BASE .SET $A8 ; UART 3: REGISTERS BASE ADR
|
||||
UART3CFG .SET DEFSERCFG ; UART 3: SERIAL LINE CONFIG
|
||||
UART4BASE .SET $FF ; UART 4: REGISTERS BASE ADR
|
||||
UART4CFG .SET DEFSERCFG ; UART 4: SERIAL LINE CONFIG
|
||||
UART5BASE .SET $FF ; UART 5: REGISTERS BASE ADR
|
||||
UART5CFG .SET DEFSERCFG ; UART 5: SERIAL LINE CONFIG
|
||||
UART6BASE .SET $FF ; UART 6: REGISTERS BASE ADR
|
||||
UART6CFG .SET DEFSERCFG ; UART 6: SERIAL LINE CONFIG
|
||||
UART7BASE .SET $FF ; UART 7: REGISTERS BASE ADR
|
||||
UART7CFG .SET DEFSERCFG ; UART 7: SERIAL LINE CONFIG
|
||||
;
|
||||
ASCIENABLE .SET FALSE ; ASCI: ENABLE Z180 ASCI SERIAL DRIVER (ASCI.ASM)
|
||||
;
|
||||
Z2UENABLE .SET FALSE ; Z2U: ENABLE Z280 UART SERIAL DRIVER (Z2U.ASM)
|
||||
;
|
||||
ACIAENABLE .SET FALSE ; ACIA: ENABLE MOTOROLA 6850 ACIA DRIVER (ACIA.ASM)
|
||||
ACIADEBUG .SET FALSE ; ACIA: ENABLE DEBUG OUTPUT
|
||||
ACIACNT .SET 1 ; ACIA: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
ACIA0BASE .SET $80 ; ACIA 0: REGISTERS BASE ADR
|
||||
ACIA0CLK .SET CPUOSC ; ACIA 0: OSC FREQ IN HZ
|
||||
ACIA0DIV .SET 1 ; ACIA 0: SERIAL CLOCK DIVIDER
|
||||
ACIA0CFG .SET DEFSERCFG ; ACIA 0: SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
ACIA1BASE .SET $40 ; ACIA 1: REGISTERS BASE ADR
|
||||
ACIA1CLK .SET CPUOSC ; ACIA 1: OSC FREQ IN HZ
|
||||
ACIA1DIV .SET 1 ; ACIA 1: SERIAL CLOCK DIVIDER
|
||||
ACIA1CFG .SET DEFSERCFG ; ACIA 1: SERIAL LINE CONFIG (SEE STD.ASM)
|
||||
;
|
||||
SIOENABLE .SET FALSE ; SIO: ENABLE ZILOG SIO SERIAL DRIVER (SIO.ASM)
|
||||
SIODEBUG .SET FALSE ; SIO: ENABLE DEBUG OUTPUT
|
||||
SIOBOOT .SET 0 ; SIO: REBOOT ON RCV CHAR (0=DISABLED)
|
||||
SIOCNT .SET 2 ; SIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
SIOINTS .SET TRUE ; SIO: INCLUDE SIO INTERRUPT SUPPORT UNDER IM1/2/3
|
||||
SIO0MODE .SET SIOMODE_RC ; SIO 0: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO0BASE .SET $80 ; SIO 0: REGISTERS BASE ADR
|
||||
SIO0ACLK .SET CPUOSC ; SIO 0A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0ACFG .SET DEFSERCFG ; SIO 0A: SERIAL LINE CONFIG
|
||||
SIO0ACTCC .SET -1 ; SIO 0A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO0BCLK .SET CPUOSC ; SIO 0B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO0BCFG .SET DEFSERCFG ; SIO 0B: SERIAL LINE CONFIG
|
||||
SIO0BCTCC .SET -1 ; SIO 0B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1MODE .SET SIOMODE_RC ; SIO 1: CHIP TYPE: SIOMODE_[STD|RC|SMB|ZP|Z80R]
|
||||
SIO1BASE .SET $84 ; SIO 1: REGISTERS BASE ADR
|
||||
SIO1ACLK .SET CPUOSC ; SIO 1A: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1ACFG .SET DEFSERCFG ; SIO 1A: SERIAL LINE CONFIG
|
||||
SIO1ACTCC .SET -1 ; SIO 1A: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
SIO1BCLK .SET CPUOSC ; SIO 1B: OSC FREQ IN HZ, ZP=2457600/4915200, RC/SMB=7372800
|
||||
SIO1BCFG .SET DEFSERCFG ; SIO 1B: SERIAL LINE CONFIG
|
||||
SIO1BCTCC .SET -1 ; SIO 1B: CTC CHANNEL 0=A, 1=B, 2=C, 3=D, -1 FOR NONE
|
||||
;
|
||||
XIOCFG .SET DEFSERCFG ; XIO: SERIAL LINE CONFIG
|
||||
;
|
||||
VDUENABLE .SET FALSE ; VDU: ENABLE VDU VIDEO/KBD DRIVER (VDU.ASM)
|
||||
CVDUENABLE .SET FALSE ; CVDU: ENABLE CVDU VIDEO/KBD DRIVER (CVDU.ASM)
|
||||
GDCENABLE .SET FALSE ; GDC: ENABLE 7220 GDC VIDEO/KBD DRIVER (GDC.ASM)
|
||||
TMSENABLE .SET FALSE ; TMS: ENABLE TMS9918 VIDEO/KBD DRIVER (TMS.ASM)
|
||||
TMSMODE .SET TMSMODE_MSX ; TMS: DRIVER MODE: TMSMODE_[SCG|N8|MSX|MSXKBD|MSXMKY|MBC|COLECO|DUO|NABU]
|
||||
TMS80COLS .SET FALSE ; TMS: ENABLE 80 COLUMN SCREEN, REQUIRES V9958
|
||||
TMSTIMENABLE .SET FALSE ; TMS: ENABLE TIMER INTERRUPTS (REQUIRES IM1)
|
||||
VGAENABLE .SET FALSE ; VGA: ENABLE VGA VIDEO/KBD DRIVER (VGA.ASM)
|
||||
VRCENABLE .SET FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .SET FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .SET FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
FVENABLE .SET FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
|
||||
;
|
||||
MDENABLE .SET TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .SET TRUE ; MD: ENABLE ROM DISK
|
||||
MDRAM .SET TRUE ; MD: ENABLE RAM DISK
|
||||
MDTRACE .SET 1 ; MD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
MDFFENABLE .SET FALSE ; MD: ENABLE FLASH FILE SYSTEM
|
||||
;
|
||||
FDENABLE .SET FALSE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
|
||||
FDMODE .SET FDMODE_RCWDC ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPFDC|MBC]
|
||||
FDCNT .SET 2 ; FD: NUMBER OF FLOPPY DRIVES ON THE INTERFACE (1-2)
|
||||
FDTRACE .SET 1 ; FD: TRACE LEVEL (0=NO,1=FATAL,2=ERRORS,3=ALL)
|
||||
FDMAUTO .SET TRUE ; FD: AUTO SELECT DEFAULT/ALTERNATE MEDIA FORMATS
|
||||
FD0TYPE .SET FDT_3HD ; FD 0: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
FD1TYPE .SET FDT_3HD ; FD 1: DRIVE TYPE: FDT_[3DD|3HD|5DD|5HD|8]
|
||||
;
|
||||
RFENABLE .SET FALSE ; RF: ENABLE RAM FLOPPY DRIVER
|
||||
;
|
||||
IDEENABLE .SET FALSE ; IDE: ENABLE IDE DISK DRIVER (IDE.ASM)
|
||||
IDETRACE .SET 1 ; IDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IDECNT .SET 1 ; IDE: NUMBER OF IDE INTERFACES TO DETECT (1-3), 2 DRIVES EACH
|
||||
IDE0MODE .SET IDEMODE_RC ; IDE 0: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
|
||||
IDE0BASE .SET $10 ; IDE 0: IO BASE ADDRESS
|
||||
IDE0DATLO .SET $00 ; IDE 0: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE0DATHI .SET $00 ; IDE 0: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE0A8BIT .SET TRUE ; IDE 0A (MASTER): 8 BIT XFER
|
||||
IDE0B8BIT .SET TRUE ; IDE 0B (MASTER): 8 BIT XFER
|
||||
IDE1MODE .SET IDEMODE_RC ; IDE 1: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
|
||||
IDE1BASE .SET $18 ; IDE 1: IO BASE ADDRESS
|
||||
IDE1DATLO .SET $00 ; IDE 1: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE1DATHI .SET $00 ; IDE 1: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE1A8BIT .SET TRUE ; IDE 1A (MASTER): 8 BIT XFER
|
||||
IDE1B8BIT .SET TRUE ; IDE 1B (MASTER): 8 BIT XFER
|
||||
IDE2MODE .SET IDEMODE_RC ; IDE 2: DRIVER MODE: IDEMODE_[DIO|DIDE|MK4|RC|GIDE]
|
||||
IDE2BASE .SET $20 ; IDE 2: IO BASE ADDRESS
|
||||
IDE2DATLO .SET $00 ; IDE 2: DATA LO PORT FOR 16-BIT I/O
|
||||
IDE2DATHI .SET $00 ; IDE 2: DATA HI PORT FOR 16-BIT I/O
|
||||
IDE2A8BIT .SET TRUE ; IDE 2A (MASTER): 8 BIT XFER
|
||||
IDE2B8BIT .SET TRUE ; IDE 2B (MASTER): 8 BIT XFER
|
||||
;
|
||||
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
|
||||
PPIDETRACE .SET 1 ; PPIDE: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPIDECNT .SET 1 ; PPIDE: NUMBER OF PPI CHIPS TO DETECT (1-3), 2 DRIVES PER CHIP
|
||||
PPIDE0BASE .SET $20 ; PPIDE 0: PPI REGISTERS BASE ADR
|
||||
PPIDE0A8BIT .SET FALSE ; PPIDE 0A (MASTER): 8 BIT XFER
|
||||
PPIDE0B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE1BASE .SET $00 ; PPIDE 1: PPI REGISTERS BASE ADR
|
||||
PPIDE1A8BIT .SET FALSE ; PPIDE 1A (MASTER): 8 BIT XFER
|
||||
PPIDE1B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
PPIDE2BASE .SET $00 ; PPIDE 2: PPI REGISTERS BASE ADR
|
||||
PPIDE2A8BIT .SET FALSE ; PPIDE 2A (MASTER): 8 BIT XFER
|
||||
PPIDE2B8BIT .SET FALSE ; PPIDE 0B (SLAVE): 8 BIT XFER
|
||||
;
|
||||
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
|
||||
SDMODE .SET SDMODE_PIO ; SD: DRIVER MODE: SDMODE_[JUHA|N8|CSIO|PPI|UART|DSD|MK4|SC|MT|USR|PIO|Z80R|EPITX|FZ80|GM|EZ512|K80W]
|
||||
SDPPIBASE .SET $60 ; SD: BASE I/O ADDRESS OF PPI FOR PPI MODDE
|
||||
SDCNT .SET 2 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT ONLY
|
||||
SDTRACE .SET 1 ; SD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SDCSIOFAST .SET FALSE ; SD: ENABLE TABLE-DRIVEN BIT INVERTER IN CSIO MODE
|
||||
SDMTSWAP .SET FALSE ; SD: SWAP THE LOGICAL ORDER OF THE SPI PORTS OF THE MT011
|
||||
;
|
||||
CHENABLE .SET FALSE ; CH: ENABLE CH375/376 USB SUPPORT
|
||||
CHTRACE .SET 1 ; CH: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHUSBTRACE .SET 1 ; CHUSB: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHSDTRACE .SET 1 ; CHSD: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
CHCNT .SET 2 ; CH: NUMBER OF BOARDS TO DETECT (1-2)
|
||||
CH0BASE .SET $3E ; CH 0: BASE I/O ADDRESS
|
||||
CH0USBENABLE .SET TRUE ; CH 0: ENABLE USB DISK
|
||||
CH0SDENABLE .SET FALSE ; CH 0: ENABLE SD DISK
|
||||
CH1BASE .SET $3C ; CH 1: BASE I/O ADDRESS
|
||||
CH1USBENABLE .SET TRUE ; CH 1: ENABLE USB DISK
|
||||
CH1SDENABLE .SET FALSE ; CH 1: ENABLE SD DISK
|
||||
;
|
||||
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
|
||||
;
|
||||
PPPENABLE .SET FALSE ; PPP: ENABLE ZETA PARALLEL PORT PROPELLER BOARD DRIVER (PPP.ASM)
|
||||
;
|
||||
ESPENABLE .SET FALSE ; ESP: ENABLE ESP32 IO BOARD DRIVER (ESP.ASM)
|
||||
;
|
||||
HDSKENABLE .SET FALSE ; HDSK: ENABLE SIMH HDSK DISK DRIVER (HDSK.ASM)
|
||||
;
|
||||
PIOENABLE .SET FALSE ; PIO: ENABLE ZILOG PIO DRIVER (PIO.ASM)
|
||||
PIOCNT .SET 2 ; PIO: NUMBER OF CHIPS TO DETECT (1-2), 2 CHANNELS PER CHIP
|
||||
PIO0BASE .SET $B8 ; PIO 0: REGISTERS BASE ADR
|
||||
PIO1BASE .SET $BC ; PIO 1: REGISTERS BASE ADR
|
||||
;
|
||||
LPTENABLE .SET FALSE ; LPT: ENABLE CENTRONICS PRINTER DRIVER (LPT.ASM)
|
||||
LPTMODE .SET LPTMODE_MG014 ; LPT: DRIVER MODE: LPTMODE_[NONE|SPP|MG014]
|
||||
LPTCNT .SET 1 ; LPT: NUMBER OF CHIPS TO DETECT (1-2)
|
||||
LPTTRACE .SET 1 ; LPT: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
LPT0BASE .SET $0C ; LPT 0: REGISTERS BASE ADR
|
||||
LPT1BASE .SET $00 ; LPT 1: REGISTERS BASE ADR
|
||||
;
|
||||
PPAENABLE .SET FALSE ; PPA: ENABLE IOMEGA ZIP DRIVE (PPA) DISK DRIVER (PPA.ASM)
|
||||
PPACNT .SET 1 ; PPA: NUMBER OF PPA DEVICES (1-2)
|
||||
PPATRACE .SET 1 ; PPA: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
PPAMODE .SET PPAMODE_MG014 ; PPA: DRIVER MODE: PPAMODE_[NONE|SPP|MG014]
|
||||
PPA0BASE .SET LPT0BASE ; PPA 0: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
PPA1BASE .SET LPT1BASE ; PPA 1: BASE I/O ADDRESS OF PPI FOR PPA
|
||||
;
|
||||
IMMENABLE .SET FALSE ; IMM: ENABLE IOMEGA ZIP PLUS DRIVE (IMM) DISK DRIVER (IMM.ASM)
|
||||
IMMCNT .SET 1 ; IMM: NUMBER OF IMM DEVICES (1-2)
|
||||
IMMTRACE .SET 1 ; IMM: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
IMMMODE .SET IMMMODE_MG014 ; IMM: DRIVER MODE: IMMMODE_[NONE|SPP|MG014]
|
||||
IMM0BASE .SET LPT0BASE ; IMM 0: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
IMM1BASE .SET LPT1BASE ; IMM 1: BASE I/O ADDRESS OF PPI FOR IMM
|
||||
;
|
||||
SYQENABLE .SET FALSE ; SYQ: ENABLE SYQUEST SPARQ DISK DRIVER (SYQ.ASM)
|
||||
SYQCNT .SET 1 ; SYQ: NUMBER OF SYQ DEVICES (1-2)
|
||||
SYQTRACE .SET 1 ; SYQ: TRACE LEVEL (0=NO,1=ERRORS,2=ALL)
|
||||
SYQMODE .SET IMMMODE_MG014 ; SYQ: DRIVER MODE: SYQMODE_[NONE|SPP|MG014]
|
||||
SYQ0BASE .SET LPT0BASE ; SYQ 0: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
SYQ1BASE .SET LPT1BASE ; SYQ 1: BASE I/O ADDRESS OF PPI FOR SYQ
|
||||
;
|
||||
PIO_4P .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB 4P BOARD
|
||||
PIO_ZP .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR ECB ZILOG PERIPHERALS BOARD (PIO.ASM)
|
||||
PIO_SBC .SET FALSE ; PIO: ENABLE PARALLEL PORT DRIVER FOR 8255 CHIP
|
||||
;
|
||||
UFENABLE .SET FALSE ; UF: ENABLE ECB USB FIFO DRIVER (UF.ASM)
|
||||
;
|
||||
SN76489ENABLE .SET FALSE ; SN: ENABLE SN76489 SOUND DRIVER
|
||||
AUDIOTRACE .SET FALSE ; ENABLE TRACING TO CONSOLE OF SOUND DRIVER
|
||||
SN7CLK .SET 3579545 ; SN: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
SNMODE .SET SNMODE_RC ; SN: DRIVER MODE: SNMODE_[NONE|RC|VGM|DUO]
|
||||
;
|
||||
AY38910ENABLE .SET FALSE ; AY: ENABLE AY-3-8910 / YM2149 SOUND DRIVER
|
||||
AY_CLK .SET 1789772 ; AY: PSG CLOCK FREQ, ASSUME MSX STD
|
||||
AYMODE .SET AYMODE_RCZ80 ; AY: DRIVER MODE: AYMODE_[SCG|N8|RCZ80|RCZ180|MSX|LINC|MBC|DUO|NABU]
|
||||
AY_FORCE .SET FALSE ; AY: BYPASS AUTO-DETECT, FORCED PRESENT
|
||||
;
|
||||
SPKENABLE .SET FALSE ; SPK: ENABLE RTC LATCH IOBIT SOUND DRIVER (SPK.ASM)
|
||||
;
|
||||
DMAENABLE .SET FALSE ; DMA: ENABLE DMA DRIVER (DMA.ASM)
|
||||
DMABASE .SET $E0 ; DMA: DMA BASE ADDRESS
|
||||
DMAMODE .SET DMAMODE_RC ; DMA: DMA MODE (NONE|ECB|Z180|Z280|RC|MBC|DUO)
|
||||
;
|
||||
YM2612ENABLE .SET FALSE ; YM2612: ENABLE YM2612 DRIVER
|
||||
VGMBASE .SET $C0 ; YM2612: BASE ADDRESS FOR VGM BOARD (YM2612/SN76489s/CTC)
|
||||
@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -91,7 +91,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -128,6 +128,8 @@ CTCOSC .EQU 614400 ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .EQU FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .EQU $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
PCFCLK .EQU PCFCLK_12 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
|
||||
PCFTRNS .EQU PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
|
||||
;
|
||||
EIPCENABLE .EQU FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
@@ -309,6 +311,9 @@ VRCENABLE .EQU FALSE ; VRC: ENABLE VGARC VIDEO/KBD DRIVER (VRC.ASM)
|
||||
SCONENABLE .EQU FALSE ; SCON: ENABLE S100 CONSOLE DRIVER (SCON.ASM)
|
||||
EFENABLE .EQU FALSE ; EF: ENABLE EF9345 VIDEO DRIVER (EF.ASM)
|
||||
FVENABLE .EQU FALSE ; FV: ENABLE FPGA VGA VIDEO DRIVER (FV.ASM)
|
||||
XOSENABLE .EQU FALSE ; XOSERA: ENABLE XOSERA VIDEO DRIVERS (XOSERA.ASM)
|
||||
XOS_BASE .EQU $20 ; XOSERA: I/O BASE ADDRESS (REQUIRES 32 BYTES)
|
||||
XOSSIZ .EQU V80X30 ; XOSERA: DISPLAY FORMAT [V80X30|V80X60]
|
||||
;
|
||||
MDENABLE .EQU TRUE ; MD: ENABLE MEMORY (ROM/RAM) DISK DRIVER (MD.ASM)
|
||||
MDROM .EQU TRUE ; MD: ENABLE ROM DISK
|
||||
|
||||
@@ -92,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET (4915200/8) ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
; ROMWBW PLATFORM CONFIGURATION DEFAULTS FOR PLATFORM: MON
|
||||
;==================================================================================================
|
||||
;
|
||||
; *** SUPPORT FOR THE MONSPUTER IS DEPRECATED ***
|
||||
;
|
||||
; THIS FILE DEFINES THE DEFAULT CONFIGURATION SETTINGS FOR THE PLATFORM
|
||||
; INDICATED ABOVE. THIS FILE SHOULD *NOT* NORMALLY BE CHANGED. INSTEAD,
|
||||
; YOU SHOULD OVERRIDE SETTINGS YOU WANT USING A CONFIGURATION FILE IN
|
||||
@@ -90,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -99,7 +99,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -95,7 +95,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -93,7 +93,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -96,6 +96,8 @@ CTCOSC .SET CPUOSC ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
PCFCLK .SET PCFCLK_8 ; PCF CLOCK BASE: PCFCLK_[3|443|6|8|12]
|
||||
PCFTRNS .SET PCFTRNS_90 ; PCF TRANSFER SPEED: PCFTRNS_[90|45|11|15]
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $B0 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -92,7 +92,6 @@ CTCTIMCH .SET 3 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET 614400 ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -97,7 +97,6 @@ CTCBASE .SET $88 ; CTC BASE I/O ADDRESS
|
||||
CTCTIMER .SET FALSE ; ENABLE CTC PERIODIC TIMER
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -95,7 +95,6 @@ CTCTIMCH .SET 1 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET 7372800 ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -84,7 +84,6 @@ KIOBASE .SET $80 ; KIO BASE I/O ADDRESS
|
||||
CTCENABLE .SET FALSE ; ENABLE ZILOG CTC SUPPORT
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -95,7 +95,6 @@ CTCTIMCH .SET 1 ; TIMER CHANNEL (0-3)
|
||||
CTCOSC .SET 921600 ; CTC CLOCK FREQUENCY
|
||||
;
|
||||
PCFENABLE .SET FALSE ; ENABLE PCF8584 I2C CONTROLLER
|
||||
PCFBASE .SET $F0 ; PCF8584 BASE I/O ADDRESS
|
||||
;
|
||||
EIPCENABLE .SET FALSE ; EIPC: ENABLE Z80 EIPC (Z84C15) INITIALIZATION
|
||||
;
|
||||
|
||||
@@ -418,12 +418,12 @@ DS7_CLP:LD C,(HL)
|
||||
RET
|
||||
;
|
||||
DS7_CLKTBL:
|
||||
.DB 04H, 00111111B, '/'
|
||||
.DB 05H, 00011111B, '/'
|
||||
.DB 06H, 11111111B, ' '
|
||||
.DB 02H, 00011111B, ':'
|
||||
.DB 01H, 01111111B, ':'
|
||||
.DB 00H, 01111111B, 00H
|
||||
.DB 04H, 00111111B, '/' ; DD: 31
|
||||
.DB 05H, 00011111B, '/' ; MM: 12
|
||||
.DB 06H, 11111111B, ' ' ; YY: 99
|
||||
.DB 02H, 01111111B, ':' ; SS: 59
|
||||
.DB 01H, 01111111B, ':' ; MM: 59
|
||||
.DB 00H, 00111111B, 00H ; HH: 24
|
||||
;
|
||||
DS7_BCD:PUSH HL
|
||||
LD HL,DS7_BUF ; READ VALUE FROM
|
||||
|
||||
@@ -522,8 +522,9 @@ HB_HCB_END .EQU $
|
||||
; THE FOLLOWING CODE IS RELOCATED TO THE TOP OF MEMORY TO HANDLE INVOCATION DISPATCHING
|
||||
;
|
||||
HB_PROXY_BEG .EQU $
|
||||
HBX_IMG .EQU $ ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK
|
||||
;
|
||||
.FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START
|
||||
;;; .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START
|
||||
.ORG HBX_LOC ; ADJUST FOR RELOCATION
|
||||
;
|
||||
; MEMORY LAYOUT:
|
||||
@@ -2950,6 +2951,46 @@ NXTMIO: LD A,(HL)
|
||||
#ENDIF
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ENABLE INTERRUPTS
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
INTTEST:
|
||||
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
|
||||
LD A,I
|
||||
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
|
||||
PRTX(STR_INTWARN) ; WARNING
|
||||
JR INTTEST_Z ; CONTINUE
|
||||
;
|
||||
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
|
||||
;
|
||||
INTTEST_Z:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_EI ; INTERRUPTS SHOULD BE OK NOW
|
||||
;
|
||||
; PERFORM A RESET OPERATION ON ALL CHARACTER DEVICES THAT HAVE BEEN
|
||||
; INSTALLED. THIS SHOULD CORRECT ANY PROBLEMS IF A PROBE DESTROYED
|
||||
; THE PROGRAMMING OF ANOTHER DEVICE.
|
||||
;
|
||||
LD A,(CIO_CNT) ; NUMBER OF CHARACTER DEVICES
|
||||
OR A ; CHECK FOR ZERO TO AVOID CRASHING
|
||||
JR Z,HB_CHRES_Z ; BYPASS IF NONE
|
||||
LD B,A ; SETUP LOOP COUNTER
|
||||
LD C,0 ; DEVICE INDEX
|
||||
HB_CHRES:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
LD B,BF_CIOINIT ; HBIOS RESET FUNCTION
|
||||
LD DE,$FFFF ; NO CONFIG CHANGES
|
||||
CALL CIO_DISPATCH ; CALL CIO DISPATCHER DIRECTLY
|
||||
POP BC ; RECOVER LOOP CONTROL
|
||||
INC C ; NEXT DEVICE
|
||||
DJNZ HB_CHRES ; LOOP AS NEEDED
|
||||
HB_CHRES_Z:
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ANNOUNCE HBIOS
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
@@ -3053,27 +3094,6 @@ HB_SPDTST:
|
||||
#ENDIF
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ENABLE INTERRUPTS
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
#IFDEF TESTING
|
||||
;
|
||||
INTTEST:
|
||||
; TEST TO SEE IF SOMEBODY ENABLED INTS EARLY!
|
||||
LD A,I
|
||||
JP PO,INTTEST_Z ; IF PO, INTS DISABLED AS EXPECTED
|
||||
PRTX(STR_INTWARN) ; WARNING
|
||||
JR INTTEST_Z ; CONTINUE
|
||||
;
|
||||
STR_INTWARN .TEXT "\r\n\r\nWARNING: INTERRUPTS ENABLED TOO EARLY!!!$"
|
||||
;
|
||||
INTTEST_Z:
|
||||
;
|
||||
#ENDIF
|
||||
;
|
||||
HB_EI ; INTERRUPTS SHOULD BE OK NOW
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; DISPLAY PLATFORM INFORMATION
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
@@ -3935,6 +3955,9 @@ HB_PCINITTBL:
|
||||
#IF (PIO_4P | PIO_ZP)
|
||||
.DW PIO_PREINIT
|
||||
#ENDIF
|
||||
#IF (XOSENABLE)
|
||||
.DW XOS_PREINIT
|
||||
#ENDIF
|
||||
;
|
||||
HB_PCINITTBLLEN .EQU (($ - HB_PCINITTBL) / 2)
|
||||
;
|
||||
@@ -4070,6 +4093,9 @@ HB_INITTBL:
|
||||
#IF (SCONENABLE)
|
||||
.DW SCON_INIT
|
||||
#ENDIF
|
||||
#IF (XOSENABLE)
|
||||
.DW XOS_INIT
|
||||
#ENDIF
|
||||
#IF (LPTENABLE)
|
||||
.DW LPT_INIT
|
||||
#ENDIF
|
||||
@@ -6191,7 +6217,7 @@ SYS_SETCPUSPD:
|
||||
;
|
||||
LD A,L ; CLK SPD TO ACCUM
|
||||
CP $FF ; NO CHANGE?
|
||||
JR Z,SYS_SETCPUSPD3 ; DONE IF SO
|
||||
JR Z,SYS_SETCPUSPD_OK ; DONE IF SO
|
||||
LD C,%00000000 ; HALF SPEED
|
||||
CP 0
|
||||
JR Z,SYS_SETCPUSPD1
|
||||
@@ -6203,12 +6229,12 @@ SYS_SETCPUSPD1:
|
||||
LD A,(HB_RTCVAL)
|
||||
AND ~%00001000 ; CLEAR SPEED BIT
|
||||
OR C ; IMPLEMENT NEW SPEED BIT
|
||||
#IF (PLATFORM == PLT_SBC)
|
||||
#IF (PLATFORM == PLT_SBC)
|
||||
; SBC SPEED BIT IS INVERTED, ADJUST IT
|
||||
LD A,C
|
||||
XOR %00001000
|
||||
LD C,A
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
LD (HB_RTCVAL),A ; SAVE IN SHADOW REGISTER
|
||||
OUT (RTCIO),A ; UPDATE HARDWARE REGISTER
|
||||
;
|
||||
@@ -6236,15 +6262,11 @@ SYS_SETCPUSPD2:
|
||||
ADC A,C ; C -> A; ADD CF FOR ROUNDING
|
||||
LD (CB_CPUMHZ),A ; SAVE IT
|
||||
;
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
; REINIT DELAY ROUTINE
|
||||
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
|
||||
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
|
||||
#ENDIF
|
||||
;
|
||||
SYS_SETCPUSPD3:
|
||||
XOR A
|
||||
RET
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (PLATFORM == PLT_HEATH)
|
||||
@@ -6283,14 +6305,11 @@ SYS_SETCPUSPD2:
|
||||
ADC A,C ; C -> A; ADD CF FOR ROUNDING
|
||||
LD (CB_CPUMHZ),A ; SAVE IT
|
||||
;
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
; REINIT DELAY ROUTINE
|
||||
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
|
||||
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
|
||||
#ENDIF
|
||||
;
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF (CPUFAM == CPU_Z180)
|
||||
@@ -6422,11 +6441,11 @@ SYS_SETCPUSPD4:
|
||||
LD A,L ; WORKING VALUE TO A
|
||||
OUT0 (Z180_DCNTL),A ; IMPLEMENT NEW VALUE
|
||||
;
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
#IF (CPUFAM != CPU_EZ80)
|
||||
; REINIT DELAY ROUTINE
|
||||
LD A,(CB_CPUMHZ) ; CPU SPEED TO ACCUM AND INIT
|
||||
CALL DELAY_INIT ; .. SPEED COMPENSATED DELAY
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
#IF ((INTMODE == 2) & (Z180_TIMER))
|
||||
; THE Z180 TIMER IS BASED ON CPU SPEED. SO HERE
|
||||
@@ -6454,10 +6473,16 @@ SYS_SETCPUSPD4:
|
||||
LD IY,ASCI1_CFG
|
||||
CALL ASCI_INITDEV
|
||||
#ENDIF
|
||||
#ENDIF
|
||||
;
|
||||
SYS_SETCPUSPD_OK:
|
||||
;
|
||||
LD B,BF_DSKYEVENT
|
||||
LD C,DSKY_EVT_CPUSPD
|
||||
CALL DSKY_DISPATCH
|
||||
;
|
||||
XOR A
|
||||
RET
|
||||
#ENDIF
|
||||
;
|
||||
SYS_SETCPUSPD_ERR:
|
||||
OR $FF ; NOT SUPPORTED
|
||||
@@ -8784,7 +8809,6 @@ PS_SDLPT .TEXT "LPT$"
|
||||
PS_SDESPCON .TEXT "ESPCON$"
|
||||
PS_SDESPSER .TEXT "ESPSER$"
|
||||
PS_SDSCON .TEXT "SCON$"
|
||||
PS_SDEF .TEXT "EF$"
|
||||
PS_SDSSER .TEXT "SSER$"
|
||||
PS_SDEZ80 .TEXT "EZ80$"
|
||||
;
|
||||
@@ -8813,6 +8837,7 @@ PS_VDVGA .TEXT "VGA$"
|
||||
PS_VDVRC .TEXT "VRC$"
|
||||
PS_VDEF .TEXT "EF$"
|
||||
PS_VDFV .TEXT "FV$"
|
||||
PS_VDXOSERA .TEXT "XOSERA$"
|
||||
;
|
||||
; VIDEO TYPE STRINGS
|
||||
;
|
||||
@@ -8961,6 +8986,15 @@ SIZ_INTRTC .EQU $ - ORG_INTRTC
|
||||
MEMECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DS7RTCENABLE)
|
||||
ORG_DS7RTC .EQU $
|
||||
#INCLUDE "ds7rtc.asm"
|
||||
SIZ_DS7RTC .EQU $ - ORG_DS7RTC
|
||||
.ECHO "DS7RTC occupies "
|
||||
.ECHO SIZ_DS7RTC
|
||||
.ECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (RP5RTCENABLE)
|
||||
ORG_RP5RTC .EQU $
|
||||
#INCLUDE "rp5rtc.asm"
|
||||
@@ -9141,6 +9175,15 @@ SIZ_FV .EQU $ - ORG_FV
|
||||
MEMECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (XOSENABLE)
|
||||
ORG_XOS .EQU $
|
||||
#INCLUDE "xosera.asm"
|
||||
SIZ_XOS .EQU $ - ORG_XOS
|
||||
MEMECHO "XOS occupies "
|
||||
MEMECHO SIZ_XOS
|
||||
MEMECHO " bytes.\n"
|
||||
#ENDIF
|
||||
;
|
||||
#IF (DMAENABLE)
|
||||
ORG_DMA .EQU $
|
||||
#INCLUDE "dma.asm"
|
||||
|
||||
@@ -194,7 +194,7 @@ PLT_UNA .EQU 6 ; UNA BIOS
|
||||
PLT_RCZ80 .EQU 7 ; RCBUS W/ Z80
|
||||
PLT_RCZ180 .EQU 8 ; RCBUS W/ Z180
|
||||
PLT_EZZ80 .EQU 9 ; EASY Z80
|
||||
PLT_SCZ180 .EQU 10 ; SCZ180
|
||||
PLT_SCZ180 .EQU 10 ; SMALL COMPUTER CENTRAL Z180
|
||||
PLT_DYNO .EQU 11 ; DYNO MICRO-ATX MOTHERBOARD
|
||||
PLT_RCZ280 .EQU 12 ; RCBUS W/ Z280
|
||||
PLT_MBC .EQU 13 ; MULTI BOARD COMPUTER
|
||||
@@ -204,9 +204,9 @@ PLT_S100 .EQU 16 ; S100 COMPUTERS Z180 SYSTEM
|
||||
PLT_DUO .EQU 17 ; DUODYNE Z80 SYSTEM
|
||||
PLT_HEATH .EQU 18 ; HEATHKIT H8 Z80 SYSTEM
|
||||
PLT_EPITX .EQU 19 ; Z180 MINI-ITX
|
||||
PLT_MON .EQU 20 ; MONSPUTER
|
||||
PLT_MON .EQU 20 ; MONSPUTER (DEPRECATED)
|
||||
PLT_GMZ180 .EQU 21 ; GENESIS Z180 SYSTEM
|
||||
PLT_NABU .EQU 22 ; NABU PERSONAL COMPUTER
|
||||
PLT_NABU .EQU 22 ; NABU PC W/ ROMWBW OPTION BOARD
|
||||
PLT_FZ80 .EQU 23 ; S100 FPGA Z80
|
||||
PLT_RCEZ80 .EQU 24 ; RCBUS W/ eZ80
|
||||
;
|
||||
@@ -450,6 +450,7 @@ VDADEV_VGA .EQU $04 ; ECB VGA3 - HITACHI HD6445
|
||||
VDADEV_VRC .EQU $05 ; VGARC
|
||||
VDADEV_EF .EQU $06 ; EF9345
|
||||
VDADEV_FV .EQU $07 ; S100 FPGA VGA
|
||||
VDADEV_XOSERA .EQU $08 ; XOSERA RCBUS
|
||||
;
|
||||
; SOUND DEVICE IDS
|
||||
;
|
||||
|
||||
@@ -1,146 +1,224 @@
|
||||
;
|
||||
; The was extracted out of STD.ASM, so can be included
|
||||
; in BIOS apps that are NOT in HBIOS directory!
|
||||
;==================================================================================================
|
||||
; ROMWBW CPU MEMORY AND ROM BANK LAYOUT DEFINITIONS
|
||||
;==================================================================================================
|
||||
;
|
||||
; =============
|
||||
; MEMORY LAYOUT
|
||||
; =============
|
||||
; THIS FILE DEFINES THE MEMORY LAYOUT OF THE CPU ADDRESS SPACE AND
|
||||
; THE LAYOUT OF CODE IMAGES IN ROM. THIS FILE IS INTENDED TO BE
|
||||
; INCLUDED IN SOURCE FILES AS NEEDED TO ADAPT TO THE ROMWBW BUILD
|
||||
; CONFIGURATION.
|
||||
;
|
||||
SYS_SIZ .EQU $3000 ; COMBINED SIZE OF SYSTEM AREA (OS + HBIOS PROXY)
|
||||
HBBUF_SIZ .EQU 1024 ; INVARIANT HBIOS PHYSICAL DISK BUFFER, 1K
|
||||
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
|
||||
CPM_SIZ .EQU SYS_SIZ - HBX_SIZ ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
|
||||
CCP_SIZ .EQU $800 ; INVARIANT SIZE OF CCP
|
||||
BDOS_SIZ .EQU $E00 ; INVARIANT SIZE OF BDOS
|
||||
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; CBIOS IS THE REMAINDER
|
||||
; THE FIRST 4 BANKS OF ROMWBW ROMS CONTAIN ROMWBW SOFTWARE COMPONENTS.
|
||||
; THE REMAINING BANKS ARE USED AS ROM DISK CONTENTS.
|
||||
;
|
||||
; ROM BANK SUMMARY
|
||||
; ----------------
|
||||
;
|
||||
; ROM BANK BANK ID DESCRIPTION
|
||||
; -------- -------- ----------------------------------------
|
||||
; 0 (ROM0) BID_BOOT HBIOS KERNEL (HBIOS.ASM)
|
||||
; 1 (ROM1) BID_IMG0 MONITOR, BOOT LOADER, ROM OS IMAGES
|
||||
; 2 (ROM2) BID_IMG1 ROM APPLICATIONS
|
||||
; 3 (ROM3) BID_IMG2 ROM UTILITIES
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; CPU ADDRESS SPACE MEMORY LAYOUT
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
MEMTOP .EQU $10000 ; INVARIANT TOP OF Z80 ADDRESSABLE MEMORY
|
||||
BNKTOP .EQU $8000 ; BANK MEMORY BARRIER
|
||||
;
|
||||
HBX_IMG .EQU $200 ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK
|
||||
HBX_SIZ .EQU $200 ; HBIOS PROXY SIZE (SUBJECT TO CHANGE)
|
||||
HBX_LOC .EQU MEMTOP - HBX_SIZ ; RUNNING LOCATION OF HBIOS PROXY
|
||||
;
|
||||
HBBUF_END .EQU BNKTOP ; END OF PHYSICAL DISK BUFFER IN HBIOS
|
||||
HBBUF_LOC .EQU HBBUF_END - HBBUF_SIZ ; START OF PHYSICAL DISK BUFFER
|
||||
HBX_END .EQU MEMTOP ; END OF HBIOS PROXY
|
||||
HBX_LOC .EQU HBX_END - HBX_SIZ ; START OF HBIOS PROXY
|
||||
CPM_END .EQU HBX_LOC ; END OF CPM COMPONENTS (INCLUDING CBIOS)
|
||||
CPM_LOC .EQU CPM_END - CPM_SIZ ; START OF CPM COMPONENTS
|
||||
CBIOS_END .EQU HBX_LOC ; END OF CBIOS
|
||||
CBIOS_LOC .EQU CBIOS_END - CBIOS_SIZ ; START OF CBIOS
|
||||
CPM_LOC .EQU $D000 ; START OF CPM COMPONENTS
|
||||
CPM_SIZ .EQU HBX_LOC - CPM_LOC ; NET SIZE OF ALL OS COMPONENTS (EXCLUDING HBIOS PROXY)
|
||||
;
|
||||
CCP_SIZ .EQU $0800 ; INVARIANT SIZE OF CCP
|
||||
BDOS_SIZ .EQU $0E00 ; INVARIANT SIZE OF BDOS
|
||||
CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; REMAINDER IS CBIOS SIZE
|
||||
;
|
||||
CBIOS_LOC .EQU HBX_LOC - CBIOS_SIZ ; START OF CBIOS
|
||||
BDOS_LOC .EQU CBIOS_LOC - BDOS_SIZ ; START OF BDOS
|
||||
CCP_LOC .EQU BDOS_LOC - CCP_SIZ ; START OF CCP
|
||||
;
|
||||
CPM_ENT .EQU CBIOS_LOC ; CPM ENTRY POINT (IN CBIOS)
|
||||
;
|
||||
CPM_IMGSIZ .EQU $3000
|
||||
; THE SIZE OF THE CPM IMAGE STORED ON A ROM BANK IS GREATER THAN THE
|
||||
; SIZE TO BE LOADED. THE FORMER INCLUDES HBIOS SPACE AND THE LATTER
|
||||
; DOES NOT. USE CPM_IMGSIZ WHEN REFERRING TO IMAGE SIZE STORED ON ROM.
|
||||
CPM_IMGSIZ .EQU $3000 ; CPM IMAGE SIZE ON ROM
|
||||
;
|
||||
; =============================
|
||||
; ROM BANK 0 (hbios_rom.bin)
|
||||
; =============================
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ROM BANK 0 (BID_BOOT) LAYOUT (ROM0.BIN)
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; See hbios.asm for content of Bank 0
|
||||
; SEE HBIOS.ASM FOR CONTENT OF BANK 0
|
||||
;
|
||||
; =============================
|
||||
; ROM BANK 1 LAYOUT (osimg.bin)
|
||||
; =============================
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ROM BANK 1 (BID_IMG0) LAYOUT (ROM1.BIN)
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
LDR_LOC .EQU $0000 ; ROM LOADER
|
||||
LDR_SIZ .EQU $1000
|
||||
LDR_END .EQU LDR_LOC +LDR_SIZ
|
||||
LDR_IMGLOC .EQU $0000
|
||||
BNK_NXTLOC .EQU $0000 ; RESET TO START OF BANK
|
||||
BNK_CUR .EQU 1 ; THIS IS ROM BANK 1 (BID_IMG0)
|
||||
;
|
||||
MON_LOC .EQU $EE00 ; LOCATION OF MONITOR FOR RUNNING SYSTEM
|
||||
LDR_BNK .EQU BNK_CUR
|
||||
LDR_LOC .EQU $0000 ; RUNNING LOCATION OF BOOT LOADER
|
||||
LDR_SIZ .EQU $1000 ; SIZE OF BOOT LOADER BINARY IMAGE
|
||||
LDR_END .EQU LDR_LOC + LDR_SIZ ; ENDING ADDRESS OF RUNNING BOOT LOADER
|
||||
LDR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET LDR_IMGLOC + LDR_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
MON_BNK .EQU BNK_CUR
|
||||
MON_LOC .EQU $EE00 ; RUNNING LOCATION OF MONITOR
|
||||
MON_SIZ .EQU $1000 ; SIZE OF MONITOR BINARY IMAGE
|
||||
MON_END .EQU MON_LOC + MON_SIZ ; END OF MONITOR
|
||||
MON_IMGLOC .EQU LDR_IMGLOC + LDR_SIZ
|
||||
MON_END .EQU MON_LOC + MON_SIZ ; ENDING ADDRESS OF RUNNING MONITOR
|
||||
MON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET MON_IMGLOC + MON_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
ZSYS_IMGLOC .EQU MON_IMGLOC + MON_SIZ ; ZSDOS / Z-System
|
||||
ZSYS_BNK .EQU BNK_CUR
|
||||
ZSYS_LOC .EQU CPM_LOC ; RUNNING LOCATION OF ZSYSTEM
|
||||
ZSYS_SIZ .EQU CPM_SIZ ; SIZE OF ZSYSTEM BINARY IMAGE
|
||||
ZSYS_END .EQU ZSYS_LOC + ZSYS_SIZ ; ENDING ADDRESS OF RUNNING ZSYSTEM
|
||||
ZSYS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
ZSYS_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET ZSYS_IMGLOC + ZSYS_IMGSIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
CPM_IMGLOC .EQU ZSYS_IMGLOC + CPM_IMGSIZ ; CP/M 2.2
|
||||
CPM22_BNK .EQU BNK_CUR
|
||||
CPM22_LOC .EQU CPM_LOC ; RUNNING LOCATION OF CPM 2.2
|
||||
CPM22_SIZ .EQU CPM_SIZ ; SIZE OF CPM 2.2 BINARY IMAGE
|
||||
CPM22_END .EQU CPM22_LOC + CPM22_SIZ ; ENDING ADDRESS OF RUNNING CPM 2.2
|
||||
CPM22_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
CPM22_IMGSIZ .EQU CPM_IMGSIZ ; SIZE OF LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET CPM22_IMGLOC + CPM22_IMGSIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
BNK1_IMGEND .EQU CPM_IMGLOC + CPM_IMGSIZ ; END OF BANK
|
||||
BNK1_REMAIN .EQU BNKTOP - BNK1_IMGEND ; REMAINING
|
||||
BNK1_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
||||
BNK1_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
||||
;
|
||||
; ==============================
|
||||
; ROM BANK 2 LAYOUT (osimg1.bin)
|
||||
; ==============================
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ROM BANK 2 (BID_IMG1) LAYOUT (ROM2.BIN)
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
|
||||
BNK_CUR .SET 2 ; THIS IS ROM BANK 2 (BID_IMG1)
|
||||
;
|
||||
; NOTE FOLLOWING ARE COPY/PASTED INTO camel80.azm !!!!!!!!
|
||||
FTH_BNK .EQU BNK_CUR
|
||||
FTH_LOC .EQU $0200 ; CAMEL FORTH
|
||||
FTH_SIZ .EQU $1700
|
||||
FTH_END .EQU FTH_LOC + FTH_SIZ
|
||||
FTH_IMGLOC .EQU $0000
|
||||
|
||||
FTH_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET FTH_IMGLOC + FTH_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
BAS_BNK .EQU BNK_CUR
|
||||
BAS_LOC .EQU $0200 ; NASCOM BASIC
|
||||
BAS_SIZ .EQU $2000
|
||||
BAS_END .EQU BAS_LOC + BAS_SIZ
|
||||
BAS_IMGLOC .EQU FTH_IMGLOC + FTH_SIZ
|
||||
BAS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET BAS_IMGLOC + BAS_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
; NOTE FOLLOWING ARE COPY/PASTED INTO tastybasic.asm !!!!!!!!
|
||||
TBC_BNK .EQU BNK_CUR
|
||||
TBC_LOC .EQU $0A00 ; TASTYBASIC
|
||||
TBC_SIZ .EQU $0A00
|
||||
TBC_END .EQU TBC_LOC + TBC_SIZ
|
||||
TBC_IMGLOC .EQU BAS_IMGLOC + BAS_SIZ
|
||||
TBC_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET TBC_IMGLOC + TBC_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
GAM_BNK .EQU BNK_CUR
|
||||
GAM_LOC .EQU $0200 ; GAME 2048
|
||||
GAM_SIZ .EQU $0900
|
||||
GAM_END .EQU GAM_LOC + GAM_SIZ
|
||||
GAM_IMGLOC .EQU TBC_IMGLOC + TBC_SIZ
|
||||
GAM_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET GAM_IMGLOC + GAM_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
EGG_BNK .EQU BNK_CUR
|
||||
EGG_LOC .EQU $F000 ; EASTER EGG
|
||||
EGG_SIZ .EQU $0200
|
||||
EGG_END .EQU EGG_LOC + EGG_SIZ
|
||||
EGG_IMGLOC .EQU GAM_IMGLOC + GAM_SIZ
|
||||
EGG_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET EGG_IMGLOC + EGG_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
NET_BNK .EQU BNK_CUR
|
||||
NET_LOC .EQU $0100 ; NETWORK BOOT
|
||||
NET_SIZ .EQU $1000
|
||||
NET_END .EQU NET_LOC + NET_SIZ
|
||||
NET_IMGLOC .EQU EGG_IMGLOC + EGG_SIZ
|
||||
NET_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET NET_IMGLOC + NET_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
UPD_BNK .EQU BNK_CUR
|
||||
UPD_LOC .EQU $0200 ; ROM UPDATER
|
||||
UPD_SIZ .EQU $0D00
|
||||
UPD_END .EQU UPD_LOC + UPD_SIZ
|
||||
UPD_IMGLOC .EQU NET_IMGLOC + NET_SIZ
|
||||
UPD_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET UPD_IMGLOC + UPD_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
NVR_BNK .EQU BNK_CUR
|
||||
NVR_LOC .EQU $0100 ; NVRAM CONFIG
|
||||
NVR_SIZ .EQU $0800
|
||||
NVR_END .EQU NVR_LOC + NVR_SIZ
|
||||
NVR_IMGLOC .EQU UPD_IMGLOC + UPD_SIZ
|
||||
NVR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET NVR_IMGLOC + NVR_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
USR_BNK .EQU BNK_CUR
|
||||
USR_LOC .EQU $0200 ; USER
|
||||
USR_SIZ .EQU $0200
|
||||
USR_END .EQU USR_LOC + USR_SIZ
|
||||
USR_IMGLOC .EQU NVR_IMGLOC + NVR_SIZ
|
||||
USR_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET USR_IMGLOC + USR_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
BNK2_IMGEND .EQU USR_IMGLOC + USR_SIZ ; END OF BANK
|
||||
BNK2_REMAIN .EQU BNKTOP - BNK2_IMGEND ; REMAINING
|
||||
BNK2_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
||||
BNK2_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
||||
;
|
||||
; ==============================
|
||||
; ROM BANK 3 LAYOUT (osimg2.bin)
|
||||
; ==============================
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
; ROM BANK 3 (BID_IMG2) LAYOUT (ROM3.BIN)
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
; not defined here, see build files
|
||||
; optionally contains S100 monitor
|
||||
BNK_NXTLOC .SET $0000 ; RESET TO START OF BANK
|
||||
BNK_CUR .SET 3 ; THIS IS ROM BANK 3 (BID_IMG2)
|
||||
;
|
||||
; =================
|
||||
HWMON_BNK .EQU BNK_CUR
|
||||
HWMON_LOC .EQU $E000
|
||||
HWMON_SIZ .EQU $2000
|
||||
HWMON_END .EQU HWMON_LOC + HWMON_SIZ
|
||||
HWMON_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET HWMON_IMGLOC + HWMON_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
FONTS_BNK .EQU BNK_CUR
|
||||
;;;FONTS_LOC .EQU $E000
|
||||
FONTS_SIZ .EQU $2000
|
||||
;;;FONTS_END .EQU FONTS_LOC + FONTS_SIZ
|
||||
FONTS_IMGLOC .EQU BNK_NXTLOC ; LOCATION OF BINARY LOAD IMAGE IN BANK
|
||||
BNK_NXTLOC .SET FONTS_IMGLOC + FONTS_SIZ ; IMG LOC OF NEXT COMPONENT
|
||||
;
|
||||
BNK3_LEN .EQU BNK_NXTLOC ; SIZE OF BANK CONTENTS
|
||||
BNK3_SLACK .EQU BNKTOP - BNK_NXTLOC ; REMAINING BANK SPACE
|
||||
;
|
||||
;--------------------------------------------------------------------------------------------------
|
||||
;
|
||||
#IFDEF BNKINFO
|
||||
;
|
||||
.ECHO "-------------------------------\n"
|
||||
.ECHO "ROM BANK INFO \tLENGTH \tREMAIN \n"
|
||||
.ECHO "ROM BANK INFO \tLENGTH \tSLACK \n"
|
||||
.ECHO "---------------\t-------\t-------\n"
|
||||
.ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_IMGEND \ .ECHO "\t" \ .ECHO BNK1_REMAIN \ .ECHO "\n"
|
||||
.ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_IMGEND \ .ECHO "\t" \ .ECHO BNK2_REMAIN \ .ECHO "\n"
|
||||
.ECHO "BANK1 BID_IMG0 \t" \ .ECHO BNK1_LEN \ .ECHO "\t" \ .ECHO BNK1_SLACK \ .ECHO "\n"
|
||||
.ECHO "BANK2 BID_IMG1 \t" \ .ECHO BNK2_LEN \ .ECHO "\t" \ .ECHO BNK2_SLACK \ .ECHO "\n"
|
||||
.ECHO "BANK3 BID_IMG2 \t" \ .ECHO BNK3_LEN \ .ECHO "\t" \ .ECHO BNK3_SLACK \ .ECHO "\n"
|
||||
.ECHO "-------------------------------\n"
|
||||
;
|
||||
#IF (BNK1_IMGEND > BNKTOP)
|
||||
.ECHO "*** BANK 1 IS TOO BIG!!!\n"
|
||||
#IF (BNK1_LEN > BNKTOP)
|
||||
.ECHO "*** ROM BANK 1 IS TOO BIG!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
||||
#ENDIF
|
||||
#IF (BNK2_IMGEND > BNKTOP)
|
||||
.ECHO "*** BANK 2 IS TOO BIG!!!\n"
|
||||
;
|
||||
#IF (BNK2_LEN > BNKTOP)
|
||||
.ECHO "*** ROM BANK 2 IS TOO BIG!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
||||
#ENDIF
|
||||
;
|
||||
#IF (BNK3_LEN > BNKTOP)
|
||||
.ECHO "*** ROM BANK 3 IS TOO BIG!!!\n"
|
||||
!!! ; FORCE AN ASSEMBLY ERROR IF BANK SIZE EXCEEDS SPACE
|
||||
#ENDIF
|
||||
;
|
||||
#ENDIF
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -90,21 +90,7 @@ LCD_PREINIT:
|
||||
LD DE,LCD_STR_XPU
|
||||
CALL LCD_OUTDS
|
||||
;
|
||||
; "12.345 MHz" RIGHT JUSTIFIED
|
||||
LD HL,$010A ; ROW 2, COL 10
|
||||
CALL LCD_GOTORC
|
||||
LD HL,(CB_CPUKHZ)
|
||||
PUSH HL
|
||||
LD BC,10000 ; 10 MHZ
|
||||
SBC HL,BC ; SUBTRACT
|
||||
JR NC,LCD_PREINIT1
|
||||
LD A,' ' ; EXTRA PAD
|
||||
CALL LCD_OUTD
|
||||
LCD_PREINIT1:
|
||||
POP HL
|
||||
CALL LCD_PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
|
||||
LD DE,LCD_STR_MHZ
|
||||
CALL LCD_OUTDS
|
||||
CALL LCD_EVT_CPUSPD
|
||||
;
|
||||
; THIRD LINE
|
||||
LD HL,$0200 ; ROW 2, COL 0
|
||||
@@ -228,7 +214,22 @@ LCD_EVENT:
|
||||
; CPU SPEED CHANGE
|
||||
;
|
||||
LCD_EVT_CPUSPD:
|
||||
XOR A
|
||||
; "12.345 MHz" RIGHT JUSTIFIED
|
||||
LD HL,$010A ; ROW 2, COL 10
|
||||
CALL LCD_GOTORC
|
||||
LD HL,(CB_CPUKHZ)
|
||||
PUSH HL
|
||||
LD BC,10000 ; 10 MHZ
|
||||
SBC HL,BC ; SUBTRACT
|
||||
JR NC,LCD_PREINIT1
|
||||
LD A,' ' ; EXTRA PAD
|
||||
CALL LCD_OUTD
|
||||
LCD_PREINIT1:
|
||||
POP HL
|
||||
CALL LCD_PRTD3M ; PRINT AS DECIMAL WITH 3 DIGIT MANTISSA
|
||||
LD DE,LCD_STR_MHZ
|
||||
CALL LCD_OUTDS
|
||||
;
|
||||
RET
|
||||
;
|
||||
; FORMAT: "Disk #99 R:12345678"
|
||||
@@ -342,16 +343,23 @@ LCD_DELAY:
|
||||
CALL DELAY ; 16US
|
||||
JP DELAY ; 16US, TOTAL 48US
|
||||
;
|
||||
; DELAY USED DURING NORMAL I/O
|
||||
; REQUIRED FOR HIGH SPEED CPU OPERATION
|
||||
;
|
||||
#DEFINE LCD_XDELAY EX (SP),HL \ EX (SP),HL
|
||||
;
|
||||
; SEND FUNCTION CODE IN A
|
||||
;
|
||||
LCD_OUTF:
|
||||
PUSH AF ; SAVE CODE
|
||||
LCD_OUTF1:
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
IN A,(LCD_STAT) ; GET STATUS
|
||||
AND $80 ; ISOLATE BUSY FLAG
|
||||
JR NZ,LCD_OUTF1 ; LOOP TILL NOT BUSY
|
||||
POP AF ; RECOVER CODE
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
OUT (LCD_FUNC),A ; SEND IT
|
||||
RET ; DONE
|
||||
@@ -372,11 +380,13 @@ LCD_OUTFS:
|
||||
LCD_OUTD:
|
||||
PUSH AF ; SAVE BYTE
|
||||
LCD_OUTD1:
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
IN A,(LCD_STAT) ; GET STATUS
|
||||
AND $80 ; ISOLATE BUSY FLAG
|
||||
JR NZ,LCD_OUTD1 ; LOOP TILL NOT BUSY
|
||||
POP AF ; RECOVER BYTE
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
OUT (LCD_DATA),A ; SEND IT
|
||||
RET ; DONE
|
||||
@@ -408,11 +418,13 @@ LCD_OUTDS:
|
||||
; GET DATA BYTE INTO A
|
||||
;
|
||||
LCD_IND:
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
IN A,(LCD_STAT) ; GET STATUS
|
||||
AND $80 ; ISOLATE BUSY FLAG
|
||||
JR NZ,LCD_IND ; LOOP TILL NOT BUSY
|
||||
POP AF ; RECOVER BYTE
|
||||
LCD_XDELAY
|
||||
EZ80_IO
|
||||
IN A,(LCD_DATA) ; GET IT
|
||||
RET ; DONE
|
||||
@@ -483,10 +495,9 @@ LCD_INIT_SEQ:
|
||||
.DB $00 ; TERMINATOR
|
||||
;
|
||||
LCD_STR_BAN .DB "RomWBW v", BIOSVER, 0
|
||||
LCD_STR_CFG .DB "Build: ", CONFIG, 0
|
||||
LCD_STR_CFG .DB CONFIG, 0
|
||||
LCD_STR_IO .DB "Disk #", 0
|
||||
LCD_STR_XPU .DB " CPU",0
|
||||
;;;LCD_STR_SPD .DB "12.345",0
|
||||
LCD_STR_MHZ .DB " MHz",0
|
||||
;
|
||||
LCD_CPU .DW LCD_CPU_Z80
|
||||
@@ -498,8 +509,8 @@ LCD_CPU .DW LCD_CPU_Z80
|
||||
;
|
||||
LCD_CPU_Z80 .DB "Z80",0
|
||||
LCD_CPU_Z180 .DB "Z180",0
|
||||
LCD_CPU_Z180K .DB "Z180-K",0
|
||||
LCD_CPU_Z180N .DB "Z180-N",0
|
||||
LCD_CPU_Z180K .DB "Z180K",0
|
||||
LCD_CPU_Z180N .DB "Z180N",0
|
||||
LCD_CPU_Z280 .DB "Z280",0
|
||||
LCD_CPU_EZ80 .DB "eZ80",0
|
||||
;
|
||||
|
||||
@@ -95,10 +95,18 @@ LPT_INIT:
|
||||
LD IY,LPT_CFG ; POINT TO START OF CFG TABLE
|
||||
LPT_INIT0:
|
||||
PUSH BC ; SAVE LOOP CONTROL
|
||||
CALL LPT_PRTCFG ; PRINT CONFIG
|
||||
CALL LPT_INITUNIT ; HAND OFF TO UNIT INIT CODE
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
LD A,(IY+1) ; GET THE LPT TYPE DETECTED
|
||||
JR Z,LPT_INIT1 ; IF DETECTED, CONTINUE INIT
|
||||
CALL PC_SPACE ; FORMATTING
|
||||
LD DE,LPT_STR_NOLPT ; NO LPT MESSAGE
|
||||
CALL WRITESTR ; DISPLAY IT
|
||||
JR LPT_INIT2 ; AND LOOP AS NEEDED
|
||||
;
|
||||
LPT_INIT1:
|
||||
LD A,(IY+1) ; GET THE LPT TYPE
|
||||
OR A ; SET FLAGS
|
||||
JR Z,LPT_INIT2 ; SKIP IT IF NOTHING FOUND
|
||||
;
|
||||
@@ -107,7 +115,6 @@ LPT_INIT0:
|
||||
POP DE ; ... TO DE
|
||||
LD BC,LPT_FNTBL ; BC := FUNCTION TABLE ADDRESS
|
||||
CALL NZ,CIO_ADDENT ; ADD ENTRY IF LPT FOUND, BC:DE
|
||||
CALL LPT_PRTCFG ; PRINT IF NOT ZERO
|
||||
POP BC ; RESTORE LOOP CONTROL
|
||||
;
|
||||
LPT_INIT2:
|
||||
@@ -123,9 +130,7 @@ LPT_INIT3:
|
||||
;
|
||||
LPT_INITUNIT:
|
||||
CALL LPT_DETECT ; DETERMINE LPT TYPE
|
||||
LD (IY+1),A ; SAVE IN CONFIG TABLE
|
||||
OR A ; SET FLAGS
|
||||
RET Z ; ABORT IF NOTHING THERE
|
||||
RET NZ ; ABORT IF NOTHING THERE
|
||||
;
|
||||
; UPDATE WORKING LPT DEVICE NUM
|
||||
LD HL,LPT_DEV ; POINT TO CURRENT DEVICE NUM
|
||||
@@ -326,15 +331,7 @@ LPT_DETECT:
|
||||
;
|
||||
LPT_DETECT:
|
||||
LD C,(IY+3) ; BASE PORT ADDRESS
|
||||
CALL LPT_DETECT2 ; CHECK IT
|
||||
JR Z,LPT_DETECT1 ; FOUND IT, RECORD IT
|
||||
LD A,LPTMODE_NONE ; NOTHING FOUND
|
||||
RET ; DONE
|
||||
;
|
||||
LPT_DETECT1:
|
||||
; LPT FOUND, RECORD IT
|
||||
LD A,LPTMODE_SPP ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
JR LPT_DETECT2 ; CHECK IT
|
||||
;
|
||||
LPT_DETECT2:
|
||||
; LOOK FOR LPT AT BASE PORT ADDRESS IN C
|
||||
@@ -394,20 +391,13 @@ LPT_DETECT:
|
||||
CALL PRTHEXBYTE
|
||||
#ENDIF
|
||||
CP $A5 ; CHECK FOR TEST VALUE
|
||||
JR Z,LPT_DETECT1 ; FOUND IT
|
||||
LD A,LPTMODE_NONE ; NOT FOUND
|
||||
RET
|
||||
;
|
||||
LPT_DETECT1:
|
||||
; LPT FOUND, RECORD IT
|
||||
LD A,LPTMODE_MG014 ; RETURN CHIP TYPE
|
||||
RET ; DONE
|
||||
RET ; ZF SET IF DETECTED
|
||||
#ENDIF
|
||||
;
|
||||
#IF (LPTMODE == LPTMODE_S100)
|
||||
LPT_DETECT:
|
||||
; PORT ALWAYS EXISTS ON FPGA
|
||||
LD A,LPTMODE_S100 ; RETURN CHIP TYPE
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET ; DONE
|
||||
#ENDIF
|
||||
;
|
||||
@@ -417,7 +407,7 @@ LPT_PRTCFG:
|
||||
; ANNOUNCE PORT
|
||||
CALL NEWLINE ; FORMATTING
|
||||
PRTS("LPT$") ; FORMATTING
|
||||
LD A,(IY) ; DEVICE NUM
|
||||
LD A,(IY+2) ; DEVICE NUM
|
||||
CALL PRTDECB ; PRINT DEVICE NUM
|
||||
PRTS(": IO=0x$") ; FORMATTING
|
||||
LD A,(IY+3) ; GET BASE PORT
|
||||
@@ -452,11 +442,13 @@ LPT_TYPE_MAP:
|
||||
.DW LPT_STR_MG014
|
||||
.DW LPT_STR_S100
|
||||
;
|
||||
LPT_STR_NONE .DB "<NOT PRESENT>$"
|
||||
LPT_STR_NONE .DB "???$"
|
||||
LPT_STR_SPP .DB "SPP$"
|
||||
LPT_STR_MG014 .DB "MG014$"
|
||||
LPT_STR_S100 .DB "S100$"
|
||||
;
|
||||
LPT_STR_NOLPT .DB "NOT PRESENT$"
|
||||
;
|
||||
; WORKING VARIABLES
|
||||
;
|
||||
LPT_DEV .DB 0 ; DEVICE NUM USED DURING INIT
|
||||
@@ -468,7 +460,7 @@ LPT_CFG:
|
||||
LPT0_CFG:
|
||||
; LPT MODULE A CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB LPTMODE ; LPT MODE
|
||||
.DB 0 ; MODULE ID
|
||||
.DB LPT0BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
@@ -494,7 +486,7 @@ LPT_CFGSIZ .EQU $ - LPT_CFG ; SIZE OF ONE CFG TABLE ENTRY
|
||||
LPT1_CFG:
|
||||
; LPT MODULE B CONFIG
|
||||
.DB 0 ; DEVICE NUMBER (SET DURING INIT)
|
||||
.DB 0 ; LPT TYPE (SET DURING INIT)
|
||||
.DB LPTMODE ; LPT MODE
|
||||
.DB 1 ; MODULE ID
|
||||
.DB LPT1BASE ; BASE PORT
|
||||
.DW 0 ; LINE CONFIGURATION
|
||||
|
||||
@@ -359,6 +359,7 @@ MD_RDSECF: ; CALLED FROM MD_RW
|
||||
; SAVE THE 4K LBA FOR FUTURE CHECKS
|
||||
;
|
||||
CALL MD_CALBAS ; SETUP BANK AND SECTOR
|
||||
RET NZ ; RETURN IF ERROR
|
||||
;
|
||||
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
|
||||
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
|
||||
@@ -467,7 +468,18 @@ MD_CALBAS:
|
||||
CALL PRTHEXWORD ; DISPLAY BANK AND
|
||||
CALL PC_SPACE ; SECTOR RESULT
|
||||
#ENDIF
|
||||
|
||||
;
|
||||
; CHECK FOR ACCESS BEYOND AVAILABLE ROM BANKS
|
||||
LD A,B ; BANK ID TO ACCUM
|
||||
SUB BID_ROMD0 ; ZERO OFFSET
|
||||
CP ROMD_BNKS ; CHECK FOR OUT OF BOUNDS
|
||||
JR C,MD_CALBAS1 ; IF NOT, CONTINUE
|
||||
LD A,ERR_IO ; ELSE SIGNAL IO ERROR
|
||||
OR A ; SET FLAGS
|
||||
RET ; AND RETURN
|
||||
;
|
||||
MD_CALBAS1:
|
||||
XOR A ; SIGNAL SUCCESS
|
||||
RET
|
||||
;
|
||||
; WRITE FLASH
|
||||
@@ -485,6 +497,7 @@ MD_WRSECF: ; CALLED FROM MD_RW
|
||||
LD (MD_LBA4K),BC ; SAVE 4K LBA
|
||||
;
|
||||
CALL MD_CALBAS ; SETUP BANK AND SECTOR
|
||||
RET NZ ; RETURN ON ERROR
|
||||
;
|
||||
LD IX,MD_F4KBUF ; SET DESTINATION ADDRESS
|
||||
LD HL,MD_FREAD_R ; PUT ROUTINE TO CALL
|
||||
@@ -566,6 +579,12 @@ MD_FBAS .DW $FFFF ; BANK AND SECTOR
|
||||
;
|
||||
MD_RDSEC:
|
||||
CALL MD_IOSETUP ; SETUP FOR MEMORY COPY
|
||||
CP $FF ; ERROR?
|
||||
JR NZ,MD_RDSEC1 ; IF NOT, CONTINUE
|
||||
LD A,ERR_IO ; SIGNAL IO ERROR
|
||||
OR A ; SET FLAGS
|
||||
RET ; AND DONE
|
||||
MD_RDSEC1:
|
||||
#IF (MDTRACE >= 2)
|
||||
LD (MD_SRC),HL
|
||||
LD (MD_DST),DE
|
||||
@@ -597,6 +616,12 @@ MD_RDSEC:
|
||||
;
|
||||
MD_WRSEC:
|
||||
CALL MD_IOSETUP ; SETUP FOR MEMORY COPY
|
||||
CP $FF ; ERROR?
|
||||
JR NZ,MD_WRSEC1 ; IF NOT, CONTINUE
|
||||
LD A,ERR_IO ; SIGNAL IO ERROR
|
||||
OR A ; SET FLAGS
|
||||
RET ; AND DONE
|
||||
MD_WRSEC1:
|
||||
EX DE,HL ; SWAP SRC/DEST FOR WRITE
|
||||
#IF (MDTRACE >= 2)
|
||||
LD (MD_SRC),HL
|
||||
@@ -682,13 +707,21 @@ MD_IOSETUP:
|
||||
JR Z,MD_IOSETUP2 ; DO ROM DRIVE, ELSE FALL THRU FOR RAM DRIVE
|
||||
;
|
||||
MD_IOSETUP1: ; ROM
|
||||
CP ROMD_BNKS ; WITHIN AVAILABLE ROM DISK BANKS?
|
||||
JR NC,MD_IOSETUP3 ; HANDLE OUT OF BOUNDS
|
||||
ADD A,BID_ROMD0
|
||||
RET
|
||||
;
|
||||
MD_IOSETUP2: ; RAM
|
||||
CP RAMD_BNKS ; WITHIN AVAILABLE RAM DISK BANKS?
|
||||
JR NC,MD_IOSETUP3 ; HANDLE OUT OF BOUNDS
|
||||
ADD A,BID_RAMD0
|
||||
RET
|
||||
;
|
||||
MD_IOSETUP3:
|
||||
OR $FF ; SIGNAL ERROR
|
||||
RET ; DONE
|
||||
;
|
||||
;
|
||||
;
|
||||
#IF (MDTRACE >= 2)
|
||||
|
||||
@@ -66,26 +66,10 @@ PCF_BB .EQU 00000001B
|
||||
; | 12MHz | | | | | | 90Khz | 120Khz | 138Khz | 150Khz |
|
||||
; +----------------------------------------------------------------------------------+---------+
|
||||
;
|
||||
; CLOCK CHIP FREQUENCIES
|
||||
; SEE STD.ASM FOR DEFINITIONS OF PCFCLK AND PCFTRNS VALUES
|
||||
;
|
||||
PCF_CLK3 .EQU 000H
|
||||
PCF_CLK443 .EQU 010H
|
||||
PCF_CLK6 .EQU 014H
|
||||
PCF_CLK8 .EQU 018H
|
||||
PCF_CLK12 .EQU 01CH
|
||||
;
|
||||
; TRANSMISSION FREQUENCIES
|
||||
;
|
||||
PCF_TRNS90 .EQU 000H ; 90 kHz */
|
||||
PCF_TRNS45 .EQU 001H ; 45 kHz */
|
||||
PCF_TRNS11 .EQU 002H ; 11 kHz */
|
||||
PCF_TRNS15 .EQU 003H ; 1.5 kHz */
|
||||
;
|
||||
; BELOW VARIABLES CONTROL PCF CLOCK DIVISOR PROGRAMMING
|
||||
; HARD-CODED FOR NOW
|
||||
;
|
||||
PCF_CLK .EQU PCF_CLK12
|
||||
PCF_TRNS .EQU PCF_TRNS90
|
||||
PCF_CLK .EQU PCFCLK
|
||||
PCF_TRNS .EQU PCFTRNS
|
||||
;
|
||||
; TIMEOUT AND DELAY VALUES (ARBITRARY)
|
||||
;
|
||||
|
||||
@@ -1553,7 +1553,7 @@ s100mon1:
|
||||
; Launch S100 Monitor from ROM Bank 3
|
||||
call ldelay ; wait for UART buf to empty
|
||||
di ; suspend interrupts
|
||||
ld a,BID_IMG2 ; S100 monitor bank
|
||||
ld a,HWMON_BNK ; S100 monitor bank
|
||||
ld ix,0 ; execution resumes here
|
||||
jp HB_BNKCALL ; do it
|
||||
;
|
||||
@@ -2629,31 +2629,32 @@ ra_ent .equ 12
|
||||
;
|
||||
ra_tbl:
|
||||
;
|
||||
; Name Key Dsky Bank Src Dest Size Entry
|
||||
; --------- ------- ----- -------- ----- ------- ------- ----------
|
||||
ra_ent(str_mon, 'M', KY_CL, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL)
|
||||
ra_entsiz .equ $ - ra_tbl
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (PLATFORM == PLT_S100)
|
||||
ra_ent(str_smon, 'S', $FF, bid_cur , $8000, $8000, $0001, s100mon)
|
||||
#endif
|
||||
#endif
|
||||
ra_ent(str_cpm22, 'C', KY_BK, BID_IMG0, CPM_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
|
||||
ra_ent(str_zsys, 'Z', KY_FW, BID_IMG0, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
|
||||
#if (BIOS == BIOS_WBW)
|
||||
ra_ent(str_bas, 'B', KY_DE, BID_IMG1, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC)
|
||||
ra_ent(str_tbas, 'T', KY_EN, BID_IMG1, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC)
|
||||
ra_ent(str_fth, 'F', KY_EX, BID_IMG1, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC)
|
||||
ra_ent(str_play, 'P', $FF, BID_IMG1, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC)
|
||||
ra_ent(str_net, 'N', $FF, BID_IMG1, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
|
||||
ra_ent(str_upd, 'X', $FF, BID_IMG1, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC)
|
||||
ra_ent(str_nvr, 'W'+$80, $FF, BID_IMG1, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
|
||||
ra_ent(str_user, 'U', $FF, BID_IMG1, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC)
|
||||
; Name Key Dsky Bank Src Dest Size Entry
|
||||
; --------- ------- ----- -------- ----- ------- ------- ----------
|
||||
ra_ent(str_mon, 'M', KY_CL, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_SERIAL)
|
||||
ra_entsiz .equ $ - ra_tbl
|
||||
#if (BIOS == BIOS_WBW)
|
||||
#if (PLATFORM == PLT_S100)
|
||||
ra_ent(str_smon, 'S', $FF, bid_cur, $8000, $8000, $0001, s100mon)
|
||||
#endif
|
||||
#endif
|
||||
ra_ent(str_cpm22, 'C', KY_BK, CPM22_BNK, CPM22_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
|
||||
ra_ent(str_zsys, 'Z', KY_FW, ZSYS_BNK, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_ENT)
|
||||
#if (BIOS == BIOS_WBW)
|
||||
ra_ent(str_bas, 'B', KY_DE, BAS_BNK, BAS_IMGLOC, BAS_LOC, BAS_SIZ, BAS_LOC)
|
||||
ra_ent(str_tbas, 'T', KY_EN, TBC_BNK, TBC_IMGLOC, TBC_LOC, TBC_SIZ, TBC_LOC)
|
||||
ra_ent(str_fth, 'F', KY_EX, FTH_BNK, FTH_IMGLOC, FTH_LOC, FTH_SIZ, FTH_LOC)
|
||||
ra_ent(str_play, 'P', $FF, GAM_BNK, GAM_IMGLOC, GAM_LOC, GAM_SIZ, GAM_LOC)
|
||||
ra_ent(str_net, 'N', $FF, NET_BNK, NET_IMGLOC, NET_LOC, NET_SIZ, NET_LOC)
|
||||
ra_ent(str_upd, 'X', $FF, UPD_BNK, UPD_IMGLOC, UPD_LOC, UPD_SIZ, UPD_LOC)
|
||||
ra_ent(str_nvr, 'W'+$80, $FF, NVR_BNK, NVR_IMGLOC, NVR_LOC, NVR_SIZ, NVR_LOC)
|
||||
ra_ent(str_user, 'U', $FF, USR_BNK, USR_IMGLOC, USR_LOC, USR_SIZ, USR_LOC)
|
||||
#endif
|
||||
#if (DSKYENABLE)
|
||||
ra_ent(str_dsky, 'Y'+$80, KY_GO, BID_IMG0, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
|
||||
ra_ent(str_dsky, 'Y'+$80, KY_GO, MON_BNK, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
|
||||
#endif
|
||||
ra_ent(str_egg, 'E'+$80, $FF, BID_IMG1, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC)
|
||||
ra_ent(str_egg, 'E'+$80, $FF, EGG_BNK, EGG_IMGLOC, EGG_LOC, EGG_SIZ, EGG_LOC)
|
||||
;
|
||||
.dw 0 ; table terminator
|
||||
;
|
||||
ra_tbl_app:
|
||||
@@ -2665,6 +2666,7 @@ ra_ent(str_zsys, 'Z', KY_FW, bid_cur, ZSYS_IMGLOC, CPM_LOC, CPM_SIZ, CPM_EN
|
||||
#if (DSKYENABLE)
|
||||
ra_ent(str_dsky, 'Y'+$80, KY_GO, bid_cur, MON_IMGLOC, MON_LOC, MON_SIZ, MON_DSKY)
|
||||
#endif
|
||||
;
|
||||
.dw 0 ; table terminator
|
||||
;
|
||||
str_mon .db "Monitor",0
|
||||
|
||||
@@ -327,6 +327,21 @@ SYQMODE_NONE .EQU 0 ; NONE
|
||||
SYQMODE_SPP .EQU 1 ; IBM PC STANDARD PAR PORT (SPP)
|
||||
SYQMODE_MG014 .EQU 2 ; RCBUS MG014 STYLE INTERFACE
|
||||
;
|
||||
; PCF CLOCK CHIP FREQUENCIES
|
||||
;
|
||||
PCFCLK_3 .EQU $00 ; 3 MHz
|
||||
PCFCLK_443 .EQU $10 ; 4.43 MHz
|
||||
PCFCLK_6 .EQU $14 ; 6 MHz
|
||||
PCFCLK_8 .EQU $18 ; 8 MHz
|
||||
PCFCLK_12 .EQU $1C ; 12 MHz
|
||||
;
|
||||
; PCF TRANSMISSION FREQUENCIES
|
||||
;
|
||||
PCFTRNS_90 .EQU $00 ; 90 KHZ
|
||||
PCFTRNS_45 .EQU $01 ; 45 KHZ
|
||||
PCFTRNS_11 .EQU $02 ; 11 KHZ
|
||||
PCFTRNS_15 .EQU $03 ; 1.5 KHZ
|
||||
;
|
||||
; GDC MONITOR SELECTIONS
|
||||
;
|
||||
GDCMON_NONE .EQU 0
|
||||
@@ -866,8 +881,8 @@ ROMD_BNKS .SET 0
|
||||
; -- TYPICAL --
|
||||
BID_BOOT .EQU BID_ROM0 + 0 ; BOOT BANK 0x00
|
||||
BID_IMG0 .EQU BID_ROM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x01
|
||||
BID_IMG1 .EQU BID_ROM0 + 2 ; SECOND IMAGES BANK 0x02
|
||||
BID_IMG2 .EQU BID_ROM0 + 3 ; RESERVED 0x03
|
||||
BID_IMG1 .EQU BID_ROM0 + 2 ; ROM APPS IMAGES BANK 0x02
|
||||
BID_IMG2 .EQU BID_ROM0 + 3 ; ROM UTILITIES IMAGES BANK 0x03
|
||||
BID_ROMD0 .EQU BID_ROM0 + 4 ; FIRST ROM DRIVE BANK 0x04
|
||||
BID_BIOS .EQU BID_RAM0 + 0 ; HBIOS BANK 0x80
|
||||
BID_RAMD0 .EQU BID_RAM0 + 1 ; FIRST RAM DRIVE BANK 0x81
|
||||
@@ -884,8 +899,8 @@ BID_COM .EQU BID_RAMN - 0 ; COMMON BANK, UPPER 32K 0x8F
|
||||
; -- TYPICAL --
|
||||
BID_BOOT .EQU BID_RAM0 + 0 ; BOOT BANK 0x80
|
||||
BID_IMG0 .EQU BID_RAM0 + 1 ; ROM LOADER AND FIRST IMAGES BANK 0x81
|
||||
BID_IMG1 .EQU BID_RAM0 + 2 ; SECOND IMAGES BANK 0x82
|
||||
BID_IMG2 .EQU BID_RAM0 + 3 ; RESERVED 0x83
|
||||
BID_IMG1 .EQU BID_RAM0 + 2 ; ROM APPS IMAGES BANK 0x82
|
||||
BID_IMG2 .EQU BID_RAM0 + 3 ; ROM UTILITIES IMAGES BANK 0x83
|
||||
BID_RAMD0 .EQU BID_RAM0 + 4 ; FIRST RAM DRIVE BANK 0x84
|
||||
BID_APP0 .EQU BID_RAMD0 + RAMD_BNKS ; FIRST APP BANK 0x89
|
||||
BID_BUF .EQU BID_RAMN - 3 ; OS BUFFERS (CP/M3) 0x8C
|
||||
@@ -1078,8 +1093,8 @@ INT_PIO1B .EQU 12 ; ZILOG PIO 1, CHANNEL B
|
||||
#ENDIF
|
||||
|
||||
|
||||
#DEFINE IVT(INTX) HB_IVT+(INTX * 4)+1
|
||||
#DEFINE VEC(INTX) INTX*2
|
||||
#DEFINE IVT(INTX) HB_IVT + (INTX * 4) + 1
|
||||
#DEFINE VEC(INTX) INTX * 2
|
||||
|
||||
;
|
||||
; SET DEFAULT CSIO SPEED (INTERNAL CLOCK, SLOW AS POSSIBLE)
|
||||
|
||||
1050
Source/HBIOS/xosera.asm
Normal file
@@ -21,6 +21,7 @@ call BuildDisk.cmd aztecc fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd hitechc fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd tpascal fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd bascomp fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd cobol fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd fortran fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd games fd wbw_fd144 || exit /b
|
||||
call BuildDisk.cmd cowgol fd wbw_fd144 || exit /b
|
||||
@@ -43,6 +44,7 @@ call BuildDisk.cmd aztecc hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd hitechc hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd tpascal hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd cobol hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd games hd wbw_hd512 || exit /b
|
||||
call BuildDisk.cmd cowgol hd wbw_hd512 || exit /b
|
||||
@@ -70,6 +72,7 @@ call BuildDisk.cmd aztecc hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd hitechc hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd tpascal hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd bascomp hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd cobol hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd fortran hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd games hd wbw_hd1k || exit /b
|
||||
call BuildDisk.cmd cowgol hd wbw_hd1k || exit /b
|
||||
@@ -83,3 +86,4 @@ copy hd1k_prefix.dat ..\..\Binary\ || exit /b
|
||||
echo.
|
||||
echo Building Combo Disk (1024 directory entry format) Image...
|
||||
copy /b hd1k_prefix.dat + ..\..\Binary\hd1k_cpm22.img + ..\..\Binary\hd1k_zsdos.img + ..\..\Binary\hd1k_nzcom.img + ..\..\Binary\hd1k_cpm3.img + ..\..\Binary\hd1k_zpm3.img + ..\..\Binary\hd1k_ws4.img ..\..\Binary\hd1k_combo.img || exit /b
|
||||
|
||||
|
||||