| S BO D,2,14 | Set the default boot from Disk; Unit 2, Slice 14 |
| S BO R,M | Set the default boot to be the (M)onitor Rom Application |
## CP/M 2.2
## CP/M 2.2
This option will boot the CP/M 2.2 disk operating system
This option will boot the CP/M 2.2 disk operating system
from an image contained within the ROM. Please refer to the
from an image contained within the ROM. Please refer to the
CPM User Manual in the Doc/CPM folder of the distribution for
CPM User Manual in the Doc/CPM folder of the distribution for
CP/M usage. There are also many online resources.
CP/M usage. There are also many online resources.
During the build process the system will create a ROM disk
containing a number of curated CP/M applications, and also a
RAM drive. The capacity of each will depend upon the size
During the build process the system will create a ROM disk
containing a number of curated CP/M applications, and also a
RAM drive. The capacity of each will depend upon the size
of the ROM and RAM available to the system. A more complete
of the ROM and RAM available to the system. A more complete
set of utilities are provided within the disk image files
set of utilities are provided within the disk image files
provided as part of RomWBW.
provided as part of RomWBW.
A number of the applications provided are generic to
CP/M, while others rely on particular hardware or
A number of the applications provided are generic to
CP/M, while others rely on particular hardware or
aspects of RomWBW itself.
aspects of RomWBW itself.
Those that are written specific to RomWBW include: ASSIGN,
Those that are written specific to RomWBW include: ASSIGN,
CPUSPD, FDU, FORMAT, FLASH, FDISK80, MODE, REBOOT, RTC, SYSCOPY,
CPUSPD, FDU, FORMAT, FLASH, FDISK80, MODE, REBOOT, RTC, SYSCOPY,
TALK, TIMER, XM, and COPYSL.
TALK, TIMER, XM, and COPYSL.
The CP/M utilities supplied with RomWBW warrant more detailed descriptions,
The CP/M utilities supplied with RomWBW warrant more detailed descriptions,
and so are described in some detail in their own section
and so are described in some detail in their own section
of this user guide. In summary they provide the initial capability
of this user guide. In summary they provide the initial capability
to manage and update your RomWBW system, to create other
to manage and update your RomWBW system, to create other
bootable media (hardware dependent) and to write/debug
bootable media (hardware dependent) and to write/debug
code using assembler and BASIC.
code using assembler and BASIC.
## Z-System
## Z-System
Z-System is a complete alternative, but entirely compatible, disk
operating system to CP/M.
Z-System is a complete alternative, but entirely compatible, disk
operating system to CP/M.
Z-System is comprised of ZSDOS 1.1 which is a
Z-System is comprised of ZSDOS 1.1 which is a
replacement for CP/M's Basic Disk Operating System (BDOS), and ZCPR which
is a replacement for the Console Command Processor (CCP). Either or both
may be used, although using both together will allow ZCPR to make use of
replacement for CP/M's Basic Disk Operating System (BDOS), and ZCPR which
is a replacement for the Console Command Processor (CCP). Either or both
may be used, although using both together will allow ZCPR to make use of
specific ZSDOS features.
specific ZSDOS features.
Documentation for Z-System may be found in the Doc/CPM folder of the
Documentation for Z-System may be found in the Doc/CPM folder of the
@ -536,7 +536,7 @@ RomWBW distribution and the reader is referred to those.
## BASIC
## BASIC
For those who are not familiar with BASIC, it stands for Beginners All Purpose Symbolic
For those who are not familiar with BASIC, it stands for Beginners All Purpose Symbolic
Instruction Code.
Instruction Code.
RomWBW contains two versions of ROM BASIC, a full implementation and a "tiny" BASIC.
RomWBW contains two versions of ROM BASIC, a full implementation and a "tiny" BASIC.
@ -557,10 +557,10 @@ A comprehensive instruction manual is available in the Doc/Contrib directory.
## TastyBASIC
## TastyBASIC
TastyBASIC offers a minimal implementation of BASIC that is only 2304
bytes in size. It originates from Li-Chen Wang's Palo Alto Tiny BASIC
from around 1976. It's small size is suited the tiny memory capacities of
the time. This implementation is by Dimitri Theulings and his original
TastyBASIC offers a minimal implementation of BASIC that is only 2304
bytes in size. It originates from Li-Chen Wang's Palo Alto Tiny BASIC
from around 1976. It's small size is suited the tiny memory capacities of
the time. This implementation is by Dimitri Theulings and his original
source can be found at <https://github.com/dimitrit/tastybasic>.
source can be found at <https://github.com/dimitrit/tastybasic>.
### Features / Limitations
### Features / Limitations
@ -568,7 +568,7 @@ source can be found at <https://github.com/dimitrit/tastybasic>.
- Integer arithmetic, numbers -32767 to 32767
- Integer arithmetic, numbers -32767 to 32767
- Singles letter variables A-Z
- Singles letter variables A-Z
- 1-dimensional array support
- 1-dimensional array support
- Strings are not supported
- Strings are not supported
### Direct Commands
### Direct Commands
@ -592,10 +592,10 @@ Type ***BYE*** to return to the boot menu.
## FORTH
## FORTH
CamelForth is the version of Forth included as part of the boot ROM in
RomWBW. It has been converted from the Z80 CP/M version published at
<https://www.camelforth.com/page.php?5>. The
author is Brad Rodriguez who is a prolific Forth enthusiast, whose work
CamelForth is the version of Forth included as part of the boot ROM in
RomWBW. It has been converted from the Z80 CP/M version published at
<https://www.camelforth.com/page.php?5>. The
author is Brad Rodriguez who is a prolific Forth enthusiast, whose work
can be found here: <https://www.bradrodriguez.com/papers>.
can be found here: <https://www.bradrodriguez.com/papers>.
For those are who are not familiar with Forth, I recommend the
For those are who are not familiar with Forth, I recommend the
@ -618,8 +618,8 @@ words are added to the dictionary.
This implementation does not support loading or saving of programs. All programs
This implementation does not support loading or saving of programs. All programs
need to be typed in. Additionally, screen editing and code blocks are not supported.
need to be typed in. Additionally, screen editing and code blocks are not supported.
A CP/M version is not provided with RomWBW, this is only a ROM application. If you need to
run it under CP/M you would need to download it from the camelforth web site, the link is
A CP/M version is not provided with RomWBW, this is only a ROM application. If you need to
run it under CP/M you would need to download it from the camelforth web site, the link is
above.
above.
### Structure of Forth source files
### Structure of Forth source files
@ -640,7 +640,7 @@ Extensions and changes to this implementation compared to the original distribut
- The source code has been converted from Z80mr assembler to Hector Peraza's zsm.
- The source code has been converted from Z80mr assembler to Hector Peraza's zsm.
- An additional file camel80r.azm has been added for including additional words to
- An additional file camel80r.azm has been added for including additional words to
the dictionary at build time. However, as currently configured there is very little space
the dictionary at build time. However, as currently configured there is very little space
allocated for addition words. Exceeding the allocated ROM space will generate an error
allocated for addition words. Exceeding the allocated ROM space will generate an error
message when building.
message when building.
@ -667,16 +667,16 @@ appears deceptively simple but failure can creep up on you suddenly.
It requires an ANSI/VT-100 compatible colour terminal to play.
It requires an ANSI/VT-100 compatible colour terminal to play.
2048 is like a sliding puzzle game except the puzzle tiles are
numbers instead of pictures. Instead of moving a single tile all
tiles are moved simultaneously in the same direction. Where two
2048 is like a sliding puzzle game except the puzzle tiles are
numbers instead of pictures. Instead of moving a single tile all
tiles are moved simultaneously in the same direction. Where two
tiles of the same number collide, they are reduced to one tile with
tiles of the same number collide, they are reduced to one tile with
the combined value. After every move a new tile is added with
the combined value. After every move a new tile is added with
a starting value of 2.
a starting value of 2.
The goal is to create a tile of 2048 before all tile locations are
The goal is to create a tile of 2048 before all tile locations are
occupied. Reaching the highest points score, which is the sum of all
occupied. Reaching the highest points score, which is the sum of all
the tiles is a secondary goal. The game will automatically end when
the tiles is a secondary goal. The game will automatically end when
there are no more possible moves.
there are no more possible moves.
Play consists of entering a direction to move. Directions can be entered
Play consists of entering a direction to move. Directions can be entered
@ -737,20 +737,20 @@ Press Q at any time to bring up the option to Quit or Restart the game.
## Network Boot
## Network Boot
If your RomWBW system is equipped with an RCBus MT011 module, it is
possible to boot into CP/M 2.2 directly from a CP/NET network server.
This means that the operating system will be loaded directly from the
network server and all of your drive letters will be provided by the
If your RomWBW system is equipped with an RCBus MT011 module, it is
possible to boot into CP/M 2.2 directly from a CP/NET network server.
This means that the operating system will be loaded directly from the
network server and all of your drive letters will be provided by the
network server.
network server.
This function requires substantial knowledge of CP/NET and it's
implementation within RomWBW. Section 10 of the $doc_user$ provides
This function requires substantial knowledge of CP/NET and it's
implementation within RomWBW. Section 10 of the $doc_user$ provides
complete instructions for setting up a CP/NET based network under RomWBW
complete instructions for setting up a CP/NET based network under RomWBW
including a section on network booting.
including a section on network booting.
## Xmodem Flash Updater
## Xmodem Flash Updater
The RomWBW Xmodem flash updater provides the capability to update RomWBW from the boot loader using an x-modem file transfer. It offers similar capabilities to Will Sowerbutts FLASH4 utility except that the flashing process occurs during the file transfer.
The RomWBW Xmodem flash updater provides the capability to update RomWBW from the boot loader using an x-modem file transfer. It offers similar capabilities to Will Sowerbutts FLASH4 utility except that the flashing process occurs during the file transfer.
These are the key differences between the two methods are:
These are the key differences between the two methods are:
@ -764,12 +764,12 @@ More convenient one step process | Ability save and verify ROM images
No intermediate storage required | Progress display while flashing
No intermediate storage required | Progress display while flashing
. | Displays chip identification information
. | Displays chip identification information
. | Faster file transfer
. | Faster file transfer
The major disadvantages of the Updater is that it is new and relatively untested. There is the risk that a failed transfer will result in a partially flashed and unbootable ROM. There are some limitations on serial transfer speeds.
The major disadvantages of the Updater is that it is new and relatively untested. There is the risk that a failed transfer will result in a partially flashed and unbootable ROM. There are some limitations on serial transfer speeds.
The updater utility was initially intended to support the Retrobrew SBC-V2-005 platform using Atmel 39SF040 flash chips but has now been extended to be more generic in operation.
The updater utility was initially intended to support the Retrobrew SBC-V2-005 platform using Atmel 39SF040 flash chips but has now been extended to be more generic in operation.
The Atmel 39SF040 chip is recommended as it can erase and write 4Kb sectors. Other chips require the whole chip to be erased.
The Atmel 39SF040 chip is recommended as it can erase and write 4Kb sectors. Other chips require the whole chip to be erased.
@ -788,7 +788,7 @@ If your console device is not able to transfer a ROM image i.e. your console is
When your console is the serial device used for the transfer, no progress information is displayed as this would disrupt the x-modem file transfer. If you use an alternate character-input/output devices as the serial device for the transfer then progress information will be displayed on the console device.
When your console is the serial device used for the transfer, no progress information is displayed as this would disrupt the x-modem file transfer. If you use an alternate character-input/output devices as the serial device for the transfer then progress information will be displayed on the console device.
Due to different platform processor speeds, serials speeds and flow control capabilities the default console or serial device speed may need to be reduced for a successful transfer and flash to occur. The **Set Console Interface/Baud code** option at the Boot Loader can be used to change the speed if required. Additionally, the Updater has options to set to and revert from a recommended speed.
Due to different platform processor speeds, serials speeds and flow control capabilities the default console or serial device speed may need to be reduced for a successful transfer and flash to occur. The **Set Console Interface/Baud code** option at the Boot Loader can be used to change the speed if required. Additionally, the Updater has options to set to and revert from a recommended speed.
See the RomWBW Applications guide for additional information on performing upgrades.
See the RomWBW Applications guide for additional information on performing upgrades.
@ -839,7 +839,7 @@ If the update fails it is recommended that you retry before rebooting or
exiting to the Boot loader as your machine may not be bootable.
exiting to the Boot loader as your machine may not be bootable.
Option ( D ) - Duplicate flash #1 to flash #2
Option ( D ) - Duplicate flash #1 to flash #2
This option will make a copy of flash #1 onto flash #2. The purpose of this is to enable
This option will make a copy of flash #1 onto flash #2. The purpose of this is to enable
making a backup copy of the current flash. Intended for systems using 2x512Kb Flash devices.
making a backup copy of the current flash. Intended for systems using 2x512Kb Flash devices.
@ -858,7 +858,7 @@ you perform a cold reboot after a failed update then it is likely that
your system will be unusable and removing and reprogramming the flash
your system will be unusable and removing and reprogramming the flash
will be required.
will be required.
Option ( Q ) - Quit to boot loader.
Option ( Q ) - Quit to boot loader.
The SBC Boot Loader is reloaded from ROM and
The SBC Boot Loader is reloaded from ROM and
executed. After a successful update a Reboot should be performed. However,
executed. After a successful update a Reboot should be performed. However,
@ -874,7 +874,7 @@ Can be used to verify if a ROM image has been transferred and flashed correctly.
In Windows, right clicking on a file should also give you a context menu option CRC SHA which will allow you to select a CRC32 calculation to be done on the selected file.
In Windows, right clicking on a file should also give you a context menu option CRC SHA which will allow you to select a CRC32 calculation to be done on the selected file.
### Tera Term macro configuration
### Tera Term macro configuration
Macros are a useful tool for automatic common tasks. There are a number of instances where using macros to facilitate the update process could be worthwhile if you are:
Macros are a useful tool for automatic common tasks. There are a number of instances where using macros to facilitate the update process could be worthwhile if you are:
@ -932,37 +932,37 @@ Unabios not supported
## User Application
## User Application
RomWBW provides the facility for a user to build, include and execute their
own custom application directly from the applications menu at boot-up. All that's
needed is for the user to create their custom code ready for inclusion,
RomWBW provides the facility for a user to build, include and execute their
own custom application directly from the applications menu at boot-up. All that's
needed is for the user to create their custom code ready for inclusion,
recognising that there are certain constraints in doing this.
recognising that there are certain constraints in doing this.
In order to build properly, the build process requires that the file
In order to build properly, the build process requires that the file
`usrrom.asm` be found in the /Source/HBIOS folder of the RomWBW tree.
`usrrom.asm` be found in the /Source/HBIOS folder of the RomWBW tree.
This source file needs to assemble using TASM and it must start at
This source file needs to assemble using TASM and it must start at
(ORG) address 00100H as the RomWBW HBIOS reserves locations 00000H
to 000FFH for internal use. Further, the user application must assemble to
a maximum of `USR-SIZ` bytes.
(ORG) address 00100H as the RomWBW HBIOS reserves locations 00000H
to 000FFH for internal use. Further, the user application must assemble to
a maximum of `USR-SIZ` bytes.
During execution, the user application may make use of HBIOS calls as necessary,
and at exit it should return to the RomWBW boot loader
using the HBIOS warm reset. Note that no disk operating system (eg CP/M)
During execution, the user application may make use of HBIOS calls as necessary,
and at exit it should return to the RomWBW boot loader
using the HBIOS warm reset. Note that no disk operating system (eg CP/M)
functions will be available as no disk operating system will have been loaded.
functions will be available as no disk operating system will have been loaded.
There is a sample `usrrom.asm` supplied in Source/HBIOS and it is recommended
that, at least initially, users create their own application based on this as
a template because it already creates the necessary variables, starts at
(ORG) 00100H, and ensures that the assembled file is padded to create a
file `USR-SIZ` in length. Equally, should the the user's application prove
There is a sample `usrrom.asm` supplied in Source/HBIOS and it is recommended
that, at least initially, users create their own application based on this as
a template because it already creates the necessary variables, starts at
(ORG) 00100H, and ensures that the assembled file is padded to create a
file `USR-SIZ` in length. Equally, should the the user's application prove
too large for the space available then assembly will be terminated with an error.
too large for the space available then assembly will be terminated with an error.
Users should not remove this check from the templated code.
Users should not remove this check from the templated code.
If required, the user application may make use of the Z80 interrupt system
but if the user application wishes to rely on HBIOS functionality then it
must adhere to the HBIOS framework for managing interupts. Alternatively,
if the user appliction has no need for the HBIOS then it may use its own
custom code for handling interrupts. In that case, a hard reset, rather
If required, the user application may make use of the Z80 interrupt system
but if the user application wishes to rely on HBIOS functionality then it
must adhere to the HBIOS framework for managing interupts. Alternatively,
if the user appliction has no need for the HBIOS then it may use its own
custom code for handling interrupts. In that case, a hard reset, rather
than an HBIOS warm start, would be necessary to return control to RomWBW.
than an HBIOS warm start, would be necessary to return control to RomWBW.
`\clearpage`{=latex}
`\clearpage`{=latex}
@ -1000,7 +1000,7 @@ binary executable applications are found in the Binary/Apps directory.
The table below clarifies where each of the applications may be
The table below clarifies where each of the applications may be
found. It is not an exhaustive list, with further applications existing
found. It is not an exhaustive list, with further applications existing
on both the ROM-based and disk-based versions of CP/M. All of the Applications
on both the ROM-based and disk-based versions of CP/M. All of the Applications
included within RomWBW may be found within the Binary/Apps directory.
included within RomWBW may be found within the Binary/Apps directory.
| Application | ROM Disk | Boot Disks |
| Application | ROM Disk | Boot Disks |
| ----------- | :------: | :--------: |
| ----------- | :------: | :--------: |
@ -1030,13 +1030,13 @@ included within RomWBW may be found within the Binary/Apps directory.
| ZMD | No | Yes |
| ZMD | No | Yes |
| ZMP | No | Yes |
| ZMP | No | Yes |
All of the CP/M applications may be found in the RomWBW Binary/Apps directory
All of the CP/M applications may be found in the RomWBW Binary/Apps directory
and a user may copy those they need to their own customized disk/slice.
and a user may copy those they need to their own customized disk/slice.
Independently of whether the CP/M system was started from ROM or a boot disk,
Independently of whether the CP/M system was started from ROM or a boot disk,
such as a floppy disk or a slice on a CF or uSD memory card, applications
may be located on and executed from either the ROM-disk itself or from other media.
There are multiple disk images available for CP/M (eg floppy, legacy hard-disk and new
such as a floppy disk or a slice on a CF or uSD memory card, applications
may be located on and executed from either the ROM-disk itself or from other media.
There are multiple disk images available for CP/M (eg floppy, legacy hard-disk and new
hard-disk formats) and they all contain essentially the same set of applications.
hard-disk formats) and they all contain essentially the same set of applications.
There are particular advantages for each method of booting into CP/M.
There are particular advantages for each method of booting into CP/M.
@ -1058,12 +1058,12 @@ For systems starting CP/M from a disk created from an image file, there are a sm
of additional applications stored in the ```USER 2``` area of the disk. These applications
of additional applications stored in the ```USER 2``` area of the disk. These applications
do not form part of CP/M, but rather are small utilities used for test purposes during develpment work.
do not form part of CP/M, but rather are small utilities used for test purposes during develpment work.
They may, or may not, fuction correctly with any given hardware or software configuration.
They may, or may not, fuction correctly with any given hardware or software configuration.
Documentation for these untilities is very limited, though the source files maybe found
Documentation for these untilities is very limited, though the source files maybe found
in the /Source folder. Note that these utiltites are not available when starting CP/M
in the /Source folder. Note that these utiltites are not available when starting CP/M
from the ROM image or from a floppy disk.
from the ROM image or from a floppy disk.
A number of the CP/M applications available are described in more detail in
the following sections, each with an indication as to whether that application
A number of the CP/M applications available are described in more detail in
the following sections, each with an indication as to whether that application
may be found on the ROM-disk, a boot-disk, or both.
may be found on the ROM-disk, a boot-disk, or both.
`\clearpage`{=latex}
`\clearpage`{=latex}
@ -1159,7 +1159,7 @@ place at beginning of an option list.