home *** CD-ROM | disk | FTP | other *** search
- PROCEDURE Update_Menu_Env;
- VAR Menu_Env : TEXT;
- i : BYTE;
-
- FUNCTION Spell_Color (Color : INTEGER) : STRING;
- BEGIN
- IF Color > 15 THEN
- Color := Color DIV 16;
- CASE Color MOD 16 OF
- 0 : Spell_Color := '0 (Black)';
- 1 : Spell_Color := '1 (Blue)';
- 2 : Spell_Color := '2 (Green)';
- 3 : Spell_Color := '3 (Cyan)';
- 4 : Spell_Color := '4 (Red)';
- 5 : Spell_Color := '5 (Magenta)';
- 6 : Spell_Color := '6 (Brown)';
- 7 : Spell_Color := '7 (LightGray)';
- 8 : Spell_Color := '8 (DarkGray)';
- 9 : Spell_Color := '9 (LightBlue)';
- 10 : Spell_Color := '10 (LightGreen)';
- 11 : Spell_Color := '11 (LightCyan)';
- 12 : Spell_Color := '12 (LightRed)';
- 13 : Spell_Color := '13 (LightMagenta)';
- 14 : Spell_Color := '14 (Yellow)';
- 15 : Spell_Color := '15 (White)';
- END;
- END;
-
- BEGIN { Update_Menu_Env }
- IF NOT Env_Changes THEN { nothing to update }
- EXIT;
- ASSIGN (Menu_Env,'MENUENV.DAT');
- {$I-}
- REWRITE (Menu_Env);
- {$I+}
- IO_Error := IORESULT;
- IF IO_Error <> 0 THEN
- BEGIN
- Show_Error (IO_Error+100,10,21,fgNErr+bgNErr); { I/O ERROR }
- EXIT;
- END;
- WRITELN (Menu_Env,'Header Toggle = ',Header_Toggle);
- WRITELN (Menu_Env,'Date & Time Toggle = ',Date_Time_Toggle);
- WRITELN (Menu_Env,'Help Toggle = ',Help_Toggle);
-
- WRITELN (Menu_Env,'Foreground Color-MAIN = ',Spell_Color(fgMain));
- WRITELN (Menu_Env,'Background Color-MAIN = ',Spell_Color(bgMain));
-
- WRITELN (Menu_Env,'Foreground Color-COMMAND = ',Spell_Color(fgCmnd));
- WRITELN (Menu_Env,'Background Color-COMMAND = ',Spell_Color(bgCmnd));
-
- WRITELN (Menu_Env,'Foreground Color-NAME = ',Spell_Color(fgName));
- WRITELN (Menu_Env,'Background Color-NAME = ',Spell_Color(bgName));
-
- WRITELN (Menu_Env,'Foreground Color-OPTION HIGHLIGHTS = ',Spell_Color(fgHOpt));
- WRITELN (Menu_Env,'Background Color-OPTION HIGHLIGHTS = ',Spell_Color(bgHOpt));
-
- WRITELN (Menu_Env,'Foreground Color-OPTION SELECT KEYS = ',Spell_Color(fgSlct));
- WRITELN (Menu_Env,'Background Color-OPTION SELECT KEYS = ',Spell_Color(bgSlct));
-
- WRITELN (Menu_Env,'Foreground Color-HELP = ',Spell_Color(fgHelp));
- WRITELN (Menu_Env,'Background Color-HELP = ',Spell_Color(bgHelp));
-
- WRITELN (Menu_Env,'Foreground Color-ERRORS = ',Spell_Color(fgNErr));
- WRITELN (Menu_Env,'Background Color-ERRORS = ',Spell_Color(bgNErr));
-
- WRITELN (Menu_Env,'Foreground Color-NOTES = ',Spell_Color(fgNote));
- WRITELN (Menu_Env,'Background Color-NOTES = ',Spell_Color(bgNote));
-
- WRITELN (Menu_Env,'Foreground Color-FATAL ERRORS = ',Spell_Color(fgFErr));
- WRITELN (Menu_Env,'Background Color-FATAL ERRORS = ',Spell_Color(bgFErr));
-
- WRITELN (Menu_Env,'Foreground Color-WARNINGS = ',Spell_Color(fgWarn));
- WRITELN (Menu_Env,'Background Color-WARNINGS = ',Spell_Color(bgWarn));
-
- WRITELN (Menu_Env,'Foreground Color-INPUT FIELDS = ',Spell_Color(fgInpt));
- WRITELN (Menu_Env,'Background Color-INPUT FIELDS = ',Spell_Color(bgInpt));
-
- FOR i := 1 TO 16 DO
- BEGIN
- WRITELN (Menu_Env,'Foreground Color-MENU BOX ',i,' = ',Spell_Color(fgMenu[i]));
- WRITELN (Menu_Env,'Background Color-MENU BOX ',i,' = ',Spell_Color(bgMenu[i]));
- WRITELN (Menu_Env,'Foreground Color-MENU ',i,' TITLE = ',Spell_Color(fgTitl[i]));
- WRITELN (Menu_Env,'Background Color-MENU ',i,' TITLE = ',Spell_Color(bgTitl[i]));
- END;
- {$I-}
- CLOSE (Menu_Env);
- {$I+}
- END;
-
- PROCEDURE Init_Menu_Manager;
- VAR i : BYTE;
-
- PROCEDURE Get_Environment_Variables;
- VAR Menu_Env : TEXT;
- Opened : BOOLEAN;
- i : BYTE;
-
- FUNCTION CSI (s : STRING) : INTEGER;
- VAR i : INTEGER;
- t : STRING;
- BEGIN
- t := '';
- FOR i := 1 TO LENGTH(s) DO
- IF s[i] IN ['0'..'9'] THEN
- t := CONCAT(t,s[i]);
- IF t = '' THEN
- t := '0';
- VAL (t,i,IO_Error);
- CSI := i;
- END;
-
- PROCEDURE Get_Boolean_Toggle (VAR Toggle : BOOLEAN);
- VAR Line : STRING;
- BEGIN
- Line := '';
- IF NOT EOF(Menu_Env) THEN
- {$I-}
- READLN (Menu_Env,Line);
- {$I+}
- IF POS('TRUE',Upper_Case(Line)) > 0 THEN
- Toggle := TRUE
- ELSE
- Toggle := FALSE;
- END;
-
- PROCEDURE Get_ForeGround_Color (VAR Color : BYTE);
- VAR Line : STRING;
- i : BYTE;
- BEGIN
- Line := '';
- IF NOT EOF(Menu_Env) THEN
- {$I-}
- READLN (Menu_Env,Line);
- {$I+}
- i := Scan(Line,Forwards,EQ,'=');
- IF i < LENGTH(Line) THEN
- DELETE (Line,1,i);
- Color := CSI(Line);
- END;
-
- PROCEDURE Get_BackGround_Color (VAR Color : BYTE);
- VAR Line : STRING;
- i : BYTE;
- BEGIN
- Line := '';
- IF NOT EOF(Menu_Env) THEN
- {$I-}
- READLN (Menu_Env,Line);
- {$I+}
- i := Scan(Line,Forwards,EQ,'=');
- IF i < LENGTH(Line) THEN
- DELETE (Line,1,i);
- Color := CSI(Line) * 16;
- END;
-
- BEGIN { Get_Environment_Variables }
- ASSIGN (Menu_Env,'MENUENV.DAT');
- Opened := FALSE;
- REPEAT
- {$I-}
- RESET (Menu_Env);
- {$I+}
- IO_Error := IORESULT;
- IF IO_Error = 0 THEN
- Opened := TRUE
- ELSE
- IF IO_Error = 2 THEN { file doesn't exist - create it }
- BEGIN
- {$I-}
- REWRITE (Menu_Env);
- {$I+}
- IO_Error := IORESULT;
- IF IO_Error > 0 THEN { have a real problem here... }
- BEGIN
- Sound_Bell;
- WRITELN;
- WRITELN ('+=====================================+');
- WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
- WRITELN ('| |');
- WRITELN ('| "Menu Manager" detected the follow- |');
- WRITELN ('| ing UNRECOVERABLE error on the RE- |');
- WRITELN ('| WRITE of the file "MENUENV.DAT": |');
- WRITELN ('| |');
- WRITELN ('| IORESULT = ',IO_Error:5,' |');
- WRITELN ('| |');
- WRITELN ('+======================================+');
- HALT;
- END;
- {$I-}
- CLOSE (Menu_Env);
- {$I+}
-
- Header_Toggle := TRUE;
- Date_Time_Toggle := TRUE;
- Help_Toggle := TRUE;
- IF VideoMode = 3 THEN { using a color monitor }
- BEGIN
- fgMain := White; { 15 }
- bgMain := Cyan * 16; { 3 }
- fgCmnd := LightCyan; { 11 }
- bgCmnd := Blue * 16; { 1 }
- fgName := White; { 15 }
- bgName := Brown * 16; { 6 }
- fgHOpt := White; { 15 }
- bgHOpt := Black * 16; { 0 }
- fgSlct := White; { 15 }
- bgSlct := Red * 16; { 4 }
- fgHelp := White; { 15 }
- bgHelp := Green * 16; { 2 }
- fgNErr := LightCyan; { 11 }
- bgNErr := Red * 16; { 4 }
- fgNote := Yellow; { 14 }
- bgNote := Blue * 16; { 1 }
- fgFErr := LightRed; { 12 }
- bgFErr := Black; { 0 }
- fgWarn := LightGreen; { 10 }
- bgWarn := Brown * 16; { 6 }
- fgInpt := LightCyan; { 11 }
- bgInpt := LightGray * 16; { 7 }
- FOR i := 1 TO 16 DO
- BEGIN
- fgMenu[i] := (i + 13) MOD 16;
- bgMenu[i] := ((i + 4) MOD 8) * 16;
- fgTitl[i] := (i + 14) MOD 16;
- bgTitl[i] := ((i + 3) MOD 8) * 16;
- END;
- END
- ELSE { using a black & white monitor }
- BEGIN
- fgMain := White; { 15 }
- bgMain := Black; { 0 }
- fgCmnd := Black; { 0 }
- bgCmnd := LightGray * 16; { 7 }
- fgName := Black; { 0 }
- bgName := Blue; { 1 - produces underline }
- fgHOpt := White; { 15 }
- bgHOpt := Black; { 0 }
- fgSlct := DarkGray; { 8 }
- bgSlct := LightGray * 16; { 7 }
- fgHelp := Black; { 0 }
- bgHelp := LightGray * 16; { 7 }
- fgNErr := Black; { 0 }
- bgNErr := LightGray * 16; { 7 }
- fgNote := Black; { 0 }
- bgNote := LightGray * 16; { 7 }
- fgFErr := Black; { 0 }
- bgFErr := LightGray * 16; { 7 }
- fgWarn := Black; { 0 }
- bgWarn := LightGray * 16; { 7 }
- fgInpt := LightGray; { 7 }
- bgInpt := Black; { 0 }
- FOR i := 1 TO 16 DO
- BEGIN
- fgMenu[i] := Black;
- bgMenu[i] := LightGray * 16;
- fgTitl[i] := Black;
- bgTitl[i] := Blue;
- END;
- END;
- Env_Changes := TRUE;
- Update_Menu_Env;
- END
- ELSE { have a real probelm here... }
- BEGIN
- Sound_Bell;
- WRITELN;
- WRITELN ('+=====================================+');
- WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
- WRITELN ('| |');
- WRITELN ('| "Menu Manager" detected the follow- |');
- WRITELN ('| ing UNRECOVERABLE error on the RE- |');
- WRITELN ('| SET of the file "MENUENV.DAT": |');
- WRITELN ('| |');
- WRITELN ('| IORESULT = ',IO_Error:5,' |');
- WRITELN ('| |');
- WRITELN ('+======================================+');
- HALT;
- END;
- UNTIL Opened;
-
- Get_Boolean_Toggle (Header_Toggle);
- Get_Boolean_Toggle (Date_Time_Toggle);
- Get_Boolean_Toggle (Help_Toggle);
-
- Get_ForeGround_Color (fgMain);
- Get_BackGround_Color (bgMain);
-
- Get_ForeGround_Color (fgCmnd);
- Get_BackGround_Color (bgCmnd);
-
- Get_ForeGround_Color (fgName);
- Get_BackGround_Color (bgName);
-
- Get_ForeGround_Color (fgHOpt);
- Get_BackGround_Color (bgHOpt);
-
- Get_ForeGround_Color (fgSlct);
- Get_BackGround_Color (bgSlct);
-
- Get_ForeGround_Color (fgHelp);
- Get_BackGround_Color (bgHelp);
-
- Get_ForeGround_Color (fgNErr);
- Get_BackGround_Color (bgNErr);
-
- Get_ForeGround_Color (fgNote);
- Get_BackGround_Color (bgNote);
-
- Get_ForeGround_Color (fgFErr);
- Get_BackGround_Color (bgFErr);
-
- Get_ForeGround_Color (fgWarn);
- Get_BackGround_Color (bgWarn);
-
- Get_ForeGround_Color (fgInpt);
- Get_BackGround_Color (bgInpt);
-
- FOR i := 1 TO 16 DO
- BEGIN
- Get_ForeGround_Color (fgMenu[i]);
- Get_BackGround_Color (bgMenu[i]);
- Get_ForeGround_Color (fgTitl[i]);
- Get_BackGround_Color (bgTitl[i]);
- END;
-
- {$I-}
- CLOSE (Menu_Env);
- {$I+}
- END;
-
- BEGIN
- IF NOT(VideoMode IN [2,3,7]) THEN
- BEGIN
- Sound_Bell;
- WRITELN;
- WRITELN ('+=====================================+');
- WRITELN ('|<<<<<<<<<<<<<<<<ERROR>>>>>>>>>>>>>>>>|');
- WRITELN ('| |');
- WRITELN ('| "Menu Manager" will only work in |');
- WRITELN ('| the following TEXT (non-graphics) |');
- WRITELN ('| modes: |');
- WRITELN ('| |');
- WRITELN ('| 2 - BW80 - 80x25 Black & White |');
- WRITELN ('| 3 - CO80 - 80x25 Color |');
- WRITELN ('| 7 - MONO - 80x25 Black & White |');
- WRITELN ('| |');
- WRITELN ('| "Menu Manager" detected MODE: ',VideoMode:2,' |');
- WRITELN ('| |');
- WRITELN ('| Use the DOS "MODE" command to set |');
- WRITELN ('| an appropriate mode. |');
- WRITELN ('| |');
- WRITELN ('+=====================================+');
- HALT;
- END;
-
- GetSubModelID;
- CASE SystemID OF
- $F8 : CASE SubModelID OF
- $00 : Config := 'IBM PS/2 Model 80 (16 MHz)';
- $01 : Config := 'IBM PS/2 Model 80 (20 MHz)';
- $09 : Config := 'IBM PS/2 Model 70 (16 MHz)';
- ELSE
- Config := CONCAT('IBM PS/2 386 Type ',CIS(SubModelID));
- END;
- $F9 : Config := 'IBM PC Convertible';
- $FA : CASE SubModelID OF
- $00 : Config := 'IBM PS/2 Model 30';
- $01 : Config := 'IBM PS/2 Model 25';
- ELSE
- Config := CONCAT('IBM PS/2 MCGA Type ',CIS(SubModelID));
- END;
- $FB : Config := 'IBM PC XT (256/640)';
- $FC : CASE SubModelID OF
- $00 : Config := 'IBM PC AT (6 MHz) / Compatible';
- $01 : Config := 'IBM PC AT (8 MHz) / Compatible';
- $02 : Config := 'IBM PC XT (286) / Compatbile';
- $04 : Config := 'IBM PS/2 Model 50';
- $05 : Config := 'IBM PS/2 Model 60';
- ELSE
- Config := CONCAT('IBM PS/2 VGA Type ',CIS(SubModelID));
- END;
- $FD : Config := 'IBM PCjr';
- $FE : Config := 'IBM PC XT / All Compatibles';
- $FF : Config := 'IBM PC';
- ELSE
- Config := CONCAT('UNKNOWN HARDWARE TYPE ',CIS(SystemID));
- END;
-
- IF Have3270 THEN
- CASE ActiveDispDev3270 OF
- $00 : Config2 := '5151 or 5272 Display & Adapter';
- $01 : Config2 := '3295 Display & Adapter';
- $02 : Config2 := '5151 or 5272, Adapter, XGA Graphics';
- $03 : Config2 := '5279 Display, 3270 PC G Adapter';
- $04 : Config2 := '5379 C01 Display,3270 PC GX Adapter';
- $05 : Config2 := '5379 M01 Display,3270 PC GX Adapter';
- $FF : Config2 := 'NOT A 3270 PC DISPLAY & ADAPTER';
- ELSE
- Config2 := CONCAT('UNKNOWN DISPLAY TYPE ',CIS(ActiveDispDev3270));
- END
- ELSE
- CASE ActiveDispDev OF
- $00 : Config2 := 'NO DISPLAY';
- $01 : Config2 := 'MDA With 5151 Monochrome';
- $02 : Config2 := 'CGA With 5153/4 Color';
- $03 : Config2 := 'EGA With 5153/4 Color';
- $04 : Config2 := 'EGA With 515x Color/Monochrome';
- $05 : Config2 := 'PGC With 5175 Color';
- $06 : Config2 := 'VGA With Analog Color/Monochrome';
- $07 : Config2 := 'VGA With Analog Color';
- $08 : Config2 := 'MCGA With Analog Color/Monochrome';
- $09 : Config2 := 'MCGA With Analog Color';
- ELSE
- Config2 := CONCAT('UNKNOWN DISPLAY TYPE ',CIS(ActiveDispDev));
- END;
-
- Config3 := CONCAT(CIS(CRTcols),' columns -by- ',CIS(CRTrows),' rows');
-
- Get_Environment_Variables;
-
- { set global change parameters }
- Changes := FALSE;
- Env_Changes := FALSE;
- END;
-