Nikolaus Heusler Archiv

Erschienen in 64'er Magazin, Ausgabe 12/1993 · Originaldatei: 12_93.TXT

Hinweis: Dies ist das an die Redaktion eingereichte Manuskript, nicht der gedruckte Endtext. Layout, Bildunterschriften, Korrekturen und Kürzungen der Redaktion können in der veröffentlichten Fassung abweichen.

Zeitschrift64'er
Ausgabe12/93
RubrikLeserforum
AutorNicki Heusler
ReaktorArnd Wängler
Datum21.09.1993

Leserforum 12/93

Sicherheitskopie für GEOS

Es wurden schon mehrere Versionen zur Schaffung von GEOS-Boot-Sicherheitskopien mit Hilfe eines Freezers veröffentlicht, zuletzt in 64'er 8/93. Alle hatten den Nachteil, daß sie einen endgültigen Start nur mit einem SYS-Befehl auslösen. Ich vermeide dies mit folgender Lösung: Rechner einschalten und GEOS von der Systemdisk booten. Sofort »Konfigurieren« doppelklicken und »Kein Laufwerk« anwählen. Der Aufforderung, das/die Laufwerk(e) abzuschalten, folgen. Durch Klick auf »OK« bestätigen. Formatierte Leerdiskette einlegen, Freezer aktivieren, Laufwerk wieder einschalten und (bei Verwendung der Final Cardridge) mit FDISK speichern. Disk nach GEOS konfigurieren und Desktop nachladen.

Nach dem Laden und Starten von FC wird -FC nachgeladen, GEOS meldet sich im Konfigurierstatus. Alles weitere erfolgt bereits mit der Maus oder dem Joystick. Legen Sie die Konfiguration fest und klicken auf »Datei verlassen«. Der Desktop meldet sich. Da sich das Modul nur nach dem Einschalten des Rechners mit seinem Desktop meldet, läßt sich GEOS nur mit Maus oder Joystick aktivieren. Mehrfache Tests bestätigten die Sicherheit dieses Verfahrens ohne Systemfehler.

Lothar Müller, 15377 Waldsieversdorf

Grafiken in Basic speichern

Ich benutze folgende Routine, um Grafik in einem Basicprogramm auf Diskette zu speichern:

1000 OPEN 1,8,1,"GRAFIK,S,W"
1010 FOR X=8192 TO 16383
1020 PRINT#1,PEEK(X)
1030 NEXT X
1100 CLOSE 1

Dabei wird jedoch eine Datei erzeugt, deren Länge (ohne Farbinformation) den auf Diskette zur Verfügung stehenden Speicherplatz überschreitet. Was habe ich falsch gemacht?

Matthias Gärtner, 01979 Lauchhammer-Süd

Die vorgeschlagene Routine enthält noch einige Fehler, die wir an dieser Stelle der Reihe nach besprechen.

In Zeile 1000 öffnen Sie eine sequentielle Datei zum Beschreiben. Aus technischen Gründen (damit das Grafik-Bild dann auch von anderen Programmen geladen werden kann) sollten Sie dafür allerdings lieber eine PRG-Datei verwenden. Außerdem empfiehlt es sich, als Sekundäradresse eine 2 zu schreiben. Die Zeile lautet also korrekt:

$li:1000 OPEN 1,8,2,"GRAFIK,P,W"

Der größte »Wurm« ist in Zeile 1020 zu finden. Sie lesen hier jede Speicherzelle mit PEEK aus und schreiben deren Inhalt direkt als Zahl auf Diskette. Jede Zahl besteht aus maximal drei Ziffern, angeführt von einem Leerzeichen. Da diese Zeile keinen Strichpunkt enthält, schreiben Sie nach jeder Zahl noch ein RETURN auf Diskette, macht also maximal fünf Bytes pro Speicherzelle. Bei 8192 Zellen ergibt das eine Datei mit 40960 Bytes oder 162 Blocks. Viel zu lang für ein Grafikbild! Üblich ist, daß man solche Speicherinhalte nicht numerisch als Zahlen. sondern direkt als Bytes auf Diskette schreibt. In dieser Form speichert beispielsweise auch der Basic-Interpreter Ihre Programme. Dazu müssen Sie die gelesenen Werte aus den Speicherzellen mit der CHR$-Funktion in Zeichen wandeln. Setzen Sie außerdem einen Strichpunkt in diese Zeile, damit nicht nach jedem Byte ein CR eingefügt wird. Jedes Byte der Grafik belegt jetzt nur ein Byte auf Diskette, das File wird damit ca. 32 Blocks groß. Korrigieren Sie Zeile 1020:

