{/************************************************************************/}
{/* Load all control registers using a table */}
{/* First we determine type of display attached and then load register */}
{/* with values for mode 3 (if Color display) or mode 7 (if Mono display)*/}
{/************************************************************************/}
procedure select_mode_x;
const
MONO = 5;
VMONO = 7;
VCOLOR = 8;
mode_0 : array[0..60] of byte = ($D4,$23,$B,3,0,3,
$37,$27,$2D,$37, $31,$15,$04,$11,
0,7,6,7, 0,0,0,0,
$E1,$24,$C7,$14,8,$E0,$F0,$A3, $FF,
{/* Graphics Controller */}
0,0,0,0,0,$10,$0E,0, $FF,
{/* Attribute Controller */}
0,1,2,3,4,5,$14,7,
$38,$39,$3A,$3B, $3C,$3D,$3E,$3F,
8,0,$0F,0,0);
mode_3 : array[0..60] of byte = ($D4,$A7,01,3,0,3,
$5b,$4f,$53,$37, $51,$5b,$6c,$1f,
0,$0d,$0b,$0c, 0,0,0,0,
$5e,$2b,$5d,$28,$0f,$5e,$0a,$A3, $FF,
{/* Graphics Controller */}
0,0,0,0,0,$10,$0E,0, $FF,
{/* Attribute Controller */}
0,1,2,3,4,5,$14,7,
$38,$39,$3A,$3B, $3C,$3D,$3E,$3F,
8,0,$0F,0,0);
mode_7 : array[0..60] of byte = ($B4,$A6,0,3,0,3,
$60,$4F,$56,$3A, $51,$60,$70,$1F,
0,$0D,$0B,$0C,0,0,0,0,
$5E,$2E,$5D,$28,$0D,$5E,$6E,$A3, $FF,
{/* Graphics Controller */}
0,0,0,0,0,$10,$0A,0, $FF,
{/* Attribute Controller */}
0,8,8,8,8,8,8,8,
$10,$18,$18,$18, $18,$18,$18,$17,
$0E,0,$0F,8,0);
var
table_seg : word;
table_offset: word;
c : char;
begin
table_seg := seg (mode_7);
if get_display_type = VCOLOR then
begin
table_offset := ofs (mode_3);
write_register_set (table_seg,table_offset);
c := readkey;
set_mode(3);
end
else if get_display_type = MONO then
begin
table_offset := ofs (mode_7);
write_register_set (table_seg,table_offset);
c := readkey;
set_mode(3);
end
else if get_display_type = VMONO then
begin
table_offset := ofs (mode_7);
write_register_set (table_seg,table_offset);
c := readkey;
set_mode(3);
end
else
begin
table_offset := ofs (mode_0);
write_register_set (table_seg,table_offset);
c := readkey;
set_mode(3);
end;
end;