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

📄 tpbulk.lst

📁 51环境下的FAT及FAT32文件系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
  22      =2  #define SPC_CMD_REQUESTSENSE                            0x03
  23      =2  #define SPC_CMD_RESERVE6                                        0x16
  24      =2  #define SPC_CMD_TESTUNITREADY                           0x00
  25      =2  #define SPC_CMD_WRITEBUFFER                                     0x3B
  26      =2  #define SPC_CMD_READLONG                                        0x23
  27      =2  
  28      =2  
  29      =2  /*
  30      =2  // ATAPI Command Descriptor Block - 13 Bytes
  31      =2  */
  32      =2  
  33      =2  typedef struct _READ_10 {
  34      =2                  UINT8 OperationCode;
  35      =2                  UINT8 Reserved1;
  36      =2                  UINT8 LBA_3;
  37      =2                  UINT8 LBA_2;
  38      =2          UINT8 LBA_1;
  39      =2                  UINT8 LBA_0;
  40      =2                  UINT8 Reserved2;
  41      =2                  UINT8 XferLen_1;
  42      =2                  UINT8 XferLen_0;
  43      =2                  UINT8 Reserved3[3];
  44      =2  } READ_10, *pREAD_10;
  45      =2  
  46      =2  typedef struct _WRITE_10 {
  47      =2                  UINT8 OperationCode;
  48      =2                  UINT8 Reserved1;
  49      =2                  UINT8 LBA_3;
  50      =2                  UINT8 LBA_2;
  51      =2          UINT8 LBA_1;
  52      =2                  UINT8 LBA_0;
  53      =2                  UINT8 Reserved2;
C51 COMPILER V8.02   TPBULK                                                                09/19/2006 15:01:23 PAGE 11  

  54      =2                  UINT8 XferLen_1;
  55      =2                  UINT8 XferLen_0;
  56      =2                  UINT8 Reserved3[3];
  57      =2  } WRITE_10, *pWRITE_10;
  58      =2  
  59      =2  typedef struct _MODE_SENSE_10 {
  60      =2                  UINT8 OperationCode;
  61      =2                  UINT8 Reserved1;
  62      =2                  UINT8 PageCode : 6;
  63      =2                  UINT8 Pc : 2;
  64      =2                  UINT8 Reserved2[4];
  65      =2                  UINT8 ParameterListLengthMsb;
  66      =2                  UINT8 ParameterListLengthLsb;
  67      =2                  UINT8 Reserved3[3];
  68      =2  } MODE_SENSE_10, *pMODE_SENSE_10;
  69      =2  
  70      =2  typedef struct _MODE_SELECT_10 {
  71      =2                  UINT8 OperationCode;
  72      =2                  UINT8 Reserved1 : 4;
  73      =2                  UINT8 PFBit : 1;
  74      =2                  UINT8 Reserved2 : 3;
  75      =2                  UINT8 Reserved3[5];
  76      =2                  UINT8 ParameterListLengthMsb;
  77      =2                  UINT8 ParameterListLengthLsb;
  78      =2                  UINT8 Reserved4[3];
  79      =2  } MODE_SELECT_10, *pMODE_SELECT_10;
  80      =2  /*
  81      =2  ////////////////////////////////////////////////////////////////////////////////////
  82      =2  // Command Descriptor Block - max = 16 Bytes 
  83      =2  //      _RBC : Reduced Block Command               
  84      =2  //      _SPC : SPC-2 SCSI primary Command - 2
  85      =2  ////////////////////////////////////////////////////////////////////////////////////
  86      =2  */
  87      =2  
  88      =2  /*
  89      =2  // Generic
  90      =2  */
  91      =2  typedef struct _GENERIC_CDB {
  92      =2          UINT8 OperationCode;
  93      =2      UINT8 Reserved[15];
  94      =2  } GENERIC_CDB,*pGENERIC_CDB;
  95      =2  
  96      =2  typedef struct _GENERIC_RBC {
  97      =2          UINT8 OperationCode;
  98      =2      UINT8 Reserved[8];
  99      =2          UINT8 Control;
 100      =2  } GENERIC_RBC,*pGENERIC_RBC;
 101      =2  
 102      =2  /*
 103      =2  // format unit
 104      =2  */
 105      =2  typedef struct _FORMAT_RBC {
 106      =2          UINT8 OperationCode;    // 04H
 107      =2          UINT8 VendorSpecific;
 108      =2          UINT8 Increment : 1;
 109      =2          UINT8 PercentorTime : 1;
 110      =2          UINT8 Progress : 1;
 111      =2      UINT8 Immediate : 1;
 112      =2          UINT8 VendorSpecific1 : 4;
 113      =2          UINT8 Reserved2[2];
 114      =2          UINT8 Control;
 115      =2  } FORMAT_RBC, *pFORMAT_RBC;
