home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 06 / tricks / cmos.pas next >
Pascal/Delphi Source File  |  1994-03-29  |  2KB  |  70 lines

  1. (* ------------------------------------------------------ *)
  2. (*                     CMOS.PAS                           *)
  3. (*    Grundlegende Routinen für den Zugriff auf den       *)
  4. (*    CMOS-Speicher                                       *)
  5. (*        (c) 1990 Ralf Randermann & TOOLBOX              *)
  6. (* ------------------------------------------------------ *)
  7. UNIT CMOS;
  8.  
  9. INTERFACE
  10.  
  11. VAR
  12.   CMOSSize: byte;
  13.  
  14.   FUNCTION  ReadCMOS(Addr : BYTE) : BYTE;
  15.   PROCEDURE WriteCMOS(Addr, Wert : BYTE);
  16.  
  17. IMPLEMENTATION
  18.  
  19. CONST
  20.   TeststelleA = $20;
  21.   TeststelleB = TeststelleA + 64;
  22.   TeststelleC = TeststelleA + 1;
  23.   AdressPort  = $70;
  24.   DatenPort   = $71;
  25.  
  26.   PROCEDURE CLI; INLINE($FC);
  27.   PROCEDURE STI; INLINE($FD);
  28.  
  29.   FUNCTION ReadCMOS(Addr : BYTE) : BYTE;
  30.   BEGIN
  31.     CLI;
  32.     Port[AdressPort] := Addr;
  33.     ReadCMOS := Port[DatenPort];
  34.     STI;
  35.   END;
  36.  
  37.   PROCEDURE WriteCMOS(Addr, Wert : BYTE);
  38.   BEGIN
  39.     CLI;
  40.     Port[AdressPort] := Addr;
  41.     Port[DatenPort]  := Wert;
  42.     STI;
  43.   END;
  44.  
  45. VAR
  46.   TestByte1, TestByte2, TestByte3 : BYTE;
  47.  
  48. BEGIN
  49.   TestByte1 := ReadCMOS(TeststelleA);
  50.   WriteCMOS(TeststelleA, $A5);
  51.   TestByte3 := ReadCMOS(TeststelleC);
  52.   WriteCMOS(TeststelleC, $F0);
  53.   IF (ReadCMOS(TeststelleA) = $A5) AND
  54.      (ReadCMOS(TeststelleC) = $F0) THEN BEGIN
  55.     TestByte2 := ReadCMOS(TeststelleB);
  56.     WriteCMOS(TeststelleB, $5A);
  57.     IF (ReadCMOS(TeststelleB) <> $5A) OR
  58.        (ReadCMOS(TeststelleA) <> $A5) THEN
  59.       CMOSSize := 64
  60.     ELSE CMOSSize := 128;
  61.       WriteCMOS(TeststelleB, TestByte2);
  62.   END ELSE
  63.     CMOSSize := 0;
  64.   WriteCMOS(TeststelleC, TestByte3);
  65.   WriteCMOS(TeststelleA, TestByte1)
  66. END.
  67. (* ------------------------------------------------------ *)
  68. (*                Ende von CMOS.PAS                       *)
  69.  
  70.