[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]