A310Emu, een RISC OS emulator onder RISC OS.
waarom Jan de Boer dit programma schreef

Sinds de komst van de StrongArm processor (1996), bij spelletjes al vanaf eerder, geeft oude software niet thuis, o.a. vanwege:

Processor:

Voorheen ongebruikte instructies krijgen nieuwe betekenis; door het scheiden van code- en datacaches wordt gemodificeerde code niet opgemerkt; conditiecode register is niet meer deel van de programcounter.

Video:

Kleine beeldafmetingen, bit-per-pixel en beeldfrequentie van singletasking programma's (spelletjes) worden niet meer begrepen door videokaart en/of monitor. Op de Iyonix is er geen 8-bit geluid meer mogelijk.

Bijwerken van programma's is een grote investering in tijd en kosten, maar maakt het wel mogelijk de voordelen van nieuwe modellen (snelheid, grotere kleurdiepte, schermgrootte, beter geluid) te gebruiken.

Als nieuwe kenmerken onbelangrijk zijn, het niks mag kosten en de snelheid van het hostsysteem groot genoeg is t.o.v. het oorspronkelijke, is een emulator het overwegen waard. Bij de introductie van de Archimedes was Acorn zo verstandig om zowel voor de BBC computer als de IBM-PC emulators aan te bieden; de gebruikers kunnen dan hun software blijven gebruiken.

!A310Emu is geschikt is voor RiscPC, Omega en Iyonix en is een bijna volledige emulatie van een A310 computer (geen seriële chip en Arm3 extra's).

Na Chris Poole's SA-tips (1996) op enkele programma's te hebben toegepast, werkten sommige desondanks nog steeds niet. Zoals !65Host, !PCEm, !Cadmust. Begonnen werd met een utility om stap voor stap te zien wat een weigerend programma dan doet. De verwachte grootte, 20K assembler, leek me te behappen in BASIC. Er kwam een schermpje bij voor het (Archimedes) videogeheugen, iets om floppies te lezen, en allengs ging het meer op een emulator lijken.

Deze emulatie is tamelijk eenvoudig. De processor bijvoorbeeld:
Lees de instructie in. Stel het is een data-opcode, zoals 'ADDCS dest,lhs,rhs,LSR shift'. De instructie van 32 bits, bevat diverse velden: een conditiecode (CS), opcode (ADD), telkens 4 bits voor de 4 registers en een shift code ('LSR' in dit geval).

Decodeer conditiecode en bepaal of instructie uitgevoerd mag worden.
Zo ja, isoleer opcodebits; spring hiermee naar routine, die afzonderlijke registers decodeert en ophaalt; en de shift-code; spring met shiftcode naar routine die rhs-sourceregister schuift; voer tenslotte opcode uit en berg resultaat op resultaat-register 'dest'. Haal volgende instructie.

Voor lees-en schrijf opcodes moet worden nagegaan of er gewoon naar het geheugen wordt geschreven, of naar chipregisters, bijvoorbeeld van de floppy-controller.

De meeste 'chips' (VIDC, IOC, i2c etc) worden als toestandsmachine gedaan, met een toestand en een teller. Voorbeeld, schrijven van een floppydisc-commando: zet een begintoestand en een teller. De teller wordt elke instructie afgelaagd. Bij 0 gekomen, wordt iets gedaan, bv. een byte van floppy gelezen, een 'interrupt' gegeven, wordt de toestand veranderd en de teller opnieuw gezet. Als het commando klaar is, wordt de teller weggehaald.

Dit alles is niet ingewikkeld; het tijdrovende is het aanpassen van de resultaten aan de beperkingen van het gastheersysteem. Vooral spelletjes (copyprotectie op diskette, screenresolutie etc.etc.) zijn problematisch. Je kan, bijvoorbeeld, best 320*256*8bits (meest gebruikt voor spelletjes) laten zien op een Iyonix met moderne monitor, maar dan wel op 100 of 150 frames/sec, en dan gaan paletteveranderingen tijdens tekenen van het scherm weer helemaal verkeerd.

Programma's bedoeld voor de RiscPC, die niet RISC OS 3.1 compatibel zijn, draaien niet, maar hiervoor is Aemulor dan ook juist uitstekend geschikt. Eerdere OS'en werken wel, zowel Arthur, RISC OS 2 als RISC OS 3; RISC OS 3 met tot 16 Mb RAM.

Bij wijze van floppies, worden images hiervan gebruikt, die A310Emu zelf inlezen kan, in verschillende formaten: van DOS, /ADF tot PCFS. Ook zonder OS geïnstalleerd, kan men disc images maken en schrijven, ook van 1600K en 1440K floppies. De laatste worden door DOSFS begrepen. Images zijn een veiliger manier dan hardware floppies om gegevens te bewaren, en ze zijn meestal verliesvrij weer terug te schrijven.

Jan de Boer geeft geen ondersteuning voor deze emulator, het programma kan gebruikt worden op eigen risico.

Wie denkt iets aan deze emulator te kunnen hebben, kijk dan op http://home-1.tiscali.nl/~jandboer.

Jan de Boer, 2005.