LG3%NIHCU.BITNET%cunyvm.cuny.edu@ics.uci.edu (Jerry LaVeck) (07/25/88)
>Is there anyway to create OBJ files from Turbo Pascal 4.0 programs. Yes, it can be done, but it requires a utility from Borland that converts a TPU file to an OBJ file. This converter was written specifically to allow interfacing to Turbo Prolog programs. I don't have FTP access, so I can't post the program. However, it shouldn't be that hard to get. I got my copy from Bob Blanchers Washington DC BBS at 202-547-2008. The file name is TPUOBJ.ARC. I suspect that the file is originally from the CIS Borland forum. I am attaching the documentation from the .ARC file so you can see if this will do what you need. ------------------------ doc starts here -------------------- ************************************** * TPU2OBJ .TPU/.OBJ file converter * ************************************** (c) 1988 Borland International, Inc. All Rights Reserved. It is now possible to generate an .OBJ file from a .TPU file by using the TPU2OBJ converter. The purpose of the TPU2OBJ utility is specifically to make possible the link between Turbo Pascal and Turbo Prolog, as described in the "Language Connections" column in the March/April 1988 issue of TURBO TECHNIX. Other interlanguage links (i.e., with Turbo C or assembly language) may be possible, but we have not tested them exhaustively and do not recommend them at this time. >>>>>>>READ THIS PARAGRAPH<<<<<<< Again, TPU2OBJ is NOT a general solution to the problem of linking Turbo Pascal code to .OBJ modules written in other languages. Please note that we CANNOT guarantee that this utility will work in all circumstances, much as we'd like to. Borland International therefore will NOT provide phone support for problems connected with TPU2OBJ. Note carefully the warnings provided in the TURBO TECHNIX article before you begin using TPU2OBJ. >>>>>>><<<<<<< The advantages of Turbo Pascal's smart linking are lost by converting a .TPU file to an .OBJ file. When an .OBJ file is linked by Turbo Pascal's linker, *all* routines contained in the OBJ file are loaded into the Turbo Pascal code file, whether those routines are referenced or not. What TPU2OBJ generates ====================== TPU2OBJ takes a file XXX.TPU as input and generates XXX.OBJ. Segments and Groups ------------------- The following segments are generated by TPU2OBJ: * UNITNAME_TEXT Class 'CODE' Alignment PARA This segment contains the code generated by Turbo Pascal. * _DATA Class 'DATA' Alignment WORD. This segment contains the typed constant in the unit. * _BSS Class 'BSS' Alignment WORD. This segment contains the variables in the unit. TPU2OBJ groups _DATA and _BSS together in DGROUP. It is not possible to change the segment names and the group name. Publics ------- The variables, procedures and functions in a XXX.TPU interface part are visible in the XXX.OBJ file through the PUBLIC definitions. Exceptions: * absolute variables. * inline procedures/functions. For each procedure/function in a unit, a PUBLIC UNITNAME_XXX is generated in the .OBJ file. These publics are only used internally by other converted units. If a procedure/function is declared in the interface section a PUBLIC is also generated. It is possible to let the UNITNAME be a prefix to the procedure/function name by using TPU2OBJ with option /P. For example, the procedure: procedure Next(I: Integer); will produce a PUBLIC: * NEXT or * UNITNAME_NEXT ( Option /P ) All PUBLICs are in uppercase. External -------- For a reference to another unit an EXTERNAL is generated. These EXTERNALs correspond to the PUBLICs described under the header Publics, above. Using TPU2OBJ ============= To use a Turbo Pascal unit requires that SYSTEM.OBJ (Turbo Pascal's runtime library generated from SYSTEM.TPU) be present. The procedure SYSTEM_INIT must be called first in the program, because this is the intialization and setup code for the PASCAL module. SYSTEM_INIT takes over the following interrupts: * $0 (Divide by 0) * $2 (Nonmaskeble Interrupt) * $23 (Ctrl-C) * $24 (Critical error) * $75 (AT Math Coprocessor) When terminating a program it is necessary to reinstall the original interrupt vectors. It it possible to call SYSTEM_003 to reinstall the vectors and terminate to DOS. SYSTEM_003 always terminates a Turbo Pascal program. Calling the initialization part of a unit ----------------------------------------- To use the intialization part of a unit it is necessary to call the procedure UNITNAME_INIT. Calling more than one unit -------------------------- When a unit USES other units, these additional units must also be converted to .OBJ files and be present at link time. If a unit A uses a unit B, and B is changed, it is necessary to recompile both A and B and convert them again. Limitations of TPU2OBJ ====================== It is only possible to have: * 1024 internal PUBLICS (the ones of the form UNITNAME_XXX ). * 2048 EXTERNALS. -------------------- end of docs ---------------------------- --------------------- | Jerry LaVeck | | Bitnet: LG3@NIHCU | ---------------------
LG3%NIHCU.BITNET@cunyvm.cuny.edu (Jerry LaVeck) (07/27/88)
>Is there anyway to create OBJ files from Turbo Pascal 4.0 programs. Yes, it can be done, but it requires a utility from Borland that converts a TPU file to an OBJ file. This converter was written specifically to allow interfacing to Turbo Prolog programs. I don't have FTP access, so I can't post the program. However, it shouldn't be that hard to get. I got my copy from Bob Blanchers Washington DC BBS at 202-547-2008. The file name is TPUOBJ.ARC. I suspect that the file is originally from the CIS Borland forum. I am attaching the documentation from the .ARC file so you can see if this will do what you need. ------------------------ doc starts here -------------------- ************************************** * TPU2OBJ .TPU/.OBJ file converter * ************************************** (c) 1988 Borland International, Inc. All Rights Reserved. It is now possible to generate an .OBJ file from a .TPU file by using the TPU2OBJ converter. The purpose of the TPU2OBJ utility is specifically to make possible the link between Turbo Pascal and Turbo Prolog, as described in the "Language Connections" column in the March/April 1988 issue of TURBO TECHNIX. Other interlanguage links (i.e., with Turbo C or assembly language) may be possible, but we have not tested them exhaustively and do not recommend them at this time. >>>>>>>READ THIS PARAGRAPH<<<<<<< Again, TPU2OBJ is NOT a general solution to the problem of linking Turbo Pascal code to .OBJ modules written in other languages. Please note that we CANNOT guarantee that this utility will work in all circumstances, much as we'd like to. Borland International therefore will NOT provide phone support for problems connected with TPU2OBJ. Note carefully the warnings provided in the TURBO TECHNIX article before you begin using TPU2OBJ. >>>>>>><<<<<<< The advantages of Turbo Pascal's smart linking are lost by converting a .TPU file to an .OBJ file. When an .OBJ file is linked by Turbo Pascal's linker, *all* routines contained in the OBJ file are loaded into the Turbo Pascal code file, whether those routines are referenced or not. What TPU2OBJ generates ====================== TPU2OBJ takes a file XXX.TPU as input and generates XXX.OBJ. Segments and Groups ------------------- The following segments are generated by TPU2OBJ: * UNITNAME_TEXT Class 'CODE' Alignment PARA This segment contains the code generated by Turbo Pascal. * _DATA Class 'DATA' Alignment WORD. This segment contains the typed constant in the unit. * _BSS Class 'BSS' Alignment WORD. This segment contains the variables in the unit. TPU2OBJ groups _DATA and _BSS together in DGROUP. It is not possible to change the segment names and the group name. Publics ------- The variables, procedures and functions in a XXX.TPU interface part are visible in the XXX.OBJ file through the PUBLIC definitions. Exceptions: * absolute variables. * inline procedures/functions. For each procedure/function in a unit, a PUBLIC UNITNAME_XXX is generated in the .OBJ file. These publics are only used internally by other converted units. If a procedure/function is declared in the interface section a PUBLIC is also generated. It is possible to let the UNITNAME be a prefix to the procedure/function name by using TPU2OBJ with option /P. For example, the procedure: procedure Next(I: Integer); * NEXT or * UNITNAME_NEXT ( Option /P ) All PUBLICs are in uppercase. External -------- For a reference to another unit an EXTERNAL is generated. These EXTERNALs correspond to the PUBLICs described under the header Publics, above. Using TPU2OBJ ============= To use a Turbo Pascal unit requires that SYSTEM.OBJ (Turbo Pascal's runtime library generated from SYSTEM.TPU) be present. The procedure SYSTEM_INIT must be called first in the program, because this is the intialization and setup code for the PASCAL module. SYSTEM_INIT takes over the following interrupts: * $0 (Divide by 0) * $2 (Nonmaskeble Interrupt) * $23 (Ctrl-C) * $24 (Critical error) * $75 (AT Math Coprocessor) When terminating a program it is necessary to reinstall the original interrupt vectors. It it possible to call SYSTEM_003 to reinstall the vectors and terminate to DOS. SYSTEM_003 always terminates a Turbo Pascal program. Calling the initialization part of a unit ----------------------------------------- To use the intialization part of a unit it is necessary to call the procedure UNITNAME_INIT. Calling more than one unit -------------------------- When a unit USES other units, these additional units must also be converted to .OBJ files and be present at link time. If a unit A uses a unit B, and B is changed, it is necessary to recompile both A and B and convert them again. Limitations of TPU2OBJ ====================== It is only possible to have: * 1024 internal PUBLICS (the ones of the form UNITNAME_XXX ). * 2048 EXTERNALS. -------------------- end of docs ---------------------------- --------------------- | Jerry LaVeck | | Bitnet: LG3@NIHCU | ---------------------