【问题标题】:Switching to high-resolution text modes on PC [closed]在 PC 上切换到高分辨率文本模式 [关闭]
【发布时间】:2017-11-11 06:30:02
【问题描述】:

我想编写一个在文本屏幕上运行的文本编辑器。在现代 PC 中,1280x1024(160x64 字符)屏幕适用于平板。出于安全原因,我正在开发基于 i865 的 P4 主板。 VESA BIOS 设置分辨率但在图形模式下;此外,VGA 寄存器显示原始 DOS 屏幕值。我需要帮助如何将 i865 编程为文本模式。

【问题讨论】:

  • 我认为 160x64 文本模式并不常见。您可能会找到最好的分辨率是 132x60。您可以改为在 1280x1024 图形模式下绘制自己的文本,并且 BIOS 可能(应该?)支持图形模式下的文本输出,就像在标准 VGA 图形模式下一样。
  • 显存不在E800:0000。它位于 B000:0000 或 B800:0000。

标签: assembly x86 vga vesa


【解决方案1】:

1280x1024 不是 VGA 分辨率。如果您想使用这些高分辨率模式,您将需要使用VESA/VBE。而且,除了一个例外(不符合您的要求),VESA 没有定义标准模式。您需要询问视频卡并选择一种支持的模式。使用 VBE 函数 00h 获取支持模式的完整列表,并使用函数 01h 检查每种支持模式的属性,看看它是否满足您的要求。

一旦你找到了你想要的模式,函数 02h 就会设置那个模式,然后你就基本完成了。好吧,除了编写将文本显示在屏幕上的代码的困难部分!

这一切都记录在the standard 中。 OSDev Wiki 上提供了 C 示例代码。

【讨论】:

  • 我正在尝试使用 VESA 模式编写自己的图形代码,但我一直坚持使用 putpixel。
  • 我正在尝试使用 VESA 模式编写自己的图形代码,但我一直坚持使用 putpixel。问题是保护模式。我使用 DPMI 并读出了 VESA 的 PhysBuffPtr,即 E800 0000。我正在测试 1280x1024:256,在屏幕上戳了四个字节,但我遇到了页面错误或看不到任何内容。任何人都可以帮助我使用 pmode 寻址 FB 并放置像素的代码。提前谢谢!
猜你喜欢
  • 2016-04-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多