Permalink
Cannot retrieve contributors at this time
121 lines (106 sloc)
5.44 KB
| /** | |
| * 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,®s); | |
| } | |
| return 0; | |
| } |