无法使用VGA下划线位置寄存器设置下划线位置

我正在为自定义操作系统编写终端驱动程序。我想让终端机了解控制光标位置,形状,颜色等的常见vt-100转义序列。因此,在实现“下划线/下划线”功能时,我要写入下划线位置寄存器VGA/SVGA Video Programming - CRT Controller Registers,但它不起作用。没有下划线出现(实际上我不知道在哪里看)。下面是DOS框的代码和屏幕截图。

  ; Read the Underline Location Register
  mov dx,0x3D4
  mov al,0x14
  out dx,al      ; 0x14 is the index of the Underline Location Register

  mov dx,0x3D5
  in al,dx

  ; I want an underscore at 6th scan line,so I and 0b00101 with the value I got before
  and ax,0xE5        ; 0b1110 0101
  push ax
    ; I write back the value to Underline regiser
    mov dx,0x3D4
    mov al,0x14
    out dx,al
  pop ax

  mov dx,0x3D5
  out dx,al

但是,没有轮廓出现。设置下划线寄存器后,我正在写一些文本(第二个十六进制值),但是没有下划线。

无法使用VGA下划线位置寄存器设置下划线位置

tiankongxiangyun 回答:无法使用VGA下划线位置寄存器设置下划线位置

使下划线正常工作;您需要:

  • 设置下划线寄存器
  • 重新编程托盘,使“ foreground attribute = 1”是您希望带下划线的文本唯一的颜色
  • 认识到“ 100%VGA兼容的BIOS接口”并不意味着“在硬件级别上100%VGA兼容”
  • 认识到“在硬件级别上100%VGA兼容”仅限于1986年发布,在1987年过时的IBM极为罕见的ISA视频卡(现在实际存在的范围从“ 0%硬件兼容”到“ “ 99%硬件兼容”,其中由于所有内容都切换到UEFI,“ 0%硬件兼容”正成为最可能的可能性。
  • 认识到,如果您想要某些功能正常运行,则必须使用图形视频模式,在该模式下,您可以支持VT-100所需的功能(下划线,粗体,“双倍高度”和“ 132列模式”)除了VT100可选的功能(例如图形处理器)之外,还有VT-100不能执行的功能(例如,支持更多字符集,而不仅仅是“ UK”和“ USA ASCII”,还有鼠标光标,... )。
本文链接:https://www.f2er.com/3165247.html

大家都在问