Skip to main content

Commodore 64 (1982)

7

Commodore_64

The Commodore 64, also known as the C/64 or the CBM 64, is an 8-bit home computer introduced in January 1982 by Commodore International (first shown at the Consumer Electronics Show, in Las Vegas, January 7-10, 1982). It has been listed in the Guinness World Records as the highest-selling single computer model of all time, with independent estimates placing the number sold between 10 and 17 million units.

Introducing the best selling computer ever: Captatio benevolentiae​

It is very difficult to talk about the C/64 because everything has been already said. The machine was ahead of time for its custom chips, and the amount of RAM. Lack of the built-in software was compensated with a good manual and a very huge set of third-party software. As we will see, Commodore tried to offer better Basic for C/16, Plus/4 and Commodore 128, but that three computers would not be able to take over from where C/64 left.

Early C/64 advertisements boasted, "You can't buy a better computer at twice the price". TI responded by cutting prices on its TI-99/4A, which had been introduced in 1981. Soon there was an all-out price war involving Commodore, TI, Atari, and practically every vendor other than Apple Computer...

A better TOI​

According to Wikipedia8 during the 1981

[...]Robert Russell (system programmer and architect on the VIC-20) and Robert Yannes (engineer of the SID) were critical of the current product line-up at Commodore, which was a continuation of the Commodore PET line aimed at business users. [...] They proposed to Commodore CEO Jack Tramiel a true low-cost sequel to the VIC-20. Tramiel dictated that the machine should have 64 KB of random-access memory (RAM). Although 64-Kbit dynamic random-access memory (DRAM) chips cost over US$100 (equivalent to $232.95 in 2018) at the time, he knew that DRAM prices were falling, and would drop to an acceptable level before full production was reached. The team was able to quickly design the computer because, unlike most other home-computer companies, Commodore had its own semiconductor fab to produce test chips; because the fab was not running at full capacity, development costs were part of existing corporate overhead. [...]

The product was code named the VIC-40 as the successor to the popular VIC-20. The team that constructed it consisted of Yash Terakura, Shiraz Shivji, Bob Russell, Bob Yannes and David A. Ziembicki.

[...]

When the product was to be presented, the VIC-40 product was renamed C/64.

Hardware​

The C/64 uses an 8-bit MOS Technology 6510 microprocessor. This is a close derivative of the 6502 with an added 6-bit internal I/O port that in the C/64 is used for two purposes: to bank-switch the machine's read-only memory (ROM) in and out of the processor's address space, and to operate the "datasette" tape recorder. The C/64 has 64 KB of RAM, of which 1024 bytes are color RAM for text mode and 38 KB are available to built-in Commodore BASIC 2.0 on startup. There is 20 KB of ROM, made up of the BASIC interpreter, the Kernal, and the character ROM.

65536 bytes of memory​

Memory is a huge success factor of C/64. On that time, C/64 was the only one with 64Kb of RAM, which was the maximum RAM you can use with the MOS

