Monatsarchive: Oktober 2012

Commodore 128 Sticker

Durch reinen Zufall bin ich die Tage über ein Ebay-Angebot für Commodore 128 Case Badge Sticker gestolpert. Verkäufer war Hardware-Shuttle, ein Ebay-Shop für „Commodore Amiga – C64 – Apple & more“.

Commodore 128 Case Badge Sticker

Ich habe mir gleich mal zwei der Sticker zusenden lassen. Das hat auch problemlos funktioniert (wie man an der Abbildung sieht) . Auch wenn inzwischen (30. Oktober) von den bei Ebay angebotenen Stickern mehr als die Hälfte verkauft wurden, darf man wohl davon ausgehen, dass der Vorrat noch lange nicht erschöpft ist. Auf der Homepage findet man neben dem C128-Sticker auch noch den bekannten Commodore-Sticker (Chickenhead-Logo), mehr als nur eine Variante eines C64-Stickers und einen C128 D-Sticker. Zumindest von letzterem muss ich mir jetzt unbedingt gleich noch ein paar zusenden lassen …

Nachtrag 05.11.2012: Die C128 D-Sticker sind nun auch angekommen, wie man sieht:

Commodore 128 D Case Badge Sticker

Veröffentlicht unter C128 | Hinterlasse einen Kommentar

RETURN Spätsommer 2012

Heute traf endlich die heißersehnte RETURN #12 ein. Der ursprünglichen Planung nach sollte sie im August erscheinen und wäre das Sommerheft gewesen. Doch widrige Umstände hatten zu diversen Verzögerungen geführt. Wenn sie letzte Woche eingetroffen wäre, hätte man sie fast noch als Spätsommerausgabe durchgehen lassen können, immerhin lagen die Temperaturen am Wochenende deutlich über 20°C und man trug kurzärmelige Hemden. Doch heute kamen mit der RETURN auch gleich der erste Schnee (nicht nur ein paar winzige Flöckchen) und eisige Temperaturen. Da waren Pullover, Schal und Mütze fast schon Pflicht.

RETURN #12 (3/2012); Bildquelle des Originals: RETURN-MagazinWar das letzte Heft dem 40-jährigen Jubiläum Ataris gewidmet, so steht diese Ausgabe ganz im Zeichen des C64. „30 Jahre Commodore 64“ ist auch die Headline der 10-seitigen Titelstory des leitenden Redakteurs Boris Kretzinger (allein dieser Artikel lohnt den Kauf des Magazins). Leider verläßt Boris die Redaktion, wie er im Editorial verlauten läßt, doch neue Kräfte rücken nach.

Mit Interesse gelesen habe ich auch den Bericht über die [connected], der richtig Laune macht, sich mal in den hohen Norden zu begeben. Gefallen hat mir das Artikel-LayOut (entfernt ähnlich den Partyberichten in der LOAD) mit den Bildschnipseln.

Die umfangreichen Artikel zu „Maniac Mansion“ (dazu gibt es auch ein Longplay) und dem neuen C64-Spiel „Soulless“ werde ich mir mal in einer ruhigeren Minute reinziehen, ebenso wie die Heftdisketten, die man wie immer über die Homepage des RETURN-Magazins runterladen kann. Fazit: Ein echtes must have!

 

Veröffentlicht unter Mags | Hinterlasse einen Kommentar

MPP 1: Identifizieren Sie sich!

Der Erste Schritt bei der Multiplattform-Programmierung besteht im Erkennen des Computersystems. Denn bei aller Ähnlichkeit zwischen den Commodore 8-Bit-Rechnern, gibt es doch genügend Unterschiede, die es zu beachten gilt. Zur Unterscheidung sind spezifische und unverwechselbare Kriterien heranzuziehen. Ein Beispiel für eine automatische Rechnererkennung ist die Routine die sauhund im Forum64 gepostet hat.

Wenn man auf Details, wie den RAM-Ausbau beim VC20 oder die Unterscheidung zwischen C16 und Plus4 verzichten kann, geht es aber auch einfacher. Statt diverse Adressen zu prüfen, genügt es, sich auf eine zu beschränken, die bei allen Rechnern unterschiedlich ausfällt aber bei allen ROM-Varianten identisch ist. Eine vertiefende Analyse läßt sich dann in den erforderlichen Fällen noch nachträglich durchführen.

