Commodore 64
The 8-bit every kid could afford
Launched in 1982, the C64 paired the SID and VIC-II chips with an accessible price, becoming the best-selling home computer ever.
Overview
The Commodore 64 (C64) arrived in January 1982 with 64KB of RAM, arcade-quality graphics and sound chips, and a $595 price tag that undercut every competitor. It became the best-selling single computer model in history (12-17 million units), anchoring bedroom coding culture, game development, and the demoscene for over a decade.
Technical Specifications
Processor
MOS Technology 6510 @ 1.023 MHz (NTSC) / 0.985 MHz (PAL)
- 8-bit CPU based on 6502
- 56 instructions, 13 addressing modes
- Built-in 6-bit I/O port for memory banking
- ~400,000 instructions per second
Memory
64KB RAM organized as:
- $0000-$9FFF: 40KB program RAM
- $A000-$BFFF: 8KB BASIC ROM (can be banked out)
- $C000-$CFFF: 4KB RAM (under I/O)
- $D000-$DFFF: 4KB I/O + colour RAM
- $E000-$FFFF: 8KB KERNAL ROM (can be banked out)
1KB colour RAM at $D800-$DBFF (independent of main memory)
Graphics: VIC-II Chip
MOS 6567 (NTSC) / 6569 (PAL)
- 320×200 hi-res bitmap or 40×25 text modes
- 160×200 multicolour mode (4 colours per 4×8 cell)
- 8 hardware sprites (24×21 pixels each)
- 16-colour palette
- Smooth scrolling, collision detection, raster interrupts
- Steals CPU cycles on “badlines” for screen refresh
Sound: SID Chip
MOS 6581 (early) / 8580 (later)
- 3 independent oscillators
- 4 waveforms: triangle, sawtooth, pulse, noise
- ADSR envelope per voice
- Multimode filter (low-pass, high-pass, band-pass)
- Ring modulation and oscillator sync
- 8-bit volume control
I/O Ports
- 2× CIA chips (6526): Keyboard, joystick, timers, serial port
- Cassette port: Datasette tape drive
- Serial port: 1541 disk drive (proprietary fast serial)
- User port: RS-232, modems, hardware expansions
- Cartridge port: 16KB ROM cartridges, freezers, RAM expansion
Storage
- Datasette: Cassette tapes, 300 baud (~1500 bytes/sec)
- 1541: 5.25” floppy disk, 170KB capacity, notoriously slow
- Cartridges: Instant-load games, freezers, utilities
Programming Environment
BASIC V2
Built-in interpreter (Commodore BASIC 2.0)
- Based on Microsoft 6502 BASIC
- Limited compared to competitors (no sound/graphics commands)
- Extended via POKE for hardware access
- Line numbers 0-63999
- 38KB available for programs (after BASIC ROM)
Common workflow:
- Type program in BASIC
- POKE hardware directly for graphics/sound
- Embed machine code for speed (SYS command)
Machine Language
Direct 6510 assembly for maximum performance
- Games and demos almost exclusively machine code
- Assemblers: VICMON, DASM, ACME, KickAssembler
- ~10-50× faster than BASIC
- Required for raster effects, sprite multiplexing, music
Memory Banking
The 6510’s I/O port ($0001) banks ROM/RAM:
- Bank out BASIC ROM for 8KB extra RAM
- Bank out KERNAL for another 8KB
- Bank out I/O/charset for full 64KB RAM
- Critical for games needing maximum memory
Why It Mattered
Affordability
Commodore owned MOS Technology (chip fab), letting them price aggressively. The C64 launched at $595 when competitors charged $1000+. By 1983, it sold for $200. By 1990, under $100. Every kid could afford one.
Creativity Platform
Bundled BASIC invited experimentation. Type-in listings from magazines (Compute!, ZZAP!64, RUN) taught programming. POKE commands unlocked hardware features. No barriers—turn it on, start coding.
Ecosystem
- Software: 10,000+ commercial games, vast public domain library
- Hardware: Cartridges, modems, RAM expansions, MIDI interfaces
- Scenes: Demoscene, music (SID), cracking groups, BBSes
- Longevity: Production ran 1982-1994, active use into 2000s
Cultural Impact
The C64 created a generation of programmers. Bedroom coders became industry professionals. Demo coders pioneered techniques (copper bars, FLI, sprite multiplexing) that influenced later platforms. The machine taught: hardware is yours to control.
Quirks and Limitations
The 1541 Disk Drive
Notoriously slow—takes 1-2 minutes to load a game due to serial bus design. Games used custom fastloaders (reducing load to 15-30 seconds) or multi-load schemes. Tape was faster for small programs but lacked random access.
BASIC V2 Limitations
No commands for sprites, sound, or graphics—everything via POKE. Other 8-bits (BBC Micro, Atari) had graphics BASIC commands. C64 programmers learned hardware registers from day one.
Colour Limitations
16 colours total, but text mode limits you to 2 colours per 8×8 cell (foreground + background). Multicolour mode gives 4 colours but halves horizontal resolution. Sprites help—add moving colour independently.
Badlines
VIC-II “steals” CPU cycles every 8th raster line to refresh screen data. Code that’s fast 7/8 of the time suddenly slows down. Games learned to time around badlines or disable the screen during critical operations.
Modern Legacy
Emulation
- VICE: Cycle-accurate emulation for all platforms
- CCS64: Windows emulator with great compatibility
- MiSTer FPGA: Hardware-level recreation
- Online emulators in browser (JavaScript C64)
Hardware Revivals
- THE C64 Maxi/Mini: Official replicas with built-in games
- Ultimate 64: FPGA motherboard replacement
- 1541 Ultimate II+: SD card floppy emulation
- MEGA65: Modern 8-bit with C64 compatibility
Active Community
- New games released annually: Commercial and homebrew
- Demo parties: Revision, X-party, Datastorm
- Music scene: SID files, new compositions
- Hardware mods: Accelerators, RAM expansions, video upgrades
The C64 never died. It evolved.
Programmer Resources
Starting out:
- BASIC V2 for learning fundamentals
- POKE commands for hardware access
- Type-in listings from books/magazines
Intermediate:
- Direct screen/sprite POKEs for games
- Embedded machine code (SYS calls)
- Understanding memory map and banking
Advanced:
- Pure assembly language development
- Raster interrupts for split-screen effects
- Custom character sets and bitmaps
- SID music programming
- Sprite multiplexing (>8 sprites on screen)
Tools:
- Emulators: VICE (cross-platform), CCS64 (Windows)
- Assemblers: KickAssembler, ACME, 64tass
- Sprite editors: SpritePad, Spritemate
- Music trackers: GoatTracker, SID Wizard
- Debuggers: VICE monitor, C64 Debugger
See Also
- VIC-II Chip Reference — graphics hardware programming
- Inside the VIC-II — historical context
- SID: The Sound of the C64 — audio chip
- KERNAL I/O Routines — system calls
- Screen Memory — display memory layout
- PETSCII Chart — character codes
- Bob Yannes — SID chip designer
- Al Charpentier — VIC-II chip designer
- Rob Hubbard — legendary SID musician
- Disk Fastloaders — speeding up the 1541