perjantai 3. marraskuuta 2017

Kuulumisia pitkän tauon jälkeen


Nyt alkaa olemaan jo aika päivittää blogiin jotain, sillä edellisestä kerrasta on jo yli vuosi ja kommenttiosuuksissa on tullut parikin kertaa luvattua uutta materiaalia milloin mihinkin mennessä. Ikävä kyllä vuosi on ollut niin kiireinen ja syy se tuttu, oma yritys ja ne kymmenet siihen liittyvät projektit.

Ajattelin ensin viimeistellä ja julkaista yli vuosi sitten aloittamani IBM:n kovalevynjutun, mutta yksinkertaisesti se ei ole vieläkään valmis ja jutun koko on turvonnut raamatullisiin mittasuhteisiin. Kovalevyihin liittyvä historia, mekaniikka, elektroniikka, formaatti, rajapinnat, softa ja muu on monimutkainen ja vieläpä äärettömän sekava kokonaisuus IBM:n tapauksessa.

Mutta tuon valmistumista odotellessa voidaan ottaa sillisalaattimainen yhteenveto mitä kaikkea vuoden aikana on tapahtunut lahtelaisella muinaistietokonerintamalla. Aloitetaan Suomen tietokonehistoriaa ravistelevalla jutulla.


Esko Koho ja Suomen ensimmäinen kotitietokone



Mikä oli Suomen ensimmäinen kotitietokone? Moni voisi arvata että Telmac, mutta eipä ollut. Se oli Arja, Esko Kohon omatekemä TTL-pohjainen tietokone yli 45 vuoden takaa! Hän aloitti Arjan teon kotonaan 1970-1971, joten se on hyvinkin varmasti Suomen ensimmäinen yksityisomisteinen tietokone ja ensimmäinen yksityisesti rakennettu kone.

Kohon kone ei ole ollut yleisessä tietoisuudessa ja se olisi saattanut jäädä täysin unholaan, ellei minulle olisi soittanut Arja-Liisa Outokummusta. Arja-Liisan tarina on ihan oman juttunsa aihe ja käyn häntä vielä myöhemmin haastattelemassa, sillä hän ohjelmoi IBM 1800 aka Heiliä Vuonoksen rikastamolla 70/80-luvulla. Hänellä oli puhelimessa paljon kerrottavaa Heilin ajoista, iso kiitos Arja-Liisalle juttutuokiosta, mutta tähän juttuun liittyen, hän kertoi sen aikaisen IBM:n huoltomiehen nimen. Herran nimi oli Esko Koho.

Kaivelin yhteystiedot ja soitin Eskolle. Eskolla olikin paljon kerrottavaa, hän oli huoltanut mm. kaikkia Suomen IBM 1800:sia ja ollut mm. Nokia Elektroniikkalla töissä. Mutta todellinen pommi oli kun Esko kertoi 70-luvulla tekemästään tietokoneesta! Olin päällä puuhun lyöty, että joku siis oli todella oli tehnyt tietokoneen kotonaan 70-luvun Kekkosen Suomessa.

Antaa herran itsensä kertoa mistä oli kyse:

Esko Koho 9.5.2017
"Tuosta minun vanhalla TTL logiikalla tehdystä tietokoneesta ei näköjään ole mitään fyysistä tavaraa tallessa mutta muutamia kuvia sentään löytyy. Kone oli rakennettu työpöydän kaappiin ja tuli huoltoasentoon liukukiskoilla.Etuseinässä osoite- ja datalamput sekä kytkinrivistö josta pääsi dataa syöttämään suoraan koneen muistiin (bootstrap loader ainakin koska koneessa ram-muisti). Datavalojen vieressä valintakytkin josta voi valita minkä rekisterin sisältöä haluaa katsoa.
Power+ backplane kuvassa näkyy koneen takaosa kokonaisuudessaan (saranoitu etuseinä avattuna) ja CPU kuvassa itse keskusyksikköä joka on rakennettu reikälevylle ja johdotus wrap-langalla. 
Projekti alkoi 1970 tai 1971. Kun CPU oli hengissä, ostin käytetyn teletypen muistaakseni Accuraylta jolloin minulla oli nyt koneeseen konsoli, rekänauhanlukija ja -lävistäjä.Seuraava projekti oli assemblerin koodaus ja tässä vaiheessa totesin että teletypen reikänauhanlukija oli onnettoman hidas, joten Imatran ammattikoulun instrumenttiosaston kanssa yhteistyössä tehtiin steppermoottorilla toimiva optinen reikänauhanlukija jossa minä vastasin logiikasta ja ammattikoulu teki mekaanisen puolen.
Koska bootstraploederin käsin syöttö alkoi tympäistä, ja E-G Summan tehtailla oli kaveri jolla oli polttolaite ROM-muistille hän teki ystävällisesti minulle muistipiirin jossa oli koneen käynnistämisessä tarvittava loader jonka jälkeen koneen käyttö tuntui jo olevan yhtä juhlaa :)
Joskus 1970 luvun puolivälissä sain vielä IBM:ltä lahjoituksena 8 tuuman floppyaseman. Rakentelin tälle ohjainkortin ja sen jälkeen reikänauhan lukija olikin jo historiaa. 
Projekti pysähtyi kun aloin rakentamaan omakotitaloa ja perheeseen oli lapsikin syntynyt. Kun talo oli valmis ja aikaa olisi ollut jatkaa projektia, pistin taas koneen tulille mutta kuinkas ollakkaan, savut pääsi karkuun koneen sisältä. Kun tutkin ongelmaa, huomasin että minun pikkupoikani oli keksinyt hauskan leikin ja työntänyt koko koneen nauloja täyteen.
Koska koneen dokumentointi oli tyyliin tupakkasikin kannessa / eväspaperin kulmassa erilaisia ideoita, oli parasta hylätä tässä vaiheessa koko projekti. Olihan jo siinä vaiheessa mikroprosessoritkin keksitty.  
Idean pohjana oli PDP8, eli myös minun koneeni oli 12 bittinen ja osoiteväylä 15 bittinen joista 12 bittiä oli itse osoitetta ja kolmella bitillä määriteltiin address-page, eli osoiteavaruus 3 X 4 kilosanaa.Osoite- ja dataväylät erilliset. 
Käskykanta oli ihan hardwarekoodattu TTL-logiikalla ja muistaakseni pohjana oli PDP8:n käskykanta minun omilla lisäksilläni/modifikaatioillani höystettynä.Eihän minulla noin "hienoja" piirejä ollut kuin 74181 vaan sen edeltäjä, eli 7480 + koplementti tehtiin 7486 exlusive or piireillä. 
Rekistereiden määrästä ei minkäänlaista muistikuvaa ja valitettavasti tuo etuseinän valokuvakin on sen verran sivusta, ettei kuvasta näe data-valojen vieressä olevan valintakytkimen tekstejä.
Kuvasta voi päätettä etta ainakin kuusi asentoa kytkimellä on mutta onko kaikki rekistereitä? (Tuskin). Ja aika tarkkasilmäinen olet :) Koneen nimi oli Arja, eli silloisen tyttöystäväni, ja myöhemmin myös ensimmäisen vaimoni nimi. Kun kommentoit että kone oli hieno ja lähes kuin tehdastekoinen, täytyy paljastaa että meillä oli Nokian labrassa käytettävissä myös protopaja jossa kaverit väsäsivät koteloiden prototyyppejä ja myös minun koneeni peltiosat on tuon protopajan tuotantoa. Kun vein heille piirustukset, he ystävällisesti kysyivät vielä että tuleeko musta vai hopean värinen eloksointi :). Etuseinän tekstit on siirtokirjaimilla ja niiden päällä suojalakka."

