早期的图形模式和显卡。
以前的显示器是CRT也就是玻璃显像管的显示器,现在是液晶显示器。大有不同。
以前的单色显示器有黑白单显,绿色单显,黑白单显好用一点,所以绿色的单显很少见。
黑白的显示色彩用灰度,分辨率是720X348是电视的高分辨PAL显示。
彩色CRT显示是640X480是N制式分辨率,可以显示256种彩色,已经很不错了。
显示器的一屏含的数据量为连续的32K字节空间。
在HGC 灰度图形显示模式下,90X348=31320可读/可写字节。
32K字节分4个区,每区8K(2000H)
第0页: B0000H,B2000H,B4000H,B6000这四个区。
第1页:B8000H... ...
像素点与内存地址之间的关系是:
ix=(row/4)*90+(row%4)*8192+col/8
ix是像素,row是行,col是列。
我以HGC黑白显示器的卡来举例说明显卡寄存器:
HGC卡的寄存器包括:M6845索引寄存器,M6845数据寄存器,方式寄存器,状态寄存器,页面控制寄存器。
M6845索引寄存器I/O地址为3B4h,是只写寄存器,可以写数据,向数据寄存器R写数据时先写这里(0<=I<=15)
M6845数据寄存器I/O地址为3B5h,共16个寄存器
方式寄存器I/O地址为3B8h,是只写寄存器。
状态寄存器I/O地址为3BAh,是只读寄存器。
页面控制寄存器I/O 端口地址为 03bfh
不同图形模式下的M6845数据寄存器编程数值
--------------------------------------------------------------------------
索引值 寄存器号 寄存器名 720X348 640X400 模拟CGA
0h R0 水平字符总数 35h 33h 33h
1h R1 水平显示字符总数 2dh 28h 28h
2h R2 水平同步位置 2eh 29h 29h
3h R3 水平同步宽度 07h 07h 0ah
4h R4 垂直字符总数 5bh 68h 68h
5h R5 垂直总数调整 02h 02h 02h
6h R6 垂直显示字符行数 57h 64h 64h
7h R7 垂直同步位置 57h 64h 64h
8h R8 隔行扫描方式 02h 02h 02h
9h R9 最大扫描线地址 03h 03h 01h
0ah R10 光标起始 00h 06h 06h
0bh R11 光标结束 01h 07h 07h
0ch R12 起始地址(高位) 00h 00h 00h
0dh R13 起始地址(低位) 00h 00h 00h
0eh R14 光标(高位) 00h 00h 00h
0fh R15 光标(低柆) 00h 00h 00h
---------------------------------------------------------------------------
方式寄存器是一个只写寄存器:
位0 =1 80X25字符模式 =0 40X25字符模式,HGC字符模式=1
位1 =1 选择HGC单色图形模式
位3 =1 模式改变期可以有视频信号
位5 =1 在字符模式下,高亮属性变成闪烁属性
位7 =1 32K一页,HGC图形模式的两种 720X348,640X400 =0 16K一页,CGA模式
其它位保留
实际应用HGC单色模式,编程值是8bh
状态寄存器:
位0 =1 屏幕处于显示允许期间
位3 =1 屏上内容正被显示, =0 处于垂直回扫期间
位7 =1 屏上数据正在显示, =0 处于垂直回扫期间
其它位保留
页面寄存器是一个只写寄存器:
位1 =1 可以使用显示内存第1页,HGC有完整的64K内存
HGC卡模拟CGA 第1页必须可以使用
其它位保留
HGC图形卡方式 值=03时可以使用第1页,值=01时不可以使用第1页(这里有可能只显示1页,说法有误)
以前家里的电脑是286和HGC卡,当测试显卡时,发现数据在0A0000h之下也就是09fff0到09ffff之间写数据会显示屏错。可能值已经安排到这里了。
后来在286中写了代码,后来无保留的卖给了同学,再去同学家,电脑烧掉了。我赠送了电脑带的所有软件磁盘,一到两盒。软件不多,个人使用方便,不包括他。