Review GoSDC-Atom
door Roland Leurs, december 2024
Wie al wat langer meedraait in de Acorn scene (en wie doet dat hier nu niet?) heeft vast wel eens van John Kortink en de GoSDC voor de Electron/BBC/Master computers gehoord. Dit opslagmedium maakt gebruik van een SD kaart en wordt geplaatst in een sideway ROM socket. Welnu, dit jaar heeft John gewerkt aan een GoSDC versie voor de Atom. Hiervan heb ik een exemplaar gekocht omdat ik graag eens wil zien hoe deze werkt. En wat zijn de voor- en nadelen ten opzichte van de al jaren verkrijgbare AtoMMC?
De GoSDC kost op de website van John €75,00. Dit is de prijs inclusief verzending naar EU landen. Om verschillende redenen wordt de goedkopere verzending naar Nederland niet apart genoemd, maar krijgen geadresseerden in Nederland een kleine terugbetaling. De 75 Euro op de website is het totaal van : GoSDC €60, EU verzending €12 en de rest zijn PayPal kosten.
De GoSDC-Atom kwam in gewoon plastic verpakt in een ruime doos met veel opvulling. Het printje zelf meet 63 bij 32 millimeter. Verder worden een EPROM voetje en een SD-kaartje meegeleverd. Het voetje kan gebruikt worden om (al dan niet automatisch) een Floating Point ROM (het meegeleverde voetje wordt dan in socket 21 geplaatst) of een utility ROM (voetje in socket 24) in te laden. Plaatsing in socket 24 ligt overigens wel het meest voor de hand omdat je daarmee een andere Utility ROM kunt laden.
De meegeleverde SD kaart is in mijn geval 16 MB. Deze gratis kaart is bedoeld voor mensen die zelf even geen andere (vrije) full-size kaart hebben. Want het is vervelend als je,voor je met GoSDC gaat spelen, eerst nog naar een SD kaart moet gaan shoppen. Het kan ook zijn dat je een iets grotere kaart krijgt, het is maar net wat op dat moment voorradig of goedkoop in bulk te verkrijgen is. Met een kaart van 128MB zou je voor de Atom goed uit de voeten kunnen gaan, 16 MB is echt te krap als je het Atom Software Archief wil gaan installeren en gebruiken.
Installatie
De installatie is echt eenvoudig. Je schroeft je Atom open, wipt voorzichtig de MOSROM (en dus ook BASIC) uit voetje 20 en je plaatst daar de GoSDC module in. Schuif het kaartje in de reader en dat is het dan. De GoSDC is geïnstalleerd. Meer kan ik er niet van maken.
Initialisatie
Het meegeleverde SD kaartje is leeg. Om het te gebruiken moet het eerst geformatteerd worden. Dit gaat makkelijk met een van de ingebouwde commando’s:
*SDCTOOL SDCFO
De kaart wordt nu geformatteerd; alle informatie op de kaart gaat verloren bij deze actie. Dat GoSDC een eigen low-level opslag gebruikt merk je als je het kaartje daarna in een andere computer plaats. Er wordt dan geen file system op herkend.
Na het formatteren geef je de Atom een reset, d.w.z. je drukt even op de toets en dan is de GoSDC klaar voor gebruik.
Het gebruik van de opslag
Alle bestandsoperaties die je onder COS (Cassette Operating System) kunt doen, zijn ook hier beschikbaar. Denk daarbij aan het opslaan en inlezen van programma’s of bestanden. Ook Random Access Files zijn mogelijk. Net als onder COS is dit beperkt tot één open file om te lezen en één om te schrijven.
Tevens is een aantal nieuwe commando’s beschikbaar; disk gebruikers zullen deze wel herkennen:
*DELETE verwijdert een bestand (d.w.z. markeert als verwijderd maar de ruimte wordt niet vrijgegeven)
*INFO toont informatie (load en executie-adres, de lengte van het bestand)
*INFO en *CAT kunnen met wildcards werken. Een # vervangt één teken, een * vervangt meerdere tekens. De commando’s *MON en *NOMON (toon al dan niet blok-informatie bij het inlezen van een bestand) zijn wel aanwezig maar doen niets. John heeft deze beschikbaar gehouden omdat deze commando’s vaker voorkomen in programma’s die data laden.
Maar hoe krijg je nu jouw programma’s op de SD-kaart? Dat gaat wat omslachtiger. Daarvoor heb je namelijk op een andere computer een hulpprogramma nodig: GoSDCio Dit programma kan gedownload worden van John’s website en is beschikbaar voor Windows, MacOS en Linux.
GoSDCio is een hulpprogramma om o.a. bestanden van en naar de SD-kaart te kopiëren. Het vereist onder MacOS (en ik verwacht onder Linux ook) namelijk directe toegang tot het storage device. Op mijn MacBook komt het SD kaartje beschikbaar als device ‘disk2’ en dat wordt dan benaderd via /dev/disk2. Mocht je (per ongeluk) een ander device opgeven dan is er volgens John niets aan de hand. GoSDCio verifieert namelijk a) een signature van 8 bytes vooraan, en b) de consistentie van de daarop volgende catalogue. Er is in de praktijk dus geen
mogelijkheid dat een storage device dat nooit met GoSDC is geformatteerd door GoSDCio wordt gewijzigd.
Met GoSDCio kan je onder andere programma’s, tools en utilities toevoegen aan de SD kaart. Maar je kunt ook een hele SD kaart backuppen en weer restoren. Als je veel bestanden verwijderd hebt dan kan backup/restore ook nuttig zijn om de ruimte van de verwijderde bestanden weer vrij te geven. Een soort van omslachtige *COMPACT dus. Regelmatig een backup maken kan natuurlijk ook nooit kwaad; je weet nooit waar het mis kan gaan….
Als je bijvoorbeeld het programma SNAPPER op je harddisk hebt staan, dan kan je dat als volgt overzetten naar de SD-kaart (de letter Q dien je te vervangen door het device of de driveletter van de SD kaart):
GoSDCio -dQ -c “ADD FILE SNAPPER 2900 CE86 snapper”
De eerste bestandsnaam (hier in hoofdletters) is de naam van het bestand zoals het op de SD kaart komt te staan; de tweede naam (in kleine letters) is de naam van het bestand op de PC of Mac. De bestandsnaam op de SD kaart mag maximaal 37 karakters lang zijn. Als je het bestand wegschrijft als
GoSDCio -dQ -c “ADD FILE ACORNSOFT.SNAPPER 2900 CE86 snapper”
dan kan het voorste deel van de bestandsnaam (hier dus ACORNSOFT) worden gebruikt alsof het een directory name is (via *DIR), maar het is geen echte directory.
Als je bestanden gaat overzetten van een PC naar een SD-kaart, let er dan op dat er geen ATM of Atom-in-PC header vooraan in het bestand staat. De GoSDC snapt daar niets van. Als je dat soort bestanden gaat overzetten dan is het zinvol om een script te maken dat de bestandsinformatie uit de header leest, deze wegschrijft in een script file voor GoSDCio en daarna de header uit het bestand verwijdert. Dat gaat overigens net iets te ver voor deze eerste review.
Atom Software Archief
Iedereen die een AtoMMC heeft kent het Atom Software Archief. Dit archief wordt actief bijgehouden door David Banks (beter bekend als Hoglet op StarDot) en bevat alle bekende software voor de Atom, voor zover deze electronisch beschikbaar is. Dit archief is zoals gezegd inmiddels zo’n 64MB groot en het bestaat uit een onoverzichtelijke directorystructuur met in elke directory een of meerdere bestanden die allemaal van een ATM-header voorzien zijn. Gelukkig heeft John de conversie al eens voor zijn rekening genomen zodat wij het archief makkelijk kunnen installeren met de volgende stappen:
- Verwijder de SD-kaart uit de GoSDC en plaats deze in een card reader van jouw PC
- Download het archief van https://www.zeridajh.org/hardware/gosdc-atom/downloads/atom_software_archive_v1300.zip
- Pak dit archief uit
- Ga naar de subdirectory ASA in dit archief
- Start vervolgens de restore naar de SD-kaart met: sudo GoSDCio -d/dev/disk2 -a1 -f script
Voor Windowsgebruikers zal de syntax iets anders zijn, bijvoorbeeld GoSDCio -dE -a1 -f script waarbij E dan de drive-letter van de SD-kaart is. In alle gevallen moet het commando GoSDCio ergens in het path staan of je moet de exacte locatie meegeven op de command-line.
Als alles goed gaat dan wordt het archief overgezet naar het SD-kaartje. Dit kan even duren.
Nu zijn we gewend dat we met SHIFT+BREAK het bijbehorende menu kunnen oproepen. Dat kunnen we met de GoSDC ook realiseren. Eerst maken we dan een !BOOT file aan. Plaats daarvoor de SD-kaart weer terug in de GoSDC en typ daarvoor de volgende regel in:
F=FOUT”!BOOT”;SPUT F,”*DIR $.ASA”;SPUT F,”*RUN MENU”;SHUT F
Nadat je op gedrukt hebt, wordt het bestandje aangemaakt. Dit duurt overigens iets langer dan je zou verwachten. Als de prompt weer terug komt voeren we het commando’s
*SDCCONFIG BOOT 1
in. Daarmee wordt de configuratie aangepast zodat bij een SHIFT+BREAK het !BOOT bestand ge’EXEC’d wordt, m.a.w. het wordt ingeladen als zouden de instructies ingetypt worden. Direct na de tweede regel wordt het menu van het software archief geladen en verder werkt het dan hetzelfde als onder de AtoMMC.
Als je verder niet veel doet met de GoSDC dan heb je het hiermee wel gehad en kan je aan de slag. Of de spellen werken hangt natuurlijk af van de hoeveelheid geheugen die jouw Atom heeft. Het spreekt voor zich dat een spel als Chuckie Egg, dat 40 kB RAM nodig heeft, niet zal werken in een Atom met 12 kB RAM. Als vuistregel mag je er van uit gaan dat alle Acornsoft klassiekers wel zullen werken.
GoSDC opbouw
De GoSDC hardware bestaat uit een aantal (onder)delen. De belangrijkste zijn:
• Het SD-kaart slot; hier plaats je de kaart in
• 1 MB flash ROM; hier staan de firmware en enkele basis-commando’s in
• 32 KB statische RAM; hier worden de ROM images in geladen.
De firmware van de GoSDC wordt in overlays benaderd. Je kunt dit vergelijken met sideway ROMs in de BBC computer; meerdere ROMs in dezelfde adresruimte die door intelligente software transparant voor de gebruiker te benaderen is.
Vanuit software oogpunt bestaat de GoSDC uit de volgende onderdelen:
- Opslag; alles dat is opgeslagen in de flash ROM of op de SD kaart
- Area’s; alle opslag is onderverdeeld in area’s. Je kunt deze nog het beste vergelijken met virtuele flash cards. Er kan altijd maar één area actief zijn (standaard is dat nummer 1). De flash ROM bevat de area’s X (systeem) en U (user). De SD-kaart kan tot maximaal 8 area’s bevatten. Dit is afhankelijk van de grootte van de SD-kaart. Elke area is maximaal 4 GB groot, behalve de laatste – die kan kleiner zijn. Zo heeft een 10 GB kaartje twee area’s van 4GB en eentje van ongeveer 2 GB. De area’s worden overigens automatisch aangemaakt bij het initialiseren van het SD-kaartje. Voordat je een area daadwerkelijk kunt gebruiken moet je deze eerst formatteren.
- Objecten; dit zijn over het algemeen bestanden, commando’s of utilities. Elke keer als je een bestand benadert dan wordt dit gezocht op de SD-kaart. Als een utility of commando gestart wordt dan wordt achtereenvolgens gezocht of dit bestaat in de systeem area (X), de utility area (U) en tenslotte in de actieve area op de kaart. Omdat utilities en commando’s opgeslagen in de ROM opgeslagen zijn, zijn ze altijd beschikbaar. Ongeacht welk kaartje er in de GoSDC zit.
Het is niet mogelijk om direct naar de area’s X en U te schrijven. Daarvoor moeten de tools eerst naar een area op de SD-kaart geschreven worden en daarna kunnen ze met het commando SDCA2A gekopieerd worden naar een area in de ROM. Dit kan eventueel ook met de GoSDCio tool op de PC. Hoe dit precies in zijn werk gaat vind ik iets te ver gaan voor deze review. Wellicht dat ik daar later nog eens op terug kom.
Configuratie
We hebben al gezien dat we de actie bij SHIFT+BREAK kunnen aanpassen. Maar er is meer om te configureren, zoals hoe *DIR argumenten geinterpreteerd worden. Dit kan met *SDCCONFIG DIRS gevolgd door een van de volgende waarden:
DIRS | Syntax | Root directory | Parent directory | Scheidingsteken |
---|---|---|---|---|
0 | Plat | n.v.t. | n.v.t. | n.v.t. |
1 | Unix / MacOS | / | .. | / |
2 | Windows | \ | .. | \ |
3 | RISC OS | $ | ^ | . |
overige | Gereserveerd |
De ‘current directory’ die je kan wijzigen met *DIR is gewoon een serie karakters (ook wel ‘prefix’ genoemd).
Verder is de configuratie voor SHIFT+BREAK wellicht handig om aan te passen. De waarden daarvoor zijn:
0 Geen activiteit 1 voert *EXEC !BOOT uit 2 voert *RUN !BOOT uit overigen gereserveerd
Als je gebruik maakt van de GoSDC als ROM voor de Floating Point of utility ROM dan kan je met *SDCCONFIG UENR aangeven welke utility ROM automatisch geladen wordt:
0 niets 1 utility/uitbreiding 1 2 utility/uitbreiding 2 etc etc
Er kunnen maximaal 255 utilities/uitbreidingen aanwezig zijn. In de standaard aangeleverde ROM is alleen de Floating Point ROM als uitbreiding 1 beschikbaar.
In de praktijk
Als je bovenstaande theorie gelezen hebt dan merk je wel dat er goed is nagedacht over de functionaliteiten in de GoSDC-Atom. In de korte periode waarin ik met de GoSDC gewerkt heb maak ik eigenlijk alleen gebruik van één area. Je kunt overigens alleen maar meerdere area’s hebben als de SD-kaart groter is dan 4GB.
Ik was natuurlijk ook wel nieuwsgierig hoe de gewijzigde F-ROM er dan uit ziet. De wijzigingen staan in het geheugengebied #FEFB t/m #FF3E. In de standaard ROM zit hier de routine die een karakter naar de printer stuurt. Op adres #FEFB staat nu een RTS instructie. Dit betekent dus dat we geen printer meer kunnen gebruiken. Daarna staan enkele instructies die in eerste opzicht wat vreemd lijken, maar de onderliggende hardware zal er waarschijnlijk toch op reageren. Zo ziet de disas-lijst er zo uit:
FEFB: 60 RTS
FEFC: 2C AA FB BIT #FBAA
FEFF: 2C 80 F8 BIT #F880
FF02: 60 RTS
FF03: 20 FC FE JSR #FEFC
FF06: 20 FC FE JSR #FEFC
FF09: 20 FC FE JSR #FEFC
FF0C: 20 FC FE JSR #FEFC
FF12: 20 FC FE JSR #FEFC
FF15: 20 FC FE JSR #FEFC
FF18: 20 FC FE JSR #FEFC
FF1B: 20 FC FE JSR #FEFC
FF1E: 20 FC FE JSR #FEFC
FF21: 20 06 FF JSR #FF06
FF24: 6C BA 00 JMP (#00BA)
FF27: 4C F4 FF JMP #FFF4
FF2A: 6C FC FF JMP (#FFFC)
FF2D: 6C 02 02 JMP (#0202)
FF30: 0D 00 00 ORA #0000
De interfacing tussen OS en GoSDC (wat John O2G en G2O calls noemt) is op basis van bank switching. Een O2G call (van OS naar GoSDC) bankswitcht met ‘BIT #FBAA;BIT #F880’ naar de GoSDC versie van #Fxxx (en #Cxxx), en code executie gaat daar gewoon verder (op de ‘JSR #FEFC’ aan de OS kant volgt dan een ‘JMP #Cnnn’ aan de GoSDC kant). Een ‘G2O’ call (b.v. om een character te printen) werkt op een vergelijkbare manier.
Ik heb natuurlijk ook geprobeerd om enkele van deze adressen handmatig aan te roepen met bijvoorbeeld LINK #FF09 en soms krijg je dan een foutmelding zoals dat een object niet gevonden wordt. Maar ook heb ik het meegemaakt dat de Atom vast hing, ook na een BREAK en zelfs na een power cycle niet meer wil starten.
GoSDC heeft een fractie van een seconde nodig na een power up of een BREAK. Dus als je een power cycle of BREAK heel snel (na elkaar) doet, dan kan het zijn dat je het laden van de OS ROM onderbreekt, of GoSDC’s reset activiteit. Met mogelijk hangen als gevolg. Het kan zijn dat dit hangen daarna alleen opgelost word door een nette power up (gewoon lang genoeg wachten tussen uit en aan zetten).
Het aanroepen van een van bovenstaande adressen is overigens echt een poging om het systeem moedwillig te tarten, in de praktijk doe je dit nooit. Je voert tenslotte ook nooit een “LINK RND” commando uit. Grote kans dat de Atom dan ook gaat hangen of met een foutmelding terugkomt.
Compatibiliteit
Softwarematig is de GoSDC-Atom behoorlijk compatibel met de standaard Atom. Alle basisfunctionaliteiten voor het werken met (random access) bestanden is ingebouwd en werkt prima. Door de aanpassing in de F-ROM kunnen we helaas geen printer meer gebruiken.
Omdat de GoSDC-Atom de bestaande F-ROM en de Basic vervangt is het niet mogelijk om de GoSDC te gebruiken in combinatie met een geheugenuitbreiding die de F-ROM vervangt. Er zijn diverse RAM/ROM kaarten die dit doen; de vier ROM’s in de atom, zijnde Basic, Floating Point, Storage (AtoMMC/DOS/Econet) en de MOS ROM worden daarbij vervangen door één enkele EEPROM. Daarnaast past de combinatie van veel van deze uitbreidingskaarten die in de processorvoet worden geplaatst ook fysiek niet naast de GoSDC. Ook de combinatie van GoSDC met het BBC Basic kaartje gaat zowel kwa hardware als software niet lukken.
Nog even terugkomend op de printer; tijdens het gebruik van de GoSDC vervalt deze functionaliteit dus. Er zijn echter wel twee mogelijkheden om de printer toch nog te gebruiken. De eerste is om de GoSDC tijdelijk uit te schakelen door de toetsen G en D in te drukken en dan de Atom pas aan te zetten. Je krijgt dan de standaard ROM en de GoSDC “is er niet”. Een (beter) alternatief is om de print-routine zelf als een los hulpprogramma uit te voeren en dan de schrijf-vector naar deze routine te wijzen. Dan heb je zowel de GoSDC als de printer beschikbaar. Vrijwel niemand gebruikt nog een printer aan de Atom en als bovenstaande methoden toch niet volstaan dan kunnen we John altijd nog vragen om de print-routine weer te implementeren door er een O2G call voor te maken, of de hele interfacing code te verplaatsen.
Vergelijking met AtoMMC
De AtoMMC wordt geplaatst op PL8, aan de toetsenbordzijde. Deze connector is oorspronkelik bedoeld voor de Econet print, daardoor is de AtoMMC niet eenvoudig te combineren met Econet. Er is verder een extra ROM nodig die ofwel in socket 24 geplaatst wordt, ofwel op een andere manier op adres #E000 geplaatst moet worden. Vrijwel alle RAM/ROM uitbreidingskaarten bieden deze mogelijkheid.
GoSDC-Atsom | AtoMMC | |
---|---|---|
Installatiegemak | Eenvoudig | Matig |
Standaard gebruik | Eenvoudig | Eenvoudig |
Bestanden op SD kaart zetten | Via hulpprogramma | Via bestandsbeheer |
SD-kaart grootte | Tot 32 GB effectief te gebruiken | Tot 8 GB getest |
Compatibiliteit met uitbreidingen | Vooral bij moderne geheugenkaarten beperkte toepasbaarheid | Gebruikt dezelfde connector als Econet |
Te gebruiken in BBC Basic | Nee | Ja |
SD-kaart meegeleverd | Ja, 16 MB | Nee |
Aantal open bestanden | 1 lezen plus 1 schrijven | Maximaal 3 |
Maximale bestandsgrootte | 256 kB | 16 MB |
Broncode | Niet beschikbaar (closed source) | Beschikbaar (open source) |
Prijs excl verzend- en overige kosten | €60,00 | €32,50 |
Mijn persoonlijke conclusie is dat als je een standaard Atom wil hebben met een SD kaart opslagmedium dat de GoSDC-Atom een goede keuze is. Wil je toch wat meer dan een standaard Atom dan blijft de AtoMMC voor mij nummer 1.
In een volgend artikel zal ik eens wat dieper op een aantal onderwerpen in gaan. Voor nu is het even genoeg om te laten bezinken.