[Back to DOS SWAG index] [Back to Main SWAG index] [Original]
(*
Program Name : Read Environment v.1.0
Compiler : Turbo Pascal v.6.0
Jose Antonio Noda
Compuserve ID 100667,2523
*)
Program ReadEnvironment;
Uses Crt, Dos;
Function Hex(a : word; b : byte) : string;
const
digit : array[$0..$F] of char = '0123456789ABCDEF';
var
i : byte;
xstring : string;
Begin
xstring:='';
for i:=1 to b do
Begin
Insert(digit[a and $000F], xstring, 1);
a:=a shr 4
end;
hex:=xstring
end;
procedure ReadEnviro;
var
temp, temp1, envseg, envlen, envused: word;
foundit, endfound: boolean;
osmajor : byte;
osminor : byte;
i : Word;
Begin
temp:=MemW[PrefixSeg:$16];
foundit:=false;
while not foundit do
begin
temp1:=MemW[temp:$16];
if (temp1 = 0) or (temp1 = temp) then
foundit:=true
else
temp:=temp1
end;
envseg:=MemW[temp:$2C];
if (envseg = 0) or ((osminor > 19) and (osminor < 30)) then
envseg:=temp + MemW[temp-1:3] + 1;
envlen:=MemW[envseg - 1:3] * 16;
envused:=0;
endfound:=false;
while not endfound do
if MemW[envseg:envused] = 0 then
endfound:=true
else
Inc(envused);
Inc(envused, 2);
Writeln('Environment');
Write(' Segment ');
Write(hex(envseg, 4));
Write(' Size ');
Write(envlen:4);
Write(' Used ');
Write(envused:4);
Write(' Free ');
Writeln((envlen - envused):4);
Writeln;
Writeln('Variables');
Writeln;
for i:=1 to envcount do begin
writeln(envstr(i))
end
end;
Begin
ClrScr;
Writeln('ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿');
Writeln('³ Read Environment v.1.0 (C) Jose Antonio Noda. ³');
Writeln('ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ');
Writeln;
ReadEnviro;
Writeln;
end.
[Back to DOS SWAG index] [Back to Main SWAG index] [Original]