home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of Shareware - Software Farm 2
/
wosw_2.zip
/
wosw_2
/
PASCAL
/
INFOP125.ZIP
/
PAGE_06.INC
< prev
next >
Wrap
Text File
|
1990-08-10
|
9KB
|
304 lines
procedure page_06;
type
cardtype = (standard, paradise, video7, ati);
var
i : byte;
VGAbuf : array[$00..$10] of byte;
xbyte : byte;
xword1 : word;
xword2 : word;
xword3 : word;
xword4 : word;
vgacard: cardtype;
vidmem : word;
s: string;
procedure captfont;
begin
caption1('Font Address');
writeln;
write('INT 1FH ');
segofs(longint(intvec[$1F]) shr 16, longint(intvec[$1F]) and $0000FFFF);
writeln
end; {captfont}
procedure showfont(a : byte);
begin
with regs do
begin
case a of
$00 : write('INT 1FH ');
$01 : write('INT 43H ');
$02 : write('ROM 8x14 ');
$03 : write('ROM 8x8 (lo)');
$04 : write('ROM 8x8 (hi)');
$05 : write('ROM 9x14 ');
$06 : write('ROM 8x16 ');
$07 : write('ROM 9x16 ')
end;
write(' ');
AX:=$1130;
BH:=a;
intr($10, regs);
segofs(ES, BP);
writeln
end
end; {showfont}
procedure int101210;
begin
with regs do
begin
AH:=$12;
BL:=$10;
intr($10, regs);
caption2('Display type');
case BH of
$00 : writeln('color');
$01 : writeln('monochrome')
else
unknown('display', BH, 2)
end;
caption2('Memory');
if vgacard <> standard then
Writeln(vidmem, 'K')
else
case BL of
$00 : writeln('64K');
$01 : writeln('128K');
$02 : writeln('192K');
$03 : writeln('256K')
else
unknown('size', BL, 2)
end;
caption2('Feature bits');
writeln(bin4(CH and $0F));
caption2('DIP switches');
writeln(bin4(CL and $0F))
end
end;
begin (* procedure page_06 *)
vgacard:=standard;
caption2('Display adapter');
case graphdriver of
CGA : begin
writeln('CGA');
captfont
end;
MCGA : begin
writeln('MCGA');
captfont;
showfont($01);
showfont($03);
showfont($04);
showfont($06)
end;
EGA..EGAmono : begin
writeln('EGA');
captfont;
showfont($01);
showfont($02);
showfont($03);
showfont($04);
showfont($05);
int101210;
xbyte:=mem[BIOSdseg : $0087];
caption2('Mode change preserves screen buffer');
yesorno(xbyte and $80 = $80);
caption2('EGA active');
yesorno(xbyte and $08 = $00);
caption2('Wait for display enable');
yesorno(xbyte and $04 = $04);
caption2('CGA cursor emulation');
yesorno(xbyte and $01 = $00);
(* PC Magazine 6:12 p.326 *)
caption2('Save area ');
xword1:=memw[BIOSdseg : $00AA];
xword2:=memw[BIOSdseg : $00A8];
segofs(xword1, xword2);
writeln;
(* PC Tech Journal 3:4 p.65 *)
caption2('Video parameter table ');
segofs(memw[xword1 : xword2 + 2], memw[xword1 : xword2]);
writeln;
caption2('Dynamic save area ');
xword3:=memw[xword1 : xword2 + 6];
xword4:=memw[xword1 : xword2 + 4];
if (xword3 > $0000) or (xword4 > $0000) then
begin
segofs(xword3, xword4);
writeln
end
else
writeln('(none)');
caption2('Auxiliary character generator');
xword3:=memw[xword1 : xword2 + 10];
xword4:=memw[xword1 : xword2 + 8];
if (xword3 > $0000) or (xword4 > $0000) then
begin
segofs(xword3, xword4);
writeln
end
else
writeln('(none)');
caption2('Graphics mode auxiliary table');
xword3:=memw[xword1 : xword2 + 14];
xword4:=memw[xword1 : xword2 + 12];
if (xword3 > $0000) or (xword4 > $0000) then
segofs(xword3, xword4)
else
write('(none)')
(* PC Tech Journal 3:4 p.67 *)
end;
hercmono : begin
writeln('Hercules or MDA');
captfont
end;
IBM8514 : begin
writeln('IBM 8514');
captfont
end;
ATT400 : begin
writeln('AT&T 400');
captfont
end;
VGA : begin
writeln('VGA');
caption3('Chipset');
vgacard:=standard;
with regs do
begin
AX:=$7F;
BH:=2;
Intr($10, regs);
if BH = $7F then
begin
vgacard:=paradise;
Write('Paradise');
vidmem:=word(64) * CH;
caption3('Frequencies are');
AX:=$7F;
BH:=$1F;
Intr($10, regs);
if (BL and $80) = $80 then
Writeln('multi-sync')
else
Writeln('fixed-sync')
end;
AX:=$6F00;
BX:=0;
Intr($10, regs);
if BX = $5637 then
begin
vgacard:=video7;
Write('Video 7');
AX:=$6F07;
Intr($10, regs);
if AL = $6F then
begin
vidmem:=256 * (AH and $7F);
caption3('memory type');
if AH and $80 = $80 then
Writeln('VRAM')
else
Writeln('DRAM')
end
else
vidmem:=256;
end;
s:='';
for xword1:=$31 to $39 do
s:=s + Chr(Mem[$C000:xword1]);
if s = '761295520' then
begin
vgacard:=ati;
Write('ATI');
s:=Chr(Mem[$C000:$40]) + Chr(Mem[$C000:$41]);
if s = '31' then
begin
xbyte:=Mem[$C000:$42];
caption3('mouse port');
yesorno2(xbyte and 2 = 2);
caption3('microchannel');
yesorno(xbyte and 8 = 8);
caption3(' non-interlaced 1024x768 available');
yesorno2(xbyte and 4 = 4);
xword1:=MemW[$C000:$10];
xbyte:=ATIinfo($BB, xword1) and $0F;
caption3('monitor');
case xbyte of
$0: Writeln('EGA');
$1: Writeln('analog monochrome');
$2: Writeln('TTL monochrome');
$3: Writeln('analog color');
$4: Writeln('RGB color');
$5: Writeln('Multisync or compatible');
$7: Writeln('PS/2 8514 or compatible');
$9: Writeln('NEC MultiSync 2A');
$A: Writeln('Tatung OmniScan');
$B: Writeln('NEC 3D or compatible');
$C: Writeln('TVM 3M');
$D: Writeln('NEC MultiSync XL/+/4D/5D');
$E: Writeln('TVM 3A');
$F: Writeln('TVM 2A');
else
Writeln('(unknown type - ', hex(xbyte, 2), ')');
end; {case}
xbyte:=ATIinfo($BB, xword1) and $20;;
if xbyte = $20 then
vidmem:=512
else
vidmem:=256;
end;
end;
end;
if vgacard = standard then
Writeln('(unknown)');
captfont;
showfont($01);
showfont($02);
showfont($03);
showfont($04);
showfont($05);
showfont($06);
showfont($07);
int101210;
with regs do
begin
AX:=$1009;
ES:=seg(VGAbuf);
DX:=ofs(VGAbuf);
intr($10, regs)
end;
caption2('Palette registers');
for i:=$00 to $0F do
write(hex(VGAbuf[i], 2), ' ');
writeln;
caption2('Border color');
writeln(hex(VGAbuf[$10], 2));
caption2('Color page');
with regs do
begin
AX:=$101A;
intr($10, regs);
writeln('$', hex(BH, 2));
caption2('Paging mode');
case BL of
$00 : writeln('4 pages of 64 registers');
$01 : writeln('16 pages of 16 registers')
else
unknown('mode', BL, 2)
end
end
end;
PC3270 : begin
writeln('3270 PC');
captfont
end
else
unknown('adapter', graphdriver, 4)
end {case}
end; {page_06}