home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / extra18 / config / chacon.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1991-12-04  |  2.0 KB  |  77 lines

  1. (* ------------------------------------------------- *)
  2. (*                   CHACON.PAS                      *)
  3. (*    Interaktives Ändern der CONFIG.SYS beim Start  *)
  4. (*    (c) 1991 Martin Schimmelpfennig & DMV-Verlag   *)
  5. (* ------------------------------------------------- *)
  6. PROGRAM ChaCon;
  7.  
  8. USES Crt;
  9.  
  10. CONST
  11.   z = ['1'..'9'];
  12.  
  13. VAR
  14.   c    : CHAR;
  15.   f    : TEXT;
  16.   i, n : BYTE;
  17.   e    : STRING;
  18.   s    : ARRAY [1..25] OF STRING;
  19.   w    : BOOLEAN;
  20.  
  21. BEGIN
  22.   c := 'S';
  23.   w := TRUE;
  24.   REPEAT
  25.     Assign(f, '\CONFIG.SY' + c);
  26.     Reset(f);
  27.     n := 0;
  28.     WHILE NOT Eof(f) DO BEGIN
  29.       Inc(n);
  30.       ReadLn(f, s[n]);
  31.     END;
  32.     Close(f);
  33.     REPEAT
  34.       ClrScr;
  35.       e[1] := #0;
  36.       FOR i := 1 TO n DO WriteLn(i, ' ', s[i]);
  37.       Write(#10, 'CONFIG ändern ? ');
  38.       IF w THEN
  39.         REPEAT
  40.           Delay(15);
  41.           Inc(i);
  42.         UNTIL KeyPressed OR (i = 255);
  43.       IF i < 255 THEN BEGIN
  44.         ReadLn(e);
  45.         IF e[0] <> #0 THEN w := FALSE;
  46.         IF e[1] IN z THEN BEGIN
  47.           i := Ord(e[1])-48;
  48.           IF e[0] > #1 THEN
  49.             i := i * 10 + Ord(e[2])-48;
  50.           WriteLn('alte Zeile : ', s[i]);
  51.           Write('neue Zeile : ');
  52.           ReadLn(s[i])
  53.         END ELSE
  54.           c := e[1];
  55.       END;
  56.     UNTIL NOT(e[1] IN z);
  57.   UNTIL w OR (e[0] = #0);
  58.   IF w THEN Exit;
  59.   Write(#10, 'speichern und booten ?');
  60.   IF ReadKey IN ['j', 'J', #13] THEN BEGIN
  61.     Assign(f, 'CONFIG.SYS');
  62.     Rewrite(f);
  63.     FOR i := 1 TO n DO WriteLn(f, s[i]);
  64.     Close(f);
  65.                                 (* Reboot:           *)
  66.     INLINE($B8/$34/$12/         (* MOV AX,1234h      *)
  67.            $BB/$40/$00/         (* MOV BX,0040h      *)
  68.            $8E/$C3/             (* MOV ES,BX         *)
  69.            $26/$A3/$72/$00/     (* MOV ES:[0072h],AX *)
  70.            $EA/$00/$00/$FF/$FF  (* JMP FFFFh:0000h   *)
  71.           );
  72.   END;
  73. END.
  74. (* ------------------------------------------------- *)
  75. (*            Ende von CHACON.PAS                    *)
  76.  
  77.