| Z80 BBC BASIC for the ZX Spectrum
|
Installing BBC BASIC on the Sinclair Spectrum
Running the RAM-based version
Running the ROM-based version
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
BBCBasic ROM
Plug it in to slot 0
Power on
Real hardware Spectrum 48K/128K/+2 with RAM pageable to ROM:
See http://groups.google.com/groups?q=BBC+Basic+on+the+Z88
Z80Em (RISC OS; Warm Silence):
Ensure Z80Em is patched with
Z80Em/Patch
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 <Z80Em$Dir>.ROMs
,
making sure it is filetyped to &700.
Drag the BBCBasic
rom image to the Z80Em icon bar icon.
Speculator (RISC OS; D.J.Lawrence):
Ensure Speculator v1.30 is patched with
Speculator/SpecPatch
to allow access to emulated external hardware or use Speculator v1.40 or later.
Copy the 16K BBCBasic ROM image into
<Spec$Dir>.ROMs
Run ROMBox to provide an emulated
ROMBox.
Load the ROMs into the Spectrum with
*ROMBox Speculator
*ROMBoxLoad 0 <Spec$Dir>.ROMs.BBCBasic
*ROMBoxLoad 1 <Spec$Dir>.ROMs.Spectrum
Start the Spectrum with *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):
Backup Z80\ROMS.BIN
Replace it with
ROMS.BIN.
Start Z80 in Spectrum 128 mode with Z80 /128
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.
Good luck!
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.
This 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.
HOME
BBCBASIC
ZX SPECTRUM
Z80
Authored by J.G.Harston
Last update: 17-Aug-2005