Il CANE, com’era e come lo abbiamo ricostruito

Giovanni A. Cignoni, Giuliano Pacini


Il CANE era pensato per avvicinare gentilmente gli studenti alla comprensione intima del funzionamento dei calcolatori: una consapevolezza che non si può acquisire solo programmando in linguaggi ad alto livello. Il concetto è spiegato esplicitamente da Grasselli nelle primissime pagine di [23] con una metafora culturale che invitiamo a leggere direttamente. Grasselli avverte subito, citando Konrad Lorenz, che la cosa non è senza impegno.

Perciò, per aiutare il cammino degli studenti, il CANE era nato semplice [17, 18]. La memoria era di 512 celle di 18 bit, sufficienti per gli esercizi di programmazione. Il processore aveva 2 registri di lavoro a 18 bit e 7 registri indice a 9 bit usabili come contatori o modificatori d’indirizzo. Per comprendere la macchina, agli studenti erano esposti anche il contatore di programma, il registro dell’istruzione corrente, i registri di indirizzamento e di lettura/scrittura della memoria.

Le istruzioni macchina erano 64. Trasferimenti fra memoria e registri, operazioni aritmetiche e logiche, confronti e salti ben rappresentavano le istruzioni base delle macchine del tempo. Facevano invece eccezione le istruzioni di utilità per le conversioni binario/decimale e per la gestione del lettore di schede e della stampante. Le prime, sofisticate e computazionalmente onerose, nei calcolatori reali sono di solito realizzate come routine di sistema e non come istruzioni di macchina. Le seconde sono proposte in una forma semplificata che nasconde molta della complessità della gestione delle periferiche. Entrambi i casi, con soluzioni diverse, ben rappresentano la natura didattica del CANE: affinché gli studenti si concentrassero sugli aspetti più interessanti degli algortimi assegnati come esercizi di programmazione, erano loro risparmiati compiti noiosi o troppo difficili.

Il CANE prevedeva anche una consolle. Mostrava lo stato di tutti i registri, dei bit di confronto e di traboccamento; ospitava i pulsanti per la sequenza di avvio da lettore di schede e per il controllo dell’avanzamento singolo o continuo dei programmi. La consolle però non fu mai simulata: d’altra parte, gli studenti non avrebbero mai potuto vederla nel contesto operativo del Centro Nazionale Universitario di Calcolo Elettronico (CNUCE) che ospitava l’IBM 7090 sul quale il CANE era simulato.

Il 7090 era stato inaugurato nel 1965 insieme all’apertura del Centro. Proprio nei primi anni di Scienze dell’Informazione arrivarono al CNUCE macchine più moderne: l’IBM 360/67 nel 1971 [22] e l’IBM 370/155 nel 1973 [31]. Il 7090 fu però mantenuto in servizio per diversi anni [27]. Gli studenti avevano accesso al CANE attraverso le procedure con cui tutti gli utenti del CNUCE usavano il 7090 [10]: in orari prestabiliti i programmi (pacchi di schede perforate) erano consegnati agli operatori del centro, i lavori erano pianificati ed eseguiti nel corso della giornata successiva, alla i risultati (stampe su foglio continuo [36]) venivano resi disponibili per essere ritirati.

Quindi la consolle del CANE era descritta per dare agli studenti un’idea concreta della macchina, ma sarebbe stata inaccessibile al pari della consolle del 7090. Gli studenti potevano però figurarsi le azioni di un ipotetico operatore che caricava i programmi del CANE e ne controllava l’esecuzione.

L’architettura del CANE, dalla fig 3.11 della dispensa di Grasselli

La composizione di un pacco di schede per eseguire i programmi per il CANE sul 7090, dalla fig. 9 della Nota Tecnica C70/1 di Grasselli e Pacini

La sala dell’IBM 7090 al CNUCE, in fondo la stampante 1403 e il lettore di schede 1402

Una strana divisione, da pag. 9 della Nota Tecnica C70/1 di Grasselli e Pacini

Per preparare un programma per il CANE, il pacco di schede doveva iniziare con i programmi per il 7090 SystemCANE e SimulCANE. Caricati ed eseguiti su 7090 realizzavano l’interpretazione delle schede successive da parte del CANE simulato. Il programma vero e proprio del CANE iniziava dopo la scheda di intestazione che, oltre al nome dell’autore del programma, conteneva direttive sull’esecuzione da parte del SimulCANE.

Il simulatore web realizzato oggi permette di lavorare con il CANE come un operatore: esiste una consolle e si ha accesso alle periferiche del 7090, il lettore di schede IBM 1402 e la stampante IBM 1403, come se fossero collegate al CANE. Sul lettore si può caricare direttamente un programma per il CANE: un pacco di schede che inizia con il caricatore minimo, cioè il programmino di 4 istruzioni su una singola scheda che permetteva di caricare in memoria il programma utente codificato sulle schede successive. Poi si preme il pulsante L e si vede cosa succede.

Come tutte le ricostruzioni, anche quella del CANE ha posto dilemmi e richiesto scelte. Sono stati risolti cercando di interpretare al meglio le intenzioni didattiche originali. Per esempio, già l’accesso alla console e alle periferiche è una deviazione rispetto al CANE originale. È motivata dalla volontà di offrire oggi quel che le tecnologie di ieri non permettevano, ma che gli autori avrebbero desiderato pensando allo scopo del CANE: spiegare il funzionamento dei calcolatori.

Altre scelte sono decisamente più tecniche, ne discutiamo brevemente un paio. I più curiosi troveranno nel manuale [46] tutti i dettagli sul CANE web, dalle interfacce per semplificarne l’uso alle scelte implementative. Gli impazienti possono provare CIAO MONDO.

Secondo [18] e [23] il CANE rappresenta i numeri negativi in complemento a 2. Tuttavia, nelle stesse pagine si dichiara un intervallo simmetrico, tipico della rappresentazione in modulo e segno. La contraddizione è rimasta insoluta, per non far pensare a un errore, il CANE web funziona con la rappresentazione in complemento a 2 standard e gli interi vanno da -217 a 217-1.

La divisione del CANE era stata implementata secondo un algoritmo descritto in [06]. È però una divisione particolare per la quale, per esempio, 128 : 10 fa 13 con resto -2. Per il CANE web si è scelto come default la divisione standard nella quale il resto ha sempre il segno del dividendo; un’opzione permette di attivare la divisione originale.

In generale, il criterio adottato nel risolvere contraddizioni o nascondere “stranezze”, è stato di facilitare l’uso a chi si avvicina al CANE per capire come funziona un calcolatore. Soprattutto considerando che il CANE web ha anche il senso di mostrare agli utenti dell’informatica di oggi com’era fatto e si come si usava un tipico calcolatore del 1970.