Oberon/ETH Oberon/display
本文档最初托管在ETHZ。它仍然受ETH 许可证的约束,并且位于WayBack 存档中。
除了为原生 Oberon 硬件兼容性列表中列出的显卡专门设计的多个驱动程序外,Oberon 还包含一些通用的驱动程序,能够支持各种其他显卡。这些驱动程序可以分为以下几类
- 低级 VGA 驱动程序
- 银行切换驱动程序
- 线性帧缓冲驱动程序 (DisplayLinear.Mod)。线性帧缓冲是 VBE 2.0 (VESA Bios Extension) 的扩展,它取代了过时的银行切换技术。
- 加速驱动程序 (DisplayPermedia2.Mod)
- 通用的VESA 2.0 和 VESA 3.0 驱动程序
显卡是系统的重要组成部分,安装的成功取决于驱动程序的选择。现代显卡控制器可以在所有模式下运行:银行切换、线性帧缓冲、加速。即使在最恶劣的情况下,低级 VGA 驱动程序也应该支持几乎所有显卡。让它正常工作并不需要什么技术技巧,因此它被用于 Oberon-0。一些 Oberon 驱动程序支持真彩色,前提是显卡能够支持:S3 Trio64、3Dlabs Permedia 2 和VESA 驱动程序。建议使用至少 32'768 色的 1'024 x 768 像素屏幕分辨率。
只要 DVI 显卡支持 VESA,就可以使用带有DVI-D 接口的现代显示器。图像质量明显提高。
- 在机器启动的最初阶段,屏幕上只会出现一两行描述显卡的信息,而且只是一瞬间。
- 在运行的 Oberon 系统(Oberon-0 足够)上,发出 PCITools.Scan 命令并找到设备中的显卡(PCI 或 AGP)。"设备:"字段指示板载的视频芯片组。
- 打开您的计算机并检查较大方形扁平芯片上的标记。一些显卡制造商确实使用其他制造商生产的视频芯片。例如,Diamond Multimedia 使用 S3 或 nVidia 芯片。
从磁盘启动 Oberon-0 后,在安装过程中会选择显示驱动程序。Configure.Tool 列出了特定和通用驱动程序及其视频模式(分辨率 x 深度)。了解显卡型号和芯片组类型后,可以通过以下策略选择最合适的驱动程序。
- 首先,查找与显卡规格匹配的 Config.Display 行。此特定驱动程序是最佳选择。执行命令,如果需要,选择比 Oberon 提出的默认视频模式更合适的模式。
- 接下来,如果您的卡不受支持,请执行Config.DetectVesa,以了解它是否支持 VESA 2.0 或 VESA 3.0。但是,此命令并不适用于所有显卡。较旧的卡可能显示“未找到合适的 VESA 模式”。使用非 VGA 卡(如 Permedia 2)也会获得相同的结果(特定驱动程序是解决方案)。
- 执行最合适的 Config.Display 命令或浏览通用的 VESA 2.0 和 3.0 驱动程序。
- 最终的穷人选择是 VGA。
安装完成后,配置数据将存储在分区或 Native.Par 中。现在重新启动机器以启动正确的 Oberon。如果显示驱动程序的配置数据不正确,启动可能会停滞在黑屏状态。要验证显示驱动程序是否导致启动问题,请按照下面介绍的方法跟踪启动过程。
要安装另一个驱动程序,请从 Oberon-0 重新进行安装,但这次跳过分区创建,格式化。挂载目标分区并缩短到 Configure.Tool 以选择另一个显示驱动程序并完成安装。
一些旧的显卡只支持 VESA 1.2 或更低版本(通过执行 Config.DetectVesa 检测到)。但是,在某些情况下,可以升级到 VESA 2.0 操作模式,以便可以使用该卡享受完整的 SVGA。需要一个 VESA 2.0 BIOS 扩展程序将显示卡初始化为线性帧缓冲模式。假设 Oberon 以 DOS 模式启动,则在调用noboot.exe之前会执行 BIOS 扩展程序。启动后,Oberon 会毫不犹豫地接管控制权。例如,使用仅限 DOS 程序 SciTech Display Doctor for DOS,并在 DOS 中执行 univbe.exe。或者,也可以使用更简单的共享软件/免费软件 univbe.exe 程序。
如果机器直接启动到 Oberon 或使用 Oberon 启动磁盘,则无法使用此技术技巧。
系统附带的 Oberon 字体通常使用,但也可以使用其他字体。
不支持 VESA Display Power Management Signaling 标准。相反,系统包含一个屏幕保护程序SavePoints,可以立即使用 - cfr. Oberon.Text
以下配置字符串在启动时使用,是在从 Oberon-0 磁盘安装 Oberon 时定义和存储的。除了 Init=9090(非常有用)之外,几乎没有必要调整它们。它们在这里显示了示例值,如使用 Partitions.GetConfig 前缀 ~ 所获得的值。
- Display="Displays." - 驱动已安装显卡的 Display.Obj 模块的前缀。可以使用 System.Directory *.Display.Obj ~ 获取现有地图文件名的列表。除了特定于硬件的驱动程序(例如 S3Trio)之外,您还会发现常见的标准 VGA 和 SVGA 驱动程序以及通用的 Oberon 显示驱动程序 Displays。
- Init="b8024fbb0541cd10b8014fb90501cd10268b4d28268b552a" - 最多 75 个 8 位十六进制值,之间没有空格。这些值被解释为 8086 机器代码,在处理器仍在 16 位模式下时执行。这是一种功能强大但粗糙的方式,可以通过设置寄存器、写入低内存设置区域和进行显示 BIOS 调用来初始化显示模式。
为了方便起见,Init=9090 可以用于跟踪安装问题;例如,启动时出现黑屏。这是一种快捷方式,
- 启用文本显示的跟踪输出,
- 将显示驱动程序设置为 Empty.Display.Obj,它不会产生任何输出,并且
- 将显示保持在文本模式,以便可以查看跟踪输出。
或者,可以使用跟踪到串行端口。
- DWidth="1024" - 屏幕宽度(以像素为单位)。
- DHeight="768" - 屏幕高度(以像素为单位)。
- DDepth="8" - 屏幕深度。并非所有驱动程序都支持所有可能的取值范围:8、16、24、32。
- DRefresh="70" - 垂直刷新率(以 Hz 为单位)。仅受 Vesa 3.0 和 Permedia 2 驱动程序支持。
- DDriver="DisplayLinear" -
如果尝试使用所有建议的显示驱动程序都失败,您可以尝试根据编写显示驱动程序的指南编写合适的驱动程序。还可以参考图形编程教程。
示例:使用带有 Trident Cyber9385 视频芯片组的 IBM Thinkpad 760ED 的用户无法使用提供的 SVGA 驱动程序获得完整的 1024 x 768 分辨率。利用这些观察结果和指南,对现有的 SVGA.Display.Mod 进行了改编和扩展。新的过程 SwitchTrident9xxx 中的两行简单代码就足够了。
(* SwitchTrident9xxx - Bank switch procedure for Trident 9xxx family - 9000C and higher *) PROCEDURE SwitchTrident9xxx(bank: LONGINT); BEGIN curBank := bank; SYSTEM.PORTOUT(3D8H, CHR(bank)); SYSTEM.PORTOUT(3D9H, CHR(bank)) END SwitchTrident9xxx;
并在 Init 中添加了一个新的区分值(8)
|7: switch := SwitchMach32; Kernel.WriteString("ATI Mach32"); |8: switch := SwitchTrident9xxx; Kernel.WriteString("Trident9xxx") ELSE switch := SwitchLinear; Kernel.WriteString("Vesa Linear frame buffer at"); linearbase := VesaAdr; Kernel.WriteHex(linearbase, 9) (* used with MapVesa=1 *) END;
用于支持 Trident 9xxx 1024 * 768 * 8 的配置字符串为
Init=bb0501b8024fcd10 SVGA=8
任何以这种方式扩展显示驱动程序的人,都可以将他的/她的代码片段转发给Pieter Muller,以便将其包含在下一个版本中。
2003 年 1 月 14 日 - 版权所有 © 2003 ETH Zürich。保留所有权利。
电子邮件:oberon-web at inf.ethz.ch [过期]
主页:www.ethoberon.ethz.ch [过期]