CONTENTS ___________________________________________________________________________

HOW TO USE THIS FILE . . . . . . . 1 BGIOBJ: Converting graphics drivers and fonts . . . . . . . . . . . . 2 Adding the new .OBJ files to GRAPHICS.LIB . . . . . . . . . . 3 Registering the drivers and fonts . . . . . . . . . . . . . 3 An example . . . . . . . . . . 4 The /F option . . . . . . . . . 5 Advanced features . . . . . . . 6 CPP: The preprocessor . . . . . 10 CPP as a macro preprocessor . 11 An example . . . . . . . . . . 11 GREP: A text-search utility . . 12 Command-line syntax . . . . . 13 GREP options . . . . . . . . . 13 Order of precedence . . . . 16 The search string . . . . . . 16 Operators in regular expressions . . . . . . . . 17 File specifications . . . . . 18 Some GREP examples . . . . . . 18 Example 1 . . . . . . . . . 18 Example 2 . . . . . . . . . 19 Example 3 . . . . . . . . . 19 Example 4 . . . . . . . . . 20 Example 5 . . . . . . . . . 20 Example 6 . . . . . . . . . 21 Example 7 . . . . . . . . . 21 Example 8 . . . . . . . . . 22 OBJXREF: The object module crossreference utility . . . . . . . 22 The OBJXREF command line . . . 23 The OBJXREF command-line options . . . . . . . . . . 24 Control options . . . . . 24 Report options . . . . . . 25 Response files . . . . . . . . 27 Free-form response files . . 27 Project files . . . . . . . 27

Linker response files . . . . 28 Sample OBJXREF reports . . . . 28 Report by public names (/RP) . . . . . . . . . . . . 29 Report by module (/RM) . . . 29 Report by reference (/RR) . . 30 Report by external references (/RX) . . . . . . . . . . . . 30 Report of module sizes (/RS) . . . . . . . . . . . . 31 Report by class type (/RC) . 31 Report of unreferenced symbol names (/RU) . . . . . . . . . 32 Verbose reporting (/RV) . . . 32 Examples of how to use OBJXREF . . . . . . . . . . . . 32 Example 1 . . . . . . . . . . 32 Example 2 . . . . . . . . . . 33 Example 3 . . . . . . . . . . 33 Example 4 . . . . . . . . . . 33 OBJXREF error messages and warnings . . . . . . . . . . . 34 Error messages . . . . . . . 34 Warnings . . . . . . . . . . 34 PRJCFG: Configuration file utility . . . . . . . . . . . . . 35 PRJCNVT: Old projects for new . . 35 PRJ2MAK: From project file to MAKE file . . . . . . . . . . . . . . 36 THELP: The Turbo Help utility . . 37 Loading and invoking THELP . . 37 Navigating THELP . . . . . . . 38 THELP options . . . . . . . . . 39 /C#xx (select color) . . . . 40 /Fname (full path and name for help file) . . . . . . . . . 41 /H, /?, and ? (display help screen) . . . . . . . . . . . 42 /Kxxyy (reassign hot key) . . 42 /U (remove THELP from memory) . . . . . . . . . . . 43


/Wx,y,w,h (set the window size and location) . . . . . . . 43 TLIB . . . . . . . . . . . . . . 43 Why use object module libraries? . . . . . . . . . . 44 The TLIB command line . . . . 44 The operation list . . . . . 46 File and module names . . 46 TLIB operations . . . . . 46 Using response files . . . . . 48 Creating an extended dictionary: The /E option . . . . . . . . 49 Setting the page size: The /P option . . . . . . . . . . . . 49 Advanced operation: The /C option . . . . . . . . . . . . 50 Examples . . . . . . . . . . . 51 TOUCH . . . . . . . . . . . . . 51

TRANCOPY: A project transfer item utility . . . . . . . . . . . . . TRIGRAPH: A character-conversion utility . . . . . . . . . . . . . Transfer macros . . . . . . . . . State macros . . . . . . . File name macros . . . . . Instruction macros . . . . Running DOS commands . . . . . Transfer memory settings . . . Turbo Editor macros . . . . . . . TEMC command line . . . . . . . . Syntax . . . . . . . . . . . . . Key codes . . . . . . . . . . . . Named keys . . . . . . . . . . Predefined editor commands . . . Index

52 53 54 54 54 55 59 59 60 60 61 62 63 64 77


TABLES ___________________________________________________________________________

1.1: Summary of THELP command-line options . . . . . . . . . . .39 1.2: TLIB options . . . . . . . .45

1.3: TLIB action symbols . . . . 47 1.4: TEMC editor commands . . . . 64


Online document ___________________________________________________________________________

Other utilities

=========================================================================== HOW TO USE THIS FILE =========================================================================== This file has a table of contents and an index that refer to "pages" in this file. If your editor has a search facility, you can use it to search for the page numbers listed in either the table of contents or in the index. The text "- n -" (where n represents the actual page number) appears at the bottom left of the "page" it refers to. Thus, at the bottom of page 1, you'll find "- 1 -" as the last item on that "page." Turbo C++ comes with a host of standalone utilities that you can use with your Turbo C++ files or other modules. Several are documented in the User's Guide; others are documented here. ------------------------------------------------------Name Description ------------------------------------------------------Documented in the User's Guide MAKE TLINK Standalone program manager Turbo Linker

Documented in this file BGIOBJ Conversion utility for graphics drivers and fonts

- 1 -

However. how to use them. Linking drivers and fonts directly into your program is advantageous because the executable file contains all (or most) of the drivers and/or fonts it might need. . linking the drivers and fonts into your executable file increases its size. This is in addition to the graphics package's dynamic loading scheme. you can link them into your program. with code and command-line examples.CPP GREP OBJXREF PRJCFG Preprocessor File-search utility Object module cross-referencer Updates options in a project file from a configuration file. in which your program loads graphics drivers and character sets (stroked fonts) from disk at run time. =========================================================================== BGIOBJ: Converting graphics drivers and fonts =========================================================================== You can use BGIOBJ to convert graphics driver files and character sets (stroked font files) to object (. Once they're converted.OBJ) files. or converts a project file to a configuration file PRJCNVT Converts Turbo C project files to the Turbo C++ format PRJ2MAK Converts Turbo C++ project files to MAKE files THELP Turbo Help utility TLIB Turbo Librarian TOUCH Updates file date and time TRANCOPY Copies transfer items from one project to another TRIGRAPH Character-conversion utility TEML/TEMC Turbo Editor Macro Language and Compiler ------------------------------------------------------This file explains what each utility is and illustrates. making them part of the executable file.2 - . and doesn't need to access the driver and font files on disk when running.

and so forth).CHR gives SANS. Adding the new ======================================================= . so you don't need to include it. with the extension ..LIB You should add the driver and font object modules to GRAPHICS.OBJ.BGI yields EGAVGA. The .. a symbolic name defined in graphics.To convert a driver or font file to a linkable object file. see the example in the following section. you have to register all the drivers and fonts that you want linked in.LIB.OBJ extension is implied. EGAVGA. The object file created has the same file name as the source file.LIB.3 - . EGAVGA. This informs the graphics system of the presence of those files. To add these object modules to GRAPHICS. Each registering . If you don't add these new object modules to GRAPHICS. you'll have to add them to the list of files in the project (. and so on.EXE (such as CGA. GOTH. or on the TLINK command line.] where object_file_name is the name of the object file created by BGIOBJ. invoke TLIB with the following command line: tlib graphics + object_file_name [+ object_file_name . and ensures that they will be linked in when the executable file is created by the linker. use the BGIOBJ. on the TCC command line. Registering the ======================================================= drivers and fonts After adding driver and font object modules to GRAPHICS. This is the simplified syntax: BGIOBJ source_file where source_file is the driver or font file to be converted to an object file. You can add several files with one command line to save time.OBJ.LIB. for example.OBJ files to GRAPHICS.LIB.EXE utility. you do this by calling registerbgidriver and registerbgifont in your program (before calling initgraph).PRJ) file. SANS. The registering routines each take one parameter.h.OBJ. so the linker can locate them when it links in the graphics routines.

TRIP. It is a complete list of drivers and fonts included with Turbo C++. then link them into your program. Convert the binary files to object files using BGIOBJ. 2.OBJ. --------------------------------------------------------------------------Driver file registerbgidriver Font file registerbgifont (*. you must add the object file names CGA. You can add these object files to GRAPHICS. the gothic font.OBJ.OBJ to your project list (if you are using Turbo C++'s integrated environment). or to .OBJ.4 - .CHR) symbolic name --------------------------------------------------------------------------CGA EGAVGA HERC ATT PC3270 IBM8514 CGA_driver EGAVGA_driver Herc_driver ATT_driver PC3270_driver IBM8514_driver TRIP LITT SANS GOTH triplex_font small_font sansserif_font gothic_font -------------------------------------------------------------------------------------------. and GOTH. The following table shows the names to be used with registerbgidriver and registerbgifont.OBJ.routine returns a nonnegative value if the driver or font is successfully registered.BGI) symbolic name (*.OBJ. as shown in the following separate command lines: bgiobj cga bgiobj trip bgiobj goth This creates three files: CGA.EXE.Suppose you want to convert the files for the CGA An example graphics object modules. If you don't add the object files to GRAPHICS. TRIP. and GOTH.LIB with this TLIB command line: tlib graphics +cga +trip +goth 3. and the triplex font -----------------. Here's what you do: 1.LIB.

. /* . the following two BGIOBJ com/* initgraph should be called after registering */ ... To solve this problem.). in small and compact model programs. By default.lib cga.. all the program code). This can cause problems if your program links in many drivers and/or fonts.and compact-model programs).obj 4. the TCC command line would look like this: TCC niftgraf graphics. or when you're using the small or compact memory model.the TCC command line. triplex_font & gothic_font */ #include <graphics. For example..h> /* Register and check for errors (one never knows.5 - .. if (registerbgifont(gothic_font) < 0) exit(1)..) */ if (registerbgidriver(CGA_driver) < 0) exit(1). /* Header file declares CGA_driver.EXE all use the same segment (called _TEXT). */ The /F option ======================================================= This section explains what steps to take if you get the linker error Segment exceeds 64K (or a similar error) after linking in several driver and/or font files (especially with small.obj goth. */ initgraph(.. if (registerbgifont(triplex_font) < 0) exit(1).obj trip. so that the default segment is not overburdened by all the linked-in drivers and fonts (and. refer to the following section. /* . the files created by BGIOBJ. For example.. you can convert one or more of the drivers or fonts with the BGIOBJ /F option. You register these files in your graphics program like this: If you ever get a linker error Segment exceeds 64K after linking in some drivers and/or fonts. This option directs BGIOBJ to use a segment name of the form filename_TEXT.

