Kategorier

Testamentet: Commodore 64

I Testamentet havde vi en opgave, som omhandlede en Commodore 64. De fleste gæster opdagede ret hurtigt denne rekvisit, da den stod meget prominent i rummet sammen med et gammel B&O-fjernsyn med fine paneler af træ. Flere udtrykte stor nostalgisk begejstring, og håbede at den skulle bruges aktivt undervejs. Det lykkedes for et mindretal at få tændt for computeren og fjernsynet før de faktisk fandt de rekvisitter som de skulle bruge. Et enkelt hold eller to fik også hygget sig med at lave et simpelt program som fylder skærmen med tekst:

10 PRINT "HELLO WORLD ";
20 GOTO 10
Første on-site afprøvning af Commodore 64-opgaven. Bemærk TV’et er af en anden model, da vi først fik fat i det helt rigtige med paneler af træ på en senere dato.

Undervejs i rummet stødte deltagerne på en bog med titlen “Codes & Secret Writing”, hvori der er indsat et bogmærke på en side med en morsekode-oversigt. Denne bog havde jeg tidligere fået i gave, og den egende sig perfekt til at stå på bogreolen i Testamentet sammen med en række andre boger, som kun var med til at skabe stemning. Siden dette var den eneste bog med et bogmærke, var det nok til at trække opmærksomheden tilstrækkeligt, således at deltagerne ikke spildte for meget tid på de andre, uinteressante bøger i rummet. Siden bogen ikke kunne klare meget hårdhændet håndtering, gik den ret hurtigt i stykker. Vi fik den repareret løbend e med mere og mere tape, men til sidst måtte vi finde en erstatning. En hurtig søgning på nettet viste sig, at man kunne få netop denne bog brugt på Amazon for £0.01 + fragt – så vi købte 10. En af de andre bøger var den sædvanlige, udhulet bog med nøglelås – denne gang modellen “The New English Dictionary” fra Harald Nyborg, som også passende fint ind i stilen. Nøglen til denne bog lå forresten inden i uret, som første skulle åbnes. Inden i bogen lå en 5″ diskette, som for de fleste var et glædeligt gensyn med barndommen, og for resten et ganske uigenkendeligt objekt.

Nøgen til bogen med disketten gemte sig i dette vægur. Det gik ikke helt rigtigt, men hvis holdet fandt på at trække det op, kunne det finde på at slå timeslag undervejs, hvilket mange troede var et vigtigt hint.

Efter at have indsat disketten korrekt og indlæst samt startet programmet, blev deltagerne belønnet med en sort skærm med “KeyHunt” i hvid grafik. Altså, hvis de da ellers havde husket at tænde for strømmet på afbryderen ved døren. Efter en nedtælling på 5 sekunder, hvor alle fik lov til at tysse på hinanden, afspilledes en stump morsekode. Det er de færreste der kan nå at forstå morsekode i første forsøg, så efter afspilningen var der mulighed for at høre stumpen igen. Sammenholdt med morsetabellen kunne der afkodes C-I-G-A-R, som var koden videre til en anden opgave. Efter at have lyttet 2-3 gange, og eventuelt have skrevet morselydene ned, var det de færreste der ikke kunne komme frem til denne kode. De fleste hold kunne dog ikke finde ud af at være helt stille mens morselydene blev afspillet, så personen der var udvalgt til at nedskrive måtte tit tysse på resten af holdet.

Programmet

For at få Commodoren til at gøre disse ting, skulle den kodes. Der er umiddelbart to måder at kode en Commodore på: Basic eller assembler. Siden en Commodore 64 starter direkte i en Basic-fortolker, var dette det letteste at benytte, og derved skulle der ikke rodes med compilere og andre ting, som ellers kunne være sjove.

Disketten blev fundet i et pengeskab, udformet som en bog.

Kildekoden blev skrevet på en emulator, og efter finpudsning skrevet direkte ind på Commodore og gemt på 4 disketter. For at undgå at deltagerne ville vende disketten forkert, blev programmet gemt på begge sider. Vi fik aldrig brug for andet end den første diskette, da de kan klare en del hårdhændet behandling, og aldrig tabte programmet. Kildekoden er gengivet her:

