home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 June / SIMTEL_0692.cdr / msdos / turbopas / tpuobj.arc / TPU2OBJ.DOC < prev    next >
Text File  |  1988-05-11  |  5KB  |  152 lines

  1.  
  2.              **************************************
  3.              *  TPU2OBJ .TPU/.OBJ file converter  *
  4.              **************************************
  5.  
  6. (c) 1988 Borland International, Inc.  All Rights Reserved.
  7.  
  8.  
  9. It is now possible to generate an .OBJ file from a .TPU file by
  10. using the TPU2OBJ converter.  The purpose of the TPU2OBJ utility
  11. is specifically to make possible the link between Turbo Pascal and
  12. Turbo Prolog, as described in the "Language Connections" column in
  13. the March/April 1988 issue of TURBO TECHNIX.  Other interlanguage
  14. links (i.e., with Turbo C or assembly language) may be possible,
  15. but we have not tested them exhaustively and do not recommend them
  16. at this time.
  17.  
  18.  
  19.                >>>>>>>READ THIS PARAGRAPH<<<<<<<
  20.  
  21. Again, TPU2OBJ is NOT a general solution to the problem of linking
  22. Turbo Pascal code to .OBJ modules written in other languages.
  23. Please note that we CANNOT guarantee that this utility will work
  24. in all circumstances, much as we'd like to. Borland International
  25. therefore will NOT provide phone support for problems connected
  26. with TPU2OBJ.  Note carefully the warnings provided in the TURBO
  27. TECHNIX article before you begin using TPU2OBJ.
  28.  
  29.                          >>>>>>><<<<<<<
  30.  
  31. The advantages of Turbo Pascal's smart linking are lost by
  32. converting a .TPU file to an .OBJ file.  When an .OBJ file is
  33. linked by Turbo Pascal's linker, *all* routines contained in the
  34. .OBJ file are loaded into the Turbo Pascal code file, whether
  35. those routines are referenced or not.
  36.  
  37. What TPU2OBJ generates
  38. ======================
  39.  
  40. TPU2OBJ takes a file XXX.TPU as input and generates XXX.OBJ.
  41.  
  42.  
  43. Segments and Groups
  44. -------------------
  45.  
  46. The following segments are generated by TPU2OBJ:
  47.  
  48.      * UNITNAME_TEXT Class 'CODE' Alignment PARA
  49.        This segment contains the code generated by Turbo Pascal.
  50.  
  51.      * _DATA         Class 'DATA'  Alignment WORD.
  52.        This segment contains the typed constant in the unit.
  53.  
  54.      * _BSS          Class 'BSS'   Alignment WORD.
  55.        This segment contains the variables in the unit.
  56.  
  57.  
  58.  
  59. TPU2OBJ groups _DATA and _BSS together in DGROUP.
  60.  
  61. It is not possible to change the segment names and the group
  62. name.
  63.  
  64.  
  65. Publics
  66. -------
  67.  
  68. The variables, procedures and functions in a XXX.TPU interface
  69. part are visible in the XXX.OBJ file through the PUBLIC
  70. definitions.
  71.  
  72. Exceptions:
  73.  
  74.      * absolute variables.
  75.  
  76.      * inline procedures/functions.
  77.  
  78. For each procedure/function in a unit, a PUBLIC UNITNAME_XXX is
  79. generated in the .OBJ file. These publics are only used
  80. internally by other converted units.  If a procedure/function is
  81. declared in the interface section a PUBLIC is also generated.
  82.  
  83. It is possible to let the UNITNAME be a prefix to the
  84. procedure/function name by using TPU2OBJ with option /P.
  85. For example, the procedure:
  86.  
  87.              procedure Next(I: Integer);
  88.  
  89. will produce a PUBLIC:
  90.  
  91.  * NEXT or
  92.  * UNITNAME_NEXT ( Option /P )
  93.  
  94. All PUBLICs are in uppercase.
  95.  
  96.  
  97. External
  98. --------
  99. For a reference to another unit an EXTERNAL is generated. These
  100. EXTERNALs correspond to the PUBLICs described under the header
  101. Publics, above.
  102.  
  103.  
  104. Using TPU2OBJ
  105. =============
  106.  
  107. To use a Turbo Pascal unit requires that SYSTEM.OBJ
  108. (Turbo Pascal's runtime library generated from SYSTEM.TPU) be
  109. present. The procedure SYSTEM_INIT must be called first in the
  110. program, because this is the intialization and setup code for the
  111. PASCAL module.
  112.  
  113. SYSTEM_INIT takes over the following interrupts:
  114.   *  $0  (Divide by 0)
  115.   *  $2  (Nonmaskeble Interrupt)
  116.   *  $23 (Ctrl-C)
  117.   *  $24 (Critical error)
  118.   *  $75 (AT Math Coprocessor)
  119.  
  120. When terminating a program it is necessary to reinstall the
  121. original interrupt vectors.
  122.  
  123. It it possible to call SYSTEM_003 to reinstall the vectors and
  124. terminate to DOS.
  125.  
  126. SYSTEM_003 always terminates a Turbo Pascal program.
  127.  
  128.  
  129. Calling the initialization part of a unit
  130. -----------------------------------------
  131. To use the intialization part of a unit it is necessary to call
  132. the procedure UNITNAME_INIT.
  133.  
  134.  
  135. Calling more than one unit
  136. --------------------------
  137.  
  138. When a unit USES other units, these additional units must also be
  139. converted to .OBJ files and be present at link time.
  140. If a unit A uses a unit B, and B is changed, it is necessary to
  141. recompile both A and B and convert them again.
  142.  
  143.  
  144.  
  145. Limitations of TPU2OBJ
  146. ======================
  147.  
  148. It is only possible to have:
  149.  
  150.   * 1024 internal PUBLICS (the ones of the form UNITNAME_XXX ).  
  151.   * 2048 EXTERNALS.
  152.