Auf eine Funktionstaste warten

GET.DEB wartet genau wie ASK auf die Eingabe eines bestimmten Zeichens, erlaubt jedoch auch die Verwendung von Funktionstasten. Die Syntax entspricht genau der von KEYIN.DEB – die Wirkung ist mit der von ASK identisch. So lassen sich mit GET z. B. die Funktions- oder Cursortasten und auch beliebige Kombinationen mit <Strg> sowie andere erweiterte Tasten abfragen. Erweiterte Tasten leiten Sie mit » \0« ein, Buchstaben, Zeichen oder Ziffern können Sie direkt angeben. »GET \13\27« wartet zum Beispiel auf die Eingabe der Return- oder Escape-Taste, »GET ABC\075« auf A, B, C oder Cursor-Links. Kennen Sie die vom Tastaturtreiber verwendeten Codes nicht, so hilft Ihnen unser Tip »BIOS-Tastaturcodes ermitteln« weiter. Die hexadezimalen Codes, die Sie dort erhalten, können Sie mit HEX2DEZ.DEB oder CONVERT.DEB ins Dezimalformat umwandeln.

GET beinhaltet genau wie KEYIN.DEB einen kleinen »Interpreter«, der es Ihnen ermöglicht, jede beliebige Tastenkombination auszuwerten. Der Interpreter berücksichtigt Escape-Sequenzen, die durch das Zeichen » \ « eingeleitet werden und setzt die nachfolgende Dezimalzahl in den zu erwartenden Tastendruck um. Damit GET bei der Aufeinanderfolge von Escape-Folgen und Zahlen nicht durcheinandergerät, bietet es die Freiheit, jede Escape-Sequenz durch ein Leerzeichen abzuschließen. Folgt ein anderes Zeichen auf die Sequenz, berücksichtigt GET auch dieses. Kommt nach dem umgekehrten Schrägstrich keine Ziffer, behandelt der Interpreter die entsprechende Taste direkt. Das Warten auf den Schrägstrich » \ « selbst, können Sie somit über »GET \\« einleiten. Natürlich funktioniert dies auch mit »GET \92«, da 92 der ASCII-Wert des Zeichens » \ « ist. Um das Eingeben der Umleitungszeichen » < «, » > « und » | « zu ermöglichen, ignoriert GET alle doppelten Anführungszeichen in der Kommandozeile. Wollen Sie zum Beispiel das Warten auf das Zeichen » | « veranlassen, geben Sie einfach »GET „|“« ein. Ohne die Anführungszeichen würde DOS versuchen, das »Piping« bereits beim Aufruf von GET auszuführen. Benötigen Sie das Anführungszeichen selbst, bieten sich analog zu » \ « die beiden Möglichkeiten » GET \“« oder »GET \34« an. Analog zu ASK.DEB zeigt GET die eingegebene Taste auf dem Bildschirm an, allerdings nur, solange der ASCII-Code größer oder gleich 32 ist. Unerwünschte Steuerzeichen werden unterdrückt. Bei Bedarf können Sie die Ausgabe auch ins »Nichts« umleiten (>NUL.

Name: GET.DEB
Funktion: Wartet auf die Betaätigung einer bestimmten Taste.
Übersetzung: DEBUG <GET.DEB
Prüfsumme: BE81
Anwendung: GET …IF ERRORLEVEL # … = Liste von Tasten, die akzeptiert werden sollen Besondere Zeichenfolgen: \n: n = ASCII-Wert einer Taste (dezimal) \0n: n = erweiterter Code einer Taste (dezimal) \\: rückwärtiger Schrägstrich \“: Anführungszeichen „: wird ignoriert

# = Position der spezifizierten Taste in der Liste

Einschränkungen: ./.
A
MOV AH,0            ;100
INT 16              ;102
AND AX,AX           ;104
JZ 16B              ;106
MOV DX,AX           ;108
MOV SI,81           ;10A
XOR DI,DI           ;10D
CALL 164            ;10F
JZ 16B              ;112
CALL 164            ;114
JZ 100              ;117
CMP AL,22           ;119
JZ 114              ;11B
CMP AL,5C           ;11D
JNZ 14E             ;11F
CALL 164            ;121
XOR CX,CX           ;124
MOV AH,0            ;126
MOV BL,AL           ;128
SUB AL,30           ;12A
JB 13D              ;12C
CMP AL,9            ;12E
JA 13D              ;130
AAD                 ;132
MOV AH,AL           ;134
CALL 164            ;136
LOOPNZ 12A          ;139
JMP 144             ;13B
JCXZ 14C            ;13D
CMP AL,F0           ;13F
JZ 144              ;141
DEC SI              ;143
XCHG BL,AL          ;144
SUB AL,30           ;146
JZ 150              ;148
MOV BL,AH           ;14A
MOV AL,BL           ;14C
MOV AH,DH           ;14E
INC DI              ;150
CMP AX,DX           ;151
JNZ 114             ;153
CMP DL,20           ;155
JB 15E              ;158
MOV AH,2            ;15A
INT 21              ;15C
LEA AX,[DI+4C00]    ;15E
INT 21              ;162
MOV AL,[SI]         ;164
CMP AL,D            ;166
JZ 16B              ;168
INC SI              ;16A
RET                 ;16B

RCX
6C
NGET.COM
W
Q

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