亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ds8007.lst

?? dallas公司的ds8007芯片源代碼。絕對好用。可以兼容tda8007.
?? LST
?? 第 1 頁 / 共 5 頁
字號:
 756   5                                              if ((curByte != 0x3f) && (curByte != 0x3b))
 757   5                                              {
 758   6                                                      dssc_powerdown();
 759   6                                                      return ERR_POWERUP_ATR_INVALID;
 760   6                                              }
 761   5                                              check = 0;
 762   5                                      }
 763   4                                      else
 764   4                                              check ^= curByte;
 765   4                                      if (index == 2)
 766   4                                      {
 767   5                                              historicalBytes = curByte & 0x0F;
 768   5                                              expectedCharacters = curByte & 0xF0;
 769   5                                              lastATR[currentSlot].T0 = curByte;
 770   5                                      }
 771   4                                      if (index > 2)
 772   4                                      {
 773   5                                              switch(expectedCharacters)
 774   5                                              {
 775   6                                              case 0x00:
 776   6                                                      // Historical characters
 777   6                                                      historicalBytes--;
 778   6                                                      lastATR[currentSlot].Historical[lastATR[currentSlot].HistoricalLength++] = curByte;
 779   6                                                      if (historicalBytes == 0)
 780   6                                      {
 781   7                                              if (T==0)
 782   7                                                              {
 783   8                                                                      done = 1;
 784   8                                              }
 785   7                                                              else
 786   7                                                                      expectedCharacters = 0x01;  // Go to checksum state
 787   7                                      }
 788   6                                                      break;
 789   6                                              case 0x01:
 790   6                                                      // TCK case
 791   6                                                      lastATR[currentSlot].TCK = curByte;
 792   6                                              done = 1;
 793   6                                                      break;
 794   6      
 795   6                                              case 0x10:
 796   6                                              case 0x30:
 797   6                                              case 0x50:
 798   6                                              case 0x70:
C51 COMPILER V8.08   DS8007                                                                10/26/2007 09:32:25 PAGE 14  

 799   6                                              case 0x90:
 800   6                                              case 0xB0:
 801   6                                              case 0xD0:
 802   6                                              case 0xF0:
 803   6                                                      // TA case
 804   6                                              expectedCharacters &= 0xE0;
 805   6                                                      lastATR[currentSlot].TA[interfaceIteration] = curByte;
 806   6                                                      break;
 807   6      
 808   6                                              case 0x20:
 809   6                                              case 0x60:
 810   6                                              case 0xA0:
 811   6                                              case 0xE0:
 812   6                                                      // TB case
 813   6                                                      expectedCharacters &= 0xD0;
 814   6      
 815   6                                                      lastATR[currentSlot].TB[interfaceIteration] = curByte;
 816   6                                                      break;
 817   6      
 818   6                                              case 0x40:
 819   6                                              case 0xC0:
 820   6                                                      // TC case
 821   6                                                      expectedCharacters &= 0xB0;
 822   6                                                      lastATR[currentSlot].TC[interfaceIteration] = curByte;
 823   6                                                      break;
 824   6      
 825   6                                              case 0x80:
 826   6                                                      // TD case
 827   6                                                      expectedCharacters=(curByte&0xF0);
 828   6                                                      // Handle zero historical characters
 829   6                                                      if ((expectedCharacters == 0x00) && (historicalBytes == 0))
 830   6                                                      {
 831   7                                                              if (T==0)
 832   7                                                              {
 833   8                                                                      done = 1;
 834   8                                                              }
 835   7                                                              else
 836   7                                                                      expectedCharacters = 0x01;
 837   7                                                      }
 838   6                                                      lastATR[currentSlot].TD[interfaceIteration] = curByte;
 839   6                                                      // If we get TD1, we have the first protocol selection
 840   6                                                      if ((interfaceIteration==1))
 841   6                                                      {
 842   7                                                              T=curByte & 0x0F;
 843   7                                                      }
 844   6                                                      else
 845   6                                                      {
 846   7                                                              // Changing protocols is only valid under ISO (not allowed in EMV)
 847   7                                                              if (mode == POWERUP_ISO)
 848   7                                                              {
 849   8                                                                      if ((curByte & 0x0F) != T)
 850   8                                                                      {
 851   9                                                                              T=curByte & 0x0F;
 852   9                                                      }
 853   8                                                              }
 854   7                                                              else
 855   7                                                                      return ERR_POWERUP_ATR_INVALID;  // You cannot change T protocol under EMV
 856   7                                                      }
 857   6                                                      interfaceIteration++;
 858   6                                                      break;
 859   6                                              default:
 860   6                                                      dssc_powerdown();
C51 COMPILER V8.08   DS8007                                                                10/26/2007 09:32:25 PAGE 15  

 861   6                                                      return ERR_POWERUP_ATR_INVALID;
 862   6                                      break;
 863   6                                              }
 864   5                                      }
 865   4      
 866   4                              if (mode == POWERUP_ISO)
 867   4                  {
 868   5                                      // Reset timer for 9600 etu between characters in ATR
 869   5                                      dssc_writeregister(TOC,0x00);
 870   5                                      dssc_writeregister(TOR3,0x25);
 871   5                              dssc_writeregister(TOR2,0x80);
 872   5                                      dssc_writeregister(TOR1,0x00);
 873   5                                      // Start timer
 874   5                                      dssc_writeregister(TOC,0x61);
 875   5                              }
 876   4                      else  // mode is EMV
 877   4                      {
 878   5                                      // Set up timer for 9600 etu between characters in ATR
 879   5                                      // Don't modify TOR1 as it is in auto-reload mode.
 880   5                                      dssc_writeregister(TOC,0x05);
 881   5                                      dssc_writeregister(TOR3,0x25);
 882   5                                      dssc_writeregister(TOR2,0x80);
 883   5      
 884   5                                      // Start timer
 885   5                                      dssc_writeregister(TOC,0x65);
 886   5                      }
 887   4              }
 888   3          }
 889   2      
 890   2              // Read Timer status
 891   2              if (USRval & USR_TOL3_MASK)
 892   2              {
 893   3                      dssc_powerdown();
 894   3                      return ERR_POWERUP_ATR_TIMEOUT;
 895   3              }
 896   2              if ((mode == POWERUP_EMV) && (USRval & USR_TOL1_MASK))
 897   2              {
 898   3                      // If 192 ETU rollover, increment total count
 899   3                      etucount++;
 900   3                      // If we exceed 192 * 100 or 19200 etu, we fail as the whole ATR has not come
 901   3                      if (etucount > 100)
 902   3                      {
 903   4                              dssc_powerdown();
 904   4                              return ERR_POWERUP_ATR_TIMEOUT;
 905   4                      }
 906   3              }
 907   2              }
 908   1      
 909   1              // If we are in T=1 protocol, we get a LRC (xor checksum) at the end
 910   1              if (T==1)
 911   1              {
 912   2                      if (check != 0)
 913   2                      {
 914   3                              dssc_powerdown();
 915   3                              return ERR_POWERUP_ATR_CRC_FAILURE;
 916   3                      }
 917   2              }
 918   1      
 919   1              // Set ATR length for the ATR received
 920   1              ATRLength[currentSlot] = index;
 921   1              // Set T protocol mode
 922   1              TMode[currentSlot] = T;
