Guide: Sådan genskaber du Commodore 64 på din pc

Guide: Sådan genskaber du Commodore 64 på din pc

Share

Retrobølgen er over os, og vi ser nærmere på den legendariske computer fra 80’erne, og hvordan du emulerer den

At skrive om legendariske Commodore 64 (også kendt som brødkassen) er ikke let. Vi taler om en computer, som blev introduceret i 1982 og solgte 17 mio. eksemplarer frem til 1994. Jeg ved ikke hvor mange, der blev solgt i Danmark, men vi taler ikke om få eksemplarer. På mange måder er Commodore 64 computeren som fik middelklassen ind i informationsalderen, ligesom Ford Model T gav bilisme til middelklassen (Ford Model T blev produceret i omkring 15 mio. eksemplarer).

Nærværende magasin udviklede sig fra at være et tillæg til Ny Elektronik til at være et selvstændigt magasin. Derfor har Alt om DATA aldrig anmeldt den nye computer fra Commodore, men Ny Elektronik gjorde det i nr. 4/1983 (se testen her) Commodore 64 er min første computer – den store julegave i 1983. Efter et par måneder med datalære i ungdomsskolen (3 timer om ugen), havde jeg vist kun ét ønske det år.

Hardware og KERNAL

En Commodore 64 har et kabinet med motherboard og tastatur. I daglig tale bliver den omtalt som brødkassen grundet kabinettets form.

Cpu’en, som er en grundkomponent i enhver computer, er en 6510 fra MOS Technologies. 6510 er en videreudvikling af 6502 (ekstra I/O-port). Vi har tidligere i år bragt en introduktion til 6502. Som navnet antyder, har en Commodore 64 hele 64 kB ram. Men da 6510 kun kan adressere 64 kB, bruges en del af adresserummet til styresystemet og BASIC. For at få adgang til mere ram, kan en programmør koble BASIC fra.

Eftersom en Commodore 64 er koblet til et tv-apparat, er der forskel på europæiske og amerikanske modeller. I USA benytter man tv-standarden PAL, mens vi i Europa benytter NTSC. Opdateringsfrekvensen er forskellig, hvilket betyder, at den interne clockfrekvens skal være forskellig. I Europa har en Commo-dore 64 en clockfrevens på 1,023 MHz – lidt højere end i USA.

Computerens styresystem går under navnet KERNAL (sandsynligvis en slåfejl da kernel er typiske udtryk i datalogien). KERNAL er dels en bootloader og har dels ansvaret for at åbne, læse og skrive filer på disketter og bånd. Det vil sige, KERNAL er en samling af små funktioner/systemkald/drivere, som gør hardware anvendelig for programmørerne. Endvidere finder du en BASIC-fortolker i rom.

Det, som gør Commodore 64 til noget særligt, er lyd og grafik. Grafikchippen VIC-II kan vise både tekst og højopløselig grafik (320 x 200 var høj opløsning i begyndelsen af 1980erne). Endvidere er der mulighed for op til 8 sprites. En sprite er en lille figur, som programmøreren frit kan flytte rundt på skærmen. Da flytning sker meget hurtigt, giver det en god effekt i spil.Figur 1

Figur 1: I en Sprite-editor kan du lave små figurer til dine spil.

Lyden genereres af chippen SID. Med tre samtidige toner var Commodore 64 langt foran andre computere i 1980’erne. Lydbilledet har altid været en stor del af oplevelsen i spil på en Commodore 64.
Langt de fleste ejere begyndte med en datasette – en specialiseret kasettebåndoptager. Det specielle er, at datasette-porten ikke er en lydindgang, men er beregnet til data. Mange ejere vil huske, at dataoverførslen var følsom overfor tonehovedets placering. Det var ikke ualmindeligt, at tonehovedet skulle justeres med mellemrum. Disketter med en kapacitet på 170 kB er også en mulighed ved at tilslutte diskettestationen 1571.

Se også:  Commodore 64 er tilbage!

Joysticks er en meget almindelig ydre enhed, og computeren har to joystick-porte. De billige joystick fra Commodore gik hurtigt i stykker, men heldigvis var der mange producenter. Udvidelser i rom er også en mulighed gennem cartridge-porten. Personligt har jeg aldrig ejet en rom-udvidelse, og jeg kender heller ikke mange som gjorde.

VICE – emulatoren

Godt er 17 mio. solgte eksemplarer mange, men det betyder jo ikke, at vi alle har adgang til en Commodore 64. Heldigvis er der råd for det. Der findes flere emulatorer af Commodores computer, men VICE (Versatile Commodore Emulator) er let at bruge og giver en præcis emulering. Som navnet antyder, er VICE alsidig (versatile). Det betyder, at den kan emulere en lang række af Commodores 8-bit computere.

For år siden var det besværligt at bruge VICE til at emulere Commodore 64, idet BASIC og KERNAL ROMs ikke fulgte med. Du kunne kun bruge VICE, hvis du havde en ROM liggende. I dag følger alle ROMs med, så du kan nøjes en enkelt installation.