and to change the public name and destination file name. (For example. you must use these far registering routines instead of the regular registerbgidriver and registerbgifont. (See page . Advanced features ======================================================= This section explains some of BGIOBJ's advanced features.EXE command line: BGIOBJ [/F] source destination public-name seg-name seg-class This table describes each component of the BGIOBJ command line.OBJ. and the routines registerfarbgidriver and registerfarbgifont. Only experienced users should use these features. SANSF.) For files created with /F.OBJ. if (registerfarbgidriver(EGAVGA_driver_far) < 0) exit(1). if (registerfarbgifont(sansserif_font_far) < 0) exit(1). BGIOBJ also appends F to the target object file name (EGAVGAF. This is the full syntax of the BGIOBJ. and appends _far to the name that will be used with registerfarbgidriver and registerfarbgifont.mand lines direct BGIOBJ to use segment names of the form EGAVGA_TEXT and SANS_TEXT.6 - . For example. bgiobj /F egavga bgiobj /F sans When you select /F. EGAVGA_driver becomes EGAVGA_driver_far. and so forth).EXE to use a segment name other than _TEXT (the default). ------------------------------------------------------Component Description ------------------------------------------------------/F or -F This option instructs BGIOBJ.

5 for a detailed discussion of /F. However. This is the name of the object file to be produced.OBJ if you use the /F option.7 - . If your program uses Pascal calling conventions. if you need to specify an optional parameter. The default destination file name is source. The public name is the external name used by the linker. the default is CODE. If the file is not one of the driver/font files shipped with Turbo C++. all the parameters preceding it must also be specified. or sourceF. the default is _TEXT (or filename_TEXT if /F is specified) This is an optional segment class. prefixed with an underscore. This is the name that will be used in the program in a call to registerbgidriver or registerbgifont (or their respective far versions) to link in the object module.) source This is the driver or font file to be converted. destination public-name seg-class ------------------------------------------------------All parameters except source are optional. you should specify a full file name (including extension). . seg-name This is an optional segment name. so it should be the name used in the program. and do not add an underscore. use only uppercase letters.OBJ.

If you choose to use your own public name(s). use registerfarbgidriver and registerfarbgifont. */ /* default segment name main() { void *gothic_fontp.h> <stdio. buffer) */ /* points to font buffer /* file handle used for /* size of file (and . used */ extern int far public_name[].8 - . public_name matches the publicname you used when converting with BGIOBJ. If you don't use the /F option and don't change the default segment name.h> <fcntl. I/O */ unsigned fsize. or */ /* segment name not _TEXT */ In these declarations. you have to add declaration(s) to your program. Here is an example of a program that loads a font file into memory: /* Example of loading a font file into memory */ #include #include #include #include #include #include #include #include <graphics. otherwise. you have to register all the drivers and fonts in your program. The graphics.h> <process.h> <io. using one of the following forms: void public_name(void). you should register drivers and fonts through registerbgidriver and registerbgifont.h> /* if /F not used. in memory */ int handle.h> <stdlib.h header file contains declarations of the default driver and font public names. After these declarations.h> <conio. /* if /F used. if you use those default public names you don't have to declare them as just described.h> <alloc.

int graphmode.9 - . /* register font */ if (registerfarbgifont(gothic_fontp) != GOTHIC_FONT) { printf("unable to register font file 'GOTH. fsize) != fsize) { printf("unable to read font file 'GOTH. } /* read font into memory */ if (read(handle. .CHR'\n"). exit(1).grapherrormsg(errorcode)). } settextjustify(CENTER_TEXT. } /* find out size of the file */ fsize = filelength(handle).CHR'\n"). ". exit(1).. errorcode = graphresult(). &graphmode. if (handle == -1) { printf("unable to open font file 'GOTH. /* open font file */ handle = open("GOTH.CHR'\n"). initgraph(&graphdriver. } /* close font file */ close(handle). /* allocate buffer */ gothic_fontp = malloc(fsize).int errorcode. exit(1).CHR". if (gothic_fontp == NULL) { printf("unable to allocate memory for font file 'GOTH. int graphdriver. if (errorcode != grOk) { printf("graphics error: %s\n". CENTER_TEXT). } /* detect and initialize graphix */ graphdriver = DETECT."). O_RDONLY|O_BINARY). exit(1). exit(1).CHR'\n"). gothic_fontp.

Since Turbo C++ uses an integrated single-pass compiler. The TCC options that don't pertain to CPP are simply ignored by CPP. "Borland Graphics Interface (BGI)").I. you can get more information about what the error is if you can see the include files or the results of the macro expansions.getmaxy()/2.settextstyle(GOTHIC_FONT. and the results of the pass can be examined. or . Often.10 - . HORIZ_DIR. with wildcards allowed. /* press a key to terminate */ getch(). a separate pass performs this work. when the compiler reports an error inside a macro or an include file. CPP reads the same TURBOC. we provided CPP to supply the first-pass functionality found in other compilers. the file names listed on the CPP command line are treated like they are in TCC. To see the list of arguments handled by CPP. The exception to this is that all files are treated as C source files. see Chapter 5 in the Programmer's Guide. You use CPP just as you would use TCC. 4). /* shut down graphics system */ closegraph(). return(0). .OBJ. and accepts the same command-line options as TCC. There is no special treatment for .CFG file for default options. .LIB. the standalone compiler. To see how those arguments work. For each file processed by CPP. type cpp at the DOS prompt. In many multi-pass compilers.ASM files. With one exception. outtextxy(getmaxx()/2. the output is written to a file in the current directory (or the output directory named by the -n option) with the same name as the source name but with an extension of . } =========================================================================== CPP: The preprocessor =========================================================================== CPP produces a list (in a file) of a C source program in which include files and #define macros have been expanded. It is not needed for normal compilations of C programs.

along with any conditional text lines excluded from the compile. Any preprocessing directive lines have been removed. Within a text line.c 1: HELLOAJ.c 3: .I file can then be compiled with TC or TCC. With this option turned off.C #define NAME "H. CPP as a macro ======================================================= preprocessor The -P option to CPP tells it to prefix each line with the source file name and line number. END Command line used to invoke CPP as a preprocessor: CPP HELLOAJ. Floyd" #define BEGIN { #define END } main() BEGIN printf("%s\n". the resulting . then with -P-.11 - . Important! The resulting output of CPP cannot be compiled because of the file name and line number prefix attached to each source line.C Output: HELLOAJ. If you give it P.c 2: HELLOAJ. any macros are replaced with their expansion text. CPP can be used as a macro preprocessor. An example ======================================================= The following simple program illustrates how CPP preprocesses a file.(turning this option off). Unless you use a command-line option to specify otherwise. text lines are prefixed with the file name and line number of the source or include file the line came from.This output file is a text file containing each line of the source file and any include files. NAME). Source file: HELLOAJ. CPP omits this line number information.R. first with -P selected.

Floyd"). GREP searches for a text pattern in one or more files or in its standard input stream.c HELLOAJ.HELLOAJ.12 - . GREP can do a lot more than match a single. In the section that follows.R. 8: } Command line used to invoke CPP as a macro preprocessor: CPP -P.c HELLOAJ.c HELLOAJ.c 4: 5: main() 6: { 7: printf("%s\n". Suppose you wanted to find out which text files in your current directory contained the string "Bob". } =========================================================================== GREP: A text-search utility =========================================================================== GREP (Global Regular Expression Print) is a powerful text-search program derived from the UNIX utility of the same name. You would issue the command grep Bob *.C Output: main() { printf("%s\n". the strings "bob" and "BoB" would also be considered matches. Because the default for GREP is to ignore case.txt and GREP would respond with a list of the lines in each file (if any) that contained the string "Bob".HELLOAJ. Here's a quick example of a situation where you might want to use GREP."H. You can use options to make your search case sensitive.c HELLOAJ.R. fixed string. Floyd"). . you'll see how to make GREP search for any string that matches a particular pattern."H.

special characters. (If you don't specify a file. You can list multiple options . For example. file(s) tells GREP which files to search. this lets you use GREP with pipes and redirection.) GREP options ======================================================= In the command line. options are one or more single characters preceded by a hyphen (-).TXT.Command-line ======================================================= syntax The general command-line syntax for GREP is grep [options] searchstring [file(s) . for example.13 - . Each individual character is a switch that you can turn on or off: A plus symbol (+) after a character turns the option on.. (See the description of the -u command-line option for information on how to change GREP's defaults.) If you find that the results of your GREP are longer than one screen. GREP searches its standard input. then places the results in a file called GFILE. The + sign is optional. you could use this command GREP "Bob" *. and defaults.) Then. ] options consist of one or more letters. that let you change various aspects of GREP's behavior. use your word processor (or Turbo C++'s editor) to access GFILE to read the results of the search.txt >gfile which searches all files in the current directory that end with . The command GREP ? prints a brief help screen showing GREP's command-line options. (You can name this file anything you like. -r means the same thing as -r+. a hyphen (-) after the character turns the option off. searchstring gives the pattern to search for. you can redirect the output to a file.. preceded by a hyphen (-).

If you give a file without a path. Search subdirectories: For each file specified on the command line. This option is on by default. This option is off by default. Here are the GREP option characters and their meanings: -----------------------------------------------------------------------------Option Meaning ------------------------------------------------------------------------------c Match Count only: Prints only a count of matching lines. All lines of output are preceded by the name of the file that contained the matching line. A regular expression is one or more occurrences of one or more characters optionally enclosed in quotes. This option is off by default. or you can combine them (like this: -ild or -il. This option is off by default. This option is on by default. Matching lines are not printed. GREP searches for all files that match the file specification. both in the directory specified and in all subdirectories below the specified directory. The following symbols are treated specially: ^ start of line $ end of line -d -i -l -n -o -r . UNIX output format: Changes the output format of matching lines to support more easily the UNIX style of command-line piping. GREP assumes the files are in the current directory. For each file that contains at least one matching line. it prints the file name and processing immediately moves on to the next file. List file names only: Prints only the name of each file containing a match. -d. This option is on by default.individually (like this: -i -d -l). Regular expression search: The text defined by searchstring is treated as a regular expression instead of as a literal string. Line Numbers: Each matching line that GREP prints is preceded by its line number. and so on). GREP prints the file name and a count of the number of matching lines. Ignore case: GREP ignores upper/lowercase differences (case folding). it's all the same to GREP.14 - . This option is off by default. When this option is on. After GREP finds a match. GREP treats all letters a to z as identical to the corresponding letters A to Z in all situations. This option is off by default.

This option is off by default. If you define the set with alphabetic characters. ------------------------------------------------------------------------------ . even if the count is zero. (In other words.depending on its default setting. even if the search is case-sensitive. and 0 thru 9 Update options: GREP will combine the options given on the command line with its default options and write these to the GREP. 0 to 9.COM. Its form is -w[set]. Only lines that do not contain the search string are considered to be nonmatching lines. Each matching line is preceded by its line number. This option is off by default. This option is off by default. This option is off by default. u.) This option allows you to tailor the default option settings to your own taste. where set is any valid regular expression set definition. the new set of legal characters is saved as the default set. Each option on the help screen will be followed by a + or a . it is automatically defined to contain both the uppercase and lowercase values for each letter in the set (regardless of how it is typed). type GREP ? at the DOS prompt. A count of matching lines in each file is given.15 - . GREP is self-configuring. -v Nonmatch: Prints only nonmatching lines. e. e.. i. The default word character set includes A to Z. and 0 thru 9 match anything but a. i. If you want to see what the defaults are in a particular copy of GREP.COM file as the new defaults. An alternate form of this option lets you specify the set of legal word characters. u. o. If you use the -w option in combination with the -u option. Word search: Text found that matches the regular expression is considered a match only if the character immediately preceding and following cannot be part of a word. any character \ quote next character * match zero or more + match one or more [aeiou0-9] [^aeiou0-9] -u match a. o. and the underscore ( _ ). -w -z Verbose: GREP prints the file name of every file searched.

