Contributor: JON PHIPPS 
{
Answering a msg of , from Elad Nachman to Per-Eric
Larsson:
}
program environ;
uses dos,crt;
Const
 Multiplex = 2ドルf;
 std_dos = 21ドル;
var
 regs : registers;
 {windows information variables}
 winstall : boolean;
 hi_winver : integer;
 lo_winver : integer;
 _386enh : boolean;
 Ver_mach : word;
 {OS information Variables}
 _4dosinst : boolean;
 Hi_4d_ver : integer;
 Lo_4d_ver : integer;
 shell_num : integer;
 Hi_dosver : integer;
 Lo_dosver : integer;
 {DesqView Information variables}
 dv_inst : boolean;
 Hi_dv_ver : integer;
 Lo_dv_ver : integer;
 procedure v_id; {return windows 3.x 386enh mode virtual machine number}
 begin
 regs.ax:=1638ドル;
 intr(multiplex,regs);
 ver_mach := regs.bx;
 end;
 procedure winstal;{check for windows 3.x install}
 begin
 regs.ax:=160ドルA;
 intr(multiplex,regs);
 if regs.ax = 0000ドル then
 begin
 winstall := true;
 Hi_winver := regs.bh;
 lo_winver := regs.bl;
 if regs.cx = 0003ドル then
 begin
 _386enh := true;
 v_id;
 end
 else
 begin
 _386enh := false;
 ver_mach := 0;
 end;
 end
 else
 begin
 {
 this point is only reached if windows isNOT
 detected we therefore set ALL windows id vars
 to impossible numbers.
 }
 winstall := false;
 Hi_winver := 0;
 lo_winver := 0;
 ver_mach := 0;
 end;
 end;
 procedure dvinstall;{check for dv}
 begin
 if winstall then
 begin
 dv_inst := false;
 exit;
 end;
 regs.ax := 2ドルb00;
 regs.cx := 4445ドル;
 regs.dx := 5351ドル;
 regs.ax := 0001ドル;
 intr(std_dos,regs);
 if regs.al$ff then
 begin
 hi_dv_ver := regs.bh;
 lo_dv_ver := regs.bl;
 dv_inst := true;
 end
 else
 begin
 Hi_dv_ver := 0;
 Lo_dv_ver := 0;
 dv_inst := false;
 end;
 end; { dv install check}
 procedure I_4dos;
 begin
 regs.ax := $d44d;
 regs.bx := 0000ドル;
 intr(std_dos,regs);
 if regs.ax = 44ドルdd then
 begin
 hi_4d_ver := regs.bh;
 lo_4d_ver := regs.bl;
 _4dosinst := true;
 shell_num := regs.dl;
 end
 else
 begin { no 4dos }
 _4dosinst := false;
 hi_4d_ver := 0;
 lo_4d_ver := 0;
 shell_num := -1;
 end;
 end;
 procedure dos_ver; {get dos version}
 begin
 regs.ax:=3001ドル;
 intr(std_dos,regs);
 hi_dosver:=regs.al;
 lo_dosver:=regs.ah;
 end;
 procedure display_info;
 begin
 clrscr;
 gotoxy(4,5);
 writeln('Os information');
 gotoxy(4,12);
 writeln('Windows 3.x information');
 gotoxy(4,17);
 writeln('Dv information');
 if _4dosinst then
 begin
 gotoxy(6,7);
 writeln('4dos version: ',hi_4d_ver,':',lo_4d_ver);
 gotoxy(6,8);
 writeln('4dos subshell#: ',shell_num);
 gotoxy(6,9);
 writeln('MSdos version: ',hi_dosver,':',lo_dosver);
 end
 else
 begin
 gotoxy(6,7);
 writeln('MSdos version: ',hi_dosver,':',lo_dosver);
 gotoxy(6,8);
 writeln('4dos.com not detected in this window.');
 end;
 if winstall then
 begin
 gotoxy(6,13);
 writeln('Windows Version: ',Hi_winver,':',lo_winver);
 gotoxy(6,14);
 if _386enh then
 begin
 writeln('Running in 386 enhanced mode');
 gotoxy(6,15);
 writeln('386Enh virtual machine ID: ',ver_mach);
 end
 else
 begin
 writeln('Running in Standard mode');
 gotoxy(6,15);
 writeln('386Enh Virtual Machine ID: Not applicable in standard mode');
 end;
 end
 else
 begin
 gotoxy(6,13);
 writeln('Microsoft windows not installed');
 end;
 if dv_inst then
 begin
 gotoxy(6,18);
 writeln('Desqview Version: ',hi_dv_ver,':',lo_dv_ver);
 end
 else
 begin
 gotoxy(6,18);
 writeln('DesqView not installed');
 end;
 end;
 begin
 winstal;
 I_4dos;
 dos_ver;
 dvinstall;
 display_info;
 repeat
 until readkey = #27;
 end.
 

AltStyle によって変換されたページ (->オリジナル) /