www.pudn.com > jpeg1.zip > SELECT.C


#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#include  
#define	FALSE 	  0 
#define TRUE	  1 
#define	EMM	  0x67 
#define COLOR_NUM 240 
#define DAC_BEGIN 1 
#define LM 	  64 
 
char far *EMMbase; 
union REGS regs; 
struct SREGS sregs; 
struct ffblk ffblk; 
unsigned char far *buf[LM][LM]; 
unsigned char coll[3][15000]; 
char fr[13],fg[13],fb[13],fout[13],fpal[13]; 
int WIDTH=256,HEIGHT=256,PAGE_NUM=4,COLOR_CUT=8,PAGE_LINE=0x40; 
 
main(int argc,char *argv[]) 
{unsigned int EMMhandle,offset,sgm,ex1,ex2,ex3,p,num; 
register int k,j,i; 
unsigned char far *p1,far *p2,far *p3,far *p4; 
struct time time1,time2; 
char path[80],driver[4],dir[80],name[9],ext[4]; 
FILE *f1,*f2,*f3,*f4,*f5; 
 
if(argc<2) {printf("Input filename[eg. AMBER.R ...]:"); 
	scanf("%s",path); 
	} 
	else strcpy(path,argv[1]); 
if(strchr(path,'.')==NULL) strcat(path,".*"); 
if(!findfirst(path,&ffblk,0x20)) { 
	fnsplit(ffblk.ff_name,driver,dir,name,ext); 
	strcpy(fr,name);strcat(fr,".r1"); 
	strcpy(fg,name);strcat(fg,".g1"); 
	strcpy(fb,name);strcat(fb,".b1"); 
	} 
	else {printf("\nFile cna't Open!\n"); 
	return -1; 
	} 
f1=fopen(fr,"rb"); f2=fopen(fg,"rb"); f3=fopen(fb,"rb"); 
if((f1==NULL)|(f2==NULL)|(f3==NULL)) { 
	printf("File Open ERROR!");EMMclose();return -1;} 
fseek(f1,0,2);WIDTH=(int)sqrt(ftell(f1));rewind(f1); 
switch(WIDTH){ 
case 512:WIDTH=HEIGHT=512;PAGE_NUM=16; 
	 COLOR_CUT=15;PAGE_LINE=0x20;break; 
case 128:WIDTH=HEIGHT=128;PAGE_NUM=1; 
	 COLOR_CUT=5;PAGE_LINE=0x80; 
} 
gettime(&time1); 
if(!EMMtest()){ 
	printf("Expanded Memory is NOT present\n"); 
	return -1; 
	} 
if(!EMMok()){ 
	printf("Expanded Memory is NOT available\n"); 
	return -1; 
	} 
EMMnum(); 
if((EMMhandle=EMMalloc(PAGE_NUM*3))==0xffff) 
	{printf("EMM alloc error"); 
	 return -1; 
	} 
 
for(k=0;k>=2;p2[k]>>=2;p3[k]>>=2;} 
	for(k=0;kCOLOR_CUT) 
     {coll[0][num]=i;coll[1][num]=j;coll[2][num]=k; 
     num++; 
     } 
sgm=0; 
while(num>COLOR_NUM){ 
sgm++; 
for(i=DAC_BEGIN;inum-1) break; 
	ex1=abs(coll[0][i]-coll[0][k])+abs(coll[1][i]-coll[1][k])+abs(coll[2][i]-coll[2][k]); 
	if(ex1>=2;p2[k]>>=2;p3[k]>>=2;} 
    for(j=0;j>4,t&0x0f); 
} 
 
int EMMclose(unsigned int handle) 
{regs.h.ah=0x45; 
regs.x.dx=handle; 
int86(EMM,®s,®s); 
return(regs.h.ah==0); 
}