VioSetMode
Bindings: C, MASM
This call sets the mode of the display.
VioSetMode (ModeData, VioHandle)
ModeData (PVIOMODEINFO) - input
Address of the mode characteristics structure:
length (USHORT)
Input parameter to VioSetMode. Length specifies the length of the
data structure in bytes including Length itself. The minimum
structure size required is 3 bytes. OS/2 sets to the first mode (in
the list of modes supported by this display configuration) with a
data structure matching the mode data specified.
type (UCHAR)
Mode characteristics bit mask:
Bit Description
7-4 Reserved, set to zero.
3 0 = VGA-compatible modes 0 thru 13H.
1 = Native mode.
2 0 = Enable color burst
1 = Disable color burst.
1 0 = Text mode.
1 = Graphics mode.
0 0 = Monochrome compatible mode.
1 = Other.
numcolors (UCHAR)
Number of colors defined as a power of 2. This is equivalent to
the number of color bits that define the color, for example:
Value Definition
0 Monochrome modes 7, 7+, and F.
1 2 colors.
2 4 colors.
4 16 colors.
8 256 colors.
textcols (USHORT)
Number of text columns.
textrows (USHORT)
Number of text rows.
pelcols (USHORT)
Horizontal resolution, number of pel columns.
pelrows (USHORT)
Vertical resolution, number of pel rows.
Attribute Format (UCHAR)
Identifies the format of the attributes.
Number of Attributes (UCHAR)
Identifies the number of attributes in a character cell.
Buffer Address (ULONG)
32-bit physical address of the physical display buffer for this
mode.
Buffer Length (ULONG)
Length of the physical display buffer for this mode.
Full Buffer Size (ULONG)
Size of the buffer required for a full save of the physical display
buffer for this mode.
Partial Buffer Size (ULONG)
Size of the buffer required for a partial (pop-up) save of the
physical display buffer for this mode.
Extended Data Area Address (PCH)
Far address to an extended mode data structure or zero if none.
The format of the extended mode data structure is determined by
the device driver and is unknown to OS/2.
VioHandle (HVIO) - input
Reserved word of 0s.
rc (USHORT) - return
Return code descriptions are:
0 NO_ERROR
355 ERROR_VIO_MODE
430 ERROR_VIO_ILLEGAL_DURING_POPUP
436 ERROR_VIO_INVALID_HANDLE
438 ERROR_VIO_INVALID_LENGTH
465 ERROR_VIO_DETACHED
467 ERROR_VIO_FONT
468 ERROR_VIO_USER_FONT
494 ERROR_VIO_EXTENDED_SG
Remarks
VioSetMode initializes the cursor position and type.
VioSetMode does not clear the screen. To clear the screen, use one of the
VioScrollxx calls.
The disable color burst bit in the Type field in the VioSetMode data
structure is functional only for the CGA and VGA. This bit causes the
color portion of the video signal to be suppressed, producing a black and
white mode on composite monitors attached to the CGA. On VGA, the bit
causes the color lookup table to be loaded with values that produce
shades of gray instead of colors, again producing a black and white mode.
For all other combinations of adapters and displays, the setting of this
bit is recorded and returned on any subsequent VioGetMode call, but
otherwise is ignored.
For text modes in full-screen sessions, the number of rows on the screen
is determined by the availability of fonts of the correct size. For any
specified mode, the size of the character defined by the font must be
(Horizontal Resolution)/(Text Columns) dots wide and (Vertical
Resolution)/(Text Rows) dots high. For example, an 8x8 font would support
39 through 43 text rows if the screen resolution were 640x350.
If VioSetState request type 6 has been issued previously to select the
target display configuration for VioSetMode, the mode is set on the
display configuration selected. If that display configuration does not
support the mode specified, an error is returned.
Assuming no target display configuration for VioSetMode is selected, the
mode is set on the primary configuration. If the primary configuration
does not support the mode specified, the mode is set on the secondary
configuration.
The table below shows the VioSetMode parameters required to set all the
modes supported by the CGA, EGA, VGA, and PS/2 Display Adapters. The
modes native to the 8514/A and other advanced video adapters are set with
the Adapter (programming) Interface to these adapters, not VioSetMode.
Note: Although graphics mode support is provided in VioSetMode, this
support is not provided by the Base Video Handlers provided with
OS/2.
---------------------------------------------------------------------
Table 5-1. Display Mode Attributes Supported by Adapters
---------------------------------------------------------------------
BIOS TYPE COLOR COLS ROWS HRES VRES VALID ADAPTER/DISPLAY
MODE COMBINATIONS [EMULATED]
---------------------------------------------------------------------
0 5 4 40 25 320 200 [CGA/CD], CGA/Comp,
[EGA/CD], [EGA/ECD],
VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
0* 5 4 40 25 320 350 [EGA/ECD], VGA/Mono,
VGA/Color, VGA/Plasma
---------------------------------------------------------------------
0+ 5 4 40 25 360 400 VGA/Mono, VGA/Color
---------------------------------------------------------------------
0# 5 4 40 25 320 400 VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
1 1 4 40 25 320 200 CGA/CD, CGA/Comp,
EGA/CD, EGA/ECD,
[VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
1* 1 4 40 25 320 350 EGA/ECD, [VGA/Mono],
VGA/Color, [VGA/Plasma]
---------------------------------------------------------------------
1+ 1 4 40 25 360 400 [VGA/Mono], VGA/Color
---------------------------------------------------------------------
1# 1 4 40 25 320 400 [VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
2 5 4 80 25 640 200 [CGA/CD], CGA/Comp,
[EGA/CD], [EGA/ECD],
VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
2* 5 4 80 25 640 350 [EGA/ECD], VGA/Mono,
VGA/Color, VGA/Plasma
---------------------------------------------------------------------
2+ 5 4 80 25 720 400 VGA/Mono, VGA/Color
---------------------------------------------------------------------
2# 5 4 80 25 640 400 VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
3 1 4 80 25 640 200 CGA/CD, CGA/Comp,
EGA/CD, EGA/ECD,
[VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
3* 1 4 80 25 640 350 EGA/ECD, [VGA/Mono],
VGA/Color, [VGA/Plasma]
---------------------------------------------------------------------
3+ 1 4 80 25 720 400 [VGA/Mono], VGA/Color
---------------------------------------------------------------------
3# 1 4 80 25 640 400 [VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
7 0 0 80 25 720 350 MPA/MD, EGA/MD,
VGA/Mono, VGA/Color
---------------------------------------------------------------------
7+ 0 0 80 25 720 400 VGA/Mono, VGA/Color
---------------------------------------------------------------------
7# 0 0 80 25 640 400 VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
n/a 0 0 80 25 640 350 VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
n/a 1 4 80 30 720 480 [VGA/Mono], VGA/Color
---------------------------------------------------------------------
n/a 1 4 80 30 640 480 [VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
4 3 2 [40] [25] 320 200 CGA/CD, CGA/Comp,
EGA/CD, EGA/ECD,
[VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
5 7 2 [40] [25] 320 200 [CGA/CD], CGA/Comp,
[EGA/CD], [EGA/ECD],
VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
6 3 1 [80] [25] 640 200 CGA/CD, CGA/Comp,
EGA/CD, EGA/ECD,
VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
D 3 4 [40] [25] 320 200 EGA/CD, EGA/ECD,
[VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
E 3 4 [80] [25] 640 200 EGA/CD, EGA/ECD,
[VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
F 2 0 [80] [25] 640 350 EGA/MD, VGA/Mono,
VGA/Color, VGA/Plasma
---------------------------------------------------------------------
10 3 4 [80] [25] 640 350 EGA/ECD, [VGA/Mono],
VGA/Color, [VGA/Plasma]
---------------------------------------------------------------------
11 3 1 [80] [30] 640 480 VGA/Mono, VGA/Color,
VGA/Plasma
---------------------------------------------------------------------
12 3 4 [80] [30] 640 480 [VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
13 3 8 [40] [25] 320 200 [VGA/Mono], VGA/Color,
[VGA/Plasma]
---------------------------------------------------------------------
n/a 11 8 [80] [30] 640 480 [8514A/Mono],
8514A/Color
---------------------------------------------------------------------
n/a 11 4 [80] [30] 640 480 [8514A/Mono],
8514A/Color
---------------------------------------------------------------------
n/a 11 8 [85] [38] 1024 768 [8514A/HMono],
8514A/HColor
---------------------------------------------------------------------
n/a 11 4 [85] [38] 1024 768 [8514A/HMono],
8514A/HColor
---------------------------------------------------------------------
Display Adapters:
MPA Monochrome/Printer Adapter
CGA Color Graphics Adapter
EGA Enhanced Graphics Adapter
VGA Video Graphics Array, PS/2 Display Adapter
8514A 8514/A Display Adapter
---------------------------------------------------------------------
Displays:
MD 5151 Monochrome Display
CD 5153 Color Display
ECD 5154 Enhanced Color Display
MONO 8503 PS/2 Monochrome Display, 8507/8604 Display
HMONO 8507/8604 Display
COLOR 8512/13 PS/2 Color Display, 8514 Display
HCOLOR 8514 Display
PLASMA Plasma Display Panel
COMP Composite Video Monitor
Notes:
1. Types 0, 1, and 5 are text modes; types 2, 3, 7, and 11 are
graphics modes.
2. For BIOS modes 0, 2, 5, the color burst is disabled on the
CGA and VGA.
3. The Personal System/2 Display Adapter 8514/A(TM) has advanced
function modes, which are supported through the 8514/A display
adapter interface, not the VIO Subsystem. Refer to the
Personal System/2 Display Adapter 8514/A Technical Reference
for details of this support.
---------------------------------------------------------------------
Note: For text modes in full-screen, the number of rows may differ from
the
mode table due to the availability of fonts of the correct size as
described
above.
PM Considerations
Windowable VIO sessions support only 80-column, color text modes. When
VioSetMode is called from a Windowable VIO session, it only verifies that
an 80-column text mode was requested, with Text Rows between 1 and 255.
The resulting mode, which can be queried using VioGetMode, always has
Type = 1, Color = 4, Text Columns = 80,
Text Rows = requested Text Rows, Horizontal Resolution = 640, and
Vertical
Resolution = 16 * (Text Rows).
Family API Considerations
Some options operate differently in the DOS mode than in the OS/2 mode.
Therefore, the following consideration applies to VioSetMode when coding
for the DOS mode:
VioSetMode clears the screen.
Created using Inf-PHP v.2 (c) 2003 Yuri Prokushev
Created using Inf-HTML v.0.9b (c) 1995 Peter Childs