home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / 1990 / 06 / tricks / compcmos.pas < prev    next >
Pascal/Delphi Source File  |  1990-03-08  |  4KB  |  109 lines

  1. (* ------------------------------------------------------ *)
  2. (*                    COMPCMOS.PAS                        *)
  3. (*  Vergleichen des CMOS-Speicherinhalts mit dem Inhalt   *)
  4. (*  einer Datei                                           *)
  5. (*         (c) 1990 Ralf Randermann & TOOLBOX             *)
  6. (* ------------------------------------------------------ *)
  7. PROGRAM CompCMOS;
  8.  
  9. USES CMOS;
  10.  
  11. CONST
  12.   CRLF = #13#10;
  13.   Bell = #7;
  14.  
  15.   FUNCTION HexByte(Wert : BYTE) : STRING;
  16.   CONST
  17.     HexZiffer : ARRAY [0..$F] OF CHAR = '0123456789ABCDEF';
  18.   BEGIN
  19.     HexByte := HexZiffer[Wert SHR 4] +
  20.                HexZiffer[Wert AND $0F];
  21.   END;
  22.  
  23. VAR
  24.   DateiSize                   : LongInt;
  25.   LV, Work, Fehler, CompStart : BYTE;
  26.   Datei                       : FILE OF BYTE;
  27.  
  28. BEGIN
  29.   WriteLn('CompCMOS Version 0.1', CRLF,
  30.           'Vergleichen des CMOS-Speicherinhalts mit dem ',
  31.           'Inhalt einer Datei');
  32.   IF ParamCount <> 1 THEN BEGIN
  33.     WriteLn('Die Datei, mit der der CMOS-Speicherinhalt ',
  34.             'verglichen werden soll, muß', CRLF,
  35.             'als Parameter angegeben werden!', Bell);
  36.     Halt;
  37.   END;
  38. {$I-}
  39.   Assign(Datei, ParamStr(1));
  40.   Reset(Datei);
  41.   DateiSize := FileSize(Datei);
  42. {$I+}
  43.   IF IOResult > 0 THEN BEGIN
  44.     WriteLn('Die angegebene Datei kann nicht zum Lesen ',
  45.             'geöffnet werden!', Bell);
  46.     Halt
  47.   END;
  48.   IF (DateiSize <> 50) AND (DateiSize <> 64) AND
  49.                            (DateiSize <> 114) THEN BEGIN
  50.     WriteLn('In der angegebenen Datei wurde kein ',
  51.             'CMOS-Speicherinhalt mit SaveCMOS abgelegt!',
  52.              Bell);
  53.     Halt;
  54.   END;
  55.   IF CMOSSize = 0 THEN BEGIN
  56.     WriteLn('CMOS-Speicher nicht vorhanden oder nicht ',
  57.             'nach AT-Standard lesbar!', Bell);
  58.     Halt;
  59.   END;
  60.   CompStart := 14;
  61.   IF CMOSSize - 14 <> DateiSize THEN
  62.     IF DateiSize = 64 THEN
  63.       IF CMOSSize = 64 THEN BEGIN
  64.         WriteLn('Datei ', ParamStr(1), ' enthält Daten ',
  65.                 'eines Expanded CMOS-Speicher!', CRLF,
  66.                 'Da der Computer nur einen Standard-AT ',
  67.                 'CMOS-Speicher besitzt,', CRLF,
  68.                 'erfolgt kein Vergleich.');
  69.         Halt;
  70.       END ELSE CompStart := 64
  71.     ELSE
  72.       IF CMOSSize = 64 THEN
  73.         WriteLn('Unterschiedliche CMOS-Größen:', CRLF,
  74.                 'Datei stammt von Computer mit Expanded ',
  75.                 'CMOS-Speicher!', CRLF,
  76.                 'Nur der Standard-AT CMOS-Speicher ',
  77.                 'wird verglichen.')
  78.       ELSE
  79.         WriteLn('Unterschiedliche CMOS-Größen:', CRLF,
  80.                 'Datei stammt von Computer ohne Expanded ',
  81.                 'CMOS-Speicher!', CRLF,
  82.                 'Nur der Standard-AT CMOS-Speicher ',
  83.                 'wird verglichen.');
  84.    Fehler := 0;
  85.    LV     := CompStart;
  86.    WHILE NOT (Eof(Datei) OR (LV > CMOSSize)) DO BEGIN
  87.      Read(Datei, Work);
  88.      IF Work <> ReadCMOS(LV) THEN BEGIN
  89.        WriteLn('Byte ', HexByte(LV), ': Computer=',
  90.                 HexByte(ReadCMOS(LV)),
  91.                ' Datei=', HexByte(Work));
  92.        Inc(Fehler);
  93.      END;
  94.      Inc(LV)
  95.    END;
  96.    Close(Datei);
  97.    WriteLn('CMOS-Speicherinhalt (von Byte ', CompStart,
  98.            ' bis ', Pred(LV),
  99.            ') mit Datei ', ParamStr(1), ' verglichen.');
  100.    IF Fehler = 0 THEN
  101.      WriteLn('Keinen Unterschied festgestellt!')
  102.    ELSE
  103.      IF Fehler = 1 THEN
  104.        WriteLn('Einen Unterschied festgestellt!')
  105.      ELSE
  106.        WriteLn(Fehler, ' Unterschiede festgestellt!');
  107. END.
  108. (* ------------------------------------------------------ *)
  109. (*               Ende von COMPCMOS.PAS                    *)