AMIS.SAG -*-Text Fill Swedish -*- Sagan om AMIS eller Hur man utvecklar en editor av Per "TMP" Lindberg Detta {r ber{ttelsen om sju hackers som ville g|ra en editor. Alla h{r f|rekommande personnamn {r fullst{ndigt ofingerade, och rej{lt insyltade. Ber{ttelsen {r f.|. skriven med AMIS sj{lv, s} allt du l{ser {r sant! Det hela b|rjade en g}ng f|r l{nge, l{nge sedan, i datorernas barndom. N}gon hade kommit p} att man kunde redigera sina k{llprogram direkt p} datorn (eller "elektronhj{rnan", som man sa p} den tiden). Han skrev sig ett program, med vars hj{lp han kunde redigera ett stycke text, vilket som helst, innan han k|rde det genom kompilatorn, eller vad han nu ville g|ra med det han skrev. "En str}lande ide!", sade alla hans kollegor, och stal den meddetsamma. Alla hade naturligtvis sina egna ideer om hur EDITORn, som programmet kallades, skulle fungera. S} de skrev om och la till, kopierade, plagierade och gjorde om. Och p} s} s{tt kom iden om en editor att g|ra sitt segert}g v{rlden |ver. N{r datorerna blev allt b{ttre och b{ttre, kom {ven editorerna att f|rb{ttras, och redan innan BILDSK[RMSTERMINALERNA gjort den sista SKRIVANDE PAPPERTERMINALEN arbetsl|s, kom n}gon p} att man borde g|ra en editor som h|ll en del av texten konstant uppritad p} sk{rmen, s} att man kunde }ka omkring i texten och redigera. Den f|rsta SK[RMEDITORN var f|dd. Precis som n{r den f|rsta editorn kom till v{rlden, spred sig iden som en l|peld, och alla f|rs|kte g|ra en egen sk{rmeditor. Och s}dan var situationen f|r ungef{r ett }r sedan, n{r Lars-Henrik f|rs|kte planka den nya fantastiska super-editorn EMACS. Denna EMACS var st|rre, snabbare, b{ttre och gladare {n n}gon annan hittills existerande sk{rmeditor. EMACS kom fr}n datorernas Mecka, USA, och inte nog med det, utan till och med fr}n detta Meckas Kaba, MIT! Till Lars-Henriks f|rtvivlan fanns inte EMACS tillg{nglig p} v}ran dator, NADJA. (F} av oss andra hade vid den tiden h|rt talas om EMACS, {n mindre provat den). Men Lars-Henrik, eller KRSNA som vi kallade honom, var fr{lst, och ville g|ra en EMACS som gick att k|ra p} Nadja. S} sm}ningom fick han ihop n}got som likande en editor. Sk{rmuppdateringen var av en ny och revolutionerande typ: Han skrev om HELA SK[RMEN varje g}ng n}got enstaka tecken hade blivit f|r{ndrat. I 1200 baud. Men den fungerade, och vi andra samlades runt Krsnas terminal och skrattade r}tt. Men nu hade vi blivit nyfikna, och ville l{ra oss vad det var f|r n}got fantastiskt som Krsna hade f|rs|kt g|ra. S} vi samlades tidigt en s|ndagmorgon och }kte i ett par bilar till Uppsala, d{r den dator p} vilken Krsna hade l{rt sig EMACS stod. (F|r att f|rst} v}r entusiasm b|r po{ngteras att det var n}got alledeles enast}ende att se detta g{ng vaket s} tidigt -- och p} en s|ndag, dessutom!) Den officiella anledningen var dock att vi skulle k|ra INTERLISP och det nya CFS (Computer Fantasy Simulation)-spelet ZORK. EMACS, INTERLISP, och ZORK kunde n{mligen bara k|ras under operativsystemet TOPS-20, och p} Nadja fanns bara TOPS-10. Inom kort var vi alla |vertygade om att EMACS nog var r{tt bra, och n}got som vi ville kunna k|ra {ven p} NADJA. S} gick n}gra veckor, och vi gick och tr}nade, och l{ngtade tills n{sta g}ng vi skulle }ka till Uppsala. Under tiden hade n}got annat fantastiskt h{nt: ett program som heter KOM hade blivit tillg{ngligt p} Nadja. KOM {r ett "telekonferenssystem", det vill s{ga att i KOM kan man skriva brev till varandra, och inte nog med det, man kan ha "konferenser" d{r man g|r "inl{gg" och "kommentarer". Det hela fungerar ungef{r som en ins{ndarspalt, d{r alla som {r "medlem" i en viss konferens kan l{sa vad andra skrivit, kommentera, och sj{lv skriva inl{gg. Nu b|rjade vi alla med stor entusiasm k|ra KOM minst 2 g}nger om dagen, och producera en astronomisk m{ngd totalt onyttiga nonsensinl{gg. Men s} en dag skrev Krsna ett ilsket inl{gg d{r han f|rklarade att han var utled p} att inte ha en bra sk{rmeditor p} Nadja! Vi skulle skriva en egen EMACS!! Om det bara samlades ett g{ng hackers vid Nadja n{sta s|ndag och hackade frenetiskt n}gra timmar, borde vi kunna l{nka ihop v}ra moduler n}gon g}ng vid midnatt, och en f|rsta testversion av v}r egen EMACS vara ett faktum! Allt skulle skrivas i Pascal och lite assembler. Samling klockan 12! En total entusiasm utbr|t, och eftersom det var ett par dagar kvar till s|ndag {gnade vi v}ra KOM-inl{gg }t att smida planer. Hur skulle vi dela upp projektet mellan oss? Vad ska editorn heta? Skulle den vara en trogen EMACS-kopia, eller skulle vi g|ra en egen, och kanske {nnu b{ttre editor? Eftersom vi via KOM hade kontakt med ett g{ng likasinnade i Link|ping, fick vi tillskott av en kille till som var intresserad av att skriva en editor, Anders Str|m, av alla kallad ASTROM eftersom han inte anv{nde \ utan O i sitt user-namn n{r han k|rde p} TOPS-20 i Link|ping. (Han hade allst} ocks} k|rt EMACS, och insett att allt annat {r skr{p). N}gra f|rberedelser inf|r Den Stora Dagen gjordes. Bl.a. fick vi av NADA (Numerisk Analys och DAtalogi, institutionen som har hand om datorn Nadja) ett PPN (konto) p} Nadja d{r vi kunde arbeta och l{gga upp v}ra filer. Det besl|ts att projektet skulle utf|ras i STACKENs regi. (Stacken {r datorf|reningen p} KTH.) S} blev d} klockan 12 denna efterl{ngtade s|ndag. Efter n (ett stort heltal) antal akademiska kvartar, var vi sju stycken hackers samlade: Lars-Henrik "Krsna" Eriksson, br|derna Per och Bj|rn Danielsson, Erik "Captain Zilog" Forsberg, Johnny Eriksson, Anders "Astrom" Str|m (upprest fr}n Link|ping enkom f|r detta), och jag sj{lv, Per Lindberg (kallad TMPSA eller TMP, efter min ovana att signera mina program "The Mad Programmer Strikes Again"). Och nu br|t en vild diskussion ut! En av de f|rsta allvarliga fr}gorna som raskt avhandlades, var n{r och var vi skulle {ta middag. Den lokala kineskrogen "Minus Ett" sattes som default, tillsammans med ett klockslag. S} sm}ningom enades vi efter mycket vilda (och stundom handgripliga) diskussioner om ett par punkter: 1. Editorn skulle vara en trogen delm{ngd av EMACS. Inga egna p}hitt. 2. Ordf|rande och projektledare Krsna m}, om s} kr{vs, anv{nda livremmen f|r att f} dom andra att h}lla klaffen. 3. En sk{rmuppdateringsmodul skulle anropa en logisk sk{rmhanterare som i sin tur anropar en fysisk dito. 4. Erik h}ller klaffen, och slutar prata om ovidkommande saker. 5. Ett subset EMACS-kommandon valdes ut. 6. \vriga moduler utkristalliserades och delades ut. Efter en stormig middag, satte sig Krnsa vid en terminal, och, ivrigt p}hejad av oss andra, skrev en lista p} vilka rutiner som skulle finnas i respektive modul. Nu hade klockan blivit s} mycket att Astrom m}ste }ka med sista t}get tillbaka till Link|ping, och vi andra satte oss utmattade framf|r var sin terminal och l{ste dagens KOM-inl{gg. Klockan blev midnatt, och n}gon editor hade det inte blivit. Det var nog inte s} l{tt att g|ra en editor, iallafall. Veckan som f|ljde b|rjade vi skriva v}ra moduler och vilt diskutera v}rt projekt i KOM. I KOM l|ste vi namnfr}gan, som efter omr|stning (I KOM, s}klart!) blev mitt eget f|rslag: AMIS efter Anti-MIS{r, ett symboliskt namn p} v}rt hopp om en b{ttre framtid. "Editor X" var visserligen ett invant namn, men, trots h{ftigt motst}nd fr}n Bj|rn, str|ks det fr}n listan p} m|jliga namn p} editorn. Per Danielsson kontrade dock med en alternativ utl{sning av AMIS: "Anti - Mung Interface for Suckers". Krsna ville kalla den TMACS eller TEMACS (ur Tiny EMACS) eller XEDIT. Det senare f|rslaget visade sig redan vara upptaget av en hemsk editor p} CDC-datorerna. ]terstod s} bara att f} honom att ge upp TMACS, vilket lyckades efter en smula elak |vertalning. F|r att ytterligare |ka f|rvirringen kom n}gon med en ny uttolkning av AMIS: "A Major Innovation In Software". S} blev det s|ndag igen, och alla samlades f|r att g} igenom och revidera v}ra moduler. Inte heller nu blev vi f{rdiga, men kinesmaten var lika god som f|rra g}ngen. S|ndagarna passerade revy. Krnsa hade under denna period b|rjat f} f|r sig att man {ven kan {ta v}rrullen med pinnar, och gjorde tafatta f|rs|k att sk{ra upp den i sm} bitar med sina chopsticks. (Han {r numera proffs p} detta trick!) Ett annat inside-grepp var att man skulle l{gga maten i rissk}len, och {ta med pinnarna i ena handen, och rissk}len i andra, n{ra munnen. Det var under denna period som jag slutade fumla med pinnarna och b|rjade anv{nda dom som om det vore den naturligaste sak i v{rlden. S} en m|rk natt n{r jag satt hemma vid min sk{rm och k|rde KOM via telefonlinjen, fick jag syn p} ett inl{gg av Per Danielsson, som hackade DISKIO, det vill s{ga den modul som sk|tte in- och utmatningen p} fil. "Break-even point n}dd!" F|r f|rsta g}ngen hade en modul i AMIS editerats med AMIS sj{lv. Entusiasmen, som aldrig varit s{rskilt l}g, steg nu, och jag sj{lv b|rjade faktiskt tro att AMIS skulle bli n}got anv{ndbart. Det var ungef{r vid denna tidpunkt som }tminstone jag b|rjade inse att vad som sagts fr}n n}gra i Link|ping (som inte var med i AMIS-projektet) om Astrom, var sant. N{mligen att han hade 2 st. Lysares kapacitet n{r det g{llde att skriva program. (LYSATOR {r datorf|reningen i Link|ping). Hans modul, den som sk|ter sk{rmuppdateringen, visade sig n{mligen vara i st}nd till de mest vansinniga trix: den skrev t.ex. ALDRIG om n}gon del av sk{rmen d{r det (av en ren tillf{llighet) redan stod vad som skulle vara d{r. Andra finesser och featuers diskuterades: bl.a. vad "kill-bufferten" skulle inneh}lla innan man sj{lv tagit bort n}gon text? Ett tag inneh|ll denna buffer (som g}r att }terkalla, d{rigenom kan man allts} flytta omkring textbitar) innan man tagit bort n}got inneh}lla "The Gettysburg Adress", ett k{nt amerikanskt tal fr}n nationens barndom. Efter en hetsig debatt besl|ts att den skulle bort, det skulle bara vara f|rvirrande f|r nyb|rjarna som ville l{ra sig AMIS. (Vi t{nkte naturligtvis att alla elever p} NADA skulle l{ras AMIS som f|rsta editor, en profetia som faktiskt delvis slog in.) Ett nytt tales{tt myntades: "--D{rf|r att EMACS g|r s}!!!!!!" Denna dr{pande replik visade sig vara ytterst anv{ndbar i alla diskussioner om AMIS, och avslutade snabbt varje dispyt som kunde uppst}. Uttrycket blev s} spritt (framf|rallt i KOM) att det till sist kom att anv{ndas i en vidare mening, d{r varken AMIS eller EMACS beh|vde vara med. Johnny tillverkade en skylt med de bevingade orden, och satte upp till allm{n munterhet. Projektgruppen hade ocks} f}tt till|kning i personalen: Jan Michael Rynning, kallad JMR, och \rjan Ekeberg, kallad \rjan. JMR tyckte att vi var lite s|liga med att skriva s|krutinerna s} han hackade snabbt ihop en egen modul inneh}llande s|krutiner till AMIS. \rjan kunde inte heller h}lla fingrarna i styr, utan hj{lpte till med att g|ra en lathund och hackade ocks} in f|rkortning av s.k. "Meta-X" - kommandon. Numera {r JMR fullt insyltad i projektet, och \rjan {r v}r femte-kolonnare p} NADA. Nu hade vi en editor som gick att anv{nda, {ven om mycket }terstod att g|ra. Riktigt HUR mycket hade vi v{l inte riktigt klart f|r oss vid den tiden, annars skulle nog m}nga av oss tappat sugen totalt. Det var n{mligen nu som dom VERKLIGA problemen b|rjade. Ryktet om AMIS hade spritt sig rej{lt, och nu ville alla titta p} den lustiga lilla apan. Det var allts} dags f|r en RELEASE! Den Stora Dagen var som sig b|r en s|ndag, och vi samlades r{tt tidigt, vill jag minnas. En ryslig sak slog oss: vi hade ingen MANUAL. Snabbt kasta ihop en s}dan, allts}. En total genomg}ng av samtliga moduler visade att n}gra beh|vde avlusas lite. Den fruktade "sista buggen" skulle bort innan vi v}gade visa upp n}got. (Fotnot: den sista buggen definieras i hacker-kretsar som den bugg man tar bort f|re den sista buggen...) Klockan gick, och vi slet med manual och buggar. Dessutom uppstod vissa organisatoriska problem: vi beh|vde en speciell version av ALLTING som skulle sparas som en s{rskild "release-version", och en speciell area att l{gga dessa p}. Klockan blev midnatt, och mycket }terstod att g|ra. S} sm}ningom kunde vi {nd} vara ense om en relativ bugfrihet, och b|rjade sammanst{lla de f{rdiga modulerna, och kompilera dessa. I den allm{nna r|ran (vi hade b|rjat bli lite s|mniga allihop) uppstod diverse missf|rst}nd, och klockan gick. N{r det b|rjade ljusna |ver taken (det var mitt i vintern d}!!) kunde vi till sist meddela Tommy Ericsson som satt som systemprogrammerare p} QZ, Stockholms Datorcentral, att han kunde kopiera rubbet. Ytterligare missf|rst}nd: Manualen var skriven med svensk teckenstandard, och alla HELP-filer o.dyl. skulle vara konverterade till "QZ-standard", vilket innebar att vi (d.v.s. de f} av oss som var kvar och h}llit oss vakna) fick k|ra dem igenom diverse konverteringsprogram. (Denna konvertering {r nu avskaffad p} Nadja, och senare fick vi vi konvertera tillbaka...) Efter ett antal f|rs|k lyckades vi, och releasen var ett faktum. Hem och kasta sig p} s{ngen! Naturligtvis var det inte riktigt r{tt nu heller, och under m}ndagen som f|ljde kr{vdes ytterligare r{ddningsaktioner f|r att st{lla saker till r{tta. Och nu b|rjade cirkusen ta fart p} riktigt! En massa synpunkter och felrapporter b|rjade str|mma in, och ett speciellt m|te i KOM skapades, d{r synpunkter framf|rdes och kommenterades. ([nnu i dag diskuteras olika finesser livligt i KOM.) Det gamla tillhygget "--D{rf|r att EMACS g|r s}!!!!!!" anv{ndes flitigt. AMIS spreds med ljusets hastighet p} det n{t av DEC-maskiner som Nadja h{nger p}, ANF-10. Nu hade dessutom flera f}tt upp |gonen f|r att n}got var i g|rningen. Grabbarna p} ELVIRA, undervisningsdatorn vid E-sekt. p} KTH, en PDP-11, var snabbt p} plats, och ville f} en kopia av k{llkoden p} AMIS f|r att kompilera med sin egen Pascal. Rapporter om inkompatibiliteter mellan v}ra olika Pascaler b|rjade hagla. Meningen var ju fr}n b|rjan att vi skulle skriva Editor X i Pascal f|r att 1. f} den n}gorlunda snabb, och 2. f|r att f} den flyttbar till andra system. Nu visade det sig att vi utnyttjat saker i v}r Pascal som inte {r standard. Mer problem. Och sedan ville Jan ]man och dom andra p} Fysikums VAX-11 g|ra sammaledes. Samma problem igen. Dessa klarades dock upp efter n}gra m|ten med alla inblandade. F|ga anade vi vid denna tid vilka pr|vningar vi hade framf|r oss. I s} fall hade det nog aldrig blivit n}gon editor, vilket ju vore synd. Den stora sm{llen kom n{r vi skulle S[LJA editorn. Jod}, efter inte fullt ett }rs hackande kom det besked fr}n en firma med anknytningar till KTH: "Hur mycket vill ni ha f|r AMIS?" Vi k{nde oss visserligen smickrade, men s}g framf|r oss {ndl|sa diskussioner med advokater som med hj{lp av finstilta kontrakt p} n}gon pervers avart av svenska kr{ver att vi ska supporta COBOL-mode }t n}gon bokf|ringsfirma. Vi b|rjade f|rsiktigt fr}ga h|ga vederb|rande p} NADA om vi egentligen fick s{lja v}r editor, och efter en del funderingar kom vi fram till att vi inte kunde ta emot pengar f|r AMIS, eftersom vi gjort utvecklingen med gratis maskintid som inte var t{nkt till kommersiell anv{ndning. Men n}gon fann p} r}d: STACKEN, som {r en ideell f|rening kunde s{lja AMIS. Sagt och gjort, snart b|rjade vi anv{nda v}r hemhackade editor till att f|rfatta kontrakt -- en anv{ndning som vi aldrig i v}ra vildaste dr|mmar t{nkt p}. Det var nu som st{mningen b|rjade bli lite otrevlig. S} l{nge alla jobbar gratis f|r sitt h|ga n|jes skull, {r allt frid och fr|jd. Men n{r det finns en stor summa PENGAR att sl}ss om -- akta er! Alla hade f|rst}s synpunkter, och n}gra tog t.o.m. till sk{llsord. Efter o{ndliga manglingar kunde vi till sist s{tta v}ra namn p} en utskrift av den 4711:e versionen av kontraktet, som dessutom f}tt ett "barn" i form av till{ggskontrakt f|r VAX-versionen. Ett fridfullt lugn l{grades |ver alla inblandade. Och Stacken tackade f|r tillskottet i klubbkassan med en brakmiddag som saknade like! Per Danielsson gav sig inte f|rr{n han f}tt en fj{rde efterr{tt. Men Sagan om AMIS {r inte slut {nnu! Fler installationer har fr}gat efter (och f}tt) AMIS. Den f|rsta internationella ordern kom (via diverse datorn{t) fr}n Knut Smaaland p} UiO (Universitetet i Oslo:s DEC-10), och ryktet har t.o.m. sipprat ut p} det ber|mda ARPA-n{tet i USA. Ett flertal f|retag som vill skaffa en sk{rmeditor har fr}gat efter AMIS. (Iden med sk{rmeditorer har f|rst efter ett tag spridits till Verkligheten, alias industrin.) Alla som har en bildsk{rmsterminal, vill naturligtvis ha AMIS modifierad s} att den {ven g}r att k|ra p} just hans terminalmodell. Och mitt upp i alltihop sitter en liten grupp hackers och hackar f|rtvivlat p} n{sta version av AMIS, som ska inneh}lla ytterligare en delm{ngd av pappa EMACS. Den f{rdiga versionen {r fortfarande lika avl{gsen...