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