文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>lab1:kern/console.c: cga_init

lab1:kern/console.c: cga_init

时间:2009-02-27  来源:朝花夕拾

//CGA 是 Color Graphics Adapter 的缩写,信号类型为 TTL,最多能显示 16 色,显示卡端的接口为 9 针母插座

void cga_init(void)
{
  volatile uint16_t *cp;
  uint16_t was;
  unsigned pos;

 cp = (uint16_t*) (KERNBASE + CGA_BUF); 
/*
CGA_BUF: 0xB8000 (物理地址)
为了使地址转换后(-KERNBASE)还是0xB8000,那么就需要+KERNBASE
*/
was = *cp; //保存当前光标所在值
*cp = (uint16_t)0xA55A; // ?? *********
if (*cp != 0xA55A) {
 cp = (uint16_t*)(KERNBASE + MONO_BUF);
 addr_6845 = MONO_BASE; /* CGA_BASE: 0x3B4 */
}else {
  *cp = was; // 还原原来的值
  addr_6845 = CGA_BASE; /* CGA_BASE: 0x3D4 */
  }
  /* Extract cursor location */
  outb(addr_6845, 14); // 写控制寄存器,0x0E:获得cursor location high,其值在下一个寄存器
  pos = inb(addr_6845 + 1) << 8; 
  outb(addr_6845, 15); // 写控制寄存器,0x0F:获得cursor location low,其值在下一个寄存器
  pos |= inb(addr_6845 + 1);

  crt_buf = (uint16_t*) cp; //临时变量赋值给全局变量
  crt_pos = pos;    //保存当前光标位置
}
相关阅读 更多 +
排行榜 更多 +
爱是小事最新版

爱是小事最新版

休闲益智 下载
悬案2刹那惊颤游戏

悬案2刹那惊颤游戏

冒险解谜 下载
几何飞行内购修改版

几何飞行内购修改版

飞行射击 下载