Olivetti/Programma 101/Generalforsamling 2014

Fra DDHFwiki
Spring til navigation Spring til søgning

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

Beregn e = 1+1/1!+1/2!+1/3! ...
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.