Metropoli BBS
VIEWER: progp002.pas MODE: TEXT (ASCII)
{/************************************************************************/}
{/* 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;
[ RETURN TO DIRECTORY ]