Невозможно установить местоположение подчеркивания с помощью регистра местоположения подчеркивания VGA - PullRequest
0 голосов
/ 04 ноября 2019

Я пишу драйвер терминала для пользовательской операционной системы. Я хочу, чтобы терминал понимал общие escape-последовательности vt-100, которые управляют расположением курсора, формой, цветами и т. Д. Поэтому при реализации функции «подчеркивание / подчеркивание» я хочу записать в регистр расположения подчеркивания VGA / SVGAПрограммирование видео - контроллер ЭЛТ регистрирует , но он не работает. Подчеркивание не отображается (на самом деле я не знаю, где искать). Ниже приведен код и снимок экрана с окном 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

Тем не менее, контур не отображается. Я пишу некоторый текст (второе шестнадцатеричное значение) после того, как я установил регистр подчеркивания, но без подчеркивания. enter image description here

1 Ответ

1 голос
/ 05 ноября 2019

Чтобы подчеркнуть правильность работы;вам нужно:

  • установить регистр подчеркивания
  • перепрограммировать паллету так, чтобы «атрибут переднего плана = 1» был единственным цветом, который вы хотите, чтобы подчеркнутый текст был
  • понимают, что «100% VGA-совместимый интерфейс BIOS» не означает «100% VGA-совместимость на аппаратном уровне»
  • понимают, что «100% VGA-совместимость на аппаратном уровне» ограничивается исключительно редким видео ISAкарты от IBM, выпущенные в 1986 году и устаревшие в 1987 году (и все, что на самом деле существует сейчас, колеблется от «0% совместимости с оборудованием» до «99% совместимости с оборудованием», где «0% совместимость с оборудованием» становится наиболее вероятной из-завсе переключается на UEFI).
  • понимают, что если вы хотите что-то, что работает должным образом, вы должны использовать графический видео режим, где вы можете поддерживать вещи, которые необходимы для VT-100 (подчеркивание, полужирный, «двойная высота»"и" режим 132 столбцов ") в дополнение к тому, что было необязательным для VT100 (например, графический процессор), плюс вещичто VT-100 не может сделать (например, поддерживает больше наборов символов, чем просто "UK" и "USA ASCII", имеет курсор мыши, ...).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...