README.TXT 

NOTES ON VAFC driver
====================
tri_afc.drv is a Windows installable driver. It can be installed or  
uninstalled by using Windows Control Panel.    

After VAFC driver is installed, the vesa.afc= line is added into the 
[drivers] section of SYSTEM.INI as follows:
	.
	.
	.
	[drivers]
	vesa.afc=tri_vafc.drv
	.
	.
	.
and the line tri_vafc.drv=. . . is added in the [drivers.desc] of CONTROL.INI 
as follows:        
	.
	.
	.
	[drivers.desc]
	tri_vafc.drv=Trident VAFC Driver
	.
	.
	.



The VAFC distribute disk contains the following files:

	tri_vafc.drv
	vesa_afc.h
	tri_afc.h
	readme.txt      



To access VAFC driver functions, open VAFC driver first, then use
VAFC functions, and close the driver after the application completely 
finishes the access to VAFC functions.

To open VAFC driver, call OpenDriver function. The syntex of OpenDriver
is as follows:
		
	HDRVR OpenDriver(lpDriverName, lpSectionName, lParam)
	LPCSTR lpDriverName;    /* address of driver name       */
	LPCSTR lpSectionName;   /* address of .INI file section name    */
	LPARAM lParam;                  /* address of driver-specific information       */
	
An example is:

	HDRVR   far     hDriver = NULL;         /* the handle of the driver */  
    hDriver = OpenDriver((LPSTR)"vesa.afc", NULL, 0L)

To close VAFC driver, call CloseDriver. The syntex of CloseDriver is 
as follows:

	LRESULT CloseDriver(hdrvr, lParam1, lParam2)
	HDRVR hdrvr;                    /* handle of installable driver */
	LPARAM lParam1;                 /* driver-specific data */
	LPARAM lParam2;                 /* driver-specific data */ 
	
An example is:

	CloseDriver(hriver, 0L, 0L);
	
	
The VAFC functions (and their corresponding messages) provided by 
Trident VAFC driver are listed below:   

// Gets the vendor and device information for the VAFC graphics subsystem.
BOOL STD_GET_DEVCAPS(LPVESA_DEVICECAPS);        // DRV_VAFC_GET_DEVCAPS

// Gets the current color space format of the connector
BOOL STD_GET_COLOR_SPACE(DWORD far *);          // DRV_VAFC_GET_COLOR_SPACE

// Sets the color space format of the connector
BOOL STD_SET_COLOR_SPACE(DWORD);                        // DRV_VAFC_SET_COLOR_SPACE

// Gets the current bus transfer width of the connctor
BOOL STD_GET_BUS_WIDTH(DWORD far *);            // DRV_VAFC_GET_BUS_WIDTH

// sets the bus transfer width of the connector
BOOL STD_SET_BUS_WIDTH(DWORD);                          // DRV_VAFC_SET_BUS_WIDTH                 

// Gets the current data mode of the connctor
BOOL STD_GET_DATA_MODE(DWORD far *);            // DRV_VAFC_GET_DATA_MODE         

// Sets the data mode of the connector
BOOL STD_SET_DATA_MODE(DWORD);                          // DRV_VAFC_SET_DATA_MODE        

// Gets the current clock mode of the connector
BOOL STD_GET_CLOCK_MODE(DWORD far *);           // DRV_VAFC_GET_CLOCK_MODE

// Sets the clock mode of the connector
BOOL STD_SET_CLOCK_MODE(DWORD);                         // DRV_VAFC_SET_CLOCK_MODE        

//Gets the overlay color information currently used by the graphics subsystem
BOOL STD_GET_OVERLAY_COLOR_INFO(LPVAFCOVERLAY_CONTROLS, DWORD);
									// DRV_VAFC_GET_OVERLAY_COLOR_INFO              

// Sets the overlay color information used by the graphics subsystem
BOOL STD_SET_OVERLAY_COLOR_INFO(LPVAFCOVERLAY_CONTROLS, DWORD);
									// DRV_VAFC_SET_OVERLAY_COLOR_INFO
								    
