Nu Bas zijn System-5 compleet werkend heeft, loopt hij tegen het probleem aan dat er relatief weinig software voor dit systeem verkrijgbaar is. Ik zou daar best iets voor willen maken maar ik heb geen System-5. Er zijn weliswaar voldoende (gekloonde) printplaten te koop maar ik loop dan toch met deze twee vragen rond:
Even tussendoor: wat is een Atom 2k14 / 2k15?
In 2014 had ik een Atom die door zijn eigen succes letterlijk instortte.
Het systeem had dermate veel uitbreidingen zoals een MMC storage device, geheugenuitbreiding, een Godil (VGA-video uitgang in kleur,
seriële interface, muisaansluiting, SID emulatie) en nog wat andere poespas waardoor de contacten op het moederbord door overbelasting
ongeveer letterlijk van de print loslieten.
Tijdens mijn vakantie in Fontain-le-Dun heb ik een nieuwe Atom ontworpen, gebaseerd op de originele Atom maar met gebruik makend
van moderne componenten zoals grotere geheugen IC's, CPLD's voor adresdecodering en meteen de MMC en Godil in het moederboard geïntegreerd.
Deze Atom heeft 128kB RAM en 16kB ROM en is 100% upwards compatible met de originele Atom.
De Atom 2k15 is dezelfde uitvoering waarin enkele kleine fouten in de print hersteld zijn.
Atom 2k14, foto van Wim Janssen. Meer informatie op: https://site.acornatom.nl/atom-2k14-2k15/
Terug naar de kern van dit artikel: één benadering is om volledige software-emulatie uit te voeren. Dan hoeft alleen de Acorn DOS ROM "even" herschreven te worden en het grootste deel van de software moet verplaatst worden. Programma's als BBC Basic laden op #A000 en zijn 16kB groot. Er is dus het eerste probleem: de I/O-ruimte bevindt zich op #Bxxx. Software-emulatie is mogelijk, maar brengt veel werk met zich mee en is daardoor niet perfect compatibel.
Hoe zit het met hardware-emulatie? Welnu, we hebben een 6502-cpu in deze Atom en voldoende geheugen. Maar de toetsenborden zijn anders en ook de videoweergave. En we moeten de geheugen indeling veranderen. Nou, deze problemen klinken moeilijker dan ze zijn.
De Atom 2k14 heeft een Godil met weergaveoptie voor 80 kolommen. De System-5 kan een display met 40 kolommen of 80 kolommen hebben. Dit betekent dat het display, net als de Atom, wordt aangestuurd door een (eenvoudige) driver, die in het systeem-ROM is ingebouwd. Alle schermtoegang moet worden gedaan met behulp van de juiste API-aanroepen (OSWRCH en afgeleide vectoren). En hetzelfde geldt voor het toetsenbord. Als je een stuurprogramma schrijft om een toets te lezen en die gebruikt, kan elk toetsenbord aangesloten worden met behulp van een geschikt stuurprogramma (OSRDCH).
En dat deed ik ook. De OSWRCH80-sources voor de Godil-video zijn beschikbaar op Github, dus het aanpassen ervan voor de System-5 emulatie is niet zo moeilijk.
Het wisselen van de geheugenindeling is een kleine uitdaging, omdat beide CPLD's op het moederbord erbij betrokken zijn.
Maar één ervan heeft geen datalijningangen en de andere heeft slechts een beperkt aantal adreslijnen.
Door twee draden (A11 en A1) aan het bord toe te voegen, kan ik beide CPLD's aanspreken met lees- en schrijfinstructies.
Schrijven naar adres #BFFD selecteert de System-5 geheugenindeling en schrijven naar #0BFC
(let wel: dit is een andere indeling omdat we dan in System-5 mode zitten!) schakelt terug naar de Atom-modus.
Het drukken op
Door eenvoudigweg te schakelen blijft de Atom voor altijd hangen, dus er moet een beetje voorbereiding worden gedaan.
Ik laad het besturingssysteem vooraf in de Atom-geheugenkaart van #2000 - #3FFF.
Dit blok van 8 kB bevindt zich op #6000 - #7FFF in de System adressering.
Vervolgens laad ik een kleine bootloader op #8200.
Het videogeheugen bevindt zich op #8000 - #9FFF in beide omgevingen.
Deze bootloader schakelt over naar de System-modus en kopieert het geheugenblok #6000 - #7FFF naar #E000 - #FFFF en start vervolgens de computer opnieuw op.
Nu zijn we System-5.
Terugschakelen gebeurt op een andere manier.
In de System reset-routine zit een klein stukje code dat controleert of de Q-toets ook wordt ingedrukt als
Het aanpassen van de Acorn MOS ROM voor de System-5 is overigens relatief eenvoudig omdat de complete broncode beschikbaar is.
Hier kunnen we dus naar hartelust in wijzigen wat nodig is voor dit project.
De geheugenindeling in System-5 mode is als volgt:
#0000 - #07FF RAM (OS werkruimte)
De oplettende lezer zal opgemerkt hebben dat in System-5 mode geen ROM gebruikt wordt.
De Atom2k14 werkt in deze modus geheel in RAM.
Aanpassingen in het besturingssysteem zijn hierdoor ook zeer eenvoudig te realiseren.
Tijdens een van mijn bezoekjes aan Bas hadden we de ChatGPT client als een van de doelstellingen genomen voor 2024.
Nu ik Sytem-5 emulatie zover werkend heb én er is een aaneengesloten blok I/O ruimte vrij van 512 bytes (#800-#9FF) kan ik daar een BeebWiFi kaart op aansluiten.
Het porten van de software zou relatief eenvoudig moeten zijn omdat de System-5 MOS en de Atom MOS nauw aan elkaar verweven zijn,
zeker als je keurig gebruik maakt van de systeemvectoren.
Jammer genoeg heb ik de software voor de AtoMMC nog niet geheel aangepast want dan zou het overzetten van de software nog makkelijker gaan.
Nu moet ik nog wat hannessen met diskettes.
Maar als het *WGET commando straks werkt, zal het ook makkelijker zijn om (korte) programma's en commando's via WiFi binnen te halen
en vervolgens naar disk te schrijven. Dat maakt het dan ook weer makkelijker voor Bas om dit met zijn echte System-5 te doen... :-)
#0800 - #09FF vrije I/O ruimte
#0A00 - #0AFF Floppy Disc Controller
#0B00 - #0B0F 8255 (toetsenbord, cassette, video control)
#0B10 - #0B1F AtoMMC
#0BF0 - #0BFF I/O controle registers
#0C00 - #0CFF vrije I/O ruimte
#0D00 - #0DFF Godil adres ruimte
#0E00 - #0E0F 6522 VIA
#1000 – #7FFF RAM geheugen (waarvan #2000 – #27FF gereserveerd voor DOS)
#8000 – #9FFF video RAM
#A000 – #FFFF RAM geheugen (gebruikt voor Acorn MOS)