home *** CD-ROM | disk | FTP | other *** search
- procedure page_10;
-
- var
- i : 1..63;
- xbool1 : boolean;
- xbool2 : boolean;
- xbool3 : boolean;
- xchar : char;
- xword1: word;
-
- procedure muxint(a : string; b : byte);
-
- begin
- caption3(a);
- with regs do begin
- AH:=b;
- AL:=0;
- intr($2F, regs);
- case AL of
- $00 : writeln('no; OK to load');
- $01 : writeln('no; not OK to load');
- $FF : writeln('yes')
- else
- unknown('status', AL, 2)
- end
- end
- end;
-
- begin (* procedure page_10 *)
- with regs do
- begin
- AX:=$3800;
- DS:=seg(country);
- DX:=ofs(country);
- MSDOS(regs);
- end;
- caption2('Multiplex interrupt ($2F)');
- writeln;
- muxint('DOS ', $12);
- { muxint('DRIVER.SYS ', $08);}
- muxint('DISPLAY.SYS ', $B0);
- muxint('ANSI.SYS ', $1A);
- 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 ', $B0);
- (* 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);
- caption3('CDROM ');
- with regs do
- begin
- AX:=$1500;
- BX:=0;
- Intr($2F, regs);
- case AL of
- $00 : writeln('no; OK to load');
- $01 : writeln('no; not OK to load');
- $FF : begin
- Write('yes');
- caption3('on drives');
- Write(Chr(CX + 65));
- caption3('through');
- Write(Chr(CX + BX + 65 - 1))
- end;
- end;
- 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;
- caption3('JP Software''s 4DOS');
- with regs do
- begin
- AX:=$D44D;
- BX:=0;
- Intr($2F, regs);
- if AX <> $44DD then
- Writeln('no')
- else
- begin
- Writeln('yes');
- caption3(' version');
- xword1:=BH;
- Write(BL, Chr(country[9]));
- zeropad(xword1);
- caption3('shell no.');
- Writeln(DL);
- caption3(' 4DOS PSP segment');
- Write(hex(CX, 4))
- end
- end;
- window(1 + twidth div 2, 3, twidth, tlength - 2);
- 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 - 2)
- 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
- end;