RPCEmu: RISC OS onder linux

door Dick Tanis

Zoals vele al weten is het mogelijk om RISC OS te draaien op een Windows PC of op een MAC OS X PC via emulatie. Tegenwoordig kan dit ook onder linux, namelijk met RPCEmu. Dit open-source software pakket is ontwikkeld door Tom Walker en vervolgens door Peter Naulls overgezet naar linux. Ook is het tegenwoordig beschikbaar voor MAC OS X maar de status ervan is mij onbekend. Ik gebruik en test het pakket nu al enige tijd en ik moet zeggen dat ik het beter/sneller vindt draaien onder linux dan Virtual RPC via wine. In dit artikel zal ik uitleggen hoe je RPCEmu kan installeren en wat je allemaal nodig hebt om met de emulator aan de slag te gaan.

linux-desktop
Linux Desktop

Het pakket RPCEmu emuleert de RiscPC hardware met de volgende mogelijkheden:

Om de emulator te kunnen draaien heb je natuurlijk een linux-systeem nodig, aangezien ik zelf Knoppix gebruik, zal niet alles wat ik in dit artikel schrijf overeen komen met je eigen linux-distributie. Mocht jezelf het bekende Ubuntu gebruiken dan zijn alle commando's hetzelfde aangezien Knoppix net als Ubuntu een Debian-kloon is. Voor de installatie van RPCEmu heb je een paar pakketten nodig, namelijk: subversion en allegro. Deze installeer je eenvoudig met apt­get:

sudo apt-get update
sudo apt-get install subversion liballegro4.2 liballegro4.2-dev liballegro4.2-plugin-jack

Na succesvolle installatie kun je nu met subversion het RPCEmu pakket heel gemakkelijk ophalen:

svn co svn://svn.riscos.info/rpcemu/trunk rpcemu

De bron-bestanden van het pakket worden nu gedownload en in de map rpcemu gezet. Na het downloaden ga je het pakket configuren en compileren. Ga nu naar de map rpc/src en voer de volgende commando's uit:

aclocal
automake
autoconf

Mocht je systeem één van de vorige commando's niet herkennen, installeer dan de volgende pakketten:

sudo apt-get install make automake autoconf

Het commando aclocal kan wat waarschuwingen geven maar dat is niet echt erg. Dat komt door een bugje in de allegro library.

Nu moet je het pakket configuren voor installatie. Hierbij heb je de keuze om de emulator als interpreter te draaien of als dynamische recompiler. Als interpreter is de emulatie minder snel omdat alle ARM-instructies elke keer opnieuw vertaald worden naar x86-instructie(s). De dynamische recompiler daarentegen vertaalt een bepaalde instructie maar één keer en slaat deze op in een cache zodat de volgende keer dat deze instructie voorkomt, hij de vertaalde instructie meteen uit de cache kan halen. Het nadeel van de recompiler is dat deze niet echt bug-vrij is waardoor de emulator makkelijker crasht. Verder kan de recompiler alleen maar een StrongARM emuleren terwijl de interpreter naast de SA110, ook de ARM6 en ARM7 aan kan. De interpreter heeft als nadeel dat de SA-emulatie niet echt lekker werkt met RISC OS 4 (zie tabel aan het eind). Standaard staat het pakket ingesteld voor de interpreter dus gebruik:

./configure

om het pakket in te stellen.

(klik op afbeelding voor een groter leesbaar formaat!)
configure-rpcemu
Configure RPCEmu

of als je de dynamische recompiler wil gebruiken:

./configure --enable-dynarec

Nu zie je dat configure je systeem controleert op de nodige bestanden/eigenschappen om het pakket te kunnen compileren. Als je hier geen foutmeldingen ziet, dan kan je gaan compileren met:

make

(klik op afbeelding voor een groter leesbaar formaat!)
make-rpcemu
make RPCEmu

Wanneer alles goed gaat staat er nu een rpcemu executable in de map rpcemu. Je hebt nu de emulator maar dat is niet voldoende om aan de gang te gaan. Je hebt namelijk ook nog RISC OS nodig en een harddisc image waarvan de emulator kan booten. Aangezien RISC OS roms nog steeds onder copyright vallen, zal je er zelf aan moeten zien te komen. Dat kan op internet via diverse p2p-netwerken of je extraheert ze uit een echte RiscPC. Dit kan heel makkelijk met de volgende commando's bijvoorbeeld in een taakvenster onder RISC OS:

*save rom1 38000000 39000000
*save rom2 39000000 3A000000
*save rom3 3A000000 3B000000
*save rom4 3B000000 3C000000

Kopieer vervolgens de 4 bestanden (rom1, rom2, rom3 en rom4) in de maps roms van de rpcemu map. Nu heb je alleen nog een bootimage nodig. Deze kan je heel gemakkelijk van de RPCEmu site halen. Als je wget geinstalleerd hebt dan kan dit in één commando:

wget http://b-em.bbcmicro.com/arculator/hdboot.zip

Pak vervolgens de gedownloade zip uit in de map rpcemu:

unzip hdboot.zip

Overschrijf hd4.hdf en cmos.ram. Maak nu met mkdir de map hostfs aan. In deze map kan je later bestanden zetten die je straks onder RPEmu via HostFS kan bekijken. Op deze manier kan je je bestanden tussen de linux en de RISC OS omgeving overzetten.

Start nu de Emulator:

rpcemu

Er popt nu een venster op in je X11-omgeving en RPCEmu boot van de diskimage en binnen enkele seconden zit je in de RISC OS desktop. Op de symbolenbalk zie je nu een extra harddisk-symbool staan waarmee je de hostfs map kan openen. Als je nu op het IDEDisc4 symbool klikt krijg je de map waarin de !Boot staat waarmee RPCEmu geboot is. Deze is op dit moment erg kaal maar de volgende keer bespreek ik hoe je de !Boot verder kan inrichten en hoe je de netwerk-ondersteuning moet activeren/instellen.

rpcemu-window-1sttime
RPCEmu window 1st time

Verder nog wat tips:

OS en processor Interpreter Recompiler
ROS 3.7 ARM6/7 vink kruis
ROS 4 en hoger ARM 6/7 vink kruis
ROS 3.7 SA110 vink vink
ROS 4 en hoger SA110 vink letop vink
letop = artefacten in het scherm en 'abort on data transfers' in 16 bits per pixel modes

Diverse links:
RPCEmu http://www.riscos.info/index.php/RPCEmu
RPCEmu homepage http://b-em.bbcmicro.com/arculator/
RPCEmu mailing list http://www.riscos.info/cgi-bin/mailman/listinfo/rpcemu
Knoppix linux http://www.knoppix.org/
Ubuntu linux http://www.ubuntu.com/

Dick Tanis