C51 COMPILER V8.02   TPBULK                                                                09/19/2006 15:01:23 PAGE 12  

 116      =2  
 117      =2  
 118      =2  /*
 119      =2  // Read Command
 120      =2  */
 121      =2  typedef struct _READ_RBC {
 122      =2          UINT8 OperationCode;    // 10H
 123      =2          UINT8 VendorSpecific;
 124      =2          union{
 125      =2                  struct
 126      =2                  {
 127      =2                  UINT8 LBA_3;
 128      =2                  UINT8 LBA_2;
 129      =2                  UINT8 LBA_1;
 130      =2                  UINT8 LBA_0;
 131      =2                  } LBA_W8 ;
 132      =2  
 133      =2                  UINT32 LBA_W32;
 134      =2                }LBA;
 135      =2          UINT8 Reserved;
 136      =2          //UINT8 XferLength_1;
 137      =2          //UINT8 XferLength_0;
 138      =2          UINT16 XferLength;
 139      =2          UINT8 Control;
 140      =2          //UINT8 Reserved1[3];
 141      =2  } READ_RBC, *pREAD_RBC;
 142      =2  
 143      =2  
 144      =2  /*
 145      =2  // Read Capacity Data - returned in Big Endian format
 146      =2  */
 147      =2  typedef struct _READ_CAPACITY_DATA {
 148      =2  
 149      =2      UINT8 LBA_3;
 150      =2      UINT8 LBA_2;
 151      =2      UINT8 LBA_1;
 152      =2      UINT8 LBA_0;
 153      =2  
 154      =2      UINT8 BlockLen_3;
 155      =2      UINT8 BlockLen_2;
 156      =2      UINT8 BlockLen_1;
 157      =2      UINT8 BlockLen_0;
 158      =2  } READ_CAPACITY_DATA, *pREAD_CAPACITY_DATA;
 159      =2  //////////////////////////////////////////////////
 160      =2  typedef struct _READ_LONG_CMD{
 161      =2      UINT8 OperationCode;
 162      =2      UINT8 LogicalUnitNum        :3;
 163      =2      UINT8 RES_1         :5;
 164      =2      UINT8 RES_2;
 165      =2      UINT8 RES_3;
 166      =2      UINT8 RES_4;
 167      =2      UINT8 RES_5;
 168      =2      UINT8 RES_6;
 169      =2      UINT16 AllocationLen;
 170      =2      UINT8 RES_7;
 171      =2      UINT8 RES_8;
 172      =2      UINT8 RES_9;
 173      =2  }READ_LONG_CMD, *pREAD_LONG_CMD;
 174      =2  
 175      =2  typedef struct _READ_LONG {
 176      =2  
 177      =2      UINT8 RES_1;
C51 COMPILER V8.02   TPBULK                                                                09/19/2006 15:01:23 PAGE 13  

 178      =2      UINT8 RES_2;
 179      =2      UINT8 RES_3;
 180      =2      UINT8 CAP_LIST_LEN;
 181      =2      
 182      =2      UINT8 LBA_3;
 183      =2      UINT8 LBA_2;
 184      =2      UINT8 LBA_1;
 185      =2      UINT8 LBA_0;
 186      =2  
 187      =2      UINT8 Descripter;
 188      =2      UINT8 BlockLen_2;
 189      =2      UINT8 BlockLen_1;
 190      =2      UINT8 BlockLen_0;
 191      =2  } READ_LONG, *pREAD_LONG;
 192      =2  /*
 193      =2  // Read Capacity command
 194      =2  */
 195      =2  typedef struct _READ_CAPACITY_RBC {
 196      =2          UINT8                OperationCode;     /* 10H */
 197      =2          union  {
 198      =2                          FLEXI_INT32                     l0[2];
 199      =2                  UINT32               l[2];
 200      =2                  READ_CAPACITY_DATA  CapData;       /* Reserved area, here is used as temp*/
 201      =2                  } tmpVar;
 202      =2  
 203      =2          UINT8                Control;
 204      =2  } READ_CAPACITY_RBC, *pREAD_CAPACITY_RBC;
 205      =2  
 206      =2  typedef struct _READ_CAPACITY_RSP {
 207      =2          UINT32 LastLBA;
 208      =2          UINT32 BlockSize;
 209      =2  
 210      =2  } READ_CAPACITY_RSP, *pREAD_CAPACITY_RSP;
 211      =2  /*
 212      =2  // START_STOP_UNIT
 213      =2  */
 214      =2  typedef struct _START_STOP_RBC {
 215      =2      UINT8 OperationCode;    /*1BH*/
 216      =2      UINT8 Immediate: 1;
 217      =2      UINT8 Reserved1 : 7;
 218      =2      UINT8 Reserved2[2];
 219      =2          union _START_STOP_FLAGS
 220      =2      {
 221      =2          struct
 222      =2          {
 223      =2              UINT8 Start          : 1;
 224      =2              UINT8 LoadEject      : 1;
 225      =2              UINT8 Reserved3      : 2;
 226      =2              UINT8 PowerConditions: 4;
 227      =2          } bits0;
 228      =2  
 229      =2          struct
 230      =2          {
 231      =2              UINT8 MediumState    : 2;
 232      =2              UINT8 Reserved3      : 2;
 233      =2              UINT8 PowerConditions: 4;
 234      =2          } bits1;
 235      =2      } Flags;
 236      =2      UINT8 Control;
 237      =2  } START_STOP_RBC, *pSTART_STOP_RBC;
 238      =2  
 239      =2  /*
C51 COMPILER V8.02   TPBULK                                                                09/19/2006 15:01:23 PAGE 14  

 240      =2  // Synchronize Cache
 241      =2  */
 242      =2  
 243      =2  typedef struct _SYNCHRONIZE_CACHE_RBC {
 244      =2  
 245      =2          UINT8 OperationCode;    // 0x35
 246      =2          UINT8 Reserved[8];
 247      =2          UINT8 Control;
 248      =2  
 249      =2  } SYNCHRONIZE_CACHE_RBC, *pSYNCHRONIZE_CACHE_RBC;
 250      =2  
 251      =2  /*
 252      =2  // Write Command
 253      =2  */
 254      =2  typedef struct _WRITE_RBC {
 255      =2      UINT8 OperationCode;        // 2AH
 256      =2      //UINT8 Reserved0 : 3;
 257      =2      //UINT8 FUA : 1;
 258      =2      //UINT8 Reserved1 : 4;
 259      =2      UINT8 VendorSpecific;
 260      =2      union{
 261      =2           struct
 262      =2           {
 263      =2                  UINT8 LBA_3;
 264      =2                  UINT8 LBA_2;
 265      =2                  UINT8 LBA_1;
 266      =2                  UINT8 LBA_0;
 267      =2            } LBA_W8 ;
 268      =2  
 269      =2           UINT32 LBA_W32;
 270      =2          }   LBA;
 271      =2      UINT8 Reserved2;
 272      =2      UINT16 XferLength;
 273      =2      UINT8 Control;
 274      =2  } WRITE_RBC, *pWRITE_RBC;
 275      =2  
 276      =2  /*
 277      =2  // VERIFY Command
 278      =2  */
 279      =2  typedef struct _VERIFY_RBC {
 280      =2      UINT8 OperationCode;        // 2FH
 281      =2      UINT8 Reserved0;
 282      =2          UINT8 LBA_3;                    // Big Endian
 283      =2          UINT8 LBA_2;
 284      =2          UINT8 LBA_1;
 285      =2          UINT8 LBA_0;
 286      =2          UINT8 Reserved1;
 287      =2      UINT8 VerifyLength_1;               // Big Endian
 288      =2          UINT8 VerifyLength_0;
 289      =2          UINT8 Control;
 290      =2  } VERIFY_RBC, *pVERIFY_RBC;
 291      =2  
 292      =2  
 293      =2  /*
 294      =2  //***********************************************************************************
 295      =2  // SPC-2 of SCSI-3 commands
 296      =2  //***********************************************************************************
 297      =2  */
 298      =2  
 299      =2  /*
 300      =2  // INQUIRY Command
 301      =2  */
C51 COMPILER V8.02   TPBULK                                                                09/19/2006 15:01:23 PAGE 15  

 302      =2  typedef struct _INQUIRY_SPC {
 303      =2          UINT8 OperationCode;    // 12H
 304      =2          UINT8 EnableVPD:1 ;
 305      =2      UINT8 CmdSupportData:1 ;
 306      =2          UINT8 Reserved0:6 ;
 307      =2          UINT8 PageCode;
 308      =2          UINT8 Reserved1;
 309      =2          UINT8 AllocationLen;
 310      =2      UINT8 Control;
 311      =2  } INQUIRY_SPC, *pINQUIRY_SPC;
 312      =2  
 313      =2  /*
 314      =2  typedef struct _STD_INQUIRYDATA {
 315      =2      UINT8 DeviceType : 5;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -