Gastone Garziera spiega il funzionamento della Programma 101

Gasto­ne Gar­zie­ra è nato a Vicen­za nel 1942. E’ inge­gne­re e infor­ma­ti­co ita­lia­no. Insie­me agli inge­gne­ri Pier Gior­gio Perot­to e Gio­van­ni De San­dre ha rea­liz­za­to nel 1964 la “Pro­gram­ma 101” o “P101” dell’Olivetti, il pri­mo per­so­nal com­pu­ter del­la sto­ria, cioè il pri­mo cal­co­la­to­re com­mer­cia­le ad esse­re digi­ta­le, pro­gram­ma­bi­le, pic­co­lo ed eco­no­mi­co.

I regi­stri del­la P101 con­ten­go­no fino a 22 cifre[40] (con segno e vir­go­la) oppu­re 24 istru­zio­ni com­po­ste ognu­na da un carat­te­re e un sim­bo­lo. Il lin­guag­gio di pro­gram­ma­zio­ne è alfa­nu­me­ri­co e sim­bo­li­co, ana­lo­go a quel­lo dell’Assem­bler, ma più sem­pli­ce, simi­le al “lin­guag­gio mac­chi­na” dei gran­di cal­co­la­to­ri (come ad esem­pio la serie ELEA, anni ’50 ini­zio anni ’60) ma leg­ger­men­te più evo­lu­to anche se con meno istru­zio­ni. Ad esem­pio, per effet­tua­re un sal­to in memo­ria nel­la P101 non si dove­va più indi­ca­re un indi­riz­zo pre­ci­so ma solo un rife­ri­men­to; la P101 gesti­va auto­ma­ti­ca­men­te la vir­go­la e dispo­ne­va di fun­zio­ni mate­ma­ti­che com­ple­te. Il lin­guag­gio di pro­gram­ma­zio­ne era pro­get­ta­to per esse­re sem­pli­ce all’utente ine­sper­to così da supe­ra­re lo sco­glio di una visio­ne con­tem­po­ra­nea dell’ epo­ca di un com­pu­ter desti­na­to solo a tec­ni­ci spe­cia­liz­za­ti.

Nel­la P101 il codi­ce di un pro­gram­ma pote­va usa­re fino 120 istru­zio­ni (memo­riz­za­bi­le su uno dei due lati del­la car­to­li­na magne­ti­ca), ogni istru­zio­ni occu­pa­va “1 Byte”. Nel­la ver­sio­ne base dell’Elea 9003 la memo­ria tota­le era di 20 KB, un’istruzione occu­pa­va 8 carat­te­ri (di 6 bit) quin­di 120 istru­zio­ni uti­liz­za­va­no qua­si l’equivalente di 1 KB. Nel­la P101 era pos­si­bi­le anche usa­re pro­gram­mi com­po­sti da oltre 120 istru­zio­ni usan­do più car­to­li­ne magne­ti­che e sal­van­do i dati tem­po­ra­nei nei regi­stri di memo­ria. Nel­la P101 era pos­si­bi­le crea­re dei sot­to pro­gram­mi (o sub­rou­ti­ne) cari­ca­bi­li tra­mi­te car­to­li­na magne­ti­ca dopo aver cari­ca­to il pro­gram­ma prin­ci­pa­le, per modi­fi­car­lo o inse­ri­re altri dati.

Nel­la Pro­gram­ma 101 si ope­ra­va solo su dati nume­ri­ci a cau­sa del­la memo­ria limi­ta­ta, ma la pro­gram­ma­zio­ne e la stam­pa inclu­de­va anche carat­te­ri alfa­nu­me­ri­ci. L’evoluzione di altre sim­bo­lo­gie e moda­li­tà gra­fi­che si è svi­lup­pa­ta di pari pas­so con l’aumento di poten­za di cal­co­lo e di memo­ria. A tito­lo di esem­pio pos­sia­mo ricor­da­re l’ENIAC (quar­to com­pu­ter elet­tro­ni­co digi­ta­le del­la sto­ria) che uti­liz­za­va il siste­ma nume­ri­co deci­ma­le e la sua memo­ria pote­va con­te­ne­re solo 20 nume­ri di 10 cifre.

Limi­ta­ta­men­te alla memo­ria e alle sche­de magne­ti­che si pote­va ese­gui­re ricer­che e ordi­na­men­ti, il suo uti­liz­zo spa­zia­va dall’archiviazione dati e con­ta­bi­li­tà alle simu­la­zio­ni scien­ti­fi­che e finan­zia­re. I regi­stri per memo­riz­za­re i dati sul­la car­to­li­na era­no 3 (D, E, F) essi era­no divi­si­bi­li per due in manie­ra auto­ma­ti­ca rad­dop­pian­do i regi­stri di memo­ria, per nume­ri di poche cifre era pos­si­bi­le usa­re altre tec­ni­che per inse­rir­li tut­ti in un uni­co regi­stro. Que­sto vale anche per i regi­stri B e C.

Le istru­zio­ni pre­de­ter­mi­na­te era­no quel­le riguar­dan­ti:

  • le quat­tro ope­ra­zio­ni mate­ma­ti­che fon­da­men­ta­li (som­ma, sot­tra­zio­ne, mol­ti­pli­ca­zio­ne e divi­sio­ne);
  • la radi­ce qua­dra­ta;
  • ope­ra­zio­ni con i regi­stri: azze­ra­men­to, spo­sta­men­to di dati tra di essi, let­tu­ra dall’utente;
  • defi­ni­zio­ni di eti­chet­te di riga, sal­ti con­di­zio­na­ti e incon­di­zio­na­ti;
  • stam­pa del valo­re di un regi­stro.

La memo­ria era orga­niz­za­ta in 10 regi­stri, 3 dei qua­li di cal­co­lo (A, M, R), 2 di memo­ria (B, C) e ulte­rio­ri 3 di memo­ria dati e/o memo­ria di pro­gram­ma (D, E, F, ripar­ti­bi­li a secon­da dell’esigenza). Gli ulti­mi 2 regi­stri era­no riser­va­ti alla memo­riz­za­zio­ne del pro­gram­ma (non sono defi­ni­ti da let­te­re). Uno dei regi­stri di cal­co­lo, iden­ti­fi­ca­to dal­la let­te­ra “M”, era desti­na­to allo scam­bio di infor­ma­zio­ni con la memo­ria ed imma­gaz­zi­na­va anche i dati rice­vu­ti dal­la tastie­ra.

La stam­pa avve­ni­va su un nastro di car­ta e i pro­gram­mi pote­va­no esse­re regi­stra­ti su sche­de del­le dimen­sio­ni appros­si­ma­ti­ve di 10 cen­ti­me­tri di lar­ghez­za per 20 di altez­za che reca­va­no due piste magne­ti­che. Tali piste era­no leg­gi­bi­li una alla vol­ta, inse­ren­do la sche­da nell’apposito let­to­re pri­ma in un sen­so, poi nell’altro.

La memo­ria di lavo­ro era a linea di ritar­do magne­to­strit­ti­va, del­la capa­ci­tà di meno di un quar­to di kilo­by­te; l’elettronica era rea­liz­za­ta in com­po­nen­ti­sti­ca discre­ta (tran­si­stor inpac­ka­ge TO-18 e dio­di mon­ta­ti su baset­te in bache­li­te). La mac­chi­na non era dota­ta di micro­pro­ces­so­re, come d’altronde non lo era nes­sun com­pu­ter rea­liz­za­to fino a quel tem­po.