Hallo,
der erste Post und gleich sowas Ja, als Besitzer einer SuperCPU 128 kann man zwar stolz sein, aber so richtig viel hat man nicht davon. Es gibt außer GEOS und Metal Dust keine Software, und einfach programmieren kann man das Ding auch nicht. Verbreitet ist das Ding auch nicht, und die 20 MHz braucht man auch kaum. Deshalb geht mir schon seit langem ein Projekt durch den Kopf, wie man günstig den C128 pushen kann. Und das ist machbar.
Also, die Anfangsidee ist es, den 8502 durch eine Kombination durch 65C816 und einem 6526 zu ersetzen, Ruud Baltissen hat eine Schaltung dazu gemacht. Vielleicht geht auch ein 8520 vom Amiga, das wäre praktisch, da es den und auch den 65C816 in PLCC-Bauweise gibt. Das spart Platz. Anschließend müssen noch die Adressleitungen demultiplexed werden, dann hat man schon mal die Möglichkeit für bis zu 16 MB RAM, ROM und zusätzliche Hardware. Tja, wenn man nun den 8502 durch einen 65C816 ersetzen kann, dann geht das doch auch mit einem 6510? Im C64-Modus wird doch viel mehr programmiert. Stimmt. Allerdings eignet sich der C64 nicht so gut für die Aktivierung des 16bit-Modus, da es im Kernal-ROM keinen Platz mehr gibt. Man muß also erst herumpoken. Im Kernel-ROM und im Basic-ROM des C128 ist so viel Platz frei, da kann man sinnvolle Systemroutinen wie die Umschaltung in den 8- oder 16bit-Modus oder neue 24bit-Laderoutinen direkt mit integrieren. Beim C64 müßte man erst manuell in den 16bit-Modus schalten, die neuen Routinen müßten dann im Bereich über $FFFF liegen.
Der 65C816 hat einige interessante Anschlüsse, z.B. den Emulation-Pin, mit dem angezeigt wird, ob er sich im 8- oder 16bit-Modus befindet. Also könnte man durch eine Duo-Power-LED sofort den Modus erkennen. Für die Breite der Register gibt es ähnliche Ausgänge. Besonders erwähnenswert ist der ABORT-Pin - wenn dieser auf Low gelegt wird, springt er im 8bit-Modus zu einer Adresse, die in $FFE8 und $FFE9 abgelegt ist, für den 16bit-Modus liegt die Adresse in $FFF8 und $FFF9. Damit kann der ABORT-Pin als eine Art interner Freezer verwendet werden. Im 8bit-Kernel des C128 sind diese Adressen aber glaube ich belegt, keine Ahnung, ob man das ROM so umprogrammieren kann, daß diese Adressen wieder frei werden. Bei einem abgeschalteten 8bit-Kernel kann man diese Adressen aber wieder belegen, und ein Programm per Hardwaretaste steuern. Das kann eine Rückkehr in ein Hauptmenü sein oder für Programmierer ein Sprung in den Maschinensprachemonitor oder den Assembler. Das ist halt der Vorteil, wenn man viel Speicher hat und das System von Grund auf neu aufbaut - man kann sich Programmierhilfen einbauen, die der normale C128 nie hatte.
Die Entwicklung des neuen Kernels wird übrigens die Hauptarbeit sein, denn mit diesem Board soll der C128 das bekommen, was die SuperCPU nie hatte - einen 16bit-Kernel und ein 16bit-BASIC. Ich habe mir schon einige Gedanken dazu gemacht. Der Bereich in der zweiten echten 64K-Bank ab $10000 beginnt mit der 'HighPage', einer Zeropage, die sich im hohen Bereich abspielt. Sie ist allerdings nicht wie im C128 angeordnet, sondern wie im C64, das macht es Programmierern vielleicht leichter. Allerdings müssen sämtliche Adressangaben auf einen 24bit-Adressraum erweitert werden. 64K RAM sind für die HighPage vermutlich zuviel, also könnte man ein 32K-RAM nehmen und die zweite Häfte für sinnvolle Hardware verwenden, z.B. ein dauerhaft vorhandener zweiter oder dritter SID, einen Massenspeicher oder evtl. für einen zusätzlichen Videocontroller - mir gefällt der Yamaha V9990, der Nachfolger des Grafikchips der MSX-Computer. Für einen Retro-Rechner wäre er gut geeignet, er hat mehrere Textmodi, viele Grafikauflösungen, hat jede Menge Sprites und bietet in den meisten Modi 64 Farben aus 32.768 an. Zwei Modi mit 640x400 und 640x480 in 16 Farben ohne Interlace gibt es auch. Klar, 64 Farben hört sich etwas wenig an, aber das sind immerhin vier mal mehr als man beim VIC hat. Der V9990 unterstützt glaube ich 512 KB VRAM, Zeichensatz-ROM's und einen Extra-Zeichensatz für einen Kanji-Font. Der Ausgang ist RGB-Analog, eine Genlock-Funktion und einige andere Sachen bietet der Chip auch noch.
Was notwendig ist, ist ein 24bit-Dateiformat und entsprechende Laderoutinen. Da habe ich auch schon einige Ideen, vor allem, daß es nicht möglich ist, sie mit einem Standard-LOAD-Befehl zu laden. Das ist auch wieder ein gutes Beispiel, weshalb der C128 besser geeignet ist - die Laderoutinen können direkt im 8bit-Kernel eingebaut werden, da er genug Platz dafür hat, und auch für neue Kommandos im BASIC-ROM ist Platz. Das wären dann z.B. HLOAD und HSAVE.
Der 16bit-Kernel soll sehr umfangreich sein und den originalen C128-Kernel komplett ersetzen können. Dann kann man ihn und das BASIC im 8bit-Adressraum abschalten und hat so viel Platz für VIC- und SID-Daten. Dafür ist der 65C816 natürlich bestens geeignet - durch seine Block-Copy-Befehle lassen sich schnell Daten in den 8bit-Adressraum jagen. Richtig gut wären Kernel-Routinen, die man in einem 8bit-Rechner nie erwarten würde, z.B. fraktale Routinen, mit denen man Objekte oder 3D-Grafik wie in Rescue on Fractalus oder The Eidolon erstellen kann. SID, VIC und VDC sollten am besten Routinen bekommen, wie sie in heutigen Demos vorkommen. Dazu sollte auch der erweiterte VIC-IIe des C128 ausgenutzt werden, mit dem 1.3 MHz-Modus, dem Öffnen des Borders ohne Sprites, dem Trick mit den 11 neuen Farben und natürlich die Nutzung des Interlace-Modus mit 160x400 oder 320x400 Punkten. Auf Basis des neuen Kernels wird dann das 16bit-BASIC entwickelt. Ob es nun kompatibel zum 8bit-BASIC ist oder ob Dateien konvertiert werden müssen, muß man sehen. Programme und Variablen des 16bit-BASIC sollten aber auch nur im hohen Bereich liegen, damit man die untersten 64k für Grafik und Sound frei hat. Durch die Ausnutzung der neuen Befehle des 65C816 wird man sicher etwas Geschwindigkeit herausholen - und heutzutage kann man die Rechner ja besser programmieren als vor 30 Jahren.
Die Entwicklung einer 65C816-Upgrade-Karte für den C128 könnte funktionieren. Wenn man den originalen Prozessor rauswirft und dafür einen 65C816 nutzt, ohne auf mehr Geschwindigkeit Wert zu legen, hat einen ziemlich kompatiblen Computer. Illegale Opcodes kommen ja nur in wenigen Programmen vor. Die neue Hardware dürfte sich in Grenzen halten, die Größe der Platine auch, den 65C816, 8520 und 65C22 gibt es auch als PLCC-Versionen. Ich habe auch FlashRAM's und S-RAM's in DIP-Bauweise gefunden. Also könnte man sich die ganze Sache noch selbst löten, und es müßten nur die Platinen produziert werden. Der Hauptaufwand liegt halt in der Programmierung des neuen Kernels und des BASIC, aber das wird das wichtigste daran sein. Denn nur Hardware zu liefern, aber keine Möglichkeit, sie zu nutzen, bringt nichts. Das kennen wir ja von der SuperCPU und der Flash8.
Vielleicht hat ja mal jemand Interesse an dem Projekt. Mir spukt die Idee schon seit Ewigkeiten im Kopf herum, aber ich kenne niemanden, die was mit Hardware am C128 machen oder ihn programmieren können. Die Idee, einen neuen Kernel mit den heutigen Programmiertechniken, einem besseren Prozessor mit optimierten Befehlen zu entwickeln, wäre schon interessant. JiffyDOS hat ja aus dem C64 und C128 einen ganz anderen Rechner gemacht, obwohl nur wenig geändert wurde. Was könnte man aus dem Rechner dann erst mit einem komplett neuen Kernel machen, der ohne jede Vermurksung von Commodore und Microsoft auskommt?
Schöne Grüße, RAM.