home *** CD-ROM | disk | FTP | other *** search
- {bt
- (* Turbo Pascal version 4 *)
- {$B-,D-,F-,I-,L+,N-,R-,S-,T-,V-}
- {$M 4096,0,0}
-
- PROGRAM Key;
-
- { batch file enhancer }
-
- USES Dos, Crt, Env;
-
- VAR
- EnvVar : string;
- EnvError : integer;
- Regs : Registers;
-
- PROCEDURE CursorOff;
-
- begin
- with Regs do
- AX := $0300;
- Intr($10,Regs);
- with Regs do
- begin
- CX := CX or $2000;
- AX := $0100;
- end;
- Intr($10,Regs);
- end; { CursorOff }
-
- PROCEDURE CursorOn;
-
- begin
- with Regs do
- AX := $0300;
- Intr($10,Regs);
- with Regs do
- begin
- CX := CX and $DFFF;
- AX := $0100;
- end;
- Intr($10,Regs);
- end; { CursorOn }
-
- FUNCTION UpStr(St : string) : string;
-
- VAR
- i : byte;
-
- begin
- for i := 1 to Length(St) do
- St[i] := UpCase(St[i]);
- UpStr := St;
- end; { UpStr }
-
- FUNCTION UserSelect : char;
-
- VAR
- c : integer;
- p : integer;
- i : integer;
- ch : char; { user selection }
- Param : string; { user options }
-
- begin
- c := ParamCount;
- if c = 0 then
- begin
- Writeln('Invalid parameter');
- Halt;
- end
- else
- begin
- Param := '';
-
- { get user menu options }
- for i := 1 to c do
- Param := UpStr(ParamStr(i));
-
- { get user selection }
- repeat
- ch := UpCase(ReadKey);
- p := Pos(ch,Param);
- until (p <> 0) or (ch = #3) or (ch = #27);
- if (ch = #3) or (ch = #27) then
- ch := '0';
- UserSelect := ch;
- end; { else }
- end; { UserSelect }
-
- begin { Key }
- CursorOff;
- UseCurrentEnv := true;
- EnvVar := UserSelect;
- WriteEnvVar('KEY',EnvVar,EnvError);
- CursorOn;
- case EnvError of
- 1 : Halt(1);
- 2 : Halt(2);
- end; { case }
- end. { Key }
- {et