Apple ][ for example could be expanded up to 48Kb, because some ROM was needed for the BASIC and the operating system.

A clever idea was to add 64KB anyway, using "bank switching" to be able to show/hide kernel and Basic V2.

So, in theory, a software house could produce a full-blown operating system for the C/64 (like GEOS64 will do). We stress this point because we think it will be a success factor for the high C/64 longevity.

Graphics​

The graphics chip, VIC-II, features 16 colors, eight hardware sprites per scanline scrolling capabilities, and two bitmap graphics modes. The standard text mode features 40 columns, like most Commodore PET models.

The C/64 has a resolution of 320 x 200 pixels, consisting of a 40 x 25 grid of 8 x 8 character blocks.

There are two colour modes, high resolution, with two colours available per character block (one foreground and one background) and multicolour with four colours per character block (three foreground and one background). In multicolour mode, attributes are shared between pixel pairs, so the effective visible resolution is 160 x 200 pixels. This is necessary since only 16 kB of memory is available for the VIC-II video processor.

Hardware sprites​

A sprite is a movable character which moves over an area of the screen, draws over the background and then redraws it after it moves. Note this is very different to character block animation, where you are just flipping character blocks. On the C/64, the VIC II video processor handles most of the legwork in sprite emulation, the programmer simply defines the sprite and where they want it to go. The C/64 has two types of sprites, respecting their color mode limitations. Hires sprites have one color (one background and one foreground), and multicolor sprites three (one background and three foreground). Color modes can be split or windowed on a single screen. Sprites can be doubled in size vertically and horizontally up to four times their size, but the pixel attributes are the same - the pixels become "fatter".

Sprites can move with glassy smoothness in front of and behind screen characters and other sprites.

Programmers will find out a way to show more than 8 sprint on the screen, keeping the limit of 8 sprites per scan line.

For more information on Sprite multiplexing refer for instance at

http://retro64.altervista.org/blog/sprite-multiplexing-simple-implementation-using-commodore-64-basic-v2/

and

http://selmiak.bplaced.net/games/c64/index.php?lang=eng&game=Tutorials&page=Sprite-Multiplexing

The Sound Interface Device (SID)​

Figure 2 The Sound Interface Device Chip (SID)

The SID chip has three channels, each with its own ADSR envelope generator and filter capabilities. Ring modulation makes use of channel NΒ°3, to work with the other two channels. Bob Yannes developed the SID chip and later co-founded synthesizer company Ensoniq. Yannes criticized other contemporary computer sound chips as "primitive, obviously...designed by people who knew nothing about music".

Often the game music has become a hit of its own among C/64 users.

Well-known composers and programmers of game music on the C/64 are Rob Hubbard, Jeroen Tel, David Whittaker, Chris HΓΌlsbeck, Ben Daglish, Martin Galway, Kjell NordbΓΈ and David Dunn among many others.

Due to the chip's three channels, chords are often played as arpeggios, coining the C/64's characteristic lively sound. It was also possible to continuously update the master volume with sampled data to enable the playback of 4-bit digitized audio. As of 2008, it became possible to play four channel 8-bit audio samples, 2 SID channels and still use filtering.9

There are two versions of the SID chip: the 6581 and the 8580. The MOS Technology 6581 was used in the original ("breadbox") C64s, the early versions of the 64C, and the Commodore 128. The 6581 was replaced with the MOS Technology 8580 in 1987. While the 6581 sound quality is a little crisper and many Commodore 64 fans say they prefer its sound, it lacks some versatility available in the 8580 -- for example, the 8580 can mix all available waveforms on each channel, whereas the 6581 can only mix waveforms in a channel in a much more limited fashion. The main difference between the 6581 and the 8580 is the supply voltage. The 6581 uses a 12 volt supply---the 8580, a 9 volt supply. A modification can be made to use the 6581 in a newer 64C board (which uses the 9 volt chip). The SID chip's distinctive sound has allowed it to retain a following long after its host computer was discontinued. A number of audio enthusiasts and companies have designed SID-based products as add-ons for the C/64, x86 PCs, and standalone or Musical Instrument Digital Interface (MIDI) music devices such as the Elektron SidStation. These devices use chips taken from excess stock, or removed from used computers. In 2007, Timbaland's extensive use of the SidStation led to the plagiarism controversy for "Block Party" and "Do It" (written for Nelly Furtado).

Commodore 64 Marketing​

Commodore sold the C/64 not only through its network of authorized dealers, but also through department stores, discount stores, toy stores and college bookstores.

The C/64 had a built-in RF modulator and thus could be plugged into any television set. This allowed it (like its predecessor, the VIC-20) to compete directly against video game consoles such as the Atari 2600.

Tramiel placed a highly aggressive price of just $595 on the device (worth $1,477 in 2016) [...]

It should be noted that Commodore tried on a couple of occasions to discontinue the C/64 in favour of more expensive computers such as the Commodore 128, but demand for the C/64 remained stubbornly strong. In 1986, Commodore did introduce the 64C, a redesigned C/64.10

Aggressive pricing of the C/64 is considered to have been a major catalyst in the North American video game crash of 1983.

For instance, in January 1983, Commodore offered a $100 rebate in the United States on the purchase of a C/64 to anyone that traded in another video game console or computer. To take advantage of this rebate, some mail-order dealers and retailers offered a Timex Sinclair 1000 for as little as $10 with purchase of a C/64. This deal meant that the consumer could send the TS1000 to Commodore, collect the rebate, and pocket the difference.

Commodore's tactics soon led to a price war with the major home computer manufacturers

Commodore dropped the C/64's list price by $200 within two months after its release.

At one point, the company was selling as many C64s as all computers sold by the rest of the industry combined.

Commodore sold about one million C64s in 1985 and a total of 3.5 million by mid-1986.

Price Drop Graph​

To better understand the graph, two important fact must be take into account:

  1. 1983 there was the Video game crash, and C/64 price was dropped three times, from $400,00 to $200,00

  2. In the 1985 Commodore tried to stop C/64 production with little success, because demand was high. In the next year the Commodore 64C was produced, at $150

By the way Commodore 64C was identical to original C/64 but was a lot more cheap to produce. Keep in mind C/128 was the 1985 computer, with a C/64 compatibility mode: nerveless, customers demand C/64!

How many Commodore 64 computers were really sold?​

In the article "How many Commodore 64 computers were really sold?"11 Michael Steil had a nice graph answering to this question with a very deep analysis. To make it short, the correct numbers seems around 12.5M units.

Please note the steady curve from 1985 up to 1990!

Software Built-in​

As is common for home computers of the early 1980s, the C/64 comes with a BASIC interpreter, in ROM

Commodore BASIC 2.0 is used instead of the more advanced BASIC 4.0 from the PET series since C/64 users were not expected to need the disk-oriented enhancements of BASIC 4.0

BasicV2 Funny story: when Bill gates was forced to not get its royalties​

Microsoft is very famous because Bill Gates worked hard to license its product on a royalties-based schema instead of a simpler "perpetual license" one.

So it is funny to know /Commodore licensed BASIC from Microsoft on a "pay once, no royalties" basis after Jack Tramiel turned down Bill Gates' offer of a $3 per unit fee, stating, "I'm already married," and would pay no more than $25,000 for a perpetual license./12

Basic V2 was used in PET in the 1977, so this story is dated around that years.

Also, considering C/64 will sell over 12 million of units, the missed fee was a very bad deal for Microsoft. Anyway on that years was reported Microsoft needs funding, so Tramiel won.

C/64 Memory map (WIP)​

C64 Memory map is very complex. C64 has 64KB of RAM and 16KB or ROM.

Because the processor can address only 64KB of RAM at a time, the ROM is mapped into memory via bank switching, controlled by byte address 0. Also, a part of the I/O address is memory mapped in the space $D000 - $DFFF

In the default layout depicted above, 8KB Basic ROM is at $A000-BFFF and 8Kb Kernal is $E000-FFFF. You have a 4KB free ram area at $C000-CFFF, often used to put machine code for Basic interoperability. Finally I/O registers are mapped inside $D000-DFFF area.

A very deep reference is All_About_Your_64 by Ninja/The Dreams which we suggest to use as a programming reference because contains also a KERNAL/BASIC cross reference for every location. Via bank switching on location 1 you could see the entire RAM (more information will follow in the upcoming programming section ).

C/64 Software​

C/64 Software collection is huge and impressive

Simons' BASIC​

Simons' BASIC

Simons' BASIC was an extension to BASIC 2.0 for the Commodore 64 home computer. Written by British programmer David Simons in 1983, who was then just 16 years old at the time, it was distributed by Commodore in cartridge format. .

  1. Simons's BASIC Highlights

    A further extension was also written by Simons and released by Commodore on floppy disk and tape as Simons' Basic Extension

    This software is also known as Simons' Basic 2.

Geos 64​

GEOS (Graphic Environment Operating System) was an operating system from Berkeley Softworks (later GeoWorks). Originally designed for the Commodore 64 with its version being released in 1986, enhanced versions of GEOS later became available in 1987 for the Commodore 128 and in 1988 for the Apple II family of computers.13

Geos64 was very impressive but painful slow, even if it provided a nice turbo disk to speed up drive operations. It offered a semi-professional set of tool like GeoWrite and GeoPaint

  1. Geos64 References

    1. Geos 64 original disks http://www.cbmfiles.com/geos/index.php

    2. Geos 64 source code at https://github.com/mist64/geos

C/64 Legacy

Emulators​

VICE​

VICE

From VICE website:

VICE is a program that runs on a Unix, MS-DOS, Win32, OS/2, BeOS, QNX 4.x, QNX 6.x, Amiga, Syllable or Mac OS X machine and executes programs intended for the old 8-bit computers. The current version emulates the C64, the C64DTV, the C128, the VIC20, practically all PET models, the PLUS4 and the CBM-II (aka C610/C510). An extra emulator is provided for C64 expanded with the CMD SuperCPU.

VICE is free software, released under the GNU General Public License.

VICE is still developed (last release is of December 2019) with features like

  • SCPU64 emulation. The XSCPU64 emulator is a simulation of a C64 equipped with a SuperCPU64 V2B, which has a 65816 CPU running at 20Mhz, 128Kb of RAM and more goodies. The SuperCPU was released in 1996 by Creative Micro Designs. It is perhaps the best known CPU accelerators for the Commodore 64 and Commodore 128. It was certainly the most compatible accelerator of its day. For more information take a look at its home page.

  • new headless port that can be enabled by passing --enable-headlessui to configure. this can be used to build an emulator without video output, which may be useful for scripting.

  • Accurate emulation of the "VSP bug".

and so on.

It is the de-facto standard nowadays, at least for no-c/64 machine. Remember c/64 has plenty of emulators so far.

VICE Highlights​

VICE feature a very rich command line you can use for configure every aspect of the emulation.

reSID​

reSID is a C++ library containing a complete emulation of the SID chip.

It is a reverse engineered software emulation of the MOS6581 SID (Sound Interface Device) chip programmed by Dag Lem.\ reSID is free software, published under the GNU General Public License.

Hoxs64​

Hoxs64 is a Windows10 C/64-only emulator with very good precision and a nice monitor debugger (see below).\ Its source code is hosted at https://github.com/davidhorrocks/hoxs64/tree/master/hoxs64 and it is actively developed (last version was released on April 2019).

  1. Features

    • Cycle based CPU, CIA, VIC and SID.

    • 1541 Disk drive.

    • Tape deck.

    • Full screen mode.

    • Configurable keyboard and joystick.

    • D64 G64 P64 FDI TAP PRG P00 T64 file support.

    {width="1vw" height="1vw"}

CCS64​

Shareware & nice, you can try it before buy

References​

  1. http://www.zimmers.net/anonftp/pub/cbm/crossplatform/emulators/resid/index.html

  2. https://en.wikipedia.org/wiki/ReSID

Demo Scene: "A Mind Is Born" the 256 bytes demo (April 2017)​

Making a demo in just 256 bytes would be a formidable challenge regardless of platform. A Mind Is Born is my attempt to do it on the Commodore 64. In the absence of an actual 256-byte compo, it was submitted to the Oldskool 4K Intro compo at Revision 2017, where it ended up on 1st place.

From https://linusakesson.net/scene/a-mind-is-born/

The demo is not very nice to see, but it is done only in 256 bytes:

The author explain the code, which is very dense by the way

80 Columns Text on the Commodore 64 (July 2017)​

The text screen of the Commodore 64 has a resolution of 40 by 25 characters, based on the hardware text mode of the VIC-II video chip. This is a step up from the VIC-20's 22 characters per line, but since computers in the professional segment (Commodore PET 8000 series, CP/M, MS-DOS) usually had 80 columns, several solutions -- both hardware and software -- exist to allow 80 columns on a C/64 as well. Let's look at how this is done in software! At the end of this article, I present a fast and full-featured open source implementation with several different character sets.

From https://www.pagetable.com/?p=901

Note: this mode is hard to read, anyway is funny to note on which extent you can push your C/64 considering its age!

Super Mario on C/64 (April 2018)​

After 7 years of development...

This is a Commodore 64 port of the 1985 game SUPER MARIO BROS. for the Famicom and Nintendo Entertainment System. It contains the original version that was released in Japan and United States, as well as the European version. It also detects and supports a handful of turbo functionalities, and has 2 SID support14.

This version took about 7 years to be completed by ZeroPaige, and was sued by Nintendo after a while.

It was supposed to be impossible to port, because the C/64 lack NES graphic and sound capabilities, but shared the same CPU of the original game.

I reported this game to show how even in 2019, after 37 years, C/64 is still used!

Retro Games: The C64 on 2019​

On December 2019 TheC64 was produced by RetroGames.

THEC64-LOGO{width="50%" height="50%"}

The computer is a C/64 replica, sold at over 100€ only in Europe and UK. The8Bit guy made a nice review, noting it seems a Vic20 case replica (the C/64 case was a bit taller)

The case is quite empty, because the entire computer is emulated via an ARM-based board (possibly a Raspberry PI-like).

The software seems a modified version of VICE but the source are omitted.

Anyway the user manual is very well written, and enable the use of a very huge set of feature. For instance:

  • A VIC20 emulation is provided, with two games too.
  • The VIC20 emulation enable to use different memory configuration (banks)
  • The video emulation try to stick as far as possible with the exact timings, producing a 50Hz or 60Hz HDMI output:

THEC64 locks to the HDMI rate of exactly 50 Hz or 60 Hz depending on the Video output setting, so that it produces super-smooth and tear-free graphics when running programs on a modern HD display.

Is it worth the price?​

Difficult to say. The entire case is cheap, the keyboard is a membrane one, and no expansion ports are provided. So you cannot plug old cartige in this C/64. But the emulation seems okey.

The game changer should be the keyboard, but it is not like an old mechanical one.

Also the full user manual is NOT provided, only a "quickstart". You must download it. And this is a pity, because the old C/64 provided a very good manual.

A good retail price should be around 50-60€ in our humble opinion, or around 80 with a nice printed manual and at least.

RasperryPI cheap alternatives​

You can try VICE also on a Raspberry PI via Combian distribution, made by an Italian guy, and there are plenty of other ways to do it.

Commodore 64 on 2021 (WIP)​