home *** CD-ROM | disk | FTP | other *** search
/ Jason Aller Floppy Collection / 75.img / CODEVIEW.ZIP / CVREADME.DOC < prev    next >
Text File  |  1988-02-23  |  37KB  |  1,095 lines

  1.                   CVREADME.DOC
  2.         (C) Copyright Microsoft Corporation, 1987, 1988
  3.          Microsoft(R) FORTRAN Optimizing Compiler Version 4.10
  4.  
  5.  
  6.               NOTES ON CODEVIEW AND UTILITIES
  7.  
  8.                  The Mouse Driver
  9.  
  10. If you will be using the Microsoft Mouse with the Microsoft CodeView debugger
  11. you must have Version 6.0 or later of the Microsoft Mouse. If you do not,
  12. use the version of the MOUSE.COM driver provided in this package.  Copy
  13. MOUSE.COM to the appropriate mouse directory. When you are ready to use the
  14. mouse, type
  15.  
  16.     mouse
  17.  
  18. at the DOS command level. If you want to install the mouse driver automatically
  19. every time you reboot,    insert the "mouse" command in your AUTOEXEC.BAT file.
  20.  
  21. Note that in earlier releases of Microsoft C, both the MOUSE.SYS and the
  22. MOUSE.COM driver were provided.  If you have been using an earlier version
  23. of the MOUSE.SYS driver, delete the following line from your CONFIG.SYS file:
  24.  
  25.     device=\<directory>\mouse.sys
  26.  
  27. where <directory> is the directory where the earlier mouse driver resides.
  28.  
  29.  
  30.               Microsoft CodeView(R) Debugger
  31.  
  32. New Command-Line Option
  33. -----------------------
  34. If you have an IBM Personal System/2, then you can use the /50
  35. command-line option to start the CodeView debugger in 50-line mode.
  36. Note that you must be in 25-line mode to effectively use either the
  37. /43 or /50 command-line option.
  38.  
  39. CONFIG.SYS Setting for CVP
  40. --------------------------
  41. To run the protected-mode CodeView debugger (CVP.EXE), you must have
  42. the following line in your CONFIG.SYS file:
  43.  
  44.     IOPL=YES
  45.  
  46. Microsoft CodeView(R) Debugger Demonstration
  47. --------------------------------------------
  48. The demonstration runs only under MS-DOS or real-mode OS/2. You must
  49. compile the program STATS.FOR before you can run the CodeView
  50. demonstration. Compile the program using the following command and
  51. place the EXE file in the same directory as the other demonstration
  52. files:
  53.     FL /AM /FPc /Zi /Od STATS.FOR
  54.  
  55. IMAG and AIMAG Intrinsic Functions
  56. ----------------------------------
  57. The Microsoft CodeView(R) debugger considers the IMAG and AIMAG functions
  58. to be synonymous (it extracts the imaginary part of the complex
  59. number).
  60.  
  61. Using the 7 Command in Protected Mode
  62. -------------------------------------
  63. If you are using OS/2 protected mode and have a math coprocessor, then
  64. you need to use a patch before you can use the CVP 7 command.  To apply
  65. the patch, use the OS2PATCH.EXE and PTRACE87.PAT files that come on the
  66. same disk that CVP.EXE is on.  You also need to locate the PATCH.EXE file
  67. that comes with OS/2 and make sure that this file is in a directory listed
  68. in your PATH environment variable.  Then follow these steps:
  69.  
  70. 1) Change the current drive and directory to the root directory of the
  71.    boot disk.  (If the boot disk is a floppy, make sure it is inserted
  72.    in the drive you used to boot from.)
  73.  
  74. 2) Give the following command line at the DOS prompt:
  75.  
  76.    OS2PATCH /A PTRACE87.PAT
  77.  
  78. Note that you may need to give the complete path names for the
  79. OS2PATCH.EXE and for the PTRACE87.PAT file.  You do not need to give
  80. a path name for the OS2PATCH.EXE file if you have placed this file
  81. in a directory listed in your PATH environment variable.
  82.  
  83. Using the Real-Mode Debugger in the Compatibility Box
  84. -----------------------------------------------------
  85. When running the real-mode CodeView debugger in the DOS 3.x
  86. compatibility box, start the debugger with the /S command-line
  87. option.  Otherwise, the mouse pointer will not appear.
  88.  
  89. Using the CodeView Debugger with BIND
  90. -------------------------------------
  91. The real-mode CodeView debugger cannot debug bound (dual-mode)
  92. applications.  However, the protected-mode CodeView debugger,
  93. CVP, can debug bound applications.
  94.  
  95. Compiling BASIC Programs for CodeView Debugger
  96. ----------------------------------------------
  97. To compile BASIC programs for use with the CodeView debugger, specify the
  98. /Zi option rather than the /D option.
  99.  
  100. Expression Evaluator for BASIC Programs
  101. ---------------------------------------
  102. In the BASIC expression evaluator, "+" is not supported for string
  103. concatenation.
  104.  
  105. Stack Trace Command
  106. -------------------
  107. In order for the Stack Trace command (or the Calls menu) to work
  108. reliably, you need to execute to at least the beginning of the main
  109. function or procedure, and the current module should have full CodeView
  110. information (a module has full CodeView information if compiled or
  111. assembled with /Zi).
  112.  
  113. Error Messages
  114. --------------
  115. The error message "? cannot display" indicates that the Display
  116. Expression command (?) has been passed a valid symbol that it
  117. cannot display. In previous versions of the debugger, structures
  118. could not be displayed. With current version of the debugger, only
  119. the enums type cannot be displayed.
  120.  
  121. The error message "Expression not a memory address" occurs when
  122. the Tracepoint command is given without a symbol that evaluates to
  123. a single memory address.  For example, the commands "TP?1" and
  124. "TP?a+b" each produce this error message.  The proper way to put a
  125. tracepoint on the word at address 1 is with the command "TPW 1".
  126.  
  127. The error message "Function call before 'main'" occurs when you
  128. attempt to evaluate a program-defined function before you have entered
  129. the main function.  Execute to at least to the beginning of the main
  130. function before attempting to evaluate program-defined functions.
  131.  
  132. The error message "Bad emulator info" occurs when CodeView cannot
  133. read data from the floating-point emulator.
  134.  
  135. The error message "Floating point not loaded" has a special meaning
  136. for CVP (in addition to the explanation given in the CodeView and
  137. Utilities manual).  Each thread has its own floating-point emulator.
  138. This message is issued when the current thread has not initialized
  139. its own emulator.
  140.  
  141. Microsoft Pascal Programs
  142. -------------------------
  143. In this release, Microsoft Pascal programs cannot be debugged with
  144. the CodeView debugger.
  145.  
  146. The Pascal example on pg. 61 of the Microsoft CodeView and Utilities
  147. manual should read
  148.  
  149.     PAS1 /Zz TEST;
  150.  
  151. rather than
  152.  
  153.     PAS1 /Zi TEST;
  154.  
  155.                  Exit Codes for Utilities
  156.  
  157. The exit codes for LINK and the utilities in the Microsoft CodeView
  158. and Utilities manual should appear as follows:
  159.  
  160. LINK
  161. ----
  162.     Code    Meaning
  163.  
  164.     0    No error.
  165.  
  166.     2    Program error--something was wrong with the commands
  167.         or files input to the linker.
  168.  
  169.     4    System error.  The linker
  170.  
  171.         - ran out of space on output files
  172.         - was unable to reopen the temporary file
  173.         - experienced an internal error
  174.         - was interrupted by the user
  175.  
  176. LIB, EXEPACK, EXEMOD, MAKE, and SETENV
  177. ---------------------------------------
  178.     Code    Meaning
  179.  
  180.     0    No error.
  181.  
  182.     2    Program error--something was wrong with the commands
  183.         or files input to the utility.
  184.  
  185.     4    System error.  The utility ran out of memory, was
  186.         interrupted by the user, or experienced an internal
  187.         error.
  188.  
  189.  
  190.         Microsoft Segmented-Executable Linker (LINK)
  191.  
  192. Overlay Restrictions
  193. --------------------
  194. You cannot use long jumps (using the longjmp library function) or indirect
  195. calls (through a function pointer) to pass control to an overlay.  When a
  196. function is called through a pointer, the called function must be in the same
  197. overlay or in the root.
  198.  
  199. Changed LINK Error Messages
  200. ---------------------------
  201. The explanation for fatal-error message L1008 is changed as follows:
  202.  
  203.     The /SEGMENTS option specified a limit greater than 3072 on the
  204.     number of segments allowed.
  205.  
  206. Error message L1009 has been changed to read as follows:
  207.  
  208.     L1009    <number> : CPARMAXALLOC : illegal value
  209.  
  210. Error message L1053 has been changed to read as follows:
  211.  
  212.     L1053    out of memory for symbol table
  213.  
  214.     The program had more symbolic information (such as public, external,
  215.     segment, group, class, and file names) than the amount that could fit
  216.     in  available real memory.
  217.  
  218.     Try freeing memory by linking from the DOS command level instead of
  219.     from a MAKE file or from an editor. Otherwise, combine modules or
  220.     segments and try to eliminate as many public symbols as possible.
  221.  
  222. Warning message L4050 has been changed as follows:
  223.  
  224.     L4050    too many public symbols for sorting
  225.  
  226.     The linker uses the stack and all available memory in the
  227.     near heap to sort public symbols for the /MAP option.  If
  228.     the number of public symbols exceeds the space available
  229.     for them, this warning is issued, and the symbols are not
  230.     sorted in the map file but are listed in arbitrary order.
  231.  
  232. New LINK Error Messages
  233. -----------------------
  234. L1003    /QUICKLIB, /EXEPACK incompatible
  235.  
  236. You cannot link with both the /QU option and the /E option.
  237.  
  238. L1006    <option-text>: stack size exceeds 65535 bytes
  239.  
  240. The value given as a parameter to the /STACKSIZE option exceeds the
  241. maximum allowed.
  242.  
  243. L1063    out of memory for CodeView information
  244.  
  245. The linker was given too many object files with debug information,
  246. and the linker ran out of space to store it.  Reduce the number
  247. of object files that have debug information.
  248.  
  249. L1115    /QUICKLIB, overlays incompatible
  250.  
  251. You specified overlays and used the /QUICKLIB option.
  252. These cannot be used together.
  253.  
  254. L2013    LIDATA record too large
  255.  
  256. An LIDATA record contained more than 512 bytes.  This is
  257. probably a compiler error.
  258.  
  259. L2024    <name>: special symbol already defined
  260.  
  261. Your program defined a symbol name that is already used by the linker
  262. for one of its own low-level symbols.  (For example, the linker
  263. generates special symbols used in overlay support and other operations.)
  264. Choose another name for the symbol in order to avoid conflict.
  265.  
  266. L2025    <segmentname>: segment with > 1 class name not allowed with /INC
  267.  
  268. Your program defined a segment more than once, giving the segment
  269. different class names.    Different class names for the same segment
  270. are not allowed when you link with the /INCREMENTAL option.  Normally,
  271. this error should never appear unless you are programming with MASM.
  272. For example, if you give the two MASM statements
  273.  
  274. _BSS segment 'BSS'
  275.  
  276. and
  277.  
  278. _BSS segment 'DATA'
  279.  
  280. then the statements have the effect of declaring two distinct segments.
  281. ILINK does not support this situation, so it is disallowed when the
  282. /INCREMENTAL option is used.
  283.  
  284.  
  285. L2041    stack plus data exceed 64K
  286.  
  287. The total of near data and requested stack size exceeds 64K,
  288. and the program will not run correctly.  Reduce the stack size.
  289. The linker only checks for this condition if /DOSSEG
  290. is enabled, which is done automatically in the library
  291. startup module.
  292.  
  293. L2043    Quick Library support module missing
  294.  
  295. When creating a Quick library, you did not link with the required
  296. QUICKLIB.OBJ module.
  297.  
  298. L2044    <name> : symbol multiply defined, use /NOE
  299.  
  300. The linker found what it interprets as a public-symbol
  301. redefinition, probably because you have redefined a symbol that
  302. is defined in a library.  Relink with the /NOEXTDICTIONARY
  303. (/NOE) option. If error L2025 results for the same symbol, then you
  304. have a genuine symbol-redefinition error.
  305.  
  306. L4003    intersegment self-relative fixup at <offset> in segment <name>
  307.     pos: <offset> Record type: 9C target external '<name>'
  308.  
  309. The linker found an intersegment self-relative fixup. This error
  310. may be caused by compiling a small-model program with the /NT
  311. option.
  312.  
  313. L4034    more than 239 overlay segments; extra put in root
  314.  
  315. Your program designated more than the limit of 239 segments to
  316. go in overlays.  Starting with the 234th segment, they are assigned to
  317. the root (that is, the permanently resident portion of the program).
  318.  
  319.  
  320.         Microsoft Library Manager (LIB)
  321.  
  322. New Option
  323. ----------
  324. There is a new option for LIB:    /NOIGNORECASE (abbreviated as /N).
  325. This option tells LIB to not ignore case when comparing symbols.
  326. names. By default, LIB ignores case.  Multiple symbols that are
  327. the same except for case can be put in the same library.  An
  328. example of this is: "_Open" and "_open". Normally you could not
  329. add both these symbols to the same library.
  330.  
  331. Note that if a library is built with /NOI, the library is
  332. internally "marked" to indicate /NOI.    All libraries built
  333. with earlier versions of LIB are not marked.
  334.  
  335. If you combine multiple libraries, and any one of them is
  336. marked /NOI, then /NOI is assumed for the output library.
  337.  
  338. In addition, LIB also supports the option /IGNORECASE (/I), which
  339. is completely analogous to /NOIGNORECASE.  /I is the default. The only
  340. reason to use it would be if you have an existing library marked /NOI
  341. that you wanted to combine with other libraries which were not marked,
  342. and have the output library be not marked. If you don't use
  343. /IGNORECASE, the output is marked /NOI (see above).
  344.  
  345. Changed LIB Error Messages
  346. --------------------------
  347. Warning messages U4152, U4155, and U4157-U4159 for LIB are now
  348. nonfatal error messages U2152, U2155, and U2157-U2159, respectively.
  349.  
  350. Warning message U4151 has been changed to read as follows:
  351.  
  352.     U4151    '<name>' : symbol defined in module <name>, redefinition ignored
  353.  
  354. New LIB Error Messages
  355. ----------------------
  356. The following new warning messages have been added for LIB:
  357.  
  358. U4155    <modulename> : module not in library
  359.  
  360. A module specified to be replaced does not already exist in the
  361. library.  LIB adds the module anyway.
  362.  
  363. U4157    insufficient memory, extended dictionary not created
  364. U4158    internal error, extended dictionary not created
  365.  
  366. For the reason indicated, LIB could not create an extended
  367. dictionary. The library is still valid, but the linker
  368. is not able to take advantage of the extended dictionary
  369. to speed linking.
  370.  
  371.  
  372.         Microsoft Program Maintenance Utility (MAKE)
  373.  
  374. New Error Message
  375. -----------------
  376. U1015: <file> : error redirection failed
  377.  
  378. This error occurs if the /X option is given and error output cannot
  379. be redirected to the given file (for example, because the file
  380. is read-only).
  381.  
  382. Inference Rules
  383. ---------------
  384. You cannot have inference rules in both the TOOLS.INI and the description
  385. file that use both the same inextension and outextension.  For example, you
  386. cannot place the following inference rule in the TOOLS.INI file:
  387.  
  388.     .c.obj:
  389.         cl /c /Zi /Od $*.c
  390.  
  391. while also placing the following line in the description file:
  392.  
  393.     .c.obj:
  394.         cl /Ot $*.c
  395.  
  396. However, you can define the same macro in both the TOOLS.INI and the
  397. description file.  In such cases, the definition in the description file
  398. takes precedence.
  399.  
  400. Backslash (\) as Continuation Character
  401. ---------------------------------------
  402. Note that MAKE considers a backslash immediately followed by a new-line
  403. character to be a continuation character.  When it finds this combination
  404. in a description file, MAKE concatenates the line immediately following
  405. the combination with the line where the combination appears.
  406.  
  407. If you define a macro that ends in a backslash, make sure that you put a
  408. space after the terminating backslash.    For example, if you want to define
  409. macros for the path C:\SRC\BIN and C:\SRC\LIB, you must use the format
  410. illustrated below:
  411.  
  412.     BINPATH=C:\SRC\BIN\<space><newline>
  413.     LIBPATH=C:\SRC\LIB\<space><newline>
  414.  
  415. To illustrate the problems that can result if you do not put a space before the
  416. new-line character, assume that the macros above appear as shown below
  417. instead:
  418.  
  419.     BINPATH=C:\SRC\BIN\<newline>
  420.     LIBPATH=C:\SRC\LIB\<newline>
  421.  
  422. Because a new-line character appears immediately after the backslash at the end
  423. of the first macro, MAKE assumes that you are defining the single macro shown
  424. below:
  425.  
  426.     BINPATH=C:\SRC\BIN\LIBPATH=C:\SRC\LIB\
  427.  
  428.  
  429.  
  430.         Microsoft STDERR Redirection Utility (ERROUT)
  431.  
  432. The ERROUT utility does not accept batch files. To redirect standard-error
  433. output from a batch file, you must enter a command of the following form:
  434.  
  435.     ERROUT COMMAND /c <batchcommand>
  436.  
  437. If no /f option is given, then ERROUT redirects standard-error output to
  438. the standard-output device.
  439.  
  440.  
  441.             Mixed-Language Programming
  442.  
  443. C Naming Conventions
  444. --------------------
  445. C recognizes the first 31 characters of a symbolic name.
  446.  
  447. Accessing Parameters on the Stack
  448. ---------------------------------
  449. In Section 6.1.5 of the Microsoft Mixed Languages Programming Guide, the
  450. instruction
  451.  
  452.     mov    bx, [bp+6]
  453.  
  454. loads the argument into the BX register rather than the BP register.
  455.  
  456. Setting Up Calls to High-Level Languages
  457. ----------------------------------------
  458. Section 6.6 of the Microsoft Mixed Languages Programming Guide gives in-
  459. structions for setting up a call to a high-level language from assembly
  460. language.  Before you execute a call to a BASIC, Pascal, or FORTRAN routine,
  461. remember to declare an additional parameter if the return value is noninteger.
  462. This additional parameter must contain the offset address of the return value,
  463. for which you must allocate room within the stack segment (normally DGROUP,
  464. the same as the default data segment).
  465.  
  466. BASIC Return Values
  467. -------------------
  468. BASIC functions use the FORTRAN/Pascal conventions, rather than the C
  469. conventions, for receiving return values.
  470.  
  471. Passing C Strings to BASIC
  472. --------------------------
  473. In Section 8.4.3 of the Microsoft Mixed Languages Programming Guide, in the
  474. example illustrating how C passes string arguments to BASIC functions, the
  475. sd_len field should be declared as shown below:
  476.  
  477.     int sd_len
  478.  
  479. BASIC Array Declarations
  480. ------------------------
  481. The sample BASIC array declaration in Table 9.1 of the Microsoft
  482. Mixed Language Guide should read
  483.  
  484.     DIM x(c-1, r-1)
  485.  
  486. Linking with MASM Files
  487. -----------------------
  488. If you are linking C modules with modules created by the Microsoft Macro
  489. Assembler, either assemble the MASM modules with the /MX option to
  490. preserve case sensitivity in these modules; or, use the LINK command
  491. to link in a separate step, and do NOT specify the /NOI linker
  492. option.
  493.  
  494. Linking Mixed-Language Programs
  495. -------------------------------
  496. This section explains how to link Microsoft C modules with modules created
  497. by other Microsoft languages.  The discussions assume that you are linking
  498. with the Microsoft Segmented-Executable Linker, LINK.  (This is the version
  499. of LINK provided with this version of FORTRAN and Version 5.10 of the
  500. Microsoft C Optimizing Compiler.)
  501.  
  502. To link object modules created using the Microsoft C Optimizing Compiler,
  503. Version 5.10, with those created using the Microsoft FORTRAN Optimizing
  504. Compiler Version 4.00 or 4.01, you must create a special version of each
  505. of the FORTRAN libraries you intend to use. Create one FORTRAN library
  506. to correspond to each C library you are using; that is, create a FORTRAN
  507. library that supports the same memory-model/math-option combination as
  508. the corresponding C library. Be sure that you choose the "C compatibility"
  509. option when you build each FORTRAN library.
  510.  
  511. Next, use the SETUP program provided with Microsoft C, Version 5.10, to
  512. create all the combined C 5.10 libraries that you will need.  SETUP creates
  513. a subdirectory named \MIXLANG under the C 5.10 base directory.
  514.  
  515. Place the FORTRAN libraries you have created in this directory. Then make the
  516. \MIXLANG directory the current directory and run F4COMPAT, which brings the
  517. FORTRAN libraries up to date and makes them compatible with C 5.10.  F4COMPAT
  518. takes two arguments: one specifying the memory model and one specifying the
  519. floating-point-math package that the library supports. For example,
  520.  
  521.     F4COMPAT L 7
  522.  
  523. makes a C 5.10-compatible version of LLIBFOR7.LIB.
  524.  
  525. Once the libraries are built, use the following LINK command line to
  526. link the appropriate C library with the FORTRAN library that you
  527. converted in the previous example:
  528.  
  529.      LINK objs,,,LLIBC7.LIB LLIBFOR7.LIB /NOE;
  530.  
  531. The LINK command lines for other memory models and floating-point math packages
  532. are similar.  Note that the C library must be given first on the command line.
  533. Specify the \MIXLANG subdirectory either in the LIB environment variable
  534. or on the LINK command line so that the linker can find the FORTRAN
  535. library. Use only large- and medium-model libraries.  Huge-model programs
  536. use large-model libraries.
  537.  
  538.  
  539. To link other combinations of language libraries, the BASIC libraries
  540. (either BCOM40 or BRUN40) should be listed first on the LINK command
  541. line, since the main program must be written in BASIC.    Otherwise,
  542. the C 5.1 library should be listed first. (Or, if you are using C 4.0
  543. with FORTRAN 4.0 or later, the FORTRAN library should be listed first.)
  544. For best results, using large-memory-model C is suggested.
  545.  
  546.  
  547.                The BIND Utility
  548.  
  549. Specifying Libraries
  550. --------------------
  551. You need to include DOSCALLS.LIB on the BIND command line. If
  552. DOSCALLS.LIB is not in the current directory, you must give the
  553. complete path name to DOSCALLS.LIB.
  554.  
  555. BIND automatically searches for API.LIB by looking in directories
  556. listed in the LIB environment variable.  However, if API.LIB is
  557. specified on the command line, then BIND does not check the LIB
  558. environment variable; instead, you need to give the complete
  559. path name.
  560.  
  561. For example, the following command line successfully uses BIND, if
  562. API.LIB is located in a directory listed in the LIB environment
  563. variable:
  564.  
  565. BIND FOO.EXE \LIB\DOSCALLS.LIB
  566.  
  567. Using BIND with Packed Files
  568. ----------------------------
  569. The version of BIND released with this package does not work with
  570. files that have been linked with the /EXEPACK linker option.
  571.  
  572. Running Bound Files with DOS 2.1
  573. --------------------------------
  574. A dual-mode executable file produced with BIND can be run in both
  575. DOS 3.x and DOS 2.x environments.  However, if you change the name
  576. of an executable file produced by BIND, then it will not run under
  577. DOS 2.1.
  578.  
  579.  
  580.          The Microsoft Incremental Linker (ILINK)
  581.  
  582. ILINK Fatal Error Messages
  583. --------------------------
  584.  
  585. .sym seek error
  586. .sym read error
  587.  
  588.     The .SYM file is corrupted.  Do a full link.  If the error
  589.     persists, contact Microsoft.
  590.  
  591. .sym write error
  592.  
  593.     The disk is full or the .SYM file already exists with the
  594.     READONLY attribute.
  595.  
  596. map for segment <name> exceeds 64K
  597.  
  598.     The symbolic information associated with the given segment
  599.     exceeds 64K bytes, which is more than ILINK can handle.
  600.  
  601. can't ilink library <name>
  602.  
  603.     You tried to incrementally link an altered library.
  604.     ILINK does not link .LIB files but only .OBJ files.
  605.     Use a full link instead.
  606.  
  607. .obj close error
  608.  
  609.     The operating system returned an error when ILINK attempted
  610.     to close one of the .OBJ files.  Do a full link.  If the error
  611.     persists, contact Microsoft.
  612.  
  613. too many LNAMES in <modname>
  614.  
  615.     An object module has more than 255 LNAME records.
  616.  
  617. too many SEGDEFs in <modname>
  618.  
  619.     The given object module has more than 100 SEGDEF records.
  620.  
  621. too many GRPDEFs in <modname>
  622.  
  623.     The given object module has more than 10 GRPDEF records.
  624.  
  625. symbol <name> multiply defined
  626.  
  627.     The given symbol is defined more than once.
  628.  
  629. #3
  630.  
  631.     Please report this error to Microsoft.
  632.  
  633. Out of Memory
  634.  
  635.     ILINK ran out of memory for processing the input.  If you
  636.     are running ILINK under MAKE, try running it from the shell.
  637.     Otherwise, do a full link.
  638.  
  639. could not run exec
  640.  
  641.     ILINK was unable to find the file EXEC.EXE, which should be
  642.     placed somewhere in the search path or in the current
  643.     directory.
  644.  
  645. .exe file too big, change alignment
  646.  
  647.     The segment sector alignment value in the .EXE file is too
  648.     small to express the size of one of the segments.  Do a full
  649.     link and increase the alignment value with the /ALIGNMENT
  650.     option to LINK.
  651.  
  652. .ilk seek error
  653.  
  654.     The .ILK file is corrupted.  Do a full link.  If the error
  655.     persists, contact Microsoft.
  656.  
  657. Too many defined segments
  658.  
  659.     ILINK has a limit of 255 defined segments, which are segments
  660.     defined in an object module as opposed to an executable segment.
  661.     Reduce the number of segments if you want to use ILINK.
  662.  
  663. too many library files
  664.  
  665.     ILINK has a limit of 32 runtime libraries (.LIB files).  Reduce
  666.     the number of libraries.
  667.  
  668. too many modules
  669.  
  670.     ILINK has a limit of 1204 modules in a program.  Reduce the
  671.     number of modules.
  672.  
  673. .ilk write error
  674.  
  675.     The disk is full, or else ILINK cannot write to the .SYM file
  676.     because a .SYM file currently exists and has the READONLY attribute.
  677.  
  678. file <name> does not exist
  679.  
  680.     ILINK was unable to open the given file.  The file named was
  681.     in the file list in the .ILK file.
  682.  
  683. seek error on library
  684.  
  685.     A .LIB file was corrupted.  Do a full link and check your .LIB
  686.     files.
  687.  
  688. library close error
  689.  
  690.     The operating system returned an error when ILINK attempted
  691.     to close one of the .LIB files.  Do a full link.  If the error
  692.     persists, contact Microsoft.
  693.  
  694. error closing EXE file
  695.  
  696.     The operating system returned an error when ILINK attempted
  697.     to close the .EXE file.  Do a full link.  If the error
  698.     persists, contact Microsoft.
  699.  
  700. Invalid module reference <module>
  701.  
  702.     The program makes a dynamic link reference to a dynamic link
  703.     module which is not represented in the .EXE file.
  704.  
  705. could not update time on <filename>
  706.  
  707.     The operating system returned an error when ILINK attempted
  708.     to update the time on the given file.  Possibly the file had
  709.     the READONLY attribute set.
  710.  
  711. invalid flag <flag>
  712. only one -e command allowed
  713.  
  714.     The ILINK command syntax is incorrect.
  715.  
  716. User Abort
  717.  
  718.     The user issued CTRL+C or CTRL+BREAK.
  719.  
  720. file <name> write protected
  721.  
  722.     The .EXE, .ILK, or .SYM file needed to be updated and has the
  723.     READONLY attribute.  Change attribute to READWRITE.
  724.  
  725. file <name> missing
  726.  
  727.     One of the .OBJ files specified on the command line is missing.
  728.  
  729. file <name> invalid .OBJ format
  730. file <name> has invalid <recordtype> record
  731.  
  732.     The given .OBJ file has an invalid format or one that is not
  733.     recognized by ILINK.  This may have been caused by a compiler
  734.     or assembler.
  735.  
  736. file <module> was not full linked
  737.  
  738.     An .OBJ file was specified as input to ILINK, which was not in
  739.     the list of files in the original full link.
  740.  
  741. LOBYTE seg-relative fixups not supported
  742.  
  743.     This error message should occur only with MASM files.  See the
  744.     Microsoft Macro Assembler 5.0 Programmer's Guide. This type of
  745.     object module is not supported by ILINK.
  746.  
  747. <number> undefined symbols
  748.  
  749.     The given number of symbols were referred to in fixups but
  750.     never publicly defined in the program.
  751.  
  752. Incremental Violations
  753. ----------------------
  754. These errors cause a full link to occur if the -e option is used and -i
  755. is not used, else they are fatal errors:
  756.  
  757. symbol <name> deleted
  758.  
  759.     A symbol was deleted from an incrementally-linked module.
  760.  
  761. <modname> contains new SEGMENT
  762.  
  763.     A segment was added to the program.
  764.  
  765. <modname> contains changed segment <name>
  766.  
  767.     The segment contribution (code or data which the module
  768.     contributes to a segment) changed for the given module: it
  769.     contributed to a segment it didn't previously contribute to,
  770.     or a contribution was removed.
  771.  
  772. <modname>'s segment <name> grew too big
  773.  
  774.     The given segment grew beyond the padding for the given module.
  775.  
  776. <modname> contains new GROUP <name>
  777.  
  778.     A new group was defined, via the GROUP directive in assembly
  779.     language or via the /ND C compiler option.
  780.  
  781. <modname> redefines group <name> to include <name>
  782.  
  783.     The members of the given group changed.
  784.  
  785. symbol <name> changed
  786.  
  787.     The given data symbol was moved.
  788.  
  789. can't add new communal data symbol <name>
  790.  
  791.     A new communal data symbol was added as an uninitialized variable
  792.     in C or with the COMM feature in MASM.
  793.  
  794. communal variable <name> grew too big
  795.  
  796.     The given communal variable changed size too much.
  797.  
  798. invalid symbol type for <name>
  799.  
  800.     A symbol which was previously code became data, or vice versa.
  801.  
  802. too many COMDEFS
  803. too many EXTDEFS
  804.  
  805.     The limit on the total of COMDEF records (communal data variables)
  806.     and EXTDEF records (external references) is 2000.
  807.  
  808. invalid CodeView information in .EXE file
  809.  
  810.     The CodeView information found is invalid.
  811.  
  812. <name> contains new CodeView symbolic info
  813.  
  814.     A module previously compiled without -Zi was compiled with -Zi.
  815.  
  816. <name> contains new linnum info
  817.  
  818.     A module previously compiled without -Zi or -Zd was compiled
  819.     with -Zi or -Zd.
  820.  
  821. <name> contains new public CV info
  822.  
  823.     New information on public-symbol addresses was added.
  824.  
  825. invalid .exe file
  826.  
  827.     The .EXE file is invalid.  Make sure you are using an up-to-date
  828.     linker.  If the error persists, contact Microsoft.
  829.  
  830. invalid .ilk file
  831. .ilk read error
  832. .ilk seek error
  833.  
  834.     The .ILK file is invalid.  Make sure you are using an up-to-date
  835.     linker.  If the error persists, contact Microsoft.
  836.  
  837. .SYM/.ILK mismatch
  838.  
  839.     The .SYM and .ILK files are out of sync.  Make sure you are using
  840.     an up-to-date linker.  If the error persists, contact Microsoft.
  841.  
  842. <libname> has changed
  843.  
  844.     The given library has changed.
  845.  
  846. can't link 64K-length segments
  847.  
  848.     ILINK cannot handle segments greater than 65,535 bytes long.
  849.  
  850. can't link iterated segments
  851.  
  852.     ILINK cannot handle programs linked with /EXEPACK.
  853.  
  854. Entry table expansion not implemented
  855.  
  856.     The program call tree changed in such a way that ILINK could
  857.     not handle it.
  858.  
  859. file <name> does not exist
  860.  
  861.     The .EXE, .SYM, or .ILK files are missing.
  862.  
  863. <name> has changed
  864.  
  865.     The given library module name has changed.
  866.  
  867. ILINK Warning messages
  868. ----------------------
  869.  
  870. Fixup frame relative to an (as yet) undefined symbol - assuming ok
  871.  
  872.     See documentation for LINK error messages L4001 and L4002,
  873.     in the Microsoft CodeView and Utilities manual.
  874.  
  875. <name> contains TYPEDEFs - ignored
  876. <name> contains BLKDEFs - ignored
  877.  
  878.     The .OBJ file contains records no longer supported by Microsoft
  879.     language compilers.
  880.  
  881. old .EXE free information lost
  882.  
  883.     The free list in the .EXE file has been corrupted.  The free
  884.     list keeps track of "holes" of free space in the EXE file.  These
  885.     holes are made available when segments are moved to new locations.
  886.  
  887. file <name> has no useful contribution
  888.  
  889.     The given module makes no contribution to any segment.
  890.  
  891. Main entry point moved
  892.  
  893.     The program starting address changed.  You may want to consider
  894.     doing a full link.
  895.  
  896.  
  897.  
  898.                  Microsoft Editor
  899.  
  900.  
  901. Setting Up the Microsoft Editor
  902. -------------------------------
  903. The FORTRAN setup program does not install the Microsoft Editor.  To
  904. install the Microsoft Editor, insert the Microsoft Editor disk and run
  905. the MSETUP batch file. To use the MSETUP batch file under protected-mode
  906. OS/2, rename MSETUP.BAT to MSETUP.CMD.
  907.  
  908. CALLTREE.EXE
  909. ------------
  910. The CALLTREE program mentioned on page 112 of the Microsoft Editor
  911. User's Guide is not included with FORTRAN Version 4.10 because the
  912. utility can only be used with C and assembly programs.
  913.  
  914. C Extension Files
  915. -----------------
  916. The files mentioned in Section 8, "Programming C Extensions," in the
  917. Microsoft Editor User's Guide are not included with FORTRAN Version
  918. 4.1, although this file includes corrections to the manual.
  919.  
  920. Keystroke Configurations
  921. ------------------------
  922. Some of the keystroke configurations listed in Table A.2 of the
  923. Microsoft Editor User's Guide may need to be changed.
  924.  
  925. In the Quick/WordStar(R) configuration, the Sinsert function is assigned
  926. to ALT+INS, not CTRL+INS.
  927.  
  928. In the BRIEF(R) configuration, the Plines function is assigned to ALT+D,
  929. and the Refresh function is assigned to CTRL+].
  930.  
  931. In the EPSILON(TM) configuration, the Ppage function is assigned to PGDN,
  932. and the Sdelete function is assigned to DEL and CTRL+D.
  933.  
  934. The Compile Function
  935. --------------------
  936. The commands
  937.  
  938.     Arg streamarg Compile
  939.     Arg textarg Compile
  940.  
  941. each use the command specified by the extmake:text switch.  The
  942. editor does not check the extension of the file name given as an
  943. argument, but instead uses the "text" extension.  The streamarg
  944. or textarg replaces a %s in the command.  These commands are typically
  945. used to invoke MAKE.
  946.  
  947. The Setfile Function
  948. --------------------
  949. The commands that use Setfile, along with a streamarg or textarg,
  950. accept a variety of input: either the name of a file, a file name
  951. with a wild-card character (* or ?), the name of a directory, or the
  952. name of a disk drive.  File names can also include environment variables,
  953. such as $INIT.    If the streamarg or textarg is a directory name, then
  954. the editor changes the current directory.  If the argument is a drive
  955. name, then the editor changes the current drive.  Environment variables
  956. are translated into directories to be searched for a file.  For example,
  957. the following macro directs the editor to search the $INIT environment
  958. variable in order to find the tools.ini file:
  959.  
  960.     tools.ini := Arg "$TOOLS:tools.ini" Setfile
  961.  
  962.  
  963. Entering Strings in Macros
  964. --------------------------
  965. When you enter a text argument directly, no characters have special
  966. meaning (except when the argument is interpreted as a regular
  967. expression).  However, when you enter text as part of a macro, then
  968. strings inside of quotes are interpreted according to the C string
  969. format.  This format uses a backslash followed by double quotes (\")
  970. to represent double quotes and it uses two backslashes (\\) to represent
  971. a single backslash.  Therefore, to find the next occurrence of the string
  972.  
  973.     She wrote, "Here is a backslash: \ "
  974.  
  975. you could use the following macro definition:
  976.  
  977.     findit := Arg "She wrote, \"Here is a backslash: \\ \"" Psearch
  978.  
  979. Note that to indicate a backslash for a regular expression that is
  980. also part of a macro definition, you must use four consecutive
  981. backslashes.
  982.  
  983.  
  984. Using Text Switches
  985. -------------------
  986. The text switches extmake and readonly each take a special
  987. kind of syntax that allows you to specify drive, file name,
  988. base name, or file extension. The syntax consists of the
  989. characters:
  990.  
  991. %|<letters>F
  992.  
  993. where <letters> consists of any of the following: "p" for path,
  994. "d" for drive, "f" for file base name, or "e" for file extension.
  995. For example, if you are editing the file c:\dir1\sample.c, and you
  996. make the following switch assignment:
  997.  
  998. extmake:c cl /Fod:%|pfF %|dfeF
  999.  
  1000. then each time you give the command <Arg><Compile>, the editor
  1001. performs the following system-level command:
  1002.  
  1003. cl /Fod:\dir1\sample c:sample.c
  1004.  
  1005. The expression "%s" is equivalent to "%|feF" except that the former
  1006. only works once, whereas the latter can appear any number of times
  1007. in the extmake switch assignment. The expression "%|F" is equivalent
  1008. to "%|dpfeF".
  1009.  
  1010. The Filetab Switch
  1011. ------------------
  1012. The filetab switch is a numeric switch that determines how the
  1013. editor translates tabs when loading a file into memory.  The value
  1014. of the switch gives the number of spaces associated with each tab
  1015. column.  For example, the setting "filetab:4" assumes a tab column
  1016. every 4 positions on each line.  Every time the editor finds a tab
  1017. character in a file, it loads the buffer with the number of spaces
  1018. necessary to get to the next tab column.  Depending on the value of
  1019. the entab switch, the editor also uses the filetab switch to determine
  1020. how to convert spaces into tabs when writing to a file.  The default
  1021. value of filetab is 8.
  1022.  
  1023. Functions Callable by C Extensions
  1024. ----------------------------------
  1025.  
  1026. The following list summarizes functions from the standard compact-
  1027. memory-model library, which should work when called by a C-extension
  1028. module.  (The technique of programming C extensions is presented in
  1029. Chapter 8 of the Microsoft Editor User's Guide.)  The memory model
  1030. of the extension is assumed to be /Asfu (small code pointers, far
  1031. data pointers, and stack segment unequal to data segment).  This list
  1032. uses the function categories from Chapter 4 of the Microsoft C
  1033. Optimizing Compiler Run-Time Library Reference (Version 4.0
  1034. or later.)
  1035.  
  1036. Buffer Manipulation: All functions can be called.
  1037.  
  1038. Character Classification and Conversion: All functions can be called.
  1039.  
  1040. Data Conversion: All functions can be called except for
  1041.  
  1042.      strtod()
  1043.  
  1044. Directory Control: All functions can be called except for
  1045.  
  1046.      getcwd()
  1047.  
  1048. File Handling: All functions can be called.
  1049.  
  1050. Low-Level I/O Routines: All functions can be called, but write()
  1051. will not work in binary mode.
  1052.  
  1053. Console and Port I/O: All functions can be called except for
  1054.  
  1055.      cgets()
  1056.      cprintf()
  1057.      cscanf()
  1058.  
  1059. Searching and Sorting: All functions can be called except for
  1060.  
  1061.      qsort()
  1062.  
  1063. String Manipulation: All functions can be called except for
  1064.  
  1065.      strdup()
  1066.  
  1067. BIOS Interface: All functions can be called.
  1068.  
  1069. MS-DOS Interface: All functions can be called except for
  1070.  
  1071.      int86()
  1072.      int86x()
  1073.  
  1074. Time: All functions can be called except for
  1075.  
  1076.      ctime()
  1077.      gmtime()
  1078.      localtime()
  1079.      utime()
  1080.  
  1081. Miscellaneous: All functions can be called except for
  1082.  
  1083.      assert()
  1084.      getenv()
  1085.      perror()
  1086.      putenv()
  1087.      _searchenv()
  1088.  
  1089.  
  1090. Linking Extensions in Protected Mode
  1091. --------------------------------------
  1092. To link C extension modules in protected mode, link with the
  1093. object file EXTHDRP.OBJ, instead of the real-mode header
  1094. EXTHDR.OBJ.
  1095.