The Commodore 64 (CommodoreSixtyFour
) was the best selling MicroComputer
, with over 6 million sold in the US and twice that worldwide.
It competed with the Atari series, the RadioShack
TRS-80 series, the Sinclair ZX Spectrum series, the BBC MicroComputer
) and the Amstrad CPC series.
In the United States, it competed with the Atari 400/800 series, the RadioShack TRS-80, the Apple II, and various others. In Europe, it competed with the Sinclair ZX Spectrum series, the BbcMicro, and the Amstrad CPC. Was it released in other markets?
Powered by the 6510 microprocessor, which is a derivative of the 6502 used in the Apple II (AppleIi
). The 6510 basically was
a 6502, but with an embedded 5-bit I/O port (complete with its own data direction register too!). The Commodore 64 used this I/O port for controlling the visibility of two 8K chunks of memory (the BASIC ROM and the KERNAL(sic) ROM) and one 4K I/O space, which also included the color nybble RAM. For instance, if you were running an assembly program and didn't need the BASIC ROM, you could bank-switch it out and have an extra 8K of RAM instead. It also used this I/O port for cassette I/O as well.
In addition to the I/O port, the 6510 supported DMA via its BA
signals. The BA line, when asserted, tri-stated the bus without needing external buffers. The 6502/6510 both had to wait up to four cycles after negating RDY, though, because the 6502 and 6510 can only pause on memory reads
, not writes (note:
modern 6502 implementations can pause on both, and on arbitrary clock cycles). Still, a 4 cycle DMA latency (which the VIC-II chip managed exclusively) was unheard of in those days anyway. VIC-II could push 2MBps over the 6510's bus when using DMA, as it used the bus both when the clock was low and when the clock was high (known as phase-1 and phase-2, respectively, in 6502 and 65816 literature). Without DMA, the VIC-II chip still had 1MBps bus throughput, via the phase-1 timing of the bus.
Popular games and applications for the C64 were
- BasicLanguage (although a built-in implementation is provided, the "extended BASIC" cartridge market was rather successful),
- There was one on disk, but I had a mediocre versino by HesWare called "Turtle Graphics II" with kind of a weird IDE.
- LittleComputerPeople. (Like TheSims?).
- SpeedScript -- this is what you probably did your homework on.
Even today, people are trying to make the C64 do things it was never designed to do, like TCP networking, multitasking, etc. (And often succeeding.) People have gotten it to do some amazing things through DemoProgramming
Multi-tasking was already possible using the Geos-program. It gave a word processor, a tabulator, etc. as options.
- GEOS did not multitask via multithreading; it is a purely event-driven architecture. Furthermore, not one program for GEOS exploited its ability to visibly multitask because there simply was not enough RAM to support it. When you launched a program, it utterly swapped out the DeskTop. When you selected a desk accessory, it swapped out roughly half of application memory to disk, to make room for the accessory software. In no way could you multitask with GEOS. --SamuelFalvo? (former hacker of the 64 ;) ).
- So it did it just like the Mac at the time did.
The C64 also came with the SID 6581, the most advanced sound chip available in a micro at the time. Even today, SidMusic?
is popular on the Internet.
There is a hardware synthesizer called the SidStation?
) that uses SID chips scavenged from dead 64s
Did anyone else also altered the BasicLanguage
on their Commodore 64 ?
The whole section was rewritable ! I did some Dutchizations such as link$ and recht$ (left$, right$). I also created my own French Accents on the system to be able to created a verb conjugation program.
I had written a plug-in for the KERNAL which granted it a QNX-like virtual filesystem on device ID 255. So, while I didn't exactly patch BASIC, I could do pretty neat things like OPEN 1,255,1,"DEVICES/MOUSE":...etc...
. It is pretty useless without a dynamic loader for modules though. :) --SamuelFalvo?
I've got one beside me right now. I found it in the trash outside my apartment and just had to rescue it. I wonder if it works? I used to WriteAssembler
for these puppies. It's a beautiful machine for that; three, count them, three registers. -- AndyPierce
But not so great in other ways; for instance, didn't the stack have a hard limit of 256 bytes?
Yes, but it could be worked around through other means (incurring a runtime performance hit, of course). Avoid recursion, basically. --SamuelFalvo?
I still own a book containing a commented printout of the whole OperatingSystem
in assembly. Oh golden hours of the youth! :-) - MarkoSchulz
Someone above referred to GEOS ... GEOS Programmer was an awesome assemler programming environment for that OS, modelled on a suite of tools originally developed for *nix, I was told at the time. It was lovely.
Another great language written for C64, although perhaps not as accessible, was COMAL (Commodore Algorithmic Language?). This was a very pascal-ish language and was, I believe, pre-interpreted but not compiled (like byte code). I built quite a few gadgets for the expansion port and controlled them via COMAL programs.
claims that there is still implementations on the CommodoreSixtyFour
for Forth, Lisp, COBOL (!) available.
I used to have two of these dinosaurs but donated them to a private school back in 1990. I also donated all the peripherals I had accumulated, including a 300 baud modem, a MIDI interface, four floppy drives, and about 500 5 1/4 inch disks. --K. Bowman
Santa left me with a CommodoreVicTwenty sometime in the early 80's. I later asked for a CommodoreSixtyFour but got a used TrashEighty instead (at least it had 5 1/4" disk storage!).
I really want to get a C64. I never had one in my youth, instead having an Apple II, and it has driven me to excessive w4r3z d00dz-isms and other annoying behaviours. Maybe I'll pick one up on ebay or something.. ;)
I understand. After all, there were no w4r3z d00dz in the Commodore 64 world, were there. *snark*
I actually never had a C64; I graduated directly from a VIC-20 to a CommodoreOneTwentyEight
I was most impressed by the games made for the 64. For a long time they competed well against the early PC games.
A few of them still do - try a google search for emulators!
Or try VICE, which emulates the C64 and other Commodore machines: http://www.viceteam.org/
It's amazing what you could cram into that little thing.
Agreed! Some people used to hook two together in parallel, so that you could program the whole of the memory of one using the other one. Otherwise you couldn't put anything in the space your compiler used.
Indeed. And there was the disk drive (Cbm1541) which had a simular CPU (MOS6502) (and some memory - about 2KiloByte) as the C64 itself. You could hook up two disk drives to each other, send a program to them and then use them to copy floppy disks while they were disconnected from the C64. I believe there was even a game (Elite? I doubt it was GameOfElite?, since GameOfElite? also existed in a tapeversion
) which used the disk drive CPU for some tasks.
Said feature also enabled some really whacked copy protection schemes.
I was always fond of the sprite capability in the C64. You could make amazing games using the sprites that were built into the graphics hardware. And then there was the myriad of "poke" and "peek" registers you could play with and discover what they did. Who needed a manual?!