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" niet volledig identiek aan die van de Mk14. De ontbrekende items in de standaard Mk14 worden tussen haakjes weergegeven. Het RAM-geheugen van de PIC14 komt meerdere keren voor in de geheugenindeling, maar het zijn slechts kopieën.
In totaal zijn er dus slechts 256 bytes RAM beschikbaar.
Adres | Mk14 | Mk14 (PIC) |
000 100 | SCIOS | SCIOS |
200 300 | SCIOS | SCIOS |
400 500 | SCIOS | SCOIS |
600 700 | SCIOS | SCIOS |
800 | (RAM IO) | Display |
900 | Display | Display |
A00 | (RAM IO) | RAM |
B00 | (Expansion RAM) | RAM |
C00 | (RAM IO) | Display |
D00 | Display | Display |
E00 | (RAM IO) | RAM |
F00 | Standaard RAM | RAM |
De Sense A-interrupts zijn niet geïmplementeerd en SC/MP-paging is ook niet aanwezig.
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.
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 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.
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:
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:
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:
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.