Fuzix-Portierung für den Amstrad CPC

Neueste FUZIX-Verbesserungen für den Amstrad CPC

In den letzten Monaten habe ich weiter an der FUZIX-Portierung für den Amstrad CPC gearbeitet. Ich plane zurzeit noch kein neues Release, da ich zuerst die Netzwerkunterstützung für das M4Board fertigstellen und stabilisieren möchte. Der aktuelle Repository-Zustand enthält jedoch bereits erhebliche Änderungen bei der Performance, der Konsole, den Speichermedien und der Hardware-Kompatibilität.

Wichtigste Änderungen:

Performance und System

Das Layout des virtuellen Terminals nutzt nun 80×25 Zeichen, zusammen mit einigen kleineren, damit verbundenen Verbesserungen.

Code, der vom System-Interrupt aufgerufen wird, springt jetzt nur noch während eines aktiven VSYNCs zu interrupt_high. Das reduziert die effektive Interrupt-Rate von 300 Hz auf 50 Hz, vermeidet Reentrancy-Probleme und verbessert die Gesamtperformance spürbar.

Die Routine ldir_far wurde optimiert und nutzt nun den Stack beim Verschieben von Daten zwischen Speicherseiten, was den Aufwand pro übertragenem Byte verringert.

Konsole und Video

Umfassende Überarbeitung des CPC-Konsolentreibers:

Unterstützung für vier TTYs.

Farbverwaltung.

Block-Cursor.

Korrektur bei der Darstellung von Zeichen mit Inverse-Attribut.

Ein fuzixcpc-Eintrag wurde zu termcap hinzugefügt. Dadurch können Anwendungen, die termcap nutzen, die Konsolenfähigkeiten des Amstrad CPC korrekt erkennen. Zudem wurden cpc-Glyphen für die ACS-Symbole definiert, damit Curses-Apps diese darstellen können.

Speichermedien und RTC

Ein M4Board-SD-Karten-Blockgerät wurde hinzugefügt.

Ein M4Board-Laufwerksgerät wurde implementiert, das auf einer Image-Datei basiert.

RTC-Unterstützung sowohl für das M4Board als auch für die Symbiface hinzugefügt.

Das CH376-Blockgerät wurde verbessert; es unterstützt nun USIfAC, ULIfAC und Albireo.

Die m4- und ch376-Blockgerätetreiber können jetzt die native FAT32-Schicht nutzen, um dateibasierte Disk-Images als Root-Gerät einzubinden.

Aktueller Status

Die Hauptaufgabe, die noch aussteht, ist die Fertigstellung der M4Board-Netzwerkunterstützung. Sobald das abgeschlossen und gründlich getestet ist, werde ich ein Release mit einer stabileren, eigenständigen Konfiguration und entsprechenden Disk-Images vorbereiten. Auch die Migration des Codes zur Kompilierung mit dem Fuzix Compiler Kit anstelle von SDCC steht noch auf der To-do-Liste.

In der Zwischenzeit kann jeder, der den aktuellen Entwicklungsstand ausprobieren möchte, diesen nach der Anleitung bauen, die salvogendut für den 1984-Emulator pflegt (danke @salvogendut!!):

Das Dokument erklärt die Build-Umgebung und den Workflow, die erforderlich sind, um die aktuelle CPC-Portierung von FUZIX für den 1984-Emulator zu kompilieren und auszuführen.

12 „Gefällt mir“

:heart_eyes:

Eine Art Unix auf dem CPC zu haben, ist etwas, das ich schon seit Ewigkeiten machen wollte.

Die wenigsten wissen, dass das ursprüngliche Unix auf Maschinen mit ähnlichen Taktfrequenzen wie der CPC geschrieben wurde (allerdings mit breiterem Bus und mehr Arbeitsspeicher/Speicherplatz).

Es gibt Alternativen; eine davon ist, einen ARM- oder MIPS-Emulator auf der physischen CPU laufen zu lassen. Klingt verrückt, aber jemand hat es tatsächlich getan.

Die RAM-Bandbreite ist ähnlich: 300 kB/s. Ich schätze, die Z80-Architektur wird ein deutlich langsameres Ergebnis liefern, aber um Geschwindigkeit geht es hier nicht. Es geht darum, sagen zu können: Ich habe Linux auf meinem Amstrad CPC gebootet! Um das auf einem echten CPC zu machen, braucht man natürlich „riesigen“ RAM (1 bis mehrere Megabyte).

3 „Gefällt mir“

Mir ist klar, dass das, was Fuzix macht, etwas völlig Anderes ist. Fuzix implementiert ein minimales, funktionales und nutzbares Unix. Und das auf alten Chips ohne Speicherzugriffsschutz.

1 „Gefällt mir“