C 64/VC 20
Anwendung

Neuer Checksummer 64 — blitzschnell und kürzer

Der Checksummer überprüft jede eingegebene Basic-Zeile und erspart Ihnen deshalb eine langwierige Fehlersuche. Und neu ist der Checksummer, weil die Initialisierung zirka einhundertmal schneller ist als die alte.

Der Checksummer 64 ist ein kleines Maschinenprogramm, das, wenn es aktiviert ist, Sie sofort davon unterrichtet, ob Sie die jeweilige Programmzeile korrekt eingegeben haben.

  1. Tippen Sie den Basic-Lader sorgfältig ein. Es gibt zwei Versionen: Eine für den Commodore 64 und eine für den VC 20.
  2. Bevor Sie »RUN« eingeben, speichern Sie den Basic-Lader bitte erst ab, denn wenn Sie zum Beispiel einen Fehler bei den eingetippten POKE-Anweisungen gemacht haben, ist es möglich, daß der Rechner aussteigt. Heben Sie sich den abgespeicherten Checksummer 64 auf — Sie werden ihn immer wieder brauchen, wenn Sie ein Basic-Programm aus dem 64’er eintippen wollen.
  3. Nach Initialisierung des Maschinenprogramms ist der Checksummer 64 aktiviert. Er steht innerhalb des Betriebssystems und verbraucht kein einziges Byte Speicherplatz. Es sei hier für Interessierte gesagt, daß selbst alle Sprungvektoren unverändert bleiben, das Programm also mit einer Vielzahl von Programmier-Spracherweiterungen problemlos zusammenarbeitet. Achten Sie aber darauf, daß bestimmte Spracherweiterungen das hinter dem ROM liegende RAM für Hires-Grafiken benutzen. Wird zum Beispiel eine Hires-Grafik von Simons Basic aus angesprochen, so wird der Checksummer 64 zerstört.
  4. Wenn Sie den Checksummer 64 zwischenzeitlich nicht benutzen, können Sie ihn jederzeit mit »POKE 1, 55« desaktivieren. Auch durch Drücken der Run-Stop- und der Restore-Taste wird der Checksummer 64 desaktiviert. Wollen Sie, daß der Checksummer 64 auch noch nach Drücken dieser Tastenkombination erhalten bleibt, so geben Sie bei aktiviertem Checksummer 64 »POKE64982,53« ein. Der Checksummer 64 ist dann nur durch »POKE1, 55« abschaltbar.
    Wollen Sie den Checksummer 64 wieder einschalten, so geben Sie bitte »POKE 1, 53« ein.
    Das Maschinenprogramm bleibt solange erhalten, bis der Computer ausgeschaltet, oder wenn von anderen Programmen auf das hinter dem ROM liegende RAM zugegriffen wird.
  5. Eine Checksumme wird nur dann ausgegeben, wenn der Commodore 64 (VC 20) eindeutig erkennt, daß Sie eine Zeile, bestehend aus der Zeilennummer und zumindestens einem alphanumerischen Zeichen, eingegeben haben. Ansonsten reagiert der Commodore 64 normal.

Hinweis: Wenn Sie bei aktivertem Checksummer 64 ein Programm mit »LOAD« in den Speicher holen, wird auch eine Checksumme ausgegeben. Dies liegt jedoch an rechnerinternen Routinen und hat keine weitere Bedeutung, stellt insbesondere keine Gefahr für das geladene Programm dar, da alle Pointer richtig gesetzt werden.

Nach Eingabe von RUN wird zunächst einmal das ROM in das RAM des Commodore 64 verschoben, wonach der Basic-Interpreter modifiziert wird. Dadurch hat man den Vorteil, trotz einer zusätzlichen Routine das gesamte RAM des Rechners zur Verfügung zu haben. Nach ordnungsgemäßem Ablauf des Programms können Sie sofort mit Eingaben beginnen. Für Maschinensprache-Spezialisten: die Einschaltmeldungen des Rechners werden nur nach einem Reset generiert. Der Textbereich, in dem die Meldung steht, wird von dem erzeugten Maschinenprogramm überschrieben.

