home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / X / mit / server / ddx / ibm / skyway / skyHdwr.h < prev    next >
Encoding:
C/C++ Source or Header  |  1991-07-16  |  23.0 KB  |  488 lines

  1. /*
  2.  * $XConsortium: skyHdwr.h,v 1.3 91/07/16 13:17:42 jap Exp $
  3.  *
  4.  * Copyright IBM Corporation 1987,1988,1989,1990,1991
  5.  *
  6.  * All Rights Reserved
  7.  *
  8.  * License to use, copy, modify, and distribute this software and its
  9.  * documentation for any purpose and without fee is hereby granted,
  10.  * provided that the above copyright notice appear in all copies and that
  11.  * both that copyright notice and this permission notice appear in
  12.  * supporting documentation, and that the name of IBM not be
  13.  * used in advertising or publicity pertaining to distribution of the
  14.  * software without specific, written prior permission.
  15.  *
  16.  * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
  17.  * ALL IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS, AND 
  18.  * NONINFRINGEMENT OF THIRD PARTY RIGHTS, IN NO EVENT SHALL
  19.  * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
  20.  * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  21.  * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
  22.  * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
  23.  * SOFTWARE.
  24.  *
  25. */
  26.  
  27. /*
  28.  * skyHdwr.h - hardware constants
  29.  */
  30.  
  31. #ifndef SKYHDWR_H
  32. #define SKYHDWR_H
  33.  
  34. /*
  35.  * System addresses of bounds of adapter data and program areas
  36.  */
  37.  
  38. extern unsigned long    SKYWAY_OFFSET[]         ;       /* micro channel */
  39. extern unsigned long    SKYWAY_VRAM_START[]     ;       /* micro channel */
  40. extern unsigned long    IOREG[]         ;               /* micro channel */
  41. extern unsigned long    COPREG[]        ;               /* micro channel */
  42. extern unsigned long    SKYWAY_DMA0[]   ;
  43. extern unsigned long    SKYWAY_DMA1[]   ;
  44. extern unsigned long    SKYWAY_DMA2[]   ;
  45. extern unsigned long    SKYWAY_DMA3[]   ;
  46. extern unsigned long    SKYWAY_TILEOFFSET[]   ;
  47.  
  48. #define SKYWAY_VRAM_END         0x140000                /* VRAM SIZE */
  49. #define SKYWAY_MASKMAP_START    0x800000
  50. #define SKYWAY_COP_START        0x400000
  51. #define SKYWAY_WIDTH            1280
  52. #define SKYWAY_HEIGHT           1024
  53.  
  54. /* Interrupt Enable Register */
  55.  
  56. #define FRAMEFLYBACK           (1 << 0)
  57. #define COPREJECTED            (1 << 2)
  58. #define COPCOMPLETED           (1 << 3)
  59.  
  60. /*  Mode    */
  61.  
  62. #define VGAINHIBITED            0x0
  63. #define VGAENABLED              0x1
  64. #define EXTVGAINHIBITED         0x2
  65. #define EXTVGAENABLED           0x3
  66. #define INTELINHIBITED          0x4
  67. #define INTELENABLED            0x5
  68. #define MOTOROLAINHIBITED       0x6
  69. #define MOTOROLAENABLED         0x7
  70.  
  71. /*      work with Index Register        */
  72.  
  73. #define MEMORYCONF              0x00    /* Memory Configuration Register */
  74. #define COPSAVERESTOREDATA1     0x0c    /* Save/Restore Data 1 */
  75. #define COPSAVERESTOREDATA2     0x0d    /* Save/Restore Data 2 */
  76.  
  77. #define HORIZONTALTOTAL         0x10    /* Horizontal Total Register */
  78. #define HORIZONTALDPYEND        0x12    /* Horizontal Dpy End Register  */
  79. #define HORIZONTALBLANKSTART    0x14    /* Horizontal Blank Start       */
  80. #define HORIZONTALBLANKEND      0x16    /* Horizontal Blank End         */
  81. #define HORIZONTALPULSESTART    0x18    /* Horizontal Pulse Start       */
  82. #define HORIZONTALPULSEEND1     0x1a    /* Horizontal Pulse End 1       */
  83. #define HORIZONTALPULSEEND2     0x1c    /* Horizontal Pulse End 2       */
  84. #define HORIZONTSPRITELO        0x30    /* Horizontal Sprite Lo Register */
  85. #define HORIZONTSPRITEMI        0x31    /* Horizontal Sprite MI Register */
  86. #define HORIZONTSPRITEHI        0x32    /* Horizontal Sprite HI Register */
  87.  
  88. #define VERTICALTOTALLO         0x20    /* Vertical Total Lo Register */
  89. #define VERTICALTOTALHI         0x21    /* Vertical Total Hi Register */
  90.  
  91. #define VERTICALDPYENDLO        0x22    /* Vertical Dpy End Lo Register */
  92. #define VERTICALDPYENDLHI       0x23    /* Vertical Dpy End Hi Register */
  93. #define VERTICALBLANKSTARTLO    0x24    /* Vertical Blank Start Lo Register */
  94. #define VERTICALBLANKSTARTHI    0x25    /* Vertical Blank Start Hi Register */
  95. #define VERTICALBLANKENDLO      0x26    /* Vertical Blank End Lo Register */
  96. #define VERTICALBLANKENDHI      0x27    /* Vertical Blank End Hi Register */
  97.  
  98. #define VERTICALSYNCPULSESTLO   0x28    /* Vertical Sync Pulse Start Lo */
  99. #define VERTICALSYNCPULSESTHI   0x29    /* Vertical Sync Pulse Start Hi */
  100. #define VERTICALSYNCPULSEPEND   0x2a    /* Vertical Sync Pulse End */
  101. #define VERTICALLINECMPLO       0x2c    /* Vertical Line Compare Lo */
  102. #define VERTICALLINECMPHI       0x2d    /* Vertical Line Compare Hi */
  103.  
  104. #define VERTICALSPRITESTARTLO   0x33    /* Vertical Sprite Start Lo Register */
  105. #define VERTICALSPRITESTARTHI   0x34    /* Vertical Sprite Start Hi  Register */
  106. #define VERTICALSPRITEPRESET    0x35    /* Vertical Sprite Start Preset */
  107.  
  108. #define SPRITECTRL              0x36    /* Sprite Control Register */
  109. #define SPRITE0RED              0x38    /* Sprite Color 0 Red Register */
  110. #define SPRITE0GREEN            0x39    /* Sprite Color 0 Green Register */
  111. #define SPRITE0BLUE             0x3a    /* Sprite Color 0 Blue Register */
  112. #define SPRITE1RED              0x3b    /* Sprite Color 1 Red Register */
  113. #define SPRITE1GREEN            0x3c    /* Sprite Color 1 Green Register */
  114. #define SPRITE1BLUE             0x3d    /* Sprite Color 1 Blue Register */
  115.  
  116. #define STARTADDRLO             0x40    /* Start Address Lo Register */
  117. #define STARTADDRMI             0x41    /* Start Address Mi Register */
  118. #define STARTADDRHI             0x42    /* Start Address Hi Register */
  119. #define BUFFERPITCHLO           0x43    /* Buffer Pitch Lo Register */
  120. #define BUFFERPITCHHI           0x44    /* Buffer Pitch Hi Register */
  121.  
  122. #define DPYMODE1                0x50    /* Display Mode 1 Register */
  123. #define DPYMODE2                0x51    /* Display Mode 2 Register */
  124. #define MONITORID               0x52    /* Monitor ID Register */
  125. #define SYSTEMID                0x53    /* System  ID Register */
  126. #define CLOCKFREQUENCE          0x54    /* Clock Frequency Select Register */
  127. #define BORDERCOLOR             0x55    /* Border Color Register */
  128. #define SPINDEXLO               0x60    /* Sprite/Palette Index Lo Register */
  129. #define SPINDEXHI               0x61    /* Sprite/Palette Index Hi Register */
  130. #define SPINDEXLOPF             0x62    /* S/P Index Lo Prefetch Register */
  131. #define SPINDEXHIPF             0x63    /* S/P Index Hi Prefetch Register */
  132. #define PALETTEMASK             0x64    /* Palette Mask Register */
  133. #define PALETTEDATA             0x65    /* Palette Data Register */
  134.  
  135. #define PALETTESEQ              0x66    /* Palette Sequence Register */
  136. #define PALETTERED              0x67    /* Palette Red Prefetch Register */
  137. #define PALETTEGREEN            0x68    /* Palette Green Prefetch Register */
  138. #define PALETTEBLUE             0x69    /* Palette Blue Prefetch Register */
  139. #define SPRITEDATA              0x6a    /* Sprite Data Register */
  140. #define SPRITEPF                0x6b    /* Sprite Prefetch Register */
  141.  
  142. #define MD_OFF          0x0     /* Operating Mode Register */
  143. #define WC_OFF          0x1     /* Window Control Register */
  144. #define INT_OFF         0x4     /* Interrupt Enable Register */
  145. #define INS_OFF         0x5     /* Interrupt Status Register */
  146. #define VMC_OFF         0x6     /* Virtual Memory Control Register */
  147. #define VMS_OFF         0x7     /* Virtual Memory Status Register */
  148. #define VMI_OFF         0x8     /* VRAM Index Register */
  149. #define MEM_OFF         0x9     /* Memory Access Mode Register */
  150. #define INDEX_OFF       0xa     /* IO Index Register */
  151. #define DATA_B_OFF      0xb     /* IO Data B Register */
  152. #define DATA_C_OFF      0xc     /* IO Data C Register */
  153. #define DATA_D_OFF      0xd     /* IO Data D Register */
  154. #define DATA_E_OFF      0xe     /* IO Data E Register */
  155.  
  156. #define SKYWAY_MODE_REG(index)                          \
  157.     (*((volatile unsigned char *)(IOREG[index] + MD_OFF)))
  158. #define SKYWAY_WINCTRL_REG(index)                       \
  159.     (*((volatile unsigned char *)(IOREG[index] + WC_OFF)))
  160. #define SKYWAY_INT_REG(index)                           \
  161.     (*((volatile unsigned char *)(IOREG[index] + INT_OFF)))
  162. #define SKYWAY_INS_REG(index)                           \
  163.     (*((volatile unsigned char *)(IOREG[index] + INS_OFF)))
  164. #define SKYWAY_VMC_REG(index)                           \
  165.     (*((volatile unsigned char *)(IOREG[index] + VMC_OFF)))
  166. #define SKYWAY_VMS_REG(index)                           \
  167.     (*((volatile unsigned char *)(IOREG[index] + VMS_OFF)))
  168. #define SKYWAY_VMI_REG(index)                           \
  169.     (*((volatile unsigned char *)(IOREG[index] + VMI_OFF)))
  170. #define SKYWAY_MEM_REG(index)                           \
  171.     (*((volatile unsigned char *)(IOREG[index] + MEM_OFF)))
  172. #define SKYWAY_BINDEX_REG(index)                        \
  173.     (*((volatile unsigned char *)(IOREG[index] + INDEX_OFF)))
  174. #define SKYWAY_SINDEX_REG(index)                        \
  175.     (*((volatile unsigned short *)(IOREG[index] + INDEX_OFF)))
  176. #define SKYWAY_DATAB_REG(index)                         \
  177.     (*((volatile unsigned char *)(IOREG[index] + DATA_B_OFF)))
  178. #define SKYWAY_DATAC_REG(index)                         \
  179.     (*((volatile unsigned char *)(IOREG[index] + DATA_C_OFF)))
  180. #define SKYWAY_DATAD_REG(index)                         \
  181.     (*((volatile unsigned char *)(IOREG[index] + DATA_D_OFF)))
  182. #define SKYWAY_DATAE_REG(index)                         \
  183.     (*((volatile unsigned char *)(IOREG[index] + DATA_E_OFF)))
  184.  
  185. #define PD_OFF          0x0     /* Page Directory Register */
  186. #define VA_OFF          0x4     /* Virtual Address Register */
  187. #define POLL_OFF        0x9     /* new busy poll Register */
  188. #define LA_OFF          0xe     /* State Length A Register */
  189. #define LB_OFF          0xf     /* State Length B Register */
  190. #define PMI_OFF         0x10    /* Pixmap Index Register */
  191. #define PMC_OFF         0x12    /* Pixmap Control Register */
  192. #define PMB_OFF         0x14    /* Pixmap Base Register */
  193. #define PMH_OFF         0x18    /* Pixmap Height Register */
  194. #define PMW_OFF         0x1a    /* Pixmap Width Register 16 bits */
  195. #define PMF_OFF         0x1e    /* Pixmap Format Register 16 bits */
  196. #define BME_OFF         0x20    /* Bresenham Error Register */
  197. #define BMK1_OFF        0x24    /* Bresenham K1 Register */
  198. #define BMK2_OFF        0x28    /* Bresenham K2 Register */
  199. #define DRT_OFF         0x2c    /* Direction Step Register */
  200. #define CCC_OFF         0x48    /* Color Compare Condition Register */
  201. #define BM_OFF          0x4a    /* Foreground MIX Register */
  202. #define FM_OFF          0x4b    /* Background MIX Register */
  203. #define CCV_OFF         0x4c    /* Color Compare Condition Register */
  204. #define PM_OFF          0x50    /* Plane Mask  Register */
  205. #define CC_OFF          0x54    /* Carry Chain Register */
  206. #define FC_OFF          0x58    /* Foreground Color Register */
  207. #define BC_OFF          0x5c    /* Background Color Register */
  208. #define DM2_OFF         0x60    /* Dimention 2 Register */
  209. #define DM1_OFF         0x62    /* Dimention 1 Register */
  210. #define MASKY_OFF       0x6c    /* MaskMap  Y offset Register */
  211. #define MASKX_OFF       0x6e    /* MaskMap  X offset Register */
  212. #define SRCY_OFF        0x70    /* SrcMap   Y offset Register */
  213. #define SRCX_OFF        0x72    /* SrcMap   X offset Register */
  214. #define PATY_OFF        0x74    /* PatMap   Y offset Register */
  215. #define PATX_OFF        0x76    /* PatMap   X offset Register */
  216. #define DSTY_OFF        0x78    /* DstMap   Y offset Register */
  217. #define DSTX_OFF        0x7a    /* DstMap   X offset Register */
  218. #define PO_OFF          0x7c    /* Pixel Operation Register   */
  219.  
  220. #define SKYWAY_PAGE_DIR_REG(index)                      \
  221.             (*((volatile unsigned int *)(COPREG[index] + PD_OFF)))
  222. #define SKYWAY_VA_REG(index)                            \
  223.             (*((volatile unsigned int *)(COPREG[index] + VA_OFF)))
  224. #define SKYWAY_POLL_REG(index)                          \
  225.             (*((volatile unsigned char *)(COPREG[index] + POLL_OFF)))
  226. #define SKYWAY_LA_REG(index)                            \
  227.             (*((volatile unsigned char *)(COPREG[index] + LA_OFF)))
  228. #define SKYWAY_LB_REG(index)                            \
  229.             (*((volatile unsigned char *)(COPREG[index] + LB_OFF)))
  230.  
  231. #define SKYWAY_PMI_REG(index)                           \
  232.             (*((volatile short *)(COPREG[index] + PMI_OFF)))
  233. #define SKYWAY_PMC_REG(index)                           \
  234.             (*((volatile unsigned char *)(COPREG[index] + PMC_OFF)))
  235. #define SKYWAY_PMB_REG(index)                           \
  236.             (*((volatile unsigned char *)(COPREG[index] + PMB_OFF)))
  237. #define SKYWAY_PMH_REG(index)                           \
  238.             (*((volatile short *)(COPREG[index] + PMH_OFF)))
  239. #define SKYWAY_PMW_REG(index)                           \
  240.             (*((volatile short *)(COPREG[index] + PMW_OFF)))
  241. #define SKYWAY_PMF_REG(index)                           \
  242.             (*((volatile short *)(COPREG[index] + PMF_OFF)))
  243. #define SKYWAY_BME_REG(index)                           \
  244.             (*((volatile unsigned int *)(COPREG[index] + BME_OFF)))
  245. #define SKYWAY_BMK1_REG(index)                          \
  246.             (*((volatile unsigned int *)(COPREG[index] + BMK1_OFF)))
  247. #define SKYWAY_BMK2_REG(index)                          \
  248.             (*((volatile unsigned int *)(COPREG[index] + BMK2_OFF)))
  249. #define SKYWAY_DRT_REG(index)                           \
  250.             (*((volatile unsigned int *)(COPREG[index] + DRT_OFF)))
  251. #define SKYWAY_CCC_REG(index)                           \
  252.             (*((volatile unsigned short *)(COPREG[index] + CCC_OFF)))
  253. #define SKYWAY_BM_REG(index)                            \
  254.             (*((volatile unsigned char *)(COPREG[index] + BM_OFF)))
  255. #define SKYWAY_FM_REG(index)                            \
  256.             (*((volatile unsigned char *)(COPREG[index] + FM_OFF)))
  257. #define SKYWAY_CCV_REG(index)                           \
  258.             (*((volatile int *)(COPREG[index] + CCV_OFF)))
  259. #define SKYWAY_PM_REG(index)                            \
  260.             (*((volatile int *)(COPREG[index] + PM_OFF)))
  261. #define SKYWAY_CC_REG(index)                            \
  262.             (*((volatile int *)(COPREG[index] + CC_OFF)))
  263. #define SKYWAY_FC_REG(index)                            \
  264.             (*((volatile int *)(COPREG[index] + FC_OFF)))
  265. #define SKYWAY_BC_REG(index)                            \
  266.             (*((volatile int *)(COPREG[index] + BC_OFF)))
  267. #define SKYWAY_DM1_REG(index)                           \
  268.             (*((volatile short *)(COPREG[index] + DM1_OFF)))
  269. #define SKYWAY_DM2_REG(index)                           \
  270.             (*((volatile short *)(COPREG[index] + DM2_OFF)))
  271. #define SKYWAY_MASKY_REG(index)                         \
  272.             (*((volatile short *)(COPREG[index] + MASKY_OFF)))
  273. #define SKYWAY_MASKX_REG(index)                         \
  274.             (*((volatile short *)(COPREG[index] + MASKX_OFF)))
  275. #define SKYWAY_SRCY_REG(index)                          \
  276.             (*((volatile short *)(COPREG[index] + SRCY_OFF)))
  277. #define SKYWAY_SRCX_REG(index)                          \
  278.             (*((volatile short *)(COPREG[index] + SRCX_OFF)))
  279. #define SKYWAY_PATY_REG(index)                          \
  280.             (*((volatile short *)(COPREG[index] + PATY_OFF)))
  281. #define SKYWAY_PATX_REG(index)                          \
  282.             (*((volatile short *)(COPREG[index] + PATX_OFF)))
  283. #define SKYWAY_DSTY_REG(index)                          \
  284.             (*((volatile short *)(COPREG[index] + DSTY_OFF)))
  285. #define SKYWAY_DSTX_REG(index)                          \
  286.             (*((volatile short *)(COPREG[index] + DSTX_OFF)))
  287. #define SKYWAY_PO_REG(index)                            \
  288.             (*((volatile unsigned int *)(COPREG[index] + PO_OFF)))
  289.  
  290. #define skywayWaitFifo1(index)  while(SKYWAY_PMC_REG(index) & 0x80 )
  291. #define skywayWaitFifo2(index)  while(SKYWAY_POLL_REG(index) & 0x80 )
  292.  
  293. /* Pixel Map Index Register */
  294.  
  295. #define PixMapA   1
  296. #define PixMapB   2
  297. #define PixMapC   3
  298. #define PixMapD   0  /* Mask Map */
  299.  
  300. /* Pixel Map n Format */
  301. /* M/I Format */
  302.  
  303. #define MI0  0
  304. #define MI1  0x8
  305.  
  306. /* Pixel Size */
  307.  
  308. #define PixSize1  0
  309. #define PixSize2  1
  310. #define PixSize4  2
  311. #define PixSize8  3
  312. #define PixSize16 4
  313.  
  314. /*  Octant fields      */
  315.  
  316. #define  DX              0x4        /* 3rd pos. from the right        */
  317. #define  DY              0x2        /* 2nd pos. from the right        */
  318. #define  DZ              0x1        /* 1st pos. from the right        */
  319.  
  320. /*  Logical Operations for both Foreground & Background Mix           */
  321.  
  322. #define  Mix_All_0       0x00       /* All 0's                        */
  323. #define  Mix_SrcAndDst   0x01       /* Source And Destination         */
  324. #define  Mix_SrcAndCDst  0x02       /* Source And ^Destination        */
  325. #define  Mix_Src         0x03       /* Source                         */
  326. #define  Mix_CSrcAndDst  0x04       /* ^Source And Destination        */
  327. #define  Mix_Dst         0x05       /* Destination                    */
  328. #define  Mix_SrcXorDst   0x06       /* Source XOR  Destination        */
  329. #define  Mix_SrcOrDst    0x07       /* Source OR   Destination        */
  330. #define  Mix_CSrcAndCDst 0x08       /* ^Source And ^Destination       */
  331. #define  Mix_SrcXorCDst  0x09       /*  Source XOR ^Destination       */
  332. #define  Mix_CDst        0x0A       /* ^Destination                   */
  333. #define  Mix_SrcOrCDst   0x0B       /* Source  OR ^Destination        */
  334. #define  Mix_CSrc        0x0C       /* ^Source                        */
  335. #define  Mix_CSrcOrDst   0x0D       /* ^Source  OR  Destination       */
  336. #define  Mix_CSrcORCDst  0x0E       /* ^Source  OR ^Destination       */
  337. #define  Mix_All_1       0x0F       /* All 1's                        */
  338.  
  339. /*  Color Compare Condition         */
  340.  
  341. #define  Color_Cmp_True  0x0        /* Always True (disable updates)  */
  342. #define  Color_Grt_Col   0x1        /* Dest > Col value               */
  343. #define  Color_Equ_Col   0x2        /* Dest = Col value               */
  344. #define  Color_Les_Col   0x3        /* Dest < Col value               */
  345. #define  Color_Cmp_Fal   0x4        /* Always False (enable updates)  */
  346. #define  Color_GtEq_Col  0x5        /* Dest >= Col value              */
  347. #define  Color_NtEq_Col  0x6        /* Dest <> Col value              */
  348. #define  Color_LsEq_Col  0x7        /* Dest <= Col value              */
  349.  
  350. #define  Plane_Mask_All  0xFFFF
  351. #define  Carry_Mask      0x3FFF
  352.  
  353. #define POBackReg 0                /* Background color  (register)   */
  354. #define POBackSrc 0x80             /* Source Pixel Map               */
  355. #define POForeReg 0                /* Foreground  color (register)   */
  356. #define POForeSrc 0x20             /* Source Pixel Map               */
  357.  
  358. /* Step */
  359.  
  360. #define POStepDSR 0x2              /* Draw & Step Read               */
  361. #define POStepLDR 0x3              /* Line Draw   Read               */
  362. #define POStepDSW 0x4              /* Draw & Step Write              */
  363. #define POStepLDW 0x5              /* Line Draw   Write              */
  364. #define POStepBlt 0x8              /* Pxblt                          */
  365. #define POStepIBlt 0x9             /* Inverting Pxblt                */
  366. #define POStepAFBlt 0xa            /* Area Fill Pxblt                */
  367.  
  368. /* Source */
  369.  
  370. #define POSrcA 0x1000              /* Pixel Map A                    */
  371. #define POSrcB 0x2000              /* Pixel Map B                    */
  372. #define POSrcC 0x3000              /* Pixel Map C                    */
  373. #define POSrcD 0x0000              /* Mask Map  D                    */
  374.  
  375. /* Destination */
  376.  
  377. #define PODestA 0x100              /* Pixel Map A                    */
  378. #define PODestB 0x200              /* Pixel Map B                    */
  379. #define PODestC 0x300              /* Pixel Map C                    */
  380. #define PODestD 0x000              /* Mask Map  D                    */
  381.  
  382. /* Pattern */
  383.  
  384. #define POPatA 0x100000            /* Pixel Map A                    */
  385. #define POPatB 0x200000            /* Pixel Map B                    */
  386. #define POPatC 0x300000            /* Pixel Map C                    */
  387. #define POPatD 0x000000            /* Mask Map  D                    */
  388.  
  389. #define POPatFore 0x800000         /* Foreground (Fixed)             */
  390. #define POPatSrc 0x900000          /* Generated from Source          */
  391.  
  392. /* Mask */
  393.  
  394. #define POMaskDis 0                /* Mask Map Disabled             */
  395. #define POMaskBEn 0x40000000       /* Mask Map Boundary Enabled     */
  396. #define POMaskEn  0x80000000       /* Mask Map Enabled              */
  397.  
  398. /* Drawing Mode */
  399.  
  400. #define POModeAll 0                /* Draw All Pixels                */
  401. #define POModeLast 0x10000000      /* Draw 1s Pixel Null             */
  402. #define POModeFirst 0x20000000     /* Draw Last Pixel Null           */
  403. #define POModeArea 0x30000000      /* Draw Area Boundary             */
  404.  
  405. /* Direction Octant */
  406.  
  407. #define POOct0 0
  408. #define POOct1 0x1000000
  409. #define POOct2 0x2000000
  410. #define POOct3 0x3000000
  411. #define POOct4 0x4000000
  412. #define POOct5 0x5000000
  413. #define POOct6 0x6000000
  414. #define POOct7 0x7000000
  415.  
  416. /* skycolor */
  417.  
  418. #define SC_INVBASEOFFSET   0x140000
  419. #define SC_TILEOFFSET      0x0
  420. #define SC_STIPPLEOFFSET   0x4000
  421. #define SC_FONTOFFSET      0x6000
  422. #define SC_MASKOFFSET      0xF00C
  423. #define SC_DASHOFFSET      0x3700C
  424. #define SC_WKSPACEOFFSET   0x3708C
  425. #define SC_TRICKYOFFSET    0x5F08C
  426. #define SC_USEROFFSET      0x5F08C
  427.  
  428. /* skymono */
  429.  
  430. #define SM_INVBASEOFFSET   0x0A0000
  431. #define SM_TILEOFFSET      0x0
  432. #define SM_STIPPLEOFFSET   0x2000
  433. #define SM_FONTOFFSET      0x6000
  434. #define SM_MASKOFFSET      0xEE0C
  435. #define SM_DASHOFFSET      0x36E0C
  436. #define SM_WKSPACEOFFSET   0x36E4C
  437. #define SM_TRICKYOFFSET    0x5EE4C
  438. #define SM_USEROFFSET      0x5EE4C
  439.  
  440. /*   CRTC REGISTERS     */
  441.  
  442. #define Display_Mode1   0x5000      /* Display Mode 1 Register        */
  443. #define Display_Mode2   0x5100      /* Display Mode 2 Register        */
  444.  
  445. /*   hardware cursor                                                  */
  446.  
  447. #define CursLo_Plane0   0x5600      /* Cursor address low plane 0     */
  448. #define CursLo_Plane1   0x5700      /* Cursor address low plane 1     */
  449. #define CursHi_Plane0   0x5800      /* Cursor address high plane 0    */
  450. #define CursHi_Plane1   0x5900      /* Cursor address high plane 0    */
  451. #define CursImg_Plane0  0x5A00      /* Cursor image plane 0           */
  452. #define CursImg_Plane1  0x5B00      /* Cursor image plane 1           */
  453. #define CursIndex       0x6000      /* Cursor index                   */
  454. #define CursData        0x6A00      /* Cursor data                    */
  455. #define CursCntl_Plane0 0x6C00      /* Cursor control plane 0         */
  456. #define CursCntl_Plane1 0x6D00      /* Cursor control plane 1         */
  457.  
  458. /*   colormap                                                         */
  459.  
  460. #define PaletIndex      0x6000      /* Palette Index                  */
  461. #define PaletCntl       0x6400      /* Palette DAC control            */
  462. #define PaletData       0x6500      /* Palette Data                   */
  463.  
  464. /*   misc stuff                                                       */
  465.  
  466. #define x_correct       0x01A8      /* x correction factor for pass 1 */
  467. #define y_correct       0x001A      /* y correction factor for pass 1 */
  468.  
  469. #define xc_correct2     0x01AD      /* x cursor offset, color, pass 2 */
  470. #define yc_correct2     0x001B      /* y cursor offset, color, pass 2 */
  471. #define xm_correct2     0x0194      /* x cursor offset, mono, pass 2  */
  472. #define ym_correct2     0x001F      /* y cursor offset, mono, pass 2  */
  473.  
  474. #define DAC_disable     0x0004
  475. #define DAC_enable      0x0044
  476. #define Video_disable   0x0061
  477. #define Video_enable    0x0063
  478. #define ColorCmd        0x38
  479. #define CursPlaneSize   512
  480. #define MaxCursorSize   64
  481. #define BestCursorSize  32
  482. #define MaxTileSize     1024
  483. #define BestTileSize    32
  484. #define MaxStippleSize  1024
  485. #define BestStippleSize 32
  486.  
  487. #endif /* SKYHDWR_H */
  488.