Ohjelmistotestauksessa olisi ollut periaatteessa mahdollista käyttää myös kontrollerisimulaattoria, joka mahdollistaa ohjelmien ajamisen ilman aitoa laitteistoa. Simulaattoreita olisi ollut saatavissa Internetin kautta, mutta niiden käyttämiseen liittyy yksi ikävä ongelma: Yleensä simulaattorit eivät osaa simuloida I/O-laitteita, jotka on liitetty kontrolleriin. Koska tässä työssä I/O-laitteiden ohjaaminen oli keskeisessä osassa, ei simulaattorin käyttöä edes harkittu.
Ohjelmankehitystyökalujen osalta valinta kohdistui ilmaiseksi saatavilla oleviin työkaluihin. Niitä etsittiin ja haettiin Internetistä. Tarpeellisia ohjelmia olivat assembler- ja C-kääntäjät. Myös FORTH-kielen käyttämistä harkittiin. Tarjolla olevista kääntäjistä suurin osa on tarkoitettu MS-DOS-järjestelmille. Tarkoituksena oli kuitenkin tehdä kehitystyö Unix-järjestelmällä.
Tunnetuin assembler-kääntäjä on Motorolan julkistama ohjelma, josta on olemassa versiot lähes kaikille Motorolan prosessoreille. Sekään ei tue linkkausta, mutta on tarpeellinen mm. Buffalo-debuggeriohjelman kääntämistä varten.
Linkkausta tukevia, Unixissa toimivia assembler-kääntäjiä löytyi vain yksi: Gcc:lle tarkoitetun 68HC11-loppupään mukana tulee kääntäjä ja linkkeri. Sen kokeileminen jäi tosin erittäin vähäiseksi, koska gcc:tä ei päätetty käyttää. Ohjelmiston kääntämiseen käytettiin kirjoittajan omatekoista assembler-kääntäjää, joka kääntää myös projektissa käytetyn C-kääntäjän tuottaman koodin, joka ei ole puhtaasti "Motorola-tyylin" mukaista.
Vapaasti saatavista kääntäjistä on saatavissa myös lähdekoodi, joten kääntäminen omalle työasemalle onnistuu kohtuullisella työpanoksella. Alunperin kääntäjävaihtoehtoja oli kaksi:
Pseudorekisterien käyttäminen aiheuttaa ongelmia prosessien vaihtamisen yhteydessä, jos prosessimalli perustuu keskeyttävään moniajoon, koska silloin joudutaan tallettamaan/palauttamaan myös kaikki pseudorekisterit.
"5+c"-kääntäjän loppupäähän lisättiin mahdollisuus tuottaa koodia HC11:lle. Lisäys tehtiin suoraviivaisesti, koska projektin tarkoituksena ei ollut tehdä parasta mahdollista C-kääntäjää, vaan vain saada aikaiseksi käyttökelpoinen sellainen. 6809:n ja 68HC11:n käskykanta ja rekisterirakenne ovat suhteellisen samanlaisia, mikä helpotti työtä oleellisesti. Suurimmassa osassa tapauksista vain muutettiin kääntäjä tuottamaan 6809-käskyn sijasta yksi tai useampia 68HC11-käskyjä, mikä toisinaan johtaa ikävän pitkiin käskysekvensseihin (6809:n käskykanta on huomattavasti ilmaisuvoimaisempi). Koodin kokoa olisi helppoa supistaa n. 30% muuttamalla toimintamallia ja ottamalla käyttöön muutamia yksinkertaisia optimointeja.
Myös "5+c":n kuuluva assembler-kääntäjä vaati muutamia muutoksia kääntääkseen myös HC11-koodia. Linkkeriin ei tarvittu muutoksia.
Työn tuloksena syntyi kääntäjä, joka tuottaa tähän tarkoitukseen hyvin sopivaa, joskin turhan paljon tilaa vaativaa koodia. Kääntäjä ei kuitenkaan laadullisesti ole sellaisella tasolla, että sen voisi julkaista.
Samasta paikasta löytyy kääntäjiä myös muille prosessoreille.
[versio 1.5, 1996/03/10 20:08:32] [Lähetä palautetta Laurille]