Milloin Arja sitten oli valmis, onkin vaikeampi kysymys. Ainakin CPU on pyörinyt joskus 1971 ja 70-luvun puolivälissä on ollut koko paletti täysin kasassa.

Aika pahanpa pistit kun kyselit tuosta tietokoneestani milloin se oli valmis. Ota huomioon että puhutaan noin 45 vuotta vanhoista tapahtumista joten ihan hatusta pitäisi vuosilukuja vetää..
Ajatellaanpa että projekti alkoi 1970 tai 1971.
 
Kun sinulla on CPU idea valmiina ja jo ensimmäiset rekisterit / aritmetiikkayksikkö kasattuna  ja poweri hengissä niin totta kai haluat mahdollisimman pian nähdä että toimiiko koko CPU oikeasti. Vauhti on tuossa vaiheessa niin kova että yöunetkin tahtoo jäädä. Eli Datakytkimistä toimiva CPU on tosi nopeasti kasattu yksinkertaisesti siitä syystä, ettet malta pitää taukoa rakentamisesta, eli puhutaan tämän jakson toteutumisesta kuukausista. 
Tämän jälkeen sitten alkoi kehitystyö käskykannan laajennusten osalta ja se jatkui suht koht pitkään kun en löytänyt edullista konsolia, joten piti vain puurtaa CPU:n parissa.
Jos katsottaisiin että itse tietokone oli periaatteessa valmis kun siinä oli teletype kytkettynä niin en edes siihenkään uskalla vuosilukua veikata, koska käytettykin teletype kohtuuhinnalla oli vaikea löytää ja sen löytämiseen paloi kohtuullisen paljon aikaa.
 
Seuraava jakso – Assembleri + optinen lukija tuli taas kohtuullisen nopeasti.
Tässä vaiheessa koneella tehtiin jo “ensimmäiset sovellusajot” sillä Lappeenrannan kauppatieteiden opiskelijoilla oli joku opinnäytetyö johon kuului laaja gallup (en kyllä muista aihetta). Opinnäytetyöhön kuului myös näiden gallup tulosten analysointi ja he kyselivät onnistuisiko minun koneellani :)
 
No rakentelin softan ja opiskelijat syöttivät lähtötiedot ohjelmaan ja kone sylki yhteenvedon teletypellä paperille. 
Varsinaisesti muita hyötyohjelmia en koneelle tehnyt vaan kaikki muut olivat pelkästään erilaisia testiohjelmia. 
Tietokoneeni pysyi tässä kokoonpanossa suht pitkään kunnes viimeinen suurempi rutistus oli tuo floppydiksin ymppääminen koneeseen ja se tapahtui tosiaan tuossa 70-luvun puolivälissä mutta tarkkaa vuotta en tuollekkaan uskalla sanoa. 1978 alkoi kuitenkin talonrakennusprojekti joten kaikki tuo on tapahtunut ennen sitä.

Kuvista voi päätellä että kone oli todella laadukasta työtä ja pitää muistaa vielä, että tämä on ollut yhden miehen visio ja toteutus, eikä suinkaan minkään jättiläistalon miljoonaprojekti. Ajatelkaa millainen duuni on ollut tehdä tietokone TTL-logiikkapiireistä ilman mitään simulaation mahdollisuutta tai muita kehitystyökaluja. Harmi kun kone kärsi peruuttamattoman vaurion, eikä edes mitään kytkentäkuvia jäänyt jäljelle, nekin kun olivat oikean keksijän tyyliin piirretty "tupakka-askiin" ;)

Koholla ei koskaan ollut tarkoitusta kaupallistaa Arjaa, mutta olisiko se voinut olla suomalainen menestystarina? Oma mielipiteeni on, että sillä olisi ollut hyvin teoreettinen mahdollisuus. Itsessään TTL-logiikassa ei ollut vikaa, se olisi voinut tekniikkana kantaa 80-luvulle, mutta kilpailu oli kovaa. Tietokonevalmistajia oli varmaankin jo sata 70-luvun alkupuolella ja miten tuosta joukosta olisi voinut sitten erottua? Yhdelle miehelle aivan liian iso kakku syötäväksi; softan ja raudan kehitys, myynti&markkinointi jne. Ja vaikka taakse olisi tullut isompi toimija, olisi menestys silti ollut kiinni planeettojen asennosta jopa kotimaassakin.

Joka tapauksessa Arja on ollut maailman mittakaavassakin ainutlaatuinen projekti ja kuuluu ehdottomasti Suomen ensimmäisiin ja merkittäviin tietokoneisiin siinä missä EskoReflacStrömberg Selco-1000, Telmac tai Nokian Mikko.



Nokia Mikko -minitietokone



Eskon koneesta voimmekin sujuvasti jatkaa toiseen aitoon suomalaiseen minitietokoneeseen, Nokia Mikkoon. Kyse ei siis ole hyvin tunnetusta MikroMikosta, vaan Erkki Rajulinin Nokia Elektroniikalla tekemästä TTL-pohjaisesta minitietokoneesta, joka tuli alkujaan PDP-8 korvaajaksi Nokian mittausjärjestelmistä, mutta levisikin lopulta mm. pankkimaailmaan. Fujitsulla on kattava historiikki Mikosta, joten en sitä tähän ala toistamaan, kun en varmasti parempaan pysty. Mutta kiinnostuneille keräsin tänne kaikki Mikon esitteet.


Mikko 3/38

Vaikka Mikon yleinen historia on tallella, niin tekninen puoli ei. Nokia Elektroniikan (myöhemmin Nokia Datan) nykyisellä omistajalla Fujitsulla ei ole tallella mitään dokumentaatiota liittyen Mikkoon. Eikä itse asiassa kellään muullakaan tietääkseni, ei edes alkuperäisellä keksijällä Erkki Rajulinilla.

Ehkä jollain ex-huoltomiehellä voisi olla huoltoon liittyviä mappeja nurkissa, mutta luulen ettei mikrokoodilistauksia jaettu huoltomiehille enää 70-luvun lopussa, jaettiinko edes korttien täysiä kytkentäkuviakaan..? Tässä on katoamassa, ellei jo ole kadonnut, aika iso pala suomalaista tietokonehistoriaa.

Mikkoja sai monessa muodossa.

Oma kiinnostukseni Mikkoa kohtaan on ollut vähäistä väärinkäsityksestä johtuen. Olin vakaassa uskossa aiemmin, että Mikko 3 on Intel 8080-pohjainen ja sen edeltäjät ovat olleet marginaalisia wire-wrapattuja TTL-virityksiä. Fujitsun historiikin luettuani tajusin virheeni ja kiinnostus tätä huonekalun näköistä tietokonetta kohtaan suorastaan räjähti. Ja kun tuollaista ei ollut omassa kokoelmassa, piti etsiä paikka missä moisen ihmeen pääsisi näkemään. Mikko 3/16 löytyi Saloisten pirtiltä Raisiosta ja 3/38 tutusta Kanavuoren tietokonemuseosta. Isot kiitokset kummallekin instanssille, kun sai pistää koneet osiksi ja kuvata.


3/16 CPU-kortti muutamalla merkinnällä.

Nopean tutkimuksen perusteella 3/16 CPU:ssa on ytimenä mm. Fairchildin 9340 ALUt ja 9338 rekisteripiirit. ALUksi 9340 melko outo valinta, sillä kyseessä on eräänlainen 74181:n ja 74182:n harvinainen yhdistelmä, eikä itselleni tule mieleen toista minitietokonetta joka olisi samaa piiriä käytetty.

