Skip to content
Hardware

68000: The 16-Bit Powerhouse

Thirty-two bits on the inside where it counts

The Motorola 68000 powered the Amiga, Atari ST, Sega Mega Drive, and arcade machines—bringing workstation-class architecture to home computers.

commodore-amigaatari-stsega-mega-driveneo-geocpuprocessorsmotorola16-bit1979–present

The Motorola 68000 (1979) was revolutionary: a 32-bit internal architecture with 16-bit external data bus. Its clean, orthogonal instruction set and generous registers made it a programmer’s dream. Where 8-bit CPUs required clever hacks, the 68000 let you write elegant code.

Fast facts

  • Clock speed: 7.09 MHz (Amiga), 7.67 MHz (Mega Drive), 8 MHz (Atari ST).
  • Data bus: 16-bit external, 32-bit internal.
  • Address bus: 24-bit (16MB addressable).
  • Registers: eight 32-bit data (D0-D7), eight 32-bit address (A0-A7).
  • Instruction set: orthogonal—most instructions work with most registers and modes.

A7 is two registers wearing one name

The register list gives eight address registers, A0–A7, and that count is slightly false. A7 is the stack pointer, and which physical register it means depends on what mode the processor is in — the supervisor model has its own, which is why Motorola’s nomenclature has to distinguish USP, SSP, ISP and MSP where the programming model shows one name.

The consequence is an instruction that exists only to reach the register you are not currently using:

MOVE USP — Move User Stack Pointer … Operation: If Supervisor State Then USP → An or An → USP Else TRAP

An operating system needs the user stack pointer in order to set a process up, and cannot address it directly, so Motorola provided a privileged instruction to fetch it across the boundary.

The 68000’s privilege model was incomplete

The clearest evidence sits in the manual’s own structure. MOVE from SR — read the status register — is documented twice, in two different sections.

Under Integer Instructions, on page 229:

MOVE from SR — Move from the Status Register (MC68000, MC68008) Operation: SR → Destination

Under Supervisor (Privileged) Instructions, on page 471:

MOVE from SR — Move from the Status Register (MC68EC000, MC68010, MC68020, MC68030, MC68040, CPU32) Operation: If Supervisor State Then SR → Destination Else TRAP

Same mnemonic, same operation, opposite privilege — split by which processor is executing it. On a 68000, user code can read the status register freely. On a 68010 the identical instruction traps.

That is not a documentation quirk but a deliberate correction: a program running in user mode should not be able to see the supervisor’s flags, and on the first 68000 it could. Motorola fixed it in the next part, which means any user-mode code that had read SR on a 68000 stops working the moment it meets a later chip.

Named for what the 68000 could not do

Motorola’s list of the family describes each part in a few words, and the wording does the arguing:

Part Motorola’s description
MC68000 “16-/32-Bit Microprocessor”
MC68010 “16-/32-Bit Virtual Memory Microprocessor”
MC68020 “32-Bit Virtual Memory Microprocessor”
MC68851 Paged Memory Management Unit

The 68010 is not described as faster or wider. It is described by a capability the 68000 is not described as having, and the visible difference in this manual is the shape of an exception stack frame.

When a 68000 takes a bus or address error it pushes a four-word frame: status register, program counter, vector offset. The 68010’s frame for the same exception, Format $8, adds an instruction address and “INTERNAL REGISTERS 4 WORDS”.

The 68000 saves what happened. The 68010 also saves where the processor had got to inside the instruction — which is the difference between an exception you can report and an exception you can recover from and continue. (That the internal state is what makes demand paging possible is the standard reading and follows naturally from the two frames, but Motorola states the frames and the part descriptions rather than drawing the line between them.)

There is a related limit already recorded elsewhere in this Vault: the Amiga’s hardware manual warns that TAS “should never be used in the Amiga” because its indivisible read-modify-write “will not fit into a DMA memory access slot”. The 68000’s atomic instruction and the 68000’s exception handling are both places where the chip’s model of an uninterruptible operation ran into what the systems around it actually needed.

Register architecture

The 68000’s abundance of general-purpose registers changed how programmers thought:

Registers Purpose
D0-D7 Data registers (32-bit, can use as .B, .W, or .L)
A0-A6 Address registers (pointers, indexing)
A7 Stack pointer (separate user/supervisor modes)
PC Program counter (32-bit register, 24-bit external addressing on the 68000; 68008 limits to 20-bit)
SR Status register (condition codes + supervisor-mode bit, interrupt mask, trace flag)

Key features

  • Orthogonal design: most instructions accept most addressing modes.
  • Multiple data sizes: byte (.B), word (.W), long (.L) operations.
  • Powerful addressing: displacement, indexed, pre/post-increment/decrement.
  • Supervisor mode: hardware separation of OS and user code. The CPU runs in either supervisor or user mode; certain instructions (STOP, RESET, MOVE to/from SR, RTE) are privileged. Each mode has its own A7 stack pointer (USP for user, SSP for supervisor) — switching mode automatically switches stacks.
  • Exception handling: clean vectored interrupts and traps.

Addressing modes

Mode Syntax Example
Register direct Dn, An MOVE.L D0,D1
Address indirect (An) MOVE.W (A0),D0
Post-increment (An)+ MOVE.B (A0)+,D0
Pre-decrement -(An) MOVE.B D0,-(A7)
Displacement d16(An) MOVE.W 4(A0),D0
Indexed d8(An,Dn) MOVE.B 0(A0,D1),D0

The 68000 vs 8-bit CPUs

Feature 68000 Z80/6502
Data registers 8 × 32-bit 1-6 × 8-bit
Address space 16MB 64KB
Multiply/divide Hardware Software
Stack Flexible Fixed
Code style Clean Hacky

Systems powered

  • Home computers: Commodore Amiga, Atari ST, Sharp X68000
  • Consoles: Sega Mega Drive/Genesis, Neo Geo
  • Arcade: countless boards throughout the late 80s/90s
  • Workstations: early Sun, Apollo, HP systems

Cultural impact

The 68000 represented the leap from hobbyist to professional computing. Games like Speedball 2, Lemmings, and Shadow of the Beast showed what was possible when programmers had breathing room. The skills learnt on the 68000 translated directly to modern programming paradigms.

See also

Not yet fact-checked. This entry was drafted by an AI and nobody has verified it. The dates, figures and technical details may be wrong. Use it to find your bearings, then confirm anything that matters against a primary source.