Am Ende des ROMs finden sich gleich zwei geeignete Kandidaten für einen Rechnercheck. Nach meinen bisherigen Recherchen sind IRQ- (Puls) und RESET-Vektor bei jedem Commodore-Rechner unterschiedlich jedoch für verschiedene ROM-Versionen eines Rechners immer identisch. Zur Identifizierung genügt es, das Low-Byte des Vektors zu prüfen. Ich persönlich bevorzuge dabei den IRQ-Vektor, für irgendetwas muss man sich ja mal entscheiden.

Computer IRQ LB (hex) LB (dez) RESET LB (hex) LB (dez)
PET 2001 $E66B $6B 107 $FD38 $38 056
CBM 3001 $E61B $1B 027 $FCD1 $D1 209
CBM 4001/8001 $E442 $42 066 $FD16 $16 022
P 500 / CBM 500 $FBE5 $E5 229 $F99E $9E 158
CBM 600 / 700 $FBD6 $D6 214 $F997 $97 151
VC 20 $FF71 $72 114 $FD22 $22 034
C 64 / C64 SX $FF48 $48 072 $FCE2 $E2 226
C 16 / C 116 / Plus 4 $FCB3 $B3 179 $FF6F $F6 246
C 128 / C 128 D $FF17 $17 023 $FF3D $3d 061

Tabelle der Systemvektoren IRQ und RESET für alle Commodore-8-Bit-Rechner

Der IRQ-Vektor liegt bei $FFFE/FFFF, der RESET-Vektor bei $FFFC/FFFD im ROM; wie bei der CPU 6502 üblich im Format LSB/MSB (Low-Byte/High-Byte bzw. LB/HB). Mittels PEEK lässt sich der gewünschte Wert auslesen. PEEK(65534) liefert das Low-Byte des IRQ-Vektors, PEEK(65532) den des RESET-Vektors. Beim Commodore Plus 4 (und C16 / C116) muss zuvor allerdings noch das ROM eingeblendet werden, was einen kleinen schmutzigen Trick erfordert. Man kann ihn in Zeile 130 des nachfolgenden Listings finden:

100 rem *** cbm checker a (wte) ***
110 :
120 cbm=peek(65534): pet=0: c$=“commodore “
130 if peek(1177)=63 then poke1177,62: cbm=peek(65534): poke1177,63
140 rem 2001,3001,4001,p500,cbm600/700,vc20,c64,c16/p4,c128
150 restore:data 107, 27, 66, 229, 214, 114, 72, 179, 23
160 ix=0: for i=1 to 9: read a:if a=cbm then ix=i: i=9
170 next: on ix gosub 240, 260, 280, 340, 360, 380, 400, 420, 440
180 if ix then 460
190 print
200 print „not supported system!“
210 print „dieser computer wird nicht unterstuetzt!“
220 end
230 :
240 a$=“2″: goto300
250 :
260 a$=“3″: goto300
270 :
280 a$=chr$(52-(peek(224)=0)*4)
290 :
300 if a$<„4“ then poke59458,peek(59458) or 32:rem killer poke (fast poke)
310 a$=mid$(„pet cbm „,5+(a$=“2″)*4,4)+a$
320 pet=59468: c$=c$+a$+“001 series“: return
330 :
340 c$=c$+“p500/cbm510″: return
350 :
360 c$=c$+“600/700 series“: return
370 :
380 c$=c$+“vic20/vc20″: return
390 :
400 c$=c$+“64″: return
410 :
420 c$=c$+“c16/c116/plus4″: return
430 :
440 c$=c$+“128″: graphic 0: slow: return
450 :
460 print chr$(147)chr$(142): if pet then poke pet,12
470 print „this program is running on a“
480 print c$: print
490 print „dieses programm laeuft auf einem“
500 print c$: print: end

Variante A der Systemerkennung. Rechnerspezifische Details werden über ON / GOSUB definiert

