home *** CD-ROM | disk | FTP | other *** search
/ Hacker Chronicles 2 / HACKER2.BIN / 134.ADVANCED.PAS < prev    next >
Pascal/Delphi Source File  |  1988-06-30  |  9KB  |  250 lines

  1. UNIT AdvancedOpts;
  2.  
  3. INTERFACE
  4.  
  5. USES
  6. {$IFDEF DOSCrt}
  7.    DOSCrt,
  8. {$ELSE}
  9.    Crt,
  10. {$ENDIF}
  11.    Graph,
  12.    DrawGraf,
  13.    TextOps,
  14.    Global;
  15.  
  16.  
  17. {----------------------------------------------------------------------------}
  18. {-                                                                          -}
  19. {-    AdvancedOptions allows several options to be changed.                 -}
  20. {-                                                                          -}
  21. {----------------------------------------------------------------------------}
  22.  
  23. PROCEDURE AdvancedOptions;
  24.  
  25.  
  26. {----------------------------------------------------------------------------}
  27. {-                                                                          -}
  28. {-    Read_Default_Options reads the default options file that was saved    -}
  29. {-    previously by the user under the advanced options menu.               -}
  30. {-                                                                          -}
  31. {----------------------------------------------------------------------------}
  32.  
  33. PROCEDURE Read_DefaultOptions;
  34.  
  35.  
  36. (****************************************************************************)
  37.  
  38. IMPLEMENTATION
  39.  
  40. PROCEDURE AdvancedOptions;
  41.  
  42.    VAR
  43.       int    : char;
  44.       DONE   : BOOLEAN;
  45.       NewNum : INTEGER;
  46.       temp   : string;
  47.       Name   : text;
  48.       error  : INTEGER;
  49.       ch     : CHAR;
  50.       Drive  : BYTE;
  51.       CurrentDir : string;
  52.  
  53.    PROCEDURE AdvancedOptionsMenu;
  54.  
  55.       BEGIN   {AdvancedOptionsMenu}
  56.          ClrScr;
  57.          WriteXY ('Advanced Options',StartColumn+8,3);
  58.          WriteXY ('Select Option by typing a number: ',StartColumn,5);
  59.          WriteXY ('1. Linear/Spline Interpolation:   ',StartColumn+5,8);
  60.          WriteXY ('2. Digitizer Port [0/1/2]:        ',StartColumn+5,10);
  61.          WriteXY ('3. Printer installed (y/n) ?      ',StartColumn+5,12);
  62.          WriteXY ('4. Colors:                        ',StartColumn+5,14);
  63.          WriteXY ('5. Data Disk/Directory:           ',StartColumn+5,16);
  64.          WriteXY ('6. Save Options                   ',StartColumn+5,18);
  65.          WriteXY ('9. Exit to Main Menu              ',StartColumn+5,20);
  66.          WriteXY ('Your Choice? ',StartColumn,24);
  67.          GotoXY (StartColumn+39,8);
  68.          IF SPLINE
  69.             THEN Write ('S')
  70.             ELSE Write ('L');
  71.          GotoXY (StartColumn+39,10);  Write (SerialPort);
  72.          GotoXY (StartColumn+39,12);
  73.          IF NoPrinter
  74.             THEN Write ('N')
  75.             ELSE Write ('Y');
  76.          GotoXY (StartColumn+35,14);
  77.          Write (ForeColor:2,'/',BackColor:2);
  78.          GotoXY (StartColumn+29,16); Write (DefaultDataDir:11);
  79.          DONE:=FALSE;
  80.       END;   {AdvancedOptionsMenu}
  81.  
  82.    BEGIN   {AdvancedOptions}
  83.       AdvancedOptionsMenu;
  84.       REPEAT
  85.          GotoXY (StartColumn+13,24);
  86.          REPEAT
  87.             ch:=ReadKey;
  88.          UNTIL ch in ['1'..'6','9'];
  89.          Write (ch);
  90.          CASE ch OF
  91.             '1': BEGIN
  92.                     GotoXY (StartColumn+39,8);
  93.                     IF SPLINE
  94.                        THEN BEGIN
  95.                           SPLINE:=FALSE;
  96.                           Write ('L');
  97.                        END   {THEN}
  98.                        ELSE BEGIN
  99.                           SPLINE:=TRUE;
  100.                           Write ('S');
  101.                        END;   {ELSE}
  102.                     ACCEPT:=FALSE;
  103.                  END;
  104.             '2': BEGIN
  105.                     GotoXY (StartColumn+39,10);
  106.                     REPEAT
  107.                        ch:=ReadKey;
  108.                     UNTIL ch in ['0'..'2'];
  109.                     SerialPort:=ord(ch)-ord('0');
  110.                     Write (SerialPort);
  111.                  END;
  112.             '3': BEGIN
  113.                     GotoXY (StartColumn+39,12);
  114.                     IF NoPrinter
  115.                        THEN BEGIN
  116.                           NoPrinter:=FALSE;
  117.                           Write ('Y');
  118.                        END   {THEN}
  119.                        ELSE BEGIN
  120.                           NoPrinter:=TRUE;
  121.                           Write ('N');
  122.                        END;   {ELSE}
  123.                  END;
  124.             '4': BEGIN
  125.                     GotoXY (StartColumn+29,14); ClrEOL;
  126.                     GotoXY (StartColumn,24);
  127.                     Write ('Foreground color [',ForeColor,'] ? ');
  128.                     ClrEol;
  129.                     ReadLn (temp);
  130.                     Val (temp,NewNum,error);
  131.                     IF error = 0 THEN ForeColor:=NewNum mod 16;
  132.                     GotoXY (StartColumn,24);
  133.                     Write ('Background color [',BackColor,'] ? ');
  134.                     ClrEol;
  135.                     ReadLn (temp);
  136.                     Val (temp,NewNum,error);
  137.                     IF error = 0 THEN BackColor:=NewNum mod 16;
  138.                     IF GraphDriver <> HercMono THEN BEGIN
  139.                        TextColor (ForeColor);
  140.                        TextBackground (BackColor);
  141.                     END;   {IF}
  142.                     AdvancedOptionsMenu;
  143.                  END;
  144.             '5': BEGIN
  145.                     WriteXY ('New data disk/directory? ',StartColumn,24);
  146.                     ReadLn (temp);
  147.                     IF length (temp) > 0 THEN BEGIN
  148.                        Drive:=0;
  149.                        GetDir (Drive,CurrentDir);
  150.                        {$I-} ChDir (temp); {$I+}
  151.                        IF IOResult = 0
  152.                           THEN BEGIN
  153.                              DefaultDataDir:=temp;
  154.                              ChDir (CurrentDir);
  155.                              GotoXY (StartColumn+29,16);
  156.                              Write (DefaultDataDir:11); ClrEOL;
  157.                           END   {THEN}
  158.                           ELSE BEGIN
  159.                              PrintErrorMsg ('Invalid disk/directory! ',
  160.                                             StartColumn,21,FALSE,ch);
  161.                           END;   {ELSE}
  162.                     END;   {IF}
  163.                     WriteXY ('Your Choice? ',StartColumn,24); ClrEOL;
  164.                  END;
  165.             '6': BEGIN
  166.                     WriteXY ('Saving Options. Please wait ...',
  167.                                 StartColumn,24);
  168.                     Assign (Name,DefaultOptions);
  169.                     Rewrite (Name);
  170.                     IF SPLINE
  171.                        THEN WriteLn (Name,'SPLINE Interpolation')
  172.                        ELSE WriteLn (Name,'LINEAR Interpolation');
  173.                     WriteLn (Name,'Digitizer at COM',SerialPort,':');
  174.                     IF NoPrinter
  175.                        THEN WriteLn (Name,'NO Printer installed')
  176.                        ELSE WriteLn (Name,'Printer is installed');
  177.                     WriteLn (Name,'Foreground Color is ',ForeColor:2);
  178.                     WriteLn (Name,'Background Color is ',BackColor:2);
  179.                     WriteLn (Name,'Drawing Color is ',DrawColor:2);
  180.                     WriteLn (Name,'Default data directory is ',DefaultDataDir);
  181.                     Close (Name);
  182.                     WriteXY ('Your Choice? ',StartColumn,24); ClrEOL;
  183.                  END;
  184.             '9': BEGIN
  185.                     DONE:=TRUE;
  186.                     ClrScr;
  187.                  END;
  188.          END;   {case}
  189.          WriteXY (' ',StartColumn+13,24);
  190.       UNTIL DONE;
  191.    END;   {AdvancedOptions}
  192.  
  193.  
  194. PROCEDURE Read_DefaultOptions;
  195.  
  196.    var
  197.       Name  : text;
  198.       temp  : string;
  199.       i,j   : BYTE;
  200.       error : INTEGER;
  201.       num   : string [2];
  202.  
  203.    BEGIN   {Read_DefaultOptions}
  204.       IF EXIST (DefaultOptions) THEN BEGIN
  205.          Assign (Name,DefaultOptions);
  206.          Reset (Name);
  207.          ReadLn (Name,temp);
  208.          i:=Pos ('SPLINE',temp);
  209.          IF i >= 1
  210.             THEN SPLINE:=TRUE
  211.             ELSE SPLINE:=FALSE;
  212.          ReadLn (Name,temp);
  213.          i:=Pos ('COM',temp);
  214.          SerialPort:=ord(temp[i+3])-ord('0');
  215.          IF NOT (SerialPort in [0..2]) THEN SerialPort:=0;
  216.          ReadLn (Name,temp);
  217.          IF temp[1] in ['P','p']
  218.             THEN NoPrinter:=FALSE
  219.             ELSE NoPrinter:=TRUE;
  220.          ReadLn (Name,temp);
  221.          i:=Pos ('is ',temp);
  222.          num:=Copy (temp,i+3,2);
  223.          Val (num,i,error);
  224.          IF error = 0 THEN ForeColor:=i;
  225.          ReadLn (Name,temp);
  226.          i:=Pos ('is ',temp);
  227.          num:=Copy (temp,i+3,2);
  228.          Val (num,i,error);
  229.          IF error = 0 THEN BackColor:=i;
  230.          ReadLn (Name,temp);
  231.          i:=Pos ('is ',temp);
  232.          num:=Copy (temp,i+3,2);
  233.          Val (num,i,error);
  234.          IF error = 0 THEN DrawColor:=i;
  235.          ReadLn (Name,temp);
  236.          i:=Pos ('is ',temp);
  237.          IF i > 0 THEN BEGIN
  238.             FOR j:=i+3 to length(temp) do
  239.                DefaultDataDir[j-i-2]:=temp[j];
  240.             DefaultDataDir[0]:=char (length(temp)-i-2);
  241.          END;   {IF}
  242.       END;   {IF}
  243.    END;   {Read_DefaultOptions}
  244.  
  245.  
  246. (****************************************************************************)
  247.  
  248. BEGIN   {Initialization}
  249. END.   {Unit AdvancedOpts}
  250.