VERIFY

Aus C64-Wiki
Zur Navigation springenZur Suche springen
VERIFY
Syntax: VERIFY [<Programmname>] [,<Gerätenummer>] [,<Sekundäradresse>]
Parameter
<Programmname>: Zeichenketten-Ausdruck, der den Programmnamen enthält
<Gerätenummer>: numerischer Ausdruck im Wertebereich von 1 bis 255
<Sekundäradresse>: numerischer Ausdruck im Wertebereich von 0 bis 255
Einordnung
Typ: Anweisung
Kontext: BASIC-Editor
Aufgabe: Programm auf Datenträger mit jenem im Speicher vergleichen
Abkürzung: vE
Token: $95 (149)
Verwandte Befehle
LOAD, SAVE

Anmerkung: Dieser Artikel beschreibt den BASIC-Befehl VERIFY unter BASIC V2 des Commodore 64.


Der BASIC-Befehl VERIFY dient zum Verifizieren bzw. zum Vergleichen von Programmdateien (PRG), die mit dem BASIC-Befehl SAVE abgespeichert wurden, mit den Daten, die sich im RAM-Speicher des Commodore 64 befinden. Der Befehl kann im Direktmodus oder auch in BASIC-Programmen genutzt werden.

Programmname[Bearbeiten | Quelltext bearbeiten]

Um Programmdateien auf Diskette zu vergleichen, muss ein Programmname (Dateiname) angegeben werden, dabei können Jokerzeichen wie '*' oder '?' genutzt werden. Die Eingabe von VERIFY "0:*",8 bzw. VERIFY ":*",8 vergleicht mit der ersten Datei von Gerät Nr. 8 und Laufwerk 0 (Selektor im Falle von Doppellaufwerken). Darüber hinaus kann mit VERIFY "ABC*",8 die erste Datei beginnend mit ABC ausgewählt und verglichen werden. Ist der Programmname zwar vorhanden, aber leer, kommt es zur Ausgabe der Fehlermeldung ?MISSING FILE NAME ERROR, es sei denn bei einer Datasette, wo der Dateiname auch leer sein kann oder sämtliche Parameter fehlen können. Hier wird dann die nächste am Band befindliche Datei herangezogen.

Gerätenummer[Bearbeiten | Quelltext bearbeiten]

Mit der Gerätenummer wird bestimmt, ob ein Programm von Datasette (Gerätenummer 1), Diskette (Gerätenummer 8-30: üblicherweise entspricht 8 dem 1. Diskettenlaufwerk und 9 dem 2. Diskettenlaufwerk usw.) oder einem anderen Datenträger wie z.B. einer Festplatte eingelesen wird. Fehlt die Gerätenummer, so wird auf das im Betriebssystem (KERNAL) verankerte Standardgerät (beim originalen Commodore-Betriebssystem die Datasette) zugegriffen. Geräteadressen im Bereich von 4-62 führen für nicht vorhandene Geräte zur Fehlermeldung ?DEVICE NOT PRESENT ERROR. Werte 0, 2 und 3 rufen ein ?ILLEGAL DEVICE ERROR hervor, während Werte außerhalb des Bereichs 0 bis 255 mit der Fehlermeldung ?ILLEGAL QUANTITY ERROR abbrechen.

Sekundäradresse[Bearbeiten | Quelltext bearbeiten]

Die optionale Angabe des Arguments Sekundäradresse (Vorgabe ist 0, wenn nicht vorhanden) erlaubt mit dem Wert 1 ein (Maschinensprache-)Programm mit der in der Datei abgelegten Startadresse (= absolut gespeicherte Datei, siehe auch LOAD) zu vergleichen.

Intern öffnet VERIFY die jeweilige Datei vom Laufwerk (beim seriellen Zugriff) immer mit Sekundäradresse $60/96. Der Sekundäradressen-Parameter von VERIFY wird also dem Laufwerk nicht übermittelt und nur genutzt, um die Behandlung der Ladeadresse festzulegen.

Hinweise[Bearbeiten | Quelltext bearbeiten]

Bei der Datasette kann der Befehl VERIFY dazu verwendet werden, das Band unmittelbar nach dem zuletzt gespeicherten Programm zu positionieren, damit neue Daten gleich anschließend gespeichert werden können, ohne etwas zu überschreiben.
Während des Ladens von Programmen von Kassette wird der Bildschirm bei der originalen Commodore-Laderoutine abgeschaltet. Dies macht das Commodore-Betriebssystem beim Vergleichen auf Disketten oder von anderen Datenträgern nicht.

Während des Datenvergleichs wird im Direktmodus

SEARCHING FOR Programmname
VERIFYING

ausgegeben. Stimmen die Daten im RAM-Speicher mit den abgespeicherten Daten des angegebenen Programmnamens überein, folgt die Ausgabe einer Zeile mit OK. Bei fehlender Übereinstimmung wird die BASIC-Fehlermeldung ?VERIFY ERROR ausgegeben. Ein aus einem Programm aufgerufenes VERIFY bricht dabei den Programmlauf ab. In der Systemvariablen STATUS zeigt das gesetzte Bit 4 ebenso den VERIFY-Fehler an (zusätzlich zum sonst üblicherweise gesetzten Bit 6 für End-Of-File).

Die BASIC-Fehlermeldung ?FILE NOT FOUND ERROR wird ausgegeben, wenn der Dateiname des Programms nicht existiert oder es keine Programmdatei ist. Die Systemvariable ST kann spezifische Fehlerbits gesetzt haben und bei Diskettenlaufwerken weist der Fehlerkanal zusätzlich eine entsprechende Fehlermeldung auf.


Beispiele[Bearbeiten | Quelltext bearbeiten]

VERIFY

Vergleicht das erste Programm auf Datasette.

VERIFY "DATEINAME",8

Vergleicht das Programm von Diskette im Diskettenlaufwerk 8 mit dem im RAM-Speicher.

VERIFY "MASCHINENCODE",8,1

Vergleicht das Maschinencodeprogramm von Diskette im Diskettenlaufwerk 8 mit dem im RAM-Speicher an der auf der Diskette angegebenen Startadresse.

VERIFY "*",9

Vergleicht das erste Programm von Diskette im Diskettenlaufwerk 9 mit dem im RAM-Speicher.

VERIFY FILE$,1

Vergleicht das Programm der Zeichenkette FILE$ mit dem auf Datasette.

10000 REM UNTERPROGRAMM AUF DISKETTE SPEICHERN UND PRUEFEN, OB ALLES DA IST
10001 SAVE FILE$,8
10002 VERIFY FILE$,8
10003 RETURN

Dieses Unterprogramm speichert das gerade laufende Programm auf Diskette ab und vergleicht es unmittelbar darauf, ob es korrekt gespeichert wurde und bricht das Programm ab, falls dies nicht der Fall ist.