Commodore 64, ofta kallad C64, är en persondator introducerad av Commodore Business Machines 1982 som såldes från 1982 till 1994. Det var Commodores bäst säljande modell, med försäljningssiffror som uppskattats till allt från 12 miljoner till så mycket som 20 miljoner exemplar. Commodore 64 avsågs som en mer avancerad uppföljare till VIC-20 från 1980. Datorerna är till utseendet snarlika, och de har samma enkla BASIC-tolk. C64 har dock betydligt mer kompetent hårdvara. Modellen var mycket populär som speldator, men användes också till ordbehandling och andra kontorssysslor, och har idag blivit en av de största plattformarna för demoprogrammering.
Tack var att Commodore hade köpt halvledartillverkaren MOS Technology kunde man specialtillverka egna chip, pressa priserna och minska utvecklingstiderna. När Commodore 64 kom ut var den en mycket stark konkurrent på persondatormarknaden med goda prestanda och stor flexibilitet till ett mycket lågt pris: inledningsvis 595 USD, vilket snart sänktes till 199 USD (cirka 6000kr idag 2023). Detta kan jämföras med t.ex. Apple IIe (1395 USD) eller IBM PC (1565 USD). I priset för en C64 fick man en fullfjädrad dator inklusive lagringsenhet, som bara behövde anslutas till en vanlig TV för att bli komplett. Inga ytterligare pengar behövde spenderas på en dyr skärm, expansionskort eller diskenhet, även om disk var något som många valde att köpa till. Datorn marknadsfördes också till den breda allmänheten via leksaksbutiker och varuhus, till skillnad från andra persondatorer som vid tiden ofta såldes via annonser i hobbymagasin och liknande till en snävare publik. Commodore använde ofta också olika rabatter och inbytesbonusar för konkurrenternas datormodeller för att locka köpare. Under ett par år utgjorde Commodore 64 så mycket som 40% av världsmarknaden för persondatorer.
I Sverige såldes C64 till en början av generalagenten Handic, som satte priset avsevärt högre än det var i andra länder — 6000kr, motsvarande 17000kr 2023. Trots detta var 80% av alla persondatorer som såldes i Sverige 1984 en C64. Ganska snart klev Commodore in och tog över försäljningen och sänkte priset.
1986 designades plasthöljet om, och datorn introducerades med det nya utseendet under namnet Commodore 64C.
Commodore 64 var månadens dator hos Update i januari 2023 och en artikel om datorn finns i nr 2 2023 av Updates nyhetsblad Uptime.
CPU | 6510 @ 1MHz | Bild | Text 40×25 tecken |
---|---|---|---|
RAM | 64Kbyte | Grafik 320×200 pixlar | |
ROM | 20Kbyte | 8 sprites | |
Lagring | Kassettband (standard) | 16 färger | |
Diskett 170Kbyte (tillköp) | TV-utgång och S-video | ||
I/O | Cartridge-port | Ljud | 3 digitala oscillatorer |
2x Joystick-port | 3 ADSR-envelopes | ||
Kassettbandsgränssnitt | 1 resonant multimode-filter | ||
Port för diskett, modem, m.m. | |||
Parallell “user port” |
Processorn 6510 är en snarlik variant av 6502, den 8-bitars processor som användes i bland annat Apple II-familjen och Ataris persondatorer, samt i modifierad form i Nintendos spelkonsol NES. CPU-prestandan är alltså likartad. Trots att 6502 är en 8 bitars arkitektur är den jämförelsevis snabb — ungefär dubbelt så snabb per klockcykel som den 16-bitars 8088-processorn som sitter i en IBM PC. En PC med en 4,77MHz 8088 är alltså ofta bara ungefär dubbelt så snabb som en C64 med en 1MHz 6510.
C64 hade 64Kbyte primärminne. Detta var en stor kapacitet för en persondator vid tiden; IBM PC, som kommit ut året innan, hade i grundutförande 16Kbyte minne för nästan tredubbla priset, eller 64Kbyte i en utökad variant. ZX Spectrum, en annan populär samtida persondator, kunde fås med antingen 16K eller 48K minne. Förutom RAM har Commodore 64 också 20Kbyte ROM för operativsystem, BASIC-tolk och typsnitt. Eftersom 6502-processorn bara kan adressera 64Kbyte minne måste man alltså växla ut ROMmet (och även I/O:n) för att komma åt allt RAM.
1 & 2: Joystick-portar
3: Anslutning för nätdel
4: Expansionsport (ROM-kassetter, RAM-expansion, med mera)
5: RF-utgång för TV
6: A/V-utgång för monitor
7: IEC-serieport (diskettstation, skrivare, med mera)
8: Kassettbandspelarport
9: User port (fritt programmerbart gränssnitt)
Commodore 64 är särskild känd för sin avancerade ljudkrets, som var långt före allting annat som fanns tillgängligt på persondator- och TV-spelsplattformar vid tiden. Apple II har t.ex. en flip-flop kopplad till en högtalare, som kan fås att klicka. Toner skapas genom vältajmad programkod som klickar med rätt frekvens. ZX Spectrum har en snarlik lösning. PC har en tongenerator som kan spela en fyrkantsvåg vid valfri frekvens. Ingen av dem har någon kontroll över volym, något stöd för flera toner samtidigt, eller olika klangfärger. Atari 2600 har två tongeneratorer men registren som anger tonhöjden är bara 5 bitar, vilket gör musik omöjlig. Sega Master System, som kom ut tre år efter Commodore 64, har tre tongenratorer med 10-bitars tonhöjdsregister.
Commodore 64:s ljudchip 6581, eller SID — Sound Interface Device — har tre oberoende tongeneratorer, var och en med ett 16-bitars register för tonhöjd, fyra olika vågformer (puls, triangel, sågtand, brus) för olika klangfärger, ADSR-envelope för svällning och avklingning av volymen, variabel pulsbredd, plus oscillatorsynkronisering och ringmodulering parvis mellan tongeneratorerna. Därtill har chippet ett gemensamt analogt multimodefilter (lågpass, högpass, bandpass och notch) med variabel cutoff och resonans.
Det avancerade ljudchippet gav stor frihet för spelmakare att vara kreativa med musikskapandet i sina spel, och ett antal musiker gjorde sig kända för sin C64-musik. Som exempel på deras alster kan nämnas Last Ninja av Ben Daglish, Nemesis the Warlock av Rob Hubbard, och Parallax av Martin Galway.
I likhet med många andra persondatorer från 1970- och 80-talet startar Commodore 64 automatiskt en inbyggd tolk för programmeringsspråket BASIC när strömmen slås på. Man möts direkt av en READY-prompt och kan skriva in program eller kommandon.
BASIC-dialekten är en minimalistisk version av Microsoft BASIC, med många begränsningar: variabelnamn är max två tecken, IF kan inte följas av ELSE, det finns i likhet med många BASIC-varianter ingen form av lokala variabler, och inga labels (istället måste varje rad i programmet inledas med ett radnummer, som sedan hoppas till med GOTO). Den är också väldigt långsam, och har inget som helst stöd för vare sig grafik eller ljud, trots att datorn har goda möjligheter för båda. BASIC-versionen heter Commodore BASIC v2, och är en variant av Microsoft BASIC. Samma version användes tidigare av Commodore på tidiga PET-modeller, men man hade sedan gått vidare till en mer utökad version, Commodore BASIC v4. På C64 gick man tillbaka till v2 igen, av oklar anledning men troligtvis på grund av tidsbristen under utvecklingen av datorn, som gick extremt fort — i princip december 1981, beslutet att utveckla datorn fattat i slutet av november och de första demoexemplaren redo för Consumer Electronics Show-mässan första helgen i januari.
Den har dock stöd för att öppna och operera på många olika enheter som filer: filer på kassett eller diskett, tangentbordet, skärmen, skrivare, modem, osv. Tack vare ett generaliserat kommandosystem inbyggt i ROM fungerar detta stöd för externa enheter som inte fanns när C64 introducerades, som t.ex. diskettstationer.
En fördel med Commodore 64:s BASIC-tolk är att den har en ganska bra editor. Datorn har piltangenter som kan användas för att flytta omkring markören på skärmen, och det går bra att t.ex. flytta upp markören till en tidigare rad, redigera denna och trycka Enter igen för att skriva in den som en ny rad. Det går att sudda och skjuta in tecken. Det går också att skriva specialtecken inuti strängar, som t.ex. markörförflyttning, tömning av skärmen, eller ändring av textfärg (som fås med Ctrl + siffertangenterna), och på så vis använda dessa enkelt i program.
Datalagring kunde ske på två huvudsakliga sätt: kassettband och disketter. Datorn levererades med en särskild kassettbandspelare som hette “Datassette”, som kopplades in i en särskild kontakt bakpå datorn. Det var inte möjligt att använda en vanlig kassettbandspelare, även om banden var helt vanliga musikkassetter. Lagringen sker i form av korta och långa pulser som representerar 0 och 1, och hastigheten är ungefär 800 bitar per sekund. BASIC lagrar dock filer två gånger efter varann på kassetten för redundans, så resultatet är en densitet omkring 400 bitar (50 bytes) per sekund, dvs omkring 130Kbyte per sida av en 90-minuterskassett. Detta kunde förbättras avsevärt genom användandet av ett turboprogram, som laddades in först och ersatte datorns inbyggda rutiner för att kommunicera med kassettbandspelaren. Turboprogrammet använde ett mer effektivt lagringsformat på kassetten med fler bittar per sekund och utan den redundanta kopian av filen.
För att ladda ett program från kassett i BASIC skriver man helt enkelt LOAD
och trycker Enter. Man blir då ombedd att trycka på Play på bandspelaren. När man gör det blir skärmen blank medans datorn letar efter en fil på kassetten. När den har hittat en fil stannar den bandet, slår på skärmen igen, och visar ett meddelande med filnamnet. Tryck på Commodore-tangenten för att ladda programmet, eller RUN/STOP för att avbryta. Räkneverket på bandspelaren är användbart för att anteckna var på kassetterna man har sparat olika filer.
Den vanligaste diskettstationen som fanns att köpa till Commodore 64 var modell 1541. Till en början kostade den 399 USD, alltså omkring två tredjedelar så mycket som själva datorn, och den är också nästan lika stor som datorn. 1541 läser och skriver enkelsidiga 5,25-tumsdisketter med en kapacitet om 170Kbyte. Formatet på disken använder inte FM-kodning, utan en Commodore-specifik GCR-kodning, och disketterna är därför inte läsbara i andra datortillverkares diskettstationer. Det kom senare också ett par ytterligare modeller av diskettstationer till Commodore 128, som var bakåtkompatibla med Commodore 64.
Att ladda ett program från diskett en aning mer omständigt än att ladda från kassett: du måste dels ange enhetsnumret för diskettstationen (vanligtvis enhet nummer 8), och dels namnet på filen du vill ladda; exempelvis LOAD"MITTPROGRAM",8
. Det går också att ladda kataloglistningen från disketten med filnamnet “$”: LOAD"$",8
. Listningen kan sedan visas med kommandot LIST
. Kataloglistningen laddas alltså som om den vore ett BASIC-program, och det är således inte möjligt att lista innehållet på en diskett utan att skriva över ett eventuellt program man redan har i minnet.
Diskettstationen ansluts till datorn via den så kallade IEC-bussen, en seriell buss till vilken olika typer av externa enheter kunde anslutas, även flera samtidigt i kedja efter varandra. IEC-bussen pratar ett protokoll på ganska hög nivå, med olika typer av standardtransaktioner och adressering av enskilda enheter på bussen, lite som en äldre motsvarighet till USB. Bussen är dock inte särskilt snabb, vilket gör att diskettåtkomst på Commodore 64, även om det är snabbare än kassett, är väldigt långsamt.