home *** CD-ROM | disk | FTP | other *** search
- (* ------------------------------------------------------ *)
- (* COMPCMOS.PAS *)
- (* Vergleichen des CMOS-Speicherinhalts mit dem Inhalt *)
- (* einer Datei *)
- (* (c) 1990 Ralf Randermann & TOOLBOX *)
- (* ------------------------------------------------------ *)
- PROGRAM CompCMOS;
-
- USES CMOS;
-
- CONST
- CRLF = #13#10;
- Bell = #7;
-
- FUNCTION HexByte(Wert : BYTE) : STRING;
- CONST
- HexZiffer : ARRAY [0..$F] OF CHAR = '0123456789ABCDEF';
- BEGIN
- HexByte := HexZiffer[Wert SHR 4] +
- HexZiffer[Wert AND $0F];
- END;
-
- VAR
- DateiSize : LongInt;
- LV, Work, Fehler, CompStart : BYTE;
- Datei : FILE OF BYTE;
-
- BEGIN
- WriteLn('CompCMOS Version 0.1', CRLF,
- 'Vergleichen des CMOS-Speicherinhalts mit dem ',
- 'Inhalt einer Datei');
- IF ParamCount <> 1 THEN BEGIN
- WriteLn('Die Datei, mit der der CMOS-Speicherinhalt ',
- 'verglichen werden soll, muß', CRLF,
- 'als Parameter angegeben werden!', Bell);
- Halt;
- END;
- {$I-}
- Assign(Datei, ParamStr(1));
- Reset(Datei);
- DateiSize := FileSize(Datei);
- {$I+}
- IF IOResult > 0 THEN BEGIN
- WriteLn('Die angegebene Datei kann nicht zum Lesen ',
- 'geöffnet werden!', Bell);
- Halt
- END;
- IF (DateiSize <> 50) AND (DateiSize <> 64) AND
- (DateiSize <> 114) THEN BEGIN
- WriteLn('In der angegebenen Datei wurde kein ',
- 'CMOS-Speicherinhalt mit SaveCMOS abgelegt!',
- Bell);
- Halt;
- END;
- IF CMOSSize = 0 THEN BEGIN
- WriteLn('CMOS-Speicher nicht vorhanden oder nicht ',
- 'nach AT-Standard lesbar!', Bell);
- Halt;
- END;
- CompStart := 14;
- IF CMOSSize - 14 <> DateiSize THEN
- IF DateiSize = 64 THEN
- IF CMOSSize = 64 THEN BEGIN
- WriteLn('Datei ', ParamStr(1), ' enthält Daten ',
- 'eines Expanded CMOS-Speicher!', CRLF,
- 'Da der Computer nur einen Standard-AT ',
- 'CMOS-Speicher besitzt,', CRLF,
- 'erfolgt kein Vergleich.');
- Halt;
- END ELSE CompStart := 64
- ELSE
- IF CMOSSize = 64 THEN
- WriteLn('Unterschiedliche CMOS-Größen:', CRLF,
- 'Datei stammt von Computer mit Expanded ',
- 'CMOS-Speicher!', CRLF,
- 'Nur der Standard-AT CMOS-Speicher ',
- 'wird verglichen.')
- ELSE
- WriteLn('Unterschiedliche CMOS-Größen:', CRLF,
- 'Datei stammt von Computer ohne Expanded ',
- 'CMOS-Speicher!', CRLF,
- 'Nur der Standard-AT CMOS-Speicher ',
- 'wird verglichen.');
- Fehler := 0;
- LV := CompStart;
- WHILE NOT (Eof(Datei) OR (LV > CMOSSize)) DO BEGIN
- Read(Datei, Work);
- IF Work <> ReadCMOS(LV) THEN BEGIN
- WriteLn('Byte ', HexByte(LV), ': Computer=',
- HexByte(ReadCMOS(LV)),
- ' Datei=', HexByte(Work));
- Inc(Fehler);
- END;
- Inc(LV)
- END;
- Close(Datei);
- WriteLn('CMOS-Speicherinhalt (von Byte ', CompStart,
- ' bis ', Pred(LV),
- ') mit Datei ', ParamStr(1), ' verglichen.');
- IF Fehler = 0 THEN
- WriteLn('Keinen Unterschied festgestellt!')
- ELSE
- IF Fehler = 1 THEN
- WriteLn('Einen Unterschied festgestellt!')
- ELSE
- WriteLn(Fehler, ' Unterschiede festgestellt!');
- END.
- (* ------------------------------------------------------ *)
- (* Ende von COMPCMOS.PAS *)