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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ide.lst

?? HIGH_SPEED_USB_To_ATA(IDE)Firmware相關(guān)代碼(EZ USB FX2芯片)
?? LST
?? 第 1 頁 / 共 5 頁
字號:
C51 COMPILER V7.50   IDE                                                                   11/07/2006 14:52:09 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE IDE
OBJECT MODULE PLACED IN ide.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE ide.c ROM(COMPACT) OPTIMIZE(9,SPEED) REGFILE(.\fx2_ata.ORC) BROWSE ORDER IN
                    -CDIR(c:\cypress\usb\target\inc) DEFINE(GPIF=0,FLASH=0,DEVICE_TYPE_IS_SCSI=1,DEVICE_TYPE_IS_IDE=1,VBUS_DETECT=1) DEBUG OB
                    -JECTEXTEND CODE

line level    source

   1          //-----------------------------------------------------------------------------
   2          //  Copyright (c) 1999 Cypress Semiconductor, Inc. All rights reserved
   3          //-----------------------------------------------------------------------------
   4          //
   5          // This file contains the IDE specific portions of the code.  In ATAPI
   6          // or SCSI applications, this file should not be needed.
   7          //
   8          // $Archive: /USB/atapifx2/software/ide.c $
   9          // $Date: 1/23/02 9:35a $
  10          // $Revision: 53 $
  11          //-----------------------------------------------------------------------------
  12          #include "Fx2.h"
  13          #include "Fx2regs.h"
  14          #include "gpif.h"
  15          #include "scsi.h"
  16          
  17          static bit ideReadCommand(bit verify);
  18          static bit ideWriteCommand();
  19          bit ideUdmaWriteCommand();
  20          static void IDEnop();
  21          static bit checkForMedia();
  22          static DWORD dwLBA;     // This is global to help the optimizer
  23          void dwLBAtoLBARegs();      // Stuff the LBA registers
  24          
  25          
  26          // From SCSI spec SPC (SCSI primary commands)
  27          // Byte 0 -- 70 = Current error
  28          // Byte 1 -- Segment number
  29          // Byte 2 -- Sense key
  30          // Byte 3-6 -- Information (not used)
  31          // Byte 7 -- add'l sense length 
  32          // byte 8-11 -- Command specific information
  33          // byte 12 -- ASC (Add'l sense code)
  34          // byte 13 -- ASQ (Add'l sense qualifier)
  35          //                                                       Key                                              
             -           ASC   ASQ
  36          //                                             0     1     2     3     4     5     6     7     8     9    
             -10    11    12    13    14    15
  37          const char code senseCRCError[] =          {0x70, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x
             -00, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x00};   
  38          const char code senseInvalidFieldInCDB[] = {0x70, 0x00, 0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x
             -00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00};   
  39          const char code senseOk[] =                {0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x
             -00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};   
  40          char code * sensePtr;
  41          
  42          extern char NumCylindersMSB; // global #Cyl MSB
  43          extern char NumCylindersLSB; // global #Cyl LSB
  44          extern char NumHeads;        // global #Heads
  45          extern char NumSectPerTrack; // global #SectorsPerTrack
  46          
  47          /////////////////////////////////////////////////////////////////////////////////
  48          #if DEVICE_TYPE_IS_IDE
