Prüfsumme

Aus C64-Wiki
Wechseln zu: Navigation, Suche

Eine Prüfsumme ist eine Hilfszahl innerhalb eines Computerprogramms, z.B. in einem BASIC-Programm in einer DATA-Zeile, um diese auf Fehlerfreiheit zu überprüfen, damit eingegebene Computerprogramme nach dem Abtippen fehlerfrei(er) funktionieren.

In Computerzeitschriften wurden z.B. Hilfsprogramme wie MSE für die fehlerfreie Eingabe von Maschinenspracheprogramme (Prüfsumme in jeder Eingabezeile) oder Checksummer für die fehlerfrei Eingabe von BASIC-Programmen (Prüfsumme bzw. Checksumme für jede BASIC-Zeile) veröffentlicht.

Insbesondere, wenn viele verschiedene, große Zahlenwerte über DATA-Zeilen für veränderte Zeichen, Musik, benutzte Sprites oder zum Generieren eines Maschinespracheprogramms können schnell Eingabefehler beim Abtippen eines Computerprogramms entstehen. Diese Fehler führen dann dazu, dass ein Programm nicht (ordnungsgemäß) läuft oder im schlimmsten Fall den Computer zum Absturz bringt.

Beispiele[Bearbeiten]

10 REM PRUEFSUMME EINER DATA-ZEILE
11 PS = 0
12 FOR X=1 TO 9: READ Z
13 PS = PS + Z
14 PRINT TAB(Z)SPC(Z*Z)Z
15 NEXT X
20 IF PS <> 45 THEN PRINT "FEHLER!" :END 
30 DATA 1, 9, 2, 8, 3, 7, 4, 6, 5

Die Prüfsumme befindet sich hier in der Variable PS und wird als feste Prüfsumme in der Zeile 20 abgefragt. Bei Unstimmigkeit wird das Programm abgebrochen.

10 REM PRUEFSUMME MEHRERER DATA-ZEILEN
11 CLR: PRINTCHR$(147)"LESE DATEN..."
20 FOR Y=0 TO 4: P2 = 0: READ P1
21 FOR X=0 TO 7: READ Z
22 P2 = P2 + Z: Z$ = Z$ +CHR$(Z): POKE 53280,Z
23 NEXT X
24 IF P2 <> P1 THEN PRINT "FEHLER IN DATA-ZEILE";100+Y: END
25 PRINT "DATA-ZEILE";100+Y;"OK"
26 NEXT Y
50 PRINT CHR$(147)CHR$(14)SPC(42)Z$: POKE 53280,14
100 DATA 677, 196, 65, 83, 32, 195, 54, 52
101 DATA 585, 45, 215, 73, 75, 73, 32, 72
102 DATA 635, 69, 73, 83, 83, 84, 32, 211
103 DATA 614, 73, 69, 32, 215, 73, 76, 76
104 DATA 488, 75, 79, 77, 77, 69, 78, 33

Die Prüfsumme jeder DATA-Zeile befindet sich am DATA-Zeilenanfang und wird in der Variable P1 eingelesen und mit der Summe jeder DATA-Zeile, die in der Variable P2 abgelegt wird, vergliechen.