Alle veröffentlichten Listings sind mit einer Checksumme versehen, dieam Ende jeder Programmzeile steht. Diese Checksumme steht zwischen < und >. Sie wird beim Eintippen des Programms nicht mit eingegeben. Die Zahl zwischen den beiden Zeichen stellt lediglich eine Information für Sie dar. Wenn Sie diese Checksumme dennoch mit eintippen, werden Sie schnell bemerken, daß Sie etwas falsch gemacht haben. Bei aktiviertem Checksummer 64 wird nämlich nach Eingabe einer Basic-Zeile, die mit Return beendet wird, in die linke obere Bildschirmecke die Checksumme eingeblendet, die mit der Summe aus dem veröffentlichten Listing übereinstimmen muß. Ist das nicht der Fall, haben Sie die Zeile anders eingegeben, als sie im Listing dargestellt ist. Vergessen Sie also bitte nicht, daß die am Ende einer Zeile zwischen < und > stehende Prüfsumme nicht mit eingegeben werden darf.

Der Checksummer 64 ist so ausgelegt, daß er abhängig von der Zeilennummer und dem Text der Zeile eine Checksumme ausgibt. Beim Bilden dieser Checksumme werden Spaces (Leertaste) überlesen, was für Sie bedeutet, daß es egal ist, wieviel Leerzeichen Sie zwischen den Worten lassen, da sie für den Programmablauf ohnehin keine Bedeutung haben. Aber manchmal ist das richtige Setzen von Leerzeichen doch wichtig, besonders innerhalb von Strings (Zeichenketten), die gedruckt werden sollen. Seien Sie deshalb besonders genau bei Leerzeichen, die innerhalb von Anführungszeichen stehen, denn meistens ermöglichen nur die richtig gesetzten Spaces eine sinnvolle Textausgabe auf dem Bildschirm.

Beachten Sie auch, daß es durchaus erlaubt ist, Abkürzungen für die Commodore-Befehlswörter zu verwenden. So führt die Eingabe von »?« als Kurzschreibweise für »PRINT« nicht etwa zu einem Checksummen-Fehler, sondern wird korrekt verarbeitet und dementsprechend die Checksumme generiert. Zahlendreher werden allerdings nicht erkannt. Eine 320 in der DATA-Zeile ergibt also dieselbe Prüfsumme wie 230! Nachdem Sie ein Listing eingegeben haben, sollten Sie es aus Sicherheitsgründen vor dem Starten abspeichern. Sie brauchen hierfür jedoch nicht den Checksummer 64 zu desaktivieren.

Wichtiger Hinweis für alle Listings in unseren Heften!

Um Ihnen die Eingabe unserer Listings zu erleichtern, gibt es weder Steuerzeichen noch andere Grafikzeichen. 8ie werden ersetzt durch Klartext. In der Tabelle finden Sie die Erklärung der übersetzten Steuerzeichen.

Beispiel 1:

In einem Listing sehen Sie folgende Zeile:

Dann dürfen Sie weder die geschweiften Klammern eintippen (es gibt sie eh nicht auf der Tastatur) und auch nicht die Wörter CLEAR, 13SPACE, RVSON oder RVOFF, sondern Sie müssen die diesen Wörtern zugeordneten Tasten drücken. In der Tabelle sehen Sie zum Beispiel für
CLEAR = Shift-Taste und 2. Taste ganz rechts oben.

Gemeint ist also, daß Sie anstelle des Wortes CLEAR die Taste CLR/HOME drücken müssen, gefolgtvon 13maligem Betätigen der Leertaste (13SPACE) und so weiter. Auf Ihrem Bildschirm erscheint dann als erstes ein revers dargestelltes Herz. Entsprechendes gilt für alle anderen Wörter innerhalb der geschweiften Klammern.
Beispiel 2:

In manchen Listings tauchen ganz seltsame unterstrichene und manchmal auch überstrichene Zeichen auf, zum Beispiel:

Das unterstrichene U bedeutet, daß Sie die Shift-Taste und die Taste U drücken müssen.

Der überstrichene Stern bedeutet, daß Sie die Commodore-Taste und die Taste mit dem Stern drücken müssen. Das Zeichen davor ist nicht etwa ein unterstrichenes kleines f, sondern ein unterstrichenes Pfund-Zeichen (Sie drücken deshalb die Shift-Taste und die 3. Taste oben rechts).

Also, unterstrichen bedeutet Shift-Taste und den entsprechenden Buchstaben (oder Zeichen), überstrichen bedeutet die Commodore-Taste und den entsprechenden Buchstaben (oder Zeichen). Auf dem Bildschirm sollten Sie dann natürlich die zugehörigen Grafik-Zeichen sehen.

