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.



keskiviikko 9. joulukuuta 2015

IBM 1800 - Ensimmäiset savut


Voin vihdoin ilmoittaa kaikille blogin lukijoille, että Heili on on saanut sähköä sisuksiinsa ja on melkoisen hyvissä sielun ja ruumiin voimissa, ainakin olosuhteet huomioon ottaen. Tietenkään tämä ei tapahtunut ihan päivässä, vasemmalla kädellä huitaisten tai ilman ongelmia ja armotonta skopettamista.


Alkuun virtalähteet

1800:ssa on 18 virtalähdettä, joiden kaikkien tarpeellisuus ei ole selvinnyt blogin kirjoittajallekaan. Samaa jännitettä on useampaa ja koot ovat hurjia: isoimmat 6V/18A ja massaa yli kymmenen kilon. 

Muutama virtalähde koneen takaa.

Virtalähteissä on yksi erikoinen piirre, niiden pitää ola vähintään 25% kuormalla, jotta regulointi toimii oikein. Tämä ongelma on ratkaistu koneen sisällä nipulla tehovastuksia, jotka syövät neljänneksen virtalähteiden tehosta lämmöksi, riippumatta tekeekö tietokone yhtään mitään. 

Testasin ensin jokaisen virtalähteen yksitellen pöydällä suoraan sukotulpasta, apuna skooppi ja nippu autonpolttimoita keinotekoiseksi kuormaksi. 17 virtalähdettä selviytyi hyvin testistä, vain yksi kyykkäsi kuorman alla.

Nykyään konkat eivät kestä TV:ssä edes paria vuotta, näissä näköjään kestäneet sellaisen 40 vuotta.

En alkanut enempää arvailemaan mikä siinä voisi olla vikana, koska lineaariset virtalähteet zener-vertailulla eivät ole sitä minun vahvinta alaa, joten tilasin suoraan uuden MeanWellin hakkurin tilalle. Näitä vanhoja ehtii korjailla sitten myöhemmin.


Sitten käynnistyssekvenssi

Kasaamista ei yhtään helpottanut se fakta, ettei IBM ole merkinnyt mitään voimajohdotusta millään tavalla. Eikä sekään ainakaan haastetta vähentänyt, että osa niistä surkeista johtomerkeistä joita purettessa johtoihin teipattiin, oli irronnut ja kadonnut, mahdollisesti välille Lahti-Outokumpu. Mutta luovuttaminen ei ole ollut koskaan vaihtoehto, mittasin sinnikkäästi jokaisen johdon ja päättelin melko sekaisista kuvista mikä menee minnekin. 

Heili herää kahdessa vaiheessa, ensimmäinen käynnistää logiikkapuolen virtalähteet, seuraava muistin virtalähteet. Sammuttaessa sekvenssi menee toisinpäin, ettei muisti pääse korruptoitumaan. Mikäli jokin ei mene käynnistyskytkennän älyn mukaan oikein, esim. joku jännite puuttuu, se heittää koko keksinnön sähköt alas.

Osa käynnistyssekvenssikytkentää.

Käytännössä tämä "äly", hyvin vähäinen sellainen, on rakennettu perinteiseen amerikkalaiseen tyyliin, hirveällä määrällä vastuksia, releen kelojen yli vedettyjen kondensaattoreita, tyristoreita, ties mitä...

Alkuun ruuvasin jokaisen logiikkalohkon (tai "älyoven") matajännitesyötöt puupalikkaan kiinni siihen järjestykseen missä niiden oletin kuuluvan olla. Virrat päälle, putoaa alas. Muutama arvailu, vika löytyy hätäseis-kytkimestä. Hyppyjohto yli (älä tee tätä kotona ;) ja uudelleenyritys: sama lopputulos, mutta pysyy päällä noin sekunnin pidempään. Syy löytyy yli-innokkaasta alijännitesuojasta, joka paiskaa kaiken alas, koska olettaa verkon kadonneen.

Alijännitesuojan lähtöpiuhan maahan (koska se liipaisee +3V pulssilla tyristorin, joka puolestaan aloittaa sammutussekvenssin) ja taas uudelleenyritys: sähköt pysyvät päällä ja READY-valo syttyy. Taulussa paloi valoja muutenkin kuin joulukuusessa - siis kaikki mitkä olivat ehjiä - joka johtui itse tietokoneen logiikkasähköjen puuttumisesta.

