home *** CD-ROM | disk | FTP | other *** search
- 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}