Google Analytics

26 maart 2022

Bouw: De "mini" Microcomp-2 een controversiële computer

In 1981 verscheen in Australië het eerste nummer van het elektronica tijdschrift Talking Electronics, opgericht en gepubliceerd door Colin Mitchell. 

Het eerste nummer van Talking Electronics

Het tijdschrift verscheen onregelmatig en was gericht op de beginnende elektronica hobbyist. Het  bevatte allerlei leuke ideeën voor het bouwen van diverse zelfbouw schakelingen. In mei 1989 verscheen het laatste nummer: 15.

Het Microcomp-1 ontwerp

In de delen 13 en 14 verscheen het ontwerp voor een computer gebaseerd op de Z80 processor met een minimum aan onderdelen: De Microcomp-1. Deze computer bestond uit slechts 3 IC's en bevatte 2 7-segment displays, een 4x4 led matrix, 8 uitvoer leds en een buzzer. Daarnaast bevat het een reset knop, twee bedieningsknoppen A en B en een 8 voudige dip schakelaar waarmee een programma kan worden geselecteerd.

Het printontwerp is enkelzijdig waardoor er veel draadbruggen nodig zijn en ook de led matrix dient aan de achterkant met draadbruggen aan elkaar te worden verbonden. De afmeting van de printplaat bedraagt ongeveer 17 bij 10 cm.

Er kunnen ook uitbreidingen op worden aangesloten zoals een telefoon kiezer, een morse trainer of een 4 cijfer display.

Het controversiële aan dit ontwerp is dat de Microcomp-1 geen RAM geheugen heeft, alleen een EPROM waarin het programma is opgeslagen. Dit beperkt de mogelijkheden van deze computer behoorlijk aangezien alleen de 11 interne registers en de 7 schaduw registers van de Z80 kunnen worden gebruikt voor het vastleggen van gegevens. Bovendien kunnen bepaalde Z80 instructies die met de geheugenstack werken zoals CALL/RET, LD (xx),yy, PUSH/POP en RST xx niet worden gebruikt.

Nu (2022) ruim 40 jaar later is Colin Mitchell nog steeds actief en biedt de meeste van zijn ontwerpen aan als kits via internet. De Microcomp-1 ontbreekt helaas en daarom heeft Brian Chiha met toestemming van Colin een nieuw kleiner formaat (12 x 6,5 cm) printplaat ontworpen: de "Mini" Microcomp-2.

Op deze nieuwe dubbelzijdige printplaat zijn geen draadbruggen meer nodig.

Alhoewel met deze computer niet gauw een praktische invulling is te bedenken, heb ik er wel een gevonden: Een Z80 Central Processing Unit (CPU) tester. De meeste eenvoudige CPU testers zijn zo genaamde NOP testers. NOP (No Operation) is een processor instructie die zelf niets uitvoert en alleen de instructieteller verhoogt. Deze NOP instructie wordt voornamelijk gebruikt bij het testen en debuggen van software. Door een stel leds op de adreslijnen aan te sluiten zullen deze bij een werkende processor allemaal (al dan niet knipperend) oplichten. Echter de processor wordt maar heel beperkt getest. Met dit ontwerp worden veel verschillende processor instructies gebruikt en dat maakt de test betrouwbaarder.

De Bouw

Om het testen van Z80 CPU's te vergemakkelijken, soldeer ik een ZIF-voet in plaats van een standaard IC-voet.

De aansluitingen van een Z80 CPU

Het elektronica ontwerp is nog van voor het USB tijdperk en heeft een 9V wissel of gelijkspanning als voedingsingang. Ik ga dit ontwerp aanpassen met een 5V USB B connector en laat alle componenten die nodig zijn voor de oorspronkelijke voeding achterwege.

De buzzer rechtsonder die kan worden gebruikt om signalen op de print hoorbaar te maken ten behoeve van foutopsporing heb ik ook achterwege gelaten.

Links op de foto hierboven zie je een USB B connector op een breakout printplaatje (onderzijde), deze wordt gesoldeerd op de plaats van de 1000uF condensator (net boven de blauwe instel potmeter) en levert dan direct de 5V voedingsspanning. 

Er is dan geen ruimte meer voor de 1uF condensator die gebruikt wordt voor het reset signaal, dus is die soldeer ik aan de onderkant. Ook wordt de in- en uitgang van de niet gebruikte 7805 spanningsregulator met een draadbrug doorverbonden (links). Een dikke dubbelzijdige sterk klevende tape zorgt voor fixatie van de USB printje op de hoofdprint (rechts).

