This is an old revision of the document!
This is part of Family API which allow to create dual-os version of program runs under OS/2 and DOS
Note: This is legacy API call. It is recommended to use 32-bit equivalent
Video Subsystem
Application | ||||||
VIOCALLS | ||||||
VIO router | ||||||
Alternate Video Subsystem | ||||||
VIO router | ||||||
Base Video Subsystem | ||||||
OS/2 Video subsystem placed in VIOCALLS.DLL by default (or some another place for other OSes). Called VIO function passes control to VIO router function which, depends on registered functions replacement, routes call to Base Video Subsystem (BVSCALLS.DLL) or to registered Alternate Video Subsystem.
Such route in original OS/2 1.x serie. First versions doesn't include BVH and Global Video Sybsystem hook. In OS/2 1.2 version includes them. Base Video Subsystem utilises Base Video Handlers (BVH*.DLL). Base Vide Handler is a sort of video hardware abstraction layer. Global Video Subsystem allow to add notification hooks after VioRoute call.
Application | ||||||
VIOCALLS | ||||||
DOSCALLS | ||||||
VIO router | ||||||
Alternate Video Subsystem | ||||||
VIO router | ||||||
Global Video Subsystem | ||||||
VIO router | ||||||
Base Video Subsystem | ||||||
DOSCALLS | ||||||
Base Video Handlers | ||||||
In late OS/2 versions (3.x?) actual code of Video subsystem and Base Video Subsysten was moved to DOSCALLS.DLL (see Fig). OS/2 Video Subsystem is 16-bit. Later three independed versions of 32-to-16 bit wrapper subsystems was developed (See Fig)
16/32-bit Application | 32-bit Application | 32-bit Application | 32-bit Application | |||||||||||||||||||||||||||
EMXWRAP | OS2CHAR2 | CON3216 | ||||||||||||||||||||||||||||
VIOCALLS | ||||||||||||||||||||||||||||||
DOSCALLS | ||||||||||||||||||||||||||||||
VIO router | Alternate Video Subsystem/Global Video Subsystem | |||||||||||||||||||||||||||||
Base Video Subsystem | ||||||||||||||||||||||||||||||
DOSCALLS | ||||||||||||||||||||||||||||||
Base Video Handlers | ||||||||||||||||||||||||||||||
Under DOS original IBM Family API or JdeBP's Family API applications uses following call route
Application | ||||||
API.LIB | ||||||
Under HX DOS Extender OS/2 Emulation Family API applications uses following route
Application | ||||||
VIOCALLS | ||||||
Under DOS osFree Family API supports following route
Application | ||||||||||||||||
VIOCALLS | ||||||||||||||||
VIO router | Alternate Video Subsystem | |||||||||||||||
Base Video Subsystem | ||||||||||||||||
osFree attempts to combine all aproaches and provide following callflow
16/32-bit Application | 32-bit Application | 32-bit Application | 32-bit Application | |||||||||||||||||||||||||||
VIOCALLS | CON3216 | OS2CHAR2 | ||||||||||||||||||||||||||||
DOSCALLS | EMXWRAP | |||||||||||||||||||||||||||||
SUB32 | ||||||||||||||||||||||||||||||
VIO router | ||||||||||||||||||||||||||||||
Alternate Video Subsystem | ||||||||||||||||||||||||||||||
VIO router | ||||||||||||||||||||||||||||||
Global Video Subsystem | ||||||||||||||||||||||||||||||
Base Video Subsystem | ||||||||||||||||||||||||||||||
DOSCALLS | ||||||||||||||||||||||||||||||
Base Video Handlers | ||||||||||||||||||||||||||||||