Memory Map

64 KB visible to the 6502 across all BBC family machines. The common layout:

&FFFF +--------------------------------------+
      | MOS ROM (vectors)              &FF00 | 256 B
&FF00 +--------------------------------------+
      | SHEILA -- memory-mapped I/O    &FE00 | 256 B
&FE00 +--------------------------------------+
      | JIM -- 1 MHz bus / cartridge   &FD00 | 256 B
&FD00 +--------------------------------------+
      | FRED -- 1 MHz bus / cartridge  &FC00 | 256 B
&FC00 +--------------------------------------+
      | MOS ROM                              | ~15 KB
&C000 +--------------------------------------+
      | Paged ROM / Sideways RAM (1 of 16)   | 16 KB
&8000 +--------------------------------------+
      | Screen RAM (mode-dependent base)     | up to 20 KB
&3000 +--------------------------------------+
      | User RAM + MOS workspace + lang/BASIC| 12 KB
&0000 +--------------------------------------+

Source: NAUG §12.1 p155-156.

Sub-regions in user RAM (&0000-&2FFF)

RangeUse
&0000-&00FFZero page. User zero page at &70-&8F (Ch2 §2.10). MOS uses most of the rest.
&0100-&01FFStack
&0200-&02FFOS vectors, OS variables
&0300-&03FFVDU driver workspace + filing system buffers (see os-workspace)
&0400-&07FFCurrently-selected language (BASIC) workspace + OS workspace
&0800-&08FFSound / printer / keyboard buffers (default)
&0900-&09FFRS423/cassette buffer
&0A00-&0AFFKeyboard buffer
&0B00-&0BFFUser-defined function-key strings
&0C00-&0CFFUser-defined character definitions (ASCII 224-255)
&0D00-&0DFFNMI handler (1 page)
&0E00-…DFS / other filing system workspace, then user program (PAGE)

PAGE (BASIC) / OSHWM (MOS) marks the start of user program memory. On Model B with DFS, that’s typically &1900. Master with HAZEL filing-system RAM enabled, that’s &0E00 (DFS workspace moved into HAZEL).

SHEILA address allocations (&FE00-&FEFF)

RangeDeviceNotes
&FE00-&FE07crtc-6845 6845 CRTC (address @ &FE00, data @ &FE01)All machines except Electron
&FE08-&FE0F6850 ACIA (serial)All BBC; Electron only if serial expansion fitted
&FE10-&FE17Serial ULAAll machines
&FE18Econet station numberMaster / Compact
&FE18-&FE1AµPD7002 ADCElectron only (ADC moves here on Electron)
&FE20-&FE2Fvideo-ula Video ULA (control @ &FE20, palette @ &FE21)All machines
&FE24Floppy disc control registerMaster / Compact
&FE28-&FE2FWD1770 FDCMaster / Compact
&FE30-&FE33paged-rom ROM paging registerAll machines
&FE34-&FE37shadow-ram ACCCON registerB+ / Master / Compact
&FE38INTOFF — Network NMI disableB+ / Master
&FE3CINTON — Network NMI enableB+ / Master
&FE40-&FE5Fsystem-via System VIAAll machines
&FE60-&FE7Fuser-via User/Printer VIAAll machines
&FE80-&FE9F8271 FDC (Model B) / 1770 FDC (B+/Master)
&FEA0-&FEBF68B54 Econet ADLCIf Econet fitted
&FEC0-&FEDFµPD7002 ADCBBC; on Master also Econet interface
&FEE0-&FEFFtube-ula Tube ULAAll except Electron

Most peripheral registers repeat (mirror) across their 32-byte block — only certain low addresses are functional.

Per-MODE screen base

See modes. Range is always inside &3000-&7FFF; the base depends on screen size: &3000 for 20 KB modes, &4000 for 16 KB (MODE 3), &5800 for 10 KB (MODE 4/5), &6000 for 8 KB (MODE 6), &7C00 for 1 KB (MODE 7).

Machine extras beyond the common map

  • Model B: as above. 16 KB MOS, 16 KB sideways for languages.
  • B+: adds 20 KB shadow RAM and 12 KB paged RAM (bit 7 of &FE30 selects). Total RAM 64 KB on B+, 128 KB on B+128.
  • Master 128: 20 KB shadow RAM, ANDY (4 KB private at &8000-&8FFF, selected via ROMSEL &FE30 bit 7), HAZEL (8 KB filing-system RAM at &C000-&DFFF, selected via ACCCON Y bit), 4 KB private MOS workspace, plus 16 sideways slots (some RAM, some ROM).
  • Master Compact: similar with adjusted ROM map.
  • Electron: Model-B-equivalent map; no shadow RAM, no Tube, video ULA combined with CPU clock generation. ADC moves to &FE18-&FE1A. Electron ULA functions at &FE00-&FE0F.

See paged-rom and shadow-ram for the details.


This wiki is curated by Claude following the LLM-Wiki methodology — a human curates source documents, the LLM compiles structured cross-linked markdown. Content may contain errors, omissions, or stale claims. For authoritative information refer to the original source documents in the bbc-documents GitHub archive.