Oberon/ETH Oberon/display
This document was originally hosted at the ETHZ. It remains under the ETH license and is in the WayBack archive.
Back to: Native Oberon Hardware Compatiblity List
Together with a number of drivers, specifically designed for the graphic cards listed in the Native Oberon Hardware Compatibility List, Oberon includes a number of generic drivers capable of supporting a variety of other graphic cards. The drivers can be categorized in:
- low-level VGA driver
- bank-switching drivers
- linear frame buffer driver (DisplayLinear.Mod). The linear frame buffer is a VBE 2.0 (VESA Bios Extension) extension replacing the outdated bank switching technique
- accelerated driver (DisplayPermedia2.Mod)
- generic VESA 2.0 and a VESA 3.0 drivers
The graphic card is a critical component of your system and the success of an installation depends on the correct choice of a driver. Modern graphic controllers can be operated in all modes: bank switching, linear frame buffer, accelerated. Even under the harshest circumstances, the low-level VGA driver should support almost every graphic card. Little technical wizardry is required to get that one working and therefore it is used in Oberon-0. Some Oberon drivers support TrueColor, provided the graphic card is up to it: S3 Trio64, 3Dlabs Permedia 2 and VESA drivers. A screen resolution of 1'024 x 768 pixels with at least 32'768 colors is recommended.
Modern display units with DVI-D interface can be used provided the DVI graphic card supports VESA. The picture quality is noticeably better.
- At the very beginning of your machine startup and for an instant only, one or two lines appear on screen describing the graphic card.
- On a running Oberon system (Oberon-0 is enough), issue a PCITools.Scan command and spot the graphic card (PCI or AGP) among the devices. The field "Device:" indicates which video chipset is on board.
- Open up your computer and examine the stamp of the larger square, flat chip. Some graphic card manufacturers do use video chips manufactured by others. Diamond Multimedia, for example, uses S3 or nVidia chips.
A display driver is selected during the installation process after starting Oberon-0 from diskette. Configure.Tool lists the specific and the generic drivers with their video modes (resolution x depth). Knowing the graphic card model and the chipset type, the most appropriate driver is selected by following this strategy:
- Start by looking for a Config.Display line matching the graphic card specs. This specific driver is the best choice. Execute the command and if necessary select a more appropriate video mode than the default proposed by Oberon.
- Next, if your card is not supported, find out if it supports VESA 2.0 or VESA 3.0 by executing Config.DetectVesa. This command does not work with all graphic cards though. An older card might reveal "No suitable VESA mode found". The same result is obtained with a non-VGA card such as the Permedia 2 (the specific driver is the solution).
- Execute the the most appropriate Config.Display command or explore the generic VESA 2.0 and 3.0 drivers.
- The ultimate and poor man's choice is VGA.
When the installation is finalized, the configuration data is then stored in the partition or in Native.Par. Now reboot the machine to start Oberon proper. If the configuration data for the display driver is not correct, booting may stop with a black screen. To verify whether the display driver is causing the booting problem, trace the boot process as explained below.
To install another driver, re-do an installation from Oberon-0, but this time skip the partition create, format. Mount the destination partition and cut short to the Configure.Tool to select another display driver and finalize the installation.
Some older graphic cards only support VESA 1.2 or below (detected by executing Config.DetectVesa). Nevertheless, under certain conditions it is possible to upgrade to a VESA 2.0 mode of operation, so that one can enjoy full SVGA with the card. A VESA 2.0 BIOS extension program is required to initialize the display card into a linear framebuffer mode. Provided that Oberon is started in DOS mode, the BIOS extension program is executed prior to calling noboot.exe. After startup, Oberon takes over control without further ado. Use for example the SciTech Display Doctor for DOS only program, and in DOS execute univbe.exe. Alternatively, a even less demanding shareware / freeware univbe.exe program can also be used.
This technical trick cannot be used if the machine starts up directly into Oberon or if an Oberon boot diskette is used.
The Oberon font delivered with the system is commonly used, but other fonts may be used.
The VESA Display Power Management Signaling standard is not supported. Instead, a screen saver SavePoints is included and ready for use - cfr. Oberon.Text
The following config strings used at startup, are defined and stored during the installation of Oberon from an Oberon-0 diskette. There is little need to adjust them otherwise, except Init=9090 which can be very useful. They appear here with an example value, as obtained with Partitions.GetConfig prefix ~
- Display="Displays." - Prefix of the Display.Obj module driving the installed graphic card. A list of existing map filenames is obtained with System.Directory *.Display.Obj ~. Next to hardware specific drivers (e.g. S3Trio), you will find common standard VGA and SVGA drivers and a generic Oberon display driver Displays.
- Init="b8024fbb0541cd10b8014fb90501cd10268b4d28268b552a" - Up to 75 8-bit hexadecimal values with no space in between. The values are interpreted as 8086 machine code which is executed, when the processor is still in 16-bit mode. This is a powerful, but crude, way to initialize the display mode by setting up registers, writing to the low-memory setup area, and doing display BIOS calls.
As a convenience, Init=9090 can be used for tracing installation problems; e.g. a black screen when booting. This is a shortcut that:
- enables trace output to the text display,
- sets the Display driver to Empty.Display.Obj, which produces no output, and
- leaves the display in text mode so that trace output can be seen.
Alternatively, tracing to a serial port can be used.
- DWidth="1024" - Screen width in pixels.
- DHeight="768" - Screen height in pixels.
- DDepth="8" - Screen depth. Not all drivers support the full range of possible values: 8, 16, 24, 32.
- DRefresh="70" - Vertical refresh rate in Hz. Only supported by the Vesa 3.0 and Permedia 2 drivers.
- DDriver="DisplayLinear" -
If all attempts to use one of proposed display drivers fail, you might attempt to write a suitable driver, based on the Guidelines for writing a display driver. Also cfr. Graphics Programming Tutorials.
Example: a user of an IBM Thinkpad 760ED with a Trident Cyber9385 video chipset could not get the full 1024 x 768 resolution with the supplied SVGA driver. Using these observations and the guidelines, the existing SVGA.Display.Mod was adapted and extended. Two simple lines of code in a new procedure SwitchTrident9xxx were enough.
(* 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;
and a new discriminating value (8) was added in Init:
|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;
The config strings that will be used for supporting Trident 9xxx 1024 * 768 * 8 are:
Init=bb0501b8024fcd10 SVGA=8
Anyone who does extend a display driver in this manner is invited to forward his/her code snippets to Pieter Muller for inclusion in the next version.
14 Jan 2003 - Copyright © 2003 ETH Zürich. All rights reserved.
E-Mail: oberon-web at inf.ethz.ch [expired]
Homepage: www.ethoberon.ethz.ch [expired]