The BBC Master Computer by Acorn
The BBC Master computer was released by Acorn Computers in 1986 as a successor to the BBC Micro, model B. The machine was built around the MOS technology 65SC12 processor. This is an enhanced CMOS version of teh nMOS-based 8-bit 6502. It uses less power than the 6502 and has an increased instruction set. Also, a few problems that existed in the 6502 were fixed with the 65C12. The BBC Master came in a few different models. One of the strengths of the architecture was that it could be expanded using a co-processor, that enabled it to run DOS Plus or the GEM graphical user interface.
The system was designed and built for the BBC as part of the push to enable computing in the British education system. The computer was backwards compatible with the BBC Micro, except for some games that used features on the BBC Micro that were not part of the standard.
BBC Master Series
- ECO-Net connector
- Audio Out
- Cassette port
- RS 432 communications port
- Analoge port
- RGB Monitor connector
- Composite Video connector
- RF Output for TV
BBC Master Models
The BBC Master was produced in a few variations. Not all were produced in large quantities, and some of them are hard to find.
- Master 128 - First model of the Master series
- Master Turbo - Featured a 65C102 co-processor @4MHz
- Master AIV - Master Turbo with a SCSI interface and a Videodisc
- Master ET - For use on a network, only had RGB and Econet connectors
- Master 512 - Intel 80186 co-processor @ 10MHz to run DOS Plus and GEM
- Master Scientific - Prototype, NS32016 co-processor @ 8MHz
- Master Compact - Compact version of the 128
BBC Master Operating System (MOS)
The Master Operating System (MOS) was the firmware at the core of the BBC Master series, stored in ROM alongside BBC BASIC IV. It evolved directly from the BBC Micro’s MOS but extended its feature set to support the larger memory map, extra ROM sockets, and co-processor options of the Master family. The MOS provided the low-level routines for device I/O, screen and keyboard handling, interrupt servicing, and the command-line interface (*commands). Unlike many contemporary 8-bit microcomputer OSes, the MOS emphasized modularity: ROM-based language interpreters, filing systems, and utilities could be slotted in and invoked seamlessly through a standardized API.
Technically, the Master MOS ran on the 65C12 processor and occupied the upper section of the 16-bit address space, mapped into the top 16 KB of memory. It made heavy use of vectored entry points, with the “OSWORD,” “OSBYTE,” and “OSCLI” calls forming the backbone of its application programming interface. This vector-based approach allowed extensions and filing systems to hook into the OS without patching or breaking existing code. The MOS also provided bank-switching support to take advantage of the Master’s expanded RAM (up to 512 KB in some models) and integrated utilities like the “EDIT” ROM and View family of applications.
A critical innovation in the Master MOS was its coordination with the Tube interface, Acorn’s high-speed second-processor link. When a co-processor such as the 80186 board (in the Master 512) or the 65C102 second processor was active, the MOS suspended most of its local duties and became a host interface layer, forwarding I/O and OS calls between the host hardware and the second processor. This design let the Master run different CPUs and operating environments while maintaining compatibility with MOS services. The Master MOS thus acted as both a conventional 8-bit OS and a hardware abstraction layer, making it one of the more sophisticated firmware environments in the 8-bit era.
BBC Basic Language and OS
BBC BASIC was a high-level programming language created by Acorn Computers in 1981 for the BBC Microcomputer System, commissioned by the BBC Computer Literacy Project. It was based on the earlier Dartmouth BASIC but extended with structured programming features and inline assembler support, making it both beginner-friendly and powerful for advanced users. Unlike many contemporary BASIC dialects, BBC BASIC emphasized readability, supporting named procedures and functions, local variables, and full IF...THEN...ELSE constructs, which helped foster good programming practice among students and hobbyists.
One of the most distinctive aspects of BBC BASIC was its ability to integrate 6502 assembly language directly within BASIC source code. This meant programmers could write performance-critical routines in machine code without leaving the BASIC environment, a feature that was far ahead of its time. Combined with the BBC Micro’s flexible graphics and sound capabilities, BBC BASIC provided a complete toolkit for educational, scientific, and entertainment applications, spanning simple text-based teaching programs to advanced arcade-style games.
BBC BASIC survived long beyond the BBC Micro itself. Versions were ported to CP/M, MS-DOS, RISC OS, Windows, and even modern platforms like iOS and Android through interpreters and emulators. Its legacy lies not only in its technical innovations but also in its cultural impact: an entire generation of UK students learned programming principles through BBC BASIC. Below is a simple code sample that demonstrates its syntax clarity and structure:
10 REM BBC BASIC with inline 6502 assembly
20 DIM code 20
30 FOR pass = 0 TO 2
40 P% = code
50 [OPT pass
60 LDA &70 \ Load value from memory location &70
70 CLC \ Clear carry
80 ADC #1 \ Add 1
90 STA &70 \ Store back to &70
100 RTS \ Return to BASIC
110 ]
120 NEXT
130 ?&70 = 0 \ Initialize memory location to 0
140 CALL code \ Call machine code routine
150 PRINT "Value now = "; ?&70
160 CALL code
170 PRINT "Value now = "; ?&70
180 END
Video - The Motorola 6845 CRTC
The Motorola 6845 CRT Controller (CRTC), later second-sourced by Hitachi (HD6845), Rockwell, and others, was one of the most influential video timing chips of the late 1970s and 1980s. It was not a graphics generator in itself; instead, it produced the precise timing signals needed to drive a raster display, such as horizontal and vertical sync pulses, row and character addresses, and memory fetch cycles. Systems attached external character generators (ROMs) or pixel logic to interpret the memory data, while the 6845 ensured the scanlines appeared in the correct order and at stable refresh rates. Its programmability, registers controlling horizontal total, vertical total, sync widths, cursor position, and so forth, made it adaptable across a wide range of systems, from text terminals to microcomputers.
The 6845’s flexibility came from its ability to map arbitrary chunks of RAM to display regions using start address registers, row address counters, and cursor control. For instance, a designer could allocate just 2 KB of RAM for a 40×25 text screen, or more for bitmapped graphics, with the 6845 providing the address sequencing. Many early microcomputers such as the BBC Micro, Amstrad CPC, and Commodore PET derivatives used the chip, often combining it with a custom video gate array or ULA to generate the pixel stream. IBM also adopted the 6845 in its original Monochrome Display Adapter (MDA) and Color Graphics Adapter (CGA), cementing its influence on the emerging PC standard.
Although by itself the 6845 did not support modern concepts like sprites or hardware scrolling, its register set was exploited creatively. Programmers discovered that by rewriting registers mid-frame (a technique known as “raster tricks”), they could produce split-screen effects, palette changes, or smooth scrolling beyond the documented capabilities. Over time, more integrated graphics controllers absorbed the 6845’s functionality into larger chips that combined timing, pixel generation, and sometimes even acceleration. Nonetheless, the 6845’s architectural model, separating timing control from pixel memory, shaped early video hardware design and left a strong legacy in the personal computer industry.
The 6845s main function is to properly time access to the display memory, and to calculate the memory address of the next portion to be drawn. Other circuitry in the machine then uses the address provided by the 6845 to fetch the pattern and then draw it. The implementation of that hardware is entirely up to the designer and varied widely among machines. The 6845 is intended for character displays, but could also be used for pixel-based graphics, with some clever programming.
Computers that used the 6845 are, among others:
- BBC Micro
- Amstrad CPC
- Videx VideoTerm display cards for Apple II
CPU - CMOS 65C02 family (6502 Compatible)
The 65C02 family of CPU's, is binary compatible with the NMOS 6502 instruction set, but it is an enhanced CMOS implementation. The CPU fixes some NMOS 6502 hardware bugs (such as the infamous indirect JMP page-wrap anomaly), reduces power consumption, and adds cycle-accurate “illegal” instruction handling (undefined opcodes are removed). There are different implementations of the 65C02 family. For instance there is the Synerteck SY65SC12 variant, which integrates a synchronous clock generator and typically runs at higher clock rates (up to 14 MHz in some grades) compared to MOS’s 1–2 MHz NMOS parts. Internally, the CMOS design gives fully static operation (the clock can be halted without data loss), adds new instructions (e.g., STZ, TRB, TSB, INC A, DEC A, BRA), and supports expanded addressing modes such as (ZP) indirect addressing. Electrically, it requires CMOS-level signals and produces lower heat dissipation. In short: it will run existing 6502 code unchanged, but behaves more predictably, consumes less power, and provides extra opcodes and addressing options not present in the original MOS NMOS 6502 (STZ, TSB, TRB, INC A, DEC A, BRA, etc.)
The 65C02 is not pin fully compatible with the 6502 CPU. The 65C02 family redefined some pins from the original 6502 design. For instance the S0 pin is not present, and some CMOS implementations have VPB and MLP pins. Depending on the exact pin usage, it is sometimes possible to use a 65C02 in a 6502 socket, but in most cases, the two CPU's are not pin compatible as bus timing and electrical characteristics differe from the NMOS 6502.
VRAM: 512kB
320x256 4 colors
160x256 8 colors
