home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 7 / 07.iso / c / c185 / 2.ddi / OWLSRC.EXE / CSCAPE / SOURCE / PCDECL.H < prev    next >
Encoding:
C/C++ Source or Header  |  1989-09-06  |  19.4 KB  |  471 lines

  1. /*
  2.     pcdecl.h
  3.  
  4.     % declarations for PC display stuff
  5.  
  6.     5/16/88  by Ted.
  7.  
  8.     OWL 1.1
  9.     Copyright (c) 1986, 1987, 1988 by Oakland Group, Inc.
  10.     ALL RIGHTS RESERVED.
  11.  
  12.     Revision History:
  13.     -----------------
  14.      8/30/88 Ted      Changed Order of args to ram_memtoseg to extract ram_CopyBox.
  15.     10/07/88 Ted    Obsoleted ram_CopyBox.
  16.     12/05/88 Ted    added mousehides
  17.     12/12/88 ted    Merged CheckKey and CheckMouse into CheckEvent.
  18.     12/13/88 jmd    Messed with dos.h include
  19.      1/12/89 ted    Separated the pchdata from the pcdata for better sharing.
  20.      2/04/89 ted    moved ilmasktab into pcdata structure from static data.
  21.      2/07/89 Ted    added timeout wait arg to hCheckEvent function.
  22.      2/28/89 ted    extracted pc event related stuff to pchard.h
  23.      3/19/89 ted    made pcdata static.
  24.      4/09/89 ted:    pulled static pchdata struct out of pcdata struct.
  25.      4/26/89 ted    Moved attrmap out of info struct into pcdata.
  26.      5/09/89 ted    Renamed from pcdisp.h
  27.      6/17/89 Ted    split pc_bgPlotText into evga_Plot-, mcga_Plot-, pc_bgPlot-.
  28.      7/05/89 ted    Added fontseg, fontoffs, dispseg for font plotters.
  29.      7/07/89 ted    Added new font plotting stuff: attrcols, plotchar, etc.
  30.      7/12/89 ted    Added OSTATIC's and '_func' macros.
  31.      7/14/89 ted    Removed ilmasktab.
  32. */
  33.  
  34. #ifdef LATTICE
  35. #    undef LATTICE        /* Lattice re-defines byte in dos.h, this tells it not to */
  36. #    include <dos.h>    /* has outp for Lattice compiler */
  37. #    define LATTICE
  38. #else
  39. #    ifdef TC
  40. #        include <dos.h>    /* has outp for Turbo compiler */
  41. #    endif
  42. #    ifdef MW
  43. #        define inp(port)                oinp(port)
  44. #        define outp(port,word)            ooutp(port,word)
  45.         /* plinout.asm */
  46.         extern byte oinp(_arg1(short int port));
  47.         extern void ooutp(_arg2(short int port, byte value));
  48. #    endif
  49. #endif
  50. /* -------------------------------------------------------------------------- */
  51. #define attrcols_func(fname)        unsigned DIGPRIV fname(_arg1(byte rattr))
  52. typedef                  unsigned (DIGPRIV *attrcols_fptr)(_arg1(byte rattr));
  53. #define plotchar_func(fname)        void DIGPRIV fname(_arg1(void))
  54. typedef                  void (DIGPRIV *plotchar_fptr)(_arg1(void));
  55.  
  56. typedef struct {
  57. /* Note: the assembly coded font plotter expects these variables here. */
  58.     unsigned long  fontoffs;        /* offset of current char in font table */
  59.     unsigned short fontseg;            /* segment of font table for current font */
  60.     unsigned short vidaddr;
  61.     unsigned short nsame;            /* the length in chars of the line to plot */
  62.     unsigned short starty;            /* the length in chars of the line to plot */
  63.     unsigned short splitcol;        /* the fg/bg color word */
  64.  
  65.     unsigned short dispseg;            /* segment at which display memory lies */
  66.     unsigned short ilmask;
  67.     unsigned short ilsize;
  68.     unsigned short vbincr;
  69.     unsigned short fontlines;        /* number of lines in current font */
  70.     byte nplanes;                    /* number of bitplanes on display */
  71.  
  72.     attrcols_fptr  attrcols;        /* swappable attribute tranlation function */
  73.     plotchar_fptr  plotchar;        /* swappable font plotter kernel */
  74.  
  75.     dispinfo_struct info;
  76.     struct pmap_struct dmspace;        /* pointed to by info->dispmap */
  77.     byte        attrmap[256];        /* attribute map table */
  78.     byte        *xattrmap;            /* ptr to attribute map extension for mcga */
  79.     byte        attrsize;            /* size of attrmap element in bits (there are always 256 of them) */
  80.  
  81.     int         oldmode;            /* pre-init video mode to restore from */
  82.     int            oldcursx;            /* pre-init cursor position */
  83.     int            oldcursy;
  84.     cursortype    curctype;            /* current hardware cursor type */
  85.  
  86.     boolean        retracewait;        /* flag to wait for retrace or not */
  87.  
  88.     unsigned long fontoffs0;        /* offset of font table for current font */
  89.     unsigned short fontseg0;        /* segment of font table for current font */
  90.     unsigned long fontoffs1;        /* offset of font table for current font */
  91.     unsigned short fontseg1;        /* segment of font table for current font */
  92.  
  93.     ocolmap_type colmap;            /* Shadow copy of device color map */
  94.  
  95.     pchdata_struct *h;        /* non-display hardware dig data */
  96. } pcdata_struct;
  97.  
  98. OEXTERN pcdata_struct pcdatastruc;
  99. #define pcdata         (&pcdatastruc)
  100. /* -------------------------------------------------------------------------- */
  101.  
  102. #define ramcopy_func(fname)            void DIGPRIV fname(_arg4(unsigned segm, unsigned segoffs, byte *memaddr, unsigned bwidth))
  103. typedef                   void (DIGPRIV *ramcopy_fptr)(_arg4(unsigned segm, unsigned segoffs, byte *memaddr, unsigned bwidth));
  104.  
  105. #define ramplanecopy_func(fname)    void DIGPRIV fname(_arg5(unsigned segm, unsigned segoffs, byte *membuf, unsigned bwidth, unsigned memoffs))
  106. typedef              void (DIGPRIV *ramplanecopy_fptr)(_arg5(unsigned segm, unsigned segoffs, byte *membuf, unsigned bwidth, unsigned memoffs));
  107.  
  108. #define ramclear_func(fname)        void DIGPRIV fname(_arg4(unsigned segm, unsigned segoffs, unsigned bwidth, unsigned short color))
  109. typedef                  void (DIGPRIV *ramclear_fptr)(_arg4(unsigned segm, unsigned segoffs, unsigned bwidth, unsigned short color));
  110.  
  111. #define rammove_func(fname)            void DIGPRIV fname(_arg4(unsigned segm, unsigned soffs, unsigned doffs, unsigned bwidth))
  112. typedef                   void (DIGPRIV *rammove_fptr)(_arg4(unsigned segm, unsigned soffs, unsigned doffs, unsigned bwidth));
  113.  
  114. #define pc_setinfo_func(fname)        boolean DIGPRIV fname(_arg1(int))
  115. typedef                boolean (DIGPRIV *pc_setinfo_fptr)(_arg1(int));
  116.  
  117. /* -------------------------------------------------------------------------- */
  118. /* pcmcurr.c */
  119. extern dmode_func (pc_ModeCurrent);
  120. extern boolean DIGPRIV pc_OpenMode(_arg2(dig_struct *digp, int mode));
  121.  
  122. /* pcmcurrt.c */
  123. extern dmode_func (pc_ModeCurrText);
  124. extern boolean DIGPRIV pc_OpenModeText(_arg2(dig_struct *digp, int mode));
  125.  
  126. /* pcmgraph.c */
  127. extern dmode_func (pc_ModeGraphics);
  128.  
  129. /* pcbios.c */
  130. extern dmode_func (pc_ModeBIOS);
  131. extern dmode_func (pc_ModeBIOS0);
  132. extern dmode_func (pc_ModeBIOS1);
  133. extern dmode_func (pc_ModeBIOS2);
  134. extern dmode_func (pc_ModeBIOS3);
  135. extern dmode_func (pc_ModeBIOSEGA43);
  136. extern dmode_func (pc_ModeBIOSVGA50);
  137. extern dmode_func (pc_ModeBIOS7);
  138.  
  139. /* pctext.c */
  140. extern dmode_func (pc_ModeText);
  141. extern dmode_func (pc_Mode0);
  142. extern dmode_func (pc_Mode1);
  143. extern dmode_func (pc_Mode2);
  144. extern dmode_func (pc_Mode3);
  145. extern dmode_func (pc_ModeEGA43);
  146. extern dmode_func (pc_ModeVGA50);
  147. extern dmode_func (pc_Mode7);
  148. extern boolean DIGPRIV pc_OpenText(_arg2(dig_struct *, int));
  149.  
  150. /* pccga.c */
  151. extern dmode_func (pc_Mode4);
  152. extern dmode_func (pc_Mode5);
  153. extern dmode_func (pc_Mode6);
  154. extern dmode_func (pc_ModeCpq40);
  155. extern boolean DIGPRIV pc_OpenCGA(_arg2(dig_struct *, int));
  156.  
  157. /* pcevga.c */
  158. extern dmode_func (pc_ModeD);
  159. extern dmode_func (pc_ModeE);
  160. extern dmode_func (pc_ModeF);
  161. extern dmode_func (pc_Mode10);
  162. extern dmode_func (pc_Mode11);
  163. extern dmode_func (pc_Mode12);
  164. extern boolean DIGPRIV pc_OpenEVGA(_arg2(dig_struct *, int));
  165.  
  166. /* pcmcga.c */
  167. extern dmode_func (pc_Mode13);
  168. extern boolean DIGPRIV pc_OpenMCGA(_arg2(dig_struct *, int));
  169.  
  170. /* pcherc.c */
  171. extern dmode_func (pc_ModeHerc);
  172. extern boolean DIGPRIV pc_OpenHerc(_arg2(dig_struct *, int));
  173.  
  174. /* pctextin.c */
  175. extern pc_setinfo_func (text_setinfo);
  176.  
  177. /* pcbscrol.c */
  178. extern dig_pScrollBoxVt_func (text_bScrollBoxVt);
  179.  
  180. /* pchcfunc.asm */
  181. extern boolean    DIGPRIV herc_present(_arg1(void));
  182. extern int        DIGPRIV herc_getlines(_arg1(void));
  183. extern void        DIGPRIV herc_setgmode(_arg1(int hpage));
  184. extern void        DIGPRIV herc_settmode(_arg1(void));
  185.  
  186. /* pc1bitpl.asm */
  187. extern plotchar_func (pc_1bitplotchar);
  188.  
  189. /* pc2bitpl.asm */
  190. extern plotchar_func (pc_2bitplotchar);
  191.  
  192. /* pc8bitpl.asm */
  193. extern plotchar_func (pc_8bitplotchar);
  194.  
  195. /* pcevgapl.asm */
  196. extern plotchar_func (pc_evgaplotchar);
  197.  
  198. /* pchcfont.asm */
  199. OEXTERN unsigned short hercfont_seg;
  200. OEXTERN unsigned long hercfont_offs;    /* Long in case of dos-extender */
  201.  
  202. /* pcopen.c */
  203. extern boolean DIGPRIV pc_OpenDIG(_arg3(dig_struct *digp, int mode, pc_setinfo_fptr setinfo));
  204. extern dig_CloseDIG_func (pc_CloseDIG);
  205.  
  206. /* pcdisp.c */
  207. extern dig_dControl_func (pc_dControl);
  208. extern unsigned            pc_dDummy(_arg1(void));
  209. extern unsigned short    DIGPRIV pc_wordcolor(_arg1(opixval color));
  210. extern void                DIGPRIV pc_bgetcursorpos(_arg2(int *rowp, int *colp));
  211. extern void                DIGPRIV pc_initmode(_arg1(void));
  212.  
  213. /* pcpmap.c */
  214. extern dig_pControl_func (pc_pControl);
  215.  
  216. /* pcpmapio.c */
  217. extern dig_pControl_func (pc_PmapIoReq);
  218.  
  219. /* pcgfuncs.c */
  220. extern void DIGPRIV pc_setgfuncs(_arg1(dig_struct *));
  221. extern attrcols_func (pc_attrcols);
  222.  
  223. /* pcbdrawc.c */
  224. extern dig_pDrawCursor_func (pc_bDrawCursor);
  225.  
  226. /* pcbsetcu.c */
  227. extern void DIGPRIV pc_bsetcursorpos(_arg2(int row, int col));
  228. extern void DIGPRIV pc_bsetcursortype(_arg2(cursortype ctype, unsigned short nlines));
  229.  
  230. /* pcrammov.asm */
  231. extern ramclear_func (ram_segwordset);
  232. extern rammove_func (ram_segtoseg);
  233. extern void DIGPRIV ram_mem1toseg(_arg5(unsigned segm, unsigned segoffs, byte *memaddr, unsigned byte1, unsigned blen));
  234. extern ramcopy_func (ram_segtomem);
  235. extern ramcopy_func (ram_memtoseg);
  236.  
  237. /* pcramwmo.asm */
  238. extern ramclear_func (ram_wsegwordset);
  239. extern rammove_func (ram_wsegtoseg);
  240. extern void DIGPRIV ram_wmem1toseg(_arg5(unsigned segm, unsigned segoffs, byte *memaddr, unsigned byte1, unsigned blen));
  241.  
  242. /* pcramcle.c */
  243. extern dig_pClear_func (ram_Clear);
  244. extern dig_pScrollBoxVt_func (ram_ScrollBoxVt);
  245. extern dig_pScrollBoxHz_func (ram_ScrollBoxHz);
  246.  
  247. /* pcramdra.c */
  248. extern dig_pDrawPixmap_func (ram_DrawPixmap);
  249. extern dig_pReadPixmap_func (ram_ReadPixmap);
  250.  
  251. /* pcramcpp.c */
  252. extern void DIGPRIV ram_copypm(_arg5(opbox *, pmap_type, opcoord, opcoord, ramcopy_fptr));
  253.  
  254. /* pcsqcmap.c */
  255. extern void DIGPRIV pc_squeezecmap(_arg3(pmap_type pmap, ocolmap_type cmap, ocolmap_type crange));
  256. /* -------------------------------------------------------------------------- */
  257. #define pc_inuse()                    (pcdata->info.devname[0] != '\0')
  258.  
  259. #define pc_attrsize()                (pcdata->attrsize)
  260.  
  261. #define pc_attrfg4bit(attr)            (pcdata->attrmap[attr] & 0x0F)
  262. #define pc_attrbg4bit(attr)            (pcdata->attrmap[attr] >> 4)
  263.  
  264. #define pc_attrfgbyte(attr)            pcdata->attrmap[attr]
  265. #define pc_attrbgbyte(attr)            pcdata->xattrmap[attr]
  266.  
  267. #define pc_initdispmap(wid, hgt)                    \
  268.     (pcdata->dmspace.width = (wid), pcdata->dmspace.height = (hgt))
  269. /* -------------------------------------------------------------------------- */
  270. /* DIG - specific pixmap stuff */
  271.  
  272. typedef struct {
  273.     dispinfo_struct *dispinfo;    /* pointer to dispinfo struct describing */
  274.                                 /* layout of planes, pixbits, etc. */
  275.     odim     bytewidth;            /* number of bytes in a line of pixel map. */
  276.     byte     nshift;            /* number of unused pixels at left of each line */
  277.     byte     comptype;            /* type of compression applied to pixbuf */
  278.                                 /*  to accommodate 3rd party image headers */
  279.     byte    *pixbuf;            /* pointer to pixel map memory buffer. */
  280. } pcpmapx_struct;
  281.  
  282. #define pc_vidseg()                    (pcdata->info.dispaddr)
  283. #define pc_bwidth()                    (pcdata->info.bytewidth)
  284. #define pc_pixbits()                (pcdata->info.pixbits)
  285. #define pc_nplanes()                (pcdata->info.nplanes)
  286.  
  287. #define pc_ileave()                    (pcdata->info.ileave)
  288. #define pc_ilsize()                    (pcdata->info.ilsize)
  289.  
  290. #define pcpmap_pmapx(pm)            ((pcpmapx_struct *) &(pm)[1])
  291. #define pcpmap_planes(pm)            ((byte **) &pcpmap_pmapx(pm)[1])
  292.  
  293. #define pcpmap_dispinfo(pm)            (pcpmap_pmapx(pm)->dispinfo)
  294. #define pcpmap_nplanes(pm)            (pcpmap_pmapx(pm)->dispinfo->nplanes)
  295. #define pcpmap_pixbits(pm)            (pcpmap_pmapx(pm)->dispinfo->pixbits)
  296. #define pcpmap_bytewidth(pm)         (pcpmap_pmapx(pm)->bytewidth)
  297. #define pcpmap_nshift(pm)             (pcpmap_pmapx(pm)->nshift)
  298. #define pcpmap_comptype(pm)         (pcpmap_pmapx(pm)->comptype)
  299. #define pcpmap_pixbuf(pm)            (pcpmap_pmapx(pm)->pixbuf)
  300.  
  301. #define pcpmap_GetPlaneSize(pmap)                    \
  302.     ((unsigned long)pcpmap_bytewidth(pmap) * (unsigned long)pmap_GetHeight(pmap))
  303.  
  304. #define pcpmap_SetDispinfo(pm, di)    (pcpmap_pmapx(pm)->dispinfo = (di))
  305. #define pcpmap_SetBytewidth(pm, bw)    (pcpmap_pmapx(pm)->bytewidth = (bw))
  306. #define pcpmap_SetNshift(pm, ns)    (pcpmap_pmapx(pm)->nshift = (ns))
  307. #define pcpmap_SetComptype(pm, ct)    (pcpmap_pmapx(pm)->comptype = (ct))
  308. #define pcpmap_SetPixbuf(pm, buf)    (pcpmap_pmapx(pm)->pixbuf = (buf))
  309. #define pc_pmheadersize(nplanes)                        \
  310.     (sizeof(struct pmap_struct) + sizeof(pcpmapx_struct) +        \
  311.     ((((nplanes) <= 1) ? 0 : (nplanes)) * sizeof(byte *)) )
  312.  
  313. #define pc_retrace()                (pcdata->retracewait)
  314. #define pc_setretrace(rw)            (pcdata->retracewait = (rw))
  315. /* -------------------------------------------------------------------------- */
  316. /* Hardware Equipment Flag Values */
  317. #define PCHFLAG_COLO    0x20
  318. #define PCHFLAG_MONO    0x30
  319.  
  320. /* -------------------------------------------------------------------------- */
  321. /* BIOS & DOS interrupt definitions */
  322. /* -------------------------------------------------------------------------- */
  323. #define BIOS_VIDINT            0x10
  324. #define VIDINT_SETVM        0x00
  325. #define VIDINT_SETT            0x01
  326. #define VIDINT_SETC            0x02
  327. #define VIDINT_GETC            0x03
  328. #define    VIDINT_SCRLUP        0x06
  329. #define    VIDINT_SCRLDN        0x07
  330. #define    VIDINT_RDCHAR        0x08
  331. #define    VIDINT_WRTCHAR        0x09
  332. #define VIDINT_GETVM        0x0F
  333. #define VIDINT_CHARGEN        0x11
  334. #define CHARGEN_ROM8X8        0x12
  335. #define VIDINT_ALTSEL        0x12
  336. #define ALTSEL_GETINFO        0x10
  337. #define ALTSEL_NEWPRTSCR    0x20
  338. #define ALTSEL_SETLINES        0x30
  339. #define SETLINES_350        0x01
  340. #define SETLINES_400        0x02
  341. #define VIDINT_MODEINFO        0x1B
  342. #define VIDINT_CPQINFO        0xBF
  343.  
  344. #define CPQINFO_PLASMABIT    0x10
  345.  
  346. #define BIOS_FONTVEC        0x43
  347. #define BIOS_CGAXFONTVEC    0x1F
  348. #define BIOS_CGAFONTSEG        0xF000
  349. #define BIOS_CGAFONTOFFS    0xFA6E
  350. /* -------------------------------------------------------------------------- */
  351. /* Addresses and counts */
  352.  
  353. #define TEXT_HEIGHT        25
  354. #define TEXT_XHEIGHT    43
  355. #define TEXT_RPAGE         0
  356.  
  357. #define VID_MDAPORT 0x3B4
  358. #define VID_CGAPORT 0x3D4
  359.  
  360. #define VID_CGAADDR        0xB800
  361. #define VID_MONOADDR    0xB000
  362. #define VID_EVGAADDR    0xA000
  363. #define VID_HERC0ADDR    0xB000
  364. #define VID_HERC1ADDR    0xB800
  365.  
  366. #define VID_CGABLOCK    0x2000
  367. #define VID_HERCBLOCK    0x2000
  368. /* -------------------------------------------------------------------------- */
  369. /* Default color palette structure initializations */
  370.  
  371. #ifndef DEFDEFCMAPS
  372.  
  373.     extern ocolmap_struct(2) pcdefmcmap;
  374.     extern ocolmap_struct(16) pcdefcmap;
  375.     extern ocolmap_struct(256) pcdefmcgamap;
  376.  
  377. #else
  378.  
  379. #    define PC_DEF_MCMAPINIT    { 0, 2, {{0x00, 0x00, 0x00}, {0xFF, 0xFF, 0xFF}} }
  380. #    define PC_DEF_CMAPINIT        { 0, 16, {            \
  381.         {0x00,0x00,0x00},{0x00,0x00,0xAB},{0x00,0xAB,0x00},{0x00,0xAB,0xAB},    \
  382.         {0xAB,0x00,0x00},{0xAB,0x00,0xAB},{0xAB,0x57,0x00},{0xAB,0xAB,0xAB},    \
  383.         {0x57,0x57,0x57},{0x57,0x57,0xFF},{0x57,0xFF,0x57},{0x57,0xFF,0xFF},    \
  384.         {0xFF,0x57,0x57},{0xFF,0x57,0xFF},{0xFF,0xFF,0x57},{0xFF,0xFF,0xFF}    \
  385.         }}
  386.  
  387. #    define PC_DEF_MCGAMAPINIT0    { 0, 256, {            \
  388.         {0x00,0x00,0x00},{0x00,0x00,0xAB},{0x00,0xAB,0x00},{0x00,0xAB,0xAB},    \
  389.         {0xAB,0x00,0x00},{0xAB,0x00,0xAB},{0xAB,0x57,0x00},{0xAB,0xAB,0xAB},    \
  390.         {0x57,0x57,0x57},{0x57,0x57,0xFF},{0x57,0xFF,0x57},{0x57,0xFF,0xFF},    \
  391.         {0xFF,0x57,0x57},{0xFF,0x57,0xFF},{0xFF,0xFF,0x57},{0xFF,0xFF,0xFF},    \
  392.         \
  393.         {0x00,0x00,0x00},{0x17,0x17,0x17},{0x23,0x23,0x23},{0x2F,0x2F,0x2F},    \
  394.         {0x3B,0x3B,0x3B},{0x47,0x47,0x47},{0x53,0x53,0x53},{0x63,0x63,0x63},    \
  395.         {0x73,0x73,0x73},{0x83,0x83,0x83},{0x93,0x93,0x93},{0xA3,0xA3,0xA3},    \
  396.         {0xB3,0xB3,0xB3},{0xCB,0xCB,0xCB},{0xE3,0xE3,0xE3},{0xFF,0xFF,0xFF},
  397. #    define PC_DEF_MCGAMAPINIT2                        \
  398.         {0x00,0x00,0xFF},{0x43,0x00,0xFF},{0x7F,0x00,0xFF},{0xBF,0x00,0xFF},    \
  399.         {0xFF,0x00,0xFF},{0xFF,0x00,0xBF},{0xFF,0x00,0x7F},{0xFF,0x00,0x43},    \
  400.         {0xFF,0x00,0x00},{0xFF,0x43,0x00},{0xFF,0x7F,0x00},{0xFF,0xBF,0x00},    \
  401.         {0xFF,0xFF,0x00},{0xBF,0xFF,0x00},{0x7F,0xFF,0x00},{0x43,0xFF,0x00},    \
  402.         \
  403.         {0x00,0xFF,0x00},{0x00,0xFF,0x43},{0x00,0xFF,0x7F},{0x00,0xFF,0xBF},    \
  404.         {0x00,0xFF,0xFF},{0x00,0xBF,0xFF},{0x00,0x7F,0xFF},{0x00,0x43,0xFF},    \
  405.         {0x7F,0x7F,0xFF},{0x9F,0x7F,0xFF},{0xBF,0x7F,0xFF},{0xDF,0x7F,0xFF},    \
  406.         {0xFF,0x7F,0xFF},{0xFF,0x7F,0xDF},{0xFF,0x7F,0xBF},{0xFF,0x7F,0x9F},
  407. #    define PC_DEF_MCGAMAPINIT4                        \
  408.         {0xFF,0x7F,0x7F},{0xFF,0x9F,0x7F},{0xFF,0xBF,0x7F},{0xFF,0xDF,0x7F},    \
  409.         {0xFF,0xFF,0x7F},{0xDF,0xFF,0x7F},{0xBF,0xFF,0x7F},{0x9F,0xFF,0x7F},    \
  410.         {0x7F,0xFF,0x7F},{0x7F,0xFF,0x9F},{0x7F,0xFF,0xBF},{0x7F,0xFF,0xDF},    \
  411.         {0x7F,0xFF,0xFF},{0x7F,0xDF,0xFF},{0x7F,0xBF,0xFF},{0x7F,0x9F,0xFF},    \
  412.         \
  413.         {0xB3,0xB3,0xFF},{0xC7,0xB3,0xFF},{0xDB,0xB3,0xFF},{0xEB,0xB3,0xFF},    \
  414.         {0xFF,0xB3,0xFF},{0xFF,0xB3,0xEB},{0xFF,0xB3,0xDB},{0xFF,0xB3,0xC7},    \
  415.         {0xFF,0xB3,0xB3},{0xFF,0xC7,0xB3},{0xFF,0xDB,0xB3},{0xFF,0xEB,0xB3},    \
  416.         {0xFF,0xFF,0xB3},{0xEB,0xFF,0xB3},{0xDB,0xFF,0xB3},{0xC7,0xFF,0xB3},
  417. #    define PC_DEF_MCGAMAPINIT6                        \
  418.         {0xB3,0xFF,0xB3},{0xB3,0xFF,0xC7},{0xB3,0xFF,0xDB},{0xB3,0xFF,0xEB},    \
  419.         {0xB3,0xFF,0xFF},{0xB3,0xEB,0xFF},{0xB3,0xDB,0xFF},{0xB3,0xC7,0xFF},    \
  420.         {0x00,0x00,0x73},{0x1F,0x00,0x73},{0x3B,0x00,0x73},{0x57,0x00,0x73},    \
  421.         {0x73,0x00,0x73},{0x73,0x00,0x57},{0x73,0x00,0x3B},{0x73,0x00,0x1F},    \
  422.         \
  423.         {0x73,0x00,0x00},{0x73,0x1F,0x00},{0x73,0x3B,0x00},{0x73,0x57,0x00},    \
  424.         {0x73,0x73,0x00},{0x57,0x73,0x00},{0x3B,0x73,0x00},{0x1F,0x73,0x00},    \
  425.         {0x00,0x73,0x00},{0x00,0x73,0x1F},{0x00,0x73,0x3B},{0x00,0x73,0x57},    \
  426.         {0x00,0x73,0x73},{0x00,0x57,0x73},{0x00,0x3B,0x73},{0x00,0x1F,0x73},
  427. #    define PC_DEF_MCGAMAPINIT8                        \
  428.         {0x3B,0x3B,0x73},{0x47,0x3B,0x73},{0x57,0x3B,0x73},{0x63,0x3B,0x73},    \
  429.         {0x73,0x3B,0x73},{0x73,0x3B,0x63},{0x73,0x3B,0x57},{0x73,0x3B,0x47},    \
  430.         {0x73,0x3B,0x3B},{0x73,0x47,0x3B},{0x73,0x57,0x3B},{0x73,0x63,0x3B},    \
  431.         {0x73,0x73,0x3B},{0x63,0x73,0x3B},{0x57,0x73,0x3B},{0x47,0x73,0x3B},    \
  432.         \
  433.         {0x3B,0x73,0x3B},{0x3B,0x73,0x47},{0x3B,0x73,0x57},{0x3B,0x73,0x63},    \
  434.         {0x3B,0x73,0x73},{0x3B,0x63,0x73},{0x3B,0x57,0x73},{0x3B,0x47,0x73},    \
  435.         {0x53,0x53,0x73},{0x5B,0x53,0x73},{0x63,0x53,0x73},{0x6B,0x53,0x73},    \
  436.         {0x73,0x53,0x73},{0x73,0x53,0x6B},{0x73,0x53,0x63},{0x73,0x53,0x5B},
  437. #    define PC_DEF_MCGAMAPINITA                        \
  438.         {0x73,0x53,0x53},{0x73,0x5B,0x53},{0x73,0x63,0x53},{0x73,0x6B,0x53},    \
  439.         {0x73,0x73,0x53},{0x6B,0x73,0x53},{0x63,0x73,0x53},{0x5B,0x73,0x53},    \
  440.         {0x53,0x73,0x53},{0x53,0x73,0x5B},{0x53,0x73,0x63},{0x53,0x73,0x6B},    \
  441.         {0x53,0x73,0x73},{0x53,0x6B,0x73},{0x53,0x63,0x73},{0x53,0x5B,0x73},    \
  442.         \
  443.         {0x00,0x00,0x43},{0x13,0x00,0x43},{0x23,0x00,0x43},{0x33,0x00,0x43},    \
  444.         {0x43,0x00,0x43},{0x43,0x00,0x33},{0x43,0x00,0x23},{0x43,0x00,0x13},    \
  445.         {0x43,0x00,0x00},{0x43,0x13,0x00},{0x43,0x23,0x00},{0x43,0x33,0x00},    \
  446.         {0x43,0x43,0x00},{0x33,0x43,0x00},{0x23,0x43,0x00},{0x13,0x43,0x00},
  447. #    define PC_DEF_MCGAMAPINITC                        \
  448.         {0x00,0x43,0x00},{0x00,0x43,0x13},{0x00,0x43,0x23},{0x00,0x43,0x33},    \
  449.         {0x00,0x43,0x43},{0x00,0x33,0x43},{0x00,0x23,0x43},{0x00,0x13,0x43},    \
  450.         {0x23,0x23,0x43},{0x2B,0x23,0x43},{0x33,0x23,0x43},{0x3B,0x23,0x43},    \
  451.         {0x43,0x23,0x43},{0x43,0x23,0x3B},{0x43,0x23,0x33},{0x43,0x23,0x2B},    \
  452.         \
  453.         {0x43,0x23,0x23},{0x43,0x2B,0x23},{0x43,0x33,0x23},{0x43,0x3B,0x23},    \
  454.         {0x43,0x43,0x23},{0x3B,0x43,0x23},{0x33,0x43,0x23},{0x2B,0x43,0x23},    \
  455.         {0x23,0x43,0x23},{0x23,0x43,0x2B},{0x23,0x43,0x33},{0x23,0x43,0x3B},    \
  456.         {0x23,0x43,0x43},{0x23,0x3B,0x43},{0x23,0x33,0x43},{0x23,0x2B,0x43},
  457. #    define PC_DEF_MCGAMAPINITE                        \
  458.         {0x2F,0x2F,0x43},{0x33,0x2F,0x43},{0x37,0x2F,0x43},{0x3F,0x2F,0x43},    \
  459.         {0x43,0x2F,0x43},{0x43,0x2F,0x3F},{0x43,0x2F,0x37},{0x43,0x2F,0x33},    \
  460.         {0x43,0x2F,0x2F},{0x43,0x33,0x2F},{0x43,0x37,0x2F},{0x43,0x3F,0x2F},    \
  461.         {0x43,0x43,0x2F},{0x3F,0x43,0x2F},{0x37,0x43,0x2F},{0x33,0x43,0x2F},    \
  462.         \
  463.         {0x2F,0x43,0x2F},{0x2F,0x43,0x33},{0x2F,0x43,0x37},{0x2F,0x43,0x3F},    \
  464.         {0x2F,0x43,0x43},{0x2F,0x3F,0x43},{0x2F,0x37,0x43},{0x2F,0x33,0x43},    \
  465.         {0x3F,0x3F,0x3F},{0x3F,0x3F,0x3F},{0x3F,0x3F,0x3F},{0x3F,0x3F,0x3F},    \
  466.         {0x3F,0x3F,0x3F},{0x3F,0x3F,0x3F},{0x3F,0x3F,0x3F},{0x7F,0x7F,0x7F}        \
  467.         }}
  468. #endif
  469. /* -------------------------------------------------------------------------- */
  470.  
  471.