// Gets the window coordinates for the display window, currently not supported                                                                    
BOOL STD_GET_WINDOW_RECT(LPRECT);       // DRV_VAFC_GET_WINDOW_RECT                    

// Sets the window coordinates for the displat window, currently not supported
BOOL STD_SET_WINDOW_RECT(LPRECT);       // DRV_VAFC_SET_WINDOW_RECT                    

// Gets some miscellaneous graphics information from the graphics subsystem 
// based on the current mode of graphics operation, currently not supported
BOOL STD_GET_GRAPHICS_INFO(LPVAFCGRAPHICS_INFO);
									// DRV_VAFC_GET_GRAPHICS_INFO  

// Gets all available video color spaces from the VAFC driver
BOOL STD_QUERY_COLOR_SPACES(DWORD far *, DWORD);
									// DRV_VAFC_QUERY_COLOR_SPACES

// Gets the current extended mode parameters, currently not supported
BOOL STD_GET_EXTENDED_SETUP(LPVAFCEXTENDED_INFO);
									// DRV_VAFC_GET_EXTENDED_SETUP

// Sets the extended mode parameters, currently not supported
BOOL STD_SET_EXTENDED_SETUP(LPVAFCEXTENDED_INFO);
									// DRV_VAFC_SET_EXTENDED_SETUP

// Gets the preferred setup of the VAFC subsystem for the graphics subsystem,
// currently not supported
BOOL STD_GET_PREFERRED_SETUP(LPVAFCPREFERRED_PARAMETERS);                   
				    // DRV_VAFC_GET_PREFERRED_SETUP
				    
// Gets the last error code and clears it
BOOL STD_GET_ERROR_CODE(DWORD far *);   // DRV_VAFC_GET_ERROR

The Trident AFC functions (and their corresponding messages) provided by 
Trident VAFC driver are listed below:   

// Gets Video overlay key type
BOOL    TRI_GET_KEY_TYPE(DWORD far *);  // DRV_VAFC_GET_KEY_TYPE

// Sets Video overlay key type
BOOL    TRI_SET_KEY_TYPE(DWORD);                // DRV_VAFC_SET_KEY_TYPE

// Gets Pixel data signal delay adjustment
BOOL    TRI_GET_PCLK_DELAY(DWORD far *);// DRV_VAFC_GET_PCLK_DELAY

// Sets Pixel data signal delay adjustment      
BOOL    TRI_SET_PCLK_DELAY(DWORD);              // DRV_VAFC_SET_PCLK_DELAY  

// Gets AFC control status
BOOL    TRI_GET_CLK(LPVAFCCLK_CONTROLS, DWORD); // DRV_VAFC_GET_CLK

// Sets AFC control status
BOOL    TRI_SET_CLK(LPVAFCCLK_CONTROLS, DWORD); // DRV_VAFC_SET_CLK

// Gets HSYNC Delay
BOOL    TRI_GET_SYNC_AFCPROS(DWORD far *);              // DRV_VAFC_GET_SYNC_AFCPROS

// Sets HSYNC Delay
BOOL    TRI_SET_SYNC_AFCPROS(DWORD);                    // DRV_VAFC_SET_SYNC_AFCPROS



All these VAFC and Trident AFC can be invoked by send some message to VAFC 
driver. The syntex of SendDriverMessage is as follows:

	LRESULT SendDriverMessage(hdrvr, msg, lParam1, lParam2)
	HDRVR hdrvr;    /* handle of installable driver */
	UINT msg;       /* message      */
	LPARAM lParam1; /* first message parameter      */
	LPARAM lParam2; /* second message parameter     */


Here are some examples:
	SendDriverMessage(hDriver, DRV_VAFC_GET_DEVCAPS, 
		(LPARAM)(LPVESA_DEVICECAPS)&device_caps, 0L);   

	SendDriverMessage(hDriver, DRV_VAFC_SET_COLOR_SPACE, 
		(LPARAM)color_space, 0L); 

	SendDriverMessage(hDriver, DRV_VAFC_GET_COLOR_SPACE, 
		(LPARAM)(DWORD far *)&color_space, 0L);         

	SendDriverMessage(hDriver, DRV_VAFC_GET_ERROR, (LPARAM)&dWError, 0L);
