Einfaches Logbuch für DOS

Als krönenden Abschluß möchten wir Ihnen zeigen, wie Sie dem PC zur Führung eines einfachen Logbuches erziehen können, in dem sämtliche Zeitpunkte, zu denen das System gestartet wurde, protokolliert werden. Voraussetzung ist natürlich, daß Ihr PC über eine batteriegepufferte Echtzeituhr verfügt. Da im Unterschied zu ATs auf XTs die Systemzeit erst per Zusatzprogramm auf den Wert der Echtzeituhr gesetzt werden muß, dürfen die Anweisungen zum Logbuch natürlich erst nach dem Zusatzprogramm zum Einsatz kommen:

IF EXIST \TMP\LOGBUCH.SYS REN \TMP\LOGBUCH.SYS *.TMP
TIMEDATE >\TMP\LOGBUCH.SYS
ECHO.>>\TMP\LOGBUCH.sys
COPY LOGBUCH.SYS+LOGBUCH.TMP
IF EXIST \TMP\LOGBUCH.TMP DEL \TMP\LOGBUCH.TMP

Damit die Bootzeiten rückwärts in die Datei LOGBUCH.SYS gelangen, plaziert der mit » + « kombinierte COPY-Befehl den aktuellen Zeitpunkt des Systemstarts jeweils an den Anfang des Logbuches. Dadurch haben Sie beim Auflisten mit »TYPE LOGBUCH.SYS« die jüngsten Daten gleich zu Beginn. Ein Booten von Diskette kann dieses Verfahren leider nicht registrieren.

Wollen Sie sich beim Booten lediglich Datum und Uhrzeit des letzten Systemstarts anzeigen lassen, können Sie die folgenden Zeilen in die AUTOEXEC.BAT übernehmen.

IF NOT EXIST \TMP\LASTBOOT.SYS GOTO SKIP
ECHO Letzter Systemstart:
TYPE \TMP\LASTBOOT.SYS
ECHO.
:SKIP
TIMEDATE >\TMP\LASTBOOT.SYS

Der Ordnung halber sollten Sie die wichtigsten temporären Dateien in einem ausschließlich dafür vorbehaltenen Directory sammeln. In unseren Beispielen verwenden wir stets »\TMP«.

Name: TIMEDATE.DEB
Funktion: Gibt das aktuelle Systemdatum gemeinsam mit der momentanen Uhrzeit aus.
Übersetzung: DEBUG <TIMEDATE.DEB
Prüfsumme: 0548
Anwendung: TIMEDATE
Einschränkungen: ./.
A
MOV AH,2A           ;100
INT 21              ;102
MOV DI,17C          ;104
INC DI              ;107
CMP By[DI-1],24     ;108
JNZ 107             ;10C
SUB AL,1            ;10E
JNB 107             ;110
MOV SI,15F          ;112
MOV AL,DL           ;115
CALL 153            ;117
MOV AL,DH           ;11A
CALL 153            ;11C
SUB CX,76C          ;11F
MOV AL,CL           ;123
ADD SI,2            ;125
CALL 153            ;128
MOV AH,2C           ;12B
INT 21              ;12D
MOV AL,CH           ;12F
ADD SI,2            ;131
CALL 153            ;134
MOV AL,CL           ;137
CALL 153            ;139
MOV AL,DH           ;13C
CALL 153            ;13E
MOV AL,DL           ;141
CALL 153            ;143
MOV DX,DI           ;146
CALL 14E            ;148
MOV DX,15D          ;14B
MOV AH,9            ;14E
INT 21              ;150
RET                 ;152
AAM                 ;153
XCHG AL,AH          ;155
ADD [SI],AX         ;157
ADD SI,3            ;159
RET                 ;15C
DB ", 00.00.1900 / "
DB "00:00.00,00 Uhr$"
DB "$Sonntag$Montag$"
DB "Dienstag$Mittwoch$"
DB "Donnerstag$"
DB "Freitag$Samstag$"

RCX
B9
NTIMEDATE.COM
W
Q

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

P.S. Frank Kwirandt hat nach der Jahrtausendwende zwei Fehler gefunden und korrigiert:

Fehler 1: In der AUTOEXEC.BAT muss es in der vierten Zeile anstelle von COPY LOGBUCH.SYS+LOGBUCH.TMP korrekt COPY LOGBUCH.SYS+LOGBUCH.TMP LOGBUCH.SYS heißen.

Fehler 2: Im Listing von TIMEDATE.DEB muss es in der 12. Zeile von unten anstelle von DB “, 00.00.1900 / ” korrekt DB “, 00.00.20&0 / ” heißen.