home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD2.mdf / c / library / dos / grafik / vifs / egatc.h < prev    next >
Encoding:
C/C++ Source or Header  |  1989-06-29  |  2.4 KB  |  76 lines

  1. /*
  2.  *    EGA help file for Turbo C
  3.  *
  4.  *
  5.  *    5 jan 1989  Olle Olsson  Plusdata HB
  6.  */
  7.  
  8. #include <dos.h>    /* prototype for outport() */
  9.  
  10. /* video RAM addressing */
  11. #define EGASEG        0xa000
  12. #define EGASEG2        (EGASEG + 0x1000)
  13.  
  14. #define EGAROWS        350
  15. #define EGACOLS        640
  16.  
  17. #define maddr( x, y ) ( 80*(y) + ((x)>>3) )
  18. #define bitmask( x )  ( 0x80 >> ((x)&7) )
  19. #define mask( x )     ( 0xff - ( 0xff >> ((x)&7) ) )
  20. #define endmask( x )  ( 0x7f >> ((x)&7) )
  21. #define ynext( adr )  ( ((adr)+80) )
  22. #define yprev( adr )  ( ((adr)-80) )
  23.  
  24.  
  25. /* i/o ports */
  26. #define EGAGCR    0x3ce            /* graphics controller control */
  27. #define EGAGDR    0x3cf            /* graphics controller data */
  28. #define EGASCR    0x3c4            /* sequencer controller control */
  29. #define EGASDR    0x3c5            /* sequencer data */
  30. #define EGAACR    0x3c0            /* attribute controller control */
  31. #define EGAADR    0x3c1            /* attribute controller data */
  32.  
  33.  
  34. /* internal regs graphics controller */
  35. #define E_SR    0            /* set/reset (write mode 0) */
  36. #define E_ESR    1            /* enable set/reset (wr md 0) */
  37. #define E_CC    2            /* colour compare (read mode 1) */
  38. #define E_RF    3            /* rotate/function select */
  39. #define E_RMS    4            /* read map select (read mode 0) */
  40. #define E_MODE    5            /* mode */
  41. #define E_MISC    6            /* miscellaneous */
  42. #define E_CD    7            /* colour don't care (read mode 1) */
  43. #define E_BM    8            /* bit mask */
  44.  
  45. /* sequencer */
  46. #define E_SMM    2            /* sequencer/map mask */
  47.  
  48. /* functions for func. sel. reg E_RF */
  49. #define F_UNMOD    0x00            /* unmodified */
  50. #define F_AND    0x08            /* AND with read value */
  51. #define F_OR    0x10            /* OR */
  52. #define    F_XOR    0x18            /* XOR */
  53.  
  54. /* register load */
  55. #define LOADGR( r, val )    outport( EGAGCR, ((val) << 8) | r )
  56. #define LOADSR( r, val )    outport( EGASCR, ((val) << 8) | r )
  57. #define LOADAR( r, val )    outport( EGAACR, ((val) << 8) | r )
  58.  
  59. /* the assembler likes Uppercase */
  60. #define movebinc MOVEBINC
  61. #define movebrsh MOVEBRSH
  62. #define moveblsh MOVEBLSH
  63.  
  64. void movebinc( unsigned sseg, int soffs, unsigned dseg, int doffs, unsigned nb );
  65. void movebrsh( unsigned sseg, int soffs, unsigned dseg, int doffs,
  66.                  unsigned nbytes, int shiftamount );
  67. void moveblsh( unsigned sseg, int soffs, unsigned dseg, int doffs,
  68.                  unsigned nbytes, int shiftamount );
  69. int egacopy( int x0, int y0, int x1, int y1, int dx, int dy );
  70.  
  71. void xorline( int x0, int y0, int x1, int y1, int color );
  72. void xorpoint( int x, int y, int color );
  73. void ggets( char *buf );
  74. void gputs( char *string );
  75.  
  76.