The very latest version, source code and documentation for RomWBW can be found here.
Getting started with RomWBW
The following describes the use of RomWBW v3.0.1
The standard distribution of RomWBW for SC503 assumes a terminal is connected to serial port A. The default serial port settings are: 115200 baud, 8 data, 1 stop, no parity, and hardware flow control. An FTDI serial to USB adapter is shown above, connected to serial port A.
An SD card is optional. If present, it should be connected either directly, as illustrated above, or remotely using a 6-way Dupont cable.
At power up RomWBW initialises and displays self-test results on the status LED. It also shows more detailed diagnostic information on the LEDs of a digital I/O module, if present and set to address 0xA0. It also outputs system information to the terminal.
Following a reset, the status LED should light for a fraction of a second, then blink off for about half a second, then light again. This indicates the self-test has passed.
Once an option is selected from the RomWBW start-up menu the status LED turns off, but lights during access to storage devices.
The optional diagnostic display should result in the LEDs each lighting in turn until all 8 are turned on. The LED display, shown in binary, goes through the following sequence:
- 0000 0000 = State after hardware reset
- Disable interrupts
- 0000 0001 = Start of initialisation
- Setup Z180 base address
- 0000 0010
- Setup Z180 registers
- 0000 0011
- Install HBIOS into RAM and transition to RAM
- 0000 0111
- Setup page zero interrupt vector
- 0000 1111
- Determine CPU type and speed
- 0001 1111
- Initialise heap storage
- 0011 1111
- Pre-console initialisation
- 0111 1111
- Output any cached debug text
- Announce HBIOS and version
- 1111 1111
- Display system information
For full details see RomWBW source code, file “hbios.asm”.
Once an option is selected from the RomWBW startup menu the diagnostic LEDs turn off, but light during access to storage devices. Each drive is represented by its own LED.
When RomWBW starts it will display something like this on the terminal:
The first line shows the HBIOS version.
RomWBW HBIOS v3.0.1, 2021-10-11
Following this is the configuration name “SCZ180” and the CPU details. This should say “Z8S180-K” or “Z8S180-N”, followed by the speed (18.432MHz) and the Z180 register base address (0xC0). The Z180 CPU has 64 I/0 registers, in this case, from 0xC0 to 0xFF.
SC500 Z8S180-N @ 18.432MHz IO=0xC0
The memory and I/O wait states are shown, each with a value of 0 to 3. Zero wait states is the fastest. Several wait states are added to I/O operations to increase the access time to something similar to a typical RC2014 bus. The interrupt mode is also shown, followed by memory size.
0 MEM W/S, 2 I/O W/S, INT MODE 2
512KB ROM, 512KB RAM
The next block is all the devices detected.
ASCI0: IO=0x00 ASCI MODE=115200,8,N,1 ASCI1: IO=0x01 ASCI MODE=115200,8,N,1 DSRTC: MODE=STD IO=0xA1 Mon 2021-10-11 21:03:29 CHARGE=OFF MD: UNITS=2 ROMDISK=384KB RAMDISK=384KB IDE: IO=0x90 MODE=RC IDE0: 8-BIT LBA BLOCKS=0x00007A80 SIZE=15MB IDE1: NO MEDIA SD: MODE=SC OPR=0xA1 CNTR=0x0A TRDR=0x0B DEVICES=1 SD0: SDHC NAME=SU08G BLOCKS=0x00ECE000 SIZE=7580MB
ASCI0/1 are the Z180’s serial ports.
DSRTC is the Real Time Clock. This is not included on the motherboard but could be added as an expansion module. Charge must be off.
MD is the memory devices. There should be 2 units: ROMDISK and RAMDISK.
IDE devices, such as the optional Compact Flash module, are shown.
SD is the SD card, if fitted to SC503’s SPI port.
This is followed by details of the character and disk devices and then the boot options.
Real Time Clock
A real time clock is not included on SC503. If it is included on a separate module (at I/O address 0xA1), RomWBW will detect it.
The real time clock is managed with “RTC.COM” from CP/M. Start CP/M and type the command “RTC”.
To display the current time, press the “T” key.
Current time: 19-08-03 12:07:15-03
To enter the time and date, press the “I” key and enter the appropriate values. Each value is 2 digits, such as “07”. A 24 hour clock is used so hours can be from 00 to 23. The day of the week is in the range 01 (Sunday) to 07 (Saturday).
Init date/time. YEAR:19 MONTH:08 DATE:03 HOURS:12 MINUTES:05 SECONDS:00 DAY:07 RTC>s Set RTC time.
Now press the “S” key to set the time to the values entered above.
WARNING: Charge must be off as the RTC is assumed not to have a rechargeable battery.
Preparing an SD card
An SD card provides a number of logical drives. Before using a drive it must be prepared with “CLRDIR” from CP/M.
When CP/M starts it will list the available drives. In the example below:
- Drive A is memory device 1 which is a RAM disk.
- Drive B is memory device 0 which is RomWBW’s ROM disk where lots of useful programs can be found.
- Drives C to F are the IDE devices, typically a Compact Flash card.
- Drives G to J are the SD card.
Loading CP/M 80 v2.2… CBIOS v3.0.1 [WBW] Configuring Drives… A:=MD1:0 B:=MD0:0 C:=IDE0:0 D:=IDE0:1 E:=IDE0:2 F:=IDE0:3 G:=SD0:0 H:=SD0:1 I:=SD0:2 J:=SD0:3 1932 Disk Buffer Bytes Free CP/M-80 v2.2, 54.0K TPA B>
Drive letter allocation will depend on the storage devices detected at start-up. The mapping of drive letter to physical storage space can be changed dynamically using the ASSIGN command.
Start CP/M and enter the command “CLRDIR H:”. To confirm you really do want to do this, press the “Y” key. Note, it has to be an upper case “Y”. The terminal should show something like this:
CLRDIR V-0.4 (06-Aug-2012) by Max Scane Warning - this utility will overwite the directory sectors of Drive: H: Type Y to proceed any key other key to exit. Y Directory cleared.
A simple way to test a drive is working properly is to do a copy with verify. For example:
B>pip h:=B:*.*[v] COPYING - ASM.COM CLRDIR.COM COPY.CFG COPY.COM DDT.COM