Avainsana-arkisto: diagnostiikka

C64 diagnostiikan antama virheellinen PLA testitulos asetusvirheen seurauksena

Ostin diagnostiikkalaitteiston lapsuudenajan C64:n korjaamista varten. Se osoittautui todella päteväksi välineeksi erinäisten vikojen paikantamiseen. Mutta, yhtä vikaa en millään meinannut saada korjattua. Testi herjasi PLA vikaa, vaikka tein testejä kahdella eri koneella, ja kahdellakin uudella PLA:lla. Yksi alkuperäinen PLA oli oikeastikin rikki, mutta molemmat uudet ja yksi vanha olivat ehjiä.

Ylimääräisen PLA:n hankin virheellisen testituloksen seurauksena. Kuvittelin ensimmäisen olevan jollain tapaa rikki / potevan yhteensopivuusongelmia – koska tällaisia tapauksiakin on raportoitu. Syynä virheelliseen testitulokseen oli yksittäisen dippikytkimen asento.

Testilaitteisto

Testilaitteisto koostuu kuudesta osasta: jumpperipalikan moduulista (vasen ylä), softa ROM-moduulista, näppäimistö donglesta, kasettiportti moduulista, peliporttimoduulista ja sarjaporttidonglesta (oikea ala).

Syyllinen

Testilaitteessa, eikä testattavissa PLA-piireissä ollut vikaa, vaan syy oli käyttäjässä. Merkittävässä roolissa olivat ohjeet, jotka kitin mukana seurasivat. Ohjeiden tiedot olivat täysin oikein, mutta ne olisivat voineet olla selkeämmät. Ongelman ydin / ohjeiden epäjohdonmukaisuus johtuu siitä, että ohjeita ei ole tehty mukana tulevalle ROM-softamoduulille, vaikka samat asettelut siitä löytyykin (ja jotka saa aseteltua oikein ohjeiden mukaan).

Ohjeissa on järkeä, kun sitä vertaa sitä varten suunniteltuun ROM-moduuliin. Tässä vaihtoehtoina ovat selkeästi joko HI tai LO kullekin valinnalle, sekä GAME ja EXROM voivat olla joko auki tai kiinni (open/close). Myös järjestys on yhtenevä ohjeen kanssa.

Toisin oli mukana tulleen Versa64Cart:in kanssa. Tässä GAME, EXROM, A15, A14 ja A13 tila valitaan yksittäisten dippikytkimien avulla, jonka lisäksi järjestys on erilainen. HIGH/LOW asennosta kerrotaan SW1-dippikytkinpaketin vasemmalla reunalla. Kaikki tieto oikein tekemiseen on tarjolla, mutta palasia täytyy hieman osata yhdistellä.

Vaikka tekniikan kanssa olisi kuinka paljon paininut, niin uudet asiat ovat aina uusia. Tuskailin ohjeiden kanssa alusta lähtien, en käsittänyt miksi järjestys ei voi olla looginen ja miksi ohjeet eivät voi kertoa kytkinten asentoa – kuten normaalisti esim. automaatio maailmassa. Kun sain testiohjelman käyntiin muutaman yrityksen jälkeen, olin tyytyväinen. Paitsi, että epähuomiossa tuo GAME-dippi oli jäänyt väärään asentoon – tämän virheasennon raapustin myös ohjelappuseen. Tämä ei estänyt softan käynnistymistä, koska valinta ei vaikuta käynnistettävän ohjelman valintaan (ohjelma valitaan A15-13 dipeillä).

Ohjeet

Alla alkuperäinen ohje näyttää tältä:

Alla päivitetty versio taulukosta. Vaikka taulukon esityssuunta onkin vaihtunut ristiin, tämä ei ole ensisijainen parannus oikeiden asetusten tekemiseksi. Yksi suurimmista ongelmista oli dippikytkimien epälooginen järjestys, joka tähän versioon on muutettu. Tässä järjestys vastaa VersaCartin dippikytkimiä ja jumppereita, sulkuihin on merkitty kunkin dippikytkimen numero. Nämäkään päivitykset eivät poista kaikkea epäselvyyttä.

