Software

Anwendungen und Tools rund um RISC OS

Ein Haufen Software (im Quellcode!) von David Pilling

David Pilling, einer der bekanntesten Programmierer im RISC OS-Universum, hat sein Schatzkästchen geöffnet und ein wenig Quellcode zum Download bereitgestellt.

Besonders interessant: die Bibliothek namens XL. Langjährige RISC OS-Entwickler haben ja alle ihre eigene WIMP-Bibliothek von mehr oder weniger großem Umfang am Start, und David Pilling macht da keine Ausnahme. Kein Wunder, waren die Acorn-Angebote von RISCOS_Lib bis zur Toolbox doch mit großen Problemen behaftet. Ich schaue mir gerne Fremdbibliotheken an – API-Design ist hochinteressant und ein schwieriges Geschäft, da kann man von anderen viel lernen. Und sei es nur, wie man es nicht macht.

Ansonsten für mich interessant sind die Sourcen zu den TWAIN-Scannertreibern, zu SPrinter (für alle, die schon immer unter RISC OS einen Druckertreiber entwickeln wollten) und zu Snapper. Exoten-Bonus gibt es für CSFS, einer Auftragsentwicklung aus den NC-Zeiten.

Danke, David.

Neues vom JASPP – ADFFS 2.50beta und neue Spiele

Jon Abbott hat wieder zugeschlagen. ADFFS 2.50beta heißt die neu freigegebene öffentliche Beta-Version der ursprünglich-mal-Floppy-Emulator-jetzt-universeller-Spiele-Emulator-Software, die in diesem Blog schon öfter Thema war. Der jetzt erreichte Meilenstein ist ein weitestgehend vollständiger Support der im Rahmen des Projekts bisher freigegebenen Spiele für die Plattform „Raspberry Pi“. Und hier kommt es auf die Feinheiten an, denn tatsächlich wird nur der Ur-Pi (also Model A, Model B und Model B+) unterstützt, nicht der neue Pi 2. Das liegt einfach daran, dass der Ur-Pi noch ARMv5-kompatibel ist, während der Pi 2 ARMv7 ist und das leider bei der Emulation der alten Welt einen riesigen Unterschied macht. Ich sage nur unaligned memory access.

Weitere gute Nachricht vom JASPP: es gibt nun eine Vereinbarung mit Artex Software, Eterna, Minerva und VOTI dahingehend, dass die alten Archimedes-Software-Schätzchen im Rahmen des Projekts veröffentlicht werden können. Wir dürfen uns also auf Klassiker wie Exodus, Rockfall, Ballarena oder Sunburst freuen.

Und Jon macht unermüdlich weiter: sein nächstes Projekt ist die Unterstützung von 26bit-Modulen in ADFFS. Bisher wurden zentrale Module immer als 32bit-Varianten bereitgestellt, meist waren das einfache Dinge wie Voice-Module oder Tracker-Player. Jetzt kommt also die generische Lösung, die einen ganzen Schwung von Spielen auf dem Raspberry Pi dann spielbar machen wird. Darunter alte Favoriten wie Sensible Soccer oder PipeMania.

Nut Pi für Raspberry Pi 2 verfügbar

Bekanntlich basiert der Raspberry Pi 2 auf einer neueren ARM-Microarchitektur – ARMv7 statt ARMv6 mit v5-Kompatibilitätsmodus, Cortex-A7 statt ARM11. Das führte unter anderem dazu, dass das „Nut Pi“-Bundle von RISC OS Open Ltd nur auf dem Original-Pi lief.

Das hat sich nun geändert – ab sofort ist eine Neuauflage der Nut Pi SD-Karte am Start, bei der alle Programme sowohl auf dem RPi(+) als auch dem RPi 2 lauffähig sind.

Am Umfang hat sich nichts geändert – viele Programme sind im Bundle dabei, von einer Spezialversion von Messenger Pro über SparkFS bis PhotoDesk, Luafox und Writer+. Eine schöne Erstausstattung, aber dank des niedrigen Preises von 35 UKP zuzüglich MwSt und Versand auch für die alten Hasen interessant. Das ebenfalls enthaltene DDE – unverzichtbar, wenn man an RISC OS mitentwickeln will – kostet schließlich einzeln schon mehr.

Also meine Kaufempfehlung hat es.

WebKit-Portierung rückt näher

