Interrupt-Vektoren in DOS sichern

Wenn Sie häufig speicherresidente Programme testen, kann es nützlich sein, den aktuellen Zustand des PCs z. B. kurz nach dem Systemstart »einzufrieren«. VECT.DEB speichert den momentanen Stand der Interruptvektoren in einer Datei ab, um ihm bei Bedarf wieder restaurieren zu können. Das Programm schreibt den Speicherbereich 0:0 bis 0:400h für die Interrupt-Vektoren 0 bis FFh in die Datei \VECTORS, wenn Sie einen beliebigen Parameter angeben, vorzugsweise »S« für »Sichern«. Ein Aufruf ohne Parameter, lädt die Vektoren aus eben dieser Datei und legt sie wieder im erwähnten Speicherbereich ab. Die Routinen zum Laden und Speichern sind übrigens praktischerweise in einem einzigen Algorithmus zusammengefaßt.

Beabsichtigen Sie z.B., nur vorübergehend neue speicherresidente Programme zu installieren, sichern Sie den aktuellen Systemstatus mit der Eingabe »VECT S«. Die Interruptvektoren landen wie bereits erwähnt in der Datei »\VECTORS«. Wollen Sie die Installation wieder rückgängig machen, geben Sie »VECT« ein. Die residenten Programme bleiben physikalisch zwar im Speicher, zeigen aber keine Wirkung mehr, weil durch sie verbogene Interrupt-Vektoren wieder restauriert werden. Ohne VECT müßten Sie das System neu starten, falls Sie kein anderes Utility zum Löschen speicherresidenter Programme haben. Der Name der Datei, in welche die Interrupt-Vektoren gesichert werden, steht übrigens im hinteren Teil des Listings. Sie können ihn ohne weiteres verändern, da wir die Programmlänge standardmäßig auf 256 Bytes gesetzt haben. Auf der Platte belegt jede Datei sowieso mehr Platz, sodaß dies keine Nachteile mit sich bringt. Sie können die Tabelle also z.B. auch im Verzeichnis \TMP sichern.

Name: VECT.DEB
Funktion: Speichert aktuellen Stand der Interrupt-Vektoren in einer Datei, um sie bei Bedarf wieder zu laden.
Übersetzung: DEBUG <VECT.DEB
Prüfsumme: 7C46
Anwendung: VECT ## = S: Vektoren speichern

ohne Parameter: Vektoren laden

Einschränkungen: ./.
A
XOR SI,SI           ;100
CMP By[80],0        ;102
JNZ 10C             ;107
MOV SI,100          ;109
MOV DX,147          ;10C
XOR CX,CX           ;10F
MOV AX,3C00         ;111
ADD AX,SI           ;114
CALL 12F            ;116
MOV BX,AX           ;119
XOR DX,DX           ;11B
MOV DS,DX           ;11D
MOV CX,400          ;11F
MOV AH,40           ;122
SUB AX,SI           ;124
CALL 12F            ;126
CMP AX,CX           ;129
JNZ 134             ;12B
MOV AH,3E           ;12D
INT 21              ;12F
JB 134              ;131
RET                 ;133
MOV DX,13F          ;134
PUSH CS             ;137
POP DS              ;138
MOV AH,9            ;139
INT 21              ;13B
INT 20              ;13D
DB "Fehler!$"
DB "\VECTORS"

F 14F 1FF 0
RCX
100
NVECT.COM
W
Q

Quelle: 200 Utilities für PC-/MS-DOS von Gerhard Schild und Thomas Jannot