Primož Jakopin

Spomini

O mikroračunalnikih in o INESu

Januar 2022

 

          Nekaj na to temo sem povedal že leta 1984, Jožetu Vilfanu, uredniku revije BIT, za članek z naslovom Kaj dela Primož Jakopin. Objavljen je bil v drugi številki, na straneh 26 in 27. To razširitev je vzpodbudilo zanimanje Sergeja Hvale, ko se je lotil pisanja knjige o zgodnjem obdobju videoiger po svetu in pri nas.

O računalniku Sinclair ZX Spectrum in podobnih hišnih računalnikih

          Računalniki so bili, do mikroračunalniške revolucije v začetku osemdesetih let, dostopni le maloštevilnim strokovnjakom, ki so se ukvarjali z njimi. Jaz sem se prvič srečal s to problematiko (stroja samega še nisem videl) pri predmetu, točnega imena se ne spominjam, verjetno je bilo Programiranje, v tretjem letniku študija tehnične matematike. Takrat sta bili na matematiki (Fakulteta za naravoslovje in tehnologijo) le dve smeri, pedagoška (za učitelje matematike v srednjih šolah, kaki štirje študentje v letniku) in tehnična (kakih sedem študentov). Pouk je bil teoretičen, na koncu pa je bilo treba predložiti program na papirju v programskem jeziku FORTRAN. Predmet večje teže ni imel, program nam je napisal bolje podkovani kolega iz nižjega letnika, Izidor Hafner, in smo ga (uspešno) predložili kot svojega. V četrtem letniku je šlo bolj zares, morali smo program, ki smo ga napisali, tudi preizkusiti na računalniku IBM 1130 v Računskem centru Inštituta za matematiko, fiziko in mehaniko (IMFM). Najprej je bilo treba program napisati na posebne formularje z zeleno potiskanimi črtami za vrstice po 80 znakov z označenimi mesti (grabljice). Vsaka vrstica je pomenila 80-kolonsko kartico iz trdega papirja, ki jo je bilo treba zluknjati na posebnem stroju, luknjaču kartic, za vnos v računalnik prek čitalca kartic. Program naj bi potem dve "luknjačici", delavki v Računskem centru s formularja pretipkali na papirne kartice, od tam pa naj bi šel tak, kak centimeter ali dva debel paketek kartic v obdelavo na računalnik. Računalnik je bil v posebnem (tudi klimatiziranem) prostoru, za stekleno steno, s katero je bila predeljena velika soba, in v ta prostor so smeli le operaterji in zaposleni v Računskem centru. Študentske obdelave so čakale v škatli na pultu pred stekleno steno. Operater jih je, ko se jih je nabralo dovolj (nekajkrat dnevno) odnesel do čitalca kartic, prek katerega jih je vnesel v računalnik, ta jih je obdelal in rezultate, če jih je bilo kaj, natisnil z vrstičnim tiskalnikom (naenkrat je natisnil celo vrstico) na neskončen papirni trak z luknjicami ob straneh, lahko bel, ali pa tak, da je bila ena vrstica (pol centimetra v višino) bela, ena pa zelena. Ko sem bil v četrtem letniku so postopek znatno demokratizirali, kartice smo smeli v popoldanskem času zluknjati kar študentje sami in to je postopek za velikostni razred pospešilo. Ker pa noben program ni bil takoj dober, vsaj nekajkrat ga je bilo treba popravljati, kakšno vrstico v njem, se pravi papirno kartico, zamenjati ali dodati, je bil postopek še vseeno zelo dolgotrajen. Da si spravil v red preprost program, recimo tak, ki je seštel prvih sto celih števil, si zlahka porabil nekaj dni. Kaj bolj zapletenega pa seveda cel teden ali še več.
          Sam sem se začel zanimati za računalniško grafiko, če smemo temu tako reči, idrijskim čipkam podobne vzorce sem sestavljal iz ciklometričnih funkcij, ki sem jih potem z zvezdicami, pikami in drugimi znaki natisnil na neskončen tiskalniški papir. Ker z običajnim postopkom za študentske obdelave ne bi prišel nikamor, sem v predprostoru računalniške sobe čakal zvečer, po osmi uri, ko so lahko nekateri raziskovalci in doktorandi, npr. z Inštituta Jožef Stefan, lahko, vsak za nekaj ur, do sedmih zjutraj, rezervirali računalnik in na njem samostojno delali. Raziskovalka z IJS je imela navadno računalnik rezerviran od osmih zvečer do desetih ali enajstih in ko se ji je kaj zataknilo, potrebovala je 10-15 minut za premislek, kako naprej, je pomignila študentu, ki je čakal pred šipo (meni) in za nekaj dragocenih minut sem imel stroj samo zase. In sem v tistih nekaj večernih uricah naredil toliko, kot bi sicer v nekaj tednih. Za nameček sem pa še, ko nisem več vedel, kje je v programu kaj narobe, težil profesorju programiranja, Egonu Zakrajšku, sicer tudi direktorju Računskega centra. Ko sta se dva izmed zaposlenih v Računskem centru spomladi leta 1971, malo nepričakovano odločila za odhod na služenje vojaškega roka, je bil objavljen razpis za dve delovni mesti s štirisedminskim delovnim časom, mesto "programer asistent", začetna plača 70.000, kasneje 100.000 dinarjev. V predavalnici se nas je zbralo 20 kandidatov in prof. Zakrajšek je izbral dva, najboljšo študentko v letniku (imela je povprečno oceno 4.8 - od 5) in mene, zaradi tistih funkcij. Ob nastopu službe mi je sicer položil na srce, naj pazim, kaj bom delal. Če me bo slučajno kdaj zalotil s tistimi čipkami, bom nemudoma letel.
          Kasneje, s pojavom superračunalnika CDC 6600 podjetja Control Data (kasneje CDC Cyber 72) v Republiškem Računskem Centru (RRC) na Jadranski cesti v Ljubljani (v sosednji stavbi) so se stvari močno premaknile na bolje. RRC je sestavljalo kakih deset partnerjev, od Univerze v Ljubljani, Inštituta Jožef Stefan, Zavoda za statistiko, do Kliničnega centra in Ljubljanskih mlekarn. Do njega je bilo mogoče dostopati posredno, prek sprejemnice v stavbi, kjer si lahko oddal kartice za paketno obdelavo in tja prišel iskat tudi natisnjene rezultate. Imeli so zelo hiter tiskalnik, ki se ni ustrašil tudi tisoč in več strani izpisa. Te obdelave ali posli (jobs) so prek čitalca kartic potovale v tako imenovano vhodno čakalno vrsto na disku računalnika (input queue), v njej je bilo nekaj sto poslov. Imele so različno prioriteto, tudi v odvisnosti od tega, kolikšen delež superračunalnikovega procesnega časa je partner, recimo Klinični center, ki je imel nekaj več kot 3% delež, ta dan že porabil. Če je bil že čez kvoto, so njegovi posli ležali v čakalni vrsti do naslednjega dne. Ko je bil nek posel obdelan, so se njegovi rezultati znašli v izhodni čakalni vrsti (output queue) na disku, kjer so ostali, dokler niso bili natisnjeni. Poleg sprejemnice v RRC so lahko posli prišli v čakalno vrsto tudi s terminalov, bilo jih je najprej kakih 15, kasneje več, ki so bili sestavljeni iz tipkovnice z zaslonom, čitalca kartic in vrstičnega tiskalnika. Imeli so tudi diskovno enoto, ki pa je bila le za zagon terminala. Na zaslonu je operater lahko opazoval obe čakalni vrsti na superračunalniku, poslal posel s čitalnika kartic v vhodno čakalno vrsto ali izpisal rezultate iz izhodne čakalne vrste na tiskalnik. Do teh terminalov je lahko prišlo precej več ljudi kot prej do enega samega računalnika. Računalnik v RRC je stal nekaj milijonov tedanjih dolarjev, terminali pa okoli 35.000. V letu 1972 so Računski center IMFM ukinili, da ne bi imel RRC konkurence takoj čez cesto, zaposlenim so ponudili delo v RRC, a ni nihče sprejel. Nekaj časa po ustanovitvi sta delovala hkrati oba računska centra, pa ko smo na dveh klopcah pred stavbo Oddelkov za matematiko in fiziko (4 nadstropja) malicali sendviče, so prišli mimo, čez parkirišče med obema stavbama (v sosednji, malo nižji, dvonadstropni, je bil na novo zgrajeni RRC) zaposleni iz RRC. šli so v "malcalnico" na Inštitutu Jožef Stefan, na drugi, zahodni strani Jadranske ceste, in vsi so imeli bele halje, najbrž da bi bili videti bolj "znanstveno". Mi smo bili "v civilu", belih halj nismo imeli. Ko jih je zagledal naš direktor, Egon Zakrajšek, je zaklical: "Pazite, fantje, mesarji grejo" in smo se smejali, mimoidoči pa seveda ne. Delo v RRC je bilo komercialno, poslovne obdelave, v jeziku COBOL, kjer je bil vsak program ena sama velikanska klobasa, mi smo delali pa za znanost in industrijo, v FORTRANU (kasneje STRUCTRANU), kjer je bil glavni program kratek, vsa teža je bila pa v podprogramih in funkcijah, s katerimi si lahko nalogo razbil na pregledne, veliko bolj obvladljive manjše dele.
          Vsi iz RC IMFM smo se razbežali v glavnem po fakultetah in drugih partnerjih RRC. Egon Zakrajšek, najbistrejši od programerjev, kar sem jih do sedaj srečal, je bil poleg dela na fakulteti (bil je tudi mentor pri moji diplomski nalogi) dopolnilno zaposlen še v RRC, zadolžen je bil za operacijski sistem superračunalnika. Jaz sem se zaposlil v RC Kliničnega centra kot vodja programerjev - da se je lepše slišalo, bil sem bolj vodja sam sebi. Terminala KC ni imel, hoditi smo morali na Jadransko cesto. Nekaj let kasneje, ko sem se zaposlil v Inštitutu za biomedicinsko informatiko na Medicinski fakulteti, smo dobili tudi terminal in sem imel dostop do njega seveda kolikor sem hotel in kadar sem hotel. A neposrednega dostopa do računalnika še vedno ni bilo. Uvedli so sicer še manjše terminale, ki so imeli le zaslon in tipkovnico, in s katerih je bilo mogoče tudi tkim. interaktivno delo, ko si dostopal do računalnika lahko tudi neposredno, brez čakalnih vrst - seveda v načinu deljenega časa (time sharing) a vendar si program lahko izpopolnil za velikostni razred hitreje, takoj si videl, kaj si naredil, kartic ni bilo več treba. Je bilo pa interaktivno delo na računalniku v RRC mogoče le ob torkih popoldne, ob sobotah in nedeljah. Da računalnika z njim ne bi preobremenjevali.
          Lahko si mislite, kako smo si vsi, ki smo takrat delali na računalnikih, želeli, da bi imeli računalnik samo zase. To so bile sanje nas vseh, daydream. Prvi mikroračunalnik, ki sem ga videl, je bil Commodore PET, ki ga je Jure Špiler pripeljal iz Londona poleti leta 1978 - tipkovnica z vgrajenim zaslonom. Zavil ga je v šotor in prešvercal v prtljažniku avtomobila. Takrat sva bila oba asistenta na Medicinski fakulteti v Ljubljani, jaz za Računalništvo, on za Biofiziko. Prvi mikroračunalnik, ki mi je prišel v roke, je bil pa Sinclair ZX 81, z 1 KB pomnilnika, spomladi leta 1982. Tipkovnica je bila zelo uboga, zunanji pomnilnik je bil kasetofon, posodil mi ga je kolega iz Narodne in univerzitetne knjižnice, Sašo Albert, da bi ga preizkusil in mu povedal, ali se s tem računalnikom, namenjenih predvsem igricam, da početi še kaj bolj resnega. Za primer sem vzel program za računanje koordinat točk poligona pri merjenju jame, iz podatkov o vizurah z ene točke na drugo. Vsaka vizura je imela tri vrednosti - razdaljo, naklon in azimut. Programa, na papirju, je bilo malo več kot eno stran, kakih 30 vrstic. Stroj je imel interpreterski BASIC. šlo je do 25. vrstice, potem pa je zmanjkalo pomnilnika. Stroj sem Sašotu vrnil in mu povedal, da je stroj sicer obetaven, a da bi rabil 2 KB pomnilnika za kaj bolj uporabnega. Me je pa izkušnja z njim precej navdušila. Poleti leta 1982 je postal dobavljiv naslednik ZX 81, Sinclair ZX Spectrum, v dveh izvedbah, s 16 KB in z 48 KB pomnilnika. Naval nanj je bil tako velik, da je bila domača cena za 48 KB model 175 angleških funtov, izvozna pa 228 funtov (če se prav spominjam) in nanj je bilo treba čakati več mesecev. V Jugoslaviji ga seveda ni bilo dobiti, tudi uvoziti se ga ni dalo, visoka tehnologija za ljudske množice ni bila. Da ne bi kdo delal konkurence državnemu sektorju, ali pa, kdo bi vedel, kar tako. Kolega Franci Ambrožič z Visoke šole za telesno kulturo je imel zveze v Angliji, oče je delal v diplomaciji, in decembra je 48 KB našel pot do njega. Najprej ga je nekaj časa spoznaval in se igral z njim, potem pa mi ga je, podobno kot že prej Sašo, posodil čez Novo leto, da bi videl, če se da z njim narediti kaj bolj resnega. Seveda se je dalo, v kratkem času sem na njem, kar v BASICu, napisal svoj prvi urejevalnik besedil, BESS (Basic Editor for the Sinclair Spectrum), ker ga stroj pač ni imel. Led je bil prebit, imel sem svoj stroj, poti nazaj na velike računalnike ni bilo več.

 