GAME (1)EXROM (2)A15 (3)A14 (4)A13 (5)ROM
HILOLOLOLOLOC64 Diaggnostics 586220++
LOHILOLOHIHIDeadTest
HILOHILOLOLOC64 doctor
HILOHIHIHILO1541 Diag
HILOHIHILOLOBlackBox V3
HILOHILOHILOSYS700 Assembler & SYS32777 Monitor
HIHILOHILOLOC128 Diag 588121
HIHILOHIHILOC128 Diag2 789010

Sekavaa

Eniten hämmennystä aiheutti HI / LO ja Open / Closed -esitystapa. Levyn pintaa dippikytkimien viereen on painettuna HI / LO, joka tarkoittaa signaalin tilaa / tasoa, eli Hi = jännite löytyy ja LO = jännite puuttuu / maadoitettu. Tämä saavutetaan kytkimillä käänteisesti, eli kun kytkin on yläasennossa (ON), niin signaali on LO. Kun kytkin on ala-asennossa (OFF), signaali on HI. Jos tässä kohdin erehtyy miettimään HI/LO tarkoittavan kytkimen fyysistä ylhäällä/alahaalla oloa, niin metsään menee. Kunhan mieltää, että kytkimen asento ON = LO ja OFF = ja HI, niin homma toimii. Mutta on tämä silti sekavaa.

Eikä epäjohdonmukaisuudet lopu tähän. ROM:in tapauksessa esitetään jumpperipalikan fyysistä sijaintia, eli onko se HI / LO-kohdassa. Tämä menee siis juuri niin kuin levylle on painettu.

Oman mausteensa soppaan lisää GAME ja EXROM dippien esitystapa, joka onkin yhtäkkiä Open / Closed, vaikka nämä sijaitsevat dippikytkimen paikoissa 1 ja 2, jolloin ON / OFF esitystapa olisi se kaikkein järkevin. Tässä vaihteeksi esitettiinkin signaalin tasoa tekstillä, Open = HI (OFF) ja Closed = LO (ON). Loogista. Toki tämä kaikki on loogista, kun ROM-moduulina on oikea ’alkuperäinen’ moduuli, mutta se on kaikkea muuta VersaCartin kanssa.

Virhe

Vaikka asian laita selvisikin, on tämä käänteislogiikka jotenkin todella hankala mieltää. Aina sai olla pyörittelemässä, miten päin niiden kytkimien pitikään olla. Tämän takia piirsinkin ohjelappuun dippien asennot siinä järjestyksessä kuin ne levyllä ovat. Jonkun syyn takia GAME dippi oli jäänyt väärään asentoon. Ongelmallisinta tässä on, että kaikki ’toimii’ kuten pitää, oli GAME kummassa asennossa tahansa. Ainoa sivuvaikutus on, että PLA testi joko toimii tai ei toimi.

Miksi testi toimii, mutta tulos on väärin? A13…15, sekä ROM valitsevat käytetyn softan muistipaikan, kun taas GAME ja EXROM ovat fyysisten signaalien reitittämistä. Jos GAME on väärässä asennossa, niin PLA:ta ei ilmeisesti koskaan valita (chip select) testattavaksi, vaan testi tehdäänkin virheellisesti BasicROM:iin. Ei ihme, että tuloksena on vika.

Lisää paranneltu ohje

Lopuksi vielä viimeisin versio taulukosta, joka mielestäni on se kaikkein selkein esitystapa Versa64Cart:ia käytettäessä. Tämä kertoo kunkin kytkinten fyysisen asennon. Ja selvyyden vuoksi: ON = kytkin yläasennossa, OFF = kytkin ala-asennossa. ROM valinnan H/L tarkoittaa kummassa paikassa jumpperi sijaitsee (ROMH / ROML).

GAME (1)EXROM (2)A15 (3)A14 (4)A13 (5)ROM
OFFONONONONLC64 Diaggnostics 586220++
ONOFFONONOFFHDeadTest
OFFONOFFONONLC64 doctor
OFFONOFFOFFOFFL1541 Diag
OFFONOFFOFFONLBlackBox V3
OFFONOFFONOFFLSYS700 Assembler & SYS32777 Monitor
OFFOFFONOFFONLC128 Diag 588121
OFFOFFONOFFOFFLC128 Diag2 789010