#include    <conio.h>
#include    <stdlib.h>
#include    <stdio.h>
#include    <dos.h>
#include    "vga_new.h"

void __pascal __far Set360x480Mode( void );
void __pascal __far WritePixelH(unsigned, unsigned, unsigned char);
unsigned char __pascal __far ReadPixelH(unsigned, unsigned, unsigned char);
void __pascal __far FullScrH(unsigned char);
void	LoadVGA256(void);

void SetVideoMode(unsigned char);

void main( void ){

	unsigned i;
	char ch = 13;


	// завершаем программу если нет VGA адаптера

	// устанавливаем режим 360х480 пикселов, 256 цветов

	Set360x480Mode();

	// Загружаем регистры ЦАП VGA
	LoadVGA256();

	for(i = 0; i < 480; i++)
		WritePixelH(180, (unsigned) i, (unsigned char) (i % 256) );

	for(i = 0; i < 360; i++)
		WritePixelH((unsigned) i, 240, (unsigned char) (i % 256) );

	ch = getch();
	if( ch == 27 ) exit(1);

	for(i = 0; i < 360; i++)
		WritePixelH((unsigned) i, (unsigned) i, (unsigned char) (i % 256) );

	ch = getch();

	for(i = 0; ((i < 256) && (ch != 27)); i++) {
		FullScrH( (unsigned char) i );
//		ch = getch();
	}

	SetVideoMode(3);

	// возвращаемся в текстовый режим

	printf("\n   (C) Frolov G.V., 1992\n\n");
}

//==============================================================
// Функция устанавливает режим работы видеоадаптера, заданный
// параметром vmode
//==============================================================
void SetVideoMode( unsigned char vmode ) {

	union  REGS    inregs, outregs;

	inregs.h.ah = 0x0;
	inregs.h.al = vmode;
	int86( 0x10, &inregs, &outregs );
}

