Bloggen

Fatterns 486: En kveld i 1994, gjenskapt bit for bit

En fungerende 486 i nettleseren. Du kan ta av lokket, flytte en jumper, trekke ut en minnemodul, finne ut hvordan et utvidelseskort faktisk er konfigurert eller snu en ledning på kontaktene til frontpanelet. Deretter kan du bruke førti minutter på å finne ut hvorfor spillet nekter å starte. Dette er ikke en emulator som har fått tegnet et gammelt kabinett rundt seg for syns skyld. Hele poenget er maskinen, maskinvaren og alt det småplukket du måtte forstå for å få den til å gjøre som du ville.

Navnet

Fattern er Oslo-slang for pappa. Ganske østkant, i hvert fall der jeg vokste opp, og ikke nødvendigvis ordet man brukte foran læreren.

Maskinen var hans. Jeg rekvirerte den, som fortsatt er verbet jeg foretrekker, fordi tok antyder at han på et tidspunkt fikk den tilbake. Det gjorde han ikke. Den ble stående under skrivebordet mitt helt til den sluttet å være en datamaskin og gradvis gikk over til å bli deler.

Navnet er det samme på den engelske delen av nettstedet. En ting med to navn blir fort en ting ingen husker hva de skal kalle.

Hva den er

Det er en 486DX2-66 på et Socket 3-hovedkort, merket MB-486 REV 2.1, MADE IN TAIWAN og datert 19. november 1994. Baby AT, seks festepunkter, fem jumpere, to banker med fire minnesokler og tre utvidelsesspor med kort i.

Maskinen starter, kjører MS-DOS 5.0, forstår rundt førti kommandoer og leser faktisk sin egen CONFIG.SYS, i stedet for bare å vise en ferdig tekst som later som. Den kan også skrus fra hverandre. Lokket kan løftes av, og hovedkortet under er bygget opp komponent for komponent. Hver plassering kommer fra en rad i en tabell, ikke fra en ferdigtegnet illustrasjon.

På skrivebordet står en diskettboks med tjuefire merkede disketter og ti ubrukte, og i hylla ligger seksten manualer og ark. Det finnes multimeter, skrutrekker og en matriseskriver på LPT1 som faktisk skriver ut. Det finnes også en stoppeklokke som med unødvendig stor nøyaktighet forteller hvor liten del av kvelden du faktisk brukte på å spille.

Over pulten henger det en hylle til, med fire forseglede kartonger på. Den hylla er det nyeste i rommet, og den flyttet på hva rommet egentlig handler om. Jeg kommer tilbake til den.

Hvorfor kvelden var selve spillet

Dette er kanskje den vanskeligste delen å forklare for noen som kom til datamaskiner etter omtrent 2005. Å få et program til å kjøre var ofte en forhandling med maskinen.

Du hadde en begrenset mengde minne under én megabyte. DOS ville ha sitt, musdriveren ville ha sitt, diskbufferen ville ha sitt, og lydkortdriveren ville selvfølgelig også inn. Spillet krevde 570 kilobyte. Du hadde 501.

Ingen fortalte deg på noen spesielt nyttig måte hva du skulle gjøre med den opplysningen. Spillet sa bare at det trengte mer minne og avsluttet. Dermed åpnet du CONFIG.SYS i et tekstprogram, prøvde å forstå hva hver linje gjorde, vurderte hvilke drivere du kunne klare deg uten akkurat denne kvelden, og oppdaget etter hvert at DOS selv kunne flyttes opp over én megabyte dersom du ba om det på riktig måte. Så startet du maskinen på nytt og kjørte MEM /C for å se om du faktisk hadde vunnet noen kilobyte.

Det er denne delen jeg er opptatt av å bevare. Problemet skal ikke kunne løses ved å slette tilfeldige ting til spillet plutselig starter. De siste kilobytene du trenger kan være opptatt av selve operativsystemet, og da må du vite at DOS kan flyttes. Det var en ganske typisk lærepenge fra perioden: Maskinen fortalte deg sjelden løsningen, men den ga deg nok informasjon til at du kunne finne den.

Nå er det to programmer som spør, og de spør om forskjellige tall. Spillet vil ha 570. Installasjonsprogrammet til ClickSpace vil ha 512 kilobyte av de første 640, som er mer enn maskinen har rett ut av esken og mindre enn du sitter igjen med når du har kastet hver eneste driver for hånd. Det finnes altså en tilstand der skrivebordet lar seg installere mens spillet fortsatt nekter å starte. To programmer, to tall, samme lærepenge.

Det er også grunnen til at simulatoren kjører MS-DOS 5.0 og ikke 6.22. DOS 6 kom med MemMaker, som automatiserte mye av denne jobben. En nysgjerrig bruker kunne dermed ha funnet kommandoen og hoppet over akkurat den delen jeg ønsker at man skal forstå.

Regelen alt følger

En feil må kunne finnes fra innsiden av maskinen. Hver feil jeg legger inn må derfor også ha et verktøy, et symptom eller en måling som gjør det mulig å finne årsaken. Hvis det ikke finnes noen måte å resonnere seg fram til feilen på, er det ikke lenger en oppgave, bare noe simulatoren har bestemt seg for å nekte deg.

Lydkortet er for eksempel jumpret til IRQ 7, samme interrupt som skriverporten. Det var både reelt og ganske vanlig, og ofte gikk det helt fint fordi man sjelden skrev ut samtidig som man spilte. Problemet er at konflikten er vanskelig å se fra kommandolinja. To enheter på samme interrupt kan fort se ut som én enhet som bare er ødelagt.

Derfor finnes MSD i maskinen. Der kan du se interruptkartet, og kartet genereres fra den samme tabellen som bestemmer hvordan utvidelseskortene faktisk er konfigurert. Diagnoseverktøyet og maskinvaren kan dermed ikke ende opp med to forskjellige versjoner av virkeligheten.

Den samme regelen bestemmer hva innstillingene har lov til å gjøre. Det er åtte brytere der nå, noen for øynene og ørene og noen for hvor mye maskinen forteller deg, og over dem står én setning: En innstilling kan fjerne hjelp. Den kan aldri fjerne instrumentet. Hintknappen er hjelp. Interruptkartet er et instrument. Skrur du av et instrument, slutter feilen å være en gåte og blir en vegg.

Det finnes sytten feil, rangert etter hvor langt årsaken ligger fra symptomet, ikke etter hvor mye man må skrive for å løse dem. Den vanskeligste presenteres bare som «Den gjør ingenting». Vifta går og lampa i fronten lyser, men under hovedkortet står en avstandshylse på et sted hvor kortet ikke har skruehull. Den kortslutter en spenningslinje mot kabinettet.

For å finne feilen må du begynne med det du faktisk kan observere. Du kan kontrollere vifta, måle likespenning på strømtilkoblingene og deretter måle motstand med strømforsyningen koblet fra. Til slutt peker målingene mot at hovedkortet må ut. Først da ser du hva som faktisk er galt.

I kabinettet

De fem jumperne på hovedkortet kan flyttes. De styrer blant annet spenning, multiplikator, busshastighet og hvor mye cache hovedkortet skal tro sitter i soklene.

Prosessoren kan også byttes. Seks forskjellige passer. Du løfter hendelen, tar av kjøleribba og finner merkingen på keramikken under. Setter du en 3,3-volts prosessor på 5 volt, ødelegges den permanent. Det ligger en reserveprosessor i posen, men dette er den ene handlingen i simulatoren som faktisk ikke kan angres.

Minnemodulene kan trekkes ut enkeltvis, men de må monteres fire og fire. Prosessoren leser 32 bit om gangen, mens en 30-pinners SIMM leverer åtte bit. Tre moduler er derfor ikke tre firedeler av en fungerende minnebank. Banken finnes i praksis ikke, og maskinen svarer med tre korte pip.

Cache må også stemme med jumperinnstillingene. Kortet har åtte cachesokler, hvor fire er fylt, samtidig som jumperne tilbyr innstillinger for mer cache enn det faktisk sitter der. Forteller du hovedkortet at det finnes mer enn det gjør, stopper maskinen under oppstart. Forteller du at det finnes mindre, starter den og fungerer tilsynelatende normalt, bare tregere. Den siste varianten er naturligvis vanskeligere å oppdage.

Frontpanelet består av sju grupper med ledninger fordelt over seksten pinner. Polariteten spiller bare noen rolle for lysdiodene. En bryter fungerer begge veier, mens en LED montert baklengs ganske enkelt ikke lyser.

Ledningene på pulten er ti i tallet, og de går mellom kabinettet, strømmen, skjermen, tastaturet, musa, tegnebrettet, skriveren, modemet og telefonkontakten. Alle kan sitte i feil kontakt, eller ikke sitte i det hele tatt, og baksida av kabinettet er tegnet slik at du kan se etter.

Multimeteret har tre innstillinger, og alle gjør noe reelt. Måler du motstand på en krets som fortsatt står under spenning, får du verdier som ikke gir særlig mening. Simulatoren forklarer ikke automatisk hvorfor, fordi multimeteret heller ikke gjorde det. Informasjonen finnes i stedet på baksiden, sammen med kalibreringsmerket og datoen.

Dette følger en regel jeg bruker gjennom hele simulatoren: Gjenstanden bærer hintene, papiret bærer regelen. Hovedkortet viser hvor pinne 1 er. Manualen forteller at den røde lederen skal ligge over pinne 1. Ingen av dem trenger å fortelle begge deler. Oppgaven består nettopp i å finne informasjonen og forstå hvordan den henger sammen.

Manualene er på engelsk også på den norske delen av nettstedet, fordi en manual til et navnløst hovedkort produsert i Taiwan som regel var på engelsk i Norge også. Manualen til multi-I/O-kortet består stort sett av fjorten jumpertabeller og en henvisning til Table 7, som selvfølgelig ikke finnes i akkurat denne revisjonen. En annen manual har en liten merknad bakerst om at en norsk utgave ble diskutert, men aldri trykket.

Hylla, der en eske er en hendelse

Det står fire kartonger i hylla over pulten. Et skjermkort med blitter, et lydkort som har en CD-ROM-stasjon i samme eske, et 28,8-modem og ClickSpace 3.11 på åtte disketter.

Så lenge kartongen er forseglet, kommer ingenting i maskinen til det som ligger inni. Når du først har revet den opp, er den tom for godt. Det finnes ingen bekreftelsesdialog foran den knappen, for en maskin som spør om du mente det er en maskin som ikke tror på deg. Advarselen står ved siden av hånda, før hånda beveger seg.

Baksida av en kartong er ikke pynt. Den er kravlista, og hver eneste nektelse fra installasjonsprogrammet siterer den ordrett: 386 eller bedre, 4 MB anbefalt, VGA med 256 farger anbefalt, minst 20 MB ledig, mus anbefalt. Det er regelen om gjenstanden og papiret en gang til, der papiret er esken leseren nettopp åpnet.

Kortet i esken er forskjellen mellom en rask 486 og en maskin som oppfører seg annerledes. En 486 har ingen blitter, så prosessoren skriver hver eneste piksel på skjermen selv. Vision Master har en. Det var det ordet akselerator betydde på en kartong i 1994, og du merker det på det ene stedet du ville ha merket det den gangen: hvor lang tid et vindu bruker på å komme tilbake etter at du har dratt et annet over det.

ClickSpace 3.11

En installasjon som feiler og sier hvorfor er allerede en opplevelse, og det er den delen flest over førti har et forhold til.

Derfor kjører oppsettet i tegnmodus, ber om disketten den vil ha ved navn åtte ganger, og har seks nektelser du faktisk kan komme borti: for lite minne, ingen harddisk, full rotkatalog, feil diskett, en diskett som ikke er en ClickSpace-diskett i det hele tatt, og tom stasjon. Minnet er den som betyr noe, og linja under den navngir et instrument i stedet for et svar: MEM viser deg hva som er lastet, og hvor det ble av.

På forsida av esken står det ÉN PAKKE, TO SPRÅK, så oppsettet spør om språk på andre skjerm og snakker det språket fra da av, uansett hvilken side av nettstedet du leser. Svaret koster deg noe. Diskett 8 er den norske halvdelen: velger du Norsk blir det åtte bytter, velger du English blir det sju, og den siste disketten blir liggende i esken. Det er det eneste svaret på denne maskinen du kjenner i hendene.

Det du sitter igjen med er et skrivebord med filbehandler, tekstbehandler, tegneprogram, kabal og en terminal, og hvert av dem måler noe ingenting annet i maskinen måler.

Tegneprogrammet er det tydeligste. Skjermen har 256 farger og skriveren har én bit, så å skrive ut er en handel, og det som kommer ut er bildet ditt dithret ned til den ene biten. Filstørrelsen er heller ingen formel. En PCX er løpelengdekodet per skannlinje, så fila blir så stor som bildet er travelt, og statuslinja kjører den ekte koderen på det som faktisk er tegnet. Tomt lerret gir 1 344 byte. Et tett mønster gir 24 855. Tar du ut skjermminne, faller paletten til fire bit, gråtonene forsvinner, og den samme tegninga kommer ut på 12 568. Det er det ene stedet i rommet der det å fjerne noe gjør et tall bedre.

Kabalen er Klondike med tre kort om gangen, og den holder 52 kort som punktgrafikk, altså 13 400 byte på sin egen rad i minnelista. Det er programmet du lukker når du trenger plassen tilbake, og det var sant om den før den lot seg spille.

Terminalen snakker med modemet før den snakker med noe annet, og det er den halvparten som kan være satt opp feil. Du skriver AT og får OK tilbake, eller du får ingenting tilbake, og hvilken av de flere mulige grunnene det er, er nettopp det terminalen er til for.

Tre spill, og det er de ekte spillene

Wolfenstein 3D, Commander Keen 1 og Doom kjører på maskinen. Ikke en film av dem. En ekte DOS-emulator inne i rommet, som henter pakka fra disketten, med kabinettet fortsatt tegnet rundt.

Størrelsene er hele fortellingen, og nå står de ved siden av hverandre på samme hylle. 364 kilobyte, 1,3 megabyte og 5,5 megabyte. Desember 1990, desember 1992 og februar 1995, på det samme bordet. Keen gikk på maskinen du allerede hadde. Wolfenstein fikk deg til å trimme CONFIG.SYS. Doom fikk ikke plass på en diskett i det hele tatt.

Derfor har Doom en installasjon, og den installasjonen er ikke seremoni. Fem og en halv megabyte går ikke på en 1,44-diskett, så id kuttet et arkiv i to og sendte med DEICE for å sette det sammen igjen. Det var den eneste måten spillet lot seg bære. Diskett 1 har heller ingen slark. Den rå summen er 1 456 945 av 1 457 664 byte, men en diskett allokerer i enheter på 512 byte, så de fire filene runder opp til nøyaktig kapasiteten, og DIR sier 0 byte ledig. Jeg skrev 719 i tre tekster før maskinen fortalte meg noe annet. Tallet på skjermen er det leseren kan sjekke, og den rå summen var min.

Prosessorjumperen blir noe du kjenner i hendene. Doom kjører på 24,0 bilder i sekundet med brettet satt til 66 MHz og 13,4 med multiplikatoren halvert, begge målt på maskinen. Wolfenstein eier minneleksjonen. Doom eier prosessoren og skjermkortet.

Og Dooms eget SETUP.EXE er det beste argumentet rommet har. Det spør hvilket lydkort du har, på hvilken adresse, hvilket avbrudd og hvilken kanal, og lar deg teste det. Det er lydgåta stilt av spillet selv, i 1994, og siste menyvalg er Save parameters and launch DOOM.

Alt som er lånt her er shareware, og lisensen ligger på disketten i stedet for i en fotnote. TYPE VENDOR.DOC gir deg Apogees distribusjonsvilkår på maskinen, som er den eneste måten et museum kan vise fram hjemmelen sin på. Det fjerde spillet, det som vil ha 570 kilobyte, er husets eget: tre disketter og en demo, skrevet her, uten noe lånt i seg.

Notatboka

På skrivebordet ligger en vanlig skolekladdebok med DATA skrevet på forsiden med kulepenn. Et firmanavn er strøket over og erstattet med et bedre, og i hjørnet står «PRIVAT!!» på skrå.

Boka har tjue sider og baserer seg på min egen notatbok som 12 åring. Boken utgjorde alle de hellige triksene jeg hadde lært gjennom utallige timer med forsking og prøving. På innsiden av permen står en nummerert liste over planer, avsluttet med «Bli den største tavla i Oslo». Det finnes et datert notat fra 2. februar 1993 om et hovedkort og en strømforsyning som ga opp samme dag, og et helt kapittel om minne. DOS-kommandoene er skrevet ut på skriver i stedet for skrevet for hånd, fordi kommandoer var blant de få tingene en tolvåring kunne finne på å stoppe opp og dokumentere ordentlig.

Nå ligger det en byggeoppskrift der også, elleve steg over to sider, datert 19.11.94, som er dagen hovedkortet ble laget. Sidebruddet går der rekkefølgen skifter karakter: det som må ligge under noe annet, og det som plugges oppi det.

Så finnes De udiskutable naturlovene for PC-bygging, 33 regler, hvor tre er understreket med rødt. Det røde er skrevet med en annen penn, og det er egentlig detaljen jeg liker best: Dette var tre regler som tydeligvis var viktige nok til at han reiste seg og hentet en rød penn. Den første er «IKKE RØR EN DRITT MED STRØMMEN PÅ».

Øverst i boka finnes et lite engelsk flagg. Trykker du på det, åpnes et kort som forklarer at det ikke finnes noen engelsk utgave, og hvorfor.

Tre måter å gå i gang på

Rommet har fått en dør. En delt lenke bygget før i tida maskinen på flekken og satte deg rett inn i en kasse fra 1992, på det språket adressen tilfeldigvis bar, uten at noe hadde sagt hva dette er. Nå sier døra hva det er, tilbyr English og Norsk som to ferdige adresser, og så tre veier inn, i den rekkefølgen arbeidet blir tyngre.

Sandkassa. Der er ingenting galt, stoppeklokka er borte, og posen inneholder alle prosessorene som noen gang ble laget for sokkelen, inkludert tre som hovedkortets egen manual er for gammel til å kjenne til. Men maskinen følger fortsatt de samme reglene. Du kan konfigurere den feil og du kan ødelegge prosessoren, fordi en sandkasse hvor ingenting kan gå galt heller ikke lærer deg særlig mye om hvordan maskinen faktisk fungerer.

Bygging. Et tomt kabinett: ingen avstandshylser, ingen skruer, ikke noe hovedkort, tom sokkel, tomme spor og strømmen av. Maskinen sier ingenting i det hele tatt, for uten hovedkort finnes det ingenting i kassa som kan pipe, og det er den ene oppgaven der du må gjøre noe før maskinen svarer med noe som helst. Deretter fem oppgraderingsoppdrag som går motsatt vei: her er hva maskinen skal si når du er ferdig, gå og få den til å si det. Minnetest 8192K. 1024 kilobyte skjermminne. Cache 256 KB. En 486DX4-100 i sokkelen, som krever spenningsjumperen før multiplikatoren og biter deg hvis du tar dem i motsatt rekkefølge.

Noe er galt. Tre kvelder og sytten feil hvor du bare får vite symptomet. Simulatoren forklarer ikke hva som er galt, men gjengir det maskinen gjør:

«Den skriver semikolon når du trykker ø.» «Det er musikk i menyen. Så henger den når banen lastes.» «Det er 36 megabyte ledig, men den nekter å opprette katalogen.» «En lampe som aldri lyser.» «Den gjør ingenting.»

Disketten det står IKKE SLETT på

Det ligger én diskett i esken uten skikkelig etikett, og passordet på den er det enhver leser over en viss alder kan fra før. Det er et serviceverktøy, og det har vokst til å bli det ærligste i hele rommet.

Ni faner. En levende logg som har tatt notater siden første museklikk, ufiltrert og langt nok tilbake til at den er verdt å lese, utledet av de tre stedene maskinen uansett går gjennom framfor å være skrevet inn for hånd på åttifem steder. Et fullverdig kart over avbrudd, DMA og I/O, med de ledige oppført. Grafer over fart. Fiksturer som setter maskinen i en kjent tilstand med ett trykk.

