home *** CD-ROM | disk | FTP | other *** search
/ Frostbyte's 1980s DOS Shareware Collection / floppyshareware.zip / floppyshareware / DOOG / INFOP131.ZIP / PAGE_10.INC < prev    next >
Text File  |  1990-09-04  |  6KB  |  245 lines

  1. procedure page_10;
  2.  
  3. var
  4.   i : 1..63;
  5.   xbool1 : boolean;
  6.   xbool2 : boolean;
  7.   xbool3 : boolean;
  8.   xchar : char;
  9.   xword1: word;
  10.  
  11. procedure muxint(a : string; b : byte);
  12.  
  13. begin
  14. caption3(a);
  15.   with regs do begin
  16.     AH:=b;
  17.     AL:=0;
  18.     intr($2F, regs);
  19.     case AL of
  20.       $00 : writeln('no; OK to load');
  21.       $01 : writeln('no; not OK to load');
  22.       $FF : writeln('yes')
  23.       else
  24.         unknown('status', AL, 2)
  25.     end
  26.   end
  27. end;
  28.  
  29.   begin (* procedure page_10 *)
  30.   caption2('Multiplex interrupt ($2F)');
  31.   Window(1, 4, twidth div 2, tlength - 2);
  32.   muxint('DOS            ', $12);
  33. { muxint('DRIVER.SYS     ', $08);}
  34.   muxint('DISPLAY.SYS    ', $B0);
  35.   muxint('ANSI.SYS       ', $1A);
  36.   muxint('PRINT          ', $01);
  37.   muxint('ASSIGN         ', $06);
  38. (*
  39. **  Byte 12:12 p. 176C, Duncan, and many others, all of whom mistakenly give
  40. **  AH = $02
  41. *)
  42.   muxint('SHARE          ', $10);
  43. (*  muxint('FASTOPEN       ', $xx);*)
  44.   muxint('NLSFUNC        ', $14);
  45.   muxint('GRAFTABL       ', $B0);
  46. (*  muxint('KEYB           ', $B8);*)
  47.   muxint('NETBIOS append ', $87);
  48.   muxint('NETBIOS network', $88);
  49. (*  Byte 12:12 p. 180.  PC Tech Journal 3:11 p.104 gives AH = $BB  *)
  50.   muxint('SHELLB         ', $19);
  51.   muxint('XMA2EMS        ', $1B);
  52.   muxint('APPEND         ', $B7);
  53.   caption3('CDROM          ');
  54.   with regs do
  55.     begin
  56.     AX:=$1500;
  57.     BX:=0;
  58.     Intr($2F, regs);
  59.     case AL of
  60.       $00 : writeln('no; OK to load');
  61.       $01 : writeln('no; not OK to load');
  62.       $FF : begin
  63.             Write('yes');
  64.             caption3('on drives');
  65.             Write(Chr(CX + 65));
  66.             caption3('through');
  67.             Write(Chr(CX + BX + 65 - 1))
  68.             end;
  69.     end; {case}
  70.     end;
  71.   caption3('Network        ');
  72.   with regs do
  73.     begin
  74.     AX:=$B800;
  75.     Intr($2F, regs);
  76.     if AL = 0 then
  77.       Writeln('no; OK to load')
  78.     else
  79.       begin
  80.       Write('yes');
  81.       caption3('this is a');
  82.       if BX and $0040 = $40 then
  83.         Writeln('server')
  84.       else
  85.         if BX and $0004 = $4 then
  86.           Writeln('messenger')
  87.         else
  88.           if BX and $0080 = $80 then
  89.             Writeln('receiver')
  90.           else
  91.             if BX and $0008 = $8 then
  92.               Writeln('redirector');
  93.       end;
  94.     end;
  95.   pause3(3);
  96.   caption3('JP Software''s 4DOS');
  97.   with regs do
  98.     begin
  99.     AX:=$D44D;
  100.     BX:=0;
  101.     Intr($2F, regs);
  102.     if AX <> $44DD then
  103.       Writeln('no')
  104.     else
  105.       begin
  106.       Writeln('yes');
  107.       caption3('  version');
  108.       xword1:=BH;
  109.       Write(BL, Chr(country[9]));
  110.       zeropad(xword1);
  111.       caption3('shell no.');
  112.       Writeln(DL);
  113.       caption3('  4DOS PSP segment');
  114.       Writeln(hex(CX, 4))
  115.       end;
  116.     end;
  117.   pause3(2);
  118.   caption3('Microsoft Windows');
  119.   with regs do
  120.     begin
  121.     AX:=$1600;
  122.     Intr($2F, regs);
  123.     case AL of
  124.     $01,$FF: begin
  125.              Writeln('yes');
  126.              caption3('  version');
  127.              Writeln('Windows/386 2.x')
  128.              end;
  129.     $00,$80: begin
  130.              AX:=$4680;
  131.              Intr($2F, regs);
  132.              if AX = 0 then
  133.                begin
  134.                Writeln('yes');
  135.                caption3('  mode');
  136.                Writeln('Real or Standard')
  137.                end
  138.              else
  139.                Writeln('no');
  140.              end;
  141.     $02..$7F,$81..$FE: begin
  142.                        Writeln('yes');
  143.                        caption3('  version');
  144.                        Writeln(AL, Chr(country[9]), AH, ' enhanced mode');
  145.                        end;
  146.     end; {case}
  147.     end;
  148.   caption3('Quarterdeck''s Desqview');
  149.   with regs do
  150.     begin
  151.     AX:=$2B01;
  152.     CX:=$4445; {DE}
  153.     DX:=$5351; {SQ}
  154.     MsDos(regs);
  155.     if AL = $FF then
  156.       Writeln('no')
  157.     else
  158.       begin
  159.       Writeln('yes');
  160.       caption3('  version');
  161.       Writeln(BH, Chr(country[9]), BL);
  162.       end;
  163.     end;
  164.   window(1 + twidth div 2, 3, twidth, tlength - 2);
  165.   if osmajor >=4 then
  166.     with regs do
  167.       begin
  168.       AX:=$B700;
  169.       Intr($2F, regs);
  170.       if AL=$FF then
  171.         begin
  172.         caption2('APPEND ');
  173.         AX:=$B706;
  174.         Intr($2F, regs);
  175.         if (BX and 1) = 1 then
  176.           Write('enabled ');
  177.         if (BX and $2000) = $2000 then
  178.           Write('/PATH ');
  179.         if (BX and $4000) = $4000 then
  180.           Write('/E ');
  181.         if (BX and $8000) = $8000 then
  182.           Write('/X');
  183.         Writeln;
  184.         caption2('APPEND path');
  185.         AX:=$B704;
  186.         Intr($2F, regs);
  187.         while Mem[ES:DI] <> 0 do
  188.           begin
  189.           Write(Chr(mem[ES:DI]));
  190.           Inc(DI)
  191.           end;
  192.         Writeln
  193.         end
  194.       end;
  195.   with regs do begin
  196.     AX:=$0100;
  197.     intr($2F, regs);
  198.     if AL = $FF then begin
  199.       caption2('PRINT queue');
  200.       AX:=$0104;
  201.       intr($2F, regs);
  202.       xbool1:=true;
  203.       xbool2:=false;
  204.       repeat
  205.         xchar:=char(mem[DS : SI]);
  206.         if xchar > #0 then
  207.           begin
  208.           if xbool1 then
  209.             begin
  210.             xbool1:=false;
  211.             writeln;
  212.             window(2 + twidth div 2, wherey + hi(windmin), twidth, tlength - 2)
  213.             end;
  214.           pause2;
  215.           if endit then
  216.             Exit;
  217.           write(xchar);
  218.           i:=1;
  219.           xbool3:=false;
  220.           repeat
  221.             xchar:=char(mem[DS : SI + i]);
  222.             if xchar > #0 then
  223.               begin
  224.               write(xchar);
  225.               inc(i)
  226.               end
  227.             else
  228.               begin
  229.               writeln;
  230.               xbool3:=true
  231.               end
  232.           until xbool3;
  233.           inc(SI, 64)
  234.           end
  235.         else
  236.           xbool2:=true
  237.       until xbool2;
  238.       if xbool1 then
  239.         writeln('(empty)');
  240.       AX:=$0105;
  241.       intr($2F, regs)
  242.     end
  243.   end
  244. end;
  245.