Monatsarchive: November 2012

Pakete für die H&E #1 2000 Aufkleber

Das erste Paket, es erreichte mich bereits Ende letzter Woche, enthielt 2000 Aufkleber im Format 60 x 75 mm. Das gedruckte Motiv ist das gleiche wie schon vor fünf Jahren als wir 25 Jahre C64 feierten. Nur habe ich zur Feier des 30. Geburtstags natürlich die Zahl angepasst. Dieselbe Grafik werden wir auch noch auf T-Shirts drucken. Während der Hobby & Elektronik besteht dann die Möglichkeit, diese T-Shirts auf dem Stand der CCL zu gewinnen. Noch ein Grund mehr nach Stuttgart zu kommen!

Jubiläumsaufkleber für die HE2012 (klein) Beilage zu Jubiläumsaufklebern (klein)
Paket #1: Drei dicke Bündel Aufkleber und ein paar Aufmerksamkeiten als Dreingabe

PS: Es sind aus dem Jahr 2007 auch noch zwei oder drei Stofftaschen mit dem Aufdruck „25 Jahre C64“ verfügbar. Mein Blog-Eintrag vom 15. November 2007 ist daher fast noch gültig. Die Taschen werden zum Selbstkostenpreis abgegeben.

Veröffentlicht unter Allgemein, Events | Hinterlasse einen Kommentar

H&E 2012: Werbebanner zum Selberbasteln

In einer Woche öffnet die Hobby & Elektronik ihre Pforten und da wollte ich noch mal schnell – so wie letztes Jahr – ein animiertes Banner von der Presseseite der Messe-Homepage runterladen, um hier die Werbetrommel zu rühren.

HE 2012 animiertes Banner

Doch wie ich feststellen durfte, kann man sich dort inzwischen auch sein eigenes Werbebanner basteln:

HE 2012 Werbebanner CCL

Veröffentlicht unter Allgemein | 1 Kommentar

Ja, ist denn schon Weihnachten?

Die Frage hatte ich mir schon vor einem Jahr gestellt. Doch diesmal kündigt sich die Hobby & Elektronik 2012 in Stuttgart tatsächlich mit Paketen an. Wenn wir vom 22. – 25. November in Halle 5 (nicht mehr in Halle 4!) auf dem Stand der CCL vor die Massen treten, die den Stuttgarter MesseHerbst besuchen, dann wollen wir ja nicht mit leeren Händen dastehen. Im Vorfeld haben wir also schon mal die eine oder andere Bestellung aufgegeben und die ersten Exponate sind jetzt eingetroffen.

Pakete für die Hobby & Elektronik 2012

Veröffentlicht unter Events | Hinterlasse einen Kommentar

Tetris für den CBM 3032

Hinweis (Nachtrag vom 21.02.2014): Wie sich anhand der Originaldateien (Download von zimmers.net) nachweisen läßt, wurde Pet Tetris nicht 2012 von Elmar Trojer sondern bereits 2010 von Tim Howe programmiert (bitte dazu auch die Kommentare lesen). Dieser Blogbeitrag ist diesbezüglich also als „historisch“ anzusehen. Ansonten fehlen mir hier erstmal die Worte.

Bereits im Mai diesen Jahres wurde Pet Tetris (Petris), ein Tetris-Clone für den Commodore CBM 3032, veröffentlicht. Autor, Elmar Trojer, hat das Programm mit CC65 erstellt, nachdem er einen CBM 3032 geschenkt bekommen hatte. Wie die nachfolgenden Abbildungen zeigen, ist die Umsetzung grafisch ansprechend gelungen. Warum Tetris nicht bereits zuvor in angemessener Qualität für die PETs dieser Welt verfügbar war, wird wohl ewig ein Rätsel bleiben. Dass zum Zeitpunkt des Erscheinens von Tetris die CBMs bereits ihren Zenit überschritten hatten, kann wohl kaum als ausreichende Erklärung dienen.

Petris Titelbildschirm
Titelbildschirm von Pet Tetris

Wer keinen CBM 3032 sein eigen nennt und Emulatoren nicht mag oder einfach mal sehen will, wie andere Petris spielen, kann sich ein Video dazu anschauen. Wer lieber selber spielt, kann das Programm aus dem Blog des Autors herunterladen (Deeplink: Download).

Petris Spielsituation
Die fehlenden Farben wurden durch Raster und Grafikzeichen ersetzt

