consputc()
是控制台输出函数。它将 a 写入char
控制台,在该操作系统中这似乎意味着串行端口和 CGA 文本显示。在执行此操作之前,它首先检查系统是否已经发生恐慌(恐慌是内核在遇到错误并且不知道该怎么做时进入的状态,因此决定恐慌,而不是继续下去,可能会让事情变得更糟并停止),如果是这样,则进入无限循环并禁用中断,因此只有系统重置才能离开紧急状态。
uartputc()
将 a 写入char
串行端口。它首先检查串行端口不忙,然后接受char
.
cgaputc()
将一个字符写入 CGA 文本帧缓冲区,并相应地调整光标位置。CGA 文本帧缓冲区从地址 0xb8000 开始,由交错(属性、字符)字节组成。默认模式,模式 3 是 80x25(80 列,25 行)文本模式。属性 07 表示黑色背景上的灰色文本。光标位置通过 CRT 控制器端口进行操作,该端口公开多个寄存器,寄存器 14 和 15 将光标位置保存为 14 位。访问 CRTC 的方法是,首先通过将其编号写入 0x3d4 处的索引 CRTC 端口来选择要访问的寄存器,然后从 0x3d5 处的 CRTC 控制/数据端口进行写入或读取。这些内容记录在名为vgadoc4b的文档和Ralph Brown 的中断列表中。