Sideways address space
# 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 BBC Micro Advanced User Guide 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 space

The machines used the 8-bit 6502 and 65C102 processors with a 16-bit address space. The address space was split into 32 KB RAM (0x0000 to 0x7FFF), 16 KB sideways address space (0x8000 to 0xBFFF) and 16 KB 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 KB 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 (if delivered as language or service ROMs), 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.

The ROM filing system also allowed software to reside in ROMs as files that would be loaded in a similar way to cassette programs. Such loading was not instantaneous since it involved transferring the files into RAM, but was nevertheless used by Acorn to deliver some cartridge-based software such as games and utilities, ostensibly due to the ability to redeploy cassette-based software in another medium without needing to make significant changes to the software.

## Sideways model

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 RAM

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 hard-wired to prevent 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 64 KB model B+ had 12 KB 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 128 KB model B+ had an expansion board with 64 KB of "regular" sideways RAM in addition to the 12 KB of "special" sideways RAM on the main board.

The BBC Master came with 64 KB 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 4 KB of "special" sideways RAM and 8 KB 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 cartridge port wiring differs between the Electron and Master 128 with regard to certain RAM-related signals. The Master's slots replace the READY signal with a more general R/W signal, preserving the CSRW (chip select, read/write) signal only for certain addresses in pages FC, FD and FE, whereas CSRW corresponds to the CPU read/write line in the Electron Plus 1 cartridge interface. Both systems support RAM cartridges, however.

## Sideways expansion

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.

