Feeds:
Innlegg
Kommentarar

Archive for april 2023

For litt sidan kom eg over det fyrste eg nokon gong skreiv offentleg. Ein kunne kanskje tenkje seg at det handla om språk, som er jobben min no. Men nei, dette var eit par–tre år før eg oppdaga at eg var interessert i språk, så debuten min var eit dataprogram. På den tida vart nemleg program på heimedatamaskiner utveksla anten som lydopptak av digitale data på analog kassett, eller så kunne ein sende kassetten sin til eit tidsskrift som lasta inn programmet, tok utskrift og prenta programkoden. Deretter var det berre for lesarane å kjøpe bladet og taste inn programmet.

Forhistoria

ZX Spectrum

ZX Spectrum. Foto: Bill Bertram, Wikimedia Commons, lisens CC BY-SA 2.5.

Men før eg tek føre meg sjølve programmet, så vil eg fortelje litt om forhistoria. Tidleg på 1980-talet, truleg i 1983, vart nemleg lisjebror Gard og eg kjende med fenomenet heimedatamaskiner heime hjå ein venn. Vi hadde ikkje datamaskin sjølve, men etter nærare undersøkingar fekk vi etter kvart lyst på ein ZX Spectrum frå Sinclair Research Ltd. Og etter mykje mas klarte vi å overtale foreldra våre til å kjøpe ein ZX Spectrum med heile 48 kB RAM til oss. Dette var mest truleg vinteren 1983/1984 eller våren 1984, rundt to år etter at maskina kom på marknaden i 1982. No var eg 13–14 år gammal, og Gard var 10.

Denne maskina var truleg den mest handfaste årsaka til at Gard seinare vart programmerar. Og eventyrspelet «The Hobbit» frå Melbourne House, der vi tasta inn kommandoane på språket «Inglish», var årsaka til at vi las boka med same namn. Boka kom saman med spelet. Fantastisk, eigentleg, at eit slikt spel lét seg lage med berre 48 kB, medrekna skjermminne og systemvariablar. Og allereie før Gard programmerte i BASIC på ZX Spectrum, lærte han seg programmeringsspråket Pascal frå ei bok (rettare sagt ein lånt perm), og skreiv Pascal-program på papir utan å ha ei høveleg datamaskin å prøve dei ut på. Då hadde han enno ikkje fylt 10 år. Han måtte jo verte datamann, han.

Clive Sinclair

Clive Sinclair (1940–2021). Foto: Adrian Pingstone 1992, Wikimedia Commons, lisens «public domain».

På eit seinare tidspunkt oppgraderte vi Spectrumen vår til ZX Spectrum+, dvs. at vi flytta hovudkortet over til det nye tastaturet. Og Sir Clive (for alle var stolte over at Clive Sinclair, far til ZX Spectrum og meir, hadde vorte Sir) var ein av dei store heltane både hjå oss og hjå alle andre som brukte Sinclair-maskiner. Vi drøymde om Microdrive, men brukte kassett i alle år, mot slutten med ein kassettspelar der lyden kom ut parallelt gjennom høgtalaren og ikkje kunne dempast med anna enn bøker som vi la oppå.

Vi tasta inn program frå tidsskrift, vi laga våre eigne program, og på nyåret i åttandeklassa (svarer i dag til niande) fekk eg eit program på prent i bladet Hjemmedata. Det var ein menuett av Beethoven.

Menuettprogrammet

Programkode

Og her er det programmet. Eg fann att Hjemmedata nr. 1/1985 i skanna format hjå archive.org, og programmet mitt, datert 19. juli 1984, står prenta på s. 52–53. Eg kan sjølvsagt ikkje hugse no at eg skreiv line 9000 og oppover, dette er kode som berre lagrar programmet på kassett og deretter sjekkar at opptaket vart bra nok. Men kanskje eg stappa inn dette for å kunne lagre tryggingskopiar utan å taste «SAVE "MENUET"» og «VERIFY "MENUET"» kvar einaste gong, og så gløymde eg å fjerne det før innsending. Sjølve notane henta eg frå eit hefte med fiolinnotar som eg hadde overteke etter bestefaren min.

Klikk på biletet til høgre for å sjå heile programkoden. Ei vitseteikning er fjerna i mi attgjeving.

Utsnitt av programkode i tidsskrift

Utsnitt av publiseringa i Hjemmedata 1/1985.

Som god ZX Spectrum-veteran har eg sjølvsagt ein emulator på Macen min, han heiter zxsp. Og på videoen under ser vi korleis det er når ein lastar inn programmet frå lydkassett (i dette tilfellet ein virtuell lydkassett) og kikar gjennom programkoden – sjølve menuetten kjem lenger nede i bloggposten. Overføringsfarten mdllom kassett og datamaskin var 1500 bits pr. sekund, men somme tunge program på marknaden hadde sine eigne innlastarar slik at det gjekk dobbelt så fort. Til samanlikning køyrde konkurrenten Commodore 64 berre 300 bits pr. sekund.

