if (val & 0x04)
Video |= (color << 4);
if (val & 0x02)
Video |= (color << 2);
if (val & 0x01)
Video |= color;
*pVideo++ = (unsigned char) Video;
CheckBank(pVideo, &bank);
pVideoFirstColumn += BytesPerScanLine;
}
pVideoStart += 2;
pVideoFirstColumn = pVideoStart;
}
break;
case 16:
color &= 0x0f;
while (*str != 0)
{
ch = *str++;
if ((ch < ' ') || (ch - ' ' > MAX_FONT-1))
ch = '.';
pFont = &font[ch - ' '][0];
for (y = 0; y < 8; ++y)
{
pVideo = pVideoFirstColumn;
Video = 0;
val = *pFont++;
//
// Since there are 16 colors/gray shades, each bit in the font
// will be represented in video memory as a four bit pixel.
//
if (val & 0x80)
Video |= (color << 4);
if (val & 0x40)
Video |= color;
*pVideo++ = (unsigned char) Video;
CheckBank(pVideo, &bank);
Video = 0;
if (val & 0x20)
Video |= (color << 4);
if (val & 0x10)
Video |= color;
*pVideo++ = (unsigned char) Video;
CheckBank(pVideo, &bank);
Video = 0;
if (val & 0x08)
S18A-G-002-02
S1D13503 Programming Notes and Examples
// Point to next character
2-61