⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gal16v8反汇编程序.txt

📁 gal16v8反汇编程序 gal16v8是一款古老的电可擦除gal芯片
💻 TXT
📖 第 1 页 / 共 2 页
字号:
    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 + -