Google Analytics

28 november 2021

Upgrade: ZCN: een CP/M hack voor de Amstrad NC100

In een eerdere blog werd een reparatie van de Amstrad NC100 beschreven. Deze notebook computer is voorgeprogrammeerd met een tekstverwerker, calculator en een dagboek.

Ook is een krachtige BBC Basic aanwezig. Deze programmeertaal is oorspronkelijk geschreven voor de Britse omroep BBC en is te starten door middel van de Function+B toetscombinatie.

Kijkend om meer te kunnen doen met de NC100 stuitte ik op de mogelijkheid om het CP/M operating system te installeren. Specifiek voor de Amstrad is ruim 20 jaar geleden een speciale versie geschreven genaamd ZCN. De laatste versie hiervan is 1.3 en is gebaseerd op CP/M 2.2

CP/M (Control Program/Monitor) is een operating system geschreven door Gary Kildall in 1973 en is de voorloper van het meer bekende DOS (Disk Operating System). Voor CP/M is veel public domain software geschreven die nog steeds van internet is te downloaden. Denk hierbij aan spellen, een C-compiler, allerlei hulpprogramma's, etc.

In de nu volgende stap voor stap handleiding wordt beschreven wat er voor nodig is om ZCN op een Amstrad NC100 te installeren en hoe dit te bereiken is.

Benodigde hardware

De 64kB geheugen in een NC100 is niet voldoende om CP/M te installeren en daarom is een geheugen uitbreiding nodig in de vorm van een "PCMCIA" of "PC Card" insteekkaart. Deze gestandaardiseerde geheugen uitbreiding was vooral begin jaren 90 in gebruik bij notebooks. De maximale hoeveelheid geheugen die de NC100 aan kan is (slechts) 1 Mb. Er bestaan verschillende type PCMCIA kaarten, zoals static RAM (SRAM) en Flash RAM kaarten. Alleen de SRAM kaarten werken in een NC100. Tegenwoordig zijn ze bijna niet meer te krijgen en als ze worden aangeboden (meestal via eBay) dan zijn de prijzen zeer hoog. Voor dit experiment heb ik een 1MB SRAM PCMCIA kaart kunnen bemachtigen op eBay. Deze is van het merk Sunmax. Om het geheugen actief te houden worden SRAM kaarten in tegenstelling tot Flash kaarten voorzien van een CR2025 lithium batterij. De + van de batterij moet gericht zijn naar de voorkant van de kaart, zoals op de foto. Deze zou ongeveer een jaar mee moeten gaan voordat deze weer aan vervanging toe is.

De NC100 wordt verbonden met een computer via de seriële poort om de nodige bestanden over te kunnen zenden. Dit is o.a. mogelijk door middel van een virtuele COM poort via USB. Je hebt hiervoor een USB A naar RS232 nullmodem kabel nodig. (Sub-D 9 pins female). Bij een nullmodem kabel zijn de transmit, receive en handshake signalen gekruist. Aangezien zo'n kabel moeilijk te verkrijgen en vrij duur is, kies ik voor een losse USB A naar RS232 kabel en een losse nullmodem kabel die gewoon aan elkaar zijn te koppelen.

Links de USB A naar RS232 kabel en rechts de nullmodem kabel

Het voordeel van de hier gekozen datakabel die is uitgerust met een Prolific chipset is dat deze direct wordt herkend door Windows 10, dus installatie van een aparte driver is niet nodig.
Na het aansluiten van de kabel hebben we de beschikking over (in mijn geval) een virtuele  COM3: poort. Het COM poort volgnummer kan variëren naar gelang er al andere (virtuele) COM poorten eerder zijn geïnstalleerd.

Benodige software

Download de ZCN versie 1.3 software: zcn13.zip Dit zip bestand bevat alle benodigde bestanden en pak deze vervolgens uit op de PC.
Daarnaast is een programma nodig die bestanden via de seriële poort kan versturen met het XModem protocol. Ik heb gekozen voor ExtraPuTTY, een afsplitsing van de bekende PuTTY terminal software die in bestandsoverdracht via diverse protocollen voorziet.

Software installatie

In de hieronder aangegeven stappen is COM3: als seriële poort gebruikt, dat kan natuurlijk worden vervangen door een andere poort. De gebruikte snelheid is 2400 baud. Dit is vrij langzaam maar wel het meest betrouwbaar op een NC100.

Start extraPuTTY en stel de seriële verbinding in op COM3 en 2400 baud.

Bij installatie van ZCN gaan alle aanwezige documenten en NC100 instellingen verloren. Als deze bewaard moeten blijven doorloop dan eerst de stappen tot aan het kopje "Vervolg".

Stappen op de PC.

In de PuTTY sessie selecteer Files Transfer > Xmodem > Send en selecteer het rrinit.bin bestand uit de map ''bin'' van de uitgepakte zcn13.zip op de PC.

Stappen op de NC100

Verwijder de geheugenkaart op de NC100.
Er moet tenminste 1 bestand opgeslagen zijn op de NC100 anders is er geen bestandsoverdracht mogelijk.

Ga naar het terminal programma: Function+S
Stel 2400 baud in: Menu, down*3, left*2, Stop
Stop het terminal programma: Stop
Laad een document: Function+L
Ontvang het rrinit bestand: Menu, T, M, rrinit, return
Wacht tot het bestand is ontvangen en druk op Stop
Plaats de geheugenkaart in de NC100.
Formatteer de geheugenkaart: 
Menu, F, Y, Stop
Zorg dat het rrinit bestand is geselecteerd.
Bewaar het rrinit bestand op de geheugenkaart: 
Menu, T, P, Stop
Stop de bestandsselectie: Stop
Run rrinit: Function+X
Het display geeft nu aan: "Snapshot written - press Stop".
Druk op
Stop om terug te keren naar het hoofdmenu van de NC100.

Vervolg

Stappen op de PC.

In de PuTTY sessie selecteer: Files Transfer > Xmodem > Send en selecteer het zcn.bin bestand uit de map ''bin'' van de uitgepakte zcn13.zip op de PC.

Stappen op de NC100

Laad een document: Function+L
Ontvang het bestand als tmp: Menu, T, M, tmp, return
Wacht tot het bestand is ontvangen en druk op Stop
Ga naar Basic: Function+B
Laad het tmp bestand: *LOAD TMP 6000
Start ZCN: CALL &6000

ZCN start nu op en onderstaande tekst verschijnt op het display:


Om meer tekst weer te kunnen geven wordt een kleiner lettertype gebruikt zodat in plaats van 8 regels van 80 tekens er nu ruimte is voor 10 regels van 120 tekens.

Er zijn 4 drives beschikbaar A: t/m D:. Formatteer drives B: C: en D: door:

format b:
format c:
format d:

Maak de A: drive "bootable": sys a:

Test het opstarten door middel van een koude herstart:
Zet de NC100 uit.
Houd te toetsen
Function, Stop en <-Del tegelijk ingedrukt en zet de NC100 aan.
De NC100 start nu normaal op, druk op
Function+X om ZCN te starten.

Met behulp van het interne ZCN commando rexec kan naar keuze de rest van de bestanden worden overgezet.

Als voorbeeld zetten we het programma qterm.com over, die ook te vinden is in de uitgepakte zcn.zip in een uuencoded formaat (qterm.uue) omdat de bestandoverdracht van rexec op ASCII formaat is gebaseerd. 

Op de NC100

Ontvang een bestand: rexec qterm.com

Stappen op de PC

Open een opdrachtprompt: Windows-toets+R, cmd, OK
Stel de baudrate in op 2400 baud:
mode com3:2400,N,8
Kopieer het qterm programma:
copy qterm.uue com3:

Nadat het kopiëren is afgerond staat het programma op de NC100 A: drive.
Vervolgens wordt qterm zelf gebruikt om de overige bestanden (in binair formaat) over te zetten. Via qterm kunnen bestanden ook naar de PC worden gestuurd om een backup te maken.

Vanaf dit punt valt er natuurlijk nog ontzettend veel te verkennen en te leren en ik wens iedereen die een NC100 / 150 of 200 heeft en dit ook wil uitproberen veel plezier.

17 november 2021

Toepassing: De eerste home computer Kenbak-1

John Blankenbaker met zijn Kenbak-1
De Kenbak-1 computer wordt beschouwd als de eerste commercieel verkrijgbare home computer. Deze computer is ontworpen door John Blankenbaker.
Nadat hij enkele jaren aan het ontwerp had gewerkt, begon hij in 1971 met de verkoop. De computers werden in zijn garage gebouwd en er zijn er ongeveer 50 van gemaakt, waarvan er wereldwijd naar schatting nog zo'n 14 van bestaan.

In die tijd bestonden er nog geen microprocessors dus de computer bestond uit een zware voeding en een grote print die onder andere maar liefst 132 IC's bevatte. Dit maakte de computer ook prijzig. In 1971 werd $750 gevraagd voor een volledig geassembleerd exemplaar. Omgerekend naar koopkracht van vandaag vergelijkbaar met een bedrag van $5000 (4500 Euro). Een fors bedrag voor een particulier om uit te geven.

De computer werd geklokt op een snelheid van 1MHz en bevatte 256 bytes aan geheugen. Er kon geen toetsenbord of scherm op aangesloten worden. De invoer bestond uit 8 knoppen waarmee in hexadecimaal of octaal instructies konden worden ingevoerd en de uitvoer was zichtbaar op 8 witte lampjes. Verder waren er nog extra 5 knoppen aanwezig voor diverse functies, zoals start, stop en 4 gele lampjes die de functies aanduiden.

De binnenkant van een originele Kenbak-1 met zware voeding en 132 IC's

Naar huidige maatstaven kon je er dus vrij weinig mee doen en het doel was dan ook voornamelijk om mensen kennis te laten maken met de computer en het programmeren. 

Hiernaast staat de advertentie voor de Kenbak-1 uit het tijdschrift Scientific American van september 1971.

Als ik mijn zwager dit soort elektronica laat zien dan vraagt hij altijd "Wat kun je er nou eigenlijk mee doen?" Dan zeg ik meestal: "Helemaal niets". Uit zijn ontgoochelde blik maak ik op dat hij daar ook niets aan heeft, maar de advertentie hiernaast geeft eigenlijk het antwoord: educatie en plezier! en daarnaast de bewondering voor de bedachte techniek en de uitdaging om dingen te bedenken op deze beperkte computer die niet voor mogelijk worden gehouden.

Een voorbeeld van een bekend spelletje uit die tijd was "Kill the bit", waarbij de lampjes om beurten oplichten en precies op het juiste moment de bijbehorende knop moest worden ingedrukt om deze te doven. Zat je er naast dan kreeg je er weer een lampje bij.

De nanoKenbak-1

Het bedrijf Adwater&Stir maakt tegenwoordig replica's van deze computer, althans de bediening, functies en uiterlijk zijn vergelijkbaar, echter de elektronica bestaat nog maar uit een paar moderne IC's.

Drie varianten: De full-size Kenbak-1, de microKenbak-1 op schaal
en de nanoKenbak-1 op een printplaatje.

Speciaal voor de het 50ste jubileum van de eerste home computer heeft Adwater&stir de nanoKenbak-1 versie gemaakt op een "liniaal". Deze past mooi in het rijtje "rekenlinialen", zie hiervoor mijn eerdere blog over een "computer op een liniaal". De nanoKenbak-1 is te bestellen op hun website voor $25. De verzendkosten vanuit de USA bedragen $16,25 en de inklaringskosten bedragen ruim 8 euro. Dus voor totaal zo'n 45 euro heb je de Kenbak-1 in ongeveer 10 dagen in huis. Een schijntje ten opzichte van die $750 (4500 Euro nu) in 1971.

De drukknopjes komen overeen met de drukknoppen op de grotere Kenbak-1 en de lampjes zijn vervangen door witte en gele leds. De onderdelen zijn in Surface-mounted device (SMD) uitgevoerd. Een oplaadbare 3V LIR2032 voorziet het geheel van spanning en een tweede backup batterij is aanwezig om de interne tijdklok onder spanning te houden. De batterij is via een micro-USB aansluiting in een uur opgeladen en de nanoKenbak-1 kan ongeveer 4 uur op een lading werken. De processor is een ATmega328 en daarnaast zijn nog aanwezig: twee 75HC165 schuifregisters, een 75HC595 schuifregister, een DS3231 Real-time Clock (RTC) en een 54bA Lithium battery charge management IC.

Naast de standaard functionaliteit zijn er ook een aantal toevoegingen bedacht. Zo kan de CPU snelheid worden ingesteld om een programma stap voor stap te kunnen volgen.
Het gebruikte ATmega328 IC heeft 8x zoveel geheugen als de Kenbak-1 en naast het kunnen opslaan van zelfgemaakte programma's, zijn ook een 8-tal voorbeeldprogramma's aanwezig, zoals diverse binaire klokjes (Altijd leuk voor op het bureau), een "Blinkenlight" feature (random knipperen van de leds), berekening van priem getallen waarbij de uitkomst d.m.v. de leds binair wordt weergegeven, en verder nog een led patroon en een teller.

Op de achterkant staan de belangrijkste functies weergegeven zoals het laden van de programma's en het instellen van de tijdklok.

Er is een enthousiaste gebruikersgroup actief op https://groups.google.com/g/ukenbak-1 die ervaringen en programma's met elkaar uitwisselen.

Al met al een heel leerzaam hebbedingetje die op een standaardje het ook heel leuk op het bureau zal doen.