/* Program to demonstrate Mode X (320x240, 256 colors) patterned rectangle fills by filling the screen with adjacent 80x60 rectangles in a variety of patterns. Tested with Borland C++ in C compilation mode and the small model */ #include #include void Set320x240Mode(void); void FillPatternX(int, int, int, int, unsigned int, char*); /* 16 4x4 patterns */ static char Patt0[]={10,0,10,0,0,10,0,10,10,0,10,0,0,10,0,10}; static char Patt1[]={9,0,0,0,0,9,0,0,0,0,9,0,0,0,0,9}; static char Patt2[]={5,0,0,0,0,0,5,0,5,0,0,0,0,0,5,0}; static char Patt3[]={14,0,0,14,0,14,14,0,0,14,14,0,14,0,0,14}; static char Patt4[]={15,15,15,1,15,15,1,1,15,1,1,1,1,1,1,1}; static char Patt5[]={12,12,12,12,6,6,6,12,6,6,6,12,6,6,6,12}; static char Patt6[]={80,80,80,80,80,80,80,80,80,80,80,80,80,80,80,15}; static char Patt7[]={78,78,78,78,80,80,80,80,82,82,82,82,84,84,84,84}; static char Patt8[]={78,80,82,84,80,82,84,78,82,84,78,80,84,78,80,82}; static char Patt9[]={78,80,82,84,78,80,82,84,78,80,82,84,78,80,82,84}; static char Patt10[]={0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}; static char Patt11[]={0,1,2,3,0,1,2,3,0,1,2,3,0,1,2,3}; static char Patt12[]={14,14,9,9,14,9,9,14,9,9,14,14,9,14,14,9}; static char Patt13[]={15,8,8,8,15,15,15,8,15,15,15,8,15,8,8,8}; static char Patt14[]={3,3,3,3,3,7,7,3,3,7,7,3,3,3,3,3}; static char Patt15[]={0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,89}; /* Table of pointers to the 16 4x4 patterns with which to draw */ static char* PattTable[] = {Patt0,Patt1,Patt2,Patt3,Patt4,Patt5,Patt6, Patt7,Patt8,Patt9,Patt10,Patt11,Patt12,Patt13,Patt14,Patt15}; void main() { int i,j; union REGS regset; Set320x240Mode(); for (j = 0; j < 4; j++) { for (i = 0; i < 4; i++) { FillPatternX(i*80,j*60,i*80+80,j*60+60,0,PattTable[j*4+i]); } } getch(); regset.x.ax = 0x0003; /* switch back to text mode and done */ int86(0x10, ®set, ®set); }