Denkpause für DOS

DELAY.DEB verzögert die Ausführung eines Stapeljobs um eine beliebige Anzahl von Sekunden, die Sie als Parameter angeben können. Nach Ablauf der Zeit, setzt es den Errorlevel auf 0. Betätigen Sie hingegen in der Zwischenzeit eine Taste, können Sie den weiteren Ablauf der Stapeldatei beeinflußen, da der Errorlevel dann 255 beträgt. Ein typisches Anwendungsbeispiel, das sich bei uns bewährt hat, ist der folgende Ausschnitt aus einer AUTOEXEC.BAT:

@ECHO OFF
ECHO Wenn kein Viren-Checker starten soll, jetzt eine Taste drücken!
DELAY 5
IF ERRORLEVEL 1 GOTO ENDE
ECHO Ein beliebiger Viren-Checker startet...
:ENDE

Dieser Abschnitt sorgt zum Beispiel dafür, daß nach Ablauf von 5 Sekunden Verzögerung automatisch ein Viren-Checker gestartet wird. Natürlich könnte danach ein »DISKTEST« oder »CHKDSK« folgen, was nicht immer unbedingt notwendig ist, von Zeit zu Zeit jedoch nützlich sein kann. Schaltet der Benutzer nun den PC ein, ohne gleich daran arbeiten zu wollen, werden diese Programme selbständig ausgeführt – der PC ist erstmal beschäftigt. Normalerweise löscht DELAY den Tastaturpuffer, sodaß Sie eine beliebige Taste zum Abbrechen des Programmes betätigen können, ohne daß diese anschließend eine Funktion auslöst. Ist jedoch bereits beim Start von DELAY der Tastaturpuffer gefüllt, bleibt sein Inhalt erhalten und das Programm bricht sofort ab.

Name: DELAY.DEB
Funktion: Wartet eine gewünschte Zeitdauer auf einen beliebigen Tastendruck.
Übersetzung: DEBUG <DELAY.DEB
Prüfsumme: 16C6
Anwendung: DELAY zif errorlevel # z = Zeitdauer in Sekunden # = 0, wenn bis zum Ablauf der Zeit keine Taste gedrückt wurde

# = 255 wenn eine Taste gedrückt wurde

Einschränkungen: ./.
A
CALL 136            ;100
JNZ 132             ;103
MOV SI,82           ;105
XOR AX,AX           ;108
AAD                 ;10A
MOV AH,AL           ;10C
MOV AL,[SI]         ;10E
INC SI              ;110
SUB AL,30           ;111
JNB 10A             ;113
MOV AL,12           ;115
MUL AH              ;117
MOV CX,AX           ;119
POP DS              ;11B
MOV BX,[46C]        ;11C
CMP BX,[46C]        ;120
JZ 120              ;124
CALL 136            ;126
LOOPZ 11C           ;129
PUSH AX             ;12B
MOV AX,C00          ;12C
INT 21              ;12F
POP AX              ;131
MOV AH,4C           ;132
INT 21              ;134
MOV AH,B            ;136
INT 21              ;138
CMP AL,0            ;13A
RET                 ;13C

RCX
3D
NDELAY.COM
W
Q

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