home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* CMOS.PAS *)
- (* Grundlegende Routinen für den Zugriff auf den *)
- (* CMOS-Speicher *)
- (* (c) 1990 Ralf Randermann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- UNIT CMOS;
-
- INTERFACE
-
- VAR
- CMOSSize: byte;
-
- FUNCTION ReadCMOS(Addr : BYTE) : BYTE;
- PROCEDURE WriteCMOS(Addr, Wert : BYTE);
-
- IMPLEMENTATION
-
- CONST
- TeststelleA = $20;
- TeststelleB = TeststelleA + 64;
- TeststelleC = TeststelleA + 1;
- AdressPort = $70;
- DatenPort = $71;
-
- PROCEDURE CLI; INLINE($FC);
- PROCEDURE STI; INLINE($FD);
-
- FUNCTION ReadCMOS(Addr : BYTE) : BYTE;
- BEGIN
- CLI;
- Port[AdressPort] := Addr;
- ReadCMOS := Port[DatenPort];
- STI;
- END;
-
- PROCEDURE WriteCMOS(Addr, Wert : BYTE);
- BEGIN
- CLI;
- Port[AdressPort] := Addr;
- Port[DatenPort] := Wert;
- STI;
- END;
-
- VAR
- TestByte1, TestByte2, TestByte3 : BYTE;
-
- BEGIN
- TestByte1 := ReadCMOS(TeststelleA);
- WriteCMOS(TeststelleA, $A5);
- TestByte3 := ReadCMOS(TeststelleC);
- WriteCMOS(TeststelleC, $F0);
- IF (ReadCMOS(TeststelleA) = $A5) AND
- (ReadCMOS(TeststelleC) = $F0) THEN BEGIN
- TestByte2 := ReadCMOS(TeststelleB);
- WriteCMOS(TeststelleB, $5A);
- IF (ReadCMOS(TeststelleB) <> $5A) OR
- (ReadCMOS(TeststelleA) <> $A5) THEN
- CMOSSize := 64
- ELSE CMOSSize := 128;
- WriteCMOS(TeststelleB, TestByte2);
- END ELSE
- CMOSSize := 0;
- WriteCMOS(TeststelleC, TestByte3);
- WriteCMOS(TeststelleA, TestByte1)
- END.
- (* ------------------------------------------------------ *)
- (* Ende von CMOS.PAS *)
-