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 (BbcMicro) 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 and RDY 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
Multi-tasking was already possible using the Geos-program. It gave a word processor, a tabulator, etc. as options. -pj
There is a hardware synthesizer called the SidStation? (http://en.wikipedia.org/wiki/Elektron_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. -- PieterJansegers
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? -- MikeSmith
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. --BenTremblay
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.
http://www.npsnet.com/danf/cbm/languages.html 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!). -- MichaelLeach
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?!