In der Vergangenheit veröffentlichte Tetris-Versionen für PET- und CBM-Rechner waren entweder einfache BASIC-Programme die allenfalls als Machbarkeitsstudien bezeichnet werden können oder es handelte sich um „Abfallprodukte“ anderer Projekte.

Bedauerlicherweise ist Pet Tetris nur auf einem CBM 3032 mit naturwissenschaftlich/technischer Tastatur lauffähig, die Businesstastatur wird nicht unterstützt. Dass es auf einem PET 2001 nicht funktioniert ist nachvollziehbar, zu groß sind hier die Unterschiede in der Speicherbelegung. Auf einem CBM 4032 startet das Spiel zwar, doch auch hier kommt es zu Problemen. Das Spiel läuft immer im Kleinschrift- anstatt im Grafikzeichensatz und zwischen den Zeilen werden Blankzeilen eingefügt (hier liegt eine Inkompatibilität mit dem CRTC-Chip vor, eventuell funktionieren daher Rechner mit alter 3000er-Platine und einem BASIC 4 Upgrade-ROM, dies konnte ich aber leider nicht testen). Auch die Steuerungstasten funktionieren auf einem 4000er nicht richtig. Das ist sehr bedauerlich, denn der Aufwand, diese Inkompatibilitäten zu beheben hält sich sicher im Rahmen und wäre die Mühe wert.

Veröffentlicht unter CBM, Soft | 4 Kommentare

MPP 2: Zeropage, oh, Zeropage

Unlängst habe ich über Möglichkeiten zur Unterscheidung verschiedener Commodore-Rechner geschrieben. Heute geht es darum, diese Informationen zu nutzen, um Programme entwickeln zu können, die sich unterschiedlicher Hardwarebasis anpassen können. Für die weiteren Beschreibungen beschränke ich mich auf die 8-Bit-Rechner mit 40-Zeichen-Darstellung (PET, CBM, P500, C64, Plus4, C128), da ansonsten der Aufwand für die Anpassung der Bildschirmdarstellung zu groß wäre bzw. die Darstellungsmöglichkeiten zu stark einschränken würden.

Unabhängig von später zu behandelnden Sonderfällen, die durch individuelle Eigenheiten oder spezifische Inkompatibilitäten einzelner Rechnertypen ausgelöst werden, gibt es einige Unterscheidungsmerkmale, die alle (oder zumindest mehrere) Rechner betreffen und die im Programm am Besten über das Vorbelegen einer Variable mit einem jeweils systemspezifischen Wert gelöst werden müssen. Ich nenne das jetzt hier einfach mal eine Systemvariable. Was sich hier kompliziert anhört, wirkt in einem Beispiel ganz simpel und verständlich: Anstatt mit POKE 1024,0 im linken oberen Bildschirmeck eines C64 einen Klammeraffen erscheinen zu lassen, verwendet man eine Variable: P=1024 und einen flexiblen POKE-Befehl: POKE P,0. Durch Anpassen des Werts der Variable P für verschiedene Systeme kann der POKE-Befehl auf allen Rechnern im linken oberen Eck den gewünschten Klammeraffen erzeugen.

Neben dem Basiswert des Bildschirmspeichers könnten auch Werte für I/O-Register als Systemvariable interessant sein, um zum Beispiel die Hintergrund- und Rahmenfarbe festlegen zu können:

Computer Screen-RAM Color-RAM Hintergrundfarbe Rahmenfarbe
PET 2001 32768
CBM 3/4/8001 Series 32768
P 500 / CBM 500 53248 54272 55329 55328
C 64 / SX 64 1024 55296 53281 53280
C16 / C116 / Plus 4 3072 2048 65301 65305
C 128 / C 128 D 1024 55296 53281 53280

Eine weitere Spielwiese ist die Belegung der „Zeropage“. Bei Commodore-Rechnern ist die Besonderheit zu beachten, dass mit dem Begriff Zeropage oft die „erweiterte Zeropage“, also der Bereich bis $03ff (beim C128 sogar bis $12ff), angesprochen wird und nicht nur die Zeropage, wie sie die CPU sieht. Und so soll der Begriff auch hier verstanden werden. Wobei klar sein muss, dass der Begriff „erweiterte Zeropage“ technisch gesehen Unsinn ist. Möglicherweise hat Commodore (oder eigentlich Microsoft) diesen Begriff dadurch provoziert, dass beim ROM-Update vom PET 2001 zu den Rechnern der CBM 3001 Series diverse Kernel- und BASIC-ROM-Variable und -Zeiger aus der Zeropage in den Bereich ab $0200 bis $033a verlegt wurden und umgekehrt. In jedem Fall war ein Begriff für den Gesamtbereich des von Kernel und BASIC benötigten RAM-Speichers erforderlich.

