Browse Source

Merge pull request #52 from wwarthen/dev

Dev
pull/338/head
b1ackmai1er 3 years ago
committed by GitHub
parent
commit
a646f49866
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 25
      .github/workflows/commit.yml
  2. 36
      .github/workflows/release.yml
  3. 173
      Binary/DiskList.txt
  4. 2
      Binary/ReadMe.txt
  5. 9
      Doc/ChangeLog.txt
  6. 91
      Doc/ReadMe.txt
  7. BIN
      Doc/RomWBW Applications.pdf
  8. BIN
      Doc/RomWBW Disk Catalog.pdf
  9. BIN
      Doc/RomWBW Errata.pdf
  10. BIN
      Doc/RomWBW ROM Applications.pdf
  11. BIN
      Doc/RomWBW System Guide.pdf
  12. BIN
      Doc/RomWBW User Guide.pdf
  13. 23
      Doc/Testing Notes.txt
  14. 32
      ReadMe.md
  15. 30
      ReadMe.txt
  16. 120
      Source/Apps/Survey/survey.mac
  17. 36
      Source/Doc/Applications.md
  18. 2
      Source/Doc/Basic.h
  19. 5
      Source/Doc/Book.h
  20. 23
      Source/Doc/ReadMe.md
  21. 262
      Source/Doc/UserGuide.md
  22. 4
      Source/HBIOS/Config/SCZ180_sc140.asm
  23. 4
      Source/HBIOS/Config/SCZ180_sc503.asm
  24. 4
      Source/HBIOS/Config/ZETA2_std.asm
  25. 2
      Source/HBIOS/cfg_zeta2.asm
  26. 61
      Source/HBIOS/ctc.asm
  27. 3
      Source/HBIOS/dbgmon.asm
  28. 11
      Source/HBIOS/hbios.asm
  29. 3
      Source/HBIOS/romldr.asm
  30. 9
      Source/Images/ReadMe.txt
  31. 2
      Source/Images/d_cpm22/ReadMe.txt
  32. 30
      Source/Images/d_dos65/ReadMe.txt
  33. 2
      Source/Images/d_nzcom/ReadMe.txt
  34. 2
      Source/Images/d_qpm/ReadMe.txt
  35. 2
      Source/Images/d_zsdos/ReadMe.txt
  36. 4
      Source/ver.inc
  37. 4
      Source/ver.lib

25
.github/workflows/commit.yml

@ -13,16 +13,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Make Slugs
uses: rlespinasse/github-slug-action@v4.4.1
- name: Checkout
uses: actions/checkout@v3.3.0
- name: Get Commit Ref
run: |
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
echo "COMMIT_REF: $COMMIT_REF"
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
- name: Build
run: |
export TZ='America/Los_Angeles'
sudo apt-get install libncurses-dev
sudo apt-get install srecord
make dist
rm -rf .git*
@ -36,19 +38,22 @@ jobs:
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
with:
name: RomWBW-${{env.GITHUB_SHA_SHORT}}-Linux
name: RomWBW-${{env.COMMIT_REF}}-Linux
path: .
buildMacOS:
runs-on: macOS-latest
steps:
- name: Make Slugs
uses: rlespinasse/github-slug-action@v4.4.1
- name: Checkout
uses: actions/checkout@v3.3.0
- name: Get Commit Ref
run: |
COMMIT_REF=$(git rev-parse --short $GITHUB_SHA)
echo "COMMIT_REF: $COMMIT_REF"
echo "COMMIT_REF=$COMMIT_REF" >>$GITHUB_ENV
- name: Build
run: |
export TZ='America/Los_Angeles'
@ -65,5 +70,5 @@ jobs:
- name: Upload Artifact
uses: actions/upload-artifact@v3.1.1
with:
name: RomWBW-${{env.GITHUB_SHA_SHORT}}-MacOS
path: .
name: RomWBW-${{env.COMMIT_REF}}-MacOS
path: .

36
.github/workflows/release.yml

@ -14,15 +14,6 @@ jobs:
- name: Checkout
uses: actions/checkout@v3.3.0
- name: Create Package Label
run: |
echo GITHUB_REF: "$GITHUB_REF"
LABEL=`echo "$GITHUB_REF" | sed "s|^refs/tags/||"`
echo "PKGLBL=$LABEL" >> $GITHUB_ENV
echo PKGLBL: "$PKGLBL"
echo Upload URL: "${{github.event.release.upload_url}}"
echo GITHUB_TOKEN: "${{secrets.GITHUB_TOKEN}}"
- name: Build
run: |
export TZ='America/Los_Angeles'
@ -33,22 +24,37 @@ jobs:
- name: Create Package Archive
run: |
zip -r RomWBW-${{env.PKGLBL}}-Package.zip .
zip -r RomWBW-${{github.ref_name}}-Package.zip .
- name: Set Title
run: |
echo "Tag: ${{github.ref_name}}"
if grep -q "dev" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Development Snapshot"
elif grep -q "pre" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Prerelease"
elif grep -q "rc" <<< "${{github.ref_name}}"; then
TITLE="RomWBW Release Candidate"
else
TITLE="RomWBW"
fi
echo "Title: $TITLE"
echo "TITLE=$TITLE" >>$GITHUB_ENV
- name: Attach Package Archive
uses: wwarthen/actions/packages/automatic-releases@built-packages
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
repo_token: "${{secrets.GITHUB_TOKEN}}"
draft: true
prerelease: true
title: "RomWBW Development SnapShot ${{env.PKGLBL}}"
title: "${{env.TITLE}} ${{github.ref_name}}"
files: |
RomWBW-${{env.PKGLBL}}-Package.zip
RomWBW-${{github.ref_name}}-Package.zip
# - name: Upload Package Archive
# uses: AButler/upload-release-assets@v2.0.2
# with:
# repo-token: ${{ secrets.GITHUB_TOKEN }}
# repo-token: ${{secrets.github_token}}
# files: |
# RomWBW-${{env.PKGLBL}}-Package.zip
@ -57,7 +63,7 @@ jobs:
# uses: docker://antonyurchenko/git-release:latest
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
# RELEASE_NAME_PREFIX: "Development SnapShot Release "
# RELEASE_NAME_PREFIX: "${{env.TITLE}} "
# CHANGELOG_FILE: "none"
# with:
# args: |

173
Binary/DiskList.txt

