home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C!T ROM 2
/
ctrom_ii_b.zip
/
ctrom_ii_b
/
PROGRAM
/
PASCAL
/
IFP1S156
/
PAGE_05.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1992-12-30
|
5KB
|
178 lines
unit page_05;
interface
uses crt, graph, ifpglobl, ifpcomon, ifpextrn;
procedure page05;
implementation
procedure page05;
const
vidmodes: array [$00..$13] of string[36] = (
'(40 x 25 b/w text)',
'(40 x 25 color text)',
'(80 x 25 b/w text)',
'(80 x 25 color text)',
'(320 x 200 4 colors)',
'(320 x 200 4 colors, no color burst)',
'(640 x 200 2 colors)',
'(MDA text)',
'(160 x 200 16 colors)',
'(320 x 200 16 colors)',
'(640 x 200 4 colors)',
'(reserved)',
'(reserved)',
'(320 x 200 16 colors)',
'(640 x 200 16 colors)',
'(640 x 350 monochrome)',
'(640 x 350 16 colors)',
'(640 x 480 2 colors)',
'(640 x 480 16 colors)',
'(320 x 200 256 colors)');
var
i : byte;
xbyte : byte;
xint1 : integer;
xint2 : integer;
xword : word;
mono2: boolean;
procedure showdisp(a : string; b : byte);
const
dispmons: array [0..$0C] of string[25] = (
'(none)',
'MDA + 5151',
'CGA + 5153/5154',
'(reserved)',
'EGA + 5153/5154',
'EGA 5151',
'PGA + 5175',
'VGA + analog monochrome',
'VGA + analog color',
'(reserved)',
'MCGA + digital color',
'MCGA + digital monochrome',
'MCGA + analog color');
begin
caption2(a);
case b of
$00..$0C: Writeln(dispmons[b]);
$0D..$FE: Writeln('(reserved)');
$FF: dontknow
end;
end; {showdisp}
procedure showcolor(a : byte);
const
colors: array[black..white] of string[13] = (
'black', 'blue', 'green', 'cyan', 'red', 'magenta', 'brown',
'light gray', 'dark gray', 'light blue', 'light green',
'light cyan', 'light red', 'light magenta', 'yellow', 'white');
begin
if a <= white then
Write(colors[a])
else
unknown('color', a, 2)
end; {showcolor}
begin (* procedure page_05 *)
with regs do
begin
AX:=$1A00;
intr($10, regs);
if AL = $1A then
begin
showdisp('Active video subsystem ', BL);
showdisp('Inactive video subsystem', BH)
end
end;
caption2('Initial video mode');
case equip and $0030 of
$0000 : writeln('No display');
$0010 : writeln('40 x 25 color');
$0020 : writeln('80 x 25 color');
$0030 : writeln('80 x 25 monochrome')
end;
caption2('Current video mode');
xbyte:=lo(lastmode);
Write(xbyte, ' ');
if xbyte <= $13 then
Writeln(vidmodes[xbyte])
else
unknown('video mode', xbyte, 2);
caption2('Current display page');
writeln(vidpg);
caption2('Graphics modes');
getmoderange(graphdriver, xint1, xint2);
if graphresult = grok then
writeln(xint2 + 1 - xint1)
else
writeln(0);
caption2('Video buffer (offset)');
writeln(hex(memw[BIOSdseg : $004E], 4));
caption2('Video buffer size (bytes)');
writeln(memw[BIOSdseg : $004C]);
caption2('Active display port');
xword:=memw[BIOSdseg : $0063];
write('$', hex(xword, 3), ' ');
if xword = $03B4 then
writeln('(monochrome)')
else
if xword = $03D4 then
writeln('(color)')
else
dontknow;
caption2('CRT mode register');
writeln('$', hex(mem[BIOSdseg : $0065], 2));
caption2('Current palette');
writeln('$', hex(mem[BIOSdseg : $0066], 2));
caption2('Colors');
caption1('·');
mono2:=mono;
mono:=false;
for i:=black to white do
begin
textcolor(i);
write('█')
end;
mono:=mono2;
caption1('·');
writeln;
caption2('Current colors');
if (attrsave and $80) = $80 then
write('blinking ');
showcolor(attrsave and $0F);
write(' on ');
showcolor(attrsave and $70 shr 4);
writeln;
caption2('Text rows');
writeln(tlength);
caption2('Text columns');
writeln(twidth);
if graphdriver in [EGA, MCGA, VGA] then
begin
caption2('Scan lines/character');
with regs do
begin
AX:=$1130;
BH:=$00;
intr($10, regs);
writeln(CX)
end
end;
caption2('Cursor scan lines');
with regs do
begin
AH:=$03;
BH:=vidpg;
intr($10, regs);
writeln(CH, '-', CL)
end
end;
end.