Fairchildin 9340:n kuvaa ei tähän hätään löytynyt, mutta 9341:n, joka on siis sama kuin TI:n 74181. Tästä voi jotain päätellä millaisin osin koneita tuolloin loihdittiin. Kuva peräisin upeasta Fairchildin kirjasta A Solid State of Progress, joka on ladattavissa Bitsaversista. Kuvatekstinä kirjassa "1969 The Interconnection masks on this device were generated with Fairchild's computer-aided design system and implemented with the first three layer metal process. This a 48-gate custom TTL logic gate array". Computer-aided design ja vuosi 1969, melkosta!

Näiden piirien määrästä ja spekseistä sekä muista 74-sarjan piireistä voi päätellä dataväylän leveyden olevan 16-bittiä, osoiteväylän 20-bittiä ja koneessa on 8 rekisteriä (toki tämän saman voi päätellä esitteestäkin ;) CPU:n toimintaa tahdistaa PROMeille tallennettu horisontaalinen mikrokoodi. Siis hyvin tyypillinen oman aikansa edustaja, samankaltaisella reseptillä veivattiin useiden kymmenien valmistajan voimalla tietokoneita noihin aikoihin, mutta Mikon puolustukseksi kuitenkin voi sanoa, ettei se ole kopio mistään.

Sivun liittimet ovat ilmeisesti jotain mikrokoodi-PROMien testaus- tai laajennusliittimiä? Ainakin voi päätellä koodin leveydeksi 24 bittiä ja mikrokoodin osoiteavaruudeksi 10 bittiä. Muita pieniä detaljeja voi löytää levyltä, mm. tekstit LMAR ja HMAR (Low/High Memory Address).

















Uudempi 3/38 puolestaan on tehty AMD AM2900 -viipaleprosessoripiirisarjan ympärille. Tämä malli ei läheskään ole niin jännittävä kuin tuo vanhempi, sillä näkisin kyse on vain alkuperäisen Mikon emulaatiosta nopeammalla raudalla.
Kanavuoren 3/38:n CPU AMD:n A2900-sarjalaisilla.

Molemmissa tietysti on muitakin kortteja, DRAM-muisti, IO-adapteri ja tietoliikenneadapteri. Nämä eivät nähtävästi eroa toisistaan uudemman ja vanhemman kolmosen välillä. Kun IO-adapterilta löytyy Intel 8085 sekä 8257 DMA-ohjaimia, on melko helppo arvata että IO-laitteet pääsevät omatoimisesti muistiin käsiksi. Tietoliikenneadapteri (synkroninen linjaohjain) on sitten erikoinen, sillä se on omalla tavallaan ihan oma tietokoneensa 74181 ALUineen ja mikrokoodeineen.

Olen nyt pyöritellyt mielessä Mikon käänteismallintamista, nimenomaan tuon vanhemman version, mikäli dokumentaatiota ei löydy. Piirilevyt ovat kaksipuoleisia ja osatiheydeltään melko vaatimattomia. PROMitkin saisi dumpattua melko vaivattomasti. Jos koneen saan jostain kokoelmaan tai lainaan, ei tuo ihan mahdoton projekti olisi. Mikko ei edes pitäisi olla erityisen harvinainen, sillä sitä valmistettiin tuhansia mm. valtion laitoksille. Nyt saa todellakin vinkata mistä voisi löytää Mikkoon liittyvää materiaalia tai kokonaisen koneen!


Uusia leluja


Äänekoskelta tuli saatua toinen mieluisa lahjoitus. Seppo Rajalinin kätköistä löytyi HP9845B sekä Nokia Autocook -prosessiohjaimen mapit ja sen aivoina toimineen PDP-8/E -tietokoneen kortit. Ikävä PDP-8:n kyllä koneen kuoret olivat joutuneet teille tietämättömille, mutta eiköhän jostain vielä korvaavat löydy (vihjeenä: saa antaa jos löytyy!).

Tässä ollaan taas niin suomalaisen tietokoneteollisuuden juurilla ja jos olet ollut tekemisissä Autocookin tai muun Nokia Elektroniikan tuotteen kanssa, otathan yhteyttä! Skannailen näistä valittuja paloja blogiin kunhan sen aika koittaa!


lauantai 11. kesäkuuta 2016

IBM 1620 Model I - Uusi lelu kokoelmaan


On vuosi 1959. Maailman ensimmäinen sääsatelliitti Vanguard 2 laukaistaan Cape Canaveralista ja Donald Cambell rikkoo veneiden nopeusennätyksen Blue Bird K7:lla 418.99km/h keskinopeudella. Radiossa soi Buddy Holly ja sukkahousut keksitään. Poliittista draamaa nähdään, kun Nikita Hruštšov ja Richard Nixon väittelevät Moskovan messuilla. Nixon esittelee astianpesukonetta, johon Hruštšov toteaa ettei Neuvostoliitossa ole suhtauduttu naisiin mokomalla "kapitalistisella asenteella" (...todellisuus taisi olla, ettei Neuvostolliitossa ollut vain astianpesukoneita).

Aika kului, Nixon sössi uransa Watergate-skandaalilla, Neuvostoliitto hajosi, mutta astianpesukoneet jäivät. Jäi toki noista ajoista toki monikäyttöiset sukkahousutkin, jotka sopivat niin koiran talutuspannaksi kuin viihdekäyttäjän päähineeksi Siwa-reissulle, ainakin jos Niksi-Pirkkaan on uskomista.

Hämmästyttävää kyllä, Vanguard 2 on yhä edelleen seuranamme, kiertäen maapalloa noin 1500 kilometrin korkeudessa. Sopivissa olosuhteissa sen voi yötaivaalta löytää, jopa paljaalla silmälläkin.

Näiden aasinsiltojen kautta pääsemmekin itse asiaan, sillä samaan aikaan kun suurvaltojen päämiehet kävivät tasa-arvodebattia, IBM räjäytti pankin uudella tietokoneellaan.

