Depni računari
Svako vreme ima svoje igre i igračke - olovne vojnike, obruče, trotinete ili, o čuda, depne računare". Ovako je počeo moj prvi tekst objavljen u "Galaksiji 105", januara 1981. godine. Iako se tekst bavio igrama na depnim programabilnim kalkulatorima, ove naprave nipoto nisu bile igračke - bili su to prvi personalni računari do kojih je smrtan čovek ovde mogao da dođe.
1980. godine pojavili su Commodore VIC 20 i Apple III; industrija ličnih računara već je bila u "zaletu", spremajući se za promociju IBM PC-ja. Ali, mi smo bili daleko od toga: "pravi" personalni računari su bili nezamislivo skupi, uvoz je bio zabranjen a, to je moda i najgore, o njima se gotovo nita nije znalo. Reč "računar" tada je bila sinonim za skalameriju koja u najboljem slučaju zauzima čitavu jednu sobu, na kojoj se vrte neke trake i koja "jede" buene kartice. Takve "adaje" ivele su u velikim računskim centrima, o kojima su "nepovlaćeni" mogli samo da sanjaju; pomisao da neko ima svoj sopstveni računar ličila je na pravu jeres.
A opet, depni programabilni kalkulatori koje su proizvodili Texas Instruments i Hewlett-Packard bili su pravi računari: imali su procesor, RAM, ekran, tastaturu, čak i spoljnu memoriju... I to u "impozantnim" količinama: TI-59 je, recimo, imao četvorobitni procesor, 120+16 registara memorije (uz malo optimizma, tj. računanja registra kao osmobajtnog broja, mada je realno bio 58-bitni, 1088 bajta), ekran na kome se ispisivalo deset cifara (cifara, ne znakova!), tastaturu sa 45 tastera i magnetne kartice na koje je stajalo po 210 bajta.
I pored sveg tog siromatva, na depnom
računaru se moglo divno programirati... ako čovek zna kako. Ja
nisam znao - svoj prvi depni računar, TI-58 (isto to
i TI-59, ali uz duplo manje memorije, bez magnetnih kartica i,
pogađate, jeftinije), kupio sam jula 1979. godine u
"Komisionu", a da zapravo nisam pojma imao ta je
to; znao sam samo da me takve stvari strano zanimaju. Moje
znanje o onome to kupujem bilo je toliko fascinantno da sam
pitao prodavca "jel' ima i neki bolji računar"... Kada
mi je odgovorio da nema, oprostio sam se od 7500 tadanjih
dinara (Bog zna koliko je to u naim parama) i krenuo kući
sa paketom koji je sadrao računar, svu prateću opremu i
knjige... kamo sreće da se dananji računar moe tako
lako nositi.
Uz TI-58 sam dobio dokumentaciju na italijanskom (koji ne znam), ali se, uz svo slobodno vremena jednog letnjeg raspusta i mnogo dobre volje, svata moe uraditi. "Savladavao" sam računar sliku po sliku, instrukciju po instrukciju, pokuavajući da pojmim ta je to uopte programiranje i kako se programira. Moj prvi program bila je igra "Mastermajnd" - pisao sam ga grozničavo tri dana, pomislio da radi, a onda video da neke kombinacije ne boduje dobro... uh, kako je samo to bio teak trenutak! Srećom, bag sam ispravio, uivao par dana u svom remek-delu a onda krenuo dalje... Kada sam, deset dana kasnije, napravio svoj prvi program za igru "Čoveče ne ljuti se", mislio sam da znam sve o programiranju.
Kako se, stvarno, programiralo na TI-59? Program je bio neto to bismo danas nazvali makroom, niz operacija koje računar "pamti" i kasnije izvrava kao da ih kucamo sa tastature. Program koji sabira brojeve u registrima 10 i 11 bi, na primer, glasio: RCL 10 + RCL 11 = R/S, gde je RCL (recall) taster za čitanje sadraja registra, a R/S (run/stop) označava zaustavljanje programa. Poto se na ekranu ispisuju samo brojevi, program ne moe da se vidi u ovako "jasnom" obliku - svaka instrukcija zamenjena je odgovarajućim kodom, koji u stvari označava njene koordinate na tastaturi. Poto je taster RCL treći po redu u četvrtom redu, njegov kod je 43, dok je kod tastera R/S (prvi u devetom redu) 91. Čitav program, dakle, izgleda ovako: 43 10 85 43 11 95 91 - pogađate, 85 i 95 su koordinate tastera + i tastera =.
Moe li iv čovek da popamti sve te kodove? Verujte da moe: prvih par meseci brojite tastere, a onda naučite ta je tačno ta i 43 vam izgleda jednako jasno kao i RCL. to je najlepe, posle beskrajnog gledanja u ekran, kodove ne moete da zaboravite čak ni kada ih godinama ne koristite: i danas ih se uglavnom sećam, čak mi se ponekad desi da zapamtim neki broj telefona kao niz tri TI-59 instrukcije.
Glavna stvar kod programiranje bila je racionalnost: instrukcija skoka se, recimo, kodirala kao GTO xx gde je xx labela na koju se skače, recimo GTO A. To je zauzimalo dva programska koraka, ali je negde u programu trebalo zauzeti jo dva za oznaku te labele, dakle LBL A. U zbiru - četiri koraka za jedan jedini skok. Mogli su da se koriste i apsolutni skokovi: kodirano GTO 210 zauzima tri koraka, ali zato skače direktno na instrukciju koja je na 210. koraku - tamo se ne mora nalaziti LBL A, dakle potroena su tri koraka umesto četiri. Uteda jednog koraka (7 bita) danas izgleda komično, ali je onda tih 7 bita značilo mnogo: program se napie, testira, i onda se sve labele uklanjaju i zamenjuju apsolutnim skokovima čime se utedi po 20-tak programskih koraka. Posle toga program je mnogo tei za odravanje, poto umetanje ili brisanje jedne jedine instrukcije zahteva da se "protrči" kroz ceo program i podese svi apsolutni skokovi ali... zar nije 140 bita utede vredno nekoliko sati posla?
Kakvi su se programi pisali za TI-59? Uglavnom matematički, uz poneku igru. Takav je, uostalom, put zacrtao i Master Library modul koji ste dobijali ugrađen u TI-59: u njega je zapisano 25 programa ukupne duine od fantastičnih 4 kilobajta, koji uključuju reavanje sistema jednačina, nule funkcija, numeričku integraciju i jednu igru, hi-low. Mogli su se, naravno, kupiti i dodatni moduli koji su nudili specijalizovane programe, ali je malo ko imao para za njih i načina da ih dobavi iz Amerike. Zato smo sve to nam je trebalo morali sami da napiemo.
Ma koliko to danas izgledalo neverovatno, u 1000 bajta se
moe smestiti sasvim solidan program koji će raditi
koristan posao. Na TI-59 se mogao reiti sistem od 8
jednačina sa 8 nepoznatih (kada vam je, osim ako se bavite
građevinom, zadnji put bio potreban veći?), računati sa
matricama sličnog obima, odrediti nule funkcije ili određeni
integral nekom numeričkom metodom, obaviti čitava baterija
statističkih testova, proveriti raspodele slučajne
promenljive... ukratko, dobar deo onoga to je potrebno u
inenjerskoj praksi. Programi su uglavnom bili veoma
kvalitetni, optimizovani do krajnjih granica, tako da mi se čini
da sam u njih imao vie poverenja nego u neke dananje
pakete - dinove koji reavaju probleme iz slične
klase.
A igre? LED ekran na kome moe da se ispie do deset
cifara nije ba neko slavno polje za akcione igre, ali kada
se radi o logičkim... bilo je zbilja svega i svačega, od Nima
preko raznih viedimenzionalnih tic-tac-toe do,
verovali ili ne, aha. ah se, dodue, pojavio
pred sam kraj "ivota" TI-59 (autor je, ako se
dobro sećam, Martin Sverber), nezamislivo sporo je igrao i ne
verujem da bi bio neki protivnik čak i malo boljem paceru, ali
znao je sva pravila i kako-tako logično igrao. Smetanje
aha u 1000 bajta, i to uz korićenje instrukcija
vieg nivoa nego to su mainske, predstavlja
pravi programerski podvig.
Instrukcije su, rekoh, bile neto vieg nivoa od mainskih, ali smo neprekidno tragali za nečim jo bliim procesoru. Na asembleru se nije moglo programirati, ali je postojalo i neto između: najpre smo pronali kod 82 koji, prema uputstvu, ne pripada ni jednoj instrukciji niti se moe normalno otkucati. Ali, moete da otkucate RCL 82, to bi bila naredba za pozivanje podatka iz registra broj 82, onda obrisati kod 43 koji predstavlja instrukciju RCL i tako dobijate novu naredbu 82, koju je tampač ispisivao kao HIR. Pokazalo se da je to skraćenica od Hierarchical Internal Register, i obezbeđuje pristup internim registrima koje kalkulator inače koristi kao aritmetički stek, poto u računanju tipa 2+3*(4+5*6) treba negde smestiti brojeve 2, 3 i 4 dok se računa 5*6. Ako odustanete od sloenijih izraza, ove registre moete da koristite kao dodatni prostor za skladitenje podataka... uz malo problema, poto treba znati kako kod iza HIR određuje operaciju sa registrom: HIR 0x je, na primer, zahtevao upis u registar x, HIR 1x je pozivao podatak itd. Zanimljivo je da nikada niko nije otkrio ta rade instrukcije oblika HIR 2x, iako je jedna od njih korićena u internom softveru koji radi sa statističkim funkcijama kao neki neobičan jump. Ako neko zna ta radi HIR 20, mene i danas zanima.
Drugo veliko TI-59 otkriće bio je ubrzani reim rada. Otkriveno je da skok na lokaciju 240 programa broj 2 u Master Library modulu (gde je, inače, "rep" neke instrukcije koji se protumači kao kod nepostojeće naredbe) ubacuje kalkulator u neki čudan reim u kome, izgleda, ne osveava sadraj ekrana, ali zato radi gotovo duplo bre. Bilo je tu i nekih ograničenja, od kojih je najneprijatnije bilo to se u ubrazanom modu nisu mogli pozivati potprogrami, ali potprogrami su potprogrami, a dvaput bre je dvaput bre... nedugo posle otkrića, dobar deo programa pisan je u ubrzanom reimu, iako je to zahtevalo sloenu proceduru prilikom pokretanja. Par godina kasnije otkriveno je da se do ubrzanog reima moe doći i lake, korićenjem takozvanih heksadekadnih kodova (na samom početku sam rekao da je registar imao neto vie od sedam bajta - pokazalo se da, ako na neki voleban način setujete neki od "nevidljivih" bitova, dobijate čitavu klasu novih naredbi). Ali, TI-59 je tada već bio na kraju "karijere", pa je čitavo veličanstveno polje tih kodova ostalo poprilično neistraeno.
Korisnici drugog tada popularnog depnog
računara, Hewlett-Packard 41C, nisu sebi dopustili
"luksuz" da neto ne istrae. HP-41C se
pojavio na tritu dve godine posle TI-59, i bio je,
gledano sa ove istorijske distance, neosporno napredniji
kalkulator, sledeća generacija. To, naravno, ni ja ni drugi
vlasnici TI-59 nismo ni slučajno priznavali (dodue, pomalo
sam promenio miljenje kada sam, jula 1981, konačno dobio
HP-41CV, koji i danas koristim) - prisustvovali smo začetku
budućih velikih rasprava na temu Spektrum ili Komodor, PC ili
Atari, Atari ili Amiga... Svoju superiornost, ili bar
ravnopravnost, vlasnici TI-59 su zasnivali na tome to je
njihov ljubimac imao duplo vie memorije: 120 registara
prema HP-ovih 64. Ali, na poleđini HP-41C nalazila su se četiri
porta, u koja se mogao uključiti po jedan modul - dodate četiri
memorijska modula, i eto "fantastičnih" 320 registara
ili 2.5 kilobajta. Moj HP-41 je pripadao sledećoj generaciji,
zvao se HP-41CV, gde V nije slovo nego rimski broj, i u startu
imao 2.5 kilobajta, uz sve slobodne portove.
HP-41C imao je alfanumerički ekran na kome su se mogla ispisivati (dodue prilično stilizovana) velika slova, pa je programiranje bilo mnogo komfornije - nisu morali da se pamte kodovi, već su se videli mnemonici instrukcija. Ali, korisnici ba nisu mogli bez internih kodova: članovi velikog američkog kluba PPC otkrili su i klasifikovali nekoliko bagova, koji su obezbeđivali pristup internim segmentima HP-41. Čitava procedura korićenje internih registara i "nepostojećih" naredbi nazvana je "sintetičko programiranje" - posle par godina grozničavog istraivanja, William Wickes je izdao knjigu o sintetičkom programiranju, koja je postala bestseler među vlasnicima HP-41. Samog dr Wickes-a je Hewlett-Packard "trenutno" zaposlio, dajući mu nesrazmerno vie para nego to je ranije zarađivao kao lekar, samo da ne bi vie "čačkao" po njihovom računaru - sintetičke instrukcije, naravno, nisu bile jednostavne ni pouzdane kao regularne, pa su mnogi početnici sa njima imali problema, zbog čega su se "penjali na glavu" Hewlett-Packard-ovim stručnjacima...
A depni računari u Jugoslaviji? 1982. i 1983. su bile njihove "zlatne godine" - bilo je dosta Texas-a i za nijansu manje HP-a, svi smo se poznavali, okupljali se na sastancima Kluba programera ETF, dok su se programi razmenjivali preko Kluba programera časopisa "Galaksija". "Galaksija" je iz meseca u mesec pisala o depnim programabilnim kalkulatorima, a uz svaki tekst objavljivan je opis desetak odabranih programa koje su napisali čitaoci. Svako ko napie i poalje program dobijao je besplatno dva druga programa, a ostali su mogli da naruče bilo koji program plaćajući samo fotokopiranje listinga i potarinu. Bili su to dani kada je softver bio besplatan, ali ne zbog toga to se piratovao, nego zato to je malo kome uopte padalo na pamet da bi svoj program trebalo da naplaćuje - bili smo srećni da neko koristi nae remek delo. A da su neki programi za depne računare bili remek dela optimalnog programiranja, bili su - desetak mojih programa je je u najjačim svetskim časopisima koji su se bavili ovom oblaću, (TI PPC Notes i PPC Calculator Journal), a moj HP-41CV i danas krasi Golden programmer nalepnica koju sam dobio od oficijelne Hewlett-Packard-ove biblioteke u Corvalisu, kada su prihvatili i uvrstili u biblioteku vie od deset mojih programa. Naravno, i tamo se za programe nije dobijao novac, već drugi programi ili, eventualno, neki modul ili drugo proirenje. Istina, u prospektima je pisalo da će onaj čijih 100 programa biblioteka primi, dobija san snova zvani Hewlett-Packard 85 stoni računar, ali niko nikada nije stigao ni blizu te brojke - kriterijumi su bili prilično visoki.
Prvi vesnik kraja programabilnih kalkulatora bio je Sharp-ov PC1211: bio je veći od TI i HP "digitrona", imao je vie (loije izrađenih) tastera, LCD ekran na kome se normalno mogao pisati tekst i bejzik interpretator u ROM-u. Neto kasnije pojavljuje se i Sharp PC1500, koji uz priključeni modul ima čak 16 KB memorije, odličan bejzik, ekran čijim se tačkama moe slobodno upravljati, kasetofon za snimanje programa, ploter/tampač u četiri boje... Mnogi vlasnici depnih računara tada su rekli da je bejzik jezik suvie visokog nivoa, da im ne treba, da vie neće poznavati "duu" svoje maine... ali, progresu se ne moe stati na put. Sa jedne strane mali bejzik računari, sa druge strane "veliki" Spektrum i Komodor... ako je nekome ba bilo do RCL i GTO kriptčnih instrukcija, uvek je mogao da programira na asembleru.
I tako je carstvo depnih računara počelo da se rui kao kula od karata: Texas Instruments i Hewlett-Packard su ukinuli zvanične časopise i biblioteke programa, časopis TI PPC Notes, koji je uređivao Maurice Swinnen, prestao je redovno da izlazi; PPC klub se raspao, Thommas Coppens, koji je vodio veliku nezavisnu biblioteku programa TI Soft u Belgiji prestao je sa razmenom, a i naa "Galaksija" je napustila "digitrone" i pokuala da oformi klub korisnika kućnih računara koji će razmenjivati programe na sličnim principima. Ali, amaterska razmena je jo malo koga zanimala - prolazilo je vreme malih računara koje smo voleli, i dolazilo vreme većih i moćnijih koji će moći mnogo bolje da se primene i od kojih će se stvoriti čitava jedna grana industrije. Ipak, kod svih nas koji smo se bavili ovim računarima ostalo je bar malo nostalgije koja, eto, stie i na Web
ta da kaem na kraju? Na depnim računarima sam naučio da programiram, i oni su dobrim delom odredili moju profesionalnu karijeru. Sećam ih se sa dosta nostalgije, ne zaboravljajući ono to sam na njima naučio. Početkom 1995, za vreme onih groznih restrikcija struje, radio sam na notebook-u dok se njegove baterije ne istroe a onda, posle skoro deset godina, uzimao HP-41CV i pisao neki program. Program koji, naravno, ne radi nita korisno, ali koji je interesantan zato to je svaki njegov bajt i svaki registar prava dragocenost koja se olako ne troi. Ponekad pomislim da je teta to se i danas, bar u nekoj meri, ne programira tako...