home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / ddkx86v2.zip / DDKX86 / DBCSDD / H_DBCS / VVD.H < prev    next >
C/C++ Source or Header  |  1995-04-14  |  50KB  |  1,091 lines

  1. /*DDK*************************************************************************/
  2. /*                                                                           */
  3. /* COPYRIGHT (C) Microsoft Corporation, 1989                                 */
  4. /* COPYRIGHT    Copyright (C) 1995 IBM Corporation                           */
  5. /*                                                                           */
  6. /*    The following IBM OS/2 WARP source code is provided to you solely for  */
  7. /*    the purpose of assisting you in your development of OS/2 WARP device   */
  8. /*    drivers. You may use this code in accordance with the IBM License      */
  9. /*    Agreement provided in the IBM Device Driver Source Kit for OS/2. This  */
  10. /*    Copyright statement may not be removed.                                */
  11. /*                                                                           */
  12. /*****************************************************************************/
  13. /*static char *SCCSID = "@(#)vvd.h      6.11 92/03/27";*/
  14. /***    VVD.H
  15.  *
  16.  *      SCCSID = @(#)vvd.h      6.11 92/03/27
  17.  *
  18.  *      MVDM Virtual Video Exported Definitions
  19.  *
  20.  *      For include file hierarchy, see MVDM.H
  21.  *
  22.  *      Options:
  23.  *          INCL_VIDEO      include all video definitions
  24.  *          INCL_VIDEOHW    include hardware-dependent definitions
  25.  *          INCL_VIDEOVDD   include VDD-support definitions
  26.  *
  27.  *
  28.  *      MODIFICATION HISTORY
  29.  *      10/11/88    JTP     Created.
  30.  * XGA  04/22/91    TPL     XGA enhancements to control whether VGA should
  31.  *                          save/restore the video state on a single XGA
  32.  *                          configuration system (i.e. P75 or PS/2 with
  33.  *                          monitor attached only to the XGA) where the
  34.  *                          XGA boots up in VGA mode.
  35.  *      05/07/91    RCW
  36.  *
  37.  *                  Changed all occurences of the single line comment
  38.  *                  notation to the standard notation to allow users to
  39.  *                  maintain ANSI compatibility.  This is in response to
  40.  *                  PTR B718526.  All future updates to this and all other
  41.  *                  header files should use the standard commenting format.
  42.  * @025 03/14/92    TPL               Add VDHRegisterInt2FProc for VVGA
  43.  * @038 03/27/92    TPL  PTRB735007 - avoid screen corruption on Starlight
  44.  * @DDE 05/18/92    TPL  D          - Add event for DDE support
  45.  * @049 09/02/92    TPL  24749      - Restrict 4K access to the MONO card
  46.  * @054 03/09/93    YEE  63354      - Add more DEVREQ constants
  47.  * @055 03/30/93    Senja 65283     - Add more DEVREQ constants
  48.  */
  49.  
  50.  
  51. #ifndef INCL_NONE               /* include everything by default */
  52. #define INCL_VIDEO
  53. #endif
  54.  
  55. #ifdef  INCL_VIDEO
  56. #define INCL_VIDEOHW
  57. #define INCL_VIDEOPTR
  58. #define INCL_VIDEOSYSREQ
  59. #define INCL_VIDEODEVREQ
  60. #define INCL_VIDEOINTERFACES                                         /*@025*/
  61. #endif
  62.  
  63. #ifdef  INCL_DBCSVDM                                                    //J-TS00V
  64. #define ATLAS                                                           //J-TS00V
  65. #define GALE                                                            //J-TS00V
  66. #endif  //INCL_DBCSVDM                                                  //J-TS00V
  67. #ifdef  GALE                                                            //J-TS00V
  68. #define ATLAS_GALE                                                      //J-TS00V
  69. #endif  //GALE                                                          //J-TS00V
  70. #ifdef  ATLAS                                                           //J-TS00V
  71. #define ATLAS_GALE                                                      //J-TS00V
  72. #endif  //ATLAS                                                         //J-TS00V
  73.  
  74. #ifdef INCL_VIDEOPTR
  75. #include <vmd.h>
  76. #endif
  77.  
  78.  
  79. #ifdef  INCL_VIDEOHW
  80.  
  81. /***EK+ Extended (non-BIOS) EGA INT 10h functions
  82.  */
  83.  
  84. #define INT10_EGAREADONE    0xF0        /* Read one EGA reg */
  85. #define INT10_EGAWRITEONE   0xF1        /* Write one EGA reg */
  86. #define INT10_EGAREADRANGE  0xF2        /* Read multiple EGA regs */
  87. #define INT10_EGAWRITERANGE 0xF3        /* Write multiple EGA regs */
  88. #define INT10_EGAREADSET    0xF4        /* Read set of EGA regs */
  89. #define INT10_EGAWRITESET   0xF5        /* Write set of EGA regs */
  90. #define INT10_EGAREVERTDEF  0xF6        /* Revert to default */
  91. #define INT10_EGADEFINEDEF  0xF7        /* Define default */
  92. #define INT10_EGAQUERYDEF   0xF8        /* Query default */
  93. #define INT10_EGACONTEXT    0xF9        /* Get context information */
  94. #define INT10_EGAINQUIRE    0xFA        /* Get EGA driver version */
  95.  
  96. #define INT10_EGAFIRST      INT10_EGAREADONE
  97. #define INT10_EGALAST       INT10_EGAINQUIRE
  98.  
  99.  
  100. /* Default physical memory locations
  101.  */
  102.  
  103. #define PLANE0              0
  104. #define PLANE1              1
  105. #define PLANE2              2
  106. #define PLANE3              3
  107.  
  108. #define MONOMEM_START       0xB0000
  109. #define MONOMEM_LEN         (4*1024)                                    //@049
  110. #ifdef  PAGESIZE
  111. #define MONOMEM_PAGES       (MONOMEM_LEN/PAGESIZE)
  112. #endif
  113.  
  114. #define CGAMEM_START        0xB8000
  115. #define CGAMEM_LEN          (16*1024)
  116. #ifdef  PAGESIZE
  117. #define CGAMEM_PAGES        (CGAMEM_LEN/PAGESIZE)
  118. #endif
  119.  
  120. #define EGAVGAMEM_START     0xA0000
  121. #define EGAVGAMEM_LEN       (128*1024)
  122. #ifdef  PAGESIZE
  123. #define EGAVGAMEM_PAGES     (EGAVGAMEM_LEN/PAGESIZE)
  124. #endif
  125.  
  126.  
  127. /*  Hardware ports
  128.  *
  129.  *  All are single-register ports unless otherwise specified;
  130.  *  All single-register ports are W/O unless VGA or otherwise specified
  131.  */
  132.  
  133. #define PORT_ATIVGA_INDX    0x1CE       /* used by ATI VGA Wonder */
  134. #define PORT_ATIVGA_DATA    0x1CF       /* used by ATI VGA Wonder */
  135. #define PORT_MONOCRTINDX    0x3B4
  136. #define PORT_MONOCRTDATA    0x3B5       /* multi-register port */
  137. #define PORT_MONOMODE       0x3B8       /* usually shadowed at uBiosVModeByte */
  138. #define PORT_MONOLPENSET    0x3B9
  139. #define PORT_MONOSTATUS1    0x3BA       /* (R/O) */
  140. #define PORT_MONOFEATURE    0x3BA       /* (W/O) */
  141. #define PORT_MONOLPENRESET  0x3BB
  142. #define PORT_ATC0           0x3C0
  143. #define PORT_ATC1           0x3C1       /* on VGA, distinct from ATC0 and R/O */
  144. #define PORT_STATUS0        0x3C2       /* (R/O) */
  145. #define PORT_MISCOUT        0x3C2       /* reset sequencer before writing */
  146. #define PORT_VGAENABLE      0x3C3
  147. #define PORT_SEQINDX        0x3C4
  148. #define PORT_SEQDATA        0x3C5       /* multi-register port */
  149. #define PORT_COMPAQ_CTRL    0x3C6
  150. #define PORT_VGADACMASK     0x3C6       /* initialized to 0FFh, leave alone */
  151. #define PORT_VGADACREAD     0x3C7       /* State (R), Index to read (W) */
  152. #define PORT_VGADACWRITE    0x3C8       /* Index to write (R/W) */
  153. #define PORT_VGADACDATA     0x3C9       /* multi-register port */
  154. #define PORT_GDCPOS2        0x3CA       /* on VGA, R/O (returns FEATURE) */
  155. #define PORT_ATIEGA_INDX    0x3CB       /* used by ATI EGA Wonder */
  156. #define PORT_GDCPOS1        0x3CC       /* on VGA, R/O (returns MISCOUT) */
  157. #define PORT_ATIEGA_DATA    0x3CD       /* used by ATI EGA Wonder */
  158. #define PORT_GDCINDX        0x3CE
  159. #define PORT_GDCDATA        0x3CF       /* multi-register port */
  160. #define PORT_COLRCRTINDX    0x3D4
  161. #define PORT_COLRCRTDATA    0x3D5       /* multi-register port */
  162. #define PORT_CGAMODE        0x3D8       /* usually shadowed at uBiosVModeByte */
  163. #define PORT_CGACOLOR       0x3D9       /* usually shadowed at uBiosVColorByte */
  164. #define PORT_COLRSTATUS1    0x3DA       /* (R/O) */
  165. #define PORT_COLRFEATURE    0x3DA       /* (W/O) */
  166. #define PORT_CGALPENRESET   0x3DB
  167. #define PORT_CGALPENSET     0x3DC
  168. #define PORT_COMPAQ_ENV     0x7C6       /* (R/O) */
  169. #define PORT_COMPAQ_DSP     0xBC6       /* (R/O) */
  170. #define PORT_IBMP70_INDX    0xD00       /* special port for plasma display? */
  171. #define PORT_IBMP70_DATA    0xD01       /* special port for plasma display? */
  172. #define PORT_COMPAQ_MODE    0xFC6       /* (R/O) */
  173.  
  174. /* 8514/A Display Controller registers (word registers unless noted otherwise)
  175.  */
  176. #define A8514_DSPSTAT       0x02E8      /* (R/O) */
  177. #define   DSPSTAT_PALSTAT       0x0001
  178. #define   DSPSTAT_VERTRTRC      0x0002
  179. #define   DSPSTAT_HORZRTRC      0x0004
  180. #define A8514_HORZTOTAL     0x02E8      /* (W/O) */
  181. #define A8514_DACMASK       0x02EA      /* pixel planes displayed   (R/W-byte) */
  182. #define A8514_DACREADINDEX  0x02EB      /* DAC data reg/mode select (R/W-byte) */
  183. #define A8514_DACWRITEINDEX 0x02EC      /* DAC data reg/mode select (R/W-byte) */
  184. #define A8514_DACDATA       0x02ED      /* DAC data register        (R/W-byte) */
  185. #define A8514_HORZDSP       0x06E8      /* (W/O) */
  186. #define A8514_HORZSSTART    0x0AE8      /* (W/O) */
  187. #define A8514_HORZSWIDTH    0x0EE8      /* (W/O) */
  188. #define A8514_VERTTOTAL     0x12E8      /* (W/O) */
  189. #define A8514_VERTDSP       0x16E8      /* (W/O) */
  190. #define A8514_VERTSSTART    0x1AE8      /* (W/O) */
  191. #define A8514_VERTSWIDTH    0x1EE8      /* (W/O) */
  192. #define A8514_DSPCTRL       0x22E8      /* (W/O) */
  193. #define   DSPCTRL_ODDEVEN       0x0001
  194. #define   DSPCTRL_CAS2          0x0000  /* this implies 4-plane setting */
  195. #define   DSPCTRL_CAS4          0x0002  /* this implies 8-plane setting */
  196. #define   DSPCTRL_CAS6          0x0004
  197. #define   DSPCTRL_CAS8          0x0006
  198. #define   DSPCTRL_CASMASK       0x0006
  199. #define   DSPCTRL_SCANDBL       0x0008
  200. #define   DSPCTRL_INTERLACE     0x0010
  201. #define   DSPCTRL_DSPENABLE     0x0020
  202. #define   DSPCTRL_DSPDISABLE    0x0040
  203. #define   DSPCTRL_DSPCTRLMASK   0x0060
  204.  
  205. /* 8514/A Configuration/Status registers (word registers unless noted otherwise)
  206.  */
  207. #define A8514_SUBSYSCTRL    0x42E8      /* (W/O) */
  208. #define   SUBCTRL_RESETVERTF    0x0001
  209. #define   SUBCTRL_RESETDTR      0x0002
  210. #define   SUBCTRL_RESETQFULL    0x0004
  211. #define   SUBCTRL_RESETGPIDLE   0x0008
  212. #define   SUBCTRL_INTONVERTF    0x0100
  213. #define   SUBCTRL_INTONDTR      0x0200
  214. #define   SUBCTRL_INTONQFULL    0x0400
  215. #define   SUBCTRL_INTONGPIDLE   0x0800
  216. #define   SUBCTRL_PIXENABLE     0x1000
  217. #define   SUBCTRL_PIXDISABLE    0x2000
  218. #define   SUBCTRL_PIXCTRLMASK   0x3000
  219. #define   SUBCTRL_SEQENABLE     0x4000
  220. #define   SUBCTRL_SEQDISABLE    0x8000
  221. #define   SUBCTRL_SEQCTRLMASK   0xC000
  222. #define A8514_SUBSYSSTATUS  0x42E8      /* (R/O) */
  223. #define   SUBSTATUS_VERTF       0x0001
  224. #define   SUBSTATUS_DTR         0x0002
  225. #define   SUBSTATUS_QFULL       0x0004
  226. #define   SUBSTATUS_GPIDLE      0x0008
  227. #define   SUBSTATUS_MONITORID   0x0070
  228. #define   SUBSTATUS_8503        0x0050
  229. #define   SUBSTATUS_8512_3      0x0060
  230. #define   SUBSTATUS_8514        0x0020
  231. #define   SUBSTATUS_MONOCHROME  0x0010
  232. #define   SUBSTATUS_NOT8514     0x0040
  233. #define   SUBSTATUS_MEMORYOPT   0x0080
  234. #define A8514_ROMPAGESELECT 0x46E8      /* (W/O) */
  235. #define A8514_ADVCTRL       0x4AE8      /* (W/O) */
  236. #define   ADVCTRL_VGADISABLE    0x0001
  237. #define   ADVCTRL_OUTPUTPIN     0x0002
  238. #define   ADVCTRL_DOTCLOCK      0x0004  /* 0 implies 640x480 mode */
  239.  
  240. /* 8514/A Graphics Processor registers (word registers unless noted otherwise)
  241.  */
  242. #define A8514_COMMAND       0x9AE8      /* (W/O) */
  243. #define   COMMAND_WRITE         0x0001  /* 0 implies read function */
  244. #define   COMMAND_PLANAR        0x0002  /* 0 implies pixel-access mode */
  245. #define   COMMAND_LASTPIXNULL   0x0004  /* 0 implies last pixel will be drawn */
  246. #define   COMMAND_STROKEALG     0x0008  /* 0 implies H/W line-drawing algorithm */
  247. #define   COMMAND_DRAW          0x0010  /* 0 implies move current position only */
  248. #define   COMMAND_INCX          0x0020  /* 0 implies decrement X */
  249. #define   COMMAND_MAJORY        0x0040  /* 0 implies X is major axis */
  250. #define   COMMAND_INCY          0x0080  /* 0 implies decrement Y */
  251. #define   COMMAND_PCDATAXFER    0x0100  /* 0 implies no PC intervention */
  252. #define   COMMAND_PCDATA16BIT   0x0200  /* 0 implies base pixel count per access */
  253. #define   COMMAND_PIXEL16BIT    0x0400  /* 0 implies 8-bit pixel transfers */
  254. #define   COMMAND_SWAPBYTES     0x1000  /* 0 implies even pixels from low bytes */
  255. #define   COMMAND_FUN_NONE      0x0000
  256. #define   COMMAND_FUN_LINE      0x2000
  257. #define   COMMAND_FUN_FILLX     0x4000
  258. #define   COMMAND_FUN_FILLY     0x6000
  259. #define   COMMAND_FUN_FILL      0x8000
  260. #define   COMMAND_FUN_AXIALLINE 0xA000
  261. #define   COMMAND_FUN_COPY      0xC000
  262. #define   COMMAND_FUNMASK       0xF000
  263. #define A8514_STATUS        0x9AE8      /* (R/O) */
  264. #define   STATUS_QUEUE1_INUSE   0x0001
  265. #define   STATUS_QUEUE2_INUSE   0x0002
  266. #define   STATUS_QUEUE3_INUSE   0x0004
  267. #define   STATUS_QUEUE4_INUSE   0x0008
  268. #define   STATUS_QUEUE5_INUSE   0x0010
  269. #define   STATUS_QUEUE6_INUSE   0x0020
  270. #define   STATUS_QUEUE7_INUSE   0x0040
  271. #define   STATUS_QUEUE8_INUSE   0x0080
  272. #define   STATUS_DATA_AVAILABLE 0x0100
  273. #define   STATUS_COMMAND_ACTIVE 0x0200
  274.  
  275. /* 8514/A Coordinate registers (word registers unless noted otherwise)
  276.  */
  277. #define A8514_CURRENTY      0x82E8      /* (R/W) */
  278. #define A8514_CURRENTX      0x86E8      /* (R/W) */
  279. #define A8514_DESTY_AXSTP   0x8AE8      /* (W/O) */
  280. #define A8514_DESTX_DIASTP  0x8EE8      /* (W/O) */
  281. #define A8514_ERRORTERM     0x92E8      /* suitable for presence test (R/W) */
  282. #define A8514_MAJORAXISCNT  0x96E8      /* (W/O) */
  283.  
  284. /* 8514/A Multi-function control registers (word registers unless noted otherwise)
  285.  */
  286. #define A8514_MULTIFUNCTION 0xBEE8      /* (W/O) */
  287. #define   MFINDX_MINORAXISCNT   0x0000
  288. #define   MFINDX_TOPSCISSORS    0x1000
  289. #define   MFINDX_LEFTSCISSORS   0x2000
  290. #define   MFINDX_BOTTOMSCISSORS 0x3000
  291. #define   MFINDX_RIGHTSCISSORS  0x4000
  292. #define   MFINDX_MEMORYCTRL     0x5000
  293. #define     MEMCTRL_WRITE4          0x0000
  294. #define     MEMCTRL_WRITE5          0x0001
  295. #define     MEMCTRL_WRITE8          0x0002
  296. #define     MEMCTRL_WRITE10         0x0003
  297. #define     MEMCTRL_WRITEMASK       0x0003
  298. #define     MEMCTRL_CAS2            0x0000  /* this implies 4-plane setting */
  299. #define     MEMCTRL_CAS4            0x0004  /* this implies 8-plane setting */
  300. #define     MEMCTRL_CAS6            0x0008
  301. #define     MEMCTRL_CAS8            0x000C
  302. #define     MEMCTRL_CASMASK         0x000C
  303. #define     MEMCTRL_CASSWAP         0x0010
  304. #define   MFINDX_PATTERNLOW     0x8000
  305. #define   MFINDX_PATTERNHIGH    0x9000
  306. #define   MFINDX_PIXELCTRL      0xA000
  307. #define     PIXELCTRL_5PIXELROTATE  0x0001
  308. #define     PIXELCTRL_MASKSELECT    0x0002
  309. #define     PIXELCTRL_PLANAR        0x0004
  310. #define     PIXELCTRL_COLORFALSE    0x0000
  311. #define     PIXELCTRL_COLORTRUE     0x0008
  312. #define     PIXELCTRL_COLORGE       0x0010
  313. #define     PIXELCTRL_COLORLT       0x0018
  314. #define     PIXELCTRL_COLORNE       0x0020
  315. #define     PIXELCTRL_COLOREQ       0x0028
  316. #define     PIXELCTRL_COLORLE       0x0030
  317. #define     PIXELCTRL_COLORGT       0x0038
  318. #define     PIXELCTRL_MIXFGND       0x0000
  319. #define     PIXELCTRL_FIXEDPATTERN  0x0040
  320. #define     PIXELCTRL_PLANARWRITE   0x0080
  321. #define     PIXELCTRL_SINGLEPLANE   0x00C0
  322. #define   MFINDX_INDXMASK       0xF000
  323. #define   MFINDX_DATAMASK       0x0FFF
  324. #define   MFINDX_INDXSHIFT      12
  325. #define   MFINDX_INDXTOTAL      16
  326.  
  327. /* 8514/A Pixel processing registers (word registers unless noted otherwise)
  328.  */
  329. #define A8514_SHORTSTROKE   0x9EE8      /* (W/O) */
  330. #define A8514_BGNDCOLOR     0xA2E8      /* (W/O) */
  331. #define A8514_FGNDCOLOR     0xA6E8      /* (W/O) */
  332. #define A8514_WRITEMASK     0xAAE8      /* (W/O) */
  333. #define A8514_READMASK      0xAEE8      /* (W/O) */
  334. #define A8514_COLORCOMPARE  0xB2E8      /* (W/O) */
  335. #define A8514_BGNDMIX       0xB6E8      /* (W/O) */
  336. #define A8514_FGNDMIX       0xBAE8      /* (W/O) */
  337. #define     FGNDMIX_SOURCE      0x0007
  338. #define     FGNDMIX_BGNDCLR     0x0000
  339. #define     FGNDMIX_FGNDCLR     0x0020
  340. #define     FGNDMIX_PIXELDATA   0x0040
  341. #define     FGNDMIX_PLANECOPY   0x0060
  342. #define A8514_PIXELTRANSFER 0xE2E8      /* (R/W) */
  343.  
  344. /* XGA I/O Registers (all byte registers) */
  345.  
  346. #define  AXGA_OPERATING_MODE              0  /* private indexes into */
  347. #define  AXGA_APERTURE_CONTROL            1  /*   awregXGAIOReg[].  See */
  348. #define  AXGA_RESERVED1                   2  /*   VVXGAREGS structure */
  349. #define  AXGA_RESERVED2                   3  /*   definition in VVXGAP.H */
  350. #define  AXGA_INTERRUPT_ENABLE            4  /*   for detail */
  351. #define  AXGA_INTERRUPT_STATUS            5
  352. #define  AXGA_VIRTUAL_MEMORY_CONTROLLER   6
  353. #define  AXGA_VIRTUAL_MEMORY_INT_STATUS   7
  354. #define  AXGA_APERTURE_INDEX              8
  355. #define  AXGA_MEMORY_ACCESS_MODE          9
  356. #define  AXGA_INDEX_SELECT                10
  357. #define  AXGA_INDEX_DATA_B                11
  358. #define  AXGA_INDEX_DATA_C                12
  359. #define  AXGA_INDEX_DATA_D                13
  360. #define  AXGA_INDEX_DATA_E                14
  361. #define  AXGA_INDEX_DATA_F                15
  362. #define  AXGA_TOTAL                       16
  363.  
  364. /* XGA Index Registers (all byte register) */
  365. #define  AINDX_RESERVED0               0x0000   /* (R/W) */
  366. #define  AINDX_RESERVED1               0x0001   /* (R/O) */
  367. #define  AINDX_RESERVED2               0x0002   /* (R/O) */
  368. #define  AINDX_RESERVED3               0x0003   /* (R/O) */
  369. #define  AINDX_AUTOCONFIG              0x0004   /* (R/O) */
  370. #define  AINDX_RESERVED5               0x0005   /* (R/O) */
  371. #define  AINDX_RESERVED6               0x0006   /* (R/O) */
  372. #define  AINDX_RESERVED7               0x0007   /* (R/O) */
  373. #define  AINDX_RESERVED8               0x0008   /* (R/O) */
  374. #define  AINDX_RESERVED9               0x0009   /* (R/O) */
  375. #define  AINDX_RESERVEDa               0x000a   /* (R/O) */
  376. #define  AINDX_RESERVEDb               0x000b   /* (R/O) */
  377. #define  AINDX_COPROCSAVERESTOREA      0x000c   /* (R/O) */
  378. #define  AINDX_COPROCSAVERESTOREB      0x000d   /* (R/O) */
  379. #define  AINDX_RESERVEDe               0x000e   /* (R/O) */
  380. #define  AINDX_RESERVEDf               0x000f   /* (R/O) */
  381. #define  AINDX_HORZTOTALLO             0x0010   /* (R/W) */
  382. #define  AINDX_HORZTOTALHI             0x0011   /* (R/W) */
  383. #define  AINDX_HORZDISPENDLO           0x0012   /* (R/W) */
  384. #define  AINDX_HORZDISPENDHI           0x0013   /* (R/W) */
  385. #define  AINDX_HORZBLANKINGSTARTLO     0x0014   /* (R/W) */
  386. #define  AINDX_HORZBLANKINGSTARTHI     0x0015   /* (R/W) */
  387. #define  AINDX_HORZBLANKINGENDLO       0x0016   /* (R/W) */
  388. #define  AINDX_HORZBLANKINGENDHI       0x0017   /* (R/W) */
  389. #define  AINDX_HORZSYNCPULSESTARTLO    0x0018   /* (R/W) */
  390. #define  AINDX_HORZSYNCPULSESTARTHI    0x0019   /* (R/W) */
  391. #define  AINDX_HORZSYNCPULSEENDLO      0x001a   /* (R/W)    132 Column Reg */
  392. #define  AINDX_HORZSYNCPULSEENDHI      0x001b   /* (R/W)    132 Column Reg */
  393. #define  AINDX_HORZSYNCPOSITION1       0x001c   /* (W/O) */
  394. #define  AINDX_RESERVED1d              0x001d   /* (R/O) */
  395. #define  AINDX_HORZSYNCPOSITION2       0x001e   /* (W/O) */
  396. #define  AINDX_RESERVED1f              0x001f   /* (R/O) */
  397. #define  AINDX_VERTTOTALLO             0x0020   /* (R/W) */
  398. #define  AINDX_VERTTOTALHI             0x0021   /* (R/W) */
  399. #define  AINDX_VERTDISPENDLO           0x0022   /* (R/W) */
  400. #define  AINDX_VERTDISPENDHI           0x0023   /* (R/W) */
  401. #define  AINDX_VERTBLANKINGSTARTLO     0x0024   /* (R/W) */
  402. #define  AINDX_VERTBLANKINGSTARTHI     0x0025   /* (R/W) */
  403. #define  AINDX_VERTBLANKINGENDLO       0x0026   /* (R/W) */
  404. #define  AINDX_VERTBLANKINGENDHI       0x0027   /* (R/W) */
  405. #define  AINDX_VERTSYNCPULSESTARTLO    0x0028   /* (R/W) */
  406. #define  AINDX_VERTSYNCPULSESTARTHI    0x0029   /* (R/W) */
  407. #define  AINDX_VERTSYNCPULSEEND        0x002a   /* (R/W)    132 Column Reg */
  408. #define  AINDX_RESERVED2b              0x002b   /* (R/O) */
  409. #define  AINDX_VERTLINECOMPLO          0x002c   /* (R/W) */
  410. #define  AINDX_VERTLINECOMPHI          0x002d   /* (R/W) */
  411. #define  AINDX_RESERVED2e              0x002e   /* (R/O) */
  412. #define  AINDX_RESERVED2f              0x002f   /* (R/O) */
  413. #define  AINDX_SPRITEHORZSTARTLO       0x0030   /* (R/W) */
  414. #define  AINDX_SPRITEHORZSTARTHI       0x0031   /* (R/W) */
  415. #define  AINDX_SPRITEHORZPRESET        0x0032   /* (R/W) */
  416. #define  AINDX_SPRITEVERTSTARTLO       0x0033   /* (R/W) */
  417. #define  AINDX_SPRITEVERTSTARTHI       0x0034   /* (R/W) */
  418. #define  AINDX_SPRITEVERTPRESET        0x0035   /* (R/W) */
  419. #define  AINDX_SPRITECONTROL           0x0036   /* (R/W) */
  420. #define  AINDX_RESERVED37              0x0037   /* (R/O) */
  421. #define  AINDX_SPRITECOLOR0RED         0x0038   /* (R/W) */
  422. #define  AINDX_SPRITECOLOR0GREEN       0x0039   /* (R/W) */
  423. #define  AINDX_SPRITECOLOR0BLUE        0x003a   /* (R/W) */
  424. #define  AINDX_SPRITECOLOR1RED         0x003b   /* (R/W) */
  425. #define  AINDX_SPRITECOLOR1GREEN       0x003c   /* (R/W) */
  426. #define  AINDX_SPRITECOLOR1BLUE        0x003d   /* (R/W) */
  427. #define  AINDX_RESERVED3e              0x003e   /* (R/O) */
  428. #define  AINDX_RESERVED3f              0x003f   /* (R/O) */
  429. #define  AINDX_DISPPIXELMAPOFFSETLO    0x0040   /* (R/W) */
  430. #define  AINDX_DISPPIXELMAPOFFSETMI    0x0041   /* (R/W) */
  431. #define  AINDX_DISPPIXELMAPOFFSETHI    0x0042   /* (R/W) */
  432. #define  AINDX_DISPPIXELMAPWIDTHLO     0x0043   /* (R/W) */
  433. #define  AINDX_DISPPIXELMAPWIDTHHI     0x0044   /* (R/W) */
  434. #define  AINDX_RESERVED45              0x0045   /* (R/O) */
  435. #define  AINDX_RESERVED46              0x0046   /* (R/O) */
  436. #define  AINDX_RESERVED47              0x0047   /* (R/O) */
  437. #define  AINDX_RESERVED48              0x0048   /* (R/O) */
  438. #define  AINDX_RESERVED49              0x0049   /* (R/O) */
  439. #define  AINDX_RESERVED4a              0x004a   /* (R/O) */
  440. #define  AINDX_RESERVED4b              0x004b   /* (R/O) */
  441. #define  AINDX_RESERVED4c              0x004c   /* (R/O) */
  442. #define  AINDX_RESERVED4d              0x004d   /* (R/O) */
  443. #define  AINDX_RESERVED4e              0x004e   /* (R/O) */
  444. #define  AINDX_RESERVED4f              0x004f   /* (R/O) */
  445. #define  AINDX_DISPCONTROL1            0x0050   /* (R/W)    132 Column Reg */
  446. #define  AINDX_DISPCONTROL2            0x0051   /* (R/W) */
  447. #define  AINDX_DISPIDCOMPARATOR        0x0052   /* (R/O) */
  448. #define  AINDX_MYSTERYREG              0x0053   /* (R/O)    Referenced by AFI */
  449. #define  AINDX_CLOCKFREQSELECT         0x0054   /* (R/W)    132 Column Reg */
  450. #define  AINDX_BORDERCOLOR             0x0055   /* (R/W) */
  451. #define  AINDX_RESERVED56              0x0056   /* (R/O) */
  452. #define  AINDX_RESERVED57              0x0057   /* (R/O) */
  453. #define  AINDX_RESERVED58              0x0058   /* (R/O) */
  454. #define  AINDX_RESERVED59              0x0059   /* (R/O) */
  455. #define  AINDX_RESERVED5a              0x005a   /* (R/O) */
  456. #define  AINDX_RESERVED5b              0x005b   /* (R/O) */
  457. #define  AINDX_RESERVED5c              0x005c   /* (R/O) */
  458. #define  AINDX_RESERVED5d              0x005d   /* (R/O) */
  459. #define  AINDX_RESERVED5e              0x005e   /* (R/O) */
  460. #define  AINDX_RESERVED5f              0x005f   /* (R/O) */
  461. #define  AINDX_SPRITEPALETTEIDXLO      0x0060   /* (R/W) */
  462. #define  AINDX_SPRITEIDXHI             0x0061   /* (R/W) */
  463. #define  AINDX_SPRITEPALETTEIDXLOPREF  0x0062   /* (R/W) */
  464. #define  AINDX_SPRITEIDXHIPREFETCH     0x0063   /* (R/W) */
  465. #define  AINDX_PALETTEMASK             0x0064   /* (R/W) */
  466. #define  AINDX_PALETTEDATA             0x0065   /* (R/W) */
  467. #define  AINDX_PALETTESEQUENCE         0x0066   /* (R/W) */
  468. #define  AINDX_PALETTEREDPREFETCH      0x0067   /* (R/W) */
  469. #define  AINDX_PALETTEGREENPREFETCH    0x0068   /* (R/W) */
  470. #define  AINDX_PALETTEBLUEPREFETCH     0x0069   /* (R/W) */
  471. #define  AINDX_SPRITEDATA              0x006a   /* (R/W) */
  472. #define  AINDX_SPRITEPREFETCH          0x006b   /* (R/W) */
  473. #define  AINDX_RESERVED6c              0x006c   /* (R/O) */
  474. #define  AINDX_RESERVED6d              0x006d   /* (R/O) */
  475. #define  AINDX_RESERVED6e              0x006e   /* (R/O) */
  476. #define  AINDX_RESERVED6f              0x006f   /* (R/O) */
  477. #define  AINDX_EXTCLOCKSELECT          0x0070   /* (R/W)    132 Column Reg */
  478.  
  479. #define  IRINDX_INDXTOTAL              0x0071
  480. #define  IRINDX_INDXMASK               0x00FF
  481. #define  IRINDX_DATAMASK               0xFF00
  482. #define  IRINDX_DATASHIFT              8
  483.  
  484.  
  485. /*  Registers indexed via multi-register ports
  486.  *
  487.  *  All are W/O unless VGA or otherwise specified
  488.  */
  489.  
  490. #define REG_ATCPALETTE      0x00        /* 00h-0Fh are palette registers */
  491. #define REG_ATCMODECTRL     0x10        /* Compaq VGA: wait for vert retrace */
  492. #define REG_ATCOVERSCAN     0x11
  493. #define REG_ATCPLANEENABLE  0x12
  494. #define REG_ATCPELPANNING   0x13
  495. #define REG_ATCVGAREG       0x14
  496. #define TOTAL_EGA_ATCREGS   0x14
  497. #define TOTAL_IBM_ATCREGS   0x15
  498. #define TOTAL_TSENG_ATCREGS 0x18
  499.  
  500. #define REG_SEQRESET        0x00
  501. #define REG_SEQCLKMODE      0x01        /* reset sequencer before writing */
  502. #define REG_SEQMAPMASK      0x02
  503. #define REG_SEQCHARMAPSEL   0x03
  504. #define REG_SEQMEMMODE      0x04        /* reset sequencer before writing */
  505. #define REG_SEQUNKNOWN_IBM1 0x07
  506. #define TOTAL_IBM_SEQREGS   0x05
  507. #define TOTAL_TSENG_SEQREGS 0x08
  508.  
  509. #define REG_GDCSR           0x00
  510. #define REG_GDCESR          0x01
  511. #define REG_GDCCLRCMP       0x02
  512. #define REG_GDCROTATE       0x03
  513. #define REG_GDCREADMAP      0x04
  514. #define REG_GDCMODE         0x05
  515. #define REG_GDCMISC         0x06        /* reset sequencer before writing */
  516. #define REG_GDCDONTCARE     0x07
  517. #define REG_GDCBITMASK      0x08
  518. #define TOTAL_IBM_GDCREGS   0x09
  519. #define TOTAL_TSENG_GDCREGS 0x0F
  520.  
  521. #define REG_CRTHORZTOTAL    0x00
  522. #define REG_CRTHORZDSPEND   0x01
  523. #define REG_CRTHORZSTBLNK   0x02
  524. #define REG_CRTHORZENDBLNK  0x03
  525. #define REG_CRTHORZSTRTRC   0x04
  526. #define REG_CRTHORZENDRTRC  0x05
  527. #define REG_CRTVERTTOTAL    0x06
  528. #define REG_CRTOVERFLOW     0x07
  529. #define REG_CRTPRESETROW    0x08
  530. #define REG_CRTMAXSCAN      0x09
  531. #define REG_CRTCURSTSCAN    0x0A
  532. #define REG_CRTCURENDSCAN   0x0B
  533. #define REG_CRTSTARTADDRHI  0x0C        /* R/W (W/O on CGA???) */
  534. #define REG_CRTSTARTADDRLO  0x0D        /* R/W (W/O on CGA???) */
  535. #define REG_CRTCURLOCHI     0x0E        /* R/W */
  536. #define REG_CRTCURLOCLO     0x0F        /* R/W */
  537. #define REG_CRTVERTSTRTRC   0x10
  538. #define REG_CRTLPENHI       0x10        /* R/O (dual-purpose register index) */
  539. #define REG_CRTVERTENDRTRC  0x11
  540. #define REG_CRTLPENLO       0x11        /* R/O (dual-purpose register index) */
  541. #define REG_CRTVERTDSPEND   0x12
  542. #define REG_TSENG_CRTLPEN2  0x12        /* R/O (dual-purpose register index) */
  543. #define REG_CRTOFFSET       0x13
  544. #define REG_CRTUNDLINELOC   0x14
  545. #define REG_CRTVERTSTBLNK   0x15
  546. #define REG_CRTVERTENDBLNK  0x16
  547. #define REG_CRTMODECTRL     0x17
  548. #define REG_CRTLINECMP      0x18
  549. #define REG_CRTUNKNOWN_IBM1 0x3F
  550. #define TOTAL_CGA_CRTREGS   0x13
  551. #define TOTAL_IBM_CRTREGS   0x19
  552. #define TOTAL_TSENG_CRTREGS 0x26
  553.  
  554. #define TOTAL_DACREGS       256         /* on VGA, there are 256 color registers */
  555.  
  556.  
  557. /* Individual bits for registers
  558.  */
  559.  
  560. #define ATCPAL_ADDRMASK     0x01F
  561. #define ATCPAL_ENABLE       0x020
  562.  
  563. #define SEQRESET_ASYNC      0x001
  564. #define SEQRESET_SYNC       0x002
  565.  
  566. #define SEQCLK_8DOTS        0x001       /* reset sequencer before writing */
  567. #define SEQCLK_CYCLES       0x002
  568. #define SEQCLK_SHIFTLOAD    0x004
  569. #define SEQCLK_DOTCLOCK     0x008       /* reset sequencer before writing */
  570. #define SEQCLK_VGASHIFT4    0x010
  571. #define SEQCLK_VGASCREENOFF 0x020
  572.  
  573. #define SEQMAP_PLANE0       0x001
  574. #define SEQMAP_PLANE1       0x002
  575. #define SEQMAP_PLANE2       0x004
  576. #define SEQMAP_PLANE3       0x008
  577. #define SEQMAP_ALL          (SEQMAP_PLANE0|SEQMAP_PLANE1| \
  578.                              SEQMAP_PLANE2|SEQMAP_PLANE3)
  579.  
  580. #define SEQMEM_ALPHA        0x001
  581. #define SEQMEM_EXTENDED     0x002
  582. #define SEQMEM_ODDEVENSAME  0x004       /* otherwise, even->0/2, odd->1/3 */
  583. #define SEQMEM_CHAIN4       0x008       /* low 2 bits select plane */
  584. #define SEQMEM_ALL          (SEQMEM_ALPHA|SEQMEM_EXTENDED|SEQMEM_ODDEVENSAME|SEQMEM_CHAIN4)
  585.  
  586. #define GDCSR_PLANE0        0x001
  587. #define GDCSR_PLANE1        0x002
  588. #define GDCSR_PLANE2        0x004
  589. #define GDCSR_PLANE3        0x008
  590. #define GDCSR_ALL           (GDCSR_PLANE0|GDCSR_PLANE1| \
  591.                              GDCSR_PLANE2|GDCSR_PLANE3)
  592. #define GDCESR_ALL          GDCSR_ALL
  593.  
  594. #define GDCCLRCMP_ALL       0x00F
  595.  
  596. #define GDCROTATE_COUNT     0x007
  597. #define GDCROTATE_AND       0x008
  598. #define GDCROTATE_OR        0x010
  599. #define GDCROTATE_XOR       0x018
  600. #define GDCROTATE_NOFUNC    0x000
  601. #define GDCROTATE_ALL       (GDCROTATE_COUNT|GDCROTATE_AND|GDCROTATE_OR| \
  602.                              GDCROTATE_XOR)
  603.  
  604. #define GDCREADMAP_ALL      (PLANE0|PLANE1|PLANE2|PLANE3)
  605.  
  606. #define GDCMODE_WRITE0      0x000
  607. #define GDCMODE_WRITE1      0x001
  608. #define GDCMODE_WRITE2      0x002
  609. #define GDCMODE_WRITE3      0x003       /* only on a VGA */
  610. #define GDCMODE_TEST        0x004
  611. #define GDCMODE_READ0       0x000
  612. #define GDCMODE_READ1       0x008
  613. #define GDCMODE_ODDEVENDIFF 0x010
  614. #define GDCMODE_ODDEVENBITS 0x020
  615. #define GDCMODE_256COLOR    0x040       /* only on a VGA */
  616. #define GDCMODE_ALL         (GDCMODE_WRITE3|GDCMODE_TEST|GDCMODE_READ1| \
  617.                              GDCMODE_ODDEVENDIFF|GDCMODE_ODDEVENBITS|GDCMODE_256COLOR)
  618.  
  619. #define GDCMISC_NOCHARGEN   0x001
  620. #define GDCMISC_ODDTOEVEN   0x002
  621. #define GDCMISC_64K_A0000   0x004
  622. #define GDCMISC_32K_B0000   0x008
  623. #define GDCMISC_32K_B8000   0x00C
  624. #define GDCMISC_128K_A0000  0x000
  625. #define GDCMISC_ADDRMASK    0x00C
  626. #define GDCMISC_ALL         (GDCMISC_NOCHARGEN|GDCMISC_ODDTOEVEN|GDCMISC_32K_B8000)
  627.  
  628. #define GDCDONTCARE_ALL     0x00F
  629.  
  630. #define GDCBITMASK_ALL      0x0FF
  631.  
  632. #define CRTOVFL_VERTTOTAL   0x001
  633. #define CRTOVFL_VERTDSPEND  0x002
  634. #define CRTOVFL_VERTSTRTRC  0x004
  635. #define CRTOVFL_VERTSTBLNK  0x008
  636. #define CRTOVFL_LINECMP     0x010
  637. #define CRTOVFL_CURLOC      0x020
  638.  
  639. #define CRTMAXSCAN_200CONV  0x080       /* VGA bit for 200->400 conversion */
  640.  
  641. #define CRTMCTRL_COMPAT     0x001       /* CRT compatibility mode (8K disp.) */
  642.  
  643.  
  644. #define MISCOUT_COLRPORTS   0x001       /* select 3Dx (or possibly 2Dx) ports */
  645. #define MISCOUT_ENABLERAM   0x002
  646. #define MISCOUT_CLKSELECT   0x00C       /* reset sequencer before writing */
  647. #define MISCOUT_DISABLEDRV  0x010
  648. #define MISCOUT_HIGHPAGE    0x020
  649. #define MISCOUT_NEGHORZRTRC 0x040
  650. #define MISCOUT_NEGVERTRTRC 0x080
  651.  
  652. #define STATUS1_HORZRTRC    0x001       /* very frequent, but very short */
  653. #define STATUS1_LPENSTROBE  0x002
  654. #define STATUS1_LPENSWITCH  0x004
  655. #define STATUS1_VERTRTRC    0x008       /* less frequent, but much longer */
  656. #define STATUS1_ATCOUTPUT1  0x010
  657. #define STATUS1_ATCOUTPUT2  0x020
  658.  
  659.  
  660. #define MONOMODE_HIRES      0x001       /* must always be set */
  661. #define MONOMODE_ENABLE     0x008
  662. #define MONOMODE_BLINK      0x020
  663.  
  664. #define CGAMODE_80X25       0x001
  665. #define CGAMODE_320X200     0x002
  666. #define CGAMODE_BW          0x004
  667. #define CGAMODE_ENABLE      0x008
  668. #define CGAMODE_640X200     0x010
  669. #define CGAMODE_BLINK       0x020
  670.  
  671. #define CGACOLOR_BORDER     0x00F       /* border in modes 0/1/2/3, bgnd in 4/5 */
  672. #define CGACOLOR_INTENSE    0x010
  673. #define CGACOLOR_SET        0x020
  674.  
  675. #endif  /* INCL_VIDEOHW */
  676.  
  677.  
  678. #ifdef INCL_VIDEOPTR
  679.  
  680. /* Define current pointer-draw limitations
  681.  */
  682.  
  683. #define PTRSAVWD            (MAX_PTRWIDTH+1)
  684. #define PTRSAVHT            (MAX_PTRHEIGHT)
  685. #define PTRSAVSIZE          (PTRSAVWD*PTRSAVHT)
  686.  
  687. #define BYTEPTRSAVWD        (PTRSAVWD*8)
  688. #define BYTEPTRSAVHT        (PTRSAVHT*1)
  689. #define BYTEPTRSAVSIZE      (BYTEPTRSAVWD*BYTEPTRSAVHT)
  690.  
  691. #define SCRSAVWD            (PTRSAVWD+2)
  692. #define SCRSAVHT            (PTRSAVHT+4)
  693. #define SCRSAVSIZE          (SCRSAVWD*SCRSAVHT)
  694.  
  695. #define BYTESCRSAVWD        (SCRSAVWD*8)
  696. #define BYTESCRSAVHT        (SCRSAVHT*1)
  697. #define BYTESCRSAVSIZE      (BYTESCRSAVWD*BYTESCRSAVHT)
  698.  
  699.  
  700. /* Define EGA/VGA off-screen memory usage
  701.  */
  702.  
  703. #define OFFSCREEN0D         ((320/8)*200)
  704. #define OFFSCREEN0E         ((640/8)*200)
  705. #define OFFSCREEN10         ((640/8)*350)
  706. #define OFFSCREEN12         ((640/8)*480)
  707. #define OFFSCREEN13         ((320/1)*200)
  708.  
  709. #define SIZBASIC            0x0004      /* reserved for BASIC */
  710. #define SIZEGASYS           0x0001      /* reserved for EGA.SYS */
  711. #define SIZMOUSE            0x0001      /* reserved for MOUSE drivers */
  712. #define SIZMICROSOFT        0x0010      /* reserved for use by Microsoft */
  713. #define SIZRESERVED         (SIZBASIC+SIZEGASYS+SIZMOUSE+SIZMICROSOFT)
  714.  
  715. #define OFFBASIC            0x0000
  716. #define OFFEGASYS           (OFFBASIC  + SIZBASIC)
  717. #define OFFMOUSE            (OFFEGASYS + SIZEGASYS)
  718. #define OFFMICROSOFT        (OFFMOUSE  + SIZMOUSE)
  719. //c-begin
  720. #if OFFMICROSOFT+SIZMICROSOFT != SIZRESERVED
  721. #error  Off-screen offsets do not match sizes
  722. #endif
  723. //c-end
  724.  
  725. #define OFFPTRSAV0D         (OFFSCREEN0D + SIZRESERVED)
  726. #define OFFSCRSAV0D         (OFFPTRSAV0D + PTRSAVSIZE)
  727. //c-begin
  728. #if OFFSCRSAV0D+SCRSAVSIZE > 0x2000
  729. #error  PTRSAVSIZE and/or SCRSAVSIZE too large for mode 0Dh
  730. #endif
  731. //c-end
  732.  
  733. #define OFFPTRSAV0E         (OFFSCREEN0E + SIZRESERVED)
  734. #define OFFSCRSAV0E         (OFFPTRSAV0E + PTRSAVSIZE)
  735. //c-begin
  736. #if OFFSCRSAV0E+SCRSAVSIZE > 0x4000
  737. #error  PTRSAVSIZE and/or SCRSAVSIZE too large for mode 0Eh
  738. #endif
  739. //c-end
  740.  
  741. #define OFFPTRSAV10         (OFFSCREEN10 + SIZRESERVED)
  742. #define OFFSCRSAV10         (OFFPTRSAV10 + PTRSAVSIZE)
  743. //c-begin
  744. #if OFFSCRSAV10+SCRSAVSIZE > 0x7000
  745. #error  PTRSAVSIZE and/or SCRSAVSIZE too large for mode 10h
  746. #endif
  747. //c-end
  748.  
  749. #define OFFPTRSAV12         (OFFSCREEN12 + SIZRESERVED)
  750. #define OFFSCRSAV12         (OFFPTRSAV12 + PTRSAVSIZE)
  751. //c-begin
  752. #if OFFSCRSAV12+SCRSAVSIZE > 0x9800
  753. #error  PTRSAVSIZE and/or SCRSAVSIZE too large for mode 12h
  754. #endif
  755. //c-end
  756.  
  757. #define OFFPTRSAV13         (OFFSCREEN13 + SIZRESERVED)
  758. #define OFFSCRSAV13         (OFFPTRSAV13 + BYTEPTRSAVSIZE)
  759. //c-begin
  760. #if OFFSCRSAV13+SCRSAVSIZE > 0x10000
  761. #error  BYTEPTRSAVSIZE and/or BYTESCRSAVSIZE too large for mode 13h
  762. #endif
  763. //c-end
  764. /*end*/
  765.  
  766. #endif  /* INCL_VIDEOPTR */
  767.  
  768.  
  769. #define VVD_NAME1   "VVIDEO1$"  /* registered name of primary VVD */
  770. #define VVD_NAME2   "VVIDEO2$"  /* registered name of secondary VVD */
  771.  
  772.  
  773. #ifdef  INCL_VIDEOSYSREQ
  774.  
  775. /***EK+ VVD constants for system communication
  776.  */
  777. #ifndef CF_TEXT
  778. #define CF_TEXT     1           /* clipboard formats */
  779. #define CF_BITMAP   2           /* (see PMWIN.H) */
  780. #endif
  781.  
  782. #define ADAPTER_MONO    0       /* adapters supported */
  783. #define ADAPTER_CGA     1       /* (same as VioGetConfig constants) */
  784. #define ADAPTER_EGA     2
  785. #define ADAPTER_VGA     3
  786. #define ADAPTER_8514A   7
  787.  
  788. #ifndef MONITOR_8503            /* BUGBUG: avoid conflicts with bsesub.h */
  789. #define MONITOR_MONO    0       /* monitors supported */
  790. #define MONITOR_RGB     1       /* (typical for CGAs) */
  791. #define MONITOR_ECD     2       /* (typical for EGAs) */
  792. #define MONITOR_8503    3       /* (VGA or 8514/A monochrome) */
  793. #define MONITOR_8512_3  4       /* (VGA or 8514/A color) */
  794. #define MONITOR_8514    9       /* (VGA or 8514/A 1024x768 color, interlaced) */
  795. #endif
  796.  
  797. #define FORMAT_CGA      2       /* LVB formats supported */
  798. #define FORMAT_4BYTE    4
  799. #define FORMAT_BITMAP   0
  800.  
  801. #define DDFORMAT_4PLANE 1       /* display driver formats supported */
  802. #ifdef  ATLAS                                                           //J-TS00V
  803. #define DDFORMAT_8PLANE 2       /* display driver 8 plane formats supported *//*j-ni*/
  804. #define DDFORMAT_8PLANE_PALETTE 3                                       /*j-hm*/
  805.                 /* display driver 8 plane with palette supported */     /*j-hm*/
  806. #endif  //ATLAS                                                         //J-TS00V
  807.  
  808. #define MODE_MONO            0x0001 /* monochrome mode in effect */
  809. #define MODE_UNDERLINE       0x0002 /* underlining in effect */
  810. #define MODE_SUP_XSCALE2     0x1000 /* X scaling supported by factor of 2 */
  811. #define MODE_SUP_YSCALE2     0x2000 /* Y scaling supported by factor of 2 */
  812. #define MODE_SUP_PARTIALSCAN 0x4000 /* partial scanline copy requests supported */
  813.  
  814. #define SUSPEND_NONE              0 /* VDM running normally */
  815. #define SUSPEND_OUT_OF_MEMORY     1 /* VDM suspended due to low memory */
  816. #define SUSPEND_UNSUPPORTED_MODE  2 /* VDM suspended due to unsupported mode */
  817.  
  818. #define ACCESS_RELEASE            0 /* values for SETACCESS request */
  819. #define ACCESS_REQUEST            1
  820. #define ACCESS_PMREQUEST          2
  821.  
  822. #define CONTROL_RELEASE           0 /* Release event thread */
  823. #define CONTROL_VDMMINIMIZED      1 /* Disable video events for VDM */
  824. #define CONTROL_VDMUNMINIMIZED    2 /* Enable video events for VDM */
  825.  
  826.  
  827. /* VVD system functions
  828.  */
  829. #define VVDSYSREQ_SETACCESS     1   /* Obtain exclusive event access */
  830. #define VVDSYSREQ_SETFOCUS      2   /* Notify VDM gaining/losing focus */
  831. #define VVDSYSREQ_SETLOCK       3   /* Lock/unlock VDM's video state */
  832. #define VVDSYSREQ_QUERYMODE     4   /* Query VDM's current mode */
  833. #define VVDSYSREQ_QUERYCURSOR   5   /* Query VDM's current mode */
  834. #define VVDSYSREQ_QUERYPALETTE  6   /* Query VDM's palette settings */
  835. #define VVDSYSREQ_COPYLVB       7   /* Copy LVB data */
  836. #define VVDSYSREQ_COPYBITMAP    8   /* Copy bitmap data */
  837. #define VVDSYSREQ_WAITEVENT     9   /* Wait for VDM video update event */
  838. #define VVDSYSREQ_CONTROLEVENT  10  /* Perform event control operations */
  839.  
  840. #define VVDSYSREQ_SETDRQ        11  /* Set display requirements */
  841. #define VVDSYSREQ_REQMEM        12  /* Request off-screen video memory */
  842. #define VVDSYSREQ_FREEMEM       13  /* Free off-screen video memory */
  843. #define VVDSYSREQ_REQCTRL       14  /* Request video controller ownership */
  844. #define VVDSYSREQ_FREECTRL      15  /* Free video controller ownership */
  845.  
  846. #define VVDSYSREQ_QUERYVRAMSTATUS 16/* Return VRAM status since last call */
  847. #define VVDSYSREQ_SETOEMFLAG    17  /* Set OEM Status Flag */
  848.  
  849. #define VVDSYSREQ_MAX           17
  850.  
  851.  
  852. /* VVD event IDs for VVDSYSREQ_WAITEVENT
  853.  */
  854. #define VVDEVENT_NONE           0   /* No change */
  855. #define VVDEVENT_MODE           1   /* Change in VDM's mode */
  856. #define VVDEVENT_PALETTE        2   /* Change in VDM's palette */
  857. #define VVDEVENT_LVB            3   /* Change in VDM's LVB */
  858. #define VVDEVENT_SCROLL         4   /* Scroll of VDM's LVB */
  859. #define VVDEVENT_STRING         5   /* String output */
  860. #define VVDEVENT_CURSOR         6   /* Cursor position/type change */
  861. #define VVDEVENT_INPUT          7   /* VDM is checking for input data */
  862. #define VVDEVENT_ENDPASTE       8   /* VDM has cancelled pasting */
  863. #define VVDEVENT_PASTE          9   /* VDM is ready for additional pasting */
  864. #define VVDEVENT_SWITCHERROR    10  /* VDM cannot be switched foreground */
  865. #define VVDEVENT_TITLECHANGE    11  /* VDM title has changed */
  866. #define VVDEVENT_DDE            12  /* Set/Clear DDE flag */            /*@DDE*/
  867.  
  868. #define VVDEVENT_MAX            12                                      /*@DDE*/
  869. /*end*/
  870.  
  871.  
  872. /***ET+ VVD DosRequestVDD communication structures
  873.  */
  874. typedef struct vvm_s {          /* vvm (output for MODE event) */
  875.     ULONG  vvm_ulAdapter;       /* see the ADAPTER_* constants */
  876.     ULONG  vvm_ulFormat;        /* see the FORMAT_* constants */
  877.     ULONG  vvm_ulDDFormat;      /* see the DDFORMAT_* constants */
  878.     ULONG  vvm_flMode;          /* mode descriptors (see MODE_* constants) */
  879.     ULONG  vvm_nRows;           /* height of screen in rows (or y pixels) */
  880.     ULONG  vvm_nCols;           /* width of screen in columns (or x pixels) */
  881.     ULONG  vvm_nPlanes;         /* # of planes (must be 1 for Cruiser) */
  882.     ULONG  vvm_nBitCount;       /* if TEXT, zero;  if BITMAP, bits per pixel */
  883.     ULONG  vvm_ulCellWidth;     /* width of cells (normally 8;  1 for BITMAPs) */
  884.     ULONG  vvm_ulCellHeight;    /* height of cells (1 for BITMAPs) */
  885.     ULONG  vvm_fSuspended;      /* see the SUSPEND_* constants */
  886.     ULONG  vvm_cpID;            /* current code-page ID */
  887.     ULONG  vvm_FormatID;        /* current format ID */
  888. #ifdef ATLAS_GALE                                                       //J-TS00V
  889.     ULONG  vvm_GridColor;       /* current grid color                     j-ys0702*/
  890.     ULONG  vvm_AttrFlag;        /* current screen intensity               j-ys0702*/
  891.     ULONG  vvm_nRows2;          /* height of screen in rows for superimpose text    j-ys0702*/
  892.     ULONG  vvm_nCols2;          /* width of screen in columns for superimpose text  j-ys0702*/
  893.     ULONG  vvm_ulCellWidth2;    /* width of cells for superimpose text    j-ys0702*/
  894.     ULONG  vvm_ulCellHeight2;   /* height of cells for superimpose text   j-ys0702*/
  895.     ULONG  vvm_ulFormat2;       /* 4 for superimpose, otherwise 0         j-ys0702*/
  896. #endif  //ATLAS_GALE                                                    //J-TS00V
  897. } VVMODE;
  898. typedef VVMODE *NPVVMODE;
  899. typedef VVMODE FAR *PVVMODE;
  900.  
  901. #ifdef  ATLAS_GALE                                                      //J-TS00V
  902. #define FORMATID_EPOCHColor     0x41                                    //J-TS00V
  903. #define FORMATID_EPOCHMono      0x81                                    //J-TS00V
  904. #define FORMATID_MckColor       0x20                                    //J-TS00V
  905. #define FORMATID_CommonFMT      0x70                                    //J-TS00V
  906. #endif  //ATLAS_GALE                                                    //J-TS00V
  907.  
  908. typedef struct vvr_s {          /* vvr (input for COPYBITMAP request) */
  909.     ULONG  vvr_ulDDFormat;      /* display driver format (0 if DIB used) */
  910.     ULONG  vvr_cx;              /* target bitmap width */
  911.     ULONG  vvr_cy;              /* target bitmap height */
  912.     RECTL  vvr_rcl;             /* rectangle being requested */
  913.     PBYTE  vvr_pbColorXlate;    /* display driver color translation table */
  914. } VVRECT;
  915. typedef VVRECT *NPVVRECT;
  916. typedef VVRECT FAR *PVVRECT;
  917.  
  918. typedef struct vvl_s {          /* vvl (output for LVB event) */
  919.     RECTL  vvl_rcl;             /* rectangle being scrolled */
  920.     ULONG  vvl_fCertain;        /* TRUE if entire area changed, FALSE if unknown */
  921. #ifdef ATLAS_GALE                                                       //J-TS00V
  922.     ULONG  vvl_pFlags;          /* LSB indicate which page (text or graphics) is   j-ys0702*/
  923.                                 /* updated. 0 means graphics, 1 does text.       *///J-TS00V
  924. #endif  //ATLAS_GALE                                                    //J-TS00V
  925. } VVLVB;
  926. typedef VVLVB *NPVVLVB;
  927. typedef VVLVB FAR *PVVLVB;
  928.  
  929. typedef struct vvs_s {          /* vvs (output for SCROLL event) */
  930.     RECTL  vvs_rcl;             /* rectangle being scrolled */
  931.     LONG   vvs_fill;            /* fill value */
  932.     LONG   vvs_nRows;           /* # rows (negative means reverse scroll) */
  933.     LONG   vvs_nCols;           /* # columns (0,0 means rectangle blankfilled) */
  934. } VVSCROLL;
  935. typedef VVSCROLL *NPVVSCROLL;
  936. typedef VVSCROLL FAR *PVVSCROLL;
  937.  
  938. typedef struct vva_s {          /* vva (output for STRING event) */
  939.     ULONG  vva_row;             /* beginning row of string */
  940.     ULONG  vva_col;             /* beginning column of string */
  941.     ULONG  vva_nChars;          /* # characters in string */
  942. } VVSTRING;
  943. typedef VVSTRING *NPVVSTRING;
  944. typedef VVSTRING FAR *PVVSTRING;
  945.  
  946. typedef struct vvc_s {          /* vvc (output for CURSOR event) */
  947.     ULONG  vvc_row;             /* row (y position) of VDM's cursor */
  948.     ULONG  vvc_col;             /* column (x position) of VDM's cursor */
  949.     ULONG  vvc_ulScanStart;     /* starting scan-line for VDM's cursor */
  950.     ULONG  vvc_ulScanEnd;       /* ending scan-line for VDM's cursor */
  951.     ULONG  vvc_fVisible;        /* TRUE if VDM cursor visible, FALSE if not */
  952. } VVCURSOR;
  953. typedef VVCURSOR *NPVVCURSOR;
  954. typedef VVCURSOR FAR *PVVCURSOR;
  955.  
  956. typedef struct vve_s {          /* vve (output for VVDSYSREQ_GET/WAITEVENT) */
  957.     LONG   vve_iEvent;          /* one of the VVDEVENT_* constants */
  958.     ULONG  vve_sgID;            /* screen group ID of VDM */
  959.     ULONG  vve_nData;           /* # of entries of information returned */
  960. } VVEVENT;
  961. typedef VVEVENT *NPVVEVENT;
  962. typedef VVEVENT FAR *PVVEVENT;
  963.  
  964. typedef struct vvreg_s {        /* vvreg (shadow entry for VVDSYSREQ_SETDRQ) */
  965.     USHORT vvreg_port;          /* port # */
  966.     CHAR   vvreg_indx;          /* register index # (-1 if index reg) */
  967.     BYTE   vvreg_value;         /* last value written to register by VDD */
  968. } VVREG;
  969. typedef VVREG *NPVVREG;
  970. typedef VVREG FAR *PVVREG;
  971.  
  972.  
  973. /*** In the DRQ structure, all pointers are 16:16, and as such, cannot be
  974.  *   dereferenced directly from C.  The selector portions are GDT aliases to
  975.  *   the PM display driver's resident data, and are valid in any context, even
  976.  *   interrupt-time.
  977.  */
  978. #define ALL_RESERVED 0xffffffff
  979.  
  980. #define DRQ_DIRTYREGS   0x01    /* video controller registers have been modified */
  981.  
  982. typedef struct vvdrq_s {        /* vvdrq (main structure for VVDSYSREQ_SETDRQ) */
  983.     PBYTE  vvd_pPhysVRAM;       /* physical address of VRAM */
  984.     ULONG  vvd_nbReserved;      /* # of reserved bytes */
  985.     ULONG  vvd_offLatchByte;    /* offset of available latch storage */
  986.     PBYTE  vvd_pfbDRQFlags;     /* pointer to flags (see DRQ_* constants) */
  987.     PBYTE  vvd_pfCtrlOwned;     /* address of display.dll's fCtrlOwned flag */
  988.     PBYTE  vvd_pfCtrlNotify;    /* address of display.dll's fCtrlNotify flag */
  989.     ULONG  vvd_nShadowRegs;     /* # of registers to shadow */
  990.     PVVREG vvd_pShadowData;     /* address of first entry in shadow list */
  991. } VVDRQ;
  992. typedef VVDRQ *NPVVDRQ;
  993. typedef VVDRQ FAR *PVVDRQ;
  994. /*end*/
  995.  
  996. #endif  /* INCL_VIDEOSYSREQ */
  997.  
  998.  
  999. #ifdef  INCL_VIDEODEVREQ
  1000.  
  1001. /***EK+ VVD constants for inter-VDD communication
  1002.  */
  1003.  
  1004. #define VVDDEVREQ_POSTPEEK      1   /* VDM peeking for keyboard data */
  1005. #define VVDDEVREQ_POSTREAD      2   /* VDM reading for keyboard data */
  1006. #define VVDDEVREQ_POSTPASTE     3   /* VDM ready for more paste data */
  1007. #define VVDDEVREQ_POSTMOUSE     4   /* VDM mouse activity notification */
  1008. #define VVDDEVREQ_DEVACCEPT     5   /* request VVD to manage adapter */
  1009. #define VVDDEVREQ_DEVRELEASE    6   /* request VVD to free adapter */
  1010. #define VVDDEVREQ_DSPACCEPT     7   /* request VVD to manage display */
  1011. #define VVDDEVREQ_DSPRELEASE    8   /* request VVD to free display */
  1012. #define VVDDEVREQ_POSTEVENT     9   /* post a VDM event to the Shield */
  1013. #define VVDDEVREQ_SAVERESTORE  10   /* enable/disable save/restore    // XGA */
  1014. #define VVDDEVREQ_REPAINT      11   /* keep VRAMISTOAST bit set       // XGA */
  1015. #define VVDDEVREQ_REQCTRL      12   /* Request controller ownership    D1545 */
  1016. #define VVDDEVREQ_FREECTRL     13   /* Free video controller ownership D1545 */
  1017. #define VVDDEVREQ_PM_WINDOW    14   /* Set         on PM DeskTop state D1545 */
  1018. #define VVDDEVREQ_ENABLE_DDE   15   /* Set/Clear DDE flag               @DDE */
  1019. #define VVDDEVREQ_XGAPRESENT   16   /* VXGA installed                   @054 */
  1020. #define VVDDEVREQ_UNMAPVRAM    17   /* Unmap A0000 aperture             @054 */
  1021. #define VVDDEVREQ_8514PRESENT  18   /* V8514 installed                  @055 */
  1022.  
  1023. #define VVDDEVREQ_MAX          18                                   /* D1545 */
  1024.  
  1025. #ifdef  ATLAS_GALE                                                      //J-TS00V
  1026. //c-begin
  1027. #define VVDDEVREQ_VIDEOBUFFER   VVDDEVREQ_MAX+1
  1028. //c-end
  1029. //masm-begin
  1030. //VVDDEVREQ_VIDEOBUFFER equ  VVDDEVREQ_MAX+1
  1031. //masm-end
  1032. #endif  //ATLAS_GALE                                                    //J-TS00V
  1033. #ifdef  VTEXT                                                           //J-TS00V
  1034. //c-begin
  1035. #define VVDDEVREQ_NOTIFYVTEXT   VVDDEVREQ_MAX+2
  1036. //c-end
  1037. //masm-begin
  1038. //VVDDEVREQ_NOTIFYVTEXT equ  VVDDEVREQ_MAX+2
  1039. //masm-end
  1040. #endif  //VTEXT                                                         //J-TS00V
  1041.  
  1042.  
  1043. #define POSTEVENT_ADD      0x0001   /* add given event */
  1044. #define POSTEVENT_FLUSH    0x0002   /* flush given (or existing) event */
  1045. #define POSTEVENT_DELETE   0x0004   /* delete existing event */
  1046.  
  1047.  
  1048. /***ET+ VVD VDHRequestVDD communication structures
  1049.  */
  1050. typedef struct vvp_s {          /* vvp (input for POSTEVENT request) */
  1051.     LONG   vvp_iEvent;          /* see the VVDEVENT_* constants */
  1052.     PVOID  vvp_pEvent;          /* event data (varies from one event to another) */
  1053.     ULONG  vvp_flEvent;         /* event posting flags (see POSTEVENT_* constants) */
  1054. } VVPOST;
  1055. typedef VVPOST *NPVVPOST;
  1056. typedef VVPOST FAR *PVVPOST;
  1057. /*end*/
  1058.  
  1059. #endif  /* INCL_VIDEODEVREQ */
  1060.  
  1061.  
  1062. /*** VVD exported function prototypes
  1063.  */
  1064.  
  1065. #ifdef INCL_VIDEOINTERFACES                                          /*@025*/
  1066.  
  1067. typedef (PASCAL *PFNINT2FP)(HVDM, ULONG, PCRF);                      /*@025*/
  1068.  
  1069. /*** ULONG value sent to the registered INT 2F routine ***/          /*@025*/
  1070. #define VDHVVD_INT2F_OFF      0                                      /*@025*/
  1071. #define VDHVVD_INT2F_ON       1                                      /*@025*/
  1072. #define VDHVVD_INT2F_FG_START 2                                      /*@025*/
  1073. #define VDHVVD_INT2F_FG_END   3                                      /*@025*/
  1074. #define VDHVVD_INT2F_BG_START 4                                      /*@025*/
  1075. #define VDHVVD_INT2F_BG_END   5                                      /*@025*/
  1076.  
  1077. #ifndef VDHENTRY                                                     /*@025*/
  1078. #define VDHENTRY PASCAL NEAR                                         /*@025*/
  1079. #endif                                                               /*@025*/
  1080.  
  1081. VOID VDHENTRY VDHRegisterInt2FProc(FLAGS, PFNINT2FP);                /*@025*/
  1082.  
  1083. /*** BOOL value indicates the type of notifications required ***/    /*@025*/
  1084. #define VDHVVD_NOTIFY_ON_OFF  1                                      /*@025*/
  1085. #define VDHVVD_NOTIFY_START   2                                      /*@025*/
  1086. #define VDHVVD_NOTIFY_END     4                                      /*@025*/
  1087.  
  1088. #endif   /* INCL_VIDEOINTERFACES */                                  /*@025*/
  1089.  
  1090. /* None */
  1091.