PROTECT (SBX)

Aus C64-Wiki
Zur Navigation springenZur Suche springen
PROTECT (SBX)
Syntax: PROTECT [<Programmname>] [,<Gerätenummer> [,<Sekundäradresse>]]
Parameter
<Programmname>: Zeichenketten-Ausdruck, der den Programmnamen enthält
<Gerätenummer>: numerischer Ausdruck im Wertebereich von 1 bis 255, Default = 1
<Sekundäradresse>: numerischer Ausdruck im Wertebereich von 0 bis 255
Einordnung
Typ: Anweisung
Kontext: Programmsicherheit
Aufgabe: Vor Analyse geschütztes Programm erzeugen
Abkürzung: keine
Token: $65 $62 (101 98)
Verwandte Befehle
Keine

Dieser Artikel beschreibt das Simons'-Basic-Extension-Schlüsselwort PROTECT.

Der Befehl PROTECT besitzt dieselbe Syntax wie SAVE und die Bedeutung der Parameter kann auch dort nachgelesen werden. Für Gerätenummer kommen 1 (Bandlaufwerk) sowie 8, 9, 10 oder 11 (Diskettenlaufwerk) in Frage.

PROTECT dient dazu, die Analyse eines Programms zu verhindern. Dazu sichert der Befehl das im BASIC-Speicher vorhandene Programm in einer geänderten Form auf einen Datenträger. Es muss nun absolut geladen werden mit der Sekundäradresse 1. Danach wird es automatisch ausgeführt aber nie beendet, sondern immer wieder neu gestartet. Drücken von RUN/STOP mit oder ohne RESTORE brechen das Programm nicht ab, sondern starten es neu. Dasselbe geschieht nach der Ausgabe einer Fehlermeldung.

PROTECT sollte im Direktmodus eingegeben werden. Danach wird der Bildschirm gelöscht und eine Meldung "SAVING .. " ausgegeben. Wenn alles fehlerfrei abläuft, ist nun das geschützte Programm auf dem Datenträger gesichert. Schließlich springt die PROTECT-Routine in den Direktmodus zurück.

Implementierung[Bearbeiten | Quelltext bearbeiten]

Der Programmschutz wird vor das originale BASIC-Programm in den Speicher gestellt und durch die von PROTECT aufgerufene SAVE-Routine mit gesichert. Die Zeicheneingabe-Routine (Vektor $0324-$0325) ist hier nach $0500, der BASIC-Start nach $0324 verschoben.

Im geschützten Programm liegen die zwei Teilbereiche für den Programmschutz bei $0500 bis inklusive $0512 sowie $0600 bis $0619.

Anmerkung: Das originale Programm lässt sich aus dem geschützen wiederherstellen. Dazu führt man einen Reset aus, z.B. mit einem Reset-Taster oder etwa beim Emulator Vice mit einem Soft-Reset. Wegen der Modulkennung übernimmt nun das Simons Basic Modul die Kontrolle. Mit dem Befehl OLD kann das originale BASIC-Programm, das im Wesentlichen unversehrt im Speicher ab $0801 liegt, wiederhergestellt werden. Da die Extension nach dem Reset nicht mehr aktiv ist, werden SBX-Befehle nicht korrekt gelistet. Das Programm kann aber gespeichert und dann mit einem neu gestarteten SIMONS BASIC 2 editiert werden.

Beispiele[Bearbeiten | Quelltext bearbeiten]

PROTECT "Programmname",8 sichert eine geschützte Version von "Programmname" auf das Diskettenlaufwerk #8.

PROTECT "Programmname",1 sichert eine geschützte Version von "Programmname" auf das Bandlaufwerk.