C51 COMPILER V8.08   DS8007                                                                10/26/2007 09:32:25 PAGE 16  

 923   1      
 924   1              // Set the DS8007 UCR1.PROT mode according to T value
 925   1              val = dssc_readregister(UCR1);
 926   1              if (T == 0)
 927   1                      dssc_writeregister(UCR1,val & ~UCR1_PROT_MASK);
 928   1              else
 929   1                      dssc_writeregister(UCR1,val | UCR1_PROT_MASK);
 930   1      
 931   1              // Set extra guard time if present in TC1, else use guard time of 0
 932   1              if (lastATR[currentSlot].TC[1] != -1)
 933   1              dssc_writeregister(GTR,lastATR[currentSlot].TC[1]);
 934   1              else
 935   1                      dssc_writeregister(GTR,0x00);
 936   1      
 937   1              // Set the EDC type (either LRC or CRC)
 938   1              EDCtype[currentSlot] = EDC_TYPE_LRC;  // Default to LRC if not told otherwise.
 939   1              for (i = 3;i < 8;i++)
 940   1              {
 941   2                      if (lastATR[currentSlot].TC[3] != -1)
 942   2                  { 
 943   3                              EDCtype[currentSlot] = (lastATR[currentSlot].TC[3] & 0x01)?EDC_TYPE_CRC:EDC_TYPE_LRC;
 944   3                      }
 945   2              }
 946   1      
 947   1              // Set IFSC (max segment size of card) if TA3 present (only used for T=1 protocol)
 948   1              if (lastATR[currentSlot].TA[3] != -1)
 949   1              {
 950   2                      val = lastATR[currentSlot].TA[3];
 951   2                      if ((val < 0x10) || (val == 0xFF))
 952   2                      {
 953   3                              dssc_powerdown();
 954   3                              return ERR_POWERUP_ATR_INVALID;
 955   3                      }
 956   2                      IFSC[currentSlot] = val;
 957   2              }
 958   1              else
 959   1                      IFSC[currentSlot] = 0x20;  // Default for IFSC is 0x20 according to EMV 4.1 8.3.3.9 and ISO7816 9.5.2.1
 960   1      
 961   1              // Set WWT if present in TC2 (only used for T=0), ISO7816 8.2
 962   1              if (lastATR[currentSlot].TC[2] != -1)
 963   1                      WWT[currentSlot] = lastATR[currentSlot].TC[2] * 960;
 964   1              else
 965   1                      WWT[currentSlot] = 960 * 10;
 966   1      
 967   1              if (mode == POWERUP_EMV)
 968   1              {
 969   2                      if (lastATR[currentSlot].TB[3] == -1)
 970   2                      {
 971   3                              dssc_powerdown();
 972   3                              return ERR_POWERUP_ATR_INVALID;
 973   3                      }
 974   2              else
 975   2                      {
 976   3                              val = lastATR[currentSlot].TB[i] & 0x0F;
 977   3                              // Fail if CWI is out of range
 978   3                              if (val > 5)
 979   3                              {
 980   4                                      dssc_powerdown();
 981   4                                      return ERR_POWERUP_ATR_INVALID;
 982   4                              }
 983   3                              val = (lastATR[currentSlot].TB[i] & 0x0F) >> 4;
 984   3                              // Fail if BWI is out of range
C51 COMPILER V8.08   DS8007                                                                10/26/2007 09:32:25 PAGE 17  

 985   3                              if (val > 4)
 986   3                              {
 987   4                              dssc_powerdown();
 988   4                              return ERR_POWERUP_ATR_INVALID;
 989   4                              }
 990   3                      }
 991   2              }
 992   1      
 993   1              // Set default values for CWT and BWT, ISO7816 9.5.3.1 and 9.5.3.2
 994   1              CWT[currentSlot] = 11 + (1 << 13);
 995   1              BWT[currentSlot] = 11 + (1 << 4) * 960;
 996   1              for (i = 3;i < 8;i++)
 997   1              {
 998   2                      // Set CWT and BWT if present in TBi
 999   2                  if (lastATR[currentSlot].TB[i] != -1)
1000   2                      {
1001   3                              val = lastATR[currentSlot].TB[i] & 0x0F;
1002   3                              CWT[currentSlot] = 11 + (1 << val);
1003   3                              val = (lastATR[currentSlot].TB[i] & 0x0F) >> 4;
1004   3                              if (val > 9)
1005   3                              {
1006   4                                      dssc_powerdown();
1007   4                                      return ERR_POWERUP_ATR_INVALID;
1008   4                              }
1009   3                              BWT[currentSlot] = 11 + (1 << val) * 960;
1010   3                              break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区三区三区| 成人免费视频一区| 懂色av一区二区夜夜嗨| 91久久线看在观草草青青| 欧美一区日本一区韩国一区| 国产欧美中文在线| 婷婷成人综合网| 91视频在线看| 国产喷白浆一区二区三区| 亚洲成人黄色影院| 99国产精品久久久久久久久久 | 蓝色福利精品导航| 色婷婷av一区二区三区之一色屋| 精品国产乱码久久久久久牛牛| 亚洲综合在线电影| 成人精品视频一区二区三区尤物| 午夜国产不卡在线观看视频| 精品国产乱码久久久久久蜜臀 | 日本在线不卡视频一二三区| 精品久久99ma| 欧美丰满嫩嫩电影| 国产又黄又大久久| 午夜精品久久一牛影视| 久久久综合视频| 欧美日韩精品一区二区天天拍小说| 成人在线一区二区三区| 亚洲女子a中天字幕| 国产清纯在线一区二区www| 亚洲色欲色欲www在线观看| 国产一区二区三区四区在线观看| 国产一区二区三区在线观看精品| 91精品国产综合久久小美女| 国产性色一区二区| 国产一区二区0| 欧美猛男gaygay网站| 香蕉成人伊视频在线观看| 99久久久免费精品国产一区二区| 国产精品视频在线看| 韩国理伦片一区二区三区在线播放| 成人福利视频网站| 欧美精彩视频一区二区三区| 亚洲二区在线观看| 3d动漫精品啪啪一区二区竹菊| 一区二区三区色| 欧美日韩高清一区二区三区| 一区二区三区av电影| 精品视频在线免费| 亚洲国产成人tv| 欧美一级高清大全免费观看| 日韩精品亚洲专区| 久久午夜老司机| 国产一区二区三区最好精华液| 久久精品一区二区三区不卡牛牛| 韩日欧美一区二区三区| 日韩一区二区在线看片| 国精产品一区一区三区mba桃花| 制服丝袜亚洲色图| 国内成+人亚洲+欧美+综合在线| 精品久久人人做人人爱| 99久久久精品| 一区二区三区四区视频精品免费| 91精品久久久久久久99蜜桃| 美国毛片一区二区| 国产亚洲综合在线| 97se亚洲国产综合自在线不卡| 一区二区在线电影| 欧美人动与zoxxxx乱| 亚洲成人动漫一区| 久久久久久久久久久黄色| 亚洲黄色小说网站| 国产91精品免费| 日韩美女视频在线| 九九**精品视频免费播放| 国产一区二区在线观看免费| 国产一区二区免费看| 99在线视频精品| 日韩欧美在线综合网| 日韩一级二级三级精品视频| 91精品国产色综合久久ai换脸| 久久亚洲精品小早川怜子| 免费美女久久99| eeuss鲁片一区二区三区在线看| 国产三级精品在线| 一本久久a久久免费精品不卡| 久久草av在线| 亚洲人成网站影音先锋播放| 欧美成人伊人久久综合网| 国产精品一级在线| 免费观看在线综合色| 欧美国产日韩在线观看| 欧美videos大乳护士334| 成人av在线网| 紧缚奴在线一区二区三区| 国产精品久久三区| 日韩免费看的电影| 在线免费观看成人短视频| 美女在线观看视频一区二区| 亚洲一区中文在线| 精品国产乱码久久久久久免费| 欧美群妇大交群的观看方式| 成人性生交大片免费看中文网站| 韩国欧美国产一区| 一区二区三区四区亚洲| 中文字幕一区二区三区av| 日韩一区二区三区精品视频| 欧美亚洲一区二区三区四区| 国产成人精品一区二| 激情六月婷婷久久| 日本成人超碰在线观看| 中文成人综合网| 日韩欧美国产电影| 国产aⅴ精品一区二区三区色成熟| 亚洲高清在线视频| 国产精品久久三区| 国产精品久久久久久久蜜臀| 日韩欧美激情四射| 日韩一区二区在线免费观看| 欧美午夜精品久久久久久超碰 | 亚洲一区二区三区在线播放| 久久久亚洲精品一区二区三区| 欧美不卡一区二区| 欧美久久一二三四区| 91电影在线观看| 日精品一区二区三区| 蜜臀av一区二区| 国产精品久久久久一区二区三区| 不卡av电影在线播放| 人禽交欧美网站| 亚洲美女在线一区| 欧美精品一区在线观看| 色狠狠色噜噜噜综合网| 国产成人免费在线观看| 亚洲成人午夜影院| 一区二区三区精品| 午夜免费久久看| 96av麻豆蜜桃一区二区| 成人午夜又粗又硬又大| 天天色综合成人网| 丁香桃色午夜亚洲一区二区三区| 成人av电影免费观看| 免费观看在线综合| 国产亚洲污的网站| 欧美乱妇20p| 91精品国产色综合久久久蜜香臀| 日韩欧美高清dvd碟片| 日韩视频国产视频| 国产喷白浆一区二区三区| 中文文精品字幕一区二区| 精品一二三四区| 精品理论电影在线| 99久久免费视频.com| 91国产免费看| 精品视频123区在线观看| 欧美成va人片在线观看| 91精品一区二区三区久久久久久| 欧美高清dvd| 精品国产91亚洲一区二区三区婷婷| 中文在线免费一区三区高中清不卡| 国产欧美精品一区二区色综合朱莉| 亚洲人吸女人奶水| 亚洲国产成人tv| 国产精品电影院| 一区二区三区蜜桃网| 五月综合激情网| 久久草av在线| 99麻豆久久久国产精品免费优播| 欧美大胆人体bbbb| 中文字幕 久热精品 视频在线| 石原莉奈一区二区三区在线观看| 图片区日韩欧美亚洲| 99re66热这里只有精品3直播 | 337p粉嫩大胆噜噜噜噜噜91av| caoporn国产一区二区| 日韩电影在线观看一区| 国产天堂亚洲国产碰碰| 欧美色男人天堂| 色老头久久综合| 亚洲国产精品激情在线观看| 一区二区三区在线观看视频| 亚洲精品国产第一综合99久久| 亚洲午夜精品在线| 国产精品主播直播| 欧美久久久久中文字幕| 天天做天天摸天天爽国产一区| 国产一区二区三区日韩| 在线观看免费视频综合| 666欧美在线视频| 国产亚洲视频系列| 免费成人你懂的| 中文字幕欧美激情| 不卡视频一二三| 国产成人综合网站| 日韩三级视频在线观看| 中文字幕中文字幕中文字幕亚洲无线| 久久国产尿小便嘘嘘| 欧美综合欧美视频| 亚洲一区二区三区免费视频| 国产成人综合在线观看| 国产欧美一区二区精品性色| 性做久久久久久免费观看|