Setting pixel C Language


#include
#include
#include
#include

#define VIDEO_INT 0x10 /* the BIOS video interrupt. */
#define WRITE_DOT 0x0C /* BIOS func to plot a pixel. */
#define SET_MODE 0x00 /* BIOS func to set the video mode. */
#define VGA_256_COLOR_MODE 0x13 /* use to set 256-color mode. */
#define TEXT_MODE 0x03 /* use to set 80x25 text mode. */

#define SCREEN_WIDTH 320 /* width in pixels of mode 0x13 */
#define SCREEN_HEIGHT 200 /* height in pixels of mode 0x13 */
#define NUM_COLORS 256 /* number of colors in mode 0x13 */

typedef unsigned char byte;
typedef unsigned short word;


byte *VGA = (byte *)0xA0000; /* this points to video memory. */
word *my_clock = (word *)0x046C; /* this points to the 18.2hz system
clock. */

/**************************************************************************
* set_mode *
* Sets the video mode. *
**************************************************************************/

void set_mode(byte mode)
{
union REGS regs;

regs.h.ah = SET_MODE;
regs.h.al = mode;
int86(VIDEO_INT, ®s, ®s);
}

/**************************************************************************
* plot_pixel_slow *
* Plot a pixel by using BIOS function 0x0C (Write Dot). *
**************************************************************************/

void plot_pixel_slow(int x,int y,byte color)
{
union REGS regs;

regs.h.ah = WRITE_DOT;
regs.h.al = color;
regs.x.cx = x;
regs.x.dx = y;
int86(VIDEO_INT, ®s, ®s);
}

/**************************************************************************
* plot_pixel_fast *
* Plot a pixel by directly writing to video memory. *
**************************************************************************/

void plot_pixel_fast(int x,int y,byte color)
{
VGA[y*SCREEN_WIDTH+x]=color;
}

/**************************************************************************
* Main *
* Plots 50000 pixels two different ways: using the BIOS and by *
* directly writing to video memory. *
**************************************************************************/

void main()
{
int x,y,color;
float t1,t2;
word i,start;

if (__djgpp_nearptr_enable() == 0)
{
printf("Could get access to first 640K of memory.\n");
exit(-1);
}

VGA+=__djgpp_conventional_base;
my_clock = (void *)my_clock + __djgpp_conventional_base;

srand(*my_clock); /* seed the number generator. */
set_mode(VGA_256_COLOR_MODE); /* set the video mode. */

start=*my_clock; /* record the starting time. */
for(i=0;i<50000L;i++) /* randomly plot 50000 pixels. */
{
x=rand()%SCREEN_WIDTH;
y=rand()%SCREEN_HEIGHT;
color=rand()%NUM_COLORS;
plot_pixel_slow(x,y,color);
}

t1=(*my_clock-start)/18.2; /* calculate how long it took. */

set_mode(VGA_256_COLOR_MODE); /* set the video mode again in order
to clear the screen. */

start=*my_clock; /* record the starting time. */
for(i=0;i<50000L;i++) /* randomly plot 50000 pixels. */
{
x=rand()%SCREEN_WIDTH;
y=rand()%SCREEN_HEIGHT;
color=rand()%NUM_COLORS;
plot_pixel_fast(x,y,color);
}

t2=(*my_clock-start)/18.2; /* calculate how long it took. */
set_mode(TEXT_MODE); /* set the video mode back to
text mode. */

/* output the results... */
printf("Slow pixel plotting took %f seconds.\n",t1);
printf("Fast pixel plotting took %f seconds.\n",t2);
if (t2 != 0) printf("Fast pixel plotting was %f times faster.\n",t1/t2);

__djgpp_nearptr_disable();

return;
}




Related Links :

No comments:

Post a Comment


If you face any Problem in viewing code such as Incomplete "For Loops" or "Incorrect greater than or smaller" than equal to signs then please collect from My Web Site CLICK HERE


More Useful Topics...

 

History Of C..

In the beginning was Charles Babbage and his Analytical Engine, a machine
he built in 1822 that could be programmed to carry out different computations.
Move forward more than 100 years, where the U.S. government in
1942 used concepts from Babbage’s engine to create the ENIAC, the first
modern computer.
Meanwhile, over at the AT&T Bell Labs, in 1972 Dennis Ritchie was working
with two languages: B (for Bell) and BCPL (Basic Combined Programming
Language). Inspired by Pascal, Mr. Ritchie developed the C programming
language.

My 1st Program...


#include
#include
void main ()
{
clrscr ();
printf ("\n\n\n\n");
printf ("\t\t\t*******Pankaj *******\n");
printf ("\t\t\t********************************\n");
printf ("\t\t\t\"Life is Good...\"\n");
printf ("\t\t\t********************************");
getch ();
}

Next Step...


#include
#include

void main ()
{
clrscr ();
printf ("\n\n\n\n\n\n\n\n");
printf ("\t\t\t --------------------------- \n\n");

printf ("\t\t\t | IGCT, Info Computers, INDIA | \n\n");
printf ("\t\t\t --------------------------- ");

getch ();

}

Hits!!!