Een nieuwe System 5-kloon (2)

Episode 2 - de CPU-kaart

Op woensdag 23 oktober was het dan zo ver. DHL bracht twee pakketjes van JLC PCB. Eén daarvan beval de toetsenbord-printjes en de ander de CPU-kaarten.


Ik ging al vrij snel aan de slag met het toetsenbordprintje. Dat is immers het snelst klaar. De connector aan de onderkant monteren, de bandkabel aan de bovenkant, een trekontlasting van een stukje printplaat -vandaar de gaatjes halverwege de print- en klaar. Dus zo zit het printje in de Atom:

De Atom wordt overigens gevoed vanuit de CPU kaart van de System 5, er is geen aparte voedingskabel voor nodig. Later, als het project verder gevorderd is, ga ik deze Atom verder strippen zodat allen de processor, wat ROM en RAM, de VIA en de hoogstnoodzakelijke decoderingslogica overblijven. Dat brengt het stroomverbruik nog wat terug. Op de CPU kaart en het toetsenbordkaartje kunnen vier jumpertjes gesloten worden waardoor er drie aders gebruikt worden voor zowel de +5V als voor de 0V retourleiding. Je kunt niet zeggen dat ik er niet over heb nagedacht...

De VDU-kaart en de FDC had ik al eerder in elkaar gezet, in afwachting van de CPU-kaart. Die lagen dus al klaar, weliswaar nog niet getest maar deze bleken (spoiler alert!!!) later zonder problemen meteen te werken.

En toen de CPU-kaart in elkaar gezet. Vol verwachting werd deze na het bouwen voorzien van een ICE-T65 in-circuit debugger. En ja hoor, het meest verwachte scenario bleek waarheid: de kaart werkt niet. Ik gebruik daarom mijn ICE-T65 in-circuit debugger om de mogelijke fout te vinden.

Ik constateerde dat de volgende onderdelen niet werken:

Ik controleer alle solderingen en loop het schema na, ik zie geen fouten, behalve dat ik A14 van de RAM rechtstreeks verbonden heb met A14 van de processor. Technisch is dit geen probleem maar wel voor mijn plannen met dit systeem. Ik heb nu maar twee adreslijnen die ik voor bank-selectie beschikbaar heb (A15 en A16). Dat betekent dat ik slechts vier banken van 32 kB beschikbaar heb, terwijl ik later voor sideway RAM acht banken van 16 kB nodig heb. Bij de ROM heb ik dat wel goed gedaan. Op zich is dit makkelijk te herstellen: baantje doorkrassen, draadje leggen tussen ROM en RAM op pin zoveel en klaar. En voor de werking van de RAM is dit geen probleem. Vervolgens met de scoop meten of de Chip Select van de RAM werkt. Ja hoor, die doet het. Ik besluit om een appje naar Herman, Steve en Sofie te sturen want zij hebben immers met hetzelfde probleem gezeten:

Hi Herman, Steve and Sofie, I am worsteling with a nieuw design of your System5. But it is not working. Nothing comes out of it. I saw your movie where Herman knipte a dreed through and then it worked. What dreed should I knip through?

En ik kreeg al vrij snel een reactie van Herman:

Hi Roland. Ik studied the diagram in the October edition of *Asterisk and I noticed that you made at least sixteen errors. Here they are:

  1. You have connected the NWDS to the OE of the RAM chip and you connected the NRDS to the WE of the RAM chip. This way the CPU can never write to or read from the RAM.
  2. You made the same silly mistake in the I/O buffer.
  3. As for the 6522 VIA: you swapped the address lines: A3 goes to RS0, A2 to RS1 and so on.
  4. Also for the VIA: you made the same mistake for the complete databus

So, you need to cut twelve tracks (A0...A3, D0...D7) and wire them correctly. The NWDS/NRDS bugs can be solved in the CPLD.
BR, Herman.
PS: don't you ever dare to put the label "Acorn to this machine, prutser!"

Ja, daar kun je het dan mee doen. Inderdaad, ik heb heel wat verkeerde labels in het schema geplakt waardoor de print dus verkeerd gerouteerd is. Alles gaat via de "elektrische regels" (geen twee uitgangen met elkaar verbonden of zwevende ingangen) dus de ERD controle van KiCAD kon dit niet zien als fouten en aangezien de print conform het schema gemaakt is, zal ook de DRC van KiCAD geen fout ontdekken. Dus, dan maar krassen en draadjes leggen. En zo wordt een vier-laags printplaat ineens vijf lagen.

Het probleem met NWDS/NRDS is inderdaad in de CPLD op te lossen. Immers, deze signalen worden in de CPLD gegenereerd op basis van ∅2 en R/nW. Door nu NRDS aan te sturen als er naar RAM of I/O geschreven wordt en NWDS aan te sturen bij het lezen dan is dat probleem verholpen zonder te krassen en solderen. De fouten met de VIA zijn theoretisch ook in software op te lossen door de VIA registers op de nieuwe (of zo u wenst: verkeerde) adressen aan te spreken plus alle databits van plaats te wisselen. Dit is echter geen wenselijke situatie omdat dan alle software aangepast moet worden en daar is niet altijd ruimte voor in de ROMs; daarnaast is dat ook nog foutgevoelig. Dat wordt dus hardwarematig aangepast.

Nadat deze wijziging aangebracht zijn komt er wel leven in het systeem. Op het scherm verschijnt "Acorn DOS" met op twee regels lager een * prompt. Alleen het laatste deel van het scherm is niet gewist en staat voor met willekeurige tekens. Dat komt omdat de routine om het scherm te wissen deze lus uitvoert:

FED5: STA &400,X
FED8: STA &500,X
FEDB: STA &600,X
FEDE: STA &700,X

En laat nu net die waarde 7 van de laatste instructie op adres &FEE0 staan. Dus de debugger voert effectief het commando STA &FE00,X uit. En daarom wordt het scherm niet in het geheel gewist. Ik denk niet dat dit een probleem is op mijn print want ik kan me nog herinneren dat ik dit probleem ook had met de System5 van Bas.

Ik gebruik dus een Atom als toetsenbord. Het printje hiervoor heb ik in het begin van deze episode al even genoemd. De System reageert wel op het toetsenbord maar niet alle toetsaanslagen worden goed ontvangen. Zo werkt bijvoorbeeld de RETURN toets niet. Er verschijnt dan een - teken op het scherm. Ook krijg ik geen hoofdletters in beeld. Even snel rekenen leert dan dat bit 5 altijd '1' is. Snel even meten en jawel, bit 5 is altijd een soort van hoog, namelijk zo rond 1,843 V. Je zou het ook "zwevend" kunnen noemen. Ik had het toetsenbord aanvankelijk met een andere Atom getest en enkele eenvoudige testjes wezen al snel uit dat de PA5-poort van deze Atom defect is. Na het plaatsen van een vervangende VIA in de Atom was dit probleem opgelost en kunnen de eerste commando's ingetypt worden.


De debugger kan het onderste deel van het scherm niet wissen.


Hier draait het systeem met een echte 6502A, het schermprobleem treedt dan niet op.

1 of 2 MHz ?
De kaart is ontworpen met de mogelijkheid om het systeem op zowel 1 als 2 MHz te laten werken. Daarbij wil ik hetzelfde kunstje toepassen als in de BBC Micro, waarbij de CPU op 2 MHz werkt maar de I/O bus altijd op 1 MHz werkt. In het vorige artikel had ik dat uitgewerkt en ook in de CPLD geprogrammeerd. Helaas werkt het kunstje nog niet. Zodra ik overschakel naar 2 MHz gaat het systeem helemaal op hol. Wel, niet helemaal want de CPU blijft gewoon werken maar de VDU kaart kan dat niet aan, die vertoont alleen maar een zwaar gestoord beeld. Ook de VIA is niet aanspreekbaar. Die lijkt er dan helemaal niet meer in te zitten.

Deze bevindingen verbazen mij wel enigszins want het 1 MHz clocksignaal blijft gewoon op de bus aanwezig. Misschien wordt de 6845 toch zo nu en dan aangesproken en klopt daar iets niet met de timing. Ik heb met de scoop gekeken naar de clocksignalen en ook naar de relatie van ∅2 en het chip select signaal van de VIA. Die relatie lijkt ook wel in orde te zijn.


Geel: Chip select van de VIA, Blauw: ∅2 van de 6502

Bijzonder is wel dat als het volgende instructies uitgevoerd worden, dat het scherm dan weer rustig en leesbaar is:

4000	LDA #&08
4002	STA &E31
4005	LDA &E20
4008	JMP &4005

Ik ben er nog niet achter waarom het systeem niet op 2 MHz werkt, dit behoeft nog enige aandacht. In de komende weken zal ik eens mijn logic analyser aansluiten en bekijken wat er op de VIA gebeurt.

Voeding
Tenslotte werd de backplane ingebouwd in het rack. In dit rack zitten twee professionele voedingen (althans dat dacht ik, een voeding bleek gewoon een trafo met gelijkrichter en elco te zijn). Voor de zekerheid heb ik de andere voeding eens nagekeken op de aanwezigheid van Rifa condensatoren. Er zaten er twee in en die stonden in het standje "ploffen". Gelijk maar even vervangen dus. Beide voedingen leveren overigens een spanning van ergens tussen 15 en 22V.


Daarna heb ik de oude voedingsprint in mijn rack aangepast zodat er uiteindelijke vier uitgangen met 5V zijn, elk gevoed door één 7805 stabilisator. Ofschoon de load daarmee redelijk verdeeld wordt, is er toch één stabilisator die behoorlijk heet wordt. Ik had even over het hoofd gezien dat de CPU-kaart ook de aangesloten Atom voedt. Ofschoon daar geen 2114's meer in zitten loopt het totaal al vrij snel richting 1A, het maximum dat zo'n 7805 mag leveren. Om het risico op doorbranden te voorkomen ben ik toch maar op zoek gegaan naar een vervangende (schakelende) voeding. THMicros uit Rotterdam had nog een voeding op voorraad en heeft deze aan dit project gedoneerd. Dit is een voeding met een zogenaamde flexATX vormfactor. Deze zou fysiek in mijn rack moeten passen. Om de voeding netjes en flexibel in te bouwen zal ik toch wat aanpassingen moeten gaan maken aan mijn voedings-distributie-print. Kort samengevat: die kan er uit en er komt dan een nieuw printje in om het gat aan de achterzijde op te vullen. Aan de voorzijde ga ik dan de eenvoudige voedingsmodule gebruiken om de nieuwe voeding te bevestigen in het rack.


FlexATX PC voeding

Voor deze aflevering laat ik het hier even bij. In het volgende nummer van de *Asterisk wil ik voornamelijk aandacht gaan besteden aan de afwerking van het nieuwe systeem. De meeste onderdelen zijn al besteld en worden binnenkort bezorgd. Dat wordt klussen :-)