Og en fane som svarer på hvorfor ikke. Atten predikater, syttito ledd på en ferdig maskin, og maskinen kjører på den samme tabellen fana leser. Verktøyet kan altså ikke ha sin egen mening om hvorfor CD-stasjonen ikke er klar.

Den niende fana er fasiten: alle 31 scenarioene, 155 skritt, hvert av dem et sammendrag og en nummerert liste med en knapp som laster scenarioet inn under seg. Det finnes ingen liste over skritt noe sted. Et skritt finnes fordi noen har skrevet det, og fana teller dem ved å lese ordene, så den dagen et skritt mangler sier maskinen fra i stedet for å nummerere om resten i det stille.

Å bygge den fana betydde å gå gjennom alle 31 i nettleseren og kontrollere at symptomet er det maskinen faktisk står i, og at skrittet som retter det, retter det. To skritt måtte skrives om fordi målinga sa noe annet enn det jeg hadde skrevet ned.

Ikke ferdig

Jeg har mange ideer! På lista står blant annet en død nål i skrivehodet på matriseskriveren. Det gir en hvit stripe gjennom hvert tegn på arket, og diagnosen stilles ved å se på utskriften og finne ut hvilken av de ni radene som mangler.

Det kommer også et hovedkort nummer to, som foreløpig eksisterer som en rad med data og en manual som mer eller mindre skriver seg selv. Og jumperne på lydkortet har aldri vært kjørt helt gjennom et ekte spills egen lydtest, fra kort til kabel til melodi, som er det neste jeg har lyst til å se noen gjøre.

Oppgaven jeg egentlig hadde lyst til å lage er bygget. Her er spesifikasjonene, bygg denne maskinen er det tomme kabinettet, og oppskrifta i notatboka er datert dagen hovedkortet ble laget.

Ingen savner egentlig å vente på datamaskiner. Men det fantes en periode, omtrent de femten årene før stadig mer begynte å konfigurere seg selv, hvor det var mulig å holde en hel PC i hodet. Ikke en pedagogisk forenkling av den, men den faktiske maskinen, ned til hvilken IRQ lydkortet brukte, hvorfor den røde lederen skulle ligge over akkurat den pinnen, hvor mye konvensjonelt minne du hadde igjen og hvilken jumper som bestemte busshastigheten.

Maskinen fortalte deg ikke nødvendigvis hva som var galt. Du måtte finne det ut selv. Men når du først fikk den til å gjøre akkurat det du ville, visste du som regel også hvorfor den gjorde det.

Mer

VectorUP

VectorUP begynte egentlig med et ganske beskjedent problem: Jeg hadde for mange programmer, mapper, nettsider, kommandoer og småting jeg stadig brukte, og launcheren som skulle gjøre livet enklere begynte etter hvert å bli enda et sted jeg måtte lete. Det som startet som et forsøk på å rydde litt opp har derfor utviklet seg til noe langt større. VectorUP er fortsatt under aktiv utvikling, og jeg vet ærlig talt ikke helt hvor endestasjonen ligger ennå, men retningen begynner å bli ganske tydelig: ett lokalt arbeidsverktøy som samler det man faktisk bruker på en PC, uten at man må gi fra seg kontrollen for å få orden på det.

Les mer!

KI endret verktøyet, ikke ansvaret

Jeg ble spurt om å uttale meg om kunstig intelligens, nærmere bestemt om jeg er for eller imot. Jeg fant ganske raskt ut at det ikke lot seg besvare med et enkelt ja eller nei, så den eneste rettferdige måten å svare på var å skrive en artikkel. Når vi diskuterer noe så omfattende som KI, mener jeg det er viktig å sette seg inn i mer enn bare mulighetene teknologien gir oss. Vi må også forstå begrensningene, konsekvensene og truslene som følger med. Det bør faktisk være et minstekrav før vi tar den i bruk, særlig når vi stadig gir den større ansvar og innflytelse. For hvordan skal vi kunne ta stilling til en teknologi vi knapt har tatt oss bryet med å forstå?

Les mer!

Vis alle blogginnlegg