Category : Pascal Source Code
Archive   : INFOS155.ZIP
Filename : PAGE_10.PAS

 
Output of file : PAGE_10.PAS contained in archive : INFOS155.ZIP
unit page_10;
interface

uses crt, dos, ifpglobl, ifpcomon;

procedure page10;

implementation

procedure page10;

var
i : 1..63;
xbool1 : boolean;
xbool2 : boolean;
xbool3 : boolean;
xchar : char;
xword1: word;
xword2: word;
regs: registers;
xbyte: byte;
count: word;
s: string;

procedure muxint(a : string; b : byte);
begin
caption3(a);
with regs do
begin
AH:=b;
AL:=0;
BX:=0;
CX:=0;
DX:=0;
Intr($2F, regs);
case AL of
$00 : Writeln('no; OK to load');
$01 : Writeln('no; not OK to load');
$FF, 2 : Writeln('yes')
else
unknown('status', AL, 2)
end
end
end;

function windev(device: byte): word;
var
regs: registers;
saveit: word;

begin
with regs do
begin
AX:=$1682;
Intr($2F, regs);
AX:=$170A;
DX:=device;
Intr($2F, regs);
windev:=AX
end
end;

begin (* procedure page_10 *)
caption1('');
Writeln('Multiplex interrupt ($2F)');
Window(1, 4, twidth div 2, tlength - 2);
muxint('DOS ', $12);
muxint('DRIVER.SYS ', $08);
muxint('DISPLAY.SYS ', $B0);
muxint('ANSI.SYS ', $1A);
muxint('EGA.SYS ', $BC);
muxint('PRINT ', $01);
muxint('ASSIGN ', $06);
(*
** Byte 12:12 p. 176C, Duncan, and many others, all of whom mistakenly give
** AH = $02
*)
muxint('SHARE ', $10);
(* muxint('FASTOPEN ', $xx);*)
muxint('NLSFUNC ', $14);
muxint('GRAFTABL (4.0-)', $B0);
caption3('GRAFTABL (5.0+)');
with regs do
begin
AX:=$2300;
BX:=0;
CX:=0;
DX:=0;
Intr($2F, regs);
if AH=$FF then
Writeln('yes')
else
Writeln('no; OK to load');
end;
(* muxint('KEYB ', $B8);*)
muxint('NETBIOS append ', $87);
muxint('NETBIOS network', $88);
(* Byte 12:12 p. 180. PC Tech Journal 3:11 p.104 gives AH = $BB *)
muxint('SHELLB ', $19);
muxint('XMA2EMS ', $1B);
muxint('APPEND ', $B7);
muxint('GRAPHICS.COM ', $15);
muxint('Crit.err.handlr', $05);
pause3(-2);
if endit then
Exit;
caption3('CDROM ');
with regs do
begin
AX:=$1500;
BX:=0;
Intr($2F, regs);
if BX = 0 then
Writeln('no; OK to load')
else
case AL of
$00 : Writeln('no; OK to load');
$01 : Writeln('no; not OK to load');
$FF : begin
Writeln('yes');
caption3(' on drives');
Write(Chr(CX + 65));
caption3('through');
Writeln(Chr(CX + BX + 65 - 1))
end;
end; {case}
end;
caption3('Network ');
with regs do
begin
AX:=$B800;
Intr($2F, regs);
if AL = 0 then
Writeln('no; OK to load')
else
begin
Write('yes');
caption3('this is a');
if BX and $0040 = $40 then
Writeln('server')
else
if BX and $0004 = $4 then
Writeln('messenger')
else
if BX and $0080 = $80 then
Writeln('receiver')
else
if BX and $0008 = $8 then
Writeln('redirector');
end;
end;
muxint('DOSKEY ', $48);
caption3('DOS Extender ');
with regs do
begin
AX:=$F100;
BX:=0;
CX:=0;
DX:=0;
Intr($2F, regs);
if (AL = $FF) and (SI =$444F {DO}) and (DI = $5358 {SX}) then
Writeln('yes')
else
Writeln('no; OK to load');
end;
window(1 + twidth div 2, 3, twidth, tlength - 3);
if osmajor >=4 then
with regs do
begin
AX:=$B700;
Intr($2F, regs);
if AL=$FF then
begin
caption2('APPEND ');
AX:=$B706;
Intr($2F, regs);
if (BX and 1) = 1 then
Write('enabled ');
if (BX and $2000) = $2000 then
Write('/PATH ');
if (BX and $4000) = $4000 then
Write('/E ');
if (BX and $8000) = $8000 then
Write('/X');
Writeln;
caption2('APPEND path');
AX:=$B704;
Intr($2F, regs);
while Mem[ES:DI] <> 0 do
begin
Write(Chr(mem[ES:DI]));
Inc(DI)
end;
Writeln
end
end;
with regs do
begin
AX:=$0100;
intr($2F, regs);
if AL = $FF then
begin
caption2('PRINT queue');
AX:=$0104;
intr($2F, regs);
xbool1:=true;
xbool2:=false;
repeat
xchar:=char(mem[DS : SI]);
if xchar > #0 then
begin
if xbool1 then
begin
xbool1:=false;
Writeln;
window(2 + twidth div 2, wherey + hi(windmin), twidth, tlength - 3)
end;
pause2;
if endit then
Exit;
Write(xchar);
i:=1;
xbool3:=false;
repeat
xchar:=char(mem[DS : SI + i]);
if xchar > #0 then
begin
Write(xchar);
inc(i)
end
else
begin
Writeln;
xbool3:=true
end
until xbool3;
inc(SI, 64)
end
else
xbool2:=true
until xbool2;
if xbool1 then
Writeln('(empty)');
AX:=$0105;
Intr($2F, regs)
end;
end;
if osmajor = 5 then
begin
xword1:=MemW[devseg:devofs + $39];
xword2:=MemW[devseg:devofs + $37];
if (xword1 <> 0) and (xword2 <> 0) then
begin
caption2('SETVER list at ');
segofs(xword1, xword2);
Writeln;
while Mem[xword1:xword2] <> 0 do
begin
xbyte:=Mem[xword1:xword2];
Inc(xword2);
s:='';
for count:=xword2 to xword2 + (xbyte - 1) do
s:=s + Chr(Mem[xword1: count]);
Inc(xword2, xbyte);
Write(s, ' ':(14 - Length(s)), Mem[xword1:xword2], decimal);
zeropad(mem[xword1:xword2 + 1]);
Writeln;
pause2;
if endit then
Exit;
Inc(xword2, 2);
end;
end
end;
end;
end.


  3 Responses to “Category : Pascal Source Code
Archive   : INFOS155.ZIP
Filename : PAGE_10.PAS

  1. Very nice! Thank you for this wonderful archive. I wonder why I found it only now. Long live the BBS file archives!

  2. This is so awesome! 😀 I’d be cool if you could download an entire archive of this at once, though.

  3. But one thing that puzzles me is the “mtswslnkmcjklsdlsbdmMICROSOFT” string. There is an article about it here. It is definitely worth a read: http://www.os2museum.com/wp/mtswslnk/