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

📄 test.lst

📁 51环境下的FAT及FAT32文件系统源码
💻 LST
📖 第 1 页 / 共 5 页
字号:
 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;
 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;
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 16  

 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;
 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;
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 17  

 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
 346      =2  //  can be tranmitted by Bulk
 347      =2  
 348      =2      UINT8 VendorSpecific[20];
 349      =2      UINT8 InfoUnitSupport : 1;
 350      =2      UINT8 QuickArbitSupport : 1;
 351      =2      UINT8 Clocking : 2;
 352      =2      UINT8 Reserved6 : 4;
 353      =2  
 354      =2      UINT8  Reserved7 ;
 355      =2      UINT16 VersionDescriptor[8] ;
 356      =2  
 357      =2      UINT8 Reserved8[22];
 358      =2  } STD_INQUIRYDATA, *pSTD_INQUIRYDATA;
 359      =2  */
 360      =2  
 361      =2  /*
 362      =2  typedef struct _SERIALNUMBER_PAGE {
 363      =2      UINT8 DeviceType : 5;
 364      =2      UINT8 DeviceTypeQualifier : 3;
 365      =2  
 366      =2      UINT8 PageCode ;
 367      =2      UINT8 Reserved0 ;
 368      =2  
 369      =2      UINT8 PageLength ;
 370      =2      UINT8 SerialNumber[24] ;
 371      =2  
 372      =2  }VPD_SERIAL_PAGE,*pVPD_SERIAL_PAGE;
 373      =2  */
 374      =2  /*
 375      =2  #define ASCII_ID_STRING 32
 376      =2  typedef struct _ID_DESCRIPTOR {
 377      =2          UINT8   CodeSet : 4;
 378      =2          UINT8   Reserved0 : 4;
 379      =2  
 380      =2          UINT8   IDType : 4;
 381      =2      UINT8   Association : 2;
 382      =2      UINT8   Reserved1 : 2;
 383      =2  
 384      =2      UINT8   Reserved2;
 385      =2  
 386      =2          UINT8   IDLength ;
 387      =2          UINT8   AsciiID[ASCII_ID_STRING];
 388      =2  } ASCII_ID_DESCRIPTOR,*pASCII_ID_DESCRIPTOR;
 389      =2  */
 390      =2  /*
 391      =2  typedef struct _DEVICE_ID_PAGE
 392      =2  {
 393      =2      UINT8 DeviceType : 5;
 394      =2      UINT8 DeviceTypeQualifier : 3;
 395      =2  
 396      =2      UINT8 PageCode ;
 397      =2      UINT8 Reserved0 ;
 398      =2  
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 18  

 399      =2      UINT8 PageLength ;
 400      =2  
 401      =2      ASCII_ID_DESCRIPTOR   AsciiIdDescriptor[1];
 402      =2  } VPD_DEVICE_ID_PAGE, *pVPD_DEVICE_ID_PAGE;
 403      =2  */
 404      =2  /*
 405      =2  // Mode Select
 406      =2  */
 407      =2  typedef struct _MODE_SELECT_SPC {
 408      =2          UINT8 OperationCode;    // 15H
 409      =2          UINT8 SavePage : 1 ;
 410      =2          UINT8 Reseved0 : 3 ;
 411      =2          UINT8 PageFormat : 1 ;
 412      =2          UINT8 Reserved1 : 3 ;
 413      =2          UINT8 Reserved2[2];
 414      =2          UINT8 ParameterLen;
 415      =2          UINT8 Control;
 416      =2  } MODE_SELECT_SPC, *pMODE_SELECT_SPC;
 417      =2  
 418      =2  typedef struct _MBR_BLOCK {
 419      =2    UINT8 Res[454];
 420      =2    unsigned long StartSector;
 421      =2    unsigned long TotalSector;
 422      =2    UINT8 Res1[50];
 423      =2  } MBR_BLOCK,*pMBR_BLOCK;
 424      =2  
 425      =2  typedef struct _BPB_BLOCK {
 426      =2    UINT8 BS_jmpBoo[3];
 427      =2    UINT8 BS_OEMName[8];
 428      =2    UINT16 BPB_BytesPerSec;
 429      =2    UINT8 BPB_SecPerClus;
 430      =2    UINT16 BPB_RsvdSecCnt;
 431      =2    UINT8 BPB_NumFATs;
 432      =2    UINT16 BPB_RootEntCnt;
 433      =2    UINT16 BPB_TotSec16;
 434      =2    UINT8 BPB_Media;
 435      =2    UINT16 BPB_FATSz16;
 436      =2    UINT16 BPB_SecPerTrk;
 437      =2    UINT16 BPB_NumHeads;
 438      =2    unsigned long BPB_HiddSec;
 439      =2    unsigned long BPB_TotSec32;
 440      =2    UINT8 BS_DrvNum;
 441      =2    UINT8 BS_Reserved1;
 442      =2    UINT8 BS_BootSig;
 443      =2    UINT8 BS_VolID[4];
 444      =2    UINT8 BS_VolLab[11];
 445      =2    UINT8 BS_FilSysType[8];
 446      =2    UINT8 ExecutableCode[448];
 447      =2    UINT8 Marker[2];
 448      =2  } BPB_BLOCK,*pBPB_BLOCK;
 449      =2  
 450      =2  typedef struct _BPB_BLOCK32 {
 451      =2    UINT8 BS_jmpBoo[3];
 452      =2    UINT8 BS_OEMName[8];
 453      =2    UINT16 BPB_BytesPerSec;
 454      =2    UINT8 BPB_SecPerClus;
 455      =2    UINT16 BPB_RsvdSecCnt;
 456      =2    UINT8 BPB_NumFATs;
 457      =2    UINT16 BPB_RootEntCnt;
 458      =2    UINT16 BPB_TotSec16;
 459      =2    UINT8 BPB_Media;
 460      =2    UINT16 BPB_FATSz16;
C51 COMPILER V8.02   TEST                                                                  09/19/2006 15:01:22 PAGE 19  

 461      =2    UINT16 BPB_SecPerTrk;
 462      =2    UINT16 BPB_NumHeads;
 463      =2    unsigned long BPB_HiddSec;
 464      =2    unsigned long BPB_TotSec32;
 465      =2    UINT32 BPB_FATSz32;
 466      =2    UINT16 BPB_ExtFlags;
 467      =2    UINT16 BPB_FSVer;
 468      =2    UINT32 BPB_RootClus;
 469      =2    UINT16 BPB_FSInfo;
 470      =2    UINT16 BPB_BkBootSec;
 471      =2    UINT8  BPB_Reserved[12];
 472      =2    UINT8  BS_DrvNum;
 473      =2    UINT8  BS_Reserved1;
 474      =2    UINT8  BS_BootSig;
 475      =2    UINT32 BS_VolID;
 476      =2    UINT8  BS_VolLab[11];
 477      =2    UINT8  BS_FilSysType[8];
 478      =2  
 479      =2  } BPB_BLOCK32,*pBPB_BLOCK32;
 480      =2  
 481      =2  typedef struct _SYS_INFO_BLOCK{
 482      =2    unsigned long StartSector;
 483      =2    unsigned long TotalSector;
 484      =2    //UINT8 BS_jmpBoo[3];
 485      =2    //UINT8 BS_OEMName[8];
 486      =2    UINT16 BPB_BytesPerSec;
 487      =2    UINT8 BPB_SecPerClus;
 488      =2    //UINT8 BPB_RsvdSecCn[2];
 489      =2    UINT8 BPB_NumFATs;
 490      =2    UINT16 BPB_RootEntCnt;
 491      =2    UINT16 BPB_TotSec16;
 492      =2    UINT8 BPB_Media;
 493      =2    UINT16 BPB_FATSz16;
 494      =2    UINT32 BPB_FATSz32;
 495      =2    UINT16 BPB_SecPerTrk;
 496      =2    UINT16 BPB_NumHeads;
 497      =2    unsigned long BPB_HiddSec;
 498      =2    unsigned long BPB_TotSec32;
 499      =2    UINT8 BS_DrvNum;
 500      =2    //UINT8 BS_Reserved1;
 501      =2    UINT8 BS_BootSig;
 502      =2    UINT8 BS_VolID[4];
 503      =2    UINT8 BS_VolLab[11];
 504      =2    UINT8 BS_FilSysType[8];
 505      =2    //UINT8 ExecutableCode[448];
 506      =2    //UINT8 Marker[2];
 507      =2    ///////////////////////////////
 508      =2    unsigned long FatStartSector;
 509      =2    unsigned long RootStartSector;
 510      =2    //unsigned long DataStartSector;
 511      =2    unsigned long FirstDataSector;
 512      =2    //unsigned long FirstSectorofCluster;
 513      =2    unsigned long TotCluster;
 514      =2    unsigned char bFatType;
 515      =2  } SYS_INFO_BLOCK,*pSYS_INFO_BLOCK;
 516      =2  
 517      =2  typedef struct _FILE_INFO{
 518      =2    unsigned char bFileOpen;
 519      =2    unsigned int StartCluster;   // current cluster
 520      =2    unsigned long LengthInByte;
 521      =2    unsigned int ClusterPointer; // next cluster
 522      =2    unsigned long SectorPointer;

⌨️ 快捷键说明

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