O uporabnosti jezika BASIC na Spectrumu

Kar se mene tiče, je bil zelo dober, da ne rečem odličen. Imel je namreč ukaz, ki ga drugi mikroračunalniki, predvsem najbližja konkurenca, Commodore 64, niso mogli imeti, ker so imeli pač za velikostni razred slabše srce, mikroprocesor. Imel je linearen pomnilnik. Napisali ste CLEAR 32000 (na 48 KB stroju) in stroj se je pospravil, z vsem kar je rabil, na naslove v pomnilniku od 0 do 31999. Vsi bajti od 32000 do 65535 pa so bili za vas, v enem kosu, delali ste z njimi kar ste hoteli. Na Commodorju je bilo pa tu 2Kb, tam 4Kb, pa še kje drugje spet nekaj, kot bi hotel prenašati vedro vode sem in tja s steklenimi kozarčki raznih velikosti. Bolje da sploh nisi začel.

 

O programiranju Spectruma

          Na začetku sem seveda programiral v BASIC-u. Ta je sicer zelo počasen, ker je interpreterski, vsaka vrstica programa se pred izvršitvijo prevede v strojni kod, izvrši in tako naprej. BESS je imel prostega prostora v pomnilniku nekaj več kot 20 KB, se pravi za dobrih deset tipkanih strani. Na zaslonu je bilo 24 vrstic po 32 znakov, kar je na tem računalniku standardno, če delaš v tekstovnem načinu (grafika je imela sicer 256 x 192 pikslov), BESS je imel vse običajne urejevalniške funkcije - pisanje besedila, vrivanje in brisanje črk in ločil, seveda tudi vrstic in njihovih blokov. Imel je tudi funkcijo iskanja po besedilu, kjer pa se je pokazala vsa revščina interpreterskega načina delovanja. Po eni strani besedila (2000 znakov) je BESS iskal dobro minuto. Po desetih straneh pa deset minut. Peš bi skoraj našel hitreje. Takoj mi je bilo jasno, da bo treba stvar zastaviti drugače. Zbirnika (angleško se imenuje assembler), to je pretvornika iz s simboli zapisanega programa v strojni jezik, programsko kodo mikroprocesorja Zilog Z80, še ni bilo in je bilo treba ta strojni kod napisati na roke. To se sicer da, a ni priporočljivo. V članku, iz katere sem se učil strojnega jezika, je pisalo, dobesedno: If you value your sanity, do not program in machine code, use an assembler (Če cenite svoje duševno zdravje, ne programirajte v strojnem jeziku, uporabljajte zbirnik). V dveh dneh sem napisal in izpopolnil do pravilnega delovanja podprogram za iskanje po besedilu v strojnem kodu. Dolg je bil 50 bajtov, našel je pa nekaj na koncu 20 KB dolgega besedila v približno petih stotinkah sekunde. Namesto deset minut v BASICu. Naslednik urejevalnika BESS, TESS (Text Editor for the Sinclair Spectrum, 24 vrstic po 64 znakov) iz leta 1984 je imel že približno četrtino kode v strojnem jeziku, pretvorjene z zbirnikom, ki je bil medtem že dostopen, INES (INformation Editing System, 1985) pa je imel v BASIC-u le še vhodne in izhodne ukaze ter osnovni krmilnik, kar je bilo kak odstotek programa.
          Vse to je omogočila arhitektura računalnikovega mikroprocesorja, Zilogovega Z80. V nasprotju z mikroprocesorji družine MOS 6500, ki so poganjali konkurenco, stroje znamke Commodore, s hudo skromnim naborom registrov, imeli so le en osembitni glavni register (akumulator), dva osembitna indeksna registra, šestnajstbitna skladovni kazalec in programski števec ter osembitni statusni register, je bil Z80 pravo razkošje. Bili so štirje šestnajstbitni glavni registri, ki jih je bilo mogoče uporabljati tudi kot 8 osembitnih, dva šestnajstbitna indeksna registra, šestnajstbitna skladovni kazalec in programski števec, osembitni statusni register ter še dva osembitna registra: prekinitveni vektor in osveževalni števec.
          Da Z80 ni bil samo malo tako za šalo, ampak je pomenil prelomnico pri mikroprocesorjih, pove že naslovnica najpomembnejšega priročnika o programiranju strojev s tem mikroprocesorjem - Rodnay Zacks: Programming the Z80. Kot bi strela udarila v zemljo in jo razklala.

 

O nastanku urejevalnika INES in odmevih nanj

          Pot do nastanka INES sem opisal že v odgovoru na prejšnje vprašanje, z izidom na tujih trgih pa žal ni šlo ravno najbolje. Precejšen odziv je bil v drugih republikah naše nekdanje skupne domovine, predvsem na Hrvaškem in v Srbiji. Naslov zelo naklonjenega članka v reviji Svet kompjutera (Beograd) je bil pomenljivo enak kot naslov pesmi Radeta Šerbedžije: Ne daj se, Ines. Na zahodnem trgu so bile stvari drugačne. Sam sem napisal približno 40 strani dolg priročnik v angleščini, ki sva ga z mamo Gitico prevedla še v nemščino. Brat Jernej, ki je takrat delal v Nemčiji, v projektivnem biroju kot arhitekt, je našel zastopnika v Düsseldorfu, podjetje UltraSoft. Bila sta dva fanta, ki sta naredila nekaj reklame, izšlo je več člankov v časopisih, tudi angleških. Ocene so bile ugodne, iz Anglije se spomnim stavka, da je priročnik kar dober, če upoštevamo, da sta ga napisala dva Nemca (najbrž midva z Jernejem). Dobro so ga ocenili pri nekem nemškem časopisu, kjer so napisali, da je bilo prav ganljivo videti sicer dober in popoln računalniški priročnik, napisan v Altdeutsch (stari nemščini). Mama je namreč obiskovala gimnazijo v Bregenzu ob Bodenskem jezeru med vojno (bili so izseljeni) in je bila njena nemščina pač iz tistega časa. Ko so začela na UltraSoft prihajati naročila, sta fanta čakala na ponudbo kakšne veletrgovskih verig, pisma posameznikov pa sta metala v koš. In pri tem je ostalo.
          Bolje se je godilo INESovemu nasledniku, programu STEVE.




Stran je napisal in postavil Primož Jakopin. Za vprašanja in komentarje pišite na primoz jakopin guest arnes si (vstavite pike in afno na ustrezna mesta). Prispevek je nastajal od sredine do konca januarja 2022; datum zadnje spremembe: 14. junij 2022.

Spletni naslov: https://www.jakopin.net/papers/Spomini/On_microcomputers_and_INES_si.php
    112