100 rem *** cbm checker b (wte) ***
110 :
120 cbm=peek(65534): c$=“commodore “
130 if peek(1177)=63 then poke1177,62: cbm=peek(65534): poke1177,63
140 restore
150 rem 2001,3001,4001,p500,cbm600/700,vc20,c64,c16/p4,c128
160 data 107, pet 2001 series, 1, 1, 0
170 data 27, cbm 3001 series, 1, 1, 0
180 data 66, cbm 4001 series, 1, 0, 0
190 data 229, p500/cbm510, 0, 0, 0
200 data 214, 600/700 series, 0, 0, 0
210 data 114, vic20/vc20, 0, 0, 0
220 data 72, 64, 0, 0, 0
230 data 179, c16/c116/plus4, 0, 0, 0
240 data 23, 128, 0, 0, 1
250 :
260 ix=0: for i=1 to 9
270 read a, a$, pet, kp, c128
280 if a=cbm then ix=i: i=9
290 next
300 if ix then 370
310 :
320 print
330 print „not supported system!“
340 print „dieser computer wird nicht unterstuetzt!“
350 end
360 :
370 if kp then poke59458,peek(59458) or 32:rem killer poke (fast poke)
380 if kp<>pet then if peek(224)=0 then a$=“cbm 8″+mid$(a$,6)
390 c$=c$+a$: if c128 then graphic 0: slow
400 :
410 print chr$(147)chr$(142): if pet then poke 59468,12
420 print „this program is running on a“
430 print c$: print
440 print „dieses programm laeuft auf einem“
450 print c$: print: end

Variante B der Systemerkennung. Rechnerspezifische Details werden über DATA-Statements definiert

Wer den Quellcode genau studiert, wird feststellen, dass für die Rechner der CBM 8000er Reihe, die den gleichen IRQ-Vektor haben wie die 4000er, eine zusätzliche Detailprüfung implementiert wurde. Über die Speicherstelle $E0 (224) in der Zeropage kann man leicht erkennen, welchen Rechner (8001 Series: 0 / 4001 Series: 128) man vor sich hat.

Beide Varianten der Rechnererkennung haben ihre Vor- und Nachteile und stehen hier nur beispielhaft für zwei Möglichkeiten das Problem anzugehen [die Programme können als Text- und PRG-Dateien (gezippt) für Testzwecke heruntergeladen werden]. Da sich meine Multiplattform-Programme in der Regel auf die Rechner mit 40-Zeichen-Darstellung beschränken, lasse ich in der Praxis die Erkennung von CBM 600/700 und VC 20 „unter den Tisch fallen“ und erkläre sie zu „nicht unterstützten Systemen“. Und natürlich muss der Identifizierung auch eine ausgefeilte Differenzierung folgen (hier angedeutet durch den „Killer-POKE“ und die BASIC 7-Befehle GRAPHIC und SLOW). Doch dazu berichte ich später mehr.

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

Commodore 128 D Black Edition!

Ich bin eigentlich kein Freund von „gemoddeten“ Commodore-Rechnern. Die meisten Versuche beleidigen entweder mein ästhetisches Empfinden oder erregen meinen Widerwillen gegen mutwillige Zerstörung von Originalhardware. Wenn jedoch ein umgebauter Rechner ordentlich verarbeitet und gestylt wurde, zolle ich dem gern Respekt.

Was allerdings unlängst im Forum64 der Öffentlichkeit präsentiert wurde, löste eine andere Reaktion aus. Ich musste schnell zum nächsten Spiegel rennen, um zu überprüfen, ob mein Gesicht nicht vielleicht wirklich gelb angelaufen war… aus purem Neid! DerSchatten hatte dort einen mit hoher Präzision gemoddeten Commodore 128 D präsentiert, der nicht nur mir solch starke Emotionen abrang.

Commodore 128 D Black Edition!

Für den C128D SD2IEC/LCD Black Edition! wurde als Basis ein C128 D (kein DCR) verwendet, da dieser für den Einbau eines Parallelspeeders (hier ProfDOS) besser geeignet ist. Der Umbau enthält zusätzlich ein SD2IEC-Interface (Shadowolf-Variante) das an der Front montiert wurde. Dazu musste das Netzteil um einige Zentimeter nach hinten versetzen werden. Verbaut wurden außerdem noch eine DualSID-Platine mit 2x6581R5 und ein 64k VDC RAM Upgrade. Eine schwarze Lackierung (matt) und HIFI-Füße runden die edele Optik ab. Detailliertere Infos, auch zu den Elementen an der Frontseite, finden sich im Originalbeitrag im Forum64, auf dem auch dieser Text beruht.

Thumbnail C128D Black Edition (Bild 1) Thumbnail C128D Black Edition (Bild 2) Thumbnail C128D Black Edition (Bild 3)

Alle Bilder sind aus dem Beitrag im Forum64. (c) 2012, DerSchatten

Veröffentlicht unter C128 | Hinterlasse einen Kommentar

Unnützes Wissen (3): Zwiespältiges GETKEY

Nachdem mit dem DATA-Bug und dem LOAD & PEEK-Problem hier zwei Fälle von unnützem Wissen diskutiert wurden, denen man zumindest noch eine klitzekleine Restnützlichkeit attestieren könnte, kann davon beim heutigen Beitrag keine Rede sein. Man muss hier zum besseren Verständnis vorausschicken, dass es das Commodore-BASIC erlaubt, die BASIC-Befehle bei der Eingabe abzukürzen. Dazu wird der Buchstabe (oft ist es der zweite oder dritte), der dem System eine eindeutige Identifizierung des Kommandos erlaubt, „geSHIFTet“ eingetippt. Im Groß-/Kleinschriftmodus sieht das dann z.B. so aus: lI entspricht LIST; renU entspricht RENUMBER und gO entspricht GOTO.

Angeregt durch die Diskussion um den DATA-Bug, hat Hydrophilic im C128-Forum auf Commodore128.org darauf hingewiesen, dass auch zur GETKEY-Anweisung unnützes Wissen existiert. Im C128 System Guide und auch im deutschen C128 Bedienungshandbuch ist für GETKEY getkE als Abkürzung aufgeführt. Das ist nicht die ganze Wahrheit. Hydrophilic offenbarte eine andere Abkürzung: auch gEkE entspricht GETKEY.

Abkürzung für GETKEYWie die nebenstehende Abbildung zeigt, hat er recht. Damit gäbe es zwei mögliche Abkürzungen. Man kann aber genausogut behaupten, es gäbe gar keine. Denn für den BASIC-Interpreter existiert der BASIC-Befehl GETKEY überhaupt nicht!

Man kann GETKEY auch als GET KEY schreiben (was die Abkürzung gEkE bzw. gE kE erklärt). Damit besteht eine gewisse Parallele zu GOTO und GO TO; beide Schreibweisen für den Sprungbefehl sind zulässig. Während jedoch GOTO ein eigenständiger Befehl mit eigenem Token ist, für den es auch eine eigene Abkürzung gibt, gibt es kein Token für GETKEY. Für den Interpreter erscheint GETKEY daher als gespaltene Persönlichkeit mit den Namen GET und KEY und wird mit zwei Token codiert. Dabei ist GET eindeutig das dominante Ego, denn die entsprechende BASIC-ROM-Routine (im C128 ab $5612) behandelt KEY einfach als einen Parameter der GET-Anweisung.

Veröffentlicht unter C128 | Hinterlasse einen Kommentar

10 Jahre Lotek64

Fast eine Woche nach Freigabe des Downloads, kam heute die aktuelle Lotek64 #42 ins Haus geflattert. Vermutlich war die Redaktion (zu Recht!) schwer mit Feiern des 10jährigen Jahrestags beschäftigt, denn das Heft entspricht zwar den allgemeinen (hochgesteckten) Erwartungen, aber für eine Jubiläumsausgabe hätte man sich vielleicht doch etwas mehr erhoffen dürfen.

Aber ich will nicht zuviel meckern, sonst heißt es gleich wieder: „Selber was beitragen!“ (und was sollte man dem entgegenen, außer einem zustimmenden Kopfnicken?). Daher: Happy Birthday Lotek!

Lotek64 #42 Aus dem Inhalt:

  • Pionier, Altmeister und Zauberer am MOS6581
    Interview: Rob Hubbard
  • Interview: Rob Hubbard
    Retrowelle auf YouTube
  • Abschlus der Romantrilogie von Constantin Gillies
    Extraleben III: Endboss
  • Werkschau und Interview
    Kangaroo MusiQue
Veröffentlicht unter Mags | 1 Kommentar

Unnützes Wissen (2): DATA … Lost in Space!?

Ich hatte es ja geahnt, dass es nicht bei einem seltsamen Phänomen bleiben wird. Heute ist mir eine weitere Seltsamkeit des Commodore-BASIC begegnet, die man normalerweise nie zu Gesicht bekommt. Ein Programm, dass auf einem C128 klaglos lief, quittierte auf einem (emulierten) CBM 4001 Series den Dienst mit einer „OUT OF DATA“ Fehlermeldung. Als „Übeltäter“ erwies sich dabei, welch eine Überraschung, das DATA-Statement (*) selber.

Alles fing damit an, dass ich ein Listing für Demonstrationszwecke etwas übersichtlicher gestalten wollte und nach den Doppelpunkten zur Befehlstrennung jeweils ein Leerzeichen einfügte. Im Normalfall vermeidet man solche Speicherplatzverschwendung, aber die Befehle ließen sich jetzt etwas leichter lesen. Auf einem C128 funktionierte das Programm auch tadellos. Als es dann in VICE im PET/CBM-Emulator getestet wurde, kam es zu der besagten Fehlermeldung. Natürlich denkt man in so einem Fall viel zu kompliziert und sucht den Fehler überall, nur nicht dort wo er einem eigentlich ins Auge springt.

Es dauerte daher einige Zeit bis ich dahinterkam, wohin die Daten, die die „OUT OF DATA“-Meldung als vermisst beklagte, verschwundenen waren. Man sagt ja manchmal so dahin „Lost in Space“, aber diesmal trifft dieser Satz den Kern! Wenn direkt vor dem DATA-Statement ein Leerzeichen (Space) steht, wird das DATA-Statement vom Interpreter ignoriert! Die nachfolgenden Daten „verschwinden“ im „Space“.

DATA missing error PET/CBM (1)   DATA missing error PET/CBM (2)
Spaces sorgen für Übersicht und fehlende Daten
Unübersichtlicher, aber funktionsfähig

Dieser spezielle Fehler tritt bei allen CBM-Rechnern vom PET bis zum CBM 8296 auf. Die CBM2-Reihe, der VC20 und alles was danach produziert wurde, hat diesen Bug nicht mehr. Ich habe nicht herausfinden können, ob dieses Fehlverhalten schon allgemein bekannt ist – die Internet-Recherche nach DATA, PET und BUG liefert keine brauchbaren Treffer – vermute aber, dass ich nicht wirklich der Erste bin, der es entdeckt hat. Falls also jemand einen passenden Link zu einem früheren Entdecker bzw. Literaturstellen kennt oder findet: Immer her damit!

Nachtrag (09.10.2012):
(*) Nur um etwaigen Irritationen vorzubeugen: Damit ist der Ort des Problems gemeint. Eigentlich ist das DATA-Statement Opfer und nicht Täter. Zwar bestimmt das Leerzeichen vor DATA ob das Problem auftritt oder nicht, aber der Fehler selbst wird natürlich durch den fehlerhaft programmierten READ-Befehl ausgelöst, der im beschriebenen Fall das gesamte DATA-Statement ignoriert wenn davor ein Space steht.

Nachtrag (14.10.2012):
Im Commodore Computer Wiki wurde der Eintrag zum BASIC-Statement DATA zwischenzeitlich von Hydrophilic aktualisiert. Der Artikel erwähnt jetzt auch den hier beschriebenen DATA-Bug

Nachtrag (15.10.2012):
Teil 3: Zwiespältiges GETKEY

Veröffentlicht unter CBM | Hinterlasse einen Kommentar

Commodore Free #64

Commodore Free Magazine Issue #64 (small)Fast auf den Punkt genau 30 Jahre nach dem Verkaufsstart des Commodore 64 in den Vereinigten Staaten, erschien heute die Ausgabe #64 des Commodore Free Magazines. Es ist da wenig verwunderlich, dass Nigel den Schwerpunkt des Hefts auf den C64 gelegt hat. Diese Geburtstagsausgabe ist ein echt dickes Ding! 70 Seiten hat das PDF-Dokument und es ist mit 19 MB fast dreimal so speicherfressend wie eine normale Ausgabe des Magazins.

Aus gegebenem Anlass gibt es zum Magazin diesmal auch ein „Cover Tape„, also eine „Heft-Cassette“. Offenbar waren in UK 1541-Diskettelaufwerke nicht sehr verbreitet, sodass man sich dort Ende der 1980er noch mit der Datasette herumquälte, denn das folgende Zitat aus dem Heft: „During the late 1980’s and early 1990’s magazines had their own cover tape, crammed with a few games, playable demos and stuff like that.“ mag für UK Gültigkeit gehabt haben, aber nicht für Good Old Germany.

Wie auch immer, das „Cover Tape“ besteht aus sechs TAP-Files mit fünf Spielen: „The Mollusk Redux“ (2012), „Sheepoid 2 – Woolly Jumper“ (2012), „Escape from Arth“ (1994-2008), „Brothers of the Bow“ (2010) [2 TAP-Files] und „Safari“ (2012). Ausführliche Beschreibungen zu den Spielen befinden sich im Heft und auch in einem, dem Tape-Archiv beigefügten, WORD-Dokument.

Nach der Digital Talk #95 und der gestern eingetroffenen Retro #25 ist die Commodore Free jetzt schon das dritte Magazin binnen weniger Tage, dass mir hilft, die dunklen Herbstabende zu verkürzen. Da auch die Sommerausgabe der RETURN sicher nicht mehr lange auf sich warten lassen wird, muss ich wohl bald meinen Fernsehkonsum reduzieren, um das alles „abzuarbeiten“. Doch die Flimmerkiste abzuschalten und stattdessen Commodore Free zu lesen, kann ja kein Fehler sein.

Aus dem Inhalt von Heft 64:

* Editorial* Commodore Free E-Cover Tape #1
* NEWS
- BBC: 30 Years of the C64
- Flimsoft Reveal Working Preview
- Fifteen 3D Game Released
- PDXCUG.org Meeting
- Tortured Hearts RPG Game
- More CommVEx Photos
- New VIC-20 Website Opens
- Cubase64
- Comet+ Internet Modem/Disk Drive
- Greenrunner/Redrunner/Retroskoi+
- AmiSystemRestore
- Individual Computers
- Hollywood Player 5.1 for Android
- Leaderboard Collection
- SID-Wizard 1.0 RC
* C64 - The Journey Continues
* Commodore C-64 Special Edition
* Commodore 64 Monitors
* Lost In The CLOUDs
* First Computer or The Evolution of a Commodore Addict
* My Early C64 Memories
* Commodore 64 And Versions
* Review: Knight n Grail
* The Making Of Soulless
* [Mini] Game Reviews Corner
* In Review: The SD2IEC
* C64 Absolute Beginners Guide
* Writing About The Commodore 64
* The VC 314 - Raspberry PI in a C64
* Commodore 64
Veröffentlicht unter Mags | Hinterlasse einen Kommentar

Video von der Classic Computing 2012

Wer, wie leider auch ich, die diesjährige Classic Computing (CC 2012) des Vereins zum Erhalt klasischer Computer e.V am letzten Wochenende in Lorsch verpasst hat, kann sich immerhin im Forum64 einen auf der Veranstaltung gedrehten Film (auch auf YouTube) und diverse Bilder ansehen. Das macht den Schmerz des „nicht dabeigewesen seins“ zwar noch größer, steigert aber auch die Vorfreude auf die CC 2013.

Video von der CC 2012 auf YouTube

Nachtrag 02.10.2012:
Weitere Bilder gibt es auf Lust-auf-Nostalgie.de

Veröffentlicht unter Events | Hinterlasse einen Kommentar