5 print chr$(147)
10 poke 53280,0:poke 53281,0:poke 646,1
20 print "keyhunt1"
21 print "keyhunt2"
22 print "keyhunt3"
23 print "keyhunt4"
24 print "keyhunt5"
25 print "keyhunt6"
30 print
100 print "prepare for secret code delivery"
110 for i=5 to 0 step -1
120 print i
130 for t=0 to 1000:next
140 print chr$(145);
150 next
270 print "sounding secret code"
280 gosub 400
290 print "secret code delivered"
300 print "press any key to repeat secret code"
310 getk$:ifk$="" then 310
320 goto 5
400 s=54272
410 for l=s to s+24:poke l,0:next
420 poke s+5,0*16+0:poke s+6,15*16+0
430 poke s+24,15
500 restore
505 read a
510 if a=-1 then return
520 on a gosub 600,700,800
530 for t = 1 to 250: next
540 goto 505
600 for t=1 to 750:next
610 return
700 poke s+1,25:poke s,177
710 poke s+4,17
720 for t=1 to 750:next
730 poke s+4,16
740 return
800 poke s+1,25:poke s,177
810 poke s+4,17
820 for t=1 to 250:next
830 poke s+4,16
840 return
9000 data 2,3,2,3,1,3,3,1,2,2,3,1,3,2,1,3,2,3
9999 data -1

Bemærk linje 20 til 25. Disse linjer blev erstattet under indtastningen på Commodoren med de specielle tegn, som udgjorde “KeyHunt”-teksten i toppen. Linje 9000 indeholder styringen af hvilken morsekode der skulle afspilles, hvor 2 og 3 er hhv. lang og kort lydgivning, og 1 er pause mellem bogstaver. Der er mindst ét hold, som lavede en “LIST” efter at have indlæst programmet, og aflurede morsekoden ved at læse linje 9000 i stedet for at afspille programmet og lytte sig frem.

Siden tastaturet havde en buffer, og vi genspiller koden når man trykker en tast, så ville programmet genspille koden én gang for hver gang der blev trykket på en tast mens programmet kørte. Nogle hold trykkede en masse gange på tastaturet, hvilket betød at morsekoden blev afspillet hvert 5. sekund de næste 10 minutter. Nogle ignorerede det, andre tog strømmet på afbryderen for at få den til at stoppe.

Undervejs måtte vi udskifte diskettestationen, da den første blev slidt helt ned, og gav for mange problemer med at læse disketterne.

Hjælpemidler

For at sikre at holdet kunne komme rigtigt igennem opgaven, uden at bruge for meget tid, var der udarbejdet et hjælpeark. Normalt er hjælpeark ikke noget jeg synes godt om, da det bryder immersion, men i dette tilfælde var det nødvendigt da en Commodore 64 ikke er specielt intuitiv.  Se hjælpearket her – den ene side er dansk, den anden engelsk.

Bemærk hvorledes instruktionen for hvad der skal taste er uspecificeret meget tydeligt, netop da alle tegn er nødvendige. Hvis et hold fik trykket forkert, fandt de hurtigt ud af enten at rette det indtastede, eller simpelthen at slukke og tænde for det hele på afbryderen ved døren. Det største problem var hvis tasten “SHIFT LOCK” var blevet trykket ned. Denne svarer lidt til CapsLock i dag, og ændrede på alle tastede tegn. I dette tilfælde skal “SHIFT LOCK” trykkes igen – også selv om computeren genstartes, da det er en mekanisk nedtrykket tast. Dette løste vi ved at give et hint fra gamemaster, men det var bedre hvis vi havde fået det med i instruktionen.

Fjernsynet kunne også give lidt problemer, da det var muligt at skifte kanal og skrue ned for lyden. Dette afhjalp vi ved at sørge for at alle 6 kanaler på fjernsynet var indstillet til Commodore 64’eren, og ved at sætte en dymolabel på fjernsynet med teksten “Do not touch the buttons”. Alle ledninger var også gemt sammen med transformatoren nede i den ene skuffe i bordet. Skuffen var sat fast med skruer, så den ikke kunne åbnes, og bordet var sat fast i væggen.

Hvis det skulle gå helt galt, havde gamemaster en fast hjælpetekst med morsekoden, som kunne vises på skærmen. Denne brugte vi også, hvis holdet havde lyttet til morsekoden 4-5 gange uden at få fat i den rigtige afkodning.

Denne opgave fik vi meget god feedback på, mest på grund af nostalgien, og så var det dejligt at se at min egen Commodore fik et nyt liv på denne måde. Dog skulle den lige have lidt indmad skiftet, da tv-udgangen ikke virkede, og diskettestationen måtte også erstattes, da læsehovedet heller ikke virkede længere.