Perspektiven
Nach ein paar Tagen mit UXN, Varvara, diversen Seiten im Netz und dem Chat hierzu ergibt sich ein gemischtes Bild.
Es wird davon geredet, ein System zu haben, das man verstehen⁽¹⁾ kann.
Die CPU (UXN) ist zu verstehen. Keine Frage! Die Peripherie des fiktiven Computers (Varvara) wird durch den Emulator implementiert. Dieser sieht ebenfalls einfach aus, solange man die Komplexität der benutzten Bibliotheken, des darunter liegenden Betriebssystemes und der Hardware des Gastgebersystemes nicht hinterfragt.
In Varvara ein Pixel oder ein ganzes Sprite auf den Bildschirm bringen ist mit wenigen UXN-Opcodes möglich. Die Arbeit macht dann z.B. SDL auf dem Gastgebersystem. Es wird also unterhalb des Emulators aufgehört zu fragen, was woher kommt oder wer was macht. Uhrzeit, Files, Filesystem, Maus, Text-/Graphik-/Audio-Ein-/Ausgabe, alles wird vom Emulator an das unterliegende System delegiert.
Vielleicht muß einfach deutlicher zwischen UXN und Varvara unterschieden werden. Ich finde UXN sehr interessant, aber möchte diese CPU in anderem Kontext als ausschließlich in Varvara sehen.
UXN zu verstehen⁽¹⁾ ist möglich.
Die CPU sieht nett aus und sollte mal in Ruhe alleine betrachtet werden. Die wenigen Opcodes arbeiten durch ein zusätzliches Bit gesteuert auf Bytes oder Words und durch ein weiteres Bit umgeschaltet auf dem Daten- oder Return-Stack. Der Befehlssatz ist bis auf minimalste Ausnahmen sehr logisch strukturiert. 32 Opcodes mal 3 Modus-Bits (das dritte dieser Bits erlaubt nicht-destruktive Stack Operationen) ergeben eine 8/16-Bit-Architektur, für die man vermutlich sogar selber Assembler spielen könnte ohne dabei an den Rand des Wahnes getrieben zu werden.
Ich kann mir vorstellen, daß UXN (z.B. in FPGA gegossen) als Microprozessor eingesetzt werden kann.
Ein Z80 mit einem Betriebssystem unter 4kBytes Größe und ein paar Peripheriechips (CTC, UART, FDC, …) ergab schon ein nettes CP/M-System. Tabellenkalkulation, Textverarbeitung, Datenbank, all das war machbar. Dies Potential kann auch in UXN stecken, wobei ich denke, daß große Teile der Peripherie von UXN selber bedient werden sollte, notfalls durch UXN in für Peripherie zuständigen Subsystemen. Also ein Schwarm aus UXN-Knoten, von denen nicht alle direkt für den Benutzer an den Tasten arbeiten, sondern viele nur indirekt.
Ein solches System könnte autark sein.
ASMA, ein auf Varvara laufender in UXNs Assembler geschiebener UXN-Assembler, ist ein greifbarer Beweis, daß eine Selbstständigkeit eines reinen UXN-Digitopes möglich ist.
Wenn 8/16-Bit doch zu wenig sind?
Vermutlich könnte man unter Beibehaltung von 8-Bit-Opcodes ein UXN16/32 definieren, indem mit dem Datenbreite-Bit zwischen 16- und 32-Bit Modus (statt 8/16) umgeschaltet wird. Eine direkte Binärcodekompatibilität wäre so nicht gegeben, aber das Umdenken zwischen UXN8/16 und UXN16/32 wäre fast kein Aufwand.
Die Struktur von UXN kann also für größere Systeme angepaßt werden, sowohl durch Einsatz mehrerer 8/16-Bit CPUs, als auch durch eine die Grundidee erhaltene Erweiterung auf eine größere Bitbreite.
Wie weiter?
Ich bin noch nicht fit genug mit Verilog, um UXN als FPGA zu realisieren.
UXN als Chip erstmal durch Microcontroller nachbilden könnte ein praktikabler nächster Schritt sein. In den typischen externen SPI-Flash-Chips mit bis zu 32MBytes wären viele komplette Speicherauszüge speicherbar, dies als einfachste Form eines Dateisystemes wäre schnell implementiert.
Eine Implementation auf einem Microcontroller mit Micropython würde eine Entwicklung ohne dauerndes Neuflashen erlauben. Per RS232, I2C und SPI adressierte Peripherie ist bei einer Entwicklung in diesem Kontext leicht erreichbar und die Kosten der Hardware sind gering.
Ist das nicht lediglich ein weiterer/alternativer Varvara?
Jein.
Ich sehe das Ziel darin, irgendwann ein reines UXN-System zu erreichen. Während die Varvara-Benutzer zusätzliche Fähigkeiten den duch den Emulator bereitgestellten Devices hinzufügen, möchte ich langfristig gesehen die Peripherie direkt durch UXN ansteuern.
[2022-02-07 Mon]
(Fortsetzung folgt?)
——————————
1:
Babycastles Academy: Intro to Uxn.