?? gal16v8反匯編程序.txt
字號:
printf("Jed2Abel ");
printf(filename1);
printf(" To ");
puts(filename2);
printf("Jed2Abel ConVert start, Please Wait...\r\n\r\n");
rewind(fp2);
fprintf(fp2,"module _%s\n",str);
fprintf(fp2,"\ntitle 'Jed2Abel Version 3.01 Copyright (c) 1993,2008\n");
fprintf(fp2," Jed2Abel JedFile:[%s.Jed]\n",str);
fprintf(fp2," HotPower 1992.11.19'\n\n");
//fuses[SYN]=='0' && fuses[AC0]=='1' P16V8R
//fuses[SYN]=='1' && fuses[AC0]=='1' P16V8C
//fuses[SYN]=='1' && fuses[AC0]=='0' P16V8S
if(fuses[SYN]=='1' && fuses[AC0]=='0'){
fprintf(fp2," %s device 'P16V8S';\"Make JedFusesFile %s.Jed\n",ptr,ptr);
printf(" %s.Jed device 'P16V8S';\n",ptr);
outpin=outpins;
}
else{
if(fuses[SYN]=='1' && fuses[AC0]=='1'){
fprintf(fp2," %s device 'P16V8C';\"Make JedFusesFile %s.Jed\n",ptr,ptr);
printf("%s.Jed device 'P16V8C';\n",ptr);
outpin=outpinc;
}
else{
if(fuses[SYN]=='0' && fuses[AC0]=='1'){
fprintf(fp2," %s device 'P16V8R';\"Make JedFusesFile %s.Jed\n",ptr,ptr);
printf("%s.Jed device 'P16V8R';\n",ptr);
outpin=outpinr;
}
}
}
fprintf(fp2,"\n");
for(pin=0;pin<9;pin++){
if(pin) fprintf(fp2,",");
fprintf(fp2,"%s",pinname[pin]);
}
fprintf(fp2," Pin ");
for(pin=1;pin<10;pin++){
if(pin>1) fprintf(fp2,",");
fprintf(fp2,"%1d",pin);
}
fprintf(fp2,";\n");
for(pin=10;pin<19;pin++){
if(pin>10) fprintf(fp2,",");
fprintf(fp2,"%s",pinname[pin]);
}
fprintf(fp2," Pin ");
for(pin=11;pin<20;pin++){
if(pin>11) fprintf(fp2,",");
fprintf(fp2,"%2d",pin);
}
fprintf(fp2,";\n\n");
y=0;
for(x=0,pin=19;pin>=12;x++,pin--){
if(fuses[SYN]=='0' && fuses[XORN+x]=='0') y++;
}
if(y){
for(x=0,pin=18;pin>=11;x++,pin--){
if(fuses[SYN]=='0' && fuses[XORN+x]=='0'){
fprintf(fp2,"%s",pinname[pin]);
if(--y) fprintf(fp2,",");
}
}
fprintf(fp2," istype 'reg,pin';\n");
}
y=0;
for(x=0,pin=19;pin>=12;x++,pin--){
if(!(fuses[SYN]=='0' && fuses[XORN+x]=='0')) y++;
}
if(y){
for(x=0,pin=18;pin>=11;x++,pin--){
if(!(fuses[SYN]=='0' && fuses[XORN+x]=='0')){
fprintf(fp2,"%s",pinname[pin]);
if(--y) fprintf(fp2,",");
}
}
fprintf(fp2," istype 'com';\n");
}
y=0;
for(x=0,pin=18;pin>=11;x++,pin--){
//fuses[2048..2055]=1 pos;
//fuses[2048..2055]=0 neg;
if(fuses[2048+x]=='1') y++;
}
if(y){
for(x=0,pin=18;pin>=11;x++,pin--){
if(fuses[2048+x]=='1'){
fprintf(fp2,"%s",pinname[pin]);
if(--y) fprintf(fp2,",");
}
}
fprintf(fp2," istype 'pos';\n");
}
y=0;
for(x=0,pin=19;pin>=12;x++,pin--){
if(fuses[2048+x]=='0') y++;
}
if(y){
for(x=0,pin=18;pin>=11;x++,pin--){
if(fuses[2048+x]=='0'){
fprintf(fp2,"%s",pinname[pin]);
if(--y) fprintf(fp2,",");
}
}
fprintf(fp2," istype 'neg';\n");
}
y=0;
for(x=0,pin=19;pin>=12;x++,pin--){
if(fuses[AC0]=='1' && fuses[XORN+x]=='1') y++;
}
if(y){
for(x=0,pin=18;pin>=11;x++,pin--){
if(fuses[AC0]=='1' && fuses[XORN+x]=='1'){
fprintf(fp2,"%s",pinname[pin]);
if(--y) fprintf(fp2,",");
}
}
fprintf(fp2," istype 'eqn';\n");
}
fprintf(fp2,"\nH,L,X,Z,C,P=1,0,.X.,.Z.,.C.,.P.;\n");
fprintf(fp2,"\nequations\n");
for(x=0,pin=18;pin>=11;x++,pin--){
str=fuses+x*32*8;
ptr=str;
y=0;
z=0;
k=0;
for(i=0;i<32*8;i++){
if(*ptr++=='0') y++;
else z++;
}
if(z){
for(i=0;i<8;i++){
ptr=str+i*32;
y=0;
z=0;
for(j=0;j<32;j++){
if(*ptr++=='0') y++;
else z++;
}
if(k==0){
if(fuses[2048+x]=='0' && !(i==0 && fuses[AC0]=='1' && fuses[XORN+x]=='1')) fprintf(fp2,"!");
else fprintf(fp2," ");
fprintf(fp2,"%s",pinname[pin]);
}
if(i==0){
if(fuses[AC0]=='1' && fuses[XORN+x]=='1'){
fprintf(fp2,".oe =");
}
else k++;
}
else k++;
if(k==1){
if(fuses[SYN]=='0' && fuses[XORN+x]=='0') fprintf(fp2," :=");
else fprintf(fp2," =");
}
if(y==0){
if(k==0){
fprintf(fp2," 1;\n");
}
}
else{
if(z==0){
if(k==0){
fprintf(fp2," 0;\n");
}
}
else{
if(k>1) fprintf(fp2,"\n #");
ptr=fuses+x*32*8;
ptr+=i*32;
z=0;
for(j=0;j<32;j++){
if(*ptr=='0'){
if(z) fprintf(fp2," &");
if(j&0x01) fprintf(fp2," !");
else fprintf(fp2," ");
y=j>>1;
fprintf(fp2,"%s",pinname[*(outpin+y)-1]);
z++;
}
ptr++;
}
if(k==0) fprintf(fp2,";\n");
}
}
}
if(k>1) fprintf(fp2,";\n");
}
else{
fprintf(fp2,"\"%s =Input Pin\n",pinname[pin]);
}
}
fprintf(fp2,"\nfuses \n");
str=fuses;
ch=getstrhex(str+2056);
//fuses[2056..2063] string
fprintf(fp2," [2056..2063]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2064);
fprintf(fp2," [2064..2071]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2072);
fprintf(fp2," [2072..2079]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2080);
fprintf(fp2," [2080..2087]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2088);
fprintf(fp2," [2088..2095]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2096);
fprintf(fp2," [2096..2103]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2104);
fprintf(fp2," [2104..2111]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
ch=getstrhex(str+2112);
fprintf(fp2," [2112..2119]=");
if(ch==0) fprintf(fp2,"'';\n");
else{
if(ch>=' ') fprintf(fp2,"'%c';\n",ch);
else fprintf(fp2,"^h%02X;\n",ch);
}
fseek(fp1,addressx,SEEK_SET);
while(!feof(fp1) && (ch=fgetc(fp1))!='V');
y=1;
*(buffer+20)=0;
while(!feof(fp1) && ch=='V'){
fscanf(fp1,"%04d",&pccount);
while(!feof(fp1) && (ch=fgetc(fp1))!=' ');
fprintf(fp2,"\ntest_vectors\"V%04d\n",y++);
fscanf(fp1,"%20c",buffer);
str=buffer;
fprintf(fp2,"([");
z=0;
for(pin=0;pin<19;pin++){
if(*str=='0' || *str=='1' || *str=='C' || *str=='P'){
if(z) fprintf(fp2,",");
fprintf(fp2,"%s",pinname][pin]);
z++;
}
str++;
}
fprintf(fp2,"]->[");
str=buffer;
z=0;
for(pin=0;pin<19;pin++){
if(*str=='H' || *str=='L' || *str=='Z'){
if(z) fprintf(fp2,",");
fprintf(fp2,"%s",pinname][pin]);
z++;
}
str++;
}
fprintf(fp2,"])\n");
str=buffer;
fprintf(fp2," [");
z=0;
for(pin=1;pin<=19;pin++){
if(*str=='0' || *str=='1' || *str=='C' || *str=='P'){
if(z) fprintf(fp2,",");
if(*str=='0') fprintf(fp2," L ");
else{
if(*str=='1') fprintf(fp2," H ");
else fprintf(fp2," %c ",*str);
}
z++;
}
str++;
}
fprintf(fp2,"]->[");
str=buffer;
z=0;
for(pin=1;pin<=19;pin++){
if(*str=='H' || *str=='L' || *str=='Z'){
if(z) fprintf(fp2,",");
fprintf(fp2," %c ",*str);
z++;
}
str++;
}
fprintf(fp2,"];\n");
while(!feof(fp1) && (ch=fgetc(fp1))!='V');
}
str=filename1;
while(*str&&*str!='.') str++;
*str=0;
str=filename1;
fprintf(fp2,"\nend _%s\n",str);
free(filename1);
free(filename2);
fclose(fp1);
fclose(fp2);
puts("\r\n\r\nJed2Abel Convert complete!");
return;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -