career on the Internet
As you might guess, I own several Commodore computers. Like many
Commodore enthusiasts, I started with the Commodore 64 in 1986, and
almost abandoned it when I bought my first PC compatible in 1991. I
took the first steps in enhancing my Commodore collection by buying my
first VIC-20 in 1991, with some cartridges and tapes. As I joined the
Internet in 1992, I found the Usenet newsgroup comp.sys.cbm and some possibilities to transfer files between my dear Commodores and
the outer world.
On the Internet I found lots of software on the ccosun.caltech.edu
FTP site maintained
by Robert A. Knop, Jr. Back then, there were no major 8-bit Commodore
FTP sites in Europe
(and no WWW sites, for that
matter), so I asked if FUNET
could create a subdirectory
/pub/cbm for files related to
Commodore 8-bit computers. The
request was fulfilled in the spring of 1993, and Pasi Ojala and me started
collecting programs on the site, first mainly by restructuring and
documenting the content from ccosun, whose Commodore section was
closed in late 1993 or during 1994. The CP/M archive at
/pub/cpm was created some
time later. The result of our work is still among the biggest
archives of freely distributable Commodore software and
Since the Commodore 64 emulator boom in late 1993 or early 1994,
other sites have been formed, mainly for demos and unauthorised copies
of games. Not to mention the WWW boom: my Commodore related web pages predate most web
sites that exist today.
I have written quite many utilities mainly for use with other
computers to ease program development, file transfers and so on. I
haven’t written many programs entirely for a Commodore computer. In
December 1996, I was proud to present a demo for the VIC-20, Veni vidi Vic!, a joint project by me
and some other VIC-20 lovers. All of my code is freely distributable
and available with source code. I do not expect that anyone would pay
for software written for practically dead computers.
The End of an Era
Since about 1995, I felt that I do not have enough resources to
maintain the site. I made updates every now and then, but the backlog
of new uploads (often files without any descriptions accompanying
them) was growing. After I completed my doctoral thesis in 2003 and
left the university, it started to become clear that I do not have
time to maintain the Commodore file archive any longer.
On June 15, 2005, I announced on the cbm-hackers
mailing list (which I originally founded in the early 1990s and
maintained until 2003) that the archives will live in Bo Zimmerman’s hands from now
My Commodore collection
Below you will find a list of my Commodores. They are listed in
the order I have acquired them.
- Commodore 64, serial number ~300000.
- My father bought this one for me and for my brothers. If I
remember correctly, it costed about 2500 Finnish marks at the time
(early 1986), with an 1530 or C2N cassette drive clone by Taihaho.
It was a grey imported unit from Germany.
- This was my only Commodore 64 until 1993 or so. By now, all
important chips except the video chip have been replaced at least once
SID), and you can hardly find any chip in it that
is not socketed. I expanded this unit
to 256 kilobytes of memory in 1993.
(Creating the document was the reason why I switched to
Linux (kernel 0.94 back then):
no TeX distribution on MS-DOS could satisfy me.)
- Since 1996 or 1997, this unit suffers from the
disease. I think that there is something wrong with the bus drivers.
- Commodore 1541, short board.
- The cassette drive was simply too slow and error-prone. At last my
father bought a 1541 disk drive as a Christmas present (1986). It was
also grey imported from Germany and costed around 2000 Finnish marks.
- Oceanic OC-118N, 1541 clone
- I won this drive in a C=lehti programming contest. (C=lehti was a
Finnish magazine for the Commodores that was published in 1987-1991.)
This drive is very nicely constructed. It has an external power supply,
and the electronics are scattered on three boards around the
mechanics. Unlike the 1541, this drive doesn’t contain any custom chips,
and it is only a quarter of the size of an old-style 1541!
- For copyright reasons, the drive uses CMD JiffyDOS instead of the
original Commodore firmware.
- Commodore VIC-20CR, C64-style keyboard
- Somehow, as a class mate told me that he has a VIC-20, I decided
that I must have it. So, I bought his VIC-20CR, the transformer, some
cartridge games (including the classics Jupiter Lander and Omega Race)
and a BASIC programming course for a bargain price of 50 Finnish
marks in 1991. This unit was originally used in England, and the TV
modulator was broken in the way that it doesn’t produce any sound,
- Commodore 128D, Finnish/Swedish keyboard,
serial number DA4 100328
- I always wanted to have a C128, but the price/performance ratio was
too high at the time they were marketed. I bought my C128D from my little
brother’s classmate in August 1993. After I cleaned the keyboard
and replaced the broken 1571 drive mechanics, it was like new again!
I expanded it to 64 kB of VDC memory on its 7th anniversary (the
case said 08 Okt. 1986) and 1 megabyte of main memory shortly after
that. Now the C128D is my main machine, since it is so compact with its
- Commodore 64, serial number WG B 34727.
- I got this one for free from my brother’s friend who had found it on
a flea market in Spain. Some keys were torn off, and the processor was
broken. I replaced the processor and the keyboard, and it worked like
charm! The memory chips in this units have the access time of 300
nanoseconds, the slowest I have ever seen in a working computer! The other
Commodores I have seen have had 200, 150 or 120 nanoseconds DRAM. Also,
this unit has an old 6569R1 videochip, manufactured in the last week of
- Commodore 64, serial number UK B 770563.
- I got this one for free from a German guy in summer 1994, but
the fault is next to impossible to repair. Something is broken in
the clock generator circuit.
- Commodore 64c, serial number HB 420454 B3.
- I got this one for free from Timo Raita.
This unit is the first 64c generation; it has the 3rd
revision circuit board (with the 8701 as the clock generator), not
the BN/E board that was used in newer 64c and 64G models.
- Commodore 16, expanded to 61 kB.
- Only the Commodore 264 series was missing from my line of
Commodore 8-bit home computers, when I bought the Commodore 16 from a
German Commodore enthusiast. I haven’t done much programming on the
C16 yet; only wrote a raster routine that measures the video timings.
- I payed maybe 20 DM for this
one in the summer of 1994, and got a joystick adapter and a cassette drive
with this, and some tapes I still haven’t tested.
- Commodore 1541, short board.
- I got this one for free in summer 1994 or winter 1995, as I was
in Germany. Only a serial bus driver (7406) was broken; everything
else worked in this drive. I may have donated this one to Turo Heikkinen.
- Commodore VC-20CR, with
- I always wanted to have a
square key Commodore, like the
one that was presented in the pictures of my German C64 user’s
manual. This VC-20 (the German name for VIC-20) has the same key
shape as the C64, but the markings on the keys are more like square.
For example, the
O key on the VC-20 keyboard is marked with a
rounded square, while it’s marked with a rounded rectangle on the
Commodore 64 keyboards.
- Like for my first VIC-20, I payed 50 FIM for this one. Also included with the deal were lots of
game cartridges and a 16 kB RAM expansion cartridge that I expanded to 32 kB.
- Commodore VIC-20 NTSC-M motherboard
- My special thanks go to Daniel Dallmann who donated his NTSC-M VIC-20
(non-CR) board to me in the summer
of 1996. (I donated him some money in return, because I couldn’t accept
such a valuable thing as a gift.)
- Commodore MPS1250 dot matrix printer
- I got this one for free from a colleague. It is manufactured by
Citizen, and its interface cartridge has two connectors: Centronics and
Commodore serial bus.
- Commodore 1700 RAM
Expansion Unit (REU)
- I bought this 128-kilobyte expansion from Asger
Alstrup, a Danish Commodore user, in early 1998. This is an
external expansion for the Commodore 64 and the 128, and it has
an on-board DMA
controller, which makes the memory accesses fast. Later I desoldered
the 16 old 16-pin memory chips and upgraded the expansion to 512
- Commodore 1581 disk drive
- I bought this one from Larry Anderson when I visited San
Francisco in October 1998. Timo Raita donated
me an european 1541-II power supply, as the 110-volt power supply
that I got with the drive was useless for me.
- Commodore 200 a.k.a. 8032-SK
- I bought this one late 1998 from an Austrian architect who was
writing his doctoral thesis in Finland. He had found the computer in
a warehouse in Nummela and decided to buy it because of its nice
look. Since the transport cost to Austria would have been too high
for him, he sold me the computer for the same price he paid for it,
20 FIM. The computer was pretty
dirty, but after I took it apart, all the keys work perfectly.
- Commodore 8050 dual disk drive unit
- In 2000, I was approached by someone from Betoni-Kärjä, a company that produces readily mixed concrete.
They wanted to transfer their old Commodore PET application
Valmisbetoni that computes their
recipes to more modern hardware. First, they mailed me the disk drive,
the program disks and the dongle that was plugged in the cassette port.
The program code looked like compiled BASIC.
I did not figure out how the dongle works, but I located the routine that
checks for the copy protection. The jump to the routine could not simply
commented out from the binary, as the program computed some sort
of a checksum from itself. Luckily, I was able to compensate the checksum
difference by altering another byte in the program code. The modified
program works in VICE.
- Commodore 8023P printer and Commodore 8032 computer
- In the autumn of 2001, when Jukka Kärjä, the
director of Betoni-Kärjä, was travelling to
Helsinki with a relatively empty car, he brought the rest of their
now useless PET equipment to me. Later, Tomi Engdahl gave me some wide
tractor feed paper for the printer.
- Commodore 720 computer, 4022 printer and 8250 dual disk drive
- In late 2001, Turo Heikkinen and I fetched
these computers from Vaasa from a collector and radio amateur whose
wife apparently was unsatisfied with his large collection. We also
got two Intergraph 2000 workstations and other stuff we managed to
fill the car with.
- Various calculators, a SuperPET and two Commodore B-128 computers
- George Page had sold his disk drive collection to someone, and he
sold the rest of his to Bo Zimmerman, who drove them in
2002 with a rental trailer to his home. Bo was kind enough to sell
me this part of the collection at a low price. The shipping costs
were all but negligible, though: for some reason, the SuperPET could
not be sent by surface mail. The air mail fare was well over
- Commodore 220
- In September 2004, Tapani Liukkonen asked me for repair
instructions for a Commodore 220, which is also known as CBM 8296D.
The computer looked otherwise okay, but the analog circuit board of
the disk drive controller had been cut in half. Luckily, Ruud
Baltissen had a spare part from a drive whose mechanics was broken
beyond repair. I ended up buying the computer from Tapani, and Ruud
sent me the circuit board. I cleaned the keyboard and had to reseat
a chip on the disk controller’s digital board in order to get the
drives to work.
The alert reader might notice that I don’t have the C64GS, C64G or
even a C65 in my collections, nor the 1541-II disk drive. I never
liked these products. They didn’t add any real functionality to the
existing products, and they were only designed in order to drop the
production costs. (I got the 64c as a donation, and I do not refuse
further donations, though.) VLSI custom chips are not hacker-friendly! But
I must admit that I like the C64G case design, and I even bought an
empty C64GS game console case in 1994 or 1995, as I noticed them being
sold at Conrad Electronic in Hamburg.
I haven’t listed my Commodore video chip collection here. I have
probably all revisions of C64 PAL-B 12 volt (NMOS) video
chips ever produced, namely the 6569R1, R3, R4 and R5. Of the C64
NTSC-M chips I have the 6567R5, 6567R56A and the 6567R8. Of the
VIC-20 NTSC-M chips I have the 6560-101 and 6560R2-101. For the C128
I have both PAL-B and NTSC-M (8564R5C) chips, but most revision
numbers have escaped from my mind. Because the TED of the Commodore 264 series
knows both PAL-B and NTSC-M, I can use both NTSC-M and PAL-B video
possibility on all my Commodores.
- Commodore VIC-20 a.k.a. VC-20
- General purpose RAM:
$0000-$03ff, $1000-$1fff = 5 kB
- External memory expansions
- 3 kB at $0400-$0fff or
- 8 kB, 16 kB or 24 kB at $2000-$6fff
- 8 kB at $a000-$bfff for game cartridges
- Colour RAM:
$9400-$97ff = 1024 4-bit nibbles
- VIC-I (Video Interface Chip)
- All-aroud chip: video, sound, light pen, paddles
- Dot clock = 4 times processor clock => non-blocking video
- No interrupts, but a raster counter is available
- Character graphics, 8×8 or 8×16 cells. Resizable from 0×0
characters per frame to full overscan.
- Multicolour graphics (4×8 or 4×16 character cells)
- NTSC-M: 6560-101, 65 cycles/line × 261 lines.
Processor clock = 14318181/14 Hz = 1022727 Hz
- PAL-B: 6561-101, 71 cycles/line × 312 lines.
Processor clock = 17734472/16 Hz = 1108404 Hz
- Firmware: BASIC V2.0, separate KERNALs for PAL-B and NTSC-M
- Interfacing: two 6522 VIA chips
- Cost Reduced (CR) version: one 4 kb×8 chip replaces eight 2114
(1 kb×4) chips used on the original board
- Commodore 64
- General purpose RAM:
$0000-$ffff = 64 kB
- Banked memory (very non-orthogonal), not designed to be expanded
- Colour RAM:
$d800-$dbff = 1024 4-bit nibbles
- VIC-II (Video Interface Chip)
- Complex chip: video, light pen, paddles
- Dot clock = 8 times processor clock
- One exclusive DMA fetch
per character line
- Character graphics, high resolution graphics and Enhanced Colour
- Multicolour graphics (4x8 character or graphics cells)
- NTSC-M: processor clock 14318181/14 Hz = 1022272 Hz
- 6567R5 6A: 64 cycles/line × 262 lines.
- 6567R8 and newer: 65 cycles/line × 263 lines.
- PAL-B: processor clock 17734472/18 Hz = 985248 Hz
- 6569 (all revisions): 63 cycles/line × 312 lines.
- Sound: 6581 SID
- Firmware: BASIC V2.0, three KERNAL revisions (2 bugfixes)
- Interfacing: two 6526 CIA chips
- Board versions known to me
- The oldest board (1982) had the 6581 SID between the 82S100 PLA and
the RF modulator.
- The second version (1982-1983) had the 82S100 PLA (or the
mass-produced mask-programmed Commodore PLA) between the 6581 SID and the
- The third version (1986) replaced the original Motorola MC4044
ECL chip in the
dot clock generation circuitry with a custom MOS 8701 (also used in
the C128). This board was used in the newest "breadcase" C64s and
in the oldest C64c’s.
- The C64c, C64GS and C64G had at least two different boards
(BN/E) that were designed around 1989. Both had BASIC and KERNAL
on a single 23128 ROM, and the PLA and lots of logic glue were
integrated on a monster GAL chip. The newer BN/E board had even
the 2114 colour RAM
integrated on the monster chip. The SID and the VIC-II were
manufactured in HMOS technology and changed to work with 9 volts
instead of 12.
- Commodore 264 Series
- Three models: C16, C116 and plus/4, and some prototypes: 232, V364
- Bundled firmware: 3-plus-1 word processor
- General purpose RAM:
$0000-$3fff or $0000-$fcff = 16 kB (on the C16)
or 61 kB (plus/4)
- Banked memory, persistent I/O area at $fd00-$ff3f
- No extra colour memory
- TED (Text Editing Device)
- All-around chip: video, sound, light pen, timers, keyboard
- Dot clock = 8 times processor clock
- Two blocked DMA
fetches per character line
- Character graphics, high resolution graphics, Enhanced Colour Mode
and reverse characters
- Multicolour graphics (4×8 character or graphics cells)
- Writable horizontal and vertical sync counters
- Horizontal raster position register
- Same chip for both NTSC-M and PAL-B
- NTSC-M: 57 cycles/line × 262 lines, clock = 14318181/16 Hz
- PAL-B: 57 cycles/line × 312 lines, clock = 17734472/20 Hz
- Double clock mode for faster operation
- Firmware: BASIC V3.5, separate KERNALs for PAL-B and NTSC-M
- Interfacing: some 8-bit latches and 6551 ACIA
(only on the plus/4)
- Commodore 128
- Commodore 64 mode for almost compatible operation
- 8722 MMU one-purpose chip for orthogonal memory banking
- Added double clock mode to the VIC-IIe video chip
- Two colour RAM banks, two memory banks stock (128 kB)
- Z80A processor for booting up the system and for CP/M mode
- VDC chip for 80 column mode with its own memory and 16 MHz clock
- C128D: with built-in 1571 drive
- Cost Reduced version: 128DCR (with the 1571 controller integrated on
the same motherboard): 64 kb×4 memory chips, 64 kB VDC RAM
- Commodore 1540/1541 floppy disk drive
- Commodore GCR disk
format: 35 tracks, 17 to 21 sectors per track
- 683 blocks (sectors) of 256 bytes per disk, 664 blocks free
- Single sided, single density (according to manufacturer;
double density might work better)
- 2 kB RAM, 16 kB ROM
- Two 6522 VIA
chips for interfacing
- Processor: 6502 running at 1000000 Hz
- Cost Reduced versions: 1541 short board, 1541C and 1541-II
- Commodore 1570/1571 floppy disk drive
- The 1571 is double sided, otherwise same native format
as in the 1541
- WD 1770 MFM chip for supporting
- Low-cost version: single-sided model 1570
- Cost Reduced version: 1571CR (integrated on the motherboard of the
C128DCR, some hardware incompatibilities)
- 2 kB RAM, 32 kB ROM
- Two 6522 VIA
chips and one 6526 CIA
chip for interfacing
- Processor: 6502 running at 1000000 or 2000000 Hz (two modes)