#include #include FILE *fdo; int flag; unsigned int address; int d,sum,buff[32],cr,lf,ctr; char src[16],obj[16]; main(){ double w,pi=3.1415926535; unsigned int i,j,k; cr=0x0d; lf=0x0a; flag=1; ctr=0; address=0; fdo=fopen("ENVROM.HEX","wb"); for(k=0;k<4;k++){ for(i=0;i<16;i++){ w=(double)(i+1)/16.0; for(j=0;j<32;j++){ d=(int)(w*8.25*(double)j); file_write(); } for(j=32;j<64;j++){ d=(int)(w*(255.9-(3.999*(double)(j-32)))); file_write(); } for(j=64;j<128;j++){ d=(int)(w*(127.9-(double)(j-64))); file_write(); } for(j=128;j<256;j++){ d=(int)(w*(63.9-(0.499*(double)(j-128)))); file_write(); } } } for(k=0;k<4;k++){ for(i=0;i<16;i++){ w=(double)(i+1)/16.0; for(j=0;j<64;j++){ d=(int)(w*4.06*(double)j); file_write(); } for(j=64;j<128;j++){ d=(int)(w*(255.9-(1.999*(double)(j-64)))); file_write(); } for(j=128;j<256;j++){ d=(int)(w*(double)(255-j)); file_write(); } } } file_close(); } file_write(){ int i; if(ctr==31){ buff[ctr]=d; output(':'); outbyte(0x20); sum=0x20; outbyte(address/256); sum=(sum+(address/256))%256; outbyte(address%256); sum=(sum+(address%256))%256; outbyte(0x00); for(i=0;i<32;i++){ outbyte(buff[i]); sum=(sum+buff[i])%256; } sum=(256-sum)%256; outbyte(sum); output(cr); output(lf); ctr=0; address=address+0x20; } else{ buff[ctr]=d; ctr=ctr+1; } } file_close(){ output(':'); outbyte(0x00); outbyte(0x00); outbyte(0x00); outbyte(0x01); outbyte(0xff); output(cr); output(lf); fputc(0x1a,fdo); fclose(fdo); } output(dt) int dt; { putchar(dt); if(flag!=0) fputc(dt,fdo); } outasc(dt) int dt; { if(dt<10){ putchar('0'+dt); if(flag!=0) fputc('0'+dt,fdo); } else{ dt=dt-10; putchar('A'+dt); if(flag!=0) fputc('A'+dt,fdo); } } outbyte(dt) int dt; { outasc(dt/16); outasc(dt%16); }