Acorn Electron
| Acorn Electron | |
| Specifications | |
|---|---|
| Manufacturer | Acorn Computers Ltd |
| Type | Home Computer |
| Released | August 25, 1983 |
| Discontinued | 1985 |
| Intro price | £199 (1983) |
| CPU | MOS Technology 6502A @ 2 MHz (1 MHz effective) |
| Memory | 32 KB RAM, 32 KB ROM |
| Storage | Cassette tape interface, optional floppy disk via Plus 1 |
| Display | 640×256 (2 colours), 320×256 (4 colours), 160×256 (16 colours), 80×25 text |
| Sound | 1 channel + white noise (internal speaker) |
| Dimensions | 340 mm × 160 mm × 55 mm |
| Weight | 1.8 kg |
| OS / Firmware | Acorn MOS 1.0 with BBC BASIC 2 |
| Predecessor | BBC Micro Model A/B |
| Successor | None |
| Codename | Egghead, Acorn |
The Acorn Electron was a budget home computer released by Acorn Computers Ltd in August 1983. Designed as a low-cost alternative to the BBC Micro, the Electron featured a single custom ULA chip that integrated most of the discrete logic found in its predecessor, reducing manufacturing costs while maintaining software compatibility with BBC BASIC programs.
Architecture
[edit | edit source]The Electron's architecture centered around a custom Ferranti ULA (Uncommitted Logic Array) containing 2,000 gates, which handled video generation, memory control, sound, and cassette I/O. This integration came at the cost of performance, as the ULA could only access RAM during specific periods, effectively halving the 6502's throughput.
Memory Organization
[edit | edit source]| Address Range | Size | Function | Access Speed |
|---|---|---|---|
| $0000 – $0040 | 64 bytes | Zero page workspace | 2 MHz |
| $0041 – $00FF | 191 bytes | Zero page user area | 2 MHz |
| $0100 – $01FF | 256 bytes | 6502 stack | 2 MHz |
| $0200 – $02FF | 256 bytes | Operating system workspace | 2 MHz |
| $0300 – $03FF | 256 bytes | VDU workspace | 2 MHz |
| $0400 – $07FF | 1 KB | Current language workspace | 2 MHz |
| $0800 – $0AFF | 768 bytes | Sound/printer buffer | 1 MHz |
| $0B00 – $0CFF | 512 bytes | Keyboard buffer/user workspace | 1 MHz |
| $0D00 – $0DFF | 256 bytes | NMI workspace | 1 MHz |
| $0E00 – $1FFF | 4.5 KB | User BASIC program space (low) | 1 MHz |
| $2000 – $2FFF | 4 KB | User BASIC variables | 1 MHz |
| $3000 – $7FFF | 20 KB | Screen memory/User space | 1 MHz |
| $8000 – $BFFF | 16 KB | Sideways ROM/RAM (paged) | 2 MHz |
| $C000 – $FFFF | 16 KB | Operating System ROM | 2 MHz |
Hardware Specifications
[edit | edit source]Main Board Components
[edit | edit source]| Component | Part Number | Function | Notes |
|---|---|---|---|
| CPU | MOS 6502A | Central processor | 2 MHz clock, 1 MHz effective |
| ULA | Ferranti 12C021 | Video, sound, memory control | 68-pin custom chip |
| RAM | 4× HM4864P-2 | 32 KB total | 64K×1 bit DRAMs, 200ns |
| ROM | 2× 23128 | 32 KB total | OS + BASIC interpreter |
| Crystal | 16 MHz | Master clock | Divided down for all timing |
| Keyboard Controller | None (ULA) | Key matrix scanning | Via ULA ports |
| PSU Regulator | 7805 | +5V regulation | External PSU provides 18V AC |
ULA (Uncommitted Logic Array)
[edit | edit source]The Ferranti-manufactured ULA performed multiple functions:
| Function | Implementation | Performance Impact |
|---|---|---|
| Video generation | 6845 CRTC emulation | Steals RAM cycles during display |
| DRAM refresh | Automatic during video scan | Hidden refresh, no CPU impact |
| Memory mapping | Address decode logic | Enforces 1 MHz/2 MHz regions |
| Sound generation | Simple tone + noise | Single channel only |
| Cassette interface | 1200/300 baud FSK | Integrated modulator/demodulator |
| Keyboard scanning | 14×4 matrix decode | Interrupt-driven scanning |
| ROM paging | 4-bit latch | Supports 16 ROM banks |
Video System
[edit | edit source]The Electron supported seven display modes compatible with the BBC Micro:
| Mode | Resolution | Colours | Memory | Text Columns |
|---|---|---|---|---|
| 0 | 640×256 | 2 | 20 KB | 80×32 |
| 1 | 320×256 | 4 | 20 KB | 40×32 |
| 2 | 160×256 | 16 | 20 KB | 20×32 |
| 3 | 640×256 | 2 (text only) | 16 KB | 80×25 |
| 4 | 320×256 | 2 | 10 KB | 40×32 |
| 5 | 160×256 | 4 | 10 KB | 20×32 |
| 6 | 320×256 | 2 (text only) | 8 KB | 40×25 |
Video timing specifications:
- Horizontal frequency: 15.625 kHz
- Vertical frequency: 50 Hz
- Pixel clock: 8 MHz (modes 0,3) or 4 MHz (modes 1,4,6) or 2 MHz (modes 2,5)
- Active display: 256 lines × 640/320/160 pixels
- Blanking: 56 lines vertical, 160 pixels horizontal
Input/Output
[edit | edit source]Expansion Port
[edit | edit source]The rear expansion connector provided a 50-way edge connector with:
| Pin Group | Signals | Purpose |
|---|---|---|
| 1-8 | D0-D7 | Data bus |
| 9-24 | A0-A15 | Address bus |
| 25-26 | R/W, Φ2 | Control signals |
| 27-30 | nNMI, nIRQ, nRST, RDY | Interrupt/control |
| 31-35 | 16MHz, nPAGE, nROM | Timing/selection |
| 36-40 | Sound, Cassette | Audio I/O |
| 41-50 | Power, Ground | +5V, -5V, 0V |
Plus 1 Expansion Unit
[edit | edit source]The Plus 1 add-on provided:
- Printer port: Centronics parallel interface
- Joystick port: Analogue joysticks (BBC-compatible)
- Cartridge slots: Two ROM cartridge sockets
- Additional logic: 8255 PPI for I/O expansion
Plus 3 Disk Interface
[edit | edit source]The Plus 3 added:
- WD1770 FDC: Floppy disk controller
- 3.5" drive: Single 640 KB drive
- ADFS ROM: Advanced Disk Filing System
- Additional RAM: 3 KB workspace
Power Supply
[edit | edit source]The Electron used an external transformer unit:
- Input: 230V AC (UK model)
- Output: 18V AC @ 1.4A
- Internal regulation: 7805 provides +5V DC
- Consumption: 6W typical
Power distribution:
- +5V: Logic circuits, ULA, CPU, RAM
- -5V: Generated on-board for cassette interface
- Current draw: 1.2A maximum on +5V rail
Keyboard
[edit | edit source]The Electron featured a 56-key keyboard:
- Layout: QWERTY with BREAK, COPY, CAPS LOCK/FUNC
- Matrix: 14 columns × 4 rows scanned by ULA
- Debouncing: Software-based in OS ROM
- Key switches: Membrane or mechanical (varied by production run)
- Auto-repeat: OS-controlled with adjustable rate
Sound System
[edit | edit source]Limited compared to the BBC Micro:
- Channels: 1 tone generator + white noise
- Frequency range: 122 Hz to 3.9 kHz
- Volume: 16 levels
- Output: Internal speaker only (no line output)
- SOUND command: BBC BASIC compatible subset
ROM Software
[edit | edit source]Operating System ROM (16 KB)
[edit | edit source]Located at $C000-$FFFF:
- MOS 1.0: Acorn Machine Operating System
- VDU drivers: Text and graphics routines
- File system: Cassette filing system
- I/O routines: Keyboard, sound, printer support
- Interrupt handlers: IRQ and NMI processing
BASIC ROM (16 KB)
[edit | edit source]Paged in at $8000-$BFFF:
- BBC BASIC 2: Full implementation
- Assembler: Built-in 6502 assembler
- Graphics commands: PLOT, DRAW, MOVE, etc.
- Sound commands: SOUND, ENVELOPE (limited)
- Error handling: ON ERROR support
Technical Limitations
[edit | edit source]The ULA design imposed several constraints:
| Limitation | Cause | Impact |
|---|---|---|
| 1 MHz RAM access | ULA video priority | 50% speed reduction vs BBC Micro |
| Single sound channel | Simplified ULA design | No music capabilities |
| No hardware multiply | Cost reduction | Slower arithmetic |
| No Teletext mode | Missing SAA5050 chip | No Mode 7 support |
| Limited I/O | No 6522 VIA chips | Requires expansion units |
| No RS423 serial | Cost reduction | No built-in comms |
Manufacturing Variants
[edit | edit source]| Issue | ULA Version | Changes | Production Period |
|---|---|---|---|
| 1 | 12C021 | Initial release | Aug 1983 - Dec 1983 |
| 2 | 12C021A | Improved yield | Jan 1984 - Jun 1984 |
| 3 | 12C021B | Video timing fix | Jul 1984 - Dec 1984 |
| 4 | 12C021C | Final revision | Jan 1985 - Aug 1985 |
Memory Access Timing
[edit | edit source]The ULA controlled all RAM access with strict timing:
- Video fetch: Every 2 MHz cycle during active display
- CPU access: Alternate cycles in screen area
- Refresh: During horizontal blanking
- Contention: CPU stalled when accessing video RAM
Timing diagram (per 1 µs):
- 0-250ns: ULA video fetch
- 250-500ns: CPU access window
- 500-750ns: ULA video fetch
- 750-1000ns: CPU access window
Known Hardware Issues
[edit | edit source]Power Supply
[edit | edit source]- 7805 regulator overheating: Inadequate heatsinking causes thermal shutdown
- Transformer hum: Loose laminations in external PSU
- DC offset: Electrolytic capacitor degradation
ULA Problems
[edit | edit source]- Heat sensitivity: ULA failures increase above 40°C
- Video corruption: Internal gate degradation causes display artifacts
- Total failure: No modern replacement available
Keyboard Issues
[edit | edit source]- Membrane fatigue: Early units suffer key bounce
- Matrix diodes: 1N4148 diodes fail causing phantom keys
- Connector oxidation: Poor contact at ribbon cable
General Maintenance
[edit | edit source]Regular maintenance includes cleaning the case with mild detergent, ensuring adequate ventilation around the ULA heatsink, and checking the keyboard membrane for wear. The external power supply transformer should be inspected for overheating. Internal dust accumulation should be removed with compressed air, particularly around the ULA and voltage regulator heatsinks.
Troubleshooting
[edit | edit source]Common faults include no display output (check ULA and crystal oscillator), corrupted graphics (failing ULA or RAM), and keyboard non-response (check ribbon cable and matrix diodes). The external PSU frequently fails with dried capacitors causing ripple. Memory faults typically manifest as system crashes or corrupted BASIC programs.
Capacitor Replacement Guide
[edit | edit source]Critical capacitors requiring replacement after 40 years include:
- C1, C2: 2200µF 25V (main PSU filtering)
- C3: 100µF 16V (ULA supply decoupling)
- C4-C7: 47µF 16V (RAM refresh timing)
- C8: 10µF 25V (reset circuit)
- C9-C12: 0.1µF ceramic (IC decoupling)
Easter Eggs
[edit | edit source]The Electron ROM contained hidden features:
- Development team credits: Located at ROM address $FFB7
- Test routines: Accessible via *FX calls
- Hidden error messages: "Roger" appears for certain crashes