Valoja tunnelin päässä.

Mittailin sitten matalajännitteet, jotka olivat kahta johtoa lukuun ottamatta oikein arvattu. Ikävä kyllä samassa tuli huomattua yhden 3V-virtalähteen antavan melkoista rippeliä, joten sekin korvautui uudella hakkurilla.

Viimeiset piuhat kiinni...


...ja lopuksi virtanappulasta

Tämä taitaa olla niitä harvoja tietokoneita, joissa voi kokea voiman tunnetta painaessaan virtanappulaa. 40A kontaktori vetää ensimmäisen vaiheen päälle, 1.5 sekuntia perään toinen samanlainen seuraavan vaiheen. Pauke, eksoottinen (omenaisen käämin) tuoksu, flektien ja vaihtovirran humina herättää pienessä ihmisessä kunnioitusta moista sähköaivohirviötä kohtaan.

Voimapuolen kamoja.

Pienen renkuttelun jälkeen huomasin että Heilillä on ainakin jotain järkeä olevan vielä jäljellä, I-rekisteriin pystyi siirtämään vipukytkimillä lukuja. Tosin START-nappula ei tehnyt mitään kovin älykästä ja T-kello oli jumissa T7:ssä. RUN-valo syttyi, mutta T-kello ei mennyt eteenpäin, oli kone sitten Run, Single Instruction, Single Storage Cycle tai Single Step -moodissa (kyllä, tällä koneella voi mennä kellojakso kerrallaan eteenpäin!).


Tahditussignaalit oskillaattorista T-kelloon.

T-kellolla on kahdeksan askelta (tarkalleen yhdeksän, siitä alla lisää), T0...T7, jotka synkkaavat tietokoneen loogiset osat. Ilman T-kello ei ole synkkaakaan, elämää, mitään. Kyseinen kello saa voimansa A- ja B-vaiheilta, jotka puolestaan syntyvät 4MHz oskillaattorista (asiasta enemmän kiinnostuneet voivat käydä katsomassa arkkitehtuuria osan 1 ja osan 2).

Jos mennään vähän syvemmälle kellon toimintaan, kello siirtyy seuraavaan askeleeseen A-vaiheesta luodun Clock Advance -signaalin avulla. Siispä skooppi kauniiseen käteen ja katselemaan käyriä.



Hetken aikaa epäilin huonoa A- ja/tai B-vaihetta, mutta kaikki signaalit ovat tässä laitteessa ihan jotain muuta kuin 90-asteen kulmia.

Metsästin ongelman lopulta Clock Advance -signaalin juurille, jokin kolmesta signaalin ehdollistavasta lähdöstä veti sitä koko ajan maahan, joten mitään pulssia ei lähtenyt. Pään hakkaamista seinään ja lopulta keksin irroittaa kortin, jonka NOT-portin läpi tulee tuon kellonesto kahdennetulta T1:ltä. Ja katsos, sehän toimii!

Clock Advance -signaalin puuttuminen aiheuttaa T-kellon jumiutumisen.

Kahdennettu T1-kello johtuu Heilin tapauksessa laajennetusta muistista, mikä ilmeisesti tarvii enemmän aikaa, se kun sijaitsee neljän metrin päässä keskusyksiköstä. Todellisuudessa kellon askelia on siis yhdeksän ja yksi niistä ei tee mitään, ainakaan teoriassa. Eli tämä korjausmetodi ei paljon lohduttaisi, piti keksiä se alkuperäinen syy.

OR DOT tarkoittaa yhdistettyjä johtoja. Ongelman synty oli juurikin tuossa pisteessä, se pysyi maahan vedettynä ja sen veti maahan NOT-portti. Portin tulo kellui, koska kortti jolla T1 DLY  (T1 Delay -kiikku) sijaitsee, oli väärällä paikalla.