there are no operators: Each character is treated literally. Given this command line. A regular expression is either a single character or a set of characters enclosed in brackets. The text matched by the search string cannot cross line boundaries.16 - . and the -r option off. You can enclose the search string in quotation marks to prevent spaces and tabs from being treated as delimiters. the -i option on.-----------------Order of precedence ------------------ Remember that each of GREP's options is a switch: Its state reflects the way you last set it. o In a regular expression. you'll need to become proficient at writing search strings. At any given time.c GREP runs with the -d option on. you can install it with the following command: grep -u -z The search string ========================================================== To use GREP well. .COM with the -u option. For example. if you want GREP to always do a verbose search (-z on). that is. You can install your preferred default setting for each option in GREP. all the text necessary to match the pattern must be on a single line. grep -r -i . o In a literal string. each option can only be on or off. certain characters have special meanings: They are operators that govern the search.-d -i -r .main( my*. A search string can be either a regular expression or a literal string. A concatenation of regular expressions is a regular expression. The value of searchstring defines the pattern GREP searches for. Each occurrence of a given option on the command line overrides its previous definition.

The following characters take on special meanings: --------------------------------------------------------------------------Option Meaning --------------------------------------------------------------------------^ $ . For example. but no others. For example.17 - .-----------------Operators in regular expressions ------------------ When you use the -r option (on by default). \ The backslash escape character tells GREP to search for the literal character that follows it. or z. in to*. or z. etc. --------------------------------------------------------------------------- . it matches t. but not x. If the first character in the string is a circumflex (^). but not t. that is. y. * A circumflex at the start of the expression matches the start of a line. you can use \\ to indicate a literal backslash character in a GREP expression. These can be combined to form expressions (like [a-bd-z?]. while [^xyz] matches a and b.. to. An expression followed by an asterisk wildcard matches zero or more occurrences of that expression. [xyz] matches x. too. (t followed by zero or more os). y. matches a period instead of "any character." The backslash can be used to quote itself. etc. A dollar sign at the end of the expression matches the end of a line. the * operates on the expression o. For example. \. which matches the ? character and any lowercase letter except c). A period matches any character. too. the search string is treated as a regular expression (not a literal expression). + [ ] A string enclosed in brackets matches any character in that string. but doesn't match ta. An expression followed by a plus sign matches one or more occurrences of that expression: to+ matches to. the expression matches any character except the characters in the string. You can specify a range of characters with two characters separated by a hyphen (-).

the space after main is quoted with the backslash escape character. then a left parenthesis. or a "generic" file name incorporating the DOS ? and * wildcards. you must quote them if you want to include them as part of a regular expression. GREP searches the current directory. . -----------------. # matches #. you can enter a path (drive and directory information) as part of file(s). In addition. Command line: grep -r [^a-z]main\ *( *. input to GREP must come from redirection (<) or a vertical bar (|). file(s) can be an explicit file name. Some GREP examples ======================================================= The following examples show how to combine GREP's features to do different kinds of searches. and so on.. Since spaces and tabs are normally considered to be command-line delimiters. and +) don't have any special meaning when used within a bracketed set. the greater than sign. Any ordinary character not mentioned in the preceding list matches that character. -----------------. You could also accomplish this by placing the space in double quotes.c . the character ^ is only treated specially if it immediately follows the beginning of the set definition (immediately after the [ delimiter).The search string here tells GREP to search for the Example 1 word main with no preceding lowercase letters ([^a-z]). >.followed by zero or more occurrences of blank spaces (\ *). They assume GREP's default settings are unchanged. *. File ======================================================= specifications file(s) tells GREP which files (or groups of files) to search.18 - . In this case. For example. matches the greater than sign (>). If you give file(s) without a path.Note Four of the "special" characters ($. In addition. If you don't specify any files.

c *. if (MAIN ()) halt. and the WORD Does not match: Each file has at least 2000 words.doc Matches: every new word must be on a new line.j:integer) if (main ()) halt.Because the backslash (\) and period (.19 - .Matches: main(i:integer) main(i. .fil a:data.fil c:\Data.) characters Example 2 usually have special meaning in path and file names.This format defines how to search for a given word. so the search is not case Matches: A:\data. MY WORD! word--smallest unit of speech.C in current directory. -----------------. Example 3 -----------------.C and *.fil Files searched: *.Fil B:\DATA.FIL Does not match: d:\data. The -i option is used here. Does not match: mymain() Files searched: *. He misspells toward as toword. Command line: grep -ri [a-c]:\\data\. In the beginning there was the WORD.fil *.INC in current directory. -----------------.Command line: grep -ri [^a-z]word[^a-z] *.you must place the backslash escape character immediately in front of them if you want to search for them. -----------------.

* Matches: This is a search string with spaces in it. even more basic singleExample 4 word search.20 - . Does not match: This search string has spaces in it. and Does not match: each document contains at least 2000 words! He seems to continually misspell "toward" as "toword. -----------------." Files searched: *.DOC in the current directory.This format defines another.* in a directory called \WORK on drive A. and MYFILE. -----------------.DOC and *.DOC in the current directory. MY WORD! word: smallest unit of speech which conveys In the beginning there was the WORD.doc *.Files searched: *.C in the current directory. Files searched: *. -----------------Command line: grep -iw word *. -----------------Command line: grep "search string with spaces" *.doc Matches: every new word must be on a new line However.c a:\work\myfile. .This is an example of how to search for a string with Example 5 embedded spaces.

:?'\"]"$ \*.command-line examples show different ways of specifying multiple options.This example ignores case and just prints the names of Example 7 any files that contain at least one match. Command line: grep -rd "[ ." Does not match: He said "Hi" to me Where are you going? I'm headed to the Files searched: *..doc or grep -i -l -d " the " \*. The three -----------------. the $ character appears outside of the quoted string.doc or grep -il -d " the " \*.21 - .doc Matches: He said hi to me. this is the time we have do you think? The main reason we are Does not match: He said "Hi" to me just when I Where are you going? I'll bet you're headed . Where are you going? In anticipation of a unique situation. Command line: grep -ild " the " \*. Also.-----------------. Examples include the following: "Many men smoke.doc Matches: Anyway. -----------------The double quote within the range is preceded by an escape character so it is treated as a normal character instead of as the ending quote for the string. -----------------.DOC in the root directory and all its subdirectories on the current drive. at the end of a line. but fu man chu. This demonstrates how regular expressions can be concatenated to form a longer expression. : ? ' and .This example searches for any one of the characters Example 6 " .

j=5. which use a double equal sign (==).OBJ) files produced by TC. i += j.This example redefines the current set of legal Example 8 characters for a word as the assignment operator (=) -----------------. Command line: grep -w[=] = *. This is also true for TCC. Does not match: if (i == t) j++.Files searched: *. -----------------. /* ======================= */ Files searched: *. The other type lists the segment sizes defined by object modules.22 - . An object module generated by TC is given the same name as the .DOC in the root directory and all its subdirectories on the current drive. TCC or TASM. but not equality tests.C and TEST2. which use a single equal sign (=). =========================================================================== OBJXREF: The object module cross-reference utility =========================================================================== OBJXREF examines a list of object files and library files and produces reports on their contents.LIB) file contains multiple object modules. unless a . One type of report lists definitions of public names and references to them.C source file it was compiled from. It matches C assignment statements. The TEST1. Object modules are object (.only. A library (.c Matches: i = 5.C in the current directory.C files in the section "Sample OBJXREF reports" (page 28) illustrate definitions of public names and external references to them. then does a word search. There are two categories of public names: global variables and function names.

The syntax is as follows: OBJXREF options filename filename .OBJ file or by a previously included module from a .LIB files that are needed if the program is to link correctly.OBJ and . . All object modules specified as .OBJ object files or to . including the startup .23 - .OBJ extension is assumed. File names may include a drive and directory path. file names are separated by a space or a tab.LIB files which contain a public name referenced by an . The default is the screen. The DOS ? and * wildcard characters may be used to identify more than one file. separated by a space or tab character.or two-character option name. File names may refer to .======================================================= mand line The OBJXREF command line consists of the word OBJXREF followed by a series of command-line options and a list of object and library file names. however. the . The reports can be sent to a printer (as with >LPT1:) or to a file (as with >lstfile) with the DOS redirection character (>). Each option begins with a forward slash (/) followed by a one. OBJXREF includes only those modules from . As a general rule.OBJ files are included in reports. (If you don't give a file extension.different output file name is specifically indicated with the -o TCC command-line option. Like TLINK. OBJXREF reports are written to the DOS standard output..LIB file. Object files and library files may be specified either on the command line or in a response file.OBJ file and one or more C libraries.. On the command line. The OBJXREF com.) Options and file names may occur in any order in the command line.LIB library files. you should list all the . The command-line options determine the kind of reports that OBJXREF will generate and the amount of detail that OBJXREF will provide. They are discussed in more detail in the next section.

command-line options -----------------. ------------------------------------------------------Option Meaning ------------------------------------------------------/I Ignore case differences in public names.OBJ files in another directory. If you do use a /D option. For example. Look for . however. dir3]] or OBJXREF /Ddir1 [/Ddir2] [/Ddir3] OBJXREF will search each of the directories in the specified order for all object and library files. Important! If you don't use a /D option. If you want OBJXREF to look for .24 - . -----------------.Control options ======================================================= Control options modify the default behavior of OBJXREF (the default is that none of these options are enabled). prefixed with /D: OBJXREF /Ddir1 [. include the directory name on the command line. OBJXREF will search only the current directory.OBJXREF command-line options fall into two categories: The OBJXREF control options and report options.Entering OBJXREF with no file names or options produces a summary of available options. dir2 [. if you wanted OBJXREF to search first the BORLAND directory /D .OBJ files in a directory other than the current one. the current directory will not be searched unless it is included in the directory list. Use this option if you use TLINK without the /C option (which makes case differences significant).

The period denotes the current directory.LIB files are included even if they do not contain public names that are referenced by an object module being processed by OBJXREF.") Allows you to specify an output file where OBJXREF will send any reports generated. and the amount of detail that OBJXREF provides. (See example 4 in the section "OBJXREF examples. This provides information on the entire contents of a library file. Lists names of files read and displays totals of public names. .and then the current directory for files.25 - . you would enter OBJXREF /Dborland. Object modules may define a segment without allocating any space in it.. Include zero-length segment definitions. and classes. modules. All object modules in specified . Its syntax is as follows: OBJXREF filename. /V Verbose output. segments.obj /report option /Ooutputfilename.ext By default all output is sent to the screen. /F Include full library. Listing these zero length segment definitions normally makes the module size reports harder to use but it can be valuable if you are trying to remove all definitions of a segment. /O /Z ------------------------------------------------------Report options ======================================================= Report options govern what sort of report is generated.

C files appear in reports with a leading underscore in the reports unless the -Uoption was specified when the file was compiled (main appears as _main). /RX Report by external reference: External references ordered by referencing module name. /RM Report by module: Public names ordered by defining module. /RV Verbose reporting: OBJXREF produces a report of every type. or public names that OBJXREF reports on by entering the appropriate name on the command line prefixed with the /N option. /RU Report of unreferenced symbol names: Unreferenced public names ordered by defining module. For example. OBJXREF filelist /RM /NC0 tells OBJXREF to generate a report listing information only for the module named C0. -------------------------------------------------Public names defined in . /RS Report of module sizes: Module sizes ordered by segment name. /RR Report by reference: Public name definitions and references ordered by name. This is the default. You can limit the modules.------------------------------------------------------Option Report generated -------------------------------------------------/RC Report by class type: Module sizes ordered by class type of segment.26 - . segments. /RP Report by public names: Public names in order with defining module name. classes. .

In the command line. and separate it from other command-line entries with a space or tab: @filename @filename . you must place your file names in a response file. A response file is a text file that you make with a text editor. Since you may already have prepared a list of the files that make up your program for other Turbo C++ programs. If your list of options and file names will exceed this limit. To use free-form files with OBJXREF. Just list the names of all . like this: /Pfilename If the file name does not include an explicit extension. you would type /Lresp.Response files ======================================================= The command line is limited by DOS to a maximum of 128 characters.OBJ and . for example.27 - . preceded by an @. The response file name must follow the option without an intervening space (so. Response files are called from the command line using one of the following options.. additional .. not /L resp). type in each response file name on the command line. You can create a free-form response file with a text editor. -----------------. -----------------Free-form response files -----------------Any file name listed in the response file without an extension is assumed to be an .You can also use project files of the type generated by Project files Turbo C++'s integrated environment as response files. -----------------.LIB files needed to make your . You can specify more than one response file on the command line. precede the project file name with /P.OBJ file.EXE file.LIB file names can precede or follow them.PRJ extension is assumed. OBJXREF recognizes several response file types. a .OBJ and . .

the list of files in a .c */ #include <process. EMU.OBJ file.PRJ file does not specify a complete program--you must also specify a startup file (C0x. and CX. void main(void) { int i4." Sample OBJXREF ======================================================= reports Suppose you have two source files in your Turbo C++ directory. like so: -----------------/Lfilename To see how to use one of these files.C. A linker response file called from the command files line is preceded by /L.LIB. extern int i2. extern void look(void). You need not remove file dependencies specified inside parentheses.OBJ files. and want to generate OBJXREF reports on the object files compiled from them.h> extern int i1.C extension or no extension are interpreted as specifying the corresponding .OBJ) and one or more Turbo C++ library files (MATHX.c */ int i1.28 - . /* /* /* /* defines i1 */ refers to i2 */ not a public name */ refers to look */ /* defines main */ /* not a public name */ /* refers to look */ /* refers to i1 */ . -----------------.LIB.Files in TLINK response-file format can also be used by Linker response OBJXREF. look(). } /* test2. Note By itself. In addition. they are ignored by OBJXREF. and they look like this: /* test1.C and TEST2. you may need to use the /D option to specify the directory where OBJXREF should look for your .LIB. refer to Example 2 in the section "Examples of how to use OBJXREF. for example). static int i3.File names in the project file with a . The source files are called TEST1.

int i2. followed by a /R and a second letter denoting report type. -----------------If you enter this on the command line: OBJXREF /RM test1 test2 OBJXREF generates a report that looks like this: MODULE: TEST1 defines the following symbols: public: _i1 public: _main .OBJ and TEST2. */ /* and to i1 */ The object modules compiled from these source files are TEST1.OBJ. Note The following examples show only useful parts of the output.29 - . -----------------Report by public names (/RP) -----------------A report by public names lists each of the public names defined in the object modules being reported on. You can tell OBJXREF what kind of report to generate about these ..A report by module lists each object module being Report by module reported on. void look(void) { exit(i1).. followed by a list of the public names (/RM) defined in it.OBJ files by entering the file names on the command line. If you enter this on the command line: OBJXREF /RP test1 test2 OBJXREF generates a report that looks like this: SYMBOL _i1 _i2 _look _main DEFINED IN TEST1 TEST2 TEST2 TEST1 -----------------. } /* defines i2 */ /* defines look */ /* refers to exit. followed by the name of the module in which it is defined.

LIB specified. OBJXREF generates a report that looks like this: _exit (EXIT) C0 TEST2 _i1 (TEST1) TEST2 _i2 (TEST2) _look (TEST2) TEST1 _main (TEST1) C0 -----------------.If you enter this on the command line: OBJXREF /RX C0 test1 test2 CS. references (/RX) -----------------. This is the If you enter this on the command line: default if no report option is OBJXREF /RR C0 test1 test2 CS.LIB OBJXREF generates a report that looks like this: MODULE: C0 references the following symbols: _main MODULE: TEST1 references the following symbols: _i2 _look MODULE: TEST2 references the following symbols: _exit _i1 . Modules that refer to this public name are listed on following lines indented from the left margin.MODULE: TEST2 defines the following symbols: public: _i2 public: _look -----------------Report by reference (/RR) -----------------A report by reference lists each public name with the defining module in parentheses on the same line.A report by external references lists each module Report by external followed by a list of external references it contains.30 - .

31 - .-----------------Report of module sizes (/RS) ------------------ A report by sizes lists segment names followed by a list of modules that define the segment. 132 (00084h) CODE 6 (00006h) TEST1 TEST1 TEST2 total . If you enter this on the command line: OBJXREF /RS test1 test2 OBJXREF generates a report that looks like this: These files were compiled using the large memory model. DATA class contains initialized data and BSS class contains uninitialized data. The word uninitialized appears where no initial values are assigned to any of the symbols defined in the segment. Segments which do not have a class type will be listed under the notation No class type. uninitialized total -----------------Report by class type (/RC) ------------------ A report by class type lists segment size definitions by segment class. Segments defined at absolute addresses in a .. TEST1_TEXT 6 (00006h) 6 (00006h) TEST2_TEXT 10 (0000Ah) 10 (0000Ah) _BSS 4 (00004h) 2 (00002h) 6 (00006h) TEST1 total TEST2 total TEST1.LIB OBJXREF generates a report that looks like this: BSS 4 (00004h) 2 (00002h) . The CODE class contains instructions. Sizes in bytes are given in decimal and hexadecimal notation.ASM file are flagged Abs to the left of the segment size. If you enter this on the command line: OBJXREF /RC C0 test1 test2 CS. uninitialized TEST2..

32 - . -----------------. Such a symbol is either: o referenced only from within the defining module and does not need to be defined as a public symbol (in that case. if the module is in C.10 (0000Ah) 16 (00010h) DATA 143 (0008Fh) 143 (0008Fh) -----------------Report of unreferenced symbol names (/RU) ------------------ TEST2 total C0 total A report of unreferenced symbol names lists modules that define public names not referenced in other modules.If you enter /RV on the command line. OBJXREF generates Verbose reporting one report of each type. the TEST1. (/RV) -----------------Examples of how to ======================================================= use OBJXREF These examples assume that the application files are in the current directory of the default drive and that the Turbo C++ startup files (C0x.C>OBJXREF \TC\lib\c0l test1 test2 \TC\lib\cl. Since no report type is specified.OBJ and the library file \TC\LIB\CL. the resulting report is the . it can be deleted to save code or data space).In this example.OBJ files and the Turbo C++ startup file \TC\LIB\C0L. if the module is in TASM. -----------------.OBJ) and the library files are in the \TC\LIB directory. just remove the public definition). the keyword static should be added to the definition. o never used (therefore.LIB are specified.OBJ and TEST2. If you enter this on the command line: OBJXREF /RU test1 test2 OBJXREF generates a report that looks like this: MODULE: TEST2 defines the unreferenced symbol _i2.lib Example 1 -----------------.

The TLINK response file TEST1.C>OBJXREF /RV /Ltest1.default report by reference. TEST1.The Turbo C++ project file TEST1. OBJXREF can produce useful reports even when the files specified do not make a complete program.OBJ and TEST2. .c The file LIBS contains b:maths. listing public names and the modules that reference them.ARF contains the same list of files as the command line in Example 1. so a report of every type will be generated. The /RV option is specified.PRJ specifies TEST1. -----------------.ARF contains \TC\lib\c0l test1 test2 test1.exe test1.lib The startup and library files specified depend on the memory model and floating point options used in compilation. -----------------.arf Example 2 -----------------.C>OBJXREF /F /RV \TC\lib\cs.lib b:cs.lib Example 4 -----------------.This example reports on all the modules in the Turbo C++ library file CS.OBJ.LIB file to be included in the \TC\lib\cl -----------------. The /RC causes a report of class type to be output. The /F causes all modules in CS.LIB. The response file @libs specifies libraries on a disk in the B drive.C>OBJXREF /RC B:c0s /Ptest1 @libs Example 3 -----------------.PRJ contains test1 test2.33 - . TEST1.lib b:emu.

OBJXREF error ======================================================= messages and warnings OBJXREF generates two sorts of diagnostic messages: error messages and warnings. ------------------ Out of memory Error messages OBJXREF performs its cross referencing in RAM memory ------------------ and may run out of memory even if TLINK is able to link the same list of files successfully. When this happens, OBJXREF aborts. Remove memory resident programs to get more space, or add more RAM. ------------------ WARNING: Unable to open input file <filename> Warnings The input file filename could not be located or opened. ------------------ OBJXREF proceeds to the next file. WARNING: Unknown option - <option> The option name option is not recognized by OBJXREF. OBJXREF ignores the option. WARNING: Unresolved symbol <symbol> in module <module> The public name symbol referenced in module module is not defined in any of the .OBJ or .LIB files specified. OBJXREF flags the symbol in any reports it generates as being referenced but not defined. WARNING: Invalid file specification <filename> Some part of the file name filename is invalid. OBJXREF proceeds to the next file. WARNING: No files matching <filename> The file named filename listed on the command line or in a response file could not be located or opened. OBJXREF skips to the next file. WARNING: Symbol <symbol> defined in <module1> duplicated in <module2> Public name symbol is defined in modules module1 and module2. OBJXREF ignores the second definition.

- 34 -

=========================================================================== PRJCFG: Configuration file utility =========================================================================== Creates the command-line configuration file from a project file. You can also use it to create or update a project file from a configuration file. The command-line compiler looks for a default configuration file named TURBOC.CFG, but you can specify a different file with +pathname option. To use PRJCFG to create a TCC configuration file from a project file, you would type the following: PRJCFG ProjFile.PRJ ConfigFile.CFG To make a project file from a configuration file, type PRJCFG ConfigFile.CFG ProjFile.PRJ

=========================================================================== PRJCNVT: Old projects for new =========================================================================== This utility converts Turbo C 1.0, 1.5, and 2.0 project files to Turbo C++ project files. The syntax for it is PRJCNVT infile[.PRJ] [outfile[.PRJ]] or PRJCNVT infile[.TC] [outfile[.PRJ]] If you specify a configuration file as input, it must have a project file defined. The compiler options in the .CFG file and the dependencies in the Turbo C 2.0 .PRJ file will be placed into the corresponding Turbo C++ .PRJ file. If you specify a project file as input, only dependencies information will be placed into the Turbo C++ .PRJ file. All compiler options will remain default.

- 35 -

If you don't provide an extension, .TC is assumed. If PRJCVNT can't find a .TC file, it looks for a .PRJ file. The default name of the output file is the base name of the input file with the extension .PRJ. For example, STARS.TC will turn into STARS.PRJ. If the input and the output name are the same, the old file will be renamed to a .BAK file.

=========================================================================== PRJ2MAK: From project file to MAKE file =========================================================================== This utility converts a .PRJ file to a .MAK file (containing all relevant switches and settings) for use with the MAKE utility. These files can be re-used without accessing the IDE. The syntax for PRJ2MAK is PRJ2MAK projectfile[.PRJ] [makefile[.MAK] [config[.CFG]]] The extension for the project file name is assumed to be .PRJ unless you specify otherwise. The default name name of the .PRJ default name for name of the .MAK for the new MAKE file is the base file file with the extension .MAK. The the new .CFG file is the base file file with the extension .CFG.

To change the names of the makefile and configuration files, just specify different names on the command line. Examples of valid execution: PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK TURBOC.CFG This execution creates a makefile called MAKEFILE.MAK with a configuration file called TURBOC.CFG. PRJ2MAK MYPROJ.PRJ MAKEFILE.MAK This execution creates a makefile called MAKEFILE.MAK with a configuration file called MYPROJ.CFG. PRJ2MAK MYPROJ

- 36 -

This execution creates a makefile called MYPROJ.MAK and a configuration file called MYPROJ.CFG. The makefile that PRJ2MAK creates will set up a redirection file for the linker response file and for the .CFG file. They will be created when you run the makefile that was generated. The linker response file is a temporary file and will be deleted. The .CFG file will be left as a file on disk. PRJ2MAK places options that meet the following requirements into the .CFG file: Those that are not default to the Turbo C++ command-line compiler and have been selected in the project file. PRJ2MAK will use the library search path as a command link option to TLINK, so that TLINK can search that path for the startup module and for libraries.

=========================================================================== THELP: The Turbo Help utility =========================================================================== THELP.COM is a RAM-resident (TSR) utility that accesses Turbo C++'s online Help information for you when you aren't using the IDE (that is, if you are using an editor other than the one in the IDE, or you are using the command-line version of Turbo C++, or if you are using another product, such as Turbo Debugger). THELP requires about 21K bytes of memory. Loading and ======================================================= invoking THELP

- 37 -

The default hot key is 5 on the numeric keypad (scan code 4ch. Navigating THELP ======================================================= Use the following keys to navigate through the Help screens that THELP displays on your monitor: ---------------------------------------------------------------------Key What it does ---------------------------------------------------------------------Up Down Left Right Move the highlight from keyword to keyword within the current Help screen. respectively. You need to first load THELP in order to use it from within another program (or from the command line). Home and End Move to the beginning and end of a line. at the DOS command line before you go into your application. Tab and Shift-Tab Moves to the next or previous keyword. the text file containing the Turbo C++ online help information. then press the THELP hot key.TCH. This needs to be done only once.Warning! If you are going to have THELP resident in memory at the same time as SideKick 1.x or SideKick To load THELP. you can activate THELP at any time. make sure you load THELP THELP [options] before you load SideKick. the INSTALL program inserts the correct path information into THELP. just type Plus. is in the current directory. when you first boot up. Shift-Arrow Moves the cursor while marking a block. Make sure that TCHELP. . (If you want to keep TCHELP.TCH in another directory.) Once you are in the other application.38 - . Just position the cursor under the item you want information on. shift state 00h). THELP has a special /F command-line option that will enable THELP to find it.

then to pri. With each letter you type. Ends Help session. The command-line options can be placed in a configuration file (called THELP. you must separate them with spaces. Pastes the marked block or example text into your current application. and so on. THELP. Shift-F1 Displays the Help Index. Displays the Help Table of Contents screen. Ctrl-P ---------------------------------------------------------------------THELP options ======================================================= Here is a summary of the THELP command-line options.COM and each option in the configuration file must be placed on its own line and begin in the leftmost column. Alt-F1 Alt-F Pressing Alt-F1 repeatedly takes you in reverse order through the last 20 screens you have reviewed.CFG) for convenience. you can find printf by typing p r i. Selects a new Help file (if you have specified more than one help file in the THELP. You can search for a specific keyword incrementally. then to pr. If you use more than one option. Enter Esc F1 Selects a Help entry for the item highlighted in the current Help screen.39 - .CFG file or on the command-line). the list jumps to the keyword that starts with p. For example.CFG must be located in the same directory as THELP. ------------------------------------------------------Option Specifies ------------------------------------------------------- Summary of THELP command-line options .PgUp/PgDn Moves from screen to screen if additional screens are available.

1: Summary of THELP command-line options (continued)____________________________________________ /C#xx Select color: # = color number xx = hex color values Full path and file name of Help file Display help screen Change hot key: xx = shift state (hex) yy = scan code (hex) Remove THELP from memory Sets the window size and location.40 - . /Fname /H. /?. numbered as follows: ------------------------------------------------------Number Element ------------------------------------------------------0 1 2 3 4 5 6 7 8 9 A B Color border attribute Monochrome border attribute Color text attribute Monochrome text attribute Color keyword attribute Monochrome keyword attribute Color selected keyword word attribute Monochrome selected keyword word attribute Color example text attribute Monochrome example text attribute Color marked block attribute Monochrome marked block attribute . There are twelve possible colors.h -----------------------------------------------------------------------/C#xx (select color) -----------------This option lets you customize the background and foreground colors of various elements in a help screen. ? /Kxxyy /U /Wx. respectively.w. The /C option is followed by the number of the color you want and the hex color values for background and foreground.y.Table 1.

CFG file.THELP /FC:\TC\OWLHELP. so you may need to experiment.The name that follows the /F option should be the full /Fname (full path drive/directory path name of the help file to use. . black blue green cyan red magenta brown (yellow) gray (white) ------------------------------------------------------On monochrome monitors.------------------------------------------------------The color values for a standard IBM-compatible color display are as follows: ------------------------------------------------------First digit (background) Second digit (foreground) ------------------------------------------------------0 1 2 3 4 5 6 7 Black Blue Green Cyan Red Magenta Brown Gray 0 1 2 3 4 5 6 7 8 9 A B C D E F Black Blue Green Cyan Red Magenta Brown Gray Intense Intense Intense Intense Intense Intense Intense Intense ORing the color value with 0x80 produces a blinking color unless blinking has been disabled.TCH You can specify multiple help files on the command-line or in the THELP. the attribute values can differ widely. THELP supports up to eight help files.41 - . -----------------. file) -----------------. for and name for help example.TCH THELP /FC:\TC\TCHELP.

-----------------/H. The option must be followed by the shift state (xx) and the scan code (yy) of the new key.42 - . Here's a quick summary of some common shift states and scan codes: ------------------------------------------------------Shift states (can be OR'ed together): Right Shift Left Shift Ctrl Alt Scan codes: A B C D E F G H I J K L M 1eh 30h 2eh 20h 12h 21h 22h 23h 17h 24h 25h 26h 32h N O P Q R S T U V W X Y Z 31h 18h 19h 10h 13h 1fh 14h 16h 2fh 11h 2dh 15h 2ch 0 1 2 3 4 5 6 7 8 9 0bh 02h 03h 04h 05h 06h 07h 08h 09h 0ah F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 3bh 3ch 3dh 3eh 3fh 40h 41h 42h 43h 44h 01h 02h 04h 08h Enhanced keyboards only (may not work with all computers or keyboards): F11 57h F12 58h ------------------------------------------------------- . /?. Virtually any shift state/scan code combination may be selected. and ? (display help screen) -----------------/Kxxyy (reassign hot key) ------------------ Any of these options displays a summary of THELP's command-line options. This option allows you to reassign a function to a new hot key.

make sure to remove them from memory) before removing THELP.y. TLIB always creates a copy of the original library with a . libraries furnished by other programmers. If other TSRs /U (remove THELP have been loaded after THELP. to create a full-screen help window use: /W0. or commercial libraries you've purchased.w. Better safe than sorry! The libraries included with Turbo C++ were built with TLIB.25 =========================================================================== TLIB =========================================================================== TLIB is a utility that manages libraries of individual . or to modify the Turbo C++ libraries.BAK extension.h (set the x = window column location (zero based) window size and y = window row location location) w = window width -----------------h = window height For example. ----------------------------------.43 - . You can use TLIB to o create a new library from a group of object modules o add object modules or other libraries to an existing library o remove object modules from an existing library o replace object modules from an existing library o extract object modules from an existing library o list the contents of a new or existing library . A library is a convenient tool for dealing with a collection of object modules as a single unit.Where: /Wx.This option removes THELP from memory.OBJ (object module) files.80. your own libraries. When it modifies an existing library.-----------------.0. You can use TLIB to build your own libraries.

You will find TLIB indispensable for large development projects. Why use object ======================================================= module libraries? When you program in C and C++. ======================================================= The TLIB command line takes the following general form. the linker scans the library and automatically selects only those modules needed for the current program. you are likely to split those functions into many separately compiled source files. you can use TLIB to maintain those libraries when necessary. When you link your program with a library.See the section on TLIB can also create (and include in the library file) the /E option an Extended Dictionary. Although TLIB is not essential for creating executable programs with Turbo C++. your program becomes extremely large and unwieldy. listfile] . to figure out exactly which files you are using. if you always include all the source files.44 - . It can become quite tedious. where items listed in square brackets ([like this]) are optional: tlib [/C] [/E] [/Psize] libname [operations] [. You use only a subset of functions from the entire collection in any particular program. just type TLIB and press Enter. details. If you work with object module libraries developed by others. On the other hand. you often create a collection of useful functions and classes. An object module library solves the problem of managing a collection of functions and classes. Because of C and C++'s modularity. The TLIB command line To get a summary of TLIB's usage. which may be used to speed up (page 49) for linking. however. it is a useful programming productivity tool.

LIB. Creates Extended Dictionary. Note: If the named library does not exist and there are add operations. Operations may appear in any order. You can direct the listing to the screen by using the listfile name CON. don't give any operations. The name of the file listing library contents. or to the printer by using the name PRN.LIB extension in order to recognize library files. The listing is an alphabetical list of each module. since both TCC and TC's project-make facility require the . the following sections provide details about using TLIB.LST. see page 50 for a detailed explanation. The case-sensitive flag. The default extension for the listfile is .45 - . This option is not normally used. /C /E /Psize operations listfile --------------------------------------------------------------------------This section summarizes each of these command-line components. see page 49 for a detailed explanation. refer to the "Examples" section on page 51. No listing is produced if you don't give a file name.2: TLIB options --------------------------------------------------------------------------Option Description --------------------------------------------------------------------------libname The DOS path name of the library you want to create or manage. We recommend that you do not use an extension other than . The listfile name (if given) must be preceded by a comma. The entry for each module contains an alphabetical list of each public symbol defined in that module. If you only want to examine the contents of the library. Wildcards are not allowed.LIB if none is given. For TLIB examples. Every TLIB command must be given a libname. Sets the library page size to size.Table 1. TLIB creates the library. . see page 49 for a detailed explanation. TLIB assumes an extension of . The list of operations TLIB performs.

It consists of a sequence of operations given -----------------. You can replace a module by first removing it. All extract operations are done first. you only need to supply the module name.) Note that TLIB always assumes reasonable after the other. 3. Each operation consists of a oneor two-character action symbol followed by a file or module name. 2. The order of the operations is not important. *). then adding the replacement module. All remove operations are done next. not the path and . (Typically. The order of the characters .The operation list describes what actions you want TLIB The operation list to do. which you can use singly or combined in pairs for a total of five distinct operations. TLIB always applies the operations in a specific order: 1. You can put as many operations as you like on the command line.OBJ extension. up to DOS's COMMAND. and extension information from it. and extension are not given. You can put whitespace around either the action symbol or the file or module name. For example. path.COM-imposed line-length limit of 127 characters. to add a module that has an . Wildcards are never allowed in file or module names. path. TLIB operations ======================================================= TLIB recognizes three action symbols (*.46 - . All add operations are done last. drive.OBJ extension from the current directory. File and module names ======================================================= TLIB finds the name of a module by taking the given file name and stripping any drive. but not in the middle of a two-character action or in a name.-----------------. +.

The action symbols and what they do are listed here: ------------------------------------------------------Action symbol Name Description ------------------------------------------------------+ Add TLIB adds the named file to the library. TLIB assumes an extension of .LIB extension). * Extract TLIB creates the named file by copying the corresponding module from the library to the file. TLIB action symbols To create a library. TLIB allows you to enter a full path name with drive and extension included. TLIB displays a message and does not create a file. then the operation adds all of the modules in the named library to the target library. . it is overwritten.47 - . If the module does not exist in the library. TLIB displays a message and does not add the new module. If a module being added already exists. If the file has no extension given. but ignores everything except the module name. If the named file already exists.OBJ. Remove TLIB removes the named module from the library. TLIB displays a message. add modules to a library that does not yet exist. If the module does not not important for operations that use a pair of characters. If the file is itself a library (with a . A remove operation only needs a module name.

. -* *Extract & Remove TLIB copies the named module to the corresponding file name and then removes it from the library. o You can use more than one response file in a single TLIB command line.Table 1. TLIB replaces the named module with the corresponding file. A response file is simply an ASCII text file (which can be created with the Turbo C++ editor) that contains all or part of a TLIB command.3: TLIB action symbols (continued)_____________ You can't directly rename modules in a library. file and a TLIB command line o More than one line of text can make up a response incorporating it. This is just shorthand for an extract followed by a remove operation. and you can type in the rest. extract and remove it. then add it back into the library. rename the file just created. you use the "and" character (&) at the end of a line to indicate that another line follows. the file can provide a portion of the TLIB command line. you will probably want to start using response files. you can build TLIB commands larger than would fit on one DOS command line. specify @pathname at a sample response any position on the TLIB command line. o You don't need to put the entire TLIB command in the response file. Using response files. or if you find yourself repeating certain sets of operations over and over.48 - . -+ +- Replace ------------------------------------------------------Using response ======================================================= files When you are dealing with a large number of operations. file. This is just shorthand for a remove followed by an add operation. See "Examples" for To use a response file pathname. To rename a module.

but it will also create an extended dictionary for the specified library. the page size must be increased using the /P option. you can direct TLIB to create an extended dictionary and append it to the library file. or replace modules in the library.LIB file. Setting the page ======================================================= size: The /P option Every DOS library file contains a dictionary (which appears at the end of the . To create an extended dictionary for an existing library that you don't want to modify.LIB library). For each module in the library. in a very compact form. if you enter tlib /E mylib -bogus TLINK will ignore the debugging information in a library that has an extended dictionary. This dictionary contains. To create an extended dictionary for a library that is being modified. information that is not included in the standard library dictionary. TLIB will display a warning that the specified module was not found in the library. This information enables TLINK to process library files faster. The library page size determines the maximum combined size of all object modules in the library--it cannot exceed 65.Creating an ======================================================= extended dictionary: The /E To speed up linking with large library files (such as option the standard Cx. The default (and minimum) page size of 16 bytes allows a library of about 1 MB in size. this dictionary contains a 16-bit address of that particular module within the . remove. For example. this address is given in terms of the library page size (it defaults to 16 bytes). unless the /e option is used on the TLINK command line.49 - .536 pages. the page size must be a . use the /E option and ask TLIB to remove a nonexistent module from the library. use the /E option when you invoke TLIB to add. following all of the object modules).LIB file. To create a larger library.

TLIB displays a message and won't add the module. If you attempt to create a library that is too large for the given page size. without the /C option. you can use the TLIB /C option without any problems. use the /C option to add a module to a library that includes a symbol differing only in case from one already in the library. on the other hand. If you try to add a module to the library that would cause a duplicate symbol.50 - . then. Stars. uppercase and lowercase letters are not considered as distinct. Such linkers. All symbols in the library must be distinct. TLIB will issue an error message and suggest that you use /P with the next available higher page size. and STARS as the same identifier. Since C and C++ do treat uppercase and lowercase letters as distinct. Stars. Turbo C++ would treat stars. especially since C and C++ are case-sensitive languages. The reason is that some linkers fail to distinguish between symbols in a library that differ only in case. has no problem distinguishing uppercase and lowercase symbols. the symbols lookup and LOOKUP are treated as duplicates.power of 2. on the average 16 bytes will be lost per object module in padding. The /C option tells TLIB to accept a module with symbols in it that differ only in case from symbols already in the library.768. for your own protection you should not use the /C option. All modules in the library must start on a page boundary. TLIB maintains a dictionary of all public symbols defined in the modules of the library. will treat stars. In this example. If you want to use the library with other linkers (or allow other people to use the library with other linkers). for example. and it will properly accept a library containing symbols that differ only in case. . and it may not be smaller than 16 or larger than 32. TLIB rejects symbols that differ only in case. Normally. in a library with a page size of 32 (the lowest possible page size higher than the default 16). For example. and STARS as three separate identifiers. when TLIB checks for duplicate symbols in the library. For example. Advanced ======================================================= operation: The /C option When you add a module to a library. It may seem odd that. TLINK. As long as you use the library only with TLINK.

To create a new library named ALPHA. type tlib mylib +x +y +z.OBJ. To replace module X. alpha.OBJ using a response file: First create a text file. which produces a listing file named ALPHA.LIB. type tlib cs.lst 6. ALPHA. To create a library as in #1 and get a listing in MYLIB. type tlib mylib *y. G.LIB. One way to do . add A.. with modules A. type tlib mylib -+x +a -z 5. and Z..lst 4.OBJ from MYLIB.51 - . with +a. To extract module Y.LST of an existing library CS.obj +c.OBJ. . 1.LST: tlib alpha @alpha.LIB with modules X.obj & +g.OBJ with a new copy.OBJ.. mylib.rsp.OBJ from MYLIB.obj Then use the TLIB command. Y. mylib. To get a listing in CS.obj +e. To create a library named MYLIB.lst =========================================================================== TOUCH =========================================================================== There are times when you want to force a particular target file to be recompiled or rebuilt.lst 3.obj & +d.obj +f. even though no changes have been made to its sources.obj +b.Examples ======================================================= Here are some simple examples demonstrating the different things you can do with TLIB.OBJ.LST. cs.RSP.OBJ and delete Z. B. type tlib mylib +x +y +z 2.OBJ.LIB and get a listing in MYLIB.LST too.

Important! Before you use the TOUCH utility. Dest gets the new transfer items. at the DOS prompt. or compatible that doesn't have a battery-powered clock.52 - .PRJ] TRANCOPY merges the transfer items in Source with the transfer in Dest... =========================================================================== TRANCOPY: A project transfer item utility =========================================================================== TRANCOPY copies transfer items from one project to another. Failing to do this will keep both TOUCH and MAKE from working properly. You can force MAKE to rebuild a target file by touching one of the files that target depends on. making it "newer" than the files that depend on it. type You can use the touch filename [filename .] DOS wildcards * and ? with TOUCH. don't forget to set the time and date using the DOS TIME and DATE commands. The syntax is TRANCOPY [-r] Source[. it's vitally important to set your system's internal clock to the proper date and time.PRJ] Dest[. If you're using an IBM PC. To touch a file (or files).this is to use the TOUCH utility. XT. TOUCH changes the date and time of one or more files to the current date and time. TOUCH will then update the file's creation date(s). you can invoke MAKE to rebuild the touched target file(s). . the set of the transfer items in Dest is replaced by the set of transfer items in Source. If the -r option is used. Once you do this.

.. Translating trigraphs in the compiler would slow compilation down considerably. and .EXE recognizes: ------------------------------------------------------Trigraph Character ------------------------------------------------------??= ??( ??/ ??) ??' ??< ??! ??> ??# [ \ ] ^ { | } ~ ------------------------------------------------------TRIGRAPH.] The following table shows the trigraph sequences that TRIGRAPH.EXE converts trigraphs to single characters. TRIGRAPH.EXE takes any number of file specifiers. including wildcards. You can specify the inverse conversion with the -u (UNDO) command-line option. Ordinarily.=========================================================================== TRIGRAPH: A character-conversion utility =========================================================================== Trigraphs are three-character sequences that replace certain characters used in the C language that are not available on some keyboards.EXE works in two directions: It can convert all trigraphs to their single-character representation. it creates a backup copy of the file with the original file name and an extension of .53 - . so Turbo C++ provides a filter named TRIGRAPH. on the command line. TRIGRAPH.BAK. For each file specified. The syntax for invoking this program is as follows: TRIGRAPH [-u] file(s) [file(s) . which must come before any file names on the command line.EXE to handle trigraph sequences when you need to. and it can convert single characters to their trigraph representation.

trigraph test. For example.54 - . There are three kinds of macros: state. The transfer macros are listed alphabetically and described in more detail starting on page 55. and instruction. As another example. They allow you to build up new file name specifications from existing file names. creating backup files TEST. giving them the extension .BAK.C.C and TEST1.C. trigraph -u *.c =========================================================================== Transfer macros =========================================================================== The IDE recognizes certain strings of characters called transfer macros in the parameter string of the Modify/New Transfer Item dialog box.BAK.c test1.creates a new file with the original file name and the appropriate conversions performed. file name.c removes all trigraphs from the two files TEST.BAK and TEST1. State macros ======================================================= State macros are expanded according to the state of the IDE. and makes backup copies of all those files. The state macros are $COL $CONFIG $DEF $ERRCOL $ERRLINE $ERRNAME $INC $LIB $LINE $PRJNAME File name macros ======================================================= File name macros are actually functions that take file names as arguments and return various parts of the file name. you can pass TDUMP a macro like this: . For example. the following command inserts trigraphs into all the files with the extension .

After the transfer program is completed. and the active editor contains MYPROG.OBJ This macro gives you the output directory path. and an explicit extension. a new editor window is created. For $CAP EDIT to work correctly.55 - . The captured output resides in a special Edit window titled Transfer Output.C.OBJ The file name macros are $DIR $DRIVE() $EDNAME $EXENAME $EXT() $NAME() $OUTNAME Instruction macros ======================================================= Instruction macros tell the IDE to perform some action or make some setting. the file name only in the active Edit window. . and the captured output is displayed.$DIR($EXENAME)$NAME($EDNAME). then TDUMP receives the parameter C:\WORK\TEST\MYPROG. The instruction macros are $CAP EDIT $CAP MSG(filter) $DEP() $MEM(kb to reserve) $NOSWAP $PROMPT $SAVE ALL $SAVE CUR $SAVE PROMPT $TASM $CAP EDIT: This macro tells the IDE to redirect program output into a standard file. the transfer program must write to DOS standard output. If your current directory is C:\WORK. your output directory is TEST.

$DEF: Pulls in the contents of the Options|Compiler| Code Generation "Defines" type-in box. Besides providing the name of the file. this macro causes the current configuration to be saved (if modified) and reloaded when control returns to the IDE. in the form D:.EXE for GREP and TASM2MSG. With it. This macro is intended for use by programs that access or modify the configuration file. We've provided several filters for this macro: GREP2MSG. $COL: Column number of current editor. When installing TEMC as a transfer item. full path. using filter as a DOS filter for converting program output into Message window format. your new or modified editor commands will be in effect.You can use any program that has line-oriented messages output (file and line number) with this macro. make if one of the resource components has been modified. TEML is a Pascallike language that has many built-in primitive editor commands. This is a null string if no configuration file is defined. $DIR(): Directory of the file argument. use the following command line: $EDNAME $CONFIG This assumes the current Edit window contains the TEML script file to be processed. If the active window is not an editor. This macro is only $DEP(): This macro provides the ability to used by the automatically rebuild resources as part of a project project manager.56 - . . When the configuration file is reloaded.EXE for Turbo Assembler (TASM). Use this macro with the Turbo Editor Macro Language (TEML) compiler. you can edit the TEML script file in an editor and then invoke the Turbo Editor Macro Compiler (TEMC) to process the script. Use this macro to specify define directives to an external translator. $DRIVE(): Drive of the file argument. $CONFIG: Complete file name of the current configuration file. then the string is set to 0. $CAP MSG(filter): Captures program output into the Message window. We've included the source code for these filters so you can write your own filters for other transfer programs you install. Its use is documented in this file.

. then string is expanded to null string. $MEM(Kb to reserve): This macro tells the IDE how much memory to try to give the transfer program. The IDE gives up as much memory as possible. $ERRNAME: Complete file name of file referred to by the selected messages in the Message window. If there are no messages. $NOSWAP: This macro tells the IDE not to swap to the User Screen when running the program. $EXT(): Extension of the file argument. $LIB: Pulls in the contents of the Options|Directories| Library Directories type-in box. $LINE: Line number of current editor. based on the project name or. This is a null string if there are no messages or the currently selected message does not refer to a file. $EXENAME: Program's file name (including output path). then the name of the . whichever is smaller. You'll get an error if no memory is specified. this includes the dot (for example. This is a null string if the active window is not an editor. . then string is expanded to null string. If there are no messages. then the string is set to 0. It pops up a box that indicates which transfer program is running. $ERRCOL: Column number of current error in file $ERRNAME. $ERRLINE: Line number of current error in file $ERRNAME. If the active window is not an editor.57 - . $NAME(): Name part of the file argument.$EDNAME: Complete file name of file in active editor. to either the amount specified or the maximum available. does not include the dot. $INC: Pulls in the contents of the Options|Directories| Include Directories type-in box.CPP).EXE that would be produced from the active editor window. if there is no project defined. Use this macro in conjunction with $CAP.

If you've edited the type-in box so it says .C is in the active edit window. $OUTNAME expands to STARS. the default Output Path type-in is STARS. but dir can be edited before the command is run.The position of $PROMPT command in the command line determines what is shown in the dialog prompt box. $PROMPT: This macro tells the IDE to display the expanded parameter string before calling the transfer program. the /c in /c $PROMPT dir is constant and doesn't show in the dialog box. For example. This macro is useful when you are specifying modules for your userdefined translators. $OUTNAME will expand to . Null string if no project is defined. You can place constant parameters in the command line by placing them before $PROMPT.\MOON.. So if STARS. This allows you to change or add to the string before it is passed. For example. The command line that will be passed is displayed in a dialog box. you could define a TLIB translator and set the command line to TLIB MYLIB +$OUTNAME which adds the object module of the file in the active edit window to the library MYLIB.OBJ.XYZ. You will be asked if you want to save any unsaved files. For example.$OUTNAME: This macro expands to the path and file name that appear in the Project|Local Options Output Path type-in box (in the active edit window).\MOON.58 - . without prompting. . This ensures that the invoked program will use the latest version of the source file.OBJ. $SAVE PROMPT: This macro tells the IDE to prompt when there are unsaved files in editor windows. if the project contains STARS.XYZ. $SAVE ALL: This macro tells the IDE to save all modified files in all Edit windows that have been modified.. $SAVE CUR: This macro tells the IDE to save the file in the current editor if it has been modified.C. $PRJNAME: The current project file.

for example. a dialog box appears and prompts you for DOS input. or whatever DOS command you want to run. where many popular editors require 200-300K to work well. GREP can run in very little memory.TXT on your root directory. you can set up a simple transfer macro that will let you do so. There may be some cases where the IDE cannot give up as much memory as you requested. If you use the $MEM() macro.59 - . This lets you just type dir. the IDE gives up as much as it can. The less memory you devote to a transfer program. When this happens. the IDE will . the quicker the transfer to and from the program occurs. the text command /c won't show up in the dialog's input box. Running DOS ======================================================= commands If you want to run DOS commands from within the integrated environment.*.TXT) writes to the file MESSAGES. chkdsk. Transfer memory ======================================================= settings Different programs have different memory needs. Since the $PROMPT command appears later in the string. There are certain states in the IDE that require more memory than others. For example.$OUTNAME $WRITEMSG(filename): This macro copies the contents of the Message window to the specified ASCII file. Just add this transfer item: command /c $MEM(128) $PROMPT When you invoke this transfer item.$TASM: This macro is predefined for use with Turbo Assembler. $TASM is essentially shorthand for this: $NOSWAP $SAVE CUR $CAP MSG(TASM2MSG) $EDNAME. $WRITEMSG(C:\MESSAGES. For example. del *. while debugging a program. you can specify (on a program-by-program basis) how much memory the IDE should give to the transfer programs. The translator can parse the file and act on the messages so desired. It uses the TASM2MSG filter to trap TASM messages.

When -c is not used.60 - . =========================================================================== Turbo Editor macros =========================================================================== TEMC. It serves as an example script. . The configuration file extensions is assumed to be . The optional -c switch can also be specified as /c. as well as a base from which to customize the editor. any existing command table in your configuration file is thrown away before TEMC processes the script file. In those cases where you want the IDE to give up all its memory. give it a large number. It processes a script file that defines editor macros and key bindings.TEM if not specified otherwise. Use Program Reset (Ctrl-F2) to free up debugging memory.TC.EXE is an editor macro compiler for the IDE. The configuration file need not exist. the key bindings in the script file are merged with those already defined in the configuration file. and can appear in any argument position on the command line. Type temc [-c] [-u] <script file> <config file> The script file extension is .tie up more resources than when not debugging. How much memory is actually given up is dependent on how much you have when you start Turbo C++. =========================================================================== TEMC command line =========================================================================== TEMC is invoked from the DOS command line.TEM contains the default macro definitions and key bindings built into the IDE editor. The file DEFAULTS. If it does not exist. it is created. If you use this option. and produces a configuration file that is read by the IDE to define the effects of keyboard commands in the editor. like 640K.

] END.TEM to re-create exactly the default settings of the Alternate command set.. Comments are in C-style /* . Unlike C. For example. [ <command2>. causes TEMC to modify the CUA command set instead. When you define your macro. which can also be specified as /u. Some of the predefined editor commands have a syntax that looks like a C function call with one argument. A file named CMACROS. This file is included as both a sample script file and as the default command table. =========================================================================== Syntax =========================================================================== The syntax to define a macro is MACRO <macroname> <command1>..TEMC by default modifies the commands used by the IDE when the Alternate command set is specified in Options| Environment|Preferences.TEM is provided with Turbo C++. 3. 5. 2. You can use DEFAULTS. A list of editor commands and what they do follows. . this file contains many useful enhancements to the IDE for C and C++ programming that you may wish to install. <macroname> can consist of anything that is a legal C symbol. Spaces and new lines are optional. 4. */ pairs.. the following points are valid: 1. TEMC's language is case insensitive. The optional -u switch. A statement defines either a named macro or a key binding.. . and <command> can be either the name of another predefined macro or a predefined TEMC editor command.61 - . You can copy it and modify it for your own use.

SetMark(5).62 - . The <key-sequence> is either a key (a character optionally preceded by Ctrl or Alt). ] END. Note that the specification of the key characters themselves is case sensitive. . even though the latter is the same as CTRLK+b. and each <command> can be either the name of a previously defined macro. the argumment is either a decimal integer constant. All are specified using C syntax.1. =========================================================================== Key codes =========================================================================== The IDE editor makes use of an extended character set that includes key combinations not normally available to DOS programs. For example. Whitespace is allowed between the key-sequence and the colon. or a string literal. [ <command2>. or one of the predefined editor commands listed in Table 1. The syntax to define a key binding is <key-sequence>: <command>. "Shift-" "Alt-" and a character. a character constant.. Ctrl-k+B is different than Ctrl-k+b. or <key-sequence>: BEGIN <command1>..TEM: MACRO MacScrollUp ScrollScreenUp. or a series of keys separated by a plus sign (+). Key codes can be specified in a script through any combination of the symbols "Ctrl-". . Depending on the command. FixCursorPos. Here's an example of a macro definition from DEFAULTS. END.

o Ctrl-k+^b specifies a Ctrl-K followed by any of b. Any key in a sequence--except the first key--can be preceded by one of the characters ^ or @.63 - . or characters. For example. The caret (^) indicates that any combination of case and "Ctrl" can be used to type the key. optionally preceded by one or more of Ctrl-. as described in the following table. or Ctrl-B. that is. Named keys ======================================================= Key are specified as letters. use Shift-Tab . or control characters. o Ctrl-k+@B specifies Ctrl-K followed by either b or B.Some keys cannot be entered directly into a TEMC script. B. numbers. Alt. The following names specify keys that cannot be typed as themselves in the TEMC syntax. The @ sign is used to indicate that case is insignificant for the following character. although "Ctrl" is not accepted. lowercase. Those keys can be referred to by their names. uppercase. ------------------------------------------------------Key name Notes ------------------------------------------------------Home End PgUp PgDn LfAr RgAr UpAr DnAr Ins Del Enter Return BkSp Tab BkTab Left arrow Right arrow Up arrow Down arrow Same as Enter Backspace No longer available.or Shift-. o Ctrl-k+b specifies a Ctrl-K followed by a lowercase b.

Note that some commands cause an escape from the editor to the surrounding IDE. adjust the display so the cursor is CenterFixScreenPos . Moves cursor to the bottom line of the current window. Commands that cause an escape from the editor follow. TEMC editor commands ------------------------------------------------------Command name What the editor does ------------------------------------------------------BackspaceDelete BottomOfScreen Deletes character before the cursor. as long as you don't create any loops by having two macros calling each other. If any adjustment is necessary. Your macro will "pause" until control returns to the editor.64 - . for example. by bringing up a dialog box.Esc Star Minus Plus Space PrtSc F1 to F10 * key on the numeric keypad .key on the numeric keypad + key on the numeric keypad Spacebar Function keys ------------------------------------------------------- =========================================================================== Predefined editor commands =========================================================================== TEMC lets you use built-in editor commands and userdefined macros as commands within macros interchangeably. leaving column unchanged. even via intermediate macros. Adjusts the screen display to ensure the cursor is visible. A list of all predefined TEMC editor commands is shown next.

but pays attention to cursor through tab option setting (see SetCursorThroughTabMode). CopyBlock If there is a valid and highlighted (selected) text block. Moves cursor right one screen column. then at the cursor location.4: TEMC editor commands (continued)____________ close to being centered in the window. This command will skip over tab characters and move to the end of the previous line. Moves cursor up one row. Like CursorRight. This command will skip over tab characters and advance to the beginning of the next line. CursorCharLeft CursorCharRight CursorDown CursorLeft CursorRight CursorSwitchedLeft CursorSwitchedRight CursorUp . inserts a copy of the characters that are selected and makes that the new selected text location. Moves cursor down one row.65 - . Like CursorLeft. but pays attention to cursor through tab option setting (see SetCursorThroughTabMode).Table 1. Moves cursor left one screen column. Moves cursor left over one character. Moves cursor right over one character.

leaving a zero-length line. Deletes the current line. If the cursor through tab option is not set. deletes the characters that are in it.Table 1. a column greater than 0. Deletes from cursor to beginning of next word.4: TEMC editor commands (continued)____________ DeleteBlock If there is a valid and highlighted (selected) text block. Deletes all characters in the current line. the cursor is not placed in the middle of a tab character (see SetCursorThroughTabMode). Deletes the character at the current cursor location. Initiates a series of commands that will select a block of text between the initial and ending positions of the cursor. Ends a series of commands begun by ExtendBlockBeg. Ensures that the cursor value specifies a row between 1 and the number of lines in the buffer. Adjusts the screen display to ensure the cursor is visible.66 - . Moves cursor to end of file buffer. DeleteChar DeleteLine DeleteToEOL DeleteWord EndCursor ExtendBlockBeg ExtendBlockEnd FixCursorPos FixScreenPos .

etc. Inserts the literal "string" in the buffer at the current cursor location. Moves cursor to beginning of the current line. Inserts the character at the current cursor location. Sets a flag indicating that if the beginning and end selected text markers are valid. where c is a character or integer value. the selected text should be highlighted. Sets a flag indicating that the selected text should not be highlighted. tab characters. making no assumptions about what is onscreen. Inserts a space at the beginning of each line in the highlighted (selected) text. Use the syntax LiteralChar(c). Sets a flag indicating that the contents of the buffer are different than what is HideBlock HighlightBlock HomeCursor IndentBlock InsertText LeftOfLine LiteralChar MarkBufModified . Use the syntax InsertText(string) to call this command.Table 1.67 - . Moves cursor to beginning of the file buffer.4: TEMC editor commands (continued)____________ FullPaintScreen Redraws the entire window. without doing any special processing for newline.

searches in the appropriate direction for the closest instance of the matching delimiter. ). or on the first character of one of the pairs /* or */. {. MarkBufUnModified Clears a flag. Moves the cursor to the location saved with SetMark(n) command. searches forward for the matching character. Like CopyBlock. searches backward for the matching character. thus indicating that the contents of the buffer can be assumed to be identical to what is in the disk file.4: TEMC editor commands (continued)____________ in the corresponding disk file. }. ]. Same as MatchPairForward except if the cursor is on a ' or ". If a match is found. places the cursor there. but also deletes the original selected text. [. Use the MatchPairBackward MatchPairForward MoveBlock MoveToBlockBeg MoveToBlockEnd MoveToMark .Table 1. Moves cursor to the location marked as the beginning of the selected text. If the cursor is on the character ' or ". Moves cursor to the location marked as the end of the selected text.68 - . If the cursor is on one of the characters (.

MoveToPrevPos Moves the cursor to the location specified by the "previous position marker. leaving cursor position unchanged. from the beginning of each line in the highlighted (selected) text. assuming that the screen still correctly displays what the editor last drew on it. No operation. Moves cursor down by number of lines in the window. 0-9. Scrolls screen up by numer of lines in the window. leaving cursor position unchanged. Can be used to cause a keystroke to have no effect. Moves cursor up by number of lines in the window. but performs no function.Table 1. if any." Moves the cursor to the saved temporary marker. Deletes a leading space. Scrolls screen down by numer of lines in the window. Redraws the entire window. MoveToTempPos NullCmd OutdentBlock PageDown PageScreenDown PageScreenUp PageUp PaintScreen .4: TEMC editor commands (continued)____________ syntax MoveToMark(n). where n is a one-digit number. Calls the editor.69 - .

Moves cursor to the next column that follows the end of a word. Sets the Backspace Unindents option On.4: TEMC editor commands (continued)____________ ReDo Performs an Redo operation.Table 1. Sets the end of the selected text to be the character at the current cursor location. Sets the Cursor Through Tabs option On. Exactly what happens depends on the option settings. Sets the beginning of the selected text to be the character at the current cursor location. leaving cursor position unchanged. Scrolls screen down one line. so a later MoveToMark(n) RightOfLine RightOfWord ScrollScreenDown ScrollScreenUp SetAutoIndent SetAutoOutdent SetBlockBeg SetBlockEnd SetCursorThroughTabMode SetInsertMode SetMark .70 - . Sets Insert/Overwrite option to Insert. Sets a marker to point to the character at the current cursor location. leaving cursor position unchanged. Moves cursor to end of current line. Scrolls screen up one line. Sets the Auto Indent option On.

Saves the cursor location in a temporary marker that can be used by some internal editor commands. Redraws the window. Inserts space or tab characters in accordance with the current settings of the Use Tab Char option. Tab Width." Toggles the state of the Auto Indent option. SetOptimalFillMode SetPrevPos Sets Optimal Fill option On. where n is a one digit number. Sets Use Tab Char option On. skipping any portions that the editor is sure are unmodified since the last redraw. Use the syntax SetMark(n). Exchanges the values of the cursor and the "previous position marker. This marker location changes only by a call to SetPrevPos or SwapPrevPos. SetTabbingMode SetTempPos SmartRefreshScreen SmartTab SwapPrevPos ToggleAutoIndent .Table 1. 0-9. This is not a practical application in user-defined macros.4: TEMC editor commands (continued)____________ comand can restore the cursor. Sets a marker (the previous position marker) to point to the character at the current cursor location.71 - . Use SetMark instead.

72 - . Exactly what happens depends on the option settings.Table 1. ToggleHideBlock Toggles the state of the highlight (selected) text flag (see HighlightBlock). leaving column unchanged. ToggleInsert ToggleOptimalFillMode ToggleTabbingMode TopOfScreen UnDo WordLeft WordRight ------------------------------------------------------The following commands cause an exit from the editor. Toggles state of Insert/Overwrite option. or to end of previous line. Toggles state of Optimal Fill option. The macro resumes when the editor window regains the focus. Moves cursor to the top line currently displayed in the window. Moves cursor to beginning of previous word. Toggles state of Use Tab Char option. Moves cursor to beginning of next word. whichever is first. Performs an Undo operation. whichever is first. ToggleCursorThroughTabMode Toggles the state of the Cursor Through Tabs option. or to the end of a line. . for example.4: TEMC editor commands (continued)____________ ToggleAutoOutdent Toggles the state of the Backspace Unindents option. by bringing up a dialog box.

