home *** CD-ROM | disk | FTP | other *** search
/ The Devil's Doorknob BBS Capture (1996-2003) / devilsdoorknobbbscapture1996-2003.iso / Dloads / OTHERUTI / TCPP30-3.ZIP / DOC.ZIP / UTIL.DOC < prev   
Text File  |  1992-02-18  |  200KB  |  5,047 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6. CONTENTS
  7. ___________________________________________________________________________
  8.  
  9.  
  10.  
  11.  
  12.  
  13.                                            Linker response files . . . . 28
  14. HOW TO USE THIS FILE . . . . . . . 1     Sample OBJXREF reports  . . . . 28
  15. BGIOBJ: Converting graphics drivers        Report by public names
  16. and fonts  . . . . . . . . . . . . 2       (/RP) . . . . . . . . . . . . 29
  17.   Adding the new .OBJ files to             Report by module (/RM)  . . . 29
  18.   GRAPHICS.LIB . . . . . . . . . . 3       Report by reference (/RR) . . 30
  19.   Registering the drivers and              Report by external references
  20.   fonts  . . . . . . . . . . . . . 3       (/RX) . . . . . . . . . . . . 30
  21.     An example . . . . . . . . . . 4       Report of module sizes
  22.   The /F option  . . . . . . . . . 5       (/RS) . . . . . . . . . . . . 31
  23.   Advanced features  . . . . . . . 6       Report by class type (/RC)  . 31
  24. CPP: The preprocessor  . . . . .  10       Report of unreferenced symbol
  25.   CPP as a macro preprocessor  .  11       names (/RU) . . . . . . . . . 32
  26.   An example . . . . . . . . . .  11       Verbose reporting (/RV) . . . 32
  27. GREP: A text-search utility  . .  12     Examples of how to use
  28.   Command-line syntax  . . . . .  13     OBJXREF . . . . . . . . . . . . 32
  29.   GREP options . . . . . . . . .  13       Example 1 . . . . . . . . . . 32
  30.     Order of precedence  . . . .  16       Example 2 . . . . . . . . . . 33
  31.   The search string  . . . . . .  16       Example 3 . . . . . . . . . . 33
  32.     Operators in regular                   Example 4 . . . . . . . . . . 33
  33.     expressions  . . . . . . . .  17     OBJXREF error messages and
  34.   File specifications  . . . . .  18     warnings  . . . . . . . . . . . 34
  35.   Some GREP examples . . . . . .  18       Error messages  . . . . . . . 34
  36.     Example 1  . . . . . . . . .  18       Warnings  . . . . . . . . . . 34
  37.     Example 2  . . . . . . . . .  19   PRJCFG: Configuration file
  38.     Example 3  . . . . . . . . .  19   utility . . . . . . . . . . . . . 35
  39.     Example 4  . . . . . . . . .  20   PRJCNVT: Old projects for new . . 35
  40.     Example 5  . . . . . . . . .  20   PRJ2MAK: From project file to MAKE
  41.     Example 6  . . . . . . . . .  21   file  . . . . . . . . . . . . . . 36
  42.     Example 7  . . . . . . . . .  21   THELP: The Turbo Help utility . . 37
  43.     Example 8  . . . . . . . . .  22     Loading and invoking THELP  . . 37
  44. OBJXREF: The object module cross-        Navigating THELP  . . . . . . . 38
  45. reference utility  . . . . . . .  22     THELP options . . . . . . . . . 39
  46.   The OBJXREF command line . . .  23       /C#xx (select color)  . . . . 40
  47.     The OBJXREF command-line               /Fname (full path and name for
  48.     options  . . . . . . . . . .  24       help file)  . . . . . . . . . 41
  49.       Control options  . . . . .  24       /H, /?, and ? (display help
  50.       Report options . . . . . .  25       screen) . . . . . . . . . . . 42
  51.   Response files . . . . . . . .  27       /Kxxyy (reassign hot key) . . 42
  52.     Free-form response files . .  27       /U (remove THELP from
  53.     Project files  . . . . . . .  27       memory) . . . . . . . . . . . 43
  54.  
  55.  
  56.  
  57.                                      i
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.     /Wx,y,w,h (set the window size     TRANCOPY: A project transfer item
  65.     and location)  . . . . . . .  43   utility . . . . . . . . . . . . . 52
  66. TLIB . . . . . . . . . . . . . .  43   TRIGRAPH: A character-conversion
  67.   Why use object module                utility . . . . . . . . . . . . . 53
  68.   libraries? . . . . . . . . . .  44   Transfer macros . . . . . . . . . 54
  69.   The TLIB command line  . . . .  44         State macros  . . . . . . . 54
  70.     The operation list . . . . .  46         File name macros  . . . . . 54
  71.       File and module names  . .  46         Instruction macros  . . . . 55
  72.       TLIB operations  . . . . .  46     Running DOS commands  . . . . . 59
  73.   Using response files . . . . .  48     Transfer memory settings  . . . 59
  74.   Creating an extended dictionary:     Turbo Editor macros . . . . . . . 60
  75.   The /E option  . . . . . . . .  49   TEMC command line . . . . . . . . 60
  76.   Setting the page size: The /P        Syntax  . . . . . . . . . . . . . 61
  77.   option . . . . . . . . . . . .  49   Key codes . . . . . . . . . . . . 62
  78.   Advanced operation: The /C             Named keys  . . . . . . . . . . 63
  79.   option . . . . . . . . . . . .  50   Predefined editor commands  . . . 64
  80.   Examples . . . . . . . . . . .  51
  81. TOUCH  . . . . . . . . . . . . .  51   Index                             77
  82.  
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.                                     ii
  116.  
  117.  
  118.  
  119.  
  120.  
  121.  
  122. TABLES
  123. ___________________________________________________________________________
  124.  
  125.  
  126.  
  127.  
  128.  
  129. 1.1: Summary of THELP command-line     1.3: TLIB action symbols  . . . . 47
  130.      options . . . . . . . . . . .39   1.4: TEMC editor commands . . . . 64
  131. 1.2: TLIB options  . . . . . . . .45
  132.  
  133.  
  134.  
  135.  
  136.  
  137.  
  138.  
  139.  
  140.  
  141.  
  142.  
  143.  
  144.  
  145.  
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152.  
  153.  
  154.  
  155.  
  156.  
  157.  
  158.  
  159.  
  160.  
  161.  
  162.  
  163.  
  164.  
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.                                     iii
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186. Online document
  187. ___________________________________________________________________________
  188.  
  189.  
  190.  
  191.                                                             Other utilities
  192.  
  193.  
  194.  
  195.  
  196. ===========================================================================
  197. HOW TO USE THIS FILE
  198. ===========================================================================
  199.  
  200.                     This file has a table of contents and an index that
  201.                     refer to "pages" in this file. If your editor has a
  202.                     search facility, you can use it to search for the page
  203.                     numbers listed in either the table of contents or in
  204.                     the index. The text "- n -" (where n represents the
  205.                     actual page number) appears at the bottom left of the
  206.                     "page" it refers to. Thus, at the bottom of page 1,
  207.                     you'll find "- 1 -" as the last item on that "page."
  208.  
  209.                     Turbo C++ comes with a host of standalone utilities
  210.                     that you can use with your Turbo C++ files or other
  211.                     modules. Several are documented in the User's Guide;
  212.                     others are documented here.
  213.  
  214.  
  215.                     -------------------------------------------------------
  216.                     Name       Description
  217.                     -------------------------------------------------------
  218.  
  219.                     Documented in the User's Guide
  220.  
  221.                     MAKE       Standalone program manager
  222.                     TLINK      Turbo Linker
  223.  
  224.                     Documented in this file
  225.  
  226.                     BGIOBJ     Conversion utility for graphics drivers and
  227.                                fonts
  228.  
  229.  
  230.  
  231.                                    - 1 -
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.                     CPP        Preprocessor
  239.                     GREP       File-search utility
  240.                     OBJXREF    Object module cross-referencer
  241.                     PRJCFG     Updates options in a project file from a
  242.                                configuration file, or converts a project
  243.                                file to a configuration file
  244.                     PRJCNVT    Converts Turbo C project files to the Turbo
  245.                                C++ format
  246.                     PRJ2MAK    Converts Turbo C++ project files to MAKE
  247.                                files
  248.                     THELP      Turbo Help utility
  249.                     TLIB       Turbo Librarian
  250.                     TOUCH      Updates file date and time
  251.                     TRANCOPY   Copies transfer items from one project to
  252.                                another
  253.                     TRIGRAPH   Character-conversion utility
  254.                     TEML/TEMC  Turbo Editor Macro Language and Compiler
  255.  
  256.                     -------------------------------------------------------
  257.  
  258.                     This file explains what each utility is and
  259.                     illustrates, with code and command-line examples, how
  260.                     to use them.
  261.  
  262.  
  263.  
  264. ===========================================================================
  265. BGIOBJ: Converting graphics drivers and fonts
  266. ===========================================================================
  267.  
  268.                     You can use BGIOBJ to convert graphics driver files and
  269.                     character sets (stroked font files) to object (.OBJ)
  270.                     files. Once they're converted, you can link them into
  271.                     your program, making them part of the executable file.
  272.                     This is in addition to the graphics package's dynamic
  273.                     loading scheme, in which your program loads graphics
  274.                     drivers and character sets (stroked fonts) from disk at
  275.                     run time.
  276.  
  277.                     Linking drivers and fonts directly into your program is
  278.                     advantageous because the executable file contains all
  279.                     (or most) of the drivers and/or fonts it might need,
  280.                     and doesn't need to access the driver and font files on
  281.                     disk when running. However, linking the drivers and
  282.                     fonts into your executable file increases its size.
  283.  
  284.  
  285.  
  286.  
  287.  
  288.  
  289.                                    - 2 -
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.                     To convert a driver or font file to a linkable object
  297.                     file, use the BGIOBJ.EXE utility. This is the
  298.                     simplified syntax:
  299.  
  300.                       BGIOBJ source_file
  301.  
  302.                     where source_file is the driver or font file to be
  303.                     converted to an object file. The object file created
  304.                     has the same file name as the source file, with the
  305.                     extension .OBJ; for example, EGAVGA.BGI yields
  306.                     EGAVGA.OBJ, SANS.CHR gives SANS.OBJ, and so on.
  307.  
  308.  
  309.     Adding the new  =======================================================
  310.      .OBJ files to
  311.       GRAPHICS.LIB  You should add the driver and font object modules to
  312.                     GRAPHICS.LIB, so the linker can locate them when it
  313.                     links in the graphics routines. If you don't add these
  314.                     new object modules to GRAPHICS.LIB, you'll have to add
  315.                     them to the list of files in the project (.PRJ) file,
  316.                     on the TCC command line, or on the TLINK command line.
  317.                     To add these object modules to GRAPHICS.LIB, invoke
  318.                     TLIB with the following command line:
  319.  
  320.                       tlib graphics + object_file_name [+ object_file_name
  321.                     ...]
  322.  
  323.                     where object_file_name is the name of the object file
  324.                     created by BGIOBJ.EXE (such as CGA, EGAVGA, GOTH, and
  325.                     so forth). The .OBJ extension is implied, so you don't
  326.                     need to include it. You can add several files with one
  327.                     command line to save time; see the example in the
  328.                     following section.
  329.  
  330.  
  331.    Registering the  =======================================================
  332.  drivers and fonts
  333.                     After adding driver and font object modules to
  334.                     GRAPHICS.LIB, you have to register all the drivers and
  335.                     fonts that you want linked in; you do this by calling
  336.                     registerbgidriver and registerbgifont in your program
  337.                     (before calling initgraph). This informs the graphics
  338.                     system of the presence of those files, and ensures that
  339.                     they will be linked in when the executable file is
  340.                     created by the linker.
  341.  
  342.                     The registering routines each take one parameter; a
  343.                     symbolic name defined in graphics.h. Each registering
  344.  
  345.  
  346.  
  347.                                    - 3 -
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.                     routine returns a nonnegative value if the driver or
  355.                     font is successfully registered.
  356.  
  357.                     The following table shows the names to be used with
  358.                     registerbgidriver and registerbgifont. It is a complete
  359.                     list of drivers and fonts included with Turbo C++.
  360.  
  361.  
  362. ---------------------------------------------------------------------------
  363.  Driver file     registerbgidriver      Font file   registerbgifont
  364.  (*.BGI)         symbolic name          (*.CHR)     symbolic name
  365. ---------------------------------------------------------------------------
  366.  
  367.  CGA             CGA_driver             TRIP        triplex_font
  368.  EGAVGA          EGAVGA_driver          LITT        small_font
  369.  HERC            Herc_driver            SANS        sansserif_font
  370.  ATT             ATT_driver             GOTH        gothic_font
  371.  PC3270          PC3270_driver
  372.  IBM8514         IBM8514_driver
  373.  
  374. ---------------------------------------------------------------------------
  375.  
  376.  
  377. ------------------  Suppose you want to convert the files for the CGA
  378.         An example  graphics driver, the gothic font, and the triplex font
  379. ------------------  to object modules, then link them into your program.
  380.                     Here's what you do:
  381.  
  382.                     1. Convert the binary files to object files using
  383.                        BGIOBJ.EXE, as shown in the following separate com-
  384.                        mand lines:
  385.  
  386.                         bgiobj  cga
  387.                         bgiobj  trip
  388.                         bgiobj  goth
  389.  
  390.                        This creates three files: CGA.OBJ, TRIP.OBJ, and
  391.                        GOTH.OBJ.
  392.  
  393.                     2. You can add these object files to GRAPHICS.LIB with
  394.                        this TLIB command line:
  395.  
  396.                           tlib  graphics  +cga  +trip  +goth
  397.  
  398.                     3. If you don't add the object files to GRAPHICS.LIB,
  399.                        you must add the object file names CGA.OBJ,
  400.                        TRIP.OBJ, and GOTH.OBJ to your project list (if you
  401.                        are using Turbo C++'s integrated environment), or to
  402.  
  403.  
  404.  
  405.                                    - 4 -
  406.  
  407.  
  408.  
  409.  
  410.  
  411.  
  412.                        the TCC command line. For example, the TCC command
  413.                        line would look like this:
  414.  
  415.                           TCC  niftgraf graphics.lib  cga.obj  trip.obj
  416.                        goth.obj
  417.  
  418.                     4. You register these files in your graphics program
  419.                        like this:
  420.  
  421.  If you ever get a      /* Header file declares CGA_driver, triplex_font &
  422.       linker error      gothic_font */
  423.    Segment exceeds      #include <graphics.h>
  424.  64K after linking
  425.    in some drivers      /* Register and check for errors (one never
  426.      and/or fonts,      knows...) */
  427.       refer to the
  428. following section.      if (registerbgidriver(CGA_driver) < 0) exit(1);
  429.                         if (registerbgifont(triplex_font) < 0) exit(1);
  430.                         if (registerbgifont(gothic_font)  < 0) exit(1);
  431.  
  432.                         /* ... */
  433.  
  434.                         initgraph(....);     /* initgraph should be called
  435.                                                 after registering */
  436.  
  437.                         /* ... */
  438.  
  439.  
  440.      The /F option  =======================================================
  441.  
  442.                     This section explains what steps to take if you get the
  443.                     linker error Segment exceeds 64K (or a similar error)
  444.                     after linking in several driver and/or font files
  445.                     (especially with small- and compact-model programs).
  446.  
  447.                     By default, the files created by BGIOBJ.EXE all use the
  448.                     same segment (called _TEXT). This can cause problems if
  449.                     your program links in many drivers and/or fonts, or
  450.                     when you're using the small or compact memory model.
  451.  
  452.                     To solve this problem, you can convert one or more of
  453.                     the drivers or fonts with the BGIOBJ /F option. This
  454.                     option directs BGIOBJ to use a segment name of the form
  455.                     filename_TEXT, so that the default segment is not
  456.                     overburdened by all the linked-in drivers and fonts
  457.                     (and, in small and compact model programs, all the pro-
  458.                     gram code). For example, the following two BGIOBJ com-
  459.  
  460.  
  461.  
  462.  
  463.                                    - 5 -
  464.  
  465.  
  466.  
  467.  
  468.  
  469.  
  470.                     mand lines direct BGIOBJ to use segment names of the
  471.                     form EGAVGA_TEXT and SANS_TEXT.
  472.  
  473.                      bgiobj  /F  egavga
  474.                      bgiobj  /F  sans
  475.  
  476.                     When you select /F, BGIOBJ also appends F to the target
  477.                     object file name (EGAVGAF.OBJ, SANSF.OBJ, and so
  478.                     forth), and appends _far to the name that will be used
  479.                     with registerfarbgidriver and registerfarbgifont. (For
  480.                     example, EGAVGA_driver becomes EGAVGA_driver_far.)
  481.  
  482.                     For files created with /F, you must use these far
  483.                     registering routines instead of the regular
  484.                     registerbgidriver and registerbgifont. For example,
  485.  
  486.                      if (registerfarbgidriver(EGAVGA_driver_far) < 0)
  487.                      exit(1);
  488.                      if (registerfarbgifont(sansserif_font_far)  < 0)
  489.                      exit(1);
  490.  
  491.  
  492.  Advanced features  =======================================================
  493.  
  494.                     This section explains some of BGIOBJ's advanced
  495.                     features, and the routines registerfarbgidriver and
  496.                     registerfarbgifont. Only experienced users should use
  497.                     these features.
  498.  
  499.                     This is the full syntax of the BGIOBJ.EXE command line:
  500.  
  501.                        BGIOBJ  [/F] source destination public-name seg-name
  502.                     seg-class
  503.  
  504.                     This table describes each component of the BGIOBJ com-
  505.                     mand line.
  506.  
  507.  
  508.                     -------------------------------------------------------
  509.                     Component              Description
  510.                     -------------------------------------------------------
  511.  
  512.  
  513.                     /F or -F               This option instructs BGIOBJ.EXE
  514.                                            to use a segment name other than
  515.                                            _TEXT (the default), and to
  516.                                            change the public name and
  517.                                            destination file name. (See page
  518.  
  519.  
  520.  
  521.                                    - 6 -
  522.  
  523.  
  524.  
  525.  
  526.  
  527.  
  528.                                            5 for a detailed discussion of
  529.                                            /F.)
  530.  
  531.                     source                 This is the driver or font file
  532.                                            to be converted. If the file is
  533.                                            not one of the driver/font files
  534.                                            shipped with Turbo C++, you
  535.                                            should specify a full file name
  536.                                            (including extension).
  537.  
  538.                     destination            This is the name of the object
  539.                                            file to be produced. The default
  540.                                            destination file name is
  541.                                            source.OBJ, or sourceF.OBJ if
  542.                                            you use the /F option.
  543.  
  544.                     public-name            This is the name that will be
  545.                                            used in the program in a call to
  546.                                            registerbgidriver or
  547.                                            registerbgifont (or their
  548.                                            respective far versions) to link
  549.                                            in the object module.
  550.  
  551.                                            The public name is the external
  552.                                            name used by the linker, so it
  553.                                            should be the name used in the
  554.                                            program, prefixed with an
  555.                                            underscore. If your program uses
  556.                                            Pascal calling conventions, use
  557.                                            only uppercase letters, and do
  558.                                            not add an underscore.
  559.  
  560.                     seg-name               This is an optional segment
  561.                                            name; the default is _TEXT (or
  562.                                            filename_TEXT if /F is
  563.                                            specified)
  564.  
  565.                     seg-class              This is an optional segment
  566.                                            class; the default is CODE.
  567.  
  568.                     -------------------------------------------------------
  569.  
  570.                     All parameters except source are optional. However, if
  571.                     you need to specify an optional parameter, all the
  572.                     parameters preceding it must also be specified.
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.                                    - 7 -
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.                     If you choose to use your own public name(s), you have
  587.                     to add declaration(s) to your program, using one of the
  588.                     following forms:
  589.  
  590.                      void public_name(void);        /* if /F not used, */
  591.                                                     /* default segment name
  592.                      used */
  593.  
  594.                      extern int far public_name[];  /* if /F used, or */
  595.                                                     /* segment name not
  596.                      _TEXT */
  597.  
  598.                     In these declarations, public_name matches the public-
  599.                     name you used when converting with BGIOBJ. The
  600.                     graphics.h header file contains declarations of the
  601.                     default driver and font public names; if you use those
  602.                     default public names you don't have to declare them as
  603.                     just described.
  604.  
  605.                     After these declarations, you have to register all the
  606.                     drivers and fonts in your program. If you don't use the
  607.                     /F option and don't change the default segment name,
  608.                     you should register drivers and fonts through
  609.                     registerbgidriver and registerbgifont; otherwise, use
  610.                     registerfarbgidriver and registerfarbgifont.
  611.  
  612.                     Here is an example of a program that loads a font file
  613.                     into memory:
  614.  
  615.                      /* Example of loading a font file into memory */
  616.  
  617.                      #include <graphics.h>
  618.                      #include <io.h>
  619.                      #include <fcntl.h>
  620.                      #include <stdio.h>
  621.                      #include <conio.h>
  622.                      #include <stdlib.h>
  623.                      #include <process.h>
  624.                      #include <alloc.h>
  625.  
  626.                      main()
  627.                      {
  628.                         void    *gothic_fontp;    /* points to font buffer
  629.                      in memory */
  630.                         int      handle;          /* file handle used for
  631.                      I/O */
  632.                         unsigned fsize;           /* size of file (and
  633.                      buffer) */
  634.  
  635.  
  636.  
  637.                                    - 8 -
  638.  
  639.  
  640.  
  641.  
  642.  
  643.  
  644.                         int errorcode;
  645.                         int graphdriver;
  646.                         int graphmode;
  647.  
  648.                      /* open font file */
  649.                         handle = open("GOTH.CHR", O_RDONLY|O_BINARY);
  650.                         if (handle == -1)
  651.                         {
  652.                            printf("unable to open font file 'GOTH.CHR'\n");
  653.                            exit(1);
  654.                         }
  655.                      /* find out size of the file */
  656.                         fsize = filelength(handle);
  657.                      /* allocate buffer */
  658.                         gothic_fontp = malloc(fsize);
  659.                         if (gothic_fontp == NULL)
  660.                         {
  661.                           printf("unable to allocate memory for font file
  662.                      'GOTH.CHR'\n");
  663.                           exit(1);
  664.                         }
  665.                      /* read font into memory */
  666.                         if (read(handle, gothic_fontp, fsize) != fsize)
  667.                         {
  668.                            printf("unable to read font file 'GOTH.CHR'\n");
  669.                            exit(1);
  670.                         }
  671.                      /* close font file */
  672.                         close(handle);
  673.                      /* register font */
  674.                         if (registerfarbgifont(gothic_fontp) !=
  675.                      GOTHIC_FONT)
  676.                         {
  677.                            printf("unable to register font file
  678.                      'GOTH.CHR'\n");
  679.                            exit(1);
  680.                         }
  681.                      /* detect and initialize graphix */
  682.                         graphdriver = DETECT;
  683.                         initgraph(&graphdriver, &graphmode, "..");
  684.                         errorcode = graphresult();
  685.                         if (errorcode != grOk)
  686.                         {
  687.                            printf("graphics error:
  688.                      %s\n",grapherrormsg(errorcode));
  689.                            exit(1);
  690.                         }
  691.                         settextjustify(CENTER_TEXT, CENTER_TEXT);
  692.  
  693.  
  694.  
  695.                                    - 9 -
  696.  
  697.  
  698.  
  699.  
  700.  
  701.  
  702.                         settextstyle(GOTHIC_FONT, HORIZ_DIR, 4);
  703.                         outtextxy(getmaxx()/2,getmaxy()/2,
  704.                                   "Borland Graphics Interface (BGI)");
  705.                      /* press a key to terminate */
  706.                         getch();
  707.                      /* shut down graphics system */
  708.                         closegraph();
  709.                         return(0);
  710.                      }
  711.  
  712.  
  713.  
  714. ===========================================================================
  715. CPP: The preprocessor
  716. ===========================================================================
  717.  
  718.     CPP produces a  Often, when the compiler reports an error inside a
  719.   list (in a file)  macro or an include file, you can get more information
  720.      of a C source  about what the error is if you can see the include
  721.   program in which  files or the results of the macro expansions. In many
  722.  include files and  multi-pass compilers, a separate pass performs this
  723.     #define macros  work, and the results of the pass can be examined.
  724.          have been  Since Turbo C++ uses an integrated single-pass compil-
  725.    expanded. It is  er, we provided CPP to supply the first-pass
  726.     not needed for  functionality found in other compilers.
  727.     normal compil-
  728.        ations of C  You use CPP just as you would use TCC, the standalone
  729.          programs.  compiler. CPP reads the same TURBOC.CFG file for
  730.                     default options, and accepts the same command-line
  731.                     options as TCC.
  732.  
  733.                     The TCC options that don't pertain to CPP are simply
  734.                     ignored by CPP. To see the list of arguments handled by
  735.                     CPP, type cpp at the DOS prompt. To see how those
  736.                     arguments work, see Chapter 5 in the Programmer's
  737.                     Guide.
  738.  
  739.                     With one exception, the file names listed on the CPP
  740.                     command line are treated like they are in TCC, with
  741.                     wildcards allowed. The exception to this is that all
  742.                     files are treated as C source files. There is no
  743.                     special treatment for .OBJ, .LIB, or .ASM files.
  744.  
  745.                     For each file processed by CPP, the output is written
  746.                     to a file in the current directory (or the output
  747.                     directory named by the -n option) with the same name as
  748.                     the source name but with an extension of .I.
  749.  
  750.  
  751.  
  752.  
  753.                                   - 10 -
  754.  
  755.  
  756.  
  757.  
  758.  
  759.  
  760.                     This output file is a text file containing each line of
  761.                     the source file and any include files. Any preproces-
  762.                     sing directive lines have been removed, along with any
  763.                     conditional text lines excluded from the compile.
  764.                     Unless you use a command-line option to specify other-
  765.                     wise, text lines are prefixed with the file name and
  766.                     line number of the source or include file the line came
  767.                     from. Within a text line, any macros are replaced with
  768.                     their expansion text.
  769.  
  770.         Important!  The resulting output of CPP cannot be compiled because
  771.                     of the file name and line number prefix attached to
  772.                     each source line.
  773.  
  774.  
  775.     CPP as a macro  =======================================================
  776.       preprocessor
  777.                     The -P option to CPP tells it to prefix each line with
  778.                     the source file name and line number. If you give it -
  779.                     P- (turning this option off), CPP omits this line
  780.                     number information. With this option turned off, CPP
  781.                     can be used as a macro preprocessor; the resulting .I
  782.                     file can then be compiled with TC or TCC.
  783.  
  784.  
  785.         An example  =======================================================
  786.  
  787.                     The following simple program illustrates how CPP
  788.                     preprocesses a file, first with -P selected, then with
  789.                     -P-.
  790.  
  791.                     Source file: HELLOAJ.C
  792.                      #define NAME "H.R. Floyd"
  793.                      #define BEGIN {
  794.                      #define END   }
  795.  
  796.                      main()
  797.                      BEGIN
  798.                         printf("%s\n", NAME);
  799.                      END
  800.  
  801.                     Command line used to invoke CPP as a preprocessor:
  802.                        CPP HELLOAJ.C
  803.  
  804.                     Output:
  805.                      HELLOAJ.c 1:
  806.                      HELLOAJ.c 2:
  807.                      HELLOAJ.c 3:
  808.  
  809.  
  810.  
  811.                                   - 11 -
  812.  
  813.  
  814.  
  815.  
  816.  
  817.  
  818.                      HELLOAJ.c 4:
  819.                      HELLOAJ.c 5: main()
  820.                      HELLOAJ.c 6: {
  821.                      HELLOAJ.c 7:    printf("%s\n","H.R. Floyd");
  822.                      HELLOAJ.c 8: }
  823.  
  824.                     Command line used to invoke CPP as a macro
  825.                     preprocessor:
  826.                        CPP -P- HELLOAJ.C
  827.  
  828.                     Output:
  829.                      main()
  830.                      {
  831.                         printf("%s\n","H.R. Floyd");
  832.                      }
  833.  
  834.  
  835.  
  836. ===========================================================================
  837. GREP: A text-search utility
  838. ===========================================================================
  839.  
  840.                     GREP (Global Regular Expression Print) is a powerful
  841.                     text-search program derived from the UNIX utility of
  842.                     the same name. GREP searches for a text pattern in one
  843.                     or more files or in its standard input stream.
  844.  
  845.                     Here's a quick example of a situation where you might
  846.                     want to use GREP. Suppose you wanted to find out which
  847.                     text files in your current directory contained the
  848.                     string "Bob". You would issue the command
  849.  
  850.                        grep Bob *.txt
  851.  
  852.                     and GREP would respond with a list of the lines in each
  853.                     file (if any) that contained the string "Bob". Because
  854.                     the default for GREP is to ignore case, the strings
  855.                     "bob" and "BoB" would also be considered matches. You
  856.                     can use options to make your search case sensitive.
  857.  
  858.                     GREP can do a lot more than match a single, fixed
  859.                     string. In the section that follows, you'll see how to
  860.                     make GREP search for any string that matches a
  861.                     particular pattern.
  862.  
  863.  
  864.  
  865.  
  866.  
  867.  
  868.  
  869.                                   - 12 -
  870.  
  871.  
  872.  
  873.  
  874.  
  875.  
  876.       Command-line  =======================================================
  877.             syntax
  878.                     The general command-line syntax for GREP is
  879.  
  880.                       grep [options] searchstring [file(s) ... ]
  881.  
  882.                     options consist of one or more letters, preceded by a
  883.                     hyphen (-), that let you change various aspects of
  884.                     GREP's behavior.
  885.  
  886.                     searchstring gives the pattern to search for.
  887.  
  888.                     file(s) tells GREP which files to search. (If you don't
  889.                     specify a file, GREP searches its standard input; this
  890.                     lets you use GREP with pipes and redirection.) If you
  891.                     find that the results of your GREP are longer than one
  892.                     screen, you can redirect the output to a file. For
  893.                     example, you could use this command
  894.  
  895.                        GREP "Bob" *.txt >gfile
  896.  
  897.                     which searches all files in the current directory that
  898.                     end with .TXT, then places the results in a file called
  899.                     GFILE. (You can name this file anything you like.)
  900.                     Then, use your word processor (or Turbo C++'s editor)
  901.                     to access GFILE to read the results of the search.
  902.  
  903.                     The command
  904.  
  905.                        GREP ?
  906.  
  907.                     prints a brief help screen showing GREP's command-line
  908.                     options, special characters, and defaults. (See the
  909.                     description of the -u command-line option for
  910.                     information on how to change GREP's defaults.)
  911.  
  912.  
  913.       GREP options  =======================================================
  914.  
  915.                     In the command line, options are one or more single
  916.                     characters preceded by a hyphen (-). Each individual
  917.                     character is a switch that you can turn on or off: A
  918.                     plus symbol (+) after a character turns the option on;
  919.                     a hyphen (-) after the character turns the option off.
  920.                     The + sign is optional; for example, -r means the same
  921.                     thing as -r+. You can list multiple options
  922.  
  923.  
  924.  
  925.  
  926.  
  927.                                   - 13 -
  928.  
  929.  
  930.  
  931.  
  932.  
  933.  
  934.                     individually (like this: -i -d -l), or you can combine
  935.                     them (like this: -ild or -il, -d, and so on); it's all
  936.                     the same to GREP.
  937.  
  938.                     Here are the GREP option characters and their meanings:
  939.  
  940.  
  941. ------------------------------------------------------------------------------
  942. Option Meaning
  943. ------------------------------------------------------------------------------
  944.  
  945.  
  946.   -c   Match Count only: Prints only a count of matching lines. For each file
  947.        that contains at least one matching line, GREP prints the file name and
  948.        a count of the number of matching lines. Matching lines are not
  949.        printed. This option is off by default.
  950.  
  951.   -d   Search subdirectories: For each file specified on the command line,
  952.        GREP searches for all files that match the file specification, both in
  953.        the directory specified and in all subdirectories below the specified
  954.        directory. If you give a file without a path, GREP assumes the files
  955.        are in the current directory. This option is off by default.
  956.  
  957.   -i   Ignore case: GREP ignores upper/lowercase differences (case folding).
  958.        When this option is on, GREP treats all letters a to z as identical to
  959.        the corresponding letters A to Z in all situations. This option is on
  960.        by default.
  961.  
  962.   -l   List file names only: Prints only the name of each file containing a
  963.        match. After GREP finds a match, it prints the file name and processing
  964.        immediately moves on to the next file. This option is off by default.
  965.  
  966.   -n   Line Numbers: Each matching line that GREP prints is preceded by its
  967.        line number. This option is off by default.
  968.  
  969.   -o   UNIX output format: Changes the output format of matching lines to
  970.        support more easily the UNIX style of command-line piping. All lines of
  971.        output are preceded by the name of the file that contained the matching
  972.        line. This option is off by default.
  973.  
  974.   -r   Regular expression search: The text defined by searchstring is treated
  975.        as a regular expression instead of as a literal string. This option is
  976.        on by default. This option is on by default.
  977.  
  978.        A regular expression is one or more occurrences of one or more
  979.        characters optionally enclosed in quotes. The following symbols are
  980.        treated specially:
  981.         ^  start of line       $  end of line
  982.  
  983.  
  984.  
  985.                                   - 14 -
  986.  
  987.  
  988.  
  989.  
  990.  
  991.  
  992.         .  any character       \  quote next character
  993.         *  match zero or more  +  match one or more
  994.  
  995.         [aeiou0-9]             match a, e, i, o, u, and 0 thru 9
  996.         [^aeiou0-9]            match anything but a, e, i, o, u, and 0 thru 9
  997.  
  998.   -u   Update options: GREP will combine the options given on the command line
  999.        with its default options and write these to the GREP.COM file as the
  1000.        new defaults. (In other words, GREP is self-configuring.) This option
  1001.        allows you to tailor the default option settings to your own taste. If
  1002.        you want to see what the defaults are in a particular copy of GREP.COM,
  1003.        type
  1004.  
  1005.         GREP ?
  1006.  
  1007.        at the DOS prompt. Each option on the help screen will be followed by a
  1008.        + or a - depending on its default setting. This option is off by
  1009.        default.
  1010.  
  1011.   -v   Nonmatch: Prints only nonmatching lines. Only lines that do not contain
  1012.        the search string are considered to be nonmatching lines. This option
  1013.        is off by default.
  1014.  
  1015.   -w   Word search: Text found that matches the regular expression is
  1016.        considered a match only if the character immediately preceding and
  1017.        following cannot be part of a word. The default word character set
  1018.        includes A to Z, 0 to 9, and the underscore ( _ ). This option is off
  1019.        by default.
  1020.  
  1021.        An alternate form of this option lets you specify the set of legal word
  1022.        characters. Its form is -w[set], where set is any valid regular
  1023.        expression set definition.
  1024.  
  1025.        If you define the set with alphabetic characters, it is automatically
  1026.        defined to contain both the uppercase and lowercase values for each
  1027.        letter in the set (regardless of how it is typed), even if the search
  1028.        is case-sensitive. If you use the -w option in combination with the -u
  1029.        option, the new set of legal characters is saved as the default set.
  1030.  
  1031.   -z   Verbose: GREP prints the file name of every file searched. Each
  1032.        matching line is preceded by its line number. A count of matching lines
  1033.        in each file is given, even if the count is zero. This option is off by
  1034.        default.
  1035.  
  1036. ------------------------------------------------------------------------------
  1037.  
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.                                   - 15 -
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050. ------------------  Remember that each of GREP's options is a switch: Its
  1051.           Order of  state reflects the way you last set it. At any given time,
  1052.         precedence  each option can only be on or off. Each occurrence of a
  1053. ------------------  given option on the command line overrides its previous
  1054.                     definition. Given this command line,
  1055.  
  1056.                        grep -r -i - -d -i -r -  main( my*.c
  1057.  
  1058.                     GREP runs with the -d option on, the -i option on, and the
  1059.                     -r option off.
  1060.  
  1061.                     You can install your preferred default setting for each
  1062.                     option in GREP.COM with the -u option. For example, if you
  1063.                     want GREP to always do a verbose search (-z on), you can
  1064.                     install it with the following command:
  1065.  
  1066.                        grep -u -z
  1067.  
  1068.  
  1069.  The search string  ==========================================================
  1070.  
  1071.                     To use GREP well, you'll need to become proficient at
  1072.                     writing search strings. The value of searchstring defines
  1073.                     the pattern GREP searches for. A search string can be
  1074.                     either a regular expression or a literal string.
  1075.  
  1076.                     o In a regular expression, certain characters have special
  1077.                       meanings: They are operators that govern the search.
  1078.  
  1079.                     o In a literal string, there are no operators: Each
  1080.                       character is treated literally.
  1081.  
  1082.                     You can enclose the search string in quotation marks to
  1083.                     prevent spaces and tabs from being treated as delimiters.
  1084.                     The text matched by the search string cannot cross line
  1085.                     boundaries; that is, all the text necessary to match the
  1086.                     pattern must be on a single line.
  1087.  
  1088.                     A regular expression is either a single character or a set
  1089.                     of characters enclosed in brackets. A concatenation of
  1090.                     regular expressions is a regular expression.
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.                                   - 16 -
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108. ------------------  When you use the -r option (on by default), the search
  1109.       Operators in  string is treated as a regular expression (not a literal
  1110.            regular  expression). The following characters take on special
  1111.        expressions  meanings:
  1112. ------------------
  1113.  
  1114. ---------------------------------------------------------------------------
  1115. Option Meaning
  1116. ---------------------------------------------------------------------------
  1117.  
  1118.  
  1119.   ^    A circumflex at the start of the expression matches the start of a
  1120.        line.
  1121.  
  1122.   $    A dollar sign at the end of the expression matches the end of a
  1123.        line.
  1124.  
  1125.   .    A period matches any character.
  1126.  
  1127.   *    An expression followed by an asterisk wildcard matches zero or more
  1128.        occurrences of that expression. For example, in to*, the * operates
  1129.        on the expression o; it matches t, to, too, etc. (t followed by zero
  1130.        or more os), but doesn't match ta.
  1131.  
  1132.   +    An expression followed by a plus sign matches one or more
  1133.        occurrences of that expression: to+ matches to, too, etc., but not
  1134.        t.
  1135.  
  1136.   [ ]  A string enclosed in brackets matches any character in that string,
  1137.        but no others. If the first character in the string is a circumflex
  1138.        (^), the expression matches any character except the characters in
  1139.        the string.
  1140.  
  1141.        For example, [xyz] matches x, y, or z, while [^xyz] matches a and b,
  1142.        but not x, y, or z. You can specify a range of characters with two
  1143.        characters separated by a hyphen (-). These can be combined to form
  1144.        expressions (like [a-bd-z?], which matches the ? character and any
  1145.        lowercase letter except c).
  1146.  
  1147.   \    The backslash escape character tells GREP to search for the literal
  1148.        character that follows it. For example, \. matches a period instead
  1149.        of "any character." The backslash can be used to quote itself; that
  1150.        is, you can use \\ to indicate a literal backslash character in a
  1151.        GREP expression.
  1152.  
  1153. ---------------------------------------------------------------------------
  1154.  
  1155.  
  1156.  
  1157.  
  1158.  
  1159.                                   - 17 -
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.               Note  Four of the "special" characters ($, ., *, and +) don't
  1167.                     have any special meaning when used within a bracketed
  1168.                     set. In addition, the character ^ is only treated
  1169.                     specially if it immediately follows the beginning of
  1170.                     the set definition (immediately after the [ delimiter).
  1171.  
  1172.                     Any ordinary character not mentioned in the preceding
  1173.                     list matches that character. For example, the greater
  1174.                     than sign, >, matches the greater than sign (>), #
  1175.                     matches #, and so on.
  1176.  
  1177.  
  1178.               File  =======================================================
  1179.     specifications
  1180.                     file(s) tells GREP which files (or groups of files) to
  1181.                     search. file(s) can be an explicit file name, or a
  1182.                     "generic" file name incorporating the DOS ? and *
  1183.                     wildcards. In addition, you can enter a path (drive and
  1184.                     directory information) as part of file(s). If you give
  1185.                     file(s) without a path, GREP searches the current
  1186.                     directory.
  1187.  
  1188.                     If you don't specify any files, input to GREP must come
  1189.                     from redirection (<) or a vertical bar (|).
  1190.  
  1191.  
  1192. Some GREP examples  =======================================================
  1193.  
  1194.                     The following examples show how to combine GREP's
  1195.                     features to do different kinds of searches. They assume
  1196.                     GREP's default settings are unchanged.
  1197.  
  1198.  
  1199. ------------------  The search string here tells GREP to search for the
  1200.          Example 1  word main with no preceding lowercase letters ([^a-z]),
  1201. ------------------  followed by zero or more occurrences of blank spaces
  1202.                     (\ *), then a left parenthesis.
  1203.  
  1204.                     Since spaces and tabs are normally considered to be
  1205.                     command-line delimiters, you must quote them if you
  1206.                     want to include them as part of a regular expression.
  1207.                     In this case, the space after main is quoted with the
  1208.                     backslash escape character. You could also accomplish
  1209.                     this by placing the space in double quotes.
  1210.  
  1211.                     Command line:
  1212.                                 grep -r [^a-z]main\ *( *.c
  1213.  
  1214.  
  1215.  
  1216.  
  1217.                                   - 18 -
  1218.  
  1219.  
  1220.  
  1221.  
  1222.  
  1223.  
  1224.                     Matches:    main(i:integer)
  1225.                                 main(i,j:integer)
  1226.                                 if (main  ()) halt;
  1227.                                 if (MAIN  ()) halt;
  1228.  
  1229.                     Does not match:
  1230.                                 mymain()
  1231.  
  1232.                     Files searched:
  1233.                                 *.C in current directory.
  1234.  
  1235.  
  1236. ------------------  Because the backslash (\) and period (.) characters
  1237.          Example 2  usually have special meaning in path and file names,
  1238. ------------------  you must place the backslash escape character immedi-
  1239.                     ately in front of them if you want to search for them.
  1240.                     The -i option is used here, so the search is not case
  1241.                     sensitive.
  1242.  
  1243.                     Command line:
  1244.                                 grep -ri [a-c]:\\data\.fil *.c *.inc
  1245.  
  1246.                     Matches:    A:\data.fil
  1247.                                 c:\Data.Fil
  1248.                                 B:\DATA.FIL
  1249.  
  1250.                     Does not match:
  1251.                                 d:\data.fil
  1252.                                 a:data.fil
  1253.  
  1254.                     Files searched:
  1255.                                 *.C and *.INC in current directory.
  1256.  
  1257.  
  1258. ------------------  This format defines how to search for a given word.
  1259.          Example 3
  1260. ------------------  Command line:
  1261.                                 grep -ri [^a-z]word[^a-z] *.doc
  1262.  
  1263.                     Matches:    every new word must be on a new line.
  1264.                                 MY WORD!
  1265.                                 word--smallest unit of speech.
  1266.                                 In the beginning there was the WORD, and
  1267.                                 the WORD
  1268.  
  1269.                     Does not match:
  1270.                                 Each file has at least 2000 words.
  1271.                                 He misspells toward as toword.
  1272.  
  1273.  
  1274.  
  1275.                                   - 19 -
  1276.  
  1277.  
  1278.  
  1279.  
  1280.  
  1281.  
  1282.                     Files searched:
  1283.                                 *.DOC in the current directory.
  1284.  
  1285.  
  1286. ------------------  This format defines another, even more basic single-
  1287.          Example 4  word search.
  1288. ------------------
  1289.                     Command line:
  1290.                                 grep -iw word *.doc
  1291.  
  1292.                     Matches:    every new word must be on a new line
  1293.                                 However,
  1294.                                 MY WORD!
  1295.                                 word: smallest unit of speech which conveys
  1296.                                 In the beginning there was the WORD, and
  1297.  
  1298.                     Does not match:
  1299.                                 each document contains at least 2000 words!
  1300.                                 He seems to continually misspell "toward"
  1301.                                 as "toword."
  1302.  
  1303.                     Files searched:
  1304.                                 *.DOC in the current directory.
  1305.  
  1306.  
  1307. ------------------  This is an example of how to search for a string with
  1308.          Example 5  embedded spaces.
  1309. ------------------
  1310.                     Command line:
  1311.                                 grep "search string with spaces" *.doc *.c
  1312.                                 a:\work\myfile.*
  1313.  
  1314.                     Matches:    This is a search string with spaces in it.
  1315.  
  1316.                     Does not match:
  1317.                                 This search string has spaces in it.
  1318.  
  1319.                     Files searched:
  1320.                                 *.DOC and *.C in the current directory, and
  1321.                                 MYFILE.* in a directory called \WORK on
  1322.                                 drive A.
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.                                   - 20 -
  1334.  
  1335.  
  1336.  
  1337.  
  1338.  
  1339.  
  1340. ------------------  This example searches for any one of the characters
  1341.          Example 6  " . : ? ' and , at the end of a line.
  1342. ------------------
  1343.                     The double quote within the range is preceded by an
  1344.                     escape character so it is treated as a normal character
  1345.                     instead of as the ending quote for the string. Also,
  1346.                     the $ character appears outside of the quoted string.
  1347.                     This demonstrates how regular expressions can be
  1348.                     concatenated to form a longer expression.
  1349.  
  1350.                     Command line:
  1351.                                 grep -rd "[ ,.:?'\"]"$ \*.doc
  1352.  
  1353.                     Matches:    He said hi to me.
  1354.                                 Where are you going?
  1355.                                 In anticipation of a unique situation,
  1356.                                 Examples include the following:
  1357.                                 "Many men smoke, but fu man chu."
  1358.  
  1359.                     Does not match:
  1360.                                 He said "Hi" to me
  1361.                                 Where are you going? I'm headed to the
  1362.  
  1363.                     Files searched:
  1364.                                 *.DOC in the root directory and all its
  1365.                                 subdirectories on the current drive.
  1366.  
  1367.  
  1368. ------------------  This example ignores case and just prints the names of
  1369.          Example 7  any files that contain at least one match. The three
  1370. ------------------  command-line examples show different ways of specifying
  1371.                     multiple options.
  1372.  
  1373.                     Command line:
  1374.                                 grep -ild " the " \*.doc
  1375.                                 or
  1376.                                 grep -i -l -d " the " \*.doc
  1377.                                 or
  1378.                                 grep -il -d " the " \*.doc
  1379.  
  1380.                     Matches:    Anyway, this is the time we have
  1381.                                 do you think? The main reason we are
  1382.  
  1383.                     Does not match:
  1384.                                 He said "Hi" to me just when I
  1385.                                 Where are you going? I'll bet you're headed
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.                                   - 21 -
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.  
  1398.                     Files searched:
  1399.                                 *.DOC in the root directory and all its
  1400.                                 subdirectories on the current drive.
  1401.  
  1402.  
  1403. ------------------  This example redefines the current set of legal
  1404.          Example 8  characters for a word as the assignment operator (=)
  1405. ------------------  only, then does a word search. It matches C assignment
  1406.                     statements, which use a single equal sign (=), but not
  1407.                     equality tests, which use a double equal sign (==).
  1408.  
  1409.                     Command line:
  1410.                                 grep -w[=] = *.c
  1411.  
  1412.                     Matches:    i = 5;
  1413.                                 j=5;
  1414.                                 i += j;
  1415.  
  1416.                     Does not match:
  1417.                                 if (i == t) j++;
  1418.                                 /* ======================= */
  1419.  
  1420.                     Files searched:
  1421.                                 *.C in the current directory.
  1422.  
  1423.  
  1424.  
  1425. ===========================================================================
  1426. OBJXREF: The object module cross-reference utility
  1427. ===========================================================================
  1428.  
  1429.                     OBJXREF examines a list of object files and library
  1430.                     files and produces reports on their contents. One type
  1431.                     of report lists definitions of public names and
  1432.                     references to them. The other type lists the segment
  1433.                     sizes defined by object modules.
  1434.  
  1435.                     There are two categories of public names: global
  1436.                     variables and function names. The TEST1.C and TEST2.C
  1437.                     files in the section "Sample OBJXREF reports" (page 28)
  1438.                     illustrate definitions of public names and external
  1439.                     references to them.
  1440.  
  1441.                     Object modules are object (.OBJ) files produced by TC,
  1442.                     TCC or TASM. A library (.LIB) file contains multiple
  1443.                     object modules. An object module generated by TC is
  1444.                     given the same name as the .C source file it was com-
  1445.                     piled from. This is also true for TCC, unless a
  1446.  
  1447.  
  1448.  
  1449.                                   - 22 -
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                     different output file name is specifically indicated
  1457.                     with the -o TCC command-line option.
  1458.  
  1459.  
  1460.   The OBJXREF com-  =======================================================
  1461.          mand line
  1462.                     The OBJXREF command line consists of the word OBJXREF
  1463.                     followed by a series of command-line options and a list
  1464.                     of object and library file names, separated by a space
  1465.                     or tab character. The syntax is as follows:
  1466.  
  1467.                       OBJXREF  options   filename  filename ...
  1468.  
  1469.                     The command-line options determine the kind of reports
  1470.                     that OBJXREF will generate and the amount of detail
  1471.                     that OBJXREF will provide. They are discussed in more
  1472.                     detail in the next section.
  1473.  
  1474.                     Each option begins with a forward slash (/) followed by
  1475.                     a one- or two-character option name.
  1476.  
  1477.                     Object files and library files may be specified either
  1478.                     on the command line or in a response file. On the com-
  1479.                     mand line, file names are separated by a space or a
  1480.                     tab. All object modules specified as .OBJ files are
  1481.                     included in reports. Like TLINK, however, OBJXREF
  1482.                     includes only those modules from .LIB files which
  1483.                     contain a public name referenced by an .OBJ file or by
  1484.                     a previously included module from a .LIB file.
  1485.  
  1486.                     As a general rule, you should list all the .OBJ and
  1487.                     .LIB files that are needed if the program is to link
  1488.                     correctly, including the startup .OBJ file and one or
  1489.                     more C libraries.
  1490.  
  1491.                     File names may include a drive and directory path. The
  1492.                     DOS ? and * wildcard characters may be used to identify
  1493.                     more than one file. File names may refer to .OBJ object
  1494.                     files or to .LIB library files. (If you don't give a
  1495.                     file extension, the .OBJ extension is assumed.)
  1496.  
  1497.                     Options and file names may occur in any order in the
  1498.                     command line.
  1499.  
  1500.                     OBJXREF reports are written to the DOS standard output.
  1501.                     The default is the screen. The reports can be sent to a
  1502.                     printer (as with >LPT1:) or to a file (as with
  1503.                     >lstfile) with the DOS redirection character (>).
  1504.  
  1505.  
  1506.  
  1507.                                   - 23 -
  1508.  
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.                     Entering OBJXREF with no file names or options produces
  1515.                     a summary of available options.
  1516.  
  1517.  
  1518. ------------------  OBJXREF command-line options fall into two categories:
  1519.        The OBJXREF  control options and report options.
  1520.       command-line
  1521.            options
  1522. ------------------  Control options
  1523.                     =======================================================
  1524.  
  1525.                     Control options modify the default behavior of OBJXREF
  1526.                     (the default is that none of these options are
  1527.                     enabled).
  1528.  
  1529.  
  1530.                     -------------------------------------------------------
  1531.                     Option Meaning
  1532.                     -------------------------------------------------------
  1533.  
  1534.  
  1535.                       /I   Ignore case differences in public names. Use
  1536.                            this option if you use TLINK without the /C
  1537.                            option (which makes case differences
  1538.                            significant).
  1539.  
  1540.                       /D   Look for .OBJ files in another directory. If you
  1541.                            want OBJXREF to look for .OBJ files in a
  1542.                            directory other than the current one, include
  1543.                            the directory name on the command line, prefixed
  1544.                            with /D:
  1545.  
  1546.                               OBJXREF /Ddir1 [; dir2 [; dir3]]
  1547.  
  1548.                            or
  1549.  
  1550.                               OBJXREF /Ddir1 [/Ddir2] [/Ddir3]
  1551.  
  1552.                            OBJXREF will search each of the directories in
  1553.                            the specified order for all object and library
  1554.                            files.
  1555.  
  1556.         Important!         If you don't use a /D option, OBJXREF will
  1557.                            search only the current directory. If you do use
  1558.                            a /D option, however, the current directory will
  1559.                            not be searched unless it is included in the
  1560.                            directory list. For example, if you wanted
  1561.                            OBJXREF to search first the BORLAND directory
  1562.  
  1563.  
  1564.  
  1565.                                   - 24 -
  1566.  
  1567.  
  1568.  
  1569.  
  1570.  
  1571.  
  1572.                            and then the current directory for files, you
  1573.                            would enter
  1574.  
  1575.                               OBJXREF /Dborland;.
  1576.  
  1577.                            The period denotes the current directory.
  1578.  
  1579.  
  1580.                       /F   Include full library. All object modules in
  1581.                            specified .LIB files are included even if they
  1582.                            do not contain public names that are referenced
  1583.                            by an object module being processed by OBJXREF.
  1584.                            This provides information on the entire contents
  1585.                            of a library file. (See example 4 in the section
  1586.                            "OBJXREF examples.")
  1587.  
  1588.                       /O   Allows you to specify an output file where
  1589.                            OBJXREF will send any reports generated. Its
  1590.                            syntax is as follows:
  1591.  
  1592.                               OBJXREF filename.obj /report option
  1593.                               /Ooutputfilename.ext
  1594.  
  1595.                            By default all output is sent to the screen.
  1596.  
  1597.  
  1598.                       /V   Verbose output. Lists names of files read and
  1599.                            displays totals of public names, modules,
  1600.                            segments, and classes.
  1601.  
  1602.                       /Z   Include zero-length segment definitions. Object
  1603.                            modules may define a segment without allocating
  1604.                            any space in it. Listing these zero length
  1605.                            segment definitions normally makes the module
  1606.                            size reports harder to use but it can be
  1607.                            valuable if you are trying to remove all defini-
  1608.                            tions of a segment.
  1609.  
  1610.                     -------------------------------------------------------
  1611.  
  1612.  
  1613.                     Report options
  1614.                     =======================================================
  1615.  
  1616.                     Report options govern what sort of report is generated,
  1617.                     and the amount of detail that OBJXREF provides.
  1618.  
  1619.  
  1620.  
  1621.  
  1622.  
  1623.                                   - 25 -
  1624.  
  1625.  
  1626.  
  1627.  
  1628.  
  1629.  
  1630.                     -------------------------------------------------------
  1631.                     Option Report generated
  1632.                     --------------------------------------------------
  1633.  
  1634.  
  1635.                       /RC  Report by class type: Module sizes ordered
  1636.                            by class type of segment.
  1637.  
  1638.                       /RM  Report by module: Public names ordered by
  1639.                            defining module.
  1640.  
  1641.                       /RP  Report by public names: Public names in
  1642.                            order with defining module name.
  1643.  
  1644.        This is the    /RR  Report by reference: Public name defini-
  1645.           default.         tions and references ordered by name.
  1646.  
  1647.                       /RS  Report of module sizes: Module sizes
  1648.                            ordered by segment name.
  1649.  
  1650.                       /RU  Report of unreferenced symbol names:
  1651.                            Unreferenced public names ordered by
  1652.                            defining module.
  1653.  
  1654.                       /RV  Verbose reporting: OBJXREF produces a
  1655.                            report of every type.
  1656.  
  1657.                       /RX  Report by external reference: External
  1658.                            references ordered by referencing module
  1659.                            name.
  1660.  
  1661.                     --------------------------------------------------
  1662.  
  1663.                     Public names defined in .C files appear in reports with
  1664.                     a leading underscore in the reports unless the -U-
  1665.                     option was specified when the file was compiled (main
  1666.                     appears as _main).
  1667.  
  1668.                     You can limit the modules, segments, classes, or public
  1669.                     names that OBJXREF reports on by entering the
  1670.                     appropriate name on the command line prefixed with the
  1671.                     /N option. For example,
  1672.  
  1673.                        OBJXREF filelist /RM /NC0
  1674.  
  1675.                     tells OBJXREF to generate a report listing information
  1676.                     only for the module named C0.
  1677.  
  1678.  
  1679.  
  1680.  
  1681.                                   - 26 -
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.     Response files  =======================================================
  1689.  
  1690.                     The command line is limited by DOS to a maximum of 128
  1691.                     characters. If your list of options and file names will
  1692.                     exceed this limit, you must place your file names in a
  1693.                     response file.
  1694.  
  1695.                     A response file is a text file that you make with a
  1696.                     text editor. Since you may already have prepared a list
  1697.                     of the files that make up your program for other Turbo
  1698.                     C++ programs, OBJXREF recognizes several response file
  1699.                     types.
  1700.  
  1701.                     Response files are called from the command line using
  1702.                     one of the following options. The response file name
  1703.                     must follow the option without an intervening space
  1704.                     (so, for example, you would type /Lresp, not /L resp).
  1705.  
  1706.                     You can specify more than one response file on the com-
  1707.                     mand line; additional .OBJ and .LIB file names can
  1708.                     precede or follow them.
  1709.  
  1710.  
  1711. ------------------  You can create a free-form response file with a text
  1712. Free-form response  editor. Just list the names of all .OBJ and .LIB files
  1713.              files  needed to make your .EXE file.
  1714. ------------------
  1715.      Any file name  To use free-form files with OBJXREF, type in each
  1716.      listed in the  response file name on the command line, preceded by an
  1717.      response file  @, and separate it from other command-line entries with
  1718.  without an exten-  a space or tab:
  1719. sion is assumed to
  1720.   be an .OBJ file.     @filename  @filename ...
  1721.  
  1722.  
  1723. ------------------  You can also use project files of the type generated by
  1724.      Project files  Turbo C++'s integrated environment as response files.
  1725. ------------------  In the command line, precede the project file name with
  1726.                     /P, like this:
  1727.  
  1728.                        /Pfilename
  1729.  
  1730.                     If the file name does not include an explicit exten-
  1731.                     sion, a .PRJ extension is assumed.
  1732.  
  1733.  
  1734.  
  1735.  
  1736.  
  1737.  
  1738.  
  1739.                                   - 27 -
  1740.  
  1741.  
  1742.  
  1743.  
  1744.  
  1745.  
  1746.                     File names in the project file with a .C extension or
  1747.                     no extension are interpreted as specifying the
  1748.                     corresponding .OBJ file. You need not remove file
  1749.                     dependencies specified inside parentheses; they are
  1750.                     ignored by OBJXREF.
  1751.  
  1752.               Note  By itself, the list of files in a .PRJ file does not
  1753.                     specify a complete program--you must also specify a
  1754.                     startup file (C0x.OBJ) and one or more Turbo C++
  1755.                     library files (MATHX.LIB, EMU.LIB, and CX.LIB, for
  1756.                     example). In addition, you may need to use the /D
  1757.                     option to specify the directory where OBJXREF should
  1758.                     look for your .OBJ files.
  1759.  
  1760.  
  1761. ------------------  Files in TLINK response-file format can also be used by
  1762.    Linker response  OBJXREF. A linker response file called from the command
  1763.              files  line is preceded by /L, like so:
  1764. ------------------
  1765.                        /Lfilename
  1766.  
  1767.                     To see how to use one of these files, refer to Example
  1768.                     2 in the section "Examples of how to use OBJXREF."
  1769.  
  1770.  
  1771.     Sample OBJXREF  =======================================================
  1772.            reports
  1773.                     Suppose you have two source files in your Turbo C++
  1774.                     directory, and want to generate OBJXREF reports on the
  1775.                     object files compiled from them. The source files are
  1776.                     called TEST1.C and TEST2.C, and they look like this:
  1777.  
  1778.                      /* test1.c */
  1779.                      int i1;                       /* defines i1 */
  1780.                      extern int i2;                /* refers to i2 */
  1781.                      static int i3;                /* not a public name */
  1782.                      extern void look(void);       /* refers to look */
  1783.  
  1784.                      void main(void)               /* defines main */
  1785.                      {
  1786.                         int i4;                    /* not a public name */
  1787.  
  1788.                         look();                    /* refers to look */
  1789.                      }
  1790.  
  1791.                      /* test2.c */
  1792.                      #include <process.h>
  1793.                      extern int i1;                /* refers to i1 */
  1794.  
  1795.  
  1796.  
  1797.                                   - 28 -
  1798.  
  1799.  
  1800.  
  1801.  
  1802.  
  1803.  
  1804.                      int i2;                       /* defines i2 */
  1805.  
  1806.                      void look(void)               /* defines look */
  1807.                      {
  1808.                         exit(i1);                  /* refers to exit... */
  1809.                      }                             /* and to i1 */
  1810.  
  1811.                     The object modules compiled from these source files are
  1812.                     TEST1.OBJ and TEST2.OBJ. You can tell OBJXREF what kind
  1813.                     of report to generate about these .OBJ files by
  1814.                     entering the file names on the command line, followed
  1815.                     by a /R and a second letter denoting report type.
  1816.  
  1817.               Note  The following examples show only useful parts of the
  1818.                     output.
  1819.  
  1820.  
  1821. ------------------  A report by public names lists each of the public names
  1822.   Report by public  defined in the object modules being reported on,
  1823.        names (/RP)  followed by the name of the module in which it is
  1824. ------------------  defined.
  1825.  
  1826.                     If you enter this on the command line:
  1827.  
  1828.                        OBJXREF  /RP  test1  test2
  1829.  
  1830.                     OBJXREF generates a report that looks like this:
  1831.  
  1832.                      SYMBOL           DEFINED IN
  1833.                      _i1              TEST1
  1834.                      _i2              TEST2
  1835.                      _look            TEST2
  1836.                      _main            TEST1
  1837.  
  1838.  
  1839. ------------------  A report by module lists each object module being
  1840.   Report by module  reported on, followed by a list of the public names
  1841.              (/RM)  defined in it.
  1842. ------------------
  1843.                     If you enter this on the command line:
  1844.  
  1845.                        OBJXREF  /RM  test1  test2
  1846.  
  1847.                     OBJXREF generates a report that looks like this:
  1848.  
  1849.                      MODULE: TEST1 defines the following symbols:
  1850.                              public: _i1
  1851.                              public: _main
  1852.  
  1853.  
  1854.  
  1855.                                   - 29 -
  1856.  
  1857.  
  1858.  
  1859.  
  1860.  
  1861.  
  1862.                      MODULE: TEST2 defines the following symbols:
  1863.                              public: _i2
  1864.                              public: _look
  1865.  
  1866.  
  1867. ------------------  A report by reference lists each public name with the
  1868.          Report by  defining module in parentheses on the same line.
  1869.    reference (/RR)  Modules that refer to this public name are listed on
  1870. ------------------  following lines indented from the left margin.
  1871.  
  1872.        This is the  If you enter this on the command line:
  1873.      default if no
  1874.   report option is     OBJXREF  /RR  C0  test1  test2  CS.LIB
  1875.         specified.
  1876.                     OBJXREF generates a report that looks like this:
  1877.  
  1878.                      _exit (EXIT)
  1879.                           C0
  1880.                           TEST2
  1881.                      _i1 (TEST1)
  1882.                           TEST2
  1883.                      _i2 (TEST2)
  1884.                      _look (TEST2)
  1885.                           TEST1
  1886.                      _main (TEST1)
  1887.                           C0
  1888.  
  1889.  
  1890. ------------------  A report by external references lists each module
  1891. Report by external  followed by a list of external references it contains.
  1892.   references (/RX)
  1893. ------------------  If you enter this on the command line:
  1894.  
  1895.                        OBJXREF  /RX  C0  test1  test2  CS.LIB
  1896.  
  1897.                     OBJXREF generates a report that looks like this:
  1898.  
  1899.                      MODULE: C0 references the following symbols:
  1900.                              _main
  1901.                      MODULE: TEST1 references the following symbols:
  1902.                              _i2
  1903.                              _look
  1904.                      MODULE: TEST2 references the following symbols:
  1905.                              _exit
  1906.                              _i1
  1907.  
  1908.  
  1909.  
  1910.  
  1911.  
  1912.  
  1913.                                   - 30 -
  1914.  
  1915.  
  1916.  
  1917.  
  1918.  
  1919.  
  1920. ------------------  A report by sizes lists segment names followed by a
  1921.   Report of module  list of modules that define the segment. Sizes in bytes
  1922.        sizes (/RS)  are given in decimal and hexadecimal notation. The word
  1923. ------------------  uninitialized appears where no initial values are
  1924.                     assigned to any of the symbols defined in the segment.
  1925.                     Segments defined at absolute addresses in a .ASM file
  1926.                     are flagged Abs to the left of the segment size.
  1927.  
  1928.                     If you enter this on the command line:
  1929.  
  1930.                        OBJXREF  /RS  test1  test2
  1931.  
  1932.                     OBJXREF generates a report that looks like this:
  1933.  
  1934.   These files were   TEST1_TEXT
  1935. compiled using the           6 (00006h)   TEST1
  1936.       large memory           6 (00006h)   total
  1937.             model.   TEST2_TEXT
  1938.                             10 (0000Ah)   TEST2
  1939.                             10 (0000Ah)   total
  1940.                      _BSS
  1941.                              4 (00004h)   TEST1, uninitialized
  1942.                              2 (00002h)   TEST2, uninitialized
  1943.                              6 (00006h)   total
  1944.  
  1945.  
  1946. ------------------  A report by class type lists segment size definitions
  1947.    Report by class  by segment class. The CODE class contains instructions,
  1948.         type (/RC)  DATA class contains initialized data and BSS class
  1949. ------------------  contains uninitialized data. Segments which do not have
  1950.                     a class type will be listed under the notation No class
  1951.                     type.
  1952.  
  1953.                     If you enter this on the command line:
  1954.  
  1955.                        OBJXREF  /RC  C0  test1  test2  CS.LIB
  1956.  
  1957.                     OBJXREF generates a report that looks like this:
  1958.  
  1959.                      BSS
  1960.                             4  (00004h)   TEST1
  1961.                             2  (00002h)   TEST2
  1962.                           ...
  1963.                           132  (00084h)   total
  1964.                      CODE
  1965.                             6  (00006h)   TEST1
  1966.  
  1967.  
  1968.  
  1969.  
  1970.  
  1971.                                   - 31 -
  1972.  
  1973.  
  1974.  
  1975.  
  1976.  
  1977.  
  1978.                            10  (0000Ah)   TEST2
  1979.                            16  (00010h)   total
  1980.                      DATA
  1981.                           143  (0008Fh)   C0
  1982.                           143  (0008Fh)   total
  1983.  
  1984.  
  1985. ------------------  A report of unreferenced symbol names lists modules
  1986.          Report of  that define public names not referenced in other
  1987.       unreferenced  modules. Such a symbol is either:
  1988. symbol names (/RU)
  1989. ------------------  o referenced only from within the defining module and
  1990.                       does not need to be defined as a public symbol (in
  1991.                       that case, if the module is in C, the keyword static
  1992.                       should be added to the definition; if the module is
  1993.                       in TASM, just remove the public definition).
  1994.  
  1995.                     o never used (therefore, it can be deleted to save code
  1996.                       or data space).
  1997.  
  1998.                     If you enter this on the command line:
  1999.  
  2000.                        OBJXREF  /RU  test1  test2
  2001.  
  2002.                     OBJXREF generates a report that looks like this:
  2003.  
  2004.                        MODULE: TEST2 defines the unreferenced symbol _i2.
  2005.  
  2006.  
  2007. ------------------  If you enter /RV on the command line, OBJXREF generates
  2008.  Verbose reporting  one report of each type.
  2009.              (/RV)
  2010. ------------------
  2011. Examples of how to  =======================================================
  2012.        use OBJXREF
  2013.                     These examples assume that the application files are in
  2014.                     the current directory of the default drive and that the
  2015.                     Turbo C++ startup files (C0x.OBJ) and the library files
  2016.                     are in the \TC\LIB directory.
  2017.  
  2018.  
  2019. ------------------  C>OBJXREF \TC\lib\c0l test1 test2 \TC\lib\cl.lib
  2020.          Example 1
  2021. ------------------  In this example, the TEST1.OBJ and TEST2.OBJ files and
  2022.                     the Turbo C++ startup file \TC\LIB\C0L.OBJ and the
  2023.                     library file \TC\LIB\CL.LIB are specified. Since no
  2024.                     report type is specified, the resulting report is the
  2025.  
  2026.  
  2027.  
  2028.  
  2029.                                   - 32 -
  2030.  
  2031.  
  2032.  
  2033.  
  2034.  
  2035.  
  2036.                     default report by reference, listing public names and
  2037.                     the modules that reference them.
  2038.  
  2039.  
  2040. ------------------  C>OBJXREF /RV /Ltest1.arf
  2041.          Example 2
  2042. ------------------  The TLINK response file TEST1.ARF contains the same
  2043.                     list of files as the command line in Example 1. The /RV
  2044.                     option is specified, so a report of every type will be
  2045.                     generated. TEST1.ARF contains
  2046.  
  2047.                      \TC\lib\c0l
  2048.                      test1 test2
  2049.                      test1.exe
  2050.                      test1.map
  2051.                      \TC\lib\cl
  2052.  
  2053.  
  2054. ------------------  C>OBJXREF /RC B:c0s /Ptest1 @libs
  2055.          Example 3
  2056. ------------------  The Turbo C++ project file TEST1.PRJ specifies
  2057.                     TEST1.OBJ and TEST2.OBJ. The response file @libs
  2058.                     specifies libraries on a disk in the B drive. TEST1.PRJ
  2059.                     contains
  2060.  
  2061.                      test1
  2062.                      test2.c
  2063.  
  2064.                     The file LIBS contains
  2065.  
  2066.                        b:maths.lib b:emu.lib b:cs.lib
  2067.  
  2068.                     The startup and library files specified depend on the
  2069.                     memory model and floating point options used in compil-
  2070.                     ation. The /RC causes a report of class type to be
  2071.                     output.
  2072.  
  2073.  
  2074. ------------------  C>OBJXREF /F /RV \TC\lib\cs.lib
  2075.          Example 4
  2076. ------------------  This example reports on all the modules in the Turbo
  2077.                     C++ library file CS.LIB; OBJXREF can produce useful
  2078.                     reports even when the files specified do not make a
  2079.                     complete program. The /F causes all modules in CS.LIB
  2080.                     file to be included in the report.
  2081.  
  2082.  
  2083.  
  2084.  
  2085.  
  2086.  
  2087.                                   - 33 -
  2088.  
  2089.  
  2090.  
  2091.  
  2092.  
  2093.  
  2094.      OBJXREF error  =======================================================
  2095.       messages and
  2096.           warnings  OBJXREF generates two sorts of diagnostic messages:
  2097.                     error messages and warnings.
  2098.  
  2099.  
  2100. ------------------  Out of memory
  2101.     Error messages  OBJXREF performs its cross referencing in RAM memory
  2102. ------------------  and may run out of memory even if TLINK is able to link
  2103.                     the same list of files successfully. When this happens,
  2104.                     OBJXREF aborts. Remove memory resident programs to get
  2105.                     more space, or add more RAM.
  2106.  
  2107.  
  2108. ------------------  WARNING: Unable to open input file <filename>
  2109.           Warnings  The input file filename could not be located or opened.
  2110. ------------------  OBJXREF proceeds to the next file.
  2111.  
  2112.                     WARNING: Unknown option - <option>
  2113.                     The option name option is not recognized by OBJXREF.
  2114.                     OBJXREF ignores the option.
  2115.  
  2116.                     WARNING: Unresolved symbol <symbol> in module <module>
  2117.                     The public name symbol referenced in module module is
  2118.                     not defined in any of the .OBJ or .LIB files specified.
  2119.                     OBJXREF flags the symbol in any reports it generates as
  2120.                     being referenced but not defined.
  2121.  
  2122.                     WARNING: Invalid file specification <filename>
  2123.                     Some part of the file name filename is invalid. OBJXREF
  2124.                     proceeds to the next file.
  2125.  
  2126.                     WARNING: No files matching <filename>
  2127.                     The file named filename listed on the command line or
  2128.                     in a response file could not be located or opened.
  2129.                     OBJXREF skips to the next file.
  2130.  
  2131.                     WARNING: Symbol <symbol> defined in <module1>
  2132.                     duplicated in <module2>
  2133.                     Public name symbol is defined in modules module1 and
  2134.                     module2. OBJXREF ignores the second definition.
  2135.  
  2136.  
  2137.  
  2138.  
  2139.  
  2140.  
  2141.  
  2142.  
  2143.  
  2144.  
  2145.                                   - 34 -
  2146.  
  2147.  
  2148.  
  2149.  
  2150.  
  2151.  
  2152. ===========================================================================
  2153. PRJCFG: Configuration file utility
  2154. ===========================================================================
  2155.  
  2156.  
  2157.                     Creates the command-line configuration file from a
  2158.                     project file. You can also use it to create or update a
  2159.                     project file from a configuration file.
  2160.  
  2161.                     The command-line compiler looks for a default
  2162.                     configuration file named TURBOC.CFG, but you can
  2163.                     specify a different file with +pathname option. To use
  2164.                     PRJCFG to create a TCC configuration file from a
  2165.                     project file, you would type the following:
  2166.  
  2167.                      PRJCFG ProjFile.PRJ ConfigFile.CFG
  2168.  
  2169.                     To make a project file from a configuration file, type
  2170.  
  2171.                      PRJCFG ConfigFile.CFG ProjFile.PRJ
  2172.  
  2173.  
  2174.  
  2175. ===========================================================================
  2176. PRJCNVT: Old projects for new
  2177. ===========================================================================
  2178.  
  2179.                     This utility converts Turbo C 1.0, 1.5, and 2.0 project
  2180.                     files to Turbo C++ project files. The syntax for it is
  2181.  
  2182.                        PRJCNVT infile[.PRJ] [outfile[.PRJ]]
  2183.  
  2184.                     or
  2185.  
  2186.                        PRJCNVT infile[.TC]  [outfile[.PRJ]]
  2187.  
  2188.                     If you specify a configuration file as input, it must
  2189.                     have a project file defined. The compiler options in
  2190.                     the .CFG file and the dependencies in the Turbo C 2.0
  2191.                     .PRJ file will be placed into the corresponding Turbo
  2192.                     C++ .PRJ file.
  2193.  
  2194.                     If you specify a project file as input, only
  2195.                     dependencies information will be placed into the Turbo
  2196.                     C++ .PRJ file. All compiler options will remain
  2197.                     default.
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.                                   - 35 -
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.                     If you don't provide an extension, .TC is assumed. If
  2211.                     PRJCVNT can't find a .TC file, it looks for a .PRJ
  2212.                     file.
  2213.  
  2214.                     The default name of the output file is the base name of
  2215.                     the input file with the extension .PRJ. For example,
  2216.                     STARS.TC will turn into STARS.PRJ. If the input and the
  2217.                     output name are the same, the old file will be renamed
  2218.                     to a .BAK file.
  2219.  
  2220.  
  2221.  
  2222. ===========================================================================
  2223. PRJ2MAK: From project file to MAKE file
  2224. ===========================================================================
  2225.  
  2226.                     This utility converts a .PRJ file to a .MAK file
  2227.                     (containing all relevant switches and settings) for use
  2228.                     with the MAKE utility. These files can be re-used
  2229.                     without accessing the IDE. The syntax for PRJ2MAK is
  2230.  
  2231.                        PRJ2MAK projectfile[.PRJ] [makefile[.MAK]
  2232.                     [config[.CFG]]]
  2233.  
  2234.                     The extension for the project file name is assumed to
  2235.                     be .PRJ unless you specify otherwise.
  2236.  
  2237.                     The default name for the new MAKE file is the base file
  2238.                     name of the .PRJ file with the extension .MAK. The
  2239.                     default name for the new .CFG file is the base file
  2240.                     name of the .MAK file with the extension .CFG.
  2241.  
  2242.                     To change the names of the makefile and configuration
  2243.                     files, just specify different names on the command
  2244.                     line.
  2245.  
  2246.                     Examples of valid execution:
  2247.  
  2248.                        PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK TURBOC.CFG
  2249.  
  2250.                     This execution creates a makefile called MAKEFILE.MAK
  2251.                     with a configuration file called TURBOC.CFG.
  2252.                        PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK
  2253.  
  2254.                     This execution creates a makefile called MAKEFILE.MAK
  2255.                     with a configuration file called MYPROJ.CFG.
  2256.  
  2257.                        PRJ2MAK MYPROJ
  2258.  
  2259.  
  2260.  
  2261.                                   - 36 -
  2262.  
  2263.  
  2264.  
  2265.  
  2266.  
  2267.  
  2268.                     This execution creates a makefile called MYPROJ.MAK and
  2269.                     a configuration file called MYPROJ.CFG.
  2270.  
  2271.                     The makefile that PRJ2MAK creates will set up a
  2272.                     redirection file for the linker response file and for
  2273.                     the .CFG file. They will be created when you run the
  2274.                     makefile that was generated. The linker response file
  2275.                     is a temporary file and will be deleted. The .CFG file
  2276.                     will be left as a file on disk.
  2277.  
  2278.                     PRJ2MAK places options that meet the following
  2279.                     requirements into the .CFG file: Those that are not
  2280.                     default to the Turbo C++ command-line compiler and have
  2281.                     been selected in the project file.
  2282.  
  2283.                     PRJ2MAK will use the library search path as a command
  2284.                     link option to TLINK, so that TLINK can search that
  2285.                     path for the startup module and for libraries.
  2286.  
  2287.  
  2288.  
  2289. ===========================================================================
  2290. THELP: The Turbo Help utility
  2291. ===========================================================================
  2292.  
  2293.                     THELP.COM is a RAM-resident (TSR) utility that accesses
  2294.                     Turbo C++'s online Help information for you when you
  2295.                     aren't using the IDE (that is, if you are using an
  2296.                     editor other than the one in the IDE, or you are using
  2297.                     the command-line version of Turbo C++, or if you are
  2298.                     using another product, such as Turbo Debugger). THELP
  2299.                     requires about 21K bytes of memory.
  2300.  
  2301.  
  2302.        Loading and  =======================================================
  2303.     invoking THELP
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.  
  2315.  
  2316.  
  2317.  
  2318.  
  2319.                                   - 37 -
  2320.  
  2321.  
  2322.  
  2323.  
  2324.  
  2325.  
  2326.                     You need to first load THELP in order to use it from
  2327.                     within another program (or from the command line). Make
  2328.                     sure that TCHELP.TCH, the text file containing the
  2329.                     Turbo C++ online help information, is in the current
  2330.    Warning! If you  directory. (If you want to keep TCHELP.TCH in another
  2331.  are going to have  directory, THELP has a special /F command-line option
  2332.  THELP resident in  that will enable THELP to find it; the INSTALL program
  2333. memory at the same  inserts the correct path information into THELP.)
  2334.   time as SideKick
  2335.    1.x or SideKick  To load THELP, just type
  2336.    Plus, make sure
  2337.     you load THELP     THELP [options]
  2338.    before you load
  2339.          SideKick.  at the DOS command line before you go into your
  2340.                     application. This needs to be done only once, when you
  2341.                     first boot up.
  2342.  
  2343.                     Once you are in the other application, you can activate
  2344.                     THELP at any time. Just position the cursor under the
  2345.                     item you want information on, then press the THELP hot
  2346.                     key. The default hot key is 5 on the numeric keypad
  2347.                     (scan code 4ch, shift state 00h).
  2348.  
  2349.  
  2350.   Navigating THELP  =======================================================
  2351.  
  2352.                     Use the following keys to navigate through the Help
  2353.                     screens that THELP displays on your monitor:
  2354.  
  2355.  
  2356. ----------------------------------------------------------------------
  2357. Key      What it does
  2358. ----------------------------------------------------------------------
  2359.  
  2360.  
  2361. Up  Down  Left  Right
  2362.          Move the highlight from keyword to keyword within the current
  2363.          Help screen.
  2364.  
  2365. Shift-Arrow
  2366.          Moves the cursor while marking a block.
  2367.  
  2368. Home and End
  2369.          Move to the beginning and end of a line, respectively.
  2370.  
  2371. Tab and Shift-Tab
  2372.          Moves to the next or previous keyword.
  2373.  
  2374.  
  2375.  
  2376.  
  2377.                                   - 38 -
  2378.  
  2379.  
  2380.  
  2381.  
  2382.  
  2383.  
  2384. PgUp/PgDn
  2385.          Moves from screen to screen if additional screens are
  2386.          available.
  2387.  
  2388. Enter    Selects a Help entry for the item highlighted in the current
  2389.          Help screen.
  2390.  
  2391. Esc      Ends Help session.
  2392.  
  2393. F1       Displays the Help Table of Contents screen.
  2394.  
  2395. Shift-F1 Displays the Help Index. You can search for a specific
  2396.          keyword incrementally. For example, you can find printf by
  2397.          typing p r i. With each letter you type, the list jumps to
  2398.          the keyword that starts with p, then to pr, then to pri, and
  2399.          so on.
  2400.  
  2401. Alt-F1   Pressing Alt-F1 repeatedly takes you in reverse order through
  2402.          the last 20 screens you have reviewed.
  2403.  
  2404. Alt-F    Selects a new Help file (if you have specified more than one
  2405.          help file in the THELP.CFG file or on the
  2406.          command-line).
  2407.  
  2408. Ctrl-P   Pastes the marked block or example text into your current
  2409.          application.
  2410.  
  2411. ----------------------------------------------------------------------
  2412.  
  2413.  
  2414.      THELP options  =======================================================
  2415.  
  2416.                     Here is a summary of the THELP command-line options. If
  2417.                     you use more than one option, you must separate them
  2418.                     with spaces.
  2419.  
  2420.                     The command-line options can be placed in a
  2421.                     configuration file (called THELP.CFG) for convenience.
  2422.                     THELP.CFG must be located in the same directory as
  2423.                     THELP.COM and each option in the configuration file
  2424.                     must be placed on its own line and begin in the
  2425.                     leftmost column.
  2426.  
  2427.  
  2428.                     -------------------------------------------------------
  2429. Summary of THELP     Option       Specifies
  2430.     command-line    -------------------------------------------------------
  2431.          options
  2432.  
  2433.  
  2434.  
  2435.                                   - 39 -
  2436.  
  2437.  
  2438.  
  2439.  
  2440.  
  2441.  
  2442.                     Table 1.1: Summary of THELP command-line options
  2443.                     (continued)____________________________________________
  2444.  
  2445.                      /C#xx        Select color:
  2446.                                      # = color number
  2447.                                      xx = hex color values
  2448.  
  2449.                      /Fname       Full path and file name of Help file
  2450.  
  2451.                      /H, /?, ?    Display help screen
  2452.  
  2453.                      /Kxxyy       Change hot key:
  2454.                                      xx = shift state (hex)
  2455.                                      yy = scan code (hex)
  2456.  
  2457.                      /U           Remove THELP from memory
  2458.  
  2459.                      /Wx,y,w,h    Sets the window size and location.
  2460.  
  2461.                     -------------------------------------------------------
  2462.  
  2463.  
  2464. ------------------  This option lets you customize the background and
  2465.      /C#xx (select  foreground colors of various elements in a help screen.
  2466.             color)  The /C option is followed by the number of the color
  2467. ------------------  you want and the hex color values for background and
  2468.                     foreground, respectively.
  2469.  
  2470.                     There are twelve possible colors, numbered as follows:
  2471.  
  2472.  
  2473.                     -------------------------------------------------------
  2474.                       Number Element
  2475.                     -------------------------------------------------------
  2476.  
  2477.  
  2478.                        0     Color border attribute
  2479.                        1     Monochrome border attribute
  2480.                        2     Color text attribute
  2481.                        3     Monochrome text attribute
  2482.                        4     Color keyword attribute
  2483.                        5     Monochrome keyword attribute
  2484.                        6     Color selected keyword word attribute
  2485.                        7     Monochrome selected keyword word attribute
  2486.                        8     Color example text attribute
  2487.                        9     Monochrome example text attribute
  2488.                        A     Color marked block attribute
  2489.                        B     Monochrome marked block attribute
  2490.  
  2491.  
  2492.  
  2493.                                   - 40 -
  2494.  
  2495.  
  2496.  
  2497.  
  2498.  
  2499.  
  2500.                     -------------------------------------------------------
  2501.  
  2502.                     The color values for a standard IBM-compatible color
  2503.                     display are as follows:
  2504.  
  2505.  
  2506.                     -------------------------------------------------------
  2507.                      First digit (background)   Second digit (foreground)
  2508.                     -------------------------------------------------------
  2509.  
  2510.  
  2511.                           0   Black              0 Black
  2512.                           1   Blue               1 Blue
  2513.                           2   Green              2 Green
  2514.                           3   Cyan               3 Cyan
  2515.                           4   Red                4 Red
  2516.                           5   Magenta            5 Magenta
  2517.                           6   Brown              6 Brown
  2518.                           7   Gray               7 Gray
  2519.                                                  8 Intense black
  2520.                      ORing the color value       9 Intense blue
  2521.                      with 0x80 produces a        A Intense green
  2522.                      blinking color unless       B Intense cyan
  2523.                      blinking has been           C Intense red
  2524.                      disabled.                   D Intense magenta
  2525.                                                  E Intense brown (yellow)
  2526.                                                  F Intense gray (white)
  2527.  
  2528.                     -------------------------------------------------------
  2529.  
  2530.                     On monochrome monitors, the attribute values can differ
  2531.                     widely, so you may need to experiment.
  2532.  
  2533.  
  2534. ------------------  The name that follows the /F option should be the full
  2535.  /Fname (full path  drive/directory path name of the help file to use; for
  2536.  and name for help  example,
  2537.              file)
  2538. ------------------   THELP /FC:\TC\OWLHELP.TCH
  2539.                      THELP /FC:\TC\TCHELP.TCH
  2540.  
  2541.                     You can specify multiple help files on the command-line
  2542.                     or in the THELP.CFG file.  THELP supports up to eight
  2543.                     help files.
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.                                   - 41 -
  2552.  
  2553.  
  2554.  
  2555.  
  2556.  
  2557.  
  2558. ------------------  Any of these options displays a summary of THELP's com-
  2559.      /H, /?, and ?  mand-line options.
  2560.      (display help
  2561.            screen)
  2562. ------------------  This option allows you to reassign a function to a new
  2563.   /Kxxyy (reassign  hot key. The option must be followed by the shift state
  2564.           hot key)  (xx) and the scan code (yy) of the new key. Virtually
  2565. ------------------  any shift state/scan code combination may be selected.
  2566.                     Here's a quick summary of some common shift states and
  2567.                     scan codes:
  2568.  
  2569.  
  2570.                     -------------------------------------------------------
  2571.                       Shift states (can be OR'ed together):
  2572.  
  2573.                        Right Shift   01h
  2574.                        Left Shift    02h
  2575.                        Ctrl          04h
  2576.                        Alt           08h
  2577.  
  2578.                       Scan codes:
  2579.  
  2580.                        A   1eh   N   31h   0   0bh   F1  3bh
  2581.                        B   30h   O   18h   1   02h   F2  3ch
  2582.                        C   2eh   P   19h   2   03h   F3  3dh
  2583.                        D   20h   Q   10h   3   04h   F4  3eh
  2584.                        E   12h   R   13h   4   05h   F5  3fh
  2585.                        F   21h   S   1fh   5   06h   F6  40h
  2586.                        G   22h   T   14h   6   07h   F7  41h
  2587.                        H   23h   U   16h   7   08h   F8  42h
  2588.                        I   17h   V   2fh   8   09h   F9  43h
  2589.                        J   24h   W   11h   9   0ah   F10 44h
  2590.                        K   25h   X   2dh
  2591.                        L   26h   Y   15h
  2592.                        M   32h   Z   2ch
  2593.  
  2594.                       Enhanced keyboards only (may not work with all
  2595.                       computers or keyboards):
  2596.  
  2597.                        F11 57h
  2598.                        F12 58h
  2599.  
  2600.                     -------------------------------------------------------
  2601.  
  2602.  
  2603.  
  2604.  
  2605.  
  2606.  
  2607.  
  2608.  
  2609.                                   - 42 -
  2610.  
  2611.  
  2612.  
  2613.  
  2614.  
  2615.  
  2616. ------------------  This option removes THELP from memory. If other TSRs
  2617.   /U (remove THELP  have been loaded after THELP, make sure to remove them
  2618.       from memory)  before removing THELP.
  2619. ------------------
  2620.  
  2621. ------------------  Where:
  2622. /Wx,y,w,h (set the    x = window column location (zero based)
  2623.    window size and    y = window row location
  2624.          location)    w = window width
  2625. ------------------    h = window height
  2626.  
  2627.                     For example, to create a full-screen help window use:
  2628.  
  2629.                      /W0,0,80,25
  2630.  
  2631.  
  2632.  
  2633. ===========================================================================
  2634. TLIB
  2635. ===========================================================================
  2636.  
  2637.                     TLIB is a utility that manages libraries of individual
  2638.                     .OBJ (object module) files. A library is a convenient
  2639.                     tool for dealing with a collection of object modules as
  2640.                     a single unit.
  2641.  
  2642.   When it modifies  The libraries included with Turbo C++ were built with
  2643.        an existing  TLIB. You can use TLIB to build your own libraries, or
  2644.      library, TLIB  to modify the Turbo C++ libraries, your own libraries,
  2645.   always creates a  libraries furnished by other programmers, or commercial
  2646.        copy of the  libraries you've purchased. You can use TLIB to
  2647.   original library
  2648. with a .BAK exten-  o create a new library from a group of object modules
  2649.  sion. Better safe
  2650.        than sorry!  o add object modules or other libraries to an existing
  2651.                       library
  2652.  
  2653.                     o remove object modules from an existing library
  2654.  
  2655.                     o replace object modules from an existing library
  2656.  
  2657.                     o extract object modules from an existing library
  2658.  
  2659.                     o list the contents of a new or existing library
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.                                   - 43 -
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674. See the section on  TLIB can also create (and include in the library file)
  2675.      the /E option  an Extended Dictionary, which may be used to speed up
  2676.      (page 49) for  linking.
  2677.           details.
  2678.                     Although TLIB is not essential for creating executable
  2679.                     programs with Turbo C++, it is a useful programming
  2680.                     productivity tool. You will find TLIB indispensable for
  2681.                     large development projects. If you work with object
  2682.                     module libraries developed by others, you can use TLIB
  2683.                     to maintain those libraries when necessary.
  2684.  
  2685.  
  2686.     Why use object  =======================================================
  2687.  module libraries?
  2688.                     When you program in C and C++, you often create a
  2689.                     collection of useful functions and classes. Because of
  2690.                     C and C++'s modularity, you are likely to split those
  2691.                     functions into many separately compiled source files.
  2692.                     You use only a subset of functions from the entire
  2693.                     collection in any particular program. It can become
  2694.                     quite tedious, however, to figure out exactly which
  2695.                     files you are using. On the other hand, if you always
  2696.                     include all the source files, your program becomes
  2697.                     extremely large and unwieldy.
  2698.  
  2699.                     An object module library solves the problem of managing
  2700.                     a collection of functions and classes. When you link
  2701.                     your program with a library, the linker scans the
  2702.                     library and automatically selects only those modules
  2703.                     needed for the current program.
  2704.  
  2705.  
  2706.   The TLIB command  =======================================================
  2707.               line
  2708.   To get a summary  The TLIB command line takes the following general form,
  2709.   of TLIB's usage,  where items listed in square brackets ([like this]) are
  2710. just type TLIB and  optional:
  2711.       press Enter.
  2712.                        tlib [/C] [/E] [/Psize] libname [operations] [,
  2713.                     listfile]
  2714.  
  2715.  
  2716.  
  2717.  
  2718.  
  2719.  
  2720.  
  2721.  
  2722.  
  2723.  
  2724.  
  2725.                                   - 44 -
  2726.  
  2727.  
  2728.  
  2729.  
  2730.  
  2731.  
  2732. Table 1.2: TLIB options
  2733.  
  2734.  
  2735. ---------------------------------------------------------------------------
  2736. Option         Description
  2737. ---------------------------------------------------------------------------
  2738.  
  2739. libname        The DOS path name of the library you want to create or
  2740.                manage. Every TLIB command must be given a libname.
  2741.                Wildcards are not allowed. TLIB assumes an extension of .LIB
  2742.                if none is given. We recommend that you do not use an exten-
  2743.                sion other than .LIB, since both TCC and TC's project-make
  2744.                facility require the .LIB extension in order to recognize
  2745.                library files. Note: If the named library does not exist and
  2746.                there are add operations, TLIB creates the library.
  2747.  
  2748. /C             The case-sensitive flag. This option is not normally used;
  2749.                see page 50 for a detailed explanation.
  2750.  
  2751. /E             Creates Extended Dictionary; see page 49 for a detailed
  2752.                explanation.
  2753.  
  2754. /Psize         Sets the library page size to size; see page 49 for a
  2755.                detailed explanation.
  2756.  
  2757. operations     The list of operations TLIB performs. Operations may appear
  2758.                in any order. If you only want to examine the contents of
  2759.                the library, don't give any operations.
  2760.  
  2761. listfile       The name of the file listing library contents. The listfile
  2762.                name (if given) must be preceded by a comma. No listing is
  2763.                produced if you don't give a file name. The listing is an
  2764.                alphabetical list of each module. The entry for each module
  2765.                contains an alphabetical list of each public symbol defined
  2766.                in that module. The default extension for the listfile is
  2767.                .LST. You can direct the listing to the screen by using the
  2768.                listfile name CON, or to the printer by using the name PRN.
  2769.  
  2770. ---------------------------------------------------------------------------
  2771.  
  2772.                     This section summarizes each of these command-line com-
  2773.                     ponents; the following sections provide details about
  2774.                     using TLIB. For TLIB examples, refer to the "Examples"
  2775.                     section on page 51.
  2776.  
  2777.  
  2778.  
  2779.  
  2780.  
  2781.  
  2782.  
  2783.                                   - 45 -
  2784.  
  2785.  
  2786.  
  2787.  
  2788.  
  2789.  
  2790. ------------------  The operation list describes what actions you want TLIB
  2791. The operation list  to do. It consists of a sequence of operations given
  2792. ------------------  one after the other. Each operation consists of a one-
  2793.                     or two-character action symbol followed by a file or
  2794.                     module name. You can put whitespace around either the
  2795.                     action symbol or the file or module name, but not in
  2796.                     the middle of a two-character action or in a name.
  2797.  
  2798.                     You can put as many operations as you like on the com-
  2799.                     mand line, up to DOS's COMMAND.COM-imposed line-length
  2800.                     limit of 127 characters. The order of the operations is
  2801.                     not important. TLIB always applies the operations in a
  2802.                     specific order:
  2803.  
  2804.                     1. All extract operations are done first.
  2805.  
  2806.                     2. All remove operations are done next.
  2807.  
  2808.                     3. All add operations are done last.
  2809.  
  2810.                     You can replace a module by first removing it, then
  2811.                     adding the replacement module.
  2812.  
  2813.  
  2814.                     File and module names
  2815.                     =======================================================
  2816.  
  2817.                     TLIB finds the name of a module by taking the given
  2818.                     file name and stripping any drive, path, and extension
  2819.                     information from it. (Typically, drive, path, and
  2820.                     extension are not given.)
  2821.  
  2822.                     Note that TLIB always assumes reasonable defaults. For
  2823.                     example, to add a module that has an .OBJ extension
  2824.                     from the current directory, you only need to supply the
  2825.                     module name, not the path and .OBJ extension.
  2826.  
  2827.                     Wildcards are never allowed in file or module names.
  2828.  
  2829.  
  2830.                     TLIB operations
  2831.                     =======================================================
  2832.  
  2833.                     TLIB recognizes three action symbols (*, +, *), which
  2834.                     you can use singly or combined in pairs for a total of
  2835.                     five distinct operations. The order of the characters
  2836.  
  2837.  
  2838.  
  2839.  
  2840.  
  2841.                                   - 46 -
  2842.  
  2843.  
  2844.  
  2845.  
  2846.  
  2847.  
  2848.                     is not important for operations that use a pair of
  2849.                     characters. The action symbols and what they do are
  2850.                     listed here:
  2851.  
  2852.  
  2853.                     -------------------------------------------------------
  2854.      TLIB action      Action
  2855.          symbols      symbol  Name           Description
  2856.                     -------------------------------------------------------
  2857.  
  2858.        To create a      +     Add            TLIB adds the named file to
  2859.       library, add                           the library. If the file has
  2860.       modules to a                           no extension given, TLIB
  2861.  library that does                           assumes an extension of .OBJ.
  2862.     not yet exist.                           If the file is itself a
  2863.                                              library (with a .LIB exten-
  2864.                                              sion), then the operation adds
  2865.                                              all of the modules in the
  2866.                                              named library to the target
  2867.                                              library.
  2868.  
  2869.                                              If a module being added
  2870.                                              already exists, TLIB displays
  2871.                                              a message and does not add the
  2872.                                              new module.
  2873.  
  2874.                         -     Remove         TLIB removes the named module
  2875.                                              from the library. If the
  2876.                                              module does not exist in the
  2877.                                              library, TLIB displays a
  2878.                                              message.
  2879.  
  2880.                                              A remove operation only needs
  2881.                                              a module name. TLIB allows you
  2882.                                              to enter a full path name with
  2883.                                              drive and extension included,
  2884.                                              but ignores everything except
  2885.                                              the module name.
  2886.  
  2887.                         *     Extract        TLIB creates the named file by
  2888.                                              copying the corresponding
  2889.                                              module from the library to the
  2890.                                              file. If the module does not
  2891.                                              exist, TLIB displays a message
  2892.                                              and does not create a file. If
  2893.                                              the named file already exists,
  2894.                                              it is overwritten.
  2895.  
  2896.  
  2897.  
  2898.  
  2899.                                   - 47 -
  2900.  
  2901.  
  2902.  
  2903.  
  2904.  
  2905.  
  2906.                     Table 1.3: TLIB action symbols (continued)_____________
  2907.  
  2908. You can't directly      -*    Extract &      TLIB copies the named module
  2909.  rename modules in      *-    Remove         to the corresponding file name
  2910.      a library. To                           and then removes it from the
  2911.   rename a module,                           library. This is just
  2912. extract and remove                           shorthand for an extract
  2913.     it, rename the                           followed by a remove
  2914. file just created,                           operation.
  2915.   then add it back
  2916.  into the library.      -+    Replace        TLIB replaces the named module
  2917.                         +-                   with the corresponding file.
  2918.                                              This is just shorthand for a
  2919.                                              remove followed by an add
  2920.                                              operation.
  2921.  
  2922.                     -------------------------------------------------------
  2923.  
  2924.  
  2925.     Using response  =======================================================
  2926.              files
  2927.                     When you are dealing with a large number of operations,
  2928.                     or if you find yourself repeating certain sets of
  2929.                     operations over and over, you will probably want to
  2930.                     start using response files. A response file is simply
  2931.                     an ASCII text file (which can be created with the Turbo
  2932.                     C++ editor) that contains all or part of a TLIB com-
  2933.                     mand. Using response files, you can build TLIB commands
  2934.                     larger than would fit on one DOS command line.
  2935.  
  2936. See "Examples" for  To use a response file pathname, specify @pathname at
  2937.  a sample response  any position on the TLIB command line.
  2938.    file and a TLIB
  2939.       command line  o More than one line of text can make up a response
  2940.  incorporating it.    file; you use the "and" character (&) at the end of a
  2941.                       line to indicate that another line follows.
  2942.  
  2943.                     o You don't need to put the entire TLIB command in the
  2944.                       response file; the file can provide a portion of the
  2945.                       TLIB command line, and you can type in the rest.
  2946.  
  2947.                     o You can use more than one response file in a single
  2948.                       TLIB command line.
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.  
  2956.  
  2957.                                   - 48 -
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.        Creating an  =======================================================
  2965.           extended
  2966. dictionary: The /E  To speed up linking with large library files (such as
  2967.             option  the standard Cx.LIB library), you can direct TLIB to
  2968.                     create an extended dictionary and append it to the
  2969.                     library file. This dictionary contains, in a very
  2970.                     compact form, information that is not included in the
  2971.                     standard library dictionary. This information enables
  2972.                     TLINK to process library files faster.
  2973.  
  2974.                     To create an extended dictionary for a library that is
  2975.                     being modified, use the /E option when you invoke TLIB
  2976.                     to add, remove, or replace modules in the library. To
  2977.                     create an extended dictionary for an existing library
  2978.                     that you don't want to modify, use the /E option and
  2979.                     ask TLIB to remove a nonexistent module from the
  2980.                     library. TLIB will display a warning that the specified
  2981.                     module was not found in the library, but it will also
  2982.                     create an extended dictionary for the specified
  2983.                     library. For example, if you enter
  2984.  
  2985.                        tlib /E mylib -bogus
  2986.  
  2987.                     TLINK will ignore the debugging information in a
  2988.                     library that has an extended dictionary, unless the /e
  2989.                     option is used on the TLINK command line.
  2990.  
  2991.  
  2992.   Setting the page  =======================================================
  2993.       size: The /P
  2994.             option  Every DOS library file contains a dictionary (which
  2995.                     appears at the end of the .LIB file, following all of
  2996.                     the object modules). For each module in the library,
  2997.                     this dictionary contains a 16-bit address of that
  2998.                     particular module within the .LIB file; this address is
  2999.                     given in terms of the library page size (it defaults to
  3000.                     16 bytes).
  3001.  
  3002.                     The library page size determines the maximum combined
  3003.                     size of all object modules in the library--it cannot
  3004.                     exceed 65,536 pages. The default (and minimum) page
  3005.                     size of 16 bytes allows a library of about 1 MB in
  3006.                     size. To create a larger library, the page size must be
  3007.                     increased using the /P option; the page size must be a
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.                                   - 49 -
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.                     power of 2, and it may not be smaller than 16 or larger
  3023.                     than 32,768.
  3024.  
  3025.                     All modules in the library must start on a page
  3026.                     boundary. For example, in a library with a page size of
  3027.                     32 (the lowest possible page size higher than the
  3028.                     default 16), on the average 16 bytes will be lost per
  3029.                     object module in padding. If you attempt to create a
  3030.                     library that is too large for the given page size, TLIB
  3031.                     will issue an error message and suggest that you use /P
  3032.                     with the next available higher page size.
  3033.  
  3034.  
  3035.           Advanced  =======================================================
  3036.  operation: The /C
  3037.             option  When you add a module to a library, TLIB maintains a
  3038.                     dictionary of all public symbols defined in the modules
  3039.                     of the library. All symbols in the library must be
  3040.                     distinct. If you try to add a module to the library
  3041.                     that would cause a duplicate symbol, TLIB displays a
  3042.                     message and won't add the module.
  3043.  
  3044.                     Normally, when TLIB checks for duplicate symbols in the
  3045.                     library, uppercase and lowercase letters are not
  3046.                     considered as distinct. For example, the symbols lookup
  3047.                     and LOOKUP are treated as duplicates. Since C and C++
  3048.                     do treat uppercase and lowercase letters as distinct,
  3049.                     use the /C option to add a module to a library that
  3050.                     includes a symbol differing only in case from one
  3051.                     already in the library. The /C option tells TLIB to
  3052.                     accept a module with symbols in it that differ only in
  3053.                     case from symbols already in the library.
  3054.  
  3055. If you want to use  It may seem odd that, without the /C option, TLIB
  3056.   the library with  rejects symbols that differ only in case, especially
  3057.  other linkers (or  since C and C++ are case-sensitive languages. The
  3058. allow other people  reason is that some linkers fail to distinguish between
  3059. to use the library  symbols in a library that differ only in case. Such
  3060.         with other  linkers, for example, will treat stars, Stars, and
  3061. linkers), for your  STARS as the same identifier. TLINK, on the other hand,
  3062. own protection you  has no problem distinguishing uppercase and lowercase
  3063. should not use the  symbols, and it will properly accept a library contain-
  3064.         /C option.  ing symbols that differ only in case. In this example,
  3065.                     then, Turbo C++ would treat stars, Stars, and STARS as
  3066.                     three separate identifiers. As long as you use the
  3067.                     library only with TLINK, you can use the TLIB /C option
  3068.                     without any problems.
  3069.  
  3070.  
  3071.  
  3072.  
  3073.                                   - 50 -
  3074.  
  3075.  
  3076.  
  3077.  
  3078.  
  3079.  
  3080.           Examples  =======================================================
  3081.  
  3082.                     Here are some simple examples demonstrating the
  3083.                     different things you can do with TLIB.
  3084.  
  3085.                     1. To create a library named MYLIB.LIB with modules
  3086.                        X.OBJ, Y.OBJ, and Z.OBJ, type
  3087.                         tlib mylib +x +y +z
  3088.  
  3089.                     2. To create a library as in #1 and get a listing in
  3090.                        MYLIB.LST too, type
  3091.                         tlib mylib +x +y +z, mylib.lst
  3092.  
  3093.                     3. To get a listing in CS.LST of an existing library
  3094.                        CS.LIB, type
  3095.                         tlib cs, cs.lst
  3096.  
  3097.                     4. To replace module X.OBJ with a new copy, add A.OBJ
  3098.                        and delete Z.OBJ from MYLIB.LIB, type
  3099.                         tlib mylib -+x +a -z
  3100.  
  3101.                     5. To extract module Y.OBJ from MYLIB.LIB and get a
  3102.                        listing in MYLIB.LST, type
  3103.                         tlib mylib *y, mylib.lst
  3104.  
  3105.                     6. To create a new library named ALPHA, with modules
  3106.                        A.OBJ, B.OBJ, ..., G.OBJ using a response file:
  3107.                         
  3108.                        First create a text file, ALPHA.RSP, with
  3109.                         +a.obj +b.obj +c.obj &
  3110.                                +d.obj +e.obj +f.obj &
  3111.                                +g.obj
  3112.                         
  3113.                        Then use the TLIB command, which produces a listing
  3114.                        file named ALPHA.LST:
  3115.                         tlib alpha @alpha.rsp, alpha.lst
  3116.  
  3117.  
  3118.  
  3119. ===========================================================================
  3120. TOUCH
  3121. ===========================================================================
  3122.  
  3123.                     There are times when you want to force a particular
  3124.                     target file to be recompiled or rebuilt, even though no
  3125.                     changes have been made to its sources. One way to do
  3126.  
  3127.  
  3128.  
  3129.  
  3130.  
  3131.                                   - 51 -
  3132.  
  3133.  
  3134.  
  3135.  
  3136.  
  3137.  
  3138.                     this is to use the TOUCH utility. TOUCH changes the
  3139.                     date and time of one or more files to the current date
  3140.                     and time, making it "newer" than the files that depend
  3141.                     on it.
  3142.  
  3143.                     You can force MAKE to rebuild a target file by touching
  3144.                     one of the files that target depends on. To touch a
  3145.                     file (or files), type
  3146.  
  3147.    You can use the    touch filename [filename ...]
  3148.    DOS wildcards *
  3149.  and ? with TOUCH.  at the DOS prompt. TOUCH will then update the file's
  3150.                     creation date(s). Once you do this, you can invoke MAKE
  3151.                     to rebuild the touched target file(s).
  3152.  
  3153.         Important!  Before you use the TOUCH utility, it's vitally
  3154.                     important to set your system's internal clock to the
  3155.                     proper date and time. If you're using an IBM PC, XT, or
  3156.                     compatible that doesn't have a battery-powered clock,
  3157.                     don't forget to set the time and date using the DOS
  3158.                     TIME and DATE commands. Failing to do this will keep
  3159.                     both TOUCH and MAKE from working properly.
  3160.  
  3161.  
  3162.  
  3163. ===========================================================================
  3164. TRANCOPY: A project transfer item utility
  3165. ===========================================================================
  3166.  
  3167.                     TRANCOPY copies transfer items from one project to
  3168.                     another. The syntax is
  3169.  
  3170.                      TRANCOPY [-r] Source[.PRJ] Dest[.PRJ]
  3171.  
  3172.                     TRANCOPY merges the transfer items in Source with the
  3173.                     transfer in Dest; Dest gets the new transfer items.
  3174.  
  3175.                     If the -r option is used, the set of the transfer items
  3176.                     in Dest is replaced by the set of transfer items in
  3177.                     Source.
  3178.  
  3179.  
  3180.  
  3181.  
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.  
  3188.  
  3189.                                   - 52 -
  3190.  
  3191.  
  3192.  
  3193.  
  3194.  
  3195.  
  3196. ===========================================================================
  3197. TRIGRAPH: A character-conversion utility
  3198. ===========================================================================
  3199.  
  3200.                     Trigraphs are three-character sequences that replace
  3201.                     certain characters used in the C language that are not
  3202.                     available on some keyboards. Translating trigraphs in
  3203.                     the compiler would slow compilation down considerably,
  3204.                     so Turbo C++ provides a filter named TRIGRAPH.EXE to
  3205.                     handle trigraph sequences when you need to. The syntax
  3206.                     for invoking this program is as follows:
  3207.  
  3208.                        TRIGRAPH [-u] file(s) [file(s) ...]
  3209.  
  3210.                     The following table shows the trigraph sequences that
  3211.                     TRIGRAPH.EXE recognizes:
  3212.  
  3213.  
  3214.                     -------------------------------------------------------
  3215.                       Trigraph  Character
  3216.                     -------------------------------------------------------
  3217.  
  3218.  
  3219.                        ??=        #
  3220.                        ??(        [
  3221.                        ??/        \
  3222.                        ??)        ]
  3223.                        ??'        ^
  3224.                        ??<        {
  3225.                        ??!        |
  3226.                        ??>        }
  3227.                        ??-        ~
  3228.  
  3229.                     -------------------------------------------------------
  3230.  
  3231.                     TRIGRAPH.EXE works in two directions: It can convert
  3232.                     all trigraphs to their single-character representation,
  3233.                     and it can convert single characters to their trigraph
  3234.                     representation. Ordinarily, TRIGRAPH.EXE converts
  3235.                     trigraphs to single characters. You can specify the
  3236.                     inverse conversion with the -u (UNDO) command-line
  3237.                     option, which must come before any file names on the
  3238.                     command line.
  3239.  
  3240.                     TRIGRAPH.EXE takes any number of file specifiers,
  3241.                     including wildcards, on the command line. For each file
  3242.                     specified, it creates a backup copy of the file with
  3243.                     the original file name and an extension of .BAK, and
  3244.  
  3245.  
  3246.  
  3247.                                   - 53 -
  3248.  
  3249.  
  3250.  
  3251.  
  3252.  
  3253.  
  3254.                     creates a new file with the original file name and the
  3255.                     appropriate conversions performed. For example,
  3256.  
  3257.                        trigraph test.c test1.c
  3258.  
  3259.                     removes all trigraphs from the two files TEST.C and
  3260.                     TEST1.C, creating backup files TEST.BAK and TEST1.BAK.
  3261.  
  3262.                     As another example, the following command inserts
  3263.                     trigraphs into all the files with the extension .C, and
  3264.                     makes backup copies of all those files, giving them the
  3265.                     extension .BAK.
  3266.  
  3267.                        trigraph -u *.c
  3268.  
  3269.  
  3270.  
  3271. ===========================================================================
  3272. Transfer macros
  3273. ===========================================================================
  3274.  
  3275.                     The IDE recognizes certain strings of characters called
  3276.                     transfer macros in the parameter string of the
  3277.                     Modify/New Transfer Item dialog box. There are three
  3278.                     kinds of macros: state, file name, and instruction.
  3279.  
  3280.  
  3281.       The transfer  State macros
  3282.  macros are listed  =======================================================
  3283. alphabetically and
  3284.  described in more  State macros are expanded according to the state of the
  3285. detail starting on  IDE. The state macros are
  3286.           page 55.
  3287.                     $COL                          $ERRNAME
  3288.                     $CONFIG                       $INC
  3289.                     $DEF                          $LIB
  3290.                     $ERRCOL                       $LINE
  3291.                     $ERRLINE                      $PRJNAME
  3292.  
  3293.  
  3294.                     File name macros
  3295.                     =======================================================
  3296.  
  3297.                     File name macros are actually functions that take file
  3298.                     names as arguments and return various parts of the file
  3299.                     name. They allow you to build up new file name
  3300.                     specifications from existing file names. For example,
  3301.                     you can pass TDUMP a macro like this:
  3302.  
  3303.  
  3304.  
  3305.                                   - 54 -
  3306.  
  3307.  
  3308.  
  3309.  
  3310.  
  3311.  
  3312.                        $DIR($EXENAME)$NAME($EDNAME).OBJ
  3313.  
  3314.                     This macro gives you the output directory path, the
  3315.                     file name only in the active Edit window, and an
  3316.                     explicit extension. If your current directory is
  3317.                     C:\WORK, your output directory is TEST, and the active
  3318.                     editor contains MYPROG.C, then TDUMP receives the
  3319.                     parameter
  3320.  
  3321.                        C:\WORK\TEST\MYPROG.OBJ
  3322.  
  3323.                     The file name macros are
  3324.  
  3325.                     $DIR                          $EXT()
  3326.                     $DRIVE()                      $NAME()
  3327.                     $EDNAME                       $OUTNAME
  3328.                     $EXENAME
  3329.  
  3330.  
  3331.                     Instruction macros
  3332.                     =======================================================
  3333.  
  3334.                     Instruction macros tell the IDE to perform some action
  3335.                     or make some setting. The instruction macros are
  3336.  
  3337.                     $CAP EDIT                     $PROMPT
  3338.                     $CAP MSG(filter)              $SAVE ALL
  3339.                     $DEP()                        $SAVE CUR
  3340.                     $MEM(kb to reserve)           $SAVE PROMPT
  3341.                     $NOSWAP                       $TASM
  3342.                     
  3343.  
  3344.                     $CAP EDIT: This macro tells the IDE to redirect program
  3345.                     output into a standard file. After the transfer program
  3346.                     is completed, a new editor window is created, and the
  3347.                     captured output is displayed. The captured output
  3348.                     resides in a special Edit window titled Transfer
  3349.                     Output.
  3350.  
  3351.                     For $CAP EDIT to work correctly, the transfer program
  3352.                     must write to DOS standard output.
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.                                   - 55 -
  3364.  
  3365.  
  3366.  
  3367.  
  3368.  
  3369.  
  3370.    You can use any  $CAP MSG(filter): Captures program output into the
  3371.   program that has  Message window, using filter as a DOS filter for
  3372.      line-oriented  converting program output into Message window format.
  3373.    messages output
  3374.     (file and line  We've provided several filters for this macro:
  3375.  number) with this  GREP2MSG.EXE for GREP and TASM2MSG.EXE for Turbo
  3376.             macro.  Assembler (TASM). We've included the source code for
  3377.                     these filters so you can write your own filters for
  3378.                     other transfer programs you install.
  3379.  
  3380.                     $COL: Column number of current editor. If the active
  3381.                     window is not an editor, then the string is set to 0.
  3382.  
  3383.                     $CONFIG: Complete file name of the current
  3384.                     configuration file. This is a null string if no
  3385.                     configuration file is defined. This macro is intended
  3386.                     for use by programs that access or modify the
  3387.                     configuration file. Besides providing the name of the
  3388.                     file, this macro causes the current configuration to be
  3389.                     saved (if modified) and reloaded when control returns
  3390.                     to the IDE.
  3391.  
  3392.  TEML is a Pascal-  Use this macro with the Turbo Editor Macro Language
  3393. like language that  (TEML) compiler. With it, you can edit the TEML script
  3394.  has many built-in  file in an editor and then invoke the Turbo Editor
  3395.   primitive editor  Macro Compiler (TEMC) to process the script. When the
  3396.  commands. Its use  configuration file is reloaded, your new or modified
  3397.   is documented in  editor commands will be in effect. When installing TEMC
  3398.         this file.  as a transfer item, use the following command line:
  3399.  
  3400.                        $EDNAME $CONFIG
  3401.  
  3402.                     This assumes the current Edit window contains the TEML
  3403.                     script file to be processed.
  3404.  
  3405.                     $DEF: Pulls in the contents of the Options|Compiler|
  3406.                     Code Generation "Defines" type-in box. Use this macro
  3407.                     to specify define directives to an external translator.
  3408.  
  3409. This macro is only  $DEP(): This macro provides the ability to
  3410.        used by the  automatically rebuild resources as part of a project
  3411.   project manager.  make if one of the resource components has been
  3412.                     modified.
  3413.  
  3414.                     $DIR(): Directory of the file argument, full path.
  3415.  
  3416.                     $DRIVE(): Drive of the file argument, in the form D:.
  3417.  
  3418.  
  3419.  
  3420.  
  3421.                                   - 56 -
  3422.  
  3423.  
  3424.  
  3425.  
  3426.  
  3427.  
  3428.                     $EDNAME: Complete file name of file in active editor.
  3429.                     This is a null string if the active window is not an
  3430.                     editor.
  3431.  
  3432.                     $ERRCOL: Column number of current error in file
  3433.                     $ERRNAME. If there are no messages, then string is
  3434.                     expanded to null string.
  3435.  
  3436.                     $ERRLINE: Line number of current error in file
  3437.                     $ERRNAME. If there are no messages, then string is
  3438.                     expanded to null string.
  3439.  
  3440.                     $ERRNAME: Complete file name of file referred to by the
  3441.                     selected messages in the Message window. This is a null
  3442.                     string if there are no messages or the currently
  3443.                     selected message does not refer to a file.
  3444.  
  3445.                     $EXENAME: Program's file name (including output path),
  3446.                     based on the project name or, if there is no project
  3447.                     defined, then the name of the .EXE that would be
  3448.                     produced from the active editor window.
  3449.  
  3450.                     $EXT(): Extension of the file argument; this includes
  3451.                     the dot (for example, .CPP).
  3452.  
  3453.                     $INC: Pulls in the contents of the Options|Directories|
  3454.                     Include Directories type-in box.
  3455.  
  3456.                     $LIB: Pulls in the contents of the Options|Directories|
  3457.                     Library Directories type-in box.
  3458.  
  3459.                     $LINE: Line number of current editor. If the active
  3460.                     window is not an editor, then the string is set to 0.
  3461.  
  3462.                     $MEM(Kb to reserve): This macro tells the IDE how much
  3463.                     memory to try to give the transfer program. The IDE
  3464.                     gives up as much memory as possible, to either the
  3465.                     amount specified or the maximum available, whichever is
  3466.                     smaller. You'll get an error if no memory is specified.
  3467.  
  3468.                     $NAME(): Name part of the file argument; does not
  3469.                     include the dot.
  3470.  
  3471.                     $NOSWAP: This macro tells the IDE not to swap to the
  3472.                     User Screen when running the program. It pops up a box
  3473.                     that indicates which transfer program is running. Use
  3474.                     this macro in conjunction with $CAP.
  3475.  
  3476.  
  3477.  
  3478.  
  3479.                                   - 57 -
  3480.  
  3481.  
  3482.  
  3483.  
  3484.  
  3485.  
  3486.                     $OUTNAME: This macro expands to the path and file name
  3487.                     that appear in the Project|Local Options Output Path
  3488.                     type-in box (in the active edit window). For example,
  3489.                     if the project contains STARS.C, the default Output
  3490.                     Path type-in is STARS.OBJ. So if STARS.C is in the
  3491.                     active edit window, $OUTNAME expands to STARS.OBJ. If
  3492.                     you've edited the type-in box so it says ..\MOON.XYZ,
  3493.                     $OUTNAME will expand to ..\MOON.XYZ. This macro is
  3494.                     useful when you are specifying modules for your user-
  3495.                     defined translators. For example, you could define a
  3496.                     TLIB translator and set the command line to
  3497.  
  3498.                     TLIB MYLIB +$OUTNAME
  3499.  
  3500.                     which adds the object module of the file in the active
  3501.                     edit window to the library MYLIB.
  3502.  
  3503.                     $PRJNAME: The current project file. Null string if no
  3504.                     project is defined.
  3505.  
  3506.                     $PROMPT: This macro tells the IDE to display the
  3507.                     expanded parameter string before calling the transfer
  3508.                     program. The command line that will be passed is
  3509.                     displayed in a dialog box. This allows you to change or
  3510.                     add to the string before it is passed.The position of
  3511.                     $PROMPT command in the command line determines what is
  3512.                     shown in the dialog prompt box. You can place constant
  3513.                     parameters in the command line by placing them before
  3514.                     $PROMPT. For example, the /c in
  3515.  
  3516.                        /c $PROMPT dir
  3517.  
  3518.                     is constant and doesn't show in the dialog box, but dir
  3519.                     can be edited before the command is run.
  3520.  
  3521.                     $SAVE ALL: This macro tells the IDE to save all
  3522.                     modified files in all Edit windows that have been
  3523.                     modified, without prompting.
  3524.  
  3525.                     $SAVE CUR: This macro tells the IDE to save the file in
  3526.                     the current editor if it has been modified. This
  3527.                     ensures that the invoked program will use the latest
  3528.                     version of the source file.
  3529.  
  3530.                     $SAVE PROMPT: This macro tells the IDE to prompt when
  3531.                     there are unsaved files in editor windows. You will be
  3532.                     asked if you want to save any unsaved files.
  3533.  
  3534.  
  3535.  
  3536.  
  3537.                                   - 58 -
  3538.  
  3539.  
  3540.  
  3541.  
  3542.  
  3543.  
  3544.                     $TASM: This macro is predefined for use with Turbo
  3545.                     Assembler. It uses the TASM2MSG filter to trap TASM
  3546.                     messages. $TASM is essentially shorthand for this:
  3547.  
  3548.                      $NOSWAP $SAVE CUR $CAP MSG(TASM2MSG) $EDNAME,$OUTNAME
  3549.  
  3550.                     $WRITEMSG(filename): This macro copies the contents of
  3551.                     the Message window to the specified ASCII file. The
  3552.                     translator can parse the file and act on the messages
  3553.                     so desired. For example, $WRITEMSG(C:\MESSAGES.TXT)
  3554.                     writes to the file MESSAGES.TXT on your root directory.
  3555.  
  3556.  
  3557.        Running DOS  =======================================================
  3558.           commands
  3559.                     If you want to run DOS commands from within the
  3560.                     integrated environment, you can set up a simple
  3561.                     transfer macro that will let you do so. Just add this
  3562.                     transfer item:
  3563.  
  3564.                        command /c $MEM(128) $PROMPT
  3565.  
  3566.                     When you invoke this transfer item, a dialog box
  3567.                     appears and prompts you for DOS input. Since the
  3568.                     $PROMPT command appears later in the string, the text
  3569.                     command /c won't show up in the dialog's input box.
  3570.                     This lets you just type dir, chkdsk, del *.*, or
  3571.                     whatever DOS command you want to run.
  3572.  
  3573.  
  3574.    Transfer memory  =======================================================
  3575.           settings
  3576.                     Different programs have different memory needs. For
  3577.                     example, GREP can run in very little memory, where many
  3578.                     popular editors require 200-300K to work well.
  3579.  
  3580.                     If you use the $MEM() macro, you can specify (on a
  3581.                     program-by-program basis) how much memory the IDE
  3582.                     should give to the transfer programs. The less memory
  3583.                     you devote to a transfer program, the quicker the
  3584.                     transfer to and from the program occurs.
  3585.  
  3586.                     There may be some cases where the IDE cannot give up as
  3587.                     much memory as you requested. When this happens, the
  3588.                     IDE gives up as much as it can. There are certain
  3589.                     states in the IDE that require more memory than others;
  3590.                     for example, while debugging a program, the IDE will
  3591.  
  3592.  
  3593.  
  3594.  
  3595.                                   - 59 -
  3596.  
  3597.  
  3598.  
  3599.  
  3600.  
  3601.  
  3602.                     tie up more resources than when not debugging. Use
  3603.                     Program Reset (Ctrl-F2) to free up debugging memory.
  3604.  
  3605.                     In those cases where you want the IDE to give up all
  3606.                     its memory, give it a large number, like 640K. How much
  3607.                     memory is actually given up is dependent on how much
  3608.                     you have when you start Turbo C++.
  3609.  
  3610.  
  3611.  
  3612. ===========================================================================
  3613. Turbo Editor macros
  3614. ===========================================================================
  3615.  
  3616.                     TEMC.EXE is an editor macro compiler for the IDE. It
  3617.                     processes a script file that defines editor macros and
  3618.                     key bindings, and produces a configuration file that is
  3619.                     read by the IDE to define the effects of keyboard
  3620.                     commands in the editor.
  3621.  
  3622.                     The file DEFAULTS.TEM contains the default macro
  3623.                     definitions and key bindings built into the IDE editor.
  3624.                     It serves as an example script, as well as a base from
  3625.                     which to customize the editor.
  3626.  
  3627.  
  3628.  
  3629. ===========================================================================
  3630. TEMC command line
  3631. ===========================================================================
  3632.  
  3633.                     TEMC is invoked from the DOS command line. Type
  3634.  
  3635.                      temc [-c] [-u] <script file> <config file>
  3636.  
  3637.                     The script file extension is .TEM if not specified
  3638.                     otherwise. The configuration file extensions is assumed
  3639.                     to be .TC.
  3640.  
  3641.                     The configuration file need not exist. If it does not
  3642.                     exist, it is created. The optional -c switch can also
  3643.                     be specified as /c, and can appear in any argument
  3644.                     position on the command line. If you use this option,
  3645.                     any existing command table in your configuration file
  3646.                     is thrown away before TEMC processes the script file.
  3647.                     When -c is not used, the key bindings in the script
  3648.                     file are merged with those already defined in the
  3649.                     configuration file.
  3650.  
  3651.  
  3652.  
  3653.                                   - 60 -
  3654.  
  3655.  
  3656.  
  3657.  
  3658.  
  3659.  
  3660.                     TEMC by default modifies the commands used by the IDE
  3661.                     when the Alternate command set is specified in Options|
  3662.                     Environment|Preferences. The optional -u switch, which
  3663.                     can also be specified as /u, causes TEMC to modify the
  3664.                     CUA command set instead.
  3665.  
  3666.                     You can use DEFAULTS.TEM to re-create exactly the
  3667.                     default settings of the Alternate command set.  This
  3668.                     file is included as both a sample script file and as
  3669.                     the default command table. You can copy it and modify
  3670.                     it for your own use. A file named CMACROS.TEM is
  3671.                     provided with Turbo C++; this file contains many useful
  3672.                     enhancements to the IDE for C and C++ programming that
  3673.                     you may wish to install.
  3674.  
  3675.  
  3676.  
  3677. ===========================================================================
  3678. Syntax
  3679. ===========================================================================
  3680.  
  3681.                     The syntax to define a macro is
  3682.  
  3683.                      MACRO <macroname>
  3684.                        <command1>;
  3685.                        [ <command2>; ... ]
  3686.                      END;
  3687.  
  3688.                     <macroname> can consist of anything that is a legal C
  3689.                     symbol, and <command> can be either the name of another
  3690.                     predefined macro or a predefined TEMC editor command. A
  3691.                     list of editor commands and what they do follows.
  3692.  
  3693.                     When you define your macro, the following points are
  3694.                     valid:
  3695.  
  3696.                     1. A statement defines either a named macro or a key
  3697.                        binding.
  3698.  
  3699.                     2. Spaces and new lines are optional.
  3700.  
  3701.                     3. Comments are in C-style /* ... */ pairs.
  3702.  
  3703.                     4. Unlike C, TEMC's language is case insensitive.
  3704.  
  3705.                     5. Some of the predefined editor commands have a syntax
  3706.                        that looks like a C function call with one argument.
  3707.                        For example,
  3708.  
  3709.  
  3710.  
  3711.                                   - 61 -
  3712.  
  3713.  
  3714.  
  3715.  
  3716.  
  3717.  
  3718.                         
  3719.                         SetMark(5);
  3720.                         
  3721.                        Depending on the command, the argumment is either a
  3722.                        decimal integer constant, a character constant, or a
  3723.                        string literal. All are specified using C syntax.
  3724.  
  3725.                     Here's an example of a macro definition from
  3726.                     DEFAULTS.TEM:
  3727.  
  3728.                      MACRO MacScrollUp
  3729.                        ScrollScreenUp; FixCursorPos;
  3730.                      END;
  3731.  
  3732.                     The syntax to define a key binding is
  3733.  
  3734.                      <key-sequence>: <command>;
  3735.  
  3736.                     or
  3737.  
  3738.                      <key-sequence>: BEGIN <command1>; [ <command2>; ... ]
  3739.                      END;
  3740.  
  3741.                     The <key-sequence> is either a key (a character
  3742.                     optionally preceded by Ctrl or Alt), or a series of
  3743.                     keys separated by a plus sign (+). Note that the
  3744.                     specification of the key characters themselves is case
  3745.                     sensitive. For example, Ctrl-k+B is different than
  3746.                     Ctrl-k+b, even though the latter is the same as CTRL-
  3747.                     K+b.
  3748.  
  3749.                     Whitespace is allowed between the key-sequence and the
  3750.                     colon, and each <command> can be either the name of a
  3751.                     previously defined macro, or one of the predefined
  3752.                     editor commands listed in Table 1.1.
  3753.  
  3754.  
  3755.  
  3756. ===========================================================================
  3757. Key codes
  3758. ===========================================================================
  3759.  
  3760.                     The IDE editor makes use of an extended character set
  3761.                     that includes key combinations not normally available
  3762.                     to DOS programs. Key codes can be specified in a script
  3763.                     through any combination of the symbols "Ctrl-",
  3764.                     "Shift-" "Alt-" and a character.
  3765.  
  3766.  
  3767.  
  3768.  
  3769.                                   - 62 -
  3770.  
  3771.  
  3772.  
  3773.  
  3774.  
  3775.  
  3776.                     Some keys cannot be entered directly into a TEMC
  3777.                     script. Those keys can be referred to by their names,
  3778.                     as described in the following table.
  3779.  
  3780.                     Any key in a sequence--except the first key--can be
  3781.                     preceded by one of the characters ^ or @. The caret (^)
  3782.                     indicates that any combination of case and "Ctrl" can
  3783.                     be used to type the key; that is, lowercase, uppercase,
  3784.                     or control characters. The @ sign is used to indicate
  3785.                     that case is insignificant for the following character,
  3786.                     although "Ctrl" is not accepted. For example,
  3787.  
  3788.                     o Ctrl-k+b specifies a Ctrl-K followed by a lowercase
  3789.                       b.
  3790.  
  3791.                     o Ctrl-k+^b specifies a Ctrl-K followed by any of b, B,
  3792.                       or Ctrl-B.
  3793.  
  3794.                     o Ctrl-k+@B specifies Ctrl-K followed by either b or B.
  3795.  
  3796.  
  3797.         Named keys  =======================================================
  3798.  
  3799.                     Key are specified as letters, numbers, or characters,
  3800.                     optionally preceded by one or more of Ctrl-, Alt- or
  3801.                     Shift-. The following names specify keys that cannot be
  3802.                     typed as themselves in the TEMC syntax.
  3803.  
  3804.  
  3805.                     -------------------------------------------------------
  3806.                        Key name    Notes
  3807.                     -------------------------------------------------------
  3808.  
  3809.                        Home
  3810.                        End
  3811.                        PgUp
  3812.                        PgDn
  3813.                        LfAr        Left arrow
  3814.                        RgAr        Right arrow
  3815.                        UpAr        Up arrow
  3816.                        DnAr        Down arrow
  3817.                        Ins
  3818.                        Del
  3819.                        Enter
  3820.                        Return      Same as Enter
  3821.                        BkSp        Backspace
  3822.                        Tab
  3823.                        BkTab       No longer available, use Shift-Tab
  3824.  
  3825.  
  3826.  
  3827.                                   - 63 -
  3828.  
  3829.  
  3830.  
  3831.  
  3832.  
  3833.  
  3834.                        Esc
  3835.                        Star        * key on the numeric keypad
  3836.                        Minus       - key on the numeric keypad
  3837.                        Plus        + key on the numeric keypad
  3838.                        Space       Spacebar
  3839.                        PrtSc
  3840.                        F1 to F10   Function keys
  3841.  
  3842.                     -------------------------------------------------------
  3843.  
  3844.  
  3845.  
  3846. ===========================================================================
  3847. Predefined editor commands
  3848. ===========================================================================
  3849.  
  3850.                     TEMC lets you use built-in editor commands and user-
  3851.                     defined macros as commands within macros
  3852.                     interchangeably, as long as you don't create any loops
  3853.                     by having two macros calling each other, even via
  3854.                     intermediate macros. Note that some commands cause an
  3855.                     escape from the editor to the surrounding IDE, for
  3856.                     example, by bringing up a dialog box. Your macro will
  3857.                     "pause" until control returns to the editor.
  3858.  
  3859.                     A list of all predefined TEMC editor commands is shown
  3860.                     next. Commands that cause an escape from the editor
  3861.                     follow.
  3862.  
  3863.  
  3864.  
  3865.                     -------------------------------------------------------
  3866.      TEMC editor    Command name                What the editor does
  3867.         commands    -------------------------------------------------------
  3868.  
  3869.                     BackspaceDelete             Deletes character before
  3870.                                                 the cursor.
  3871.  
  3872.                     BottomOfScreen              Moves cursor to the bottom
  3873.                                                 line of the current window,
  3874.                                                 leaving column unchanged.
  3875.  
  3876.                     CenterFixScreenPos          Adjusts the screen display
  3877.                                                 to ensure the cursor is
  3878.                                                 visible. If any adjustment
  3879.                                                 is necessary, adjust the
  3880.                                                 display so the cursor is
  3881.  
  3882.  
  3883.  
  3884.  
  3885.                                   - 64 -
  3886.  
  3887.  
  3888.  
  3889.  
  3890.  
  3891.  
  3892.                     Table 1.4: TEMC editor commands (continued)____________
  3893.  
  3894.                                                 close to being centered in
  3895.                                                 the window.
  3896.  
  3897.                     CopyBlock                   If there is a valid and
  3898.                                                 highlighted (selected)
  3899.                                                 text block, then at the
  3900.                                                 cursor location, inserts a
  3901.                                                 copy of the characters that
  3902.                                                 are selected and makes that
  3903.                                                 the new selected text
  3904.                                                 location.
  3905.  
  3906.                     CursorCharLeft              Moves cursor left over one
  3907.                                                 character. This command
  3908.                                                 will skip over tab
  3909.                                                 characters and move to the
  3910.                                                 end of the previous line.
  3911.  
  3912.                     CursorCharRight             Moves cursor right over one
  3913.                                                 character. This  command
  3914.                                                 will skip over tab
  3915.                                                 characters and advance to
  3916.                                                 the beginning of the next
  3917.                                                 line.
  3918.  
  3919.                     CursorDown                  Moves cursor down one row.
  3920.  
  3921.                     CursorLeft                  Moves cursor left one
  3922.                                                 screen column.
  3923.  
  3924.                     CursorRight                 Moves cursor right one
  3925.                                                 screen column.
  3926.  
  3927.                     CursorSwitchedLeft          Like CursorLeft, but pays
  3928.                                                 attention to cursor through
  3929.                                                 tab option setting (see
  3930.                                                 SetCursorThroughTabMode).
  3931.  
  3932.                     CursorSwitchedRight         Like CursorRight, but pays
  3933.                                                 attention to cursor
  3934.                                                 through tab option setting
  3935.                                                 (see
  3936.                                                 SetCursorThroughTabMode).
  3937.  
  3938.                     CursorUp                    Moves cursor up one row.
  3939.  
  3940.  
  3941.  
  3942.  
  3943.                                   - 65 -
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.                     Table 1.4: TEMC editor commands (continued)____________
  3951.  
  3952.                     DeleteBlock                 If there is a valid and
  3953.                                                 highlighted (selected) text
  3954.                                                 block, deletes the
  3955.                                                 characters that are in it.
  3956.  
  3957.                     DeleteChar                  Deletes the character at
  3958.                                                 the current cursor
  3959.                                                 location.
  3960.  
  3961.                     DeleteLine                  Deletes the current line.
  3962.  
  3963.                     DeleteToEOL                 Deletes all characters in
  3964.                                                 the current line, leaving a
  3965.                                                 zero-length line.
  3966.  
  3967.                     DeleteWord                  Deletes from cursor to
  3968.                                                 beginning of next word.
  3969.  
  3970.                     EndCursor                   Moves cursor to end of file
  3971.                                                 buffer.
  3972.  
  3973.                     ExtendBlockBeg              Initiates a series of
  3974.                                                 commands that will select a
  3975.                                                 block of text between the
  3976.                                                 initial and ending
  3977.                                                 positions of the cursor.
  3978.  
  3979.                     ExtendBlockEnd              Ends a series of commands
  3980.                                                 begun by ExtendBlockBeg.
  3981.  
  3982.                     FixCursorPos                Ensures that the cursor
  3983.                                                 value specifies a row
  3984.                                                 between 1 and the number of
  3985.                                                 lines in the buffer, a
  3986.                                                 column greater than 0. If
  3987.                                                 the cursor through tab
  3988.                                                 option is not set, the
  3989.                                                 cursor is not placed in the
  3990.                                                 middle of a tab character
  3991.                                                 (see
  3992.                                                 SetCursorThroughTabMode).
  3993.  
  3994.                     FixScreenPos                Adjusts the screen display
  3995.                                                 to ensure the cursor is
  3996.                                                 visible.
  3997.  
  3998.  
  3999.  
  4000.  
  4001.                                   - 66 -
  4002.  
  4003.  
  4004.  
  4005.  
  4006.  
  4007.  
  4008.                     Table 1.4: TEMC editor commands (continued)____________
  4009.  
  4010.                     FullPaintScreen             Redraws the entire window,
  4011.                                                 making no assumptions about
  4012.                                                 what is onscreen.
  4013.  
  4014.                     HideBlock                   Sets a flag indicating that
  4015.                                                 the selected text should
  4016.                                                 not be highlighted.
  4017.  
  4018.                     HighlightBlock              Sets a flag indicating that
  4019.                                                 if the beginning and end
  4020.                                                 selected text markers are
  4021.                                                 valid, the selected text
  4022.                                                 should be highlighted.
  4023.  
  4024.                     HomeCursor                  Moves cursor to beginning
  4025.                                                 of the file buffer.
  4026.  
  4027.                     IndentBlock                 Inserts a space at the
  4028.                                                 beginning of each line in
  4029.                                                 the highlighted (selected)
  4030.                                                 text.
  4031.  
  4032.                     InsertText                  Inserts the literal
  4033.                                                 "string" in the buffer at
  4034.                                                 the current cursor
  4035.                                                 location. Use the syntax
  4036.                                                 InsertText(string) to call
  4037.                                                 this command.
  4038.  
  4039.                     LeftOfLine                  Moves cursor to beginning
  4040.                                                 of the current line.
  4041.  
  4042.                     LiteralChar                 Inserts the character at
  4043.                                                 the current cursor
  4044.                                                 location, without doing any
  4045.                                                 special processing for
  4046.                                                 newline, tab characters,
  4047.                                                 etc. Use the syntax
  4048.                                                 LiteralChar(c), where c is
  4049.                                                 a character or integer
  4050.                                                 value.
  4051.  
  4052.                     MarkBufModified             Sets a flag indicating that
  4053.                                                 the contents of the buffer
  4054.                                                 are different than what is
  4055.  
  4056.  
  4057.  
  4058.  
  4059.                                   - 67 -
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.                     Table 1.4: TEMC editor commands (continued)____________
  4067.  
  4068.                                                 in the corresponding disk
  4069.                                                 file.
  4070.  
  4071.                     MarkBufUnModified           Clears a flag, thus
  4072.                                                 indicating that the
  4073.                                                 contents of the buffer can
  4074.                                                 be assumed to be identical
  4075.                                                 to what is in the disk
  4076.                                                 file.
  4077.  
  4078.                     MatchPairBackward           Same as MatchPairForward
  4079.                                                 except if the cursor is on
  4080.                                                 a ' or ", searches backward
  4081.                                                 for the matching character.
  4082.  
  4083.                     MatchPairForward            If the cursor is on one of
  4084.                                                 the characters (, ), {, },
  4085.                                                 [, ], or on the first
  4086.                                                 character of one of the
  4087.                                                 pairs /* or */, searches in
  4088.                                                 the appropriate direction
  4089.                                                 for the closest instance of
  4090.                                                 the matching delimiter. If
  4091.                                                 the cursor is on the
  4092.                                                 character ' or ", searches
  4093.                                                 forward for the matching
  4094.                                                 character. If a match is
  4095.                                                 found, places the cursor
  4096.                                                 there.
  4097.  
  4098.                     MoveBlock                   Like CopyBlock, but also
  4099.                                                 deletes the original
  4100.                                                 selected text.
  4101.  
  4102.                     MoveToBlockBeg              Moves cursor to the
  4103.                                                 location marked as the
  4104.                                                 beginning of the selected
  4105.                                                 text.
  4106.  
  4107.                     MoveToBlockEnd              Moves cursor to the
  4108.                                                 location marked as the end
  4109.                                                 of the selected text.
  4110.  
  4111.                     MoveToMark                  Moves the cursor to the
  4112.                                                 location saved with
  4113.                                                 SetMark(n) command. Use the
  4114.  
  4115.  
  4116.  
  4117.                                   - 68 -
  4118.  
  4119.  
  4120.  
  4121.  
  4122.  
  4123.  
  4124.                     Table 1.4: TEMC editor commands (continued)____________
  4125.  
  4126.                                                 syntax MoveToMark(n), where
  4127.                                                 n is a one-digit number,
  4128.                                                 0-9.
  4129.  
  4130.                     MoveToPrevPos               Moves the cursor to the
  4131.                                                 location specified by the
  4132.                                                 "previous position marker."
  4133.  
  4134.                     MoveToTempPos               Moves the cursor to the
  4135.                                                 saved temporary marker.
  4136.  
  4137.                     NullCmd                     No operation. Calls the
  4138.                                                 editor, but performs no
  4139.                                                 function. Can be used to
  4140.                                                 cause a keystroke to have
  4141.                                                 no effect.
  4142.  
  4143.                     OutdentBlock                Deletes a leading space, if
  4144.                                                 any, from the beginning of
  4145.                                                 each line in the
  4146.                                                 highlighted (selected)
  4147.                                                 text.
  4148.  
  4149.                     PageDown                    Moves cursor down by number
  4150.                                                 of lines in the window.
  4151.  
  4152.                     PageScreenDown              Scrolls screen down by
  4153.                                                 numer of lines in the
  4154.                                                 window, leaving cursor
  4155.                                                 position unchanged.
  4156.  
  4157.                     PageScreenUp                Scrolls screen up by numer
  4158.                                                 of lines in the window,
  4159.                                                 leaving cursor position
  4160.                                                 unchanged.
  4161.  
  4162.                     PageUp                      Moves cursor up by number
  4163.                                                 of lines in the window.
  4164.  
  4165.                     PaintScreen                 Redraws the entire window,
  4166.                                                 assuming that the screen
  4167.                                                 still correctly displays
  4168.                                                 what the editor last drew
  4169.                                                 on it.
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.                                   - 69 -
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.                     Table 1.4: TEMC editor commands (continued)____________
  4183.  
  4184.                     ReDo                        Performs an Redo operation.
  4185.                                                 Exactly what happens
  4186.                                                 depends on the option
  4187.                                                 settings.
  4188.  
  4189.                     RightOfLine                 Moves cursor to end of
  4190.                                                 current line.
  4191.  
  4192.                     RightOfWord                 Moves cursor to the next
  4193.                                                 column that follows the end
  4194.                                                 of a word.
  4195.  
  4196.                     ScrollScreenDown            Scrolls screen down one
  4197.                                                 line, leaving cursor
  4198.                                                 position unchanged.
  4199.  
  4200.                     ScrollScreenUp              Scrolls screen up one line,
  4201.                                                 leaving cursor position
  4202.                                                 unchanged.
  4203.  
  4204.                     SetAutoIndent               Sets the Auto Indent option
  4205.                                                 On.
  4206.  
  4207.                     SetAutoOutdent              Sets the Backspace
  4208.                                                 Unindents option On.
  4209.  
  4210.                     SetBlockBeg                 Sets the beginning of the
  4211.                                                 selected text to be the
  4212.                                                 character at the current
  4213.                                                 cursor location.
  4214.  
  4215.                     SetBlockEnd                 Sets the end of the
  4216.                                                 selected text to be the
  4217.                                                 character at the current
  4218.                                                 cursor location.
  4219.  
  4220.                     SetCursorThroughTabMode     Sets the Cursor Through
  4221.                                                 Tabs option On.
  4222.  
  4223.                     SetInsertMode               Sets Insert/Overwrite
  4224.                                                 option to Insert.
  4225.  
  4226.                     SetMark                     Sets a marker to point to
  4227.                                                 the character at the
  4228.                                                 current cursor location, so
  4229.                                                 a later MoveToMark(n)
  4230.  
  4231.  
  4232.  
  4233.                                   - 70 -
  4234.  
  4235.  
  4236.  
  4237.  
  4238.  
  4239.  
  4240.                     Table 1.4: TEMC editor commands (continued)____________
  4241.  
  4242.                                                 comand can restore the
  4243.                                                 cursor. Use the syntax
  4244.                                                 SetMark(n), where n is a
  4245.                                                 one digit number, 0-9.
  4246.  
  4247.                     SetOptimalFillMode          Sets Optimal Fill option
  4248.                                                 On.
  4249.  
  4250.                     SetPrevPos                  Sets a marker (the previous
  4251.                                                 position marker) to point
  4252.                                                 to the character at the
  4253.                                                 current cursor location.
  4254.                                                 This marker location
  4255.                                                 changes only by a call to
  4256.                                                 SetPrevPos or SwapPrevPos.
  4257.  
  4258.                     SetTabbingMode              Sets Use Tab Char option
  4259.                                                 On.
  4260.  
  4261.                     SetTempPos                  Saves the cursor location
  4262.                                                 in a temporary marker that
  4263.                                                 can be used by some
  4264.                                                 internal editor commands.
  4265.                                                 This is not a practical
  4266.                                                 application in user-defined
  4267.                                                 macros. Use SetMark
  4268.                                                 instead.
  4269.  
  4270.                     SmartRefreshScreen          Redraws the window,
  4271.                                                 skipping any portions that
  4272.                                                 the editor is sure are
  4273.                                                 unmodified since the last
  4274.                                                 redraw.
  4275.  
  4276.                     SmartTab                    Inserts space or tab
  4277.                                                 characters in accordance
  4278.                                                 with the current settings
  4279.                                                 of the Use Tab Char option,
  4280.                                                 Tab Width.
  4281.  
  4282.                     SwapPrevPos                 Exchanges the values of the
  4283.                                                 cursor and the "previous
  4284.                                                 position marker."
  4285.  
  4286.                     ToggleAutoIndent            Toggles the state of the
  4287.                                                 Auto Indent option.
  4288.  
  4289.  
  4290.  
  4291.                                   - 71 -
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.                     Table 1.4: TEMC editor commands (continued)____________
  4299.  
  4300.                     ToggleAutoOutdent           Toggles the state of the
  4301.                                                 Backspace Unindents option.
  4302.  
  4303.                     ToggleCursorThroughTabMode  Toggles the state of the
  4304.                                                 Cursor Through Tabs option.
  4305.  
  4306.                     ToggleHideBlock             Toggles the state of the
  4307.                                                 highlight (selected) text
  4308.                                                 flag (see HighlightBlock).
  4309.  
  4310.                     ToggleInsert                Toggles state of
  4311.                                                 Insert/Overwrite option.
  4312.  
  4313.                     ToggleOptimalFillMode       Toggles state of Optimal
  4314.                                                 Fill option.
  4315.  
  4316.                     ToggleTabbingMode           Toggles state of Use Tab
  4317.                                                 Char option.
  4318.  
  4319.                     TopOfScreen                 Moves cursor to the top
  4320.                                                 line currently displayed in
  4321.                                                 the window, leaving column
  4322.                                                 unchanged.
  4323.  
  4324.                     UnDo                        Performs an Undo operation.
  4325.                                                 Exactly what happens
  4326.                                                 depends on the option
  4327.                                                 settings.
  4328.  
  4329.                     WordLeft                    Moves cursor to beginning
  4330.                                                 of previous word, or to end
  4331.                                                 of previous line, whichever
  4332.                                                 is first.
  4333.  
  4334.                     WordRight                   Moves cursor to beginning
  4335.                                                 of next word, or to the end
  4336.                                                 of a line, whichever is
  4337.                                                 first.
  4338.  
  4339.                     -------------------------------------------------------
  4340.  
  4341.  
  4342.                     The following commands cause an exit from the editor,
  4343.                     for example, by bringing up a dialog box. The macro
  4344.                     resumes when the editor window regains the focus.
  4345.  
  4346.  
  4347.  
  4348.  
  4349.                                   - 72 -
  4350.  
  4351.  
  4352.  
  4353.  
  4354.  
  4355.  
  4356.                     The keys listed next to some of the commands below are
  4357.                     the ones used by default when the Alternate mode of the
  4358.                     IDE is selected.
  4359.  
  4360.                     AddWatch            Adds a watch item (Ctrl-F7).
  4361.                     ChangeDirectory     Opens a dialog box for changing the
  4362.                                         current directory.
  4363.                     ChangeModeFlags     Used after a command such as
  4364.                                         ToggleInsert which changes the
  4365.                                         state of an editor option switch.
  4366.                                         Causes the IDE to update various
  4367.                                         menu items and/or icons.
  4368.                     ClipCopy            Copys selected text to Clipboard
  4369.                                         (Ctrl-Ins).
  4370.                     ClipCut             Cuts selected text to Clipboard
  4371.                                         (Shift-Del).
  4372.                     ClipPaste           Pastes Clipboard into buffer at
  4373.                                         cursor (Shift-Ins).
  4374.                     ClipShow            Shows Clipboard (no hot key
  4375.                                         defined).
  4376.                     CloseWindow         Closes editor window (Alt-F3).
  4377.                     CompileFile         Compiles current buffer (Alt-F9).
  4378.                     CompileMenu         Selects Compile menu (Alt-C).
  4379.                     CompilerOptions     Selects the Options Compiler menu
  4380.                     DebugMenu           Selects Debug menu (Alt-D).
  4381.                     EditMenu            elects Edit menu (Alt-E).
  4382.                     FileMenu            Selects File menu (Alt-F).
  4383.                     GetFindString       Opens a dialog box for the Search
  4384.                                         operation. (Alt-S F)
  4385.                     GotoWindow1         Selects window #1 (Alt-1).
  4386.                     GotoWindow2         Selects window #2 (Alt-2).
  4387.                     GotoWindow3         Selects window #3 (Alt-3).
  4388.                     GotoWindow4         Selects window #4 (Alt-4).
  4389.                     GotoWindow5         Selects window #5 (Alt-5).
  4390.                     GotoWindow6         Selects window #6 (Alt-6).
  4391.                     GotoWindow7         Selects window #7 (Alt-7).
  4392.                     GotoWindow8         Selects window #8 (Alt-8).
  4393.                     GotoWindow9         Selects window #9 (Alt-9).
  4394.                     Help                Opens the Help window (F1).
  4395.                     HelpMenu            Selects Help menu (Alt-H).
  4396.                     HelpIndex           Display the Help system't index
  4397.                                         (Shift-F1)
  4398.                     Inspect             Inspects item (Alt-F4).
  4399.                     LastHelp            Opens previous help window (Alt-
  4400.                                         F1).
  4401.                     MakeProject         Makes project (F9).
  4402.                     Menu                Highlights top menu bar.
  4403.  
  4404.  
  4405.  
  4406.  
  4407.                                   - 73 -
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.                     Modify              Evaluates expression/modify
  4415.                                         variable (Ctrl-F4).
  4416.                     NextError           Moves to next item in message
  4417.                                         window (Alt-F8).
  4418.                     NextWindow          Selects next window in IDE (F6).
  4419.                     OpenFile            Opens dialog box for File Open
  4420.                                         (F3).
  4421.                     OptionsMenu         Selects Options menu (Alt-O).
  4422.                     PrevError           Moves to previous item in message
  4423.                                         window (Alt-F7).
  4424.                     PrintBlock          Writes selected text to the
  4425.                                         printer.
  4426.                     ProjectMenu         Selects Project menu (Alt-P).
  4427.                     Quit                Exits the IDE (Alt-X).
  4428.                     ReadBlock           Opens dialog box requesting a file
  4429.                                         name to be read into the buffer at
  4430.                                         the cursor location and marked as
  4431.                                         selected text.
  4432.                     RepeatSearch        Searches again, using previous
  4433.                                         parameters.
  4434.                     Replace             Opens an dialog box for the Replace
  4435.                                         operation.
  4436.                     ResetProgram        Resets program being debugged
  4437.                                         (Ctrl-F2).
  4438.                     RunMenu             Selects Run menu (Alt-R).
  4439.                     RunProgram          Makes and runs current executable
  4440.                                         (Ctrl-F9).
  4441.                     RunToHere           Runs program until statement at
  4442.                                         cursor (F4).
  4443.                     SaveFile            Saves current editor buffer (F2).
  4444.                     SaveFileAs          Opens dialog for File SaveAs.
  4445.                     SearchMenu          Selects Search menu (Alt-S).
  4446.                     Step                Step over (F8).
  4447.                     SystemMenu          Selects Sytem menu (Alt-Spacebar).
  4448.                     ToggleBreakpoint    Sets/Clears a breakpoint at the
  4449.                                         cursor location
  4450.                     Trace               Trace into (F7).
  4451.                     Transfer0           Selects nth item from transfer menu
  4452.                     Transfer1           .
  4453.                     Transfer2           .
  4454.                     Transfer3           .
  4455.                     Transfer4           .
  4456.                     Transfer5           .
  4457.                     Transfer6           .
  4458.                     Transfer7           .
  4459.                     Transfer8           .
  4460.                     Transfer9           .
  4461.                     ViewCallStack       Views Call Stack (Ctrl-F3).
  4462.  
  4463.  
  4464.  
  4465.                                   - 74 -
  4466.  
  4467.  
  4468.  
  4469.  
  4470.  
  4471.  
  4472.                     ViewUserScreen      Displays User Screen (Alt-F5).
  4473.                     WindowList          Displays window list (Alt-0).
  4474.                     WindowMenu          Selects Window menu (Alt-W).
  4475.                     WindowCascade
  4476.                     WindowTile
  4477.                     WordHelp            Context sensitive help (Ctrl-F1).
  4478.                     WriteBlock          Opens dialog box requesting a file
  4479.                                         name to which the selected text
  4480.                                         will be written.
  4481.                     ZoomWindow          Zooms/unzoomd current window (F5).
  4482.  
  4483.  
  4484.  
  4485.  
  4486.  
  4487.  
  4488.  
  4489.  
  4490.  
  4491.  
  4492.  
  4493.  
  4494.  
  4495.  
  4496.  
  4497.  
  4498.  
  4499.  
  4500.  
  4501.  
  4502.  
  4503.  
  4504.  
  4505.  
  4506.  
  4507.  
  4508.  
  4509.  
  4510.  
  4511.  
  4512.  
  4513.  
  4514.  
  4515.  
  4516.  
  4517.  
  4518.  
  4519.  
  4520.  
  4521.  
  4522.  
  4523.                                   - 75 -
  4524.  
  4525.  
  4526.  
  4527.  
  4528.  
  4529.  
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.  
  4576.  
  4577.  
  4578.  
  4579.  
  4580.  
  4581.                                   - 76 -
  4582.  
  4583.  
  4584.  
  4585.  
  4586.  
  4587.  
  4588. INDEX
  4589. ___________________________________________________________________________
  4590.  
  4591.  
  4592.  
  4593.  
  4594.  
  4595. - + and + - (TLIB action symbols)       /C THELP option (select color) 39,
  4596.   48                                      40
  4597. [ ] GREP operator 17                    /C TLIB option (case sensitivity)
  4598. /? THELP help option 40, 42               45, 50
  4599. -* and ** (TLIB action symbols) 47      $CAP EDIT transfer macro 55
  4600. * (TLIB action symbol) 47               $CAP MSG transfer macro 55
  4601. + (TLIB action symbol) 47               case sensitivity
  4602. - (TLIB action symbol) 47                 GREP option 14
  4603. $ GREP operator 17                        TLIB option 45, 50
  4604. * GREP operator 17                      characters
  4605. + GREP operator 17                        trigraph
  4606. . GREP operator 17                          converting 53
  4607. \ GREP operator 17                      $COL transfer macro 56
  4608. ^ GREP operator 17                      columns
  4609. ? THELP option 40, 42                     numbers 56
  4610.                                         command line
  4611.                                           syntax
  4612. A                                           CPP 10
  4613. add (TLIB action symbol) 47             compilers
  4614.                                           Turbo editor macro 56
  4615.                                         $CONFIG transfer macro 56
  4616. B                                       configuration files 56
  4617. BGIOBJ 2-10                               TCC file 10
  4618.   advanced features 6                     CPP and 10
  4619.   command-line syntax 3, 6              conversion
  4620.   components 6                            trigraphs 53
  4621.   example 4                             CPP 10-12
  4622.   graphics.h and 8                        command-line options and syntax
  4623.   options                                 10
  4624.     destination file 7                    directory 10
  4625.     /F 6                                  example of use 11
  4626.     file name 6                           files
  4627.     file name (/F) 5                        compiling 11
  4628.     public name 7                         -P option (source file names and
  4629.     segment class 7                         line numbers) 11
  4630.     segment name 7                        wildcards and 10
  4631.     source file 7
  4632.  
  4633.                                         D
  4634. C                                       -d GREP option (directories) 14
  4635. -c GREP option (count only) 14          /D OBJXREF option (directory) 24
  4636.  
  4637.  
  4638.  
  4639. Index                                                                    77
  4640.  
  4641.  
  4642.  
  4643.  
  4644.  
  4645.  
  4646. debugging                               extended dictionary
  4647.   include files 10                        TLIB and 45, 49
  4648.   macros 10                             extract and remove (TLIB action) 47
  4649. $DEF transfer macro 56
  4650. Defines option
  4651.   transfer macro 56                     F
  4652. $DEP transfer macro 56                  /F BGIOBJ option 6
  4653. dependencies                            /F BGIOBJ option (far routines) 5
  4654.   explicit 56                           /F OBJXREF option (include full
  4655. $DIR transfer macro 56                    library) 25
  4656. directories                             /F THELP option 41
  4657.   CPP 10                                /F THELP option (Help file path and
  4658.   GREP option 14                          name) 40
  4659.   include files                         files
  4660.     transfer macro 57                     dates
  4661.   libraries                                 changing 51
  4662.     transfer macro 57                     destination
  4663.   .OBJ files 24                             BGIOBJ 7
  4664.   transfer macro 56                       extensions 57
  4665. DLLs                                      linker response, used by OBJXREF
  4666.   creating 57                               28, 33
  4667. DOS                                       macros
  4668.   commands                                  expanded 10
  4669.     running from the IDE 59               matching
  4670. $DRIVE transfer macro 56                    GREP option 14
  4671.                                           names
  4672.                                             macros
  4673. E                                             transfer 54
  4674. /E TLIB option (extended                    printing (GREP) 15
  4675.   dictionary) 45, 49                      output, generated by OBJXREF 25
  4676. editor                                    path
  4677.   macro language (TEML)                     macros 56
  4678.     using 56                              saving
  4679. $EDNAME transfer macro 56                   all 58
  4680. $ERRCOL transfer macro 57                 searching 12-22
  4681. $ERRLINE transfer macro 57                source
  4682. $ERRNAME transfer macro 57                  BGIOBJ 7
  4683. errors                                  filters 55
  4684.   linker                                  GREP 56
  4685.     graphics drivers and fonts 5          Resource Compiler 56
  4686.   OBJXREF (list) 34                       TASM 56
  4687. examples                                fonts
  4688.   OBJXREF 28-33                           adding to graphics library 3
  4689. .EXE files                                files, converting to .OBJ files 2
  4690.   file name transfer macro 57             included with Turbo C++ 4
  4691. $EXENAME transfer macro 57                linker errors and 5
  4692. $EXT transfer macro 57                    linking 2-10
  4693.                                           registering 3, 8
  4694.  
  4695.  
  4696.  
  4697.                                   - 78 -
  4698.  
  4699.  
  4700.  
  4701.  
  4702.  
  4703.  
  4704.   stroked 2-10                              white space in 18
  4705.     linking 2                             using 13
  4706.                                           wildcards and 18
  4707.                                         GREP.COM 16
  4708. G                                       GREP2MSG.EXE 56
  4709. graphics drivers
  4710.   adding to graphics library 3
  4711.   converting to .OBJ files 2, 2-10      H
  4712.   included with Turbo C++ 4             /H THELP option (help) 40, 42
  4713.   linker                                header files
  4714.     errors and 5                          graphics.h 8
  4715.   linking 2                             help
  4716.   registering 3, 8                        GREP (file searcher) 13
  4717. graphics.h (header file)                  OBJXREF 23
  4718.   BGIOBJ and 8                            THELP 40, 42
  4719. GRAPHICS.LIB                            hot keys
  4720.   adding to 3                             scan codes 42
  4721. GREP (file searcher) 12-22
  4722.   capturing messages 56
  4723.   examples 18                           I
  4724.   files to search 18                    -i GREP option (case sensitivity)
  4725.   help 13                                 14
  4726.   literal character 17                  /I OBJXREF option (case
  4727.   matches 17                              sensitivity) 24
  4728.   operators 17                          $INC transfer macro 57
  4729.   optimizing use of 16                  include files
  4730.   options                                 debugging 10
  4731.     case sensitivity (-i) 14              directories
  4732.     count only (-c) 14                      transfer macro 57
  4733.     default 15, 16                      integrated environment
  4734.     discussion 13                         DOS commands and 59
  4735.     file names (printing) 15              memory needs 59
  4736.     -i (case sensitivity) 14
  4737.     line numbers (-n) 14
  4738.     lines, nonmatching (-v) 15          K
  4739.     list matching files (-l) 14         /K THELP option (change hot key)
  4740.     -n (line numbers) 14                  40, 42
  4741.     -o (UNIX output format) 14          keyboard
  4742.     precedence 16                         trigraph program 53
  4743.     regular expression search (-r)
  4744.     14
  4745.     UNIX format (-o) 14                 L
  4746.     updating (-u) 15                    -l GREP option (list matching
  4747.     -v 15                                 files) 14
  4748.     -v (nonmatching lines) 15           /L OBJXREF command (linker response
  4749.     verbose 15                            file) 28
  4750.     word search (-w) 15                 $LIB transfer macro 57
  4751.   search strings 16                     libname (TLIB option) 45
  4752.  
  4753.  
  4754.  
  4755. Index                                                                    79
  4756.  
  4757.  
  4758.  
  4759.  
  4760.  
  4761.  
  4762. libraries                                 column number 57
  4763.   directories                             file name 57
  4764.     transfer macro 57                     line number 57
  4765.   files 22                              module names, TLIB 46
  4766.     contents of 22
  4767.   graphics
  4768.     adding driver and font files to     N
  4769.     3                                   -n command-line compiler option
  4770.   object files 43, 44                     CPP and 10
  4771.     creating 47                         -n GREP option (line numbers) 14
  4772.   OBJXREF                               /N OBJXREF option (limit reports)
  4773.     including all 25                      26
  4774.   page size 49                          $NAME transfer macro 57
  4775. $LINE transfer macro 57                 $NOSWAP transfer macro 57
  4776. lines                                   numbers
  4777.   numbering 57                            column 56
  4778.     printing (GREP) 14                    line 57
  4779. linker
  4780.   error: segment exceeds 64K 5
  4781.   response files                        O
  4782.     used by OBJXREF 28, 33              -o GREP option (UNIX format output)
  4783. linking                                   14
  4784.   graphics drivers 2                    /O OBJXREF option (output file for
  4785. listfile (TLIB option) 45                 reports) 25
  4786.                                         .OBJ files
  4787.                                           converting font files into 2
  4788. M                                         converting graphics drivers files
  4789. macros                                    into 2
  4790.   CPP and 11                              defined 22
  4791.   debugging 10                            directories 24
  4792.   editor 56                               libraries
  4793.   expanded                                  advantages of using 44
  4794.     list of 10                              creating 47
  4795.   preprocessing 11                          TLIB and 43
  4796.   preprocessor 10                         names 22
  4797. MAKE (program manager)                    response files and 27
  4798.   modifying 51                          object modules
  4799.   project files and 36                    defined 22
  4800. $MEM transfer macro 57, 59                names 22
  4801. memory                                  OBJXREF 22-34
  4802.   requirements                            directories 24
  4803.     IDE 59                                error messages 34
  4804.   transfer programs 57, 59                examples of reports 29, 30, 31,
  4805. Message window                            32
  4806.   capturing output into 55                help 23
  4807.   copying text from 59                    /L command (linker response
  4808. messages                                  files) 28
  4809.   capturing from programs 55
  4810.  
  4811.  
  4812.  
  4813.                                   - 80 -
  4814.  
  4815.  
  4816.  
  4817.  
  4818.  
  4819.  
  4820.   linker files                            wildcards and 23
  4821.     as response files 28                operations (TLIB option) 45
  4822.   options 23                            operators
  4823.     /N (limit information) 26             GREP 17
  4824.     /RV 26                              $OUTNAME transfer macro 57
  4825.     /RC 31                              output
  4826.     control 24                            capturing 55
  4827.     directories (/D) 24                 output file
  4828.     /F (include full library) 25          generated by OBJXREF 25
  4829.     ignore case (/I) 24
  4830.     include full library (/F) 25
  4831.     include zero-length segment         P
  4832.     definitions (/Z) 25                 -P CPP option (source file names
  4833.     list file names (/V) 25               and line numbers) 11
  4834.     modified reports 26                 /P OBJXREF command (project files)
  4835.     /O (output file) 25                   27
  4836.     reports 25                          /P TLIB option (page size) 49
  4837.       by class type                     page size (libraries) 49
  4838.         example 33                      path
  4839.       by class type (/RC) 26, 31          transfer macro 57
  4840.       by external reference (/RX)       precedence
  4841.       26, 30                              GREP options 16
  4842.       by module (/RM) 26, 29              TLIB commands 46
  4843.       by public names (/RP) 26, 29      PRJ2MAK (project file converter) 36
  4844.       by reference (/RR) 26, 30, 33     PRJCNVT (project file converter) 35
  4845.       default type 33                   $PRJNAME transfer macro 58
  4846.       of all types (/RV) 26             programs
  4847.       of module sizes (/RS) 26, 31        capturing output 55
  4848.       of unreferenced symbol names        file name 57
  4849.       (/RU) 26, 32                        memory assignments 59
  4850.       output file (/O) 25               project files
  4851.       verbose                             OBJXREF and 27
  4852.         example 33                        used by OBJXREF 33
  4853.       verbose (/RV) 26, 32              projects
  4854.     /V (verbose output) 25                files
  4855.     verbose report (/RV) 32                 converting from old versions 35
  4856.     /Z (include zero-length segment         converting to MAKE files 36
  4857.     definitions) 25                         file name transfer macro 58
  4858.   project files                         $PROMPT transfer macro 58
  4859.     as response files 27                public names
  4860.   project files (/P) 27                   defined 22
  4861.   reports 23
  4862.     modifying 26
  4863.     output file for (/O) 25             R
  4864.   response files 23, 27                 -r GREP option (regular expression
  4865.     example 33                            search) 14
  4866.     linker 28                           /RC OBJXREF option (report) 31
  4867.   warnings 34                           /RC OBJXREF option (reports) 26
  4868.  
  4869.  
  4870.  
  4871. Index                                                                    81
  4872.  
  4873.  
  4874.  
  4875.  
  4876.  
  4877.  
  4878. redirecting program output 55               in text files 12-22
  4879. registerbgidriver (function)            swapping
  4880.   BGIOBJ and 3, 8                         to User Screen 57
  4881. registerbgifont (function)              syntax
  4882.   BGIOBJ and 3, 8                         CPP 10
  4883. registerfarbgidriver (function)           TLIB 44
  4884.   BGIOBJ and 6, 8
  4885. registerfarbgifont (function)
  4886.   BGIOBJ and 6, 8                       T
  4887. remove (TLIB action) 47                 TASM2MSG.EXE 56
  4888. replace (TLIB action) 48                $TASM transfer macro 58
  4889. Resource Compiler                       text
  4890.   capturing messages 56                   Message window 59
  4891. resources                               text files
  4892.   rebuilding automatically 56             searching 12-22
  4893. response files                          THELP (Turbo Help utility) 37-43
  4894.   file-name extensions and 27             additional Help on highlighted
  4895.   formats 27                              word 39
  4896.   free-form 27                            cursor keys 38
  4897.     example 33                            index 39
  4898.   linker files and 28                     invoking 37
  4899.   OBJXREF and 23, 27, 28                  keywords 38
  4900.     example 33                            loading 37
  4901.   project files and 27                    options 39-43
  4902.   TLIB 48                                   colors (/C) 40
  4903.   TLINK, OBJXREF and 33                     colors (/C)  39
  4904. /RM OBJXREF option (reports) 26             Help file path (/F) 40
  4905. /RP OBJXREF option (reports) 26             help file path (/F) 41
  4906. /RR OBJXREF option (reports) 26             help on (/?
  4907. /RS OBJXREF option (reports) 26               /H
  4908. /RU OBJXREF option (reports) 26                 ?) 40, 42
  4909. /RV OBJXREF option (reports) 26             Help screen colors (/C) 39
  4910. /RX OBJXREF option (reports) 26             help screen colors (/C) 40
  4911.                                             hot keys (/K) 40, 42
  4912.                                             reassign hot keys (/K) 40, 42
  4913. S                                           removing THELP (/U) 40, 43
  4914. $SAVE ALL transfer macro 58                 screen colors (/C) 39, 40
  4915. $SAVE CUR transfer macro 58                 /U (removing THELP) 40, 43
  4916. $SAVE PROMPT transfer macro 58              /W (window options) 40
  4917. scan codes 42                               window options 43
  4918. searches                                    window options (/W) 40
  4919.   text files 12-22                        paging through 38
  4920. source files                              paste page 39
  4921.   separately compiled 44                  previous screens 39
  4922. standalone utilities 1                    quitting 39
  4923. strings                                   removing from memory 40, 43
  4924.   searching for                           scan codes 42
  4925.     as expressions (GREP) 14              using 38
  4926.  
  4927.  
  4928.  
  4929.                                   - 82 -
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.  
  4936. TLIB (librarian) 43-51                    $INC 57
  4937.   action symbols 46-48                    instruction 55
  4938.   capabilities 43                         $LIB 57
  4939.   examples 51                             $LINE 57
  4940.   extended dictionary (/e)                $MEM 57
  4941.     TLINK and 49                          $NAME 57
  4942.   module names 46                         $NOSWAP 57
  4943.   operations 46                           $OUTNAME 57
  4944.     precedence 46                         $PRJNAME 58
  4945.   options                                 $PROMPT 58
  4946.     case sensitivity (/c) 45, 50          $SAVE ALL 58
  4947.     /E 45, 49                             $SAVE CUR 58
  4948.     extended dictionary (/e) 45, 49       $SAVE PROMPT 58
  4949.     libname 45                            $TASM 58
  4950.     listfile 45                           $WRITEMSG 59
  4951.     operations 45                       trigraphs
  4952.     page size (/P) 49                     translating 53
  4953.     using 44                              undo option (-u) 53
  4954.   response files                        Turbo Assembler
  4955.     using 48                              capturing messages 56
  4956.   syntax 44                               $TASM macro 58
  4957. TLIB (Turbo librarian) 43-51            TURBOC.CFG 10
  4958.   options 39-51
  4959. TLINK (linker)
  4960.   response files                        U
  4961.     OBJXREF and 28                      -u GREP option (updating) 15
  4962.   TLIB extended dictionary and 49       /U THELP option 43
  4963. TOUCH 51, 52                            /U THELP option (remove THELP) 40
  4964. transfer macros                         UNIX
  4965.   $CAP EDIT 55                            format (GREP) 14
  4966.   $CAP MSG 55                           User Screen 57
  4967.   $COL 56                               utilities
  4968.   $CONFIG 56                              standalone 1
  4969.   $DEF 56                                 TLIB 43-51
  4970.   defined 54                              TOUCH 51
  4971.   $DEP 56
  4972.   $DIR 56
  4973.   DOS commands 59                       V
  4974.   $DRIVE 56                             -v GREP option (nonmatching lines)
  4975.   $EDNAME 56                              15
  4976.   $ERRCOL 57                            /V OBJXREF option (verbose output)
  4977.   $ERRLINE 57                             25
  4978.   $ERRNAME 57
  4979.   $EXENAME 57
  4980.   $EXT 57                               W
  4981.   file names 54                         -w GREP option (word search) 15
  4982.   glossary of 55                        /W THELP option (ser window
  4983.   how expanded 54                         size/location) 40
  4984.  
  4985.  
  4986.  
  4987. Index                                                                    83
  4988.  
  4989.  
  4990.  
  4991.  
  4992.  
  4993.  
  4994. /W THELP option (window options) 43     Z
  4995. wildcards                               -z GREP option (verbose) 15
  4996.   CPP and 10                            /Z OBJXREF option (include zero-
  4997.   OBJXREF and 23                          length segment definitions) 25
  4998.   TOUCH and 52
  4999. $WRITEMSG transfer macro 59
  5000.  
  5001.  
  5002.  
  5003.  
  5004.  
  5005.  
  5006.  
  5007.  
  5008.  
  5009.  
  5010.  
  5011.  
  5012.  
  5013.  
  5014.  
  5015.  
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042.  
  5043.  
  5044.  
  5045.                                   - 84 -
  5046.  
  5047.