Archiv der Kategorie: C128

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

VDC Mode Mania (Grafikmode Demo)

Am zweiten September, also gestern, hat tokra (Akronyme Analogiker) sein Partyrelease „VDC Mode Mania“ von der Connected 9 online gestellt. Es handelt sich um eine Slideshow für diverse anspruchsvolle Videomodes des C128 (mit 64K VDC).

Terminator (Grafik aus VDC Mode Mania)

Gezeigt werden mit einem speziellen Tool konvertierte Bilder in folgenden exotischen Auflösungen:

– 640×480 interlace 8×2 color resolution
– 640×576 interlace 8×3 color resolution
– 480×252 non-interlace 8×1 color resolution
– 640×400 non-interlace 8×2 color resolution
– 720×700 interlace monochrome

Da der VDC von den existierenden C128-Emulatoren nur ungenügend unterstützt wird, kann man die Grafiken nur auf einem echten C128 mit entsprechendem RGB-Monitor fehlerfrei anzeigen lassen. Die Files der Demo liegen verteilt auf acht D64-Disketten vor. Das komplette Set mit Diskettenimages, Infos und Konvertiertools findet man zum Download in der CSDB oder auf POUET.

Bad News for IBM und Apple (Grafik aus VDC Mode Mania)Parrot (Grafik aus VDC Mode Mania)Blue Girl (Grafik aus VDC Mode Mania)Ironman (Grafik aus VDC Mode Mania)

Nach einer kleinen Kopierorgie habe ich alle Dateien der Demo in ein Native-Verzeichnis meiner RAMLink übertragen. Dabei galt es noch ein kleines Problem mit dem File „settings.vdc“ zu lösen (eine D2M-Version der Demo wäre daher sehr nützlich). Von der RAMLink aus, konnte man dann die Bilder in ordentlicher Geschwindigkeit durchblättern. [Trotz eines 1901-Monitors waren die Bilder im Menüpunkt 4 bei mir nicht stabil anzeigbar. Aber mein 1901 hat eine leichte Macke und ist daher nicht als Referenzgerät anzusehen.] Schon erstaunlich, was der VDC so alles auf den Schirm bringen kann!

Nachtrag (04.09.2012):
Vier weitere Bildschirmfotos wurden oben eingefügt und demonstrieren die VDC-Grafikfähigkeiten.

Nachtrag (01.10.2012):
In den Kommentaren finden sich Infos zu einer weiteren VDC-Grafik-Sammlung.

Veröffentlicht unter C128, Graphic, Soft | 6 Kommentare

C128 als Wasserkünstler

Nur noch selten trifft man auf einen C64 oder gar C128, der noch „im aktiven Dienst“ steht. Einer dieser seltenen Fälle ist, wie der Schwarzwälder Bote in seiner gestrigen Online-Ausgabe ausführlich berichtete, ein Commodore 128, der bei der Freiwilligen Feuerwehr Blumberg genutzt wird. Eckhard Schönfeldt hat ihn programmiert, um damit die Wasserspiel-Technik der Freiwilligen Feuerwehr zu steuern, die bei diversen Feierlichkeiten im Umfeld von Blumberg zum Einsatz kommt.

Wasserspiele der Blumberger Feuerwehr (Bildquelle: http://www.deutscher-jaeger.de/html/jubilaeum.html)Der Schwarzwäder Bote zitiert den 71-jährigen Wehrmann mit den Worten: „Die erste Steuerung habe ich in Basic für einen C64 geschrieben“. Und führt dann weiter aus: „Noch immer leistet ein C128 die gesamte Steuerungsarbeit. 10 C und ein B-Rohr werden über Magnetventile und Druckluft bei 24 Volt geschaltet. Die Vorführung dauert 18 Minuten, dabei werden 15 Kubikmeter Wasser benötigt.“

Da kann man nur beiden, dem Hern Schönfeld und seinem Commodore 128, noch viele gemeinsame glückliche Jahre wünschen!

Veröffentlicht unter C128 | Schreib einen Kommentar

Distichon 2012 (Multiplattform Game)

In den letzten Wochen habe ich meinen Beitrag zur 4k BASIC Compo von 2009 übearbeitet und zudem eine Englische Version erstellt. Nach wie vor werden alle Commodore-Rechner mit 40-Zeichen-Darstellung vom PET über CBM 3/4/8001 Series, CBM 510, C16/C116/Plus4 und C64 bis zum C128 unterstützt. Zur Auswahl der gewünschten Sprache wurde ein kleines Vorprogramm erstellt. Die einzelnen Sprachversionen sind aber auch eigenständig lauffähig.

Distichon Sprachauswahl
Das Vorprogramm zur Sprachauswahl, hier auf einem (emulierten) Plus4

Das aktuelle Update behebt auch die Probleme mit den vertauschten Gross- und Kleinbuchstaben im Textzeichensatz des PET 2001 und ermöglicht die Nutzung des Spiels auf einem CBM 8016/8032 durch Umschaltung auf 40-Zeichen-Darstellung. Das Programm kann man auf MySoft128.de als gezipptes D64 downloaden.

Veröffentlicht unter C128, C64, CBM | 2 Kommentare

Unnützes Wissen (1): LOAD & PEEK

Bei einem Programmierprojekt, das auf verschiedenen Commodore-Rechnern laufen soll, bin ich über ein Phänomen gestolpert, das man nicht wirklich kennen muss. Daher erklärt sich dann auch die Überschrift dieses Blogbeitrags. Die Numerierung ist dabei rein spekulativ; wer weiß schon, was die Zukunft bringt?

Commodore-BASIC erlaubt es, aus einem Programm heraus weitere Programmteile (z.B. Assembler-Code, Zeichensätze, oder Daten) nachladen zu können. Hier soll aber nicht auf die dazu erforderliche Technik eingegangen werden (das wäre ja auch kein unnützes Wissen), sondern auf einen kleinen Unterschied zwischen den Rechnern der CBM2-Reihe und dem Rest der Commodore-8-Bitter-Welt.

Um Programmteile erfolgreich nachladen zu können, ist es erforderlich, das zuvor benutzte Laufwerk (Device) identifizieren zu können. Wie oft hat man sich geärgert, dass ein Programm nur mit dem Laufwerk #8 zusammenarbeitet und stur immer nur von diesem seine Daten nachladen will! Dabei bieten Commodore-Rechner in der Zeropage eine Adresse an, in der die zuletzt genutzte Devicenummer (FA) abgelegt wird. Wird diese Möglichkeit richtig genutzt, kann das Programm von jedem beliebigen Gerät aus erfolgreich verwendet werden.

Die Zeropage-Adresse (FA) ist natürlich Rechnerabhängig: PET 2001: 241 ($F1); CBM 3001/4001/8001: 212 ($D4); CBM2 (CBM 510/6X0/7X0): 159 ($9F); C16/C116/Plus4: 174 ($AE); C64/C128: 186 ($BA).

Um eine Datei vom selben Laufwerk (Device) wie das Programm nachzuladen, sollte also ein einfaches LOAD“DATEINAME„, PEEK(FA) genügen. Die folgende Abbildung zeigt, dass das manchmal, jedoch keineswegs immer der Fall ist:

LOAD-Phaenomen

Der Trick gelingt beim CBM 510 (links) problemlos. Das ist allerdings die Ausnahme und nicht die Regel. Wie der gleiche Versuch am C64 (rechts) zeigt, versuchen andere Commodore-Rechner auf das Tape (Device #1) zuzugreifen. Der C64 verhält sich hier wie alle PET und CBM-Rechner, wie Plus4 und C128.

Die Lösung ist ein zweistufiges Vorgehen: UN=PEEK(FA):LOAD“DATEINAME„, UN

Hintergrund des seltsamen „Vergessens“ der zuvor genutzten Devicenummer beim LOAD-Befehl ist der Befehl selber. Er setzt gleich beim Aufruf das Tape (Device #1) als Standarddevice, also das Gerät, dass bei Weglassen der Devicenummer verwendet wird (und ändert damit den Inhalt von FA). Dies erfolgt bevor der PEEK-Befehl ausgeführt wird, der daher nicht mehr das gewünschte Ergebnis liefern kann. Nur in der CBM2-Reihe wurde dieser Fehler behoben.

Nachtrag (08.10.2012):
Teil 2: DATA … Lost in Space

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

Commodore 128 Dual Monitor Demo

Für das 10. Commodore-Treffen in Graz – man muss ja auch mal über die Grenze schauen – hat Martin Brunner eine Mini-BASIC-Demo für den C128 und zwei Monitore geschrieben. Das Projekt wurde innerhalb eines Tages programmiert und erhebt keinen Anspruch auf Perfektion.

Commodore C128 Dual Monitor Demo Video (Ausschnitt YouTube Video)

D64-Image zum selber testen und analysieren:
http://c64.tin.at/c128-dual-demo.zip

Youtube-Video:
http://www.youtube.com/watch?v=UDhFfSjvEvQ

Veröffentlicht unter C128, Soft | Schreib einen Kommentar

MOOB: Ein einsames Elektron im C128

Die Commodore 128 4k Game Coding Competition 2011 im Forum auf commodore128.org wurde zwar bereits am 1. April 2012 offiziell beendet, doch wird sich die Veröffentlichung etwaiger Beiträge noch hinziehen. Allerdings kann man bis dahin schon mal MOOB ausprobieren. Es handelt sich dabei mehr um ein ausbaufähiges Spielgerüst, ein „proof of concept“, als um ein fertiges Spiel. Trotz diverser Beschränkungen und vieler Tricks passte das Ganze nicht in 4kB und so hat Hydrophilic das Spielchen (in einer 6kB-Version) außer Konkurrenz veröffentlicht.

MOOB bietet folgende Funktionen: ein schnelles und einfaches 3D-Labyrinth; 40 Spalten (1 MHz) oder 80 Spalten (2 MHz) Bildschirmanzeige; wahlweise Joystick oder Tastatureingabe; identisches Timing auf NTSC und PAL Systemen (bei Verwendung der Steuerung mit Joystick). Das Labyrinth wird direkt auf Basis von Programmdaten aus dem BASIC high ROM berechnet.

MOOB: Screenshot VIC

Das Szenario des Labyrinthspiels wird im Begleittext wie folgt beschrieben (übersetzt aus dem Englischen): „Du bist ein Elektron im BASIC ROM des Commodore 128. Navigiere durch den Code im Silizium, um einen Ausgang (einen RTS Opcode) zu finden, ohne dich durch diverse Schleifen und Sprünge verrückt machen zu lassen. Wenn Du einen Ausgang durchschreitest, erfolgt ein Quantensprung in einen höheren Level im Code (es gibt kein Zurück zu einem niedrigeren Level). Die Grundfläche (Codegröße) wächst mit jedem neuen Level was die Sache bei fortschreitendem Spiel zusehends erschwert.

Download über Commodore128.org oder hier: MOOB: ZIP mit D64, Infos und Quelltext

Veröffentlicht unter C128, Compo, Soft | Schreib einen Kommentar

C65 versus C128

In der aktuellen Lotek schreibt Stefan Egger in einem recht lesenswerten, vier Seiten umfassenden Artikel über den Commodore 65, seine Besonderheiten und Prototyp-Varianten. Er beginnt dann allerdings sein abschließendes Fazit mit dem Satz „Der C65 wäre in meinen Augen der bessere C128 gewesen.“ Kann man das so stehen lassen?

Schon der rein technische Vergleich unter Auslassung rechnertypischer Besonderheiten wie einem zweiten Prozessor (Z 80) und CP/M-Fähigkeit beim Commodore 128 fällt zwiespältig aus. Der C128 hat die höhere Kompatibilität im C64-Modus, bietet aber weniger Zusatznutzen im Nativen-Modus (langsamerer Prozessor, geringere Grafikfähigkeiten):

Computer C128 (D) C65
Produktionsmenge ca. 4.000.000 (in Serie) < 1000 (nur Prototypen)
Baujahr
1985 1991
CPU 8502 CSG 4510
Taktfrequenz 2 MHz 3,54 MHz
CPU-Befehlssatz 6502 65CE02
RAM (on Board) 128 KB 128 KB
Sound 1 SID (Mono) 2 SID (Stereo)
Graphic-Chip(s) VIC IIe, VDC VIC III (CSG 4567)
Auflösung (non-interlaced) 320×200, 640×200 320×200 – 1280×200
Auflösung (interlaced) 640×400 320×400 – 1280×400
Auflösung (maximal) 720×700, 640×720 unbekannt
Textmodus 40×25, 80×25 40×25, 80×25
Farben 16 256 (von 4096)
C64-Kompatibilität >> 95 % 60 – 70 %
Expansionport C64-kompatibel inkompatibel
Standard Floppy (Unit 8) 5,25″ 3,5″

Doch ist dieser Vergleich wirklich zulässig? Zwischen der Entwicklung des C128 und dem C65 liegen 6 Jahre. Das sind in der Mikroelektronik fast schon Äonen. Der C128 war nicht von ungefähr eine hochkomplexe Maschine. Ein hochintegrierter C65 im Jahre 1985 wäre sicher ein phantastischer Computer gewesen, aber die Entwicklung der entsprechenden Chips war damals technisch noch nicht möglich. Im Jahr 1991 hingegen gab es bereits leistungsfähigere Systeme (Amiga).

Zudem ist die Zielgruppe beider Rechner unterschiedlich. Das zu vergessen ist ein Fehler, der auch Häufig begangen wird, wenn der Erfolg des C128 im Vergleich zum C64 bemessen wird. Der C64 und sein (als konsequente Weiterentwicklung) potentieller Nachfolger der C65 waren als Spielecomputer konzipiert. Der C128 hingegen sollte den professionellen Markt bedienen (so war auch die Werbung ausgerichtet). Deshalb CP/M und deshalb ein 80-Zeichen-Modus. Dass beides etwas halbherzig umgesetzt wurde, ist dabei ein anderes Kapitel. Die C64-Kompatibilität war beim C128 „nur“ eine (wichtige!) Dreingabe, um sofort auf einen großen Pool an Software zurückgreifen zu können. Der C128 hat, im Gegensatz zu vielen anderen Erzeugnissen aus dem Hause Commodore (264er Serie, CBM II, C65), seine Entwicklungs-, Herstell- und Vertriebskosten eingespielt und steht somit in einer Reihe mit dem PET, VC20, C64 und Amiga.

Natürlich ist es ein interessantes Gedankenexperiment, sich vorzustellen, was aus einem C128 geworden wäre, wenn man (a) um Komplexität zu vermeiden auf CP/M verzichtet, (b) einen (fiktiven) 8502 B mit 4 MHz und (c) einen VIC III (und sei es nur in einer Graphik-Auflösung von 640×200 in 256 Farben) für die 80-Zeichen-Darstellung eingesetzt hätte? Und das alles im Jahr 1985 … ein schöner Traum!

Veröffentlicht unter C128, Mags | Schreib einen Kommentar

Unterstützung für das LOAD-Magazin

C128.net-Minianzeige für das LOAD-Magazin

Veröffentlicht unter C128, Mags | Ein Kommentar

Digimaster 128

Vor nicht ganz einem Monat hat Hydrophilic das Programm Digimaster 128 veröffentlicht. Es basiert auf Digimaster 64 von Chris Brenner und dient zum Aufnehmen und Bearbeiten digitalisierter Töne (digital audio). Das Programm unterstützt den Sound Ultimate Xpander 6400 (SUX 6400) [Forum64] zum Samplen.

Digimaster 128 - Directory Digimaster 128 - Wave

Die C128-Version wurde direkt auf Basis des Programmcodes der C64-Version erstellt, deshalb läuft sie auch nur im 40-Zeichen Modus. Zur Anpassung an die spezielle Speicherkonfiguration des C128, mussten Code und Daten verschoben und modifiziert werden. Der Audiospeicher wurde in Bank 1 verlegt. Das erlaubt nun Samples von bis zu 64000 Bytes!

Weitere Vorteile der C128-Version: automatische Erkennung von PAL / NTSC, kürzere Ladezeiten der Samples (C128-Burstmode), höhere Sampling- und Abspielraten bei Nutzung des 2 MHz-Modus der CPU.

Die Programmdiskette (siehe Downloadlink unten) enthält auch einige Beispielsamples. Meine allerersten Testergebnisse in VICE waren allerdings sehr enttäuschend, was nicht daran lag, das die letzte Datei fehlerhaft ist und sich nicht laden läßt, sondern daran, das beim Abspielen der Samples kaum ein Ton zu hören war. Die Ursache war allerdings rasch gefunden. Die oberen Einstellmöglichkeiten für die Art der SID-Emulation in VICE (FastSID, ReSID) sind schlichtweg unbrauchbar. Digitalisierte Audiodaten benötigen eine bessere Emulation. Die in der Auswahl am unteren Ende befindlichen Einträge (ReSID-fp) liefern fast alle einen passablen Klang.

Die VICE-Erfahrungen legten die Verwendung echter Hardware nahe. Und so habe ich heute sowohl einen C128-Türkeil als auch einen C128D-Blech aus dem Kellerexil befreit und mit Digimaster 128-Samples gefüttert. Beide Geräte klangen gleich und es gab keine Probleme mit den Samples. Leider störte ein gewisses hochfrequentes Hintergrundpfeifen den ungetrübten „Audiogenuss“. Den einen oder anderen Kompromiss muss man bei so alter Hardware wohl eingehen.

Diskussion und Download (nach Anmeldung): www.commodore128.org

Veröffentlicht unter C128, Soft | Schreib einen Kommentar