home *** CD-ROM | disk | FTP | other *** search
/ PC World 2000 February / PCWorld_2000-02_cd.bin / Software / Servis / FFE / EXEC.SWG / 0007_LIB.pas < prev    next >
Pascal/Delphi Source File  |  1997-02-15  |  4KB  |  97 lines

  1.  
  2. Document ID: Q79259
  3.  
  4. Product: Microsoft BASIC Compiler
  5. Title: Microsoft Library (.LIB) Format, Created by LIB.EXE
  6.  
  7. Updated: 27-DEC-1991
  8. Operating System Versions: 6.00 6.00B 7.00 7.10
  9. Operating Systems: MS-DOS
  10.  
  11. Summary:
  12.  
  13. This article describes the components of the Microsoft Library Format
  14. (for .LIB files created by the LIB.EXE Library Manager). The Microsoft
  15. Library Format is consistent between compatible Microsoft languages.
  16. While future library utilities will remain backward- compatible with
  17. the older library formats, the actual library format itself is subject
  18. to change. This information is taken from Chapter 5 of the "Microsoft
  19. C Developer's Toolkit Reference," which contains more in-depth
  20. information on the Microsoft Library Format.
  21.  
  22. This information applies to Microsoft QuickBasic versions 4.0, 4.0b,
  23. and 4.5 for MS-DOS, to Microsoft Basic Compiler versions 6.0 and 6.0b
  24. for MS-DOS, and to Microsoft Basic Professional Development System
  25. (PDS) versions 7.0 and 7.1 for MS-DOS.
  26.  
  27. More Information:
  28.  
  29. Library Header Record
  30. ---------------------
  31.  
  32. Object code library .LIB files under MS-DOS always contain blocks of
  33. data in multiples of 512 bytes. The first record in the library is a
  34. library header. This record is structured the same as a Microsoft
  35. object-module-format (MS OMF) record. That is, the first byte of the
  36. record identifies the record's type, and the next two bytes specify
  37. the number of bytes remaining in the record. Note that the length
  38. field is byte-swapped (in other words, the low-order byte precedes the
  39. high-order byte). The record type for this library header is F0 hex
  40. (240 decimal).
  41.  
  42. Modules in a library always start at the beginning of a page. Page
  43. size is determined by adding three (one for the record type byte and
  44. two for the record length field itself) to the value in the record
  45. length field; thus the library header record always occupies exactly
  46. one page. Legal values for page size are given by the range of 2
  47. through the n, where n is a value from 4 through 15.
  48.  
  49. The four bytes immediately following the length field are a byte-
  50. swapped long integer specifying the byte offset within the library of
  51. the first block of the dictionary. The next two bytes are a byte-
  52. swapped word field that specifies the number of blocks in the
  53. dictionary. (Note: The Library Manager, LIB.EXE for MS-DOS, cannot
  54. create a library whose dictionary requires more than 251 512-byte
  55. pages.)
  56.  
  57. The next byte contains flags describing the library. One current flag
  58. definition is "0x01 = case sensitive". This applies to both regular
  59. and extended dictionaries. All other values are reserved for future
  60. use and should be 0. The remaining bytes in the library header record
  61. are not significant. This record deviates from the typical Microsoft
  62. OMF record in that the last byte is not used as a checksum on the rest
  63. of the record.
  64.  
  65. Object Modules
  66. --------------
  67.  
  68. The first object module in the library immediately follows the header.
  69. The first object module is followed in turn by all other object
  70. modules in the library. Each module is in Microsoft OMF. Individual
  71. modules are aligned so that they start at the beginning of a new page.
  72. If, as is commonly the case, a module does not occupy a number of
  73. bytes that is exactly a multiple of the page size, then its last block
  74. is padded with as many null bytes as are required to fill it. This
  75. special format is covered in detail in the "C Developer's Toolkit
  76. Reference."
  77.  
  78. Dictionary Blocks
  79. -----------------
  80.  
  81. The remaining blocks in the library compose the dictionary. The number
  82. of blocks in the dictionary is given in the library header. Dictionary
  83. length is in 512-byte blocks. Detailed information on the exact
  84. content and format of the dictionary are contained in the "C
  85. Developer's Toolkit Reference."
  86.  
  87. Extended Dictionary
  88. -------------------
  89.  
  90. The extended dictionary is optional and indicates dependencies between
  91. modules in the library. Versions of LIB.EXE earlier than version 3.09
  92. do not create an extended dictionary. The extended dictionary is
  93. placed at the end of the library. Again, see the "C Developer's
  94. Toolkit Reference" for details on the structure of the Extended
  95. Dictionary.
  96.  
  97. Additional reference words: 6.00 6.00b 7.00 7.10 4.00 4.00b 4.50