[img] Z80 BBC BASIC for the ZX Spectrum
MDFS::Software.Spectrum.BBCBasic.Docs.Install/htm Search  

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 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
  • 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.

    Best viewed with Any Browser Valid HTML 4.0! Authored by J.G.Harston
    Last update: 17-Aug-2005