Ei mennyt kuin päivä aiemmasta, kun kollektiivisesti keksittiin fonttidatakin tuohon supernäyttöön. Fontissa on asciikirjaimia ja ääkkösiä ja hauskoja lentokoneen kuviakin. Nyt kun on selkeää miten tätä mm. ei asenneta ylösalaisin, niin voidaan hyvissä mielin devailla kaikkea kivaa graffakirjastosta emulaattoriin, ja ehkä peräti joku kehitysympäristö sille alkuperäis-8051-raudallekin kiinnostelisi.
Niin kivaa kun se Ghidralla reversaaminen onkin, niin tähän sitä ei edes tarvittu. Aleksin luolamiesratkaisu oli yksinkertainen ja toimiva, eli tuutataan mikrokontrollerien firmikset virtana ruudun väylää kohti ja katsotaan, näyttääkö järkevältä. Tämä toimii, jos pikselit ovat ruudun ymmärtämänä bittikarttana vailla sen kummempaa enkoodausta. Fonttikartta löytyi kun löytyikin isoimman firmiksen pyöreästä 1024 tavun kohdasta. Ghidra vahvistaa, että siinä on joku taulukko, johon on viittauksia koodista.
Ruudussa on mm. niitä kummallisia täytebittejä, jotka eivät näy mutta vaikuttavat kirkkauteen; ei niillä kai mitään tähdellistä tehdä, kun löytynyt bittikarttafontti sisältää kunkin merkin segmenttidatan sellaisenaan mukaanlukien ne näkyvät ja näkymättömät bitit. Ehkä koodi voisi tehdä niille jotain; voisi vielä katsoa miten glyyfejä käsitellään tarkalleen.
Kun ruudulle oli saatu sattumanvarainen P-kirjain ja muuta kivaa siten, että lähikuvassa erottui mitkä segmentit tarkalleen siitä olivat päällä, niin segmenttien kartoitus datajärjestyksen kanssa avusti etsimään sopivaa dataa sieltä firmisbinääristä. Bitti- ja tavujärjestykset eli endiannessit sattuivat ekalla yrittämällä oikein, ja P-kirjaimen yläpuoliskoa löytyi bittiosoitteesta 17792, joka on tasan 2224 tavua. P:n asciikoodi on 80 ja ruudun kunkin kirjainmuodon kuluttama tila on 120 bittiä tai 15 tavua. 1024 + 80 * 15 olisi 2224. Sattumaako? Ei ollut.
Kun älyttiin miten päin ruutua kuuluu pidellä, niin Verneri askarteli tuosta segmenttien bitti-indeksoinnista uuden kuvan. Tuli vähän lisäpyöriteltävää pikselimappaustyökalussani.
Yritin piirrellä noiden alueiden päälle jotain viivoja esittämään sitä, miten se bittijuna puksuttaa tuolla sisällä, mutta ei siinä ihan selkeää logiikkaa ole ja kuvasta tulisi sekava. Lookuptaulukko saa riittää. Data lähtee sisään oikeasta alareunasta ja tavallaan kiertää ruudun myötäpäivään venkslaten siinä samalla siksakkia reunoilta keskelle ja takaisin. Tämä siis siinä onnellisessa ruudunneljänneksessä, joka sattuu tuonne vasempaan reunaan.
Bitti nimittäin kulkee ensin kaikkien alapuoliskojen läpi oikealta vasemmalle ja sitten yläpuoliskojen läpi vasemmalta oikealle. Ruudunkvadranttipuoliskoja vastaavat numerojärjestykset lähetettävässä pikselisisällössä esiintyvät seuraavasti:
+---+---+---+---+ | 3 | 2 | 1 | 0 | | 4 | 5 | 6 | 7 | +---+---+---+---+
Kun kussakin paneelissa on neljä identtistä osaa, niin ekana piuhalle lähtee oikeanpuolimmaisen yläpuolisko, sitten tokaoikean yläpuolisko jne, ja lopuksi oikeanpuolimmaisen alapuolisko.
Ruutuhan vielä kellottaa sen lävitse kulkeneen datan ulos yhdestä piuhasta, mikä mahdollistaa näiden pienten paneelien ketjutuksen isoksi pötköksi. Ensimmäisenä sisään kellotettavat bitit menevät täten ketjun viimeiseen paneeliin.
Alkuperäisraudalla taisi olla oma ohjain kutakuinkin per kolme riviä. Rivissä on 18 paneelia. Korkeutta alkuperäishirviöllä on 20 paneelin verran. Ja rivejähän on aina kaksi vierekkäin, eli yhteensä moduuleita pitäisi olla laatikoissamme 720 kappaletta. Osa niistä on ikävä kyllä vaurioituneita, mutta kyllä tällä aika pitkälle päästään. Voitaneen siis olettaa, että yhteen ketjuun saa ongelmitta ainakin 54 paneelia. Alkuperäisraudassa on tosin vähän väliä puskuripiirejä. Pysyy signaalin laatu kunnossa.
Koodasin joutessani työkalun avustamaan tekstin ja neliskanttisten pikselien piirtämisessä. Erikoisgrafiikkaa jos jonkinlaista tälle toki voisi suunnitella, esim. matopeli olisi aika hauska jos voisi liikkua X-kirjaimen vinoviivoja pitkin, mutta olkoon toistaiseksi (lähes) neliöistä kyse.
Työkalu sisältää lähinnä laskutoimitukset sille, miten päin nuo segmentit kuuluu piuhaan laittaa, fonttibittikartan siirtelyn sopiviin kohtiin, sekä mappauksen neliskanttisista pikseleistä näihin hassun mallisiin segmentteihin. Kun bittiketju on valmis, niin se lähetetään usbiteitse oheisarduino-väliaikaisratkaisulle, joka skannaa ne eteenpäin tuonne ruutujen SPI-väylänkaltaiselle, toistaiseksi bitbangaamalla mikä lienee tiedonsiirron pullonkaula.
Fonttikartassa tosiaan on 256 eri glyyfiä numeroituna asciin mukaan, paitsi toki nuo merkistön alusta asciin ohjauskoodien päältä löytyvät hassut lentsikkasymbolit sun muut. Ja kun ascii on vain seitsenbittinen, niin ne loput 128 ovat mm. ääkkösiä.
Kun ruudulle päivittää tekstiä melko nopeaan tahtiin, niin kännykamera ei pysy hämärässä mukana. Pursotin kaikki glyyfit ruudusta läpi kokeillakseni, mutta kuka niitä muka jaksaa montaa kertaa hitaasti katsoa koodia testatessa?
Viikko tässä vasta on askarreltu kalenteriaikaa. Puuhaa riittää:
- Tätä graffakirjastoa voisi kehittää kunhan nyt olisi joku suunnitelma sille, kirjainten väleihin jäävät tyhjyydet nimittäin rajaavat mitä animaatiota näillä voisi piirtää
- Emulaattorista olisi suuri hyöty, niin ei tarttis rakentaa näistä fyysisesti mitään sadan paneelin kokonaisuutta jokaisen asianomaisen näppiksen viereen nähdäkseen miltä joku graffatemppu näyttäisi
- Jonkinlainen mekaniikan yleinen grand plan täytyis tehdä tavoitteena kanniskella plug-and-play-kokonaisuuksia paikasta toiseen (ja assyille ehkä kokonainen ruutuneljännes, 18*10 paneelia)
- Vaikka alkuperäisrakenne onkin aika hyvin dokumentoitu, niin voisi olla arvokasta tarkastella ne lähempää ja museoida omat dokumentaatiot informaatioputkiston rakenteesta
- Jotain modernin mikrokontrollerin komentamaa sulautettua näyttöohjainta voisi suunnitella
- Ja toisaalta alkuperäisraudan uusiokäyttö voisi olla hauskaa ja laitteen arvokkuudelle sopivaa, eiköhän 8051:lle löydy vielä siedettäviä toolchaineja
- Firmisten reversausta voisi jatkaa, sekä raudankin reversausta niin että saataisiin muistikartta selville - koodi käsittelee useampia ulkoisia resursseja, ei esim. vain sisäistä muistia ja sarjaporttia
Alkuperäisraudalla tarkoitan kaikkea sitä alumiiniprofiilimetristöä ja niiden sisältämää johdotusta ja liitäntöjä ja useampaa sulautettua tietokonetta, mitä lentokentältä saatiin.
Ekana lähden ehkä emulaattorin kimppuun. Tosin tuo rautakin olisi hyvä saada johonkin talteen sieltä lumisateesta. EPROM-piirien ikkunoidenkin edessä on vain paperiteipit eikä sellaista metallista teippiä, eli auringonvalo periaatteessa voi haurastuttaa muistia. En toisaalta olisi merkittävän huolissani auringosta tähän vuodenaikaan näillä leveyspiireillä.
Ei ole tullut häksäiltyä tälläistä vähään aikaan, niin kutkuttaa taas yhtäkkiä kaikki. Fasiliteetteja on vähän vähemmän ympärillä verrattuna Otaniemen opiskeluaikoihin, ja aikaa menee enemmän kaiken maailman leipomiseen ja muuhun elämisen ylläpitoon ja töissäkin on käytävä. Ainakin itse vasta leivottu leipä on parasta mitä saa.
Joskus aiemmin yritin saada talteen VR:n aikataulunäyttöjä (ei niitä split-flapeja valitettavasti, vaan ne niiden seuraajat), kun niistä aika jätti. Ehtivät mokomat romuttaa ne nopeasti. Uudetkin ovat ilmeisesti sutta ja sekundaa. No onneks meillä on nyt nämä ja kyllä jännittää. Kiitos Finavialle teknisen kulttuurihistorian ylläpitämisen auttamisesta.
0 kommenttia
Oma kommenttisi
Mielipide tämän sivun asiasta? Kirjoita toki. Älä raapusta kuitenkaan ihan asiattomia juttuja.
Jos on yksityisempää asiaa, tarkkaa kysyttävää tai aihetta pidemmälle keskustelulle, käytä yhteydenottolomaketta kommentoinnin sijaan.
Hölmöt kommentit saatetaan moderoida pois jälkikäteen.