VioSetState (OS/2 1.x)

This call performs one of the following functions; set palette registers, sets the overscan (border) colour, set the blink/background intensity switch, set color registers, set the underline location, or set the target VioSetMode display configuration.

Syntax
VioSetState (RequestBlock, VioHandle)

Parameters

 * RequestBlock (PVOID) - input : Address of the video state structures consisting of six different structures depending on the request type:
 * 0 - Set palette registers
 * 1 - Set overscan (border) color
 * 2 - Set blink/background intensity switch
 * 3 - Set color registers
 * 4 - Reserved
 * 5 - Set underline location
 * 6 - Set target VioSetMode display configuration
 * 7 - Reserved

The six structures, depending on request type, are:
 * VioHandle (HVIO) - input : Reserved word of 0s.

Return Code

 * rc (USHORT) - return:Return code descriptions are:
 * 0 NO_ERROR
 * 355 ERROR_VIO_MODE
 * 421 ERROR_VIO_INVALID_PARMS
 * 436 ERROR_VIO_INVALID_HANDLE
 * 438 ERROR_VIO_INVALID_LENGTH
 * 465 ERROR_VIO_DETACHED
 * 494 ERROR_VIO_EXTENDED_SG

Family API Considerations
Request type = 6, Set Target VioSetMode Display Configuration, and request type = 5, Set Underline Location, are not supported in the family API.

Some options operate differently in the DOS mode than in the OS/2 mode. Therefore, the following considerations applies to VioSetMode when coding for the DOS mode:
 * VioSetMode clears the screen.

C
 typedef struct _VIOPALSTATE { USHORT cb;                   /* Length of this structure in bytes */ USHORT type;                 /* Request type=0 get palette registers */ USHORT iFirst;               /* First palette register to return */ USHORT acolor[1];            /* Color value palette register */ }VIOPALSTATE; typedef VIOPALSTATE far *PVIOPALSTATE;

typedef struct _VIOOVERSCAN { USHORT cb;                   /* Length of this structure */ USHORT type;                 /* Request type=1 get overscan (border) color */ USHORT color;                /* Color value */ }VIOOVERSCAN; typedef VIOOVERSCAN far *PVIOOVERSCAN;

typedef struct _VIOINTENSITY { USHORT cb;                   /* Length of this structure */ USHORT type;                 /* Request type=2 get blink/background intensity switch */ USHORT fs;                   /* Value of blink/background switch */ }VIOINTENSITY; typedef VIOINTENSITY far *PVIOINTENSITY;

typedef struct _VIOCOLORREG {  /* viocreg */ USHORT cb; USHORT type; USHORT firstcolorreg; USHORT numcolorregs; PCH    colorregaddr; }VIOCOLORREG; typedef VIOCOLORREG far *PVIOCOLORREG;

typedef struct _VIOSETULINELOC { /* viouline */ USHORT cb; USHORT type; USHORT scanline; }VIOSETULINELOC; typedef VIOSETULINELOC far *PVIOSETULINELOC;

typedef struct _VIOSETTARGET { /* viosett */ USHORT cb; USHORT type; USHORT defaultalgorithm; }VIOSETTARGET; typedef VIOSETTARGET far *PVIOSETTARGET;


 * 1) define INCL_VIO

USHORT rc = VioSetState(RequestBlock, VioHandle);

PVOID           RequestBlock;  /* Request block */ HVIO            VioHandle;     /* Video handle */

USHORT          rc;            /* return code */ 

MASM
 VIOPALSTATE struc viopal_cb              dw ? ;Length of this structure in bytes viopal_type            dw ? ;Request type=0 get palette registers viopal_iFirst          dw ? ;First palette register to return viopal_acolor dw 1  dup (?) ;Color value palette register VIOPALSTATE ends

VIOOVERSCAN struc vioos_cb               dw ? ;Length of this structure vioos_type             dw ? ;Request type=1 get overscan (border) color vioos_color            dw ? ;Color value VIOOVERSCAN ends

VIOINTENSITY struc vioint_cb              dw ? ;Length of this structure vioint_type            dw ? ;Request type=2 get blink/background ; intensity switch vioint_fs              dw ? ;Value of blink/background switch VIOINTENSITY ends

VIOCOLORREG struc viocreg_cb             dw ? ; viocreg_type            dw ? ; viocreg_firstcolorreg   dw ? ; viocreg_numcolorregs    dw ? ; viocreg_colorregaddr    dd ? ; VIOCOLORREG ends

VIOSETULINELOC struc viouline_cb            dw ? ; viouline_type           dw ? ; viouline_scanline       dw ? ; VIOSETULINELOC ends

VIOSETTARGET struc viosett_cb              dw ? ; viosett_type             dw ? ; viosett_defaultalgorithm dw ? ; VIOSETTARGET   ends

EXTRN VioSetState:FAR INCL_VIO           EQU 1

PUSH@ OTHER   RequestBlock  ;Request block PUSH  WORD    VioHandle     ;Video handle CALL  VioSetState

Returns WORD 