Commodore 64 (C64)

C64 Specifications

Lifespan

1982-1994

Media

Floppy disk, cassette tape, ROM cartridge

CPU 8-bit

MOS Technology 6510 (6502-compatible) @ 1.023 MHz (NTSC) / 0.985 MHz (PAL)

Memory

64 KB dynamic RAM, 1024 x 4 static color RAM

Controllers

Joystick, mouse, paddles

Best-selling games

The Last Ninja, Ghostbusters

Commodore 64

History

In 1981, MOS Technology (Commodore’s integrated circuit design subsidiary) designed graphic and audio chips for a next-generation video game console called the Ultimax, destined for release in Japan. Commodore engineers pitched Commodore CEO Jack Tramiel on a new home computer using the new chips.

Tramiel dictated that the machine should have 64 KB of random-access memory. Although 64-Kbit dynamic random-access memory chips cost over US$100 at the time, he knew that 64K DRAM prices were falling and would drop to an acceptable level before full production was reached. The product was code named the VIC-40 as the successor to the popular VIC-20. The machine used the same case, same-sized motherboard, and same Commodore BASIC 2.0 in ROM as the VIC-20.

With the help of Commodore’s underutilized chip fab, the chips were completed by the end of the year. The VIC-40 product was renamed C64, and it debuted at the 1982 CES at $595. Thanks to aggressive pricing and wide distribution, it went on to sell more than 12 million units through its lifespan.

It was primarily known as a game machine, since the 1541 disk drive’s slow performance limited its use in business and productivity applications. Few cartridge-based games were released, but low-priced cassette games were popular in Europe.

Programming

The C64 had a Microsoft-licensed BASIC built-in, but any graphics or sound operations required unfriendly PEEK and POKE commands. Commodore offered developers an SDK consisting of an assembler/monitor, sound editor (SIDMON), sprite editor (SPED), and character graphics editor (CHRED) as well as programming documentation. A market quickly developed for third-party tools such as BASIC compilers, assemblers/linkers, and programming languages.

Nowadays, homebrew C64 developers usually write games in either assembler or C, the latter using the cc65 compiler toolchain. Writing in C gives you more functionality per line of code. While it has lower performance and greater code size than a well-written assembly program, you can still write a pretty good game in C.

Memory Map

Start

End

Description

Alternate Use

$0000

$00FF

RAM, zero-page

$0100

$01FF

RAM, CPU stack

$0200

$7FFF

RAM

$8000

$9FFF

RAM

Cartridge ROM

$A000

$BFFF

RAM

BASIC ROM

$C000

$CFFF

RAM

$D000

$D3FF

RAM

VIC-II

$D400

$D7FF

RAM

SID

$D800

$DBFF

RAM

Color RAM

$DC00

$DCFF

RAM

CIA 1

$DD00

$DDFF

RAM

CIA 2

$DE00

$DEFF

RAM

I/O 1

$DF00

$DFFF

RAM

I/O 2

$E000

$FFFF

RAM

Kernal ROM

Comments