In plaats van een Spaanse handleiding proberen te lezen, is het veel gemakkelijker om 6502 machinetaal te volgen. Ik ben vreemd, maar dat mag na ruim 26 jaar Het Lab bekend zijn. Het resultaat is dat ik nu weet hoe we het geheugen kunnen uitlezen en aanpassen. Dat is de eerste stap in het tot leven wekken van een “dode computer”.
Henk van de Kamer
In de vorige aflevering vertelde ik over het vinden van een Promax MI-650C μ-instructor op de zolder van het ouderlijk huis van mijn vriend. In de inleiding schreef ik meerdere weken en dat is in de context van mijn ‘dode computer’-project correct. Zoals altijd was dit wederom zoeken, lezen en allerlei hypotheses opstellen. Bijvoorbeeld over de Wozmon in de Apple I en soortgelijke software in andere 6502-gebaseerde computers. Slechts een fractie van de tijd was fysiek spelen met het apparaat zelf. Voor deze aflevering is dat opgelopen tot ruim tachtig uur, ofwel ik ben nu in staat om zaken te corrigeren of verder te verduidelijken.
EPROMs
Een paar dagen na het inleveren van de aflevering had mijn vriend zijn exemplaar gevonden. De socket waar bij mij een EPROM met het label OPC-650 BOOT V1.0 zit, is op zijn exemplaar leeg. Ik heb te snel een conclusie getrokken door het woordje boot. Zoeken op opc boot geeft weinig hits, maar één daarvan gaat over de CAN – Controller Area Network – bus. De nieuwe hypothese is dat deze code bevat om hier mee te experimenteren. Omdat deze ROM niet standaard is, moet ik diens inhoud gaan archiveren voor het nageslacht.
De andere EPROM bevat het monitorprogramma plus functies om het apparaat te kunnen gebruiken. Omdat het geheel acht kilobyte groot is, bevat het ook code voor allerlei uitbreidingskaarten die via de expansion of application connector gebruikt kunnen worden. Of die ooit nog boven water komen is hoogst onwaarschijnlijk. Op het internet is bijna niets over dit apparaat te vinden! Er was blijkbaar een simulator (https://web.archive.org/web/20010105191000/http://voltio.ujaen.es/pub/6502/) – maar het programma zelf is helaas niet door de Wayback Machine gearchiveerd. We mogen van geluk spreken dat in ieder geval de handleiding bewaard is gebleven.
Schema
Achteraf is het logisch dat de MI-650C v1.02 gebruikt wordt voor het apparaat zelf. Dit is IC17 en heeft als label ROM. De ander is IC13 en bevat rondom een aantal jumpers. Met J9 kunnen we aangeven of in het IC-voetje een EPROM of een RAM-chip aanwezig is. Met J6 kunnen we kiezen tussen een 2 (2716) of 8 kilobyte (2764) versie als ROM en tot slot kan J5 aangeven of deze intern of op een uitbreidingskaart aanwezig is. Dit soort logica is waanzin voor een (EP)ROM die essentieel is voor de werking.
Omdat geen van de chips de volledige 64 kilobyte groot is die door een 6502 gebruikt kan worden, moeten we via logica de juiste chip selecteren. De truc is de waarde van de hoogste adreslijnen combineren en op basis daarvan de 8 kilobyte RAM, beide ROM’s of één van de twee I/O chips activeren. In de handleiding is een schema aanwezig waaruit dit selecteren duidelijk wordt. Als eerste worden de adreslijnen A15, A14 en A13 door IC1 – een 74HC138 – gedecodeerd. Met drie adreslijnen hebben we acht mogelijke combinaties, ofwel we delen de 64 kilobyte op in acht stukken van elk maximaal 8 kilobyte. De acht uitgangen van genoemde chip geven het startadres (zie figuur 1) van zo’n blok adressen. Ik hoop dat geïnteresseerden nu net als ik een indeling kunnen maken.
Figuur 1: Welke chip moet geactiveerd worden? |
Toetsenbord
In de vorige aflevering gaf ik de toetsaanslagen om de inhoud van een geheugenadres uit te lezen. Ondertussen weet ik dankzij het uitpluizen van de machinetaal in de ROM veel meer over de werking. De 7-segments displays hebben tevens een punt als achtste ‘segment’. Deze punt wordt gebruikt als indicatie dat we de waarde in die segmenten kunnen aanpassen. Na het aanzetten verschijnt - - - - - - op het display en wacht het systeem op het indrukken van een hexadecimale toets die tevens een functie opdruk heeft.
Het indrukken van MEM/0 – zoals de vorige keer verteld – activeert het uitlezen of aanpassen van de geheugeninhoud. Het adres deel – de eerste vier 7-segment displays – toont nu het laatst opgeslagen adres en na aanzetten is dat altijd – voor zover ik heb gezien –
0.0.5.2.
of anders het adres dat we eerder hebben ingegeven. Op het data deel – de laatste twee 7-segments displays – van het display zien we met enige fantasie
a d
– voor adres of beter het Engelse address – zonder punten. Na het bestuderen van de ROM heb ik een tabel gevonden die meerdere van dit soort teksten bevat.
Met de hexadecimale toetsen – 0 t/m 9 en A t/m F – kunnen we nu een adres ingeven. De eerste verschijnt in het vierde segment, waarna de volgende alles naar links schuiven en de nieuwe toetsaanslag in het vierde segment tonen. Zodra u tevreden bent – we kunnen altijd meer dan vier keer een geldige toets indrukken – bevestigen we de invoer met een druk op de FIN-toets. Waarna de a d verandert naar bijvoorbeeld 7.1. ofwel de waarde en de mogelijkheid om deze aan te passen. Tot zover als beschreven, maar nu met de nieuwe kennis ofwel hopelijk duidelijker.
Altair 8800 Computer |
Nieuw is dat ik nu weet dat we op de + of - kunnen drukken. De nieuwe of niet aangepaste waarde wordt opgeslagen en het volgende of vorige adres wordt getoond, tezamen met de inhoud van die geheugenlocatie. Zodra we klaar zijn, zorgt een druk op de FIN-toets dat we terugkeren naar de - - - - - - op het display. Dankzij de hulp van de 6502 is het nu dus vrij gemakkelijk om een eigen programma in te voeren of aan te passen. Dit alles dankzij 19 toetsen en zes 7-segment displays. Iets dergelijks zat vaag in mijn hoofd als basis voor het “dode computer”-project, maar nu ik het in werking heb gezien, is dit iets wat ik zeker verder ga uitzoeken! Het is namelijk een stap verder dan de vele schakelaars en leds die bijvoorbeeld om een IMSAI 8080 of Altair 8800 aanwezig zijn.
IMSAI 8080 Computer |
Schoonmaken en invetten
Ik had al gemerkt dat de toetsen niet soepel werken. Met bovenstaande aanvulling in het gebruik van de MEM/0-toets zien we regelmatig een bounce. Fysieke schakelaars gaan niet perfect van aan naar uit of andersom. Gedurende een periode denderen de contacten ofwel aan, uit, aan en dat meerdere keren. Afhankelijk van de kwaliteit van de schakelaar – of in dit geval de toets – kan dat vele milliseconden duren. In de code wordt geprobeerd om deze dender op te lossen door na een vertraging nogmaals te kijken of dezelfde toets is ingedrukt.
De snelste typiste haalde in het Engels — gemiddeld 4,7 letters per woord — 212 woorden per minuut, ofwel 1.000 toetsaanslagen per minuut. Dat is 16,6 toetsaanslagen per seconde ofwel elke 60 milliseconde een aanslag. Nu denk ik niet dat iemand in staat is om deze snelheid te halen met het secuur overtikken van machinetaal ofwel hexadecimale waardes. De exacte vertraging in de code moet ik nog controleren, maar is minimaal 1,3 milliseconden of mogelijk het dubbele. Dat is te weinig voor hoe stroef de toetsen zijn. Het exemplaar van mijn vriend schijnt beter te zijn, maar ik durf te wedden dat ook daar toetsen lijken te haperen. Dat is goed te zien met de toetsen + en - als één of meerdere adressen worden overgeslagen. Maar ook bij het invoeren van een adres of data zie ik soms onbedoelde herhalingen.
Ik heb de mechanische schakelaars schoongemaakt en ingevet – zie toevoeging in https://www.hetlab.tk/museum/promax-instructor-mi-650c voor de details. Nu hebben de toetsen vier hoekgeleiders en gezien de ouderdom denk ik dat daar het grootste probleem zit. Ofwel ook deze zijn ingevet met Krytox GPL 205 G0. Dit spul is per gram bijna net zo duur als goud, maar gelukkig is er niet veel van nodig. Waarom niet gewoon vet? Volgens de door mij geraadpleegde experts kan gewoon vet het plastic aantasten en dat willen we niet met een apparaat dat bijna museumwaarde heeft.
Tot slot
Het is ontzettend spannend om uit te zoeken hoe een computer werkt als er nauwelijks iets op het internet is te vinden. Helaas is Google het daar niet mee eens en zie ik mijn werk even in de zoekresultaten verschijnen om daarna weer te verdwijnen. Er is dus een kans dat er veel meer is bekend, maar dat Google dat weigert te vertonen. Maar dat is een ander verhaal, de volgende keer voorlopig de laatste aflevering over de Promax MI-650C μ-instructor.