/*--------------------------------------------------------------
*                                                              *
*		Header for DOLMEN-XBIOS-Library (rev. 1Beta)               *
*		for PureC                                                  *
*		Auteur: David REN                                         *
*                                                              *
*		Last update, dernire Mise  Jour: 23.02.98	               *
*                                                              *
*   Tabulation texte = 2,   Tab setting = 2                    *
*                                                              *
*   DOLMEN is trademark of CENTEK compagny                     *
*                                                              *
*--------------------------------------------------------------*/

#ifndef __DOLMEN__
#define __DOLMEN__

typedef struct
{
	int	x;
	int	y;
} VPOS;

typedef struct
{
	long sys_id;				/* nom de la librairie ou un numro ex: "_VID" */
	long sys_ver;				/* version de la librairie ex: 1.0.1 (0x101) */
	long sys_date;			/* date de la librairie ex: 0x01061997(01/06/1997) */
  char *sys_version;	/* pointeur sur un texte de 4 lignes de 40
  											 caractres. Un CR+LF termine chaque ligne.
  											 Le texte est termin	par un 0. */
	long *sys_install;	/* routine d'installation du driver */
	long *sys_open;			/* routine appel pour  chaque ouverture d'une station */
	long *sys_close;		/* ... la fermeture */
} DOLMEN_DRV_HEADER;

typedef struct
{
	DOLMEN_DRV_HEADER Head;
	long *vid_maj_vars;						/* pointeur sur les variables principales */
	long *vid_cur_vars;						/* pointeur sur les variables courantes */
	void (*vid_shut_down)(void);	/* routine d'extinction	 */
	void (*vid_wake_up)(void);		/* routine de reveil     */
} COOKIE_VID;

typedef struct
{
	long cnts_name;			/* nom du cookie */
	long cnts_version;	/* numro de la version, ex: 1.0.1 (0x101) */
	char cnts_kbd_on;		/* flag activant le reveil au clavier */
	char cnts_midi_on;	/* idem pour le midi */
	char cnts_mouse_on;	/* idem pour la souris */
	char cnts_joy_on;		/* idem_pour les joysticks */
	char cnts_tst_eco;  /* combinaison de touches pour activer l'conomiseur */
	char cnts_turbo_on; /* valide le turbo de la souris */
} COOKIE_CNTS;


/* mode code xxxx xxxF SOPV 8NNN */
typedef struct 
{
	unsigned int Plan:3;						/* bit 0  2: NNN (nombre de plan) */
	unsigned int _80Col:1;					/* bit 3: Flag 80 colonnes (8)     */
	unsigned int VGA:1;							/* bit 4: Flag VGA (V) */
	unsigned int Pal:1;							/* bit 5: Flag Pal (P) */
	unsigned int Overscan:1;				/* bit 6: Flag overscan (O) */
	unsigned int STComp:1;					/* bit 7: Flag ST compatible (S) */
	unsigned int Vertical:1;				/* bit 8: Flag Vertical (F) */
	unsigned int NRJStart:1;				/* bit 9: mode energy star actif ou non */
	unsigned int Eco:1;							/* bit 10: conomiseur actif ou non */
	unsigned int Virtual:1;					/* bit 11: cran virtuel actif ou non */
	unsigned int ExtClock:1;				/* bit 12: horloge externe 32/36MHz (CT2) */
	unsigned int ExtClockEnable:1;	/* bit 13: validation de l'horloge externe */
	unsigned int StandardResol:1;		/* bit 14: rsolution standard */
	unsigned int DefaultMode:1;			/* bit 15: mode vido par dfaut */
} VDO_MODE;

typedef struct
{
	int V_Hdl;				/* handle du mode vido 				*/
	VDO_MODE V_mode;	/* mode vido 									*/
	int V_physw;			/* largeur physique 						*/
	int V_physh;			/* hauteur physique 						*/
	int V_plan;				/* nombre de plan 							*/
	int V_logw;				/* largeur virtuelle 						*/
	int V_logh;				/* hauteur virtuelle 						*/
	int V_eco;				/* dlai de l'conomiseur 			*/
	int V_eco2;				/* dlai pour l'energy star 		*/
	char V_name[33];	/* nom du mode  32+1 nul 				*/
	char Reserved;		/* Rserv pour un usage futur 	*/
	long V_length;	 	/* taille du buffer 						*/
} VDO_PARAM;

void 	Vread(VDO_PARAM *);
int 	Vwrite(int InitVDI, VDO_PARAM *InParam, VDO_PARAM *OutParam);
void 	Vattrib (VDO_PARAM *InParam, VDO_PARAM *OutParam);
void 	Vcreate (VDO_PARAM *InParam, VDO_PARAM *OutParam);
int 	Vdelete(int Handle);
int 	Vfirst(VDO_PARAM *Mask, VDO_PARAM *Mode);
int 	Vnext(VDO_PARAM *Mask, VDO_PARAM *Mode);
int 	Vvalid(int Handle);
int 	Vload(void);
int 	Vsave(void);
int 	Vopen(void);
int 	Vclose(void);
int 	Vscroll(int ScrollMode);
long 	Voffset(void);
long 	Vseek(int Xpos, int Ypos);
int 	Vlock(int Cmd);
int 	SetMon(int MontType);
int 	MultiMon(int Cmd);
int 	SizeComp(int Cmd);
int 	VmodeValid(int Mode);

#endif