Aktuell ist mal wieder viel Bewegung im GCCSDK-Repository, Abteilung Autobuilder. Qt 5.4.1, Qt5Webkit, QtTestBrowser, Arora. Lee Noar committed wie der Wilde. Auch Chris Gransden, Meister der hundert Portierungen, mischt mit, wie man hier nachlesen kann.

Erfahrungsgemäß ist es ab hier noch ein gutes Stück Arbeit, bevor ein schnieker schneller stabiler Browser zur Verfügung steht. Aber der Anfang ist gemacht. Danke John, Lee, Chris, Alan, Theo und alle die sich rund um GCCSDK und das Tooling drumrum verdient gemacht haben.

RISC OS-Projekte: Qt portieren

Der zweite Teil der Reihe „RISC OS-Projekte“ sollte ursprünglich von Oberflächenbibliotheken und deren Portierung handeln. Qt, GTK+, FLTK und wxWidgets sind da die interessantesten Kandidaten. Zur Portierung interessanter Software vornehmlich aus der Linux-Ecke wäre das eine wichtige Voraussetzung. Auch eine Portierung von WebKit wäre dadurch deutlich erleichtert.

Aus aktuellen Gründen will ich das Projekt etwas kleiner schneidern und nur eine Portierung von Qt kurz anreißen. Qt hat eine lange und bewegte Geschichte, die mit Trolltech begann und durch die Verwendung als Basis für den KDE-Desktop der breiten Masse bekannt wurde. Später wurde Trolltech von Nokia übernommen und Qt 2009 unter der LGPL veröffentlicht, nachdem jahrelang die Lizenzierungsfrage breitgetreten wurde. Qt ist in C++ geschrieben und gilt als einer der wenigen kompetenten Cross-Plattform-GUI-Toolkits. Qt zeichnet sich durch eine verhältnismäßig saubere API aus und wurde auf viele auch eher esoterische Systeme portiert, von Symbian bis Windows CE, von SailfishOS bis BlackBerry OS (QNX-basiert).

Qt ist inzwischen mehr als ein reines GUI-Toolkit, es gibt Module rund um Netzwerkzugriff (Qt Network) oder auch Datenbankanbindung (Qt Sql).

Viele Programmiersprachen wurden mit Anbindungen versehen, darunter z.B. Ada, Perl, Python und Haskell – auch hier also durchaus exotenfreundlich.

Und jetzt kommt der Gag: seit heute ist im GCCSDK-Repository im Autobuilder die Portierung von Qt 5.3.0 durch Lee Noar verfügbar.

Vielleicht hätte ich deshalb den Blogbeitragstitel in „Wunder geschehn“ umbenennen sollen.

Ich hatte noch keine Gelegenheit, ein paar einfache Tests damit durchzuführen, um herauszufinden, welchen Stand die Portierung hat und welche der vielen Qt-Module bereits portiert sind. Vielleicht ist es also verfrühter Optimismus, denn Qt ist groß und es ist kaum anzunehmen, dass ein initialer Port direkt alle Module mitportiert. Die Inhalte im Autobuilder legen aber nahe, dass Qt Core und Qt Gui die ersten beiden Module sind.

Bisher in der Reihe „RISC OS-Projekte“ veröffentlicht:

Aemulor-Innereien

Adrian Lees, Autor von Aemulor (Pro) und Geminus, hat zwei Artikel ins Netz gestellt, die der eine oder andere vielleicht schon aus der Foundation RISC User kennt. Darin werden einige interessante Details zur Implementierung von Aemulor und Aemulor Pro beschrieben.

Wer die letzten zwölf Jahre unter einem Stein gelebt hat: Aemulor ist ein High-Performance-Emulator für 26bit-Software auf 32bit-only-Plattformen wie IYONIX pc, A9home, Raspberry Pi, BeagleBoard, PandaBoard und ARMX6. Aemulor Pro setzt noch einen drauf und bietet nicht nur eine Plattform für gewöhnliche WIMP-Anwendungen, sondern emuliert auch alles notwendige für Dateisysteme aller Art (Win95FS, LanMan98, CDROMFS) und bietet eine Emulation für sogenannte „low colour depth screen modes“ – neuere Systeme fangen meist erst bei 8bpp an, während bis zum Risc PC noch alles bis runter zu 1bpp unterstützt wurde – und tatsächlich wurde das auch von Anwendungen wie Sibelius 7 verwendet.