1020 PRINT#1,CHR$(PEEK(X));

Wußten Sie, daß die Grafik zwar den Bereich von 8192 bis 16383 belegt, der sichtbare Bereich aber schon bei 16191 endet? Durch entsprechende Anpassung der Schleife in Zeile 1010 sparen Sie einen Block auf Diskette!

1010 FOR X=8192 TO 16191

Jede PRG-Datei sollte auf Diskette mit einer Startadresse versehen werden. Ihr Grafikbild liegt im Speicher ab 8192, die Zerlegung dieser Zahl in High- und Lowbyte ergibt LOW=0 und HIGH=32. Schreiben wir diese beiden Bytes also ganz am Anfang in die Datei:

1005 PRINT#1,CHR$(0)CHR$(32);

Vergessen Sie auch hier bitte nicht CHR$ sowie den Strichpunkt am Zeilenende! Wenn Sie alle diese Hinweise beherzigen, werden Sie mit einer Routine belohnt, die auf Diskette ein »normgerechtes« File erzeugt, das Sie ohne weiteres mit jedem beliebigen Grafikprogramm (HI-EDDI, Printmaster, OCR-Art-Studio, und so weiter) ganz normal einlesen und bearbeiten können.

Das Laden einer derart gespeicherten Grafik erfolgt übrigens mit folgender Routine:

2000 OPEN 2,8,2,"NAME,P,R"
2010 GET#2,A$:GET#2,A$:REM Startadresse überlesen
2020 FOR X = 8192 TO 16191
2030 GET#2,A$:A=ASC(A$+CHR$(0))
2040 POKE X,A
2050 NEXT X
2060 CLOSE 2

Der letzte Befehl in Zeile 2030 ist notwendig, da das Diskettenlaufwerk beim Lesen eines Nullbytes einen Leerstring an den C 64 sender, dieser von einem Leerstring aber keinen ASC-Code berechnen kann (will).

Nikolaus Heusler, XXXXX XXXXXXX

Farblos

Seit einiger Zeit besitze ich einen Star LC 100 Colour. Leider habe ich bisher nicht herausgefunden, wie man einen farbigen Ausdruck erzeugt. Wer kann mir mitteilen, wie der Drucker angepaßt werden muß?

Adolf Eid, 50169 Kerpen

Geos goes LC 100

Wer kennt den Druckertreiber für Geos und den Star LC 100 Colour mit Wiesemann-Interface (seriell)?

David Berger, 48599 Gronau

Unbekannt

Hilfe! Ich besitze den Drucker Seikosha GP-100 VC, leider ohne Unterlagen dazu. Wer kennt diesen Drucker und kann mir weiterhelfen?

Sebastian Fahrenkrog, Wiesbaden

Out of Stifte Error

Seit Jahren betreibe ich einen Commodore-Plotter VC 1520. Leider gibt es im Raum Freiburg keine geeigneten Farbstifte mehr. Weiß ein Leser, wo es diese Stifte noch gibt?

Eberhard Fuss, 79114 Freiburg

Nochmals: PC—Monitor

Die Frage nach dem Anschluß eines PC-Monitors an den C 64 von Rudi Möller in 64'er 3/93 hat offenbar doch mehrere Leser bewegt. Vielen Dank für die vielen Antworten! Hier sind noch zwei:

Der Anschluß des C 64 an einen PC-Monitor läßt sich mit Hilfe eines Konverters herstellen. In der Zeitschrift »ELV«, Ausgabe Nr. 60 findet sich ein solcher S-VHS nach RGB-Konverter. In Elektor 9/90 wurde ein Konverter S-VHS/FBAS nach RGB veröffentlicht. Die Ausgänge des C 64 (Luminance und Chrominance) entsprechen einem S-VHS-Signal. Der Konverter bastelt daraus die PC-tauglichen RGB-Signale. Am besten eignet sich natürlich ein Multisync-Monitor, wie man ihn für ca. 200 Mark (Bausatz 100 DM) im Fachhandel bekommt.