@ -1,173 +0,0 @@
***********************************************************************
*** ***
*** R o m W B W ***
*** ***
*** Z80/Z180 System Software ***
*** ***
***********************************************************************
This directory ("Binary") is part of the RomWBW System Software
distribution archive. Refer to the ReadMe.txt file in this
directory for more information on the overall contents of the
directory.
RomWBW includes a set of disk images that are ready to copy onto
a floppy or hard/CF/SD disk. You can use your modern computer
(Windows/Linux/Mac) to copy the disk image file onto your disk
media. The disk media will then be ready to use in your RomWBW
System.
WARNING: The hdnew_*.img disk images are part of a new disk
format that is a work in progress. Do not use these disk
images without knowing exactly what you are doing! The
hd_*.img disk images continue to be the images you should
be using under normal circumstances.
A description of the disk images is provided later in this file.
For more information on the creatioin of these images including
instructions for customizing them or creating your own, refer to
the ReadMe.txt file in the Source\Images directory.
Installing Images
-----------------
The following instructions apply to Windows computers. Alternatively,
you can use the "dd" command on Linux or Mac.
First of all, a MAJOR WARNING!!!! The tools described below are
quite capable of obliterating your running Windows system drive. Use
with extreme caution and make sure you have backups.
To install a floppy image on floppy media, you can use the tool
called RaWriteWin. This tool is included in the Tools directory of
the distribution. This tool will write your floppy image (fd_xxx.img)
to a floppy disk using a raw block transfer. The tool is GUI based
and it's operation is self explanatory.
To install a hard disk image on a CF card or SD card, you must have
the appropriate media card slot on your computer. If you do, you can
use the tool called Win32DiskImager. This tool is also included in
the Tools directory of the distribution. It will write your
hard disk image (hd_xxx.img) to the designated media card. This tool
is also GUI based and self explanatory.
The use of the SIMH emulator is outside of the scope of this document.
However, if you use SIMH, you will find that you can attach the hard
disk images to the emulator with lines such as the following in your
SIMH configuration file:
| attach hdsk0 hd_cpm22.img
| set hdsk0 format=HDSK
| set hdsk0 geom=T:2048/N:256/S:512
| set hdsk0 wrtenb
Making Disk Images Bootable
---------------------------
The Operating System disk images below are ready to boot by the
RomWBW Boot Loader. However, if you update your RomWBW ROM, then
you should also update the system tracks of your bootable disk
images. You would use SYSCOPY to do this. SYSCOPY can also be
used to make a disk bootable if it is not already bootable.
You would use a command like the following to make drive C bootable:
| B>SYSCOPY C:=CPM.SYS
The system file to use depends on the operating system you are trying
to boot from the slice you are initializing with SYSCOPY:
CP/M 2.2 - cpm.sys
ZSDOS 1.1 - zsys.sys
CP/M 3 - cpmldr.sys
ZPM3 - cpmldr.sys
Slices
------
A RomWBW CP/M filesystem is fixed at 8MB. This is because it is the
largest size filesystem supported by all common CP/M variants. Since
all modern hard disks (including SD Cards and CF Cards) are much
larger than 8MB, RomWBW supports the concept of "slices". This
simply means that you can concatenate multiple CP/M filesystems (up
to 256 of them) on a single physical hard disk and RomWBW will allow
you to assign drive letters to them and treat them as multiple
independent CP/M drives.
With the exception of the hd_combo image, each of the disk images
includes a single CP/M file system (i.e., a single slice). However,
you can easily create a multi-slice disk image by merely concatenating
multiple images together. For example, if you wanted to create a 2
slice disk image that has ZSDOS in the first slice and Wordstar in
the second slice, you could use the following command from a Windows
command prompt:
| C:\RomWBW\Binary>copy /b hd_zsdos.img + hd_ws.img hd_multi.img
You can now write hd_multi.img onto your SD or CF Card and you will
have ZSDOS in the first slice and Wordstar in the second slice.
The hd_combo disk image is an example of this. It contains several
slices in one image file. The contents of this special disk image
are described below.
The concept of slices applies ONLY to hard disks. Floppy disks are
not large enough to support multiple slices.
Disk Image Contents
-------------------
What follows is a brief description of the contents of the
disk images automatically provided in the RomWBW distribution.
Note that all of the OS images include the RomWBW custom
support apps.
cpm22 - DRI CP/M 2.2 (Bootable Floppy and Hard Disk)
Standard DRI CP/M 2.2 distribution files along with a few commonly
used utilities.
zsdos - ZCPR1 + ZSDOS 1.1 (Bootable Floppy and Hard Disk)
Contains ZCPR1 and ZSDOS 1.1. This is roughly equivalent to the
ROM boot contents, but provides a full set of the applications
and related files that would not all fit on the ROM drive.
nzcom - NZCOM (Bootable Floppy and Hard Disk)
Standard NZCOM distribution. Note that you will need to run the
NZCOM setup before this will run properly. You will need
to refer to the NZCOM documentation.
cpm3 - DRI CP/M3 (Bootable Floppy and Hard Disk)
Standard DRI CP/M 3 adaptation for RomWBW that is ready to run.
It can be started by running CPMLDR.
zpm3 - ZPM3 (Bootable Floppy and Hard Disk)
Simeon Cran's ZCPR 3 compatible OS for CP/M 3 adapted for RomWBW and
ready to run. It can be started by running CPMLDR (which seems
wrong, but ZPMLDR is somewhat broken).
ws4 - WordStar 4 (Floppy and Hard Disk)
Micropro Wordstar 4 full distribution. This image is not bootable
and is intended to be added as an additional slice to an OS image.
bp - BPBIOS (Hard Disk only)
Adaptation of BPBIOS for RomWBW. This is NOT complete and NOT
useable in it's current state.
combo - Multi-Boot Combination (Bootable Hard Disk)
A pre-created combo image that contains the following slices. The
slices are identical to the individual images listed above.
Slice 0: cpm22 (bootable)
Slice 1: zsdos (bootable)
Slice 2: nzcom (bootable)
Slice 3: cpm3 (bootable)
Slice 4: zpm3 (bootable)
Slice 5: ws4 (not bootable)

2
Binary/ReadMe.txt

@ -49,7 +49,7 @@ The files with a ".upd" extension are binary images identical to the
.rom files, but they only have the first 128K bytes. The first 128K
is the system image without the ROM disk contents. These files can be
used to update the system image without modifying the ROM disk
contents. Refer to the Getting Started document for more information.
contents. Refer to the RomWBW User Guide for more information.
ROM Executable Images (<plt>_<cfg>.com)
---------------------------------------

9
Doc/ChangeLog.txt

@ -1,3 +1,12 @@
Version 3.2.1
-------------
- M?P: Fixed Zeta 2 FDD and CPUSPD config settings
- WBW: Fixed SURVEY.COM (again)
Version 3.2
-----------
- WBW: Version bump for release
Version 3.1.1
-------------
- WBW: Version bumped due to pervasive changes

91
Doc/ReadMe.txt

