C 64/VC 20
Anwendung

Neuer Checksummer 64 — blitzschnell und kürzer

Das Programm Checksummer kennen die meisten unserer Leser bereits aus dem 64’er Sonderheft und den Ausgaben 1 und 2/85. 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 vonstatten geht als bei der alten Version.

Es gab eine riesige Resonanz auf den Checksummer und zwar ausschließlich positiv. Jedoch brauchte das Programm eine ganze Weile, bis es initialisiert war, eine Herausforderung für eine Unmenge von Lesern! Der nebenstehende Leserbrief setzt sich drastisch, aber nicht ganz so ernst gemeint, mit diesem Problem auseinander und gibt eine Lösung, die zirka einhundertmal schneller ist als die bisherige Version. Dieser Brief und der neue, schnelle Checksummer steht übrigens für eine ganze Reihe von Leserzuschriften, die auch entsprechende Verbesserungen eingeschickt haben.

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. Vergessen Sie nicht das Abspeichern vor dem Start (RUN)!
  3. Wenn Sie den Checksummer 64 zwischenzeitlich nicht benutzen, können Sie ihnjederzeit mit »POKE 1,55« desaktivieren. Auch durch Drücken der Run-Stop- und der Restore-Taste wird der Checksummer 64 desaktiviert.

Wollen Sie den Checksummer 64 wieder einschalten, so geben Sie bitte »POKE 1,53« ein.

Das Maschinenporgramm bleibt solange erhalten, bis der Computer ausgeschaltet, oder, wenn von anderen Programmen auf das hinter dem ROM liegende RAM zugegriffen wird.

Alle veröffentlichten Listings sind mit einer Checksumme versehen, die am 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 in < 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.

Hinweise zum Lesen von Listings

Die Listings haben sich ein wenig im Ausdruckformat verändert, um Ihnen das Eingeben von Programmen wesentlich zu erleichtern.

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 VC20:

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 Rechner 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 Rechner »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.

Viel Spaß beim Eintippen von Programmen mit dem neuen Checksummer!

(F. Lonczewski/gk)
Wenn Sie lesen drücken Sie
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
[ligred] 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.
|
0 rem****************
1 rem*              *
2 rem* checksummer  *
3 rem* version vc20 *
4 rem*              *
5 rem*  copyright   *
6 rem* oktober 1984 *
7 rem*              *
8 rem*f. lonczewski *
9 rem****************
10 print"{clr}  {rvon}checksummer  vc-20{rvof}"
11 print"{down} written october 1984    by f. lonczewski"
12 print"{down}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
  0 REM **************** 
  1 REM *              * 
  2 REM * CHECKSUMMER  * 
  3 REM * VERSION VC20 * 
  4 REM *              * 
  5 REM *  COPYRIGHT   * 
  6 REM * OKTOBER 1984 * 
  7 REM *              * 
  8 REM *F. LONCZEWSKI * 
  9 REM **************** 
 10 PRINT"{CLR,2SPACE,RVSON}CHECKSUMMER{2SPACE}VC-20{RVOFF}" 
 11 PRINT"{DOWN,SPACE}WRITTEN OCTOBER 1984{4SPACE}BY F. LONCZEWSKI" 
 12 PRINT"{DOWN}EINEN MOMENT, BITTE..." 
 13 FOR I=827 TO993:GOSUB 21:POKE I,A 
 14 PS=PS+A+1:NEXT I 
 15 IF PS<>20612 THENPRINT"{DOWN}PRUEFSUMMENFEHLER !":END 
 16 SYS 955:PRINT"CHECKSUMMER AKTIVIERT." 
 17 PRINT"AN :SYS955" 
 18 PRINT"{DOWN}AUS:SYS58459, BEI CAS-{SPACE,3SPACE}SETTE ZUSAETZLICH{5SPACE}RUN/STOP & RESTORE" 
 19 PRINT"{DOWN}BEI AKTIVIERTEM CHECK-SUMMER KEIN"; 
 20 PRINT" CASSETTEN-BETRIEB (LOAD, SAVE){2SPACE}ERLAUBT!":NEW 
 21 READ A$:IF LEN (A$)<>2 THENPRINT"TIPPFEHLER IN ZEILE"PEEK (63)+PEEK (64)*256:END 
 22 A1=ASC (A$):A2=ASC (RIGHT$ (A$,1)) 
 23 IF A1<48OR A1>57 THENIF A1<65OR A1>70 THEN30 
 24 IF A2<48OR A2>57 THENIF A2<65OR A2>70 THEN30 
 25 IF A1>64 THENA1=A1-55:GOTO 27 
 26 IF A1<58 THENA1=A1-48 
 27 IF A2>64 THENA2=A2-55:GOTO 29 
 28 IF A2<58 THENA2=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
|
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
 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,13SPACE,RVSON}CHECKSUMMER 64{RVOFF}" 
 110 PRINT 
 121 SA=820:FOR I=SA TOSA+6:READ A:POKE I,A:NEXT I 
 122 DATA 133,95,134,96,76,191,163 
 130 POKE 88,0:POKE 89,192:POKE 90,0:POKE 91,192:POKE 780,0:POKE 781,160:SYS SA 
 140 POKE 88,0:POKE 89,0:POKE 90,0:POKE 91,0:POKE 780,0:POKE 781,224:SYS SA 
 150 POKE 1,53:POKE 42289,96:POKE 42290,228 
 160 FOR I=58464 TO58554:READ A:POKE I,A:NEXT I 
 190 PRINT"{4DOWN,9SPACE}CHECKSUMMER AKTIVIERT." 
 200 PRINT"{2DOWN}AUSSCHALTEN : POKE1,55" 
 210 PRINT"{DOWN}ANSCHALTEN{SPACE,SPACE}: POKE1,53":NEW 
 320 DATA 160,2,169,0,133,2,177,95 
 330 DATA 240,15,201,32,208,3,200,208 
 340 DATA 245,24,101,2,133,2,76,110 
 350 DATA 228,192,4,48,241,198,214,165 
 360 DATA 214,72,162,3,169,32,157,1 
 370 DATA 4,189,183,228,32,210,255,202 
 380 DATA 16,242,166,2,169,0,32,205 
 390 DATA 189,169,62,32,210,255,104,133 
 400 DATA 214,32,108,229,169,141,32,210 
 410 DATA 255,76,128,164,92,72,32,201 
 420 DATA 255,170,104,144,1,138,96,9 
 430 DATA 60,18,19 
Der neue Checksummer für den Commodore 64
PDF Diesen Artikel als PDF herunterladen
Mastodon Diesen Artikel auf Mastodon teilen
← Vorheriger ArtikelNächster Artikel →