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

  1. /* SVGAlib, Copyright 1993 Harm Hanemaayer */
  2. /* VGAlib version 1.2 - (c) 1993 Tommy Frandsen */
  3. /* partially copyrighted (C) 1993 by Hartmut Schirmer */
  4.  
  5. /* Internal definitions. */
  6.  
  7. #ifndef _LIBVGA_H
  8. #define _LIBVGA_H
  9.  
  10. /* --------------------- Macro definitions shared by library modules */
  11.  
  12. /* VGA index register ports */
  13. #define CRT_IC  0x3D4   /* CRT Controller Index - color emulation */
  14. #define CRT_IM  0x3B4   /* CRT Controller Index - mono emulation */
  15. #define ATT_IW  0x3C0   /* Attribute Controller Index & Data Write Register */
  16. #define GRA_I   0x3CE   /* Graphics Controller Index */
  17. #define SEQ_I   0x3C4   /* Sequencer Index */
  18. #define PEL_IW  0x3C8   /* PEL Write Index */
  19. #define PEL_IR  0x3C7   /* PEL Read Index */
  20.  
  21. /* VGA data register ports */
  22. #define CRT_DC  0x3D5   /* CRT Controller Data Register - color emulation */
  23. #define CRT_DM  0x3B5   /* CRT Controller Data Register - mono emulation */
  24. #define ATT_R   0x3C1   /* Attribute Controller Data Read Register */
  25. #define GRA_D   0x3CF   /* Graphics Controller Data Register */
  26. #define SEQ_D   0x3C5   /* Sequencer Data Register */
  27. #define MIS_R   0x3CC   /* Misc Output Read Register */
  28. #define MIS_W   0x3C2   /* Misc Output Write Register */
  29. #define IS1_RC  0x3DA   /* Input Status Register 1 - color emulation */
  30. #define IS1_RM  0x3BA   /* Input Status Register 1 - mono emulation */
  31. #define PEL_D   0x3C9   /* PEL Data Register */
  32. #define PEL_MSK 0x3C6    /* PEL mask register */
  33.  
  34. /* 8514/MACH regs we need outside of the mach32 driver.. */
  35. #define PEL8514_D    0x2ED
  36. #define PEL8514_IW    0x2EC
  37. #define PEL8514_IR    0x2EB
  38. #define PEL8514_MSK    0x2EA
  39.  
  40. /* EGA-specific registers */
  41.  
  42. #define GRA_E0    0x3CC    /* Graphics enable processor 0 */
  43. #define GRA_E1    0x3CA    /* Graphics enable processor 1 */
  44.  
  45. /* standard VGA indexes max counts */
  46. #define CRT_C   24      /* 24 CRT Controller Registers */
  47. #define ATT_C   21      /* 21 Attribute Controller Registers */
  48. #define GRA_C   9       /* 9  Graphics Controller Registers */
  49. #define SEQ_C   5       /* 5  Sequencer Registers */
  50. #define MIS_C   1       /* 1  Misc Output Register */
  51.  
  52. /* VGA registers saving indexes */
  53. #define CRT     0               /* CRT Controller Registers start */
  54. #define ATT     CRT+CRT_C       /* Attribute Controller Registers start */
  55. #define GRA     ATT+ATT_C       /* Graphics Controller Registers start */
  56. #define SEQ     GRA+GRA_C       /* Sequencer Registers */
  57. #define MIS     SEQ+SEQ_C       /* General Registers */
  58. #define EXT     MIS+MIS_C       /* SVGA Extended Registers */
  59.  
  60. /* Shorthands for chipset (driver) specific calls */
  61. #define chipset_saveregs driverspecs->saveregs
  62. #define chipset_setregs driverspecs->setregs
  63. #define chipset_unlock driverspecs->unlock
  64. #define chipset_test driverspecs->test
  65. #define chipset_setpage driverspecs->setpage
  66. #define chipset_setmode driverspecs->setmode
  67. #define chipset_modeavailable driverspecs->modeavailable
  68. #define chipset_getmodeinfo driverspecs->getmodeinfo
  69.  
  70. /* Shorthands for internal variables and functions */
  71. #define CI    __svgalib_cur_info
  72. #define GM    __svgalib_graph_mem
  73. #define CM    __svgalib_cur_mode
  74. #define VMEM    __svgalib_videomemoryused
  75. #define DREP    __svgalib_driver_report
  76. #define CRITICAL __svgalib_critical
  77. #define COL    __svgalib_cur_color
  78. #define CHIPSET __svgalib_chipset
  79. #define SCREENON __svgalib_screenon
  80. #define MODEX     __svgalib_modeX
  81. #define MODEFLAGS __svgalib_modeflags
  82. #define infotable __svgalib_infotable
  83.  
  84. #define SVGADRV         2
  85. #define STDVGADRV     1
  86. #define STDVGAMODE(mode) (chipset_modeavailable(mode) == STDVGADRV)
  87. #define SVGAMODE(mode)   (chipset_modeavailable(mode) == SVGADRV)
  88.  
  89. #define GRAPH_BASE 0xA0000
  90. #define GRAPH_SIZE 0x10000
  91. #define FONT_BASE  0xA0000
  92. #define FONT_SIZE  0x2000
  93. #define GPLANE16   G640x350x16
  94.  
  95. /* graphics mode information */
  96. struct info {
  97.     int xdim;
  98.     int ydim;
  99.     int colors;
  100.     int xbytes;
  101.     int bytesperpixel;
  102. };
  103.  
  104. /* --------------------- Variable definitions shared by library modules */
  105.  
  106. extern int CRT_I;            /* current CRT index register address */
  107. extern int CRT_D;            /* current CRT data register address */
  108. extern int IS1_R;            /* current input status register address */
  109. extern struct info CI;            /* current video parameters */
  110. extern int         COL;            /* current color            */
  111. extern int         CM;            /* current video mode       */
  112. extern struct info infotable[];
  113. extern int SCREENON;            /* screen visible if != 0 */
  114. extern unsigned char *GM;        /* graphics memory frame */
  115. extern int MODEX;            /* TRUE after vga_setmodeX() */
  116. extern int MODEFLAGS;            /* copy of flags of current modeinfo->flags */
  117.  
  118. extern int __svgalib_mem_fd;
  119. extern int __svgalib_tty_fd;
  120. extern int __svgalib_console_fd;
  121.  
  122. /* --------------------- Function definitions shared by library modules */
  123.  
  124. extern int __vga_setregs(const unsigned char *regs);
  125. extern int __vga_saveregs(unsigned char *regs);
  126. extern void __vga_get_perm(void);
  127. extern int __vga_getchipset(void); 
  128. extern int __vga_name2number(char *modename);
  129. extern void __vga_delay();
  130. extern int __vga_addmode(int xdim, int ydim, int cols, int xbytes, int bytespp);
  131. extern int __svgalib_physmem();
  132. extern void __svgalib_waitvtactive();
  133. extern void __svgalib_flipaway();
  134.  
  135. static inline void port_out( int value, int port )
  136. {
  137.     __asm__ volatile ("outb %0,%1"
  138.     : : "a" ((unsigned char)value), "d" ((unsigned short)port));
  139. }
  140.  
  141. static inline void port_outw( int value, int port ) {
  142.     __asm__ volatile("outw %0,%1"
  143.     : : "a" ((unsigned short)value), "d" ((unsigned short)port));
  144. }
  145.  
  146. static inline int port_in( int port )
  147. {
  148.     unsigned char value;
  149.     __asm__ volatile ("inb %1,%0"
  150.         : "=a" (value)
  151.         : "d" ((unsigned short)port));
  152.     return value;
  153. }
  154.  
  155. static inline int port_inw( int port )
  156. {
  157.     unsigned short value;
  158.     __asm__ volatile ("inw %1,%0"
  159.         : "=a" (value)
  160.         : "d" ((unsigned short)port));
  161.     return value;
  162. }
  163.  
  164. /* Note that the arguments of outb/w are reversed compared with the */
  165. /* kernel sources. The XFree86 drivers also use this format. */
  166. #define inb port_in
  167. #define inw port_inw
  168. #define outb(port, value) port_out(value, port)
  169. #define outw(port, value) port_outw(value, port)
  170.  
  171. #endif
  172.