Stellt das Programm mit Hilfe von TsrIsInst fest, daß es noch nicht installiert war, wird in der Regel die Installation folgen. Dabei handelt es sich um einen zweistufigen Prozeß, in dessen Verlauf zunächst der Hotkey des Programms mit Hilfe von TsrSetHotkey eingestellt wird. Anschließend wird das Programm mit Hilfe von TsrInit als TSR-Programm im Speicher verankert und seine Ausführung zunächst beendet.
Diese TsrSetHotkey-Routine erwartet als Argument die beiden Parameter, die den Hotkey bestimmen: Die Bit-Maske für die Steuertasten und den Scan-Code der zugehörigen Buchstaben- oder Zifferntaste. Beide Parameter können mit Hilfe zahlreicher Konstanten konstruiert werden, die sich am Anfang des Pascal-Programms finden.
Für die Umschalttasten tragen diese Parameter die Namen LSHIFT (linke Schift-Taste), RSHIFT (rechte Shift-Taste), ALT, CTRL etc. Mehrere dieser Konstanten können durch ein binäres ODER miteinander verknüpft werden, wenn mehrere Umschalttasten gleichzeitig betätigt werden müssen, um das TSR-Programm zu aktivieren. Das binäre ODER entspricht auf der Anwender-Seite also einem logischen UND.
Die verschiedenen Konstanten für die Scan-Codes der einzelnen Tasten beginnen alle mit dem Präfix SC_, auf den dann der Buchstabe oder die Ziffer bzw. deren Name folgt. (z.B. SC_5, SC_X oder SC_SPACE). Soll das Programm lediglich durch Betätigung einer oder mehrerer Umschalttasten aktiviert werden können, ohne daß dazu eine Buchstaben- oder Zahlentaste betätigt werden muß, können Sie sich der Konstante SC_NOKEY bedienen.
Nach der Einstellung der Hotkeys wird das Programm durch den Aufruf von TsrInit in ein TSR-Programm verwandelt. TrsInit erwartet von seinem Aufrufer dabei zwei Parameter: Die Offsetadresse der eigentlichen TSR-Routine und eine Information, die über den Speicherbedarf des Programms Auskunft gibt.
Aufgabe von TsrInit ist es, zunächst die Adressen der Interrupt-Handler 08h, 09h, 13h, 28h und 2Fh zu ermitteln und zu speichern. Danach werden die Daten ermittelt, die zum Kontext des Hochsprachen-Programms gehören. Auch sie werden in Variablen innerhalb des Codesegments gespeichert, damit sie später für die Interrupt-Handler und zur Aktivierung des TSR-Programms zugänglich sind. Im nächsten Schritt werden die neuen Interrupt-Handler installiert. Als Funktionsnummer für den MUX-Interrupt 2Fh wird dabei die Funktionsnummer eingesetzt, die beim vorhergehenden Aufruf von TsrIsInst angegeben wurde.
Bevor das Programm dann über die DOS-Funktion 31h als residentes Programm im Speicher verankert werden kann, muß die Größe des Programms und damit die Anzahl der Paragraphen berechnet werden, die nach der Programmbeendigung, resident im Speicher verbleiben sollen. Die Installation ist damit abgeschlossen, und das Programm wird resident beendet.
|