Opphavleg tenkte eg å berre slengje ut ein kommentar à la «der ja, min fyrste publikasjon» på eit anna sosialt medium då eg fann att bladet på nettet, men så vart eg oppmoda om å blogge om det. Og bloggar ein, så må ein taste inn det gamle programmet på nytt slik at ein får gjort skjermopptak, for eg har jo ikkje den originalt lagra fila, altså lydopptaket, no så lenge etterpå.

Då eg tasta inn programmet no, slo det meg kor effektivt det går å skrive kommandoane på ein Spectrum. Alle kommandoar ligg nemleg fiks ferdige på tastaturet, og dette går mykje kjappare enn å taste dei inn bokstav for bokstav. Ja, i alle fall dersom ein faktisk hugsar kvar på tastaturet ein finn det eine og det andre. Denne gongen gjekk det med mykje tid til å setje seg inn i dette igjen.

Då eg byrja med Mac på 90-talet, byrja eg fort å lage tastaturoppsett for å taste spesialteikn, etter kvart også oppsettet Utvida norsk for dagens operativsystem. I Spectrum-programmet frå 1984 ser eg at allereie då dreiv eg og laga spesialteikn. På line 2000 og 2100 definerer eg ein norsk ø, som jo ikkje fanst i teiknsettet til den britiskproduserte ZX Spectrum.

Måten som ZX Spectrum tillét slike eigendefinerte teikn på, var temmeleg intuitiv. Kvart skriftteikn var bygt opp av eit rutenett på 8 gonger 8 punkt. Her er ø-en min teikna inn i eit slikt rutenett:

Bokstaven ø utforma i eit rutenett på 8 gonger 8 ruter.

Kvar line utgjorde då ein byte (8 bits), og kvar bit var anten 0 (kvit celle i denne illustrasjonen) eller 1 (svart). Definisjonen av ø-teiknet mitt såg dermed slik ut i det binære talsystemet:

00000000
00000000
00011100
00100110
00101010
00110010
00011100
00000000

Dei til saman 8 bytane (altså 8 linene i teiknet) vart skrivne til ein spesiell del av minnet, og eg stappa min ø inn som ei spesialutgåve av bokstaven o. Denne kunne tastast ved å trykkje på o-tasten medan ein stod i såkalla grafisk modus (caps shift + 9).

For å skrive denne koden til den aktuelle delen av minnet måtte eittala og nullane fyrst omsetjast til det desimale talsystemet. Omset vi desse åtte linene til det desimale talsystemet, vert det «0,0,28,38,42,50,28,0». Og dette er tala vi ser i line 2100. Det er kanskje ikkje naudsynt å nemne det, men omrekninga vart kjapt og enkelt utført med papir og blyant, for det fanst ikkje kalkulatorar eller vanleg programvare på den tida som rekna om mellom talsystema.

Når så dette vart smått nok på skjermen, og endåtil på ein biletrøyrskjerm (desse gav eit litt uskarpt og mjukare bilete samanlikna med dagens skjermar), vart det ein heilt grei norsk ø.

Skjermdump med ordet «Eggesbønes»

Skjermbiletet over er henta frå emulatoren på ein moderne Mac. ZX Spectrum viste skjermbiletet sitt på vanlege fjernsynsapparat, altså med biletrøyr (flatskjermar og høg oppløysning fanst ikkje), og fjernsynsapparatet var tilkopla med koakskabel. Signalet vart då sendt modulert via kabelen på UHF-kanal 36. På den tida fanst korkje HDMI eller SCART.

Menuetten

Då programmet kom på prent, var eg irritert over at bladet hadde skrive «Menuett» på norsk, ikkje «Menuet» på fransk som i noteheftet og i min programkode (og nei, eg kan ikkje fransk). Den observante lesar vil elles sjå at min eigen tekst i programmet var på bokmål. Dette er ein del av det å vekse opp i eit samfunn der bokmål dominerer så kraftig at sjølv nynorskbrukarane i nynorskdistrikt vert skriftleg tospråklege. Elles er det ein bug i programkoden: Line 145 opnar med «FOR n=1 TO 12». Dette skal vere «FOR n=1 TO 24», og det er retta i den nye inntastinga.

Og her i denne videoen er endeleg menuetten:

Clive Sinclair døydde i 2021, og Glenn Fleishman skreiv då på Twitter det som mange må ha tenkt: «Clive Sinclair died a few days ago. I only just found it. It is *absolutely baffling to me* that there has been almost no coverage. To people in the UK, this is akin to Steve Jobs dying, but Sinclair had worldwide importance.» Bakgrunnshistoria som eg skreiv tidlegare i denne bloggposten, er delvis henta frå noko eg mimra om på eit anna sosialt medium den gongen i 2021.

Og no tasta eg altså inn menuetten på nytt, nesten 39 år etter fyrste gong. I tillegg til emulatoren zxsp hadde eg glede av å kunne kike litt i manualen (html, pdf) og i ei oversikt over kvar kommandoane ligg på tastaturet.

Read Full Post »