home *** CD-ROM | disk | FTP | other *** search
/ Il CD di internet / CD.iso / SOURCE / D / SVGALIB / SVGALIB1.TAR / svgalib / src / driver.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-02-12  |  3.8 KB  |  140 lines

  1. /* VGAlib version 1.2 - (c) 1993 Tommy Frandsen            */
  2. /*                                   */
  3. /* This library is free software; you can redistribute it and/or   */
  4. /* modify it without any restrictions. This library is distributed */
  5. /* in the hope that it will be useful, but without any warranty.   */
  6.  
  7. /* Multi-chipset support Copyright (c) 1993 Harm Hanemaayer */
  8. /* partially copyrighted (C) 1993 by Hartmut Schirmer */
  9.  
  10. #ifndef _DRIVER_H
  11. #define _DRIVER_H
  12.  
  13. #include <stdio.h>
  14. #include "libvga.h"
  15. #include "timing.h"
  16. #include "accel.h"
  17.  
  18. #define MAX_REGS 269
  19.  
  20. typedef struct {
  21. /* Basic functions. */
  22.     int (*saveregs)();
  23.     void (*setregs)();
  24.     void (*unlock)();
  25.     void (*lock)();
  26.     int (*test)();
  27.     int (*init)();
  28.     void (*setpage)();
  29.     void (*setrdpage)();
  30.     void (*setwrpage)();
  31.     int (*setmode)();
  32.     int (*modeavailable)();
  33.     void (*setdisplaystart)();
  34.     void (*setlogicalwidth)();
  35.     void (*getmodeinfo)();
  36. /* Obsolete blit functions. */
  37.     void (*bitblt)();
  38.     void (*imageblt)();
  39.     void (*fillblt)(); 
  40.     void (*hlinelistblt)();
  41.     void (*bltwait)();
  42. /* Other functions. */
  43.     int (*ext_set)();
  44.     int (*accel)();
  45.     int (*linear)();
  46.     AccelSpecs *accelspecs;
  47. } DriverSpecs;
  48.  
  49. extern DriverSpecs vga_driverspecs;
  50. extern DriverSpecs cirrus_driverspecs;
  51. extern DriverSpecs et4000_driverspecs;
  52. extern DriverSpecs tvga8900_driverspecs;
  53. extern DriverSpecs oak_driverspecs;
  54. extern DriverSpecs ega_driverspecs;
  55. extern DriverSpecs s3_driverspecs;
  56. extern DriverSpecs mach32_driverspecs;
  57. extern DriverSpecs et3000_driverspecs;
  58. extern DriverSpecs gvga6400_driverspecs;
  59. extern DriverSpecs ark_driverspecs;
  60. extern DriverSpecs ati_driverspecs;
  61.  
  62. extern DriverSpecs *driverspecs;
  63. extern DriverSpecs *driverspecslist[];
  64.  
  65. enum { 
  66.     CHIPSET_SAVEREGS = 0, CHIPSET_SETREGS, CHIPSET_UNLOCK, CHIPSET_LOCK,
  67.     CHIPSET_TEST, CHIPSET_INIT, CHIPSET_SETPAGE, CHIPSET_SETRDPAGE,
  68.     CHIPSET_SETWRPAGE, CHIPSET_SETMODE,
  69.     CHIPSET_MODEAVAILABLE, CHIPSET_SETDISPLAYSTART,
  70.     CHIPSET_SETLOGICALWIDTH, CHIPSET_GETMODEINFO,
  71.     CHIPSET_BITBLT, CHIPSET_IMAGEBLT, CHIPSET_FILLBLT,
  72.     CHIPSET_HLINELISTBLT, CHIPSET_BLTWAIT,
  73.     CHIPSET_EXT_SET, CHIPSET_ACCEL, CHIPSET_LINEAR
  74. };
  75.  
  76. enum {
  77.     LINEAR_QUERY_BASE, LINEAR_QUERY_GRANULARITY, LINEAR_QUERY_RANGE,
  78.     LINEAR_ENABLE, LINEAR_DISABLE
  79. };
  80.  
  81. extern int CRT_I;
  82. extern int CRT_D;
  83. extern int IS1_R;
  84. extern int __svgalib_driver_report;    /* driverreport */
  85. extern int __svgalib_videomemoryused;    /* videomemoryused */
  86. extern int __svgalib_critical;
  87. extern int __svgalib_chipset;
  88. extern int __svgalib_monitortype;
  89. extern int __svgalib_modeinfo_linearset;
  90. extern const int __svgalib_max_modes;
  91.  
  92. void __svgalib_read_options(char **commands, char *(*func)(int ind,int mode));
  93.  
  94. /* ----------------------------------------------------------------------
  95. ** A modetable holds a pair of values 
  96. ** for each mode :
  97. **
  98. **    <mode number> <pointer to registers>
  99. **
  100. ** the last entry is marked by 
  101. **  
  102. **    <any number>  <NULL>
  103. */
  104.  
  105. typedef struct {
  106.    unsigned short mode_number;
  107.    const unsigned char  *regs;
  108. } ModeTable;
  109.  
  110. #define DISABLE_MODE      ((unsigned char *)1)
  111. #define OneModeEntry(res) {G##res,g##res##_regs}
  112. #define DisableEntry(res) {G##res,DISABLE_MODE}
  113. #define END_OF_MODE_TABLE { 0, NULL }
  114.  
  115. extern const unsigned char *__vga_mode_in_table(const ModeTable *modes, int mode);
  116. #define LOOKUPMODE __vga_mode_in_table
  117.  
  118. /* ---------------------------------------------------------------------- */
  119.  
  120. extern int __vga_hicolor(int dac_type, int mode);
  121. /* Enters hicolor mode - 0 for no hi, 1 for 15 bit, 2 for 16, 3 for 24 */
  122. /* For any modes it doesn't know about, etc, it attempts to turn hicolor off. */
  123.  
  124.  
  125. #define STD_DAC        0
  126. #define HI15_DAC    1
  127. #define HI16_DAC    2
  128. #define TC24_DAC    3
  129.  
  130. /* ----------------------------------------------------------------------
  131. ** regextr.h  -  extract graphics modes and register information
  132. **               from C source file
  133. */
  134.  
  135. extern void __vga_readmodes(FILE *inp, ModeTable **modes, int *dac, unsigned *clocks);
  136.  
  137. #endif
  138.  
  139.  
  140.