Opens a dialog box for changing the current directory. Pastes Clipboard into buffer at cursor (Shift-Ins). Copys selected text to Clipboard (Ctrl-Ins). Causes the IDE to update various menu items and/or icons. elects Edit menu (Alt-E). Selects Compile menu (Alt-C). Selects window #2 (Alt-2).73 - . Selects window #6 (Alt-6). Selects window #8 (Alt-8). Opens previous help window (AltF1). Selects File menu (Alt-F). Used after a command such as ToggleInsert which changes the state of an editor option switch. Selects the Options Compiler menu Selects Debug menu (Alt-D). Display the Help system't index (Shift-F1) Inspects item (Alt-F4). Highlights top menu bar. Selects window #7 (Alt-7). ClipCopy ClipCut ClipPaste ClipShow CloseWindow CompileFile CompileMenu CompilerOptions DebugMenu EditMenu FileMenu GetFindString GotoWindow1 GotoWindow2 GotoWindow3 GotoWindow4 GotoWindow5 GotoWindow6 GotoWindow7 GotoWindow8 GotoWindow9 Help HelpMenu HelpIndex Inspect LastHelp MakeProject Menu . Opens a dialog box for the Search operation. Selects window #4 (Alt-4). (Alt-S F) Selects window #1 (Alt-1). Compiles current buffer (Alt-F9). Makes project (F9). Closes editor window (Alt-F3). Selects window #3 (Alt-3). Cuts selected text to Clipboard (Shift-Del). Selects window #5 (Alt-5).The keys listed next to some of the commands below are the ones used by default when the Alternate mode of the IDE is selected. Selects window #9 (Alt-9). AddWatch ChangeDirectory ChangeModeFlags Adds a watch item (Ctrl-F7). Shows Clipboard (no hot key defined). Selects Help menu (Alt-H). Opens the Help window (F1).