Thomas Quiram, 4352 Herten

Ich habe die RGB-Ausgangsbuchse meines C 128 nach folgender Verbindung mit dem Scart-Eingang eines Fernsehers verbunden:

Pin 1 RGB nach Pin 17 Scart (Masse)
Pin 7 RGB nach Pin 20 Scart (Monochrome Video)
@4t:Das klappt im 80 Zeichen-Modus ausgezeichnet, allerdings nur zweifarbig. Für Text- und Datenverarbeitung reicht es jedoch. Ein geeignetes Kabel liefert auch die Firma Conrad Electronic in Hirschau (Bestellnummer 980935-66, Preis: DM 39,-)

Thomas Petrasch, 31840 Hess. Oldendorf

Videofilme beschneiden

Gibt es für den C 64 Soft- und/oder Hardware zum Schneiden und Bearbeiten von Videofilmen?

Georg Voggenreiter, 83661 Lenggries

Die Firma »Scanntronic« in 85604 Zorneding bietet seit einiger Zeit ein Genlock-Interface für den C 64 zum Preis von DM 848,- an. Das Interface, das wir in einem Test als gut bezeichneten, erlaubt das effektive Nachberabeiten von Videofilmen, indem Sie Computertexte und -grafiken in den laufenden Videofilm einblenden. Ähnliches ist auch mit dem Programm Videoprofi« möglich, erhältlich für DM 248,- ebenfalls bei Scanntronic. Im Sonderheft 67 wurde ab Seite 38 die Bauanleitung für eine Schnitt-Steuerung veröffentlicht, welche eine Art programmierbare Fernbedienung für den Videorekorder darstellt.

Nikolaus Heusler, XXXXX XXXXXXX

Kontrolle ist besser

Zur Anfrage »Kontrolle ist besser« in Ausgabe 10/92:

Auch ich hatte die beschriebenen Probleme mit dem Laufwerk 1541II. Oft meldete sich die Floppy nach einem LOAD-Befehl nur noch mit »SEARCHING FOR...«, das System stürzte danach ab. Als Fehlerursache ermittelte ich das Netzteil der Floppy. Die 5 Volt stiegen bis auf etwa 12 Volt an. Das Laufwerk hat diesen Spannungsanstieg fehlerfrei überstanden. Mit einem neuen Netzteil treten die Probleme nicht mehr auf.

Dietmar Kaplick, 7503 Kolkwitz

Ganz genau!

Zur Antwort »Basic-Interpreter arbeitet ungenau« in 64'er 12/92

Leider ist der Vorschlag, mit Integer-Variablen zu arbeiten, nicht die Lösung des Problems. Folgende Umformung des Beispielprogramms soll dies verdeutlichen:

10 A=66.64
20 FOR B=1660 TO 1670
30 X=A/(B/100)
40 IF X=4 THEN PRINT "X HAT DEN WERT 4"
50 NEXT

Wenn X den Integerwert 4 annimmt, dann soll Zeile 40 ausgeführt werden. Das heißt nicht, daß X vorher in einen Integerwert umgeformt werden darf. Schließlich bin ich auf eine andere Lösung gekommen:

40 IF VAL(STR$(X)) = 4 THEN ...

Fazit: Um diesen heimtückischen Fehler auszumerzen, sollten alle IF-Abfragen, die sich auf zuvor berechnete Zahlenwerte beziehen, diesen VAL/STR$-Trick benutzen.

Joachim Conrad, 5508 Hermeskeil

Zak Mc Cracken

Wo sind die »Words of Power«? Wie bezwingt man den Vogel am Fulterplatz? Wie kommt man in die Statue im Lima?

Alessandro Hass, 24321 Luetjenburg

Zeichensätze laden

Ich habe mit dem »Final MON 3.2« einen Zeichensatz entwickelt, der im Speicherbereich von $3000 bis $3fff liegt und auf Diskette gespeichert. Das File ist 17 Blocks lang. Der Versuch, den Zeichensatz in eigenen Programmen weiterzuverwenden, verlief im Sand. Folgende Zeilen sollen den Font laden und aktivieren:

490 LOAD "BSS.CS",8
500 POKE 53272, (PEEK(53272)AND240)+12

Alles nimmt seinen normalen Lauf, bis der Zeichensatz geladen wird. Der Computer lädt den Font wie ein Basicprogramm und versucht, ihn zu startet, was natürlich nicht in meinem Sinn ist. Wie lade ich den Zeichensatz so, daß ich mit ihm arbeiten kann?

Manuel Schembach, 45279 Essen

Ihr Vorschlag hat nur noch drei Schwächen. Der Zeichensatz darf nicht »relativ« in den Basicspeicher geladen werden, sondern muß absolut an die Position gebracht werden, von der er auch gespeichert wurde. Dies erreichen Sie durch Laden »,8,1«. Bei jedem Laden wird außerdem das steuernde Basicprogramm neu gestartet, daher sollten Sie den Zeichensatz gleich zu Beginn mit folgendem Befehl laden:

10 IF A=0 THEN A=1 : LOAD "BCC.CS",8,1
20 (weiter im Programm)

Beim ersten Laden wird A auf eins gesetzt. Nach Abschluß des Lade-Vorgangs startet das Programm neu, ohne jedoch die Variablen zu löschen. A hat also immer noch den Wert 1, der Ladebefehl wird nicht nochmal ausgeführt.

Außerdem empfiehlt es sich, den Speicherbereich, in dem der Zeichensatz sich befindet, gegen versehentliches Überschreiben durch das Basicprogramm zu schützen. Folgende Befehle reichen dafür:

15 POKE 56,48:CLR

Für Ihr Programm und die Variablen stehen jetzt noch 10239 Bytes zur Verfügung, das entspricht etwa 40 Blocks auf Diskette.

Nikolaus M. Heusler, XXXXX XXXXXXX

Mutant?

Ich habe kürzlich auf dem Typenschild unter meinem Computer die Bezeichnung »C-64 C, made in hongkong« gelesen. Hat das zweite »C« etwas zu bedeuten? Ist mein Computer hardwaremäßig »anormal«? Ich besitze einen älteren C 64 (kein Brotkasten) mit roter Power-Leuchte.

Klaus-Ekkehard Fischer, Leipzig

Keine Sorge, Ihr C 64 ist nicht anormal. Wir vermuten, daß Commodore bei dieser Serie das »C« gewählt hat, weil es sich um die dritte Weiterentwicklung des Dauerbrenners C 64 handelt. Intern ist er etwas anders aufgebaut als ein alter C 64, als Anwender merken Sie davon aber nichts.

Nikolaus M. Heusler, XXXXX XXXXXXX

MSE V2.1 für Datasette

Frage von Andreas Selas in 64'er 3/93: Wie läuft der neue MSE mit Datasette?

Der MSE V2.1 ist ebenso wie sein Vorgänger V2.0 auch für den Betrieb mit Tape geeignet. Klicken Sie dazu im Hauptmenü so oft auf den Punkt »Speicher«, bis dahinter eine »1« steht. Diese Zahl steht für die Geräteadresse der Datasette.

Klaus Reimer, 5464 Asbach

Zeigt her Eure Füße

Ich suche ein Textverarbeitungsprogramm für den C 64, das Fußnoten automatisch am Ende der Seite plaziert, in dem sie im Fließtext vorkommt, so daß bei Texteinfügungen keine Anpassung aller nachfolgenden Fußnoten erforderlich ist. Gibt es ein solches Programm für den C 64?

Markus Pein, 31134 Hildesheim

Neue Farben

Sehr viele Antworten sind auf die Frage von Mirco Krause in Ausgabe 9/93 eingegangen, der wissen wollte, in welcher Speicherzelle des C 64 Betriebssystems die Einschaltfarbe (hell- und dunkelblau) stehen. An alle Profis, die sich dieser Problematik angenommen haben, ein herzliches Dankeschön! Hier stellvertretend eine Antwort:

Zur Änderung der Cursorfarbe geben Sie in Adresse $e535 den neuen Wert an. Ein Ausschnitt aus dem Maschinensprache-Code des Systems:

$e534 LDA #14  ; hellblau
$e536 STA 646  ; als Cursorfarbe

Durch Modifizierung der Speicherzelle $e535 (dezimal 58677) wird der Parameter des LDA -Befehles verändert.

Zur Änderung der Rahmen- und Hintergrundfarbe nach dem Einschalten müssen Sie zwei Werte in einer Tabelle verändern:

Adresse $ecd9 (dez. 60633) enthält normalerweise 14 (Rahmenfarbe hellbau), Adresse $ecda (dez. 60634) enthält normalerweise 6 (Hintergrundfarbe dunkelbau). In allen drei Fällen müssen für die Farben die im Handbuch zu findenden Codenummern eingesetzt werden. Im Falle von Mirco Krause, der grüne Schrift auf schwarzem Hintergrund und schwarzen Rahmen wünscht, müßten die Speicherzellen also mit folgenden Werten belegt werden: $ecd9 = 0, $ecda = 0, $e535 = 5.

Bitte beachten Sie, daß diese Werte nicht einfach per POKE in die entsprechenden Speicherzellen geschrieben werden können. Es handelt sich dabei um ein ROM, also um einen Speicher, der zwar seinen Inhalt nach dem Ausschalten nicht verliert, der aber nicht verändert werden kann. Die Lösung: Das geänderte Betriebssystem müßte in ein Eprom vom Typ 2764 oder 27128 gebrannt werden, das dann anstelle des ROMs mit einem Adapter in den C 64 einbgebaut wird (siehe dazu auch »Wanted: Umschaltplatine« in diesem Leserforum).

Hagen Edlich, 06869 Coswig

Für Entwickler von Betriebssystemen könnten folgende Speicherzellen nützlich sein:

e1da (01) Default-Gerätenummer (LOAD ohne Angaben)
e1dc (00) Default-Sekundäradresse
e473...   Einschaltmeldung
e535 (0e) Cursorfarbe
ea3d (14) Cursor-Blinkgeschwindigkeit
eb1d (04) Cursor-Laufgeschwindigkeit
ecd9 (0e) Rahmenfarbe
ecda (06) Hintergrundfarbe
ece7...   Text nach Druck auf SHIFT RUN STOP
f0bd...   System-Meldungen
ff80 (03) Betriebssystem-Versionsnummer 0 oder 3

Angegeben sind jeweils die Adresse (hexadezimal), der Original-Inhalt sowie die Bedeutung. Die Angaben gelten für alle bekannten Versionen des Original-Betriebssystems.

Nikolaus M. Heusler, XXXXX XXXXXXX

Wanted: Umschaltplatine

Gibt es wirklich keine Firma mehr, die Betriebssystem-Adaptersockel oder -Umschaltplatinen für den C 64 vertreibt? Für Hinweise wäre ich sehr dankbar.

Malte Mundt, 31737 Rinteln

Geheimnisvoller Drucker MPS 1224 C

Schon etliche Male habe ich versucht, eine Font-Karte für meinen Commodore-Drucker MPS 1224 C zu erhalten. Leider ebenso erfolglos wie die Suche nach einem RAM-IC (IC 1) zur Erhöhung der Pufferkapazität. Könnte es sein, daß sich für diesen Drucker Schriftkarten von NEC einsetzen lassen?

Stephan Maier, 77855 Mösbach

Vorsicht beim VIS-ASS!

Trotz der hohen Versionsnummer besitzt der VIS-ASS noch immer mindestens zwei Fehler. Zum einen wird der indirekte JMP-Befehl JMP (LABEL) absolut assembliert. Um einen

JMP ($C000)

in das Programm einzubauen, empfiehlt es sich, stattdessen

£BY $6C, $00, $C0

zu verwenden. Zweitens wird der BVC-Befehl irrtümlicherweise als Dreibyte-Befehl erkannt, wodurch die interne Label-Verwaltung des Assemblers aus den Fugen gerät. Alle Label nach dem BVC stehen dann nämlich ein Byte zu weit hinten im Speicher. Ich empfehle, stattdessen den Vergleich umzudrehen und das korrekte BVS einzusetzen.

Klaus Reimer, 5464 Asbach