What was the 1 MHz bus used for on the BBC micro series and how did it compare with the TUBE in terms of speed/bandwidth?

I read somewhere that EPROM programmers used the 1 MHz bus, but anything else?


The so-called "1MHz bus" is not actually a separate bus. It is just the set of devices which were too slow to run at the full 2MHz in the original BBC Micro, and which therefore incur a clock-stretched cycle when accessed. These include most of the SHEILA ($FExx) devices, except for the Econet, floppy, Tube, VIDPROC, and memory mapping registers.

The 1MHz extension bus, one of the ports under the keyboard, additionally includes buffers to prevent 2MHz cycles from going out on an unpredictable user-supplied set of cables and electronics, which would otherwise potentially cause trouble. The BBC Micro reserves the FRED ($FCxx) and JIM ($FDxx) pages which directly map to the extension bus.

JIM is, by convention, reserved for large memory expansion devices, some of which have additional functionality such as advanced video framebuffers. Four registers at the top of FRED are reserved as paging registers for such devices. This allows supplying up to a 40-bit address (1TB) to a JIM memory - pretty forward-looking.

A partial list of devices that map to FRED:

&FC00-&FC03 Byte-Wide Expansion RAM
&FC08-&FC0F Ample M2000 MIDI Interface (see also FCF0)
&FC10-&FC13 Teletext Hardware
&FC14-&FC1F Prestel Hardware
&FC20-&FC3F SID Interface
&FC20-&FC27 IEEE Interface
&FC28-&FC2F Electron Econet
&FC30-&FC3F Cambridge Ring interface
&FC40-&FC4F Hard Drive Access
&FC60-&FC6F Electron Serial
&FC70-&FC7F Electron expansion
&FC80-&FC87 LCD Display Control
&FC90-&FC9F Electron sound and speech
&FCB0-&FCBF Electron 6522 VIA expansion
&FCC0-&FCCF Morley Electronics RAMDisk
&FCC0-&FCCF Electron floppy disk expansion
&FCDC-&FCDF PRES Battery-backed RAM
&FCE0-&FCEF Electron Tube expansion
&FCF0-&FCF7 JGH/ETI MIDI Control (see also FC08)
&FCF8-&FCFB USB port
&FCFC-&FCFF Page-Wide Expansion RAM

The 1MHz bus and the Tube can't really be compared in terms of speed, because they do totally different things. The Tube is specifically intended for attaching a Second Processor, which includes a protocol and buffers for the necessary communications between the application code and the "I/O host" that the BBC Micro itself then becomes. Indeed there is an OSBYTE call specifically for allowing the Tube to access the 1MHz expansion bus (or other) hardware devices.

The Tube protocol allows transferring 256 bytes of bulk data at a rate of 10µs per byte - which is 20 cycles at 2MHz. The following loop is capable of transferring 256 bytes from JIM to an arbitrary main memory page at 16 cycles per byte:

  LDX #0
: LDA $FD00,X   ; normally 4 cycles, but JIM access stretched to 5
  STA (dest),X  ; 6 cycles
  INX           ; 2 cycles
  BNE :-        ; 3 cycles per taken branch

Unrolling this loop could speed it up a little more.


The 1MHz bus also has an audio in to the BBC pin, and was used to connect synthesizers like the Music 500 and 5000.

  • was that a single pin carrying analogue input from the music 5000 device into the BBC which would be converted to digital inside the BBC? Or was it a pin carrying digital info, e.g. MIDI data either from or to the BBC? Thanks Richard Jul 21 '21 at 8:45
  • @therobyouknow It is an analogue input, which is mixed with the digital output of the 76489 sound chip and the (optional) TMS 5220 voice chip in the audio amplification circuitry (ICs 17 and 19, LM324 and LM386 amplifiers).
    – Kaz
    Jul 21 '21 at 16:18
  • Sorry, my answer was poorly worded. The MUSIC 5000 connected to the 1MHz bus, but used its own audio out. I don't know if it could connect to the audio in pin. There were several X000 modules including a MIDI module. retro-kit.co.uk/page.cfm/content/Hybrid-Music-5000-Synthesiser The audio in pin was also on the 1MHz bus. Jul 22 '21 at 14:28

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.