In der (erweiterten) Zeropage finden sich Daten zur zuletzt genutzten Peripherie (Gerätenummer für Nachladeoperationen), zu Tastatureingaben (Tastaturpuffer und Zeiger in den selben), Sprungektoren, z.B. für den IRQ, und vieles mehr. Die nachfolgende Tabelle listet einige dieser Daten in einer synoptischen Darstellung für die hier betrachteten Geräte auf:

Label PET 2001 CBM 3/4/8001 P 500 C 64 Plus 4 C 128
FA 241 212 159 186 174 186
NDX 525 158 209 198 239 208
STKEY 521 155 169 145 145 145
KEYD 527 623 939 631 1319 842
SFDX 515 151 205 203 198 212
LSTX 547 166 225 215 2038 213
SHFLAG 516 152 (224) 653 1347 211
RPTFLG (228) 650 1344 2594
PNT 224/225 196/197 200/201 209/210 200/201 224/225
PNTR 226 198 203 211 202 236
TBLX 245 216 202 214 205 235
IIRQ 537/538 144/145 768/769 788/789 788/789 788/789
TBUFFR 634/826 634/826 (1024) 828 819 2816

FA: Aktuelle Gerätenummer – Diese Adresse ist relevant für alle Programme, die andere Programmteile nachladen. So können Kassetten- und Diskversionen unterschieden werden und das Nachladen erfolgt immer vom richtigen Laufwerk.

NDX: Anzahl der Zeichen im Tastaturpuffer (Warteschlange) – Durch Beschreiben mit dem Wert Null (0) wird der Tastaturpuffer „gelöscht“.

KEYD: Tastaturpuffer – In der Regel umfasst der Tastaturpuffer 10 Zeichen.

STKEY: Flag für STOP-Taste – Bei einigen Rechnern kann hier auch die RVS-Taste abgefragt werden. Prinzipiell stehen die 8 Bits für 8 Tasten. Welche das sind, ist jedoch systemspezifisch (abhängig von der Verdrahtung der Tastaturmatrix); nur die STOP-Taste ist immer dabei.

SFDX: Nummer der augenblicklich gedrückten Taste – In der Regel systemspezifische Indexnummer in die Tastaturdekodiertabelle. Bei CBM-Rechnern mit neuen ROMs, neuem Board und CRTC-Chip (40xx/80xx) ist es allerdings der dekodierte PETSCII-Code. Wer es in VICE testen will, kann dazu den 4032 (neue ROMs) mit dem 4032B (alte ROMs) vergeichen.

LSTX: Nummer der zuletzt gedrückten Taste – Analog zu SFDX.

SHFLAG: Flag für SHIFT-Taste – Neben der SHIFT-Taste werden hier (sofern vorhanden) auch die Tasten CONTROL und COMMODORE durch ein Bit repräsentiert. Beim P 500 beeinflussen auch andere Tasten den Inhalt dieser Speicherzelle.

RPTFLG: Ermöglicht Tastenwiederholung – Dieses Flag bestimmt die Art der Repeatfunktion: $80 = aktiv für alle Tasten, $40 = keine Tasten, $00 nur für Cursorsteuerung. Bei den CBM-Rechnern hat nur der CBM 80xx eine Repeatfunktion. Beim P 500 konnte ich das Flag nicht zweifelsfrei identifizieren.

PNT: Zeiger auf aktuelle Zeile (Text) – Pointer auf den Zeilenanfang.

PNTR: Aktuelle Cursor-Spalte

TBLX: Aktuelle Cursor-Zeile

IIRQ: IRQ-RAM-Vektor – Über diesen Vektor werden eigene Interruptgesteuerte Routinen eingebunden.

TBUFFR: Kassettenpuffer – Immer wieder beliebt für kleine, unterstützende Assemblerroutinen.

Üblicherweise werden nur wenige der hier aufgeführten Systemvariablen in die Systemerkennungsroutine integriert werden. Dafür kommen noch ein paar systemspezifische Systemadressen hinzu, die jeweils nur für ein Rechnersystem relevant sind, um dort Sonderfunktionen auslösen bzw. steuern zu können. Darüber wird allerdings erst im nächsten Teil berichtet.

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

HomeCon XIX: Vergebliche Schrauberei

Von der gestrigen HomeCon habe ich leider nicht viel mitbekommen. Ich war zwar vor Ort und das auch rechtzeitig, bin zudem recht lang geblieben, aber dummerweise musste ich erst meinen Lieblingsrechner, der auf der Bunkerparty „abgeraucht“ war, reparieren und das hat gedauert. Sehr lange gedauert. Wie sich abschließend herausstellte, war es zudem vergebliche Liebesmüh!

Ich hatte vorsorglich einen ganzen Stapel Commodore 128 D zur HomeCon geschleppt, um für alle Fälle was funktionierendes zur Hand zu haben. Dann startete ich meine „Reparaturversuche“. Da meine Hardwarekenntnisse im Austausch von Sicherungen enden, hatte ich einfach einen Ersatzrechner mit defekter Floppy zum Ausschlachten freigegeben und schraubte daher die von mir als defekt deklarierte Platine aus dem Lieblingsrechner raus und setzte die Platine aus dem Ausschlachtgerät ein. Die prinzipielle Funktionsfähigkeit der Ersatzplatine hatte ich zuvor getestet. Es muss hier angemerkt werden, dass eine C128-Platine mit ziemlich viel Schrauben befestigt ist und man zuvor Laufwerk und Frontblende entfernen muss. Es war also eine mehrstündige Schrauborgie.

Mainboard Commodore C128DCR PCB ASSY NO. 250477 Rev. 2 Mainboard Commodore C128DCR PCB ASSY NO. 250477 Rev. 5

Nachdem ich alles wieder zusammengesteckt hatte, vor allem musste ich die spezielle MMU-Platine für die SuperCPU von der „defekten“ Platine abnehmen und in die Ersatzplatine einbauen, kam der Moment der bitteren Wahrheit. Auch mit neuer Platine wollte der Rechner nicht starten. Nach weiteren Stunden von hin- und hergefrickel, Austausch von Komponenten und diversen Tests, musste ich endlich der bitteren Wahrheit ins Gesicht sehen: Ich hätte mir den Platinentausch sparen können! Defekt war nicht die Hauptplatine sonden der MMU-Adapter für die SuperCPU. Ohne diesen (also nur mit MMU betrieben) arbeitete das Gerät tadellos. Dass dieser Adapter, der zweifelsohne das neueste Bauteil im Rechner darstellte, defekt sein könnte, hatte ich wohl nicht wahr haben wollen und daher zuvor einen Test ausgeschlossen. Leider ist die SuperCPU128 ohne MMU-Adapter nicht im C128-Modus funktionsfähig, ich stehe also vor einem echten Problem.

Den Rest der HomeCon habe ich bei all dem Frust nur wie durch einen Schleier mitbekommen. Wie man schon während der Veranstaltung der ausgehängten ersten HomeCon-Zeitung (erstellt auf einem Atari mit Nadeldrucker) entnehmen konnte, wurde wieder (bei nahezu unablässigem Regen) gegrillt. Getränke und Kuchen gab es ebenfalls reichlich.

HomeCon News

Im Verlaufe des Tages habe ich gut 40 Teilnehmer aller Altersklassen gezählt. Nach verhaltenem Start wurde der Saal zunehmens voller und voller. In einer Ecke war ein Atari ST-Netzwerk aufgebaut. Wer wollte, konnte seine Mitspieler als Smilies in einem Irrgarten jagen. Die offizielle SpielCompo wurde mit „Castle Crisis“ auf einem Atari 800XL ausgefochten. Aus mir unerfindlichen Gründen habe ich Platz 2 belegt, wo ich bei sowas sonst doch in der ersten Runde ausscheide.

Zu guter Letzt habe ich dann noch meinen Megabit 128 Internal Function-ROM Adapter in den Sockel U36 eingebaut und getestet. Dieses schöne Stück Hardware schlummerte schon einige Zeit völlig zu unrecht ungenutzt in meiner Hardwarekiste und so war die HomeCon auch für mich letztlich nicht nur eine lehrreiche sondern auch eine erfolgreiche Veranstaltung.

Bilder von der HomeCon gibt es im Photoalbum auf C128.Net

Veröffentlicht unter Events | 1 Kommentar