Inkey liefert den Errorlevel 0

INKEY.DEB wartet genau wie ASK, bis eine Taste gedrückt wird, liefert jedoch den Errorlevel 0, falls das eingebene Zeichen nicht im Parameter vorkommt. Das Programm kehrt also nach der ersten gedrückten Taste auf die Systemebene zurück, während dies bei ASK erst bei erfolgreichem Vergleich mit den Zeichen im Parameter geschieht. Das eingegebene Zeichen erscheint genau wie bei ASK zur Kontrolle auf dem Bildschirm und läßt sich mit » >NUL« ins Nichts umleiten. Ist der Errorlevel 0, wurde die gedrückte Taste also nicht erwartet, unterläßt INKEY jedoch die Ausgabe des eingegebenen Zeichens. Das ermöglicht es Ihnen, auf einfache Weise Abfragen des Typs »Weiter mit W, Abbruch mit jeder anderen Taste…« zu realisieren. Der folgende Stapeljob zeigt Ihnen, wie das geht:

@ECHO OFF
ECHO Weiter mit W, Abbruch mit jeder anderen Taste...
INKEY Ww >NUL
IF ERRORLEVEL NOT = ! GOTO ENDE
ECHO Beliebige Anweisungen...
:ENDE
Name: INKEY.DEB
Funktion: Wartet bis eine beliebige Taste gedrückt wird.
Übersetzung: DEBUG <INKEY.DEB
Prüfsumme: 39A0
Anwendung: INKEY …IF ERRORLEVEL # … = Liste von Zeichen, die akzeptiert werden sollen # = 0: Die gedrückte Taste steht nicht in der Liste.

andere Werte: Position des Zeichens in der Liste.

Einschränkungen: ./.
A
MOV AH,8            ;100
INT 21              ;102
MOV AH,8            ;104
XOR BX,BX           ;106
CMP AL,0            ;108
JZ 11F              ;10A 
MOV BL,[80]         ;10C
SUB BL,1            ;110
JBE 121             ;113
CMP AL,[BX+81]      ;115
JNZ 110             ;119
MOV DL,AL           ;11B
MOV AH,2            ;11D
INT 21              ;11F
LEA AX,[BX+4C00]    ;121
INT 21              ;125

RCX
27
NINKEY.COM
W
Q

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

Matomo