BBC-Basic op Atom-in-PC
door Roland Leurs

Woord vooraf:

De Atom-in-PC is een uitbreidingskaart voor een i80x86 PC (bij voorkeur x>=2). Deze kaart bevat een 6502 (of 65C02, 65802 processor), 96 kB RAM en 16 kB ROM geheugen. De hardware indeling is gebaseerd op de Acorn Atom. Alle I/O verloopt via de PC, zo kunnen (hard)disk drives, beeldscherm, toetsenbord, muis, geluidskaart, floating point processor etc via een speciaal terminal programma gebruikt worden.

De kaart is in 1993 ontworpen en draait nog steeds op de originele versie 1.06. Het terminal programma is inmiddels doorgegroeid tot de onlangs verschenen versie 4.0. Een van mijn wensen voor deze kaart was het draaien van BBC Basic. En daar gaat dit artikel over.

In Atom Nieuws 15-3 heb ik al eerder gedachtenkronkels op papier gezet omtrent BBC Basic voor de Atom-in-PC. De twee reacties die hier (indirect) op gekomen zijn geven aan dat er binnen onze club grote behoefte is aan deze basic ;-)

Henri Derksen is geïnteresseerd in een iets uitgebreidere vorm van BBC Basic op Atom-in-PC, namelijk de BBC -in-PC kaart. Van Leendert Bijnagte kwam eenzelfde idee. Op zich zou e.e.a. volgens mij wel goed te realiseren zijn omdat de BBC uitgebreid gebruik maakt van goed gedefinieerde systeem aanroepen: OSBYTE en OSWORD. Ook video laat zich makkelijk omzetten, via de OSWRCH vector zijn alle grafische functies geïmplementeerd.

Maar wat wil Leendert? Juist, spellen spelen. En wat doen spellen veel? Juist, directe toegang tot alle hardware want dat is zo lekker snel. Er zal dus veel gewerkt moeten worden met een constructie á la Atom video emulatie om dit af te vangen. Henk Bastings heeft daar al eens zinnige uitspraken over gedaan. Ideeën genoeg dus, maar helaas, ik vrees dat het voorlopig daarbij blijft. Maar je weet maar nooit . . .Vanwaar dan dit artikel? Ik ben bezig met een geheel andere uitvoering van BBC Basic op de Atom-in-PC. Ronald Boers heeft in 1983 eens het idee rondgebazuind om de Basic Interpreter te reloceren. Voordeel: het wordt voor iedereen beschikbaar, nadeel: heel veel werk.

Het BBC Basic systeem bestaat uit twee gedeelten, de basic interpreter en de MOSROM. De basic interpreter, die exact gelijk is aan die van de Electron, wordt gereloceerd naar &C000-&FFFF. Acorn heeft zijn uiterste best gedaan om de "language rom" geheel los te maken van het operating system. Alle aanroepen vanuit basic naar het operating system loopt via vectoren. Prachtig toch!

Dat voert meteen naar de MOSROM; er zijn twee mogelijkheden om deze over te zetten. De eerste is reloceren naar &1000-&1FFF. Aangezien een berg routines in deze rom niet gebruikt zullen worden blijft er een hoop troep achter. Denk bij deze routines aan scherm uitvoer, toetsenbord invoer en cassette I/O. Allemaal overbodig. De assembler zit in de basic interpreter verweven.

Ik heb gekozen voor de tweede mogelijkheid: een nieuwe MOSROM schrijven. Dit is relatief eenvoudig omdat een aantal routines uit de MOSROM v3 van Ronald Boers overgenomen kunnen worden en de overige worden opnieuw geschreven volgens de definitie in de Electron Advanced User Guide.

Ook toevoegingen zoals een disk filing system worden hierin opgenomen.

De memory map zal er dan als

uitzien:

Inmiddels zijn er al vele statements en routines die werken. Er zijn nog wat probleempjes, maar daar kom ik (hopelijk) nog wel uit. Om even een indruk te geven:


BBC Basic Issue 2

MOS ROM V4.0 releasecode 98031403
Extension ROM v1.0

>PRINT ~HIMEM
9FFF
>PRINT ~LOMEM
2002
>PRINT ~TOP
2002
>PRINT ~PAGE
2000
>PRINT ~(HIMEM-PAGE)
7FFF
>PRINT HIMEM-PAGE
6.04444463E23
>

Let wel: dit is de geheugengrootte in bytes... probeer dat maar eens met een PC... Inmiddels is de Basic Interpreter verhuisd van &8000-&BFFF naar het gebied &C000-&FFFF. Op &1000-&1FFF zit de basis MOS ROM; deze kan uitgebreid worden op het &Axxx gebied.

De schakelkaart (dit zijn RAM banken van 4 kB groot, vergelijkbaar met sideway ROMS) wordt ook ondersteund in BBC mode; op eenvoudige manier zijn OSBYTE, OSWORD en OSCLI routines toe te voegen. Uiteraard wordt e.e.a. voorzien van een disk subsysteem: PcDFS. Op dit moment werken alle basic disk I/O statements (zoals LOAD, SAVE, OPENIN, PTR etc.). Van de *-commando's zijn inmiddels *CAT, *LOAD en *SAVE operationeel. Extra commando's om bijv. terug te schakelen naar Atom mode of geheel naar MS-DOS zijn ook van de partij.

Verder kan nog vermeld worden dat BBC Basic op de Atom-in-PC op een 486DX-66 onder OS/2 Warp ca. 50% sneller is dan Atom basic met onderstaand testprogramma:


 10FOR X%=0 TO 360
 20PRINT SINRAD (X%)
 30NEXT X%
 40END

Atomic BBC Basic is op een 386DX-40 onder OS/2 Warp even snel als een originele BBC Microcomputer; op een 486DX-66 is Atomic BBC Basic zelfs iets sneller dan het origineel. Alles bij elkaar dus een nieuwe, interessante uitbreiding die ZONDER hardwarewijzigingen geïmplementeerd kan worden op elke Atom-in-PC.

Ik houd u op de hoogte!
Roland Leurs