Olivetti/Programma 101/Generalforsamling 2014
Dansk Datahistorisk Forenings Olivetti P101 serie nummer 031344
Nu kører den: Et sandt mirakel, nok mest funderet i maskinens solide kontruktion. Ved sidste generalforsamling var det mest planer, her kommer realiteterne.
Olivetti Programma 101 historien
Olivetti Programma 101, erklæret som den første egentlige PC (Personal Computer), blev designet omkring 1962-1964 af entusiastiske og opfindsomme Olivetti-folk. På
https://www.curtamania.com/curta/database/brand/olivetti/Olivetti%20Programma%20101/index.html
ses bl.a. et billede af folkene bag, Perotto, Garziera, De Sandre, Toppi. Under udviklingsforløbet blev Olivetti's computer-division købt af General Electric, men 101'eren
was saved from the sale ... to GE thanks to an employee, Gastone Garziera, who spent successive nights changing the internal categorization of the product from "computer" to "calculator", so leaving the small team in Olivetti ... (https://en.wikipedia.org/wiki/Olivetti)
Maskinen blev produceret i omkring 40.000 eksemplarer til en pris af daværende omkring 3.000 dollars.
Hvad er det så for en maskine?
Vi kigger i manualen
https://www.curtamania.com/curta/database/brand/olivetti/Olivetti%20Programma%20101/more/General%20Reference%20Manual.pdf
som på side 3 har et fotografi og på side 6 et oversigtsdiagram, der viser
Printing Unit Control and Arithmetic Unit Memory Keyboard Magnetic Program Card
På side 7 har vi Memory ("magnetostrictive delay") med
10 registre: 1, 2: 2x24 = 48 programtrin D, E, F: 1-2 tal og/eller 24 programtrin B, C: 1-2 tal M, A, R: Arbejdsregistre
I alt 10x24 bytes á 8 bits = 256 bytes, en kvart K.
Magnetkort gemmer D, E, F, 1, 2.
Side 8 har detaljer om registrene, side 9 endnu et diagram og side 10 et billede, der bl.a. udpeger
Tænd/sluk knappen Grøn/rød lamper Reset knappen Decimal hjul Record program omskifter Print program omskifter Magnetkort indføring, udtag Papir rulle, kontrol, løsgørelse, fremføring Tastatur: VWXY, cifre,-, clear, S, ABCDEFR, /, ruder, stjerne Overførsel: Ned, Op, Byt. Regne: +-*/sqrt
Yderligere funktioner:
"Decimaler" ("Fraction") Absolut værdi Ubetingede hop og etiketter Betingede hop (Register A > 0) og etiketter Konstanter i programmet
Maskinen håndterer kun cifre i ind- og udlæsning, ikke andre tegn.
Konstruktionen er dækket af et patent, der indeholder en del nyttige og efter alt at dømme relevante beskrivelser:
https://www.google.com/patents/US3495222
Risskov Amtsgymnasium 1972-75
Selv stiftede jeg første gang bekendtskab med 101'eren gennem det eksemplar, der befandt sig på Risskov Amtsgymnasium i 1972, da jeg startede i 1. G. Gennem hele gymnasietiden skrev jeg forskellige programmer til denne maskine, mest matematiske beregninger, men også f.eks. beregning af dato for påskesøndag for et givet år. Det eneste overlevende program fra den tid er gamma-funktionen:
GammaFunction
Dansk Datahistorisk Forenings serienummer 031344
Dette eksemplar befandt sig i vores samling, den del, som vi har overtaget fra sparekassemuseet:
Sparekassemuseet
Med erindringen fra gymnasiet, gik jeg en gang, formentlig i 2011, på jagt i sparekassesamlingen og fandt der faktisk det nærværende eksemplar af 101'eren. Og så var det jo bare med at komme i gang, for den skulle da ud og køre.
Skille ad og rense
"Say no more."
Remme
Som det fremgår af f.eks.
var de remme, som driver mekanikken (blæser, tastatur, printer, magnetkortenhed) gået til og lå som smeltede bunker forskellige steder inde i apparatet. Efter en del tøven med overvejelser, fik jeg målt de nødvendige remme op og bestilt dem hos en professionel leverandør. Dyrt, men dejligt:
Strømforsyning
Med vanlig mangel på omhu, lykkedes det mig at få brændt noget elektronik i stykker, men heldigvis var Henrik og Ole i stand til at få sagerne bragt i orden igen:
"Så er der tegnefilm"
2-potenser
Ordre | Bemærkning | Register A |
---|---|---|
AV | Start: | 2^k (start med 1) |
A + | A = A + A | 2^k + 2^k = 2^(k+1) |
A Ruder | print A; | 2^(k+1) |
V | goto Start; | 2^(k+1) |
e-beregning
Ordre | Bemærkning | Register A | Register B | Register C | Register D | Register E |
---|---|---|---|---|---|---|
AV | Start: | - | 1 (konstant) | k (start med 0) | 1/k! (start med 1) | sum (start med 0) |
D Ned | A = D; | 1/k! | 1 | k | 1/k! | sum |
/V | if ( Register A <= 0 ) { | 1/k! | 1 | k | 1/k! | sum |
S | stop; | 1/k! | 1 | k | 1/k! | sum |
A/V | } | 1/k! | 1 | k | 1/k! | sum |
E + | A = A+E; | sum + 1/k! | 1 | k | 1/k! | sum |
A Ruder | print A; | sum + 1/k! | 1 | k | 1/k! | sum |
E Byt | E = A (etc.); | sum | 1 | k | 1/k! | sum + 1/k! |
C Ned | A = C; | k | 1 | k | 1/k! | sum + 1/k! |
B + | A = A+1; | k+1 | 1 | k | 1/k! | sum + 1/k! |
C Byt | C = A (etc.); | k | 1 | k+1 | 1/k! | sum + 1/k! |
D Ned | A = D; | 1/k! | 1 | k+1 | 1/k! | sum + 1/k! |
C Div | A = A/C; | 1/(k+1)! | 1 | k+1 | 1/k! | sum + 1/k! |
D Byt | D = A (etc.); | 1/k! | 1 | k+1 | 1/(k+1)! | sum + 1/k! |
V | goto Start; | 1/k! | 1 | k+1 | 1/(k+1)! | sum + 1/k! |
8 dronninger på samme skakbræt
Et nyligt program
http://datamuseum.dk/w/images/b/b0/OlivettiProgramma101queens.p101.asc
løser 8-dronningeproblemet, som er et puslespil, der går ud på at placere 8 dronninger på samme skakbræt, så ingen af dem efter skak-reglerne kan slå nogen af de andre. Med andre ord, der skal stå en dronning i hver kolonne og i hver række og endelig må der højst stå een dronning i hver af de 15 diagonaler på hver led.
Første løsning kan skimtes på
Afslutning
Et væsentligt udestående er magnetkortenheden, som i et vist omfang fungerer, rent mekanisk, men hvor det ikke er lykkedes at få afsat spor af data på et passende, magnetiserbart materiale.
Under hele forløbet har især torsdagsaktive været behjælpsomme på utallige måder og dertil har vi fået hjælp fra
https://www.museotecnologicamente.it
hvor bl.a. de oprindelige designere af 101'eren stadig huserer.