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

📄 fat32.lst

📁 51环境下的FAT及FAT32文件系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
  50      =2                  UINT8 LBA_2;
  51      =2          UINT8 LBA_1;
  52      =2                  UINT8 LBA_0;
  53      =2                  UINT8 Reserved2;
  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;
C51 COMPILER V8.02   FAT32                                                                 09/19/2006 15:01:23 PAGE 11  

  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;
 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;
C51 COMPILER V8.02   FAT32                                                                 09/19/2006 15:01:23 PAGE 12  

 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;
 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;
C51 COMPILER V8.02   FAT32                                                                 09/19/2006 15:01:23 PAGE 13  

 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  /*
 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;
C51 COMPILER V8.02   FAT32                                                                 09/19/2006 15:01:23 PAGE 14  

 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  */
 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;
 316      =2      UINT8 Reserved0 : 3;
 317      =2  
 318      =2      UINT8 Reserved1 : 7;
 319      =2      UINT8 RemovableMedia : 1;
 320      =2  
 321      =2      UINT8 Reserved2;
 322      =2  
 323      =2      UINT8 Reserved3 : 5;
 324      =2      UINT8 NormACA : 1;
 325      =2      UINT8 Obsolete0 : 1;
C51 COMPILER V8.02   FAT32                                                                 09/19/2006 15:01:23 PAGE 15  

 326      =2      UINT8 AERC : 1;
 327      =2  
 328      =2      UINT8 Reserved4[3];
 329      =2  
 330      =2      UINT8 SoftReset : 1;
 331      =2      UINT8 CommandQueue : 1;
 332      =2          UINT8 Reserved5 : 1;
 333      =2          UINT8 LinkedCommands : 1;
 334      =2          UINT8 Synchronous : 1;
 335      =2          UINT8 Wide16Bit : 1;
 336      =2          UINT8 Wide32Bit : 1;
 337      =2          UINT8 RelativeAddressing : 1;
 338      =2  
 339      =2          UINT8 VendorId[8];
 340      =2  
 341      =2          UINT8 ProductId[16];
 342      =2  
 343      =2          UINT8 ProductRevisionLevel[4];
 344      =2  
 345      =2  //  Above is 36 bytes

⌨️ 快捷键说明

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