Die beiden Programm-Zeilen von oben sehen später (auf dem Drucker oder ähnlich auf dem Bildschirm) so aus:

Checksummer VC 20

Der Checksummer VC 20 ist im Prinzip genauso aufgebaut wie der Checksummer 64. Da beim VC 20 jedoch nicht die Möglichkeit besteht, das ROM softwaremäßig zu modifizieren, mußte ein anderer Weg als beim Commodore 64 gewählt werden, um die Checksumme zu generieren.

In Ihrer Funktionsweise unterscheiden sich der Checksummer VC 20 und der Checksummer 64 nicht. Es gelten folgende Sonderregelungen bei der Benutzung des Checksummer VC 20:

Achtung: Nehmen Sie keine Kassetten-Operationen vor, wenn der Checksummer VC 20 eingeschaltet ist. Da das Betriebssystem den Kassettenpuffer mit Daten belegt, kann der Checksummer VC 20 überschrieben werden, was zur Folge hat, daß sich der Computer bei aktiviertem Checksummer VC 20 »aufhängt«. Wollen Sie deshalb ein Programm auf (von) Kassette abspeichern (laden), so müssen Sie erst den Checksummer VC 20 abschalten (SYS 58459).

Daraufhin kann der Kassettenpuffer mit Daten überschrieben werden, ohne daß der Computer »aussteigt«.

Als Sicherung wird bei der Initialisierung geprüft, ob das zuletzt angesprochene Peripherie-Gerät der Kassettenrecorder war. Ist das der Fall, so werden die Betriebssystemroutinen LOAD und SAVE für die Benutzung gesperrt. Der Rechner meldet bei Aufruf einer dieser beiden Routinen READY, ohne weitere Aktionen durchzuführen. Diese Sicherung kann man nach der Tipparbeit aufheben, wenn man den Checksummer VC 20 mit SYS 58459 abschaltet. Dadurch wird der Kassettenpuffer für andere Daten freigemacht. Weiterhin wird dann durch gleichzeitiges Drücken der Tasten »Run-Stop & Restore« erreicht, daß die Betriebssystemroutinen LOAD und SAVE wieder eingerichtet werden.

Sie können die Programme auch weiterhin ohne den Checksummer eintippen.

(F. Lonczewski/gk)
CTRL steht für Control-Taste, so bedeutet [CTRL-A], daß Sie die Control-Taste und die Taste »A« drücken müssen. Im folgenden steht:
[DOWN] Taste neben rechtem Shift, Cursor unten
[UP] Shift-Taste & Taste neben rechtem Shift, Cursor hoch
[CLEAR] Shift-Taste & 2. Taste ganz rechts oben
[INST] Shift-Taste & Taste ganz rechts oben
[HOME] 2. Taste von ganz rechts oben
[DEL] Taste ganz rechts oben
[RIGHT] Taste ganz rechts unten
[LEFT] Shift-Taste & Taste unten rechts
[SPACE] Leertaste
[F1] grauer Tastenblock rechts
[F3] grauer Tastenblock rechts
[F5] grauer Tastenblock rechts
[F7] grauer Tastenblock rechts
[F2] grauer Tastenblock rechts & Shift
[F4] grauer Tastenblock rechts & Shift
[F6] grauer Tastenblock rechts & Shift
[F8] grauer Tastenblock rechts & Shift
[RETURN] Shift-Taste & Return
[BLACK] Control-Taste & 1
[WHITE] Control-Taste & 2
[RED] Control-Taste & 3
[CYAN] Control-Taste & 4
[PURPLE] Control-Taste & 5
[GREEN] Control-Taste & 6
[BLUE] Control-Taste & 7
[YELLOW] Control-Taste & 8
[RVSON] Control-Taste & 9
[RVOFF] Control-Taste & 0
[ORANGE] Commodore-Taste & 1
[BROWN] Commodore-Taste & 2
[LIG.RED] Commodore-Taste & 3
[GREY 1] Commodore-Taste & 4
[GREY 2] Commodore-Taste & 5
[LIG.GREEN] Commodore-Taste & 6
[LIG.BLUE] Commodore-Taste & 7
[GREY 3] Commodore-Taste & 8
Wenn Sie sich erst einmal an die in Klartext geschriebenen Steuerzeichen gewöhnt haben, werden Sie den Vorteil dieser Schreibweise erkennen. Der zu dem jeweiligen Steuerzeichen gehörende Klartext ist so verfaßt, daß Sie leicht die Taste beziehungsweise die Tastenkombination finden, die Sie drücken müssen.
Die Steuerbefehle im Klartext
10 rem *******************************
20 rem *                             *
30 rem *       checksummer 64        *
33 rem *                             *
36 rem *       (version  2.0)        *
40 rem *                             *
50 rem *           64'er             *
60 rem *                             *
70 rem *        commodore 64         *
80 rem *                             *
90 rem *******************************
100 print"{clr}             {rvon}checksummer 64{rvof}"
110 print
121 sa=820:fori=satosa+6:reada:pokei,a:nexti
122 data133,95,134,96,76,191,163
130 poke88,0:poke89,192:poke90,0:poke91,192:poke780,0:poke781,160:syssa
140 poke88,0:poke89,0:poke90,0:poke91,0:poke780,0:poke781,224:syssa
150 poke1,53:poke42289,96:poke42290,228
160 fori=58464to58554:reada:pokei,a:nexti
190 print"{down}{down}{down}{down}         checksummer aktiviert."
200 print"{down}{down}ausschalten : poke1,55"
210 print"{down}anschalten  : poke1,53":new
320 data160,2,169,0,133,2,177,95
330 data240,15,201,32,208,3,200,208
340 data245,24,101,2,133,2,76,110
350 data228,192,4,48,241,198,214,165
360 data214,72,162,3,169,32,157,1
370 data4,189,183,228,32,210,255,202
380 data16,242,166,2,169,0,32,205
390 data189,169,62,32,210,255,104,133
400 data214,32,108,229,169,141,32,210
410 data255,76,128,164,92,72,32,201
420 data255,170,104,144,1,138,96,9
430 data60,18,19
Der Checksummer für den C 64
0 rem****************
1 rem*              *
2 rem* checksummer  *
3 rem* version vc20 *
4 rem*              *
5 rem*              *
9 rem****************
10 print"{clr}   checksummer  vc-20 "
11 print:print:print
12 print"einen moment, bitte..."
13 fori=827to993:gosub21:pokei,a
14 ps=ps+a+1:nexti
15 ifps<>20612thenprint"{down}pruefsummenfehler !":end
16 sys955:print"checksummer aktiviert."
17 print"an :sys955"
18 print"{down}aus:sys58459, bei cas-    sette zusaetzlich     run/stop & restore"
19 print"{down}bei aktiviertem check-summer kein";
20 print" cassetten-betrieb (load, save)  erlaubt!":new
21 reada$:iflen(a$)<>2thenprint"tippfehler in zeile"peek(63)+peek(64)*256:end
22 a1=asc(a$):a2=asc(right$(a$,1))
23 ifa1<48ora1>57thenifa1<65ora1>70then30
24 ifa2<48ora2>57thenifa2<65ora2>70then30
25 ifa1>64thena1=a1-55:goto27
26 ifa1<58thena1=a1-48
27 ifa2>64thena2=a2-55:goto29
28 ifa2<58thena2=a2-48
29 a=a1*16+a2:return
30 print"ungueltiger hexcode in zeile"peek(63)+peek(64)*256:end
31 data 20,5f,03,86,7a,84,7b,20
32 data 73,00,aa,f0,f3,a2,ff,86
33 data 3a,90,0a,a2,00,86,ff,20
34 data 79,c5,4c,e1,c7,a2,01,86
35 data ff,4c,9c,c4,a6,ff,e0,01
36 data f0,03,4c,60,c5,a0,02,a9
37 data 00,85,fe,b1,5f,f0,0f,c9
38 data 20,d0,03,c8,d0,f5,18,65
39 data fe,85,fe,4c,76,03,c0,04
40 data 30,f1,c6,d6,a5,d6,48,a2
41 data 03,a9,20,9d,01,04,bd,b7
42 data 03,20,d2,ff,ca,10,f2,a6
43 data fe,a9,00,20,cd,dd,a9,3e
44 data 20,d2,ff,68,85,d6,20,87
45 data e5,a9,8d,20,d2,ff,a2,00
46 data 86,ff,f0,ae,09,3c,12,13
47 data a9,3b,8d,02,03,a9,03,8d
48 data 03,03,a5,ba,c9,01,d0,10
49 data a9,74,8d,30,03,8d,32,03
50 data a9,c4,8d,31,03,8d,33,03
51 data ad,88,02,8d,90,03,60
Der Checksummer für den VC 20
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →