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;k COLOR_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;i num-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); }