这是题外话,对此的记忆,但挖掘我发现的代码:
/* 全局变量 */
静态字远 *ScrPtr;
/* 局部变量 */
静态词 VidSeg;
...
诠释 WinScreenHeight(无效)
{
return (*(unsigned char far *) 0x484) + 1;
}
诠释 WinScreenWidth(无效)
{
return (*(unsigned int far *) 0x44A);
}
无效 WinInit(){
设置模式(适配器类型());
ScrPtr = (Word far *) CreateFarPtr(VidSeg, 0x0000);
}
静态无效 SetMode(int VideoAddress)
{
开关(视频地址)
{
案例 VGA:
案例 MCGA:
案例 EGA:
案例 CGA:(字)VidSeg = 0xB800;
休息;
案例 MDA:(字)VidSeg = 0xB000;
休息;
案子 '?' : fprintf(stderr, "对不起,未知的视频适配器。\n");
fprintf(stderr, "这个程序需要 C/E/MC/VGA, Mono Adapter\n");
退出(1);
}
}
静态整数适配器类型(无效)
{
字符远 *VidMode;
char blreg, alreg;
VidMode = (char far *) 0x00000449L;
asm 移动斧头,0x1a00;
asm推bp;
asm int 0x10;
asm 弹出 bp;
asm mov blreg, bl;
asm mov alreg, 人;
如果(alreg == 0x1a && blreg >= 9)返回(MCGA);
if (alreg == 0x1a && blreg >= 7 && blreg <= 9) 返回(VGA);
if (blreg == 4 || blreg == 5) 返回(EGA);
if (*VidMode == 3) 返回(CGA);
if (*VidMode == 7) 返回(MDA);
返回('?');
}
希望这会有所帮助,最好的问候,汤姆。