Google Analytics

18 januari 2023

Bouw: Een Cambridge Mk14 in een PIC

De Microcomputer Kit 14 (Mk-14) is ontwikkeld in 1977 door Science of Cambridge (later Sinclair) uit het Verenigd Koninkrijk. Deze kit is gebaseerd op de 8-bit INS8060 processor van National Semiconductor uit 1976 en hoort bij de SC/MP II familie (uitgesproken als "Scamp") wat staat voor Simple Cost-effective MicroProcessor.

Het doel van de kit was om te leren programmeren door middel van de 46 beschikbare instructies van deze SC/MP processor. De kit bestaat uit een printplaat met 18 IC's (exclusief de 7805 spanningsregulator), een 9-cijferig bubble led-display, een membraamtoetsenbord met 20 toetsen, een resetknop, 512 bytes ROM en 256 bytes RAM (uitbreidbaar naar 640 bytes).

Foto van een originele Mk14. Deze kan worden uitgebreid met een INS8154 RAM/IO IC
(in de rode voet) en een RAM uitbreiding in de andere voetjes. Foto: John Short

Er zijn in totaal 5 versies van de Mk14 gemaakt. Van de destijds meer dan 15000 verkochte exemplaren zijn er tegenwoordig nog maar weinig exemplaren van over. Op dit moment (januari 2023) is er een originele ongebouwde kit te koop op eBay voor een bedrag van maar liefst 3239 euro. In de loop der jaren zijn er verschillende replica's op de markt verschenen op basis van de originele chipset, maar de deze IC's zijn lastig te verkrijgen.

Het PIC ontwerp

Karen Orton† heeft de Mk14 weten te emuleren in slechts één goedkoop IC, de PIC16F876. De PIC wordt geklokt op de maximale klok frequentie van 20MHz en door de emulatie komt dit overeen met een Mk14 op 4 MHz, slechts 11% trager dan de originele Mk14 (4,43 MHz).

Schema van de Mk14 PIC emulator, bron: Karen Orton website

Budgetronics.eu heeft een printplaat ontworpen voor dit ontwerp en levert een complete kit met het voorgeprogrammeerde PIC IC.

De bouw


De onderdelen van de "Mk14 in a PIC" kit

Na ongeveer 1.5 uur solderen is de Mk14 in a PIC gereed.


Werking

Na een druk op de SC/MP reset knop, verschijnt links op het display 0000 (adres) en rechts 00 (data). Dit is het startpunt van het SCIOS monitorprogramma. Hierna wordt het start adres ingetoetst en daarna de Term-toets voor het invoeren van de opcode/data. Door middel van de MEM-toets wordt de inhoud opgeslagen en het adres automatisch met 1 verhoogd, waarna het programma op dezelfde wijze verder kan worden ingevoerd.

De ABORT-toets wordt gebruikt om het invoeren af te ronden. Voer nu het startadres in en druk op de GO-toets om het programma te starten.

De SC/MP instructieset van de Mk14


Enkele verschillen

In tegenstelling tot de originele Mk14, is er op de "Mk14 in a PIC" geen IO-interface beschikbaar voor het aansturen van andere apparatuur.

Zoals uit onderstaande tabel blijkt, is de geheugenindeling van de "Mk14 in a PIC" is niet volledig identiek aan die van de Mk14. Items die ontbreken in de standaard Mk14 zijn tussen haakjes weergegeven. Hoewel het RAM-geheugen van de PIC14 meerdere keren voorkomt in de geheugenindeling, zijn dit slechts kopieën.
In totaal zijn er dus slechts 256 bytes RAM beschikbaar.

Adres   Mk14Mk14 (PIC)          
000
100
SCIOSSCIOS
200
300
SCIOSSCIOS
400
500
SCIOSSCOIS
600
700
SCIOSSCIOS
800(RAM IO)Display
900DisplayDisplay
A00(RAM IO)RAM
B00(Expansion RAM)RAM
C00(RAM IO)Display
D00DisplayDisplay
E00(RAM IO)RAM
F00Standaard RAMRAM

De Sense A-interrupts zijn niet geïmplementeerd en SC/MP-paging is ook niet aanwezig.

Illegale SC/MP-instructies zorgen op de "Mk14 in a PIC" voor een reset. Dit is een voordeel, omdat een programma-crash door een illegale instructie op de Mk14 vaak onopgemerkt bleef en vaak leidde tot het (gedeeltelijk) overschrijven van het RAM-geheugen.


Extra functies

De "Mk14 in a PIC" heeft een aantal extra functies ten opzichte van de originele Mk14:

De geprogrammeerde instructies blijven bewaard in het Flash geheugen, dus zelfs na uitschakeling van het systeem.

Er is een seriële download-functie beschikbaar waarmee een Intel hex-bestand naar de "Mk14 in a PIC" kan worden gestuurd. Deze functie wordt automatisch gestart na een PIC-reset. Als deze functie niet nodig is, kan deze modus worden verlaten door op de SC/MP reset-toets te drukken, waarbij de RAM wordt geladen vanuit het Flash-geheugen. Bestanden dienen te worden overgedragen met een baudrate van 9600, 8 databits, 1 stopbit en geen pariteit. Omdat de verbinding eenrichtingsverkeer is wordt er ook geen handshake toegepast.


Kleine hardware aanpassing

De schakeling is ontworpen om RS-232 signalen te verwerken die worden ontvangen via de "Serial-in" aansluiting op de printplaat. Deze signalen variëren tussen de -12V (1) en +12V (0). De ingangsschakeling zet deze signalen om naar TTL-niveau (0V en 5V) en inverteert het signaal door middel van de BC547 transistor. 
Om een bestand vanaf een PC te kunnen versturen, wil ik gebruik maken van onderstaande kabel, die USB-signalen omzet naar serieel TTL-niveau omdat ik deze al in bezit heb.



Deze kabel kan niet rechtstreeks op de "Serial-in" worden aangesloten. Daarom voorzie ik de "Mk14 in a PIC" van een extra aansluiting op TTL niveau. Ik soldeer hiervoor een extra signaal pin op de plek waar normaal gesproken de collector van de BC547 transistor zit. Vervolgens soldeer ik de transistor aan de onderkant van de printplaat.

De GND aansluiting van de kabel word op de - aansluiting van de "Serial-in" gestoken en de TXD op de nieuwe TTL ingang. Zie rechter foto hierboven.

Software test

Om de "MK14 in a PIC" te testen gebruik ik het programma Babbage, gemaakt door Karen Orton. Dit programma berekent de waarde van Pi met behulp van het Babbage-algoritme. Hieronder staan de hex codes zoals die handmatig op de "Mk14 in een PIC" worden ingevoerd, beginnend op adres 0f20 en eindigend op 0fee.

      0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F
0f20 c4 0d 35 c4 0f 36 c4 8d 32 c4 32 c8 e6 c4 0f 37
0f30 c4 9b 33 c4 00 c8 dd c4 00 31 c4 04 c8 d7 c3 00
0f40 d4 0f 01 c2 80 cd 01 c4 0b 8f 00 c7 01 1c 1c 1c
0f50 1c 01 c2 80 cd 01 c4 00 8f 00 b8 b9 9c e0 c4 0b
0f60 8f 00 c4 00 c9 00 c7 fc b8 aa 9c cb c0 a5 98 bd
0f70 c7 fc c4 0a c8 9e c4 08 c8 9b 02 c3 00 eb 08 cf
0f80 01 b8 92 9c f6 b8 8d 9c ed b8 88 90 a0 3f 06 5b
0f90 4f 66 6d 7d 07 7f 67 00 00 00 00 00 00 00 00 91
0fa0 03 44 30 92 98 79 00 83 49 41 90 61 93 99 99 24
0fb0 23 26 00 63 93 99 99 21 67 69 55 06 00 00 00 03
0fc0 60 50 72 02 00 00 00 91 19 36 98 99 99 99 99 20
0fd0 55 86 93 99 99 99 99 72 79 06 01 00 00 00 00 99
0fe0 74 90 99 99 99 99 99 62 36 00 00 00 00 00 00

Een alternatief voor handmatige invoer is het omzetten van bovenstaande codes naar het Intel HEX-formaat. Dit bestand wordt dan via de seriële interface kabel van de PC naar de "Mk14 in a PIC"  verzonden:

:100F2000C40D35C40F36C48D32C432C8E6C40F3781
:100F3000C49B33C400C8DDC40031C404C8D7C30097
:100F4000D40F01C280CD01C40B8F00C7011C1C1C33
:100F50001C01C280CD01C4008F00B8B99CE0C40B55
:100F60008F00C400C900C7FCB8AA9CCBC0A598BD1F
:100F7000C7FCC40AC89EC408C89B02C300EB08CFC4
:100F800001B8929CF6B88D9CEDB88890A03F065BA6
:100F90004F666D7D077F6700000000000000009134
:100FA0000344309298790083494190619399992440
:100FB0002326006393999921676955060000000371
:100FC0006050720200000091193698999999992001
:100FD00055869399999999727906010000000099B4
:0F0FE00074909999999999623600000000000069
:00000001FF

Nadat de kabel op de USB poort van de PC is aangesloten, wordt een virtuele COM poort op de PC aangemaakt, die te vinden is in Windows Apparaatbeheer. In mijn geval is dit COM5.
Daarna wordt via een Windows-opdrachtprompt de poort ingesteld door middel van het commando:

mode com5 baud=9600 parity=n data=8 stop=1

Status for device COM5:
-----------------------
    Baud:            9600
    Parity:          None
    Data Bits:       8
    Stop Bits:       1
    Timeout:         OFF
    XON/XOFF:        OFF
    CTS handshaking: OFF
    DSR handshaking: OFF
    DSR sensitivity: OFF
    DTR circuit:     OFF
    RTS circuit:     OFF

De knop "PIC Reset" wordt gebruikt om het programma naar de "Mk14 in een PIC" te sturen. Op de PC wordt dan het volgende commando gegeven:

copy babbage.hex com5

Nadat het programma is geladen wordt het startadres 0F20 ingevoerd en kan het programma worden gestart door op de knop "Go" te drukken. Na een aantal iteraties wordt een benadering van het getal Pi weergegeven op het display.

Het is geweldig om te zien dat het mogelijk is om Pi te benaderen met slechts 256 bytes aan programma geheugen en een beperkte instructieset!

07 januari 2023

Reparatie: C64 #1

Een oud collega kocht uit nostalgie een Commodore 64 (C64) op Marktplaats met de vraag om deze te testen.

De eerste vraag daarbij is: hoe sluit je een C64 aan op een moderne TV / monitor? De C64 beschikt over een composiet video signaal (15kHz) en latere revisies ook over een s-video signaal. Een wat oudere TV die over een RGB scart connector beschikt kan hiervoor worden gebruikt door een speciale kabel te maken, zie hiervoor de volgende blog: https://www.lemon64.com/forum/viewtopic.php?t=72807

Beschik je alleen over een TV / monitor met een HDMI aansluiting dan kan een video naar HDMI converter worden gebruikt. Hiervoor bestaan diverse hele goedkope uitvoeringen maar die geven vaak een vrij slecht beeld.
Zelf ben ik tevreden over de video converter van Tendak die over zowel een composiet als een s-video ingang beschikt. De s-video geeft over het algemeen een beter resultaat. 

Voor en achterzijde van de Tendak video converter

De benodige bekabeling is kant en klaar te verkrijgen maar kan uiteraard ook zelf worden gemaakt.

Na het aansluiten van de voeding en de bekabeling blijkt de C64 niet goed te functioneren. De tekst is verstoord en de gerapporteerde hoeveelheid vrij geheugen is 14528 bytes in plaats van de gebruikelijke 38911 bytes.
Ik plaats een z.g.n. diagnostics cartridge om een diagnose uit te kunnen voeren en ook hier is de tekst inhoudelijk verstoord met steeds veranderde tekens (zie tweede afbeelding).

Naarmate de tijd verstrijkt wordt de inhoud wel steeds beter, waarschijnlijk door opwarming van één of meerdere IC's.


Tijdens het doorlopen van de geheugentest loopt het programma vast met het volgende patroon:


Uit dit beeld valt af te leiden dat de RAM die gebruikt wordt voor het weergeven van de kleuren wel lijkt te functioneren.

Aanpak

De eerste stap na het openen van de behuizing is een visuele inspectie van de printplaat en componenten;

  • Zijn er verkleurde of verbrande plaatsen op de printplaat?
  • Zijn er elco's aanwezig die zijn opgezwollen of hebben gelekt?
  • Zijn alle IC's goed in de voet gedrukt?
  • Is er corrosie aanwezig aan de IC pootjes of connectoren?

C64 Printplaat uit 1983, in dit geval assy 250407 Rev. B

Wat opvalt is dat IC U8 en U12 in IC voetjes zitten, normaal gesproken zitten deze rechtstreeks op de printplaat gesoldeerd. Er heeft dus al eerder een reparatie (of een poging daartoe) plaatsgevonden. Verder ziet alles er visueel goed uit behalve dan dat de metalen afscherming van het VIC-II video gedeelte (rechts van het midden) ontbreekt. Deze dient niet alleen voor de RF afscherming maar ook voor de koeling van dit IC die behoorlijk heet kan worden.

Ook aan de onderkant van de printplaat zijn geen bijzonderheden te zien.
Dan is het zaak om naar de meest waarschijnlijke oorzaken te kijken van video weergave problemen, dit zijn:

  • De geheugen IC's
  • VIC-II IC
  • PLA IC
  • Logica IC's van het fabricaat MOS.

Testen van de geheugen IC's (U9 t/m U12, U21 t/m U24)

Om niet alle IC's te hoeven desolderen kijk ik eerst of er IC's zijn die erg heet worden. Defecte IC's kunnen veel warmte produceren. Ik meet dit met een infrarood thermometer. Een rode laserstip (zie foto) geeft aan waar gemeten wordt en ik vergelijk de temperatuur van de 4164 RAM IC's onderling. Ik meet hierbij geen noemenswaardige onderlinge verschillen.


De diagnostics cartridge is in staat om het geheugen te testen, maar dat is lastig af te lezen als het beeld zo verstoord is. Na voldoende opwarmen en een goed moment komt vaak het geheugen IC U9 als defect naar voren.

Deze heb ik gedesoldeerd, vervolgens een IC voetje geplaatst en het IC vervangen. Het 4164 IC heb ik getest met de Retro Chip Tester Pro en deze blijkt inderdaad defect. Het defect komt pas aan het licht bij het uitvoeren van een z.g.n. March test, dus een redelijk zeldzame fout.

De vervanging lost wel het probleem met de beschikbare hoeveelheid geheugen op, maar het beeld is nog steeds verstoord.

Testen van het VIC II IC (U19)

Het complexe 6569R3 VIC II video display IC kan het beste worden getest door deze te vervangen door een werkend exemplaar. Deze IC's worden niet meer geproduceerd en er is nog geen goed alternatief beschikbaar dus de enige optie is om een IC uit een werkende C64 te lenen. Dit kan vrij gemakkelijk omdat deze al bij assemblage in een IC voet is geplaatst. Vervanging lost  helaas het probleem niet op.

Testen van het PLA IC (U17)

Het PLA IC wordt ook niet meer geproduceerd, maar hier is wel een goedkoop alternatief voor ontwikkeld door Daniël Mantione: de PLA20V8 op basic van twee GAL20V8B IC's. Zie zijn website https://www.freepascal.org/~daniel/c64pla/ voor verdere technische details.

Het printje kan in de bestaande U17 IC voet worden gestoken. Helaas lost ook deze vervanging het probleem niet op.

Logica IC's van het type MOS

Andere veel voorkomende problemen worden veroorzaakt door logica IC's van het fabricaat MOS. Het toenmalige productie proces uit de jaren '80 bevatte fouten, waardoor deze IC's tegenwoordig massaal uitvallen. Om een C64 toekomst bestendig te maken raadt ik aan om deze IC's altijd te vervangen, ook als ze nu nog werken.
Op deze printplaat blijken er twee te zitten: U27, een MOS 7712 (equivalent aan 74LS08) en U14, een MOS 7709 (equivalent aan 74LS258). Vervanging van deze IC's door hun equivalent blijkt het probleem op te lossen.

De defecte IC's (1984)

Na vervanging van de defecte IC's heb ik ook nog koelribben geplaatst op de belangrijkste IC's: De 906114-01 PLA (U17), SID 6581 (U18) en de VIC-II  6567 (U19).

Testen van de C64

Bij het testen van de C64 wordt gekeken naar de resultaten van de diagnostics cartridge. Bekijk het Tynemouth blog voor meer informatie.
http://blog.tynemouthsoftware.co.uk/2014/10/commodore-64-diagnostics-test-harness.html 

Bij een een aantal IC's wordt BAD weergegeven. Dit betekent niet dat deze componenten ook echt defect zijn. Er zijn namelijk speciaal bedrade connectors nodig die op de C64 poorten worden aangesloten, waar ik niet over beschik. In plaats daarvan test ik het gebruik van de diverse poorten, cassette recorder, joystick, toetsenbord en het geluid door ze simpelweg uit te proberen.
Als enige kwam het slecht functioneren van het toetsenbord naar voren, sommige toetsen reageerden helemaal niet en bij andere moest er meerdere malen of met enige kracht een toets worden ingedrukt.
Oplossing hier is het reinigen van de kontakten. Het toetsenbord is eenvoudig los te schroeven uit de behuizing. 

Maar liefst 23 schroefjes dienen te worden verwijderd om de onderplaat te kunnen verwijderen. Ook de twee draadjes van de shift lock toets links worden los gesoldeerd.


Na het verwijderen van de onderplaat worden de toetsen zichtbaar die allemaal over twee geleidende vlakjes beschikken. Al deze vlakjes worden schoongemaakt met een wattenstaafje gedrenkt in 99,9% isopropanol.

Daarna is de printplaat zelf aan de beurt, veel van de goudkleurige vlakjes blijken vervuild en ook hier wordt alles met isopropanol schoongemaakt totdat ze weer mooi blinken. Het is veel werk maar het resultaat is een weer prima functionerend toetsenbord. 

De C64 is nu helemaal gerepareerd en geschikt voor vele uren retro plezier.

31 mei 2022

Toepassing: P1 aansluiting slimme elektriciteitsmeter

Onlangs zijn mijn slimme elektriciteit en gas meters vervangen. Netbeheerder Liander geeft aan dat de oude meter wordt uitgelezen via het GPRS (General Packet Radio Service) netwerk, waar kosten voor worden gemaakt bij een externe provider. GPRS is verouderd en blijft nog tot 2025 in gebruik. Om dus voorbereid te zijn op de toekomst hebben Liander en Stedin een eigen draadloos netwerk ontwikkeld op basis van CDMA (Code-Division Multiple Access) technologie op 450 MHz, de zogenaamde PAMR band.

De nieuw geplaatste elektriciteitsmeter is een Landis+Gyr E360 SMR 5.0

De gasmeter is een Flonidan SMR 5.0 G4 G6. Deze heeft een draadloze verbinding met de elektriciteitsmeter en geeft het gasverbruik elke 5 minuten door.

De P1 aansluiting

Het interessante aan de elektriciteitsmeter is dat deze over een zogenaamde P1 aansluiting beschikt, waarmee het mogelijk wordt om met behulp van extra elektronica het dagelijkse energie en (sluip) verbruik realtime te monitoren en het verbruik en kosten op een smartphone te tonen. 

Achter het klepje bevind zich de P1 aansluiting aan de bovenkant

Op deze P1 aansluiting kan een male 6 pins RJ11 (6P6C) connector worden aangesloten. De connector aansluitingen (SMR 5.0) zijn als volgt:

1 +5V
2 Data Request
3 Data Gnd
4 Not connected
5 Data
6 Power Gnd

Het seriële datasignaal (115200 baud) is volgens de DSMR (Dutch Smart Meter Requirements) standaard, waarbij o.a. een "0" is gedefinieerd als > 4V en een "1" < 1V, dus precies omgekeerd dan gebruikelijk is bij digitale IC's.

Energieverbruiksmanagers

Er zijn nogal wat aanbieders van zogenaamde energieverbruiksmanagers om de P1 aansluiting in te lezen en op te slaan.

Het ligt natuurlijk voor de hand om als elektronica hobbyist zelf een oplossing te bedenken / bouwen op basis van b.v. een Raspberry Pi en opensource software, maar om een aantal redenen heb ik hier deze keer niet voor gekozen.

1. Ik heb geen stopcontacten en internet in de meterkast, De stopcontacten kan je zelf aanleggen, maar officieel moet dit door een erkende installateur worden gedaan en dit is niet goedkoop.

2. De Raspberry Pi is nog steeds heel moeilijk te verkrijgen door de chip schaarste.

3. Mijn Landis+Gyr E360 SMR 5.0 beschikt over een interne 5v 100mA voeding zodat een verbruiksmanager "plug & play" kan worden aangesloten.

4. De kosten van een goedkope verbruiksmanager, b.v. de Wi-Fi P1 van HomeWizard Energy zijn lager dan die voor zelfbouw. Deze kost € 29,95.

Daarom heb ik in mijn specifieke geval gekozen voor de oplossing van HomeWizard Energy.

De HomeWizard Wi-Fi P1 meter. Het binnen gedeelte is een drukknop,
met daaromheen een ring die oplicht met een bepaalde kleur.

Installatie

De Wi-Fi P1 meter kan direct op de elektriciteitsmeter worden aangesloten. Hierna licht de ring wit op om aan te geven dat er voldoende stroom aanwezig is.

Op de smartphone kan de app "HomeWizard Energy" worden geïnstalleerd. Er dient een account te worden aangemaakt voor het kunnen koppelen van de telefoon aan de P1 meter. Het gebruikte mail adres voor het account wordt overigens niet gebruikt voor validatie. Houd vervolgens de knop enkele seconden ingedrukt totdat de ring blauw begint te knipperen (koppel modus). In de app kan het gebruikte netwerk worden gekozen met bijbehorend wifi wachtwoord en daarna wordt op het netwerk de P1 meter gezocht en toegevoegd. 

Links een voorbeeld waarbij het Elektriciteit- en gasverbruik op de smartphone worden weergeven. De weergave is in kWh en in kosten als het geldend tarief is ingevoerd. Bij gebruik van zonnepanelen is de terug levering  ook zichtbaar. 

Alle basis functies zijn gratis te gebruiken en het verbruik kan een jaar lang worden teruggekeken. Enkele andere functies zoals b.v. een notificatie bij een plotselinge stijging van het verbruik, exporteren van de gegevens naar een bestand of langer kunnen terugkijken zijn mogelijk als hiervoor een abonnement wordt afgesloten waarvoor maandelijks 0,99 eurocent moet worden betaald.

De Wi-Fi P1 meter is geschikt voor 1-3 fasen en kan alleen verbinden op het 2.5 GHz (b/g/n) Wi-Fi netwerk dus als alleen 5 GHz beschikbaar is zal het niet werken. Ter beveiliging wordt de data versleuteld overgezonden.

Het sluipverbruik kan worden bepaald door naar de minimum waarde over een dag te kijken. In mijn geval was dat 83 W en dus kan de speurtocht beginnen om uit te zoeken hoe dit kan worden verlaagd.

15 mei 2022

Upgrade: Minix Neo X7

Op zolder vond ik een oude mediaspeler uitgebracht in juli 2013: de Minix Neo X7. Deze had als doel om van je TV een smart-TV te maken en als media center te fungeren. Tegenwoordig is deze functionaliteit al bijna standaard aanwezig in nieuwe Tv's en is de mediaspeler in onbruik geraakt.

De specificaties waren indrukwekkend destijds:

CPU:   Rockchip RK3188 Quad-Core @1.6GHz (ARM Cortex-A9)
Flash: 16GB - 2x SK hynix H27UCG8T2BTR-BC (MLC NAND 8Gb x8)
RAM:   1GB - 2x SK hynix H5TQ4G63AFRP-BC (DDR3 SDRAM 4Gb)
WLAN:  AMPAK AP6330 (BCM4330/BCM40183) (Wi-Fi, Bluetooth 4.0)
USB:   SMSC USX2064AEZG - USB 2.0 4-port Hub Controller
LAN:   Realtek RTL8152B - 10/100 Mbps Ethernet Controller
Audio: Realtek ALC5616 - Ultra-Low Power Audio CODEC
HDMI:  iTE IT66121FN - Low Power Transmitter HDMI 1.4
PMIC:  Active ACT8846QM - Power Management IC Controller

Het geheel draaide bij het uitkomen op Android Jelly Bean (4.2) en kostte 142 euro.

De Minix Neo X7 met afstandsbediening

Om de bediening te vergemakkelijken kocht ik destijds als aanvulling een Mele F10-PRO die aan de ene kant een afstandsbediening heeft en aan de andere kant een toetsenbord. Daarnaast beschikt de F10 over een Flymouse en een ingebouwde microfoon en luidspreker.

Benieuwd of de speler nog functioneert heb ik deze aangesloten en deze startte na bijna 9 jaar nog werkend op behalve de playstore voor het downloaden van software. De server van Google waar naar werd verwezen blijkt inmiddels niet meer te bestaan en daarom vroeg ik me af of de speler is te upgraden om het weer 100% werkend te krijgen.

Bovenzijde van de printplaat

Het is goed om te controleren of de oplaadbare CR2032CL batterij nog functioneert en zo nodig te vervangen.

Onderzijde van de printplaat

De laatste officiële firmware

De laatste officiële firmware voor de Minix Neo X7 is versie 250 uitgebracht in oktober 2018. http://theminixforum.com:9009/firmwares/x7-rk3188-250.rar

Deze bevat naast de firmware Android versie Kitkat (4.4). De Minix is als volgt te upgraden:

  • Sluit de Mini X7 nog niet aan op de PC om te voorkomen dat Windows de default driver gaat installeren die niet zal werken.
  • Pak het .rar bestand uit op de harddisk van de PC. Het starten van de Flashtool zal in Windows 10 niet werken vanaf een netwerk drive.
  • Installeer eerst de Windows 10 drivers uit de map \RK_DriverAssistant\Release_DriverAssistant\Driverinstall.exe en start de PC opnieuw op.
  • Sluit de Minix aan op de spanning en sluit hem aan op de PC met de bijgeleverde kabel. Dit is een speciale USB kabel met een micro USB connector waarvan het metalen deel langer is dan een standaard micro USB connector.
  • Zet de Minix in flashmode door een paperclip in de recovery opening te drukken en houd de powerknop 2-3 seconden ingedrukt totdat Windows een geluidsignaal geeft dat een nieuw apparaat is gevonden.
  • Start nu de flashtool \Batchtool\RKBatchTool.exe
    Als de Minix wordt gevonden zal één van de vakjes in "Connected Devices" groen gekleurd zijn.
  • Selecteer nu bij FW Path het image bestand "kernel-cpu1800-gpu798-ddr800.img" en druk op de Restore knop.

Na enige tijd is het flashen voltooid en het resultaat (Succes of Failed) zal worden weergegeven. Hierna kan de Minix opnieuw worden opgestart.
Alles blijkt nu correct te functioneren inclusief de Google Play Store.

Wasser firmware

De huidige Android versie is inmiddels 12 (mei 2012), maar niet elke Android versie kan worden geïnstalleerd op de Minix omdat deze daar speciaal geschikt voor moet worden gemaakt.

In 2014 is de zgn. Wasser firmware 3.0.6 gemaakt die Android naar versie Lollipop (5.1.1) brengt. Deze firmware is moeilijk te vinden omdat bijna alle forums verwijzen naar de site www.freak-tab.de die al geruime tijd niet meer is te benaderen.
Gelukkig heeft iemand de moeite genomen om de firmware beschikbaar te stellen op Dropbox en deze kan via de volgende links worden gedownload.

wasser-3.0.6-minix-x7-rk3188.img

kernel-cpu1800-gpu798-ddr800.img

Het flashen van de firmware gaat op dezelfde manier als hierboven beschreven.
Na installatie blijkt ook hier alles perfect te functioneren.

Finless custom ROM

Alhoewel de Minix Neo X7 video's kan afspelen met een full-HD resolutie (1920x1080) is de resolutie van de desktop vreemd genoeg beperkt tot 1280x720 pixels waardoor de pictogrammen er groot uitzien en er weinig ruimte is op de desktop.

Bob Finless heeft een custom ROM / firmware gemaakt waarbij ook de desktop op full-HD resolutie draait.

Ook deze firmware is moeilijk te vinden maar heb ik terug kunnen vinden in het "Waybackmachine" internet archief:
https://web.archive.org/web/20140912183850/http://www.freak-tab.de/finless/neo_x7_4.2.2_finless_19.zip

Deze firmware bevat nog een probleem met de TCP stack in de 010 ROM, die een beperking in de internet snelheid veroorzaakt. Gebruiker "Ant" heeft hiervoor de volgende update gemaakt:
https://web.archive.org/web/20140912183331/http://www.freak-tab.de/finless/neox7_finless19_fixed_bootimgs.zip

In het eerste zip bestand zitten andere drivers (t/m Windows 8) en een andere flashtool (ROM_Flash_Tool_137.exe) dan hierboven beschreven.

De combinatie van driver en Flashtool blijkt niet te werken onder Windows 10, waarschijnlijk door het verhoogde beveiligingsniveau en de Minix zal niet worden gevonden.

Onder Windows 7 werkt het wel. Het flashen van deze firmware is niet zonder gevaar, want eerst wordt aangeraden om de NAND (IDB) te wissen, maar gaat er dan iets mis tijdens het flashen dan zal de Minix niet meer opstarten en wordt herstel heel moeilijk.

23 april 2022

Toepassing: Een 6502 CPU tester

De 6502 Central Processing Unit (CPU), ontwikkeld door MOS is in 1975 op de markt gebracht. Veel home computers uit de jaren 70/80 maakten er gebruik van zoals de Commodore PET en VIC-20, de Acorn en Apple homecomputers, enkele Atari computers en nog vele andere.

Er bestaan ook veel varianten op de 6502 processor, zo is voor de Atari de 6502C, ook wel Sally of C014806 gemaakt. Deze versie bevat een extra Halt signaal op pin 35 waarmee de processor tijdelijk kan worden gestopt. De 6510 versie is gebruikt in de Commodore 64 en bevatte 6 extra I/O poorten en de 8502 is gebruikt in de Commodore 128. Door de extra I/O aansluitingen verschillen de 6510 en de 8502 aansluitingen nogal, ook de voedingsspanning zit op andere pinnen en daarom zijn deze IC's niet zo maar uit te wisselen. De 85xx serie verschilde van de 65x serie alleen in het fabricage proces.


Een originele MOS 6502 uit 1985.


Een moderne 65C02 van Western Design Center (WDC) uit 2022.


Een 6502C (Sally) voor de Atari uit 1980.


Een 6510 gebruikt in de Commodore 64 uit 1984.


Een 8502 gebruikt in de Commodore 128 uit 1988.


Aansluitingen van de vergelijkbare 6502 varianten

De verschillen in aansluitingen van de 6510 (c64) en de 8502 (C128)

Ten behoeve van het testen van oudere CPU's wordt tegenwoordig vaak gebruik gemaakt van zo genaamde "NOP testers". Deze eenvoudige testers maken alleen gebruik van de No Operation (NOP) instructie van de processor. Die instructie voert op zich niets uit en verhoogt alleen de adresteller. Door het aansluiten van leds op de adreslijnen wordt zichtbaar of er enige activiteit is. Het mag duidelijk zijn dat dit soort testers alleen een indicatie geven dat er iets op de processor gebeurt maar helemaal betrouwbaar is het niet.

Een betere benadering heeft de MOS6502/WDC65C02 Tester die een stap verder gaat en een testprogramma uitvoert die is opgeslagen in een 27C512 EEPROM. Hij is ontwikkeld voor het testen van de 6502 CPU en de varianten 65C02 en 6502C (Sally).

Rechtsboven zijn 16 leds geplaatst om de activiteit op de adreslijnen weer te geven en daaronder 8 leds om de databits weer te geven.
Met de dipschakelaars links kan de juiste klokfrequentie worden ingesteld op 1, 2, 4 of 8 MHz en met de schuifschakelaar kan gekozen worden voor de 6502 of de 65C02. Het geheel word gevoed door een 5V adapter aangesloten op de Mini USB aansluiting rechtsboven.
Met de resetknop onder kan het programma worden gestart. In de 6502 stand kan ook het verschil worden bepaald tussen een 6502 en een 65C02 (Sally). Dit kan door het indrukken van de "Halt Sally" knop. Gebeurt er niets dan is het een 6502 en stopt het uitvoeren dan betreft het een "Sally".

Het type 6502 staat toch op de IC opdruk? Dat klopt maar het komt echt voor dat vooral Chinese IC verkopers de ene processor verkopen voor een andere door de originele opdruk weg te polijsten en van een andere te voorzien om zo meer geld te kunnen vangen.

Bij een goed werkende 6502 CPU zullen de databit leds afwisselend oplichten zoals in de animatie hieronder.

14 april 2022

Bouw: Een kwantumfluctuatie display

Vandaag, 14 april is het wereld kwantum dag en dat sluit mooi aan op de bouw van een kwantumfluctuatie display. De basis voor dit bouwpakket, ook bekend als de "Random Retro Blinker" of de "Really Random Blinker" is een transistor die op een verkeerde (onbedoelde) manier is aangesloten.

De emitter van de transistor is omgekeerd aangesloten op een 12-18V gelijkspanning. Aangezien de elektronen zich een weg proberen te banen door de silicium N-P overgang ontstaat een volkomen onvoorspelbaar gedrag en worden op die manier willekeurige pulsen gecreëerd die bepaald worden door kwantummechanica. Deze methode zorgt voor een echte willekeurigheid (true random) in tegenstelling tot b.v. willekeurige getallen die via een computer algoritme worden gegenereerd (Pseudo random).

De willekeurige pulsen worden geleid door een 64 bits schuifregister waarop leds zijn aangesloten in een 8 x 8 matrix. op die manier kunnen 2 tot de macht 64 oftewel 18446744073709551615 combinaties worden weergegeven. Dat getal is groter dan het aantal zandkorrels tezamen op deze aarde. Het effect wat ontstaat is te vergelijken met de knipperende lichtjes op oude computers, zogenaamde "Blinkenlights".
Op de printplaat zijn twee potmeters aanwezig, Een voor de snelheid van de afwisseling van de patronen en een voor instelling van de waarschijnlijkheid van het oplichten. Er zijn dan gemiddeld meer of minder leds tegelijk aan.

Het bouwpakket is te koop bij Budgetronics.eu exclusief de leds die in een kleur of kleuren naar keuze kunnen worden bijbesteld en exclusief de benodigde voeding van 12-18V.

Wat heb je aan een kwantumfluctuatie display? Helemaal niets, maar het betoverende effect van de knipperende leds en de herinnering aan oude computers met hun vele "blinkenlights" maken het leuk om er naar te kijken.

De Bouw

Bij het pakket zitten bouwinstructies die eenvoudig zijn te volgen. Op de ene kant van de print worden alle componenten gesoldeerd en op de andere kant de 64 leds.

De twee geleverde potmeters hebben verschillende waarden (10k en 100k). Aangezien de waarde niet op de potmeter zelf is aangegeven dient deze eerst gemeten te worden tussen de pootjes met de kortste afstand voor dat deze op de juiste plaats kunnen worden gesoldeerd.
De componenten opdruk op de printplaat is niet helemaal foutloos. Zo ontbreekt de waarde voor R79 (1k) en worden er diverse waarden voor de keramische condensatoren op de printplaat aangegeven, terwijl deze allemaal 100nF blijken te zijn. Maar de grootste valkuil is de fout aangegeven oriëntatie van de leds. Zo wordt in de handleiding aangegeven dat de vlakke kant van de led uitgericht moet worden met de vlakke kant zoals op de printplaat staat afgedrukt. Het gevolg is dat de leds dan precies verkeerd om worden gesoldeerd. En het is een heel karwei om dit achteraf te corrigeren. Beter is om te zorgen dat het kortste pootje van de led (kathode) wordt gestoken in het vierkant gemarkeerde gaatje, dan gaat het altijd goed.

Verbetering van het ontwerp.

Het gebruik van de schuifregisters komt zichtbaar terug in de led patronen waarbij deze steeds per klokpuls opschuiven. Persoonlijk vind ik dat minder mooi. Ik zou er zelf voor kiezen om het willekeurige patroon 64x in te klokken en dan pas zichtbaar te maken. Aangezien de gebruikte 74HC164 schuifregisters niet over een latch beschikken, zou dit gerealiseerd kunnen worden door het patroon heel snel in te klokken (b.v. op de maximale frequentie van 3 Mhz) en daarna met de gewenste wisselsnelheid (oorspronkelijke kloksnelheid) te wachten op de volgende serie. Dit is mogelijk met een aangepast klokgenerator ontwerp met behulp van een CD4060 IC. In een van de volgend blogs kom ik hier zeker nog op terug en zal ik het ontwerp en verschil demonstreren.

Midjourney interpretatie van een quantum computer op basis van buitenaardse technologie. (Dec. 2022)

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.