Ständige Uhrzeit in DOS anzeigen

Idee: Thorsten Schmitt

Einer der häufigsten Wünsche von PC-Benutzern ist die ständige Anzeige der aktuellen Uhrzeit auf dem Bildschirm. Verständlich, erleichtert Ihnen dies es doch, einen wichtigen Termin oder das Abendessen nicht zu verpassen. CLOCK.DEB blendet daher in der rechten oberen Ecke die Stunden und Minuten ein. Das speicherresidente Programm, das sich in den Timer-Interrupt 1Ch einklinkt, ermittelt über den PC-internen Zeitzähler 18,2 mal pro Sekunde die momentane Uhrzeit. Da die Anzeige aus Geschwindigkeitsgründen über direkte Schreibzugriffe in den Bildschirmspeicher erfolgt, funktioniert CLOCK in keinem Grafik-Modus – dafür aber in allen möglichen Text-Modi. Das Programm berücksichtigt automatisch die aktive Bildschirmseite und funktioniert bei CGA-Karten wie bei Hercules-Adaptern. Die eingestellte Bildbreite, ob 80 oder 40 Zeichen, spielt keine Rolle. Bei älteren CGA-Karten kann ein leichtes »Schneien« sichtbar sein.

Einiges zur Funktion: Das BIOS verwaltet in den Speicherzellen 40h:6Ch bis 6Fh einen 32-Bit-Zeitzähler mit einer Auflösung von 1/18,2 Sekunden. Wenn der PC über eine batteriegepufferte Echtzeituhr verfügt, setzt der verantwortliche Gerätetreiber diesen Zähler beim Systemstart auf einen der Echtzeituhr entsprechenden Wert. Nimmt man geringe Rechenungenauigkeiten zugunsten von Geschwindigkeit und und Kürze des Programms in Kauf, können Sie die Stunden direkt aus dem 3. Byte des Zeitzählers (Wertigkeit: 65536 * 1/18,2 Sekunden ≈ 3600,879 Sekunden) entnehmen. Die Minuten ergeben sich aus den beiden niederwertigen Bytes des Zählers (hier als » n « bezeichnet) angenähert zu n/1096. 1096 Ticks zu je 1/18,2 Sekunden ergeben etwa 60,220 Sekunden, also rund eine Minute. Je älter der Tag, desto ungenauer die Uhr – um 23:59 Uhr kann die Differenz rund 14 Sekunden betragen. Da aber kaum eine PC-Uhr auf die Sekunde genau eingestellt ist, geschweige denn längerfristig so genau läuft, ist der Zeitunterschied irrelevant.

Name: CLOCK.DEB
Funktion: Blendet in der rechten oberen Bildschirmecke die aktuelle Uhrzeit ein.
Übersetzung: DEBUG <CLOCK.DEB
Prüfsumme: D1BF
Anwendung: CLOCK
Einschränkungen: Das Programm funktioniert nur im Text-Modus. Auf altenCGA-Karten ist ein leichtes »Schneien« möglich. Die Uhr läßt sich nicht mehr abschalten. Leichte Rechenunge- nauigkeiten lassen die Uhrzeit wenige Sekunden von der

wirklichen Zeit abweichen.

A
MOV AX,351C         ;100
INT 21              ;103
MOV [15F],BX        ;105
MOV [161],ES        ;109
MOV AX,251C         ;10D
MOV DX,11A          ;110
INT 21              ;113
MOV DX,177          ;115
INT 27              ;118
PUSH AX             ;11A
PUSH DI             ;11B
PUSH DS             ;11C
PUSH ES             ;11D
CS:LDS DI,[173]     ;11E
MOV AL,[10]         ;123
AND AL,3            ;126
CMP AL,3            ;128
JZ 12F              ;12A
MOV DI,B800         ;12C
MOV ES,DI           ;12F
MOV DI,[4A]         ;131
ADD DI,DI           ;135
SUB DI,A            ;137
ADD DI,[4E]         ;13A
CLD                 ;13E
MOV AL,[6E]         ;13F
CALL 163            ;142
MOV AX,F03A         ;145
STOSW               ;148
MOV AX,[6C]         ;149
SHR AX,1            ;14C
SHR AX,1            ;14E
SHR AX,1            ;150
CS:DIV By[172]      ;152
CALL 163            ;157
POP ES              ;15A
POP DS              ;15B
POP DI              ;15C
POP AX              ;15D
JMP 0:0             ;15E
AAM                 ;163
CALL 168            ;165
XCHG AH,AL          ;168
PUSH AX             ;16A
ADD AL,30           ;16B
MOV AH,70           ;16D
STOSW               ;16F
POP AX              ;170
RET                 ;171
DB 89,0,b0,40,0

RCX
77
NCLOCK.COM
W
Q

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

Matomo