RomUpdate (Z88 application & BBC BASIC)

RomUpdate V0.9 beta (compiled on 23/04/2024, now supports the same flash memory types as OZ 5.0)

Purpose

RomUpdate is a utility originally designed to easily update a Z88 application on a Rakewell Flash Card. It will search the card for an application of the same name and will overwrite it with the supplied version, checksumming the files before flashing to ensure their integrity. Its purpose was to allow users to easily upgrade to newer versions of software as they were released, and applications could be bundled with the required config file for RomUpdate.

RomUpdate was later enhanced to write ROM banks to cards regardless of their current contents. Since the precise bank layout can be specified in the configuration file, it is the tool of choice to flash a new version of OZ to a card for booting in slot 1. From OZ 4.7 onwards, OZ updates are handled by an integrated U P D command, so RomUpdate is no longer required for this task.

Versions

RomUpdate exists as a native Z88 application, or as a BBC BASIC program (with some embedded machine code magic) that can be executed on an expanded Z88 with at least 64K free RAM space to work. If using the Z88 application, it should be run from a slot other than the one being written to or, ideally, it should be launched as a RAM app (which needs OZ 4.6 or later).

If using the BBC BASIC version you will need both of the following files:

  • romupdate.bas - the program binary

  • romupdate.crc - the CRC checksum of the romupdate.bas program to ensure its integrity after copying it across to the Z88

Start a BBC BASIC application and type the following to launch it:

RUN"romupdate.bas"

To use RomUpdate you will also need the bank file(s) for the application or OZ release that you would like to flash to the card. For example here are the files for a Slot 1 install of OZ 4.7.1:

ozs1-46cdda4.63

ozs1-46cdda4.62

ozs1-46cdda4.61

ozs1-46cdda4.60

ozs1-46cdda4.59

ozs1-46cdda4.58

ozs1-46cdda4.57

ozs1-46cdda4.56

ozs1-46cdda4.55

ozs1-46cdda4.54

ozs1-46cdda4.53

ozs1-46cdda4.52

ozs1-46cdda4.51

ozs1-46cdda4.50

ozs1-46cdda4.47

ozs1-46cdda4.32

together with:

  • romupdate.cfg - which tells RomUpdate what to do

When you launch the RomUpdate Z88 native application it will search for romupdate.cfg, verify the checksums of each of the bank files described within, and prompt for a slot to flash the data to.

ROMUPDATE.CFG

A configuration file needs to be created to tell RomUpdate the name of the image it is to replace together with its checksum. Comments can be entered by using the semicolon (;) at the beginning of the line. Do not add any blank lines in this file.

The checksum can be obtained by adding the updated file to a zip file generator (like WinZip). If you open the zipped file, next to the filename the CRC is displayed and then can be obtained.

Here are some examples:

CFG.V1 ; filename of a single 16K bank image, CRC (32bit), pointer to application DOR in 16K file image. "flashstore.63",$2533b3ca,$0000

A V1 config will update this app only if it is found on the target card.

A suitable romupdate.cfg file is automatically generated for FlashStore (shown above), EazyLink and Zetrix when they are compiled.

CFG.V4 ; OZ ROM, and total amount of banks to update. CD,16,"OZ for slot 1" ; Bank file, CRC, destination bank in slot 1. "ozs1-46cdda4.32",$252d4bba,$20 "ozs1-46cdda4.47",$0a0512aa,$2f "ozs1-46cdda4.50",$6979f058,$32 "ozs1-46cdda4.51",$947da0d9,$33 "ozs1-46cdda4.52",$d5330412,$34 "ozs1-46cdda4.53",$05384d83,$35 "ozs1-46cdda4.54",$c0559406,$36 "ozs1-46cdda4.55",$55151167,$37 "ozs1-46cdda4.56",$28e683fd,$38 "ozs1-46cdda4.57",$6f97110f,$39 "ozs1-46cdda4.58",$7c7f4303,$3a "ozs1-46cdda4.59",$d21a147a,$3b "ozs1-46cdda4.60",$b3f381de,$3c "ozs1-46cdda4.61",$5effaff1,$3d "ozs1-46cdda4.62",$97f35cc3,$3e "ozs1-46cdda4.63",$4148f8a7,$3f

The above config uses the “CD” type, instructing RomUpdate that this is a card image comprised of 16 banks. This means that it will flash the bank files to the indicated destination banks regardless of current contents. It will flash banks $20 to $3f (32 to 63) which is the bottom half of the card address space. This means that this particular image can be flashed to 1MB cards, and also to 512KB RAM / 512KB Flash hybrid cards since the RAM is always mapped from $00 to $1f (0 to 31).

If you were in a situation where you needed to flash OZ to a card but your Z88 did not have sufficient RAM to accommodate all the files at once, it’s easy to see how you could edit the above file into smaller versions to flash the banks in smaller groups.

CFG.V3 ; OZ ROM for slot 0 and total of 9 banks to update. OZ.0,9 ; Bank file, CRC, destination bank in slot 0. "ozs0-300.32",$06c7d2de,$00 "ozs0-300.33",$101f9f27,$01 "ozs0-300.34",$d54298df,$02 "ozs0-300.35",$1fdc4795,$03 "ozs0-300.36",$9333b969,$04 "ozs0-300.37",$0a3a2a03,$05 "ozs0-300.38",$026e1630,$06 "ozs0-300.39",$073500ae,$07 "ozs0-300.63",$613e75e8,$1f

The above example uses the “OZ” type, which is intended for replacing a running OZ version in slot 0 where the ROM chip has been replaced with a flash memory chip.