Tagesarchive: 28.9.2012

Multiplattform Programmierung

Als der C64 im Jahr 1982 auf den Markt kam, hatte er ein Problem nicht: fehlende Software. Zwei ganz wesentliche Eigenschaften waren dafür verantwortlich: zum einen das Commodore BASIC 2.0, das die sprachbarrierenfreie Übernahme der bereits für ältere Commodore-Rechner (PET 2001, CBM und VC20) geschriebene Programme ermöglichte und zum anderen der über POKE-Befehle direkt beschreibbare Bildschirm mit 25 Zeilen zu 40 Zeichen (dem Format von PET 2001 und CBM 3001/4001 Series). Nahm man von beidem die Schnittmenge, so ergab sich, dass alles was als BASIC-Programm auf einem CBM-Rechner mit 40-Zeichen-Bildschirm lief, mit wenig Aufwand auf einen C64 übertragbar war.

Zwar bot der C64 mit Farbe, Grafik und Sound viele zusätzliche Möglichkeiten und natürlich lagen der Bildschirmspeicher und auch die für BASIC wichtigen Zeropage-Adressen an anderen Stellen im RAM, aber insgesamt war die Umstellung vom CBM auf den C64 nicht problematischer als die vom PET 2001 auf CBM 3001 Series. [Die stellte für Commodore sicher auch keine große Herausvorderung dar, aber ich erinnere mich noch mit Grausen an meine Probleme, denn mir fehlte damals jede Dokumentation.]

Spielanleitung ‘FROSCH’ Szene ‘FROSCH’

Eines der bekanntesten Beipiele für ein umgestelltes Programm ist sicher „FROSCH“ (Original Titel: „Back to Nature„) von der deutschen 1541-Demodiskette [Inhalt und Download]. Wie man an der Spielanleitung noch erkennt, wurde das Spiel ursprünglich für einen CBM-Rechner mit 40-Zeichen-Bildschirm und separatem Ziffernblock geschrieben (Autor: Bob Carr; veröffentlicht im CURSOR Magazine). Außer ein bißchen Farbe hat die C64-Version auch noch ein paar Geräusche bekommen. Doch allein durch einfaches Ändern der in Zeile 0 definierten Bildschirmadresse kann man, mit einigen Abstrichen, das Programm jederzeit auf einem CBM-Rechner ausführen.

Die Portierung von CBM-Programmen auf die Nachfolgegeräte (C64 /C128) hat also eine lange Tradition. Auch von mir gibt es dazu einige vor langer Zeit programmierte Beipiele (Wumpus, Wator). Im Zuge einer 4k BASIC Compo im Forum64 hatte ich mich (im Jahr 2009) des Themas mal wieder angenommen, besaß ich doch noch ein paar simple auf einem CBM 4008 programmierte BASIC-Spielchen auf Diskette, die außer mir noch kein Mensch gespielt hatte. Was lag da also näher, als sich an fertigen Programmen zu bedienen, anstatt sich neue Ideen abzuquälen.

Ich entschied mich damals für die Portierung von „Distichon„. Da noch genügend Bytes verfügbar waren, konnte ich allerdings gleich Nägel mit Köpfen machen und baute das Programm als Multiplattform-Game auf. Neben dem C64 wurden so auch CBM-Rechner (2001, 3001/4001 Series), der CBM 510 (aka P 500) aus der CBM2-Serie und der Plus 4 (C16/C116) bedient. Die bei der Compo noch bestehenden Limitierungen wurden jetzt mit einer Aktualisierung behoben (so dass nun auch die CBM 8001 Serie unterstützt wird).

Ein weiteres BASIC-Spiel (Isola) mit vergleichbarem „Migrationshintergrund“, habe ich für die letztjährigen C128 4kGame Coding Compo erstellt. Vermutlich mangels Teilnehmer ist es aber irgendwie nie zu einer Veröffentlichung der eingereichten Beiträge gekommen. Auch „Isola“ wird zu einem Multiplattform-Game weiterentwickelt. Ähnliches ist auch für das Spiel Canyon-Bomber geplant, das ich für die Compo auf der Bunkerparty 2012 vom CBM 4008 auf C64 portiert hatte (wobei hier zusätzlich einige Assemblerroutinen umzustellen waren).

Langer Rede kurzer Sinn: Im Laufe der Zeit hat sich so einiges an Informationen angesammelt, die es verdienen, hier dokumentiert zu werden. Es soll beleuchtet werden, wie man die einzelnen Rechner identifiziert und welche Besonderheiten zu berücksichtigen sind, wie kompatibel BASIC 2.0 mit sich selber ist, wie zickig sich 40-Zeichen-Bildschirme verhalten können und welche Gemeinheiten sonst noch so lauern. Wenn man all das beachtet, ist es jedoch keine große Kunst mehr ein Programm so aufzusetzen, dass es auf allen 40-Zeichen-Rechnern lauffähig ist.

Teil 1: Identifizieren Sie sich! – Auf welchem Computer läuft mein Programm?
Teil 2: Zeropage, oh, Zeropage – Synopse wichtiger Adressen im RAM
Teil 3: Jedem seine Extrawurst – Das Individuum fordert sein Recht
Teil 4: Immer im Takt – Die CPU (und BASIC): mal schnell, mal langsam
Teil 5: Abwärtskompatibel (zu BASIC 2.0) – Es ist gleich, doch nicht dasselbe
Teil 6: Das vierzigste Zeichen – Wie Fortschritt zum Problem wird

PS: Tokra hat mich darauf aufmerksam gemacht, dass es für den VC 20 einen PET-Simulator mit einer 40-Zeichen-Anzeige gibt. Und natürlich kann auch der VDC im C128 in einen 40-Zeichen-Modus geschaltet werden. Trotzdem werden beide Modi von meinen Multiplatformprogrammen nicht unterstützt. Diese Sonderfälle zu erfassen, würde sicher ein oder zwei Kilobyte zusätzlichen Programmcode erfordern. Da ich die Programme aber so klein halten will, dass sie auch auf einem CBM-Rechner mit nur 8K RAM lauffähig sind, ist das nicht umsetzbar. Was nicht heißen soll, dass es im Einzelfall nicht doch eine Spezialversion für den VDC im C128 geben wird.

Veröffentlicht unter C128, C64, CBM, Soft | Ein Kommentar