IBM 1620. (Kuva: http://bitsavers.trailing-edge.com/pdf/ibm/1620/fe/227-5647-0_1620_E_Level_CE_Manual_of_Instruction_1962.pdf)
Jaa millä? Miltä kuulostaa puolisarjamaisesti toimiva desimaalikone, joka on tehty hyvin varhaisista germanium-transistoreista, ferriittirengaslogiikasta sekä releistä. Kone ei osaa laskea raudalla ollenkaan ja lisäksi kone esittää jokaisen kymmennumerojärjestelmän numeron kuudella bitillä. Se on IBM 1620, huikea kone ja omintakeinen keksintö, jolla ei ole mitään tekemistä minkään nykykoneen kanssa.



Lisää romua talliin 


Ei se täydellinen ole, mutta erittäin hyvä lähtökohta.
Aloitetaan alusta miten tälläinen harvinaisuus eksyi kokoelmaani. Kanavuoressa Jyväskylän kupeessa sijaitsee yksi Suomen suurimmista, ellei suurin tietokonemuseo, jota ylläpitää Suomen Tietojenkäsittelymuseoyhdistys ry. Käsittääkseni tämä ja Tekniikan museo ovat ainoat instanssit, jotka maassamme vaalivat tätä dinosaurusajan tietokonetekniikkaa. Kanavuoren kokoelma on aivan uskomaton, ihan maailman mittakaavassakin. Jokaisen asiaan vihkiytyneen on pakko käydä tässä tietokone-mekassa. Lukijat, suunnatkaa kesäretkenne kohti Kanavuorta, ette pety!

Tyypilliseen IBM:n tapaan sielu on ovissa.
Olen työmatkoilla poikennut vaihtamassa kuulumisia museon väen kanssa tai muuten vaan notkunut paikalla ja kuolannut kokoelman koneita. Heillä oli pari 1620:stä hyllyssä, täydellinen ja hiukan osiltaan vajaa yksilö. Yhtenä päivänä päättivät sitten ehdottaa jospa hakisin tuon jälkimmäisen kokoelmaani (en tiedä oliko tuomallani kahvileivällä osuutta asiaan ;) No mikä jottei, eihän se ole kuin keskusyksikkö, mutta kyllähän tälläinen kelpaa Heilin kaveriksi!

Hitaana hämäläisenä kesti puoli vuotta hakea kone kotiin, mutta sain viimein itseni orientoitua hommaan ja noukittua koneen pajalle. Ja voi pojat ja tytöt, mikä kone tämä onkaan!




Pienkoneet tulevat


Ajatonta muotoilua. Ainoastaan työkonemaiset vipukytkimet kielivät ikäluokasta.















IBM valmisti 50-luvulla jäätävän kokoisia 700- ja 7000-sarjan tietokoneita, joiden hinnat olivat vähintään yhtä jäätäviä kuin koko, miljoonia dollareita. Markkinoilla oli selkeä tarve pienelle sekä edulliselle tietokoneelle, johon kuolevaisellakin olisi varaa. Tähän markkinarakoon puskivat 50-luvulla mm. putkipohjaiset Librascope LGP-30 ja Bendix G-15.

"An amazingly low cost" oli tuolloin hiukan
suhteellista, ikoninen siipi-Cadillac kun maksoi 
noin 5000$ ja tämä keksintö kymmeniä tuhansia.
IBM:kin tajusi markkinan potentiaalin. Pienkoneen kehitystyö alkoi 1958, tavoitteena luoda mahdollisimman edullinen tietokone, jonka sielu syntyisi transistoreista ja ferriittirengasmuistista. Kauan ei nokka IBM:llä tuhissut, valmista tuli seuraavana vuonna 1620 Model I:n muodossa. Käytännössä kone on 550 kilon painoinen pöytä, johon on tuupattu kaikki tarpeellinen, myös human-machine-interface (pääte), IBM Model B -sähkökirjoituskone.

1620 tuli pienkonemarkkinoille kilpailijoihinsa nähden hieman jälkijunassa, mutta putsasi pöydän välittömästi. IBM:n maine ja yrityksen koko myyjäarmeijoineen oli yksi tekijä, joka selittää 1620:nen menestyksen, mutta yksi merkittävä ero sillä oli kilpailijoihinsa; 1620 käytti ennakkoluulottomasti uutta teknologiaa, transistoreita ja ferriittimuistia. Suorituskyky, luotettavuus ja fyysinen koko oli puolijohdekoneella parempi, eikä paluuta enää putkiin ollut.



Järjettömän arkkitehtuurin sietämätön kauneus


Keskusyksikön lohkokaavio. Mitään tämän kaltaista ei sitemmin ole nähty. (kuva: http://bitsavers.trailing-edge.com/pdf/ibm/1620/fe/227-5500-2_1620_Customer_Engineering_Reference_Manual_SN10756_RevE_Jun61.pdf)

1620 on todella mielipuolinen keksintö nykyihmiselle, sillä se käyttää kymmennumerojärjestelmää. Tämä toki on ollut ohjelmoijalle helpompi tapa omaksua, mutta koneen sisuksia optimoidessa se ei ole todellakaan se paras vaihtoehto.
Käskyjä on kourallinen.
Erikseen ei varmastikaan
tarvi sanoa, ettei koneessa
ole mikrokoodia.

Puolijohdekomponenttien hinnat olivat 50-luvulla taivaissa, joten looginen valinta CPU:n sisäiselle datan käsittelylle oli puolisarjamainen muoto. Jokainen kymmennumerojärjestemän numero esitetään kuudella bitillä: pariteetti-, etumerkkibitti (flag), sekä 4 bittiä itse arvolle. Jokainen luku lasketaan numero kerrallaan, joten mitään ylärajaa laskettaville luvuille.

Mutta moni bittinen 1620 on? Tähän ei voi sanoa ihan suoraa vastausta, sillä 1620 käsittelee vähintään kaksi numeroa per käsky (2 x 6 bittiä) numero kerrallaan ilman ylärajaa. Toisaalta yksi kuudesta bitistä on pelkkä pariteettibitti, joten ehkä tätä pitäisi sanoa 5-bittiseksi? Vai olisko tämä sittenkin ∞/1:n desimaalin tietokone..?

Oli miten oli, kellotaajuutta Model I:llä on 1MHz, mutta konejakson 20 mikrosekuntia. Pelkästään käskynnouto vie 160μs. Käskyjä sekunnissa menee hyvänä päivänä noin mallinumeron verran, emme voi mistään raketista puhua. Esimerkiksi yhteenlasku kuudella numerolla vie 400μs (käskynnouto160μs + yhteenlasku 2 numeroa 80μs + 4 lisänumeroa 160μs.

Wire-wrapping näyttäisi olevan
ihmiskäden tekemää.
Käskymuoto on kiinteä: ensin käskyn koodi kahdella numerolla ja kaksi viisinumeroista osoitetta (tai dataa), that's it. Käsky vie muistia "vaivaiset" 72 bittä, aina.

Erikoista tässä koneessa on se aritmeettinen yksikkö, sitä ei oikeastaan ole, tai ei siis ole siinä perinteisessä muodossa. 1620 ei osaa laskea mitään raudalla. Juju on seuraava: muistin alkuun ladataan 100 luvun taulukko, jolla yhteen- ja vähennyslaskut suoritetaan. Sama kerto- ja jakolaskuille, näille on oma 200 luvun taulukko.

Koneessa on noin 1000 SMS-korttia, kuvassa niistä vajaa puolet. Yläkulmassa näkyy muisti.
Itsessään koneen aivot ovat tehty modulaarisesti SMS(Standard Modular System)-korteista. Erilaisia korttityyppejä on muutama tusina, joita sitten yhdistelemällä syntyi IBM:lle useita erilaisia tietokoneita ja lisälaitteita. Kortti yksistään muodostaa jonkin hyvin yksinkertaisen kytkennän parilla transistorilla ja vastuksella, esimerkiksi kiikun.



Ferriittiä, ferriittä, ferriittiä


Ferriittirengaslogiikkaa käytetään muistiosoitteen dekoodaukseen. Konetta kun ohjelmoidaan desimaalein, tarvitsee osoite kääntää binäärimuotoon, sitä muotoa tottelee fyysinen muisti.





50-luvulla rumpumuisti ja akustinen viivelinja olivat hallitsevia muistiteknologioita. Ferriittirengasmuisti teki tuloaan, mutta lähinnä vain suurkoneissa. Ferriittimuistin etu oli aiempiin tekniikoihin nähden paljon nopeampi ja ennen kaikkea kiinteä hakuaika, se oli todellinen RAM (Random Access Memory). 1620 suunniteltiin käyttämään tuota tulevaisuuden muistia, kun kilpailijat jumittivat vielä rumpu- ja viivelinjamuistien kanssa.

Pienet detaljit tekevät ison koneen, kuten 
kuulakiskoilla liukuvat korttiräkit.
Nopeasti kerrottuna ferriittimuistin idea on magnetisoida ferriittirenkaita jomminkummin päin. Jokainen yksittäinen pieni rengas vastaa yhtä bittiä ja sen magnetisoinnin suunta nollaa tai ykköstä. Vakiona 1620:n muistissa näita pieniä renkaita on 120 000 kpl.

Ferriittimuistit ovat tarkkoja lämpötilan ja käyttöjännitteen suhteesta, sillä ferriitin magneettiset ominaisuudet muuttuvat lämpötilan mukaan. Tämä fysikaalinen ongelma oli ratkaistu 1620:nen kohdalla lämmitysvastuksella ja termostaatilla, joilla pidettiin muisti vakiolämpötilassa, about 50 asteessa. Tästä eksoottisesta ratkaisusta johtuen 1620 tarvitsee kylmäkäynnityksestä noin 8 minuuttia aikaa itsensä keräämiseen ennen kuin se on käyttövalmis. Uudemmissa koneissa muistin lämpötilan perusteella säädettiin käyttöjännitettä ja lämmitettävät muistit jäivät historiaan.

Tietokoneen takapuoli. Pohjalla näkyy tuntimittari, jossa luku 43 905. Kovin montaa vuotta kone ei siis käytössä ole ollut, tekniikankehitys ajoi tästäkin ohi parissa vuodessa. Yläkulmassa taas kerran muisti, ilman kantta.




















Muistia vakiona on 20 000 positiota, mikä tarkoittaa samaa määrää numeroita. Laajennusyksiköllä oli mahdollista saada 60 000 positiota. Muistinosoitteen dekoodaus desimaaleista binääreiksi hoidetaan himmeällä virityksellä, ferriittirengasverkolla. Tämä verkko ei tallenna mitään, se vain valitsee oikeat linjat muistista vastaamaan haluttua osoitetta.

CPU:ssa ei ole yhtään ainutta rekisteriä ohjelmoijalle, ei edes akkua. Kaikki laskutoimitukset tapahtuvat aina kahden muistipaikan välillä tai muistipaikan ja viisinumeroisen luvun välillä (memory-memory architecture). Itsessään 1620:ssä on toki rekistereitä, joissa pidetään mm. käsky, data, aliohjelman paluuosoite sekä laskettavien arvojen muistipaikat. Rekisterit ovat, yllätys-yllätys, omassa 384-bitin ferriittirengasmuistissa. Koska koneessa ei ole pinoa, vain yksi paluuosoiterekisteri aliohjelmalle (jota ohjelmoija ei pysty lukemaan), ei aliohjelmakutsuja voi kuin olla yksi.

Rekisterien ferriitit.
Lisävarusteina oli saatavissa perinteisten printtereiden, reikänauhalukijoiden, jakolasku- ja liukuluku-ja epäsuoramuistinosoitusoptioiden(!) lisäksi vaihtopakkaisia kovalevyasemia, tyypiltään 1311. Nämä asemat ovat hyvin samanlaisia kuin seuraavassa konesukupolvessa käytetyt 2311:set, erona heikompi datatiheys sekä jotkin pienet erot mekaniikassa.

Toinen mainittavan arvoinen lisävaruste oli 1627 -plotteri (tästä on ihan oma postauksensa blogissa), jota käytettiin pitkään vielä 1620:nen kadottua markkinoilta.

Releet sekä sähkömoottorin pyörittämä
nokkahässäkkä hoitaa kommunikoinnin
sähkökirjoituskoneen kanssa
Mallia päivitettiin pienin askelein pitkin elinkaarta, perusrakenteen pysyen saman, A-tasosta (proto) aina H-tasoon. Kun tie oltiin käyty loppuun, täysin uudelleen suunniteltu malli 1620 Model II julkaistiin. Parannuksina mm. tuplasti nopeutta, oikea ALU ilman laskutaulukoita sekä uusi Selectric-mallinen sähkökirjoituskone.

IBM teki myös prosessinohjausversion, malli tunnettiin tyypilla 1710, keskusyksikkönä 1620 Model I tai II. Ero "tavalliseen" oli 1711 -kaappi, jossa oli IO:ta sekä hyvin, hyvin alkeellinen keskeytystenhallinta. Tätä mallia pidetään ensimmäisenä riittävän luotettavana tietokoneena teollisuuden prossessien ohjaukseen.

Jos ajatellaan muistin hintaa kyseisenä aikana, tuntuu oudolta kuin paljon muistia tuhlattiin pelkästään numerojärjestelmään. Esim. luvun 65000 esittäminen vie kyseisellä 6-bitin järjestellyllä yhteensä 30 bittiä, binäärijärjestelmällä 8. Mutta vielä järjettömämmältä tuntuu merkkien esittäminen, ne näytetään kahdella desimaalilla, yhteensä 12-bitillä. Eikä merkistö edes sisällä pieniä kirjaimia... Ilmeisesti 50-luvun markkinoilla numeroiden selväjärkinen esittämistapa painoi vaakakupissa datatiheyttä enemmän.

Kaikesta ufoudestaan huolimatta 1620 oli todellinen menestys. Se teki mitä käskettiin luotettavasti ja se kykeni monimutkaiseen ongelmanratkaisuun kaikesta alkeellisuudestaan huolimatta. Model I:ta ja II:ta valmistettiin tiettävästi yhteensä noin 2000 kappaletta vuosina 1959-1970.




Vertailua uudempaan sukupolveen


Aikaisempi löytöni IBM 1800 edustaa numeroa uudempaa sukupolvea 1710:sta. Näiden sukupolvien ero on aivan huima; laskentatehoero on noin 80-kertainen ja muistiavaruutta noin viisinkertaisesti. Ja ennen kaikkea 1800 muistuttaa rakenteeltaan nykyaikaista tietokonetta, ei jonkinlaista outoa sota-ajan viritystä. Se käyttää luvuille binääristä esitystapaa ja kykenee rajattomaan määrään aliohjelmakutsuja. Lisäksi keskeytyksiä 1800:ssa on satoja ja jokaisella on oma prioriteetti.

IBM:n 50-luvun teknologiaa, SMS-kortti.
Ja sitten se 60-luvun versio, SLT.
Yksi 1620/1710:n SMS-kortti vastaa kytkennältään suurinpiirtein yhtä ainutta keraamista piiriä 1800:n SLT-kortilta, pakkaustiheys kasvoi puolijohteilla sukupolven aikana noin 20-kertaiseksi. Kehitys todellakin harppoi, sillä kaikki tämä tapahtui viiden vuoden aikana.




Kanavuoren yksilö


Takana IBM 1800 aka Heili, 1710:n henkinen seuraaja.
Tämä saamani 1620 on ollut osa 1710 -kokoonpanoa. Pieniä puutteita toki on, pöytälevy on kadonnut, muutama pelti ja Model B -sähkökirjoituskone. Kaikki sisukset näyttäisivät olevan paikallaan, eli erittäin hyvä lähtökohta entisöintiin. Uskoisin saavani tämän toimintakuntoon aika piellä työllä, puuttuvat osat ovat helppo valmistaa ja puuttuva sähkökirjoituskonekin varmasti joltain kirpputorilta löytyy.

Mutta muisti on varmasti menetty. Kaikki muistin teräsosat ovat paksun ruosteen peitossa ja jopa langat kasvavat kuparisulfaattia. Jälkimmäinen indikoi mitä suurimmalla todennäköisyydellä puhkimenneitä lakkauksia ja toimimatonta muistia. Kummallista kyllä, loput sähköistä ovat aivan tiptop-kunnossa, joten oma arvaukseni ruostumisen syyksi on muistin lämpötilan vaihtelu ja sen mukana tullut kondenssivesi.

Muisti on surullisessa kunnossa. Kannen aukaistuani
kaivoin sisältä kourallisen ruostetta.
Jenkkivahvistukseni Carl Claunch osasi vielä kertoa että 1620:n muistia vaivaisi toinenkin ongelma; juotoksen juuresta poikki syöpyvät muistilangat. Valmistuksen yhteydessä jäi tinaan epäpuhtautuksia, joka ajan saatossa syövytti langat poikki. Epäilemättä tämäkin yksilö kärsii kyseisestä vaivasta, sillä langat tuntuvat olevat irti reunajuotoksistaan.

Lähikuvassa sulfaatin kyllästämiä bittejä. Jokainen musta ferriittirengas varastoi yhden bitin. Renkaat ovat todella isoja, noin millin halkaisijaltaan. Kerrottakoon tässä yhteydessä, ettei näitä kukaan käsin tehnyt, vaikka myytti muisteja ompelevista naisista elää vieläkin vahvana. Jo 50-luvun lopulla tuotanto oli pitkälle automatisoitu.
Muistin lämmitykseen käytetään
vastusmattoa. Vastus on varmaankin
myös syypää muistin hurjaan
kuntoon, lämpötilan vaihtelut
 ovat pumpanneet kondessivettä
kotelon sisään aina katkeraan
loppuun saakka.
Korjausvaihtoehdot ovat seuraavat: korvata muisti puolijohteilla, langoittaa muisti uudestaan tai pultata jonkin toisen koneen ferriittimuistilohko syöpyneen tilalle. Viimeinen vaihtoehto on oikeastaan ainoa realistinen, uudelleen langoittaminen vaatisi todella masokistisen luonteen (120 000 ferriittirengasta ja jokaisesta neljä lankaa läpi...) ja puolijohdekorvike puolestaan tuntuu pyhäinhäväistykseltä.

Alkuperäisestä käyttötarkoituksesta tai omistajasta ei ole 100% varmaa tietoa. Kanavuoreen kone on lahjoitettu 1988, peräisin joko Valmetilta Jyväskylästä tai Summan paperitehtaalta. Ainoat vihjeet mitä koneesta löytyy, on jälkeenpäin liimattu tarra "IBM 1620 VALMET 1964".

Koneen "taso" on Level G, toiseksi viimeinen päivitys Model I:stä. Lisävarustelistalta on valittu epäsuoramuistinosoitus-, jakolasku- sekä 1311-optio. Jälkimmäinen vihje kertoo että kyseessä on ollut jokin iso kokoonpano kiintolevyin. Kovalevyt maksoivat enemmän kuin koko kone ja harvoilla valituilla oli mahdollista ostaa moisia kotkotuksia.

Uudenvuoden nurkilla 1968 on tarkisteltu sähkökirjoituskone-interfacen nokkahässäkkää. Kukahan KN oli?
En ole löytänyt teollisuushistoriikeista mainintaa 1710:stä, ainakaan Valmetilla. Muistelen nähneeni kuvan Valmetin Tourulan traktoritehtaan 1620:stä (jossain Valmetin historiaa käsittelevässä kirjassa), mutta kolmekymppisenä pää on sen verran jo pehmennyt että en ole ihan varma..?

Ainakin yksi 1710 on varmasti ollut Suomessa, Enso-Guitzetin Kaukopään tehtaalla. Olisiko tämä kulkeutunut sieltä Valmetille vai oliko heillä oma jossain paperikoneen kehittelyprojektissa? Saatan olla täysin väärässä ja varmaankin olen. Kaikki asiasta tietävät ottakoot yhteyttä!

Loppuun vielä fiilistelykuva.



Ps. Kuten aiemmin sanottua, Kanavuoren tietokonemuseo on ehdottomasti näkemisen arvoinen paikka. Auki torstaisin, katso lisätiedot sivuilta: http://suomentietokonemuseo.fi/ Museon väki tekee sen verran arvokasta vapaaehtoistyötä ja vieläpä pienin resurssein, joten jos ylimääräisiä pelimerkkejä on lompakossa, liittykää yhdistykseen ja/tai lahjoittakaa pelimerkit museolle sivujen kautta ;)

Pps. Jos jollain on nurkissa ylimääräinen IBM Model B -sähkökirjoituskone, niin otetaan vastaan. Vielä parempi jos sattuisi löytymään koko korroosiovapaa muistilohko ;)

IBM Model B



sunnuntai 6. maaliskuuta 2016

IBM 1800 - Se toimii sittenkin


Pahoitteluni lukijoilleni alkuun blogin luvattoman pitkästä hiljaiselosta. Lupasin reilu kuukausi sitten kommenttiosiossa juttua viikonlopuksi (...tosin en sanonut mille viikonlopulle ;), mutta yksinkertaisesti aika on ollut sen verran kortilla, ettei näihin harrastuksiin ole ehtinyt paneutumaan. No nyt sitä juttua kuitenkin tulee kahden kuukauden ajalta, kahdessa osassa!


Ensimmäinen ohjelma

Pessimisti ei pety, ei edes tälläkään kertaa; vastoin kaikkia odotuksia ja/tai todennnäköisyyksiä, Heili ajoi jo ensimmäiset testiohjelmat parisen kuukautta sitten. Ei kylläkään kovin kummoisia, sillä interface PC:n ja Heilin välillä on vielä kesken. Ohjelmat pitää vieläkin naputella taulun kytkimien kautta binäärinä ja ymmärrettävistä syistä, Y-sukupolven edustajan pää ei yksinkertaisesti kestä (vaikka kytkimien ketkuttelu onkin kivaa aikansa).

1130/1800:n yhden rekisterin arkkitehtuuri (accumulator-based architecture) on vähänkään moderneihin koneisiin tottuneelle hiukan omituinen. Ohjelmoijalla näkyy vain yksi rekisteri, A-rekisteri, jota voi käyttää datansiirtoon tai laskemiseen.

Vielä kerran se sama CPU:n lohkokaavio.
Kaikki laskutoimitukset ja datansiirrot tapahtuvat A-rekisterin ja jonkin (relatiivisen, indeksoidun ja/tai suoran/epäsuoran) muistipaikan välillä. Välitöntä osoitusta CPU ei tunne, muuten kuin parissa erikoistapauksessa. Esimerkiksi välitön osoitus "siirrä A-rekisteriin kymmenen" ei onnistu, pitää näyttää osoite jossa arvo "kymmenen" sijaitsee.

Se ensimmäinen. Vasemmassa laidassa näkyy muistiosoite, seuraavana käsky. Oikeassa laidassa sitten sama selvemmässä muodossa.
Yllä ensimmäisen ohjelman listaus 1130/1800-assemblerin (Windows-versiolla) käännettynä. Assembleri on ohjelma, joka kääntää symbolisen konekielen, siis ihmisen ymmärtämän version, todelliseksi binääriseksi konekieleksi, jota kone suorittaa.

Alkujaan homma on mennyt seuraavasti: ohjelmoija on naputellut lähdekoodin (symbolisen version) 029 reikäkorttikirjoittimella, yhdistänyt syntyneen korttinpakan assemberin korttipakkaan ja lukenut reikäkortinlukijalla koko setin tietokoneelle. Tietokone on suorittanut ensin assemblerin, joka puolestaan on lukenut lähdekorttipakan. Lopputuloksena uusi assemblerin luoma korttipakka, jossa lähdekoodi on käännettynä koneen ymmärtämässä konekielimuodossa. Tämän jälkeen vasta ohjelman pystyi suorittamaan lataamalla sen uudestaan reikäkorttilukijalla muistiin. Yksi virhe ja koko prosessi alusta. Voi vain kuvitella paljon reikäkortteja kului noihin aikoihin.

Ensimmäiset rivit eivät ole itsessään ohjelmaa, ABS ja ORG eivät tässä yhteydessä ole tärkeitä, ne vain ilmaisevat assemblerille, että ohjelma on absoluuttinen ja alkaa osoitteesta /0000. Kenoviiva ei tarkoita muuta kuin heksadesimaalista esitystapaa luvuille ja DC ilmaisee että kyseessä on muuttuja(arvo). Itsessään ohjelmassa ei ole kuin kaksi käskyä:

LOOP             Add YKSI
                        Branch or Skip on Condition (always) Long LOOP
...sekä yksi arvo:
YKSI                DC /0001

Ensimmäinen käsky on "laske yhteen" ja toinen käsky on "hyppää osoitteeseen", toisinsanoen ohjelma laskee A-rekisteriin ykkösen lisää päättymättömässä luupissa. Vaikuttaa yksinkertaiselta? Itseasiassa näin vähän tekevä ohjelma vaatii melkoista toiminnallisuutta CPU:lta.


Laske yhteen (0000: 8002)


I1-vaihe (käskynnouto):
  • I-rekisteri (ohjelmaosoitin) siirretään M-rekisteriin (muistiosoitin), muisti aloittaa datan noudon. I-rekisteriin lisätään yksi sen omalla piiristöllä*.
  • A-rekisteri siirretään U-rekisteriin (väliaikaisrekisteri, näkymätön ohjelmoijalle). Muisti siirtää B-rekisteriin.
  • Käskyn dekoodauksen ensimmäinen vaihe alkaa alkaa, B-rekisteri siirretään käskynpurkuun ja selvitetään onko käskyn osoitusmuoto relatiivinen, indeksoitu, epäsuora, jne. Tässä tapauksessa käsky on relatiivinen, sillä käskyn muoto ei ole LONG, eikä indeksirekisteri-tagi on "00". B-rekisterin vähemmän merkitsevä tavu (8-bittiä) siirretään D-rekisteriin. Arith-valo syttyy tauluun.
  • Aloitetaan yhteenlaskuoperaatio, jolla lasketaan vaikuttava osoite (siis ohjelmaosoitin /0001* + /0002 = /0003, YKSI). Yhteenlasku tehdään iteroimalla D- ja A-rekisteriä parilla yksinkertaisella säännöllä, kunnes D-rekisterin arvo on nolla. Yhteenlasku kestää vähintään T7:ään asti. Mikäli D ei ole nollassa, T7-syklejä jatketaan niin kauan kunnes se on.
  • A-rekisteri siirretään M-rekisteriin. 
E1-vaihe (suoritus):
  • Homma menee kuten I1:ssa, mutta I-rekisteriin ei lisätä mitään, U-rekisteri siirretään alussa takaisin A-rekisteriin. M-rekisteri osoittaa nyt paikkaa, josta haetaan arvo laskutoimitusta varten. Ensin se siirtyy B-rekisteriin, josta sen jälkeen D-rekisteriin. Tulos lasketaan samalla tavalla kuten osoitekin, omituisesti iteroimalla.

Hyppää (absoluuttiseen) osoitteeseen (0001: C400 0000)


Käsky on pitkässä kahden sanan formaatissa. Ensimmäinen sana on käsky, seuraava osoite jonne pitää hypätä.

I1-vaihe (käskynnouto):
  • Kuten aikaisemman käskyn vaihe, mutta koska käskyn muoto on LONG, on käsky kahden sanan mittainen eikä osoitetta tarvitse laskea. Käsky tulkataan Branch or Skip on Condition -käskyksi. Käskyn ehtoina on Branch Always, joten hyppy tapahtuu, oli CPU:n tai A-rekisterin tila mikä tahansa.
I2-vaihe (käskynnouto, toinen sana):
  • Normaali muistinnouto, B-rekisteri D-rekisteriin.
E1-vaihe (suoritusvaihe):
  • D-rekisteri siirretään I-rekisteriin, joka pakottaa CPU:n hyppäämään kyseiseen osoitteeseen (/0000 = LOOP) seuraavan I1-vaiheen alkaessa. Koko kierros alkaa alusta.

Tässäpä sitten lopputulos. Viimeinen bitti (eniten merkitsevä bitti tai etumerkki) valo kun käy päällä ja pois, on kahden käskyn ohjelma käynyt läpi noin 65 000 kertaa. 
Jokainen I- tai E-vaihe kestää vähintään 9 kellojaksoa (T0...T7 + yksi ylimääräinen T1 lisämuistillisen Heilin tapauksessa), joskus enemmän riippuen millaisia lukuja lasketaan yhteen/vähennetään (tai kerrotaan/jaetaan). Jokainen kellojakso 250ns ja näistä osa rullaa tyhjää, joten on aika selvää, ettei toteutusta ole ihan älyttömän tiukaksi optimoitu. Omituinen yhteenlasku/vähennystapa on kuin jäänne sarjakoneajalta, joka onkin sitten ihan oman arkkitehtuuri-postauksen aihe.


Muistin dumppaamista

Dumppaaminen tietokonemaailmassa tarkoittaa muistin kopioimista, muistivedosta. Nykykoneessakin voi törmätä termiin, ainakin "blue screen of deathin" napsahtaessa ruudulle, Windows kun tekee kaatuamishetkeltä muistivedoksen kiintolevylle (crash dump).

Itselleni kehittyi pieni pakkomielle muistin talteen saattamisesta jo ennenkuin Heili saapui pajalle, ihan tietokonearkeologisista syistä. Sen aikainen muistiteknologia, ferriittirengasmuisti, kun ei menetä sisältöään teoriassa ikinä, ja Heilin tapauksessa se on pysähtyneenä vuoteen 1986, kun iso kytkin vedettiin alas.

Käytännössä temppu hoituu kytkemällä jokin nopeaan datakeräykseen kykenevä laite, kuten logiikka-analysaattori, johonkin rekisteriin. Tempun toinen osa on ajaa itse koneella ohjelma, joka koplaa koko muistin kronologisesti läpi, logikka-analysaattorin noukkiessa talteen rekisterissä poikkeavaa dataa omaan muistiinsa aina kun sopiva hetki koittaa.

Mutta tehtävä ei ollut ihan yksinkertainen, sillä CPU:ssa kaikkea käytetään vähän kaikkeen, etenkin sitä ainoaa A-rekisteriä. CPU:n sisus on yhtä signaalien ilotulitusta, mikään ei pysy Heilissä paikallaan normaalin ohjelmansuorituksen aikana. Ainoastaan indeksirekisterit ovat muuttumattomina ilman erillistä kirjoitusta, mutta näistä mikään ei ole mitattavissa taustapinneistä.

Dumppailua kaaoksen keskellä.
LD-käskyn (lataa A-rekisteri) aikana tapahtuva lukeminen ei paljon lohduttaisi, sillä Heili lukee A:n suurinpiirtein joka käskyvaiheen aikana. Mistä saisi signaalin, joka oli uniikki vain kun oikeasti A-rekisterissä on pala muistia?

Dumppiohjelman listaus jälkeenpäin assemblerilla käännettynä. Alkuperäisen käänsin ruutupaperilla binääriksi, jonka naputtelin taulun kytkimien kautta, ihan kuten sen ensimmäisenkin ohjelman.
Ohjelma toimii seuraavasti: ensin A-rekisteri ja XR1-indeksirekisteri nollataan. Seuraavaksi siirretään XR1:n osoittama muistipaikka A-rekisteriin ja heti perään A-rekisteri tallennetaan osoitteeseen DUMMY /000A. Indeksirekisteri kasvaa yhdellä ja kierros alkaa uudestaan, erikoisemmalla LDX-käskyn käytöllä (LDX tarkoittaa lataa indeksirekisteri, mutta jos indeksirekisteriksi on asettu nolla, tarkoittaa se suoraan ohjelmasosoittimeen kirjoittamista). Siis ihan alakoulukamaa. Taika on siinä, että STO L DUMMY tuottaa "A to B"-signaalin ennen muistiin kirjoittamista, jota ei tapahdu missään muussa yhteydessä ohjelman ajon aikana. Tämä myös tarkoittaa sitä, että A-rekisterissä on sillä hetkellä todellista muistin sisältöä. Koska lisämuistikaappi (1803) ei ollut kiinni näiden ensimmäisten dumppisessioiden aikana, ohjelma loppui automaattisesti paritteetivirheeseen 48kilotavun jälkeen.

Oskillosskooppi/logiikka-analysaattori A-rekisteriin kytkettynä.
Logiikka-analysaattorin piuhat kiinni A-rekisteriin, CH1:n triggeriksi RUN-kiikusta ja CH2 kellosignaaliksi "A to B". Skooppi kertaliipaisulle, 50ms ikkunaan ja START-nappulaa Heilin taulusta. Olisihan tämä ollut aivan liian helppoa...

Siinähän sitä, sen kun saisi vielä ulos matolaatikosta.


48 kilotavua 1971 = 90 Megatavua 2016

Hankin Rigolin MSO1074Z-S:n Batronixilta hiukan Heilin muistin dumppaamista silmällä pitäen. Skooppina aivan mahtava vehje, eikä hinta päätä huimaa. Mutta logiikka-analysaattorissa on yksi perustavanlaatuinen ongelma. Dekoodaus kellosignaalin kanssa onnistuu näytöllä, mutta dekoodattua dataa ei voi saada skoopista ulos tikulle. Toinen asia mikä pisti silmäkulman nykimään, oli mukana tuleva UltraScope-ohjelmisto; siinä ei ole logiikka-analysaattorille mitään toimintoja, eikä ole kuulemma tulossa ihan hetkeen. Toki tällä kätevällä ohjelmalla voit käyttää skooppiasi PC:n näytöltä, joka onkin äärettömän hyödyllinen toiminto, kun se skooppi on noin 1.5m piuhan päässä siitä PC:stä...

Oikea data mikä pitäisi ottaa talteen, muu turhaa.
Ainoa mitä skoopista saa ulos, on raakadata halutuilta kanavilta. Kolmen ensimmäisen CPU:ssa sijaitsevan muistilohkon nappaaminen vie 90MB tilaa CSV-muodossa, siitä onkin hyvä tulkata 48kilotavua todellista muistia käsin ulos.

Turhat pois.
Mutta kädellinen keksii tavat millä päästä helpolla, tässä tapauksessa se oli siistiä tiedostosta kaikki skeida pois. Tein melko hätäisen&likaisen ohjelman: ohjelma lukee Rigolin luomaa CSV-taulukkoa, kunnes oikeat merkit osuvat kohdalleen (pilkku, miinumerkki, piste ja x, unohtamatta suodatusta) ja sen jälkeen ASCII-heksasta dekoodataan oikeaa binääriä toiseen tiedostoon.

Dumppiohjelma näkyy heti muistin alussa, niin kuin pitääkin.
Ja kas, sehän toimi, dumpin alusta löytyy itse dumppiohjelma! Muisti on selvästi korruptoitunut ajan ja omien kokeitteni kautta, mutta jotain järjellistä seasta löytyi kuten aakkoset (plotteria varten?) ja tekstit BULK0...4 sekä VOL111, jotka voisivat olla tiedostojen nimiä.

Ei tästä ensimmäisestä 48kilosta mitään  erityisen mielenkiintoista löytynyt. 80Kt vielä jäljellä tutkittavaa.
Jos joku haluaa ihmetellä ensimmäisen 48kilotavun dumppia, niin sen saa täältä: dump.hex
(Huom. kaikki teksti on tälläisissä koneissa EBCDIC-koodattua, HxD Edit ainakin osaa formaatin)


Assembleri

Ehdin hetken jo miettiä pitääkö tässä alkaa assembleria ohjelmoimaan 1800:lle, mutta sattumoisin yksi ibm1130.org -sivuston perustajista olikin jo veivannut komentokehoitepohjaisen assemblerin (kiitos vinkistä Pasille, en itse tajunnut etsiä sitä 1130-emulaattorin kansioista... ;). Y-sukupolvelaisella ei pää kestä myöskään komentokehoitteita 2010-luvun laitteissa, joten tein pikaisesti käyttöliittymän Visual C#:llä (tod.näk. maailman epäintuitiiviselle ohjelmointikielellä...). En ollut vuosiin käyttänyt Visualia ja kyllä jokunen hius tuli menetettyä muutaman tunnin ohjelmoinnin aikana, mutta eipä tarvi enää komentokehotetta.

Siihen loppuivat komentokehoitteet, prkl.

Ja loppuun vielä...

Ei voi kuin hämmästellä miten näin vanha laite voi toimia vieläkin täysin kuten sen pitääkin. Tosin ei ihan ilman kommelluksia ja korjauksia tähänkään pisteeseen olisi selvitty, mm. tuli tuhottua pari SLT-piiriä huolimattomalla skoopin käytöllä (hauenleuka kilahti väärään paikkaan + maatasoero = boom). Lopputuloksena yksi toimimaton bitti väylässä, jonka korjaamiseen onneksi löytyivät piirit ylimääräisestä 1826 IO-adapterikaapista ja ne vaihtuivat korjausasemalla käden käänteessä. Itse vian etsiminen ei triviaalia ollut, sen kun seurasi väylää vian lähteelle ja vaihtoi kortista piirit, jotka asiaan vaikuttivat.

Single-bit-failure (yksi toimimaton bitti muistissa) vaivasi tiettyä muistialuetta ensimmäisen parin tunnin käytön jälkeen, mutta hannuhanhimaisesti tästäkin ongelmasta selvisi puhdistamalla sense-kortin muistilohkosta. Lika kortin pinnalla riitti sotkemaan ferriittirenkaan hennon signaalin, kaikkea uutta sitä oppiikin.

Viimeinen ongelma ratkaistavaksi oli pariteettivirheiden poisto muistista. Ehdin jo miettiä erilaisia tekniikoita, miten virheen voisi ohittaa (dumppiohjelma kun olisi pysähtynyt aina virheeseen), mutta onneksi tuli iltalukemiseksi otettua IBM 1800 Operator's Manual. Siellä ohjeistettiin miten muisti siistitään automaattisesti taulun nappuloilla: CLEAR STOR + DISPLAY + WCR ON. Kai näitä olennaisia ohjekirjoja jätetään lukematta paremmissakin piireissä...

Seuraavassa osassa sitten lisämuistin kytkemistä, kadonnut virtalähde ja kommunikointia Heilin ja nykylaitteiden välillä!

EDIT: fiksasin tekstiä hiukan paremmin ymmärrettävään muotoon, lisäsin yhden selventävän kuvan, poistin isommat typot... Ei pitäisi puoliunessa näitä kirjoitella...


Ps. Puuttuvat valot ja nappulat tuli saatua ibmsystem3.nl -sivustoa ylläpitävältä Henkiltä (Thanks Henk, I owe you one!)

Tässä ne vaihtuu...
...ja tässä lopputulos.