Listing 3

/*  look-up tables for several TIGA modes */
long bit2 mask[]={
  0x00000000,
  0x55555555,
  0xaaaaaaaa,
  0xffffffff };

long bit4 mask[]={
  0x00000000,
  0x11111111,
  0x22222222,
  0x33333333,
  0x44444444,
  0x55555555,
  0x66666666,
  0x77777777,
  0x88888888,
  0x99999999,
  0xaaaaaaaa,
  0xbbbbbbbb,
  0xcccccccc,
  0xdddddddd,
  0xeeeeeeee,
  0xffffffff };

int set_mask( mask )
unsigned short mask;
{
  long real_mask;
  real_mask = mask & (ncolors-1);
  switch(nplanes)
    {
    case 1:
      if (mask)
        real_mask = -1;
      break;
    case 2:
      real_mask = bit2_mask[mask];
      break;
    case 4:
      real_mask = bit4_mask[mask];
      break;
    case 8:
      real_mask | = real_mask << 8;
      real_mask | = real_mask << 16;
      break;
    case 16:
      break;
    } /* end switch */
  set_pmask(~real_mask);
  return(0);
}