C51 COMPILER V7.50   IDE                                                                   11/07/2006 14:52:09 PAGE 2   

  49          /////////////////////////////////////////////////////////////////////////////////
  50          
  51          
  52          bit generalIDEInCommand()
  53          {
  54   1         BYTE cmd;
  55   1         WORD packetLen;
  56   1         bit status;
  57   1         
  58   1         cmd = EP2FIFOBUF[0xf];  
  59   1         
  60   1         switch (cmd)
  61   1         {
  62   2            // Minimum processing for a case in this switch statement:
  63   2            case INQUIRY:
  64   2            {
  65   3               sensePtr = senseOk;
  66   3               packetLen = min(dataTransferLen, (WORD) sizeof(SCSIInquiryData));
  67   3               
  68   3               // relinquish control of the bulk buffer occupied by the CBW
  69   3               EP2BCL = 0x80;     
  70   3      
  71   3               // Send out our stored inquiry data
  72   3               waitForInBuffer();
  73   3               mymemmovexx(EP8FIFOBUF, SCSIInquiryData_, packetLen);   // NOTE: may not be needed anymore since 
             -FIFO in AUTOIN 
  74   3               
  75   3               if (packetLen)
  76   3               {
  77   4                  EP8BCH = MSB(packetLen);
  78   4                  EP8BCL = LSB(packetLen);
  79   4               
  80   4                  dataTransferLen -= packetLen;
  81   4               }
  82   3               
  83   3               return(USBS_PASSED);
  84   3            }
  85   2                  
  86   2            case READ_10:
  87   2            {
  88   3               sensePtr = senseOk;
  89   3               checkForMedia();
  90   3      
  91   3               if (sensePtr == senseOk)
  92   3               {
  93   4                  return(ideReadCommand(0));   
  94   4               }
  95   3               else
  96   3               {
  97   4                  // relinquish control of the bulk buffer occupied by the CBW
  98   4                  EP2BCL = 0x80;     
  99   4                  
 100   4                  failedIn();         
 101   4                  return(USBS_FAILED);
 102   4               }
 103   3            }
 104   2                      
 105   2            case VERIFY_10:
 106   2            {
 107   3               sensePtr = senseOk;
 108   3               checkForMedia();
 109   3               if (sensePtr == senseOk)
C51 COMPILER V7.50   IDE                                                                   11/07/2006 14:52:09 PAGE 3   

 110   3                  return(ideReadCommand(1));   // ideReadCommand sets the OUT2BC = 0
 111   3               else
 112   3               {
 113   4                  // relinquish control of the bulk buffer occupied by the CBW
 114   4                  EP2BCL = 0x80;     
 115   4                  
 116   4                  failedIn();         
 117   4                  return(USBS_FAILED);
 118   4               }
 119   3            }            
 120   2            case SEEK_10:
 121   2            {
 122   3               sensePtr = senseOk;
 123   3               checkForMedia();
 124   3      
 125   3               // relinquish control of the bulk buffer occupied by the CBW
 126   3               EP2BCL = 0x80;     
 127   3                  
 128   3               if (sensePtr == senseOk)
 129   3               {
 130   4                  return(USBS_PASSED);
 131   4               }
 132   3               else
 133   3               {
 134   4                  failedIn();         
 135   4                  return(USBS_FAILED);
 136   4               }
 137   3            }                
 138   2      
 139   2            case READ_FORMAT_CAPACITIES:
 140   2            case READ_CAPACITY:
 141   2            {
 142   3               BYTE cap_hdr_offset = 0;
 143   3               BYTE num_dwords = 2;
 144   3      
 145   3               // relinquish control of the bulk buffer occupied by the CBW
 146   3               EP2BCL = 0x80;     
 147   3               
 148   3               sensePtr = senseOk;
 149   3               checkForMedia();
 150   3                       
 151   3               waitForInBuffer();
 152   3               if (sensePtr == senseOk)
 153   3               {
 154   4                  if(cmd == READ_FORMAT_CAPACITIES) // add 4 byte capacity list header
 155   4                  {
 156   5                     EP8FIFOBUF[0] = 0x0;
 157   5                     EP8FIFOBUF[1] = 0x0;
 158   5                     EP8FIFOBUF[2] = 0x0;
 159   5                     EP8FIFOBUF[3] = 0x08;
 160   5                     cap_hdr_offset = 4;
 161   5                     num_dwords = 3;
 162   5                  }
 163   4                  EP8FIFOBUF[0+cap_hdr_offset] = ((BYTE *) &driveCapacity)[0];
 164   4                  EP8FIFOBUF[1+cap_hdr_offset] = ((BYTE *) &driveCapacity)[1];
 165   4                  EP8FIFOBUF[2+cap_hdr_offset] = ((BYTE *) &driveCapacity)[2];
 166   4                  EP8FIFOBUF[3+cap_hdr_offset] = ((BYTE *) &driveCapacity)[3];
 167   4                  EP8FIFOBUF[4+cap_hdr_offset] = (ATA_SECTOR_SIZE >> 24) & 0xff;
 168   4                  EP8FIFOBUF[5+cap_hdr_offset] = (ATA_SECTOR_SIZE >> 16) & 0xff;
 169   4                  EP8FIFOBUF[7+cap_hdr_offset] = (ATA_SECTOR_SIZE >>  0) & 0xff;
 170   4                  EP8FIFOBUF[6+cap_hdr_offset] = (ATA_SECTOR_SIZE >>  8) & 0xff;
 171   4                  
C51 COMPILER V7.50   IDE                                                                   11/07/2006 14:52:09 PAGE 4   

 172   4                  packetLen = min(sizeof(DWORD) * num_dwords, dataTransferLen);
 173   4                  if (packetLen)
 174   4                  {
 175   5                     EP8BCH = MSB(packetLen);
 176   5                     EP8BCL = LSB(packetLen);
 177   5                     dataTransferLen -= packetLen;
 178   5                  }
 179   4                  status = USBS_PASSED;
 180   4               }
 181   3               else
 182   3               {
 183   4                  failedIn();
 184   4                  status = USBS_FAILED;
 185   4               }
 186   3      
 187   3               return(status);
 188   3            }
 189   2      
 190   2            case TEST_UNIT_READY:
 191   2            case PREVENT_ALLOW_MEDIUM_REMOVAL:
 192   2            {
 193   3            // relinquish control of the bulk buffer occupied by the CBW
 194   3               EP2BCL = 0x80;     
 195   3               
 196   3               if (dataTransferLen)    // This command shouldn't have any data!
 197   3                  failedIn();         
 198   3               
 199   3               checkForMedia();
 200   3               
 201   3               if (sensePtr == senseOk)
 202   3                  return(USBS_PASSED);
 203   3               else
 204   3                  return(USBS_FAILED);
 205   3            }                
 206   2            case REQUEST_SENSE:
 207   2            {
 208   3               // relinquish control of the bulk buffer occupied by the CBW
 209   3               EP2BCL = 0x80;     
 210   3         
 211   3               waitForInBuffer();
 212   3      
 213   3               mymemmovexx(EP8FIFOBUF, (char xdata *) sensePtr, sizeof(senseOk));
 214   3      
 215   3               packetLen = min(sizeof(senseOk), dataTransferLen);   
 216   3               if (packetLen)
 217   3               {
 218   4                  EP8BCH = MSB(packetLen);
 219   4                  EP8BCL = LSB(packetLen);
 220   4      
 221   4                  dataTransferLen -= packetLen;
 222   4               }
 223   3               sensePtr = senseOk;
 224   3               return(USBS_PASSED);
 225   3            }
 226   2      
 227   2            case MODE_SENSE_10:
 228   2            {               
 229   3               BYTE pagenum;
 230   3               
 231   3               pagenum = EP2FIFOBUF[CBW_DATA_START+2] & 0x3F; // identify page (see p.141 SCSI 2ed.)
 232   3         
 233   3               EP2BCL = 0x80; // relinquish control of the bulk buffer occupied by the CBW
C51 COMPILER V7.50   IDE                                                                   11/07/2006 14:52:09 PAGE 5   

 234   3               
 235   3               waitForInBuffer();
 236   3               
 237   3               if((pagenum != 0x05) && (pagenum != 0x3F)
 238   3                   && (pagenum != 0x01) && (pagenum != 0x08) && (pagenum != 0x1B))
 239   3               { // only respond to requests for certain pages (the mandatory ones plus page 5)
 240   4                  sensePtr = senseInvalidFieldInCDB;
 241   4                  failedIn();
 242   4                  return(USBS_FAILED);
 243   4               }
 244   3         
 245   3               // If one of the supported pages is requested, return the 8 byte Mode Parameter Header
 246   3               // plus a single 12 byte page. Only the Mode Data length (LSB) is significant in the
 247   3               // Mode Parameter Header. It has a Vendor Specific Medium Type Code in byte 2, and
 248   3               // a 1 bit WP Write Protect bit in byte 3 that are not initialized here.
 249   3               // Pages 0x01, and 0x08 do not have significant data - they are spoofed.
 250   3               // Page 0x1B has a TLUN field in byte 3 that is initialized to 1 (as per ISD).
 251   3               // Page 0x05 does contain information that is needed to boot to HDD and CDROM.

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一级在线观看| 日韩国产欧美一区二区三区| 国产精品色眯眯| 国产欧美一区二区三区网站| 久久久久久夜精品精品免费| 久久综合久久综合久久| 国产亚洲人成网站| 国产亚洲精品久| 国产清纯在线一区二区www| 国产午夜精品一区二区| 国产午夜亚洲精品午夜鲁丝片| 国产视频不卡一区| 亚洲欧洲一区二区在线播放| 亚洲欧美色综合| 亚洲一二三四区不卡| 天天综合天天综合色| 免费成人性网站| 国产在线国偷精品产拍免费yy| 国产乱码精品1区2区3区| 国产mv日韩mv欧美| 99久久精品国产观看| 欧美私人免费视频| 日韩欧美在线综合网| 国产欧美一区二区三区网站| 亚洲色图欧洲色图婷婷| 丝瓜av网站精品一区二区| 久久国产成人午夜av影院| 国产精品资源在线看| 99久久国产综合精品麻豆| 欧美日韩一区在线观看| 日韩欧美一级二级三级久久久| 久久久国产精品午夜一区ai换脸| 国产精品美女一区二区三区| 亚洲一区二区视频在线| 免费高清在线一区| 成人开心网精品视频| 欧美日韩色综合| 久久蜜桃一区二区| 伊人婷婷欧美激情| 久久99久久久久| 成人精品高清在线| 欧美裸体一区二区三区| 国产亚洲综合色| 亚洲成年人影院| 国产一区二区三区四区五区入口| 成人av影视在线观看| 欧美区一区二区三区| 久久久午夜电影| 洋洋av久久久久久久一区| 九色|91porny| 色欧美片视频在线观看在线视频| 日韩网站在线看片你懂的| 一色桃子久久精品亚洲| 奇米一区二区三区av| 成人av在线网站| 日韩美女在线视频| 一区二区三区成人| 国产一区二区三区视频在线播放| 在线看国产一区| 久久精品视频一区二区| 午夜视频一区二区三区| 大胆亚洲人体视频| 日韩一区二区三区视频在线观看 | 国产日韩精品一区| 亚洲国产精品久久艾草纯爱| 国产98色在线|日韩| 欧美丰满嫩嫩电影| 亚洲精品久久久久久国产精华液| 久久99久久99精品免视看婷婷 | 国产精品免费丝袜| 久久国产夜色精品鲁鲁99| 91九色最新地址| 国产午夜精品福利| 免费视频一区二区| 欧美在线观看你懂的| 国产精品美女一区二区| 国内成+人亚洲+欧美+综合在线| 欧美日韩色综合| 亚洲精品亚洲人成人网在线播放| 成人综合激情网| 精品处破学生在线二十三| 婷婷国产v国产偷v亚洲高清| 91亚洲精品一区二区乱码| 久久久久久久久久电影| 捆绑变态av一区二区三区| 欧美日韩一二区| 亚洲国产精品久久久男人的天堂| 成年人午夜久久久| 久久久久青草大香线综合精品| 麻豆91免费观看| 日韩一区二区在线免费观看| 日韩成人dvd| 欧美精选一区二区| 天天综合日日夜夜精品| 欧美日韩免费一区二区三区视频| 亚洲黄色av一区| 色婷婷亚洲一区二区三区| 日韩毛片一二三区| 色综合中文字幕国产| 国产丝袜欧美中文另类| 国产成人高清在线| 国产欧美视频一区二区三区| 国产成人aaaa| 中文字幕国产一区| 成人免费毛片片v| 国产精品视频第一区| 东方欧美亚洲色图在线| 中文字幕一区二区在线观看| 成人黄色a**站在线观看| 国产精品久久久久久久裸模| thepron国产精品| 亚洲人亚洲人成电影网站色| 91麻豆高清视频| 亚洲一区二区不卡免费| 欧美三级蜜桃2在线观看| 亚洲第一福利一区| 欧美一区二区高清| 极品美女销魂一区二区三区免费 | 亚洲一区在线看| 欧美精品一卡二卡| 捆绑紧缚一区二区三区视频| 久久嫩草精品久久久精品| hitomi一区二区三区精品| 亚洲同性gay激情无套| 欧美日韩一区二区三区不卡| 日本不卡一二三| 久久免费视频一区| 91丨porny丨中文| 午夜私人影院久久久久| 日韩精品一区二区三区三区免费 | 精品国产伦一区二区三区观看体验 | 欧美性猛片xxxx免费看久爱| 五月激情综合色| 久久综合av免费| 91玉足脚交白嫩脚丫在线播放| 舔着乳尖日韩一区| 久久九九99视频| 91在线一区二区三区| 天天综合网 天天综合色| 国产午夜精品久久久久久免费视| 一本大道久久精品懂色aⅴ| 日韩福利视频导航| 亚洲国产精品激情在线观看| 日本高清不卡在线观看| 美女www一区二区| 国产精品久久久久影院色老大| 在线一区二区三区四区五区| 久久精品二区亚洲w码| 亚洲视频在线观看一区| 日韩欧美久久一区| 91在线视频官网| 免费成人在线播放| 亚洲免费成人av| 精品sm捆绑视频| 欧美亚男人的天堂| 国产精品亚洲а∨天堂免在线| 亚洲精品日产精品乱码不卡| 精品99一区二区三区| 欧美日韩在线精品一区二区三区激情| 国产一区二区福利| 亚洲aaa精品| 国产精品传媒视频| 日韩精品专区在线影院重磅| 色噜噜狠狠色综合欧洲selulu| 精品一区二区三区在线观看| 亚洲欧美偷拍卡通变态| 精品国产乱码91久久久久久网站| 96av麻豆蜜桃一区二区| 九九九久久久精品| 午夜精品久久久| 一区二区三区中文在线| 国产欧美一区二区精品性| 日韩三级.com| 欧美欧美欧美欧美首页| 99riav一区二区三区| 国产乱码字幕精品高清av| 午夜在线电影亚洲一区| 亚洲欧美日韩一区二区三区在线观看| 久久综合狠狠综合久久激情| 欧美一区日韩一区| 精品视频色一区| 日本丰满少妇一区二区三区| 成人激情电影免费在线观看| 精品亚洲国内自在自线福利| 日日摸夜夜添夜夜添精品视频| 亚洲欧美韩国综合色| 国产精品色婷婷| 欧美激情一区二区三区四区 | 久久99久久99| 免费看黄色91| 日韩电影一二三区| 亚洲国产一区在线观看| 亚洲欧美偷拍另类a∨色屁股| 欧美国产精品专区| 国产亚洲欧美激情| 久久青草欧美一区二区三区| 久久午夜电影网| 国产亚洲成av人在线观看导航 | 日韩精品一二区| 婷婷综合五月天|