WIFI op de Acorn System 5 (1)

In een vorig nummer van *Asterisk beschreef ik hoe ik op mijn Atom 2k15 een emulatie heb draaien voor de Acorn System 5. Dat artikel heb ik afgesloten met de tekst

"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... :-) "

Uiteindelijk bleek dit weer een understatement-of-the-year te zijn want het was allemaal niet zo eenvoudig als ik gedacht had. Ik ben zowat de halve ROX-dag bezig geweest om überhaupt de BeebWifi kaart aan de System-5 te knopen maar dat was niet gelukt. De software die ik al had omgezet zag de kaart niet en het aanpassen van het programma was nogal een gedoe. De broncode wordt op een Linux laptop geassembleerd, moet dan overgezet worden naar de Atom (via een MMC kaartje), dan handmatig overzetten naar een Atom diskette (die meestal foutmeldingen geeft bij het lezen en schrijven) en dat dan inlezen op de System 5. Een onwerkbare situatie.

In de maanden na de ROX ben ik bezig geweest om het ontwikkelpad iets eenvoudiger te maken. Ik heb daarom de AtoMMC ROM aangepast voor de System 5 emulatie. Dat werkte al voor een klein deel, maar meestal ging het toch fout. Zo kon ik bijvoorbeeld geen programma's inladen vanaf de MMC. Na de nodige uren debuggen kwam ik er achter dat een aantal zero-page adressen door zowel de Acorn MOS, de nieuwe (aangepaste) VDU80 driver als door de AtoMMC gebruikt worden. Door die adressen beter uit elkaar te halen lukt het uiteindelijk wel om een bestand van de MMC kaart te lezen. Het schrijven naar de MMC kaart heb ik overigens nog niet getest. In ieder geval is de stap "diskette" nu overbodig.

Bij het overzetten van de WiFi commando's bleek de AtoMMC niet te werken als de BeebWiFi kaart aangesloten is. Dit ligt niet aan de System 5 emulatie want in de normale Atom mode gaat dat ook fout. Ik heb werkelijk geen idee waarom het fout gaat... Dus weer een aantal uren debuggen, meten, beredeneren en experimenteren. Uiteindelijk bleek het probleem te zitten in de afsluitweerstanden op de databus van de BeebWiFi kaart. Door deze weerstanden te verwijderen los ik het probleem op. Maar nog steeds begrijp ik niet waarom dat een storing veroorzaakt op de AtoMMC. Immers: als de MMC aangesproken wordt dan wordt de databuffer in zowel de Atom als op de BeebWiFi print niet geactiveerd. Hoe kan dan iets op de externe databus een storing veroorzaken? Misschien dat ik het ooit nog eens uitzoek nadat ik de pensioengerechtigde leeftijd bereikt heb. Voor nu is het verwijderen van twee weerstand-netwerkjes een praktische oplossing voor het probleem.

Ik kan nu dus de software assembleren op mijn laptop en dan op de MMC geheugenkaart plaatsen. Vanuit de System 5 emulatie kan ik de commando's direct starten, zowel rechtstreeks vanaf de MOS prompt als vanuit BBC Basic. Daarna volgde nog wat debug-werk en wat aanpassingen van de commando's om ze werkend te krijgen. Met name de commando's die een of meerdere parameters verwachten en die de ESC toets uitlezen hadden wat aandacht nodig. Maar ook daar kwam ik wel uit.

Uiteindelijk lijkt de software aangepast te zijn voor de System 5. Ik kan een lijst met WiFi netwerken opvragen, verbinding maken met een WiFi netwerk, het IP adres van mijn interface opvragen en bestanden downloaden. Ook de ChatGPT client werkt. Zo ver, zo goed.

Maar... hoe krijg ik nu dat spul makkelijk bij Bas zodat hij ook kan testen of het werkt? Gelukkig heeft hij een GoTek in zijn System 5. Dat betekent dus dat hij disk images kan inlezen. Het enige dat ik nodig heb is een eenvoudig programma om de losse bestanden die door BeebASM gegenereerd worden in een disk image weg te schrijven. Lang geleden had ik daar al eens een interactief programma voor geschreven voor MS-DOS en OS/2. Delen uit dit programma heb ik overgenomen en in een nieuw C-programmaatje gezet dat ik onder Linux kan gebruiken. Ik kan nu makkelijk en snel een image genereren en dat naar Bas mailen. Hij plaatst dit op zijn GoTek medium en kan zo heel makkelijk mijn commando's uitvoeren. Dit concept hebben we getest en dat werkt prima.

We kunnen nu echt starten met het uitproberen van de hardware aan de System 5 en testen of de software werkt. Je leest er in een volgende *Asterisk meer over!