Bruger du MacOS, har du to muligheder. For home brew-brugere, kan du let installere VICE med kommandoen brew install vice. Den anden mulighed er at downloade en DMG-fil og bruge den til at installere VICE med. DMG-filen finder du på VICEs website. Windows-brugere kan også finde en installer samme sted.

Jeg er home brew-bruger, så jeg bruger kommandoen x64 -sound -keymap 2 -symkeymap sdl_pos_da.vkm til at starte min emulator op. Ved at bruge option -symkeymap sdl_pos_da.vkm vælger jeg et tastaturlayout, som passer med en Mac med et dansk tastatur. Option -sound gør, at det er muligt at få lyden med.

Alternativt kan du trykke på F12, mens emulatoren kører. Du får derved adgang til alle settings. Du kan f.eks. definere, hvilke taster, som du ønsker at bruge som alternativ til et joystick.

Hvis du downloader spil eller applikationer fra internettet, kommer de i form af et disk image (.d64) eller tape image (.t64). VICE understøtter begge formater. Når du starter emulatoren op, kan du tilføje option -8 (disk) eller -1 (tape) efterfulgt af filnavnet. På den måde har din emulator adgang til hhv. disketten eller båndet.

Figur 2
VICE har et hav af opsætningsmuligheder. Især omkring opsætning af joystick er der rige muligheder. Hvis du skal have størst muligt udbytte af VICE, er det en god idé at investere i et joystick.

Figur 2: Når du starter din emulator op, ligner det præcist en Commodore 64.

Primitiv BASIC

Som så mange andre af 1980’ernes computere, booter en Commodore 64 op i et styresystem, hvor programmeringssproget BASIC er en integreret del. Styresystemet giver dig en række enkle kommandoer til at indlæse (LOAD), gemme (SAVE) og udføre (RUN) programmer.

Se også:  Er 640 kB nok til alle?

Der er tale om en primitiv BASIC. Sproget indeholder stort set ikke andet end de mest basale nøgleord og faciliteter. Sammenlignet med Sinclair BASIC (se artikel om ZX Spectrum), mangler Commodore BASIC faciliteter til grafik og lyd. Der er heller ingen faciliteter til understøttelse af struktureret programmering (ingen rutiner/procedurer eller funktioner). Programmer til Commodore 64 ender ofte med at være en gang spaghetti-kode med al for meget brug af GOTO og GOSUB. Selv trivielle programmer kan være svære at læse.

I film fra 1980’erne skrev computere ofte ét tegn ad gangen, og det syntes jeg så smart ud. Programmet i infoboksen “Teletype” har jeg genskabt et af de tricks, jeg brugte i mine programmer dengang. Løkken i linjerne 40 og 50 tager tilpas lang tid til, at der er en lille pause mellem hvert tegn.

Figur 3 Langt det meste kode en almindelig ejer af en Commodore 64 skriver, er i BASIC. Men det er muligt at skrive i maskinkode. Endvidere indeholder KERNAL en række rutiner, som kan kaldes direkte. Til det formål har du kommandoen SYS. Du angiver blot adressen, hvor maskinkoden er placeret. For eksempel vil SYS 64738 udføre en reset af din computer.

Figur 3: Et lille program der holder pause mellem hvert tegn.

Som allerede antydet, har en Commodore 64 ganske god lyd og grafik. Uden særlige BASIC-kommandoer til lyd og grafik, er der ikke meget andet end at gå helt tæt på hardwaren. Kommandoen POKE kan skrive en given værdi til en adresse. For eksempel kan du skifte rammen til hvid med kommandoen POKE 53280,1 dvs. skrive værdien 1 (for hvid) til adressen 53280. Eller du kan ændre på, hvor hurtig cursoren blinker med kommandoen POKE 56341,X (X er et tal mellem 0 og 255). Lyd og grafik har også adresser, og et memory map er et must for enhver C64-programmør. Selv skærmen i text mode har et område i hukommelsen (begyndende på adresse 1024). I infoboks “Skriv på skærmen” ovenfor finder du et lille program, som skriver lighedstegn tilfældige steder på skærmen.

I 1983 udviklede den unge englænder David Simons en udvidelse af den oprindelige BASIC. Produktet blev udgivet som en cartridge af Commodore under navnet Simons’ BASIC. Udover at give bedre mulighed for struktureret programmering (procedurer, ELSE i forgreninger) er det især omkring lyd og grafik, Simons’ BASIC har sin styrke. I min Commodore-periode, husker jeg ikke, at mange brugte Simons’ BASIC.

Det er værd at nævne, at mange andre programmeringssprog fandt vej til Commodore 64. COMAL-80 var i Danmark det store sprog i folkeskolen og gymnasiet. Naturligvis var COMAL-80 også på Commodore, men da Commodore 64 aldrig blev udbredt i danske skoler, tvivler jeg på, hvor stor en succes produktet var. Pascal, Forth og sågar COBOL kunne bruges. Selv lærte jeg C på min Commodore 64 en sommerferie i 1980’erne. Få år senere skrev jeg i C på en Cray supercomputer.

Del denne