【问题标题】:Unable to set underline location using the VGA Underline Location Register无法使用 VGA 下划线位置寄存器设置下划线位置
【发布时间】:2019-11-04 16:24:54
【问题描述】:

我正在为自定义操作系统编写终端驱动程序。我想让终端了解控制光标位置、形状、颜色等的常见 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

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

【问题讨论】:

  • DOSBox 并不是测试操作系统的最佳环境,因为如果没有游戏实际使用它们,它通常不会费心去实现。
  • @RossRidge 我也在计算机硬件上运行了同样的程序。

标签: assembly x86 dosbox real-mode vga


【解决方案1】:

让下划线正常工作;你需要:

  • 设置下划线寄存器
  • 重新编程托盘,以便“前景属性 = 1”是您希望带下划线的文本的唯一颜色
  • 意识到“100% VGA 兼容 BIOS 接口”并不意味着“100% VGA 在硬件级别兼容”
  • 意识到“硬件级别 100% VGA 兼容”仅限于 IBM 于 1986 年发布并于 1987 年过时的极为罕见的 ISA 视频卡(现在实际存在的所有内容范围从“0% 硬件兼容”到“99% 硬件兼容”,其中“0% 硬件兼容”正在成为最有可能的可能性,因为一切都切换到 UEFI)。
  • 意识到,如果您想要正常工作的东西,您必须使用图形视频模式,您可以在其中支持 VT-100 所需的东西(下划线、粗体、“双高”和“132 列模式”)除了 VT100 的可选功能(例如图形处理器),以及 VT-100 不能做的事情(例如,支持更多的字符集,而不仅仅是“UK”和“USA ASCII”,有鼠标光标,... )。

【讨论】:

    猜你喜欢
    • 2012-03-24
    • 2014-04-07
    • 2016-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-11-24
    • 2020-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多