Open main menu

Sideways address space

The "Sideways" address space on the Acorn BBC Microcomputer, Electron and Master-series microcomputer was Acorn's bank switching implementation, providing for permanent system expansion in the days before hard disk drives or even floppy disk drives were commonplace. Filing systems, application and utility software, and drivers were made available as Sideways ROMs, and extra RAM could be fitted via the Sideways address space.

The Advanced User Guide to the BBC Micro only refers to the Sideways address space as "Paged ROMs" because it predated the use of this address space for RAM expansion. The BBC B+, B+ 128 and BBC Master all featured Sideways RAM as standard.

Sideways address spaceEdit

The machines used the 8-bit 6502 and 65C102 processors with a 16-bit address space. The address space was split into 32 KiB RAM (0x0000 to 0x7FFF), 16 KiB Sideways address space (0x8000 to 0xBFFF) and 16 KiB operating system space (0xC000 to 0xFFFF).

The Sideways address space is a bank-switched (referred to by Acorn as "paged") address space that allows access to one 16 KiB bank at a time. Each bank can be ROM or RAM.

On both the BBC Micro and the BBC Master, there are ROM sockets on the motherboard (four on the BBC Micro) which take "Sideways ROMs". The BBC Micro shipped with a single ROM, containing BBC BASIC; further ROMs can be added to the computer to add software that will remain available at all times. The Electron's sideways address space was exposed only by the addition of a Plus 1 add-on or a third-party equivalent; the Plus 1 also introduced cartridge slots that were carried over into the BBC Master design as an alternative way to package ROMs.

Sideways ROMs permitted the addition of new filing systems to the OS (such as the Disc Filing System) and application and utility software. Software supplied as ROMs has two main benefits: it loads instantaneously, and it requires very little RAM to operate (and may use the dedicated paged ROM area of RAM that normal software keeps clear of). This allowed for application software to have more working space than would normally be possible, and for utility software such as debuggers to operate on software held in RAM.

Sideways modelEdit

The first few bytes of Sideways ROMs contain details that inform the OS how to handle them. These include language and service entry points, ROM type code, version number and a pointer to the copyright information. On reset the OS validates each sideways bank by checking for a copyright string. During operation the OS talks to valid ROMs by jumping to the two entry points with a specific value of the accumulator set. This provides a clean API for expanding the operating system and negotiating bank switching and RAM sharing.

ROMs have two entry points: the service entry point provides the API access to the ROM, and the language entry point is the starting point for application software contained in the ROM. "Service" ROMs need not have a language entry point, and only exist to extend the OS. "Language" ROMs are ROMs that provide application software, and gain their name from the fact that the BBC BASIC language is supplied as the default ROM in bank 15. ROMs often contain both entry points, as all user software must have a service entry point to allow the OS to call into it. Pure service ROMs typically only extend the features of the OS itself, without providing any application software.

The BBC Micro and Electron require one language ROM be present at POST to provide the computer with a user interface, else the OS will report "Language?" and halt. The version of Acorn MOS on the BBC Master has a built-in command line and will present this if no default language ROM is configured.

Sideways RAMEdit

In addition to ROM, banks of RAM could be added to the computer via the Sideways address space. These could either be used to load and use rom-images from disk or as extra workspace for machine code programs.

The BBC Model B is hardwired to deny writing to the Sideways area, so a write signal needs to be collected from somewhere. The methods vary, but the two most common methods are: removing chips from the board and placing them into an expansion board that occupies the chips' original sockets, and: fitting a RAM module in a ROM socket with a flying lead connected to a write signal elsewhere on the motherboard.

The 64kB model B+ had 12kB of "special" sideways ram. This used the sideways address but was selected by the high bit of the rom select register and could not be used to load rom images. The 128kB model B+ had an expansion board with 64kB of "regular" sideways ram in addition to the 12kB of "special" sideways ram on the main board.

The BBC Master came with 64kB of regular Sideways RAM, and could be configured with motherboard links as to which banks were ROM and which were RAM. In addition it had 4kB of "special" sideways ram and 8kB of ram paged over the operating system. Unlike on the B+ where the "special" sideways ram had been available for user applications these memory areas on the master were used as operating system and filing system workspace.

The Electron's cartridge ports were wired with the assumption that they'd be used only for ROMs, much as on the BBC Micro. The Master's slots replace the READY signal with an R/W signal so that RAM can also be plugged into the external cartridge ports.[1]

Sideways expansionEdit

Acorn MOS supports up to 16 Sideways banks. Due to limited motherboard space, extra Sideways sockets were made available by third-party expansion boards. Certain boards, such as the Watford Electronics Sidewise board, also provided the option of permanent, battery backed-up RAM. This allows for developer testing of new Sideways ROM software without burning an EPROM for each attempt. A write-protect switch could be used to prevent the contents of Sideways RAM from being modified.


  • Bray, Andrew C.; Dickens, Adrian C.; Holmes, Mark A., BA (1983). The advanced user guide for the BBC Microcomputer (zipped PDF) (3rd ed.). Cambridge: The Cambridge Microcomputer Centre. p. 347. ISBN 0-946827-00-1. Retrieved 19 April 2012.
  • ^ Acorn Electron Cartridge Interface Specification, Acorn Support Group Application Note 14 [2]

External linksEdit