Writes selected text to the printer. Opens an dialog box for the Replace operation. Views Call Stack (Ctrl-F3). Sets/Clears a breakpoint at the cursor location Trace into (F7).Modify NextError NextWindow OpenFile OptionsMenu PrevError PrintBlock ProjectMenu Quit ReadBlock RepeatSearch Replace ResetProgram RunMenu RunProgram RunToHere SaveFile SaveFileAs SearchMenu Step SystemMenu ToggleBreakpoint Trace Transfer0 Transfer1 Transfer2 Transfer3 Transfer4 Transfer5 Transfer6 Transfer7 Transfer8 Transfer9 ViewCallStack Evaluates expression/modify variable (Ctrl-F4). . . Selects nth item from transfer menu . Searches again. Step over (F8). Selects Sytem menu (Alt-Spacebar). . . Selects next window in IDE (F6). . Moves to previous item in message window (Alt-F7). Makes and runs current executable (Ctrl-F9). . .74 - . Runs program until statement at cursor (F4). Selects Run menu (Alt-R). Selects Search menu (Alt-S). . Resets program being debugged (Ctrl-F2). Saves current editor buffer (F2). . Opens dialog for File SaveAs. Selects Project menu (Alt-P). Selects Options menu (Alt-O). Moves to next item in message window (Alt-F8). Exits the IDE (Alt-X). using previous parameters. Opens dialog box requesting a file name to be read into the buffer at the cursor location and marked as selected text. Opens dialog box for File Open (F3).

