home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1991 / 01 / leser / timer.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1990-11-05  |  2.4 KB  |  82 lines

  1. (* ------------------------------------------------------ *)
  2. (*                      TIMER.PAS                         *)
  3. (*                 Turbo Pascal ab 5.0                    *)
  4. (*           (c) 1990 Gerald Arend & TOOLBOX              *)
  5. (* ------------------------------------------------------ *)
  6.  
  7. PROGRAM Timer;
  8.  
  9. USES Crt, Dos;
  10.  
  11. TYPE
  12.   Elem = RECORD
  13.            ch  : CHAR;
  14.            Att : BYTE;
  15.          END;
  16. VAR
  17.   Screen   : ARRAY[1..25, 1..80] OF Elem
  18.              ABSOLUTE $B800:0000;   { Hercules: $B000:0000 }
  19.   OldInt1C : POINTER;
  20.   LastSec  : WORD;
  21. CONST
  22.   TextFarbe = LightMagenta;
  23.   BackStein = #177;
  24.  
  25. PROCEDURE WriteString(x, y : BYTE; Strg : STRING);
  26. VAR         { schreibt String direkt in Bildschirmspeicher }
  27.   n : BYTE;
  28. BEGIN
  29.   FOR n := 1 TO Length(Strg) DO BEGIN
  30.     Screen[y, x + n - 1].ch  := Strg[n];
  31.     Screen[y, x + n - 1].Att := TextFarbe;
  32.   END;
  33. END;
  34.  
  35. FUNCTION Int2Str(Num : WORD; Len : BYTE) : STRING;
  36. VAR                                   { "Str" als Funktion }
  37.   Puffer : STRING;
  38. BEGIN
  39.   Str(Num:Len, Puffer);
  40.   Int2Str := Puffer;
  41. END;
  42.  
  43. PROCEDURE TimeAndDate;           { zeigt Zeit und Datum an }
  44. INTERRUPT;              { wird in Interrupt 28 eingeklinkt }
  45. VAR
  46.   h, m, s, s100               : WORD;               { Zeit }
  47.   Year, Month, Day, DayOfWeek : WORD;              { Datum }
  48.   Zeit, Datum                 : STRING;      { für Ausgabe }
  49. BEGIN
  50.   GetTime(h, m, s, s100);
  51.   GetDate(Year, Month, Day, DayOfWeek);
  52.   IF s <> LastSec THEN BEGIN                   { Tick-Tack }
  53.     Sound((s MOD 2) * 500 + 500);
  54.     LastSec := s;
  55.   END;
  56.   Zeit := Int2Str(h, 2) + ':' + Int2Str(m, 2) + ':' +
  57.           Int2Str(s, 2);
  58.   Datum := Int2Str(Day, 2) + '.' + Int2Str(Month, 2) + '.' +
  59.            Int2Str(Year, 4);
  60.   WriteString(1, 1, Zeit);
  61.   WriteString(1, 2, Datum);
  62.   NoSound;
  63. END;
  64.  
  65. BEGIN
  66.   ClrScr;
  67.   CheckBreak := FALSE;
  68.   LastSec := 99;
  69.   GetIntVec($1C, OldInt1C);   { alten Interrupt 28 sichern }
  70.   SetIntVec($1C, @TimeAndDate);      { Interrupt verbiegen }
  71.   REPEAT
  72.     GotoXY(Random(80) + 1, Random(22) + 3);
  73.     TextColor(Random(16));
  74.     Write(Backstein);
  75.   UNTIL KeyPressed;
  76.   SetIntVec($1C, OldInt1C); { Interruptvektor restaurieren }
  77.   TextColor(LightGray);
  78.   ClrScr;
  79. END.
  80. (* ------------------------------------------------------ *)
  81. (*                 Ende von TIMER.PAS                     *)
  82.