Syy löytyikin järkeilemällä. Yksi kortti jossa T1 Delay FF -kiikku sijaitsee, oli väärällä paikalla. Itse sitä en ole siirtänyt (otinkin sen monta kertaa irti ja laitoin sen aina samalle paikalle...), joten epäilykseni kymmenistä uteliasta ihmisistä, jotka ovat ronkkineet tätä vuosien varrella, pitänee varmaan paikkaansa. Pistoa ei tarvi sen sydämessään kokea, joka siirsi B-A1D2 -kortin paikkaan D3, sillä olisin minäkin tätä ronkkinut, mikäli työpaikallani olisi jotain näin hienoa ollut nurkassa pölyttymässä ;)


Eikä tässä vielä kaikki (ongelmat)

Kun T-kello toimi, sain jo muistiin tallennettua tietoa paneelin namiskojen ja nappuloiden avulla. Nyt vain tuli uusi ongelma, kone sytytteli pariteettivirhevaloa randomeista muistipaikoista. Alkuun muistijännitteiden mittailua ilman tulosta...ehti nousta pieni pelko viallisesta muistilohkosta ja diodinvaihto-/muistijännitesäätö-limbosta, mutta seurattuani hetken milloin virhevalo syttyi, tajusin että valo syttyi aina kun pariton määrä bittejä oli B-rekisterissä.

Etsi tästä sitten pinni "B-A1F2 J10"...

Skoopilla sitten mittailemaan pariteettitarkistuspiiristöä, josta löytyi ongelman juuri: B-rekisterin sisältö ei koskaan saavu piiristöön perille, joten tulos on aina "parillinen". B-rekisterin päästä bitit löytyivät ja paloihan valotkin taulussa, eli melko varma syypää löytyisi löysällä olevasta lattakaapelista. Sieltä sekin vika löytyi ja liittimen kiinni tökkäämällä pariteettivirheet katosivat.




Loppuun vielä muutama sana

Aikani loppui tältä päivältä, enkä enempää ehtinyt leikkiä koneella, vaikka kuinka olisi tehnyt mieli; välilevynpullistuma teki sen verran ison loven lompakkoon viimekuussa, ettei näille leluille jää sitäkään vähää aikaa, mikäli kinkun haluaa pöytään ennen tammikuuta.

Yksi ehdoton varuste olisi virtaprobe skooppiin, niin ei tarvisi nyppiä kortteja tai johdotuksia irti tiettyjä vikoja hakiessa, tosin hinnat lähtevät 3000 eurosta mikä on paljon rahaa... Ja vaikka rakas Owon on uskollisesti palvellut, on selvää että minun tarvitsee hankkia 4-kanavainen oskilloskooppi funktiogeneraattorilla ja logiikka-analysaattorilla. Näin monimutkaisen laitteen vianhakuun pari kanavaa ja melkoisen kökkö datanloggaus vaatii aika kestäviä hermoja. Kommenteissa saa ehdottaa merkkejä ja malleja, itselläni on pyörinyt mielessä Rigolin MSO1074Z-S. Jos sellainen jollain on, kertokoon onko hintansa väärti vempele!

Mutta ainakin nyt kone lukee käskyn muistista ja suorittaa sen, jonka voi havaita käskyn I1, I2, jne. käskysekvensseistä. Se on jo jotain koneelta, joka valmistettiin 1971, sammutettiin 1986, purettiin ja koottiin 2015. Ja vielä ihmisen toimesta, joka ei koskaan ole nähnyt moista vempainta. Joko olen helvetin onnekas idiootti tai 40 vuotta myöhässä IBM:n huoltomiehen avoimesta työpaikasta ;)


Ps. Shampanja-pulloa turha vielä korkata, tästä se entisöinti vasta alkaa. Olen 99% varma ettei kone toimi vieläkään täydellisesti (joku käsky ei toimi, keskeytykset sekoilevat, jne), mutta eipä sillä väliä. Tämän harrastuksen pointtihan on korjata näitä, eikä päästä liian helpolla!



PÄIVITYS: Vastoin kaikkia odotuksia, Heili ajaa kuin ajaakin ohjelmia! Lisää aiheesta luvassa seuraavassa postauksessa! 
Laske yksi lisää akkuun, hyppää takaisin. Karkeasti noin 200 000 käskyä sekunnissa, mikä on vuonna 1965 julkaistulle tietokoneelle kelpo saavutus.