Selects Window menu (Alt-W). .75 - . Opens dialog box requesting a file name to which the selected text will be written.ViewUserScreen WindowList WindowMenu WindowCascade WindowTile WordHelp WriteBlock ZoomWindow Displays User Screen (Alt-F5). Zooms/unzoomd current window (F5). Context sensitive help (Ctrl-F1). Displays window list (Alt-0).

76 - ..

+ and + . 50 characters trigraph converting 53 $COL transfer macro 56 columns numbers 56 command line syntax CPP 10 compilers Turbo editor macro 56 $CONFIG transfer macro 56 configuration files 56 TCC file 10 CPP and 10 conversion trigraphs 53 CPP 10-12 command-line options and syntax 10 directory 10 example of use 11 files compiling 11 -P option (source file names and line numbers) 11 wildcards and 10 D -d GREP option (directories) 14 /D OBJXREF option (directory) 24 Index 77 .(TLIB action symbol) 47 $ GREP operator 17 * GREP operator 17 + GREP operator 17 . 40 /C TLIB option (case sensitivity) 45. 42 -* and ** (TLIB action symbols) 47 * (TLIB action symbol) 47 + (TLIB action symbol) 47 .(TLIB action symbols) 48 [ ] GREP operator 17 /? THELP help option 40.h and 8 options destination file 7 /F 6 file name 6 file name (/F) 5 public name 7 segment class 7 segment name 7 source file 7 C -c GREP option (count only) 14 /C THELP option (select color) 39. GREP operator 17 \ GREP operator 17 ^ GREP operator 17 ? THELP option 40. 50 $CAP EDIT transfer macro 55 $CAP MSG transfer macro 55 case sensitivity GREP option 14 TLIB option 45. 6 components 6 example 4 graphics. 42 A add (TLIB action symbol) 47 B BGIOBJ 2-10 advanced features 6 command-line syntax 3.INDEX ___________________________________________________________________________ .

49 extract and remove (TLIB action) 47 F /F BGIOBJ option 6 /F BGIOBJ option (far routines) 5 /F OBJXREF option (include full library) 25 /F THELP option 41 /F THELP option (Help file path and name) 40 files dates changing 51 destination BGIOBJ 7 extensions 57 linker response. converting to . used by OBJXREF 28. 33 macros expanded 10 matching GREP option 14 names macros transfer 54 printing (GREP) 15 output.OBJ files 2 included with Turbo C++ 4 linker errors and 5 linking 2-10 registering 3.debugging include files 10 macros 10 $DEF transfer macro 56 Defines option transfer macro 56 $DEP transfer macro 56 dependencies explicit 56 $DIR transfer macro 56 directories CPP 10 GREP option 14 include files transfer macro 57 libraries transfer macro 57 . generated by OBJXREF 25 path macros 56 saving all 58 searching 12-22 source BGIOBJ 7 filters 55 GREP 56 Resource Compiler 56 TASM 56 fonts adding to graphics library 3 files. 49 editor macro language (TEML) using 56 $EDNAME transfer macro 56 $ERRCOL transfer macro 57 $ERRLINE transfer macro 57 $ERRNAME transfer macro 57 errors linker graphics drivers and fonts 5 OBJXREF (list) 34 examples OBJXREF 28-33 .78 - .EXE files file name transfer macro 57 $EXENAME transfer macro 57 $EXT transfer macro 57 extended dictionary TLIB and 45. 8 .OBJ files 24 transfer macro 56 DLLs creating 57 DOS commands running from the IDE 59 $DRIVE transfer macro 56 E /E TLIB option (extended dictionary) 45.

nonmatching (-v) 15 list matching files (-l) 14 -n (line numbers) 14 -o (UNIX output format) 14 precedence 16 regular expression search (-r) 14 UNIX format (-o) 14 updating (-u) 15 -v 15 -v (nonmatching lines) 15 verbose 15 word search (-w) 15 search strings 16 white space in 18 using 13 wildcards and 18 GREP. 42 header files graphics. 8 graphics.EXE 56 H /H THELP option (help) 40. 42 keyboard trigraph program 53 L -l GREP option (list matching files) 14 /L OBJXREF command (linker response file) 28 $LIB transfer macro 57 libname (TLIB option) 45 Index 79 .h (header file) BGIOBJ and 8 GRAPHICS. 2-10 included with Turbo C++ 4 linker errors and 5 linking 2 registering 3.LIB adding to 3 GREP (file searcher) 12-22 capturing messages 56 examples 18 files to search 18 help 13 literal character 17 matches 17 operators 17 optimizing use of 16 options case sensitivity (-i) 14 count only (-c) 14 default 15.COM 16 GREP2MSG.OBJ files 2. 42 hot keys scan codes 42 I -i GREP option (case sensitivity) 14 /I OBJXREF option (case sensitivity) 24 $INC transfer macro 57 include files debugging 10 directories transfer macro 57 integrated environment DOS commands and 59 memory needs 59 K /K THELP option (change hot key) 40.stroked 2-10 linking 2 G graphics drivers adding to graphics library 3 converting to . 16 discussion 13 file names (printing) 15 -i (case sensitivity) 14 line numbers (-n) 14 lines.h 8 help GREP (file searcher) 13 OBJXREF 23 THELP 40.

80 - . 44 creating 47 OBJXREF including all 25 page size 49 $LINE transfer macro 57 lines numbering 57 printing (GREP) 14 linker error: segment exceeds 64K 5 response files used by OBJXREF 28. 33 linking graphics drivers 2 listfile (TLIB option) 45 M macros CPP and 11 debugging 10 editor 56 expanded list of 10 preprocessing 11 preprocessor 10 MAKE (program manager) modifying 51 project files and 36 $MEM transfer macro 57. 32 help 23 /L command (linker response files) 28 . 59 memory requirements IDE 59 transfer programs 57. 31. TLIB 46 N -n command-line compiler option CPP and 10 -n GREP option (line numbers) 14 /N OBJXREF option (limit reports) 26 $NAME transfer macro 57 $NOSWAP transfer macro 57 numbers column 56 line 57 O -o GREP option (UNIX format output) 14 /O OBJXREF option (output file for reports) 25 .libraries directories transfer macro 57 files 22 contents of 22 graphics adding driver and font files to 3 object files 43. 59 Message window capturing output into 55 copying text from 59 messages capturing from programs 55 column number 57 file name 57 line number 57 module names. 30.OBJ files converting font files into 2 converting graphics drivers files into 2 defined 22 directories 24 libraries advantages of using 44 creating 47 TLIB and 43 names 22 response files and 27 object modules defined 22 names 22 OBJXREF 22-34 directories 24 error messages 34 examples of reports 29.

33 default type 33 of all types (/RV) 26 of module sizes (/RS) 26. 30. 31 by external reference (/RX) 26. 27 example 33 linker 28 warnings 34 wildcards and 23 operations (TLIB option) 45 operators GREP 17 $OUTNAME transfer macro 57 output capturing 55 output file generated by OBJXREF 25 P -P CPP option (source file names and line numbers) 11 /P OBJXREF command (project files) 27 /P TLIB option (page size) 49 page size (libraries) 49 path transfer macro 57 precedence GREP options 16 TLIB commands 46 PRJ2MAK (project file converter) 36 PRJCNVT (project file converter) 35 $PRJNAME transfer macro 58 programs capturing output 55 file name 57 memory assignments 59 project files OBJXREF and 27 used by OBJXREF 33 projects files converting from old versions 35 converting to MAKE files 36 file name transfer macro 58 $PROMPT transfer macro 58 public names defined 22 R -r GREP option (regular expression search) 14 /RC OBJXREF option (report) 31 /RC OBJXREF option (reports) 26 Index 81 . 31 of unreferenced symbol names (/RU) 26. 30 by module (/RM) 26. 32 output file (/O) 25 verbose example 33 verbose (/RV) 26. 29 by public names (/RP) 26. 32 /V (verbose output) 25 verbose report (/RV) 32 /Z (include zero-length segment definitions) 25 project files as response files 27 project files (/P) 27 reports 23 modifying 26 output file for (/O) 25 response files 23.linker files as response files 28 options 23 /N (limit information) 26 /RV 26 /RC 31 control 24 directories (/D) 24 /F (include full library) 25 ignore case (/I) 24 include full library (/F) 25 include zero-length segment definitions (/Z) 25 list file names (/V) 25 modified reports 26 /O (output file) 25 reports 25 by class type example 33 by class type (/RC) 26. 29 by reference (/RR) 26.

redirecting program output 55 registerbgidriver (function) BGIOBJ and 3. 43 screen colors (/C) 39.82 - . 42 removing THELP (/U) 40. 8 registerfarbgifont (function) BGIOBJ and 6. 8 registerfarbgidriver (function) BGIOBJ and 6.EXE 56 $TASM transfer macro 58 text Message window 59 text files searching 12-22 THELP (Turbo Help utility) 37-43 additional Help on highlighted word 39 cursor keys 38 index 39 invoking 37 keywords 38 loading 37 options 39-43 colors (/C) 40 colors (/C) 39 Help file path (/F) 40 help file path (/F) 41 help on (/? /H ?) 40. 43 scan codes 42 using 38 . 43 /W (window options) 40 window options 43 window options (/W) 40 paging through 38 paste page 39 previous screens 39 quitting 39 removing from memory 40. 8 registerbgifont (function) BGIOBJ and 3. 40 /U (removing THELP) 40. 8 remove (TLIB action) 47 replace (TLIB action) 48 Resource Compiler capturing messages 56 resources rebuilding automatically 56 response files file-name extensions and 27 formats 27 free-form 27 example 33 linker files and 28 OBJXREF and 23. 28 example 33 project files and 27 TLIB 48 TLINK. 42 Help screen colors (/C) 39 help screen colors (/C) 40 hot keys (/K) 40. 42 reassign hot keys (/K) 40. OBJXREF and 33 /RM OBJXREF option (reports) 26 /RP OBJXREF option (reports) 26 /RR OBJXREF option (reports) 26 /RS OBJXREF option (reports) 26 /RU OBJXREF option (reports) 26 /RV OBJXREF option (reports) 26 /RX OBJXREF option (reports) 26 S $SAVE ALL transfer macro 58 $SAVE CUR transfer macro 58 $SAVE PROMPT transfer macro 58 scan codes 42 searches text files 12-22 source files separately compiled 44 standalone utilities 1 strings searching for as expressions (GREP) 14 in text files 12-22 swapping to User Screen 57 syntax CPP 10 TLIB 44 T TASM2MSG. 27.

50 /E 45.CFG 10 U -u GREP option (updating) 15 /U THELP option 43 /U THELP option (remove THELP) 40 UNIX format (GREP) 14 User Screen 57 utilities standalone 1 TLIB 43-51 TOUCH 51 V -v GREP option (nonmatching lines) 15 /V OBJXREF option (verbose output) 25 W -w GREP option (word search) 15 /W THELP option (ser window size/location) 40 Index 83 . 49 libname 45 listfile 45 operations 45 page size (/P) 49 using 44 response files using 48 syntax 44 TLIB (Turbo librarian) 43-51 options 39-51 TLINK (linker) response files OBJXREF and 28 TLIB extended dictionary and 49 TOUCH 51. 52 transfer macros $CAP EDIT 55 $CAP MSG 55 $COL 56 $CONFIG 56 $DEF 56 defined 54 $DEP 56 $DIR 56 DOS commands 59 $DRIVE 56 $EDNAME 56 $ERRCOL 57 $ERRLINE 57 $ERRNAME 57 $EXENAME 57 $EXT 57 file names 54 glossary of 55 how expanded 54 $INC 57 instruction 55 $LIB 57 $LINE 57 $MEM 57 $NAME 57 $NOSWAP 57 $OUTNAME 57 $PRJNAME 58 $PROMPT 58 $SAVE ALL 58 $SAVE CUR 58 $SAVE PROMPT 58 $TASM 58 $WRITEMSG 59 trigraphs translating 53 undo option (-u) 53 Turbo Assembler capturing messages 56 $TASM macro 58 TURBOC.TLIB (librarian) 43-51 action symbols 46-48 capabilities 43 examples 51 extended dictionary (/e) TLINK and 49 module names 46 operations 46 precedence 46 options case sensitivity (/c) 45. 49 extended dictionary (/e) 45.

84 - ./W THELP option (window options) 43 wildcards CPP and 10 OBJXREF and 23 TOUCH and 52 $WRITEMSG transfer macro 59 Z -z GREP option (verbose) 15 /Z OBJXREF option (include zerolength segment definitions) 25 .

Sign up to vote on this title
UsefulNot useful