home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 10 Tools
/
10-Tools.zip
/
ddkx86v1.zip
/
DDKX86
/
BOOK
/
GRADD.INF
(
.txt
)
< prev
next >
Wrap
OS/2 Help File
|
1995-04-18
|
403KB
|
13,882 lines
ΓòÉΓòÉΓòÉ 1. About this Book ΓòÉΓòÉΓòÉ
The Graphics Adapter Device Driver Reference for OS/2 Warp, Version 3, PowerPC
Edition describes the Graphics Adapter Device Driver (GRADD) Model design, how
the components work together, and why GRADDs are a valuable addition to OS/2
Warp, PowerPC Edition device-driver support.
Note:
THE INFORMATION IN THIS DOCUMENT IS A PRELIMINARY VERSION AND IS SUBJECT TO
CHANGE.
Detailed descriptions of control structures, data structures, and I/O formats
have been included to help you understand and use the interfaces.
Knowledge of a programming language (such as C or assembler) that is used for
writing OS/2 applications is necessary, and you must be familiar with the
workings of the OS/2 operating system.
This book consists of seven chapters, with supporting appendixes, as follows:
Introduction to Graphics Adapter Device Drivers
This chapter briefly describes the design philosophy of the Graphics
Adapter Device Driver (GRADD) Model.
GRADD Model Components
This chapter provides details on each of the components and how they
work together within the GRADD Model.
Video Manager
This chapter contains a list of the Video Manager Interface
functions, as well as a detailed description of each.
Graphics Adapter Device Drivers
This chapter describes the device driver interface (DDI) for a GRADD,
as well as how and when adding extensions is useful. Also included is
a list of the Graphics Hardware Interface functions and a detailed
description of each. In addition, this chapter describes the Enhanced
Direct Interface Video Extension (EnDIVE) functions.
VIDEOPMI DLL Exported Functions
This chapter describes the format and syntax of the file used to
define the data necessary to set a video mode while in OS/2 Protect
Mode.
VIDEO Protect-Mode Interface
This chapter discusses the purpose of the VIDEO Protect-Mode
Interface (PMI) used in OS/2 Warp, PowerPC Edition. It is an
extension of the VESA SVPMI standard currently in use by the
operating system's base and virtual video subsystems. The PMI
provides a means of setting Super VGA video modes while in Protect
Mode and of enabling their virtualization in multiple DOS sessions.
Video Installation and Configuration
This chapter details the Video Configuration Manager (VCMAN),
including the functions used to install and configure video adapters
and monitors.
Appendixes
Appendix A. Syntax Conventions
This appendix shows the conventions that have been used for the
parameter names found in the data types included in Appendix B.
Appendix B. Data Types
This appendix contains a description of the parameters for all the
data types called by the Video Manager Interface, the Graphics
Hardware Interface, the Video Configuration Manager, or the
Protect-Mode Interface.
Appendix C. Notices
This appendix contains legal notices.
Miscellaneous
A glossary and an index are included.
ΓòÉΓòÉΓòÉ 2. Notices ΓòÉΓòÉΓòÉ
First Edition (April 1995)
The following paragraph does not apply to the United Kingdom or any country
where such provisions are inconsistent with local law: INTERNATIONAL BUSINESS
MACHINES CORPORATION PROVIDES THIS PUBLICATION "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states
do not allow disclaimer of express or implied warranties in certain
transactions, therefore, this statement may not apply to you.
This publication could include technical inaccuracies or typographical errors.
Changes are periodically made to the information herein; these changes will be
incorporated in new editions of the publication. IBM may make improvements
and/or changes in the product(s) and/or the program(s) described in this
publication at any time.
It is possible that this publication may contain reference to, or information
about, IBM products (machines and programs), programming, or services that are
not announced in your country. Such references or information must not be
construed to mean that IBM intends to announce such IBM products, programming,
or services in your country.
Requests for technical information about IBM products should be made to your
IBM authorized reseller or IBM marketing representative.
ΓòÉΓòÉΓòÉ 2.1. Copyright Notices ΓòÉΓòÉΓòÉ
COPYRIGHT LICENSE: This publication contains printed sample application
programs in source language, which illustrate OS/2 programming techniques. You
may copy, modify, and distribute these sample programs in any form without
payment to IBM, for the purposes of developing, using, marketing or
distributing application programs conforming to the OS/2 application
programming interface.
Each copy of any portion of these sample programs or any derivative work, which
is distributed to others, must include a copyright notice as follows: "(C)
(your company name) (year). All rights reserved."
(C) Copyright International Business Machines Corporation 1995. All rights
reserved.
Note to U.S. Government Users - Documentation related to restricted rights -
Use, duplication or disclosure is subject to restrictions set forth in GSA ADP
Schedule Contract with IBM Corp.
ΓòÉΓòÉΓòÉ 2.2. Disclaimers ΓòÉΓòÉΓòÉ
References in this publication to IBM products, programs, or services do not
imply that IBM intends to make these available in all countries in which IBM
operates. Any reference to an IBM product, program or service is not intended
to state or imply that only IBM's product, program, or service may be used. Any
functionally equivalent product, program, or service that does not infringe any
of IBM's intellectual property rights or other legally protectable rights may
be used instead of the IBM product, program, or service. Evaluation and
verification of operation in conjunction with other products, programs, or
services, except those expressly designated by IBM, are the user's
responsibility.
IBM may have patents or pending patent applications covering subject matter in
this document. The furnishing of this document does not give you any license to
these patents. You can send license inquiries, in writing, to the IBM Director
of Licensing, IBM Corporation, 500 Columbus Avenue, Thornwood NY 10594, U.S.A.
ΓòÉΓòÉΓòÉ 2.3. Trademarks ΓòÉΓòÉΓòÉ
The following terms are trademarks of the IBM Corporation in the United States
or other countries:
Common User Access
CUA
IBM
Multimedia Presentation Manager/2
OS/2
OS/2 Warp
Personal System/2
Presentation Manager
SAA
Systems Application Architecture
WIN-OS/2
Workplace Shell
XGA
The following terms are trademarks of other companies:
Trademark Owner
ATI ATI Technologies, Inc.
Cirrus Logic Cirrus Logic, Inc.
MASM Microsoft Corporation
PCMCIA Personal Computer Memory Card International Association
S3 S3 Incorporated
SVPMI Super VGA Protect Mode Interface
VDM Geographics Systems, Ltd.
VESA Video Electronics Standards Association
Viper VLB Diamond Computer Systems, Inc.
Weitek Weitek Corporation
Windows is a trademark of Microsoft Corporation
Other company, product, and service names, which may be denoted by a double
asterisk (**), may be trademarks or service marks of others.
ΓòÉΓòÉΓòÉ 3. Introduction to Graphics Adapter Device Drivers ΓòÉΓòÉΓòÉ
This chapter briefly describes the design and intent of the Graphics Adapter
Device Driver (GRADD) Model. Details on specific components of the GRADD Model
are located in GRADD Model Components.
The GRADD Model is divided into several components that work together to
support a variety of operating system services for OS/2 Warp, Version 3,
PowerPC Edition on the same desktop. (Operating system services are defined as
"different operating systems running on top of the IBM Microkernel.") GRADD
components include the following:
o Video Manager and the Video Manager Interface (VMI) protocol
o Translation layers, one for each operating system service in OS/2 Warp,
PowerPC Edition
o SOFTDRAW for default software simulation of graphics functions
o Graphics Adapter Device Drivers (GRADDs) and the Graphics Hardware
Interface (GHI) protocol
Video display device drivers in OS/2 Warp, PowerPC Edition are referred to as
GRADDs (Graphics Adapter Device Drivers). GRADDs provide video support to all
the graphics subsystems (operating system services) that can run on OS/2 Warp,
PowerPC Edition. A GRADD contains only the hardware-dependent code needed to do
graphic functions that are common among the different graphics subsystems.
These common functions are designed to act as a small set of building blocks
for the larger, more complex operations that are typically required by a
graphics engine. Translation layers exist between the graphics subsystems and
the components of the GRADD Model, providing access to the GRADD building
blocks. Each translation layer converts the more complex function calls given
by its graphics subsystem into the protocol required by the GRADD Model.
The GRADD Model makes the development of video display drivers much easier and
faster than it was for OS/2 Releases 2.0 and earlier. This more efficient
development cycle is a result of the reduced set of mandatory functions within
a GRADD. Initialization, returning capabilities, returning mode information,
setting the mode, and setting the palette (if using 256 colors) are the only
mandatory GHI functions required for a GRADD Model device driver.
If the graphics adapter supports direct access to video memory, all other GHI
functions are not mandatory. The GRADD Model provides a way to simulate the
drawing functions using a software library called SOFTDRAW. The simulated
functions include drawing bit maps and lines and handling pointer support.
Software simulation allows a developer to write a driver, in incremental
stages, that takes advantage of hardware acceleration, rather than forcing the
developer to write the entire driver at once. After the mandatory functions are
completed, a developer can invoke the software simulation for those optional
functions that have not yet been written to use the accelerated features of the
hardware. When an optional function is handled by a GRADD, the results can be
compared with the results of the software simulation. This comparison gives
developers a way to ensure that their GRADDs are producing correct output.
For most developers, writing code based on the GRADD Model will be confined
exclusively to writing a GRADD. The other components handle commonly used
functions that do not need direct access to the hardware and, therefore, do not
need to be located in the GRADD. This design allows GRADDs to maintain a clean
and simple architecture so that developers can write device drivers easily and
quickly.
ΓòÉΓòÉΓòÉ 4. GRADD Model Components ΓòÉΓòÉΓòÉ
This chapter describes the individual components of the Graphics Adapter Device
Driver (GRADD) Model used for developing device drivers.
The GRADD Model is made up of several components that coordinate the
communication between each of the running operating system services (graphic
subsystems) and the available graphics hardware. The components include the
following:
o Video Manager (VMAN), the main component that ties all the components
together in the GRADD model
o Translation layers, each representing an OS/2 Warp, Version 3, PowerPC
Edition operating system service
o SOFTDRAW, which acts as a graphics library for VMAN and the system
o One or more GRADDs that, together, represent the available video hardware
Video Manager (VMAN): The main job of VMAN is to synchronize the communication
between translation layers and a GRADD. VMAN also manages the graphics pointer.
When an operating system service requests a graphics operation, the associated
translation layer sends one of the defined Video Manager Interface (VMI)
commands to VMAN. Upon receiving a VMI command, VMAN will either handle the
request or send it down to the appropriate GRADD.
Translation Layers: The translation layers convert function calls, made by the
graphics engines of the various operating system services, to the VMI protocol
required by VMAN.
SOFTDRAW: When a GRADD requests that a drawing operation be simulated in
software, VMAN can default to SOFTDRAW for the operation.
Graphics Adapter Device Driver: Executes the requested operation or returns it
for simulation.
When a GRADD receives a GHI function call from VMAN that is not mandatory, the
GRADD has the option of performing the requested operation or returning the
request to VMAN with a return code of RC_SIMULATE. The RC_SIMULATE return code
informs VMAN that the operation needs to be simulated in software.
The following figure graphically illustrates the components of the GRADD Model.
ΓòÉΓòÉΓòÉ 4.1. Video Manager (VMAN) ΓòÉΓòÉΓòÉ
This section describes the Video Manager (VMAN) component and how it fits into
the GRADD Model.
When VMAN is initialized, a series of components is loaded and initialized.
These components include SOFTDRAW and the GRADDs that are needed for the
available graphics adapters. Each graphics adapter is not limited to a single
GRADD, however.
The GRADD Model supports multiple GRADDs. If a developer wishes to extend the
GRADD Model or filter out operations, a filter GRADD can be placed between VMAN
and the main GRADD running the hardware. This form of linking GRADDs is called
chaining and provides a way of modifying a GRADD's behavior without rewriting
and recompiling the GRADD. "Adding Extensions" in Graphics Adapter Device
Drivers, discusses the specifics involved when extending the GRADD
architecture.
ΓòÉΓòÉΓòÉ 4.1.1. Video Manager Interface (VMI) ΓòÉΓòÉΓòÉ
The VMAN component relies on a special protocol to receive requests from the
translation layers. The VMAN protocol is called the Video Manager Interface
(VMI) and consists of a small set of operations, each of which is identified by
a unique function number. Separate function numbers are needed for each
operation because VMAN exports only one entry point for the translation layers
to communicate with VMAN. The exported function is called "VMIEntry." It
expects four parameters from each function call it receives from a translation
layer, as follows:
ULONG VMIENTRY(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
Because the VMIEntry function receives many different types of requests from
the translation layers, the gid parameter is always the ID number of the GRADD
to receive the operation. The ulFunction parameter is the function number that
identifies the operation being requested. The last two parameters (pIn, pOut)
are pointers to input and output data structures that are unique to each VMI
function.
Most of the operations VMAN receives from a translation layer are passed
directly to the appropriate GRADD. Each GRADD has its own exported function
called "HWEntry," which is the same function type as VMIEntry. The differences
between the VMAN protocol (VMI) and the protocol for the GRADDs (GHI) include
the following:
o The VMI is a super set of the GHI.
o The ulFunction parameter value changes to the appropriate VMI_CMD_
function name.
ΓòÉΓòÉΓòÉ 4.1.2. Pointer Management in the Video Manager ΓòÉΓòÉΓòÉ
VMAN is responsible for pointer management. When a pointer movement occurs,
VMAN is notified via the VMI_CMD_MOVEPTR function. VMAN will call down the
GRADD chain for the pointer update. The GRADD can either update the pointer or
return to VMAN for simulation. If RC_SIMULATE is returned, VMAN will simulate
the pointer movement by using the regular bitblit command.
VMAN keeps information about the current state of the pointer. When a drawing
operation arrives, VMAN will check to see if the pointer needs to be removed
around the call. This situation typically arises when a software pointer is in
use. All drawing VMI commands that affect the display surface must include the
areas of the screen being updated by the primitive. VMAN uses this information
to determine if the pointer needs to be hidden before passing the drawing
command down the GRADD chain. Upon return from the drawing command, VMAN will
restore the pointer if it was previously taken down.
ΓòÉΓòÉΓòÉ 4.1.3. Video Helper Functions ΓòÉΓòÉΓòÉ
VMAN exports two helper services for operations that are common across all
GRADDs. These helper functions are described below.
VHAllocMem: This helper returns a 32-bit pointer to a piece of memory. The
caller of this function supplies the byte count required. The function
prototype is displayed below:
PVOID VHAllocMem( ULONG );
VHFreeMem: This helper frees memory that has been allocated via the VHAllocMem
helper. The function prototype is displayed below:
ULONG VHFreeMem( PVOID );
By using video helpers, a GRADD can be written without using calls that are
operating-system specific.
ΓòÉΓòÉΓòÉ 4.2. Translation Layers ΓòÉΓòÉΓòÉ
This section describes the translation layers, which gain access to the
hardware capabilities and available modes via the CHAININFO structure. The
CHAININFO structure is returned from the VMI_CMD_QUERYCHAININFO function.
When the VMIEntry function receives an operation from a translation layer, VMAN
checks the function number and either handles the operation or forwards it to
the appropriate GRADD. VMAN will handle the operation if the GRADD returns an
RC_SIMULATE. The GRADD Model diagram shows how the VMAN component handles
communication among the various components and the paths that commands can take
during processing.
ΓòÉΓòÉΓòÉ 4.2.1. Translation Layer between OS/2 Graphics Engine and VMAN ΓòÉΓòÉΓòÉ
The translation layer for the OS/2 Graphics Engine (GRE) is called GRE2VMAN.
For a system that uses OS/2 as the dominant operating system service, GRE2VMAN
is the first translation layer and the first component of the GRADD model to be
loaded. When GRE2VMAN is loaded, it calls VMAN's VMIEntry function with a
VMI_CMD_INIT command. When VMAN receives a VMI_CMD_INIT for the first time, it
loads the other GRADD model components.
ΓòÉΓòÉΓòÉ 4.2.2. Virtual VMI Video Device Driver (VVMI) ΓòÉΓòÉΓòÉ
The virtual VMI video device driver, referred to as VVMI, provides a mechanism
for GDI2VMAN to call the video manager (VMAN). GDI2VMAN calls the VVMI by using
the VMI protocol. The VVMI then calls VMAN directly on behalf of GDI2VMAN.
VMAN, a shared library, exports a single entry point called VMIEntry. The VVMI
imports VMIEntry and calls VMAN directly.
ΓòÉΓòÉΓòÉ 4.2.3. Future Translation Layers ΓòÉΓòÉΓòÉ
In the future, other graphics subsystems can be adapted to work in the OS/2
Warp, Version 3, PowerPC Edition operating system. In order to accomplish this,
a translation layer must be provided (shown as 'n2VMAN' in the GRADD Model
diagram. This translation layer must map the graphics primitives of the
graphics subsystem to the appropriate VMI_CMD_ functions.
ΓòÉΓòÉΓòÉ 4.2.4. Translation Layer for Extensions ΓòÉΓòÉΓòÉ
The GRADD Model can be extended using the VMI extension protocol. Using this
protocol, a translation layer directs extension functions to a GRADD via the
VMI_CMD_EXTENSION function. In order to accomplish this, a translation layer
must be provided (shown as 'EXT2VMAN' in the GRADD Model diagram.
See Adding Extensions for more information.
ΓòÉΓòÉΓòÉ 4.3. SOFTDRAW ΓòÉΓòÉΓòÉ
This section describes the SOFTDRAW component. SOFTDRAW is the default for any
simulated graphics functions for nonaccelerated graphics operations.
SOFTDRAW exports base drawing functions (SDBitBlt and SDLINE) that are used by
VMAN to simulate graphics operations. SOFTDRAW provides a generic graphics
library. Given a pointer to a linear address (a VRAM bit map or system-memory
bit map), SOFTDRAW can draw the bits directly into the bit map.
ΓòÉΓòÉΓòÉ 4.4. Graphics Adapter Device Driver (GRADD) ΓòÉΓòÉΓòÉ
This section describes the Graphics Adapter Device Driver component and how
GRADDs interface with VMAN.
ΓòÉΓòÉΓòÉ 4.4.1. Graphics Hardware Interface (GHI) ΓòÉΓòÉΓòÉ
The entry point and functions supported by a GRADD are referred to as the
Graphics Hardware Interface (GHI). The differences between the VMAN protocol
(VMI) and the protocol for the GRADDs (GHI) include the following:
o The GHI is a subset of the VMI.
o The ulFunction parameter value changes to the appropriate GHI_CMD_
function name.
Each GRADD has an exported function called "HWEntry," which is the same
function type as VMIEntry in VMAN.
ULONG HWENTRY(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
HWEntry receives all of the operations from VMAN.
For most systems, the GRADDs are the only components that access the video
hardware. A GRADD contains the code that uses the accelerated features of a
graphics adapter. If a GRADD returns RC_SIMULATE for a graphics operation, the
GRADD is giving permission for the SOFTDRAW component to draw directly to the
video memory of the hardware. The serialization of video memory is handled by
the Video Manager via the GHI_CMD_REQUESTHW function.
Each GRADD must process the following GHI_CMD_ functions:
o GHI_CMD_INIT
o GHI_CMD_QUERYCAPS
o GHI_CMD_QUERYMODES
o GHI_CMD_SETMODE
o GHI_CMD_PALETTE *
* This function is mandatory only when a 256-color mode has been chosen.
The following GHI functions can return RC_SIMULATE and let VMAN handle the
operations:
o GHI_CMD_BITBLT
o GHI_CMD_LINE
o GHI_CMD_SETPTR
o GHI_CMD_MOVEPTR
o GHI_CMD_SHOWPTR
The GHI function numbers are assigned in such a way that they can be used as a
zero-based index into a function jump table.
ΓòÉΓòÉΓòÉ 4.4.2. Systems Management (RAS) ΓòÉΓòÉΓòÉ
Due to the performance-critical nature of the video graphics subsystem, all
systems management and RAS hooks should be placed in a filter GRADD. This will
ensure that the majority of users, who do not need this support, will not
experience the performance degradations caused by the addition of trace points
and hooks.
ΓòÉΓòÉΓòÉ 5. Video Manager ΓòÉΓòÉΓòÉ
This chapter describes the functions, called by the Video Manager, that are
designated by the prefix VMI_CMD_. The following table lists those functions
that have corresponding GHI_CMD_ functions in the Graphics Hardware Interface.
Next, the Video Helper functions are listed; following that, in alphabetic
order, each function is described in detail.
ΓòÉΓòÉΓòÉ 5.1. VMI_CMD_xx Functions Identical to GHI_CMD_xx Functions ΓòÉΓòÉΓòÉ
There are only a few differences between the VMAN protocol, Video Manager
Interface (VMI), and the GRADD protocol, Graphics Hardware Interface (GHI). In
fact, the majority of the functions are identical, with only the prefix (VMI or
GHI) indicating to which component the function belongs.
The common functions are as follows:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéVideo Manager Interface (VMI) ΓöéGraphics Hardware Interface Γöé
Γöé Γöé(GHI) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_BITBLT ΓöéGHI_CMD_BITBLT Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_EVENT ΓöéGHI_CMD_EVENT Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_EXTENSION ΓöéGHI_CMD_EXTENSION Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_INIT ΓöéGHI_CMD_INIT Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_INITPROC ΓöéGHI_CMD_INITPROC Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_LINE ΓöéGHI_CMD_LINE Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_MOVEPTR ΓöéGHI_CMD_MOVEPTR Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_PALETTE ΓöéGHI_CMD_PALETTE Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_QUERYCAPS ΓöéGHI_CMD_QUERYCAPS Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_QUERYMODES ΓöéGHI_CMD_QUERYMODES Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_REQUESTHW ΓöéGHI_CMD_REQUESTHW Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_SETMODE ΓöéGHI_CMD_SETMODE Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_SETPTR ΓöéGHI_CMD_SETPTR Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_SHOWPTR ΓöéGHI_CMD_SHOWPTR Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_TERM ΓöéGHI_CMD_TERM Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_TERMPROC ΓöéGHI_CMD_TERMPROC Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVMI_CMD_VRAM ΓöéGHI_CMD_VRAM Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
The only difference between the two types of functions (VMI_ and GHI_) is that
the ulFunction parameter in VMIEntry and HWEntry points to the respective VMI_
or GHI_ function name. The Video Manager Interface functions are described in
this chapter. Refer to Graphics Adapter Device Drivers for descriptions of the
Graphics Hardware Interface functions and the EnDIVE functions.
There is one function that is unique to VMAN and has no corresponding GHI
function: VMI_CMD_QUERYCHAININFO.
ΓòÉΓòÉΓòÉ 5.2. Video Helper Functions ΓòÉΓòÉΓòÉ
The video helper functions are listed below:
o VHAllocMem
o VHFreeMem
The remainder of this chapter contains a detailed description of each of the
Video Helper and VMI functions. The functions are in alphabetic order by
function name.
ΓòÉΓòÉΓòÉ 5.3. VHAllocMem ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VHAllocMem returns a */
/* 32-bit pointer to a piece of memory. */
/* The caller of this function supplies */
/* the byte count required. This function */
/* is a helper service for operations that */
/* are common across all GRADDs. */
/*******************************************/
#include <ddi.h>
ULONG cBytes; /* Number of bytes of memory required. */
PVOID rc; /* Return codes. */
rc = VHAllocMem(cBytes);
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem Parameter - cBytes ΓòÉΓòÉΓòÉ
cBytes (ULONG) - input
Number of bytes of memory required.
Indicates the number of bytes of memory required for this allocation
request.
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem Return Value - rc ΓòÉΓòÉΓòÉ
rc (PVOID) - returns
Return codes.
RC_SUCCESS Returns pointer to allocated memory.
RC_ERROR Returns NULL pointer.
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Parameters ΓòÉΓòÉΓòÉ
cBytes (ULONG) - input
Number of bytes of memory required.
Indicates the number of bytes of memory required for this allocation
request.
rc (PVOID) - returns
Return codes.
RC_SUCCESS Returns pointer to allocated memory.
RC_ERROR Returns NULL pointer.
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Remarks ΓòÉΓòÉΓòÉ
Memory is valid across all processes.
ΓòÉΓòÉΓòÉ <hidden> VHAllocMem - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.4. VHFreeMem ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VHFreeMem frees memory */
/* that has been allocated via the */
/* VHAllocMem helper. This function is a */
/* helper service for operations that are */
/* common across all GRADDs. */
/*******************************************/
#include <ddi.h>
PVOID cBytes; /* Pointer to previous memory allocation. */
ULONG rc; /* Return codes. */
rc = VHFreeMem(cBytes);
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem Parameter - cBytes ΓòÉΓòÉΓòÉ
cBytes (PVOID) - input
Pointer to previous memory allocation.
Pointer to memory previously allocated via VHAllocMem.
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Parameters ΓòÉΓòÉΓòÉ
cBytes (PVOID) - input
Pointer to previous memory allocation.
Pointer to memory previously allocated via VHAllocMem.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VHFreeMem - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.5. VMI_CMD_BITBLT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_BITBLT is called */
/* to blit a rectangle or series of */
/* rectangles to or from the video */
/* display. VMAN passes this command */
/* directly to the GRADD chain identified */
/* by the GRADD ID provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_BITBLT. */
PVOID pIn; /* Pointer to a BITBLTINFO data structure. */
PVOID pOut; /* Null; no output structure needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_BITBLT.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a BITBLTINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Null; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_BITBLT.
pIn (PVOID) - input
Pointer to a BITBLTINFO data structure.
pOut (PVOID) - output
Null; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_BITBLT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.6. VMI_CMD_EVENT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_EVENT is called */
/* to notify a GRADD of specific events. */
/* VMAN sends this command directly to the */
/* GRADD chain identified by the GRADD ID. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_EVENT. */
PVOID pIn; /* Pointer to an HWEVENTIN data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_EVENT.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWEVENTIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_EVENT.
pIn (PVOID) - input
Pointer to an HWEVENTIN data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EVENT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.7. VMI_CMD_EXTENSION ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_EXTENSION is */
/* called to send an extension command to */
/* a GRADD. VMAN sends this command */
/* directly to the GRADD chain identified */
/* by the GRADD ID provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_EXTENSION. */
PVOID pIn; /* Pointer to an HWEXTENSION data structure. */
PVOID pOut; /* Pointer to an extension-specific output structure. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_EXTENSION.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWEXTENSION data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an extension-specific output structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_EXTENSION.
pIn (PVOID) - input
Pointer to an HWEXTENSION data structure.
pOut (PVOID) - output
Pointer to an extension-specific output structure.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_EXTENSION - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.8. VMI_CMD_INIT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_INIT informs the */
/* Video Manager (VMAN) that a translation */
/* layer has been loaded and that VMAN may */
/* need to be initialized. VMAN */
/* initializes itself once only; */
/* subsequent VMI_CMD_INIT calls are */
/* ignored. During the first */
/* initialization, VMAN loads SOFTDRAW and */
/* all of the GRADDs specified by the */
/* environment variables. */
/*******************************************/
#include <ddi.h>
GID gid; /* NULL. */
ULONG ulFunction; /* Set equal to VMI_CMD_INIT. */
PVOID pIn; /* NULL. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = VMIEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_INIT.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ulFunction (ULONG) - input
Set equal to VMI_CMD_INIT.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INIT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.9. VMI_CMD_INITPROC ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_INITPROC informs */
/* VMAN that a new process is being */
/* initialized. It indicates that this new */
/* process intends to be a client of the */
/* VMAN component. VMAN ensures that all */
/* data and code is valid under this new */
/* process. */
/*******************************************/
#include <ddi.h>
GID gid; /* NULL. */
ULONG ulFunction; /* Set equal to VMI_CMD_INITPROC. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to an INITPROCOUT data structure. */
ULONG rc; /* Return codes. */
rc = VMIEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_INITPROC.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an INITPROCOUT data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ulFunction (ULONG) - input
Set equal to VMI_CMD_INITPROC.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to an INITPROCOUT data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_INITPROC - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.10. VMI_CMD_LINE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_LINE is called to */
/* draw a line to the video display. VMAN */
/* sends this command directly to the */
/* GRADD chain identified by the GRADD ID */
/* provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_LINE. */
PVOID pIn; /* Pointer to a LINEINFO data structure. */
PVOID pOut; /* NULL; no output structure is needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_LINE.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a LINEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure is needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_LINE.
pIn (PVOID) - input
Pointer to a LINEINFO data structure.
pOut (PVOID) - output
NULL; no output structure is needed.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_LINE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.11. VMI_CMD_MOVPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_MOVPTR is called */
/* to change the position of the pointer */
/* hot spot. VMAN sends this command */
/* directly to the GRADD chain identified */
/* by the GRADD ID provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_MOVPTR. */
PVOID pIn; /* Pointer to an HWMOVEPTRIN data structure. */
PVOID pOut; /* NULL; no output structure is needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_MOVPTR.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWMOVEPTRIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure is needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_MOVPTR.
pIn (PVOID) - input
Pointer to an HWMOVEPTRIN data structure.
pOut (PVOID) - output
NULL; no output structure is needed.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_MOVPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.12. VMI_CMD_PALETTE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_PALETTE is */
/* mandatory if the device supports */
/* 256-color mode. This function is */
/* called to query or set the hardware */
/* color palette. VMAN sends this command */
/* directly to the GRADD chain identified */
/* by the GRADD ID provided by the */
/* caller. The GRADD is expected to */
/* respond by describing the palettte in a */
/* given array or by using the palette */
/* given in the array. The GRADD is always */
/* given an HWPALETTEINFO structure with */
/* either the PALETTE_GET or PALETTE_SET */
/* flag to specifiy the operation to */
/* perform. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_PALETTE. */
PVOID pIn; /* Pointer to an HWPALETTEINFO data structure. */
PVOID pOut; /* Depends on value of pIn. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_PALETTE.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWPALETTEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Depends on value of pIn.
If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a
pointer to an HWPALETTEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_PALETTE.
pIn (PVOID) - input
Pointer to an HWPALETTEINFO data structure.
pOut (PVOID) - output
Depends on value of pIn.
If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a
pointer to an HWPALETTEINFO data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_PALETTE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.13. VMI_CMD_QUERYCAPS ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_QUERYCAPS returns */
/* the capabilities of a particular */
/* GRADD. VMAN sends this command directly */
/* to the GRADD chain identified by the */
/* GRADD ID provided by the caller. */
/* VMI_CMD_QUERYCAPS is not typically used */
/* by translation layers because the */
/* VMI_CMD_QUERYCHAININFO function returns */
/* the capabilities of all GRADDs, as */
/* opposed to just one. */
/* VMI_CMD_QUERYCHAININFO is the */
/* recommended way of querying the */
/* capabilities of all GRADDs in the */
/* system. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_QUERYCAPS. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to a VMIQCI data structure. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYCAPS.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a VMIQCI data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYCAPS.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to a VMIQCI data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCAPS - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.14. VMI_CMD_QUERYCHAININFO ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_QUERYCHAININFO is */
/* unique to VMAN (there is no */
/* corresponding function in the Graphics */
/* Hardware Interface). This function is */
/* called to obtain a pointer to the video */
/* chain information, which contains */
/* information about every GRADD currently */
/* loaded. Each GRADDINFO structure */
/* contains information, such as */
/* capabilities and mode information, for */
/* a single GRADD. The CHAININFO structure */
/* contains a pointer to a linked list of */
/* GRADDINFO structures. If multiple GRADD */
/* chains are in use, the head CHAININFO */
/* structure contains a pointer to the */
/* next CHAININFO structure. */
/*******************************************/
#include <ddi.h>
GID gid; /* NULL. */
ULONG ulFunction; /* Set equal to VMI_CMD_QUERYCHAININFO. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to a VMIQCI data structure. */
ULONG rc; /* Return codes. */
rc = VMIEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYCHAININFO.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a VMIQCI data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL.
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYCHAININFO.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to a VMIQCI data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYCHAININFO - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.15. VMI_CMD_QUERYMODES ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_QUERYMODES */
/* returns video mode information for a */
/* particular GRADD. VMAN passes this */
/* command directly to the GRADD chain */
/* identified by the GRADD ID provided by */
/* the caller. VMI_CMD_QUERYMODES is not */
/* typically used by translation layers */
/* because the VMI_CMD_QUERYCHAININFO */
/* function returns the capabilities of */
/* all GRADDs, as opposed to just one. */
/* VMI_CMD_QUERYCHAININFO is the */
/* recommended way of querying the */
/* available modes of all GRADDs in the */
/* system. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_QUERYMODES. */
PVOID pIn; /* Pointer that identifies a QUERYMODE operation. */
PVOID pOut; /* Pointer to the pIn operation. */
ULONG rc; /* Return codes. */
rc = VMIEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYMODES.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer that identifies a QUERYMODE operation.
This pointer identifies one of the following operations:
QUERYMODE_NUM_MODES
QUERYMODE_MODE_DATA
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to the pIn operation.
This pointer indicates one of the following, depending on the value of pIn:
QUERYMODE_NUM_MODES
Indicates a pointer to a ULONG containing the number of
supported modes.
QUERYMODE_MODE_DATA
Indicates a pointer to an array of GDDMODEINFO structures
large enough for the number of supported modes.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_QUERYMODES.
pIn (PVOID) - input
Pointer that identifies a QUERYMODE operation.
This pointer identifies one of the following operations:
QUERYMODE_NUM_MODES
QUERYMODE_MODE_DATA
pOut (PVOID) - output
Pointer to the pIn operation.
This pointer indicates one of the following, depending on the value of pIn:
QUERYMODE_NUM_MODES
Indicates a pointer to a ULONG containing the number of
supported modes.
QUERYMODE_MODE_DATA
Indicates a pointer to an array of GDDMODEINFO structures
large enough for the number of supported modes.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_QUERYMODES - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.16. VMI_CMD_REQUESTHW ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_REQUESTHW is */
/* called to request access to the video */
/* hardware. VMAN processes this command */
/* and sends a GHI_CMD_REQUESTHW call to */
/* the GRADD chain identified by the GRADD */
/* ID provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_REQUESTHW. */
PVOID pIn; /* Pointer to an HWREQIN data structure. */
PVOID pOut; /* NULL; no output structure is needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_REQUESTHW.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWREQIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure is needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_REQUESTHW.
pIn (PVOID) - input
Pointer to an HWREQIN data structure.
pOut (PVOID) - output
NULL; no output structure is needed.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_REQUESTHW - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.17. VMI_CMD_SETMODE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_SETMODE sets the */
/* video display adapter to a given mode. */
/* VMAN passes this command directly to */
/* the GRADD chain identified by the GRADD */
/* ID provided by the caller. The GRADD is */
/* expected to set the video mode, given */
/* an ID of the chosen mode. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_SETMODE. */
PVOID pIn; /* Pointer to PULONG containing the ID of the requested mode. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_SETMODE.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to PULONG containing the ID of the requested mode.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_SETMODE.
pIn (PVOID) - input
Pointer to PULONG containing the ID of the requested mode.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETMODE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.18. VMI_CMD_SETPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_SETPTR sets the */
/* pointer AND,XOR masks. VMAN sends this */
/* command to the GRADD chain identified */
/* by the GRADD ID provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_SETPTR. */
PVOID pIn; /* Pointer to an HWSETPTRIN data structure. */
PVOID pOut; /* Pointer to an HWSETPTROUT data structure. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_SETPTR.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWSETPTRIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an HWSETPTROUT data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_SETPTR.
pIn (PVOID) - input
Pointer to an HWSETPTRIN data structure.
pOut (PVOID) - output
Pointer to an HWSETPTROUT data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SETPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.19. VMI_CMD_SHOWPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_SHOWPTR sets the */
/* visibility state of the pointer. VMAN */
/* sends this command to the GRADD chain */
/* identified by the GRADD ID provided by */
/* the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_SHOWPTR. */
PVOID pIn; /* Pointer to an HWSHOWPTRIN data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_SHOWPTR.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWSHOWPTRIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_SHOWPTR.
pIn (PVOID) - input
Pointer to an HWSHOWPTRIN data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_SHOWPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.20. VMI_CMD_TERM ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_TERM informs VMAN */
/* that an existing client process is */
/* being terminated. */
/*******************************************/
#include <ddi.h>
GID gid; /* NULL; parameter ignored by VMAN. */
ULONG ulFunction; /* Set equal to VMI_CMD_TERM. */
PVOID pIn; /* NULL. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL; parameter ignored by VMAN.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_TERM.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
NULL; parameter ignored by VMAN.
ulFunction (ULONG) - input
Set equal to VMI_CMD_TERM.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERM - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.21. VMI_CMD_TERMPROC ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_TERMPROC is */
/* mandatory and informs VMAN that an */
/* existing client process is being */
/* terminated. VMAN cleans up all */
/* resources owned by this process. VMAN */
/* passes this command directly to the */
/* GRADD chain identified by the GRADD ID */
/* provided by the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_TERMPROC. */
PVOID pIn; /* NULL. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_TERMPROC.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_TERMPROC.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_TERMPROC - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.22. VMI_CMD_VRAM ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMI_CMD_VRAM is called to */
/* allocate off-screen video memory. VMAN */
/* sends this command to the GRADD chain */
/* identified by the GRADD ID provided by */
/* the caller. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to VMI_CMD_VRAM. */
PVOID pIn; /* Pointer to a VRAMALLOCIN data structure. */
PVOID pOut; /* Pointer to a VRAMALLOCOUT data structure. */
ULONG rc; /* Return codes. */
rc = VMIENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to VMI_CMD_VRAM.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a VRAMALLOCIN data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a VRAMALLOCOUT data structure.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to VMI_CMD_VRAM.
pIn (PVOID) - input
Pointer to a VRAMALLOCIN data structure.
pOut (PVOID) - output
Pointer to a VRAMALLOCOUT data structure.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMI_CMD_VRAM - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 5.23. VMIEntry ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: VMIEntry is the single */
/* exported function from the Video */
/* Manager component. It is part of the */
/* Video Manager Interface (VMI) protocol */
/* and receives operations from the */
/* translation layer components. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set to appropriate VMI_CMD_ function. */
PVOID pIn; /* Pointer to applicable data structure. */
PVOID pOut; /* Pointer to applicable data structure. */
ULONG rc; /* Return codes. */
rc = VMIEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set to appropriate VMI_CMD_ function.
This parameter is set to one of the VMI_CMD_ functions shown in the table of
common functions shown at the beginning of this section.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to applicable data structure.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to applicable data structure.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
Valid values are dictated by the applicable VMI_CMD_ function.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set to appropriate VMI_CMD_ function.
This parameter is set to one of the VMI_CMD_ functions shown in the table of
common functions shown at the beginning of this section.
pIn (PVOID) - input
Pointer to applicable data structure.
pOut (PVOID) - output
Pointer to applicable data structure.
rc (ULONG) - returns
Return codes.
Valid values are dictated by the applicable VMI_CMD_ function.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> VMIEntry - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6. Graphics Adapter Device Drivers ΓòÉΓòÉΓòÉ
This chapter describes the functions called by individual Graphics Adapter
Device Drivers (GRADDs), which are designated by the prefix GHI_CMD_. The
chapter also discusses Enhanced Direct Interface Video Extension (EnDIVE)
functions, which are designated by the prefix EXT_CMD_.
ΓòÉΓòÉΓòÉ 6.1. User Interfaces ΓòÉΓòÉΓòÉ
All GRADDs must export a function of the following typedef:
ULONG HWEntry(GID gid, ULONG ulFunction, PVOID pIn, PVOID pOut);
ΓòÉΓòÉΓòÉ 6.2. Adding Extensions ΓòÉΓòÉΓòÉ
One of the most important design points of the GRADD Model is the ability to
extend or enhance the overall architecture. It is not possible to anticipate
the changes in future graphics hardware, so we must provide a mechanism to
extend the architecture in a manner that takes fullest advantage of the new
hardware.
There are many ways to extend the GRADD Model. Using the VMI_CMD_EXTENSION
command, an extension can be written that passes its own defined commands to a
GRADD. Support for an extension can be added to an existing GRADD, or a new
GRADD can be written to handle the additional support for a given extension.
ΓòÉΓòÉΓòÉ 6.2.1. Adding Extensions to an Existing GRADD ΓòÉΓòÉΓòÉ
When the Video Manager (VMAN) issues the GHI_CMD_INIT command to a GRADD, it
gives the GRADD a unique ID. Upon return from the GHI_CMD_INIT command, the
GRADD returns the number of function classes it supports. The GRADD must assign
a unique GID to each of its function-class instances. The GID provided to the
GRADD by VMAN must be bumped up by one for every function-class instance.
Note: For Presentation Manager and Seamless Windows functions, a GRADD must
support the Base Function class of services. The GRE2VMAN component
looks specifically for a GRADD that supports this class of function.
VMAN will allocate one GRADDINFO structure for every class of function that a
GRADD supports. VMAN will call GHI_CMD_QUERYCAPS once for every function-class
instance. This allows an extension layer to associate a GID with a set of
function classes.
The extension layer uses the VMI_CMD_EXTENSION function to communicate with a
GRADD. It is up to the extension layer to define the unique extension
functions. The extensions must use VMAN to communicate with the GRADD. The
input packet to the VMI_CMD_EXTENSION function includes information about
screen change areas and hardware serialization. This information allows VMAN to
maintain hardware pointer support and hardware serialization.
ΓòÉΓòÉΓòÉ 6.2.2. Creating an Extension GRADD ΓòÉΓòÉΓòÉ
An extension GRADD can be added to the system without interfering with normal
operations. The extension GRADD works in the same manner as a normal GRADD. The
extension GRADD identifies itself to the system via the pszFunctionClassID
field of the CAPSINFO data structure. This structure is returned to VMAN via
GHI_CMD_QUERYCAPS.
The extension layer communicates with the extension GRADD in the same manner
described in the "Adding Extensions to an Existing GRADD" section earlier.
ΓòÉΓòÉΓòÉ 6.2.2.1. Creating an EnDIVE Multimedia Extension GRADD ΓòÉΓòÉΓòÉ
OS/2 Warp supports an enhanced direct interface video extension, referred to as
EnDIVE. This extension is designed to support graphics chips that handle video
acceleration in hardware. The EnDIVE multimedia extension described here
supports the same level of functionality under the GRADD Model. An EnDIVE
driver for OS/2 Warp is directly portable to OS/2 Warp, Version 3, PowerPC
Edition, because it has been designed as an extension GRADD.
The following figure diagrams the DIVE Display Engine.
The phrase "video acceleration" recently has taken on a new meaning. In the
past, video acceleration was a way of describing hardware assist for bitblts,
lines, and so on. Today, video acceleration or video accelerators describe
hardware assist for video-acceleration software. The minimum requirement
necessary to be considered a video accelerator is the ability to perform a
stretch blit in hardware. More powerful video accelerators perform additional
functions, such as dynamic color conversion, decompression, and compression.
These types of operations are directly applicable to the needs of multimedia
video-acceleration software.
The EnDIVE multimedia extension GRADD consists of four functions, contained in
the ulXSubFunction field of the HWEXTENSION packet. For each extension
function, the input packet is pointed to by the pXP1 field of the HWEXTENSION
packet.
The four EnDIVE functions are listed below:
o EXT_CMD_ENDIVE_GET
o EXT_CMD_ENDIVE_INIT
o EXT_CMD_ENDIVE_PUT
o EXT_CMD_ENDIVE_QUERY
For details on each of these functions, refer to Enhanced Direct Interface
Video Extension (EnDIVE) Functions.
ΓòÉΓòÉΓòÉ 6.3. NLS Support ΓòÉΓòÉΓòÉ
The GRADD Model is independent of the language and the operating system service
being used. Double-byte character sets and other issues for different language
releases are a matter of the translation of the operating system service, not
of any code in the GRADD Model.
ΓòÉΓòÉΓòÉ 6.4. Graphics Hardware Interface Functions ΓòÉΓòÉΓòÉ
The Graphics Adapter Device Driver Interface (GHI) functions are listed in the
following table for easy reference. Each of these functions has an identical
corresponding VMAN VMI_CMD_ function. The difference is that the VMI functions
use VMIEntry, while the GHI functions use HWEntry.
The following table lists the GRADD Graphics Hardware Interface functions and
whether they are mandatory or optional.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéFunction ΓöéType Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_BITBLT ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_EVENT ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_EXTENSION ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_INIT ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_INITPROC ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_LINE ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_MOVEPTR ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_PALETTE ΓöéMandatory* Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_QUERYCAPS ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_QUERYMODES ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_REQUESTHW ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_SETMODE ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_SETPTR ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_SHOWPTR ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_TERM ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_TERMPROC ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGHI_CMD_VRAM ΓöéOptional Γöé
Γöé Γöé* At 256 color modesΓöé
Γöé Γöéonly. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 6.5. GHI_CMD_BITBLT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_BITBLT is */
/* optional and is called to draw bit maps */
/* to and from the video display. The */
/* GRADD can return this function call to */
/* VMAN for simulation. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_BITBLT. */
PVOID pIn; /* Pointer to a BITBLTINFO data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_BITBLT.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a BITBLTINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_BITBLT.
pIn (PVOID) - input
Pointer to a BITBLTINFO data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_BITBLT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.6. GHI_CMD_EVENT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_EVENT is optional */
/* and is called to notify a GRADD of */
/* specific events. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_EVENT. */
PVOID pIn; /* Pointer to an HWEVENTIN data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_EVENT.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWEVENTIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_EVENT.
pIn (PVOID) - input
Pointer to an HWEVENTIN data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EVENT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.7. GHI_CMD_EXTENSION ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_EXTENSION is */
/* optional and is called to send an */
/* extension command to a GRADD. The */
/* extension subfunction is placed in the */
/* ulXSubFunction field of the pIn input */
/* packet. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_EXTENSION. */
PVOID pIn; /* Pointer to an HWEXTENSION structure. */
PVOID pOut; /* Pointer to an extension-specific output structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_EXTENSION.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWEXTENSION structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an extension-specific output structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_EXTENSION.
pIn (PVOID) - input
Pointer to an HWEXTENSION structure.
pOut (PVOID) - output
Pointer to an extension-specific output structure.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_EXTENSION - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.8. GHI_CMD_INIT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_INIT is mandatory */
/* and is called to initialize the GRADD. */
/* It is the first command a GRADD */
/* receives from the Video Manager (VMAN). */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_INIT. */
PVOID pIn; /* Pointer to a GDDINITIN data structure. */
PVOID pOut; /* Pointer to a GDDINITOUT data structure. */
ULONG rc; /* Return codes. */
rc = HWEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_INIT.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a GDDINITIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a GDDINITOUT data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_INIT.
pIn (PVOID) - input
Pointer to a GDDINITIN data structure.
pOut (PVOID) - output
Pointer to a GDDINITOUT data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INIT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.9. GHI_CMD_INITPROC ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_INITPROC is */
/* mandatory and informs a GRADD that a */
/* new process is being initialized. It */
/* indicates that this new process intends */
/* to be a client of the GRADD component. */
/* The GRADD ensures that all data and */
/* code is valid under this new process. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_INITPROC. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to an INITPROCOUT data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_INITPROC.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an INITPROCOUT data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_INITPROC.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to an INITPROCOUT data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_INITPROC - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.10. GHI_CMD_LINE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_LINE is optional */
/* and is called to draw lines to the */
/* video display. The GRADD can return */
/* this function call to VMAN for */
/* simulation. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_LINE. */
PVOID pIn; /* Pointer to a LINEINFO data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_LINE.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a LINEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_LINE.
pIn (PVOID) - input
Pointer to a LINEINFO data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_LINE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.11. GHI_CMD_MOVEPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_MOVEPTR is */
/* optional and is called to move the */
/* pointer to the new location. The GRADD */
/* can return this function call to VMAN */
/* for simulation. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_MOVEPTR. */
PVOID pIn; /* Pointer to an HWMOVEPTRIN structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_MOVEPTR.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWMOVEPTRIN structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_MOVEPTR.
pIn (PVOID) - input
Pointer to an HWMOVEPTRIN structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_MOVEPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.12. GHI_CMD_PALETTE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_PALETTE is */
/* mandatory if the device supports */
/* 256-color mode. This function is */
/* called to set the hardware palette. The */
/* GRADD is expected to respond by */
/* describing the palette in a given array */
/* or by using the palette given in the */
/* array. The GRADD is always given an */
/* HWPALETTEINFO structure with either the */
/* PALETTE_GET or PALETTE_SET flag to */
/* specify the operation to perform. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_PALETTE. */
PVOID pIn; /* Pointer to an HWPALETTEINFO structure. */
PVOID pOut; /* Depends on value of pIn. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_PALETTE.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWPALETTEINFO structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Depends on value of pIn.
If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a
pointer to an HWPALETTEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_PALETTE.
pIn (PVOID) - input
Pointer to an HWPALETTEINFO structure.
pOut (PVOID) - output
Depends on value of pIn.
If '_SET' is specified by pIn, pOut If '_GET' is specified by pIn, pOut is a
pointer to an HWPALETTEINFO data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_PALETTE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.13. GHI_CMD_QUERYCAPS ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_QUERYCAPS is */
/* mandatory. The GRADD is expected to */
/* return its capabilities. The returned */
/* capabilities are packaged by VMAN and */
/* given to a Translation Layer. The */
/* Translation Layer uses these */
/* capabilities to decide which GHI_CMD_ */
/* functions are sent to the GRADD. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_QUERYCAPS. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to a CAPSINFO data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_QUERYCAPS.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a CAPSINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_QUERYCAPS.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to a CAPSINFO data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYCAPS - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.14. GHI_CMD_QUERYMODES ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_QUERYMODES is */
/* mandatory and is called to query the */
/* available video mode information. The */
/* GRADD is expected to respond with */
/* information regarding the video */
/* graphics modes supported by the GRADD. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_QUERYMODES. */
PVOID pIn; /* Pointer that identifies a QUERYMODE operation. */
PVOID pOut; /* Pointer to the pIn operation. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_QUERYMODES.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer that identifies a QUERYMODE operation.
This pointer identifies one of the following operations:
QUERYMODE_NUM_MODES
QUERYMODE_MODE_DATA
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to the pIn operation.
This pointer indicates one of the following, depending on the value of pIn:
QUERYMODE_NUM_MODES
Indicates a pointer to a ULONG that is to be given the number of
supported modes.
QUERYMODE_MODE_DATA
Indicates a pointer to an array of GDDMODEINFO structures large
enough for the number of supported modes.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_QUERYMODES.
pIn (PVOID) - input
Pointer that identifies a QUERYMODE operation.
This pointer identifies one of the following operations:
QUERYMODE_NUM_MODES
QUERYMODE_MODE_DATA
pOut (PVOID) - output
Pointer to the pIn operation.
This pointer indicates one of the following, depending on the value of pIn:
QUERYMODE_NUM_MODES
Indicates a pointer to a ULONG that is to be given the number of
supported modes.
QUERYMODE_MODE_DATA
Indicates a pointer to an array of GDDMODEINFO structures large
enough for the number of supported modes.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_QUERYMODES - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.15. GHI_CMD_REQUESTHW ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_REQUESTHW is */
/* optional and allows a translation layer */
/* exclusive access to the video hardware. */
/* It can do such operations as writing */
/* directly to the video buffer. This */
/* function is used to request and release */
/* the video hardware. The fRequest field */
/* of the pIn data packet determines if */
/* this function is a request or a release.*/
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_REQUESTHW. */
PVOID pIn; /* Pointer to an HWREQIN data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_REQUESTHW.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWREQIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_REQUESTHW.
pIn (PVOID) - input
Pointer to an HWREQIN data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_REQUESTHW - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.16. GHI_CMD_SETMODE ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_SETMODE is */
/* mandatory. The GRADD is expected to set */
/* the video mode, given an ID of the */
/* chosen mode. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_SETMODE. */
PVOID pIn; /* Pointer to PULONG containing the ID of the requested mode. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_SETMODE.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to PULONG containing the ID of the requested mode.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_SETMODE.
pIn (PVOID) - input
Pointer to PULONG containing the ID of the requested mode.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETMODE - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.17. GHI_CMD_SETPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_SETPTR is */
/* optional and is called to set the */
/* pointer bit masks. Both monochrome and */
/* color pointers can be set. The GRADD */
/* can return this function call to VMAN */
/* for simulation. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_SETPTR. */
PVOID pIn; /* Pointer to an HWSETPTRIN data structure. */
PVOID pOut; /* Pointer to an HWSETPTROUT data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_SETPTR.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWSETPTRIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an HWSETPTROUT data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_SETPTR.
pIn (PVOID) - input
Pointer to an HWSETPTRIN data structure.
pOut (PVOID) - output
Pointer to an HWSETPTROUT data structure.
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SETPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.18. GHI_CMD_SHOWPTR ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_SHOWPTR is */
/* optional and sets the visibility state */
/* of the pointer. The fShow field of the */
/* pIn data packet determines the */
/* visibility state. The GRADD can return */
/* this function call to VMAN for */
/* simulation. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_SHOWPTR. */
PVOID pIn; /* Pointer to an HWSHOWPTRIN data structure. */
PVOID pOut; /* NULL; no output structure needed. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_SHOWPTR.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an HWSHOWPTRIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL; no output structure needed.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_SHOWPTR.
pIn (PVOID) - input
Pointer to an HWSHOWPTRIN data structure.
pOut (PVOID) - output
NULL; no output structure needed.
rc (ULONG) - returns
Return codes.
RC_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_SHOWPTR - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.19. GHI_CMD_TERM ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_TERM is optonal */
/* and is called by a Translation Layer */
/* when it no longer requires the services */
/* of VMAN. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_TERM. */
PVOID pIn; /* NULL. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_TERM.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_TERM.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERM - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.20. GHI_CMD_TERMPROC ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_TERMPROC is */
/* optional and informs the GRADD that an */
/* existing client process is being */
/* terminated. The GRADD should clean up */
/* all resources owned by this process. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_TERMPROC. */
PVOID pIn; /* NULL. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_TERMPROC.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_TERMPROC.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_TERMPROC - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.21. GHI_CMD_VRAM ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GHI_CMD_VRAM is optional */
/* and is called to request allocation of */
/* off-screen video memory. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to GHI_CMD_VRAM. */
PVOID pIn; /* Pointer to a VRAMIN data structure. */
PVOID pOut; /* Pointer to a function-specific output data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to GHI_CMD_VRAM.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a VRAMIN data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a function-specific output data structure.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to GHI_CMD_VRAM.
pIn (PVOID) - input
Pointer to a VRAMIN data structure.
pOut (PVOID) - output
Pointer to a function-specific output data structure.
rc (ULONG) - returns
Return codes.
RC_UNSUPPORTED
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GHI_CMD_VRAM - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.22. HWEntry ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> HWEntry - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: HWEntry is the single */
/* exported function from a graphics */
/* adapter device driver (GRADD). It is */
/* part of the Graphics Hardware Interface */
/* (GHI) protocol for GRADDs and receives */
/* all of the operations from the Video */
/* Manager (VMAN) component. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set to appropriate GHI_CMD_ function. */
PVOID pIn; /* Pointer to a GHI_-specific input data structure. */
PVOID pOut; /* Pointer to a GHI_-specific output data structure. */
ULONG rc; /* Return codes. */
rc = HWEntry(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set to appropriate GHI_CMD_ function.
This parameter is set to one of the GHI_CMD_ functions shown in the table at
the beginning of this section.
ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to a GHI_-specific input data structure.
ΓòÉΓòÉΓòÉ <hidden> HWEntry Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to a GHI_-specific output data structure.
ΓòÉΓòÉΓòÉ <hidden> HWEntry Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
Valid values are dictated by the applicable GHI_CMD_ function.
ΓòÉΓòÉΓòÉ <hidden> HWEntry - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set to appropriate GHI_CMD_ function.
This parameter is set to one of the GHI_CMD_ functions shown in the table at
the beginning of this section.
pIn (PVOID) - input
Pointer to a GHI_-specific input data structure.
pOut (PVOID) - output
Pointer to a GHI_-specific output data structure.
rc (ULONG) - returns
Return codes.
Valid values are dictated by the applicable GHI_CMD_ function.
ΓòÉΓòÉΓòÉ <hidden> HWEntry - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> HWEntry - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.23. Enhanced Direct Interface Video Extension (EnDIVE) Functions ΓòÉΓòÉΓòÉ
The following table lists the EXT_CMD_ functions that are specific to the
Enhanced Direct Interface Video Extension (EnDIVE) process. These EnDIVE
functions do not have corresponding VMI_CMD_ functions. An EnDIVE driver
created for OS/2 Warp can be easily ported to OS/2 Warp, Version 3, PowerPC
Edition because it is an extension GRADD.
The following table lists the EnDIVE functions and whether they are mandatory
or optional.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéFunction ΓöéType Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEXT_CMD_ENDIVE_GET ΓöéOptional Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEXT_CMD_ENDIVE_INIT ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEXT_CMD_ENDIVE_PUT ΓöéMandatory Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEXT_CMD_ENDIVE_QUERY ΓöéMandatory Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 6.24. EXT_CMD_ENDIVE_GET ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: EXT_CMD_ENDIVE_GET is */
/* optional and is called to blit an image */
/* from the screen. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to EXT_CMD_ENDIVE_GET. */
PVOID pIn; /* Pointer to an IMAGEPACK data structure. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_GET.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an IMAGEPACK data structure.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
R_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_GET.
pIn (PVOID) - input
Pointer to an IMAGEPACK data structure.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
R_SIMULATE
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_GET - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.25. EXT_CMD_ENDIVE_INIT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: EXT_CMD_ENDIVE_INIT is */
/* mandatory and is called to initialize */
/* the hardware. The GRADD must determine */
/* if the hardware is present. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to EXT_CMD_ENDIVE_INIT. */
PVOID pIn; /* Pointer to an FBINFO data structure. */
PVOID pOut; /* Pointer to an EXTINITOUT data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_INIT.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an FBINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an EXTINITOUT data structure.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_INIT.
pIn (PVOID) - input
Pointer to an FBINFO data structure.
pOut (PVOID) - output
Pointer to an EXTINITOUT data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_INIT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.26. EXT_CMD_ENDIVE_PUT ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: EXT_CMD_ENDIVE_PUT is */
/* mandatory and is called to blit an */
/* image to the screen. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to EXT_CMD_ENDIVE_PUT. */
PVOID pIn; /* Pointer to an IMAGEPACK data structure. */
PVOID pOut; /* NULL. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_PUT.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
Pointer to an IMAGEPACK data structure.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
NULL.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_PUT.
pIn (PVOID) - input
Pointer to an IMAGEPACK data structure.
pOut (PVOID) - output
NULL.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_PUT - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 6.27. EXT_CMD_ENDIVE_QUERY ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: EXT_CMD_ENDIVE_QUERY is */
/* mandatory and queries the capabilities */
/* of the hardware. */
/*******************************************/
#include <ddi.h>
GID gid; /* ID of the GRADD. */
ULONG ulFunction; /* Set equal to EXT_CMD_ENDIVE_QUERY. */
PVOID pIn; /* NULL. */
PVOID pOut; /* Pointer to an IMAGECAPS data structure. */
ULONG rc; /* Return codes. */
rc = HWENTRY(gid, ulFunction, pIn, pOut);
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_QUERY.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID) - input
NULL.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Parameter - pOut ΓòÉΓòÉΓòÉ
pOut (PVOID) - output
Pointer to an IMAGECAPS data structure.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Parameters ΓòÉΓòÉΓòÉ
gid (GID) - input
ID of the GRADD.
ulFunction (ULONG) - input
Set equal to EXT_CMD_ENDIVE_QUERY.
pIn (PVOID) - input
NULL.
pOut (PVOID) - output
Pointer to an IMAGECAPS data structure.
rc (ULONG) - returns
Return codes.
RC_SUCCESS
RC_ERROR
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> EXT_CMD_ENDIVE_QUERY - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 7. VIDEOPMI DLL Exported Functions ΓòÉΓòÉΓòÉ
There is only one exported entry point for VIDEOPMI. The various PMI services
are accessed through different function numbers passed in the parameters. The
exported entry point is prototyped, together with the PMI-related structures,
in the common header file SVGADEFS.h.
ΓòÉΓòÉΓòÉ 7.1. Exported Entry Point ΓòÉΓòÉΓòÉ
Prototype
typedef APIRET (EXPENTRY *PFNVIDEOPMIREQUEST)(
PVIDEO_ADAPTER pAdapterInstance,
ULONG Function,
PVOID pInput,
PVOID pOutput);
Parameters
pAdapterInstance: Pointer to the current VIDEO_ADAPTER structure.
Function: PMIREQUEST function number.
pInput: Pointer to the input parameter, if applicable.
pOutput: Pointer to the output parameter, if applicable.
Return Value
NO_ERROR: Successful completion.
DOS error messages, otherwise.
Notes
EXPENTRY is C calling convention defined in OS/2 header file.
See the PMIREQUEST function, PMIREQUEST_LOADPMIFILE, for the definition of
VIDEO_ADAPTER.
ΓòÉΓòÉΓòÉ 7.2. Supported Functions ΓòÉΓòÉΓòÉ
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéFunction Name ΓöéPurpose Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_LOADPMIFILE ΓöéLoad the specified PMI Γöé
Γöé Γöéfile Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SETMODE ΓöéSet the given mode Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_LOCKREGISTERS ΓöéLock extended registers Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_UNLOCKREGISTERS ΓöéUnlock extended registersΓöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_CLEANUP ΓöéClean up extended Γöé
Γöé Γöéregisters Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SAVESTATE ΓöéSave video adapter state Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_RESTORESTATE ΓöéRestore video adapter Γöé
Γöé Γöéstate Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_GETBANK ΓöéGet currently addressed Γöé
Γöé Γöébank Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SETBANK ΓöéSet current bank Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_GETCLUT ΓöéGet copy of Color Lookup Γöé
Γöé ΓöéTable Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SETCLUT ΓöéSet Color Lookup Table Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_GETPALETTE ΓöéGet copy of palette Γöé
Γöé Γöéregisters Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SETPALETTE ΓöéSet palette registers Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_GETFONT ΓöéGet current loaded font Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_SETFONT ΓöéLoad given font Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_TUNEDISPLAY ΓöéTune the display Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_IDENTIFYADAPTER ΓöéIdentify the installed Γöé
Γöé Γöéadapter Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYMAXMODEENTRIES ΓöéReturn number of Γöé
Γöé Γöéavailable modes Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYMAXMODELISTSIZE ΓöéReturn maximum size Γöé
Γöé Γöérequired to store mode Γöé
Γöé Γöédata Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYMODEINFODATA ΓöéReturn table of video Γöé
Γöé Γöémode information Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYMAXTRAPENTRIES ΓöéReturn number of trap Γöé
Γöé Γöéentries Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYTRAPLISTDATA ΓöéReturn table of data for Γöé
Γöé Γöétrapped ports Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_QUERYMODEHRDWRLIST ΓöéReturn the set mode Γöé
Γöé Γöécommand list Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_WPOSVIDEOACCESS ΓöéMap the video resource toΓöé
Γöé Γöéthe address space of the Γöé
Γöé Γöécalling process Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPMIREQUEST_WPOSGETPIOINT ΓöéGet the virtual address Γöé
Γöé Γöéof a physical address Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 7.2.1. PMIREQUEST_LOADPMIFILE ΓòÉΓòÉΓòÉ
Description
Loads the specified .PMI file.
Parameters
pAdapterInstance: Adapter instance (VIDEO_ADAPTER)
Function: PMIREQUEST_LOADPMIFILE
pInput: szFile (PSZ)
.PMI file name.
pOutput: pStatus (PULONG)
If the .PMI file is already loaded, the value to which pStatus points is
set to TRUE. Otherwise, it is set to FALSE.
Related Structures and Defines
#define MAX_OEM_STRING 128
#define MAX_DAC_STRING 128
#define MAX_VERSION 128
/*
* definitions of bus type
*/
#define ISA_BUS 0
#define VLB_BUS 1
#define PCI_BUS 2
#define EISA_BUS 3
#define PCMCIA**_BUS 4
#define MCA_BUS 5
/*
* endian type
*/
#define LITTLE_ENDIAN 0
#define BIG_ENDIAN 1
#define HVIDEO PVOID
typedef HVIDEO *PHVIDEO;
typedef struct _ADAPTERINFO {
ULONG ulAdapterID;
CHAR szOEMString[MAX_OEM_STRING];
CHAR szDACString[MAX_DAC_STRING];
CHAR szRevision[MAX_VERSION];
ULONG ulTotalMemory;
ULONG ulMMIOBaseAddress;
ULONG ulPIOBaseAddress;
BYTE bBusType;
BYTE bEndian;
USHORT usDeviceBusID;
USHORT usVendorBusID;
USHORT SlotID;
} ADAPTERINFO, FAR *PADAPTERINFO;
/*
* Adapter Instance definition. The structure will be passed in
* every PMIREQUEST call.
*/
typedef struct _VIDEO_ADAPTER {
HVIDEO hvideo;
ADAPTERINFO Adapter;
VIDEOMODEINFO ModeInfo;
} VIDEO_ADAPTER, FAR *PVIDEO_ADAPTER;
See PMIREQUEST_QUERYMODEINFODATA for the definition of VIDEOMODEINFO.
Notes
If the .PMI file is successfully loaded, the Adapter field in VIDEO_ADAPTER
will be filled with the information from the .PMI file.
ΓòÉΓòÉΓòÉ 7.2.2. PMIREQUEST_SETMODE ΓòÉΓòÉΓòÉ
Description
Sets requested video mode.
Parameters
Function: PMIREQUEST_SETMODE
pInput: pModeId (PMODEID)
Pointer to mode ID, from VIDEOMODEINFO structure.
pOutput: pHWSetModeList(PHWCOMMAND)
Pointer to the set mode hardware command list.
Related Structures and Defines
typedef ULONG * PMODEID;
Notes
If pHWSetModeList is not NULL, the hardware command list of SetMode is copied.
It will be used in saving and restoring a session. The size of the memory to
which pHWSetModeList points is the maximum size of the hardware command list,
which is returned by the PMIREQUEST_QUERYMAXMODELISTSIZE function. The
HWCOMMAND structure is used internally in VIDEOPMI.
ΓòÉΓòÉΓòÉ 7.2.3. PMIREQUEST_SAVESTATE ΓòÉΓòÉΓòÉ
Description
Saves partial or complete state of the hardware.
Parameters
Function: PMIREQUEST_SAVESTATE
pInput: None.
pOutput: pStateData (PVIDEOSTATE)
Pointer to the video state.
Related Structures and Defines
/*
** possible values for fStateFlags
*/
#define STATEFLAG_REGISTERS 0x0001
#define STATEFLAG_CLUT 0x0002
#define STATEFLAG_VRAM 0x0004
#define STATEFLAG_FONT 0x0008
typedef BYTE * PVRAMDATA;
typedef struct _VIDEOSTATE {
ULONG fStateFlags;
MODEID miState;
PVOID pModeData;
ULONG ulVRAMSaveSize;
PVRAMDATA pVRAM;
PCLUTDATA pCLUT;
PFONTDATA pFont;
} VIDEOSTATE;
typedef VIDEOSTATE FAR *PVIDEOSTATE;
See PMIREQUEST_GETCLUT for the definition of PCLUTDATA and PMIREQUEST_GETFONT
for the definition of PFONTDATA.
Notes
miState is the current mode ID in VIDEOMODEINFO.
Four states can be saved and restored by setting fStateFlags accordingly, as
follows:
o Video mode (STATEFLAG_REGISTERS)
The SetMode command list was saved in pModeData when the mode was set. For
saving state, the values of registers set by BOUTB are copied back to
pModeData. For restoring state, pModeData is executed to set the mode.
o Video Memory (STATEFLAG_VRAM)
Video memory of size ulVRAMSaveSize is saved to pVRAM in saving state or
restored from pVRAM in restoring state.
o Color Lookup Table (STATEFLAG_CLUT)
Color Lookup Table can be saved to or restored from pCLUT.
o Font (STATEFLAG_FONT)
Font can be saved to or restored from pFont.
ΓòÉΓòÉΓòÉ 7.2.4. PMIREQUEST_RESTORESTATE ΓòÉΓòÉΓòÉ
Description
Restores the state of the hardware from supplied data.
Parameters
Function: PMIREQUEST_RESTORESTATE
pInput: pStateData (PVIDEOSTATE)
Pointer to the video state.
pOutput: None.
Related Structures and Defines
See PMIREQUEST_SAVESTATE.
Notes
See PMIREQUEST_SAVESTATE.
ΓòÉΓòÉΓòÉ 7.2.5. PMIREQUEST_LOCKREGISTERS ΓòÉΓòÉΓòÉ
Description
Locks extended registers.
Parameters
Function: PMIREQUEST_LOCKREGISTERS
pInput: None.
pOutput: None.
Related Structures and Defines
None.
Notes
The [LOCK] section in the .PMI file will be executed.
ΓòÉΓòÉΓòÉ 7.2.6. PMIREQUEST_UNLOCKREGISTERS ΓòÉΓòÉΓòÉ
Description
Unlocks extended registers.
Parameters
Function: PMIREQUEST_UNLOCKREGISTERS
pInput: None.
pOutput: None.
Related Structures and Defines
None.
Notes
The [UNLOCK] section in the .PMI file will be executed.
ΓòÉΓòÉΓòÉ 7.2.7. PMIREQUEST_CLEANUP ΓòÉΓòÉΓòÉ
Description
Executes the cleanup section.
Parameters
Function: PMIREQUEST_CLEANUP
pInput: None.
pOutput: None.
Related Structures and Defines
None.
Notes
The [CLEANUP] section in the .PMI file will be executed.
ΓòÉΓòÉΓòÉ 7.2.8. PMIREQUEST_GETBANK ΓòÉΓòÉΓòÉ
Description
Gets current bank.
Parameters
Function: PMIREQUEST_GETBANK
pInput: None.
pOutput: pBankData (PBANKDATA)
Related Structures and Defines
typedef struct _BANKDATA {
MODEID miBank; /* ID of the current mode */
ULONG ulBank; /* Current bank number */
} BANKDATA;
typedef BANKDATA FAR *PBANKDATA;
Notes
The current bank number is saved in pBankData->ulBank.
ΓòÉΓòÉΓòÉ 7.2.9. PMIREQUEST_SETBANK ΓòÉΓòÉΓòÉ
Description
Sets bank to requested value.
Parameters
Function: PMIREQUEST_SETBANK
pInput: pBankData (PBANKDATA)
pOutput: None.
Related Structures and Defines
See PMIREQUEST_GETBANK.
Notes
The current bank is set to pBankData->ulBank by executing the [SETBANK] section
in the .PMI file.
ΓòÉΓòÉΓòÉ 7.2.10. PMIREQUEST_GETCLUT ΓòÉΓòÉΓòÉ
Description
Gets a copy of Color Lookup Table from hardware.
Parameters
Function: PMIREQUEST_GETCLUT
pInput: None.
pOutput: pCLUTData (PCLUTDATA)
Related Structures and Defines
typedef struct _SVGARGB {
BYTE bR;
BYTE bG;
BYTE bB;
BYTE bUnused;
} SVGARGB;
typedef SVGARGB FAR *PSVGARGB;
typedef struct _CLUTDATA {
ULONG ulRGBCount; /* Number of aRGB entries that follow */
ULONG ulRGBStart; /* Start index for RGB triplets */
SVGARGB aRGB[1]; /* One defined, ulRGBCount entries */
} CLUTDATA;
typedef CLUTDATA FAR *PCLUTDATA;
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.11. PMIREQUEST_SETCLUT ΓòÉΓòÉΓòÉ
Description
Sets Color Lookup Table to supplied values.
Parameters
Function: PMIREQUEST_SETCLUT
pInput: pCLUTData (PCLUTDATA)
pOutput: None.
Related Structures and Defines
See PMIREQUEST_GETCLUT.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.12. PMIREQUEST_GETPALETTE ΓòÉΓòÉΓòÉ
Description
Gets a copy of palette registers from hardware.
Parameters
Function: PMIREQUEST_GETPALETTE
pInput: None.
pOutput: pPaletteData (PPALETTEDATA)
Related Structures and Defines
typedef struct _PALETTEDATA {
ULONG ulPalCount; /* No. of entries that follow */
ULONG ulPalStart; /* Start index for data */
BYTE bPaletteData[1]; /* One defined, ulPalCount entries */
} PALETTEDATA;
typedef PALETTEDATA FAR *PPALETTEDATA;
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.13. PMIREQUEST_SETPALETTE ΓòÉΓòÉΓòÉ
Description
Sets palette registers to supplied values.
Parameters
Function: PMIREQUEST_SETPALETTE
pInput: pPaletteData (PPALETTEDATA)
pOutput: None.
Related Structures and Defines
See PMIREQUEST_GETPALETTE.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.14. PMIREQUEST_GETFONT ΓòÉΓòÉΓòÉ
Description
Reads current font from video memory.
Parameters
Function: PMIREQUEST_GETFONT
pInput: None.
pOutput: pfontData (PFONTDATA)
Related Structures and Defines
typedef struct _FONTDATA {
ULONG ulCharCount; /* Number of characters in font */
ULONG ulFontHeight; /* Number of scanlines per character */
BYTE bFontData[1]; /* ulCharCount*ulFontHeight entries */
} FONTDATA;
typedef FONTDATA FAR *PFONTDATA;
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.15. PMIREQUEST_SETFONT ΓòÉΓòÉΓòÉ
Description
Sets font to that supplied.
Parameters
Function: PMIREQUEST_SETFONT
pInput: pfontData (PFONTDATA)
pOutput: None.
Related Structures and Defines
See PMIREQUEST_GETFONT.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.16. PMIREQUEST_TUNEDISPLAY ΓòÉΓòÉΓòÉ
Description
Executes the [TuneDisplay] section in the .PMI file.
Parameters
Function: PMIREQUEST_TUNEDISPLAY
pInput: None.
pOutput: None.
Related Structures and Defines
None.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.17. PMIREQUEST_IDENTIFYADAPTER ΓòÉΓòÉΓòÉ
Description
Executes the [IdentifyAdapter] section in the specified .PMI file.
Parameters
Function: PMIREQUEST_IDENTIFYADAPTER
pInput: szFileName (PSZ)
.PMI file name.
pOutput: None.
Related Structures and Defines
None.
Notes
If the .PMI file is for the adapter installed, NO_ERROR is returned. Otherwise,
ERROR_ADAPTER_NOT_SUPPORTED is returned.
ΓòÉΓòÉΓòÉ 7.2.18. PMIREQUEST_QUERYMAXMODEENTRIES ΓòÉΓòÉΓòÉ
Description
Returns maximum number of mode entries available.
Parameters
Function: PMIREQUEST_QUERYMAXMODEENTRIES
pInput: None.
pOutput: pulModes (PULONG)
Pointer to the number of available modes.
Related Structures and Defines
None.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.19. PMIREQUEST_QUERYMAXMODELISTSIZE ΓòÉΓòÉΓòÉ
Description
Returns maximum size required to save a mode list.
Parameters
Function: PMIREQUEST_QUERYMAXMODELISTSIZE
pInput: None.
pOutput: pulMaxListSize (PULONG)
Number of bytes required to store largest mode data list.
Related Structures and Defines
None.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.20. PMIREQUEST_QUERYMODEINFODATA ΓòÉΓòÉΓòÉ
Description
Returns an array of all available video modes.
Parameters
Function: PMIREQUEST_QUERYMODEINFODATA
pInput: None.
pOutput: pVideoModeInfo (PVIDEOMODEINFO)
Array of available video mode structures.
Related Structures and Defines
/*
** Mode flag values
** used in VIDEOMODEINFO
*/
#define MODE_FLAG_NOT_MONO 0x0001 /* Mono-compatible */
#define MODE_FLAG_GRAPHICS 0x0002 /* Text mode, Graphics */
#define MODE_FLAG_NO_CLR_BRST 0x0004 /* Disable Color burst */
#define MODE_FLAG_NATIVE 0x0008 /* Native (advanced function) */
#define IGNORE_CLR_BRST 0x0010 /* Disable color burst */
/* doesn't make sense for this mode */
#define NOT_PLASMA 0x0020 /* won't work on plasma */
/* display */
#define MODE_FLAG_VGA_ENTRY 0x0040 /* VGA mode, need clean up */
typedef struct _VIDEOMODEINFO {
MODEID miModeId; /* used to make setmode request */
USHORT usType; /* mode type bits */
USHORT usInt10ModeSet; /* int 10 mode */
USHORT usXResolution; /* horizontal pels */
USHORT usYResolution; /* vertical scan lines */
ULONG ulBufferAddress; /* physical address of VRAM */
ULONG ulApertureSize; /* VRAM aperture */
BYTE bBitsPerPixel; /* number of colors */
BYTE bBitPlanes; /* number of planes */
BYTE bXCharSize; /* font width */
BYTE bYCharSize; /* font height */
USHORT usBytesPerScanLine; /* logical line length in bytes */
USHORT usTextRows; /* text rows */
ULONG ulPageLength; /* number of bytes to save a plane */
ULONG ulSaveSize; /* total bytes of VRAM to save */
/*
* Monitor Info
*/
BYTE bVrtRefresh;
BYTE bHrtRefresh;
BYTE bVrtPolPos;
BYTE bHrtPolPos;
USHORT usScrnTop;
USHORT usScrnBottom;
USHORT usScrnLeft;
USHORT usScrnRight;
CHAR szColorFormat[8]; /* for true color or hi-color modes */
CHAR szColorWeight[8]; /* for true color or hi-color modes */
} VIDEOMODEINFO;
typedef VIDEOMODEINFO FAR *PVIDEOMODEINFO;
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.21. PMIREQUEST_QUERYMAXTRAPENTRIES ΓòÉΓòÉΓòÉ
Description
Returns the maximum number of traplist entries.
Parameters
Function: PMIREQUEST_QUERYMAXTRAPENTRIES
pInput: None.
pOutput: pulNumTrapRegs (PULONG)
Number of traplist entries.
Related Structures and Defines
None.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.22. PMIREQUEST_QUERYTRAPLISTDATA ΓòÉΓòÉΓòÉ
Description
Returns an array of trap register information structures.
Parameters
Function: PMIREQUEST_QUERYTRAPLISTDATA
pInput: None.
pOutput: pTrapRegInfo (PTRAPREGINNFO)
Array of trap info structures.
Related Structures and Defines
/*
** flag values for fPortFlags in TRAPREGINFO @V2.2TSU00
*/
#define BYTE_IOPORT 0x001
#define WORD_IOPORT 0x002
#define DWORD_IOPORT 0x004
#define BYTE_MMIOPORT 0x008
#define WORD_MMIOPORT 0x010
#define DWORD_MMIOPORT 0x020
#define INDEXED 0x040
#define ACCEL 0x080
#define RESET_PORT 0x100
#define READ_ONLY 0x200
#define WRITE_ONLY 0x400
#define READ_WRITE 0x800
#define MASK_SIZE 32
typedef struct _TRAPREGINFO {
ULONG ulAddressPort; /* Address Port */
ULONG ulDataPort; /* Data Port */
USHORT fPortFlags; /* port type */
USHORT usIndex; /* value in index port */
ULONG ulIndexMask; /* index mask */
ULONG ulDataMask; /* data mask */
ULONG ulResetOneMask; /* */
ULONG ulResetZeroMask; /* */
BYTE abIndexList[MASK_SIZE]; /* bit mask of trapped */
/* indexed ports */
BYTE abUpdateList[MASK_SIZE];/* bit mask of updated */
/* port indices */
PVOID aTrapRegData; /* trap registers data area */
} TRAPREGINFO;
typedef TRAPREGINFO FAR *PTRAPREGINFO;
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.23. PMIREQUEST_QUERYMODEHRDWRLIST ΓòÉΓòÉΓòÉ
Description
Returns the SetMode hardware command list of the passed mode ID.
Parameters
Function: PMIREQUEST_QUERYMODEHRDWRLIST
pInput: pulModeId (PMODEID)
Pointer to the mode ID.
pOutput: pSetModeList (PHWCOMMAND)
Pointer to the SetMode hardware command list.
Related Structures and Defines
None.
Notes
None.
ΓòÉΓòÉΓòÉ 7.2.24. PMIREQUEST_WPOSVIDEOACCESS ΓòÉΓòÉΓòÉ
Description
Maps the video hardware resources to the address space of the calling process.
Parameters
Function: PMIREQUEST_WPOSVIDEOACCESS
pInput: None.
pOutput: pResource (PVIDEORESOURCEPACK)
Pointer to resource definition packet.
Related Structures and Defines
typedef struct {
cons_resource_info_t * ConsRes; // array of resource definition
ULONG ulNumCons; // number of resources
} VIDEORESOURCEPACK, * PVIDEORESOURCEPACK;
Notes
This call should be made before any other PMI calls. It will map the
hardware resource to the calling process's address space.
The output parameter is optional. It can be NULL or a pointer to
VIDEORESOURCEPACK. If it is not NULL, the number of resources and the
array of cons_resource_info_t for the resources will be returned in the
output parameter packet. The cons_resource_info_t array is defined in the
microkernel header files. If you do not want to handle detailed
microkernel I/O functions, this information is not needed.
ΓòÉΓòÉΓòÉ 7.2.25. PMIREQUEST_GETPIOINFO ΓòÉΓòÉΓòÉ
Description
Gets the virtual address of the passed physical address.
Parameters
Function: PMIREQUEST_GETPIOINFO
pInput: ulPhysAddr (ULONG)
Physical address.
pOutput: pPioInfoPack (PPIOINFOPACK)
Pointer to PIOINFOPACK.
Related Structures and Defines
typedef struct {
ULONG ulVirtAddr; // virtual address after mapping
ULONG ulOffset; // offset within the address range
// of this video resource
pio_info_t * pPioInfo; // pointer to the pio_info_t which this
// physical address is in
} PIOINFOPACK, * PPIOINFOPACK;
Notes
Every piece of resource defined in rdf.stz is represented as a pio_info_t
structure.
Microkernel PIO hardware access functions require the pointer to the
pio_info_t structure and the offset within the address range of the
resource defined in rdf.stz.
If you do not want to call microkernel hardware access functions to access
hardware, you do not need this pointer. The pio_info_t in this structure
definition can be replaced with ULONG; in this case, microkernel header
files need not be included.
ΓòÉΓòÉΓòÉ 7.2.26. Code Sample ΓòÉΓòÉΓòÉ
#include <os2.h>
#include <svgadefs.h>
#define DLLNAME "videopmi"
#define REQUEST_ENTRYPOINT "VIDEOPMI32Request"
#define FAIL_LENGTH 256
/*
* Adapter instance.
*/
VIDEO_ADAPTER AdapterInstance;
/*
* Entry point to videopmi
*/
PFNVIDEOPMIREQUEST pfnPMIRequest;
/*
* mode table. It is an array of VIDEOMODEINFOs.
*/
PVIDEOMODEINFO ModeTable;
ULONG ulTotalModes;
ΓòÉΓòÉΓòÉ 7.2.26.1. Load PMI File ΓòÉΓòÉΓòÉ
/************************************************************
* Load the .PMI file, get the hardware information about the
* adapter and the entry point to videopmi.
*
* Returns 0 if successful; DOS error token, otherwise.
************************************************************/
APIRET LoadPMIService (VOID)
{
APIRET rc;
char sFail[FAIL_LENGTH] = {0};
HMODULE hmodVIDEOPMI;
/*
* Load videopmi.dll
*/
if (!(rc = DosLoadModule (sFail, FAIL_LENGTH, DLLNAME,
&hmodVIDEOPMI)))
{
/*
* Get PMIREQUEST entry point
*/
if (!(rc = DosQueryProcAddr
(hmodVIDEOPMI,
0,
REQUEST_ENTRYPOINT,
&pfnPMIRequest)))
/*
* Map the hardware resource
* ADAPTERINFO in AdapterInstance will be filled with the
* information in .PMI file, e.g., TotalMemory.
* Check svgadefs.h for details.
*/
rc = pfnPMIRequest (&AdapterInstance,
PMIREQUEST_WPOSVIDEOACCESS,
NULL,
NULL);
if (rc)
DosFreeModule (hmodVIDEOPMI);
}
return rc;
}
ΓòÉΓòÉΓòÉ 7.2.26.2. Set Up Mode Table ΓòÉΓòÉΓòÉ
/************************************************************
* Copy the mode table from videopmi. It is an arrary of modes.
* All the information in [ModeInfo] and
* [MonitorModeInfo], if any, is included.
*
* Returns 0 if successful; DOS error token, otherwise.
************************************************************/
APIRET SetUpModeTable (VOID)
{
APIRET rc;
/*
* Get the total number of modes
*/
if (!(rc = pfnPMIRequest (&AdapterInstance,
PMIREQUEST_QUERYMAXMODEENTRIES,
NULL,
&ulTotalModes)))
/*
* Allocate memory for mode table
*/
if (!(rc = DosAllocSharedMem ((PPVOID)&ModeTable,
NULL,
ulTotalModes *
sizeof (VIDEOMODEINFO),
OBJ_GETTABLE | PAG_COMMIT |
PAG_WRITE)))
/*
* Copy mode table.
* Please check svgadefs.h for the fields in VIDEOMODEINFO.
*/
rc = pfnPMIRequest (&AdapterInstance,
PMIREQUEST_QUERYMODEINFODATA,
NULL,
ModeTable);
return rc;
}
ΓòÉΓòÉΓòÉ 7.2.26.3. Set Mode ΓòÉΓòÉΓòÉ
/************************************************************
* You can select the mode based on any information in the VIDEOMODEINFO
* structure. The following is only an example to set the graphics mode
* based on resolution and refresh rate.
* PM driver should not call videopmi to set the mode directly.
* It should call BVH to set the mode as before, such that
* the mode can be set based on the current monitor capability
* handled by BVH.
*
* Returns 0 if successful; DOS error token, otherwise.
************************************************************/
APIRET SETSVGAMODE (ULONG ulHorRes,
ULONG ulVerRes,
ULONG ulColors,
ULONG ulVerRefr,
PULONG pulModeInd,
PCLUTDATA pCLUTData)
{
APIRET rc=0xFFFF;
ULONG i;
/* Search mode */
if (ulVerRefr >= 0xFFL) /* pick the first mode of the resolution */
{
for(i=0; i < ulTotalModes; i++)
if ((ModeTable[i].usXResolution == (USHORT) ulHorRes) &&
(ModeTable[i].usYResolution == (USHORT) ulVerRes) &&
(ModeTable[i].bBitsPerPixel == (BYTE) ulColors))
*pulModeInd = i;
}
else /* verify all including the refresh parameter */
{
for(i=0; i < ulTotalModes; i++)
if ((ModeTable[i].usXResolution == (USHORT )ulHorRes) &&
(ModeTable[i].usYResolution == (USHORT) ulVerRes) &&
(ModeTable[i].bBitsPerPixel == (BYTE) ulColors) &&
((ModeTable[i].bVrtRefresh == 0xFF) ||
(ModeTable[i]bVrtRefresh == (BYTE) ulVerRefr)))
*pulModeInd= i;
}
if (i == ulTotalModes)
return rc; /* mode not found */
/*
* Copy VIDEOMODEINFO of the selected mode to AdapterInstance.
* Depending on the .PMI file, this information may be needed.
*/
AdapterInstance.ModeInfo = ModeTable[*pulModeInd];
/*
* Call videopmi to set the mode.
*/
rc = pfnPMIRequest (&AdapterInstance,
PMIREQUEST_SETMODE,
&ModeTable[*pulModeInd].miModeId,
NULL);
if (rc)
return rc;
else
/* Load Color Lookup Table */
if (ModeTable[*pulModeInd].bBitsPerPixel <= 8)
rc = pfnPMIRequest (&AdapterInstance,
PMIREQUEST_SETCLUT,
pCLUTData,
NULL);
return rc;
}
ΓòÉΓòÉΓòÉ 7.2.26.4. Write to Video Buffer ΓòÉΓòÉΓòÉ
APIRET DisplayImageBuffer (ULONG ulModeInd,
ULONG ulSize,
PBYTE pImageBuffer)
{
VIDEOSTATE sVideoState = {0};
APIRET rc;
sVideoState.miState = ModeTable[ulModeInd].miModeId;
sVideoState.fStateFlags |= STATEFLAG_VRAM;
sVideoState.ulVRAMSaveSize = ulSize;
sVideoState.pVRAM = pImageBuffer;
return pfnPMIRequest (&AdapterInstance,
PMIREQUEST_RESTORESTATE,
&sVideoState,
NULL);
}
ΓòÉΓòÉΓòÉ 8. VIDEO Protect-Mode Interface ΓòÉΓòÉΓòÉ
This chapter describes the syntax of the VIDEO Protect-Mode-Interface
(VIDEOPMI) in OS/2 Warp, Version 3, PowerPC Edition, which is an extension of
the VESA SVPMI standard currently in use by the operating system's base and
virtual video subsystems. The interface describes a graphics adapter in terms
of its ports and memory space. The interface also provides a means to query
supported modes and set, save, and restore video modes in Protect-Mode.
ΓòÉΓòÉΓòÉ 8.1. Overview ΓòÉΓòÉΓòÉ
The VIDEOPMI interface provides parameters for the adapter virtualization in
multiple DOS sessions and a number of support functions.
The adapter description is provided as a flat file with a .PMI extension. The
main goal of the VIDEOPMI interface is to centralize all of the SetMode-related
services and provide a consistent interface that is not dependent on
availability of BIOS service or OEM utilities.
The following list includes the topics covered in this chapter:
o .PMI file
o PMI Procedural Interface
o Supported Modes
o Monitor Timings Support
o Save and Restore State
o Adapter Configuration
o Video Configuration and Installation
ΓòÉΓòÉΓòÉ 8.1.1. .PMI file ΓòÉΓòÉΓòÉ
The VIDEOPMI interface is driven by the sections of the .PMI file. There are
two main types of sections:
o Those that describe adapter capabilities
o Those that service hardware programming requests
Query sections provide information on hardware descriptions; lists of ports;
lists of supported modes; and the range or set of supported timing values. The
Set sections provide the capability to identify adapters; unlock registers;
cleanup, size, and position the active display; set a mode; save and restore a
mode, and the VRAM used by the mode.
The VIDEOPMI language defines a video adapter as a hardware controller in terms
of its I/O and memory addresses that are programmable by the CPU. The video
controller can be a dumb frame VGA/SVGA, an accelerator, or a general-purpose
coprocessor. The .PMI file must contain all of the informational sections and a
minimal set of Set sections (see PMI Sections). An adapter description starts
with its Hardware section, followed by IdentifyAdapter, a number of support
sections, and a list of all available modes with the corresponding SetMode
sections.
The PMI facilitates dynamic hardware configuration, which includes port
remapping as well as adding or removing an adapter and its PMI definition. It
also includes changing the attached display and multiple instances of the same
video hardware driven by the same .PMI file. The interface defines monitor
timing variables needed to drive a CRT monitor. These variables provide
extensive monitor support and a consistent user configuration interface. The
PMI language also facilitates programming of the support chips that can be
mapped into the I/O and memory space addressable by the CPU, such as external
clock-synchronizing chips or smart Digital-to-Analog Converters (DACs).
.PMI files are to be provided by the video chip or adapter manufacturers, or by
the providers of the display drivers. The file should be part of the
video-adapter installation kit, either as a pre-manufactured flat file or one
created by the OEM's installation utility. The activation of PMI services for
an adapter does not require a reset or power-up.
ΓòÉΓòÉΓòÉ 8.1.2. PMI Procedural Interface ΓòÉΓòÉΓòÉ
.PMI file sections are interpreted by the VIDEOPMI interpreter, also called the
VIDEOPMI engine, and translated into information blocks or into hardware
command lists. In the OS/2 Warp, PowerPC Edition environment, VIDEOPMI callers
include the OS/2 full-screen driver (OS2CHAR.DLL), PM driver, and system
configuration utilities.
The VIDEOPMI Procedural Interface defines a structure that corresponds to the
video hardware instance, which contains all of the PMI keyvariables listed in
PMI Language Elements. This structure is called the VIDEO_ADAPTER structure. It
defines the state of the adapter in terms of its hardware configuration
elements, such as I/O and Memory range, and its current mode-state parameters.
All of the Set type of procedural calls pass the VIDEO_ADAPTER structure, which
then allows each PMI section to take the current state into account in its
programming. See Supported Modes, as well as [SetMode] and [ModeInfo] in PMI
Sections for more information on the mode elements.
The Procedural Interface of the VIDEOPMI Interpreter is covered in VIDEOPMI DLL
Exported Functions.
ΓòÉΓòÉΓòÉ 8.1.2.1. Limitations of the PMI ΓòÉΓòÉΓòÉ
The following limitations exist in the PMI:
o PMI does not provide a graphical interface.
o PMI does not provide a means of accessing addresses that are internal to
the video controller and are not mappable into the CPU space.
o Save and Restore Hardware State Services have certain limitations (see
"Save and Restore State" in this chapter).
o PMI does not provide the means to manipulate certain video parameters
outside the context of the SetMode section.
PMI does allow, and it requires, indirect management of all of the
parameters within the Mode Set sections. For example, there are no
services for the manipulation of the hardware cursor or RAMDAC outside the
context of a mode set. These services are an integral part of the SetMode.
Programming of the monitor timing is considered a special case. It is an
integral part of the SetMode, but it also can be independently invoked, if
the .PMI file defines a SetMonitorTimings section. The same is true for
manipulation of the active display size. If the .PMI file contains a
TuneDisplay section, this manipulation is offered independently.
o Port descriptions have some limitations:
- Ports that require double or triple indirection cannot be adequately
described in the PMI language.
- I/O addresses that serve as latches, or flip-flops, cannot be
successfully described.
- There are no provisions for describing port addresses that define
different registers depending on the read or write access.
These limitations have an influence on the level and success of the
adapter virtualization using the system-provided virtual driver. See
[TrapRegs] in PMI Sections.
ΓòÉΓòÉΓòÉ 8.1.3. Supported Modes ΓòÉΓòÉΓòÉ
This section lists the OS/2 Warp, PowerPC Edition requirements for the modes
included in a .PMI file. Each supported mode is represented by a set of
sections, as follows:
o Comment (optional)
o ModeInfo (required)
o MonitorModeInfo (optional)
o SetMode (optional)
The ModeInfo section is a list of the common mode elements (PMI keyvariables)
that define the resolution, window, and size elements of the mode. The mode
definition is then complemented by all of the MonitorModeInfo sections
following the ModeInfo section. There could be zero or more MonitorModeInfo
sections, depending on the capabilities of the hardware to program timings. An
adapter may not support a CRT in a particular mode; a single MonitorModeInfo
section with zero values is used to indicate such a case. If the adapter can
support only a distinct set of values, rather than a range of horizontal and
vertical refresh values, multiple MonitorModeInfo sections per
horizontal/vertical refresh pair are used to indicate this fact. An adapter
with flexibility in programming a range of dotclock (which translates into
horizontal and vertical refreshes) should list only one MonitorModeInfo entry
with the end of range values for the vertical/horizontal refresh.
Suggested modes include the following:
o 40 x 25 and 80 x 25 text.
o At least one of the 132-column text modes (if applicable).
o At best, all of the supported 256-color modes with respective refresh
rates (see "Monitor Timings Support" in this chapter).
At the minimum, modes that are supported by the respective Presentation
Manager display driver.
If the adapter in question has both accelerated and non-accelerated modes,
only the accelerated modes should be provided.
o At best, all of the supported hi-color and true-color modes with
respective refresh rates (see "Monitor Timings Support" in this chapter).
At the minimum, modes which are supported by the respective Presentation
Manager display driver.
If the adapter in question has both accelerated and nonaccelerated modes,
only the accelerated modes should be provided.
ΓòÉΓòÉΓòÉ 8.1.4. Monitor Timings Support ΓòÉΓòÉΓòÉ
The PMI defines eight display-timing-related variables as mode keyvariables.
These variables facilitate selection of the mode, depending on the current
monitor specification and sizing of the active display for the current mode.
The MonitorModeInfo section contains all of the timing-related PMI key
variables.
The display-timing-related variables are:
VerticalRefresh Vertical refresh in Hz (rounded to the nearest integer)
HorizontalRefresh Horizontal refresh in KHz (rounded to the nearest integer)
HPolarityPositive Contains the Horizontal polarity (0,1) for the current mode
selection
VPolarityPositive Contains the Vertical polarity (0,1) for the current mode
selection
ScreenLeftEdge Represents the end of the horizontal blanking (HBP) in
pixel count along the horizontal sweep (HSP)
ScreenRightEdge Represents the start of the horizontal blanking (HFP) in
pixel count along the horizontal sweep (HSP)
ScreenTopEdge Represents the end of the vertical blanking (VBP) in line
count along the vertical sweep (VSP)
ScreenBottomEdge Represents the start of the vertical blanking (VFP)
The last four timing elements, defining the start and end of the horizontal
active display and start and end of the vertical active display, are suggested
as mode elements in order to enhance visual quality. Their values are never
directly communicated to the end user configuring the adapter, only the net
results. The values are manipulated through a TuneDisplay function as part of
the SetMode or upon the end user's configuration request. See [TuneDisplay] in
PMI Sections.
There is no interface for specification and manipulation of the widths of the
Horizontal Sweep (HSP) and Vertical Sweep (VSP) signals.
If an adapter is capable of supporting both non-CRT- and CRT-style displays,
modes of both types should be listed. Non-CRT Mode sections are those that have
0 for both horizontal and vertical refresh rate.
If the adapter has monitor sensing, identification, and auto-adjusting
capability built in so that software manipulation of the timing-related
registers is not required, none of the timing-related mode elements have to be
specified. No MonitorModeInfo sections should be included and monitor sizing
parameters and the TuneDisplay function should not be listed.
The vendor providing the .PMI file can supply either a single MonitorModeInfo,
which denotes the upper limit for horizontal and vertical refresh, or a number
of MonitorModeInfo sections with distinct sets of horizontal and vertical
refresh values. In the first case, the OS/2 Warp, PowerPC Edition configuration
utility offers refresh values that are part of the current monitor definition
for the desired resolution, as long as the monitor specification is within the
range specified by the adapter. If more than one MonitorModeInfo section exists
per mode, an exact match of the vertical refresh values between the adapter and
monitor specification is performed by the OS/2 Warp, PowerPC Edition Display
Configuration Manager. Polarity PMI keyvariables are not required, unless an
exact match with the monitor's capabilities is desired by the adapter vendor.
ΓòÉΓòÉΓòÉ 8.1.5. Save and Restore State ΓòÉΓòÉΓòÉ
VIDEOPMI does not have dedicated SaveState or RestoreState sections. The
VIDEOPMI engine does offer those services.
ΓòÉΓòÉΓòÉ 8.1.5.1. SaveRestore VRAM ΓòÉΓòÉΓòÉ
VIDEOPMI offers saving and restoring of the video buffer of SaveSize for each
mode and is internally aware of the type of VRAM access it has to perform. The
parameters taken into consideration when addressing the VRAM are BufferAddress,
ApertureSize, and SaveSize. See [ModeInfo] in PMI Sections.
If ApertureSize is equal to or greater than SaveSize, direct linear access to
the BufferAddress is assumed. If this is not the case, the SetBank function is
necessary in order to save and restore the entire on-screen VRAM. Granularity
of a bank is assumed to be the ApertureSize. SaveSize should be set to reflect
the logical line length programmed by the current mode, rather than just
horizontal resolution.
ΓòÉΓòÉΓòÉ 8.1.5.2. SaveRestore Hardware ΓòÉΓòÉΓòÉ
This service is available for .PMI files that use the PMI language to define
SetMode sections.
The PM driver performs its own Save and Restore of the state and is not
dependent on the service. The OS2CHAR.DLL uses the Save and Restore State
service and, in case of a partial restore, reissues the mode set and restores
the important video attributes.
The SaveRestore Hardware service is based on the PMI sequence for the SetMode;
all of the ports that are programmed by the SetMode section for the current
mode will be saved and restored. When saving a mode, the VIDEOPMI interpreter
parses the command list of the SetMode section.
BOUTB commands are converted into BINB commands. The VIDEOPMI executes the
newly constructed section in order to capture register values and converts all
of the commands back into their original SetMode format. The command list is
then ready for a subsequent RestoreState call and is returned to the user.
This approach has some limitations, mainly for adapters that employ double and
higher indirection levels in register addressing; for example, the WDc24.
ΓòÉΓòÉΓòÉ 8.1.6. Adapter Configuration ΓòÉΓòÉΓòÉ
This portion of the chapter specifies the requirements placed on the .PMI file
by the video subsystem. It does not address the physical installation steps for
an adapter, the bus management, device enumeration, and conflict management
employed by the operating system.
An adapter is defined by its Hardware section, which lists the type of bus, the
default start address of the I/O and memory space, and alternative addresses
for the I/O and memory space, as addressable by the CPU. The adapter is
uniquely defined by its OEMString and Version strings. On desktop PowerPCs,
only PCI adapters are supported.
ΓòÉΓòÉΓòÉ 8.2. PMI Language Elements ΓòÉΓòÉΓòÉ
The VIDEOPMI language consists of the following elements:
o Sections
o User-defined functions
o Expressions
o PMI commands, identifiers, constants, variables, string-literals, and
comments
The language is not case-sensitive, so BOUTB and boutb represent the same
identifier. Throughout this section, Backus-Naur Form (BNF) grammar is used to
describe the syntax. Some examples are given in the text. Where such examples
are omitted, sample .PMI files accompanying the document should be used as a
reference.
ΓòÉΓòÉΓòÉ 8.2.1. Comments and Delimiters ΓòÉΓòÉΓòÉ
Comments can be either in-line comments (//) or ANSI C-style comments (/* */).
White space is used as the token delimiter and a semicolon (;) is used as the
expression delimiter.
The Comment section defines a mode-info related comment that describes the mode
to the user. See [Comment] in PMI Sections.
ΓòÉΓòÉΓòÉ 8.2.2. Include Files ΓòÉΓòÉΓòÉ
PMI allows for inclusion of other .PMI files, all of which must conform to the
PMI language. An Include file facility is provided in order to offer
flexibility in supporting multiple adapter configurations with a single .PMI
file.
PMI sub-files are included via #include directive. The include statement can be
found anywhere in the .PMI file as long as it meets the following conditions:
o The include statement does not violate the integrity of the section before
and the section after.
o References to the objects belonging to the include file are made after the
inclusion.
The included files should be in the same directory as the current .PMI
file.
#include "filename" //PMI extension assumed
ΓòÉΓòÉΓòÉ 8.2.3. Constants, String-Literals, Identifiers, and Keywords ΓòÉΓòÉΓòÉ
PMI constants are 32-bit integer constants, either in decimal or hexadecimal
format.
<digit> ::= '0'..'9'
<hexdigit> ::= <digit> | 'a'..'f'
<character> ::= 'a'..'z' | 'A'.. 'Z'| '_' | '.'
<decimal number> ::= <digit> | <decimal number> <digit>
<hexadecimal number> ::= '0x' <hexdigit> |
<hexadecimal number> <hexdigit>
<constant> ::= <decimal number> | <hexadecimal number>
String-literals consist of any combination of printable ASCII characters in
quotes. String-literals are not parsed in any way; they are stored in their
uppercase format and are passed on query-style calls, converting both source
and target to uppercase. String-literals are limited to 128 characters in
length, including 0 at the end. Binary strings are also limited to 128 bits (4
doublewords).
<string> ::= "<ASCII character> [<string>]"
<binary-string> ::= " <'0'|'1'> | <'0'|1'> [<binary-string>]"
An Identifier, or a name, is a sequence of letters and digits. The first
character must be a letter. The underscore (_) and point (.) count as a letter,
but point (.) cannot be used in the first position. Maximum length of an
identifier is 32 characters.
<name> ::= <character> <token>
<token> ::= {<character> | [<digit> <token>]}
Keywords are reserved identifiers and are divided into three groups:
o PMI keyvariables, which are keywords representing configuration and mode
parameters
o PMI constants, backed by system-wide definitions
o All other reserved identifiers
All of the PMI keyvariables are available through the VIDEOPMI programming
interface as fields of the video instance structure. They are also available to
all of the PMI sections and functions and can be used in conditional statements
or expressions. At run time, during a SetMode, some of the ModeInfo PMI
keyvariables could differ from the values assigned by the .PMI file. These PMI
keyvariables can be modified at the user or system level and are, therefore,
regarded as dynamic. Others are called static. At the procedural level, static
PMI keyvariables are fixed to the values specified in the .PMI file and cannot
be changed for a given mode. Some dynamic variables have a limited set of
possible values; others are valid in a range that should be verified by
dedicated sections. See [ModeInfo], [Hardware], and [TuneDisplay] in PMI
Sections for more information on dynamic vs. static keyvariables.
Not all of the PMI keyvariables have to be defined. See [ModeInfo] and
[Hardware] in PMI Sections for further explanations.
ΓòÉΓòÉΓòÉ 8.2.3.1. PMI keyvariables ΓòÉΓòÉΓòÉ
The following table lists all of the keyvariables for the Protect Mode
Interface (PMI):
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéName ΓöéSection Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéApertureSize ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBitsPerPixel ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBufferAddress ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBusType ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBytesPerScanLine ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéColorFormat ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéColorWeight ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDACString ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEndian ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHorizontalRefresh ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHPolarityPositive ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéInt10ModeSet ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMemoryIOAddress ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéModeAttributes ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéNumberOfPlanes ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéOEMString ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPageLength ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPortIOAddress ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSaveSize ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéScreenLeftEdge ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéScreenRightEdge ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéScreenBottomEdge ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéScreenTopEdge ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSlotID ΓöéEnableController Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéTextRows ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéTotalMemory ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVerticalRefresh ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVPolarityPositive ΓöéMonitorModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéXCharSize ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéXResolution ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéYCharSize ΓöéModeInfo Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéYResolution ΓöéModeInfo Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 8.2.3.2. PMI Constants ΓòÉΓòÉΓòÉ
The following table lists the constants used by the Protect Mode Interface
(PMI):
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéName ΓöéSection Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBIG ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéEISA ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéISA ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéLITTLE ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMCA ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMMIO ΓöéDeclarations Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPCI ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPCMCIA** ΓöéHardware Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPIO ΓöéDeclarations Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéVLB ΓöéHardware Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 8.2.3.3. PMI Keywords ΓòÉΓòÉΓòÉ
The following table lists the reserved identifiers, called Keywords, used by
the Protect Mode Interface (PMI):
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéName ΓöéSection Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Cleanup] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Comment] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Declarations] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[DisableController] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[EnableController] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[GetBank] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Hardware] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[IdentifyAdapter] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[IsEngineBusy] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[ModeInfo] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[MonitorModeInfo] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[PMIVersion] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetBank] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetMode] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetMonitorTimings] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[TrapRegs] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[TuneDisplay] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[UnLock] ΓöéPMI sections Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéABOUTDW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéABOUTW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéACCEL ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBYTE_IOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBYTE_MMIOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBINB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéBOUTB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDATAMASK ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDWORD_IOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéDWORD_MMIOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéENDWHILE ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéGOTO ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéIF ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéINB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéINDEX ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéINDEXMASK ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéINDW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéINW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMEMCMP ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéOUTB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéOUTDW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéOUTW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRESET ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéREADB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéREADDW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéREADW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRMWB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRMWBI ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRMWW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRO ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRW ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSTRCMP ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWHILE ΓöéPMI constructs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWO ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWORD_IOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWORD_MMIOPORT ΓöéTrapRegs Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWRITEB ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWRITEDW ΓöéPMI commands Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWRITEW ΓöéPMI commands Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Variables are user-defined identifiers that symbolically represent a hardware
register in terms of its offset, in either the CPU's I/O space or memory space.
Use of variables is required for system architectures in which dynamic
configuration and multiple instances of the same hardware are possible. A
variable must be declared prior to being used. See [Declarations] in PMI
Sections.
<memory-mapped variable> ::= <mmio variable> = 'MMIO{'<number>'}'
<port-variable declaration> ::= <pio variable> = 'PIO{'<number>'}'
<mmio variable> ::= <name>
<pio variable> ::= <name>
For example:
seq_address = PIO{0x3c4};
interrupt_en = MMIO{0x00000080}
Labels are user-defined identifiers that refer to code locations. The scope of
a label is its containing function (or section). A label name within an adapter
definition should be unique. The label must be declared prior to its reference.
<label> ::= <name>':'
ΓòÉΓòÉΓòÉ 8.2.4. Registers ΓòÉΓòÉΓòÉ
Registers are internal local variables that are used to hold interim results
and return or pass information. There are 256 32-bit noninitialized registers
that are private to every VIDEOPMI caller. Registers should be assigned their
values prior to being used. They can be used as a source in port OUT commands
and memory WRITE commands or as a destination in the port IN commands and
memory READ commands. Size of these operations is determined by the size of the
PMI command. A set of 32-bit operations on registers is also defined in the
syntax. When used in block I/O commands, the register index should be the same
as that of the port index to which it corresponds. Register r0 is used as the
return value register from functions that have a return value. Register r0 is
also used to provide the bank number to the SetBank function.
Care should be taken in assigning registers in sections that contain function
calls. Because all of the internal and imported PMI functions have
addressability to the same set of registers, they will overwrite values set
before function calls.
<register> = r<'0'..'255'>
ΓòÉΓòÉΓòÉ 8.2.5. Operators, Assignment Expressions, and Conditional Expressions ΓòÉΓòÉΓòÉ
The following operators are valid in the PMI syntax:
<postfix unary additive op> ::= '++' | '--'
<additive op> ::= '+' | '-'
<shift op> ::= '<<' | '>>'
<bitwise op> ::= '&' | '|' | '^'
<relational op> ::= '<' | '>' | '==' | '<=' | '>=' | '!='
<binary assignment op> ::= '&=' | '|= ' | '<<=' | '>>=' | '+=' | '-='
| '^='
<unary negation op> ::= '~'
<assignment op> ::= '='
Both assignment and conditional expressions in the PMI syntax are limited to a
single expression term. The value of a conditional expression is either TRUE
(nonzero) or FALSE (zero).
<assignment> ::=
<register><postfix unary additive op> |
<register><binary assignment op> [<constant>|<register>] |
<register><assignment op> { <PMI Keyvariable> |
<register operand>|<constant> } |
<register><assignment op> {<register operand> | <PMI keyvariable>}
{<additive op>|<shift op> | <bitwiseop>}
{<constant> | <register>
<register operand> ::= [<unary negation op>]<register>
Examples:
r0 = VerticalRefresh;
r0 <<= 0x10;
r1++; r2--;
r1 = ~r2 ^ 0x04;
r2 = XResolution << r1;
r1 = r2 + 0xffff;
<condition> ::=
'(' { <PMI Keyvariable> | <register>} {<relational op> | <bitwise op>}
{ <PMI Keyvariable> | <register> | <constant> } ')'
Examples:
(XResolution == 1024)
(r1 & 0x0fe0)
(r2 == VerticalRefresh)
ΓòÉΓòÉΓòÉ 8.2.6. PMI Functions ΓòÉΓòÉΓòÉ
A PMI function is defined as a PMI Section with a user-defined name other than
one of the predefined Section names.
PMI functions have the following characteristics:
o Argument passing is performed using registers.
o Functions can be of either the VOID type (no return value) or of the
APIRET type (return 0 for success and nonzero for failure).
o Function prototypes are not explicitly declared; the calling section has
to understand how many and which registers need to be set and set them
before calling the function.
o Functions are invoked by specifying the function name in a section.
o Functions must be declared prior to their use.
o A function may be called from within a function.
o Recursions are not allowed.
o There is no explicit exit or return command from functions.
o The last command or assignment in the function's section is considered its
exit point.
PMI functions should be used extensively to create commonality and to
encapsulate related operations. This use will reduce development costs, support
more adapter-specific variations, reduce the size of the .PMI file, and improve
performance.
The VIDEO_ADAPTER structure is passed by PMI procedural callers at every PMI
entry point and is available to all of the PMI functions other than
IdentifyAdapter. All PMI functions have addressability to the current state of
the PMI registers and care should be taken in using the registers.
ΓòÉΓòÉΓòÉ 8.2.7. PMI Commands ΓòÉΓòÉΓòÉ
PMI commands are divided into several categories, as follows:
o Simple I/O commands
o Block I/O commands
o Read/Modify/Write commands
o Simple memory access commands
o WAIT command
ΓòÉΓòÉΓòÉ 8.2.7.1. INx Commands ΓòÉΓòÉΓòÉ
INx commands perform an I/O input from the source and place the result into the
destination. Width can be byte, word, or doubleword. The syntax is as follows:
INB( destination, source);
INW( destination, source);
INDW( destination, source);
<destination> ::= <register>
<source> ::= <constant> | <pio variable>
ΓòÉΓòÉΓòÉ 8.2.7.2. OUTx Commands ΓòÉΓòÉΓòÉ
OUTx commands perform an I/O output from the source into the destination. Width
can be byte, word, or doubleword. The syntax is as follows:
OUTB( destination, source);
OUTW( destination, source);
OUTDW( destination, source);
<destination> ::= <pio variable> | <constant>
<source> ::= {<constant> | <register>}
For example:
outb(seq_address,r1); //seq_address must have been declared.
outw(0x3c4,0x5520);
ΓòÉΓòÉΓòÉ 8.2.7.3. Block I/O Commands ΓòÉΓòÉΓòÉ
Block I/O commands are designed for indexed ports. Byte-indexed access requires
both index and data port values. Word and Dword block I/O is implemented as
autoincrement block I/O, which causes no explicit modification to the index
register. Word and Dword block I/O assumes that the hardware either implements
autoincrementing or that the values being written specify both index and data.
The autoincrementing (ABOUTx) command is not available for byte size. All block
I/O commands assume that a set of PMI registers has been programmed prior to
calling the command. The startindex field is used as the index of the first PMI
register in the set and as the first indexed port value (except in ABOUTx
commands). If the hardware's autoincrementing feature needs to be programmed
explicitly, it should be done prior to calling the block I/O and should be left
enabled upon completion of the mode set. See "Save and Restore State" in
Overview and [TrapRegs] in PMI Sections.
BINB( count, startindex, indexport, dataport );
BOUTB( count,startindex, indexport, dataport );
ABOUTW( count, startindex, port )
ABOUTDW( count, startindex, port );
<startindex> ::= <constant>
<count> ::= <constant>
<indexport> ::= <pio variable> | <constant>
<dataport> ::= <pio variable> | <constant>
<port> ::= <pio variable> | <constant>
For example:
r0 = 0x11; r1 = 0x12; r2 = 0x13;
boutb(0x03, 0x00, seq_address, seq_data); //seq_address and seq_data
//already declared.
ΓòÉΓòÉΓòÉ 8.2.7.4. RMWx Commands ΓòÉΓòÉΓòÉ
RMWx (Read/Modify/Write) commands are available in byte format (indexed or
nonindexed) and in word format (nonindexed). A nonindexed port RMWx can be used
for ports that have different read and write access I/O addresses. The syntax
is as follows:
RMWBI( indexport, dataport, index, andmask, ormask );
RMWB( bytereadport, bytewriteport, andmask, ormask );
RMWW( wordreadport, wordwriteport, andmask, ormask );
<indexport> ::= <pio variable> | <constant>
<dataport> ::= <pio variable> | <constant>
<bytereadport> ::= <pio variable> | <constant>
<bytewriteport> ::= <pio variable> | <constant>
<wordreadport> ::= <pio variable> | <constant>
<wordwriteport> ::= <pio variable> | <constant>
<index> ::= <constant>
<andmask> ::= <constant>
<ormask> ::= <constant>
For example:
rmww(0x4ae8, 0x4ae8, 0x01, 0x00);
ΓòÉΓòÉΓòÉ 8.2.7.5. Memory I/O Commands ΓòÉΓòÉΓòÉ
Memory I/O commands have only simple, single-port access format. Block I/O or
indexing is not facilitated. Supported widths are Byte, Word, or Dword. Both
destination and source represent either physical addresses or a register. The
syntax is as follows:
READB( destination, source ); //read from source address, store
//in destination variable
READW(destination, source );
READDW( destination, source);
<destination> ::= <register>
<source> ::= <constant> | <mmio variable>
WRITEB( destination, source ); //read from source variable, store
//in destination address
WRITEW( destination, source );
WRITEDW( destination, source );
<destination> ::= <mmio variable> | <constant>
<source> ::= <constant>|<register>
For example:
writedw(interrupt_en, r1); //interrupt_en already declared.
writeb(0xa0000080,0x88); //write 0x88 into phys. add 0xa00000080
readw(r1, 0xa0000080); //read a word from 0xa0000080 into r1.
ΓòÉΓòÉΓòÉ 8.2.7.6. WAIT Command ΓòÉΓòÉΓòÉ
The WAIT command should be used to wait on vertical retrace or to wait on a
desired status. The command allows for a time-out in milliseconds. The
condition for wait has been met if port value ANDed with andmask has the
waitonvalue. Register r0 is set to convey the status:
o TRUE (1) means that the waiting condition has been met.
o FALSE means that a time-out has occurred.
The wait is interruptable. This command should not be used in Cleanup sections.
The port can be an immediate value, which presumes that the port is an I/O port
or a declared port. In these cases, the port's declaration type is used in
interpreting this command.
WAIT( port, andmask, timeout, waitonvalue );
<andmask> ::= <number>
<timeout> ::= <number>
<waitonvalue> ::= <number>
<port> ::= < constant> | <pio variable> | <mmio variable>
ΓòÉΓòÉΓòÉ 8.2.8. PMI Constructs and Library Functions ΓòÉΓòÉΓòÉ
PMI constructs are keywords that are used for program flow control in PMI
command sections. There are three flow control constructs: WHILE loop,
unconditional jump GOTO, and conditional IF GOTO label jump. The constructs can
be nested. Label reference can only be forward; in other words, a label must
have been encountered before its referring construct.
WHILE <condition> ;while loop condition is true, proceed
... ;else continue after ENDWHILE statement
...
...
ENDWHILE
GOTO <label> ;jump to label
IF <condition> GOTO <label> ;if condition true, jump to label
For example:
if (r1 != 0x88) goto done
Two library functions facilitate string and binary compares: STRCMP and MEMCMP.
These functions are especially useful in searching for signature sequences when
identifying the adapter or comparing other string-literal names. STRCMP is used
to compare a zero-ended character string (must be in double quotes) source with
a destination specified as its physical address. MEMCMP is used to compare
binary fields. The source string-literal for MEMCMP is assumed to be a string
of 1s and 0s. If there is a need to search for a hexadecimal or other strings,
these must be converted to their binary form first. Byte alignment of both the
source and target in the physical memory is assumed. Both functions return the
result in r0: zero if the match was completely successful or nonzero
otherwise. The length of the search is determined by the length of the source
string.
String compares are performed after both source and target are converted to
uppercase.
STRCMP(<destination>, <source>};
<destination> ::= <address> ;physical address
<source> ::= <string>)
MEMCMP(<destination>, <source>};
<source> ::= <binary-string>
<address> ::= <PMI keyvariable> | <constant>
For example:
MEMCMP (0xc0154,"1001001111010001"); //compare 2 bytes at 0xc0154 with 0x93d1
ΓòÉΓòÉΓòÉ 8.3. PMI Sections ΓòÉΓòÉΓòÉ
This part of the chapter discusses the different types of Sections in a .PMI
file.
ΓòÉΓòÉΓòÉ 8.3.1. Sections and Their Order of Appearance ΓòÉΓòÉΓòÉ
Note: The Service sections are commented on and illustrated using the PMI
language.
The following table lists the sections in the order they appear in a .PMI file.
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéName ΓöéRequiredΓöéType ΓöéComments Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[PMIVersion] ΓöéYes ΓöéInformational Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Hardware] ΓöéYes ΓöéInformational Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Declarations] ΓöéNo ΓöéInformational ΓöéProvides multiple Γöé
Γöé Γöé Γöé Γöéinstances, dynamic Γöé
Γöé Γöé Γöé Γöéconfiguration Γöé
Γöé Γöé Γöé Γöésupport Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[TrapRegs] ΓöéYes ΓöéInformational ΓöéProvides limited Γöé
Γöé Γöé Γöé Γöévirtualization Γöé
Γöé Γöé Γöé Γöésupport Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[IdentifyAdapter] ΓöéYes ΓöéService Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[DisableCΓöéYes ΓöéService ΓöéProvides Γöé
Γöé Γöé Γöé Γöéconfiguration Γöé
Γöé Γöé Γöé Γöésupport, if Γöé
Γöé Γöé Γöé Γöéapplicable Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[EnableController]ΓöéYes ΓöéService ΓöéProvides Γöé
Γöé Γöé Γöé Γöéconfiguration Γöé
Γöé Γöé Γöé Γöésupport, if Γöé
Γöé Γöé Γöé Γöéapplicable Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[UnLock] ΓöéYes ΓöéService Γöé Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Cleanup] ΓöéYes ΓöéService ΓöéProvides reset, Γöé
Γöé Γöé Γöé Γöédisable, and Γöé
Γöé Γöé Γöé Γöébail-out support Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[IsEngineBusy] ΓöéYes ΓöéService ΓöéRequired for Γöé
Γöé Γöé Γöé Γöéaccelerators and Γöé
Γöé Γöé Γöé Γöécoprocessors Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetBank] ΓöéYes ΓöéService ΓöéIf applicable Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[GetBank] ΓöéYes ΓöéService ΓöéIf applicable Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[TuneDisplay] ΓöéNo ΓöéService ΓöéProvides display Γöé
Γöé Γöé Γöé Γöécentering and sizingΓöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetMonitΓöéNo ΓöéService ΓöéProvides end-user Γöé
Γöé Γöé Γöé Γöéinterface for Γöé
Γöé Γöé Γöé Γöéchanging monitor Γöé
Γöé Γöé Γöé Γöétimings without Γöé
Γöé Γöé Γöé Γöécomplete mode Γöé
Γöé Γöé Γöé Γöéchanges Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[Comment] ΓöéNo ΓöéInformational ΓöéOne per ModeInfo, ifΓöé
Γöé Γöé Γöé Γöédesired Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[ModeInfo] ΓöéYes ΓöéInformational ΓöéMultiple entries Γöé
Γöé Γöé Γöé Γöéwith unique values Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[MonitorModeInfo] ΓöéNo ΓöéInformational ΓöéProvides multiple Γöé
Γöé Γöé Γöé Γöémonitor-timing Γöé
Γöé Γöé Γöé Γöésupport Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé[SetMode] ΓöéYes ΓöéService ΓöéAt least one per Γöé
Γöé Γöé Γöé Γöéfile or, at most, Γöé
Γöé Γöé Γöé Γöéone per Γöé
Γöé Γöé Γöé ΓöéMonitorModeInfo Γöé
Γöé Γöé Γöé Γöésection Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 8.3.2. User-Defined Function Sections ΓòÉΓòÉΓòÉ
Any section denoted by [NAME] not listed in the preceding table is regarded as
a user-defined section. The function can be called internally by the predefined
PMI sections or other user-defined functions (see "PMI Functions" in PMI
Language Elements).
ΓòÉΓòÉΓòÉ 8.3.3. Predefined PMI Sections ΓòÉΓòÉΓòÉ
The following text describes each of the PMI Sections listed in the table at
the beginning of this chapter.
ΓòÉΓòÉΓòÉ 8.3.3.1. [PMIVersion] ΓòÉΓòÉΓòÉ
This section is used to describe the PMI language revision level used.
ΓòÉΓòÉΓòÉ 8.3.3.2. [Hardware] ΓòÉΓòÉΓòÉ
o BusType = { ISA | VLB | PCI | EISA | PCMCIA | MCA }
The hardware description is available through a system query function. Any
other definition is regarded as a user definition.
o OEMString = "CHIPNAME ADAPTERNAME, ADAPTER MANUFACTURER NAME"
OEMString has an internal length of 128 chars, 0 ended. This string should
be sufficient to uniquely describe the video adapter. The string will be
presented to the user at configuration and installation and is the key
element of the system's description of the adapter. It is regarded as a
user definition, meaning that no translation of this information to any
other format is performed. Any trademark information should be provided as
a comment in the .PMI file.
If the .PMI file is not specifically written for an adapter, the
ADAPTERNAME GENERIC is suggested (such files may be shipped by the chip
manufacturers or software vendors). CHIPNAME is a required token and is
used as a key in the display driver installation process to find a
corresponding display driver for a given .PMI file (and vice versa).
o DACString = "MANUFACTURER NAME [, DACNAME]"
DACNAME, such as Bt485 or AT&T 491 is optional. Regarded as a user
definition. Any trademark information should be provided as a comment.
o Version = <string>
User-defined. Should represent the version of the manufacturer's .PMI
file, rather than the revision level of the hardware. If multiple versions
of the .PMI file exist for the same OEMString description, and all
respective IdentifyAdapter function calls were successful, the file with
the greater Version string is assumed to be the more appropriate one and
is offered at the top of the PMI list during the video configuration.
The user, however, does have a choice of selecting a different .PMI file.
Note that the PMIVersion section is used to describe the PMI language
revision level used, not the version of the .PMI file.
o TotalMemory = <constant>
This represents the total size of the currently installed VRAM memory in
bytes.
o MemoryIOAddress = <constant> ['{' <mmio list> '}'] <mmio list> ::=
<constant> | <constant> [',' <mmio list>]
Specifies the default base memory address for memory mapped I/O and a list
of possible base addresses. The default value should match the value set
by the configuration performed at the time of the adapter's installation.
It is possible to reconfigure the adapter's address at a later time
without modifying the .PMI file. See "Adapter Configuration" in Overview
and [EnableController] and [Declarations] in this chapter.
o PortIOAddress = <constant> ['{' <pio list> '}'] <pio list> ::=
<constant> | <constant> [',' <pio list>]
Specifies default base port address for port I/O and a list of possible
I/O addresses. For example, this variable for an MCA XGA adapter would
reflect its instance that needs to be added to all of the register
addresses. See the preceding discussion on MemoryIOAddress. See also
"Adapter Configuration" in Overview and [EnableController] and
[Declarations] in this chapter.
o Endian = {BIG | LITTLE}
This represents the endian control capability of the device. The PMI
constants are always represented with the most significant byte at the
leftmost position. There are three possible cases of endian control:
- The device can conform to the endian type of the platform, such as
WEITEK or XGA.
- The device cannot conform to the endian type but is of the same
endian type as the platform.
- The device is of a different endian type than the platform on which
it is installed.
The first two cases require no endian conversion on the part of the
VIDEOPMI interpreter. In the third case, the VIDEOPMI interpreter
native to a platform will perform the byte swapping to the platform's
endian type. The programming of the endian control on devices that are
capable of address swapping, such as XGA or WEITEK, is the
responsibility of the .PMI file. In the case of WEITEK, this is done
indirectly by generating correct addresses. It is preferable to
configure the adapter in the endian control of the platform for which
it is intended, if such capability is present.
Here is a sample .PMI file for a Viper VLB card:
BusType = VLB
OEMString = "P9000 VIPER, Diamond Computer Systems Inc."
DACString = "Brooktree Corporation"
Version = "3.2"
TotalMemory = 2097152
MemoryIOAddress = 0x80000000
PortIOAddress = 0x00000000
Endian = LITTLE
ΓòÉΓòÉΓòÉ 8.3.3.3. [Declarations] ΓòÉΓòÉΓòÉ
This section is a list of port mnemonics defined by their offsets. Use MMIO for
those whose offset is relative to MemoryIOAddress and PIO for those whose
offset is relative to the PortIOAddress field in the Hardware section.
Addresses for the ports that are referenced by their mnemonics are resolved at
the time of the mode sets, using the MemoryIOAddress and/or PortIOAddress
hardware values. These values can be changed at run time to allow for dynamic
reconfiguration.
Here is a sample .PMI file for a Viper VLB card:
sysconfig = MMIO{0x00100004}
interrupt_en= MMIO{0x0010000c}
x0y0 = MMIO{0x00181018}
x1y1 = MMIO{0x00181028}
x2y2 = MMIO{0x00181048}
x3y3 = MMIO{0x00181068}
cindex = MMIO{0x0018018c}
w_off.xy = MMIO{0x00180190}
fground = MMIO{0x00180200}
bground = MMIO{0x00180204}
pmask = MMIO{0x00180208}
draw_mode = MMIO{0x0018020c}
pat_originx = MMIO{0x00180210}
pat_originy = MMIO{0x00180214}
raster = MMIO{0x00180218}
pixel8_reg = MMIO{0x0018021c}
w_min = MMIO{0x00180220}
w_max = MMIO{0x00180224}
pattern0 = MMIO{0x00180280}
pattern2 = MMIO{0x00180284}
pattern4 = MMIO{0x00180288}
pattern6 = MMIO{0x0018028c}
pattern8 = MMIO{0x00180290}
patternA = MMIO{0x00180294}
patternC = MMIO{0x00180298}
patternE = MMIO{0x0018029c}
hrzt = MMIO{0x00100108}
hrzsr = MMIO{0x0010010c}
hrzbr = MMIO{0x00100110}
hrzbf = MMIO{0x00100114}
prehrzc = MMIO{0x00100118}
vrtt = MMIO{0x00100120}
vrtsr = MMIO{0x00100124}
vrtbr = MMIO{0x00100128}
vrtbf = MMIO{0x0010012c}
prevrtc = MMIO{0x00100130}
srtctl = MMIO{0x00100138}
memconfig = MMIO{0x00100184}
rfperiod = MMIO{0x00100188}
rfcount = MMIO{0x0010018c}
rlmax = MMIO{0x00100190}
ΓòÉΓòÉΓòÉ 8.3.3.4. [TrapRegs] ΓòÉΓòÉΓòÉ
All ports of an adapter that need to be accessed by the video subsystem in both
I/O or memory space should be listed with their respective definitions in the
TrapRegs section. A port could be either an immediate or a mnemonic defined in
the Declarations section. The list of trapped registers is available through a
system query function.
In OS/2 Warp, PowerPC Edition, I/O ports and video memory have to be mapped
before access can be performed. This section contains all the physical video
resource needed for PMI services. In a future release, VIDEOPMI will handle all
the mapping of video resource defined in this section. Currently, mapping is
handled by the microkernel console driver. See Hardware Access Under OS/2 Warp,
PowerPC Edition for details.
In a future release, the virtual video driver will use the TrapRegs definition
to allocate storage for shadow registers, install all of the necessary I/O
hooks, and decide whether a background access to a register is permissible. The
driver is aware of VGA and 8514 ports and makes the appropriate decision, if
access is made to the registers with known definitions. All port access in the
background is divided into two categories:
o The first is access that constitutes an acceleration or an action that
initiates a change in the hardware's response beyond the dumb
store-retrieve behavior. Such access would require a specialized virtual
driver.
o The second is access that is permissible and can be shadowed. Such access
would include resetting of acceleration, disabling of the accelerator,
other actions whose purpose is to enable the hardware for a dumb-frame
access, or actions that are "accelerator no-op."
In order to facilitate the virtual driver's decision on the type of access a
DOS application is making, accelerator-related ports should be marked as ACCEL.
If there is a reset state of these ports that denotes "acceleration reset
state," that should be specified using resetzeromask and resetonemask. The
virtual driver will allow background port access to the ACCEL ports if it
conforms to the two reset masks. These two reset fields are bitmasks or
allowable values; first is the bitmask of 0s and second is the bitmask of 1s.
For example, RESETMASK(0xca,0x4a) means that value 0 is allowed in positions 7,
6, 3, and 1, and value 1 is allowed in positions 6, 3, and 1. This limited
virtualization should allow at least nonaccelerated modes to be virtualized
correctly. Vendors wishing to virtualize accelerated mode have to invest in a
dedicated virtual driver.
Multiports (port arrays) should be defined in terms of the address port,
INDEXMASK. This address port represents the bitmask of the index address fields
(INDEX list). The INDEX list represents the writeable registers within the
register array and data port with the DATAMASK. It is possible to have register
arrays that are addressable through a single address/data register. This type
of array is referred to as single-access. Single-access register arrays are
identified by having the same data register and address register. INDEXMASK and
DATAMASK are assumed to be contiguous. Indexed registers are assumed to be read
from and written to in the same fashion, although the virtual driver will treat
some known ports, such as the 8514 multifunction array, differently (as special
cases). Single-access registers are assumed to be autoincrement-enabled and
will be saved by reading the port INDEXMASK number of times; the read index
fields will be interpreted for appropriate register shadowing. The
autoincrementing feature should, therefore, be enabled for reading at all times
(SetMode).
If a port is serving as address/data gate for a number of different register
arrays (such is the case on WDc24), proper virtualization of such arrays can
be done only by a dedicated virtual driver. Such an address/data port can be
listed as a nonindexed port and marked as ACCEL. This indicates that any access
to the port other than RESET constitutes an accelerated function and cannot be
permitted in the background. Ports should be marked as RW (read-write), RO
(Read-only), or WO (write-only) in order to facilitate the Save/Restore.
The virtualization of the port access, in which read access defines a port
other than the write access, is not supported.
Read-only ports also could be listed in the TrapRegs and, if listed, a
dedicated I/O hook function would prohibit write access to the port at all
times. However, read access in the foreground would be permitted (not I/O
hooked), and background access would return values recorded at the switch time.
This listing is done so that a vendor can protect a writeable register from
VDM's write access by declaring it as read-only. Virtualization of read-access
ports that differs from this scheme would require a dedicated virtual driver.
It is recommended, but not necessary, to program all of the writeable ports
from the TrapRegs list in the course of each mode set.
<port description> {<readport> [<writeport>] |
<indexport> [<index description> ','
<dataport> <datamask>] }
<port description> ::= <port size> <accesstype> ['ACCEL'
['RESET('<resetzeromask> ',' <resetonemask>')']]
<port size> ::= 'BYTE_IOPORT' | 'WORD_IOPORT' | 'DWORD_IOPORT' |
'BYTE_MMIOPORT' | 'WORD_MMIOPORT' | 'DWORD_MMIOPORT'
<resetzeromask> ::= <constant>
<resetonemask> ::= <constant>
<index description> ::= 'INDEXMASK(' <bitmask> ')'
'INDEX ('<index range> ')'
<index range> ::= <constant> '-' <constant> |
<constant> '-' <constant> [','<index range>]
<datamask> ::= 'DATAMASK ('<constant>')'
<readport> ::= <pio variable> | <mmio name>
<writeport> ::= <pio variable>
<accesstype> ::= 'RO' | 'RW' | 'WO'
Here is a sample .PMI file for a Viper VLB card:
BYTE_IOPORT RW 0x3c2, 0x3cc;
BYTE_IOPORT RW 0x3c4 INDEXMASK(01fx) INDEX( 0x00-0x05, 0x11-0x13 ), 0x3c5
DATAMASK(0xff);
BYTE_IOPORT RW 0x3d4 INDEXMASK(01fx) INDEX( 0x00-0x1d ), 0x3d5
DATAMASK(0xff);
BYTE_IOPORT RW 0x3c0 INDEXMASK(01fx) INDEX( 0x00-0x13 ), 0x3c0
DATAMASK(0xff);
BYTE_IOPORT RW 0x3ce INDEXMASK(0x0f) INDEX( 0x00-0x0f ), 0x3cf
DATAMASK(0xff);
DWORD_MMIOPORT RW ACCEL sysconfig;
DWORD_MMIOPORT RW ACCEL rfperiod;
DWORD_MMIOPORT RW ACCEL rlmax;
DWORD_MMIOPORT RW ACCEL pmask;
DWORD_MMIOPORT RW ACCEL draw_mode;
DWORD_MMIOPORT RW ACCEL pat_originx;
DWORD_MMIOPORT RW ACCEL pat_originy;
DWORD_MMIOPORT RW ACCEL w_min;
DWORD_MMIOPORT RW ACCEL w_max;
DWORD_MMIOPORT RW ACCEL hrzt;
DWORD_MMIOPORT RW ACCEL hrzsr;
DWORD_MMIOPORT RW ACCEL hrzbr;
DWORD_MMIOPORT RW ACCEL hrzbf;
DWORD_MMIOPORT RW ACCEL prehrzc;
DWORD_MMIOPORT RW ACCEL vrtt;
DWORD_MMIOPORT RW ACCEL vrtsr;
DWORD_MMIOPORT RW ACCEL vrtbr;
DWORD_MMIOPORT RW ACCEL vrtbf;
DWORD_MMIOPORT RW ACCEL prevrtc;
DWORD_MMIOPORT RW ACCEL memconfig;
DWORD_MMIOPORT RW ACCEL srtctl;
Here is a sample of an 8514/a Advanced Function Control Register on S3:
WORD_IOPORT ACCEL RESET(0xff,0xde) 0x4ae8;
All bit positions are valid for 0 value. Bit 0, when loaded with 1, is enabling
the enhanced display function, which is prohibited. Bit 5, when loaded with 1,
is enabling the MMIO addressing, which is also prohibited. Dynamic switching
between MMIO and port I/O driver access for any adapter currently requires a
dedicated virtual driver.
ΓòÉΓòÉΓòÉ 8.3.3.5. [IdentifyAdapter] ΓòÉΓòÉΓòÉ
This is a required section and should perform the adapter identification.
Recommended identification steps depend on the bus architecture and hardware
support for the identification. For example, on a PCI adapter, a positive check
of the PCI device ID, revision ID, and vendor ID would be sufficient. On an ISA
card, a physical memory location can be read and compared against a string or
a binary key, using MEMCMP and STRCMP PMI commands. Or, an identification port
could be read in order to confirm the adapter type and revision level. The
dependency on familiar port response should be minimal and resorted to only if
more reliable checks do not exist. For vendors writing .PMI files for generic
adapter support, however, this may be the only option, and it should be
implemented with great care.
Register r0 is used to hold the function result. The register should contain
zero if the adapter matches its Hardware description (OEMString and DACString
in its entirety) or nonzero otherwise.
The purpose of the IdentifyAdapter function is to verify that an instance of
the adapter is found that matches the OEMString and Version string from the
.PMI file's Hardware section. Whether multiple instances exist, or if the
instance found is not configured to the passed MemoryIOAddress and
PortIOAddress, is of no consequence.
An adapter is considered available if its IdentifyAdapter section returns
success. Consequently, if the .PMI file contains the minimum VIDEOPMI content,
its .PMI file will be loaded.
Warning: It is essential that any I/O or MMIO registers modified in this
section be saved and restored! This is of great importance, as IdentifyAdapter
sections from a .PMI file will be executed on nonrelated hardware in an attempt
to find the corresponding .PMI file.
ΓòÉΓòÉΓòÉ 8.3.3.6. [DisableController] ΓòÉΓòÉΓòÉ
The DisableController function disables the SVGA controller's sync generation
and enables VGA sync generation if a VGA chip is sharing the function. If
possible, addressability to the controller should also be disabled. PMI
keyvariable SlotID is used to identify the target controller.
Here is a sample .PMI file for a Viper VLB card:
[DisableController]
// Enable VGA and reset memory address
r0 = 0; //r0 = 0 is success
rmwbi(0x3c4,0x3c5,0x12,0xEC,0x0);
ΓòÉΓòÉΓòÉ 8.3.3.7. [EnableController] ΓòÉΓòÉΓòÉ
This section provides the means to enable the generation of sync signals and,
through software, to configure the controller that can be configured and to
verify configuration for those that cannot be configured. If an SVGA adapter is
sharing sync-generation functions with a co-residing VGA controller, the Enable
call should disable VGA sync generation and enable the same function of the
SVGA controller (SVGA is a term used, in a broad sense, to refer to the
advanced controller that is the target of PMI's programming).
For adapters that can be configured by software means and can coexist in
multiple instances, the EnableController function is used to configure the
instance found in the SlotID PMI keyvariable. The instance is configured to
respond to the current values for the MemoryIOAddress and PortIOAddress.
Failure to do so should be indicated by setting r0 to a nonzero value.
The difference between the EnableController and UnLock sections is that UnLock
does not configure the adapter, it merely provides access to any lockable
addresses.
Here is a sample VDATA.PMI for a Viper VLB card:
[EnableController]
UnLock; // call Unlock section
r0 = 0; //indicate success
if (MemoryIOAddress != 0xA0000000) goto case1
rmwbi(0x3c4,0x3c5,0x12,0xFC,0x11);
goto exitenable;
case1:
if (MemoryIOAddress != 080000000) goto case2
rmwbi(0x3c4,0x3c5,0x12,0xFC,0x13);
goto exitenable;
case2:
if (MemoryIOAddress != 0x40000000) goto case3
rmwbi(0x3c4,0x3c5,0x12,0xFC,0x12);
goto exitenable;
case3:
r0 = 0xFFFF; //r0 set to reflect failure
exitenable:
ΓòÉΓòÉΓòÉ 8.3.3.8. [UnLock] ΓòÉΓòÉΓòÉ
This section contains the list of commands required to make the hardware
available for the execution of the SetMode section, as well as for saving and
restoring of the controller and video buffer. The list of commands should be
inclusive of saving and restoring the registers modified in the process, with
the exclusion of the unlock key register. The function can be mode-sensitive,
via conditional statements that evaluate key mode PMI keyvariables. However,
the function could be a superset of all required unlock commands, for as long
as such a sequence is not counterproductive in any mode sets.
Here is a sample .PMI file for a 9GXE S3 card:
inb(r0, 0x3d4); //save index
outb(0x3d4, 0x38);
outb(0x3d5, 0x48);
outb(0x3d4, 0x39);
outb(0x3d5, 0xa0);
outb(0x3d4, r0); //restore index
ΓòÉΓòÉΓòÉ 8.3.3.9. [Cleanup] ΓòÉΓòÉΓòÉ
Cleanup is used on session switches or when SetMode control is being
relinquished to a driver that may not be VIDEOPMI-driven. This function is also
used if and when a mode targeting the VGA chip is to be issued from a resource
other than the .PMI file. The virtual video driver depends on this function
during session switches when the engine is found busy and a reset engine
mechanism is needed as part of the recovery. The function will also be used at
shutdown, after the shutdown message is displayed. It ensures that extended
functionality is disabled and reset to the extent that pure VGA compatibility
and/or subsequent use of the accelerator is allowed. For SVGA and
accelerator/coprocessors that coexist with a VGA chip, this function is used to
disable the controller and enable the VGA chip. Recommended order of disabling
is:
o Reset DAC to VGA mode.
o Reset engine.
o Disable extended functionality.
o Enable VGA.
o Set clock to 25 MHz.
Here is a sample .PMI file for a Viper VLB card:
[Cleanup]
//reset DAC
r0 = 0x00000000;
r1 = 0x00000000;
ProgramDAC;
//reset clock to 60Hz, 32 KHz
r0 = 0x0045A8BC;
ProgramClock;
//enable VGA
DisableController;
ΓòÉΓòÉΓòÉ 8.3.3.10. [IsEngineBusy] ΓòÉΓòÉΓòÉ
On accelerators, some operations may require that the engine has completed its
current command. This section should query the status of the accelerator and
set r0 to TRUE (nonzero) if the engine is still busy or to FALSE (0) if it is
not. Currently, only the VPMI virtual driver needs this function.
ΓòÉΓòÉΓòÉ 8.3.3.11. [SetBank] ΓòÉΓòÉΓòÉ
Specifies the commands necessary in order to switch banks on a frame buffer
device. The function is called as part of the saving and restoring of the frame
buffer for any mode with an aperture smaller than the PageLength. The bank
number is assumed to be in r0. If the aperture is large enough to accommodate
direct access to VRAM needed in any mode, the section may be omitted.
Here is a sample .PMI file for a 9GXE S3 card:
[SetBank]
//r0 contains the bank number
inb(r1, 0x3d4); //save index
outb(0x3d4, 0x35);
r2 = r0 & 0x0000000f;
outb(0x3d4, 0x51);
inb(r2, 0x3d5);
r2 & = 0x00000030;
r0 >>= 0x00000002;
r2 & = 0x000000f3;
r0 |= r2 ;
outb(0x3d5, r0); //set bank
outb(0x3d4, r1); //restore index
ΓòÉΓòÉΓòÉ 8.3.3.12. [GetBank] ΓòÉΓòÉΓòÉ
Specifies the name of the function to be called in order to get the current
write bank. This assumes a device with an aperture smaller than the PageLength.
The bank number is assumed to be returned in r0. It should be sensitive to the
mode.
Here is a sample .PMI file for a 9GXE S3 card:
[GetBank]
inb(r1, 0x3d4); //save index
outb(0x3d4, 0x35);
inb(r0, 0x3d5);
r0 & = 0x0000000f;
outb(0x3d4, 0x51);
inb(r2, 0x3d5);
r2 & = 0x00000004;
r2 <<= 0x00000002;
r0 |= r2 ; //r0 contains the value
outb(0x3d4, r1); //restore index
ΓòÉΓòÉΓòÉ 8.3.3.13. [TuneDisplay] ΓòÉΓòÉΓòÉ
This section lists the execution steps required to set the start and end of the
vertical active display in terms of the line count along the vertical sweep. It
also lists the start and end of the horizontal active display in terms of the
dot count along the horizontal sweep. The input values are the ScreenLeftEdge,
ScreenRightEdge, ScreenTopEdge, and ScreenBottomEdge PMI keyvariables. The
function should implement verification of the values, to keep them in the valid
range for the current mode.
This section is not required but, if supplied, it provides a monitor centering
and sizing capability. If provided, TuneDisplay should be invoked by the
respective SetMode section in order to ensure that user-selected values are
being reflected in the mode set. This applies to all MonitorModeInfo sections
that list the four PMI keyvariables. If the current mode does not contain the
PMI keyvariables, TuneDisplay will be a no-op, because default mode values do
not correspond to how the real hardware is programmed and, therefore, the
tuning cannot be performed.
The PMI keyvariable values represent the pixel count (dot count*bytesperpixel)
and line count. They are incremented according to the end-user's configuration
requests, which are processed one unit at a time. For example, if the user is
trying to center a display in 640x480x64K, the start values of the current
active display are obtained from the mode table for the current mode. For every
mouse or pointer drag-increment on the centering area to the left, the current
ScreenLeftEdge and ScreenRightEdge fields are incremented and a call into
TuneDisplay is made with the current values. TuneDisplay translates the values
into the dot count or any other internal representation and validates the
range.
See "Supported Modes" and "MonitorModeInfo" in Overview for more information.
Here is a sample .PMI file for a Viper VLB card:
[TuneDisplay]
r0 = 1; //set return code to failure, if validation fails
if (BitsPerPixel < 8) goto exittune
// all horizontal values are set in terms of DDOTCLK
//multiply by the number of bytes.
r9 = BitsPerPixel >> 4;
r5 = ScreenLeftEdge << r9; //r5 = hrzbr
r6 = ScreenRightEdge << r9; //r6 = hrzbf
r7 = ScreenTopEdge; //r7 = vrtbr
r8 = ScreenBottomEdge; //r8 = vrtbf
readdw(r1, hrzsr); //validate parameters
if (r5 <= r1) goto exittune //validate left edge > hrzsr
readdw(r2, vrtsr);
if (r7 <= r2) goto exittune //validate top edge > vrtsr
readdw(r3, hrzt);
if (r6 >= r3) goto exittune //validate right edge < hrzt
readdw(r4, vrtt);
if (r8 >= r4) goto exittune //validate bottom edge < vrtt
writedw(hrzbr, r5);
writedw(hrzbf, r6);
writedw(vrtbr, r7);
writedw(vrtbf, r8);
r0 = 0; //indicate success exittune:
ΓòÉΓòÉΓòÉ 8.3.3.14. [SetMonitorTimings] ΓòÉΓòÉΓòÉ
Vendors interested in providing the user interface that allows for manipulation
of the timing generation for the current mode, without performing the entire
mode set, should include this section. The section is responsible for verifying
that input parameters (PMI keyvariables set for the current mode and passed
through the VIDEO_ADAPTER structure) are in a valid range. If provided, the
SetMode section should make use of the same function to ensure the integrity of
the timing programming between the mode set and independent refresh set
exercises.
Here is a sample .PMI file for a Viper VLB card:
[SetMonitorTimings]
r0 = 0x1; //indicate failure
if (BitsPerPixel < 8) goto exitclock
r0 = 0x00679c35; //set mem speed
ProgramClock;
//validate refresh values
if(HorizontalRefresh == 32) goto hclock32
if(HorizontalRefresh == 35) goto hclock35
if(HorizontalRefresh == 38) goto hclock38
if(HorizontalRefresh == 48) goto hclock48
if(HorizontalRefresh == 64) goto hclock64
if(HorizontalRefresh == 57) goto hclock57
if(HorizontalRefresh == 58) goto hclock58
if(HorizontalRefresh == 61) goto hclock61
goto exitclock;
hclock32:
if (VerticalRefresh != 60) goto exitclock
r30 = 0x0045A8BC; // r30 contains dotclock value
r31 = 0x000000C7; // r31 contains hrzt
r32 = 0x00000017; // r32 contains hrzsr
r33 = 0x0000020D; // r33 contains vrtt
r34 = 0x00000001; // r34 contains vrtsr
goto ProgramSerial;
hclock35:
if (VerticalRefresh != 56) goto exitclock
r30 = 0x004F54A1; // r30 contains dotclock value
r31 = 0x000000FD; // r31 contains hrzt
r32 = 0x0000001D; // r32 contains hrzsr
r33 = 0x00000278; // r33 contains vrtt
r34 = 0x00000004; // r34 contains vrtsr
goto ProgramSerial;
hclock38:
if (VerticalRefresh != 72) goto exitclock
r30 = 0x004BD8B5; // r30 contains dotclock value
r31 = 0x000000CF; // r31 contains hrzt
r32 = 0x00000005; // r32 contains hrzsr
r33 = 0x00000208; // r33 contains vrtt
r34 = 0x00000003; // r34 contains vrtsr
goto ProgramSerial;
hclock48:
if (VerticalRefresh != 60) goto vclock72
r30 = 0x004D4423; // r30 contains dotclock value
r31 = 0x0000014F; // r31 contains hrzt
r32 = 0x0000001D; // r32 contains hrzsr
r33 = 0x00000326; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
vclock72:
if (VerticalRefresh != 72) goto exitclock
r30 = 0x0045AC3D; // r30 contains dotclock value
r31 = 0x00000103; // r31 contains hrzt
r32 = 0x0000001B; // r32 contains hrzsr
r33 = 0x0000029A; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
hclock64:
if (VerticalRefresh != 80) goto exitclock
r30 = 0x00433018; // r30 contains dotclock value
r31 = 0x00000151; // r31 contains hrzt
r32 = 0x00000021; // r32 contains hrzsr
r33 = 0x00000324; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
hclock57:
if (VerticalRefresh != 70) goto exitclock
r30 = 0x004FAC28; // r30 contains dotclock value
r31 = 0x0000014B; // r31 contains hrzt
r32 = 0x00000021; // r32 contains hrzsr
r33 = 0x00000326; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
hclock58:
if (VerticalRefresh != 72) goto exitclock
r30 = 0x004F7822; // r30 contains dotclock value
r31 = 0x0000014B; // r31 contains hrzt
r32 = 0x00000021; // r32 contains hrzsr
r33 = 0x00000326; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
hclock61:
if (VerticalRefresh != 76) goto exitclock
r30 = 0x004F8021; // r30 contains dotclock value
r31 = 0x0000014A; // r31 contains hrzt
r32 = 0x00000021; // r32 contains hrzsr
r33 = 0x00000327; // r33 contains vrtt
r34 = 0x00000006; // r34 contains vrtsr
goto ProgramSerial;
ProgramSerial: //input parameter r0 already set
ProgramClock; //program dotclock serial clock
// horizontal values are set in terms of DDOTCLK
if (BitsPerPixel == 8) goto allset
r31 <= 1; r31++; r2 <= 1; r2++;
if (BitsPerPixel == 16) goto allset
if (BitsPerPixel != 24) goto exitclock
r31 <= 1; r31++; r2 <= 1; r2++;
allset: //program hrzt and vrtt
writedw(hrzt, r31);
writedw(hrzsr,r32);
writedw(vrtt, r33);
writedw(vrtsr,r34);
//set polarity
r1 = HPolarityPositive << 6;
r1 |= VPolarityPositive << 7;
outb(0x3c4,0x12);
inb(r2, 0x3c5);
r2 &= 0x3f;
r2 |= r1;
outb(0x3c5, r2);
// do clock doubling if needed
if (VerticalRefresh < 68) goto SetDAC
r0 = 0x00000008;
r1 = 0x00000040;
if (BitsPerPixel != 16) goto DACOK
r1 = 0x00000030; // 64K colors
DACOK:
ProgramDAC;
SetDAC:
TuneDisplay; //size and position the active display
r0 = 0; //indicate success
exitclock: //all done
ΓòÉΓòÉΓòÉ 8.3.3.15. [Comment] ΓòÉΓòÉΓòÉ
This section contains the description for each mode. It is placed right before
the [ModeInfo] section. When the .PMI file is processed, the contents of this
section are ignored.
ΓòÉΓòÉΓòÉ 8.3.3.16. [ModeInfo] ΓòÉΓòÉΓòÉ
ModeInfo, together with the MonitorModeInfo section, defines mode capabilities
of the PMI adapter. The complete list of all ModeInfo and MonitorModeInfo
headers is available through a system-mode query function. The ModeInfo header
specifies attributes that are not dependent on the type of display attached.
Some of the fields are optional and, if not provided, are internally set to 0.
Most fields are static; that is, they will not be modified at run-time and
changed from their .PMI file values. However, Aperture address is a dynamic PMI
keyvariable and is set by the caller to reflect the current value. All of the
mode PMI keyvariables are field members of the VIDEOMODEINFO structure, a
substructure of the VIDEO_ADAPTER.
o ModeAttributes = <constant>
- Static PMI keyvariable. Required.
- 0x18 for color graphic modes, 0x08 for color text modes.
- See VESA SVPMI Standard for full description.
o BytesPerScanLine = <constant>
- Static PMI keyvariable. Required.
- Length of logical scan line in bytes.
- See VESA SVPMI Standard for full description.
o XResolution = <constant>
- Static PMI keyvariable. Required.
- Horizontal resolution in pixels or characters in graphics and text
modes, respectively.
o YResolution = <constant>
- Static PMI keyvariable. Required.
- Vertical resolution in pixels or characters in graphics and text
modes, respectively.
o XCharSize = <constant>
- Static PMI keyvariable. Required in text modes.
- Character cell width in pixels.
o YCharSize = <constant>
- Static PMI keyvariable. Required in text modes.
- Character cell height in pixels.
o TextRows = <constant>
- Static PMI keyvariable. Required in both graphics and text modes.
- Number of text rows.
o BitsPerPixel = <constant>
- Static PMI keyvariable. Required.
- Color depth.
o NumberOfPlanes = <constant>
- Static PMI keyvariable. Required.
- [4|1] planar vs. linear memory organization.
o PageLength = <constant>
- Static PMI keyvariable. Required.
- Size of memory required to save a page of the on-screen VRAM.
o SaveSize = <constant>
- Static PMI keyvariable. Required.
- Size of memory required to save all of the on-screen VRAM. It should
be set to include at least the logical scanline width
(BytesPerScanLine*Yresolution).
o Int10ModeSet = <constant>
- Static PMI keyvariable. Required if the same mode can be set though
BIOS.
o ColorFormat = <string>
- Static PMI keyvariable. Optional.
- User defined.
- Zero-ended string. Required for hi-color and true-color modes.
Suggested definitions:
[ RGB | BGR | GBR .| YUI ]
- Not used internally; available to drivers through a mode query.
- If not specified, empty string is returned.
o ColorWeight = <constant> ':' <constant> ':' <constant>
- Static PMI keyvariable. Optional.
- User defined.
- Required for hi-color and true-color modes.
- Not used internally; available to drivers through a mode query.
- If not specified, zeros are returned.
o BufferAddress = <constant> |
- Dynamic PMI keyvariable. Required if direct VRAM access is possible.
- Represents the physical address of the video buffer. If direct buffer
access is possible, VIDEOPMI interpreter will copy VRAM in chunks of
ApertureSize or SaveSize, whichever is smaller. If 0, no direct
buffer access is possible.
This PMI keyvariable is dynamic on all systems in which remapping of
the aperture is possible. In such cases, it should be assigned the
LinearWindowAddress value from the Hardware description. The SetMode
section should ensure that it programs hardware to reflect the
hardware's dynamic value.
o ApertureSize = <constant>
- Static PMI keyvariable. Required if direct VRAM access is possible.
- Size of the aperture. If ApertureSize < SaveSize and BufferAddress is
not 0, SetBank and GetBank sections are required.
- Aperture size will not be modified, even if hardware does allow for
different sizes.
Here is a sample .PMI file for a 9GXE S3 card:
[comment]
Graphics Mode: 1280 x 1024 x 256 colors.
[ModeInfo]
ModeAttributes = 0x18
BytesPerScanLine = 1280
XResolution = 1280
YResolution = 1024
TextRows = 64
BitsPerPixel = 8
NumberOfPlanes = 1
PageLength = 1310720
SaveSize = 1310720
Int10ModeSet = 0x107
BufferAddress = 0x000a0000
ApertureSize = 0x00010000
ΓòÉΓòÉΓòÉ 8.3.3.17. [MonitorModeInfo] ΓòÉΓòÉΓòÉ
This section provides information on the capabilities of the adapter in terms
of the synchronization signal range. This section is optional if an adapter
does not require software intervention in order to detect the monitor type and
program the optimal HSYNC, VSYNC, HBLNK, and VBLNK signals. Because the
industry lacks a standard for monitor detection, most adapters require user
intervention in order to detect the monitor and additional software to handle
selection of the horizontal and vertical frequencies for the configured
monitor. In the OS/2 environment, the configuration and recording of the user
selection is done by the DSPCONF utility. The information is then available to
all video drivers.
Depending on the type of clock generator, the specified frequencies could be
definable only in distinct (discrete) sets of values, or they could be
generated within the maximum range of the clock chip. Threfore, one or more
MonitorModeInfo sections are used to provide a vehicle for user configuration
of the refresh setup and for the subsequent mode setting.
If clock generation is contiguous within a range, a single MonitorModeInfo with
the end of the range should be listed per each mode. Otherwise, a list of
MonitorModeInfo sections should list all of the discrete refresh pairs. In this
case, an exact match between the monitor refresh specification and the
adapter's refresh capability has to happen (this includes the polarity
information). If the vendor providing the .PMI file does not wish to
discriminate based on the polarity, the polarity can be omitted or set to a
predefined value of 2.
Note that all of the PMI keyvariables are marked as dynamic. This means that
their run-time values could differ from their values specified in the flat
file, depending on the user configuration. This also means that sections
programming the hardware should verify that the values passed are in the valid
range.
o VerticalRefresh = <constant>
- Dynamic PMI keyvariable. Required.
- Vertical refresh in Hz, rounded to the nearest integer.
- Should be set to 0 for flat panel and other non-CRT display modes.
Otherwise, set to either a discrete value or end-of-range value.
o HorizontalRefresh = <constant>
- Dynamic PMI keyvariable. Required.
- Horizontal refresh in KHz, rounded to the nearest integer.
- Should be set to 0 for flat panel and other non-CRT display modes.
Otherwise, set to either a discrete value or end-of-range value.
o VPolarityPositive = <'0' | '1' | '2'>
- Vertical polarity.
- Dynamic PMI keyvariable. Not required.
- 0 indicates negative; 1 indicates positive; 2 indicates that either
one can be set and should not be used when matching the monitor
specification. A value of 2 is logically the same as omitting the
keyvariable.
o HPolarityPositive = <'0' | '1' | '2'>
- Horizontal polarity.
- Dynamic PMI keyvariable. Not required.
- 0 indicates negative; 1 indicates positive; 2 indicates that either
one can be set and should not be used when matching the monitor
specification. A value of 2 is logically the same as omitting the
keyvariable.
o ScreenLeftEdge = <constant>
- Dynamic PMI keyvariable. Required if TuneDisplay section exists.
- Defines the start of the active horizontal display in terms of the
pixel count. Internally, it represents the offset in terms of the dot
count along the horizontal sweep.
- If the TuneDisplay section is provided, the user has the option of
fine-tuning this value. Consequently, the SetMode call will set the
hardware according to the dynamic value of this PMI keyvariable (see
[TuneDisplay] and [SetMode] in this chapter).
o ScreenRightEdge = <constant>
- Dynamic PMI keyvariable. Required if TuneDisplay section exists.
- Defines the end of the horizontal active display in terms of the
pixel count. Internally, it represents the offset in terms of the dot
count along the horizontal sweep for the current mode.
- If the TuneDisplay section is provided, the user has the option of
fine-tuning this value. Consequently, the mode will set the hardware
according to the dynamic value of this PMI keyvariable (see
[TuneDisplay] and [SetMode] in this chapter).
o ScreenBottomEdge = <constant>
- Dynamic PMI keyvariable. Required if TuneDisplay section exists.
- Defines the end of the active vertical display in terms of the line
count along the vertical sweep in the current mode.
- If the TuneDisplay section is provided, the user has the option of
fine-tuning this value. Consequently, the mode will set the hardware
according to the dynamic value of this PMI keyvariable (see
[TuneDisplay] and [SetMode] in this chapter).
o ScreenTopEdge = <constant>
- Dynamic PMI keyvariable. Required if TuneDisplay section exists.
- Defines the start of the vertical sync in the current mode.
- If the TuneDisplay section is provided, the user has the option of
fine-tuning this value. Consequently, the mode will set the hardware
according to the dynamic value of this PMI keyvariable (see
[TuneDisplay] and [SetMode] in this chapter).
Here is a sample .PMI file for a Viper VLB card:
[MonitorModeInfo] //1024 x 768 resolution
VerticalRefresh = 80
HorizontalRefresh = 64
VPolarityPositive = 1
HPolarityPositive = 1
ScreenLeftEdge = 0x00000047
ScreenRightEdge = 0x00000147
ScreenTopEdge = 0x00000023
ScreenBottomEdge = 0x00000323
ΓòÉΓòÉΓòÉ 8.3.3.18. [SetMode] ΓòÉΓòÉΓòÉ
This section lists the required execution steps for a successful mode set.
There could be one SetMode section per MonitorModeInfo, or one per ModeInfo, or
one that services multiple modes. The Interpreter tags all ModeInfo and
MonitorModeInfo sections found between two SetMode sections and, later on,
associates the last SetMode with all of them. Thus, SetMode services for all of
the modes could be provided by a number of different functions (if desired, a
single function that serves as a router can be used). The SetMode section is
also executed when Saving and Restoring the mode (see [SaveRestore] in this
chapter).
Any number of PMI functions can be called from within the mode section. The
SetMode section has to ensure that the adapter is programmed to reflect the
run-time settings of the ModeInfo/MonitorModeInfo structure. These settings are
passed in the VIDEO_ADAPTER.VIDEOMODEINFO structure at the procedural level.
The settings are also available as PMI keyvariables to the PMI language command
sequences. On dynamic Legacy and PnP hardware, or when a coprocessor co-resides
with a VGA chip, the SetMode has to ensure that the setup is configured
appropriately for the mode to be set. This should be facilitated by an embedded
EnableController call, which is sensitive to the current Hardware PMI
keyvariable values.
Vendors who provide the TuneDisplay section for sizing of the active display
and the SetMonitorTimings section for manipulation of the timing PMI
keyvariables should ensure that the SetMode section has the ability to set the
run-time values for the timing PMI keyvariables. The easiest way to ensure this
is by making the SetMode section use the SetMonitorTimings and TuneDisplay
sections. See "Supported Modes" in Overview and [EnableController] in this
chapter for more information.
Here is a sample .PMI file for a Viper VLB card:
[SetMode]
SetP9000AccelMode;
/*
** Set accelerated mode on P9000
*/
[SetP9000AccelMode]
EnableController; //configure controller
r0 = 0x00000000; //set DAC
r1 = 0x00000040; //256 color 6:6:6
if (BitsPerPixel != 16) goto DAC
r1 = 0x00000030; // 64K colors
DAC:
ProgramDAC;
InitializeP9000; //initialize P9000 registers
//set sysconfig and clipping
if (Xresolution != 640) goto not640
r1 = 0x028001e0; //640x480x8
r0 = 0x00563000;
if (BitsPerPixel == 8) goto domodeset
r0 = 0x00683000; //640x480x16 bits
goto domodeset
not640:
if (Yresolution != 800) goto not800 //800x600x8
r0 = 0x00587000;
r1 = 0x03200258;
goto domodeset
not800: //must be 1024x760x8
r0 = 0x00603000;
r1 = 0x04000300;
domodeset:
writedw(sysconfig,r0);
writedw(w_min,0x00000000);
writedw(w_max,r1); //program clipping
SetMonitorTimings; //program clock and timings. Calls TuneDisplay.
writedw(srtctl,0x000001e5); //enable
ΓòÉΓòÉΓòÉ 8.4. Hardware Access Under OS/2 Warp, PowerPC Edition ΓòÉΓòÉΓòÉ
To improve the portability of the operating system, the microkernel provides
Programmed I/O (PIO) abstraction for hardware access. All the video resources,
which include video memory, I/O ports, and memory mapped I/O registers, have to
be mapped to the address space of the current process before access can be
performed.
Unlike OS/2, the same physical address may be mapped to different addresses for
different processes. Therefore, the virtual addresses should be allocated per
process instance data, because they will not be the same for different
processes. Memory read/write on virtual addresses is used to access both I/O
ports and physical memory. For each process, the first PMI function call should
be PMIREQUEST_WPOSVIDEOACCESS, in order to map the video resources to the
address space of the calling process. Virtual addresses can be queried through
PMIREQUEST_GETPIOINFO.
Currently, the microkernel console driver is handling the granting of access
and mapping of video hardware resources. The video resources are defined in a
text file called rdf.stz in the \mk directory. Following is a sample definition
for Weitek P9100. In the future, VIDEOPMI will take over the granting of video
hardware access. The video resource will be defined in the TrapReg section of
the .PMI file.
9100100E:
dev_class = WEITEK_9100
adap_name = "Weitek Power 9100 Glacier Video Adapter"
setting = "mem:video_mem1:c1800000-c1bfffff"
setting = "mem:mmio_mem:c1000000-c1067fff"
setting = "io:io_3c0:3c0-3ca"
setting = "io:io_3cc:3cc"
setting = "io:io_3b4:3b4-3b5"
setting = "io:io_3ba:3ba"
setting = "io:io_3d4:3d4-3d5"
setting = "io:io_3da:3da"
setting = "io:io_3ce:3ce-3cf"
setting = "mem:vga_mem:a0000-bffff"
ΓòÉΓòÉΓòÉ 8.4.1. .PMI file Loading ΓòÉΓòÉΓòÉ
Three graphics adapters, S3 928, S3 864, and Weitek P9100, are currently
supported on the desktop PowerPC. These adapters all have different .PMI files
under different names. When VIDEOPMI is first loaded, it calls the microkernel
console driver to query the dev_class string for the adapter in rdf.stz as
described in the previous section on hardware access. Based on the string, the
corresponding .PMI file is loaded. The clients of VIDEOPMI do not have to load
the .PMI files explicitly. The .PMI file names for these three adapters are
defined in VIDEOPMI. For other adapters, the .PMI file name will be the string
of dev_class with .PMI extension. For example, if the dev_class of a Cirrus
Logic adapter is GD5434, the .PMI file name will be GD5434.PMI.
ΓòÉΓòÉΓòÉ 8.4.2. New Graphics Adapter Support ΓòÉΓòÉΓòÉ
To support a new graphics adapter based on the current architecture, the
following changes have to be made to enable PMI services:
1. Add the console display entry in conscfg.stz in the \mk directory.
An example conscfg.stz is shown here. A new entry has to be added in
OPTIONAL_CONS_DISPLAYS; its definition follows.
CONSOLE0:
CONS_DEVICES = XGA, PS2_PDP, PS2_KBD
OPTIONAL_CONS_DISPLAYS = S3, WEITEK_9100, ATI, IBM_8514, SVGA, VGA
VGA:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = display
PS2_PDP:
CONS_RESOURCE_TYPE = POINTER
CONS_IO_MODE = STREAM
CONS_PRIMARY = TRUE
PS2_KBD:
CONS_RESOURCE_TYPE = CHARACTER
CONS_IO_MODE = STREAM
CONS_PRIMARY = TRUE
XGA:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = TRUE
ATI:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = FALSE
IBM_8514:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = FALSE
S3:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = TRUE
WEITEK_9100:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = TRUE
SVGA:
CONS_RESOURCE_TYPE = DISPLAY
CONS_IO_MODE = MAPPED
CONS_PRIMARY = TRUE
2. Add hardware resource definitions in rdf.stz.
3. Add the new .PMI file in the \os2 directory.
ΓòÉΓòÉΓòÉ 9. Video Installation and Configuration ΓòÉΓòÉΓòÉ
The video configuration subsystem consists of the operating-system-service
neutral Video Configuration Manager (VCMAN), an OS/2 operating-system-service
module VIDEOCFG.DLL, and a persistent namespace in the Registry.
ΓòÉΓòÉΓòÉ 9.1. Overview ΓòÉΓòÉΓòÉ
The purpose of VCMAN and its associated components is as follows:
o Provide customized video installation and configuration for all
installable video devices at the time of feature installation.
o Handle hardware configuration failures, such as booting into an altered
hardware configuration, by providing default installation and
configuration.
o Handle hot plugging, once it becomes available, by doing customized
install the first time the device is encountered and autoinstall and
configuration each time thereafter.
o Provide mode preview, which allows users to preview how the desktop will
look once their selection become active.
o Provide advanced desktop features, such as desktop orientation, panning,
and palette management.
VCMAN detects video devices at system boot time and handles video hardware
configuration failures. VCMAN owns and manages the video configuration
namespace in the Registry. The namespace contains the current video
configuration and any previous video configurations that have not been
uninstalled. Other video subsystems can access this video namespace directly to
update and retrieve system video configuration.
VIDEOCFG.DLL provides the video configuration GUI interfaces used by the System
Settings notebook and the Video Feature Install objects in OS/2 Warp, Version
3, PowerPC Edition. (A Video Feature Install Object is an object specific to
video that represents a product that can be installed to a user's system.)
VIDEOCFG.DLL provides a set of services to query and modify the current video
configuration and exports two PM dialog windows:
o The first handles monitor resolutions, monitor vertical refresh rates, and
mode preview.
o The second handles monitor selection and screen sizing.
VIDEOCFG.DLL directly accesses the video namespace in the Registry and changes
the system video configuration based on user selections. Other operating system
services besides OS/2 can create their own video configuration user interfaces
and record video configuration changes in the video namespace.
The video installation is implemented using the Feature Install Device Driver
Install Objects. (A Feature Install Device Driver Install Object is an object
that represents a product that can be installed to a user's system.) The
Feature Install Framework provides the means for file transfers and updates to
system files (config.sys, os2.ini, win.ini ...). (The Feature Install Framework
consists of methods and associated interfaces used in the installation of a
software component.) At the end of the feature install process, the Feature
Install Framework calls VIDEOCFG.DLL for GUI video configurations and to
populate the video namespace with installation information.
Because video installation depends on the OS/2 Feature Install Framework, OS/2
Warp, PowerPC Edition is required to be the dominant operating system service.
OS/2 Warp, PowerPC Edition cannot install video support for the MVM server or
any other operating system services alone, since there are no install-engine
services to do the file transfers and system file updates. The following figure
diagrams the video installation and configuration subsystems.
ΓòÉΓòÉΓòÉ 9.2. Video Configuration Manager (VCMAN) ΓòÉΓòÉΓòÉ
VCMAN is an operating-system-service task that handles video hardware detection
at system boot time and changes to the video hardware configuration. VCMAN has
to do the bus walking to find a video hardware device, instead of the OS/2
Warp, PowerPC Edition Configuration Manager because, in OS/2 Warp, Version 3,
PowerPC Edition Release 1, the Configuration Manager can only detect a number
of predefined video hardware devices that are specified in the stanza file.
(rdf.stz is a resource definition file -- a stanza file -- that specifies
various hardware devices in terms of I/O ports and memory.) The system will not
boot if any other video device is installed.
With the assist of VIDEOPMI, VCMAN can detect any video device, if a .PMI file
for that device is provided. VCMAN and VIDEOPMI are invoked at boot time by
entries in the boot.cfg file. VCMAN does bus walking by loading each of the
.PMI files through the VIDEOPMI interface. According to the bus ID, a .PMI file
that matches the ID is loaded. If no .PMI file matches this ID, VCMAN attempts
to load all of the .PMI files. According to the PMI specification, loading
implicitly invokes the embedded device identification routine and, if the
device identification fails, loading also fails.
Once a .PMI file is successfully loaded, the device description in the .PMI
file is added to the namespace and the VIDEOPMI SetMode and bit-map services
are available. The resource definition of the video device is already in the
HRM as a result of the .PMI file loading (VIDEOPMI's responsibility). The
installed video device's installation and configuration information is logged
in the Registry. This video namespace also stores information for previously
installed video devices, if they have not been uninstalled through inventory
objects of Feature Install Framework.
In the booting process, if VCMAN detects a different video device than the
current video configuration specified in the Registry, VCMAN will search the
Registry for any previously installed video configuration that corresponds to
the video hardware detected. If this configuration exists in the Registry,
VCMAN will update the Registry to make that configuration the one. In this
case, the current video configuration becomes the previously installed
configuration. If the configuration does not exist, VCMAN will update the
current video configuration in the Registry to some default configuration that
supports any type of video device. The default configuration is the same
configuration that the installation process uses when booting off the CDROM.
When installing OS/2 Warp, PowerPC Edition from CDROM, VCMAN and VIDEOPMI are
loaded before the media preparation phase. VIDEOPMI provides the SetMode and
bit-map services needed for the media preparation, because the console is
removed from the OS/2 Warp, PowerPC Edition microkernel.
ΓòÉΓòÉΓòÉ 9.3. OS/2 Video Configuration Model (VIDEOCFG.DLL) ΓòÉΓòÉΓòÉ
VIDEOCFG.DLL exports the video configuration GUI interface, which offers two
(or more) dialog windows. The DLL also provides a set of API services to query
and modify video configurations in the Registry for use by other OS/2 Warp,
PowerPC Edition modules. The first dialog window shows current monitor
resolution and vertical refresh rates, and allows users to change them. There
is also a mode preview function, which allows a user to preview the selected
new mode.
The second window shows the installed monitor, available adapter definitions,
and available monitor definitions, if adapter definitions can take advantage of
the monitor information. It also provides the screen sizing function.
The current video settings are stored in the persistent namespace of the
Registry. VIDEOCFG.DLL will record any user's video configuration changes by
updating this namespace directly. VIDEOCFG.DLL is the focal point for adapter
and monitor information. It provides an interface to the install for the
end-user to associate a video adapter with a display and thus handle multiple
display configurations in a more general way. The VIDEOCFG.DLL stores all of
the video-related information in the persistent namespace of the Registry.
It also manages various monitor files. XGA uses a Display Mode Query Set (DMQS)
file; some industry monitors have a standard VESA Video Display Information
File (VDIF). New monitors are expected to support the VESA DDC (display data
channel). Yet, there are many existing monitors that do not support any of
these formats. VIDEOCFG.DLL supports all of these formats, arbitrates between
them, and passes the monitor information to the display configuration utility.
In order to cover monitors that do not support DDC or VDIF, a third flat-format
description is defined by the OS/2 Warp, PowerPC Edition '.DIF', and a database
of the most popular monitors is shipped with the release. VCMAN resorts to the
entries from the '.DIF' if neither DDC nor VDIF is available.
At the present time, the only clients that use the services of VIDEOCFG.DLL for
video configuration are the Video Feature Install Objects and the OS/2 Warp,
PowerPC Edition System Settings notebook. The Video Feature Install Objects
import these VIDEOCFG.DLL dialog windows for video configuration in order to
complete a customized video installation and configuration. The OS/2 Warp,
PowerPC Edition System Settings notebook uses the dialog windows for altering
the current video configuration. The following API services are exported by
VIDEOCFG.DLL:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéInstallation Functions ΓöéConfiguration Functions Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéAddMonitorData ΓöéGetAllMonitorsDefinition Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéQueryNumMonitors ΓöéGetCurrentCFG Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéGetCurrentDesktopMode Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéGetMonitorDefinition Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéQueryDisplayTypePageData Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéQueryScreenPageData Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéSetCurrentCFG Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ 9.4. The Video Namespace in the Registry ΓòÉΓòÉΓòÉ
The video installation and configuration information is stored in the
persistent namespace of the Registry; the information remains consistent
between system boots. The information is recorded in the Registry at the time
of video installation (default installation and configuration when installing
from CDROM or customized installation and configuration at Feature Install
time) and video configuration (through System Settings object). Any subsequent
video installation does not delete the current video configuration. Instead,
the current configuration is marked as the previous configuration. This enables
VCMAN to restore that configuration if a previously installed video hardware
device is later reinstalled. The video configuration is deleted if the user
uninstalls it using the Feature Install Inventory object. Any other video
subsystems in OS/2 Warp, PowerPC Edition can register with the Registry to be
notified of any video configuration change in order to take appropriate
actions. The following figure illustrates the video configuration registry
layout.
The CurrentVideoConfiguration node and the Configuration I, Configuration II,
and so on, nodes all have the same node attributes, as listed below:
GraddName
The character string specifies the GRADD for the installed video
device.
PMIFileName
The character string specifies the .PMI file name for the installed
video device.
DesktopConfiguration
XResolution, YResolution, Pixel Depth, and Desktop Orientation of the
current desktop configuration.
AdapterOEMString
The character string specifies the OEM name of the installed adapter.
The CurrentVideoConfiguration node has one more attribute than previous video
configurations:
MonitorDefinition
The MONITORINFO structure that specifies the current installed
monitor's definition.
ΓòÉΓòÉΓòÉ 9.5. Video Feature Install Objects ΓòÉΓòÉΓòÉ
Video drivers are installed using the Feature Install Objects. These objects
are created by drag-and-drop operations using the Feature Install Framework
Toolkit. File transfer and system file updates can be configured through the
Settings notebook pages of these objects (for a complete development process of
a Feature Install object, refer to the Device Driver Installation design
documentation).
At the end of the feature install process, the Feature Install Object calls
VIDEOCFG.DLL to display the video configuration dialog windows and to record
driver installation information in the Registry. For video devices supported by
OS/2 Warp, PowerPC Edition Release 1 and shipped in the CDROM, there is one
video Feature Install Object for each video driver. These objects reside in the
video installation folder on the OS/2 desktop of OS/2 Warp, PowerPC Edition.
Each new vendor video driver, will have to create its own video Feature Install
Object and package it with the diskettes containing the actual binary video
driver. These new objects will not be copied to the video installation folder.
ΓòÉΓòÉΓòÉ 9.6. Function Descriptions ΓòÉΓòÉΓòÉ
This section contains detailed descriptions of each of the video installation
and configuration functions, including parameters and syntax.
ΓòÉΓòÉΓòÉ 9.7. AddMonitorData ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: AddMonitorData adds a */
/* monitor definition to the VIDEOCFG.DLL */
/* monitor definitions database. The */
/* monitor definition is also written to */
/* the MONITOR.DIF file. */
/*******************************************/
#include <ddi.h>
MONITORINFO *pNewMonitorInfo; /* Pointer to the MONITORINFO data structure. */
ULONG rc; /* Return codes. */
rc = AddMonitorData(*pNewMonitorInfo);
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData Parameter - *pNewMonitorInfo ΓòÉΓòÉΓòÉ
*pNewMonitorInfo (MONITORINFO) - input
Pointer to the MONITORINFO data structure.
This parameter points to the MONITORINFO data structure that specifies the
new monitor definition to add to the database.
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Parameters ΓòÉΓòÉΓòÉ
*pNewMonitorInfo (MONITORINFO) - input
Pointer to the MONITORINFO data structure.
This parameter points to the MONITORINFO data structure that specifies the
new monitor definition to add to the database.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> AddMonitorData - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.8. GetAllMonitors ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GetAllMonitors retrieves */
/* all monitor definitions. These monitor */
/* definitions are defined in the */
/* MONITOR.DIF file. */
/*******************************************/
#include <ddi.h>
MONITORINFO *pMonitors; /* Pointer to the array of MONITORINFO data structures. */
PULONG pulBufferSize; /* Specifies the size of the pMonitors buffer, in bytes. */
ULONG rc; /* Return codes. */
rc = GetAllMonitors(*pMonitors, pulBufferSize);
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Parameter - *pMonitors ΓòÉΓòÉΓòÉ
*pMonitors (MONITORINFO) - output
Pointer to the array of MONITORINFO data structures.
This parameter points to the array of MONITORINFO data structures that
receive all the monitor definitions in the MONITOR.DIF file.
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Parameter - pulBufferSize ΓòÉΓòÉΓòÉ
pulBufferSize (PULONG) - output
Specifies the size of the pMonitors buffer, in bytes.
If the buffer size is too small to contain all monitor definitions, the
ERROR_NOT_ENOUGH_MEMORY error is returned. The variable is then given the
size of the buffer required in order to contain all monitor definitions.
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ERROR_NOT_ENOUGH_MEMORY
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Parameters ΓòÉΓòÉΓòÉ
*pMonitors (MONITORINFO) - output
Pointer to the array of MONITORINFO data structures.
This parameter points to the array of MONITORINFO data structures that
receive all the monitor definitions in the MONITOR.DIF file.
pulBufferSize (PULONG) - output
Specifies the size of the pMonitors buffer, in bytes.
If the buffer size is too small to contain all monitor definitions, the
ERROR_NOT_ENOUGH_MEMORY error is returned. The variable is then given the
size of the buffer required in order to contain all monitor definitions.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ERROR_NOT_ENOUGH_MEMORY
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GetAllMonitors - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.9. GetCurrentCFG ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GetCurrentCFG gets the */
/* current video configuration stored in */
/* the Registry. */
/*******************************************/
#include <ddi.h>
ADAPTERINFO *pAdapter; /* Pointer to the ADAPTERINFO data structure. */
MONITORINFO *pMonitor; /* Pointer to the MONITORINFO data structure. */
ULONG rc; /* Return codes. */
rc = GetCurrentCFG(*pAdapter, *pMonitor);
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Parameter - *pAdapter ΓòÉΓòÉΓòÉ
*pAdapter (ADAPTERINFO) - output
Pointer to the ADAPTERINFO data structure.
This parameter points to the data structure receiving the current video
adapter information.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Parameter - *pMonitor ΓòÉΓòÉΓòÉ
*pMonitor (MONITORINFO) - output
Pointer to the MONITORINFO data structure.
This parameter points to the data structure receiving the current video
monitor information.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_INVALID_CONFIGURATION
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Parameters ΓòÉΓòÉΓòÉ
*pAdapter (ADAPTERINFO) - output
Pointer to the ADAPTERINFO data structure.
This parameter points to the data structure receiving the current video
adapter information.
*pMonitor (MONITORINFO) - output
Pointer to the MONITORINFO data structure.
This parameter points to the data structure receiving the current video
monitor information.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_INVALID_CONFIGURATION
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentCFG - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.10. GetCurrentDesktopMode ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GetCurrentDesktopMode */
/* retrieves the current desktop mode */
/* information stored in the Registry. The */
/* desktop mode information includes X and */
/* Y resolutions, bits per pixel, */
/* vertical and horizontal refresh rates, */
/* vertical and horizontal polarity */
/* positives, and screen top, bottom, */
/* left, and right. */
/*******************************************/
#include <ddi.h>
VIDEO_ADAPTER *pVideoAdapter; /* Pointer to the VIDEO_ADAPTER data structure. */
ULONG rc; /* Return codes. */
rc = GetCurrentDesktopMode(*pVideoAdapter);
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode Parameter - *pVideoAdapter ΓòÉΓòÉΓòÉ
*pVideoAdapter (VIDEO_ADAPTER) - output
Pointer to the VIDEO_ADAPTER data structure.
This parameter points to the data structure receiving the desktop mode
information.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
TRUE Function is successful
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Parameters ΓòÉΓòÉΓòÉ
*pVideoAdapter (VIDEO_ADAPTER) - output
Pointer to the VIDEO_ADAPTER data structure.
This parameter points to the data structure receiving the desktop mode
information.
rc (ULONG) - returns
Return codes.
TRUE Function is successful
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GetCurrentDesktopMode - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.11. GetMonitorDefinition ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: GetMonitorDefinition */
/* retrieves a specific monitor definition */
/* from the MONITOR.DIF file. */
/*******************************************/
#include <ddi.h>
PSZ pszMonitorName; /* Pointer to the character string that specifies the monitor name. */
MONITORINFO *pMonitor; /* Pointer to the MONITORINFO data structure that receives the monitor definition. */
ULONG rc; /* Return codes. */
rc = GetMonitorDefinition(pszMonitorName,
*pMonitor);
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Parameter - pszMonitorName ΓòÉΓòÉΓòÉ
pszMonitorName (PSZ) - input
Pointer to the character string that specifies the monitor name.
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Parameter - *pMonitor ΓòÉΓòÉΓòÉ
*pMonitor (MONITORINFO) - input
Pointer to the MONITORINFO data structure that receives the monitor
definition.
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ERROR_MONITOR_NOT_FOUND
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Parameters ΓòÉΓòÉΓòÉ
pszMonitorName (PSZ) - input
Pointer to the character string that specifies the monitor name.
*pMonitor (MONITORINFO) - input
Pointer to the MONITORINFO data structure that receives the monitor
definition.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_NO_MONITOR_SUPPORT
ERROR_MONITOR_NOT_FOUND
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> GetMonitorDefinition - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.12. QueryDisplayTypePageData ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: QueryDisplayTypePageData */
/* retrieves the dialog resource */
/* information about the display-type page */
/* (page 1), so that loading of the dialog */
/* by a PM application is possible. */
/*******************************************/
#include <ddi.h>
PHMODULE phmodResourceMRI; /* Pointer to the module handle that receives the handle to the MRI resource module. */
PUSHORT pusDialogId; /* Pointer to the variable that receives the Display-Type Page Dialog ID. */
PSZ pszDialogTitle; /* Pointer to the character string that receives the Display-Type Page Dialog title. */
ULONG ulDialogTitleLen; /* Specifies the size of the pszDialogTitle string, in bytes. */
PUSHORT pusHelpId; /* Pointer to the variable that receives the Display-Type Page Dialog Help ID. */
PSZ pszDialogProcName; /* Pointer to the character string that receives the Display-Type Page Dialog procedure name. */
ULONG rc; /* Return codes. */
rc = QueryDisplayTypePageData(phmodResourceMRI,
pusDialogId, pszDialogTitle, ulDialogTitleLen,
pusHelpId, pszDialogProcName);
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - phmodResourceMRI ΓòÉΓòÉΓòÉ
phmodResourceMRI (PHMODULE) - output
Pointer to the module handle that receives the handle to the MRI resource
module.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pusDialogId ΓòÉΓòÉΓòÉ
pusDialogId (PUSHORT) - output
Pointer to the variable that receives the Display-Type Page Dialog ID.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pszDialogTitle ΓòÉΓòÉΓòÉ
pszDialogTitle (PSZ) - output
Pointer to the character string that receives the Display-Type Page Dialog
title.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - ulDialogTitleLen ΓòÉΓòÉΓòÉ
ulDialogTitleLen (ULONG) - output
Specifies the size of the pszDialogTitle string, in bytes.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pusHelpId ΓòÉΓòÉΓòÉ
pusHelpId (PUSHORT) - output
Pointer to the variable that receives the Display-Type Page Dialog Help ID.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Parameter - pszDialogProcName ΓòÉΓòÉΓòÉ
pszDialogProcName (PSZ) - output
Pointer to the character string that receives the Display-Type Page Dialog
procedure name.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
TRUE Function is successful.
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Parameters ΓòÉΓòÉΓòÉ
phmodResourceMRI (PHMODULE) - output
Pointer to the module handle that receives the handle to the MRI resource
module.
pusDialogId (PUSHORT) - output
Pointer to the variable that receives the Display-Type Page Dialog ID.
pszDialogTitle (PSZ) - output
Pointer to the character string that receives the Display-Type Page Dialog
title.
ulDialogTitleLen (ULONG) - output
Specifies the size of the pszDialogTitle string, in bytes.
pusHelpId (PUSHORT) - output
Pointer to the variable that receives the Display-Type Page Dialog Help ID.
pszDialogProcName (PSZ) - output
Pointer to the character string that receives the Display-Type Page Dialog
procedure name.
rc (ULONG) - returns
Return codes.
TRUE Function is successful.
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> QueryDisplayTypePageData - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.13. QueryNumMonitors ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: QueryNumMonitors queries */
/* the number of monitor defintions */
/* available. */
/*******************************************/
#include <ddi.h>
PULONG pulNumMonitors; /* Pointer to variable receiving the number of monitor definitions. */
ULONG rc; /* Return codes. */
rc = QueryNumMonitors(pulNumMonitors);
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors Parameter - pulNumMonitors ΓòÉΓòÉΓòÉ
pulNumMonitors (PULONG) - output
Pointer to variable receiving the number of monitor definitions.
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns the following error:
ERROR_NO_MONITOR_SUPPORT
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Parameters ΓòÉΓòÉΓòÉ
pulNumMonitors (PULONG) - output
Pointer to variable receiving the number of monitor definitions.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns the following error:
ERROR_NO_MONITOR_SUPPORT
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> QueryNumMonitors - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.14. QueryScreenPageData ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: QueryScreenPageData */
/* retrieves the dialog resource */
/* information about the screen page so */
/* that loading of the dialog by a PM */
/* application is possible. */
/*******************************************/
#include <ddi.h>
PHMODULE phmodResourceMRI; /* Pointer to the module handle that receives the handle to the MRI resource module. */
PUSHORT pusDialogId; /* Pointer to the variable that receives the Screen Page Dialog ID. */
PSZ pszDialogTitle; /* Pointer to the character string that receives the Screen Page Dialog title. */
ULONG ulDialogTitleLen; /* Specifies the size of the pszDialogTitle string, in bytes. */
PUSHORT pusHelpId; /* Pointer to the variable that receives the Screen Page Dialog Help ID. */
PSZ pszDialogProcName; /* Pointer to the character string that receives the Screen Page Dialog procedure name. */
BOOL *pbPaletteManagedDisplay; /* Pointer to the variable that specifies the desktop palette-managed display flag. */
ULONG rc; /* Return codes. */
rc = QueryScreenPageData(phmodResourceMRI,
pusDialogId, pszDialogTitle, ulDialogTitleLen,
pusHelpId, pszDialogProcName, *pbPaletteManagedDisplay);
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - phmodResourceMRI ΓòÉΓòÉΓòÉ
phmodResourceMRI (PHMODULE) - output
Pointer to the module handle that receives the handle to the MRI resource
module.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pusDialogId ΓòÉΓòÉΓòÉ
pusDialogId (PUSHORT) - output
Pointer to the variable that receives the Screen Page Dialog ID.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pszDialogTitle ΓòÉΓòÉΓòÉ
pszDialogTitle (PSZ) - output
Pointer to the character string that receives the Screen Page Dialog title.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - ulDialogTitleLen ΓòÉΓòÉΓòÉ
ulDialogTitleLen (ULONG) - output
Specifies the size of the pszDialogTitle string, in bytes.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pusHelpId ΓòÉΓòÉΓòÉ
pusHelpId (PUSHORT) - output
Pointer to the variable that receives the Screen Page Dialog Help ID.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - pszDialogProcName ΓòÉΓòÉΓòÉ
pszDialogProcName (PSZ) - output
Pointer to the character string that receives the Screen Page Dialog
procedure name.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Parameter - *pbPaletteManagedDisplay ΓòÉΓòÉΓòÉ
*pbPaletteManagedDisplay (BOOL) - input
Pointer to the variable that specifies the desktop palette-managed display
flag.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
TRUE Function is successful.
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Parameters ΓòÉΓòÉΓòÉ
phmodResourceMRI (PHMODULE) - output
Pointer to the module handle that receives the handle to the MRI resource
module.
pusDialogId (PUSHORT) - output
Pointer to the variable that receives the Screen Page Dialog ID.
pszDialogTitle (PSZ) - output
Pointer to the character string that receives the Screen Page Dialog title.
ulDialogTitleLen (ULONG) - output
Specifies the size of the pszDialogTitle string, in bytes.
pusHelpId (PUSHORT) - output
Pointer to the variable that receives the Screen Page Dialog Help ID.
pszDialogProcName (PSZ) - output
Pointer to the character string that receives the Screen Page Dialog
procedure name.
*pbPaletteManagedDisplay (BOOL) - input
Pointer to the variable that specifies the desktop palette-managed display
flag.
rc (ULONG) - returns
Return codes.
TRUE Function is successful.
FALSE Function is unsuccessful.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> QueryScreenPageData - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 9.15. SetCurrentCFG ΓòÉΓòÉΓòÉ
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Syntax ΓòÉΓòÉΓòÉ
/*******************************************/
/* Description: SetCurrentCFG sets the */
/* current video configuration in the */
/* Registry. */
/*******************************************/
#include <ddi.h>
ADAPTERINFO *pAdapter; /* Pointer to the ADAPTERINFO data structure. */
MONITORINFO *pMonitor; /* Pointer to the MONITORINFO data structure. */
ULONG rc; /* Return codes. */
rc = SetCurrentCFG(*pAdapter, *pMonitor);
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Parameter - *pAdapter ΓòÉΓòÉΓòÉ
*pAdapter (ADAPTERINFO) - input
Pointer to the ADAPTERINFO data structure.
This parameter points to the data structure that specifies the current
adapter configuration to be set in the Registry.
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Parameter - *pMonitor ΓòÉΓòÉΓòÉ
*pMonitor (MONITORINFO) - input
Pointer to the MONITORINFO data structure.
This parameter points to the data structure that specifies the current
monitor configuration to be set in the Registry.
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG Return Value - rc ΓòÉΓòÉΓòÉ
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_INVALID_CONFIGURATION
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Parameters ΓòÉΓòÉΓòÉ
*pAdapter (ADAPTERINFO) - input
Pointer to the ADAPTERINFO data structure.
This parameter points to the data structure that specifies the current
adapter configuration to be set in the Registry.
*pMonitor (MONITORINFO) - input
Pointer to the MONITORINFO data structure.
This parameter points to the data structure that specifies the current
monitor configuration to be set in the Registry.
rc (ULONG) - returns
Return codes.
0 Function is successful
Nonzero Returns one of the following errors:
ERROR_INVALID_PARAMETER
ERROR_INVALID_CONFIGURATION
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Remarks ΓòÉΓòÉΓòÉ
None.
ΓòÉΓòÉΓòÉ <hidden> SetCurrentCFG - Topics ΓòÉΓòÉΓòÉ
Select an item:
Syntax
Parameters
Returns
Remarks
Glossary
ΓòÉΓòÉΓòÉ 10. Syntax Conventions ΓòÉΓòÉΓòÉ
The programming statements in this book use the C language syntax. Support for
code written in C is provided in header files identified by the filename
extension ".h". Assembler support is provided in the include files identified
by the filename extension ".INC".
ΓòÉΓòÉΓòÉ 10.1. Parameter Names ΓòÉΓòÉΓòÉ
Parameter names are constructed to show the data type of the parameter and to
indicate its use:
o A lowercase prefix of one or more characters that indicates the data type.
o An optional qualifier starting with an uppercase letter.
Where possible, standard names have been used to describe parameters.
Where multiple-word qualifiers are used, the order of the words is not
significant.
For example:
hdc /* device context handle */
pszFilename /* pointer to a character string */
The following standard base tags and their associated type names are defined:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéTag ΓöéData Type ΓöéDescription Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéf ΓöéBOOL ΓöéFlag or Boolean variable. The qualifier Γöé
Γöé Γöé Γöédescribes the condition associated with Γöé
Γöé Γöé Γöéthe flag when it is TRUE. For example, Γöé
Γöé Γöé ΓöéfSuccess is TRUE if successful and FALSEΓöé
Γöé Γöé Γöéif not; whereas fError is TRUE if an Γöé
Γöé Γöé Γöéerror occurred and FALSE if no error Γöé
Γöé Γöé Γöéoccurred. For objects of type BOOL, the Γöé
Γöé Γöé Γöévalue 0 implies FALSE and any nonzero Γöé
Γöé Γöé Γöévalue implies TRUE. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéch ΓöéCHAR ΓöéSigned eight-bit quantity; a character. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöés ΓöéSHORT ΓöéSigned 16-bit quantity; a SHORT. This isΓöé
Γöé Γöé Γöéoften used in place of us when it does Γöé
Γöé Γöé Γöénot matter whether the value is signed Γöé
Γöé Γöé Γöéor unsigned. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöél ΓöéLONG ΓöéSigned 32-bit quantity; a LONG. This is Γöé
Γöé Γöé Γöéoften used in place of ul when it does Γöé
Γöé Γöé Γöénot matter whether the value is signed Γöé
Γöé Γöé Γöéor unsigned. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéuch ΓöéUCHAR ΓöéUnsigned eight-bit quantity; a byte. Γöé
Γöé Γöé ΓöéSame as b. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéus ΓöéUSHORT ΓöéUnsigned 16-bit quantity. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéul ΓöéULONG ΓöéUnsigned 32-bit quantity. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéb ΓöéBYTE ΓöéUnsigned eight-bit quantity; a byte. Γöé
Γöé Γöé ΓöéSame as uch. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöész ΓöéCHAR[ ] ΓöéNULL-terminated string of characters. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéfb ΓöéUCHAR ΓöéByte of flags, that is, an array of Γöé
Γöé Γöé Γöéflags packed in a BYTE. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéfs ΓöéUSHORT ΓöéSHORT of flags, that is, an array of Γöé
Γöé Γöé Γöéflags packed in a USHORT. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéfl ΓöéULONG ΓöéLONG of flags, that is, an array of Γöé
Γöé Γöé Γöéflags packed in a ULONG. The three Γöé
Γöé Γöé Γöépreceding types are used when more than Γöé
Γöé Γöé Γöéone flag is combined into a byte, SHORT Γöé
Γöé Γöé Γöéor LONG. Typically, the values are Γöé
Γöé Γöé Γöécombined with the OR operator and are Γöé
Γöé Γöé Γöéalways unsigned. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöér ΓöéREAL ΓöéReal number, single precision 32-bits. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöérd ΓöéDOUBLE ΓöéReal number, double precision 64-bits. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöépfn Γöé ΓöéPointer to a function. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéx Γöé ΓöéX-coordinate. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéy Γöé ΓöéY-coordinate. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
The following standard prefixes are also defined:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéPrefix ΓöéDescription Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöép Γöé32-bit pointer for an 80386 microprocessor. For Γöé
Γöé Γöéexample, pch is a pointer to a character. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéa ΓöéArray. For example, ach is an array of characters.Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéi ΓöéIndex to an array. For example, an ich is used to Γöé
Γöé Γöéindex an ach. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéc ΓöéCount. For example, cch is a count of characters. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéd ΓöéDelta or difference between instances of a type. Γöé
Γöé ΓöéFor example, dx is the difference between two Γöé
Γöé Γöévalues of x. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéh ΓöéHandle. A value that uniquely identifies an objectΓöé
Γöé Γöébut cannot directly be used to access it. For Γöé
Γöé Γöéexample, hps is a PS handle. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöémp ΓöéMapping array. This prefix is always followed by Γöé
Γöé Γöétwo base types rather than one and represents the Γöé
Γöé Γöémost general case of an array. Mathematically, an Γöé
Γöé Γöéarray is a function mapping the index to the valueΓöé
Γöé Γöéstored in the array. The prefix mp is an Γöé
Γöé Γöéabbreviation of map. In the construct mpab, a is Γöé
Γöé Γöéthe type of the index and b is the type of the Γöé
Γöé Γöévalue stored in the array. In most cases, the onlyΓöé
Γöé Γöétype that is important is the type of the value. Γöé
Γöé ΓöéThe index is usually an integer with no other Γöé
Γöé Γöémeaning (the a prefix is used in this instance). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéoff ΓöéOffset. Generally used as an offset within a data Γöé
Γöé Γöéstructure. The actual address of the element Γöé
Γöé Γöéwithin the data structure is derived by adding an Γöé
Γöé Γöéoffset to a pointer, which points to the beginningΓöé
Γöé Γöéof the data structure. Normally, OFF is a byte Γöé
Γöé Γöéoffset. For example: pfoo = (FOO *)((BYTE Γöé
Γöé Γöé*)pfooBase + 0fff00) Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöéid ΓöéIdentifier. This is generally used for values thatΓöé
Γöé Γöéidentify some object. Usually the association of Γöé
Γöé Γöéthe ID value and the object are established by theΓöé
Γöé Γöéprogrammer. For example, all windows are Γöé
Γöé Γöéidentified by their Window ID, which can be set Γöé
Γöé Γöéand queried by the programmer. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöécmd ΓöéCommand. Used for command values, typically as Γöé
Γöé Γöéfunction parameters. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Some parameters are used in pairs; the qualifiers that are used reflect the
relationship between the two variables. For example:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéParameter ΓöéDescription Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéFirst/LastΓöéFirst and last elements in a set. These are Γöé
Γöé Γöétypically used with indexes or pointers (pchFirst,Γöé
Γöé ΓöépchLast). Both values represent valid values Γöé
Γöé Γöé(compare with Min/Max below). For all valid valuesΓöé
Γöé Γöéof x: xFirst <= x <= xLast. The use of > with Γöé
Γöé ΓöéFirst or < with Last is almost always an Γöé
Γöé Γöé"off-by-one" error. Γöé
Γöé ΓöéFor example, to determine whether an ich is withinΓöé
Γöé ΓöéichFirst and ichLast: if (ich >= iΓöé
Γöé Γöé ... Γöé
Γöé Γöé A typical loop: Γöé
Γöé Γöé for (ich = ichFirst; ich <= ichLasΓöé
Γöé Γöé ... Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéMin/Max ΓöéSimilar to First/Last except that Max is not a Γöé
Γöé Γöévalid value in the set (Min is a valid value). ForΓöé
Γöé Γöéall valid values of x in the set: xMin < = x < Γöé
Γöé ΓöéxMax. The use of > with Min or < = with Max is Γöé
Γöé Γöéalmost always an "off-by-one" error. Γöé
Γöé ΓöéFor example, to determine whether an ich is withinΓöé
Γöé ΓöéichMin and ichMax: if (ich >= ichMΓöé
Γöé Γöé ... Γöé
Γöé Γöé A typical loop: Γöé
Γöé Γöé for (ich = ichMin; ich < /* or != Γöé
Γöé Γöé ... Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöé ΓöéThe current value (Cur) qualifier can be used withΓöé
Γöé ΓöéMin and Max when Min or Max can change over time Γöé
Γöé Γöé(for example, pbStackMaxCur). Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéOld/New ΓöéOld and new. Typically used for values or states Γöé
Γöé Γöéwhen it is necessary to compare the old and new Γöé
Γöé Γöéstates of the value. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéNext/Prev ΓöéNext and previous. Typically used in situations inΓöé
Γöé Γöéwhich items are being enumerated, such as with Γöé
Γöé Γöélinked lists. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSrc/Dst ΓöéSource and destination. Typically used in transferΓöé
Γöé Γöéoperations. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéT ΓöéA temporary value. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéSave ΓöéA temporary, saved value. Typically used when Γöé
Γöé Γöésaving and restoring some state. Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéCur ΓöéCurrent value. Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
The base types and their prefixes are defined as follows:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
ΓöéData Type ΓöéPrefix Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPSZ Γöépsz Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPCH Γöépch Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHAB Γöéhab Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHPS Γöéhps Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHDC Γöéhdc Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHRGN Γöéhrgn Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHBITMAP Γöéhbmp Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPLONG Γöépl Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPOINTL Γöéptl Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéPOINTL Γöépt Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRECTL Γöércl Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéRECTL Γöérc Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéHWND Γöéhwnd Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWPOINT Γöéwpt Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéWRECT Γöéwrc Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
ΓöéFIXED Γöéfx Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
Parameters for defined structures are the defined parameter names. For example:
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
AREADEFS struct
{
defSet
fFlags
CodePage
}AREADEFS
ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇ
System-defined constants and flags are represented as two or more uppercase
WORDs or mnemonic abbreviations separated by underscores. For example,
SYS_CONSTANT and SYS_FLAG.
ΓòÉΓòÉΓòÉ 10.1.1. Return Values ΓòÉΓòÉΓòÉ
Function-handling routines pass full 32-bit return codes back to the calling
function. In MASM, the return code is passed in the EAX Register.
ΓòÉΓòÉΓòÉ 10.1.2. Register Content Preservation ΓòÉΓòÉΓòÉ
Registers EAX, ECX, and EDX can be destroyed. All other registers must be
preserved.
ΓòÉΓòÉΓòÉ 10.1.3. Handles ΓòÉΓòÉΓòÉ
All handles and pointers are 32-bit values.
ΓòÉΓòÉΓòÉ 10.1.4. Coordinates ΓòÉΓòÉΓòÉ
All coordinates are passed as signed 32-bit values unless stated otherwise.
World, model, and presentation-page space coordinates are restricted to the 28
low-order bits and lie within the range F8000000h through 07FFFFFFh. Device
space coordinates are restricted to the 16 low-order bits and lie within the
range FFFF0000h through 0000FFFFh.
ΓòÉΓòÉΓòÉ 11. Data Types ΓòÉΓòÉΓòÉ
A description of each data type follows.
ΓòÉΓòÉΓòÉ 11.1. ADAPTERINFO ΓòÉΓòÉΓòÉ
The ADAPTERINFO data structure receives information for the current video
adapter.
typedef struct _ADAPTERINFO {
ULONG ulAdapterID; /* Specifies the adapter by ID. */
CHAR szOEMString[MAX_OEM_STRING]; /* Contains adapter information. */
CHAR szDACString; /* Contains DAC information. */
CHAR szRevision; /* Contains version information. */
ULONG ulTotalMemory; /* Total video memory. */
ULONG ulMMIOBaseAddress; /* Base address for memory-mapped I/O registers. */
ULONG ulPIOBaseAddress; /* Base address for I/O ports. */
BYTE bBusType; /* Type of bus (PCI, VLB, and so on.) */
BYTE bEndian; /* Big Endian or little Endian. */
USHORT usDeviceBusID; /* Reserved. */
USHORT usVendorBusID; /* Reserved. */
USHORT usSlotID; /* Reserved. */
} ADAPTERINFO;
typedef ADAPTERINFO *FAR *PADAPTERINFO;
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulAdapterID ΓòÉΓòÉΓòÉ
ulAdapterID (ULONG)
Specifies the adapter by ID.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szOEMString[MAX_OEM_STRING] ΓòÉΓòÉΓòÉ
szOEMString[MAX_OEM_STRING] (CHAR)
Contains adapter information.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szDACString ΓòÉΓòÉΓòÉ
szDACString (CHAR)
Contains DAC information.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - szRevision ΓòÉΓòÉΓòÉ
szRevision (CHAR)
Contains version information.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulTotalMemory ΓòÉΓòÉΓòÉ
ulTotalMemory (ULONG)
Total video memory.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulMMIOBaseAddress ΓòÉΓòÉΓòÉ
ulMMIOBaseAddress (ULONG)
Base address for memory-mapped I/O registers.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - ulPIOBaseAddress ΓòÉΓòÉΓòÉ
ulPIOBaseAddress (ULONG)
Base address for I/O ports.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - bBusType ΓòÉΓòÉΓòÉ
bBusType (BYTE)
Type of bus (PCI, VLB, and so on.)
The valid values of this flag are as follows:
ISA_BUS 0
VLB_BUS 1
PCI_BUS 2
EISA_BUS 3
PCMCIA_BUS 4
MCA_BUS 5
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - bEndian ΓòÉΓòÉΓòÉ
bEndian (BYTE)
Big Endian or little Endian.
LITTLE_ENDIAN 0
BIG_ENDIAN 1
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usDeviceBusID ΓòÉΓòÉΓòÉ
usDeviceBusID (USHORT)
Reserved.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usVendorBusID ΓòÉΓòÉΓòÉ
usVendorBusID (USHORT)
Reserved.
ΓòÉΓòÉΓòÉ <hidden> ADAPTERINFO Parameter - usSlotID ΓòÉΓòÉΓòÉ
usSlotID (USHORT)
Reserved.
ΓòÉΓòÉΓòÉ 11.2. BASECAPS ΓòÉΓòÉΓòÉ
Information provided by a GRADD to VMAN in the GHI_CMD_QUERYCAPS function. This
information describes the hardware capabilities of the GRADD.
typedef struct _BASECAPS {
ULONG ulLength; /* Size of the BASECAPS data structure, in bytes. */
ULONG ulHWFlags; /* Base caps flags. */
} BASECAPS;
typedef BASECAPS *PBASECAPS;
ΓòÉΓòÉΓòÉ <hidden> BASECAPS Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the BASECAPS data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> BASECAPS Parameter - ulHWFlags ΓòÉΓòÉΓòÉ
ulHWFlags (ULONG)
Base caps flags.
ΓòÉΓòÉΓòÉ 11.3. BITBLTINFO ΓòÉΓòÉΓòÉ
BitBlt information structure, used for the GHI_CMD_BITBLT and VMI_CMD_BITBLT
functions.
typedef struct _BITBLTINFO {
ULONG ulLength; /* Length of the BITBLTINFO data structure, in bytes. */
ULONG ulBltFlags; /* Flags for rendering of rasterized data. */
ULONG cBlits; /* Count of Blts to be performed. */
ULONG ulROP; /* Raster operation. */
ULONG ulMonoBackROP; /* Background mix if B_APPLY_BACK_ROP is set. */
ULONG ulSrcFGColor; /* Monochrome source Foreground color. */
ULONG ulSrcBGColor; /* Monochrome source Background color and transparent color. */
ULONG ulPatFGColor; /* Monochrome pattern Foreground color. */
ULONG ulPatBGColor; /* Monochrome pattern Background color. */
PBYTE abColors; /* Pointer to color translation table. */
PBMAPINFO pSrcBmapInfo; /* Pointer to source bit map (BMAPINFO) */
PBMAPINFO pDstBmapInfo; /* Pointer to destination bit map (BMAPINFO). */
PBMAPINFO pPatBmapInfo; /* Pointer to pattern bit map (BMAPINFO). */
PPOINTL aptlSrcOrg; /* Pointer to array of source origin POINTLs. */
PPOINTL aptlPatOrg; /* Pointer to array of pattern origin POINTLs. */
PBLTRECT abrDst; /* Pointer to array of Blt rects. */
PRECTL prclSrcBounds; /* Pointer to source bounding rect of source Blts. */
PRECTL prclDstBounds; /* Pointer to destination bounding rect of destination Blts. */
} BITBLTINFO;
typedef BITBLTINFO *PBITBLTINFO;
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of the BITBLTINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulBltFlags ΓòÉΓòÉΓòÉ
ulBltFlags (ULONG)
Flags for rendering of rasterized data.
Miscellaneous flags used by the graphics engine for rendering of rasterized
data:
BF_DEFAULT_STATE Blt direction is left to right and top to
bottom.
BF_DIR_RIGHT_LEFT Blt direction is right to left.
BF_DIR_BOTTOM_TOP Blt direction is bottom to top.
BF_ROP_INCL_SRC ROP includes a source bit map.
BF_ROP_INCL_PAT ROP includes a pattern bit map.
BF_SRC_TRANSPARENT Source transparent involved.
SRC will not change when SRC=BG_COLOR.
BF_DST_TRANSPARENT Destination transparent involved.
DST will not change when DST=BG_COLOR.
BF_PAT_TRANSPARENT Pattern transparent involved.
Pattern not involved when PAT=BG_COLOR.
BF_PAT_SOLID Pattern is solid; all Foreground color.
BF_PAT_HOLLOW Pattern is hollow (empty); no Foreground color.
BF_APPLY_BACK_ROP Treat ROP as Foreground mix and MonoBackROP as
Background mix.
BF_SRC_MONOINVERT Zero (0) bits are Foreground on monochrome SRC
bit map.
BF_PAT_MONOINVERT Zero (0) bits are Foreground on monochrome PAT
bit map.
BF_SR_BITS_EXTERNAL Source bit map bits are in a nondevice-specific
format.
BF_LAST_BLT Defines last blit in a banded BitBlit.
BF_SRC_Y_FLIP Source Y coordinates are inverted relative to
device origin.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - cBlits ΓòÉΓòÉΓòÉ
cBlits (ULONG)
Count of Blts to be performed.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulROP ΓòÉΓòÉΓòÉ
ulROP (ULONG)
Raster operation.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulMonoBackROP ΓòÉΓòÉΓòÉ
ulMonoBackROP (ULONG)
Background mix if B_APPLY_BACK_ROP is set.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulSrcFGColor ΓòÉΓòÉΓòÉ
ulSrcFGColor (ULONG)
Monochrome source Foreground color.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulSrcBGColor ΓòÉΓòÉΓòÉ
ulSrcBGColor (ULONG)
Monochrome source Background color and transparent color.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulPatFGColor ΓòÉΓòÉΓòÉ
ulPatFGColor (ULONG)
Monochrome pattern Foreground color.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - ulPatBGColor ΓòÉΓòÉΓòÉ
ulPatBGColor (ULONG)
Monochrome pattern Background color.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - abColors ΓòÉΓòÉΓòÉ
abColors (PBYTE)
Pointer to color translation table.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pSrcBmapInfo ΓòÉΓòÉΓòÉ
pSrcBmapInfo (PBMAPINFO)
Pointer to source bit map (BMAPINFO)
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pDstBmapInfo ΓòÉΓòÉΓòÉ
pDstBmapInfo (PBMAPINFO)
Pointer to destination bit map (BMAPINFO).
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - pPatBmapInfo ΓòÉΓòÉΓòÉ
pPatBmapInfo (PBMAPINFO)
Pointer to pattern bit map (BMAPINFO).
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - aptlSrcOrg ΓòÉΓòÉΓòÉ
aptlSrcOrg (PPOINTL)
Pointer to array of source origin POINTLs.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - aptlPatOrg ΓòÉΓòÉΓòÉ
aptlPatOrg (PPOINTL)
Pointer to array of pattern origin POINTLs.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - abrDst ΓòÉΓòÉΓòÉ
abrDst (PBLTRECT)
Pointer to array of Blt rects.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - prclSrcBounds ΓòÉΓòÉΓòÉ
prclSrcBounds (PRECTL)
Pointer to source bounding rect of source Blts.
ΓòÉΓòÉΓòÉ <hidden> BITBLTINFO Parameter - prclDstBounds ΓòÉΓòÉΓòÉ
prclDstBounds (PRECTL)
Pointer to destination bounding rect of destination Blts.
ΓòÉΓòÉΓòÉ 11.4. BMAPINFO ΓòÉΓòÉΓòÉ
Device-dependent bit map information structure.
typedef struct _BMAPINFO {
ULONG ulLength; /* Length of the BMAPINFO data structure, in bytes. */
ULONG ulType; /* Description of the Blt. */
ULONG ulWidth; /* Width in pels of the bit map. */
ULONG ulHeight; /* Height in pels of the bit map. */
ULONG ulBpp; /* Number of bits per pel/color depth. */
ULONG ulBytesPerLine; /* Number of aligned bytes per line. */
PBYTE pBits; /* Pointer to bit-map bits. */
} BMAPINFO;
typedef BMAPINFO *PBMAPINFO;
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of the BMAPINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulType ΓòÉΓòÉΓòÉ
ulType (ULONG)
Description of the Blt.
BMAP_VRAM Bit map is in video memory.
BMAP_MEMORY Bit map is in system memory.
BMAP_VERTICAL_SCAN Scan lines are in a vertical format instead of the
default horizontal format.
BMAP_FONT BitBlit is a set of font character glyphs.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulWidth ΓòÉΓòÉΓòÉ
ulWidth (ULONG)
Width in pels of the bit map.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulHeight ΓòÉΓòÉΓòÉ
ulHeight (ULONG)
Height in pels of the bit map.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulBpp ΓòÉΓòÉΓòÉ
ulBpp (ULONG)
Number of bits per pel/color depth.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - ulBytesPerLine ΓòÉΓòÉΓòÉ
ulBytesPerLine (ULONG)
Number of aligned bytes per line.
ΓòÉΓòÉΓòÉ <hidden> BMAPINFO Parameter - pBits ΓòÉΓòÉΓòÉ
pBits (PBYTE)
Pointer to bit-map bits.
ΓòÉΓòÉΓòÉ 11.5. BLTRECT ΓòÉΓòÉΓòÉ
Destination rectangle for a bitblt operation.
typedef struct _BLTRECT {
ULONG ulXOrg; /* X origin of the destination Blt. */
ULONG ulYOrg; /* Y origin of the destination Blt. */
ULONG ulXExt; /* X extent of the BitBlt. */
ULONG ulYExt; /* Y extent of the BitBlt. */
} BLTRECT;
typedef BLTRECT *PBLTRECT;
ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulXOrg ΓòÉΓòÉΓòÉ
ulXOrg (ULONG)
X origin of the destination Blt.
ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulYOrg ΓòÉΓòÉΓòÉ
ulYOrg (ULONG)
Y origin of the destination Blt.
ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulXExt ΓòÉΓòÉΓòÉ
ulXExt (ULONG)
X extent of the BitBlt.
ΓòÉΓòÉΓòÉ <hidden> BLTRECT Parameter - ulYExt ΓòÉΓòÉΓòÉ
ulYExt (ULONG)
Y extent of the BitBlt.
ΓòÉΓòÉΓòÉ 11.6. CAPSINFO ΓòÉΓòÉΓòÉ
GRADD capability information.
typedef struct _CAPSINFO {
ULONG ulLength; /* Size of the CAPSINFO data structure, in bytes. */
PSZ pszFunctionClassID; /* Name describing the function set. */
PVOID pCaps; /* Function-set-specific caps. */
} CAPSINFO;
typedef CAPSINFO *PCAPSINFO;
ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the CAPSINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - pszFunctionClassID ΓòÉΓòÉΓòÉ
pszFunctionClassID (PSZ)
Name describing the function set.
ΓòÉΓòÉΓòÉ <hidden> CAPSINFO Parameter - pCaps ΓòÉΓòÉΓòÉ
pCaps (PVOID)
Function-set-specific caps.
The pCaps field varies according to the class of function that the GRADD is
supporting. For the "base function" class ID, pCaps points to a BASECAPS
data structure.
ΓòÉΓòÉΓòÉ 11.7. CHAININFO ΓòÉΓòÉΓòÉ
Information returned to callers of the VMI_CMD_QUERYCHAININFO function.
typedef struct _CHAININFO {
CID cid; /* GRADD chain ID. */
PSZ pszChainName; /* GRADD chain name. */
PFNHWENTRY pChainHWEntry; /* Entry point for this chain. */
PGRADDINFO pGraddList; /* List of GRADDs in this chain. */
CHAININFO pNextChainInfo; /* Pointer to next GRADD in this chain. */
} CHAININFO;
typedef CHAININFO *PCHAININFO;
ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - cid ΓòÉΓòÉΓòÉ
cid (CID)
GRADD chain ID.
ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pszChainName ΓòÉΓòÉΓòÉ
pszChainName (PSZ)
GRADD chain name.
ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pChainHWEntry ΓòÉΓòÉΓòÉ
pChainHWEntry (PFNHWENTRY)
Entry point for this chain.
ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pGraddList ΓòÉΓòÉΓòÉ
pGraddList (PGRADDINFO)
List of GRADDs in this chain.
ΓòÉΓòÉΓòÉ <hidden> CHAININFO Parameter - pNextChainInfo ΓòÉΓòÉΓòÉ
pNextChainInfo (CHAININFO)
Pointer to next GRADD in this chain.
ΓòÉΓòÉΓòÉ 11.8. CLUTDATA ΓòÉΓòÉΓòÉ
The CLUTDATA data structure receives information for the number of RGB array
entries.
typedef struct _CLUTDATA {
ULONG ulRGBCount; /* Number of aRGB entries that follow. */
ULONG ulRGBStart; /* Start index for RGB triplets. */
SVGARGB aRGB[1]; /* Start of SVGARGB; one entry is allocated. */
} CLUTDATA;
typedef CLUTDATA *FAR *PCLUTDATA;
ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - ulRGBCount ΓòÉΓòÉΓòÉ
ulRGBCount (ULONG)
Number of aRGB entries that follow.
ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - ulRGBStart ΓòÉΓòÉΓòÉ
ulRGBStart (ULONG)
Start index for RGB triplets.
ΓòÉΓòÉΓòÉ <hidden> CLUTDATA Parameter - aRGB[1] ΓòÉΓòÉΓòÉ
aRGB[1] (SVGARGB)
Start of SVGARGB; one entry is allocated.
ΓòÉΓòÉΓòÉ 11.9. CODECINFO ΓòÉΓòÉΓòÉ
Determines whether data is to be compressed or decompressed.
typedef struct _CODECINFO {
ULONG ulLength; /* Size of the CODECINFO data structure, in bytes. */
FOURCC fccCodecType; /* Describes compression type; 'RAW' if uncompressed. */
ULONG ulCodecCaps; /* Flag indicating CODEC capabilities. */
} CODECINFO;
typedef CODECINFO *PCODECINFO;
ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the CODECINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - fccCodecType ΓòÉΓòÉΓòÉ
fccCodecType (FOURCC)
Describes compression type; 'RAW' if uncompressed.
The FOURCC flags have the following values:
CODEC_ULTIMOTION "ULTI"
CODEC_INDEO21 "RT21"
CODEC_INDEO31 "IV31"
CODEC_MPEG1 "MPG1"
CODEC_MPEG2 "MPG2"
CODEC_MJPEG "MJPG"
ΓòÉΓòÉΓòÉ <hidden> CODECINFO Parameter - ulCodecCaps ΓòÉΓòÉΓòÉ
ulCodecCaps (ULONG)
Flag indicating CODEC capabilities.
The following values are valid:
CODEC_ACCEL_STRETCHBLT 0x0002; hardware stretch
CODEC_ACCEL_BLTCOPROC 0x0002; hardware Blt
CODEC_ACCEL_DECOMP 0x0004; has hardware decompression
CODEC_ACCEL_COMP 0x0008; has hardware compression
ΓòÉΓòÉΓòÉ 11.10. COLORINFO ΓòÉΓòÉΓòÉ
Color formats for source and destination data, organized in order of preference
from the driver's perspective. This data structure is required in any driver
supporting EnDIVE.
typedef struct _COLORINFO {
ULONG ulLength; /* Size of the COLORINFO data structure, in bytes. */
FOURCC fccColorEncoding; /* Field containing a name for the color space. */
} COLORINFO;
typedef COLORINFO *PCOLORINFO;
ΓòÉΓòÉΓòÉ <hidden> COLORINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the COLORINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> COLORINFO Parameter - fccColorEncoding ΓòÉΓòÉΓòÉ
fccColorEncoding (FOURCC)
Field containing a name for the color space.
The FOURCC represents a name (for example, RGB8, Y24, and so on). The bits
per pixel and data layout of the color space is implied by the name.
This field can have the following values:
FOURCC(ch0,ch1,ch2,ch3)
((ULONG)(BYTE)(ch0) | ((ULONG)(BYTE)(ch1) <<8) | \
((ULONG)(BYTE)(CH2)<<16) | ((ULONG)(BYTE)(CH3)<<24))
FOURCC_LUT8 FOURCC('L','U','T','8') 8-bit palettized color space
FOURCC_R565 FOURCC('R','5','6','5') RGB 565
FOURCC_R555 FOURCC('R','5','5','5') RGB 555
FOURCC_R666 FOURCC('R','6','6','6') RGB 666
FOURCC_R664 FOURCC('R','6','6','4') RGB 664
FOURCC_RGB3 FOURCC('R','G','B','3') RGB 24 in 3 bytes
FOURCC_BGR3 FOURCC('B','G','R','3') BGR 24 in 3 bytes
FOURCC_RGB4 FOURCC('R','G','B','4') RGB 24 in 4 bytes
FOURCC_BGR4 FOURCC('B','G','R','4') BGR 24 in 4 bytes
FOURCC_Y888 FOURCC('Y','8','8','8') YUV 24
FOURCC_Y411 FOURCC('Y','4','1','1') YUV 411 interleaved 4 x 1 subsampled
FOURCC_Y422 FOURCC('Y','4','2','2') YUV 422 (CCIR601)
FOURCC_YUV9 FOURCC('Y','U','V','9') YUV9
FOURCC_Y2X2 FOURCC('Y','2','X','2') YUV 2 by 2 subsampled multiplane
FOURCC_Y4X4 FOURCC('Y','4','X','4') YUV 4 by 4 subsampled multiplane
ΓòÉΓòÉΓòÉ 11.11. CUSTPALINFO ΓòÉΓòÉΓòÉ
Custom palette information.
typedef struct _CUSTPALINFO {
ULONG ulLength; /* Size of the CUSTPALINFO data structure, in bytes. */
ULONG fFlags; /* Palette flag. */
ULONG ulStartIndex; /* Starting palette index. */
ULONG ulNumEntries; /* Number of palette slots to query or set. */
PRGB2 pRGBs; /* Pointer to the array of RGB values. */
} CUSTPALINFO;
typedef CUSTPALINFO *PCUSTPALINFO;
ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the CUSTPALINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - fFlags ΓòÉΓòÉΓòÉ
fFlags (ULONG)
Palette flag.
Not used at this time.
ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulStartIndex ΓòÉΓòÉΓòÉ
ulStartIndex (ULONG)
Starting palette index.
ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - ulNumEntries ΓòÉΓòÉΓòÉ
ulNumEntries (ULONG)
Number of palette slots to query or set.
ΓòÉΓòÉΓòÉ <hidden> CUSTPALINFO Parameter - pRGBs ΓòÉΓòÉΓòÉ
pRGBs (PRGB2)
Pointer to the array of RGB values.
ΓòÉΓòÉΓòÉ 11.12. FBINFO ΓòÉΓòÉΓòÉ
Information on frame buffer characteristics.
typedef struct _FBINFO {
ULONG ulLength; /* Length of FBINFO data structure, in bytes. */
ULONG ulFlags; /* Specifies the capabilities supported. */
ULONG ulBPP; /* Screen bits per pel. */
ULONG ulXres; /* Number of screen X pels. */
ULONG ulYres; /* Number of screen Y pels. */
ULONG ulScanLineBytes; /* Number of bytes per scanline. */
ULONG fccColorEncoding; /* Screen color encoding. */
ULONG ulENDIVEDrivers; /* Number of EnDIVE drivers installed under GRADD architecture. */
} FBINFO;
typedef FBINFO *PFBINFO;
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of FBINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Specifies the capabilities supported.
This flag has the following value:
FB_SUPPORTSVRAMALLOC 0x0010; supports allocation of on-card memory
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulBPP ΓòÉΓòÉΓòÉ
ulBPP (ULONG)
Screen bits per pel.
This value may be 32 for some 24-bit color adapters.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulXres ΓòÉΓòÉΓòÉ
ulXres (ULONG)
Number of screen X pels.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulYres ΓòÉΓòÉΓòÉ
ulYres (ULONG)
Number of screen Y pels.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
ulScanLineBytes (ULONG)
Number of bytes per scanline.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - fccColorEncoding ΓòÉΓòÉΓòÉ
fccColorEncoding (ULONG)
Screen color encoding.
ΓòÉΓòÉΓòÉ <hidden> FBINFO Parameter - ulENDIVEDrivers ΓòÉΓòÉΓòÉ
ulENDIVEDrivers (ULONG)
Number of EnDIVE drivers installed under GRADD architecture.
ΓòÉΓòÉΓòÉ 11.13. FONTDATA ΓòÉΓòÉΓòÉ
The FONTDATA data structure contains font and character information.
typedef struct _FONTDATA {
ULONG ulCharCount; /* Number of characters in the font. */
ULONG ulFontHeight; /* Number of scan lines per character. */
ULONG ulFontWidth; /* Number of columns per character. */
BYTE bFontData[1]; /* ulCharCount*ulFontHeight entries. */
} FONTDATA;
typedef FONTDATA *FAR *PFONTDATA;
ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulCharCount ΓòÉΓòÉΓòÉ
ulCharCount (ULONG)
Number of characters in the font.
ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulFontHeight ΓòÉΓòÉΓòÉ
ulFontHeight (ULONG)
Number of scan lines per character.
ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - ulFontWidth ΓòÉΓòÉΓòÉ
ulFontWidth (ULONG)
Number of columns per character.
ΓòÉΓòÉΓòÉ <hidden> FONTDATA Parameter - bFontData[1] ΓòÉΓòÉΓòÉ
bFontData[1] (BYTE)
ulCharCount*ulFontHeight entries.
ΓòÉΓòÉΓòÉ 11.14. GDDINITIN ΓòÉΓòÉΓòÉ
Information provided to the GRADD in the GHI_CMD_INIT function.
typedef struct _GDDINITIN {
ULONG ulLength; /* Length of the GDDINITIN data structure, in bytes. */
PFNHWENTRY pfnChainedHWEntry; /* Entry of previous GRADD in chain. */
} GDDINITIN;
typedef GDDINITIN *PGDDINITIN;
ΓòÉΓòÉΓòÉ <hidden> GDDINITIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of the GDDINITIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> GDDINITIN Parameter - pfnChainedHWEntry ΓòÉΓòÉΓòÉ
pfnChainedHWEntry (PFNHWENTRY)
Entry of previous GRADD in chain.
ΓòÉΓòÉΓòÉ 11.15. GDDINITOUT ΓòÉΓòÉΓòÉ
Information returned by the GRADD to the caller of the GHI_CMD_INIT function.
typedef struct _GDDINITOUT {
ULONG ulLength; /* Length of the GDDINITOUT data structure, in bytes. */
ULONG cFunctionClasses; /* Number of function classes supported. */
} GDDINITOUT;
typedef GDDINITOUT *PGDDINITOUT;
ΓòÉΓòÉΓòÉ <hidden> GDDINITOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of the GDDINITOUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> GDDINITOUT Parameter - cFunctionClasses ΓòÉΓòÉΓòÉ
cFunctionClasses (ULONG)
Number of function classes supported.
In most cases, this value will be equal to one (1). A GRADD can, however,
return a zero (0). This is typically done by filter GRADDs that do not want
to be entered in the CHAININFO/GRADDINFO information returned to the
translation layer via the VMI_CMD_QUERYCHAININFO function. A GRADD can
include built-in extensions by returning a value greater than one (1).
ΓòÉΓòÉΓòÉ 11.16. GDDMODEINFO ΓòÉΓòÉΓòÉ
Mode-specific information provided by the GRADD.
typedef struct _GDDMODEINFO {
ULONG ulLength; /* Size of the GDDMODEINFO data structure, in bytes. */
ULONG ulModeId; /* ID used to make SETMODE request. */
ULONG ulBpp; /* Number of colors (bpp). */
ULONG ulHorizResolution; /* Number of horizontal pels. */
ULONG ulVertResolution; /* Number of vertical scan lines. */
ULONG ulRefreshRate; /* Refresh rate in Hz. */
PBYTE pbVRAMPhys; /* Physical address of VRAM. */
ULONG ulApertureSize; /* Size of VRAM, in bytes. */
ULONG ulScanLineSize; /* Size of one scan line, in bytes. */
} GDDMODEINFO;
typedef GDDMODEINFO *PGDDMODEINFO;
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the GDDMODEINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulModeId ΓòÉΓòÉΓòÉ
ulModeId (ULONG)
ID used to make SETMODE request.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulBpp ΓòÉΓòÉΓòÉ
ulBpp (ULONG)
Number of colors (bpp).
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulHorizResolution ΓòÉΓòÉΓòÉ
ulHorizResolution (ULONG)
Number of horizontal pels.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulVertResolution ΓòÉΓòÉΓòÉ
ulVertResolution (ULONG)
Number of vertical scan lines.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulRefreshRate ΓòÉΓòÉΓòÉ
ulRefreshRate (ULONG)
Refresh rate in Hz.
This value is zero (0) if Hz not available.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - pbVRAMPhys ΓòÉΓòÉΓòÉ
pbVRAMPhys (PBYTE)
Physical address of VRAM.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulApertureSize ΓòÉΓòÉΓòÉ
ulApertureSize (ULONG)
Size of VRAM, in bytes.
ΓòÉΓòÉΓòÉ <hidden> GDDMODEINFO Parameter - ulScanLineSize ΓòÉΓòÉΓòÉ
ulScanLineSize (ULONG)
Size of one scan line, in bytes.
ΓòÉΓòÉΓòÉ 11.17. GRADDINFO ΓòÉΓòÉΓòÉ
Information describing an individual GRADD.
typedef struct _GRADDINFO {
GID gid; /* ID of the GRADD. */
PSZ pszGraddName; /* Name of this GRADD. */
PFNHWENTRY pGraddEntry; /* Pointer to HWENTRY for this GRADD. */
PFNHWENTRY pChainEntry; /* Pointer to HWENTRY for this GRADD chain. */
ULONG cModes; /* Count of available graphics modes. */
GDDMODEINFO pModeInfo; /* Pointer to GDDMODEINFO data structure. */
CAPSINFO pCapsInfo; /* Pointer to CAPSINFO data structure. */
GRADDINFO pNextGraddInfo; /* Pointer to next GRADDINFO data structure. */
} GRADDINFO;
typedef GRADDINFO *PGRADDINFO;
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - gid ΓòÉΓòÉΓòÉ
gid (GID)
ID of the GRADD.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pszGraddName ΓòÉΓòÉΓòÉ
pszGraddName (PSZ)
Name of this GRADD.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pGraddEntry ΓòÉΓòÉΓòÉ
pGraddEntry (PFNHWENTRY)
Pointer to HWENTRY for this GRADD.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pChainEntry ΓòÉΓòÉΓòÉ
pChainEntry (PFNHWENTRY)
Pointer to HWENTRY for this GRADD chain.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - cModes ΓòÉΓòÉΓòÉ
cModes (ULONG)
Count of available graphics modes.
This is the count of the available graphics modes supported by this GRADD.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pModeInfo ΓòÉΓòÉΓòÉ
pModeInfo (GDDMODEINFO)
Pointer to GDDMODEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pCapsInfo ΓòÉΓòÉΓòÉ
pCapsInfo (CAPSINFO)
Pointer to CAPSINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> GRADDINFO Parameter - pNextGraddInfo ΓòÉΓòÉΓòÉ
pNextGraddInfo (GRADDINFO)
Pointer to next GRADDINFO data structure.
This points to the next data structure in this GRADD chain.
ΓòÉΓòÉΓòÉ 11.18. HWEVENTIN ΓòÉΓòÉΓòÉ
Input data to the GHI_CMD_EVENT function.
typedef struct _HWEVENTIN {
ULONG ulLength; /* Size of the HWEVENTIN data structure, in bytes. */
ULONG ulEvent; /* Flag indicating type of event. */
ULONG pEventData; /* Pointer to event-specific data. */
} HWEVENTIN;
typedef HWEVENTIN *PHWEVENTIN;
ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWEVENTIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - ulEvent ΓòÉΓòÉΓòÉ
ulEvent (ULONG)
Flag indicating type of event.
Valid values are:
EVENT_FOREGROUND
EVENT_BACKGROUND
ΓòÉΓòÉΓòÉ <hidden> HWEVENTIN Parameter - pEventData ΓòÉΓòÉΓòÉ
pEventData (ULONG)
Pointer to event-specific data.
ΓòÉΓòÉΓòÉ 11.19. HWEXTENSIONIN ΓòÉΓòÉΓòÉ
Input data to the GHI_CMD_EXTENSION function.
typedef struct _HWEXTENSIONIN {
ULONG ulLength; /* Size of the HWEXTENSIONIN data structure, in bytes. */
ULONG cScrChangeRects; /* Count of screen rectangles affected by HWEXTENSIONIN. */
PRECTL arectlScreen; /* Array of screen rectangles affected by HWEXTENSIONIN. */
ULONG ulXFlags; /* Flag indicating hardware serialization. */
PVOID pXP1; /* Extension-specific input packet. */
} HWEXTENSIONIN;
typedef HWEXTENSIONIN *PHWEXTENSIONIN;
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWEXTENSIONIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - cScrChangeRects ΓòÉΓòÉΓòÉ
cScrChangeRects (ULONG)
Count of screen rectangles affected by HWEXTENSIONIN.
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - arectlScreen ΓòÉΓòÉΓòÉ
arectlScreen (PRECTL)
Array of screen rectangles affected by HWEXTENSIONIN.
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - ulXFlags ΓòÉΓòÉΓòÉ
ulXFlags (ULONG)
Flag indicating hardware serialization.
Value for this flag is as follows:
X_REQUESTHW 1
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONIN Parameter - pXP1 ΓòÉΓòÉΓòÉ
pXP1 (PVOID)
Extension-specific input packet.
ΓòÉΓòÉΓòÉ 11.20. HWEXTENSIONOUT ΓòÉΓòÉΓòÉ
Returns flags from an extension GRADD.
typedef struct _HWEXTENSIONOUT {
ULONG ulLength; /* Size of the HWEXTENSIONOUT data structure, in bytes. */
ULONG ulFlags; /* Flag indicfating type of event. */
} HWEXTENSIONOUT;
typedef HWEXTENSIONOUT *PHWEXTENSIONOUT;
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWEXTENSIONOUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWEXTENSIONOUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Flag indicfating type of event.
EXT_SERIALIZEDAC 0x001; DAC requires serializatoin if this flag is set.
ΓòÉΓòÉΓòÉ 11.21. HWMOVEPTRIN ΓòÉΓòÉΓòÉ
Input packet provided to the GRADD in the GHI_CMD_MOVEPTR function.
typedef struct _HWMOVEPTRIN {
ULONG ulLength; /* Size of the HWMOVEPTRIN data structure, in bytes. */
POINTL ptlPos; /* Pointer to video screen coordinate of pointer hot spot. */
} HWMOVEPTRIN;
typedef HWMOVEPTRIN *PHWMOVEPTRIN;
ΓòÉΓòÉΓòÉ <hidden> HWMOVEPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWMOVEPTRIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWMOVEPTRIN Parameter - ptlPos ΓòÉΓòÉΓòÉ
ptlPos (POINTL)
Pointer to video screen coordinate of pointer hot spot.
Video screen coordinates are expected in the ptlPos field.
ΓòÉΓòÉΓòÉ 11.22. HWPALETTEINFO ΓòÉΓòÉΓòÉ
Input packet provided to the GRADD in the GHI_CMD_PALETTE function.
typedef struct _HWPALETTEINFO {
ULONG ulLength; /* Size of the HWPALETTEINFO data structure, in bytes. */
ULONG fFlags; /* Palette flag. */
ULONG ulStartIndex; /* Starting palette index. */
ULONG ulNumEntries; /* Number of palette slots to query or set. */
PRGB2 pRGBs; /* Pointer to the array of RGB values. */
} HWPALETTEINFO;
typedef HWPALETTEINFO *PHWPALETTEINFO;
ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWPALETTEINFO data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - fFlags ΓòÉΓòÉΓòÉ
fFlags (ULONG)
Palette flag.
These flags have the following values:
PALETTE_GET 0x0001
PALETTE_SET 0x0002
ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulStartIndex ΓòÉΓòÉΓòÉ
ulStartIndex (ULONG)
Starting palette index.
ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - ulNumEntries ΓòÉΓòÉΓòÉ
ulNumEntries (ULONG)
Number of palette slots to query or set.
ΓòÉΓòÉΓòÉ <hidden> HWPALETTEINFO Parameter - pRGBs ΓòÉΓòÉΓòÉ
pRGBs (PRGB2)
Pointer to the array of RGB values.
ΓòÉΓòÉΓòÉ 11.23. HWREQIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_REQUESTHW function.
typedef struct _HWREQIN {
ULONG ulLength; /* Size of the HWREQIN data structure, in bytes. */
BOOL fRequest; /* State of HWREQIN. */
ULONG cScrChangeRects; /* Count of screen rectangles affected by HWREQIN. */
PRECTL arectlScreen; /* Array of screen rectangles affected by HWREQIN. */
} HWREQIN;
typedef HWREQIN *PHWREQIN;
ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWREQIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - fRequest ΓòÉΓòÉΓòÉ
fRequest (BOOL)
State of HWREQIN.
Valid values are:
TRUE Request
FALSE Release
ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - cScrChangeRects ΓòÉΓòÉΓòÉ
cScrChangeRects (ULONG)
Count of screen rectangles affected by HWREQIN.
ΓòÉΓòÉΓòÉ <hidden> HWREQIN Parameter - arectlScreen ΓòÉΓòÉΓòÉ
arectlScreen (PRECTL)
Array of screen rectangles affected by HWREQIN.
ΓòÉΓòÉΓòÉ 11.24. HWSETPTRIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_SETPTR function.
typedef struct _HWSETPTRIN {
ULONG ulLength; /* Size of the HWSETPTRIN data structure, in bytes. */
PBYTE pbANDMask; /* Pointer to AND bit-mask pointer. */
PBYTE pbXORMask; /* Pointer to XOR bit-mask pointer. */
PBYTE pbBits; /* Pointer to color pointer image. */
ULONG ulBpp; /* Color pointer bits per pel. */
ULONG ulWidth; /* Pointer width in pels. */
ULONG ulHeight; /* Pointer height in pels. */
POINTL ptlHotspot; /* Pointer to hot spot coordinate. */
} HWSETPTRIN;
typedef HWSETPTRIN *PHWSETPTRIN;
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWSETPTRIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbANDMask ΓòÉΓòÉΓòÉ
pbANDMask (PBYTE)
Pointer to AND bit-mask pointer.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbXORMask ΓòÉΓòÉΓòÉ
pbXORMask (PBYTE)
Pointer to XOR bit-mask pointer.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - pbBits ΓòÉΓòÉΓòÉ
pbBits (PBYTE)
Pointer to color pointer image.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulBpp ΓòÉΓòÉΓòÉ
ulBpp (ULONG)
Color pointer bits per pel.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulWidth ΓòÉΓòÉΓòÉ
ulWidth (ULONG)
Pointer width in pels.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ulHeight ΓòÉΓòÉΓòÉ
ulHeight (ULONG)
Pointer height in pels.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTRIN Parameter - ptlHotspot ΓòÉΓòÉΓòÉ
ptlHotspot (POINTL)
Pointer to hot spot coordinate.
ΓòÉΓòÉΓòÉ 11.25. HWSETPTROUT ΓòÉΓòÉΓòÉ
Output packet returned by the GRADD to the caller of the GHI_CMD_SETPTR
function.
typedef struct _HWSETPTROUT {
ULONG ulLength; /* Size of the HWSETPTROUT data structure, in bytes. */
ULONG ulStatus; /* Current cursor description bits. */
} HWSETPTROUT;
typedef HWSETPTROUT *PHWSETPTROUT;
ΓòÉΓòÉΓòÉ <hidden> HWSETPTROUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWSETPTROUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWSETPTROUT Parameter - ulStatus ΓòÉΓòÉΓòÉ
ulStatus (ULONG)
Current cursor description bits.
Values are as follows:
POINTER_VISIBLE 0x0001; cursor is visible.
POINTER_COLOR 0x0002; cursor is color (vs. monochrome).
POINTER_SOFTWARE 0x0004; this GRADD is not using a hardware
sprite.
ΓòÉΓòÉΓòÉ 11.26. HWSHOWPTRIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_SHOWPTR function.
typedef struct _HWSHOWPTRIN {
ULONG ulLength; /* Size of the HWSHOWPTRIN data structure, in bytes. */
BOOL fShow; /* Indicates the visibility state of the pointer. */
} HWSHOWPTRIN;
typedef HWSHOWPTRIN *PHWSHOWPTRIN;
ΓòÉΓòÉΓòÉ <hidden> HWSHOWPTRIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the HWSHOWPTRIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> HWSHOWPTRIN Parameter - fShow ΓòÉΓòÉΓòÉ
fShow (BOOL)
Indicates the visibility state of the pointer.
Values are as follows:
TRUE Pointer is visible.
FALSE Pointer is not visible.
ΓòÉΓòÉΓòÉ 11.27. IMAGEBUF ΓòÉΓòÉΓòÉ
Characteristics describing an image.
typedef struct _IMAGEBUF {
ULONG ulLength; /* Length of IMAGEBUF data structure, in bytes. */
ULONG ulFlags; /* Image buf flag. */
ULONG ulType; /* Flag indicating type of memory: VRAM or system. */
PBYTE pBits; /* Virtual address of the image. */
ULONG ulImgWidth; /* Image width, in pels. */
ULONG ulImgHeight; /* Image height, in pels. */
ULONG ulBytesPerScan; /* Bytes per scan line. */
PCOLORINFO pColorInfo; /* Color space of data in buffer. */
PCODECINFO pCodecInfo; /* Compression type of data in buffer. */
PCUSTPALINFO pCustPalInfo; /* Pointer to custom palette information. */
} IMAGEBUF;
typedef IMAGEBUF *PIMAGEBUF;
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of IMAGEBUF data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Image buf flag.
This flag has the following values:
IBF_Y_ORG_BOTTOM
0x0001; origin is set at bottom
Note: This flag can be used as an optimization for 8-bpp images
for the following two conditions:
1. The hardware has support for cached custom palettes, and the client
application is playing frames using the same palette. The driver will
return IMG_CAPS_PAL_CACHING if it has this support.
2. The screen is in 256-color mode and the source image bits have
already been translated to the current hardware palette.
IBF_IGNORE_CUST_PAL
0x0002; ignore the custom palette
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulType ΓòÉΓòÉΓòÉ
ulType (ULONG)
Flag indicating type of memory: VRAM or system.
This flag has the following values:
IBT_SRC_VRAM
0x0000; indicates source is VRAM memory
IBT_SRC_MEM
0x0001; indicates source is system memory
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pBits ΓòÉΓòÉΓòÉ
pBits (PBYTE)
Virtual address of the image.
Not required if source is in VRAM.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulImgWidth ΓòÉΓòÉΓòÉ
ulImgWidth (ULONG)
Image width, in pels.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulImgHeight ΓòÉΓòÉΓòÉ
ulImgHeight (ULONG)
Image height, in pels.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - ulBytesPerScan ΓòÉΓòÉΓòÉ
ulBytesPerScan (ULONG)
Bytes per scan line.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pColorInfo ΓòÉΓòÉΓòÉ
pColorInfo (PCOLORINFO)
Color space of data in buffer.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pCodecInfo ΓòÉΓòÉΓòÉ
pCodecInfo (PCODECINFO)
Compression type of data in buffer.
ΓòÉΓòÉΓòÉ <hidden> IMAGEBUF Parameter - pCustPalInfo ΓòÉΓòÉΓòÉ
pCustPalInfo (PCUSTPALINFO)
Pointer to custom palette information.
ΓòÉΓòÉΓòÉ 11.28. IMAGECAPS ΓòÉΓòÉΓòÉ
Capabilities of the video accelerator driver.
typedef struct _IMAGECAPS {
ULONG ulLength; /* Length of IMAGECAPS data structure, in bytes. */
ULONG ulCaps; /* Flag that specifies image capabilities supported. */
ULONG ulMaxHorz; /* Maximum horizontal pels supported by scaler. */
ULONG ulMaxVert; /* Maximum vertical lines supported by scaler. */
BOOL fAccelMem; /* Flag indicating whether the hardware accelerator has additional VRAM for use. */
ULONG ulPhysAddrVRAM; /* Physical address of the hardware accelerator VRAM. */
ULONG ulSize; /* Size of hardware accelerator VRAM, in bytes. */
ULONG ulScanLineBytes; /* Size of scan line, in bytes. */
ULONG ulNumCodecs; /* Number of FOURCCs that follow in this structure. */
PCODECINFO pCodecList; /* Pointer to array of CODEC FOURCCs. */
ULONG ulNumSrc; /* Number of source COLORINFO data structures pointed to by pSrcColorInfo. */
PCOLORINFO pSrcColorInfo; /* Pointer to array of source COLORINFO data structures. */
ULONG ulNumDst; /* Number of destination COLORINFO data structures pointed to by pDstColorInfo. */
PCOLORINFO pDstColorInfo; /* Pointer to array of destination COLORINFO data structures. */
} IMAGECAPS;
typedef IMAGECAPS *PIMAGECAPS;
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of IMAGECAPS data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulCaps ΓòÉΓòÉΓòÉ
ulCaps (ULONG)
Flag that specifies image capabilities supported.
This flag has the following values:
IMAGECAPS_STRETCHBLT
0x0001; has hardware stretch Blt assist
IMAGECAPS_CAPTURE
0x0002; has capture to VRAM hardware present
IMAGECAPS_1X_BLT
0x0004; has nonstretch Blt assist
IMAGECAPS_WINDOWCLIP
0x0008; supports clipping in hardware and/or software
IMAGECAPS_BUFALLOC
0x0010; supports allocation of on-card memory
IMAGECAPS_RECTALLOC
0x0020; supports allocation of rectangles in on-card memory
IMAGECAPS_COMP
0x0040; compression supported by driver
IMAGECAPS_DECOMP
0x0080; decompression supported by driver
IMAGECAPS_PAL_CACHING
0x0100; supports 8-bit palette caching
IMAGECAPS_INTERPOL
0x0200; supports color interpolation in hardware
IMAGECAPS_BYLOCSYSMEM
0x0400; able to read/write to system memory
IMIAGECAPS_SEM_BYPASS
0x0800; device serialization not required
IMAGECAPS_NO_SHARED_FB
0x1000; overlay device
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulMaxHorz ΓòÉΓòÉΓòÉ
ulMaxHorz (ULONG)
Maximum horizontal pels supported by scaler.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulMaxVert ΓòÉΓòÉΓòÉ
ulMaxVert (ULONG)
Maximum vertical lines supported by scaler.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - fAccelMem ΓòÉΓòÉΓòÉ
fAccelMem (BOOL)
Flag indicating whether the hardware accelerator has additional VRAM for
use.
The following values are valid:
TRUE VRAM available.
FALSE VRAM not available.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulPhysAddrVRAM ΓòÉΓòÉΓòÉ
ulPhysAddrVRAM (ULONG)
Physical address of the hardware accelerator VRAM.
This parameter is valid only if fAccelMem = TRUE.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulSize ΓòÉΓòÉΓòÉ
ulSize (ULONG)
Size of hardware accelerator VRAM, in bytes.
This parameter is valid only if fAccelMem = TRUE.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
ulScanLineBytes (ULONG)
Size of scan line, in bytes.
Number of bytes includes padding. This parameter is valid only if fAccelMem
= TRUE.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumCodecs ΓòÉΓòÉΓòÉ
ulNumCodecs (ULONG)
Number of FOURCCs that follow in this structure.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pCodecList ΓòÉΓòÉΓòÉ
pCodecList (PCODECINFO)
Pointer to array of CODEC FOURCCs.
This field points to the array of FOURCCs supported by the hardware
accelerator.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumSrc ΓòÉΓòÉΓòÉ
ulNumSrc (ULONG)
Number of source COLORINFO data structures pointed to by pSrcColorInfo.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pSrcColorInfo ΓòÉΓòÉΓòÉ
pSrcColorInfo (PCOLORINFO)
Pointer to array of source COLORINFO data structures.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - ulNumDst ΓòÉΓòÉΓòÉ
ulNumDst (ULONG)
Number of destination COLORINFO data structures pointed to by pDstColorInfo.
ΓòÉΓòÉΓòÉ <hidden> IMAGECAPS Parameter - pDstColorInfo ΓòÉΓòÉΓòÉ
pDstColorInfo (PCOLORINFO)
Pointer to array of destination COLORINFO data structures.
ΓòÉΓòÉΓòÉ 11.29. IMAGEPACK ΓòÉΓòÉΓòÉ
Information pertaining to PutImage and GetImage.
typedef struct _IMAGEPACK {
ULONG ulLength; /* Length of IMAGEPACK data structure, in bytes. */
ULONG ulFlags; /* Image pack flag. */
ULONG ulHandle; /* Unique ID returned by VRAMREGISTEROUT function. */
ULONG ulID; /* Unique buffer ID. */
ULONG ulCmdMask; /* Specific changes since the last frame. */
PIMAGEBUF pPutBuf; /* Used as source image in PutImage command. */
PIMAGEBUF pGetBuf; /* Used as destination image in GetImage command. */
POINTL ptlDstOrg; /* Destination origin (origin at upper left). */
ULONG ulDstXext; /* Destination X extent. */
ULONG ulDstYext; /* Destination Y extent. */
POINTL ptlSrcOrg; /* Offset into the source image. */
ULONG ulSrcXext; /* Source X extent. */
ULONG ulSrcYext; /* Source Y extent. */
ULONG cVisRects; /* Number of output visible rectangles. */
PRECTL prctlVis; /* Pointer to array of visible regions. */
POINTL ptlWBOrg; /* Origin of off-screen VRAM work buffer. */
ULONG cWBBytes; /* Number of bytes in the work buffer. */
PBYTE pVirtVRAM; /* A 32-bit virtual pointer to the start of VRAM. */
ULONG ulGrafXPar; /* Transparent color for overlay type devices. */
} IMAGEPACK;
typedef IMAGEPACK *PIMAGEPACK;
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of IMAGEPACK data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Image pack flag.
This flag has the following value:
IPF_DONT_INTERPOLATE
0x0001; don't use hardware color interpolation
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulHandle ΓòÉΓòÉΓòÉ
ulHandle (ULONG)
Unique ID returned by VRAMREGISTEROUT function.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulID ΓòÉΓòÉΓòÉ
ulID (ULONG)
Unique buffer ID.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulCmdMask ΓòÉΓòÉΓòÉ
ulCmdMask (ULONG)
Specific changes since the last frame.
The following values are valid:
IPC_INTERMEDIATE_PUT
0x0001; not used at this time
IPC_RECTLS
0x0002; visible regions have changed
IPC_SRC_COLOR
0x0004; source color information has changed
IPC_DST_COLOR
0x0008; destination color information has changed
IPC_PALETTE
0x0010; palette color information has changed
IPC_SRC_SIZE
0x0020; source size information has changed
IPC_DST_SIZE
0x0040; destination size information has changed
IPC_DST_POS
0x0080; destination position information has changed
IPC_DROP_FRAME
0x0100; ignore this frame
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pPutBuf ΓòÉΓòÉΓòÉ
pPutBuf (PIMAGEBUF)
Used as source image in PutImage command.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pGetBuf ΓòÉΓòÉΓòÉ
pGetBuf (PIMAGEBUF)
Used as destination image in GetImage command.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlDstOrg ΓòÉΓòÉΓòÉ
ptlDstOrg (POINTL)
Destination origin (origin at upper left).
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulDstXext ΓòÉΓòÉΓòÉ
ulDstXext (ULONG)
Destination X extent.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulDstYext ΓòÉΓòÉΓòÉ
ulDstYext (ULONG)
Destination Y extent.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlSrcOrg ΓòÉΓòÉΓòÉ
ptlSrcOrg (POINTL)
Offset into the source image.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulSrcXext ΓòÉΓòÉΓòÉ
ulSrcXext (ULONG)
Source X extent.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulSrcYext ΓòÉΓòÉΓòÉ
ulSrcYext (ULONG)
Source Y extent.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - cVisRects ΓòÉΓòÉΓòÉ
cVisRects (ULONG)
Number of output visible rectangles.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - prctlVis ΓòÉΓòÉΓòÉ
prctlVis (PRECTL)
Pointer to array of visible regions.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ptlWBOrg ΓòÉΓòÉΓòÉ
ptlWBOrg (POINTL)
Origin of off-screen VRAM work buffer.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - cWBBytes ΓòÉΓòÉΓòÉ
cWBBytes (ULONG)
Number of bytes in the work buffer.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - pVirtVRAM ΓòÉΓòÉΓòÉ
pVirtVRAM (PBYTE)
A 32-bit virtual pointer to the start of VRAM.
ΓòÉΓòÉΓòÉ <hidden> IMAGEPACK Parameter - ulGrafXPar ΓòÉΓòÉΓòÉ
ulGrafXPar (ULONG)
Transparent color for overlay type devices.
ΓòÉΓòÉΓòÉ 11.30. INITPROCOUT ΓòÉΓòÉΓòÉ
Information returned by the GRADD to the caller of the GHI_CMD_INITPROC
function.
typedef struct _INITPROCOUT {
ULONG ulLength; /* Length of the INITPROCOUT data structure, in bytes. */
ULONG ulVRAMVirt; /* 32-bit virtual address of VRAM. */
} INITPROCOUT;
typedef INITPROCOUT *PINITPROCOUT;
ΓòÉΓòÉΓòÉ <hidden> INITPROCOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of the INITPROCOUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> INITPROCOUT Parameter - ulVRAMVirt ΓòÉΓòÉΓòÉ
ulVRAMVirt (ULONG)
32-bit virtual address of VRAM.
ΓòÉΓòÉΓòÉ 11.31. LINEINFO ΓòÉΓòÉΓòÉ
Line information data structure shared by cLines in the alpkLinePack array.
typedef struct _LINEINFO {
ULONG ulLength; /* Length of LINEINFO data structure. */
ULONG ulType; /* Defines line type. */
ULONG ulStyleMask; /* A 32-bit style mask. */
ULONG cLines; /* Count of lines to be drawn. */
ULONG ulFGColor; /* Line Foreground color. */
ULONG ulBGColor; /* Line Background color. */
USHORT usForeROP; /* Line Foreground mix. */
USHORT usBackROP; /* Line Background mix. */
PBMAPINFO pDstBmapInfo; /* Pointer to destination surface bit map. */
PLINEPACK alpkLinePack; /* Pointer to LINEPACK data structure. */
PRECTL prclBounds; /* Pointer to bounding rect of a clipped line. */
} LINEINFO;
typedef LINEINFO *PLINEINFO;
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Length of LINEINFO data structure.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulType ΓòÉΓòÉΓòÉ
ulType (ULONG)
Defines line type.
LINE_SOLID Line will be solid in Foreground color.
LINE_INVISIBLE Line is not drawn.
LINE_ALTERNATE Line will be alternating Foreground and Background
color; ignores style.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulStyleMask ΓòÉΓòÉΓòÉ
ulStyleMask (ULONG)
A 32-bit style mask.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - cLines ΓòÉΓòÉΓòÉ
cLines (ULONG)
Count of lines to be drawn.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulFGColor ΓòÉΓòÉΓòÉ
ulFGColor (ULONG)
Line Foreground color.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - ulBGColor ΓòÉΓòÉΓòÉ
ulBGColor (ULONG)
Line Background color.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - usForeROP ΓòÉΓòÉΓòÉ
usForeROP (USHORT)
Line Foreground mix.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - usBackROP ΓòÉΓòÉΓòÉ
usBackROP (USHORT)
Line Background mix.
The following flags apply to ulForeROP and ulBackROP:
LR_ZERO
LR_INVERTMERGEPAT
LR_MASKINVERTPAT
LR_INVERTCOPYPAT
LR_MASKPATINVERT
LR_INVERT
LR_XORPAT
LR_INVERTMASKPAT
LR_MASKPAT
LR_INVERTXORPAT
LR_LEAVEALONE
LR_MERGEINVERTPAT
LR_PATCOPY
LR_MERGEPATINVERT
LR_MERGEPAT
LR_ONE
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - pDstBmapInfo ΓòÉΓòÉΓòÉ
pDstBmapInfo (PBMAPINFO)
Pointer to destination surface bit map.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - alpkLinePack ΓòÉΓòÉΓòÉ
alpkLinePack (PLINEPACK)
Pointer to LINEPACK data structure.
ΓòÉΓòÉΓòÉ <hidden> LINEINFO Parameter - prclBounds ΓòÉΓòÉΓòÉ
prclBounds (PRECTL)
Pointer to bounding rect of a clipped line.
ΓòÉΓòÉΓòÉ 11.32. LINEPACK ΓòÉΓòÉΓòÉ
Line information data structure on a per-line basis.
typedef struct _LINEPACK {
ULONG ulStyleStep; /* Value to be added to ulStyleValue. */
ULONG ulStyleValue; /* Style value at the current pel. */
ULONG ulFlags; /* Flags used for the LINEPACK data structure. */
LINEPACK plpkNext; /* Pointer to next LINEPACK data structure. */
ULONG ulAbsDeltaX; /* Clipped Bresenham Delta X, absolute. */
ULONG ulAbsDeltaY; /* Clipped Bresenham Delta Y, absolute. */
POINTL ptlClipStart; /* Pointer to location for device to perform Bresenham algorithm. */
POINTL ptlClipEnd; /* Ending location for Bresenham algorithm (see ptlClipStart). */
POINTL ptlStart; /* Pointer to starting location for line. */
POINTL ptlEnd; /* Ending location for line. */
LONG lClipStartError; /* Standard Bresenham error at the clipped start point. */
} LINEPACK;
typedef LINEPACK *PLINEPACK;
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulStyleStep ΓòÉΓòÉΓòÉ
ulStyleStep (ULONG)
Value to be added to ulStyleValue.
The value to be added to ulStyleValue on each pel stepped along the style
major direction.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulStyleValue ΓòÉΓòÉΓòÉ
ulStyleValue (ULONG)
Style value at the current pel.
The style value is composed of an error value and a mask position, as
follows:
ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
Γöéhigh word Γöé3 bits Γöé5 bits Γöé8 bits Γöé
Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
Γöénot used Γöénot used Γöémask pos Γöéerror value Γöé
ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Flags used for the LINEPACK data structure.
LINE_DO_FIRST_PEL Draws the first pel.
LINE_DIR_Y_POSITIVE Indicates line direction is bottom-to-top.
LINE_HORIZONTAL Indicates line is horizontal. No Bresenham
algorithm.
LINE_X_MAJOR Line is XMAJOR.
LINE_DIR_X_POSITIVE Indicates line direction is right-to-left.
LINE_VERTICAL Indicates line is vertical. No Bresenham
algorithm.
LINE_STYLE_X_MAJOR Line style is XMAJOR.
LINE_DO_LAST_PEL Draws the last pel.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - plpkNext ΓòÉΓòÉΓòÉ
plpkNext (LINEPACK)
Pointer to next LINEPACK data structure.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulAbsDeltaX ΓòÉΓòÉΓòÉ
ulAbsDeltaX (ULONG)
Clipped Bresenham Delta X, absolute.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ulAbsDeltaY ΓòÉΓòÉΓòÉ
ulAbsDeltaY (ULONG)
Clipped Bresenham Delta Y, absolute.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlClipStart ΓòÉΓòÉΓòÉ
ptlClipStart (POINTL)
Pointer to location for device to perform Bresenham algorithm.
Pointer to location where device performs the Bresenham algorithm. Sets only
the pels from ptlClipStart to ptlClipEnd, inclusive.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlClipEnd ΓòÉΓòÉΓòÉ
ptlClipEnd (POINTL)
Ending location for Bresenham algorithm (see ptlClipStart).
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlStart ΓòÉΓòÉΓòÉ
ptlStart (POINTL)
Pointer to starting location for line.
The device can perform the Bresenham algorithm from ptlStart or
ptlClipStart.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - ptlEnd ΓòÉΓòÉΓòÉ
ptlEnd (POINTL)
Ending location for line.
ΓòÉΓòÉΓòÉ <hidden> LINEPACK Parameter - lClipStartError ΓòÉΓòÉΓòÉ
lClipStartError (LONG)
Standard Bresenham error at the clipped start point.
Error is calculated from the initial error and the error increments for
major step and diagonal step. The initial error and the error increments are
as follows:
MAX
Maximum (ulAbsDeltaX, ulAbsDeltaY)
MIN
Minimum (ulAbsDeltaX, ulAbsDeltaY)
Major Increment
Increment to the error for stepping along the major axis:
2 * MIN.
Diagonal Increment
Increment to the error for stepping along the major and minor axes:
2 * MIN - 2 * MAX.
Initial Error
Error at the start point:
2 * MIN - MAX, if LINE_DIR_X_POSITIVE is On.
2 * MIN - MAX - 1, if LINE_DIR_X_POSITIVE is Off.
Horizontal and vertical lines
The line is drawn from the clipped start to clipped end.
The lClipStartError will not be given.
First pel consideration
Set the first pel at ptlStart (not ptlClipStart) only if
LINE_DO_FIRST_PEL is set and the first pel is not clipped.
Last pel consideration
Set the last pel at ptlEnd (not ptlClipEnd) only if LINE_DO_LAST_PEL
is set and the last pel is not clipped.
Styling
Lines are styled using the ulStyleMask, ulStyleStep, and
ulStyleValue.
ulStyleMask
A 32-bit style mask.
Error Value
Error value at the current pel.
Mask Position
Bit position of the ulStyleMask.
If this bit is on, set the current pel to the ulFGColor through
usForeROP; otherwise, set the current pel to the ulBGColor
through usBackRop.
ΓòÉΓòÉΓòÉ 11.33. MONITORINFO ΓòÉΓòÉΓòÉ
The MONITORINFO data structure receives information for the current video
monitor.
typedef struct _MONITORINFO {
CHAR szMonitor[MAX_MONITOR_LEN]; /* Contains monitor information. */
MONITORMODEINFO MonitorModeInfo[MAX_MONITOR_MODES]; /* Contains information about the monitor mode. */
} MONITORINFO;
typedef MONITORINFO *FAR *PMONITORINFO;
ΓòÉΓòÉΓòÉ <hidden> MONITORINFO Parameter - szMonitor[MAX_MONITOR_LEN] ΓòÉΓòÉΓòÉ
szMonitor[MAX_MONITOR_LEN] (CHAR)
Contains monitor information.
ΓòÉΓòÉΓòÉ <hidden> MONITORINFO Parameter - MonitorModeInfo[MAX_MONITOR_MODES] ΓòÉΓòÉΓòÉ
MonitorModeInfo[MAX_MONITOR_MODES] (MONITORMODEINFO)
Contains information about the monitor mode.
ΓòÉΓòÉΓòÉ 11.34. MONITORMODEINFO ΓòÉΓòÉΓòÉ
Contains information on the types of monitor modes.
typedef struct _MONITORMODEINFO {
USHORT usXResolution; /* Horizontal pixels. */
USHORT usYResolution; /* Vertical scan lines. */
BYTE bVertRefresh; /* Vertical refresh rate. */
BYTE bHorizRefresh; /* Horizontal refresh rate. */
BYTE bVPolarityPos; /* Vertical polarity. */
BYTE bHPolarityPos; /* Horizontal polarity. */
USHORT usScrnTop; /* Vertical blanking away from the top, in line counts. */
USHORT usScrnBottom; /* Vertical blanking away from the bottom, in line counts. */
USHORT usScrnLeft; /* Horizontal blanking away from the left, in pixel counts. */
USHORT usScrnRight; /* Horizontal blanking away from the right, in pixel counts. */
} MONITORMODEINFO;
typedef MONITORMODEINFO *FAR *PMONITORMODEINFO;
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usXResolution ΓòÉΓòÉΓòÉ
usXResolution (USHORT)
Horizontal pixels.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usYResolution ΓòÉΓòÉΓòÉ
usYResolution (USHORT)
Vertical scan lines.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bVertRefresh ΓòÉΓòÉΓòÉ
bVertRefresh (BYTE)
Vertical refresh rate.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bHorizRefresh ΓòÉΓòÉΓòÉ
bHorizRefresh (BYTE)
Horizontal refresh rate.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bVPolarityPos ΓòÉΓòÉΓòÉ
bVPolarityPos (BYTE)
Vertical polarity.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - bHPolarityPos ΓòÉΓòÉΓòÉ
bHPolarityPos (BYTE)
Horizontal polarity.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnTop ΓòÉΓòÉΓòÉ
usScrnTop (USHORT)
Vertical blanking away from the top, in line counts.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnBottom ΓòÉΓòÉΓòÉ
usScrnBottom (USHORT)
Vertical blanking away from the bottom, in line counts.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnLeft ΓòÉΓòÉΓòÉ
usScrnLeft (USHORT)
Horizontal blanking away from the left, in pixel counts.
ΓòÉΓòÉΓòÉ <hidden> MONITORMODEINFO Parameter - usScrnRight ΓòÉΓòÉΓòÉ
usScrnRight (USHORT)
Horizontal blanking away from the right, in pixel counts.
ΓòÉΓòÉΓòÉ 11.35. SVGARGB ΓòÉΓòÉΓòÉ
The SVGARGB data structure contains the values of RGB.
typedef struct _SVGARGB {
BYTE bR; /* Value of Red. */
BYTE bG; /* Value of Green. */
BYTE bB; /* Value of Blue. */
BYTE bUnused; /* Reserved. */
} SVGARGB;
typedef SVGARGB *FAR *PSVGARGB;
ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bR ΓòÉΓòÉΓòÉ
bR (BYTE)
Value of Red.
ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bG ΓòÉΓòÉΓòÉ
bG (BYTE)
Value of Green.
ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bB ΓòÉΓòÉΓòÉ
bB (BYTE)
Value of Blue.
ΓòÉΓòÉΓòÉ <hidden> SVGARGB Parameter - bUnused ΓòÉΓòÉΓòÉ
bUnused (BYTE)
Reserved.
ΓòÉΓòÉΓòÉ 11.36. VIDEO_ADAPTER ΓòÉΓòÉΓòÉ
The VIDEO_ADAPTER data structure receives information for the desktop mode.
typedef struct _VIDEO_ADAPTER {
HVIDEO hvideo; /* The handle for this adapter. */
ADAPTERINFO Adapter; /* Hardware information for this adapter. */
VIDEOMODEINFO ModeInfo; /* Information about the current video mode. */
} VIDEO_ADAPTER;
typedef VIDEO_ADAPTER *FAR *PVIDEO_ADAPTER;
ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - hvideo ΓòÉΓòÉΓòÉ
hvideo (HVIDEO)
The handle for this adapter.
ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - Adapter ΓòÉΓòÉΓòÉ
Adapter (ADAPTERINFO)
Hardware information for this adapter.
ΓòÉΓòÉΓòÉ <hidden> VIDEO_ADAPTER Parameter - ModeInfo ΓòÉΓòÉΓòÉ
ModeInfo (VIDEOMODEINFO)
Information about the current video mode.
ΓòÉΓòÉΓòÉ 11.37. VIDEOMODEINFO ΓòÉΓòÉΓòÉ
The VIDEOMODEINFO data structure receives information for the current video
monitor.
typedef struct _VIDEOMODEINFO {
MODEID miModeId; /* Used to make a SetMode request. */
USHORT usType; /* Flag indicating mode type. */
USHORT usInt10ModeSet; /* Interrupt 10 mode. */
USHORT usXResolution; /* Horizontal pixels. */
USHORT usYResolution; /* Vertical scanlines. */
ULONG ulBufferAddress; /* Physical address of VRAM. */
ULONG ulApertureSize; /* VRAM aperture. */
BYTE bBitsPerPixel; /* Number of colors. */
BYTE bBitPlanes; /* Number of planes. */
BYTE bXCharSize; /* Font width. */
BYTE bYCharSize; /* Font height. */
USHORT usBytesPerScanLine; /* Number of bytes per scan line. */
USHORT usTextRows; /* Number of text rows. */
ULONG ulPageLength; /* Number of bytes to save a plane. */
ULONG ulSavesize; /* Total bytes of VRAM to save. */
BYTE bVrtRefresh; /* Vertical refresh rate. */
BYTE bHrtRefresh; /* Horizontal refresh rate. */
BYTE bVrtPolPos; /* Vertical polarity. */
BYTE bHrtPolPos; /* Horizontal polarity. */
USHORT usScrnTop; /* Vertical blanking away from the top, in line counts. */
USHORT usScrnBottom; /* Vertical blanking away from the bottom, in line counts. */
USHORT usScrnLeft; /* Horizontal blanking away from the left, in pixel counts. */
USHORT usScrnRight; /* Horizontal blanking away from the right, in pixel counts. */
CHAR szColorFormat[8]; /* Color format string. */
CHAR szColorWeight[8]; /* Color weight string. */
} VIDEOMODEINFO;
typedef VIDEOMODEINFO *FAR *PVIDEOMODEINFO;
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - miModeId ΓòÉΓòÉΓòÉ
miModeId (MODEID)
Used to make a SetMode request.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usType ΓòÉΓòÉΓòÉ
usType (USHORT)
Flag indicating mode type.
The following values are valid for this flag:
MODE_FLAG_NOT_MONO 0x0001; Mono-compatible
MODE_FLAG_GRAPHICS 0x0002; Text mode, Graphics
MODE_FLAG_NO_CLR_BRST 0x0004; Disable Color burst
MODE_FLAG_NATIVE 0x0008; Native (advanced function) mode
IGNORE_CLR_BRST 0x0010; Disable color burst doesn't make
sense for this mode
NOT_PLASMA 0x0020; @V2.2TSU00 will not work on plasma
display
MODE_FLAG_VGA_ENTRY 0x0040; VGA mode, needs clean up
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usInt10ModeSet ΓòÉΓòÉΓòÉ
usInt10ModeSet (USHORT)
Interrupt 10 mode.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usXResolution ΓòÉΓòÉΓòÉ
usXResolution (USHORT)
Horizontal pixels.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usYResolution ΓòÉΓòÉΓòÉ
usYResolution (USHORT)
Vertical scanlines.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulBufferAddress ΓòÉΓòÉΓòÉ
ulBufferAddress (ULONG)
Physical address of VRAM.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulApertureSize ΓòÉΓòÉΓòÉ
ulApertureSize (ULONG)
VRAM aperture.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bBitsPerPixel ΓòÉΓòÉΓòÉ
bBitsPerPixel (BYTE)
Number of colors.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bBitPlanes ΓòÉΓòÉΓòÉ
bBitPlanes (BYTE)
Number of planes.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bXCharSize ΓòÉΓòÉΓòÉ
bXCharSize (BYTE)
Font width.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bYCharSize ΓòÉΓòÉΓòÉ
bYCharSize (BYTE)
Font height.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usBytesPerScanLine ΓòÉΓòÉΓòÉ
usBytesPerScanLine (USHORT)
Number of bytes per scan line.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usTextRows ΓòÉΓòÉΓòÉ
usTextRows (USHORT)
Number of text rows.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulPageLength ΓòÉΓòÉΓòÉ
ulPageLength (ULONG)
Number of bytes to save a plane.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - ulSavesize ΓòÉΓòÉΓòÉ
ulSavesize (ULONG)
Total bytes of VRAM to save.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bVrtRefresh ΓòÉΓòÉΓòÉ
bVrtRefresh (BYTE)
Vertical refresh rate.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bHrtRefresh ΓòÉΓòÉΓòÉ
bHrtRefresh (BYTE)
Horizontal refresh rate.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bVrtPolPos ΓòÉΓòÉΓòÉ
bVrtPolPos (BYTE)
Vertical polarity.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - bHrtPolPos ΓòÉΓòÉΓòÉ
bHrtPolPos (BYTE)
Horizontal polarity.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnTop ΓòÉΓòÉΓòÉ
usScrnTop (USHORT)
Vertical blanking away from the top, in line counts.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnBottom ΓòÉΓòÉΓòÉ
usScrnBottom (USHORT)
Vertical blanking away from the bottom, in line counts.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnLeft ΓòÉΓòÉΓòÉ
usScrnLeft (USHORT)
Horizontal blanking away from the left, in pixel counts.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - usScrnRight ΓòÉΓòÉΓòÉ
usScrnRight (USHORT)
Horizontal blanking away from the right, in pixel counts.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - szColorFormat[8] ΓòÉΓòÉΓòÉ
szColorFormat[8] (CHAR)
Color format string.
ΓòÉΓòÉΓòÉ <hidden> VIDEOMODEINFO Parameter - szColorWeight[8] ΓòÉΓòÉΓòÉ
szColorWeight[8] (CHAR)
Color weight string.
ΓòÉΓòÉΓòÉ 11.38. VIDEOSTATE ΓòÉΓòÉΓòÉ
The VIDEOSTATE data structure receives information for the mode to be saved.
typedef struct _VIDEOSTATE {
ULONG fStateFlags; /* Flag indicating what to save. */
MODEID miState; /* Contains the mode ID for the mode to be saved. */
PVOID pModeData; /* Pointer to set mode command sequence. */
ULONG ulVRAMSaveSize; /* Number of bytes per page to save. */
PVRAMDATA pVRAM; /* Pointer to video memory. */
PCLUTDATA pCLUT; /* Pointer to palette data. */
PFONTDATA pFONT; /* Pointer to font data. */
} VIDEOSTATE;
typedef VIDEOSTATE *FAR *PVIDEOSTATE;
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - fStateFlags ΓòÉΓòÉΓòÉ
fStateFlags (ULONG)
Flag indicating what to save.
STATEFLAG_REGISTERS 0x0001
STATEFLAG_CLUT 0x0002
STATEFLAG_VRAM 0x0004
STATEFLAG_FONT 0x0008
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - miState ΓòÉΓòÉΓòÉ
miState (MODEID)
Contains the mode ID for the mode to be saved.
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pModeData ΓòÉΓòÉΓòÉ
pModeData (PVOID)
Pointer to set mode command sequence.
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - ulVRAMSaveSize ΓòÉΓòÉΓòÉ
ulVRAMSaveSize (ULONG)
Number of bytes per page to save.
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pVRAM ΓòÉΓòÉΓòÉ
pVRAM (PVRAMDATA)
Pointer to video memory.
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pCLUT ΓòÉΓòÉΓòÉ
pCLUT (PCLUTDATA)
Pointer to palette data.
ΓòÉΓòÉΓòÉ <hidden> VIDEOSTATE Parameter - pFONT ΓòÉΓòÉΓòÉ
pFONT (PFONTDATA)
Pointer to font data.
ΓòÉΓòÉΓòÉ 11.39. VMIQCI ΓòÉΓòÉΓòÉ
Output packet returned by the GRADD to the caller of the VMI_CMD_QUERYCHAININFO
function.
typedef struct _VMIQCI {
ULONG ulLength; /* Size of the VMIQCI data structure, in bytes. */
PCHAININFO pciHead; /* Pointer to the head of the GRADD chain. */
} VMIQCI;
typedef VMIQCI *PVMIQCI;
ΓòÉΓòÉΓòÉ <hidden> VMIQCI Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VMIQCI data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VMIQCI Parameter - pciHead ΓòÉΓòÉΓòÉ
pciHead (PCHAININFO)
Pointer to the head of the GRADD chain.
ΓòÉΓòÉΓòÉ 11.40. VRAMALLOCIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_VRAM function.
typedef struct _VRAMALLOCIN {
ULONG ulLength; /* Size of the VRAMALLOCIN data structure, in bytes. */
ULONG ulFlags; /* Flag indicating type of VRAM allocation. */
ULONG ulID; /* ID required as input only on deallocation. */
ULONG ulFunction; /* Flag indicating type of VRAM allocation. */
} VRAMALLOCIN;
typedef VRAMALLOCIN *PVRAMALLOCIN;
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VRAMALLOCIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Flag indicating type of VRAM allocation.
Values are as follows:
VRAM_ALLOC_SHARED 0x0001
VRAM_ALLOC_RECTANGLE 0x0002
VRAM_ALLOC_STATIC 0x1000
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulID ΓòÉΓòÉΓòÉ
ulID (ULONG)
ID required as input only on deallocation.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCIN Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG)
Flag indicating type of VRAM allocation.
Values are as follows:
VRAM_ALLOCATE 1
VRAM_DEALLOCATE 2
VRAM_QUERY 3
ΓòÉΓòÉΓòÉ 11.41. VRAMALLOCOUT ΓòÉΓòÉΓòÉ
Output packet returned by the GRADD to the caller of the GHI_CMD_VRAM function.
typedef struct _VRAMALLOCOUT {
ULONG ulLength; /* Size of the VRAMALLOCOUT data structure, in bytes. */
ULONG ulFlags; /* Flag indicating type of VRAM allocation. */
ULONG ulID; /* ID returned on allocation. */
POINTL ptlStart; /* X and Y location of VRAM. */
ULONG ulSize; /* Requested size of VRAM, in bytes. */
ULONG ulScanLineBytes; /* Length of scan line, in bytes. */
} VRAMALLOCOUT;
typedef VRAMALLOCOUT *PVRAMALLOCOUT;
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VRAMALLOCOUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Flag indicating type of VRAM allocation.
Value is as follows:
VRAM_ALLOC_WORKBUFFER 0x0004
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulID ΓòÉΓòÉΓòÉ
ulID (ULONG)
ID returned on allocation.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ptlStart ΓòÉΓòÉΓòÉ
ptlStart (POINTL)
X and Y location of VRAM.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulSize ΓòÉΓòÉΓòÉ
ulSize (ULONG)
Requested size of VRAM, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMALLOCOUT Parameter - ulScanLineBytes ΓòÉΓòÉΓòÉ
ulScanLineBytes (ULONG)
Length of scan line, in bytes.
ΓòÉΓòÉΓòÉ 11.42. VRAMDATA ΓòÉΓòÉΓòÉ
The VRAMDATA data structure is a pointer to video memory.
typedef BYTE VRAMDATA;
ΓòÉΓòÉΓòÉ 11.43. VRAMIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_VRAM function.
typedef struct _VRAMIN {
ULONG ulLength; /* Size of the VRAMIN data structure, in bytes. */
ULONG ulFunction; /* Flag indicating type of VRAM allocation. */
PVOID pIn; /* Pointer to an allocate or register packet. */
} VRAMIN;
typedef VRAMIN *PVRAMIN;
ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VRAMIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - ulFunction ΓòÉΓòÉΓòÉ
ulFunction (ULONG)
Flag indicating type of VRAM allocation.
Values are as follows:
VRAM_ALLOCATE 1
VRAM_DEALLOCATE 2
VRAM_QUERY 3
VRAM_REGISTER 4
VRAM_DEREGISTER 5
ΓòÉΓòÉΓòÉ <hidden> VRAMIN Parameter - pIn ΓòÉΓòÉΓòÉ
pIn (PVOID)
Pointer to an allocate or register packet.
ΓòÉΓòÉΓòÉ 11.44. VRAMREGISTERIN ΓòÉΓòÉΓòÉ
Input packet to the GHI_CMD_VRAM function via the VRAMIN data structure.
typedef struct _VRAMREGISTERIN {
ULONG ulLength; /* Size of the VRAMREGISTERIN data structure, in bytes. */
ULONG ulHandle; /* Handle required as input on deregister. */
ULONG ulFlags; /* Flag indicating type of VRAM registration. */
} VRAMREGISTERIN;
typedef VRAMREGISTERIN *PVRAMREGISTERIN;
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VRAMREGISTERIN data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulHandle ΓòÉΓòÉΓòÉ
ulHandle (ULONG)
Handle required as input on deregister.
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTERIN Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Flag indicating type of VRAM registration.
Values are as follows:
VRAM_REGISTER_HANDLE 0x0001
VRAM_REGISTER_VRAMONLY 0x1000
ΓòÉΓòÉΓòÉ 11.45. VRAMREGISTEROUT ΓòÉΓòÉΓòÉ
Output packet returned by the GRADD to the caller of the GHI_CMD_VRAM function
via the VRAMIN data structure.
typedef struct _VRAMREGISTEROUT {
ULONG ulLength; /* Size of the VRAMREGISTEROUT data structure, in bytes. */
ULONG ulFlags; /* Not used at this time. */
ULONG ulHandle; /* Handle returned on register. */
} VRAMREGISTEROUT;
typedef VRAMREGISTEROUT *PVRAMRGISTEROUT;
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulLength ΓòÉΓòÉΓòÉ
ulLength (ULONG)
Size of the VRAMREGISTEROUT data structure, in bytes.
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulFlags ΓòÉΓòÉΓòÉ
ulFlags (ULONG)
Not used at this time.
ΓòÉΓòÉΓòÉ <hidden> VRAMREGISTEROUT Parameter - ulHandle ΓòÉΓòÉΓòÉ
ulHandle (ULONG)
Handle returned on register.
ΓòÉΓòÉΓòÉ 12. Glossary ΓòÉΓòÉΓòÉ
This glossary contains terms and definitions that are, for the most part, used
for OS/2 products. This is not a complete dictionary of computer terms.
ΓòÉΓòÉΓòÉ 12.1. Introduction ΓòÉΓòÉΓòÉ
This glossary defines many of the terms used in this book. It includes terms
and definitions from the IBM Dictionary of Computing, as well as terms specific
to the Presentation Manager, but it is not a complete glossary for OS/2.
Other primary sources for these definitions are:
o The American National Standard Dictionary for Information Systems, ANSI
X3.172-1990, copyrighted 1990 by the American National Standards
Institute, 11 West 42nd Street, New York, New York 10036. These
definitions are identified by the symbol (A) after the definition.
o The Information Technology Vocabulary, developed by Subcommittee 1, Joint
Technical Committee 1, of the International Organization for
Standardization and the International Electrotechnical Commission (ISO/IEC
JTC1/SC1). Definitions of published parts of this vocabulary are
identified by the symbol (I) after the definition; definitions taken from
draft international standards, committee drafts, and working papers being
developed by ISO/IEC JTC1/SC1 are identified by the symbol (T) after the
definition, indicating that final agreement has not yet been reached among
the participating National Bodies of SC1.
ΓòÉΓòÉΓòÉ 12.2. Glossary Listing ΓòÉΓòÉΓòÉ
Select a starting letter of glossary terms:
A N
B O
C P
D Q
E R
F S
G T
H U
I V
J W
K X
L Y
M Z
ΓòÉΓòÉΓòÉ <hidden> Glossary - A ΓòÉΓòÉΓòÉ
A
ABIOS - Advanced BIOS. See BIOS.
accumulator - (1) A register in which one operand of an operation can be stored
and subsequently replaced by the result of that operation. (T) (2) In the
IBM 3800 Printing Subsystem Models 3 and 8, a feature that supplies a
separate storage that can hold data in raster form. It can be used either
for composing a sheet of data that combines a large amount of variable and
constant data, or for storing an electronic overlay in raster form that will
be merged with variable data as the sheet is printed.
access permission - All access rights a user has regarding an object. (I)
adapter - A piece of hardware that modifies the system unit to allow it to
operate in a particular way, often by connecting the system unit to an
external device such as a video monitor.
adapter device driver - A device driver that provides hardware-dependent
services for an OEM adapter.
address space - (1) The range of addresses available to a program. (A) (2)
The area of virtual storage available for a particular job.
all points addressable (APA) - In computer graphics, pertaining to the ability
to address and display or not display each picture element (pel) on a
display surface.
anchor block - An area of the internal resources of OS/2 Presentation Manager
which is allocated to a process or thread that calls WinInitialize.
anchor point - The position or choice from which selection or deselection is
extended.
APA - All points addressable.
API - Application programming interface.
application programming interface (API) - A functional interface supplied by
the operating system, or by a separately-orderable licensed program, that
allows an application program written in a high-level language to use
specific data or functions of the operating system or the licensed program.
archive flag - In the OS/2 operating system, a flag of files and directories
that the operating system uses to determine which files are new or modified.
Files with this flag are included when a backup copy is made or when all the
files are restored on a hard disk. See flag.
area - In computer graphics, a filled shape such as a solid rectangle.
ASCIIZ - A string of ASCII characters that is terminated with a byte containing
the value 0.
aspect ratio - (1) The ratio of the height of a rectangle to its width. A
rectangle of width 10 inches and height 5 inches has an aspect ratio of 10/5
or 2. (2) On a display screen, the ratio of the maximum length of a display
line to the maximum length of a display column.
asynchronous (ASYNC) - (1) Pertaining to two or more processes that do not
depend upon the occurrence of specific events such as common timing
signals. (T) (2) Without regular time relationship; unexpected or
unpredictable with respect to the execution of program instructions.
atom - A constant that represents a string. Once a string has been defined as
an atom, the atom can be used in place of the string to save space. Strings
are associated with their respective atoms in an atom table. See integer
atom.
atom table - A table used to associate atoms with the strings that they
represent. This table contains the mechanism by which the presence of a
string can be verified.
AVIO - Advanced Video Input/Output
ΓòÉΓòÉΓòÉ <hidden> Glossary - B ΓòÉΓòÉΓòÉ
B
background color - The color assigned to a background image.
background mix - An attribute that determines how the background of a graphic
primitive is combined with the existing color of the graphics presentation
space.
base device driver - An OS/2 device driver that performs I/O during the OS/2
kernel boot sequence to provide IPL support. Base device drivers are loaded
by way of the CONFIG.SYS BASEDEV keyword, rather than the DEVICE keyword.
See BASEDEV keyword, adapter device driver, and device manager.
BASEDEV keyword - New CONFIG.SYS keyword; loads a base device driver into the
operating system.
Basic Input/Output System (BIOS) - Code that controls basic hardware
operations, such as interactions with diskette drives, hard disk drives, and
the keyboard.
Bezier curve - A mathematical technique of specifying a smooth, continuous line
or surface, requiring a starting point and an ending point, with several
intermediate points that influence or control the path of the linking curve.
BIOS - Basic Input/Output System.
bit-block transfer (bitblt) - Transfer of a rectangular array of bit-map data.
bitblt - Bit-block transfer.
bit map - A representation of an image by an array of bits.
block - (1) In programming languages, a compound statement that coincides with
the scope of at least one of the declarations contained within it. A block
may also specify storage allocation or segment programs for other
purposes. (I) (2) A string of data elements recorded or transmitted as a
unit. The elements may be characters, words or physical records. (T) (3) A
collection of contiguous records recorded as a unit. Blocks are separated by
interblock gaps and each block may contain one or more records. (A)
Bit block transfer (bitblt) - The process of transferring one or more blocks of
data.
border - A visual indicator of a window's boundaries.
BPB - BIOS Parameter Block.
breakpoint - (1) A point in a computer program where execution may be halted. A
breakpoint is usually at the beginning of an instruction where halts, caused
by external intervention, are convenient for resuming execution. (T) (2) An
instruction in a program for halting execution. Breakpoints are usually
established at positions in a program where halts, caused by external
intervention, are convenient for restarting. (T) (3) A place in a program,
specified by a command or a condition, where the system halts execution and
gives control to the workstation user or to a specified program.
Bus Master adapter - An adapter capable of performing Reads and Writes to
physical storage by communicating directly with the storage subsystem
(memory) rather than depending on a host DMA channel or host CPU. Synonymous
with first-party DMA adapter.
ΓòÉΓòÉΓòÉ <hidden> Glossary - C ΓòÉΓòÉΓòÉ
C
cached micro presentation space - A presentation space from a Presentation
Manager owned store of micro presentation spaces. It can be used for drawing
to a window only, and must be returned to the store when the task is
complete.
CDB - Command Descriptor Block.
cell - See character cell.
character box - (1) An imaginary parallelogram on a display surface that
contains all parts of one graphic character. Synonymous with bounding
box. (T) (2) The maximum area in which a symbol and all associated
elements, such as a cursor, an underline, or space surrounding the symbol to
separate it from other symbols, can be printed or displayed. Synonymous with
character cell. (3) The imaginary parallelogram whose boundaries govern the
size, orientation, and spacing of individual characters to be displayed on a
graphics display device.
character cell - (1) An addressable location on a display surface or printing
medium. (2) The physical width and height in pels of a font. See also
bounding box. (3) The imaginary box whose boundaries govern the size,
orientation, and spacing of individual characters to be displayed on a
workstation.
character mode - A mode that, in conjunction with the font type, determines the
extent to which graphics characters are affected by the character box,
shear, and angle attributes.
clipping - In computer graphics, removing those parts of display elements that
lie outside of given boundary.
clip limits - The area of the paper that can be reached by a printer or
plotter.
clipping path - A clipping boundary in world-coordinate space.
code page - An assignment of graphic characters and control function meanings
to all code points; for example, assignment of characters and meanings to
256 code points for an 8-bit code, assignment of characters and meanings to
128 code points for a 7-bit code.
code point - A 1-byte code representing one of 256 potential characters.
code segment - An executable section of programming code within a load module.
color conversion - Changing one color format to another. Required, for example,
when the source color format is different from the destination color format.
When going from the monochrome color format to the color format, 1 (one)
bits are converted to the image foreground color, and 0 (zero) bits are
converted to the image background color.
When going from color to monochrome, all pels that match the passed
background color are converted to the image background color of the
destination.
All other pels are converted to the image foreground color of the
destination. The color conversion takes place prior to any mix mode.
color dithering - See dithering.
command code - In this specification, refers to a group of related commands
that an adapter device driver can receive.
All command codes have a prefix of "IOCC_". For example, common I/O requests
(such as Read, Write, etc.) are grouped under the command code
IOCC_EXECUTE_IO.
command data block - A data structure defined by the Small Computer System
Interface standard to send commands to devices that conform to SCSI
standards.
command descriptor block (CDB) - The structure used to communicate commands
from a source to a destination.
command modifier - In this specification, a specific operation that an adapter
device driver is to perform.
All command modifiers have a prefix of "IOCM_". For example, an adapter
device driver might receive an IOCC_EXECUTE_IO command with a command
modifier of IOCM_READ.
compatibility kernel - The portion of the OS/2 kernel that exists to support
DOS INT 20, 21, 25, 26, and 27 functions. It acts as an interface to common
kernel functionality such as the file system.
CON - Character-device name reserved for the console keyboard and screen.
conditional compilation - Processing by the preprocessor of certain specified
code in the file, depending on the evaluation of a specified condition.
context hook - Similar to a "force flag" in earlier versions of OS/2. These are
events, signaled by a virtual device driver, that are processed at task
time. Forcing an IRET, and simulating an NMI, can fall into this category.
control program - A computer program designed to schedule and to supervise the
execution of programs of a computer system.
controller sector buffer - One or more buffers, managed by a hardware adapter,
to improve I/O transfer rates by helping to match a device and software
timing requirements.
ΓòÉΓòÉΓòÉ <hidden> Glossary - D ΓòÉΓòÉΓòÉ
D
DASD - Direct-access storage device.
data bus - A bus used to communicate data internally and externally to and from
a processing unit, storage, and peripheral devices. (A) See bus.
data structure - The syntactic structure of symbolic expressions and their
storage allocation characteristics. (T)
DBCS - Double-byte character set.
DC - Device context.
DDB - Device-dependent bit map.
deinstantiation - See instantiation.
DevHlp - Device helper.
device context (DC) - A logical description of a data destination such as
memory, metafile, display, printer, or plotter. See also direct device
context, information device context, memory device context, metafile device
context, and screen device context.
device driver - A file that contains the code needed to attach and use a
device such as a display, printer, or plotter.
device driver initialization (init) time - See initialization (init) time,
device driver.
device driver profile - A file with a "DDP" extension, containing a script that
is interpreted by the OS/2 DDINSTAL utility. Among other things, it defines
which files to copy from installation diskettes to target directories and
specifies how the CONFIG.SYS file will be updated.
device helper (DevHlp) - (1) A kernel service (memory, hardware interrupt,
software interrupt, queuing, semaphore, and so forth) provided to physical
device drivers. (2) A callable C-language or assembler-language routine that
provides an operating system service for an OS/2 device driver.
device object - A device that provides a means of communication between a
computer and the outside world. A printer is an example of a device object.
device table - A data structure containing a summary of the adapters an adapter
device driver supports and a list of the I/O devices attached to each
adapter. This data structure is built by the adapter device driver in
response to an IOCC_CONFIGURATION IOCM_GET_DEVICE_TABLE request.
direct access storage device (DASD) - A device in which access time is
effectively independent of the location of the data.
direct memory access (DMA) - (1) A technique for moving data directly between
main storage and peripheral equipment without requiring processing of the
data by the processing unit. (2) The transfer of data between memory and
input/output units without processor intervention.
display frame - (1) In computer graphics, an area in storage in which a display
image can be recorded. (2) In computer micrographics, an area on a
microform in which a display image can be recorded.
dispatch table - (1) A block of memory, allocated by the graphics engine, for
the containment of entry points for use by a display driver. (2) An array of
pointers to function-handling routines.
dithering - A technique for interleaving dark and light pels so that the
resulting image looks smoothly shaded from a distance.
DLL - Dynamic link library.
DMA - Direct memory access.
double-byte character set (DBCS) - A set of characters in which each character
is represented by two bytes. Languages such as Japanese, Chinese, and
Korean, which contain more characters than can be represented by 256 code
points, require double-byte character sets. Because each character requires
2 bytes, the typing, display, and printing of DBCS characters requires
hardware and programs that support DBCS. Contrast with single-byte character
set.
driver - (1) A program (and possibly data files) that contain information
needed to run a particular unit, such as a plotter, printer, port, or mouse.
See also device driver and printer driver. (2) A system or device that
enables a functional unit to operate.
dynamic link library (DLL) - A file containing executable code and data bound
to a program at load time or run time, rather than during linking. The code
and data in a dynamic link library can be shared by several applications
simultaneously.
ΓòÉΓòÉΓòÉ <hidden> Glossary - E ΓòÉΓòÉΓòÉ
E
entry point - (1) In a database, the record that is first accessed upon entry
into a database, caused by a user's command. (T) (2) The address or label
of the first instruction executed on entering a computer program, routine,
or subroutine. A computer program, routine, or subroutine may have a number
of different entry points, each perhaps corresponding to a different
function or purpose. (I) (A) Synonymous with entrance, entry. (3) In a
routine, any place to which control can be passed. (A) (4) In the C,
FORTRAN, and Pascal languages, the address or label of the first instruction
processed or entered in a program, routine, or subroutine. A program,
routine, or subroutine can have a number of different entry points, each
corresponding to a different function or purpose.
EOI - End Of Interrupt
ΓòÉΓòÉΓòÉ <hidden> Glossary - F ΓòÉΓòÉΓòÉ
F
Far call - Code that calls from one segment into another segment.
fillet - An arc that is tangential to the end points of two adjacent lines. See
also polyfillet.
filter adapter device driver - A special class of adapter device drivers that
do not manage the hardware directly, but monitor the stream of commands
between a device manager and an adapter device driver. See Device Manager
and adapter device driver.
first-party DMA adapter - See bus master adapter.
flag - A characteristic of a file or directory that enables it to be used in
certain ways. See also archive flag, hidden flag, and read-only flag.
flat address - See linear address.
frame styles - Standard window layouts provided by the Presentation Manager.
freeze and thaw services - Functions that prevent a DOS session from executing
(VDHFreezeVDM) until the matching thaw function (VDHThawVDM) is called. The
freeze occurs when the specified DOS session leaves kernel mode.
ΓòÉΓòÉΓòÉ <hidden> Glossary - G ΓòÉΓòÉΓòÉ
G
GDT - Global descriptor table.
Global Descriptor Table (GDT) - A table that defines code and data segments
available to all tasks in an application.
glyph - A graphic symbol whose appearance conveys information; for example, the
vertical and horizontal arrows on cursor keys that indicate the directions
in which they control cursor movement, the sunburst symbol on the screen
illumination control of a display device.
GPI - Graphics programming interface
graphic primitive - In computer graphics, a basic element, such as an arc or a
line, that is not made up of smaller parts and that is used to create
diagrams and pictures.
graphics attributes - The attributes that apply to graphics primitives.
Examples are color selection, line type, and shading pattern definition.
Contrast with segment attributes.
Graphics programming interface (GPI) - The formally-defined programming
language that lies between an IBM graphics program and the user of the
program.
graphics segment - A sequence of related graphic primitives and graphics
attributes. See also graphic primitive.
GRE - Graphics engine.
ΓòÉΓòÉΓòÉ <hidden> Glossary - H ΓòÉΓòÉΓòÉ
H
handle - (1) An identifier that represents an object, such as a device or a
window, to the Presentation Interface. (2) In the Advanced DOS and OS/2
operating systems, a binary value created by the system that identifies a
drive, directory, and file so that the file can be found and opened.
handshaking - A method by which two pieces of hardware, such as a personal
computer and a plotter, can communicate. Depending upon the devices
communicating, handshaking occurs either as a hardware function or through
software, such as a device driver.
hard error - An error condition on a network that requires that the network be
reconfigured or that the source of the error be removed before the network
can resume reliable operation.
hardware palette - The array of RGBs that the physical device is displaying.
heap - An area of free storage available for dynamic allocation by an
application. Its size varies depending on the storage requirements of the
application.
hex - See hexadecimal
hexadecimal - Pertaining to a system of numbers to the base 16; hexadecimal
digits range from 0 through 9 and A through F, where A represents 10 and F
represents 15.
hook - A point in a system-defined function where an application can supply
additional code that the system processes as though it were part of the
function.
hook chain - A sequence of hook procedures that are "chained" together so that
each event is passed in turn to each procedure in the chain.
ΓòÉΓòÉΓòÉ <hidden> Glossary - I ΓòÉΓòÉΓòÉ
I
IDC - Inter-device-driver communication.
in-memory buffer - A block of memory in the address space of the host machine,
used for data transfer.
init time - See initialization time, device driver.
initialization time, device driver - After the OS/2 loads a device driver, it
sends it an OS/2 request packet to initialize. During this initialization,
certain DevHlp functions are not permitted. Also called init time.
Input/Output Control (IOCtl) - A system service that provides a way for an
application to send device-specific control commands to a device driver.
Input/Output Privilege Level (IOPL) - Allows part of a Ring 3 application or
device driver to execute at Ring 0.
input router - OS/2 internal process that removes messages from the system
queue.
inter-device-driver communication (IDC) - A mechanism that enables a physical
device driver to communicate with another physical device driver.
interprocess communication - In the OS/2 operating system, the exchange of
information between processes or threads through semaphores, queues, and
shared memory.
interrupt - An instruction that directs the microprocessor to suspend what it
is doing and run a specified routine. When the routine is complete, the
microprocessor resumes its original work. See also routine.
interrupt request (IR) - Broadly, an "interrupt request level", referring to
pending or in-service interrupt requests, or to a specific level (for
example, IR 4).
interrupt request flag - A bit in the 8259 PIC controller that indicates an
interrupt is pending on particular level. The VPIC also maintains a virtual
interrupt request flag for each interrupt level for each DOS session.
interrupt service flag - A bit in the 8259 PIC controller that indicates an
interrupt request is being serviced. It is cleared when the PIC is sent EOI.
The VPIC maintains a virtual interrupt service flag indicating that a
simulated interrupt is in-progress in a DOS session.
interrupt time - When a device driver is run because of an interrupt rather
than because of an application request. OS/2 device drivers receive
interrupts either from the hardware they manage or from the system real-time
clock.
During interrupt time, certain DevHlp functions are not permitted. Also,
addresses received directly from OS/2 applications might not be valid unless
they are converted system addresses.
IOCtl - Input/Output Control.
IOPL - Input/Output Privilege Level.
IORB - Input/Output Request Block.
Input/Output Request Block (IORB) - A data structure defined by this
specification that is passed as a parameter on all calls to an adapter
device driver. It contains a fixed section, followed by a command-dependent
section.
IORBH - Input/Output Request Block Header
IRET - Interrupt return.
IRQ - Interrupt Request.
ΓòÉΓòÉΓòÉ <hidden> Glossary - J ΓòÉΓòÉΓòÉ
J
journal - A special-purpose file or data set that can be used to provide an
audit trail of operator and system actions, or as a means of recovering
superseded data.
ΓòÉΓòÉΓòÉ <hidden> Glossary - K ΓòÉΓòÉΓòÉ
K
kanji - A graphic character set consisting of symbols used in Japanese
ideographic alphabets. Each character is represented by 2 bytes.
kernel - (1) The part of an operating system that performs basic functions such
as allocating hardware resources. (2) A program that can run under different
operating system environments.
kerning - The design of graphic characters so that their character boxes
overlap. The toned picture elements (pels) of the character appear outside
the character cell.
Note: Kerning allows character boxes to overlap and characters to run
together, so that characters can be designed for cursive languages,
ligatures, or any other kind of character that requires more than one
character box. It also allows for design of proportional-spaced fonts. By
overlapping character boxes, characters can be placed closer together, or
they can be placed farther apart by using overlapped blank character boxes.
ΓòÉΓòÉΓòÉ <hidden> Glossary - L ΓòÉΓòÉΓòÉ
L
LCT - logical color table.
LDT - Local descriptor table.
LIFO stack - A data structure from which data is retrieved in "Last-In,
First-Out" order.
linked list - A list in which the data elements may be dispersed, but in which
each data element contains information for locating the next. Synonym for
chained list.
linear address - A unique value that identifies the memory object.
Local Descriptor Table (LDT) - A table that defines code and data segments
specific to a single task.
logical palette - An array of RGB and mapping index pairs, created by the
device driver when defining a palette (as a result of a GpqCreatePalette
call).
LVB - Logical Video Buffer.
ΓòÉΓòÉΓòÉ <hidden> Glossary - M ΓòÉΓòÉΓòÉ
M
memory device context - A logical description of a data destination that is a
memory bit map. See also device context.
metafile - A file containing a series of attributes that set color, shape, and
size, usually of a picture or a drawing. Using a program that can interpret
these attributes, a user can view the assembled image.
metafile device context - A logical description of a data destination that is a
metafile which is used for graphics interchange. See also device context.
mickey - A unit of measurement for physical mouse motion whose value depends on
the mouse device driver that is currently loaded.
mixed character string - A string containing a mixture of one-byte and kanji or
Hangeul (two-byte) characters.
mutex semaphore - (Mutual exclusion semaphore). A semaphore that enables
threads to serialize their access to resources. Only the thread that
currently owns the mutex semaphore can gain access to the resource, thus
preventing one thread from interrupting operations being performed by
another.
ΓòÉΓòÉΓòÉ <hidden> Glossary - N ΓòÉΓòÉΓòÉ
N
named pipe - A named buffer that provides client-to-server, server-to-client or
duplex communication between unrelated processes. Contrast with unnamed
pipe.
notification callout - The feature that provides for a routine to be called on
completion of an input/output request. See also notification routine.
notification routine - The routine indicated in an input/output request block
to be called on completion of that request. See also notification callout.
null-terminated string - A string of (n+1) characters where the (n+1)th
character is the "null" character (X'00') and is used to represent an
n-character string with implicit length. Also called a "zero-terminated"
string or an "ASCIIZ". string.
ΓòÉΓòÉΓòÉ <hidden> Glossary - O ΓòÉΓòÉΓòÉ
O
There are no glossary terms for this initial letter.
ΓòÉΓòÉΓòÉ <hidden> Glossary - P ΓòÉΓòÉΓòÉ
P
palette - A list of colors assigned to various areas on a panel. A user can
change the color of these areas.
PDD - Physical Device Driver.
PDE - PageDirectoryEntry.
pel - Picture element.
permissible action - In a conceptual schema language, an action conforming to
specified rules or constraints that changes a presumably consistent
collection of sentences into a consistent one or makes known a consistent
one present in the information base or conceptual schema.
phase alignment - Aligning source bits with destination bits. Often required in
a Bitblt function move operation where byte blocks are moved on bit
boundaries.
physical address - A 32-bit byte address giving the actual address in physical
storage for a data item.
physical device driver (PDD) - A system interface that handles hardware
interrupts and supports a set of input and output functions.
pipe - See named pipe, unnamed pipe.
picture element (pel, pixel) - (1) In computer graphics, the smallest element
of a display surface that can be independently assigned color and
intensity. (T). (2) The area of the finest detail that can be reproduced
effectively on the recording medium. (3) An element of a raster pattern
about which a toned area on a photoconductor can appear.
PIO - Programmed I/O.
pixel - Picture element.
polyfillet - A curve based on a sequence of lines. The curve is tangential to
the end points of the first and last lines, and tangential also to the
midpoints of all other lines.
polyline - In computer graphics, a sequence of adjoining lines.
pop - To remove an item from the top of a pushdown list. Contrast with push.
prefetch - To locate and load a quantity of data in anticipation of a request.
presence-check function - A Ring 3 (non-privileged) .EXE program that
determines whether a given hardware interface is present on a workstation.
PRESENCECHECK - A keyword, interpreted by the DDINSTAL utility, to determine
whether to process the device driver profile file, based on the return code
from PRESENCECHECK.
printer driver - A file that describes the physical characteristics of a
printer, plotter, or other peripheral device, and is used to convert
graphics and text into device-specific data at the time of printing or
plotting.
Print Manager - In the Presentation Manager, the part of the spooler that
manages the spooling process. It also allows the user to view print queues
and to manipulate print jobs.
privilege level - A method of protection that allows only certain program
instructions to be used by certain programs.
program group - Several programs that can be acted upon as a single entity.
protect mode - A method of program operation that limits or prevents access to
certain instructions or areas of storage. Contrast with real mode.
push - To add an item to the top of a pushdown list. Contrast with pop.
ΓòÉΓòÉΓòÉ <hidden> Glossary - Q ΓòÉΓòÉΓòÉ
Q
queued device context - A logical description of a data destination (for
example, a printer or plotter) where the output is to go through the
spooler. See also device context.
ΓòÉΓòÉΓòÉ <hidden> Glossary - R ΓòÉΓòÉΓòÉ
R
read-only memory basic input/output system (ROM-BIOS) - Microcode in read-only
memory that controls basic input/output operations such as interactions with
cassettes, diskette drives, hard disk drives, and the keyboard. See also
BIOS, NetBIOS.
Note: ROM BIOS allows the user to write programs and add or remove devices
without concern for characteristics such as device addresses.
real mode - In the OS/2 operating system, a method of program operation that
does not limit or prevent access to any instructions or areas of storage.
The operating system loads the entire program into storage and gives the
program access to all system resources.
reentrant - The attribute of a program or routine that allows the same copy of
the program or routine to be used concurrently by two or more tasks.
removable-media indicator - A flag (bit) indicating that a device permits media
removal.
resource - The means of providing extra information used in the definition of a
window. A resource can contain definitions of fonts, templates, accelerators
and mnemonics; the definitions are held in a resource file.
resurrection - The Presentation Manager event that occurs when switched back
from a full-screen DOS or WIN-OS/2 session.
RETF - Return far.
reverse video - A form of highlighting a character, field, or cursor by
reversing the color of the character, field, or cursor with its background;
for example, changing a red character on a black background to a black
character on a red background.
ROM BIOS - Read-Only Memory Basic Input/Output System.
ROP - Raster operation.
RTC - Real-Time Clock.
ΓòÉΓòÉΓòÉ <hidden> Glossary - S ΓòÉΓòÉΓòÉ
S
SBCS - Single-byte character set
SCB - See subsystem control block architecture.
screen device context - A logical description of a data destination that is a
particular window on the screen. See also device context.
SCSI - Small Computer System Interface.
seamless windows - An architecture contained within OS/2 which permits one or
more applications to share windowed desktop graphical space and other
resources, while executing concurrently. Application session windows managed
by seamless windows can share border information, and pointing device
transitions from session to session are handled smoothly and transparently.
second-party DMA adapter - See DMA slave.
semaphore - (1) A variable that is used to enforce mutual exclusion. (T) (2)
An indicator used to control access to a file; for example, in a multiuser
application, a flag that prevents simultaneous access to a file. (3) An
entity used to control access to system resources. Processes can be locked
to a resource with semaphores if the processes follow certain programming
conventions.
sense data - Data which describes an I/O error as defined by the ANSI SCSI
specifications.
single-byte character set (SBCS) - A character set in which each character is
represented by a one-byte code. Contrast with double-byte character set.
Small Computer System Interface (SCSI) - An input and output bus that provides
a standard interface between the OS/2 multimedia system and peripheral
devices.
spline curve - In computer graphics, a shape created when a user specifies a
series of points and the computer software draws a curve that smoothly
approaches those points.
spooler - A program that intercepts data going to a device driver and writes it
to a disk. The data is later printed or plotted when the required device is
available. A spooler prevents output from different sources from being
intermixed.
synchronous - Pertaining to two or more processes that depend upon the
occurrence of specific events such as common timing signals.
ΓòÉΓòÉΓòÉ <hidden> Glossary - T ΓòÉΓòÉΓòÉ
T
text window - See VIO window.
thread - The smallest unit of operation to be performed within a process.
thunk - term used to describe the process of address conversion, stack, and
structure realignment that is necessary when passing control between 16-bit
and 32-bit modules.
thunk layer - An interface that converts 32-bit parameters to 16-bit
parameters, and maps linear addresses to segmented addresses.
time slice - (1) The period of processing time allocated for running a
program. (2) An interval of time on the processing unit allocated for use in
performing a task. After the interval has expired, processing unit time is
allocated to another task, so a task cannot monopolize processing unit time
beyond a fixed limit.
tuple - In a relational database, a part of a relation that uniquely describes
an entity and its attribute.
ΓòÉΓòÉΓòÉ <hidden> Glossary - U ΓòÉΓòÉΓòÉ
U
unnamed pipe - A circular buffer created in memory; used by related processes
to communicate with one another. Contrast with named pipe.
ΓòÉΓòÉΓòÉ <hidden> Glossary - V ΓòÉΓòÉΓòÉ
V
VBIOS - Virtual BIOS device driver
VCMOS - Virtual CMOS device driver
VDD - Virtual device driver
VDH - Virtual video Device Handler
VDM - Virtual DOS Machine; use DOS session.
VDMA - Virtual Direct Memory Access device driver
VDSK - Virtual hard DiSK device driver
video graphics adapter (VGA) - A computer adapter that provides high-resolution
graphics and a total of 256 colors.
VIO - Virtual Input/Output
VIRR - Virtual Interrupt Request Register
Virtual Device Driver (VDD) - In the OS/2 operating system, a type of device
driver used by DOS programs running in a DOS session to access devices, such
as the screen or mouse, which must be shared with other processes in the
system. The virtual device driver maps DOS device commands to the normal
(physical) device driver under OS/2 2.0 and later versions of the operating
system.
virtual DevHlp (VDH) - Kernel (linear memory, paging, hardware interrupt, event
control, port control) services provided to virtual device drivers.
virtual I/O (VIO) - A facility that pages data into and out of external page
storage.
virtual memory - Synonym for virtual storage.
Virtual Programmable Interrupt Controller - Virtualizes the 8259 Programmable
Interrupt Controller (PIC). A special virtual device driver, in that it
provides services to other virtual device drivers.
virtual storage - Addressable space that is apparent to the user as the
processor storage space, from which the instructions and the data are mapped
into the processor storage locations. Synonymous with virtual memory.
visible region - A window's presentation space clipped to the boundary of the
window and the boundaries of any overlying window.
VPIC - Virtual Programmable Interrupt Controller device driver.
VRAM - Video Random-Access Memory.
VTIMER - Virtual TIMER device driver.
V86 mode - Virtual 8086 mode of the 80386 CPU.
ΓòÉΓòÉΓòÉ <hidden> Glossary - W ΓòÉΓòÉΓòÉ
W
window coordinates - A set of coordinates by which a window position or size is
defined; measured in device units, or pels.
ΓòÉΓòÉΓòÉ <hidden> Glossary - X ΓòÉΓòÉΓòÉ
X
There are no glossary terms for this initial letter.
ΓòÉΓòÉΓòÉ <hidden> Glossary - Y ΓòÉΓòÉΓòÉ
Y
There are no glossary terms for this initial letter.
ΓòÉΓòÉΓòÉ <hidden> Glossary - Z ΓòÉΓòÉΓòÉ
Z
There are no glossary terms for this initial letter.
ΓòÉΓòÉΓòÉ <hidden> ΓòÉΓòÉΓòÉ
This chapter is based in part on the VESA SVPMI (Video Electronics Standards
Association Super VGA Protect Mode Interface) proposal.