Besonders zur Anfangszeit des IYONIX pcs war Aemulor beinahe unverzichtbar, weil die Konvertierung der Anwendungen von 26bit nach 32bit doch recht zäh war, und außerdem absehbar war, dass einige wichtige Anwendungen wohl noch eine lange Zeit nicht konvertiert werden würden (Impression-Familie, Artworks, Photodesk) – dass heute eigentlich bis auf Impression und Sibelius keine der „großen“ Anwendungen mehr auf Aemulor angewiesen ist, sollte als positives Zeichen für die Plattform aufgefasst werden.

An dieser Stelle ein persönlicher Dank an Adrian Lees, der dieses Stück Software, das beinahe an Magie grenzt, über all die Jahre gehegt und gepflegt hat und den Nutzern der neuen Cortex-A8/A9-Plattformen kostenlos zur Verfügung stellt.

Bewegung im GCCSDK-Repository

Um halbwegs auf dem Laufenden bezüglich der GCC-Entwicklung der Geschmacksrichtung RISC OS zu bleiben, schaue ich ab und zu mal rein, was im SVN-Trunk von GCCSDK so läuft.

Seit ein paar Tagen gibt es interessante Commits von Lee Noar, der schon der Hauptverantwortliche für den RISC OS ELF-Support war. Die Schlüsselworte lauten Clang und LLVM.

Clang ist – compilertechnisch gesprochen – ein Frontend für C, C++ und Objective-C, das an die Compiler-Infrastruktur von LLVM angeflanscht werden kann. LLVM arbeitet dann als Backend, um den von Clang gelieferten Input in was Maschinentaugliches zu verwandeln.

Warum Clang/LLVM anstatt GCC? Die Clang- und LLVM-Codebasis ist deutlich jünger und übersichtlicher, die Weiterentwicklung ist sehr dynamisch, der Compilevorgang viel schneller und speichersparender. LLVM kann Bytecode erzeugen, der dann in einer VM ausgeführt werden kann – daher hat LLVM auch seinen Namen.

Wo sind die Haken? Der ARM-Codegenerator von LLVM ist wohl hauptsächlich auf ARMv6/ARMv7 optimiert. Die Portierung auf non-Unix-Plattformen gilt als eher schwierig. Die Details bezüglich EABI/APCS-32 usw. sind bisher eher unklar. Also zumindest mir 🙂

Übrigens kann GCC per DragonEgg so umgedingst werden, dass LLVM als Backend verwendet werden kann.

ADFFS 2.47 beta – Retro-Gaming auf dem Raspberry Pi

Jon Abbott war die letzten Wochen nicht faul und hat gestern ADFFS 2.47 beta veröffentlicht . Es gibt noch ein paar Haken aufgrund größerer Umstrukturierungen im Bereich Codelets und Blitter, aber das sollte den abenteuerlustigen experimentalfreudigen RISC OS-Nutzer ja nicht abhalten. Schwerpunkt der Arbeiten ist gerade der Raspberry Pi, das geht etwas auf Kosten von OMAP3/OMAP4 und IYONIX pc.

Die Liste der Spiele, die nun auf dem Raspberry Pi laufen, wird immer länger. Für mich besonders erfreulich: Cannon Fodder, das inzwischen auch offiziell im Rahmen des JASPP veröffentlich wurde. Wer zufällig ein HowTo für Level 8.4 „In at the deep end“ hat – ich wäre interessiert…derweil vergnüge ich mich noch mit Resogun auf der PS3.

ADFFS und JASPP – das JASPP-Forum ist endlich wieder da

Eines der Projekte in der RISC OS-Welt, die ich mit großer Aufmerksamkeit verfolge (aber leider wie üblich nichts außer moralischer Unterstützung beitrage) ist JASPP oder ausgeschrieben „Jon’s Archimedes Software Preservation Project“. Hüter des Projekts ist Jon Abbott, der mit ganz erstaunlicher Energie und viel Enthusiasmus hier an einigen Fronten kämpft und großartige Fortschritte erzielt hat, sowohl beim Kernpunkt „Preservation“, wo es ihm gelungen ist, eine ganze Reihe an alten Games sowohl zu konservieren als auch die Distributionsrechte zu erhalten, als auch bei den Tools rund um das Projekt. Ich halte es generell für wünschenswert, die alten Software-Schätze zu bewahren – und zwar in einem möglichst originalen und lauffähigen Zustand. Und wenn mein Lieblingsbetriebssystem dabei die Hauptrolle spielt, umso besser.

