||Z80 BBC BASIC for the ZX Spectrum
Installing BBC BASIC on the Sinclair Spectrum
To start using BBC BASIC on the Spectrum you need to install the BBC BASIC
ROM in memory at &0000-&3FFF. BBC BASIC expects to find 48K ZX BASIC
in ROM 1 by doing OUT (&7FFD),&10.
If BBC BASIC is installed in ROM 0 then it is entered on RESET.
Real hardware Spectrum 48K/128K/+2:
Build or obtain an external ROMBox controlled through ROM latch &FD
Program a 16k EPROM with the 16k
Plug it in to slot 0
Real hardware Spectrum 48K/128K/+2 with RAM pageable to ROM:
Z80Em (RISC OS; Warm Silence):
Ensure Z80Em is patched with
to allow correct access to port &FD and to allow ROMs to be dragged to
the icon bar.
Copy the 32K BBCBasic ROM image to
somewhere convienent, such as
making sure it is filetyped to &700.
BBCBasic rom image to the Z80Em icon bar icon.
Speculator (RISC OS; D.J.Lawrence):
Ensure Speculator v1.30 is patched with
to allow access to emulated external hardware or use Speculator v1.40 or later.
Copy the 16K BBCBasic ROM image into
Run ROMBox to provide an emulated
Load the ROMs into the Spectrum with
Start the Spectrum with
*ROMBoxLoad 0 <Spec$Dir>.ROMs.BBCBasic
*ROMBoxLoad 1 <Spec$Dir>.ROMs.Spectrum
Spec128 (RISC OS; Joe Kelleher):
Currently (v0.15) doesn't work as the first OUT (&FD),x causes it to exit to debug mode
Z80 Emulator (DOS; Gerton Lunter):
Replace it with
Start Z80 in Spectrum 128 mode with
WinZ80 Emulator (Windows; Gerton Lunter):
Go to: Settings -> Hardware
Select Spectrum 128K
Go to: Select File -> Select alternate ROM files
1st 128k rom: ZXBasic
2nd 128k rom: BBCBasic
Reset the emulator
FUSE (Windows, Unix, various; Marks, Kendall, Salt, Meunier):
You can load the BBC BASIC ROM from the user interface via F1 or you can
specify the machine and ROMs at the command line with the --rom
options. For instance, if FUSE is in C:\Apps\FUSE and BBCBasic.rom is in
H:\Spectrum, use something like the following:
fuse -m 128 --rom-128-0=H:\Spectrum\BBCBasic.rom --rom-128-1=C:\Apps\FUSE\48.rom
fuse -m plus2 --rom-plus2-0=H:\Spectrum\BBCBasic.rom --rom-plus2-1=C:\Apps\FUSE\48.rom
fuse -m se --rom-spec-se-0=H:\Spectrum\BBCBasic.rom --rom-spec-se-1=C:\Apps\FUSE\48.rom
Emulators in general:
You need an emulator that emulates an external ROMBox, or emulates
the Spectrum 128K banked ROMs or the Spectrum SE ROMs.
The BBCBasic ROM image needs to be
present in memory at
&0000-&3FFF using OUT &7FFD. If
it is in bank 0 it will start on RESET.
The ZXBasic ROM image needs to be present
in memory at
&0000-&3FFF after an OUT &7FFD,&1x
The emulator should implement partial decoding of the high bytes of the
I/O address &7FFD, specifically, the binary address %01xxxxxx11111101
(A15=0 and A14=1, A13 to A8 ignored) should select the ROM latch. The
ROM latch needs to be implemented as on the Spectrum 128K with b4=ROM
or as in the ROMBox with b4-b7=ROM.
Alternative ROM paging
The support code from version 0.37 can use the ROM paging system on the
Timex and Spectrum SE. From version 0.39 the RESET code works out what port
should be used. This can be overridden by replacing the ROM paging code.
The code to patch is at the destination of the
JP at &3F92.
JP will have a destination near the top of RAM. The code
is initally in ROM at address-&C000 (eg &3E20), and must be
written to execute at address (eg &FE20). The code must not
extend past ESCFLG at &FF80.
Authored by J.G.Harston
Last update: 17-Aug-2005