@ -10,6 +10,26 @@ This directory ("Doc") is part of the RomWBW System Software
distribution archive. It contains documentation for components of
the system.
ChangeLog.txt
-------------
Log of changes in RomWBW by version.
RomWBW User Guide ("RomWBW User Guide.pdf")
RomWBW System Guide ("RomWBW System Guide.pdf")
RomWBW Applications ("RomWBW Applications.pdf")
RomWBW ROM Applications ("RomWBW ROM Applications.pdf")
RomWBW Disk Catalog ("RomWBW Disk Catalog.pdf")
RomWBW Errata ("RomWBW Errata.pdf")
-------------------------------------------------------
Documentation set for RomWBW. The primary document is the
User Guide. The System Guide explains internal system operation
and has a reference for the HBIOS API. Use of included tools
and utilities are detailed in the Applications and
ROM Applications documents.
CPM Manual ("CPM Manual.pdf")
-----------------------------
@ -43,12 +63,6 @@ The operational manual for John Coffman's hard disk partitioning
program. This program is included in RomWBW as FDISK80.
Floppy Disk Utility Documentation ("FDU.tst")
---------------------------------------------
Operational documentation for the RomWBW FDU application.
Hard Disk Anatomy ("Hard Disk Anatomy.pdf")
-------------------------------------------
@ -61,17 +75,47 @@ NZCOM User's Manual ("NZCOM Users Manual.pdf")
NZCOM operating system operation manual.
RomWBW Architecture ("RomWBW Architecture.pdf")
-----------------------------------------------
ZCPR Manual ("ZCPR Manual.pdf")
-------------------------------
ZCPR is the command proccessor portion of Z-System. This is the
manual for ZCPR 1.x as included in RomWBW. The installation
instructions can be ignored since that work has already been
completed as part of the RomWBW distribution.
ZCPR D&J Manual ("ZCPR-DJ.doc")
-------------------------------
ZCPR D&J User Manual. This manual supplements the ZCPR Manual.
ZSDOS Manual ("ZSDOS Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual for ZSDOS
1.x as included in RomWBW. The installation instructions can be
ignored since that work has already been completed as part of the
RomWBW distribution.
Microsoft Basic-80 Reference Manual v5.0 (Microsoft Basic-80 Reference Manual v5.0.pdf)
---------------------------------------------------------------------------------------
Official manual for Microsoft BASIC as included in RomWBW.
Document describing the architecture of the RomWBW HBIOS. It
includes reference information for the HBIOS calls.
ROM Applications ("ROM Applications.pdf")
-----------------------------------------
QP/M 2.7 Installation Guide and Supplements ("qpm27.pdf")
QP/M 2.7 Interface Guide ("qdos27.pdf")
QP/M 2.7 Features and Facilities ("qcp27.pdf")
--------------------------------------------
Breif instructions for the ROM based applications included in
in the boot ROM.
Official documentation set for QP/M 2.7 from original QP/M distribution.
SIO+CTC Baud Rate Options (SIO+CTC Baud Rate Options.pdf)
---------------------------------------------------------
Documents possible baud rates available based on different baud
clock rates for Zilog SIO using CTC for baud rate clock generation.
Z180 ASCI Baud Rate Options ("Z180 ASCI Baud Rate Options.pdf")
@ -83,19 +127,10 @@ clock rate. This document provides a list of the possible
baud rates for typical CPU clock rates.
ZCPR Manual ("ZCPR Manual.pdf")
-------------------------------
ZCPR is the command proccessor portion of Z-System. This is the
manual for ZCPR 1.x as included in RomWBW. The installation
instructions can be ignored since that work has already been
completed as part of the RomWBW distribution.
UCSD p-System Users Manual ("UCSD p-System Users Manual.pdf")
-------------------------------------------------------------
Official user manual for p-System operating system included with
RomWBW.
ZSDOS Manual ("ZSDOS Manual.pdf")
---------------------------------
ZSDOS is the DOS portion of Z-System. This is the manual fo ZSDOS
1.x as included in RomWBW. The installation instructions can be
ignored since that work has already been completed as part of the
RomWBW distribution.
--WBW 5:18 PM 3/16/2023

BIN
Doc/RomWBW Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW Disk Catalog.pdf

Binary file not shown.

BIN
Doc/RomWBW Errata.pdf

Binary file not shown.

BIN
Doc/RomWBW ROM Applications.pdf

Binary file not shown.

BIN
Doc/RomWBW System Guide.pdf

Binary file not shown.

BIN
Doc/RomWBW User Guide.pdf

Binary file not shown.

23
Doc/Testing Notes.txt

@ -40,7 +40,7 @@ N8-2312 (X)
- Test FDU app
- Test TMS driver (video & kbd)
N8-2511 ( )
N8-2511 (X)
-------
- Test ASCI driver
- Test SD driver (Juha mode)
@ -139,27 +139,6 @@ GENERAL (X)
- ASSIGN app
- MODE app
- SYSCOPY app
- OSLDR app
- FDU app
- FDISK80 app
- TUNE app
RESULTS
-------
- Missing HBIOS startup banner (X)
- PANIC while printing Serial device inventory (X)
- Unexpected interrupt signals not handled well (X)
- Fix IT_??? usage (X)
- Fix HB_DI/HB_EI in PEEK/POKE/BNKCPY (X)
- Fix SIMH timer interrupt setup (X)
- Move DI/EI in PEEK/POKE/BNKCPY to API layer? (X)
- RETI vs. JP in page zero when INTMODE = 0 (X)
- Check interrupt stack space (X)
- If an early INT fires, we return with INTs enabled (not good) (X)
- PPPCON init should display ANSI 80x25 or similar (X)
- Add INT MODE X message to early boot messages (X)
- OSLDR fails when LDDS is loaded (X)
- Add "!!!" to force assembly error as needed ( )
- TIMER app should check for HBIOS active (X)
- Halt system after bad interrupt??? ( )
- Adapt and bundle PLAYER.COM (X)

32
ReadMe.md

@ -1,9 +1,9 @@
**RomWBW ReadMe** \
Version 3.2 \
Version 3.2.1 \
Wayne Warthen ([wwarthen@gmail.com](mailto:wwarthen@gmail.com)) \
05 Mar 2023
22 Mar 2023
# Overview
@ -128,8 +128,8 @@ contributions. The list below is probably missing many names – please
let me know if I missed you!
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
became the first platform RomWBW supported. Some of his code can still
be found in RomWBW.
became the first platform RomWBW supported. Some of his original code
can still be found in RomWBW.
- Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and advice.
@ -140,23 +140,30 @@ let me know if I missed you!
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
- Sergey Kiselev created several hardware platforms for RomWBW including
the very popular Zeta.
- David Giles created support for the Z180 CSIO which is now included SD
Card driver.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
- Ed Brindley contributed some of the code that supports the RCBus
platform.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
- Spencer Owen created the RC2014 series of hobbyist kit computers which
has exponentially increased RomWBW usage.
has exponentially increased RomWBW usage. Some of his kits include
RomWBW.
- Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW with
many of them.
- Alan Cox has contributed some driver code and has provided a great
deal of advice.
- The CP/NET client files were developed by Douglas Miller.
- Phillip Stevens contributed support for FreeRTOS.
@ -197,14 +204,15 @@ Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen wwarthen@gmail.com
> Wayne Warthen
> <wwarthen@gmail.com>
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is

30
ReadMe.txt

@ -1,6 +1,6 @@
RomWBW ReadMe
Wayne Warthen (wwarthen@gmail.com)
05 Mar 2023
22 Mar 2023
@ -129,8 +129,8 @@ contributions. The list below is probably missing many names – please
let me know if I missed you!
- Andrew Lynch started it all when he created the N8VEM Z80 SBC which
became the first platform RomWBW supported. Some of his code can
still be found in RomWBW.
became the first platform RomWBW supported. Some of his original
code can still be found in RomWBW.
- Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and
@ -142,23 +142,30 @@ let me know if I missed you!
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
- Sergey Kiselev created several hardware platforms for RomWBW
including the very popular Zeta.
- David Giles created support for the Z180 CSIO which is now included
SD Card driver.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
- Ed Brindley contributed some of the code that supports the RCBus
platform.
- Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
- Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage.
which has exponentially increased RomWBW usage. Some of his kits
include RomWBW.
- Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW with
many of them.
- Alan Cox has contributed some driver code and has provided a great
deal of advice.
- The CP/NET client files were developed by Douglas Miller.
- Phillip Stevens contributed support for FreeRTOS.
@ -202,14 +209,15 @@ Portions of RomWBW were created by, contributed by, or derived from the
work of others. It is believed that these works are being used in
accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
If anyone feels their work is being used outside of its intended
licensing, please notify:
Wayne Warthen wwarthen@gmail.com
Wayne Warthen
wwarthen@gmail.com
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as a
cohesive system. Each program may have its own licensing which may be
cohesive system. Each program may have its own licensing which may be
different from other programs within the aggregate.
In some cases, a single program (e.g., CP/M Operating System) is

120
Source/Apps/Survey/survey.mac

@ -15,6 +15,13 @@
;
;VERSION LIST - Most recent version first.
;
;21/Mar/23 - Previous hack was worthless because it broke
; the memory survey. Rehacked to use HBIOS to
; detect if N8VEM SBC MPCL memory management is
; in use and bypass MPCL ports if so. HBIOS check
; should allow use in non-RomWBW systems again.
; Wayne Warthen
;
;10/Feb/23 - Total hack to avoid crash on ECB SBC
; RomWBW now required by this version
; Wayne Warthen
@ -240,20 +247,6 @@ TABS EQU 9 ; Tab columns
;
;ORG 100H
;
;
;
.Z80
LD HL,IMGORG
LD DE,START
LD BC,IMGEND-IMGORG
LDIR
JP START
.8080
;
IMGORG:
;
.PHASE 8000H
;
START:
LXI H,0 ; Save stack pointer
DAD SP
@ -261,9 +254,38 @@ START:
LXI SP,FINIS+64
CALL TYPE ; Type initial CRLF
DW CRLF,CRLF
DB TAB,'*** RomWBW System Survey (Feb 2023) ***'
DB TAB,'*** RomWBW System Survey (Mar 2023) ***'
DW CRLF,CRLFE
;
; Are we running an N8VEM SBC w/ MPCL on RomWBW???
;
.Z80
XOR A ; assume not
LD (ISMPCL),A ; save it
; Check for RomWBW (HBIOS)
LD HL,(0FFFEH) ; HL := HBIOS ident location
LD A,'W' ; First byte of ident
CP (HL) ; Compare
JR NZ,NOTMPCL ; Not HBIOS
INC HL ; Next byte of ident
LD A,NOT 'W' ; Second byte of ident
CP (HL) ; Compare
JR NZ,NOTMPCL ; Not HBIOS
;
LD B,0F1H ; HBIOS: VER function
LD C,0 ; required reserved value
RST 08 ; DE := version, L := platform id
LD A,L ; Platform ID
CP 01H ; SBC?
JR NZ,NOTMPCL ; Not SBC
LD A,0FFH ; Flag
LD (ISMPCL),A ; Set flag
;
.8080
;
NOTMPCL:
;
;DISK SURVEY
LXI H,8 ; Init drive counter
MVI C,24 ; Get login vector
@ -445,20 +467,19 @@ MSURV:
ENDM
DB '|'
DW CRLF
db ' ' ; dmb 31-May-82
DB 'T'+EOL
DB 'TT','T'+EOL
LXI H,RAM
MVI M,LOW 1023 ; Init RAM counter
MVI M,LOW 2047 ; Init RAM counter
INX H
MVI M,HIGH 1023
MVI M,HIGH 2047
MVI B,4 ; Clear ROM, EMP
CLREG:
INX H
MVI M,0
DCR B
JNZ CLREG
LXI H,1024 ; Init memory pointer
MVI C,63 ; K to be checked
LXI H,2048 ; Init memory pointer
MVI C,62 ; K to be checked
;Start of analysis loop
BEGANA:
@ -492,7 +513,7 @@ NOTEM:
INXI ROM
NEXT:
INX H ; Index next byte
DCX D ; Decrement K counter
DCX D ; DEC DE; Decrement K counter
XRA A
ORA D
ORA E
@ -545,8 +566,19 @@ NEXTK:
; contents of first page
call type
db 'BIOS at',' '+eol
hexout bios+2
hexout bios+1
;hexout bios+2
;hexout bios+1
.z80
ld hl,(bios+1)
ld de,-3
add hl,de
push hl
ld a,h
call hexprn
pop hl
ld a,l
call hexprn
.8080
call type
db tab,'iobyte',' '+eol
hexout bios+3
@ -555,8 +587,19 @@ NEXTK:
hexout bios+4
call type
db tab,'BDOS at',' '+eol
hexout bdos+2
hexout bdos+1
;hexout bdos+2
;hexout bdos+1
.z80
ld hl,(bdos+1)
ld de,-6
add hl,de
push hl
ld a,h
call hexprn
pop hl
ld a,l
call hexprn
.8080
call type
dw crlf,crlfe
;
@ -607,9 +650,6 @@ PDLY:
JNZ PDLY
;
.Z80
; record the active bank
ld a,(0ffe0h) ; get current hbios bank id
ld (BANK),a ; and save it
; Check for Z180 CPU
xor a ; assume Z80
ld (IS180),a ; save it
@ -635,6 +675,17 @@ PORTLP:
ENDIF
;
.Z80
;
ld a,(ISMPCL) ; MPCL?
or a ; set flags
jr z,PCONT ; if not, skip ahead
ld a,d ; get port to test
and 0F8H ; range of 8 ports
cp 078H ; starting at 78H
jr z,ISPORT ; if in range, assume real port
;
PCONT:
di ; interrupts off
ld a,(IS180) ; Z180?
or a
@ -679,11 +730,6 @@ pnum1b equ $-1
push af
;
rdz:
; Make sure correct bank is still selected!
push af
ld a,(BANK)
call 0FFF3H
pop af
;
ei ; interrupts back on now
;
@ -818,13 +864,9 @@ RAMF: DS 1 ; RAM good flag
EMPF: DS 1 ; Empty so far flag
BLKSHF: DS 1 ; block shift factor
MAXALL: DS 2 ; maximum block number
BANK: DS 1 ; saved HBIOS bank id
IS180: DS 1 ; non-zero for Z180 CPU
ISMPCL: DS 1 ; non-zero for N8VEM SBC MPCL
FINIS EQU $ ; End of program
;
.DEPHASE
;
IMGEND:
;
END


36
Source/Doc/Applications.md

@ -529,14 +529,14 @@ manually perform a verification function with the `FLASH VERIFY` form
of the command.
The author's documentation for the application is found in the RomWBW
distribution in the Doc\\Contrib directory.
distribution in the Doc/Contrib directory.
## Notes
The application supports a significant number of EEPROM parts. It
should automatically detect your part. If it does not recognize your
chip, make sure that you do not have a write protect jumper set --
this jumper will cause the ROM chip type to be unrecognized.
this jumper can prevent the ROM chip from being recognized.
Reprogramming a ROM chip in-place is inherently dangerous. If anything
goes wrong, you will be left with a non-functional system and no
@ -557,12 +557,17 @@ GitHub repository](https://github.com/willsowerbutts/flash4).
# FDISK80
RomWBW supports disk media with MS-DOS FAT filesystems (see FAT
application). If you wish to put a FAT filesystem on your media, the
FDISK80 application can be used to partition your media which is
required in order to add a FAT filesystem.
`FDISK80` allows you to create and manage traditional partitions on
your hard disk media. Depending on the hard disk format and features
you are using, RomWBW may need hard disk partitions defined.
This application is provided by John Coffman.
Please refer to the $doc_user$ for more information on the use of
partitions within RomWBW. It is very important to understand that
RomWBW slices are completely different from disk partitions.
This application is provided by John Coffman. The primary
documentation is in the file "FDisk Manual.pdf" found in the
Doc directory of the RomWBW distribution.
## Usage
@ -577,20 +582,15 @@ applications. Please refer to the file called "FDisk Manual.pdf" in
the Doc directory of the RomWBW distribution for further instructions.
There is also more information on using FAT partitions with RomWBW in
the "RomWBW Getting Started.pdf" document in the Doc directory of the
distribution.
the $doc_user$ document in the Doc directory of the distribution.
## Notes
Partitioning of RomWBW media is **only** required if you want to add a
FAT filesystem to your media. Do not partition your media if you are
simply using it for RomWBW. To be clear, RomWBW slices do not require
partitioning.
As described in "RomWBW Getting Started.pdf", you should be careful
when adding a FAT partition to your media that the partition does not
overlap with the area of the media being used for RomWBW slices. The
"(R)eserve" function in `FDISK80` can help prevent this.
Hard disk partition tables allow a maximum of 1024 cylinders when
defining partitions. However, RomWBW uses exclusively Logical Block
Addressing (LBA) which does not have this limitation. When defining
partitions is usually best to define the start and size of of the
partition using bytes or sectors.
## Etymology

2
Source/Doc/Basic.h

@ -1,4 +1,4 @@
$define{doc_ver}{Version 3.2}$
$define{doc_ver}{Version 3.2.1}$
$define{doc_product}{RomWBW}$
$define{doc_root}{https://github.com/wwarthen/RomWBW/raw/dev/Doc}$
$ifndef{doc_title}$ $define{doc_title}{Document Title}$ $endif$

5
Source/Doc/Book.h

@ -11,12 +11,13 @@ toc-depth: 2
numbersections: true
secnumdepth: 2
header-includes:
- \setlength{\headheight}{15pt}
- |
```{=latex}
\setlength{\headheight}{15pt}
\usepackage{fancyhdr}
\usepackage{xcolor}
\usepackage{xhfill}
\usepackage{tocloft}
\renewcommand*{\familydefault}{\sfdefault}
\renewcommand{\maketitle}{
\begin{titlepage}
@ -44,6 +45,7 @@ include-before:
```{=latex}
\pagestyle{fancyplain}
\fancyhf{}
\lhead{\fancyplain{}{\nouppercase{\bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
\lfoot{\small RetroBrew Computing Group ~~ {\xrfill[3pt]{1pt}[cyan]} ~~ \thepage}
\pagenumbering{roman}
```
@ -52,5 +54,4 @@ include-before:
```{=latex}
\clearpage
\pagenumbering{arabic}
\lhead{\fancyplain{}{\nouppercase{\bfseries \leftmark \hfill $doc_product$ $doc_title$}}}
```

23
Source/Doc/ReadMe.md

@ -117,7 +117,7 @@ please let me know if I missed you!
* Andrew Lynch started it all when he created the N8VEM Z80 SBC
which became the first platform RomWBW supported. Some of his
code can still be found in RomWBW.
original code can still be found in RomWBW.
* Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and
@ -129,23 +129,30 @@ please let me know if I missed you!
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
* Sergey Kiselev created several hardware platforms for RomWBW
including the very popular Zeta.
* David Giles created support for the Z180 CSIO which is now included
SD Card driver.
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
* Ed Brindley contributed some of the code that supports the RCBus
platform.
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
* Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage.
which has exponentially increased RomWBW usage. Some of his kits
include RomWBW.
* Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW
with many of them.
* Alan Cox has contributed some driver code and has provided a great
deal of advice.
* The CP/NET client files were developed by Douglas Miller.
* Phillip Stevens contributed support for FreeRTOS.
@ -189,8 +196,8 @@ in accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen
> wwarthen@gmail.com
> $doc_author$ \
> [$doc_authmail$](mailto:$doc_authmail$)
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as

262
Source/Doc/UserGuide.md

@ -405,8 +405,9 @@ to your system that is not automatically identified, you may need
to build a custom ROM to add support for it. Building a custom ROM
is covered later.
[Appendix A - Device Summary] contains a list of the RomWBW hardware devices which may
help you identify the hardware discovered in your system.
[Appendix B - Device Summary] contains a list of the RomWBW hardware
devices which may help you identify the hardware discovered in your
system.
## Device Unit Assignments
@ -1366,7 +1367,7 @@ Essentially, this means you are creating a set of blank directories on
your disk so that files can be saved there. This process is described
below under Disk Initialization. In this scenario, you will need to
subsequently copy any files you want to use onto the newly initialized
disk (see Transferring Files).
disk (see [Transferring Files]).
You will notice that in the following instructions there is no mention
of specific hardware. Because the RomWBW firmware provides a
@ -1402,6 +1403,7 @@ The following table shows the disk images available.
| xxx_cpm3.img | DRI CP/M 3 Operating System | Yes |
| xxx_zpm3.img | ZPM3 Operating System | Yes |
| xxx_qpm.img | QPM Operating System | Yes |
| xxx_dos65.img | DOS/65 Operating System | Yes |
| xxx_ws4.img | WordStar v4 & ZDE Applications | No |
You will find 3 sets of these .img files in the distribution. The
@ -1411,8 +1413,8 @@ layout hard disk image.
There is also an image file called "psys.img" which contains a bootable
p-System hard disk image. It contains 6 p-System filesystem slices, but
these are not interoperable with the CP/M slices described above. This
file is discussed separately under p-System in the Operating Systems
these are not interoperable with the CP/M slices described above. This
file is discussed separately under p-System in the [Operating Systems]
section.
### Floppy Disk Images
@ -1462,7 +1464,7 @@ hard disk image with the specific slice contents you choose.
#### Combo Hard Disk Image
The combo disk image is essentially just a single image that has several
of the individual filesystem images already concatenated together. The
of the individual filesystem images already concatenated together. The
combo disk image contains the following 6 slices in the positions
indicated:
@ -1516,6 +1518,9 @@ In all of the examples above, the resulting file (hd.img) would now be
written to your hard disk media and would be ready to use in a RomWBW
system.
If you wish to further customize or create new disk image definitions,
please refer to the ReadMe.txt file in the Source/Images directory.
#### Writing Hard Disk Images
Once you have chosen a combo hard disk image file or prepared your own
@ -1933,29 +1938,48 @@ has a new suite of support tools and help system.
#### Boot Disk
To make a CP/M 3 boot disk, you actually place CPMLDR.SYS
on the system tracks of the disk. You do not place CPM3.SYS on the
system tracks. `CPMLDR.SYS` chain loads `CPM3.SYS` which must
exist as a file on the disk.
CP/M 3 uses a multi-step boot process involving multiple files.
To create (or update) a CP/M 3 boot drive, you must place `CPMLDR.SYS` on
the system track of the disk. You must also place `CPM3.SYS` and
`CCP.COM` on the target drive as regular files. Do **not** place
CPM3.SYS on the boot track. `CPMLDR.SYS` chain loads `CPM3.SYS` which
must exist as a regular file on the disk. Subsequently, `CPM3.SYS`
loads `CCP.COM`.
The CP/M 3 boot files are not included on the ROM disk due to
space constraints. You will need to transfer the files to your
system from the RomWBW distribution directory Binary\\CPM3.
space constraints. You will need to transfer the following files to
your system from the RomWBW distribution directory Binary/CPM3. You
can use XModem for this (or any of the mechanisms in [Transferring
Files].
After this is done, you will need to use `SYSCOPY` to place
the CP/M 3 loader image on the boot tracks of all CP/M 3
boot disks/slices. The loader image is called `CPMLDR.SYS`.
You must then copy (at a minimum) `CPM3.SYS` and `CCP.COM`
onto the disk/slice. Assuming you copied the CP/M 3 boot files
onto your RAM disk at A:, you would use:
- `CPMLDR.SYS`
- `CPM3.SYS` or `CPM3BNK.SYS`
- `CCP.COM`
The `CPM3.SYS` boot file is provided in 2 versions. In the Binary/CPM3
distribution directory, `CPM3.SYS` is the "non-banked" version of
CP/M 3. The `CPM3BNK.SYS` file is the "banked" version of CP/M 3. You
almost certainly want to transfer the banked `CPM3BNK.SYS` version.
After transferring the boot files to your RomWBW system, you will
need to use `SYSCOPY` to place `CPMLDR.SYS` on the boot track of the
target drive. `CPM3.SYS` and `CCP.COM` can be copied to the target
drive using any standard file copy tool such as `PIP` or `COPY`.
You do not need to be booted into CP/M 3 to create or update a CP/M 3
disk. The recommended approach is to boot CP/M 2.2 or Z-System from
ROM. Transfer the boot files to the RAM disk. Then simply copy the
files onto the CP/M 3 disk. Assuming the target CP/M 3 disk is F:, you
can use the following commands to place the files on the target drive:
```
SYSCOPY C:=CPMLDR.SYS
PIP C:=CPM3.SYS
PIP C:=CCP.COM
SYSCOPY F:=A:CPMLDR.SYS
COPY A:CPM3BNK.SYS F:CPM3.SYS
COPY A:CCP.COM F:
```
Note in the example above that `CPM3BNK.SYS` is renamed to `CPM3.SYS`
in the copy command.
#### Notes
- The `COPYSYS` command described in the DRI CP/M 3 documentation is
@ -1971,13 +1995,26 @@ PIP C:=CCP.COM
- RomWBW fully supports CP/M 3 file date/time stamping, but this
requires that the disk be properly initialized for it. This process
has not been performed on the CP/M 3 disk image. Follow the
CP/M 3 documentation to complete this process.
CP/M 3 documentation to complete this process, if desired.
## Simeon Cran's ZPM3
## ZPM3
ZPM3 is an interesting combination of the features of both CP/M 3 and
ZCPR 3. Essentially, it has the features of and compatibility with
both.
Simeon Cran's ZPM3 is an interesting combination of the features of both
CP/M 3 and ZCPR3. Essentially, it has the features of and
compatibility with both.
Due to this dual compatibility, the ZPM3 distribution image contains
most of the standard CP/M 3 files as well as a variety of common ZCPR3
applications. However, you will notice that user area 0 of the disk has
only a few files. Most of the files are distributed among other user
areas which is standard practice for ZCPR3. Most importantly, you will
see most of the applications in user area 15. The applications can be
executed from any user area because ZPM3 has a default search path that
includes User 15.
The ZPM3 distribution comes with essentially no utility programs at
all. In addition to the standard CP/M 3 utilities, RomWBW includes
a variety of common ZCPR3 utilities.
#### Documentation
@ -1986,31 +2023,55 @@ CP/M 3 and ZCPR 3.
#### Boot Disk
ZPM3 uses a multi-step boot process involving multiple files. The ZPM3
boot files are not included on the ROM disk due to space constraints.
You will need to transfer the files to your system from the RomWBW
distribution directory Binary\\ZPM3.
After this is done, you will need to use `SYSCOPY` to place the ZPM3
loader image on the boot tracks of the disk. The loader image is called
`ZPMLDR.SYS`. You must then copy (at a minimum) `CPM3.SYS`, `ZCCP.COM`,
`ZINSTAL.ZPM`, and `STARTZPM.COM` onto the disk/slice. Assuming you
copied the ZPM3 boot files onto your RAM disk at A:, you would use:
```
A>B:SYSCOPY C:=ZPMLDR.SYS
A>B:COPY CPM3.SYS C:
A>B:COPY ZCCP.COM C:
A>B:COPY ZINSTAL.ZPM C:
A>B:COPY STARTZPM.COM C:
To create (or update) a ZPM3 boot drive, you must place `ZPMLDR.SYS` on
the system track of the disk. You must also place `CPM3.SYS`,
`ZCCP.COM`, `ZINSTAL.ZPM`, and `STARTZPM.COM` on the target drive as
regular files. Do **not** place CPM3.SYS on the boot track.
`ZPMLDR.SYS` chain loads `CPM3.SYS` which must exist as a regular file
on the disk. Subsequently, `CPM3.SYS` loads `CCP.COM`.
The CP/M 3 boot files are not included on the ROM disk due to space
constraints. You will need to transfer the following files to your
system from the RomWBW distribution directory Binary/ZPM3. You can use
XModem for this (or any of the mechanisms in [Transferring Files].
- `ZPMLDR.SYS`
- `CPM3.SYS`
- `ZCCP.COM`
- `ZINSTAL.ZPM`
- `STARTZPM.COM`
You may be surprised to see the file called `CPM3.SYS`. This is not a
typo. Although it is called `CPM3.SYS`, it is ZPM and not the same as
`CPM3.SYS` in the CPM3 directory. Also, unlike CP/M 3, ZPM3 is always
banked, so you will not find two versions of the file. `CPM3.SYS` is a
banked implementation of ZPM3.
After transferring the boot files to your RomWBW system, you will
need to use `SYSCOPY` to place `ZPMLDR.SYS` on the boot track of the
target drive. The remaining boot files can be copied to the target
drive using any standard file copy tool such as `PIP` or `COPY`.
You do not need to be booted into ZPM3 to create or update a ZPM3
disk. The recommended approach is to boot CP/M 2.2 or Z-System from
ROM. Transfer the boot files to the RAM disk. Then simply copy the
files onto the ZPM disk. Assuming the target ZPM3 disk is F:, you
can use the following commands to place the files on the target drive:
```
SYSCOPY F:=A:ZPMLDR.SYS
COPY A:CPM3.SYS F:CPM3.SYS
COPY A:CCP.COM F:
COPY A:ZINSTAL.ZPM F:
COPY A:STARTZPM.COM F:
```
#### Notes
* The ZPM operating system is contained in the file called CPM3.SYS
- The ZPM3 operating system is contained in the file called CPM3.SYS
which is confusing, but this is as intended by the ZPM3 distribution.
I believe it was done this way to make it easier for users to transition
from CP/M 3 to ZPM3.
I believe it was done this way to make it easier for users to
transition from CP/M 3 to ZPM3.
## QP/M
@ -2029,18 +2090,27 @@ regarding the RomWBW adaptation and customizations.
#### Boot Disk
There is no RomWBW-specific boot disk creation procedure. QP/M
comes with a QINSTALL tool for this purpose. You can use the
tool if you want to perform a fresh installation.
comes with a QINSTALL which is used to install QPM over an existing
CP/M 2 installation or to update an existing QPM disk. `QINSTALL.COM`
is included with the RomWBW distribution.
#### Notes
* QPM is not available as source. This implementation was based
- QPM is not available as source. This implementation was based
on the QPM binary distribution and has been minimally customized
for RomWBW.
* QINSTALL is used to customize QPM. It is included on the
- QINSTALL is used to customize QPM. It is included on the
disk image. You should review the notes in the ReadMe.txt
file in Source/Image/d_qpm before making changes.
file in Source/Images/d_qpm before making changes.
- In addition to the QPM disk image, all of the QPM distribution
files can be found in the RomWBW distribution in the
Source/Images/d_qpm/u0 directory.
- The QPM disk image is not included as one of the slices on the
RomWBW combo disk image. If you want to include QPM, you can do
so by following the directions in Source/Images/Readme.txt.
## UCSD p-System
@ -2153,7 +2223,7 @@ therefore, globally available.
| CPUSPD | Change the running CPU speed and wait states of the system. |
Some custom applications do not fit on the ROM disk. They are found on the
disk image files or the individual files can be found in the Binary\\Apps
disk image files or the individual files can be found in the Binary/Apps
directory of the distribution.
| **Application** | **Description** |
@ -2719,7 +2789,7 @@ usage documents.
Note that the build scripts for RomWBW create the default disk images
supplied with RomWBW. It is relatively easy to customize the contents
of the disk images that are part of RomWBW. This is described in more
detail in the Source\\Images directory of the distribution.
detail in the Source/Images directory of the distribution.
## FAT Filesystem Transfers
@ -2845,6 +2915,31 @@ Please refer to the
[UNA BIOS Firmware Page](https://www.retrobrewcomputers.org/doku.php?id=software:firmwareos:una:start)
for more information on UNA.
## UNA Usage Notes
- At startup, UNA will display a prompt similar to this:
`Boot UNA unit number or ROM? [R,X,0..3] (R):`
You generally want to choose 'R' which will then launch the RomWBW
loader. Attempting to boot from a disk using a number at the UNA
prompt will only work for the legacy (hd512) disk format. However,
if you go to the RomWBW loader, you will be able to perform a disk
boot on either disk format.
- The disk images created and distributed with RomWBW do not have the
correct system track code for UNA. In order to boot to disk under
UNA, you must first use SYSCOPY to update the system track of the
target disk. The UNA ROM disk has the correct system track files
for UNA: `CPM.SYS` and `ZSYS.SYS`. So, you can boot a ROM OS and
then use one of these files to update the system track.
- Only Z-System and CP/M 2 are available OSes under UNA at this time.
Since NZ-COM launches from CP/M 2, it is usable. p-System is not
usable under UNA.
- Some of the RomWBW-specific applications are not UNA compatible.
# Upgrading
Upgrading to a newer release of RomWBW is essentially just a matter of
@ -2937,7 +3032,7 @@ firmware, you are likely to have odd problems.
The simplest way to update your disk media is to just use your modern
computer to overwrite the entire media with the latest disk image of
your choice. This process is described below in the Disk Images
your choice. This process is described below in the [Disk Images]
section. If you wish to update existing disk media in your system, you
need to perform the following steps.
@ -2953,7 +3048,7 @@ them over any older versions of the app on your disk:
* ASSIGN.COM
* SYSCOPY.COM
* MODE.COM
* FDU.COM (was FDTST.COM)
* FDU.COM
* FORMAT.COM
* XM.COM
* FLASH.COM
@ -2961,14 +3056,13 @@ them over any older versions of the app on your disk:
* TALK.COM
* RTC.COM
* TIMER.COM
* INTTEST.COM
For example: `B>COPY ASSIGN.COM C:`
Some RomWBW custom applications are too large to fit on the ROM disk.
If you are using any of these you will need to transfer them to your
system and then update all copies. These applications are found in
the Binary\\Apps directory of the distribution and in all of the disk
the Binary/Apps directory of the distribution and in all of the disk
images.
* FAT.COM
@ -2976,12 +3070,15 @@ images.
## System Update
If the system running ROMWBW utilizes the SST39SF040 Flash chip then it
is possible to do a System Update in place of a System Upgrade in some
cases.
As previously described, a RomWBW ROM contains ROM applications as well
as a ROM disk image. If you are upgrading your ROM with a new patch
level release, you may wish to upgrade just the application portion of
the ROM. This is referred to as a System Update.
A System Update would involve only updating the BIOS, ROM applications
and CP/M system.
If the system running ROMWBW utilizes the SST39SF040 Flash chip then it
is possible to do a System Update in place of a System Upgrade in some
cases. A System Update would involve only updating the BIOS, ROM
applications and ROM-hosted operating systems.
A System Update may be more favorable than a System Upgrade in cases
such as:
@ -2992,15 +3089,15 @@ such as:
- Configuration changes are only minor and do not impact disk
applications.
The ROMWBW build process generates a system upgrade file along with
The RomWBW build process generates a system update file along with
the normal ROM image and can be identified by the extension ".upd". It
will be 128Kb in size. In comparison the normal ROM image will have
the extension ".rom" and be 512Kb or 1024Kb in size.
Transferring and flashing the System Update is accomplished in the
same manner as described above in *Upgrading* with the required
difference being that the flash application needs to be directed to
complete a partial flash using the /P command line switch.
Transferring and flashing the System Update is accomplished in the same
manner as described above in [Upgrading via Flash Utility] with the
required difference being that the flash application needs to be
directed to complete a partial flash using the /P command line switch.
`E>FLASH WRITE ROM.UPD /P`
@ -3014,7 +3111,7 @@ please let me know if I missed you!
* Andrew Lynch started it all when he created the N8VEM Z80 SBC
which became the first platform RomWBW supported. Some of his
code can still be found in RomWBW.
original code can still be found in RomWBW.
* Dan Werner wrote much of the code from which RomWBW was originally
derived and he has always been a great source of knowledge and
@ -3026,23 +3123,30 @@ please let me know if I missed you!
due to internal changes within RomWBW. As of RomWBW 2.6, these
applications are no longer provided.
* Sergey Kiselev created several hardware platforms for RomWBW
including the very popular Zeta.
* David Giles created support for the Z180 CSIO which is now included
SD Card driver.
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver, DMA support, and a long list of general code
and documentation enhancements.
* Ed Brindley contributed some of the code that supports the RCBus
platform.
* Phil Summers contributed the Forth and BASIC adaptations in ROM, the
AY-3-8910 sound driver as well as a long list of general code
enhancements.
* Spencer Owen created the RC2014 series of hobbyist kit computers
which has exponentially increased RomWBW usage.
which has exponentially increased RomWBW usage. Some of his kits
include RomWBW.
* Stephen Cousins has likewise created a series of hobbyist kit
computers at Small Computer Central and is distributing RomWBW
with many of them.
* Alan Cox has contributed some driver code and has provided a great
deal of advice.
* The CP/NET client files were developed by Douglas Miller.
* Phillip Stevens contributed support for FreeRTOS.
@ -3086,8 +3190,8 @@ in accordance with the intentions and/or licensing of their creators.
If anyone feels their work is being used outside of its intended
licensing, please notify:
> Wayne Warthen
> wwarthen@gmail.com
> $doc_author$ \
> [$doc_authmail$](mailto:$doc_authmail$)
RomWBW is an aggregate work. It is composed of many individual,
standalone programs that are distributed as a whole to function as
@ -3249,7 +3353,7 @@ the RomWBW HBIOS configuration.
| Interrupts | Mode 2 |
- CPU speed is detected at startup if DS1302 RTC is active
- Otherwise 20.000 MHz assumed
- Otherwise 8.000 MHz assumed
- System timer is generated by onboard CTC
- Hardware auto-detected:
- Onboard DS1302 RTC

4
Source/HBIOS/Config/SCZ180_sc140.asm

@ -36,7 +36,7 @@ Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
DIAGPORT .SET $A0 ; DIAGNOSTIC PORT ADDRESS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
@ -59,3 +59,5 @@ SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS

4
Source/HBIOS/Config/SCZ180_sc503.asm

@ -36,7 +36,7 @@ Z180_IOWAIT .SET 1 ; Z180: I/O WAIT STATES TO ADD ABOVE 1 W/S BUILT-IN (0-3)
;
LEDENABLE .SET TRUE ; ENABLE STATUS LED (SINGLE LED)
DIAGENABLE .SET TRUE ; ENABLES OUTPUT TO 8 BIT LED DIAGNOSTIC PORT
DIAGPORT .SET $0D ; DIAGNOSTIC PORT ADDRESS
DIAGPORT .SET $A0 ; DIAGNOSTIC PORT ADDRESS
;
DSRTCENABLE .SET TRUE ; DSRTC: ENABLE DS-1302 CLOCK DRIVER (DSRTC.ASM)
INTRTCENABLE .SET TRUE ; ENABLE PERIODIC INTERRUPT CLOCK DRIVER (INTRTC.ASM)
@ -59,3 +59,5 @@ SDENABLE .SET TRUE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)
SDCNT .SET 1 ; SD: NUMBER OF SD CARD DEVICES (1-2), FOR DSD/SC/MT SC ONLY
;
PRPENABLE .SET FALSE ; PRP: ENABLE ECB PROPELLER IO BOARD DRIVER (PRP.ASM)
;
IDE0BASE .SET $90 ; IDE 0: IO BASE ADDRESS

4
Source/HBIOS/Config/ZETA2_std.asm

@ -26,7 +26,7 @@
;
#include "cfg_zeta2.asm"
;
CPUOSC .SET 20000000 ; CPU OSC FREQ IN MHZ
CPUOSC .SET 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .SET 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2
CRTACT .SET TRUE ; ACTIVATE CRT (VDU,CVDU,PROPIO,ETC) AT STARTUP
;
@ -35,7 +35,7 @@ UARTENABLE .SET TRUE ; UART: ENABLE 8250/16550-LIKE SERIAL DRIVER (UART.ASM)
UARTSBC .SET TRUE ; UART: AUTO-DETECT SBC/ZETA ONBOARD UART
;
FDENABLE .SET TRUE ; FD: ENABLE FLOPPY DISK DRIVER (FD.ASM)
FDMODE .SET FDMODE_ZETA ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
FDMODE .SET FDMODE_ZETA2 ; FD: DRIVER MODE: FDMODE_[DIO|ZETA|ZETA2|DIDE|N8|DIO3|RCSMC|RCWDC|DYNO|EPWDC]
;
PPIDEENABLE .SET FALSE ; PPIDE: ENABLE PARALLEL PORT IDE DISK DRIVER (PPIDE.ASM)
SDENABLE .SET FALSE ; SD: ENABLE SD CARD DISK DRIVER (SD.ASM)

2
Source/HBIOS/cfg_zeta2.asm

@ -28,7 +28,7 @@ BOOT_DELAY .EQU 0 ; FIXED BOOT DELAY IN SECONDS PRIOR TO CONSOLE OUTPUT
;
CPUSPDCAP .EQU SPD_FIXED ; CPU SPEED CHANGE CAPABILITY SPD_FIXED|SPD_HILO
CPUSPDDEF .EQU SPD_HIGH ; CPU SPEED DEFAULT SPD_UNSUP|SPD_HIGH|SPD_LOW
CPUOSC .EQU 20000000 ; CPU OSC FREQ IN MHZ
CPUOSC .EQU 8000000 ; CPU OSC FREQ IN MHZ
INTMODE .EQU 2 ; INTERRUPTS: 0=NONE, 1=MODE 1, 2=MODE 2, 3=MODE 3 (Z280)
DEFSERCFG .EQU SER_38400_8N1 ; DEFAULT SERIAL LINE CONFIG (SEE STD.ASM)
;

61
Source/HBIOS/ctc.asm

@ -147,18 +147,16 @@ CTCTIVT .EQU INT_CTC0A + CTCTIMCH
;==================================================================================================
;
CTC_PREINIT:
; BLINDLY RESET THE CTC ASSUMING IT IS THERE
LD A,CTC_DEFCFG
OUT (CTCBASE),A
OUT (CTCBASE+1),A
OUT (CTCBASE+2),A
OUT (CTCBASE+3),A
;
CALL CTC_DETECT ; DO WE HAVE ONE?
LD (CTC_EXIST),A ; SAVE IT
RET NZ ; ABORT IF NONE
;
; RESET ALL CTC CHANNELS
LD B,4 ; 4 CHANNELS
LD C,CTCBASE ; FIRST CHANNEL PORT
CTC_PREINIT1:
LD A,CTC_DEFCFG ; CTC DEFAULT CONFIG
OUT (C),A ; CTC COMMAND
INC C ; NEXT CHANNEL PORT
DJNZ CTC_PREINIT1
;
#IF (CTCTIMER & (INTMODE == 2))
; SETUP TIMER INTERRUPT IVT SLOT
@ -258,32 +256,33 @@ CTC_PRTCFG1:
RET
;
;==================================================================================================
; DETECT CTC BY CHECKING REGISTER CAN BE WRITTEN AND READ, AND THEN BY SETTING UP ONE CHANNEL IN
; TIMER MODE AND CHECKING IT IS COUNTING DOWN.
; DETECT CTC BY PROGRAMMING THE FIRST CHANNEL TO COUNT IN TIMER
; MODE (BASED ON CPU CLOCK). THEN CHECK IF COUNTER IS ACTUALLY
; RUNNING.
;==================================================================================================
;
CTC_DETECT:
LD A,CTC_TIM256CFG
OUT (CTCBASE),A
XOR A
OUT (CTCBASE),A
; CTC SHOULD NOW BE RUNNING WITH TIME CONSTANT 0
LD A,CTC_TIM256CFG ; RESET
OUT (CTCBASE),A
IN A,(CTCBASE) ; SHOULD READ 0 NOW
CP 0
JR NZ,CTC_NO
LD A,CTC_TIM16CFG ; RESET & SETUP TIMER MODE
OUT (CTCBASE),A ; SEND TO CTC
LD A,$FF ; TIME CONSTANT $FF
OUT (CTCBASE),A
IN A,(CTCBASE) ; SHOULD NOT BE 0 NOW
CP 0
JR Z,CTC_NO
XOR A
RET
OUT (CTCBASE),A ; SEND CONSTANT & START CTR
NOP ; BRIEF DELAY
IN A,(CTCBASE) ; READ COUNTER
LD C,A ; SAVE VALUE
CALL DLY8 ; WAIT A BIT
IN A,(CTCBASE) ; READ COUNTER AGAIN
PUSH AF ; SAVE RESULT
LD A,CTC_DEFCFG ; DEFAULT CHANNEL CFG
OUT (CTCBASE),A ; RESTORE TO DEFAULTS
POP AF ; GET RESULT BACK
CP C ; COMPARE TO PREVIOUS
JR Z,CTC_NO ; IF SAME, FAIL
XOR A ; SIGNAL SUCCESS
RET ; AND DONE
CTC_NO:
OR $FF
RET
;
OR $FF ; SIGNAL FAILURE
RET ; AND DONE
;
; CTC DRIVER DATA STORAGE
;
CTC_EXIST .DB $FF
CTC_EXIST .DB $FF ; SET TO ZERO IF EXISTS

3
Source/HBIOS/dbgmon.asm

@ -878,6 +878,8 @@ GETLNLOP:
JR Z,GETLNDONE ; YES, EXIT
CP CHR_BS ; IS <BS>?
JR Z,GETLNBS ; IF SO, HANDLE IT
CP CHR_DEL ; IS <DEL>?
JR Z,GETLNBS ; IF SO, HANDLE AS <BS>
CP ' ' ; UNEXPECTED CONTROL CHAR?
JR C,GETLNLOP ; IF SO, IGNORE IT AND GET NEXT
LD B,A ; SAVE CHAR IN B FOR NOW
@ -1854,6 +1856,7 @@ CHR_CR .EQU 0DH
CHR_LF .EQU 0AH
CHR_BS .EQU 08H
CHR_ESC .EQU 1BH
CHR_DEL .EQU 7FH
;
;__________________________________________________________________________________________________
;

11
Source/HBIOS/hbios.asm

@ -1898,8 +1898,8 @@ HB_CPU1:
;
; INIT OSCILLATOR SPEED FROM CONFIG
;
LD HL,CPUOSC / 1000
LD (HB_CPUOSC),HL
LD HL,CPUOSC / 1000 ; OSC SPD IN KHZ
LD (HB_CPUOSC),HL ; INIT HB_CPUOSC DEFAULT
;
; ATTEMPT DYNAMIC CPU SPEED DERIVATION
; NOTE THAT FOR PLATFORMS WITH SOFTWARE SELECTABLE CPU SPEED,
@ -1907,8 +1907,8 @@ HB_CPU1:
; POSSIBLE SETTING. THE FINAL CPU SPEED WILL BE ADJUSTED
; LATER.
;
CALL HB_CPUSPD ; CPU SPEED DETECTION
JR NZ,HB_CPUSPD2 ; SKIP IF FAILED
CALL HB_CPUSPD ; DYNAMIC CPU SPEED DETECTION
JR NZ,HB_CPUSPD2 ; SKIP AHEAD IF FAILED
;
; RECORD THE UPDATED CPU OSCILLATOR SPEED
;
@ -1917,8 +1917,9 @@ HB_CPU1:
; SO RECORD DOUBLE THE MEASURED VALUE
SLA L
RL H
LD (HB_CPUOSC),HL
#ENDIF
;
LD (HB_CPUOSC),HL ; RECORD MEASURED SPEED
;
HB_CPUSPD2:
;

3
Source/HBIOS/romldr.asm

@ -41,6 +41,7 @@ bel .equ 7 ; ASCII bell
bs .equ 8 ; ASCII backspace
lf .equ 10 ; ASCII linefeed
cr .equ 13 ; ASCII carriage return
del .equ 127 ; ASCII del/rubout
;
cmdbuf .equ $80 ; cmd buf is in second half of page zero
cmdmax .equ 60 ; max cmd len (arbitrary), must be < bufsiz
@ -1281,6 +1282,8 @@ rdln_nxt:
call cin ; get a character
cp bs ; backspace?
jr z,rdln_bs ; handle it if so
cp del ; del/rubout?
jr z,rdln_bs ; handle as backspace
cp cr ; return?
jr z,rdln_cr ; handle it if so
;

9
Source/Images/ReadMe.txt

@ -105,7 +105,7 @@ where:
<disk> specifies the disk contents (e.g., "cpm22")
<type> specifies disk type ("fd" for floppy, or "hd" for hard disk)
<format> specifies the disk format which must be one of:
- "fd144": 1.44M floppy disk
- "fd144": 1.44M floppy disk
- "hd512": hard disk with 512 directory entries
- "hd1k": hard disk with 1024 directory entries
<system> optionally specifies a boot system image to place in the
@ -203,10 +203,11 @@ command prompt:
| C:\RomWBW\Binary>copy /b hd1k_prefix.dat + hd1k_zsdos.img + hd1k_ws4.img hd_multi.img
Since the hd512 format does not utilize a partition, you do not
prefix the hd512_xxx.img files with anything. They are ready to write
to your media as is.
prefix the hd512_xxx.img files with anything. You can simply
concatenate the desired hd512_xxx.img files together and write the
resulting file to the start of your hard disk media.
In general, the hd1k format is considered the better format to use.
In general, the hd1k format is considered the preferred format to use.
It provides double the directory space and places all slices inside
of a hard disk partition that DOS/Windows should respect as "used"
space.

2
Source/Images/d_cpm22/ReadMe.txt

@ -8,7 +8,7 @@ RomWBW Loader prompt.
The remainder of this document describes the usage and contents of
this disk. It is highly recommended that you review the "RomWBW
Getting Started.pdf" document found in the Doc directory of the
User Guide.pdf" document found in the Doc directory of the
RomWBW Distribution.
== Usage ==

30
Source/Images/d_dos65/ReadMe.txt

@ -0,0 +1,30 @@
===== DOS/65 Disk for RomWBW =====
This disk is one of several ready-to-run disks provided with RomWBW.
It contains the files to start and run DOS/65 on an MBC system that
contains Dan Werner's 6502 processor.
The remainder of this document describes the usage and contents of
this disk. It is highly recommended that you review the "RomWBW
User Guide.pdf" document found in the Doc directory of the
RomWBW Distribution.
== Usage ==
- The disk is configured to boot under ZSDOS 1.1 (via primary Z80
CPU). Once booted, you can launch DOS/65 on a secondary 6502
CPU using the "DOS65" command.
== Notes ==
- DOS/65 is generally compatible with the CP/M 2.2 filesystem. Once
launched, you will have access to the fielsystem of the boot disk.
- DOS/65 does not utilize any of the RomWBW framework or drivers, so
it will only support devices built into DOS/65 itself. Once
launched DOS/65 takes over the hardware completely.
- The contents of this disk are purely a redistribution of the work
of Dan Werner.
-- WBW 2:47 PM 3/16/2023

2
Source/Images/d_nzcom/ReadMe.txt

@ -12,7 +12,7 @@ information on how NZ-COM is loaded.
The remainder of this document describes the usage and contents of
this disk. It is highly recommended that you review the "RomWBW
Getting Started.pdf" document found in the Doc directory of the
User Guide.pdf" document found in the Doc directory of the
RomWBW Distribution.
The primary documentation for NZ-COM is the "NZCOM Users Manual.pdf"

2
Source/Images/d_qpm/ReadMe.txt

@ -42,7 +42,7 @@ format disks. It creates an invalid directory entry for the
date/time stamp data file. This is definitely a QP/M issue. The
directory entry can be manually corrected.
== ZSDOS 1.1 Files ==
== QPM 2.7 Files ==
The following files came from the official QP/M distribution. Actually,
they came from 3 Microcode Consulting files (qpm27.zip, debugz.zip,

2
Source/Images/d_zsdos/ReadMe.txt

@ -8,7 +8,7 @@ Loader prompt.
The remainder of this document describes the usage and contents of
this disk. It is highly recommended that you review the "RomWBW
Getting Started.pdf" document found in the Doc directory of the
User Guide.pdf" document found in the Doc directory of the
RomWBW Distribution.
ZSDOS is a replacement for the BDOS portion of the CP/M 2.2 operating

4
Source/ver.inc

@ -1,8 +1,8 @@
#DEFINE RMJ 3
#DEFINE RMN 2
#DEFINE RUP 0
#DEFINE RUP 1
#DEFINE RTP 0
#DEFINE BIOSVER "3.2.0-rc.7"
#DEFINE BIOSVER "3.2.1-dev.2"
#define rmj RMJ
#define rmn RMN
#define rup RUP

4
Source/ver.lib

@ -1,7 +1,7 @@
rmj equ 3
rmn equ 2
rup equ 0
rup equ 1
rtp equ 0
biosver macro
db "3.2.0-rc.7"
db "3.2.1-dev.2"
endm

Loading…
Cancel
Save