Die im Rahmen von JASPP von Jon entwickelte Software ADFFS ist ein ganz erstaunliches Tool. Ursprünglich entstanden als schmales Modul, um ein ADF-Floppy-Image als ADFS::0 im System zur Verfügung zu stellen (die Älteren unter uns erinnern sich: viele Spiele liefen damals nur direkt von der Original-Diskette), ist es inzwischen zu einem ausgewachsenen Emulator geworden, der es erlaubt, viele alte Spiele auf dem Raspberry Pi unfallfrei auszuführen. Wer ungefähr weiß, was sich alles zwischen RISC OS 3.1 und 5.xx geändert hat, wie unsauber die Spiele teilweise direkt auf Hardware und nichtdokumentierte Schnittstellen zugegriffen haben, dazu noch die Hardware-Unterschiede zwischen der guten alten Zeit des A310/A3000/A5000/A3010 und dem Raspberry Pi einschätzen kann, wird die Leistung von Jon mit großer Anerkennung zur Kenntnis nehmen.

Man kann den Fortschritt des Projekts sehr schön über das JASPP-Forum mitverfolgen, Jon postet hier regelmäßige Updates.

Man musste sich zuletzt etwas Sorgen machen, weil der zentrale Server des Forums die Grätsche gemacht hatte und Jon sich lange Zeit mit der Datenrettung desselben beschäftigen musste. Es scheint aber jetzt alles wieder da zu sein, was mich letztlich zu diesem Beitrag veranlasst hat.

Die ADFFS-Seite ist ein bisserl der Zeit hinterher – die dort verfügbare Release-Version 2.09 entspricht nicht dem letzten Stand der Dinge, die aktuellen Beta-Versionen finden sich im Forum verlinkt und sind deutlich leistungsfähiger.

Ich werde versuchen, in Zukunft regelmäßig über das Projekt und seine Fortschritte berichten, auch über interessante technische Details. Einen guten Überblick gibt eine Powerpoint-Präsentation von Jon.

Update: Früher hatte ich eine eigene Subdomain mit einer Redirection aufs Forum eingerichtet, um Firewall-Probleme zu umgehen, da das Forum ursprünglich nur über Port 9000 zu erreichen war. Inzwischen ist das Forum aber schön über HTTPS-Standard-Port verfügbar.

Neue Karten für RiscOSM

Neue Software für RISC OS, insbesondere im kommerziellen Bereich, ist heutzutage eher die Ausnahme als die Regel. Umso erfreulicher war die Veröffentlichung von RiscOSM von Sine Nomine Software im April diesen Jahres, quasi klassisch rechtzeitig zur Wakefield Show.

RiscOSM ist nicht etwa ein erneutes Beispiel für die fehlerhafte Groß-/Kleinschreibung von RISC OS, sondern steht für „Risc Open Street Map“ und ist in der Lage, die Daten des OpenStreetMap-Projekts zu verarbeiten und zu visualisieren. Man kann auf den Karten Bookmarks setzen, die Kartenanzeige als Draw oder Sprite exportieren oder natürlich ausdrucken. Die Software wird fleißig weiterentwickelt, die neueste Version wurde Anfang Dezember veröffentlicht.

RiscOSM arbeitet nicht auf dem Urformat der OSM-Daten, sondern benötigt ein spezielles Format, das man mittels OSMConvert aus den originalen .osm.pbf-Daten erzeugen kann. Wie es sich für unsere Freunde von der Insel geziemt, liegt der Schwerpunkt natürlich auf den britischen Inseln.

Um auch Kontinentaleuropa zu versorgen, hat Raik Fischer mit Teilen seines RISC OS-Rechnerparks ein paar CPU-Zyklen verheizt, um das Kartenmaterial für Deutschland und Frankreich in Form zu bringen. Die Ergebnisse kann man von Raiks Internetpräsenz herunterladen. Eine schnelle Internetverbindung wäre ratsam, die Kartendaten für Deutschland bringen es auf nicht weniger als 1,5 GiB, Frankreich schlägt gar mit 1,9 GiB zu Buche.

Nach den Berichten von Raik scheint OSMConvert optimal geeignet für einen Zuverlässigkeits- und Performancetest von RISC OS-Hardware.