keskiviikko 4. maaliskuuta 2015

HP1000 - Paperinauha-aseman emulointia

Oktaaliluku 102077, toisin sanoen "end of tape". HP:n päällä SiliconLabsin 80C51 mikrokontrolleri, joka toimittaa paperinauha-aseman virkaa.


Viikonloppuna tehtyä uusi projekti, paperinauha-aseman emulaattori, kun ei oikeaa asemaa tullut koneen mukana. Toisaalta, eipä sellaisella enää ole muuta käyttöä kuin nostalginen fiilistely, helpommalla pääsee kun laittaa nyky-PC:n matkimaan nauha-asemaa.

Emulaattorin kytkentä IO-korttiin.


HP:n takana on IO-kortit, joihin nauha-asema ja muut tallennuslaitteet ovat tulleet kiinni, 16-bit sisään ja toiset 16-bit ulos + parit kättelysignaalit (device command / device flag). Normaalin IO-kortin signaali on ollut CTuL (-2V...4.5V), mutta onneksi yksi "MicroBus"-kortti oli koneen mukana, jossa on TTL-tason signaali. Muuten olisi pitänyt alkaa rakentamaan signaalitason muunninta.

Koneessa ei ole mitään käyttöjärjestelmää ROM-piireillä, vaan käyttis ladataan joltain laitteelta. Vanhemmissa tietokoneissa latausohjelma (binary loader, boot loader) on pitänyt näpyttää jokaisessa käynnistyksessä paneelin kytkimistä muistiin, siis jos se ei ole säilynyt ferriittimuistissa.

HP puolestaan veivasi boot-ROMit suoraan emolle, jotta elämä olisi helpompaa. Tosin ratkaisu nykyajan mittapuun mukaan on silti vähän monimutkainen, homma kun tapahtuu seuraavasti: ensin S-rekisteriin tallennetaan yhdellä 16-bitin sanalla boot-ROMin numero, laitteen IO-osoite ja mahdolliset parametrit. Tämän jälkeen painetaan IBL-painiketta, jonka jälkeen CPU lataa mikrokoodin avustama boot loaderin todella erikoisella metodilla 4-bitin paloissa muistin ylimpään 64:ään sanaan. 

Lopuksi painetaan RUN-painiketta ja käynnistetään esimerkiksi nauha-asema ja käyttis tai haluttu ohjelma siirtyy muistiin. Loaderi ilmoitaa sitten näytön valoilla mikä meni vikaan jos meni. 


Emulaattorin rakentaminen

Emulaattorin idea on seuraava: HP:n ja PC:n väliin tuli mikrokontrolleri joka on yhdistetty HP:n IO-korttiin ja PC:n sarjaporttiin. PC lähettää terminaaliohjelmalla tiedostot binäärimuodossa ja mikrokontrolleri tuuppaa dataa 8-bittillä IO-kortista sisään renkuttaen samalla flag-bittiä, aina kun data on luettavissa.

Miljoonalaatikosta osui käteen SiliconLabsin mikrokontrollerin kehitysalusta, jossa oli riittävästi IO:ta. Paperinauha-asema ei tarvitse kuin yhteen suuntaan 8-bittiä + kättelyt, mutta kytkin kaikki karvat tulevaisuuden suunnitelmia varten. 

Nauha-aseman kytkis ja toiminnankuvaus löytyi bitsaverisista, kuten myös ROMien konekieliset listaukset, joten hommaan pääsi sisälle parissa tunnissa. Nauhaformaatin arvailu otti aikansa, se kun koostuu frameista (data pituudesta) ja checksumeista. Idea suurinpiirtein näin: ensin tulee framen pituus yhdellä tavulla (max 255 sanaa), nollatavu, absoluuttinen osoite johon frame tuupataa ja framen lopussa kaikkien datasanojen yhteenlaskuttu summa. Nauha loppuu kun 11 nollaa on tullut framen ulkopuolella.

01 - Paper tape... ei ihan ollut...


Otin laiskana ohjelmointityökaluksi MikroElektronikan Basic-kääntäjän, jolla syntyi SiLabsin ohjelma. Teoriassa kaikki piti olla kuin pitikin, mutta HP:lta tulee jokaisen latausyrityksen jälkeen virheilmoitus (siis näytön valoina), kuten "address error".

Vaihtelin vähän kaikkea ja kokeilin ylempää 8-bittiäkin random arvoilla, kunnes sain "device error" valot palamaan tauluun. Hälytyskellot alkoivat soimaan, koska kyseistä virhettä ei pitäisi tulla paperinauha-asemalla, ainakaan ROMin listauksen mukaan. Lisää pientä muistin sisällön tutkimista paneelien kytkimillä ja totesin ettei muistin sisältö vastaa HP:n huolto manuaalissa olevaa disassemblya.

Ehdin jo miettiä että tässä koneessa on jokin päivitetty ROM-versio, mutta sitten välähti, ovatko ROMit oikeilla paikoilla? 

Kone auki ja yksi muistikorteista pois, boot-ROMit näkyviin ja kas, kaksi vaihtanut paikkaansa.

00...


En tiedä onko kyseessä huolimattoman huoltomiehen virhe vai joku käytönnön pila menneiltä vuosilta, ROMit kun voi vaihtaa parissa minuutissa...

Mutta loaderin osoitetta vaihtamalla emulaattori lähti toimimaan niinkuin sen pitkin. Seuraavaksi pitää hankkia jostain TTY-kortti teletypea varten ja kokeilla HP:n OS:ää (RTE), miltä 70-luvun käyttöjärjestelmä tuntuu 2010-luvulla.

Legendaarinen Teletype ASR-33, jolla mm. Bill Gates aloitti ohjelmoinnin (siis tälläinen yhdistettynä keskustietokoneeseen). Saa HP:n kaveriksi, kunhan TTY-kortti löytyy...










Ei kommentteja:

Lähetä kommentti