Boot module

The boot module reads the settings and loads the ROMs from the SD card into the RAM. When started the code looks for the file ‘/tbblue/config.ini‘ which contains all the settings, such as the machine mode (48K, 128K or +2) and the ROM to be loaded, in addition to other options explained here.

A small on-screen help is displayed to remind the user of the PS/2 keyboard keys corresponding to the specific keys of the ZX Spectrum while loading and setting up. The machine mode and settings are sent to the hardware, and the ROM loading process is started, loading the ROM of the ESXDOS if DivMMC is active, Multiface ROM if it is active and the ROM of the machine to be booted.

The ROM loading process is done by the ZX Spectrum ROM region that starts at 0x0000 to 0x3FFF, and using the TBBlue port system the RAM bank is set to be able to access all the RAM within this region. The RAM banks are defined for the ZX Spectrum ROM and for the DivMMC and Multiface ROMs.

After loading, the machine is configured for execution, the ROM region is write protected and a RESET is executed for the Z80 to start execution from the 0x0000 address.

If any error occurs in the process the ULA border is set to red colour and an error message is displayed on the screen, leaving the machine in an infinite loop.