De Software

In het Talking Electronics tijdschrift verschenen diverse software lijsten die door Brian Chiha zijn verzameld. Ook heeft hij zelf enkele toepassingen geschreven zoals spellen en deze gezamenlijk in een bestand ondergebracht die kan worden gebruikt om een 2732 EPROM te programmeren. Deze is te downloaden op github.

De software is opgedeeld in twee geheugenbanken. Door middel van een miniatuur schuifschakelaar in het midden van de print kan tussen de twee banken worden geschakeld.

De eerste bank (schakelaar naar rechts) bevat de volgende programma's:

  • 99 op/aftel teller (dip schakelaar op 0)
  • Quickdraw (dip schakelaar op 2)
  • Scrollende tekst (dip schakelaar op 8)
  • Weergave geheugen (dip schakelaar op 20)
  • Led Demo 1 (dip schakelaar op 30)
  • Dobbelsteen (dip schakelaar op 47)

De tweede bank (schakelaar naar links) bevat de volgende software die door middel van een menu met knop A kan worden doorlopen en met knop B kan worden geselecteerd:

  • Blackjack spel
  • Mastermind spel
  • NIM spel
  • Tug 'O War spel
  • LED demo 2

Het programmeren van de 2732 EPROM bleek een behoorlijke uitdaging. Dit verouderde type EPROM wordt door zijn lange programmeer tijd en/of hoge programmeer spanning niet goed meer door moderne EPROM programmers ondersteund. De 2732A werkt met een programmeer spanning (Vpp) van 21V. en de 2732B met 12.5V.

De laatste versie van de populaire TL866II programmer kan nog maar tot 18V programmeren. Oudere versies van de TL866 konden wel tot 21V. Ook het programmeren van de 2732B versie op 12.5V lukt niet met de TL866II omdat de benodigde stroom niet kan worden geleverd en zelfs de langzaamste instelbare programmeer timing toch nog te snel blijkt voor dit type IC.

Uiteindelijk is het wel gelukt door een 2732A type te programmeren met behulp van een GQ-4x4 EPROM programmer. Deze programmer is echter wel ruim 2x zo duur.
De stoom geleverd door de 5V USB aansluiting bleek niet voldoende dus dient ook een externe 9V voeding op de programmer te worden aangesloten. De programmeer snelheid dient bovendien te worden verlaagd door Speed: 0 in te stellen.

Links de TL866II programmer en rechts de GQ-4x4

Het eindresultaat


Een werkende "Mini" Microcomp-2 met het op/aftel programma en een werkend geteste Z80 CPU.

Rest nu nog om in een vervolg project software te schrijven die speciaal gericht is op het testen van Z80 processors door het uitvoeren van zo veel mogelijk instructies en bovendien softwarematig kan detecteren of het een NMOS of CMOS type Z80 betreft.

16 maart 2022

Bouw: EPROM emulator NG

In veel oudere (8-bit) computers worden Erasable Programmable Read-Only Memory (EPROM's) gebruikt voor de opslag van software en gegevens. Deze geheugens kunnen met behulp van een programmer zoals de populaire TL866II worden geprogrammeerd. Eenmaal voorzien van de data blijft deze opgeslagen in het IC, ook als het IC niet op de voedingspanning is aangesloten. Het geheugen kan dan telkens opnieuw worden uitgelezen.

Om een EPROM opnieuw te kunnen programmeren dient eerst in inhoud te worden gewist door middel van Ultra Violet (UV) licht van een specifieke golflengte voor een duur van ongeveer 15-30 minuten. Daarna kan deze weer met nieuwe gegevens worden geprogrammeerd.

Een EPROM uit 1987 van het type AM2732 (4k x 8)
D.m.v. het glaasje in de behuizing kan de inhoud van
de inwendige chip worden gewist met UV licht.

Met name bij ontwikkeling van nieuwe software en het testen daarvan kost het steeds wissen en opnieuw programmeren van de EPROM veel tijd. Het zou heel handig zijn als de software aanpassing die op de computer is gedaan direct in het apparaat waar de EPROM in zit beschikbaar is.

Om deze reden heeft Kris Sekula van My Geeky Hobby een EPROM emulator ontwikkeld: de zo genaamde "EPROM Emulator NG". Deze emulator kan de volgende EPROM's emuleren: 2716, 2732, 2764, 27128, 27256 en de 27512.

Op de website van My Geeky Hobby zijn voorbeelden te zien waar deze emulator zoal kan worden toegepast.

De Hardware

De printplaat van de EPROM Emulator NG versie 2.1

De onderdelen worden gesoldeerd
De printplaat bevat onder andere een Arduino Nano t.b.v. de communicatie met de PC en de aansturing van de onderdelen op de print, een AS6C1008 (128k x 8) SRAM voor de opslag van de data, een 25LC512 (64k x 8) seriële SPI EEPROM ten behoeve van "permanente" opslag en enkele schuifregisters en logica ten behoeve van de aansturing en twee transistors voor de aansturing van de externe reset signalen.

Op de print wordt een 34 polige IDC connector geplaatst waarop een bandkabel kan worden aangesloten die aan het andere uiteinde een 28 polige voet bevat die in de IC voet van de EPROM kan worden gestoken. Daarnaast zijn er nog twee testclips beschikbaar waarmee een reset kan worden uitgevoerd op de computer waar de EPROM aanwezig is.

Ik plaats IC voeten voor de IC's en twee hoge header connectors voor de Arduino Nano omdat eronder ook nog onderdelen zitten.

De printplaat is gereed en de Arduino geplaatst.

Nu kan de bandkabel worden gemaakt en dit bleek nog niet zo eenvoudig. De bandkabel IC plug van Electrosonic, type FDP-628-T kon ik alleen vinden bij het Amerikaanse DigiKey.
De verzendkosten van 18 euro zijn pittig, het beste is om de bestelling dan maar te combineren met andere in Europa slechter verkrijgbare onderdelen.

Ik heb een 40 aderige bandkabel gebruikt die ik nog had liggen en deze gestript op 30 aders. De bandkabel wordt op de gewenste lengte geknipt waarbij twee draden voor de test clips langer worden gelaten. Op de printplaat is een 34 polige IDC gebruikt omdat deze connector gebruikelijk is en goed te verkrijgen. Let er op dat de bovenste 4 aansluitingen op deze connector worden vrijgehouden.

Ten behoeve van het bevestigen van de connectoren op de bandkabel gebruik ik een krimptang zoals op de afbeelding links. Let erop dat de connectoren precies haaks op de bandkabel staan voordat deze erop wordt geperst. Het ging goed bij de normale IDC connector, maar het ging al meteen mis met de IC plug. Op de onderkant komt zoveel druk te staan dat deze connector direct door midden breekt. Het beste is om hier een mini breadboard te gebruiken zodat de pinnen van de IC plug hier in kunnen worden gestoken en het geheel in een bankschroef kan worden samengedrukt.

Nu kunnen de reset clips worden gesoldeerd. Met behulp van deze clips (actief laag of actief hoog) kan de aangesloten elektronica automatisch worden gereset nadat de inhoud van de ge-emuleerde EPROM is gewijzigd. Aangezien de bandkabel draden nogal fragiel zijn heb ik de draden bij de "ingang" de plug vastgezet met een druppel "hot glue".

De EPROM Emulator NG compleet met bandkabel en reset clips.

De Software

De software bestaat uit twee delen:

  • De software voor de Arduino ten behoeve van de aansturing van de print en communicatie met de PC, geschreven in C++
  • De software voor de PC ten behoeve van selectie van het type EPROM, de COM poort, het bestand met de EPROM inhoud en andere instellingen, geschreven in Python.

De EPROM emulator NG software is beschikbaar op Github.

Voor de Arduino Nano heb ik firmware versie 2.0rc4 (EPROM_EMU_NG_FW_2.0rc4.ino) gebruikt. Deze software heb ik met behulp van de Arduino IDE op de Arduino Nano geladen.

Om het Python script (EPROM_NG_v2.0rc3.py) op de PC te kunnen gebruiken dient eerst Python zelf te worden geïnstalleerd en vervolgens nog de libraries pySerial en pySimpleGui door middel van:

pip install pyserial
pip install pysimplegui

Hierna kan het script worden gestart met parameters op de command line, bij voorbeeld:

python EPROM_NG_v2.0rc3.py -mem 27256 -spi y -auto n 27256.HEX com4

of zonder parameters om de grafische interface te starten:


In een van de vervolg blogs zal ik deze EPROM emulator gaan testen in combinatie met een nog te bouwen retro computer.