home *** CD-ROM | disk | FTP | other *** search
- (*------------------------------------------------------- *)
- (* UHR_RES.PAS *)
- (* residente Uhrzeit-Anzeige unter TURBO 4.0 *)
- (* (c) 1988 by Dieter Bührer und TOOLBOX *)
- (* ------------------------------------------------------ *)
-
- PROGRAM UHR_RES;
-
- {$M 1024,0,0}
-
- USES Dos;
-
- CONST Zeit : REAL = 0.0;
- i : INTEGER = 0;
- TimerIntr = $1C;
- OldTimerVec :POINTER = NIL;
- CGA :BOOLEAN = FALSE; (* für CGA TRUE *)
-
- (* ------------------------------------------------------ *)
- PROCEDURE ZeitAnzeige;
-
- INTERRUPT;
-
- VAR CGAAnzeige: ARRAY [0..7,0..1] OF CHAR
- ABSOLUTE $B800:$90;
- HGCAnzeige: ARRAY [0..7,0..1] OF CHAR
- ABSOLUTE $B000:$90;
- (* Offset $90 = Zeile 72 ( 0..79 ) *)
- (* CGA = $B800 *)
- (* MGA/HERCULES = $B000 *)
- DosZeit: LongInt ABSOLUTE $40:$6C;
-
- CONST Flag : BYTE = 0;
- HilfAnzeige: ARRAY [0..7,0..1] OF CHAR =
- ((' ','p'),(' ','p'), (':','p'), (' ','p'),
- (' ','p'), (':','p'),(' ','p'), (' ','p'));
-
- BEGIN { ZeitAnzeige }
- IF Flag > 0 THEN BEGIN
- (* nur bei jedem 2.Timertick Uhrzeit korrigieren *)
- Flag := 0; EXIT;
- END;
- Inc(Flag);
- Zeit := DosZeit/18.2;
- (* ungefähr 18.2 Timer-Ticks pro Sekunde *)
- i := Trunc (Zeit / 3600);
- HilfAnzeige[0,0] := Chr((i DIV 10)+48);
- HilfAnzeige[1,0] := Chr((i MOD 10)+48);
- Zeit := Zeit - (i*3600.0);
- i := Trunc (Zeit / 60);
- HilfAnzeige[3,0] := Chr((i DIV 10)+48);
- HilfAnzeige[4,0] := Chr((i MOD 10)+48);
- i := Trunc(Zeit - (i*60));
- HilfAnzeige[6,0] := Chr((i DIV 10)+48);
- HilfAnzeige[7,0] := Chr((i MOD 10)+48);
- (* Inverse Darstellung der Uhr *)
- IF CGA THEN Move(HilfAnzeige,CGAAnzeige,16)
- ELSE Move(HilfAnzeige,HGCAnzeige,16);
- END; { ZeitAnzeige }
-
- BEGIN { UHR_RES }
- IF (MEM[0000:1040] AND 48) <> 48 then CGA := TRUE
- ELSE CGA := FALSE;
- SetInTVec(TimerIntr,@ZeitAnzeige);
- WriteLn('Uhrzeit installiert C) D.Bührer 1988');
- Keep(0);
- (* ----------------------------------------------------- *)
- (* R.AH:=$31;R.AL:=0;INTR($21;r); *)
- (* Terminate but stay resident *)
- (* ----------------------------------------------------- *)
- END. { UHR_RES }