Nu aș fi scris asta, cel puțin nu acum, daca nu mă întreba Doctorul daca am programat pe Felix-C-256 într-un context legat de proiectul lui Approximate emulator of Felix-C-256 computer.
Așa ca o sa spun povestea mea personală, cum am dat de calculatoare si ce si cum am făcut cu ele înainte de 1989 (România Ceaușistă).
In 1983 am început clasa a 9a la Liceul de Matematica Fizica din Slobozia (Ialomița). Eram la clasa de informatica, o noutate pe atunci. Slobozia era, alături de Petroșani, unul dintre cele doua orașe non-universitare care aveau o clasă de informatica. În plus, mama mea lucra la Centrul de Calcul ca personal auxiliar (adică nu era inginer IT ca majoritatea celorlalți angajați).
Centrul de Calcul era o instituție (firma cum am spune azi) care exista în fiecare reședință de județ si numai acolo existau calculatoare si erau angajați ingineri IT si programatori. Toate celelalte firme din județ care aveau nevoi de calcul, făceau contract cu Centrul de Calcul.
Încă nu apăruseră calculatoarele personale pe la noi așa că prin calculator se înțelegea ceva gen unul sau mai multe dulapuri cât un frigider, unități de disc cât o mașina de spălat, imprimante cu ace (cred), perforatoare de cartele cât un pian, dispuse în mai multe camere. Tot acest mamut era sistemul Felix C 256. In sala calculatoarelor se intra numai cu încălțăminte de schimb și era temperatura controlată. Nu cred ca existau aere condiționate nicăieri în oraș în afara de Centrul de Calcul.
Daca nu știți ce sunt alea cartele perforate, asta era metoda de introducere de date si programe, erau niște bucăți de carton si fiecare reprezenta o linie de cod sau de date, prin niște perforații codificate: https://en.wikipedia.org/wiki/Punched_card.
Așa, deci eram eu în clasa a 9a, la clasa de informatica si aveam în programa disciplina Informatica. Profesori de specialitate nu existau așa ca veneau sa ne predea ingineri din Centrul de Calcul, de obicei cei mai tineri. Asta cred că a fost un lucru bun. Am început cu “din ce este compus un calculator” pe partea de hardware si “scheme logice cu creionul pe hârtie” pe partea de software. Despre astea o sa scriu un articol dedicat.
Apoi am început sa învățăm limbajul de programare Fortran. In afara de exerciții banale, gen scrieți un program care sa rezolve ecuația de gradul doi, nu îmi amintesc mare lucru aici. Dar avea o instrucțiune care parcă era făcuta pentru asta: arithmetic IF statement.
Am trecut brusc la Basic! Prin 1984 au apărut în Centrul de Calcul doua calculatoare personale aMIC, împreuna cu doua cărți de introducere în limbajul Basic si programe exemplificative (coordonator Adrian Petrescu). Unul dintre aceste calculatoare personale a fost pus la lucru multe nopți, la mine acasă. Se conecta la televizor si avea tastatura încorporată. Din păcate nu aveam casetofon sa salvam programele, dar scriam chestii gen sa se deseneze graficul funcției, sa se simuleze un joc de ruleta cu grafica (rudimentara).
Cumva prin aceeași perioada (85?) m-am jucat în Centrul de Calcul si cu un Felix M118, cu sistem de operare CP/M, tastatura, monitor si floppy. Imi aduc aminte ca am citit pe el “Legile lui Murphy”, circulau sub forma de fișier text cu niște coduri de control pentru formatare la imprimanta.
Tot pe atunci (85-86?) au adus în Centrul de Calcul un Independent. Asta era ceva fabulos, o clona de DEC-PDP-11 cu sistem de operare ceva tip Unix si cu mai multe terminale legate la același sistem central. M-am jucat o noapte cu el, pana am reușit sa fac privilege escalation, m-au lăsat seara cu user simplu si m-au găsit dimineața cu root. M-au dat afara (eram elev de liceu, nu angajat, dar nu m-au mai lăsat pe terminale) si așa a trecut pe lângă mine șansa să fi învățat Unix din vreme.
M-am întors la calculatoarele personale care deveneau mai accesibile si in 1985 (cred) am fost la o sesiune de comunicări științifice ale elevilor cu un program care implementa un algoritm de calcul al unui arbore partial de cost minim, pe calculator personal aMIC. Eram a 11a si făceam teoria grafurilor la informatica, foarte mișto.
Tot in clasa a 11 (sau a 12? 1985/1986) am fost la Olimpiada Națională de Informatica unde nu am făcut mai nimic, dar nu asta conta. Imi aduc aminte una dintre probleme care mi s-a părut interesantă.
Trebuia sa scrii în Assiris (asta era limbajul de asamblare de pe Felix-C) doua rutine de pack/unpack pentru a reprezenta un timestamp gen an-luna-zi-ora-minut-secunda pe cât mai puțin biți posibil si sa apelezi rutinele astea din Fortran. Mă depășea grav, eu nu am învățat Assiris, am trecut direct la Z80. Ideea acolo era ceva de genul sa reprezinți ora 0-23 pe 5 bits, luna intre 1-12 4 bits etc. In total 28 de bits fără an si acum depinde pe câți bits alegeai sa codifici anul. Nu cred ca auziseră de Unix time care ar fi fost mult mai elegant (32 de biti).
Pe la începutul lui 1986 au apărut la Casa Copiilor (pentru cine nu știe, un fel de club al copiilor unde existau cercuri de electronică, de aeromodelism, navomodelism si altele si puteai sa te înscrii la un cerc si sa mergi după ore) primele calculatoare HC 85, o clona românească de ZX Spectrum. Pe astea, intre 1986 si 1988 m-am jucat tot felul de joculețe, am programat în Basic-ul lor special și am învățat Assembler Z80, cred ca am încercat și puțin Pascal. Mă interesau joculețele mai mult din perspectiva a cum sunt făcute, nu am trecut niciodată de nivelul 7-8 la Chuckie Egg dar am reusit, cu greu, o tura completa cu Harrier Attack!
Tot in 1986, am fost într-o tabără de informatică la Târgu-Mureș unde niște studenți la Informatica Universitatea București ne-au predat chestii super-avansate, titlul era “Stiva – esenta recursivității si recursivitatea – începutul inteligenței artificiale“. Programarea începea sa devină interesantă. Ca fapt divers, in aceeași tabăra era și Andrei Pitis, nu ne-am cunoscut acolo dar ne-am adus aminte amândoi mai târziu.
Acolo, in tabăra, îi invidiam pe colegii care știau maghiara si aveau niște reviste super colorate din Ungaria, pline de informații si programe, majoritatea despre ZX Spectrum. Aș fi dat orice sa pun mana pe cartea Complete Spectrum ROM Disassembly.
Prin 1987 au apărut în Centrul de Calcul un HC-85 cu unitate de floppy disk (cred ca 160K pe un floppy) si apoi (1988?) primul IBM PC cu sistem de operare MS-DOS, cu monitor CGA (4 culori!) si hard disk intern de 5MB. Pe asta îmi amintesc ca l-am împărțit în 4 partiții pentru ca mi se părea atât de mare discul ca nu știai ce sa faci cu el.
In 1988 toamna am început facultatea (anul 1 la Electronică în București) si am revenit la cartele, dar măcar, de data asta, era cu limbajul de programare Pascal. In paralel mă jucam cu Turbo Pascal pe IBM-PC.
Prin 1989, am văzut prin cămine o alta clona româneasca de ZX Spectrum, celebra Cobra care avea 64 KB RAM si mai multe ROMs selectabile la boot, multi-boot Spectrum Basic, CP/M, Z80 Assembler.
Tot 1989, în cămin, am scris ceva cod pe un calculator personal Amiga (al unui coleg), cu procesor Motorola 68000 si care avea nu mai știu câtă memorie, cred ca 256KB. Ce mi s-a părut spectaculos era ca puteai sa aloci fără niciun truc special mai mult de 64K RAM, ceea ce pe IBM-PC cu 8086 nu prea se putea. Matrici (de date) uriase, asta visam.
Apoi a venit Revoluția.