Skip to content
Permalink
master
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
/**
* Font demo
*
* Draws a PAC-MAN(tm) Maze using BLT STRING
*
* Author: Thomas Cherryhomes <thom.cherryhomes@gmail.com>
*
*
*/
#include <conio.h>
#include <i86.h>
#include <libmindset_gfx.h>
unsigned short palette[16]={
0x0000, // Black
0x10C0, // Dark Blue
0x2018, // Dark Green
0x30D8, // Dark Cyan
0x4003, // Dark Red
0x5063, // Dark Magenta
0x601B, // Dark Yellow (brown?)
0x70DB, // Dark Grey
0x8049, // Light Black
0x91C0, // Light Blue
0xA038, // Light Green
0xB1F8, // Light Cyan
0xC007, // Light Red
0xD1C7, // Light Magenta
0xE03F, // Light Yellow
0xF1FF // White
};
unsigned char color_table[16]=
{
0x00,
0x11,
0x22,
0x33,
0x44,
0x55,
0x66,
0x77,
0x88,
0x99,
0xAA,
0xBB,
0xCC,
0xDD,
0xEE,
0xFF
};
const char* text="0123456789";
int main(int argc, char* argv[])
{
union REGPACK regs;
unsigned short textpointer[5];
Font f;
/* unsigned char fontdata_mono[]= */
/* { */
/* "...XXX......XX....XXXXX...XXXXXX....XXX..XXXXXX....XXXX..XXXXXXX..XXXX....XXXXX." */
/* "..X..XX....XXX...XX...XX.....XX....XXXX..XX.......XX.....XX...XX.XX...X..XX...XX" */
/* ".XX...XX....XX.......XXX....XX....XX.XX..XXXXXX..XX..........XX..XXX..X..XX...XX" */
/* ".XX...XX....XX.....XXXX....XXXX..XX..XX.......XX.XXXXXX.....XX....XXXX....XXXXXX" */
/* ".XX...XX....XX....XXXX........XX.XXXXXXX......XX.XX...XX...XX....X..XXXX......XX" */
/* "..XX..X.....XX...XXX.....XX...XX.....XX..XX...XX.XX...XX...XX....X....XX.....XX." */
/* "...XXX....XXXXXX.XXXXXXX..XXXXX......XX...XXXXX...XXXXX....XX.....XXXXX...XXXX.." */
/* "................................................................................" */
/* }; */
const unsigned char fontdata[]={
0x00, 0x0F, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xF0, 0x0F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x0F, 0xF0, 0x0F, 0xFF, 0xFF, 0xF0, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xFF, 0x00, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xFF, 0xF0, 0x00, 0x0F, 0xFF, 0xF0, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0xFF, 0x00, 0xFF, 0x00, 0xF0, 0x00, 0x00, 0xFF, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x0F, 0xF0, 0x00, 0xFF, 0x0F, 0xF0, 0x00, 0xFF, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0x00, 0x00, 0xFF, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0x0F, 0xFF, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0x0F, 0xFF, 0xFF, 0xFF, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x00, 0x0F, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0x0F, 0xF0, 0x00, 0x00, 0xFF, 0xFF, 0xF0, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
mindset_gfx_set_mode(2); // 320x200x4
mindset_gfx_set_palette(0,16,0,&palette);
f.type=0;
f.excess=0;
f.nominal_width=8;
f.nominal_height=8;
f.byte_width=40;
f.addr=MK_FP(FP_SEG(fontdata),FP_OFF(fontdata));
f.first=0x30;
f.last=0x39;
mindset_gfx_set_font_pointer(&f);
// Set up text parameter block.
textpointer[0]=0x0040; // X
textpointer[1]=0x0040; // Y
textpointer[2]=10; // Len
textpointer[3]=FP_OFF(text);
textpointer[4]=FP_SEG(text);
// Set up text string call
regs.h.ah=0x21; // BLT STRING
regs.h.al=1; // BLT ID 1
regs.h.ch=1; // # of text pointer structs
regs.h.cl=0; // # of text chars to ignore at beginning of string (none)
regs.h.dh=0; // draw left to right
regs.h.dl=0xFF; // color
regs.w.si=0; // X origin
regs.w.di=0; // Y origin
regs.w.es=FP_SEG(textpointer); // Text pointer (seg)
regs.w.bx=FP_OFF(textpointer); // Text pointer (off)
while (!kbhit())
{
textpointer[0]=rand()&0xFF;
textpointer[1]=rand()&0x7F;
regs.h.dl=color_table[rand()&0x0F];
intr(0xEF,&regs);
}
return 0;
}