97 lines
4.2 KiB
Plaintext
97 lines
4.2 KiB
Plaintext
|
|
Document ID: Q79259
|
|
|
|
Product: Microsoft BASIC Compiler
|
|
Title: Microsoft Library (.LIB) Format, Created by LIB.EXE
|
|
|
|
Updated: 27-DEC-1991
|
|
Operating System Versions: 6.00 6.00B 7.00 7.10
|
|
Operating Systems: MS-DOS
|
|
|
|
Summary:
|
|
|
|
This article describes the components of the Microsoft Library Format
|
|
(for .LIB files created by the LIB.EXE Library Manager). The Microsoft
|
|
Library Format is consistent between compatible Microsoft languages.
|
|
While future library utilities will remain backward- compatible with
|
|
the older library formats, the actual library format itself is subject
|
|
to change. This information is taken from Chapter 5 of the "Microsoft
|
|
C Developer's Toolkit Reference," which contains more in-depth
|
|
information on the Microsoft Library Format.
|
|
|
|
This information applies to Microsoft QuickBasic versions 4.0, 4.0b,
|
|
and 4.5 for MS-DOS, to Microsoft Basic Compiler versions 6.0 and 6.0b
|
|
for MS-DOS, and to Microsoft Basic Professional Development System
|
|
(PDS) versions 7.0 and 7.1 for MS-DOS.
|
|
|
|
More Information:
|
|
|
|
Library Header Record
|
|
---------------------
|
|
|
|
Object code library .LIB files under MS-DOS always contain blocks of
|
|
data in multiples of 512 bytes. The first record in the library is a
|
|
library header. This record is structured the same as a Microsoft
|
|
object-module-format (MS OMF) record. That is, the first byte of the
|
|
record identifies the record's type, and the next two bytes specify
|
|
the number of bytes remaining in the record. Note that the length
|
|
field is byte-swapped (in other words, the low-order byte precedes the
|
|
high-order byte). The record type for this library header is F0 hex
|
|
(240 decimal).
|
|
|
|
Modules in a library always start at the beginning of a page. Page
|
|
size is determined by adding three (one for the record type byte and
|
|
two for the record length field itself) to the value in the record
|
|
length field; thus the library header record always occupies exactly
|
|
one page. Legal values for page size are given by the range of 2
|
|
through the n, where n is a value from 4 through 15.
|
|
|
|
The four bytes immediately following the length field are a byte-
|
|
swapped long integer specifying the byte offset within the library of
|
|
the first block of the dictionary. The next two bytes are a byte-
|
|
swapped word field that specifies the number of blocks in the
|
|
dictionary. (Note: The Library Manager, LIB.EXE for MS-DOS, cannot
|
|
create a library whose dictionary requires more than 251 512-byte
|
|
pages.)
|
|
|
|
The next byte contains flags describing the library. One current flag
|
|
definition is "0x01 = case sensitive". This applies to both regular
|
|
and extended dictionaries. All other values are reserved for future
|
|
use and should be 0. The remaining bytes in the library header record
|
|
are not significant. This record deviates from the typical Microsoft
|
|
OMF record in that the last byte is not used as a checksum on the rest
|
|
of the record.
|
|
|
|
Object Modules
|
|
--------------
|
|
|
|
The first object module in the library immediately follows the header.
|
|
The first object module is followed in turn by all other object
|
|
modules in the library. Each module is in Microsoft OMF. Individual
|
|
modules are aligned so that they start at the beginning of a new page.
|
|
If, as is commonly the case, a module does not occupy a number of
|
|
bytes that is exactly a multiple of the page size, then its last block
|
|
is padded with as many null bytes as are required to fill it. This
|
|
special format is covered in detail in the "C Developer's Toolkit
|
|
Reference."
|
|
|
|
Dictionary Blocks
|
|
-----------------
|
|
|
|
The remaining blocks in the library compose the dictionary. The number
|
|
of blocks in the dictionary is given in the library header. Dictionary
|
|
length is in 512-byte blocks. Detailed information on the exact
|
|
content and format of the dictionary are contained in the "C
|
|
Developer's Toolkit Reference."
|
|
|
|
Extended Dictionary
|
|
-------------------
|
|
|
|
The extended dictionary is optional and indicates dependencies between
|
|
modules in the library. Versions of LIB.EXE earlier than version 3.09
|
|
do not create an extended dictionary. The extended dictionary is
|
|
placed at the end of the library. Again, see the "C Developer's
|
|
Toolkit Reference" for details on the structure of the Extended
|
|
Dictionary.
|
|
|
|
Additional reference words: 6.00 6.00b 7.00 7.10 4.00 4.00b 4.50 |