#include #include typedef struct rgb_color_type { unsigned char red; unsigned char green; unsigned char blue; } rgb_color; char *video_buffer = (char *)0xa0000,*double_buffer; void set_video_mode(int mode) { union REGS regs; regs.x.ax = mode; int86(0x10, ®s, ®s); } void set_palette_register(unsigned char index, rgb_color *color) { outportb(0x3c6,0xff); outportb( 0x3c8,index); outportb(0x3c9,color->red); outportb(0x3c9,color->green); outportb(0x3c9,color->blue); } void put_pixel(short int x, short int y, char color) { double_buffer[(y << 8) + (y << 6) + x] = color; } void main() { rgb_color col={63,0,0};//red __djgpp_nearptr_enable(); video_buffer += __djgpp_conventional_base; double_buffer=(char *)malloc(64000); set_video_mode(0x013); set_palette_register(1,&col); memset((char *)double_buffer,0,64000);//Set all pixels to index zero i.e. clear the screen put_pixel(160,100,1); memcpy((char *)video_buffer,(char *)double_buffer,64000); delay(3000); set_video_mode(0x03); __djgpp_nearptr_disable(); free(double_buffer); // dont omit this or memory errors will occur } //Complile this program with this command: GCC EX3.C -O EX3.EXE -LM