#include #include FILE *fdo; int flag; unsigned int address,m,n; int d,sum,buff[32],cr,lf,ctr; unsigned char data1[256],data2[256]; unsigned char bank[]={ /* 1 */ 0x00,0x11,0x21,0x31,0x3F,0x4D,0x59,0x64, 0x6D,0x74,0x79,0x7D,0x7F,0x7F,0x7E,0x7C, 0x78,0x75,0x70,0x6C,0x67,0x63,0x5F,0x5C, 0x59,0x58,0x57,0x57,0x58,0x5A,0x5C,0x5F, 0x62,0x66,0x69,0x6C,0x6E,0x70,0x71,0x71, 0x70,0x6E,0x6B,0x67,0x62,0x5D,0x56,0x50, 0x49,0x42,0x3B,0x35,0x2F,0x2A,0x26,0x22, 0x20,0x1F,0x1E,0x1F,0x21,0x23,0x26,0x29, 0x2D,0x31,0x34,0x38,0x3A,0x3C,0x3D,0x3E, 0x3D,0x3B,0x39,0x35,0x31,0x2C,0x27,0x21, 0x1B,0x15,0x0F,0x0A,0x05,0x01,0x82,0x84, 0x86,0x86,0x86,0x84,0x83,0x80,0x03,0x05, 0x08,0x0B,0x0D,0x0E,0x0F,0x0F,0x0D,0x0B, 0x07,0x03,0x83,0x89,0x90,0x98,0x9F,0xA7, 0xAE,0xB5,0xBB,0xC0,0xC4,0xC7,0xC8,0xC7, 0xC4,0xC0,0xBB,0xB3,0xAB,0xA1,0x97,0x8B, /* 2 */ 0x00,0x1A,0x33,0x49,0x5C,0x6A,0x74,0x7B, 0x7E,0x7F,0x7E,0x7D,0x7A,0x78,0x75,0x72, 0x6E,0x6B,0x67,0x63,0x60,0x5D,0x59,0x57, 0x54,0x51,0x4F,0x4C,0x4A,0x48,0x45,0x43, 0x41,0x3F,0x3E,0x3C,0x3A,0x39,0x37,0x36, 0x34,0x33,0x31,0x30,0x2F,0x2E,0x2D,0x2C, 0x2A,0x29,0x28,0x27,0x26,0x25,0x24,0x24, 0x23,0x22,0x21,0x20,0x20,0x1F,0x1E,0x1D, 0x1D,0x1C,0x1B,0x1B,0x1A,0x1A,0x19,0x18, 0x18,0x17,0x16,0x16,0x15,0x15,0x14,0x14, 0x13,0x13,0x12,0x12,0x11,0x11,0x10,0x10, 0x10,0x0F,0x0F,0x0E,0x0E,0x0D,0x0D,0x0C, 0x0C,0x0C,0x0B,0x0B,0x0A,0x0A,0x0A,0x09, 0x09,0x08,0x08,0x08,0x07,0x07,0x07,0x06, 0x06,0x05,0x05,0x05,0x04,0x04,0x04,0x03, 0x03,0x03,0x02,0x02,0x01,0x01,0x01,0x00, /* 3 */ 0x00,0x1C,0x31,0x3B,0x3C,0x36,0x30,0x29, 0x23,0x1D,0x18,0x16,0x17,0x1A,0x1C,0x1C, 0x1B,0x1C,0x20,0x26,0x2A,0x2A,0x26,0x20, 0x1E,0x24,0x30,0x3E,0x4B,0x53,0x57,0x58, 0x55,0x4E,0x43,0x35,0x28,0x1E,0x18,0x15, 0x13,0x12,0x14,0x1E,0x30,0x46,0x5A,0x67, 0x6A,0x65,0x5E,0x57,0x52,0x51,0x53,0x59, 0x61,0x6A,0x70,0x6F,0x66,0x59,0x4C,0x44, 0x41,0x41,0x41,0x40,0x40,0x45,0x50,0x5E, 0x6D,0x78,0x7E,0x7F,0x7B,0x73,0x65,0x53, 0x40,0x32,0x2A,0x2A,0x2B,0x2C,0x2A,0x27, 0x27,0x2B,0x31,0x37,0x39,0x36,0x32,0x2E, 0x2E,0x31,0x37,0x3E,0x48,0x53,0x5B,0x5C, 0x53,0x3F,0x27,0x11,0x03,0x81,0x02,0x07, 0x0D,0x14,0x1D,0x26,0x30,0x36,0x39,0x38, 0x35,0x32,0x2B,0x21,0x14,0x08,0x81,0x83, /* 4 */ 0x00,0x0F,0x1E,0x2C,0x3A,0x46,0x52,0x5D, 0x66,0x6E,0x74,0x79,0x7D,0x7E,0x7F,0x7E, 0x7C,0x79,0x74,0x6F,0x68,0x61,0x5A,0x51, 0x49,0x40,0x37,0x2E,0x25,0x1C,0x13,0x0B, 0x03,0x85,0x8B,0x91,0x97,0x9B,0x9F,0xA2, 0xA4,0xA6,0xA6,0xA6,0xA5,0xA3,0xA0,0x9D, 0x9A,0x95,0x91,0x8C,0x87,0x81,0x04,0x09, 0x0E,0x13,0x17,0x1B,0x1E,0x20,0x22,0x23, 0x23,0x22,0x21,0x1E,0x1A,0x16,0x10,0x0A, 0x03,0x84,0x8C,0x95,0x9D,0xA6,0xAE,0xB7, 0xBF,0xC6,0xCD,0xD2,0xD7,0xDB,0xDE,0xDF, 0xDF,0xDE,0xDC,0xD8,0xD3,0xCD,0xC6,0xBE, 0xB5,0xAB,0xA0,0x95,0x8A,0x02,0x0D,0x18, 0x23,0x2D,0x36,0x3F,0x47,0x4D,0x52,0x56, 0x59,0x5A,0x5A,0x59,0x57,0x53,0x4F,0x4A, 0x43,0x3D,0x35,0x2D,0x24,0x1C,0x13,0x09, /* 5 */ 0x00,0x1A,0x32,0x48,0x5B,0x6A,0x74,0x7B, 0x7E,0x7F,0x7E,0x7B,0x79,0x76,0x73,0x70, 0x6E,0x6C,0x6B,0x69,0x67,0x65,0x64,0x62, 0x61,0x60,0x5F,0x5F,0x5F,0x5E,0x5E,0x5E, 0x5D,0x5C,0x5C,0x5B,0x5A,0x59,0x58,0x58, 0x57,0x56,0x55,0x54,0x52,0x51,0x50,0x4F, 0x4E,0x4D,0x4C,0x4B,0x4A,0x49,0x48,0x47, 0x46,0x45,0x44,0x43,0x42,0x42,0x41,0x41, 0x40,0x3F,0x3E,0x3D,0x3C,0x3B,0x3A,0x39, 0x38,0x38,0x37,0x36,0x35,0x34,0x32,0x31, 0x30,0x2E,0x2D,0x2C,0x2A,0x29,0x28,0x27, 0x26,0x25,0x24,0x23,0x22,0x20,0x1F,0x1E, 0x1D,0x1C,0x1B,0x1B,0x1A,0x19,0x18,0x17, 0x16,0x15,0x14,0x13,0x12,0x11,0x10,0x0F, 0x0F,0x0E,0x0D,0x0C,0x0B,0x0A,0x09,0x08, 0x07,0x06,0x05,0x04,0x04,0x03,0x02,0x01, /* 6 */ 0x00,0x55,0x7F,0x7E,0x6E,0x64,0x5D,0x53, 0x4A,0x45,0x41,0x3B,0x35,0x32,0x2F,0x2A, 0x26,0x23,0x21,0x1D,0x19,0x17,0x15,0x12, 0x0F,0x0E,0x0D,0x0B,0x0A,0x0A,0x0A,0x0A, 0x0A,0x0B,0x0C,0x0D,0x0D,0x0F,0x10,0x11, 0x12,0x13,0x14,0x14,0x14,0x14,0x14,0x13, 0x12,0x11,0x10,0x0E,0x0C,0x0B,0x09,0x07, 0x05,0x03,0x02,0x80,0x82,0x82,0x83,0x84, 0x85,0x84,0x84,0x84,0x83,0x82,0x81,0x00, 0x02,0x03,0x05,0x06,0x07,0x09,0x0A,0x0A, 0x0B,0x0C,0x0C,0x0B,0x0B,0x0B,0x0A,0x08, 0x07,0x06,0x04,0x02,0x01,0x81,0x82,0x84, 0x85,0x86,0x87,0x88,0x88,0x88,0x88,0x87, 0x87,0x85,0x84,0x83,0x82,0x00,0x02,0x03, 0x05,0x06,0x07,0x08,0x09,0x0A,0x0A,0x0A, 0x0A,0x09,0x08,0x07,0x06,0x05,0x03,0x01, /* 7 */ 0x00,0x21,0x3F,0x58,0x6B,0x77,0x7D,0x7F, 0x7D,0x79,0x73,0x6C,0x64,0x5B,0x53,0x4C, 0x45,0x3F,0x3A,0x36,0x31,0x2D,0x2A,0x27, 0x25,0x22,0x20,0x1E,0x1C,0x1B,0x1A,0x1A, 0x1A,0x1A,0x1A,0x1A,0x19,0x18,0x17,0x17, 0x16,0x15,0x14,0x13,0x13,0x12,0x11,0x11, 0x10,0x0F,0x0E,0x0C,0x0B,0x0A,0x09,0x08, 0x07,0x06,0x06,0x06,0x06,0x07,0x09,0x0B, 0x0D,0x10,0x12,0x14,0x15,0x15,0x15,0x14, 0x13,0x12,0x11,0x0F,0x0E,0x0D,0x0B,0x0A, 0x09,0x08,0x07,0x07,0x06,0x06,0x05,0x04, 0x04,0x03,0x03,0x02,0x02,0x02,0x03,0x03, 0x04,0x05,0x06,0x06,0x06,0x06,0x05,0x05, 0x04,0x04,0x03,0x03,0x02,0x00,0x81,0x83, 0x86,0x89,0x8D,0x92,0x97,0x9C,0xA2,0xA7, 0xAD,0xB1,0xB5,0xB6,0xB4,0xAD,0xA1,0x92, /* 8 */ 0x00,0x11,0x21,0x30,0x3D,0x48,0x52,0x59, 0x5E,0x63,0x66,0x69,0x6C,0x6F,0x71,0x74, 0x76,0x77,0x79,0x7A,0x7A,0x7B,0x7B,0x7C, 0x7C,0x7D,0x7D,0x7E,0x7F,0x7F,0x7F,0x7F, 0x7F,0x7E,0x7E,0x7E,0x7D,0x7D,0x7C,0x7C, 0x7B,0x7B,0x7A,0x79,0x79,0x78,0x77,0x77, 0x77,0x77,0x77,0x77,0x77,0x77,0x76,0x76, 0x76,0x76,0x76,0x76,0x76,0x76,0x76,0x76, 0x76,0x76,0x76,0x76,0x75,0x75,0x75,0x75, 0x75,0x75,0x75,0x75,0x75,0x75,0x75,0x75, 0x75,0x75,0x76,0x76,0x77,0x77,0x78,0x78, 0x79,0x7A,0x7A,0x7A,0x7B,0x7B,0x7C,0x7C, 0x7C,0x7D,0x7D,0x7C,0x7C,0x7C,0x7B,0x7B, 0x7A,0x7A,0x79,0x79,0x78,0x78,0x77,0x76, 0x74,0x72,0x70,0x6D,0x6B,0x68,0x65,0x62, 0x5D,0x58,0x51,0x48,0x3D,0x30,0x21,0x11, /* 9 */ 0x00,0x0E,0x1C,0x28,0x33,0x3C,0x44,0x4A, 0x4E,0x51,0x54,0x56,0x58,0x59,0x5B,0x5D, 0x5F,0x60,0x61,0x61,0x60,0x5E,0x5B,0x58, 0x54,0x4F,0x49,0x43,0x3D,0x37,0x31,0x2B, 0x24,0x1E,0x17,0x10,0x08,0x01,0x87,0x90, 0x98,0xA0,0xA8,0xAE,0xB4,0xB8,0xBB,0xBC, 0xBA,0xB7,0xB2,0xAB,0xA3,0x9B,0x93,0x8B, 0x84,0x03,0x08,0x0D,0x11,0x15,0x1A,0x1F, 0x24,0x2B,0x33,0x3B,0x44,0x4D,0x56,0x5E, 0x65,0x6B,0x70,0x75,0x78,0x7A,0x7C,0x7E, 0x7F,0x7F,0x7F,0x7E,0x7C,0x7A,0x75,0x70, 0x69,0x60,0x56,0x4C,0x40,0x34,0x28,0x1D, 0x12,0x08,0x81,0x88,0x8F,0x94,0x98,0x9C, 0x9F,0xA2,0xA5,0xA9,0xAD,0xB2,0xB6,0xBC, 0xC0,0xC5,0xC8,0xCA,0xCB,0xC9,0xC7,0xC2, 0xBC,0xB5,0xAE,0xA6,0x9E,0x96,0x8E,0x87, /* 10 */ 0x00,0x09,0x12,0x1B,0x24,0x2C,0x34,0x3B, 0x41,0x47,0x4C,0x51,0x55,0x59,0x5C,0x5F, 0x61,0x63,0x65,0x67,0x69,0x6B,0x6D,0x6F, 0x71,0x73,0x75,0x77,0x79,0x7B,0x7C,0x7D, 0x7E,0x7F,0x7F,0x7F,0x7E,0x7D,0x7C,0x7A, 0x78,0x75,0x72,0x6F,0x6C,0x69,0x66,0x62, 0x5F,0x5C,0x58,0x55,0x52,0x4F,0x4C,0x48, 0x45,0x42,0x3F,0x3C,0x39,0x36,0x33,0x30, 0x2D,0x2A,0x27,0x24,0x22,0x1F,0x1D,0x1A, 0x18,0x16,0x15,0x13,0x12,0x11,0x10,0x0F, 0x0E,0x0E,0x0D,0x0D,0x0C,0x0C,0x0C,0x0B, 0x0B,0x0A,0x0A,0x0A,0x09,0x09,0x09,0x09, 0x09,0x09,0x09,0x09,0x09,0x09,0x09,0x09, 0x09,0x09,0x0A,0x0A,0x0A,0x09,0x09,0x09, 0x09,0x08,0x08,0x07,0x06,0x06,0x05,0x04, 0x04,0x03,0x03,0x02,0x02,0x01,0x01,0x00, /* 11 */ 0x00,0x0B,0x15,0x20,0x2A,0x34,0x3D,0x46, 0x4F,0x57,0x5E,0x64,0x6A,0x6F,0x73,0x77, 0x7A,0x7C,0x7E,0x7F,0x7F,0x7F,0x7E,0x7E, 0x7C,0x7B,0x79,0x77,0x75,0x72,0x70,0x6D, 0x6B,0x68,0x66,0x64,0x61,0x5F,0x5D,0x5B, 0x59,0x57,0x55,0x54,0x52,0x51,0x50,0x4F, 0x4F,0x4E,0x4E,0x4E,0x4E,0x4E,0x4F,0x4F, 0x50,0x51,0x51,0x52,0x53,0x54,0x55,0x56, 0x57,0x57,0x58,0x58,0x58,0x57,0x56,0x55, 0x54,0x52,0x50,0x4E,0x4B,0x48,0x45,0x41, 0x3D,0x39,0x34,0x30,0x2B,0x27,0x22,0x1E, 0x19,0x14,0x10,0x0C,0x08,0x04,0x00,0x83, 0x86,0x89,0x8C,0x8E,0x90,0x92,0x94,0x95, 0x97,0x98,0x98,0x99,0x99,0x9A,0x9A,0x99, 0x99,0x98,0x98,0x97,0x96,0x95,0x93,0x92, 0x90,0x8E,0x8D,0x8B,0x89,0x87,0x84,0x82, /* 12 */ 0x00,0x1F,0x3B,0x50,0x5F,0x68,0x6E,0x72, 0x76,0x7A,0x7D,0x7F,0x7F,0x7D,0x7A,0x77, 0x75,0x73,0x72,0x70,0x6F,0x6E,0x6E,0x6F, 0x71,0x74,0x77,0x78,0x78,0x77,0x75,0x74, 0x74,0x73,0x71,0x6E,0x68,0x60,0x56,0x4E, 0x47,0x43,0x42,0x42,0x42,0x42,0x41,0x3F, 0x3C,0x3B,0x3A,0x3A,0x3A,0x3A,0x39,0x39, 0x38,0x37,0x35,0x33,0x30,0x2D,0x2A,0x26, 0x24,0x22,0x23,0x24,0x27,0x2A,0x2E,0x32, 0x36,0x39,0x3B,0x3B,0x3A,0x38,0x36,0x34, 0x34,0x35,0x36,0x37,0x37,0x34,0x2F,0x29, 0x22,0x1C,0x17,0x13,0x0E,0x0A,0x05,0x01, 0x81,0x82,0x82,0x81,0x01,0x01,0x01,0x80, 0x81,0x81,0x81,0x80,0x80,0x81,0x83,0x86, 0x87,0x86,0x84,0x00,0x05,0x07,0x08,0x06, 0x04,0x01,0x00,0x01,0x03,0x04,0x04,0x03 }; main(){ double a,b,pi=3.1415926535; unsigned int i,j; cr=0x0d; lf=0x0a; flag=1; ctr=0; address=0; fdo=fopen("WAVEROM.HEX","wb"); m=0; n=1; data_set(); m=2; n=3; data_set(); m=5; n=4; data_set(); m=6; n=7; data_set(); m=8; n=9; data_set(); m=11; n=10; data_set(); m=8; n=0; data_set(); m=2; n=0; data_set(); file_close(); } conv(data) unsigned char data; { if(data<0x80) return(data+128); else return(256-data); } data_set(){ int i,j; double a,b; for(j=0;j<128;j++) data1[j]=conv(bank[m*128+j]); for(j=128;j<256;j++) data1[j]=256-conv(bank[m*128+255-j]); for(j=0;j<128;j++) data2[j]=conv(bank[n*128+j]); for(j=128;j<256;j++) data2[j]=256-conv(bank[n*128+255-j]); for(i=0;i<16;i++){ a=(double)(16-i)/16.0; b=(double)i/16.0; for(j=0;j<256;j++){ d=(int)(a*(double)data1[j]+b*(double)data2[j]); file_write(); } } } 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); }