◁ 返回 FileEditSearchHelp CD 5 — 计算机语言
软件列表
Disc :CD 5 — 计算机语言
Total :85 个软件
RAW = 标准磁盘映像,可直接用于虚拟机 (VM) 或写入软盘 | IMG/DDI = 原始压缩格式 (HDCOPY/DiskDupe),需专用工具读取
000 Turbo Basic V1.0 1×HD
README [展开]

                 WELCOME TO TURBO BASIC
                 哪哪哪哪哪哪哪哪哪哪哪

    This README file contains information that will be useful
    and/or of interest to you. Please read it in its entirety,
    referring to it when you encounter problems in the manual.

    TABLE OF CONTENTS
    哪哪哪哪哪哪哪哪�

    1. How to get Help
    2. Graphics support for the new IBM Personal System computers
    3. Corrections/Additions to the Manual
    4. Important tips
    5. Files on the disk


    1. HOW TO GET HELP
    哪哪哪哪哪哪哪哪哪

    If you have any problems, please read this file and the
    Owner's Handbook first. If you still have a question and need
    assistance, help is available from the following sources:

       1. Type GO BORLAND on the CompuServe bulletin board system.
       2. Check with your local software dealer or users' group.
       3. Write to us at the following address:

         Borland International
         Turbo Basic Technical Support
         4585 Scotts Valley Dr.
         Scotts Valley, CA  95066

       4. If you have an urgent problem that cannot wait and you
       have sent in the license agreement from the front of
       your manual, then call the Borland Technical Support
       department. Please have the following information ready
       before calling:

       a) Product name and serial number on your original
          distribution disk.

       b) Product version number. The version number for Turbo
          Basic is displayed when you first load the program
          and before you press any keys.

       c) Computer brand, model, and the brands and model
          numbers of any additional hardware.

       d) Operating system and version number. (The version
          number can be determined by typing VER at the DOS
          prompt.)

       e) Contents of your AUTOEXEC.BAT file.

       f) Contents of your CONFIG.SYS file.



    2. NEW IBM GRAPHICS MODE SUPPORT
    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪

    Turbo Basic supports the new enhanced graphics modes
    available on the new IBM Personal System computers.

    Use the SCREEN statement to access the new modes.  The 
    following table describes the new modes the SCREEN
    statement takes:


       SCREEN   MODE
       哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪�
       11   640 X 480  black and white
       12   640 X 480  16 Color


    3. CORRECTIONS/ADDITIONS TO THE MANUAL
    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪

    The following lists the corrections and additions to the
    Turbo Basic manual. They are sequential by page number so you
    can easily update your manual while you read through them.

    Page 38 - The G (for global) option in the editor's Find
    command does NOT stop at the position of each occurrence of
    your search string. It searches through the entire file from
    beginning to end, and positions the cursor on the LAST
    occurrence of the search string.

    Page 38 - The N (for Next) option of the Find command is not
    documented here. The N option finds the Next occurrence of a
    search string, starting at the current cursor position in the
    file you are editing. Keep in mind that the G option will
    override the N option if you use both at the same time. Also,
    note that the N option is different than the n of the Find
    command. The lower case n represents an integer that can be
    used in the option list of the Find command.

    Page 39 - The n (for number) option of the Find and replace
    command. Unlike the n option in the Find command, the n
    option for Find and replace causes the next n cases of the
    search string to be replaced by the replace string. If the G
    option is used, the search starts at the top of the file;
    otherwise it starts at the current cursor position.

    Page 49 - A word of warning is necessary concerning the 8087
    coprocessor and Turbo Basic. In some cases, a program will
    read that your machine has an 8087 chip when it really
    doesn't; for example, if you've set the switch on for 8087
    but have yet to install the chip. This will either cause
    Turbo Basic to hang when running a program or to generate
    compile-time errors when compiling programs with numbers.
    Environment variables solve this problem nicely. Add the
    following to your AUTOEXEC.BAT file:

       SET 87=NO

    Take a look at Appendix G, "A DOS Primer," for more
    information about environment variables and AUTOEXEC.BAT
    files.

    Page 52 - The sentence: "Note that 8 notes equal 1 byte;"
    should be: "Note that 1 note equals 8 bytes;"

    Page 55 - In the discussion of Save Options/Window/Setup, it
    says that you may save the options to TB.EXE. Actually, a
    file extension of .TB is always added to the end of the
    configuration file's name.

    Page 57 - Under the Run-time error option in the Debug menu,
    note that you'll receive a "Run-time error not found" error
    message if you give an invalid program counter.

    Page  76 - Arrays are  considered dynamic in the following
    cases:

       - If declared after the $DYNAMIC metastatement is used, 
         as in
        10 $DYNAMIC
        20 DIM A(10)
       - If declared as dynamic explicitly, as in
        10 DIM DYNAMIC A(10)
       - If a variable is used in the DIM statement, as in
        10 X% = 10
        20 DIM A(X%)
       - If the array is included in a COMMON statement, as in
        10 DIM A(10)
        20 COMMON A(1)
       - If there are two or more DIM statements for the same
         array identifier, as in
        10 DIM A(10)
        20 A(0) = 10
        30 DIM A(10)
       - If an array is declared local to a procedure or function, 
         as in
        DEF FNTest%
          LOCAL A()
          DIM A(10)
          FNTest% = A(0)
        END DEF


    Page 107 - The example program on this page  uses a variable
    called name$. This variable will cause a syntax error because
    you cannot use a reserved  word as a  variable. Replace the
    variable name$ with FileName$.

    Page 125 - $INLINE's example program contains two extra
    commas that will cause a compile error. Remove the commas
    at the end of the first two $INLINE statements.

    Page 144 - The description of the CEIL function should read:

       The CEIL function converts a numeric variable or
       expression to an integer by returning the smallest integer
       that is...

    Page 155 - Make the following modification to the example program for
    the CLOSE statement:

     Change:
       OPEN "CLOSEFIL.ONE" AS #1
       OPEN "CLOSEFIL.TWO" AS #2

     To:
       OPEN "CLOSEFIL.ONE" FOR OUTPUT AS #1
       OPEN "CLOSEFIL.TWO" FOR OUTPUT AS #2

    Page 162 - Remove the OPEN statement in COM(n)'s example
    program; it is extraneous and will cause a compile error.

    Page 174 - Remove the following line from the example program:

       Your results:

    Page 180 - The example statement in the middle of the page:

       = m + 16

     should be:

       n = m + 16

    Page 191 - Make the following change to the example program
    for DRAW:

     Change:

       DRAW "M= " +VARPTR$(I%) + ",40"

     To:

       DRAW "BM=" + VARPTR$(I%) + ",40"

    Page 239 - The first sentence in the Remarks section should be:

       n is the trapped key, and integer expression from 1-25,
       30, or 31, according to the following:

    The table following the first paragraph should be modified to
    look exactly like the one on page 274.

    Page 242 - The syntax description for LBOUND is:

       LBOUND(array(dimension))

     In the example program, the statement:

       PRINT "Lower Array Bound of Dimension 2 is ";LBOUND(Array%,2)

     Should be changed to:

       PRINT "Lower Array Bound of Dimension 2 is ";LBOUND(Array%(2))


    Page 274 - The first sentence in the Remarks section should be:

       n is the trapped key, and integer expression from 1-25,
       30, or 31, according to the following:

    Page 286 - The syntax for the OPEN COM statement is:

       OPEN "COMn:[baud] [,parity] [,data] [,stop] [options]"

    Page 287 - The example program for OPEN COM should be changed
    to the following:

       ' allocate a string array to store input
       DIM ComPortInput$(1)

       $COM1 1024    ' set up a 1K input buffer

       OPEN "COM1:300,n,8,1,DS,RS,CS,CD" AS #1 LEN = 1

       PRINT "Press any key to terminate the program..."
       WHILE NOT INSTAT ' while a key hasn't been pressed
        ' if there is any input available
         IF LOF(1) > 0 THEN
            ' read any info available in the com port buffer
            ComPortInput$(0) = INPUT$(LOF(1), #1)
            ' display input
            PRINT "COM Port input: ";ComPortInput$(0)
         END IF
       WEND

       END   ' end of program

    Page 301 - The example statement in the middle of the page is
    missing a colon.

     Change:

       a$ = "C D E" PLAY "E D E X" + VARPTR$(a$)

     To:

       a$ = "C D E" : PLAY "E D E X" + VARPTR$(a$)

    Page 319 - The DATA statements for the example program are
    missing. Use the following:

       DATA W. Perry,    78, 65, 35, 79, 86, 93, 79, 85, 99, 96
       DATA P. Watson,   98, 94, 70, 88, 99, 100, 75, 96, 100, 95
       DATA M. Ciccone, 65, 59, 75, 82, 56, 79, 82, 76, 69, 89

    Page 352 - Remove the comment from the first statement of the
    program:

      Change:

       ' top$ = STRING$(40,61)

      To:

       top$ = STRING$(40,61)

    Page 365 - The syntax for UBOUND is:

       UBOUND(array(dimension))

     In the example program, the statement:

       FOR index% = LBOUND(Array%) TO UBOUND(Array%)

     Should be changed to:

       FOR index% = LBOUND(Array%(1)) TO UBOUND(Array%(1))

    Page 382 - In the DATA statement for the example program add
    an ending double quote to the word "Paris".

    Page 401 - The original assembly language source code for the
    INLINE procedure on this page is:

      program segment   ; begin program segment
      assume cs:program

      push BP           ; save the Base Pointer
      mov  BP,SP        ; move stack pointer to BP
      les  DI,[BP+6]    ; offset address of parameter
      mov  AX, 64h      ; constant to fill
      mov  CX, C8h      ; length of fill
      cld               ; clear the direction flag
      rep               ; fill the words
      stosw
      pop  BP           ; restore Base Pointer

      program ends      ; end program segment
      ends              ; end compilation


    Note that there is no RET at the end of the routine. You may
    run this code through The MicroSoft Assembler to generate the
    code listed in the manual.

    Page 416 - Error 242, String memory corrupt, should be
    String/array memory corrupt.


    4. IMPORTANT TIPS
    哪哪哪哪哪哪哪哪�

    CTRL-BREAK - If you want to be able to use CTRL-BREAK when
    running a program, toggle ON the Keyboard break option in the
    Options pulldown menu before compiling/running your program.
    Note that CTRL-BREAK will only interrupt your program if the
    Keyboard break option is turned ON and your program is doing
    screen I/O or you have turned the Trace option ON in the
    Debug menu. This is important to note because many public
    domain programs written for BASICA do not provide any way
    for the user to terminate execution other than pressing
    CTRL-BREAK.

    PRINT USING - When using the PRINT USING statement to display
    real numbers (single and double precision), you may find that
    the format strings for your BASICA programs do not format the
    numeric values correctly. One symptom may be that your
    numbers are displayed with a preceding % character followed
    by the number. This is because Turbo Basic provides 80 bits
    of numeric precision compared to BASICA's 24 bits. In other
    words, you have proportionately more-significant digits for
    all of your numbers. And consequently, you may have to make
    more room for your numbers when you output them.

    We have also found that some versions of GW BASIC
    automatically remove the last character of a number when
    there isn't enough room in the format string to display a
    negative sign. BASICA does not do this, nor does Turbo Basic.
    If you need to display a negative sign, you must allow for it
    in the PRINT USING statement's format string.


    5. FILES ON THE DISK
    哪哪哪哪哪哪哪哪哪哪

    Disk 1
    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪
    README   COM - The program to use to peruse this README file

    TB       EXE - The Turbo Basic compiler

    TBINST   COM - The Turbo Basic installation program

    TBHELP   TBH - The help file for Turbo Basic

    HANOI    BAS - An example Turbo Basic program that plays the
                   famous Towers of Hanoi game.

    README       - This file!



    Disk 2
    哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪哪

    REGNAMES INC - The named constants representing the registers
                   used by the CALL INTERRUPT statement

    ACKERMAN BAS - An example program demonstrating the Ackerman
                   algorithm (illustrating recursion)

    BALL     BAS - An example graphics program

    HANOI    BAS - An example Turbo Basic program that plays the
                   famous Towers of Hanoi game.

    HILBD    BAS - An example program demonstrating the precision
                   of the 8087 math package

    MUSIC    BAS - An example sound program

    QUIKSORT BAS - An example program implementing the Quick Sort
                   algorithm

    RECQUICK BAS - An example program implementing the Quick Sort
                   algorithm using recursion

    SIEVE    BAS - An example program implementing the Sieve
                   algorithm

    WHEREIS  BAS - The Main file for the WHEREIS program
    WHEREIS  INC - The Include file for the WHEREIS program
    GETDIR   ASM - The Assembly language source for Turbo Basic
                   Inline procedure; gets the current directory
    GETDRIVE ASM - The Assembly language source for Turbo Basic
                   Inline procedure; gets the current drive
    GETDTA   ASM - The Assembly language source for Turbo Basic
                   Inline procedure; gets the current DTA
    SETDTA   ASM - The Assembly language source for Turbo Basic
                   Inline procedure; sets the DTA to a new location
    GETDIR   BIN - The Assembled version of GETDIR.ASM; ready to be
                   used by WHEREIS.BAS
    GETDRIVE BIN - The Assembled version of GETDRIVE.ASM; ready to
                   be used by WHEREIS.BAS
    GETDTA   BIN - The Assembled version of GETDTA.ASM; ready to
                   be used by WHEREIS.BAS
    SETDTA   BIN - The Assembled version of SETDTA.ASM; ready to
                   be used by WHEREIS.BAS

    MC       BAS - The Main file for the MicroCalc example program
    MC0      INC - An Include file for MicroCalc
    MC1      INC - An Include file for MicroCalc
    MC2      INC - An Include file for MicroCalc
    MC3      INC - An Include file for MicroCalc
    MC4      INC - An Include file for MicroCalc
    MC5      INC - An Include file for MicroCalc
    MC6      INC - An Include file for MicroCalc
    MC7      INC - An Include file for MicroCalc
    MC8      INC - An Include file for MicroCalc
    MC       HLP - The help file for MicroCalc
    MCDEMO       - The Demonstration work sheet for MicroCalc
RAW 1.raw
原始 1.IMG
001 汉化 Turbo Basic V1.1 1×HD
RAW 1.raw
原始 1.IMG
002 MS-BASIC V7.1 5×HD
README.DOC [展开]
				README.DOC File

     Release Notes for Microsoft (R) BASIC Professional Development System

				 Version 7.10

		  (C) Copyright Microsoft Corporation, 1990

		 Product Serial Number: 00-007-2710-10009751


    This document contains release notes for version 7.10 of the Microsoft (R)
    BASIC Professional Development System for MS-DOS (R) and the Microsoft
    Operating System/2 (MS(R) OS/2). The information in this document is more
    up-to-date than that in the manuals.

    This version of BASIC contains the "BASIC Language Reference" and
    "Programmer's Guide" published with the previous release of the product,
    version 7.0. The information in those manuals is current with this
    release except where noted in this document. The "Getting Started" manual
    explains the features new to version 7.1 in Chapter 1, "New Features."

    Microsoft revises its languages documentation at the time of reprinting,
    so some of the information in this online file may already be included in
    your manuals.

    =======================================================================
    Contents
    =======================================================================

    Part	Description
    ----	-----------

    1		Notes and Tips

    2		Notes for "Microsoft BASIC Language Reference"

    3		Notes for "Microsoft BASIC Programmer's Guide"


    =======================================================================
    Part 1: Notes and Tips
    =======================================================================

    Quick Library Compatibility Between Versions
    --------------------------------------------
    Quick libraries created with version 7.1 that use the LBOUND or UBOUND
    functions or the ERASE statement on a dynamic array whose elements include
    a record containing a static array will not work with version 7.0 of QBX.

    Compatibility with Novell Netware
    -----------------------------------
    If you have a peripheral (such as a mouse) that uses Interrupt Request
    Level (IRQ) 3, and your system is part of a network using Novell (R) Netware
    version 2.15 or earlier, your system may hang when you load QBX, PWB, or
    CodeView. As a temporary solution, set your peripheral to use another
    interrupt. For more information, contact your Novell Netware dealer.

    PWB State Files / Help Under OS/2
    ---------------------------------
    Do not directly edit PWB state files (such as CURRENT.STS). To change editor
    settings in PWB, choose Editor Settings from the Options menu. For more
    information, see the section "Customizing the Environment" in Chapter 4 of
    "Getting Started."

    MSHELP.DLL must be located in the path set by LIBPATH in your CONFIG.SYS
    file in order to use Help in PWB under OS/2.

    NMK Utility
    -----------
    The NMK utility (NMK.COM) should not be used within PWB. To get help on
    NMK, type QH NMK from the command line.

    ILINK and BIND Utilities
    ------------------------
    Documentation for the ILINK and BIND utilities is included online for
    compatibility with Microsoft C. These utilities are not included with
    Microsoft BASIC and are not supported by BASIC.

    I/O within LPRINT, PRINT #, PRINT # USING, WRITE, and WRITE USING
    -----------------------------------------------------------------
    If you use any of these output statements with an argument that is,
    itself, an input/output statement, the output will go to the
    console screen rather than the expected file or device. To avoid this
    problem, use a variable to get input, and use that variable as the
    argument to the statement that will perform the output. In the following
    example output will always go to the screen:

    OPEN "Test1.dat" FOR INPUT AS #1
    OPEN "Test2.dat" FOR OUTPUT as #2
    PRINT #2, INPUT$(10, #1)

    The following rewritten example will send output to the proper place:

    OPEN "Test1.dat" FOR INPUT AS #1
    OPEN "Test2.dat" FOR OUTPUT AS #1
    TEXT$ = INPUT$(10, #1)
    PRINT #2, TEXT$

    Output is also sent to the screen if you use an argument that is a
    user-defined function that also performs input/output. You must not
    use user-defined functions that perform I/O as arguments to any of the
    preceding output statements.

    Debugging Custom Run-Time Modules with CodeView
    ------------------------------------------------
    You can debug custom run-time modules with CodeView only in protected mode
    (CVP.EXE). To do this you must prepare the run-time module as follows:

    1. Compile the source files using the CodeView options (/Zi or /Zd).

    2. Set the LINK environment variable to include the /CO (CodeView) option.

    3. Run the BUILDRTM utility to create the custom run-time module.

    After you run BUILDRTM, you should set the LINK environment variable back to
    its original setting.

    References to Version Numbers in Filenames
    ------------------------------------------
    The references to the filenames for the BASIC run-time libraries and run-
    time modules in the "BASIC Language Reference" and "Programmer's Guide"
    include the 7.0 version number, e.g. BRT70ENR.LIB. Change these to include
    the 7.1 version number, e.g. BRT71ENR.LIB.


    =======================================================================
    Part 2: Notes for "Microsoft BASIC Language Reference"
    =======================================================================

    Page	Section\Note
    ----	------------

    31-32	CALL (BASIC Procedures)
		-----------------------
		In version 7.1, BASIC supports the use of the BYVAL keyword
		in CALL, DECLARE, SUB, and FUNCTION statements for BASIC
		procedures. You can use BYVAL to pass parameters by value
		rather than by reference (the default). It is no longer
		necessary to enclose parameters in parentheses to emulate
		passing by value. For more information and an example of using
		BYVAL in BASIC procedures, see the online Help for the DECLARE
		statement (BASIC procedures). For specifics on using BYVAL with
		CALL, see the online Help for the CALL statement (BASIC
		procedures).

		Change the explanation of the example to state that the SUB
		procedure prints a message on the 24th line of the display.

     37 	CHAIN
		-----
		Under DOS 2.1, CHAIN will not work unless filespec$ provides a
		path. Also under DOS 2.1, if the run-time module is in the
		root directory, the root directory must be listed in the PATH
		environment variable.

     40 	CHDIR
		-----
		Refer to the online Help for CHDIR for a more appropriate
		example of CHDIR and MKDIR usage.

     61 	COMMAND$
		--------
		The fifth line from the top of the page is missing a pair of
		parentheses. The line should read:

		SUB Comline (NumArgs, Args$(), MaxArgs) STATIC

     68 	CONST
		-----
		You cannot use ASCII 01 and 02 in string constants if you are
		going to compile to an executable program. The compiler
		(BC.EXE) uses ASCII 1 and 2 internally to represent
		End-of-Statement and End-of-Line, respectively. You can,
		however, still use 1 and 2 within the QBX environment.

     84 	DATA
		----
		You cannot use ASCII 01 and 02 in data strings if
		you are going to compile to an executable program.
		See the preceding note for CONST.

     88 	DECLARE (BASIC Procedures)
		--------------------------
		In version 7.1, BASIC supports the use of the BYVAL keyword
		in CALL, DECLARE, SUB, and FUNCTION statements for BASIC
		procedures. See the online Help for this statement for more
		information.

     93 	DECLARE (Non-BASIC Procedures)
		------------------------------
		Reword the paragraph following the note to read:

		Be careful when using the SEG keyword or when passing parameters
		by near reference (no keyword), because BASIC may move variables
		in memory before the called routine begins execution. Anything
		in a CALL statement's argument list that causes memory movement
		may create problems. You can safely pass variables using SEG or
		near reference if the CALL statement's argument list contains
		only simple variables or arithmetic expressions. SEG cannot be
		used to pass arrays.

    116 	END
		---
		Syntax 2, END [n%], accepts a range of integers from -32,768
		through 32,767, inclusive.

     144	FUNCTION
		--------
		In version 7.1, BASIC supports the use of the BYVAL keyword
		in CALL, DECLARE, SUB, and FUNCTION statements for BASIC
		procedures. See the entry for page 31 for more information.

     147	GET (File I/O)
		--------------
		The argument for record number should be "recordnumber&" since
		it accepts a long-integer value.

    151 	GET (Graphics)
		--------------
		Screen modes 3 and 4 should be added to the table at the top of
		the page. Both modes use one bit per pixel per plane and have
		one plane.

    177 	KEY (Assignment)
		----------------
		The KEY n%, stringexpression$ syntax can also be used to
		create user-defined keys. Refer to the information on page 180
		for specific details on how this is accomplished.

		The description for the KEY ON statement in the table in the
		middle of the page should mention that only the first five
		characters of the soft-key string value are displayed for
		function key F10.

    180 	KEY (Event Trapping)
		--------------------
		The correct value for the Ctrl+Alt key combination is &H0C
		(12 decimal) for non-extended keyboards and &H8C for extended
		keyboards.

    181 	Keyboard Scan Codes
		-------------------
		Add the following to the Keyboard Scan Code chart:

		Key	Code
		---	----
		F11	 133
		F12	 134

    200 	LOCK...UNLOCK
		-------------
		The paragraph after the warning incorrectly states that BASIC
		may generate the error "Bad record number" if you attempt to
		access a file that is locked. BASIC will generate only the
		"Permission denied" error message in this case.

    238-239	OPEN COM
		--------
		Under OS/2, specifying DS0 to ignore the state of the Data Set
		Ready (DSR) line does not work properly. In this case, you
		will have to either not ignore the DSR line or you will have
		to jumper the DSR line to an active high-signal line. Refer to
		serial port information that specifically pertains to your
		hardware, and perform any modifications at your own risk.

		The range for the parity argument should include the value PE.
		Setting parity to PE enables parity error checking.

    261 	PLAY (Music)
		------------
		The remarks should note that the PLAY statement generates an
		"Illegal Function Call" error if you attempt to use the
		enharmonic notes C-, B+, E+ or F-.

    275 	PRINT USING
		-----------
		The syntax for the PRINT USING statement should be as follows:

		PRINT USING formatstring$; expressionlist [;]

		The PRINT USING statement does not use print zones. You cannot
		replace the optional semicolon with a comma.


    280 	PUT Statement (File I/O)
		------------------------
		The argument for record number should be "recordnumber&" since
		it accepts a long-integer value.

		The introduction to the example near the bottom of the page
		incorrectly states that "the following two statements write
		15 bytes to file number 1:" The example actually writes 17
		bytes to file number 1, since the first two bytes store
		the length of the string in BASIC.

    333 	SETMEM Function
		---------------
		The example shows using the C malloc() and free() functions to
		allocate and free memory. These will take the allocated memory
		away from the BASIC program until the program terminates. To be
		able to reallocate memory using SETMEM after a C procedure, you
		must use halloc() and hfree().

		The corrected C code for the SETMEM example is as follows:

		void far cfunc(bytes)
		int bytes;
		{
			char *halloc();
			char *workspace;

			/* Allocate working memory using amount BASIC freed. */
			workspace=halloc((unsigned) bytes, 1);

			/* Working space would be used here. */

			/* Free memory before returning to BASIC */
			hfree(workspace);
		}

    345 	SOUND
		-----
		The duration argument accepts any positive single-precision,
		floating-point value between 0 and 65,535, inclusive.

    368-375	StringAddress, StringAssign, StringLength, and StringRelease
		------------------------------------------------------------
		Sample MASM code for these entries includes lines like
		the following:

		extrn StringAddress: proc far
		call StringAddress

		In all cases, only "far" should appear after the colon
		in the extrn directive. In addition, all extrn
		directives should appear outside of any .code or .data
		segment directives. For example, the extrn directives
		in the sample code on page 369 should appear as
		follows:

		.model	medium, basic	; Use same model as BASIC.

		; Define external (BASIC library) procedures.
		extrn	StringAddress: far
		extrn	StringLength: far

		.code

		; Define procedure with one-word argument.
		...

    376 	SUB
		---
		In version 7.1, BASIC supports the use of the BYVAL keyword
		in CALL, DECLARE, SUB, and FUNCTION statements for BASIC
		procedures. See the online Help for this statement for more
		information.

    409 	WIDTH
		-----
		The Remarks state that the WIDTH #filenumber% form of the
		statement may be used with a file. This form of	the statement
		may only be used with a device opened as a file with the OPEN
		statement.

    425 	DATESERIAL
		----------
		Change the paragraph that begins "For each of the three
		arguments..." to read as follows:

		When converting specific dates, the ranges shown above for each
		of the arguments should be used. However, when using expressions
		to calculate date serial numbers for relative dates (e.g., a
		week from 10 Dec 89) each of the three arguments can be any
		valid integer as long as the resulting date serial number
		is between -53,688 and 65,380, inclusive. Date serial
		numbers outside this range generate the error message "Illegal
		function call."

    506 	Matrix Math Toolbox
		-------------------
		The first sentence of the Remarks for the MatSEqn FUNCTION
		should read:

		The MatSEQNtype% procedure solves a system of linear equations
		contained in a one-dimensional vector and in a square matrix;...

		The sentence beginning "The second matrix,..." should read:

		The second matrix is used to enter the vector constants for
		that system of simultaneous equations.

    518 	Fonts Toolbox
		-------------
		Change the first sentence in the second paragraph to read as
		follows:

		Nine font files are supplied:  Courier fonts in COURA.FON,
		COURB.FON, and COURE.FON, Helv fonts in HELVA.FON,
		HELVB.FON, and HELVE.FON, and Tms Rmn fonts in TMSRA.FON,
		TMSRB.FON and TMSRE.FON.

    523 	Fonts Toolbox
		-------------
		Add the following documentation for the GTextWindow before
		existing documentation for GetTotalFonts:

		GTextWindow SUB

		Action	    Retains the logical coordinates of window
			    boundaries. (See note below.)

		Syntax	    GTextWindow (x1, y1, x2, y2, Scrn%)

		Remarks     The GTextWindow procedure uses the following
			    arguments:

			    Argument	    Description
			    --------	    -----------

			       x1	    Integer containing the minimum
					    X value  (logical coordinate).

			       y1	    Integer containing the minimum
					    Y value.

			       x2	    Integer containing the maximum
					    X value.

			       y2	    Integer containing the maximum
					    Y value.

			      Scrn%	    Integer containing either cTRUE
					    (used with WINDOW SCREEN statement
					    to show window Y values increase
					    top to bottom) or cFALSE (used
					    with WINDOW statement to show
					    window Y values increase bottom to
					    top )

			    This procedure should be called after defining
			    VIEW and WINDOW and prior to calling OutGText.

			    To clear the current window, call this routine
			    with X1=X2 or Y1=Y2.

			    Note: The first call to OutGtext will work without
			    calling GTextWindow, however all subsequent calls
			    treat the coordinates as pixel coordinates of the
			    window; therefore, to retain the logical
			    coordinates call GTextWindow prior to calling
			    OutGText.

		See Also    See OutGText statement for more information.

    524 	Fonts Toolbox
		-------------
		Change the last line of the LoadFont% FUNCTION section to read:

		l% = LoadFont%("n1/n3/n6")

    549 	User Interface Toolbox
		----------------------

		Change "CommandKeySet" in the paragraph following the table to
		"ShortCutKeySet."

    550 	User Interface Toolbox
		----------------------
		Add the following line after the COMMON SHARED statement for
		GloStorage:

		COMMON SHARED /uitools/GloWindowStack() AS INTEGER

    586 	User Interface Toolbox
		----------------------
		The AttrBox SUB is incorrectly identified as being a procedure
		in GENERAL.BAS. Actually, AttrBox is found in UIASM.OBJ.

    601 	Keyboard Scan Codes and ASCII Character Codes
		---------------------------------------------

		Add the following to the table on page 601:

		   |	   |		|  ASCII or  |	ASCII or  |  ASCII or
		   |  Scan |  ASCII or	|  Extended  |	Extended  |  Extended
		Key|  Code |  Extended	|  with SHIFT|	with CTRL |  with ALT
		---|-------|------------|------------|------------|------------
		   |Dec|Hex|Dec|Hex|Char|Dec|Hex|Char|Dec|Hex|Char|Dec|Hex|Char
		---|---|---|---|---|----|---|---|----|---|---|----|---|---|----
		F11|133| 85|133| 85| NUL|135| 87| NUL|137| 89| NUL|139| 8B| NUL
		F12|134| 86|134| 86| NUL|136| 88| NUL|138| 8A| NUL|140| 8C| NUL
		---------------------------------------------------------------

    606 	BASIC Reserved Words
		--------------------
		Add PRESERVE to the list of BASIC reserved words.

    608-610	BASIC Compiler (BC)
		-------------------
		In version 7.1, the following options were added for the BASIC
		Compiler:

		/? or /Help	Displays compiler syntax and options.

		/FBr[filename]	Generates a file containing restricted program
				symbol information for use with the Programmer's
				WorkBench Source Browser. This information file
				has the name specified by the filename argument.
				If no name is specified, it has the same name as
				the source file with an .SBR filename extension.
				The file contains information about the
				definitions and references to all global
				symbols.

		/FBx[filename]	Generates a file containing extended program
				symbol information for use with the Programmer's
				WorkBench Source Browser. This information file
				has the name specified by the filename argument.
				If no name is specified, it has the same name as
				the source file with an .SBR filename extension.
				The file contains information about the
				definitions and references to all global and
				local symbols.

		The information for the /Z option applies to PWB, as well as to
		the M editor.

    611 	BUILDRTM Utility
		----------------
		The run-time argument to BUILDRTM should not include a path or
		a file extension.

    620 	NMAKE
		-----
		Change the description for the macrodefinitions argument to
		the following:

		An optional field that lists macro definitions for NMAKE to
		use. Macros can also be specified in the makefile. See the
		"Macro Definitions" section for details.

    631 	Table 4.1 Run-Time Error Codes
		------------------------------
		Add run-time error 89, "Insufficient ISAM buffers," to
		the table.

    639 	Database needs repair
		---------------------
		Change REPAIR.EXE to ISAMRPR.EXE.

    653 	Illegal Function Call
		---------------------
		This error may also occur if an error is trapped and corrected
		by the user between BEGINTRANS and COMMITTRANS statements. For
		example:

		ON ERROR GOTO TRAP
		OPEN "A:\FOO.MDB" FOR ISAM ...
		BEGINTRANS
		...
		  COMMITTRANS
		  PRINT "The TRANSACTION was SUCCESSFULLY committed"
		  ...
		END
		TRAP:
		IF ERL = 10 and ERR = 71 THEN
		  INPUT "Hit any key after the DRIVE door is CLOSED...";a$
		  RESUME
		END IF

		This example may cause an "Illegal function call" error on the
		COMMITTRANS statement if the transaction is interrupted by a
		"Disk not ready" error.

    656 	Run-Time Error Message - Insufficient ISAM buffers
		--------------------------------------------------
		There are not enough buffers to handle ISAM file processing.
		See the section "Estimating Minimum ISAM Buffer Values" in
		Chapter 10 of the "Programmer's Guide" for more information.

		ERR code: 89

    665 	Run-Time Error Message - Overflow
		----------------------------------
		In the first list item, change "40 indices" to "28 indexes."
		Remove the sentence that begins, "If there are 32 open
		tables..." This limitation is not correct and does not cause an
		Overflow error. See "Using Multiple Files: 'Relational'
		Databases" in Chapter 10 of the "Programmer's Guide" for
		information on open table limitations.

    684 	Link error L1083 - Cannot open run file
		---------------------------------------
		This error can also be caused by a read-only .EXE file of the
		same name as specified for the run file. Link will not be able
		to overwrite the read-only file.

    690 	Link error L2044 - Symbol multiply defined
		------------------------------------------
		This error may also appear in PWB when doing mixed-language
		programming with C. The error results from the C start-up
		code being linked in twice. To avoid the error, enter the
		appropriate BASIC library (for example, BRT71ENR.LIB
		for a program using the BASIC run-time, emulator math,
		near strings, and running in real mode) in the Additional
		libraries field of the Link Options dialog.


    =======================================================================
    Part 3: Notes for "Microsoft BASIC Programmer's Guide"
    =======================================================================

    Page	Section/Note
    ----	------------

     41 	Defining Procedures
		-------------------
		The DATA statement should be added to the list of statements
		and expressions not allowed within a procedure.

     56 	Passing Arguments by Value
		--------------------------
		This section describes how to emulate passing parameters
		by value in BASIC procedures by enclosing the parameter in
		parentheses. With version 7.1 you can define parameters
		to pass by value using the BYVAL keyword in the DECLARE
		statement for the procedure. For information on using BYVAL in
		BASIC procedures, see the online Help for the DECLARE statement
		(BASIC procedures).

     66 	Preserving Values of Local Variables with STATIC
		------------------------------------------------
		In the first example, a "Duplicate Definition" error will occur
		if the procedure SubProg2 is called more than once. To avoid
		this, rewrite the example as follows:

		SUB SubProg2
		    STATIC Array() AS INTEGER, FirstPassFlag%
		    IF FirstPassFlag% = 0 THEN
			DIM Array(-5 TO 5, 1 TO 25) AS INTEGER
			FirstPassFlag% = 1
		    END IF
		    ...
		END SUB

     68 	The Factorial Function
		----------------------
		In the example declaration of the Factorial# procedure, delete
		the STATIC keyword so the line appears as follows:

		FUNCTION Factorial# (N%)

    224 	Presentation Graphics
		---------------------
		Table 6.1 should indicate that the Presentation Graphics toolbox
		can only be used in real mode.

    250-251	AxisType
		--------
		The table listing the elements of the AxisType structure
		incorrectly lists the "Labelled" element. That element should
		be referred to as "Labeled."

		The description for the TicFormat element should state that you
		should set TicFormat to cNormFormat to display tick mark labels
		in decimal format.

    319 	ISAM Support
		------------
		The Note on this page indicates that ISAM is not supported
		under OS/2. With version 7.1 this restriction has been
		removed.

    341 	Restrictions on Indexing
		------------------------
		Add the following to the end of the first paragraph:

		The maximum number of indexes per table is 28.

    344 	Setting the Current Record by Position
		--------------------------------------
		Add the following just after the paragraph that begins,
		"The effect of any of the MOVEdest statements...":

		If you trap errors while using either a MOVENEXT or
		MOVEPREVIOUS ISAM statement, and an I/O error occurs (either
		57 or 71) on an index that is not the NULL index, you must
		resynchronize ISAM internal pointers before using another
		MOVENEXT or MOVEPREVIOUS statement. Synchronization can be
		done using any valid SETINDEX statement, either a MOVEFIRST or
		MOVELAST statement, or any of the SEEKxx (SEEKEQ, SEEKGE,
		SEEKGT) statements.

    345 	A Typical ISAM Program
		----------------------
		The command line used for invoking PROISAM for use with the
		BOOKLOOK program (shown halfway down the page) is stated as
		PROISAM /Ib:24. The efficiency of the ISAM has improved and
		the program can now be run in 640K conventional memory, with
		no expanded memory, with only 9 buffers: PROISAM /Ib:9. If you
		have EMS available, you need not specify the /Ib option.

    376 	Starting ISAM for Use in QBX - /Ie argument
		-------------------------------------------
		The explanation for the /Ie: option for the ISAM TSR states
		that "...In practice, you only need to specify /Ie if your
		program code (or a loaded Quick library) actually manages EMS
		memory." Although this is true, there may be other times when
		you want to reserve EMS for other uses. Having many ISAM
		buffers improves the performance of ISAM, but during program
		development ISAM performance may be less important than the
		size of your program's source code. For example, your program
		may only need 10-12 ISAM buffers to prevent an "Insufficient
		ISAM buffers" error at run time. If you have 1.2 megabytes of
		EMS available, you can use the /Ie: option to minimize the EMS
		used by ISAM buffers, reserving the rest for program source
		code. For example, if your program needs about 10 buffers, you
		can invoke the ISAM TSR with /Ie:900. This will provide several
		hundred K of EMS to be used for ISAM buffers. The rest will be
		reserved for QBX (and your program source code). Note that
		only program parts whose size is between 512 bytes and 16K are
		placed in EMS by QBX. You can check the sizes of your
		procedures and module-level code blocks by pressing F2 to see
		the View menu's SUBs dialog box.

    380 	Using ISAM with Compiled Programs
		---------------------------------
		The note labeled Important at the bottom of the page no longer
		applies in version 7.1 since you can specify additional options
		from the Make EXE dialog box when compiling within QBX.

    393 	The ISAMCVT Utility
		-------------------
		Add the following sentence just before the section entitled
		"The Repair Utility":

		No EMS driver can be loaded when running ISAMCVT.

    394 	Repair Utility
		--------------
		Replace the paragraph that begins, "When you use the ISAMREPR
		utility..." with the following:

		The ISAMREPR utility requires an additional 32K within your
		database to re-create the system indexes.  This adds a least
		32K to the size of the database. Do not run the utility if
		your disk does not have this amount of space available in the
		current working directory. Also note that the maximum size of
		a database is 128 megabytes. When you run the ISAMREPR
		utility, adding 32K to the size of an extremely large database
		may cause it to exceed the maximum allowed. ISAMREPR deletes
		inconsistent records in tables, but does not compact after
		doing so. Compacting a database is described in the next
		section.

    490-497	String-Processing Routines
		--------------------------
		Sample MASM code in this section includes lines like
		the following:

		extrn stringassign: proc far
		call stringassign

		In all cases, only "far" should appear after the colon in the
		extrn directive. In addition, all extrn directives should appear
		outside of any .CODE or .DATA segment directives. For an
		example, see the entry for pages 368-375 of the "BASIC Language
		Reference."

    494		BASIC Calling MASM
		------------------
		Change the first sentence in the paragraph following the
		"Important" note to read as follows:

		This MASM code uses the .MODEL directive which establishes
		compatible naming and calling conventions for BASIC, and
		it also uses simplified segment directives.

		Change the third-from-last line of the example to read as
		follows:

		C$ = AddString$(A$, LEN(A$), B$, LEN(B$))

    520 	Language Changes for Protected Mode
		-----------------------------------
		Table 14.1 indicates that all of the ISAM statements and
		functions are not supported in protected mode. With version
		7.1 that restriction has been removed.

    539 	Using Stub Files
		----------------
		The third paragraph on this page states that stub files can be
		used to create run-time modules. This is true for all stub files
		except OVLDOS21.OBJ and NOEMS.OBJ, which cannot be built into
		run-time modules. These stub files can be linked with programs
		using run-time modules, however.

    558-560	Using BC Command Options
		------------------------
		The first paragraph in this sections states that the slash (/)
		and the dash (-) can be used interchangeably to specify BC
		command-line options. This is true, but they cannot be
		intermixed. You must use either all slashes or all dashes
		in your command line.

		Add the following command options to the table: /?, /Help, /FBr,
		 /FBx. See the entry in this document for pages 608-610 of the
		"BASIC Language Reference" for descriptions of these options.
		The description of the /Z option applies to PWB, as well as to
		the M editor.

		When using the /D option with dynamic arrays, it is possible
		to produce incorrect results if you pass an array element to a
		procedure that changes the value of the element index. For
		example, the following works properly when compiled with all
		options except /D:

		CALL SubProc(a(i),i)
		PRINT a(i), i

		The following performs the same operations and works properly
		with all compile options including /D.

		j=i
		CALL SubProc(a(i),j)
		PRINT a(i), j

    561 	Using Floating-Point Options (/FPa and /FPi)
		--------------------------------------------
		The new CURRENCY data type is not currently supported in the
		alternate math library.

    576 	Options
		-------
		Replace /NOD with /NOE in the table at the top of the page.

    589 	Valid LINK Options
		------------------
		The /PACKCODE option can be abbreviated to /PACKC, not /PAC as
		shown in the table.

    595 	Ignoring Default Libraries (/NOD:filename)
		------------------------------------------
		Add the following to the paragraph that begins, "In general,
		higher-level languages..."

		For example, if you specify the /NOD option when linking a
		protect-mode BASIC program, you must explicitly specify the
		run-time library (BRT71xxP.LIB) and OS2.LIB in the libraries
		field of the LINK command line.

    599 	Specifying OS/2 Window Type
		---------------------------
		You cannot use the /D compiler option together with /PM:VIO.

    611 	Linking Stub Files
		------------------
		The first paragraph on this page states that you can link stub
		files with custom run-time modules. This is true for all stub
		files except OVLDOS21.OBJ and NOEMS.OBJ. These stub files can be
		linked with programs using run-time modules, however.

    624 	Mouse, Menu, and Window Libraries
		--------------------------------
		If you rebuild toolbox Quick libraries, files should be
		compiled with the /Ah option (allow dynamic arrays to be
		greater than 64K) if you intend to use QBX with the /Ea option
		(Put arrays into expanded memory).

		Also note that Table 19.1 applies to all toolbox files, not
		just MOUSE.BAS, MENU.BAS, and WINDOW.BAS.

    625 	Loading and Viewing Quick Libraries
		-----------------------------------
		QBX now requires that the BASIC source for any Quick library
		be compiled using the /Fs (far string) compiler option.
		Consequently, QBX will not permit you to load a Quick library
		file that has the near string features of earlier versions of
		QuickBASIC. If you encounter an "Invalid Format" error when
		attempting to load an older Quick library file, you should
		recompile the files using BC with the /Fs option.

		You may also encounter the "Invalid Format" error if you
		invoke QBX with a /Ea option (put arrays into expanded memory)
		and have not compiled the Quick library with /D (generate
		debugging code) or /Ah (allow dynamic arrays of records,
		fixed-length strings, and numeric data to be larger than 64K).

    636 	Description Blocks
		------------------
		The following information applies to the command component
		of description blocks:

		The first character after a dependency line in a description
		block must be a whitespace character, i.e., either a space or
		a tab. An error occurs if only a carriage return is used on a
		blank line.

    663 	OBJECTS Directive
		-----------------

		This section should note that you should not include the
		OVLDOS21.OBJ or NOEMS.OBJ stub files in the list of filenames
		after the OBJECTS directive.

    701 	Elementary Data Types - String
		------------------------------
		You cannot use ASCII 01 and 02 in strings constants if you
		are going to compile to an executable program. The compiler
		(BC.EXE) uses ASCII 1 and 2 internally to represent
		End-of-Statement and End-of-Line, respectively. You can,
		however, still use 1 and 2 within the QBX environment.

    702 	Elementary Data Types - Numeric
		-------------------------------
		A math coprocessor (80x87) handles rounding of extremely small
		numbers differently from the way numbers are rounded by the
		BASIC emulator math package. Because of this difference, some
		numbers that are properly displayed using a coprocessor are
		rounded and displayed as zero when using emulator math. The
		range of single-precision floating-point numbers that are
		properly displayed as input, using the emulator math package,
		is +/- 2.802597E-45. For double-precision floating-point
		numbers, the range is +/- 4.94065645841247D-324.

		In Table B.1, the description for double-precision floating
		point numbers should say that they are accurate to 15
		digits. Also, the upper and lower ranges with or without
		the alternate math library should be +/-1.79769313486231D308
		rather than +/-1.797693134862315D308 for regular math and
		+/-1.79769313486232D308 for alternate math.

    707 	Data Types in ISAM Files
		------------------------
		In Table B.2, the description for the DOUBLE data type
		should list the upper and lower ranges as
		+/-1.79769313486231D308 rather than +/-1.797693134862315D308.
003 Quick Basic V4.50 5×DD
README.DOC [展开]
		    "README.DOC" File
       Release Notes for MICROSOFT(R) QuickBASIC Version 4.5 for
       IBM(R) Personal Computers and Compatibles

	     (C) Copyright Microsoft Corporation, 1988

THIS FILE CONTAINS IMPORTANT INFORMATION CONCERNING VERSION 4.5	OF
MICROSOFT(R) QuickBASIC. PLEASE	READ THE ENTIRE	FILE BEFORE USING
QuickBASIC.

This file has seven parts:

  PART	     CONTENTS


  1	     Information about additions and changes to	the
	     Learning to Use Microsoft QuickBASIC

  2	     Information about additions and changes to	the
	     manual Programming	in BASIC

  3	     Using your	Mouse with QuickBASIC

  4	     Supplementary information on mixed-language programming

  5	     Using Btrieve with	QuickBASIC

  6	     Using the DOS 3.2 patch for math accuracy

  7	     Miscellaneous information about using QuickBASIC

===< Part 1: Learning to Use Microsoft QuickBASIC >

No entries yet for this	part

===< Part 2: Programming in BASIC >

No entries yet for this	part

===< Part 3: Using Your	Mouse with QuickBASIC >

--------------<	New Mouse Driver for Use with QuickBASIC >------------------

	QuickBASIC Version 4.5 can be used with	any mouse that is 100%
	compatible with	the Microsoft Mouse. However, you must use a
	Microsoft Mouse	driver Version 6.00 or later. Earlier versions may
	cause unpredictable behavior when used with QuickBASIC.	MOUSE.COM,
	Version	6.24 is	supplied with QuickBASIC Version 4.5.

	Especially if you are writing programs that use	the mouse, you
	should use the supplied	version	of the mouse driver when working in
	QuickBASIC. Previous versions have included MOUSE.SYS, which is
	installed by including the line	DEVICE=MOUSE.SYS in your CONFIG.SYS
	file. This version of QuickBASIC includes MOUSE.COM, which is not
	installed via CONFIG.SYS. To install MOUSE.COM,	just type MOUSE	at
	the DOS	prompt.	To include MOUSE.COM automatically when	your machine
	boots, make sure MOUSE.COM is in your search path, then	put the	line

		MOUSE

	in your	AUTOEXEC.BAT file. To free up memory, you can remove the
	mouse driver at	any time by typing MOUSE OFF at	the DOS	prompt.
	This will restore between 9K and 10.5K of memory with Version 6.11.

--------< Using	Mouse Function Calls from QuickBASIC Programs >------------

	If you are programming for the Microsoft Mouse,	you should obtain
	the Microsoft Mouse Programmer's Reference Guide and the library
	MOUSE.LIB that comes with it. (These are not included in QuickBASIC
	or Mouse package and must be ordered separately). Most of the
	information in the Mouse Programmer's Reference Guide applies
	directly to QuickBASIC Version 4.5. However, the following additional
	restrictions must be observed:

	Certain	Mouse function calls (Functions	9 & 16)	require	you to set
	up an integer array and	pass the address of the	array to the mouse
	driver.	For previous versions, the only	restriction on this array
	was that it had	to be $STATIC (the default array type).	In QuickBASIC
	Version	4.5, however, the array	also must be in	a COMMON block if you
	will be	making the Mouse function call from within the QuickBASIC
	environment.  In addition, it is recommended that the support code
	for the	Mouse call be in a Quick library or linked into	the
	executable file	when making Mouse function calls from QuickBASIC.

	To produce a Quick library for using Mouse function calls from
	within the QuickBASIC environment, use the following command line
	(produces MOUSE.QLB):

		LINK MOUSE.LIB/QU,MOUSE.QLB,,BQLB40.LIB/NOE;

	An example from	PIANO.BAS (included with the Microsoft Mouse
	Programmer's Reference) for using Mouse function call 9:

		DEFINT A-Z
		DECLARE	SUB MOUSE (M1, M2, M3, M4)
		DIM Cursor(15, 1)
		COMMON Cursor() 'Ensures array data is in DGROUP
		.
		.  (set	up Cursor() for	mouse cursor shape desired)
		.
		M1 = 9:	M2 = 6:	M3 = 0
		CALL MOUSE(M1, M2, M3, VARPTR(Cursor(0,	0)))

	In addition to the above, note that Mouse function calls 21-23
	require	dynamically allocated storage out of the home data segment.
	The recommended	way to do this is to allocate space in a dynamic
	string variable	based on the return value from function	call 21,
	using the STRING$ or SPACE$ function. Then use VARPTR on this string
	variable just prior to calling Mouse function call 22 or 23.

===< Part 4: Supplementary Information on Mixed-Language Programming >

--------< Linking from within QuickC or	with QCL >--------------------------

	Microsoft QuickC and the QCL command both set the /NOI linker
	by default. Therefore, you should not link from	within QuickC, or
	with QCL, when your program contains modules written in	a case-
	insensitive language such as BASIC. Use	LINK to	link your program
	from the command line.

--------< Pascal and Fortran Modules in	QuickBASIC Programs >---------------

	Modules	compiled with Microsoft	Pascal or Fortran can be linked	with
	BASIC programs,	as described in	the Microsoft Mixed-Language
	Programming Guide. They	can also be incorporated in Quick libraries.
	However, QuickBASIC programs containing	code compiled with Microsoft
	Pascal must allocate at	least 2K near-heap space for Pascal. This can
	be done	by using the DIM statement to allocate a static	array of 2K or
	greater	in the NMALLOC named common block, for example,	as follows:

	DIM name%(2048)
	COMMON SHARED /NMALLOC/	name%()

	The Pascal run-time assumes it always has at least 2K of near-heap
	space available. If the	Pascal code cannot allocate the	required
	space, QuickBASIC may crash. This applies to Pascal code in Quick
	libraries as well as Pascal code linked	into executable	files. The
	situation is similar for Fortran I/O, which also requires near
	buffer space, and which	can be provided	by the same means as the
	Pascal near malloc space.

--------< STATIC Array Allocation >---------------------------------------

	If you are writing assembly-language modules for use in	QuickBASIC
	programs, see Section 2.3.3, "Variable Storage Allocation," in the
	BASIC Language Reference. Assembly-language code should	not assume
	data is	in a particular	segment. To avoid problems, pass data using
	the SEG	or CALLS keywords, or use FAR pointers.	Alternatively, you
	can declare all	arrays dynamic (still using far	pointers) since
	dynamic	arrays are handled identically by BC and within	QuickBASIC.

--------< Quick	Libraries with Leading Zeros in	the First Code Segment >--

	A Quick	library	containing leading zeros in the	first CODE segment
	is invalid, causing the	message "Error in loading file <name> -
	Invalid	format" when you try to load it in QuickBASIC. For example,
	this can occur if an assembly-language routine puts data that is
	initialized to zero in the first CODE segment, and it is subsequently
	listed first on	the LINK command line when you make a Quick library.
	If you have this problem, do either of the following:
	(1) link with a	BASIC module first on the LINK command line, or
	(2) make sure that, in whatever	module comes first on the LINK
	command	line, the first	code segment starts with a non-zero byte.

--------< References to	DGROUP in Extended Run-time Modules >-------------

	For mixed-language programs that use the CHAIN command,	you should
	make sure that any code	built into an extended run-time	module does not
	contain	any references to DGROUP. (The CHAIN command causes DGROUP to
	move, but does not update references to	DGROUP.) This rule applies
	only to	mixed-language programs; because BASIC routines	never refer
	to DGROUP, you can ignore this caution for programs written entirely
	in BASIC.

	To avoid this problem, you can use the value of	SS, since BASIC	always
	assumes	that SS	coincides with DGROUP.

===< Part 5: Using Btrieve >

-------------------< Using Btrieve in OS/2 Protected Mode >--------------------

	In OS/2	protected mode,	a BASIC	program	that uses Btrieve must do a
	Btrieve	reset call (function 28) before	executing the CHAIN statement.
	The program must also reopen all Btrieve files when the	destination of
	the CHAIN starts to run.

--------------------< Using Btrieve with QuickBASIC >--------------------------

	If you use Btrieve with	QuickBASIC, you	must make a small change to
	your programs for QuickBASIC Version 4.5. Currently your programs
	contain	a statement that obtains the address of	the field buffer for
	an open	file. For example:

	    OPEN "NUL" AS #1
	    FIELD #1, 20 AS CITY$, 10 AS STATE$
	    FCB.ADDR% =	VARPTR(#1)  'This statement obtains the address

	In QuickBASIC Version 4.5, you should change the indicated statement
	to return the address of the first variable in your field buffer minus
	a constant, as follows:

	    OPEN "NUL" AS #1
	    FIELD #1, 20 AS CITY$, 10 AS STATE$
	    FCB.ADDR% =	SADD(CITY$) - 188 ' CITY$ is the first field
					  ' buffer variable

	The following example shows how	to obtain the same address for a
	user-defined type:

	    TYPE ADDRESS
		CITY AS	STRING * 20
		STATE AS STRING	* 10
	    END	TYPE

	    DIM	ADD1 AS	ADDRESS

	    FCB.ADDR% =	VARPTR(ADD1) - 188
	    ' or, you can use FCB.ADDR% = VARPTR(ADD1.CITY) - 188

	Your programs should function correctly	with Btrieve with this change.

===< Part 6: DOS 3.20 Patch >

This information is important only if your system has ALL of the following
characteristics:

    1.	Uses MS-DOS version 3.20
    2.	Boots from a hard disk drive
    3.	Has a math coprocessor (for instance, an 8087 chip)
    4.	Runs programs that use floating-point math

For systems that satisfy all of	the preceding conditions, you may be able to
eliminate floating-point math problems by installing a small patch in DOS. If
you are	not sure whether you need the patch, perform the following steps:

    1.	Copy the program PATCH87.EXE (included in this release)	to the root
	directory of your hard-disk drive.

    2.	Reboot your system from	the hard disk, and DO NOT PERFORM ANY FLOPPY-
	DISK OPERATIONS	after rebooting. It is very important that you avoid
	floppy-disk I/O	after rebooting, since that will affect	the reliability
	of the diagnostic test that you	are about to perform.

    3.	If necessary, use the CD command to move to the	root directory of your
	hard-disk drive.

    4.	Run the	PATCH87.EXE program by entering	this command at	the DOS	prompt:

	    PATCH87

    5.	The program performs a diagnostic test on your system to determine
	whether	it needs the DOS patch,	and if the patch is needed,
	whether	the patch can be installed successfully. If the	program	tells
	you that you need to install the DOS patch, and	that it	can be done,
	follow the procedure described in the next section.

    NOTE: The floating-point problem has been eliminated in versions of
    MS-DOS higher than 3.20. This includes MS-DOS versions 3.21	and 3.30.

If you performed the preceding test and	determined that	you should install the
DOS patch on your system, perform the following	steps:

    1.	Format a blank floppy disk. (Do	NOT use	the /s formatting option to
	transfer system	files to the disk.)

    2.	Use the	SYS command to copy IO.SYS and MSDOS.SYS from the root
	directory of your hard disk to the new floppy disk. For	instance, if
	you boot from drive C:,	you would enter	the following commands:

	    C:
	    SYS	A:

    3.	Use the	COPY command to	copy COMMAND.COM and SYS.COM to	the same
	floppy disk.

    4.	Use the	COPY command to	copy the program PATCH87.EXE (included in this
	release) to the	same floppy disk.

    5.	Change the current drive and directory to the floppy disk, by entering
	the following command:

	    A:

    7.	Install	the DOS	patch by entering the following	command:

	    PATCH87 /F

	WARNING: If you	experience any disk errors during steps	2 through 7,
	do NOT proceed with step 8. Reboot from	your hard disk and repeat the
	entire process.

    8.	If you have not	experienced any	errors,	use the	SYS command to transfer
	the files IO.SYS and MSDOS.SYS from the	floppy disk back to your hard
	disk. For instance, if the boot	directory of your system is the	root
	directory of drive C:, you would enter the following command at	the DOS
	prompt:

	    A:
	    SYS	C:

    9.	The DOS	patch has been installed. Reboot the system.

===< Part 7: Miscellaneous Information About Using QuickBASIC >

----------------------<	Using FIXSHIFT.COM Utility >-----------------------

	Some keyboards have an extra set of DIRECTION (i.e. arrow) keys, in
	addition to those on the numeric keypad. A bug in the ROM BIOS of
	some machines with these keyboards can interfere with the QuickBASIC
  editor. The Utilities	2 disk includes	a program, FIXSHIFT.COM, that
  fixes	this bug. If you have such a keyboard, run this	program	by typing
  FIXSHIFT. If your machine does not have the bug, FIXSHIFT displays a
  message telling you so. Otherwise FIXSHIFT prompts you for the proper
  actions. FIXSHIFT takes about	450 bytes of memory. Except for	the BIOS
  bug, it has no effect	on other programs you run.

----------------------<	Note on	VGA Display Adapter >----------------------

	If you install an IBM (R) Personal System/2 (TM) Video Graphics
	Array display adapter (VGA) in a non-PS/2 machine, the VGA adapter
	should be the only adapter in the system, and you should not use
	monochrome modes (SCREEN 10) if	you have a color monitor. Similarly,
	you should not use color modes (SCREEN 1, 2, 7,	8, 9, 11, 12, 13) if
	you have a monochrome monitor.

-------------------< Note on Using QuickBASIC with DOS 2.1 >----------------

	To use QuickBASIC with a two-floppy system under DOS 2.1, you must
	put a copy of COMMAND.COM on each disk containing an executable
	file ( a file with the .EXE extension).

-------------< PTR86, LOF, Naming SUB procedures and variables >------------

	PTR86 is no longer supported. Use VARSEG and VARPTR instead.
	Also, when used	with a communications device, LOF now returns the
	amount of space	remaining (in bytes) in	the output buffer. In
	previous versions this was returned in the input buffer. Also, note
	that a variable	and SUB	procedure could	have the same name in
	previous versions. In Version 4.5, this	causes a "Duplicate
	definition" error message.
004 汉化Quick Basic 2×HD
需台湾汉字支持
README.DOC [展开]
		Microsoft  QuickBASIC 4.50 中文版

   Mircrosoft (R) QuickBASIC (C) Copyright Microsoft Corporation, 1985 - 1991


			 [ README.DOC 檔案內容 ]


   此份檔案提供使用者有關 QuickBASIC 4.50 中文版的技術文件資料,
   請在使用 QuickBASIC 以前,先參閱下面的說明 :


(一).	QuickBASIC 的作業系統需求

(二).	QuickBASIC 的硬體需求

(三).	如何了解 QuickBASIC 中文版內的新增與修訂規格

(四).	使用 QuickBASIC 中文版應注意的事項

(五).	在 "倚天" 中文系統上使用 QuickBASIC 時應注意的事項

(六).	在 "零壹" 中文系統上使用 QuickBASIC 時應注意的事項

(七).	使用浮點算術運算(floating-point arithmetic)時應注意的事項

(八).	如何移植不同版本的 Quick Library 到中文版中繼續使用

(九).	使用混合語言程式(mixed-language programming)時的補充資料

(十).	FIXSHIFT.COM 程式檔的使用




(一). QuickBASIC 作業系統需求 :


 請於 MS-DOS 或 PC-DOS 英文版 3.30 以及 3.30 以上,在下列有提供與 "CMEX"
 相容的中文系統上使用 QuickBASIC, 並且該中文系統必須採用以 BIG-5 中文碼
 為準:


 (1). 倚天中文系統版本 2.01 或 2.01 以上,包括 :

      "飛碟四號" 中文碟
      "光電二號" 中文卡
      "閃電四號" 中文卡
      "彩虹一號" 中文卡


 (2). 零壹中文系統版本 4.0 或 4.0 以上,包括 :

      "彩虹精靈" 中文碟
      "風神 1601" 中文卡
      "彩翼 1601" 中文卡






(二). QuickBASIC 硬體需求 :

     (a). 主機需求 ----

	  IBM 個人電腦或與 IBM-PC 相容的電腦,具有一個硬碟與一個軟碟配備;
	  除了 640 K位元組(bytes)的主記憶體以外,假如能夠再提供擴充記憶體
	  (Expanded Memory),則可以產生最佳的使用效果(請參閱第 (2) 項說明)。

	  (1). 基本的硬碟空間需求 :

	       請保留 2 MB 位元組空間,以供設定程式(SETUP.EXE)安裝
	       QuickBASIC 磁片內的檔案到硬碟。

	  (2). 額外的硬碟或擴充記憶體空間的需求 :

	       QuickBASIC 每一次執行使用者程式以後,在回到 QuickBASIC
	       工作環境之前,會將當時程式輸出畫面儲存起來,以提供 [V/景象]
	       功能表內的 "U/輸出畫面" 命令,可以再回溯觀看程式輸出畫面;
	       或者由程式暫停處繼續執行程式。

	       QuickBASIC 儲存程式輸出畫面的方式是 :

	       ** 對於 "本文螢幕模式"(Text Screen Mode)的程式輸出畫面,
		  是直接儲存在主記憶體,不會使用硬碟或擴充記憶體的空間。

	       ** 對於 "繪圖螢幕模式"(Graphic Screen Mode)的程式輸出畫面,
		  假如擴充記憶體有足夠空間,就儲存到擴充記憶體內; 假如
		  擴充記憶體空間不夠或者根本沒有配置時,則儲存到硬碟內。
		  由於擴充記憶體的存取速度遠比硬碟快,為了執行上的效率,
		  我們建議使用者能預留擴充記憶體空間供 QuickBASIC 使用。

		  擴充記憶體的空間需求 :

		  -- VGA 顯示卡的繪圖螢幕模式 : 144 K 位元組
		  -- EGA 顯示卡的繪圖螢幕模式 : 128 K 位元組
		  -- Hercules(MGA) 顯示卡的繪圖螢幕模式 : 32 K 位元組

		  硬碟的空間需求 :

		  -- 沒有固定的數目,原則上請參照 "擴充記憶體的空間需求",
		     因為 QuickBASIC 會將畫面資料以壓縮方式儲存到硬碟內,
		     所以實際使用的空間會比預留的空間來的小。

		     QuickBASIC 會在根目錄(root directory)建立一個暫存檔
		     (QB45XXXX.TMP)以儲存程式輸出畫面資料,在 QuickBASIC
		     正常結束時,此份檔案會自動被刪除。



     (b). 顯示介面  ----

	  ** 可以採用 Hercules(MGA), EGA 或 VGA 的任何一種顯示卡。

	  ** 下面是 CSI(中文系統輸出入界面)有關視訊(VIDEO)方面的規格表。

	     在前面 " QuickBASIC 作業系統需求" 所介紹的中文系統環境,
	     有些 "繪圖緩衝區" 的起始位置(例如 : 倚天 "飛碟四號" 中文碟
	     的 VGA/EGA 彩色顯示區) 與 CSI 規格有差異, QuickBASIC 可以
	     經由 CSI 中的 "查詢系統資訊" (Query System Information)功能
	     取得該起始位置值。

	     "本文緩衝區", "繪圖緩衝區" 與 "視訊顯示區" 欄是以 "十六進制"
	     值表示。

+--------------------------------------------------------------------------+
|	       |  MGA	 |   MGA   |  VGA    |	 VGA   |  EGA	 |   EGA   |
|	       |  本文	 |   繪圖  |  本文   |	 繪圖  |  本文	 |   繪圖  |
|	       | (Text)  |(Graphic)| (Text)  |(Graphic)| (Text)  |(Graphic)|
+--------------+---------+---------+---------+---------+---------+---------+
|  螢幕模式    |   07	 |   71    |   03    |	 82    |   03	 |   80    |
| Screen Mode  |	 |	   |	     |	       |	 |	   |
+----------------------------------+-------------------+-------------------+
| 本文緩衝區   |B000:0000|	   |B800:0000|	       |B800:0000|	   |
| Text Buffer  |	 |	   |	     |	       |	 |	   |
+----------------------------------+-------------------+-------------------+
| 繪圖緩衝區   |	 |B800:0000|	     |A000:0000|	 |A000:0000|
|Graphic Buffer|	 |	   |	     |	       |	 |	   |
+----------------------------------+-------------------+-------------------+
| 視訊顯示區   |B800:0000|B800:0000|A000:0000|A000:0000|A000:0000|A000:0000|
| Video Buffer |	 |	   |	     |	       |	 |	   |
+--------------+-------------------+-------------------+-------------------+
|   頁數       |    01	 |   01    |	01   |	   01  |    01	 |     01  |
+--------------+-------------------+-------------------+-------------------+
| 螢幕解析度   |     640 x 400	   |	640 x 480      |     640 x 400	   |
|橫座標x縱座標 |		   |		       |		   |
+----------------------------------+-------------------+-------------------+
|  繪圖區      | 640 x (0 ~ 374)   | 640 x (0 ~ 449)   | 640 x (0 ~ 374)   |
|橫座標x縱座標 |		   |		       |		   |
+----------------------------------+-------------------+-------------------+
| 系統區       | 640 x (375 ~ 399) | 640 x (450 ~ 479) | 640 x (375 ~ 399) |
| (狀態列)     |		   |		       |		   |
|橫座標x縱座標 |		   |		       |		   |
+--------------+---------------------------------------+-------------------+
|   字框       | 英文字 : 08 x 15  | 英文字 : 08 x 18  | 英文字 : 08 x 15  |
|(寬度 x 高度) | 中文字 : 16 x 15  | 中文字 : 16 x 18  | 中文字 : 16 x 15  |
+--------------+-------------------+-------------------+-------------------+
| 列數 x 行數  | 英文字 : 25 x 80  | 英文字 : 25 x 80  | 英文字 : 25 x 80  |
|(Row x Column)| 中文字 : 25 x 40  | 中文字 : 25 x 40  | 中文字 : 25 x 40  |
+--------------+-------------------+-------------------+-------------------+
|顏色屬性暫存器|     沒有提供	   |	  16 個        |	16 個	   |
|Color Attribute		   |		       |		   |
+--------------+-------------------+-------------------+-------------------+
|  顏色範圍    |     沒有提供	   |	256 K 種       |	64 種	   |
| Color Number |		   |		       |		   |
+------------------------------------------------------+-------------------+



     (c). 主記憶體  ----

	  在中文系統環境下,除了能夠載入 QuickBASIC 主程式 "QB.EXE" 以外,
	  還需要再提供 64K 位元組空間; 所以我們給使用者的建議是: 原則上
	  需提供 384K 位元組以上的空間供 QuickBASIC 工作環境使用; 假如
	  執行 BASIC 程式中,還有 "主記憶體空間不夠" 或 "字串空間不足"
	  ...等等時,請試圖再空出更多的主記憶體空間,使 QuickBASIC 能產生
	  最佳的執行效果。

	  為了能有更多的主記憶體空間,在安裝中文系統時 :

	  ** 請儘可能將中文字型全部存放在硬碟內。

	  ** 請選擇您在使用上最方便的一種中文輸入法就可以了,而不要將
	     全部的輸入法都安裝在主記憶體內。

	  ** 有關進一步的技術問題,請與提供中文系統程式的公司詢問。



     (d). 週邊輔助工具 ---- 滑鼠。

	  (d-1) Microsoft 英文版滑鼠驅動程式(mouse driver programs)
		無法在符合 CSI 規格的中文系統中使用,目前 Microsoft
		公司有提供一套可以使用在英文系統與 CSI 中文系統的
		中文版滑鼠套裝軟體,在英文系統中使用中文版滑鼠驅動
		程式時,就與英文版的滑鼠功能相同。使用者請在英文系統
		中執行該套裝軟體磁片內的 MSETUP.EXE 程式將中文版
		滑鼠驅動程式安裝到硬碟,然後在啟動中文系統以後,啟動
		中文版滑鼠驅動程式,就可以在 QuickBASIC 工作環境中
		使用滑鼠。

		中文版滑鼠驅動程式檔名是 :

		***  EGA.COM (僅使用在 EGA 或 VGA 顯示卡上)
		***  MOUSE.COM

		由於 EGA.SYS 與 MOUSE.SYS 被啟動以後,無法像 EGA.COM
		與 MOUSE.COM 可以被移去(例如 : 執行 MOUSE OFF 命令),
		所以中文版滑鼠套裝軟體內沒有提供 EGA.SYS 與 MOUSE.SYS
		程式。


		下面介紹如何啟動中文系統與中文版滑鼠驅動程式,而可以在
		QuickBASIC 工作環境中使用滑鼠的步驟:

		    這是在 DOS 命令列所輸入的命令 :

		    C:>ET16V-16     ; 注意: 必需先啟動中文系統。
				    ; 這是使用 VGA 顯示卡時,執行
				    ; ET16V-16.COM 進入倚天中文系統的範例。

		    C:>EGA	    ; 使用 MGA 顯示卡時,可以不要執行這條命令。
				    ; 使用 EGA 或 VGA 顯示卡時,則必需在
				    ; MOUSE.COM 以前,先執行此命令。

		    C:>MOUSE
		    C:>QB	    ; 執行 QB.EXE 以後,就可以在 QuickBASIC
				    ; 工作環境中使用滑鼠。


		    [提示]: 或者,可以將前三條命令加在 "AUTOEXEC.BAT"
			    批次檔內,因為每一次開機時,系統會自動執行
			    "AUTOEXEC.BAT" 檔中所有的命令,而滑鼠驅動
			    程式就在當時順利的被啟動。





		下面介紹如何移去中文版滑鼠驅動程式與中文系統的步驟:

		    當結束 QuickBASIC 程式以後,在 DOS 命令列所輸入的命令:

		    C:>MOUSE OFF    ; 注意: 有使用 EGA 或 VGA 顯示卡時,
				    ;	    必需先移去 MOUSE.COM。
		    C:>EGA OFF
		    C:>ETCTL/C:IQ   ; 最後,移去中文系統。
				    ; 這是移去倚天中文系統的範例。


		    [提示]: 也可以將這些命令加在 "AUTOEXEC.BAT" 檔內。



		使用中文版滑鼠驅動程式時,其他應注意的事項 :

		    ** 請不要混合使用中文版與英文版的滑鼠驅動程式。

		    ** 滑鼠驅動程式只需在每一次開機以後,被啟動一次就
		       可以了;啟動以前請記得要將滑鼠插在電腦主機上。

		    ** 輸入滑鼠驅動程式檔名時,請記得要同時輸入存放滑鼠
		       驅動程式的正確路徑名稱。

		    ** 有關進一步了解滑鼠功能的詳細內容,請參閱 "中文版
		       滑鼠套裝軟體" 磁片內的 "MREADME.DOC" 檔案。





	  (d-2). QuickBASIC 套裝軟體內也有提供 Microsoft 中文版滑鼠
		 驅動程式,由於程式檔以壓縮方式儲存,需由 SETUP.EXE
		 還原以後才可以使用;並且 SETUP.EXE 是 "有條件" 的
		 安裝給 QuickBASIC 中文版使用者。其安裝步驟是:

		 (i). 先檢查使用者個人電腦上目前是否已經有啟動
		      Microsoft 公司的滑鼠驅動程式? 假如有時,才會
		      將中文版滑鼠驅動程式還原,並安裝到硬碟內。

		(ii). 在安裝到硬碟以後,為了方便將來啟動中文版滑鼠驅動
		      程式, SETUP.EXE 會檢查目前硬碟內的 AUTOEXEC.BAT
		      與 CONFIG.SYS 中是否有啟動滑鼠驅動程式的命令?
		      假如有時:

		      ** 對於 AUTOEXEC.BAT 檔內的動滑鼠驅動程式命令,
			 會更改成為存放中文版滑鼠驅動程式的正確路徑
			 名稱(假如目前使用 EGA 或 VGA 顯示卡,並且
			 沒有 EGA.COM 命令時,會在 MOUSE.COM 命令前
			 自動加入 EGA.COM 命令); 而原來的 AUTOEXEC.BAT
			 會改名為 AUTOEXEC.BAK。

		      ** 對於 CONFIG.SYS 檔,則會刪除滑鼠驅動程式(EGA.SYS
			 或 MOUSE.SYS)命令; 而原來的 CONFIG.SYS 會改名為
			 CONFIG.BAK。


		 在結束 SETUP.EXE 程式以後,請使用者重新啟動系統(REBOOT),
		 再遵照 (d-1) 一節所描述的 -- 啟動中文系統與中文版滑鼠
		 驅動程式的步驟,就可以在 QuickBASIC 工作環境中使用滑鼠。



(三). 如何了解 QuickBASIC 中文版新增與修訂的規格 :

      (1). 請在下面的二個地方了解 "新增與修訂的規格" 以及 "使用中文版
	   時應注意的事項" :

	   *** QuickBASIC 的 BASIC 程式設計使用手冊中的 "附錄 J" 一章。

	   *** QuickBASIC 工作環境中, [H/援助] 功能表的 "C/內容" 命令
	       中,有提供 "中文版使用時應注意的事項" 一項。
	       另外 [H/援助] 功能表內的 "I/索引" 命令,對於中文版新增與
	       修訂的函數或敘述名稱左邊,有使用 "(新)" 或 "(修)" 記號來
	       標明。


      (2). 有關 QuickBASIC 與 BASIC 直譯器(BASICA 和 GW-BASIC) 之間的
	   差異,請參閱 QuickBASIC 的 BASIC 程式設計使用手冊 "附錄 A"
	   一章,有詳細說明。
	   或者線上援助功能中,在每一個函數或敘述的 <細節> 援助視窗中,
	   也有說明。


      (3). 由於 QuickBASIC 中文版採用 BIG-5 碼,如果使用者現有的 BASIC
	   程式要移植到 QuickBASIC 繼續使用,對於程式中有使用中文碼的
	   部份,請根據實際需要,先在中文系統下執行轉碼程式轉成 BIG-5 碼
	   以後,才可以在 QuickBASIC 環境中顯示正確的中文字型。

	   轉碼前,請先將現有的 BASIC 程式以 "TEXT FILE" 格式儲存。




(四). 使用 QuickBASIC 中文版應注意的事項 :

      (1). QB.FNT 檔案的使用 :

	   原英文版使用的表格圖形碼(Semi-Graphic Code,&H80 - &HFF),
	   在目前中文版本是當成中文碼的高位元組(High-Byte)使用,所以
	   在 BASIC 程式中請改用中文符號字元來顯示。

	   由於 QuickBASIC 工作環境中功能表(Menu),交談框(Dialog Boxes),
	   視窗(Windows)的顯示,需要使用英文表格圖形(例如: ┌,┐,└,┘,
	   ─,│); 所以 QuickBASIC 自己使用一組英文字型檔(QB.FNT, 字型
	   橫寬=8,縱高=15),前面的 32 個字型(ASCII 碼: &H00 ~ &H1F)可以
	   顯示表格圖形。QuickBASIC 一開始會載入 QB.FNT, 透過中文系統中
	   的 CSI 功能來安裝並且使用這組新的英文字型。對於 BASIC 程式
	   字串(string)內有包含 00H ~ 1FH 的 ASCII 碼,雖然在 QuickBASIC
	   工作環境中是顯示 QB.FNT 字型,但在執行程式時, QuickBASIC 會
	   還原中文系統原來的英文字型組,所以不會影響程式執行時的正常顯示。

	   注意: QB.FNT 必須與 QB.EXE 檔存放在同一個子目錄內。


      (2). 在 VAL 函數中,如果字串參數第一個字元為中文數字字元,
	   就無法得出正確的輸出結果,請參閱下面的範例:

	   A$ = "123.45"        '第一個字元為中文數字字元
	   B$ = "123.45”        '第一個字元為英文數字字元
	   C$ = "123.45"              '全部為英文數字字元
	   D$ = "&Habc”     '第一個字元為代表十六進制值的
				      '前置符號(中文字元)
	   PRINT VAL(A$)
	   PRINT VAL(B$)
	   PRINT VAL(C$)
	   PRINT VAL(D$)


	   輸出結果 :	  0
			 123.45
			 123.45
			 2748

	    [解決方法] : 將字串參數先使用 CSNG$ 函數轉換成英文字元,
			 就可以在 VAL 函數得到正確的輸出結果。




      (3). 請小心使用 SCREEN 敘述 :

	   (3)-1. 在 QuickBASIC 工作環境中偵錯(DEBUG) BASIC 程式,
		  於程式暫停期間(例如:停在所設定的程式中斷點上),
		  對於 "已經執行過的 SCREEN 敘述",若還需要再修改
		  螢幕模式參數值時,應小心更正。因為錯誤的螢幕模式
		  參數值,將導致 QuickBASIC 於程式繼續執行(例如 :
		  按 <F5> 鍵繼續執行程式)以後,會產生無法預期的錯誤
		  結果。

	   (3)-1. QuickBASIC 是根據個人電腦上的顯示卡來檢查 SCREEN
		  敘述內的螢幕模式參數值是否正確。例如:使用者目前
		  使用 VGA 顯示卡,雖然執行 ET16E.COM (EGA 顯示卡
		  驅動程式) 進入倚天中文系統,但 QuickBASIC 仍然
		  視為使用 VGA 顯示卡,而允許使用的螢幕模式參數值
		  是: 00, 03 與 82 。因此請使用與顯示卡一致的中文
		  系統驅動程式(例如 : 使用 VGA 顯示卡時,請執行倚天
		  中文系統驅動程式 ET16V-16.COM 或 ET16V.COM )。


      (4). QuickBASIC 二本使用手冊中對於程式的註解部份(REM 敘述或
	   ` 後面的文字),為了方便使用者閱讀,已經全部翻譯成為中文;
	   但套裝軟體磁片內的範例/教學程式(存在 EXAMPLES 與 ADVR_EX
	   子目錄中),除了 QCARDS.BAS 以外,仍保留原來的英文說明。

	   同時使用手冊中的範例程式是採用中文檔名,而套裝軟體磁片
	   內的範例程式(存在 EXAMPLES 子目錄中),則維持原英文名稱。
	   如果使用者中文系統有提供檔名允許使用中文時,可以使用
	   "RENFILE.BAT" 批次命令(batch commands)檔更改為中文檔名,
	   否則請參照 PACKING.LST 內中英文檔名的對照,來配合學習
	   使用手冊內的範例程式


      (5). QuickBASIC 二本使用手冊與線上援助功能中的援助訊息,對於
	   英文名詞的翻譯,請注意下面幾點說明:

	   ** LINE 翻譯為 "行" 或 "列", 例如: LINE NUMBER 是
	      "行號" 或 "列號"。由於 COLUMN 的翻譯也是 "行",若
	      與 "COLUMN" 一起使用時,則 LINE 固定為 "列"。
	      例如: SCREEN(列,行,[顏色旗標]) 函數
		    LOCATE [列][,[行][,[游標][,[起始,結束]]]] 敘述

	   ** 在線上援助功能中的援助訊息,對於會讓使用者混淆的中文
	      翻譯名詞有保留原英文名稱,例如: COLUMN 翻譯為 "行(column)",
	      以幫助使用者了解其英文原意。


      (6). QuickBASIC 線上援助功能下的 <Quick 畫面> <細節> <範例>
	   援助視窗中,對於 BASIC 語言每一個函數/敘述的語法介紹,
	   或範例使用,或與 BASICA 版本的差異..等等,都有詳盡的說明,
	   請善加利用來幫助您完成 BASIC 程式。

	   同時 FQCARDS.BAS 是完整的 QCARDS.BAS 程式。如果使用者利用
	   QCARDS.BAS 程式配合 QuickBASIC 使用手冊來學習 QuickBASIC
	   的工作環境或語言以後,還無法產生正確的程式時,可以參考
	   FQCARDS.BAS 程式。



(五).	在 "倚天" 中文系統上使用 QuickBASIC 時應注意的事項 :

	(1). 進入 QuickBASIC 以前 :

	     ** 請使用中文系統預設的 BIG-5 碼, 或在 DOS 命令列
		(Command Line)輸入 "ETCTL/C:SI0" 命令,設定為
		BIG-5 碼。

	     ** 請按下 Alt-Ctrl-T 透通性模式互換鍵(Transparent Mode
		Toggle Key)設定為透通性模式。
		或者,可以在 DOS 命令列輸入 "ETCTL/C:IT" 設定透通性模式
		命令。



	(2). 對於使用 2.00.03 版本的中文系統使用者,下面資訊提供您在
	     使用時應注意的事項 :

	     (a). QuickBASIC 會自動載入 QB.FNT 字型檔,然後透過中文系統
		  上的 CSI 功能建立一組新的英文字型,使 QuickBASIC 工作
		  環境中:功能表(Menu),交談框(Dialog Boxes),視窗(Windows)
		  能顯示正確的表格圖型(例如 :┌,┐,└,┘,─,│)。
		  但目前 2.00.03 版本的中文系統還無法顯示這套新建立的字型。

	     (b). 對於使用 ET16E.COM, ETEGA.COM 建立 EGA 卡彩色顯示的
		  使用者,目前 2.00.03 版本還無法執行 QuickBASIC。

	     (c). QuickBASIC [O/選用功能] 功能表,對於 "D/畫面設定..."
		  命令中顏色屬性的設定,目前 2.00.03 版本是將高亮度
		  (High-Intensity)以 "閃爍"(Blinking) 的方式顯示。


	     以上的情況,倚天公司已經在新版本的中文系統上全部解決了。





(六).	在 "零壹" 中文系統上使用 QuickBASIC 時應注意的事項 :

	(1). 進入 QuickBASIC 以前 :

	     ** 請先執行 CMEXMODE.BAT 設定成 CMEX 環境。

	     ** 然後,在 DOS 命令列(Command Line) :

		(a). 請輸入 "01CTL/I:2" 命令,設定為 BIG-5 中文碼。
		(b). 請輸入 "01CTL/CUR:1" 命令,設定游標的處理為
		     "英文模式"。



	(2). 由於 QuickBASIC 需要使用 384 K 的記憶體空間, 所以在此提供給
	     使用零壹 4.0 版以上的使用者,在建立中文系統時如何節省記憶體
	     空間之方式:

	     (a). 使用彩虹精靈中文碟時,可以修改 01.BAT 檔案, 減少 Download
		  的字型。例如:只要設定 "載入一個 16x16 字體" 及 "保留一個
		  16x16 字體緩衝區"。

		  Download /L16:1/B16:1/L:1/B:1 D:

		  若要列印 24x24 字型, 首先需將 24 字型片拷備到中文目錄中,
		  並且至少設定 "載入一個 24x24 字型" 及 "保留一個 24x24 的
		  緩衝區"。

		  注意 : 使用 "風神/彩翼 1601 中文卡" 時,由於中文卡本身
			 有提供完整的字型, 所以不需要做以上的修改。


	     (b). 請執行 01SETUP,可以刪除不會用到的輸入法。

		  目前各種輸入法佔用記憶體空間大小是 :

		  全形輸入法 -- 01 K	   倉頡輸入法 -- 05 K
		  注音輸入法 -- 38 K	   內碼輸入法 -- 01 K
		  片語輸入法 -- 05 K




	     (c). 將系統片中的 CCF.STM 檔名更改為 CCF.SYS,並依下列方式修改,
		  以取消不用的驅動器程式。

		  現將 CCF.SYS 驅動器的功能說明如下:

		  DRV=FONTFILE.SYS  ....... 字型驅動器(彩虹精靈用)
		  ( 或 DRV=CARDPTN.SYS .... 風神/彩翼 1601 中文卡驅動器)

		  DRV=CODE.SYS	........... 內碼驅動器
		  DRV=SCONDRV.SYS ......... 單色螢幕驅動器
		  DRV=EVCONDRV.SYS ........ 彩色螢幕驅動器
		  DRV=GRAPHS.SYS .......... 單色繪圖驅動器
		  DRV=PRAPHE.SYS .......... 彩色繪圖驅動器
		  DRV=FULL.SYS ............ 全形輸入法
		  DRV=CJDRV.SYS ........... 倉頡輸入法
		  DRV=PHDRV.SYS ........... 注音輸入法
		  DRV=OBSQF.SYS ........... 內碼輸入法
		  DRV=PHRASE.SYS .......... 片語輸入法
		  DRV=PRT400.SYS .......... 4.0 版列表驅動器
		  DRV=PRT320C.SYS ......... 零壹 3.2 版中文列表驅動器
		  DRV=HDCP400.SYS ......... HARD COPY 驅動器
		  DRV=ZOAPI.SYS ........... 零壹 API 驅動器
		  DRV=CSI.SYS ............. CMEX API 驅動器
		  DRV=ETAPI.SYS ........... 倚天 API 驅動器

		  若使用者可以利用文書處理工具(例如 :  PE2 ...等)修改
		  ccf.sys 檔案, 即 :在不要用到的驅動器最前面加上一個分號(;),
		  以後中文系統啟動時就不會載入該驅動器。例如 :

		  ;drv=graphs.sys
		  ;drv=full.sys
		  ;drv=prt400.sys
		  ;drv=hdcp400.sys

		  注意 : 使用 QuickBASIC 時至少須載入: 字型,內碼,螢幕,
			 CMEX API 等四個驅動器;以及另外一種在使用上最
			 方便的輸入法便可以執行。

			 假如不使用倉頡輸入法時,則需要在中文目錄中建立
			 INT1, INT2, INT3, INT4 等四個 0 BYTE 的空檔,
			 然後重新載入中文系統。



	(3). 在 4.02 版本的中文系統上使用 QuickBASIC 時,有關的注意事項 :

	     (a). 4.02 版本將 VGA/EGA 彩色顯示卡上的 "閃爍"(Blinking)
		  功能當成背景顏色使用,雖然沒有 "閃爍"(Blinking)功能
		  的顯示效果,然而在背景顏色的選擇上可以增加到最多 16 種。

	     (b). 在單色(MGA)顯示卡的顯示屬性中 :

		  (i). 反白(Reverse)與畫底線(with Underline)的屬性
		       不會同時並存。例如 :

		       COLOR 7, 0	     '正常顯示
		       COLOR 1, 0	     '正常顯示 + 畫底線
		       COLOR 0, 7	     '反白顯示
		       COLOR 1, 7	     '正常顯示


		 (ii). "閃爍" 與 "高亮度"(High-Intensity) 的顯示效果相同。




(七). 使用浮點算術運算(floating-point arithmetic)時應注意的事項 :


      (a). QuickBASIC 中文版編譯(compile) QuickBASIC 程式成為可執行檔
	   (executable file)時,對於程式內所使用的浮點算術運算,提供了
	   一個可以產生 "處理速度最快" 而且 "程式最小" 的模擬數學輔助
	   處理器(Numeric Coprocessor)的 "算術程式"(Alternate floating
	   point math)。

	   執行檔在 DOS 命令列實際執行時,不會理會數學輔助處理器的存在,
	   一律都採用此 "算術模擬程式" 來處理算術運算。


      (b). 運算元(operand)與關係運算子(relational operator)組合成一個
	   運算式(expression),當運算元為單精確度(single-precision number)
	   或是倍精確度(double-precision number)時,請小心使用關係運算子,
	   尤其儘量避免測試二個值是否相等,因為運算結果可能 "相當接近" 但
	   "卻不相等" 。請參閱下面的例子:

	   (1). 這個例子中的 IF 敘述, 除非 A! 的值正好是等於 0.0,
		否則將不會執行 PRINT 敘述。當 A! 是一個相當小的值時,
		例如 1.0E-23, 則此 PRINT 敘述仍不會被執行 :

		IF A! = 0.0 THEN PRINT "相等結果"


	   (2). 這個例子中也是不會執行 PRINT 敘述 :

		CLS
		A$ = "123.45"
		IF VAL(A$) = 123.45 THEN PRINT "相等結果"


	   解決方法 :

	       請在關係運算式中使用變數名稱,就可以得到 "相等" 的結果,
	       例如上面第二個例子可以改寫為 :

	       CLS
	       A$ = "123.45"
	       B! = VAL(A$)
	       IF B! = 123.45 THEN PRINT "相等結果"




(八). 如何移植不同版本的 Quick Library 到中文版中繼續使用:

      (a). 如果您有在不同版本(例如: QuickBASIC 英文版 4.50)中所發展
	   的 Quick Library 程式移植到中文版繼續使用時,請將原始程式
	   (source programs) 載入到 QuickBASIC 中文版工作環境中,
	   使用 [R/執行] 功能表中的 "L/產生程式庫" 命令重新建立,
	   然後才可以繼續在中文版下使用。

      (b). 假如沒有原始程式,只有 Quick Libray 程式庫檔案,請先在 DOS
	   命令列執行下面的命令以後, 才可以拿到 QuickBASIC 中文版下
	   繼續使用 :
	   (以 QuickBASIC 英文版 4.50 的 "QB.QLB" Quick library 為例)

	   LINK QB.LIB, QB.QLB, /QU, BQLB45C.LIB

	   但是最好不要採用此種方式,因為有些問題還是要從原始程式修改,
	   才能解決的。




(九). 使用混合語言程式(mixed-language programming)時的補充資料 :


      (1). 使用者所寫的程式有包含例如: 用 BASIC 語言所寫的 "與大小寫
	   無關"(case-insensitive)的模組(module)時,請不要在 Microsoft
	   的 QuickC 工作環境或 QCL 命令下使用重疊鏈結器(LINKER)來與
	   其他程式模組一起鏈結,因為它們會加入預設的鏈結參數 "NOI",
	   使用者可以轉到一般 DOS 命令列下使用重疊鏈結器作鏈結,這樣
	   就不會有問題了。


      (2). 動態陣列(dynamic array)的使用:

	   使用者可以提供一個組合語言程式給 QuickBASIC 使用, 但在組合
	   語言程式中不應該假設資料是存放在同一個 SEGMENT 內。為了避免
	   這個問題,QuickBASIC 程式可以以遠程位址(far reference)的方式
	   傳送參數資料給組合語言使用,例如: 使用 "CALLS" 敘述, 或在參數
	   前面加上 "SEG" 關鍵字,或使用遠程指標(far pointer)等等; 還有
	   一種方法是傳送動態陣列資料型態的參數(還是要使用遠程指標),
	   因為 BASIC 編譯器與 QuickBASIC 之下對於動態陣列的處理方式
	   都是相同的。


      (3). 在 QuickBASIC 下使用 Btrive :

	   使用者程式有包含 Btrive,在 QuickBASIC 4.50 版下使用時,
	   必需作小小的改變,例如: 程式中有一個敘述用來取得一個已
	   開啟檔案的欄位區域起始位址時:

	   OPEN "NUL" AS #1
	   FIELD #1, 20 AS CITY$, 10 AS STATE$
	   FCB.ADDR% = VARPTR(#1)


	   在 QuickBASIC 4.50 版下使用時,必需修改成下面的方式:

	   OPEN "NUL" AS #1
	   FIELD #1, 20 AS CITY$, 10 AS STATE$
	   FCB.ADDR% = SADD(CITY$) - 188


	   下面例子也是介紹如何取得使用者自定型態的資料位址:

	   TYPE ADDRESS
	       CITY AS STRING * 20
	       STATE AS STRING * 10
	   END TYPE

	   DIM ADD1 AS ADDRESS

	   FCB.ADDR% = VARPTR(ADD1) - 188
	   '
	   ' 或者也可以寫成下面的方式 :
	   ' FCB.ADDR% = VARPTR(ADD1.CITY) - 188
	   '



(十). FIXSHIFT.COM 的使用 :


      有些鍵盤增加一組除了數字鍵以外的 向上/向下/向左/向右 方向鍵,
      由於有些個人電腦主機上 ROM BIOS 存在的錯誤,使得 QuickBASIC
      不能正確使用這一組方向鍵; 因此提供 FIXSHIFT.COM 程式來修正
      這個錯誤。假如使用者個人電腦上的 ROM BIOS 沒有錯誤, FIXSHIFT
      程式也會顯示正確的訊息通知使用者。

      FIXSHIFT.COM 為一個常駐程式(resident program),會佔用主記憶體
      約 450 位元組(bytes)空間,它的目的僅為了修正 ROM BIOS 上的錯誤,
      而不會影響到其他程式的執行。
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
005 Apple-Basic For PC V1.00 1×HD
在PC机上模拟运行苹果机的BASIC语言
006 MS-Visual BASIC V2.0 6×TD
开发WINDOWS应用程序效率最高的编程工具.它将事先编制好的构件可视性的连接在一起,类似BASIC的编程方式,可检查句法的编辑器及调试器,能快速编制大型高级应用程序.并提供数据库存取功能
007 MS-Visual BASIC V3.0 9×TD
开发WINDOWS应用程序效率最高的编程工具.它将事先编制好的构件可视性的连接在一起,类似BASIC的编程方式,可检查句法的编辑器及调试器,能快速编制大型高级应用程序.并提供数据库存取功能
008 MS-Visual BASIC For DOS 8×HD
高级集成环境,带有强大的资源编辑工具
009 SQL SERVER FOR VISUAL BASIC 2×TD
010 VXBASE V2.04 3×HD
Ms-Visual BASIC 的数据库接口及实例
README.TXT [展开]
VISUAL BASIC FOR WINDOWS DEVELOPERS GUIDE
by D.F. Scott   
(copyright 1992, Sams Publishing)

----------------------------------------------------------------------
README.TXT
----------------------------------------------------------------------


Each *.EXE file on this disk is a compressed archive that can contain
a number of files. When one of these *.EXE files is run, it will 
automatically decompress and store files on your hard drive.

NOTE: You need at least 2.8 megabytes of free space on your hard drive
      to install the files from this disk.

Follow these instructions to run the installation program. This program
will automatically decompress the files you need, and install them on 
your C: hard drive.

	1. You need to be at a DOS prompt. Double-click on the MSDOS 
	   Prompt icon in Program Manager.

	2. From the DOS prompt, set your default drive to the drive that
	   contains the installation disk. For example, if the A: drive
	   hold the disk, type A: and press the Enter key.

	3. Type the following and then press the Enter key:
	   
	   INSTALL drive              
	   
	   ("drive" is the drive letter of your hard drive)

	   For example, INSTALL C: would install the files to your 
	   C: hard drive.
	   
This will install all of the files to your hard drive.


----------------------------------------------------------------------


LOCATION OF FILES:

* The Visual Basic source code from the book is in \VB-DEVGD\SOURCE.

* The compiled programs are in \VB-DEVGD\COMPILED. This directory
  also contains the VBRUN200.DLL and other Visual Basic run-time
  files that are needed for running the compiled programs.

* A Word for Windows help file template is stored in \VB-DEVGD\TEMPLATE.

* The DLL and EXE files for the vxBase library are stored in your Windows
  directory.

* The sample data files for vxBase are stored in \VB\VXBASE\AIRPLANE 
  and \VB\VXBASE\SAMPLE.

* The vxBase documentation is stored in \VB\VXBASE\DOCS.


*********************************************************************
IMPORTANT! Before you use vxBase, read VXBASE.WRI (the documentation 
           file, in Windows Write format)
*********************************************************************



A technical note...
--------------------

The compressed files on this disk were created using version 2.13 of
the LHA utility. They are self-extracting archives, and the files are
stored with expanded filenames. They will automatically extract to the
proper directory.


*** End ***
原始 1.IMG 2.IMG 3.IMG
011 MS-VISUAL BASIC TOOS V2.5 2×HD
012 MS-VISUAL BASIC DEVELOPER'S GUIDE FOR/WIN 1×TD
README.TXT [展开]
VISUAL BASIC FOR WINDOWS DEVELOPERS GUIDE
by D.F. Scott   
(copyright 1992, Sams Publishing)

----------------------------------------------------------------------
README.TXT
----------------------------------------------------------------------


Each *.EXE file on this disk is a compressed archive that can contain
a number of files. When one of these *.EXE files is run, it will 
automatically decompress and store files on your hard drive.

NOTE: You need at least 2.8 megabytes of free space on your hard drive
      to install the files from this disk.

Follow these instructions to run the installation program. This program
will automatically decompress the files you need, and install them on 
your C: hard drive.

	1. You need to be at a DOS prompt. Double-click on the MSDOS 
	   Prompt icon in Program Manager.

	2. From the DOS prompt, set your default drive to the drive that
	   contains the installation disk. For example, if the A: drive
	   hold the disk, type A: and press the Enter key.

	3. Type the following and then press the Enter key:
	   
	   INSTALL drive              
	   
	   ("drive" is the drive letter of your hard drive)

	   For example, INSTALL C: would install the files to your 
	   C: hard drive.
	   
This will install all of the files to your hard drive.


----------------------------------------------------------------------


LOCATION OF FILES:

* The Visual Basic source code from the book is in \VB-DEVGD\SOURCE.

* The compiled programs are in \VB-DEVGD\COMPILED. This directory
  also contains the VBRUN200.DLL and other Visual Basic run-time
  files that are needed for running the compiled programs.

* A Word for Windows help file template is stored in \VB-DEVGD\TEMPLATE.

* The DLL and EXE files for the vxBase library are stored in your Windows
  directory.

* The sample data files for vxBase are stored in \VB\VXBASE\AIRPLANE 
  and \VB\VXBASE\SAMPLE.

* The vxBase documentation is stored in \VB\VXBASE\DOCS.


*********************************************************************
IMPORTANT! Before you use vxBase, read VXBASE.WRI (the documentation 
           file, in Windows Write format)
*********************************************************************



A technical note...
--------------------

The compressed files on this disk were created using version 2.13 of
the LHA utility. They are self-extracting archives, and the files are
stored with expanded filenames. They will automatically extract to the
proper directory.


*** End ***
RAW 1.raw
原始 1.IMG
013 Turbo C V2.00 2×HD
README [展开]
                        WELCOME TO TURBO C 2.0
                        ----------------------

This README file contains important, last minute information
about Turbo C 2.0. The HELPME!.DOC file on the COMMAND LINE/UTILITIES
disk also answers many common Technical Support questions.


TABLE OF CONTENTS
-----------------
  1. How to Get Help
  2. Installation
  3. Important Notes
  4. Corrections to the Manuals
  5. Additional Notes
  6. Notes for Turbo Prolog Users
  7. Files on the Disks


 1. HOW TO GET HELP
-------------------

  If you have any problems, please read this file, the
  HELPME!.DOC file, and the Turbo C manuals first. If you still
  have a question and need assistance, help is available from
  the following sources:

  1. Type GO BOR on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed special
     offer, and write for full details on how to receive a free
     IntroPak containing a $15 credit toward your first month's on-
     line charges.

  2. Check with your local software dealer or users' group.

  3. Write to us at the following address:

     Borland International
     Turbo C Technical Support
     1800 Green Hills Road
     P.O. Box 660001
     Scotts Valley, CA  95066-0001

     Please remember to include your serial number or we will be
     unable to process your letter.

  4. If you have an urgent problem that cannot wait and you have sent
     in the license agreement from the front of your manual, you may
     call the Borland Technical Support Department at (408) 438-5300.
     Please have the following information ready before calling:

     a. Product name and serial number on your original distribution
        disk.  Please have your serial number ready or we will be
        unable to process your call.

     b. Product version number. The version number for Turbo C is
        displayed when you first load the program and before you
        press any keys.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number can
        be determined by typing VER at the MSDOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


 2. INSTALLATION
----------------
  The INSTALL/HELP disk contains a program called INSTALL.EXE that
  will assist you with the installation of Turbo C 2.0. There are
  three options for installation:

  1. Hard Disk - This option allows you to pick the subdirectories
     where the files will be loaded. It will create a TURBOC.CFG
     file based on those directories.

  2. Update from TC 1.5 - This allows for an easy update from version
     1.5.  After the files are copied, all the installed options
     from your current TC.EXE will be transferred to the new one.
     This is especially useful if you have modified the colors or
     editor keys.

  3. Floppy Disk - This option will build either a command line or
     Integrated Development Environment version for a two drive
     system. Be sure to have three formatted disks ready before
     you start.

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  You should read the rest of this README file to get further
  information about this release before you do the installation.


 3. IMPORTANT NOTES
-------------------

  o The file HELPME!.DOC contains discussions of common questions
    and answers concerning Turbo C 2.0. You should consult it for
    answers to problems that aren't covered in this file or in
    the manuals.

  o If you are running INSTALL or TCINST on a laptop or any other
    system that uses an LCD or composite display, you should set
    your system to black and white mode before running INSTALL
    or TCINST. You can do this from DOS with the following command
    line:

      mode bw80

    or, you can force INSTALL or TCINST to come up in black and
    white mode by using the /b switch:

      tcinst /b

  o /P PARAMETER FOR TC.EXE. A new command-line switch controls
    palette swapping on EGA video adapters. Using this switch

      tc /p hello

    is recommended only when the user program modifies the EGA
    palette registers. When /P is specified, the EGA palette will be
    restored each time the screen is swapped. In general, you don't
    need to use this switch unless your program modifies the EGA
    palette registers, or unless your program uses BGI to change
    the palette.

  o A program that takes over interrupt 9 cannot be debugged
    with the integrated debugger. Use the standalone Turbo Debugger
    instead.

  o exec() WITH NOVELL NETWORK. Versions of the Novell network
    system software earlier than 2.01-2 do not support a DOS
    call used by exec(), spawn(), and system(). If you are using
    the Integrated Development Environment to run a program that
    uses any of these functions and you have early Novell system
    software, run the program from DOS. To do this from the
    Integrated Development Environment you can use Alt-F/O.

  o If you used the INSTALL program to upgrade from version 1.5,
    or if you used CINSTXFR to transfer options from an
    installation of version 1.5, check the setting of the
    standard stack frame option in the Integrated Development
    Environment (Alt-O/C/C/S). If you are going to use the
    integrated debugger this option should be turned ON.

  o If you are having problems with the call stack or qualified
    names, make sure you have compiled with the standard stack
    frame option turned on.

  o The ANSI draft has changed the syntax of labels.  A label now
    must always be followed by a statement.  This means that code
    like this is no longer accepted:

      {
        .
        .
        .
        jump_label:
      }

    If you have code like this, change it to look like this:

      {
        .
        .
        .
        jump_label:
        ;       /* need a statement here! */
      }

  o TCC has a switch to specify which assembler to look for. By
    default, it will look for TASM.EXE. If you want to use a
    different assembler, use -E<filename>, as described in the
    Reference Guide.

  o When using THELP on an AT&T 6300, be sure to use the /L25
    command-line option, as described in the file THELP.DOC.

  o When you use qualified variable names as described on page
    57 of the User's Guide you don't need to use the module
    name to access a variable that is local to a global
    function. The module name is only needed when you access a
    static variable or a variable that is local to a static
    function.

  o Because of the limited memory available in the Tiny model,
    it no longer supports graphics functions.

  o The Version 1.5 graphics drivers (*.BGI) are not compatible
    with the Version 2.0 graphics library. Use the graphics drivers
    distributed with Version 2.0.

  o When used with a Zenith Z-449 card, the BGI autodetection code
    will always select the 640X480 enhanced EGA mode. If you are
    using the Z-449 with a monitor that is not compatible with
    this mode, it will be necessary to override the GraphDriver
    and GraphMode parameters used in the BGI initgraph() call.


 4. CORRECTIONS TO THE MANUALS
------------------------------

 REFERENCE GUIDE:

 Page

 159  The prototype for the function getdefaultpallette() is
      incorrect. It should be

        struct palettetype * far _Cdecl getdefaultpalette( void );


USER'S GUIDE:

 Page

  57  In the section entitled "Qualifying Variable Names," the
      last sentence should read "...need to type only myfunc.myvar."

  66 The directions for compiling the WORDCNT program are
     incorrect. There is no WORDCNT.PRJ file; all you need to do
     is load the file WORDCNT.C into the editor. Once you have
     done that, the rest of the instructions are correct.

 5. ADDITIONAL NOTES
--------------------

  5.1 NOTES FOR VERSION 1.0 & 1.5 USERS
  -------------------------------------

  o You must use the Version 2.0 libraries with the 2.0 compilers.

  o The Integrated Development Environment no longer displays the
    message "Press any key to return to Turbo C..." when your
    program terminates. Instead, at the end of your program the
    User screen is replaced by the Integrated Development
    Environment. To view the User screen, press Alt-F5 or
    select Alt-R/S. When you are viewing the User screen,
    pressing any key will return you to the Integrated
    Development Environment.

  o A new pseudo-variable has been added. _FLAGS now contains the
    value of the flags register so you can test the flags at any
    point in your program.

  o The ssignal() and gsignal() functions are no longer
    supported. See the section in this README on how to convert
    programs that use them.

  o The cprintf() function now works as documented. It does not
    translate line-feeds into CR/LF combinations.

  o Some compatibles had a problem under Version 1.5 because it
    used interrupt 18H. Version 2.0 does not use this interrupt,
    so you shouldn't encounter this problem anymore.

  o The program TCINST.COM in Version 1.0 has been changed to an
    .EXE file. You should delete the TCINST.COM program before
    trying to run the new TCINST.EXE. Otherwise, MS-DOS will actually
    run the old one.

  o The FILE structure for streams in Version 1.0 (but not 1.5) has
    been changed, so that the function tmpfile() could be implemented.
    You should recompile any modules that use stream I/O.

  5.2  THELP
  ----------

  THELP is a memory-resident utility program that gives you
  access to the Turbo C context-sensitive help system from any
  program. You don't need to use THELP if you're in the
  Integrated Development Environment, but it is especially useful
  if you use the command line compiler and your own text editor,
  or if you are debugging with the standalone Turbo Debugger. To
  use THELP, load THELP.COM into memory by typing at the DOS
  command line:

    thelp

  You activate ("pop-up") THELP by typing its hot key -- by
  default numeric keypad <5>. All Turbo C help commands apply
  (F1, Ctrl-F1, Alt-F1). For a complete description of THELP,
  refer to THELP.DOC in the Documentation Subdirectory.

  5.3 USING CINSTXFR.EXE
  ----------------------

  Your Turbo C 2.0 package contains a program named CINSTXFR.EXE,
  which can be used to transfer the configuration of the
  Integrated Development Environment from your copy of Turbo C
  1.5 (not for 1.0) to your new installation of Turbo C 2.0. This
  program is run automatically by INSTALL.EXE if you select the
  option to "Update Hard Drive Copy of Turbo C 1.5 to Turbo C 2.0."
  If you prefer to do this yourself, you can run CINSTXFR.EXE from
  the DOS command line.

  CINSTXFR.EXE takes two arguments: the first is the name of your
  Turbo C 1.5 Integrated Development Environment file (usually
  TC.EXE), and the second is the name of your Turbo C 2.0
  Integrated Development Environment file (also usually TC.EXE).
  Either one of these names can also include a path name.

  For example, if your copy of the Turbo C 1.5 Integrated
  Development Environment file is named TC.EXE and is in a
  directory named \TURBOC and your copy of the Turbo C 2.0
  Integrated Development Environment file is also named TC.EXE
  but is located in a directory named \TC2, the command line to
  copy the configuration from 1.5 to 2.0 would look like this:

    CINSTXFR \TURBOC\TC.EXE \TC2\TC.EXE

  This will transfer all the options that you installed in
  your copy of Turbo C 1.5 to your copy of Turbo C 2.0.

  CINSTXFR.EXE does not work with Turbo C 1.0. If you are
  upgrading from Turbo C 1.0, you will have to install the
  options yourself.

  5.4 CHANGED SWITCHES FOR OBJXREF
  --------------------------------

  OBJXREF is an object module cross reference utility and is
  described on page 528 of the Turbo C Reference Guide.
  The /O option (object files directory) has been changed to the
  /D (directories) option. The switch now allows for multiple
  search directories to be specified. The new syntax is:

    OBJXREF /Ddir1[;dir2[;dir3]]
                or
    OBJXREF /Ddir1 [/Ddir2] [/Ddir3]

  OBJXREF will search each of the directories in the specified
  order for all object and library files. If no /D option is
  used, only the current directory will be searched. However,
  if a /D option is used, the current directory will NOT be
  searched unless it is included in the directory list. For
  example, to first search the BORLAND directory for files and
  then search the current directory, you would type

    OBJXREF /Dborland;.

  If multiple search directories are specified and a file
  matching the file specification is found, OBJXREF will include
  the file as part of the cross-reference. OBJXREF will only
  continue to search the other directories for the same file
  specification if the file specification contains wildcards.

  A new option has been added to allow you to specify an output
  file where OBJXREF will send any reports generated. The new
  option is the /O option, and has the following syntax:

    OBJXREF myfile.obj /RU /Ofilename.ext

  By default, all output is sent to the console.

  5.5 CONVERSION INFORMATION FOR ssignal() AND gsignal()
  ------------------------------------------------------

  Note: The C library and SIGNAL.H no longer support the ssignal()
  and gsignal() functions.

  ssignal() and gsignal() were from the old UNIX System III
  days. The ANSI standard no longer supports them nor does the
  current UNIX System V Interface Definition specification. To
  ease portation problems for people moving older code to Turbo
  C, we supply the source for the functions that came with TC
  1.0 and TC 1.5. Also, the following discussion describes how
  code can be converted to do the same sort of things that
  ssignal() and gsignal() do without actually using them.

  NOTE: The constants defined in SIGNAL.H for SIG_IGN and
        SIG_DFL are different from the constants that were in
        TC 1.0 and TC 1.5.

  By using a globally declared array of function pointers, you
  can simulate the actions of ssignal() and gsignal() by using
  the following macros. Notice how the global table entry [0] is
  used as a temporary variable in the ssignal macro allowing the
  macro to swap the values and still return the original one.

    int (*_sigTable[16]) =
        {
        SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN,
        SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN,
        SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN,
        SIG_IGN, SIG_IGN, SIG_IGN, SIG_IGN,
        };

    #define ssignal(num, action) \
    ( \
    (((num) < 1) || ((num) > 15)) ? SIG_DFL : \
      ( \
      (_sigTable[0] = _sigTable[(num)]),  /* List of actions     */ \
         _sigTable[(num)] = (action),     /* The last expression */ \
            _sigTable[0]                  /* is the return value */ \
      ) \
    ) \

    #define gsignal(num) \
    ( \
    (((num) < 1) || ((num) > 15)) ? 0 : \
      ( \
      (_sigTable[(num)] == SIG_IGN) ? 1 : \
         ( \
           (_sigTable[(num)] == SIG_DFL) ? 0 : (*_sigTable[(num)])() \
      ) \
    ) \
   ) \


 6. NOTES FOR TURBO PROLOG USERS
--------------------------------

  o If you are linking C code with programs generated by Turbo
    Prolog 2.0, use the file INIT.OBJ provided on the
    EXAMPLES/BGI/MISC disk of the Turbo C 2.0 package instead of
    the file provided with Turbo Prolog 2.0.  There have been some
    changes made in Turbo C 2.0 that require the use of this new file.

  o If your C code uses floating point math and you link with the
    emulator library, Prolog will not automatically detect a math
    coprocessor chip. If you want to force the program to use the
    coprocessor, link it with FP87.LIB instead of EMU.LIB.


 7. FILES ON THE DISKS
----------------------

  INSTALL/HELP
  ------------
  INSTALL  EXE  -  Installation program
  README   COM  -  Reads this README
  TCHELP   TCH  -  Help file for Turbo C
  THELP    COM  -  Pop-up utility to access TCHELP.TCH
  THELP    DOC  -  Documentation for THELP.COM
  README        -  This file

  INTEGRATED DEVELOPMENT ENVIRONMENT
  ----------------------------------
  TC       EXE  -  Turbo C Compiler
  TCCONFIG EXE  -  Program to convert configuration files
  MAKE     EXE  -  Program for managing projects
  GREP     COM  -  Turbo GREP program
  TOUCH    COM  -  Program that updates a file's date and time

  COMMAND LINE/UTILITIES
  ----------------------
  TCC      EXE  -  Command-line version of Turbo C Compiler
  CPP      EXE  -  Turbo C preprocessor
  TCINST   EXE  -  Installation program for TC.EXE
  TLINK    EXE  -  Borland Turbo Linker
  HELPME!  DOC  -  Common questions and answers

  LIBRARIES
  ---------
  C0S      OBJ  -  Small model startup code
  C0T      OBJ  -  Tiny model startup code
  C0L      OBJ  -  Large model startup code
  MATHS    LIB  -  Small model math library
  MATHL    LIB  -  Large model math library
  CS       LIB  -  Small model run-time library
  CL       LIB  -  Large model run-time library
  EMU      LIB  -  8087 emulator library
  GRAPHICS LIB  -  Graphics library
  FP87     LIB  -  8087 library
  TLIB     EXE  -  Borland Turbo Librarian

  HEADER FILES/LIBRARIES
  ----------------------
  ???????? H    -  Turbo C header files
  <SYS>         -  Subdirectory with SYS\*.H header files
  C0C      OBJ  -  Compact model startup code
  C0M      OBJ  -  Medium model startup code
  MATHC    LIB  -  Compact model math library
  MATHM    LIB  -  Medium model math library
  CC       LIB  -  Compact model run-time library
  CM       LIB  -  Medium model run-time library

  EXAMPLES/BGI/MISC
  -----------------
  UNPACK   COM  -  Program to unpack the .ARC files
  OBJXREF  COM  -  Object file cross-reference utility
  C0H      OBJ  -  Huge model startup code
  MATHH    LIB  -  Huge model math library
  CH       LIB  -  Huge model run-time library
  GETOPT   C    -  Parses options in command line
  HELLO    C    -  Example Turbo C program
  MATHERR  C    -  Source code for handling math library exceptions
  SSIGNAL  C    -  Source code for ssignal and gsignal functions
  CINSTXFR EXE  -  Program to copy TC 1.5 installation to TC 2.0
  INIT     OBJ  -  Initialization code for use when linking with Prolog

  BGI      ARC  -  BGI drivers and fonts
    BGIOBJ   EXE - Conversion program for fonts and drivers
    ATT      BGI - Graphics driver for ATT400 graphics card
    CGA      BGI - Graphics driver for CGA
    EGAVGA   BGI - Graphics driver for EGA and VGA
    HERC     BGI - Graphics driver for Hercules
    IBM8514  BGI - Graphics driver for IBM 8514 graphics card
    PC3270   BGI - Graphics driver for PC3270
    GOTH     CHR - Font for gothic character set
    LITT     CHR - Font for small character set
    SANS     CHR - Font for sans serif character set
    TRIP     CHR - Font for triplex character set
    BGIDEMO  C   - Graphics demonstration program

  STARTUP  ARC  -  ARC file with startup source code and related files
    RULES    ASI - Assembler include file for interfacing with Turbo C
    C0       ASM - Assembler source for startup code
    SETARGV  ASM - Assembler source code for parsing the command line
    SETENVP  ASM - Assembler source code for preparing the environment
    BUILD-C0 BAT - Batch file for building the startup code modules
    MAIN     C   - Alternative, stripped-down C main file
    EMUVARS  ASI - Assembler variable declarations for emulator
    WILDARGS OBJ - Object code for module to expand wildcard arguments

  EXAMPLES ARC  -  Various C examples code
    CPASDEMO PAS - Pascal program that demonstrates Turbo Pascal 4.0 -
                   Turbo C interface
    CPASDEMO C   - C example module for the Turbo Pascal 4.0 - Turbo C
                   interface demonstration
    CTOPAS   TC  - Configuration file for use with TC.EXE that
                   creates Turbo C modules in the correct format
                   for linking with Turbo Pascal 4.0 programs
    CBAR     C   - Example function to be used with PBAR.PRO
    PBAR     PRO - Example Turbo Prolog program demonstrating interface
                   with Turbo C
    WORDCNT  C   - Example program demonstrating source level debugging.
                   NOTE: DO NOT RUN THIS PROGRAM WITHOUT READING THE
                         DISCUSSION IN THE MANUAL.  IT CONTAINS
                         DELIBERATE ERRORS.
    WORDCNT  DAT - Data file for use by WORDCNT.C

  MCALC    ARC  -  Mcalc sources and doc
    MCALC    DOC - MicroCalc documentation
    MCALC    C   - MicroCalc main program source code
    MCINPUT  C   - MicroCalc input routines source code
    MCOMMAND C   - MicroCalc commands source code
    MCPARSER C   - MicroCalc input parser source code
    MCUTIL   C   - MicroCalc utilities source code
    MCDISPLY C   - MicroCalc screen display source code
    MCALC    H   - The header file for MicroCalc
    MCALC    PRJ - The MicroCalc project file
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
014 Turbo C TOOLS V6.00 2×HD
用于中断,键盘,屏幕,窗口,选单,编辑器,鼠标, 帮助系统的函数及其源程序
README.DOC [展开]

Turbo C TOOLS/2.0                                                Version 6.00


                             Turbo C TOOLS/2.0

                               Version 6.00
                              March 31, 1989


This document provides information on the installation and  use  of  Turbo  C
TOOLS/2.0.  It should be used as a supplement to the manual.  Please read the 
Introduction  and  "Using  Turbo C TOOLS" in the manual.  Then read this file
for information specific to your C compiler and to this version  of  Turbo  C
TOOLS.  

Copyright (C) Blaise Computing Inc. 1989.  All rights reserved.  

The  PACKING.LST  file  lists  the  files  supplied  and  the  diskettes  and
subdirectories where they reside.  

                           OUTLINE OF THIS FILE

Compiler Versions and Memory Models Supported
Manual Changes
Warnings and Usage Notes
Troubleshooting
Extracting the Source Code
Printing the Source Code
Removing Tabs From the Source Code
Rebuilding the Libraries
Rebuilding the Sample Programs
C and Assembly Modules and Macros
Construction Notes

               COMPILER VERSIONS AND MEMORY MODELS SUPPORTED

This version of Turbo C TOOLS supports Turbo C versions 1.00, 1.50, and 2.00.  
For information about later versions of  the  Turbo  C  compiler,  check  the
bulletins enclosed with Turbo C TOOLS or contact Blaise Computing.  

Tiny  (T)  model:   Turbo  C  TOOLS  does not officially support the T model.
However, many  modules  in  the  S  model  library  (TCT_T2S.LIB)  will  work
correctly in T model programs.  

Huge (H) model:  For many programs using the H model, you can use the L model 
library  (TCT_T2L.OBJ),  especially  if  they  contain  no  interrupt service
routines (ISRs) or intervention code.  However, if you need support for  data
objects  larger  than  65,535  bytes  or  if  your program malfunctions, then
recompile the  library  using  the  H  memory  model.   See  "Rebuilding  the
Libraries" below.  

The following files are specific to particular memory models.  The same files 
support  Turbo  C versions 1.00, 1.50, and 2.00, with a few exceptions listed
below under "Warnings and  Usage  Notes".   The  columns  of  the  table  are
explained below.  






Blaise Computing Inc.         March 31, 1989                          Page  1




Turbo C TOOLS/2.0                                                Version 6.00


                               "Native                   "No Mouse
   Memory Model  Library       Windows"   COMPILER.MAC    Support"
   ------------  -----------  ----------  ------------  ------------
   S             TCT_T2S.LIB  NW_T2S.OBJ  COMP_T2S.MAC  BNOMOUSE.OBJ
   M             TCT_T2M.LIB  NW_T2M.OBJ  COMP_T2M.MAC  BNOMOUSE.OBJ
   C             TCT_T2C.LIB  NW_T2C.OBJ  COMP_T2C.MAC  BNOMOUSE.OBJ
   L             TCT_T2L.LIB  NW_T2L.OBJ  COMP_T2L.MAC  BNOMOUSE.OBJ

Memory  Model:   This  affects the maximum data and code size in your program
   and the nature of data and code  pointers.   In  the  Turbo  C  Integrated
   Environment   (TC.EXE),   the   memory   model   is   specified   via  the
   Options/Compiler/Model switch; the default is S model unless  you  save  a
   different  configuration.   With  the  command-line version (TCC.EXE), the
   memory model is specified via the /m command line switch; the default is S 
   model.  
Library:  These files are precompiled versions  of  all  the  Turbo  C  TOOLS
   functions.   To  link  them into your programs, specify the proper library
   file on the compiler or linker command line or in your project file.  
"Native Windows" file:   Programs  linked  with  this  optional  object  file
   coordinate all their Turbo C TOOLS window operations with the Turbo C text 
   window.   This  object  file requires Turbo C version 1.50 or later.  Read
   the section on "Turbo C's Text Window" in the chapter on window  functions
   (prefix WN).  
COMPILER.MAC  file:   This  specifies  the  memory  model for Turbo C modules
   written in assembly language.  If you reassemble  any  Turbo  C  assembler
   modules, first copy the correct file to COMPILER.MAC.  
"No  Mouse  Support"  file:   Programs linked with BNOMOUSE.OBJ are prevented
   from including the mouse functions MOCHECK, MOHIDE, and MOPRECLK.  If your 
   program uses menus, WNREAD, or the help system, and if you don't  want  to
   use  the  mouse,  then  linking  with  BNOMOUSE.OBJ will make your program
   slightly smaller.  Notice that the same  BNOMOUSE.OBJ  file  supports  all
   memory models.  

                              MANUAL CHANGES

The  following are important changes to the manual.  The changes have already
been made in the online reference database.  

Pages 36 (WNEXAMPL.C) and 54 (MNEXAMPL.C) -- The constants CYAN  and  MAGENTA
   should be replaced by SC_CYAN and SC_MAGENTA, respectively.  
Page 60 -- The MN_NOWRAP action bit has been added.  Its bit value is 0x4000.  
   It  has  the  effect  of  suppressing  wraparound  for the MN_UP, MN_DOWN,
   MN_RIGHT, MN_LEFT, MN_NEXT, and MN_PREVIOUS motions.  

   The following motions have been added:  

      Symbol      Value  Motion
      ----------  -----  ------------------------------------------
      MN_PGUP     0x00a  Move upward    the height of the viewport.
      MN_PGDN     0x00b  Move downward  the height of the viewport.
      MN_PGRIGHT  0x00c  Move rightward the width  of the viewport.
      MN_PGLEFT   0x00d  Move leftward  the width  of the viewport.






Blaise Computing Inc.         March 31, 1989                          Page  2




Turbo C TOOLS/2.0                                                Version 6.00


Page 61 -- The following default key assignments have been added:  

      Keystroke          ASCII value  Key code  Action(s)    Motion
      ----------------   -----------  --------  ---------    -----------
      PgUp                    0          73                  MN_PGUP
      PgDn                    0          81                  MN_PGDN
      Ctrl-right arrow        0         116                  MN_PGRIGHT
      Ctrl-left arrow         0         115                  MN_PGLEFT
      
      Enhanced Keyboard:
      
      PgUp                  224          73                  MN_PGUP
      PgDn                  224          81                  MN_PGDN
      Ctrl-right arrow      224         116                  MN_PGRIGHT
      Ctrl-left arrow       224         115                  MN_PGLEFT
      Enter                  13         224                  MN_TRANSMIT

Page 75 -- The sample help source file  you  should  study  is  SHOWHELP.TXT.
   SHOWHELP.HLP is its binary version.  
Page  126 -- To use malloc() inside a TSR program, you can use a new function
   called ISRESERV instead of the cumbersome method described in the  manual.
   Read the description of ISRESERV in the ISRESERV.DOC file or in the online 
   reference database.  

   ISRESERV  is useful for the near heap in the T, S, and M memory models and
   the far heap in the C, L, and H models.  To reserve space on the far  heap
   in  the  T, S, and M models, create a new function based on ISRESERV.C and
   in the new function replace  malloc()  and  free()  with  farmalloc()  and
   farfree(), respectively.  
Page  156 (EDFIELD) -- There is an additional fifth argument:  "pfinal".  The
   calling sequence now is:  

      int edfield(const char       *pinitstr,
                  char             *pretstr,
                  int               retsize,
                  const ED_CONTROL *pctrl,
                  KEY_SEQUENCE     *pfinal);

   "pfinal" is the address of a  structure  in  which  to  report  the  final
   keystroke, or NIL if no report is desired.  
Pages  183  (HLDISP)  and 190 (HLREAD) -- If the "pfinal" argument is the NIL
   pointer, then no information is returned via "pfinal",  and  the  returned
   value  of  the  function  is always NIL, regardless of whether an error is
   detected.  
Pages 231 (KBQUERY) and 467 (WNQUERY) -- The  value  returned  in  *pkey  has
   changed:   now  it  is  always the key code (scan code) of the terminating
   keystroke.  The value of the function is always the character code of  the
   terminating keystroke.  
Pages  254  (MNDSTROY)  and  480  (WNREMOVE) -- When setting the Turbo C text
   window to the entire screen, the text color is not changed.  Therefore the 
   text color may remain the same as the last selected window.  
Page 371 (STPEXPAN)  --  None  of  its  arguments  should  have  the  "const"
   modifier.  
Page  412 (UTSQZSCN) -- The data type of the "psource" argument is now "const
   char far *".  



Blaise Computing Inc.         March 31, 1989                          Page  3




Turbo C TOOLS/2.0                                                Version 6.00


Page 421 (UTUNSQZ) -- The data type of the "psource" argument is  now  "const
   char *".  
Page  454  (WNFIELD)  -- WNFIELD returns an immediate error if any portion of
   the window's viewport is covered by  any  other  viewport.   There  is  an
   additional sixth argument:  "pfinal".  The calling sequence now is:  

      int wnfield(BWINDOW          *pwin,
                  const char       *pinitstr,
                  char             *pretstr,
                  int               retsize,
                  const ED_CONTROL *pctrl,
                  KEY_SEQUENCE     *pfinal);

   "pfinal"  is  the  address  of  a  structure  in which to report the final
   keystroke, or NIL if no report is desired.  
Page 472 (WNREAD) -- A new argument called  "pfinal"  has  been  added.   The
   calling sequence is now as follows:  

      WN_EVENT *wnread(BWINDOW      *pwin,
                       const WHERE  *pwhere,
                       int           view_ht, int view_wid,
                       int           org_row, int org_col,
                       const BORDER *pbord,
                       WN_EVENT     *pfinal,
                       int           option);

   "pfinal"  is  the  address  of  a structure to receive a copy of the final
   event the user performed, or NIL if no  copy  is  desired.   The  returned
   value  of  the function is also changed:  it is a copy of "pfinal", or NIL
   if failure.  
Page 533 -- Change in behavior for global variable  b_ega:   After  you  call
   SCEQUIP,  the  b_ega global variable will contain the value SC_ABSENT (-2)
   if a Video Graphics Array (VGA) or  PS/2  Display  Adapter  is  installed.
   Under Turbo C TOOLS version 5, b_ega would contain SC_MONO (0) or SC_COLOR 
   (1)  if  a  VGA  was  present  because  the  VGA  emulates  all  the EGA's
   functionality.  
Page 534  --  Internal  functions  with  changed  calling  sequences  include
   MNTRUNC, WNNUPBLK, WNPIMBLK, and WNPUTIMG.  
Page 538 -- The "EB" notation marks new keystrokes that are translated by the 
   traditional  BIOS  services into their traditional equivalents, as well as
   keystrokes that are discarded by the traditional BIOS services.  
Page 556 -- The  global  variables  b_mnmohoriz  and  b_mnmovert  report  the
   character  column  and row (respectively) where the final mouse event took
   place under MNREAD or MNLREAD.  They are expressed in terms  of  character
   cells,  not  pixels.   They  contain  0xffff  if  the  final  event  was a
   keystroke.  
Page 562 -- New internal function:  WNSETATR sets the Turbo C  text  window's
   attribute.  

                         WARNINGS AND USAGE NOTES

STACK  CHECKING IN ISRs -- Stack overflow checking is not permitted in either
   interrupt service routines (ISRs) or intervention functions in the  T,  S,
   and  M memory models of Turbo C version 2.00 and later.  Stack checking is
   also  prohibited  in  all  functions  called  by  the  affected  ISRs  and
   intervention functions.  (Note:  Stack checking occurs only if you set the 


Blaise Computing Inc.         March 31, 1989                          Page  4




Turbo C TOOLS/2.0                                                Version 6.00


   O/C/Code/Test Stack  option (in the Integrated Environment) or specify the
   -N command line option when compiling your program.) 
FLPROMPT AND MOCHECK UNDER TURBO C 1.0 -- If your program  uses  FLPROMPT  or
   MOCHECK  under  Turbo  C version 1.0, then you should recompile FLPROMPT.C
   and/or MOCHECK.C under version  1.0  and  link  with  the  resulting  .OBJ
   file(s).   (MOCHECK  is used to detect mouse clicks and is used in HLDISP,
   HLREAD, MNREAD, and WNREAD.   MOCHECK  is  suppressed  if  you  link  with
   BNOMOUSE.OBJ.) 
INTERVENTION  CODE ON DOS VERSION 2 -- Please read "Foreground and Background
   Programs and Their Privileges" on page 122 of the Turbo C TOOLS  Reference
   Manual.   The  intervention  scheduler does not set the current process on
   DOS version 2.  Therefore, intervention functions in  background  programs
   on  DOS  version  2 should avoid DOS memory allocation.  In addition, they
   should open and reclose their files each time they are invoked.  
INTERVENTION CODE ON NON-IBM VERSIONS OF DOS -- If  you  specify  IV_DOS_NEED
   when  installing  an  intervention  function,  the scheduler will postpone
   invoking the intervention function if an interrupt 0x24  (critical  error)
   is  in  progress.   The  location  of  the interrupt 0x24 busy flag varies
   between different versions of DOS.   If  you  encounter  a  problem  using
   intervention  code  on  a  non-IBM  version  of DOS, please contact Blaise
   Computing.  
SCROLLING MONOCHROME DISPLAY PAGES  --  The  BIOS  scroll  function  normally
   obtains  the  attribute  for  the new blank rows by examining the previous
   location of the cursor.  The Enhanced Graphics Adapter  supports  multiple
   display  pages  on  the  Monochrome  Display.  On monochrome display pages
   beyond page 0, BIOS scrolling works improperly in that  the  attribute  of
   the  new  blank  rows  is obtained from page 0 instead of the active page.
   This affects SCTTYWIN, SCTTYWRT, and VISCROLL.  

                              TROUBLESHOOTING

Please also read Appendix A in the manual.  Here are some additional symptoms 
and explanations to consider when diagnosing problems:  

Abnormal program termination.  
   This can occur if the startup module cannot allocate sufficient space  for
   the stack and the near heap.  If you are initializing the global variables 
   "_stklen" and "_heaplen", try smaller values.  
Text appears in incorrect color.  
   When  MNDSTROY  and  WNREMOVE  set  the  Turbo C text window to the entire
   screen, they do not change the text color.  Therefore text  later  emitted
   via  the  Turbo  C  text  window functions may have the colors of the last
   selected window.  
Asynch overruns during mouse operations.  
   Since the Microsoft mouse operates via hardware interrupts, it is possible 
   that mouse movements and button presses and releases  will  cause  overrun
   errors during the arrival of data at the serial ports.  First test whether 
   overruns  occur  without  the use of Turbo C TOOLS.  The internal function
   MOCATCH disables  interrupts  for  a  significant  period  of  time;  this
   function  is  installed  when  you use HLDISP, HLREAD, MOCHECK, MNREAD, or
   WNREAD.  If overruns are a severe problem, contact Blaise Computing.  







Blaise Computing Inc.         March 31, 1989                          Page  5




Turbo C TOOLS/2.0                                                Version 6.00


                        EXTRACTING THE SOURCE CODE

The  source  code  for  the  library  is  supplied  in  the   form   of   two
self-extracting  archive  programs:   TCTSRC1.EXE  and TCTSRC2.EXE.  The full
contents of both files are listed in the PACKING.LST file.  

To extract the contents of either file, set the current drive  and  directory
to the drive and directory where you want to put the files.  Then execute the 
self-extracting archive program, as in the following example:  

   a:tctsrc1

To extract only a selection of the files in an archive, you can use ambiguous 
filenames,  as  in  the following example, which extracts all the source code
for the window (WN) functions:  

   a:tctsrc2 wn*.*


                         PRINTING THE SOURCE CODE

The CONCAT.COM utility for printing the  source  code  is  described  in  the
manual's  chapter  on "Using Turbo C TOOLS".  As an additional aid, lists are
provided for each category of source files.  For  example,  the  ST.FIL  file
lists  all  the source files for the string (ST) functions.  You can use this
file when formatting all the ST files as follows:  

   concat st.prt <st.fil


                    REMOVING TABS FROM THE SOURCE CODE

The source modules were saved with consecutive blank spaces compressed to tab 
characters, with tab stops every eight characters.  The EXPAND.COM utility is 
provided to expand the tabs back to blank spaces if you  wish.   It  is  also
useful for removing tabs from help source files.  

EXPAND  is a filter:  it obtains its input from the standard input device and
writes  its  output  to  standard  output.   Therefore  you  can  use  it  by
redirecting standard input and output, as in the following example:  

   expand <wnexampl.c >wnexampl.ntb

The  resulting  file  WNEXAMPL.NTB  has tab characters expanded to strings of
blanks.  

                         REBUILDING THE LIBRARIES

A batch file, BUILDLIB.BAT, and  a  librarian  response  file,  LIBRESP,  are
provided  to  make  it  easy to reconstruct the Turbo C TOOLS libraries.  The
batch file makes a number of assumptions.  If these are not  appropriate  for
your  environment, you should alter the batch file to match your system.  The
assumptions are:  

   All source files (.C and .ASM) and the LIBRESP file  are  in  the  current
      directory; 


Blaise Computing Inc.         March 31, 1989                          Page  6




Turbo C TOOLS/2.0                                                Version 6.00


   BEGINASM.MAC and COMP_T2?.MAC are in the MAC subdirectory; 
   The C language header files (.H) are in the \TURBOC\INCLUDE directory; 
   The   Turbo   C  command-line  compiler  (TCC.EXE),  the  Turbo  Assembler
      (TASM.EXE), and the  Turbo  Librarian  (TLIB.EXE)  are  either  in  the
      current  directory  or in one of the directories specified in the PATH=
      environment entry.  

BUILDLIB is invoked with the command 

   buildlib model

where "model" is either s, m, c, l, or h (in  lower  case)  to  indicate  the
memory  model.   The  batch file compiles and assembles all source modules by
category (to make it easy for you to recompile  just  some  categories),  and
then   invokes  the  librarian  to  create  the  library.   For  example,  to
reconstruct the small memory model library, issue the command 

   buildlib s


                      REBUILDING THE SAMPLE PROGRAMS

The MAKEXPLS file is designed for use with the Turbo MAKE utility to  rebuild
the eighteen sample programs.  It makes the following assumptions:  

   The sample program source files are in the current directory.  
   All  Turbo  C  and  Turbo  C TOOLS header files are in the \TURBOC\INCLUDE
      directory.  
   All libraries are in the \TURBOC\LIB directory.  
   The  Turbo  C  command-line  compiler  (TCC.EXE)  and  the  Turbo   Linker
      (TLINK.EXE)  are  either  in  the  current  directory  or in one of the
      directories listed in the PATH= environment entry.  
   For rebuilding TCWIN.EXE, the batch file MAKTCWIN.BAT must  be  either  in
      the  current directory or in one of the directories listed in the PATH=
      environment entry; also the proper  NW_T2?.OBJ  file  must  be  in  the
      \TURBOC\LIB directory.  

Invoke  the  make  file  by issuing the following command to rebuild a single
example program 

   make -fmakexpls mnexampl.exe

or the following command to rebuild all eighteen:  

   make -fmakexpls













Blaise Computing Inc.         March 31, 1989                          Page  7




Turbo C TOOLS/2.0                                                Version 6.00


                     C AND ASSEMBLY MODULES AND MACROS

The following tables list which functions are  implemented  in  C,  which  in
assembly  language,  and  which  are macros defined in the header files.  The
tables also list certain anomalous source files.  

The following functions are implemented as ordinary C functions, each in  its
corresponding .C file:  

   edbase    isprep    mnhilit0  mospeed   scttywin  wnchgevn  wnremevn
   edbuffer  isremove  mnhilite  mostat    scttywrt  wncover   wnremove
   edchgkey  isreserv  mnitem    prcancel  scwrap    wncreat0  wnresprv
   edinitky  issense   mnitmkey  prerror   scwrite   wncurmov  wnretevn
   edreduce  ivdetect  mnkey     prgetq    stpcvt    wncurpos  wnretinf
   edremkey  ivdisabl  mnlitem   prinstld  stpexpan  wncurset  wnrevupd
   edretinf  ivinstal  mnlitkey  prspool   stpjust   wncursor  wnscrblk
   edretkey  ivsense   mnmchitm  scapage   stptabfy  wncurtrk  wnscrlbr
   edsetcur  ivvecs    mnmchkey  scattrib  stpxlate  wndstroy  wnscroll
   edwrap    kbequip   mnmouse   scblink   stschind  wnerror   wnseldev
   edwrrect  kbextend  mnmstyle  scborder  utansi    wnforget  wnselect
   edzapkey  kbflush   mnread    scbox     utcrit    wngetimg  wnsetbuf
   fldolock  kbgetkey  mnvalmn0  scchgdev  utctlbrk  wngetopt  wnsetcur
   flflush   kbkcflsh  mnvdisp   scclrmsg  utgetclk  wnhide    wnsetopt
   flgetdta  kbpoll    moavoid   sccurset  utmovmem  wnhoriz   wnshoblk
   fllock    kbquery   mobutton  sccurst   utnulchk  wninitev  wnunhide
   flnorm    kbqueue   mocheck   scequip   utsafcpy  wnneedup  wnupdate
   flprompt  kbset     mocurmov  scgetvid  utsleep   wnnupblk  wnvalev0
   flputdta  kbstuff   moequip   scmode    utspkr    wnorigin  wnvalno0
   flremvol  kbwait    mogate    scmode4   utsqzscn  wnovrlap  wnvalwi0
   flretvol  mmctrl    mogetmov  scnewdev  uttim2tk  wnpgadd   wnvdisp
   flsetvol  mmfirst   mograph   scpages   uttk2tim  wnpgrem   wnwrap
   hlclose   mmsize    mohandlr  scpal1    utunsqz   wnpimblk  wnwrbuf
   hldisp    mnatr     mohard    scpalett  viatrect  wnpoll    wnwrrect
   hlfrindx  mncreat0  mohide    scpclr    vihoriz   wnprintf  wnwrstrn
   hllookup  mndefkey  moinst    scpgcur   viptr     wnputbor  wnwrttyx
   hlopen    mndisabl  mojump    scread    virdsect  wnputsen  wnzapevn
   hlpas2c   mndlitms  molitpen  screstpg  viscroll  wnquery   wnzapsen
   hlread    mndlkeys  mopreclk  scrows    viwrsect  wnrdbuf
   iscurprc  mndstroy  morange   scsavepg  wnatrblk  wnread
   isinstal  mnfindsl  mosoft    scsetvid  wnatrstr  wnredraw

The  following  functions  are  implemented in assembly language, each in its
corresponding .ASM file:  

   iscall    ivctrl    kbready   utamove   utmodel
   isdispat  kbplace   mocatch   utintflg  vidirec0












Blaise Computing Inc.         March 31, 1989                          Page  8




Turbo C TOOLS/2.0                                                Version 6.00


The following routines are implemented as macros, defined in the header files 
shown here:  

   Macro     Definition  |  Macro       Definition  |  Macro     Definition
   --------  ----------  |  ----------  ----------  |  --------  ----------
   edfield   bedit.h     |  utdosmajor  butil.h     |  utpokeb   butil.h
   isgetvec  bintrupt.h  |  utdosminor  butil.h     |  utpoken   butil.h
   isputvec  bintrupt.h  |  utdosrdy    butil.h     |  utpokew   butil.h
   isresext  bintrupt.h  |  utdosver    butil.h     |  utpspseg  butil.h
   kbscanof  bkeybrd.h   |  uthibyte    butil.h     |  utrange   butil.h
   kbstatus  bkeybrd.h   |  uthinyb     butil.h     |  utseg     butil.h
   max       butil.h     |  uthiword    butil.h     |  utsign    butil.h
   min       butil.h     |  utinp       butil.h     |  utskip    butil.h
   mncreate  bmenu.h     |  utintoff    butil.h     |  utsound   butil.h
   mndsplay  bmenu.h     |  utinton     butil.h     |  utspkoff  butil.h
   mnlread   bmenu.h     |  utlobyte    butil.h     |  utspkon   butil.h
   moreset   bmouse.h    |  utlonyb     butil.h     |  uttofar   butil.h
   prchar    bprint.h    |  utlowlim    butil.h     |  uttofaru  butil.h
   prinit    bprint.h    |  utloword    butil.h     |  utuplim   butil.h
   prstatus  bprint.h    |  utmax       butil.h     |  utwdlong  butil.h
   scclrmsg  bscreens.h  |  utmin       butil.h     |  vidspmsg  bvideo.h
   scpage    bscreens.h  |  utnorm      butil.h     |  virdrect  bvideo.h
   utabs     butil.h     |  utnybbyt    butil.h     |  viwrrect  bvideo.h
   utalarm   butil.h     |  utoff       butil.h     |  wnattr    bwindow.h
   utalloc   butil.h     |  utoutp      butil.h     |  wncreate  bwindow.h
   utbound   butil.h     |  utpeekb     butil.h     |  wndsplay  bwindow.h
   utbyword  butil.h     |  utpeekn     butil.h     |  wnfield   bwindow.h
   utchknil  butil.h     |  utpeekw     butil.h     |  wnwrstr   bwindow.h
   utcopy    butil.h     |  utplong     butil.h     |  wnwrtty   bwindow.h

The following functions do not have their own source files, but  are  defined
in the source files shown here:  

   Function  Defined     |  Function  Defined
   --------  ----------  |  --------  ----------
   b_vidcpy  scnewdev.c  |  ivdisk    ivctrl.asm
   ivbiosky  ivctrl.asm  |  ivdos     ivctrl.asm
   ivcbreak  ivctrl.asm  |  ividle    ivctrl.asm
   ivcom1    ivctrl.asm  |  ivkeybd   ivctrl.asm
   ivcom2    ivctrl.asm  |  ivtimer   ivctrl.asm

The following source files are not named for any individual function:  

   BNOMOUSE.ASM defines substitute versions of MOCHECK, MOHIDE, and MOPRECLK.  
      See  the  section  "Excluding  Mouse  Support"  in the chapter on mouse
      support functions (prefix MO).  
   NW.C  defines  versions  of  WNCHKDM,  WNCMOVE,  WNGETATR,  WNSETATR,  and
      WNSETWIN  that  make contact with the Turbo C text window.  NW.C is the
      source module for the NW_T2?.OBJ files.  
   WNNATVWN.C defines versions of WNCHKDM, WNCMOVE, WNGETATR,  WNSETATR,  and
      WNSETWIN  that  do  not  use the Turbo C text window.  It is the source
      file for the WNNATVWN.OBJ modules in the libraries.  






Blaise Computing Inc.         March 31, 1989                          Page  9




Turbo C TOOLS/2.0                                                Version 6.00



The following source files define no functions:  

   KBSCANOF.C defines the  b_keycod[]  array,  which  is  referenced  by  the
      KBSCANOF macro.  
   MOVARS.C  defines the global variables b_mocatch, b_modispat, b_mohanmask,
      and b_momask.  
   SCPAGE.C defines the b_curpage global variable, which is referenced by the 
      SCPAGE macro.  

                            CONSTRUCTION NOTES

All C modules and example programs were compiled  with  version  2.0  of  the
Turbo  C  command-line  compiler  (TCC)  using  the  following  switches:  -c
(compile only), -m (memory model), -O (optimize jumps), and  -w  (enable  all
warnings).   All  assembler  modules  were  assembled with version 1.0 of the
Turbo Assembler (TASM) using the /mx and /w+ switches.   The  libraries  were
built  with  version  2.0  of the Turbo Librarian (TLIB) using the /0 switch.
(The /0 librarian  switch  omits  unnecessary  debugging  and  autodependency
information.) 

The example programs were linked with TLINK version 2.0 using no switches.  


(For a list of supplied files and the diskettes and subdirectories where they 
reside, see the PACKING.LST file.) 

                         === End of README.DOC ===






























Blaise Computing Inc.         March 31, 1989                          Page 10
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
015 Turbo C RUN TIME LIB 1×HD
RAW 1.raw
原始 1.IMG
016 Turbo C++ V1.00 8×DD
README [展开]
                   Welcome to Turbo C ++
                   ---------------------

This README file contains important information about Turbo C++.
For the latest information about Turbo C++, the accompanying
programs, and the manuals, read this file in its entirety.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the Documents
7.  TCTOUR
8.  Files on the Disks


 1. HOW TO GET HELP
-------------------

  If you have any problems, please read this file, the
  HELPME!.DOC file, and the Turbo C++ manuals first. If you still
  have a question and need assistance, help is available from
  the following sources:

  1. Type GO BPROGB on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed special
     offer, and write for full details on how to receive a free
     IntroPak containing a $15 credit toward your first month's on-
     line charges.

  2. Check with your local software dealer or users' group.

  3. Write to us at the following address:

     Borland International
     Turbo C Technical Support
     1800 Green Hills Road
     P.O. Box 660001
     Scotts Valley, CA  95066-0001

     Please remember to include your serial number or we will be
     unable to process your letter.

  4. If you have an urgent problem that cannot wait and you have sent
     in the license agreement that came with the package, you may
     call the Borland Technical Support Department at (408) 438-5300.
     Please have the following information ready before calling:

     a. Product name and serial number on your original distribution
        disk.  Please have your serial number ready or we will be
        unable to process your call.

     b. Product version number. The version number for Turbo C++
        can be displayed by pressing Alt-Space/A.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number can
        be determined by typing VER at the MSDOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


2. INSTALLATION
---------------

  You MUST use the INSTALL program to install Turbo C++.
  The files on the distribution disks are all archived and
  have to be properly assembled.  You cannot do this by
  hand!

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  You should read the rest of this README file to get further
  information about this release before you do the installation.

3. FEATURES
-----------

  - C++!  Turbo C++ offers you the full power of C++ programming,
    implementing the entire C++ 2.0 language as defined by the AT&T
    specification.  To help you get started, we're also including
    C++ class libraries.

  - ANSI C!  A 100% implementation of the ANSI C standard.

  - Borland's new Programmer's Platform. The Programmer's Platform
    is a new generation user interface; it goes beyond the old
    integrated environment (IDE) to provide access to the full range of
    programs and tools on your computer. It includes:

    -- mouse support

    -- multiple overlapping windows

    -- a multi-file editor

    -- user-configurable menu entries to run other programs
      without leaving Turbo C++

  - VROOMM (overlay manager): VROOMM lets you overlay your code
    without complexity. You select the code segments for
    overlaying; VROOMM takes care of the rest, doing the work
    needed to fit your code into 640K.

  - An online tour of the new Programmer's Platform.

  - Online hypertext help, with copy-and-paste program examples
    for practically every function.

  - Many indispensable library functions, including heap checking
    functions and a complete set of complex and BCD math functions.

4. IMPORTANT INFORMATION
------------------------

  C++ STREAM I/O

  The standard libraries have all the functions needed for
  the IOSTREAM libraries defined in the AT&T 2.0 spec.  If
  you have code that uses the STREAM libraries from the 1.0
  spec, you must link with the appropriate OLDSTRMx.LIB
  file, where 'x' is replaced by the letter for the
  appropriate memory model:

    oldstrms.lib -- small model
    oldstrmc.lib -- compact model
    oldstrmm.lib -- medium model
    oldstrml.lib -- large model
    oldstrmh.lib -- huge model

  EXAMPLE PROGRAMS

  When you are running any example programs that come with
  .PRJ files, if you didn't use the standard directories when
  you installed Turbo C++ you will have to change the .PRJ file
  to reflect your actual directory setup.  Do this from inside
  TC with Alt-O/D.

  Included in this release is source code to the GREP2MSG and
  TASM2MSG filter programs (in EXAMPLES), which give an example of
  how to write your own custom filter programs to use with the
  Transfer Menu (see page 64 of the User's Guide).

  COMPILER AVAILABLE MEMORY

  To achieve better capacity and flexibility, Turbo C++ uses VROOMM,
  which means that the reported "available memory" number (both with
  the standalone compiler and in the integrated development environment)
  reflects the actual amount of RAM available to VROOMM for the entire
  compiler. What this means is that even when the reported available
  memory approaches or is equal to zero, much larger files can still
  be compiled at the expense of compilation speed. In the Programmer's
  Platform, when memory available for VROOMM reaches zero, the compile
  box will show "Swapping ...." as the amount of available memory; the
  standalone compiler will merely report "Available memory 0" in this case.



  OVERLAYS AND ASSEMBLY LANGUAGE

  Just as all "C" modules to be linked into an overlaid executable must
  be compiled with the -Y compiler switch, all assembly language modules
  need to be assembled with the -O TASM switch. If an assembly file is
  the result of a TCC compilation, TCC automatically passes -O to the
  assembler whenever -Y is used. Modules written entirely in assembly
  language must be assembled with the -O switch (using TASM version 2.0
  or newer) if they are to be linked into an overlaid executable. Failure
  to follow these rules may result in the overlaid program failing
  unpredictably when run.

  IMPORTANT NOTES

  - If you use inline assembler in C++, TASM 1.0 may not be able
    to assemble the generated code.  If you run into this problem,
    you will need to update to version 2.0 of TASM.

  - Functions that return structures now take a hidden
    parameter that contains the address where the returned
    structure is to be placed.  If you are writing assembler
    code to link with C code you must be sure to allow for
    this extra parameter.

  - When debugging mouse application the Options|Debugging|Display
    Swapping option should be set to "Always" for best results.

  - When running under DOS versions 2.0 or 2.1, you should not rename
    TC, TCC, or TLINK.  They need to know their names to be able to
    load their overlays.

  - TEMC will not allow a macro to contain multiple commands that return
    exit codes.

  - C++ programs that use either of the stream libraries will not link
    correctly if you compile with the -K command-line switch (default
    char is unsigned) or with the corresponding option in the Programmer's
    Platform ( Alt-Options/Compiler/Code Generation/Unsigned characters).

  - Example 2 for the signal() function in the Reference Guide uses
    an extension to signal() that is not supported in C++, so the
    example will not compile as a C++ program.

  - If you have selected Save Desktop in the Turbo C++ Programmer's
    Platform, everything that you put into the clipboard will be saved
    as part of the desktop.  After several sessions this may make
    starting the Programmer's Platform take longer.  If this happens
    to you (you will see the message "Loading Desktop" while the
    Programmer's Platform is loading), you can speed things up by
    deleting unneeded things from the clipboard.  Just select Alt-E/S
    to show the clipboard, and start deleting.

  - In some rather unusual situations when stepping through
    a program in the IDE you may get a message saying "Line
    too complex".  This means that the Programmer's Platform
    can't step past the line it is currently on.  To continue
    stepping, you should move the cursor to the next line in
    the program and press F4 (Go to Cursor).  If the line where
    this message occurs is the last line in a function, use
    the Call Stack (Ctrl-F3 or Alt-D/C) to see where the function
    was called from, select the calling function (by moving the
    highlight to it and pressing Enter), move the cursor to the
    next line, and press F4.

  - If you change your keyboard settings using the Editor Commands 
    choice in TCINST, you may lose some key assignments.  To avoid
    this, use the following procedure:
        1)  don't save the modifications to the EXE; instead invoke
            TCINST with the name of your configuration file, by default
            TCCONFIG.TC.
        2)  create a file containing the following line:
               Tab: SmartTab;
            and invoke TEMC with the name of that file and the name
            of your configuration file as arguments.
    As an example, you can follow these exact steps:
             CD \TC\BIN
             TCINST TCCONFIG.TC
	     <make changes, save, and exit TCINST>
	     COPY CON TEMP.TEM
             Tab: SmartTab;
             <Ctrl-Z>
             TEMC TEMP.TEM TCCONFIG.TC
         

5. Testing Your Expanded Memory: EMSTEST.COM
--------------------------------------------

  Included with Turbo C++ is a program to test your Expanded Memory
  hardware and software. If you have problems using Turbo C++ with
  your EMS, type EMSTEST at the DOS prompt and follow the instructions.

6.  Corrections to the Documents
--------------------------------

  GETTING STARTED

  - Chapter 4, Page 61: The operator precedence and associativity
    tables should be corrected to match the following information.
    Note there are now sixteen precedence categories. Operators within
    a category have the same precedence. Precedence goes from highest
    to lowest; therefore, any operator in category 1 has precedence
    over any operator in categories 2 through 16; any operator in
    category 2 has precedence over any operator in categories 3
    through 16, and so on.


    Operators                            Associativity
    --------------------------------------------------
    1.  ( )  [ ]   ->   ::   .           Left to right
    2.  !  ~  +  -  ++  --  &  *
        (typecast)  sizeof  new  delete  Right to left
    3.  .*   ->*                         Left to right
    4.  *   /    %                       Left to right
    5.  +   -                            Left to right
    6.  <<  >>                           Left to right
    7.  <   <=   >   >=                  Left to right
    8.  ==  !=                           Left to right
    9.  &                                Left to right
    10. ^                                Left to right
    11. |                                Left to right
    12. &&                               Left to right
    13. ||                               Left to right
    14. ?: (conditional expression)      Right to left
    15. =  *=  /=  %=  +=  -=  &=
        ^=  |=  <<=  >>=                 Right to left
    16. ,                                Left to right


  USER'S GUIDE

  - Chapter 1, Page 69: The $TASM macro has another macro inside it; to
    wit, $SAVE CUR.

  - Chapter 4: There is one new command-line compiler option: -V.

    The -V option controls the C++ virtual tables. You have four
    variations of the -V option:

    -V      Smart C++ virtual tables
    -Vs     Local C++ virtual tables
    -V0     External C++ virtual tables
    -V1     Public C++ virtual tables

    -V is equivalent to the Programmer's Platform command Smart C++ Virtual
      Tables. Use it when you want to generate C++ virtual tables and
      inline functions not expanded inline so that only one instance of a
      given virtual table or inline function will be included in the
      program. This produces the smallest and most efficient executables,
      but uses .OBJ and .ASM extensions only available with TLINK 3.0 and
      TASM 2.0 or newer.

    -Vs is equivalent to the Programmer's Platform command Local C++ Virtual
      Tables. Use it when you want Turbo C++ to generate local virtual
      tables and inline functions not expanded inline such that each module
      gets its own private copy of each virtual table or inline function it
      uses. This option uses only standard .OBJ (and .ASM) constructs, but
      produces larger executables.

    -V0 and -V1 cooperate to produce global virtual tables.  If you don't
      want to use the Smart or Local options (-V or -Vs), you can use -V0
      and -V1 to produce and reference global virtual tables.  -V0 generates
      external references to virtual tables and inline functions not
      expanded inline.  -V1 produces global tables and inline functions.
      One of the modules in the program must be compiled with the -V1 option
      to supply the definitions for the virtual tables and inline functions.
      All other modules should be compiled with the -V0 option to refer to
      that Public copy of the virtual tables and inline functions.

  - Appendix A, Page 230: The WindowsMenu macro is now called the
      WindowMenu macro (no s). It works as documented.

  PROGRAMMER'S GUIDE

  - In Chapter 1, on page 75: the operator precedence table should be
    changed in accordance with the notes above for the Getting Started
    manual.

  - In Chapter 4, on page 200, just after the table, add the following
    information. It replaces the list of information on segment pointers
    on pages 199-200, and also replaces the two sentences (on page 200,
    following the table) describing the _seg modifier.

      Segment pointers

      Use _seg in segment pointer type declarators. The resulting pointers
      are 16-bit segment pointers. The syntax for _seg is:

        <datatype> _seg *<identifier> ;

      For example,

        int _seg *name;

      Any indirection through <identifier> has an assumed offset of 0. In
      arithmetic involving segment pointers the following rules hold true:

      1. You can't use the ++, --, +=, or -= operators with segment
         pointers.

      2. You cannot subtract one segment pointer from another.

      3. When adding a near pointer to a segment pointer, the result is a
         far pointer that is formed by using the segment from the segment
         pointer and the offset from the near pointer. Therefore, the two
         pointers must either point to the same type, or one must be a pointer
         to void. There is no multiplication of the offset regardless of the
         type pointed to.

      4. When a segment pointer is used in an indirection expression, it is
         also implicitly converted to a far pointer.

      5. When adding or subtracting an integer operand to or from a segment
         pointer, the result is a far pointer, with the segment taken from
         the segment pointer and the offset found by multiplying the size
         of the object pointed to by the integer operand. The arithmetic is
         performed as if the integer were added to or subtracted from the far
         pointer.

      6. Segment pointers can be assigned, initialized, passed into and out
         of functions, compared and so forth. (Segment pointers are compared
         as if their values were unsigned integers.) In other words, other
         than the above restrictions, they are treated exactly like any other
         pointer.


  - Also in Chapter 4, page 200, just before "Declaring functions to be
    near or far," add the following text:

      Declaring far objects

      You can declare far objects in Turbo C++. For example,

        int far x = 5;
        int far z;
        extern int far y = 4;
        static long j;

      Turbo C++ creates a separate segment for each far object. The
      command-line compiler options -zE, -zF, and -zH (which can also be set
      using #pragma option) affect the far segment name, class, and group,
      respectively. When you change them with #pragma option, you can change
      them at any time and they apply to any ensuing far object declarations.
      Thus you could use the following sequence to create a far object in a
      specific segment:

        #pragma option -zEmysegment -zHmygroup -zFmyclass
        int far x;
        #pragma option -zE* -zH* -zF*

      This will put x in segment MYSEGMENT 'MYCLASS' in the group 'MYGROUP',
      then reset all of the far object items to the default values. Note
      that by using these options, several far objects can be forced into a
      single segment:

        #pragma option -zEcombined -zFmyclass
        int far x;
        double far y;
        #pragma option -zE* -zF*

      Both x and y will appear in the segment COMBINED 'MYCLASS' with no
      group.

  LIBRARY REFERENCE

  - The examples printed in the Library Reference may not
    necessarily match what's in the help file and on the
    distribution disks. The help file and distribution disk
    examples are the most current.

  - Page 43: The return value for function bioskey has been changed. For
    subfunction ONE the return value is zero if no key is waiting,
    0xFFFF(-1) if control-break was pressed, or the normal code for
    any other key.

7. TCTOUR
---------

  TCTOUR is a visual introduction to the new Programmer's Platform.
  Since the Programmer's Platform is Borland's newest interface,
  taking the tour is time well spent even if you are already familiar
  with other Borland products.

  To start the tour, type "TCTOUR" from the DOS prompt.

  - TCTOUR remembers what lessons a user has completed, and if
    you quit a lesson before completing it, what screen # you last saw.
    This information is stored in a .USR file, and can be recalled by
    starting TCTOUR again and typing your user name at the prompt just
    after the color rainbow.
  
    Lessons that a user has completed should show up without shading
    on the main TCTOUR menu.  Only new users (no .USR file) get the
    excursion through "Using Tour."

  - The Navigator can be pulled up within any lesson file and within
    "Using TCTOUR", but nowhere else.  It is pulled up by pressing the
    Control key, which allows you to move forward, backward, to the
    beginning of a lesson, to the end of a lesson, to the lesson summary,
    to the main menu, to get a reminder, to quit. Ctrl-B (backwards) is
    disabled when you are on the first slide of a lesson.

  - Hints (or Reminders) pop up in any lesson files and in "Using TCTOUR".
    They pop up if:
        1) you wait 30 - 60 seconds before doing any action
        2) you press Ctrl-R
        3) you make an incorrect action

8. FILES ON THE DISKS
---------------------

  DISK 1
  ------
  INSTALL   EXE - Installation program
  README    COM - Reads this README
  UNZIP     EXE - Program to unzip the .ZIP files
  HELP      CA2 - File used by install program to create TCHELP.TCH

  TOUR      ZIP - Turbo C++ demonstration program
     TCTOUR    EXE - Demonstration program
     TCTOUR    OVL - Overlay for TCTOUR.EXE
     TCTOUR0   CBT - Data file for demonstration program
     TCTOUR1   CBT - Data file for demonstration program
     TCTOUR2   CBT - Data file for demonstration program
     TCTOUR3   CBT - Data file for demonstration program
     TCTOUR_M  CBT - Data file for demonstration program
     TCTOUR_P  CBT - Data file for demonstration program
     TCTOUR_S  CBT - Data file for demonstration program
     TCTOUR_U  CBT - Data file for demonstration program

  README - This file

  DISK 2
  ------
  TC        CA1 - File used by install program to create TC.EXE

  DISK 3
  ------
  HELP      CA1 - File used by install program to create TCHELP.TCH

  DISK 4
  ------
  TC        CA2 - File used by install program to create TC.EXE

  TCALC     ZIP -  Tcalc sources and doc
     TCALC     C   - TurboCalc main program source code
     TCALC     DOC - TurboCalc documentation
     TCALC     H   - The header file for TurboCalc
     TCALC     PRJ - The TurboCalc project file
     TCDISPLY  C   - TurboCalc screen display source code
     TCINPUT   C   - TurboCalc input routines source code
     TCOMMAND  C   - TurboCalc commands source code
     TCPARSER  C   - TurboCalc input parser source code
     TCUTIL    C   - TurboCalc utilities source code

  TCC       ZIP - Command-line compiler
     TCC       EXE - Command-line version of Turbo C++ Compiler


  DISK 5
  ------
  BGI       ZIP - Graphics drivers
     ATT       BGI - Graphics driver for ATT400 graphics card
     BGIDEMO   C   - Graphics demonstration program
     BGIOBJ    EXE - Conversion program for fonts and drivers
     CGA       BGI - Graphics driver for CGA
     EGAVGA    BGI - Graphics driver for EGA and VGA
     GOTH      CHR - Font for gothic character set
     HERC      BGI - Graphics driver for Hercules
     IBM8514   BGI - Graphics driver for IBM 8514 graphics card
     LITT      CHR - Font for small character set
     PC3270    BGI - Graphics driver for PC3270
     SANS      CHR - Font for sans serif character set
     TRIP      CHR - Font for triplex character set

  BIN1      ZIP - Miscellaneous binary files
     CPP       EXE - Turbo C++ preprocessor
     EMSTEST   COM - Utility program for detecting expanded memory
     MAKE      EXE - Program for managing projects
     TCINST    EXE - Installation program for TC.EXE
     TLIB      EXE - Borland Turbo Librarian
     TLINK     EXE - Borland Turbo Linker

  BIN2      ZIP
     GREP      COM - Turbo GREP program
     GREP2MSG  EXE - GREP filter program for IDE
     OBJXREF   COM - Object file cross-reference utility
     PRJCNVT   EXE - Utility to convert from Turbo C 2.x project files
                     to Turbo C++ project files
     TASM2MSG  EXE - TASM filter program for IDE
     TEMC      EXE - Turbo editor macro compiler
     THELP     COM - Pop-up utility to access TCHELP.TCH
     TOUCH     COM - Program that updates a file's date and time
     TRIGRAPH  EXE - Trigraph conversion utility


  DISK 6
  ------
  HLIB      ZIP - Huge model libraries
     C0H       OBJ - Huge model startup code
     CH        LIB - Huge model run-time library
     MATHH     LIB - Huge model math library
     OLDSTRMH  LIB - C++ 1.x stream library for huge model

  LLIB      ZIP - Large model libraries
     C0L       OBJ - Large model startup code
     CL        LIB - Large model run-time library
     MATHL     LIB - Large model math library
     OLDSTRML  LIB - C++ 1.x stream library for large model

  SLIB      ZIP - Small model libraries
     C0S       OBJ - Small model startup code
     C0T       OBJ - Tiny model startup code
     CS        LIB - Small model run-time library
     MATHS     LIB - Small model math library
     OLDSTRMS  LIB - C++ 1.x stream library for small model

  STARTUP   ZIP - Startup code files
     BUILD-C0  BAT - Batch file for building the startup code modules
     C0        ASM - Assembler source for startup code
     RULES     ASI - Assembler include file for interfacing with
                     Turbo C++


  DISK 7
  ------
  CLIB      ZIP - Compact model libraries
     C0C       OBJ - Compact model startup code
     CC        LIB - Compact model run-time library
     MATHC     LIB - Compact model math library
     OLDSTRMC  LIB - C++ 1.x stream library for compact model

  EXAMPLES  ZIP - Example programs
     BARCHART  C   - C example file
     CPASDEMO  C   - C example module for the Turbo Pascal - Turbo C++
                     interface demonstration
     CPASDEMO  PAS - Pascal program that demonstrates Turbo Pascal -
                     Turbo C++ interface
     CIRCLE    CPP - C++ example file
     CIRCLE    PRJ - Project file for CIRCLE.CPP
     CTOPAS    CFG - Command-line configuration file for Turbo Pascal -
                     Turbo C++ interface
     CTOPAS    PRJ - Project file for use with TC.EXE that
                     creates Turbo C++ modules in the correct format
                     for linking with Turbo Pascal programs
     DCOPY     CPP - C++ example file
     DEF       CPP - C++ example module used by DICTION.CPP
     DEF       H   - Header file for DEF.CPP
     DEF2      CPP - C++ example - another version of DEF.CPP
     DEF2      H   - Header file for DEF.CPP
     DICTION   CPP - C++ example program
     DICTION   H   - Header file for DICTION.CPP
     DYNPOINT  CPP - C++ example file
     DYNPOINT  PRJ - Project file for DYNPOINT.CPP
     EX??????  PRJ - C++ example programs
     EX??????  PRJ - Project files for C++ example programs
     FIGDEMO   CPP - C++ example file
     FIGDEMO   PRJ - Project file for FIGDEMO.CPP
     FIGURES   CPP - C++ example file
     FIGURES   H   - Header file for FIGURES.CPP
     FILTER    H   - Header file for TASM2MSG.C and GREP2MSG.C
     GAME      C   - C example - simulated baseball game
     GETOPT    C   - Parses options in command line
     GREP2MSG  C   - Example program for Turbo C++ filters
     HELLO     C   - Example Turbo C++ program
     INTRO???  C   - Examples from Getting Started manual
     LIST      CPP - C++ example program - linked list implementation
     LIST      H   - Header file for LIST.CPP
     LIST2     CPP - Another version of LIST.CPP
     LIST2     H   - Header file for LIST2.CPP
     LISTDEMO  CPP - C++ example file
     LISTDEMO  PRJ - Project file for LISTDEMO.CPP
     MATHERR   C   - Source code for handling math library exceptions
     MCIRCLE   CPP - C++ example file
     MCIRCLE   PRJ - Project file for MCIRCLE.CPP
     PIXEL     CPP - C++ example file
     PIXEL     PRJ - Project file for PIXEL.CPP
     PLANETS   C   - C++ graphics example
     PLOTEMP   C   - C graphics example
     PLOTEMP1  C   - C graphics example - bar graphs
     PLOTEMP2  C   - C example - modification of PLOTEMP1.C
     PLOTEMP3  C   - C example - modification of PLOTEMP2.C
     PLOTEMP4  C   - C example - modification of PLOTEMP3.C
     PLOTEMP5  C   - C example - modification of PLOTEMP4.C
     PLOTEMP6  C   - C example - modification of PLOTEMP5.C
     POINT     CPP - C++ example program
     POINT     H   - Header file for POINT.CPP
     POINT2    CPP - C++ example program
     SALESTAG  C   - C example from Chapter 4 of Getting Started
     SOLAR     C   - C example from Chapter 4 of Getting Started
     STACK     CPP - C++ example program - stack implementation
     STACK     H   - Header file for STACK.CPP
     STACK2    CPP - Another version of STACK.CPP
     STACK2    H   - Header file for STACK.CPP
     STRING    CPP - C++ example program
     TASM2MSG  C   - Example program for Turbo C++ filters
     VCIRC     CPP - C++ example program
     VCIRC     PRJ - Project file for VCIRC.CPP
     VPOINT    CPP - C++ example program
     VPOINT    H   - Header file for VPOINT.CPP
     XSTRING   CPP - C++ example program

  INCLUDE   ZIP - Turbo C++ header files
     ????????  H   - Header files

  MLIB      ZIP - Medium model libraries
     C0M       OBJ - Medium model startup code
     CM        LIB - Medium model run-time library
     MATHM     LIB - Medium model math library
     OLDSTRMM  LIB - C++ 1.x stream library for medium model


  DISK 8
  ------
  DOC       ZIP - Miscellaneous documentation
     HELPME!   DOC - Answers to commonly asked questions
     OLDSTR    DOC - Information about C++ 1.x streams
     UTIL      DOC - Information about Turbo C++ utilities
     THELP     DOC - Information about THELP.EXE

  CLASSEXM  ZIP - C++ class library example files
     DIRECTRY  CPP - Directory class example file
     DIRECTRY  H   - Header file for DIRECTRY.CPP
     DIRECTRY  PRJ - Project file for DIRECTRY.CPP
     FILEDATA  CPP - FileData class example file
     FILEDATA  H   - Header file for FILEDATA.CPP
     LOOKUP    CPP - Lookup table example
     LOOKUP    PRJ - Project file for LOOKUP.CPP
     QUEUETST  CPP - Queue class example file
     QUEUETST  PRJ - Project file for QUEUETST.CPP
     REVERSE   CPP - String class example file
     REVERSE   PRJ - Project file for REVERSE.CPP
     STRNGMAX  CPP - String class example file
     STRNGMAX  PRJ - Project file for STRNGMAX.CPP
     TESTDIR   CPP - Directory example file

  CLASSINC  ZIP - Include files for C++ class library
     ????????  H   - Header files

  CLASSLIB  ZIP - C++ class library
     TCLASSS   LIB - Library file for C++ classes

  CLASSSRC  ZIP - Source files to C++ class library
     ABSTARRY  CPP - Abstract array class definitions
     ARRAY     CPP - Basic array class definitions
     ASSOC     CPP - Association class (used by dictionary class)
     BAG       CPP - Bag class definitions
     BUILD     BAT - Batch file for building class library
     CLASSLIB  DOC - C++ class library documentation
     CLASSLIB  RSP - Response file for building class library
     COLLECT   CPP - Ordered collection class definitions
     CONTAIN   CPP - Container class definitions
     DBLLIST   CPP - Doubly linked list class definitions
     DEQUE     CPP - Dequeue definitions for queue class
     DICT      CPP - Dictionary class definitions
     HASHTBL   CPP - Hash table class definitions
     LDATE     CPP - Date class definitions
     LIST      CPP - List class definitions
     LTIME     CPP - Time class definitions
     OBJECT    CPP - Base class for other objects
     QUEUE     CPP - Queue class definitions
     SET       CPP - Set class definitions
     SORTABLE  CPP - Sorted table class definitions
     SORTARRY  CPP - Sorted array class definitions
     STACK     CPP - Stack class definitions
     STRNG     CPP - String class definitions

  XLIB      ZIP - Math and utility libraries
     EMU       LIB - 8087 emulator library
     FP87      LIB - 8087 library
     GRAPHICS  LIB - Graphics library
     OVERLAY   LIB - Overlays library
     WILDARGS  OBJ - Object code for module to expand wildcard arguments
017 Turbo C++ V3.00 5×HD
README [展开]
		   Welcome to Turbo C++ Version 3.0
		   --------------------------------

  This README file contains important information about Turbo C++.
  For the latest information about Turbo C++ and its accompanying
  programs and manuals, read this file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the On-line Help


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Turbo C++ manuals first. If you still have a question and need
  assistance, help is available from the following sources:

  1. Type GO BPROGB on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
     catalog of entries.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 438-5300. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Turbo
        C++ can be displayed by pressing Alt-H/A.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.



 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Turbo C++. The
  files on the distribution disks are all archived and have to be
  properly assembled.  You cannot do this by hand!

     IMPORTANT!

     If you want to create backup copies of your disks, make sure 
     that you put the backup on the same type of disk as the 
     source. If you're backing up the 5 1/4 inch 1.2 Mb disk set, 
     use only blank 5 1/4 inch 1.2 Mb disks for backup, etc. The 
     installation will not work correctly if you do not use the 
     same media type for the backup disks.

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  -  This INSTALL handles the installation of both the compiler
     and tools in one operation, and allows several new 
     configuration options.

  -  After installation, make sure you insert \TC\BIN - or
     whatever you selected as your BIN directory - into
     your DOS path so the executable files can be found.

  -  Note: The list of files is contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  -  After your initial installation, you can run INSTALL again to
     add elements you omitted the first time. Just select the
     items you want to add in the INSTALL options screen. Because
     some things you may want to save could be overwritten, review
     the following items to make sure you don't lose important
     information:

     1.  Selecting CMD (the Command-line compiler) causes an
	 overwrite of any existing turboc.cfg & tlink.cfg file
	 with path information provided in that INSTALL session.
	 Any switches other than -L (library path) and -I
	 (include path) will not be preserved.

     2.  Selecting IDE will reset the include and library paths 
         to those provided in that INSTALL session.

     3.  By selecting any one of the following, the help file
	 paths and choices for THELP.CFG will reflect the current
	 session's installation choices:

	      a. CMD - command-line compiler
	      b. IDE - integrated environment

     4.  Alterations to headers or startup files will be
	 overwritten if any library models are selected.

     In general, any selection you make of something installed
     earlier will cause an overwrite of the earlier version
     without prompting.


  You should read the rest of this README file to get further
  information about this release before you do the installation.


 3. FEATURES
------------

  Turbo C++ 3.0 includes big speed and capacity gains.  Here are
  some important features found in this version:

  - DPMI services for increased capacity

  - C++ 2.1 support, including the new nested class specifications,
    and support of C++ 3.0 templates.

  - Support for pre-compiled headers for substantial time savings
    during subsequent recompiles.

  - Color syntax highlighting

  - Unlimited Undo/Redo replacing previous 'restore line' capability

  - Added library functions for compatibility with other runtime
    libraries, and addition of support for long double parameters
    in math functions. (Please refer to On-line Help for details.)

  - New MAKE features. (Please see the MAKE chapter in the User's 
    Guide for details.)

  - Added BGI (Borland Graphics Interface) fonts and support. (See
    "New BGI fonts" below.)

  - A resident DPMI kernel program, DPMIRES.EXE. (See "DPMI" below.)

  - THELP now allows you to switch between help files without
    unloading and reloading. (Please see UTIL.DOC for details.)


NEW BGI FONTS
-------------

Several new fonts have been added to the Borland Graphics Interface:


Name            Value   Description
-------------------------------------------
SCRIPT_FONT     5       Stroked script font
SIMPLEX_FONT    6       Stroked simplex font
TRIP_SCR_FONT   7       Stroked triplex script font
COMPLEX_FONT    8       Stroked complex font
EURO_FONT       9       Stroked European font
BOLD_FONT       10      Stroked bold font

The fonts in the BGI now support the full ASCII character set.

DPMI
----

TC.EXE, TCC.EXE, and TLINK.EXE are now hosted under DPMI.  These files
support protected-mode compilation and replace the files of the same
name in Turbo C++ Second Edition.  Turbo C++ Second Edition should
continue to be used in instances where real-mode compilation is desired.

If you encounter a "machine not in database" message while attempting
to run the compiler, run the DPMIINST program to add your machine
configuration to the DPMI server database.

This version includes a resident DPMI host program, DPMIRES.EXE, that
allows you to preload the server before invoking TC, TCC, or any other
DPMI-hosted executables.  If you want to run such hosted EXEs in a
Windows Standard Mode DOS window, you should run DPMIRES.EXE before
loading Windows. To do this, enter the following commands at DOS:
 
  set DPMIMEM=MAXMEM 2000
  dpmires
  win /s

If you want to limit the amount of extended memory used by the
DPMI-hosted executables, an environment variable called DPMIMEM
can be set to do so. For instance, the command

  set DPMIMEM=MAXMEM 2000

reserves about 2 Mb of memory for DPMIRES. The number after MAXMEM
can be adjusted, but cannot be lower than 1000.

The hosted executables cannot spawn each other when SHARE is loaded.
For instance, if you run MAKE on a file which in turn calls MAKE
again, you will get a sharing violation. In this specific case,
you can call the real mode version, MAKER, within the given makefile,
and a sharing violation won't occur.


 4. IMPORTANT INFORMATION
-------------------------

  - When using Brief with THELP, make sure to use Brief's -p
    switch to ensure that the thelp window will be visible.

  - We recommend that you use the following mouse drivers with
    this product:

       Microsoft Mouse version 7.04 or later;
       Logitech Mouse version 5.01 or later;
       Genius Mouse version 9.06 or later.

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:

	extern void _floatconvert();
	#pragma extref _floatconvert

    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.


  COMPILER

  - The default extension for source files to the command-line
    compiler is .CPP; that is, if you enter

       TCC -c test

    the compiler will search for test.cpp, and give an error if a
    file of that name cannot be found. If you want to have the
    command-line compiler assume a .c extension and C language
    source, use the command-line option -P-c. For more
    information, see "The command-line compiler" in the User's
    Guide.

  - Note that the Generate COMDEFs choice under
    Options|Compiler|Advanced Code Generation and the -Fc command-
    line option are only supported in the C language. Linker errors
    will result if you attempt to use a communal variable in C++.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - Note that SYMDEB creates .SYM files for use in debugging;
    Turbo C++ creates .SYM files for pre-compiled headers. They
    are not compatible and collisions should be avoided by
    setting the name of the pre-compiled header file (using -
    H=filename).

  - There is now full support of distance modifiers (near and
    far) used for class member pointers. Here are two sample
    declarations and their meanings:

       void (A::* far var) ();

    this is a far variable 'var' of type 'void (A::*)()';

       void (far A::* var) ();

    this is a 'default distance' variable 'var' of type
	'void (far A::*)()'

  - If you use C++ templates, and use a separate TLINK command
    line rather than letting TCC invoke TLINK, you should make
    sure that you turn on case-sensitive links with the /c switch.

  - Incorrect code will be generated if you have a statement of
    the type "A op B" where either A or B is an enum and the 
    other operand is a long, and "op" is one of the following 
    operators: 
  
       +=  -=  *=  /=  |  ^

    The same problem applies when the operands are a non-integer
    enum and an int.  Cast the enum to long or int respectively
    to solve the problem.


  IDE

  - When debugging a mouse application the Options|Debugger|Display
    Swapping option should be set to "Always" for best results.

  - In the IDE, the mouse cursor is turned off during compilation
    for performance improvements.

  - To run or debug an overlaid application in the IDE when DOS
    SHARE is loaded, the .EXE file must first be marked as
    read-only.  Otherwise, unload SHARE.

  - Pressing Control-Break twice while running or stepping a
    program from the IDE may cause unexpected results.  In
    particular, avoid pressing Control-Break twice in response
    to any function requiring input (scanf, getch, etc.).  To
    break out of a program during such interaction, press
    Control-Break and enter a valid input string.  Control will
    be returned to the IDE.


  EXAMPLE PROGRAMS

  - When you are running any example programs that come with .PRJ
    files, if you didn't use the standard directories when you
    installed Turbo C++ you will have to change the .PRJ file
    to reflect your actual directory setup.  Do this from inside
    Turbo C++ with Alt-O/D.


  LINKING C++ WITH C

  - Linking C++ modules with C modules requires the use of a
    linkage specification.  Prototypes for C functions within C++
    modules must be in one of the following forms:

	extern "C" declaration
	extern "C" { declarations }

    For example, if a C module contains these functions:

	char *SCopy(char*, char*);
	void ClearScreen(void)

    they must be declared in a C++ module in one of the
    following ways:

	extern "C" char *SCopy(char*, char*);
	extern "C" void ClearScreen(void);

      or

	 extern "C" {
	    char *SCopy(char*, char*);
	    void ClearScreen(void);
	 }

    Failure to do so will result in "Undefined symbol" errors
    during link. For further examples, see the standard header
    files.


  CLASS LIBRARY

  - Two versions of the class libraries are provided; one that 
    includes debug information and one that does not. Small 
    versions of each are provided, and project files are 
    provided to build other models.  Note that the non-debug 
    versions are used by default.  If you would like to use the
    debug version, copy it to the non-debug file.  For instance, 
    in the CLASSLIB\LIB directory, copy TCLASDBS.LIB to 
    TCLASSS.LIB for the small model version.

  - In some places the User's Guide incorrectly refers to the 
    online documentation for the Container Class Libraries as 
    CONTAIN.DOC.  The correct file name is CLASSLIB.DOC, located
    in the ..\DOC directory.


 5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM
---------------------------------------------

  Included with Turbo C++ is a program to test your Expanded
  Memory hardware and software. If you have problems using
  Turbo C++ with your EMS, type EMSTEST at the DOS prompt and
  follow the instructions.

 6. CORRECTIONS TO THE ON-LINE HELP
-----------------------------------

  The information for alloca is not available in on-line help.
  The correct help screen should read as follows:

  ------------------------------------------------------------------
  Function: alloca
  Allocates temporary stack space

  Syntax:
  #include <malloc.h>
  void *alloca(size_t size);

  Remarks:
  alloca allocates bytes on the stack.  The allocated space is 
  automatically freed up when the calling function exits.

  Return value:
    o On success (if enough stack space is available), returns a
      pointer to the allocated stack area.
    o On error, returns null.

  Argument size is the number of bytes allocated on the stack.

  Because alloca modifies the stack pointer, do no place calls to 
  alloca in an expression that is an argument to a function.

  NOTE: If the calling function does not contain any references to 
  local variables in the stack, the stack won't be resotored 
  correctly when the function exits and your program will crash.
  To ensure that the stack is restored correctly, use this code in 
  your calling function:

    char *p;
    char dummy[1];

    dummy[0] := 0;;
      ...
    p = alloca(nbytes);

  Because alloca is not defined in ANSI C, you should use malloc 
  instead.

  See also:
  malloc
  ------------------------------------------------------------------




018 TURBO C++ FOR WINDOWS 5×HD
README [展开]
                    Welcome to Turbo C++ for Windows
                    --------------------------------

  This README file contains important information about Turbo C++
  for Windows. For the latest information about Turbo C++ for
  Windows and its accompanying programs and manuals, read this
  file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the Documents


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Turbo C++ for Windows manuals first. If you still have a
  question and need assistance, help is available from the
  following sources:

  1. Type GO BPROGB on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
     catalog of entries.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 438-5300. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Turbo
        C++ for Windows can be displayed by pressing Alt-H/A.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the MSDOS prompt, or
        use the Windows utility WINVER for the Windows version.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Turbo C++ for
  Windows. The files on the distribution disks are all archived
  and have to be properly assembled.  You cannot do this by hand!

  Turbo C++ for Windows includes a Windows installation program
  that will create the appropriate subdirectories and copy the
  software on to your hard disk. To run the installation program
  from Drive A type

      WIN A:INSTALL

  or, if Windows is active, select the program manager's File|Run
  command and type

      A:INSTALL

  Note that this version of the installation program runs under
  Windows standard or 386 Enhanced modes only. After
  installation, make sure you insert \TCWIN\BIN - or whatever you
  selected as your BIN directory - into your DOS path
  so the DLL and executable files can be found.

  If you use a screen saver such as After Dark or Borland's Screenery,
  you should disable it before running the INSTALL program.

  -  Note: The list of files is contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  -  Make sure you select the "LAN Windows configuration" option
     if Windows is executed from your network.

  -  If you have previously installed Resource Workshop, make sure
     that you remove the directory of that version from your path. The
     version included on these disks supercedes previous versions.

  -  If you use a Windows command shell other than Program Manager,
     you may not get a Turbo C++ group installed for Windows. If
     you don't, use File|New in Program Manager (or the equivalent
     command in your shell) to add items for the following files:

            Description    EXE file       Default path
            -----------    --------       ------------
            TURBO C++      TCW.EXE        C:\TCWIN\BIN
            WORKSHOP       WORKSHOP.EXE   C:\TCWIN\BIN
            IMPORT LIB     IMPLIBW.EXE    C:\TCWIN\BIN
            DEBUG          TDW.EXE        C:\TCWIN\BIN
            FCONVERT       FCONVERT.EXE   C:\TCWIN\BIN


  You should read the rest of this README file to get further
  information about this release before you do the installation.


 3. FEATURES
------------

  Turbo C++ for Windows 3.0 includes complete support for Windows
  programming, as well as big speed and capacity gains.  Here are
  some important features:

  - A Windows hosted IDE (TCW.EXE), including a class hierarchy 
    browser.

  - Turbo Debugger support for breakpoints with multiple conditions
    and for viewing selectors.

  - C++ 2.1 support, including the new nested class specifications,
    and support of C++ 3.0 templates.

  - Added library functions for compatibility with other runtime 
    libraries, and addition of support for long double parameters
    in math functions. (Please see the Library Reference for details.)

  - EasyWin, which includes library support for stdio.h and
    conio.h functions under Windows. (Please see the Turbo C++
    for Windows User's Guide for details.)

  - FCONVERT.EXE -  Converts OEM to ANSI Character Set

      DOS text files use the OEM character set; Windows text
      files generally use the ANSI character set. The demo
      program, FCONVERT.EXE converts data back and forth between
      these formats. The only text files that will be affected
      are those containing international characters (ASCII values
      above 128) like the umlaut, etc. Not all OEM characters are
      present in the ANSI character set, and vice versa. 
      Therefore, converting between these character sets may
      produce a mapping that is not reversible.  Refer to your
      Windows documentation for further information about ANSI
      vs. OEM character sets.

  - IMPLIBW.EXE, a Windows-hosted import librarian.

  - ObjectWindows Library, an application framework that will ease
    the development of applications for Windows.

 4. IMPORTANT INFORMATION
-------------------------

  - Turbo C++ for Windows only supports Protected Mode Windows target
    files.

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:

        extern void _floatconvert();
        #pragma extref _floatconvert

    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.

  - Make sure that you use the Options|Compiler|Entry|
    Windows <DLL> explicit functions exported when using the
    fastcall modifier. The same applies when using the fastcall
    compilation option (Options|Compiler|Entry|Register.)


  COMPILER

  - Note that the Generate COMDEFs choice under
    Options|Compiler|Code Generation is only supported in the C
    language. Linker errors will result if you attempt to use a
    communal variable in C++.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - Note that SYMDEB creates .SYM files for use in debugging;
    Turbo C++ for Windows creates .SYM files for pre-compiled
    headers. They are not compatible and collisions should be
    avoided by setting the name of the pre-compiled header file
    (using -H=filename).

  - There is now full support of distance modifiers (near and
    far) used for class member pointers. Here are two sample
    declarations and their meanings:

       void (A::* far var) ();

    this is a far variable 'var' of type 'void (A::*)()';

       void (far A::* var) ();

    this is a 'default distance' variable 'var' of type
	'void (far A::*)()'

  - You must use "smart callbacks" - Options|Compiler|Entry/Exit
    Code|Windows smart callbacks - if your application uses
    classes whose code is in a DLL. This applies especially in
    the case of a class implemented in an EXE which is derived
    from another implemented in a DLL, which normally applies for
    users of OWL and other object-oriented class libraries.

  IDE

  - If you run File|Printer setup from the IDE (or another Windows
    application which has printer setup support) under the Windows
    3.0 debugging kernel, you will get a System Error from Windows.
    You must switch to the NODEBUG version to run this option.

  EXAMPLE PROGRAMS

  - When you are running any example programs that come with .PRJ
    files, if you didn't use the standard directories when you
    installed Turbo C++ for Windows you will have to change the
    .PRJ file to reflect your actual directory setup.  Do this
    from inside Turbo C++ for Windows with Alt-O/D.


  LINKING C++ WITH C

  - Linking C++ modules with C modules requires the use of a
    linkage specification.  Prototypes for C functions within C++
    modules must be in one of the following forms:

        extern "C" declaration
        extern "C" { declarations }

    For example, if a C module contains these functions:

        char *SCopy(char*, char*);
        void ClearScreen(void)

    they must be declared in a C++ module in one of the
      following ways:

        extern "C" char *SCopy(char*, char*);
        extern "C" void ClearScreen(void);

      or

         extern "C" {
            char *SCopy(char*, char*);
            void ClearScreen(void);
         }

    Failure to do so will result in "Undefined symbol" errors
      during link. For further examples, see the standard header
      files.


  TURBO DEBUGGER

  - You cannot set a window message breakpoint by using a window
    handle in an ObjectWindows application. You can, however, set
    window message breakpoints with ObjectWindows applications:
    enable ObjectWindows support (use TDWINST and choose
    Options|Source Debugging|OWL Window Messages), then use
    window object names to set message breakpoints.

  - The first time a program is run under TDW, mouse messages are
    processed normally. However, on every subsequent execution of
    that program, you must press a key on the keyboard before
    mouse messages can be processed.


  Super VGA support
  =================

  TDW handles most of the popular 2, 4, and 16-color high-
  resolution Super VGA modes. If your card isn't supported
  correctly, or if you want to debug in a 256-color mode, you'll
  need to use a special Super VGA DLL.

  Currently, the following DLLs are supplied with your language
  compiler to support these SVGA cards and modes:

    TSENG.DLL  (TSENG ET-3000 /ET-4000 based cards)
       640x480x256
       800x600x256
       1024x768x256


    ATI.DLL  (ATI VGA Wonder card)
       640x480x256    (See the NOTE below)
       800x600x256

  To use a Super VGA DLL, copy the appropriate DLL file into the
  directory that contains the TDW executable (usually the BIN
  subdirectory of your language compiler directory) and rename it
  to TDVIDEO.DLL.

  TDW, upon loading, looks for TDVIDEO.DLL in the same directory
  that harbors TDW.EXE. If it finds the file, TDW accesses the
  DLL as it's needed. TDW makes calls to the DLL to handle the
  entire video screen switching context. The DLL accomplishes the
  screen switching by allocating a buffer as it gets loaded.
  Graphic screen contents are then saved to this buffer as TDW
  enters text mode. The DLL restores the graphics screen from
  this buffer as TDW exits text mode. Memory allocated for the
  buffer is freed when the DLL is unloaded.

  If there is an error loading TDVIDEO.DLL, or if the DLL doesn't
  support the selected card or mode, TDW will report the error in
  a Windows dialog box. When this happens, TDW will unload
  TDVIDEO and exit. If this situation occurs, delete TDVIDEO.DLL,
  or select a mode that is supported by the DLL.

  If you're debugging an application that's been built with
  EasyWin, you may see incorrect screen painting as you step over
  lines of code that make calls to STDIO functions. In this case,
  edit the TDVIDEO.INI file and set the Int2FAssist option to
  "yes" (see the NOTE below).

  NOTE: The ATI mode 640x480x256 and EasyWin applications may
    require some special handling. An option called Int2FAssist
    in the TDVIDEO.INI file allows this mode to work correctly on
    most systems. The behaviour is as follows: When you set
    "Int2FAssist=yes", TDVIDEO makes Windows tell all sub-windows
    on the screen to re-paint themselves as the DLL is loaded.
    This allows the user screen to be viewed when Stepping,
    Tracing, or Running your application. It will not, however,
    switch to the user screen when you press <Alt-F5> since TDW
    is still in control (it doesn't allow Windows to process any
    messages). If you also set "SaveWholeScreen=yes", then <Alt-
    F5> will show the user screen (TDVIDEO will now copy the
    screen for you). The drawback to enabling SaveWholeScreen is
    that it will take longer to Step or Trace if TDW needs to
    switch back to the user screen for that particular
    instruction. Also, extra messages are getting passed to your
    application that normally would not be passed. This may
    effect the debugging of certain pieces of code (like finding
    a bug in an owner-draw procedure). In these cases, you will
    not want to use this video mode.


  TDVIDEO.INI
  -----------

  You can create the file TDVIDEO.INI with any ASCII text editor.
  This file is used to control how TDVIDEO.DLL functions.
  TDVIDEO.INI must be located in WINDOW's main directory (usually
  C:\WINDOWS). The options in TDVIDEO.INI are handled by the DLL
  itself and are therefore subject to change with newer versions
  of the DLLs. The DLLs use the following options, written in any
  order, under the heading [VideoOptions]:

    SaveWholeScreen --    default = 'no'
    Int2FAssist     --    default = 'no'
    DebugFile       --    default = ''  (no logging will occur)

  The SaveWholeScreen and Int2FAssist can be set to either 'yes'
  or 'no'. DebugFile can be either blank, or it can be set to a
  specific filename.

  *** SaveWholeScreen ***

    This option, normally set to 'no', determines whether the
    entire screen (512k - 64k from 8 planes) will be saved (the
    entire graphics screen is cleared when switching to it) or if
    only the top 32K of planes 0 through 3 will be saved (the
    entire screen is NOT cleared when switching modes.)

    Saving the whole screen is rarely needed, but is provided in
    case you're using a nonstandard card that needs the whole
    screen to be saved.

  *** Int2FAssist ***

    This option, normally set to 'no', tells TDVIDEO, to make a
    special Int 2F call before switching video modes. This call
    tells the current Windows screen driver (VGA.DRV for standard
    VGA mode) what's happening. The desired side-effect of this
    call is to make Windows tell all of its child windows to re-
    paint themselves. This option is provided only for support on
    an ATI Super VGA video mode and for applications built using
    EasyWin (see NOTE above). However, be aware, that this option
    can affect the other supported modes if it's enabled (use
    this option only if absolutly necessary).

  *** DebugFile ***

    TDVIDEO.DLL normally doesn't save any debugging information.
    If you're having problems using a special DLL, the DebugFile
    option can be used to specify the path and filename of a log
    file. Information logged to this file can be used if you need
    to contact Borland's Technical Support. Information logged
    consists of the Date/Time, the version of the DLL, the name
    of the Windows screen driver that is currently in use, the
    state of all .INI options, and a listing of all the calls to
    the DLL's functions.

    For example, if you want your DLL to save the entire screen
    and log information to a file named C:\WINDOWS\TDVIDEO.LOG,
    create a file called TDVIDEO.INI in the WINDOWS directory
    that contains the following commands:

      [VideoOptions]
      SaveWholeScreen=yes
      DebugFile=c:\windows\tdvideo.log


  CLASS LIBRARY

  - If you used the add(), addAt(), or getItemsInContainer()
    member functions of the Array class in Turbo C++ for Windows
    2.0 applications, note that their behavior has changed
    slightly. The following rules apply to these and related
    functions:

      1. add() will insert its argument at the lowest available
         location in the Array.  This location is known as the
         "insertion point".

      2. detach() will remove its argument from the Array, and if
         that Object is located below the insertion point, it
         will move the elements above the Object being removed
         and below the insertion point down one position, so that
         the elements below the insertion point remain
         contiguous.  The insertion point, of course, moves down
         one.

      3. if the location specified in a call to addAt() is below
         or at the insertion point, the elements above the
         specified location and below the insertion point are
         moved up one position, and the Object is inserted.  The
         insertion point moves up one.

      4. if the location specified in a call to addAt() is above
         the insertion point, the Object is inserted at that
         location, replacing any Object that may have been placed
         there previously.

      5. getItemsInContainer() returns the number of elements
         below the current insertion point.  If you use addAt()
         to add elements above the insertion point, they will not
         affect the value returned by getItemsInContainer(). 
         This is a change from the behavior in the previous
         version of the class library.

  - Only the small and dynamic link class libraries are supplied
    in this release. If you need other models, use the project
    files supplied under the CLASSLIB\OBJS subdirectories to
    build them. For instance, to build a medium model library
    without templates, create a directory called M under
    \CLASSLIB\OBJS, and copy the TCLASSL.PRJ file from the L
    directory to a file called TCLASSM.PRJ in your new M
    directory. Then load TCW.EXE, used Project|Open to open
    TCLASSM.PRJ, and change Options|Compiler|Code generation|
    Model to Medium.

  OWL

  - You must rebuild the class libraries in the appropriate model
    for the intended OWL model if they don't already exist - see
    paragraph above.

  - Note that you must use the TWindow member function AssignMenu
    to assign a window's Attr.Menu member and to load a menu for
    that window.

 6.  CORRECTIONS TO THE DOCUMENTS
---------------------------------

ObjectWindows User's Guide
--------------------------
  Chapter 2, "Stepping through Windows"
  -------------------------------------
    Page 22
    -------
      The sentence that begins "These libraries are located in the library 
      directories listed in the following table..." should instead read
      "Table 2.2 lists the file names of the static ObjectWindows library 
      and static container class library for each supported memory model."

  Chapter 11, "Dialog objects"
  ----------------------------
    Page 151
    --------
      In the TSampleWindow::GetName fragment shown, a line is in error. 
      The line that begins
         if ( ExecDialog(new TInputDialog(this...
      should read
         if ( GetApplication()->ExecDialog(new TInputDialog(this...

  Chapter 12, "Control objects"
  ----------------------------
    Page 158+
    ---------
      Although it doesn't specifically state so, TListBox and its member
      functions can be used with both single- and multiple- selection
      list boxes.
019 Borland C++ V2.00 7×HD
README [展开]
                         Welcome to Borland C++ 
                         ----------------------

  This README file contains important information about Borland C++.
  For the latest information about Borland C++, Turbo Debugger,
  TASM, and their accompanying programs and manuals, read this
  file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the Documents


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Borland C++ manuals first. If you still have a question and
  need assistance, help is available from the following sources:

  1. Type GO BPROGB on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Write to us at the following address:

     Borland International
     Borland C Technical Support
     1800 Green Hills Road
     P.O. Box 660001
     Scotts Valley, CA  95066-0001

     Please remember to include your serial number or we will be
     unable to process your letter.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 438-5300. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Borland
        C++ can be displayed by pressing Alt-Space/A.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the MSDOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Borland C++. The
  files on the distribution disks are all archived and have to be
  properly assembled.  You cannot do this by hand!

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  -  This INSTALL handles the installation of both the compiler
     and debugger and tools in one operation, and allows several
     new configuration options.

  -  Note: The list of files is now contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  You should read the rest of this README file to get further
  information about this release before you do the installation.


 3. FEATURES
------------

  Borland C++ includes complete support for Windows programming,
  as well as big speed and capacity gains.  Here are some
  important features found in this version:

 COMPILER
---------
  - Windows! We now produce EXE and DLL files for Windows 3.0.

  - Protected mode versions of the Programmer's Platform and the
    command-line compiler for greater capacity.

  - Precompiled header files for faster compilation.

  - A built-in assembler.

  - A full undo for the Programmer's Platform editor

  - The complete Windows API online reference is now provided in the
    Borland C++ help file.

  - Included on these disks is Turbo Debugger for Windows, a new
    version of Turbo Debugger that supports Windows debugging.
  
  - Switches to control the amount of extended/expanded memory to
    be used by the compiler.

  - Switches to control various aspects of program data for
    compatibility with other compilers.

  - A new utility called TRANCOPY which copies transfer items
    between projects.

  - Note: Because the compiler programs in Borland C++ are named
    BCC.EXE and BC.EXE, you'll need to rename them if you have
    batch or make files that use those names, or you'll have to
    change the macros or batch files to supply the correct name.

 TURBO DEBUGGER
---------------
  - Turbo Debugger for Windows (TDW.EXE), uses "display swapping"
    to allow you to debug Windows applications using one machine
    and a single display.

  - TDW automatically and transparently lets you debug Windows
    DLLs. There is a new module view selection dialog that allows
    you to manually control this feature; press F3 with a Windows
    module loaded, and F1 to find out more about the options.

  - The View/Log viewer allows logging of global and local heap
    information, as well as the modules currently loaded by
    Windows.

  - The View/Windows Messages viewer allows you to collect or
    break on Windows messages based on window-routine identifiers
    or on handles.  In addition, you can filter out specific
    classes of messages to log, allowing you to view exactly what
    you're interested in.

  - WREMOTE.EXE allows remote debugging of Windows applications
    between two systems.  WRSETUP.EXE allows you to set up your
    link speed and comm port settings from within Windows.
    (Note that this is a Windows-compatible application)

  - The utilities have been modified to handle your Windows
    programs. See MANUAL.TNT in your DOC directory for detailed
    information about using the Turbo Debugger Utilities.

  - The File/Get Info window displays global memory information
    based on banked and non-banked memory.

 TURBO PROFILER
---------------
  - Allows you to view text files from within the user interface.


 TURBO ASSEMBLER
----------------
  - Two versions of Turbo Assembler have been provided. TASMX.EXE
    can be run from the Windows DOS prompt, and takes advantage
    of the DOS Protected Mode Interface (DPMI) that Windows 3.0
    provides. This allows the assembler to take advantage of
    Windows' memory management and to dramatically increase
    capacity.  TASM.EXE uses standard DOS memory, and is provided
    for operation in environments without DPMI support such as
    DOS and the non-386 enhanced modes of Windows.

  - DPMILOAD.EXE handles loading TASM in environments where DPMI
    support is a part of the operating system, such as when
    running from the Windows 3.0 DOS prompt. DPMILOAD.EXE must
    exist on some path within your path statement. TASMX will
    automatically detect if DPMI support is present and then use
    DPMILOAD to load itself. If DPMI support is not available,
    (or if the DPMILOAD.EXE program is not present), TASMX will
    load TASM.EXE and Turbo Assembler will run in normal DOS
    memory.


 4. IMPORTANT INFORMATION
-------------------------
  Be sure to look at the files in the DOC subdirectory for more
  information about Borland C++. These files have additional
  information about the compiler, utilities, debugger and
  assembler.


  TURBO DEBUGGER

  -  The following options have been removed from TDW.EXE (and
     TD.EXE when using remote debugging):

      - File Menu
          DOS Shell
          Resident
          Table relocate
      - View Menu
          Keystroke Recording
      - Breakpoints Menu
          Hardware breakpoint

  -  TDREMOTE/TDRF now have four different link speeds, which
     will conflict with any previous versions of TDRF or TDREMOTE
     you may have unless you make sure that the settings are the
     same on both sides.  These link speeds also apply to WREMOTE
     for Windows.

  -  TDINST now has a -w command line option which allows you to
     create TDCONFIG.TDW files (or save the configuration to
     TDW.EXE) for customized configurations of TDW.  You must use
     the -w switch to create config files for TDW.EXE.  TDW will
     not read in your existing TDCONFIG.TD files.

  -  Many of the command-line options for TDW which cannot be
     used have been eliminated, such as setting overlay area
     sizes, remote debugging, and the graphics display options.
     Use the -? option when loading TDW to see the available
     options, or consult the manual.

  -  The BCWDEMOA example is used to demonstrate the
     Ctrl+Alt+Sysrq feature of TDW and is not meant to be run
     directly under Windows. If you do this you will not be able
     to gain control of Windows again and will have to reboot
     your system. There may be problems using the Ctrl+Alt+Sysrq
     feature with certain keyboards or environments.  Some
     keyboards use Alt+Sysrq to activate the Sysrq scan code;
     therefore Ctrl+Alt+Sysrq is not possible.  Also, there may
     be problems using this Windows feature for Zenith.

  -  TDW is a text-based debugger which runs in the graphics mode
     environment of Windows.  It supports only the standard
     graphics display modes: CGA, EGA, VGA, and Hercules
     monochrome graphics.  It does not currently support other
     video modes, such as the one that supports Super-VGA.
     However, the DOS versions of TD (TD.EXE, TD286.EXE, etc.)
     are now capable of using this support.

  -  When you are debugging your application, TDW has control.  You
     cannot use Ctrl+ESC while in TDW to gain control of Windows.
     You can, however, use Ctrl+ESC normally while your program is
     active and Windows has control.

  -  TDW does not load more than one symbol table at a time.  If
     your program uses more than one symbol table you can load it
     explicitly or, if your program makes a call to another
     symbol table, TDW will load that table automatically when
     tracing (F7) over the calling instruction.

  -  TDW is only able to use the -p command-line option or
     configuration option to activate the mouse if Windows is
     installed to use a mouse. If no mouse is specified to be
     used in Windows, TDW will not recognize it either.

  -  THELP is a help menu TSR (Terminate & Stay Resident) program
     meant to work in the DOS environment.  It will not work when
     running TDW under Windows. The normal TDW help is still
     available.

  -  If you wish to debug a DLL loaded by the Windows LoadLibrary
     function, you need to use the Add DLL option of the
     View|Module dialog to add this DLL to the DLLs & programs
     pane. Once the DLL  has been added, make sure that you
     select Yes for Load symbols and  Yes for Debug startup.


  TURBO ASSEMBLER

  -  In order to take advantage of DPMI support feature, you must
     be running Windows in 386 enhanced mode. (You may tell if
     Windows 3.0 is in 386 enhanced mode by selecting ABOUT from
     the Program Manager. It will tell you how much memory is
     available to Windows, and it will say that Windows is in
     "real mode", "standard mode", or "enhanced 386 mode". If you
     are running Windows on a 386 machine, and Windows is not
     currently operating in enhanced mode, please see your
     Windows manual for additional details on running Windows 3.0
     in enhanced mode. Enhanced mode is not available when
     Windows 3.0 is run on processor less than a 386.) Also,
     DPMILOAD.EXE must be somewhere in your path.

  -  TASMX is not designed to be a Windows application, so you
     must enter a Windows 3.0 DOS prompt to use TASMX. Then to
     use TASMX, just type TASMX wherever you would normally type
     TASM. All command-line options are the same as the previous
     version of TASM. When run within the Windows 3.0 DOS prompt,
     TASMX will be able to use almost all the free memory in the
     system, if neccessary, for assembling large programs.

  -  TASM 2.5 will still run without Windows 3.0 DPMI. If DPMI
     support is not found, you must have TASM.EXE somewhere in
     your path. Then if you load TASMX, it will run TASM.EXE
     within the normal 640K DOS environment. Turbo Assembler will
     not be able to assemble programs larger than normal without
     DPMI support.

  -  We encourage you to try TASMX on all your assembler source
     code, both from the normal DOS prompt and from within a
     Windows 3.0 DOS prompt. TASMX should be able to handle all
     programs that work properly with TASM 2.01.

  WHITEWATER RESOURCE TOOLKIT

    You can edit C header files using the Header Editor. The file
    to edit may be created in any editor, or as the output of a
    resource editing session. There are restrictions on syntax,
    however:

    - In a C header (.H file), the Header editor supports only
      #define statements defining constants with a decimal or
      hexadecimal value; an error will result if you attempt to
      edit a header file containing anything else except
      comments. If you save the result of an edit of a file
      containing comments, the comments will be removed.


  C++ STREAMS

      This will be our last version of C++ to support version
      1.2 streams (which currently requires the use of the
      OLDSTRM?.LIB files.)

  EXAMPLE PROGRAMS

      When you are running any example programs that come with
      .PRJ files, if you didn't use the standard directories when
      you installed Borland C++ you will have to change the .PRJ
      file to reflect your actual directory setup.  Do this from
      inside Borland C++ with Alt-O/D.


  LINKING C++ WITH C

      Linking C++ modules with C modules requires the use of a
      linkage specification.  Prototypes for C functions within C++
      modules must be in one of the following forms:

        extern "C" declaration
        extern "C" { declarations }

      For example, if a C module contains these functions:

        char *SCopy(char*, char*);
        void ClearScreen(void)

      they must be declared in a C++ module in one of the
      following ways:

        extern "C" char *SCopy(char*, char*);
        extern "C" void ClearScreen(void);

      or

         extern "C" {
            char *SCopy(char*, char*);
            void ClearScreen(void);
         }

      Failure to do so will result in "Undefined symbol" errors
      during link. For further examples, see the standard header
      files.


  IMPORTANT NOTES

  - The default extension for source files is .CPP; that is, if
    you enter

       BCC -c test

    the compiler will search for test.cpp, and give an error if a
    file of that name cannot be found. If you want to have the
    command-line compiler assume a .c extension and C language
    source, use the command-line option -P-c. For more information,
    see Chapter 6, "The command-line compiler", in the User's Guide.

  - Borland C++ only supports Protected Mode Windows target
    files. Make sure to use the /t option when using the Resource
    Compiler if you want to enforce Protected Mode usage.

  - Functions that return structures now take a hidden parameter
    that contains the address where the returned structure is to
    be placed.  If you are writing assembler code to link with C
    code you must be sure to allow for this extra parameter.

  - When debugging a mouse application the Options|Debugging|Display
    Swapping option should be set to "Always" for best results.

  - TEMC will not allow a macro to contain multiple commands that
    return exit codes.

  - Example 2 for the signal() function in the Reference Guide uses
    an extension to signal() that is not supported in C++, so the
    example will not compile as a C++ program.

  - If a directory contains only one project file, invoking
    Borland C++ without any parameters will open that project. 
    If this behavior is not desired, a second "dummy" project
    file must be placed in that directory or the current project
    file must be removed.

  - Note that the Generate COMDEFs choice under
    Options|Compiler|Code Generation and the -Fc command-line
    option are only supported in the C language. Linker errors
    will result if you attempt to use a communal variable in C++.

  - When linking in libraries that have COMDEFs, be sure to link
    in at least one .OBJ file that contains a COMDEF. The TDUMP
    utility can be used to determine if a .LIB file contains a
    COMDEF.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - When using Brief with THELP, make sure to use Brief's -p
    switch to insure that the thelp window will be visible.

  - Note that SYMDEB creates .SYM files for use in debugging; Borland C++
    creates .SYM files for pre-compiled headers. They are not compatible
    and collisions should be avoided by setting the name of the pre-compiled
    header file (using -H=filename).

  - If you have an application that uses multiple DLLs at least one of
    which references another, you need to obey the following rules:

    1. The module names of imported entries specified in module definition
       files should be in lower case.  This applies to the name specified
       after the LIBRARY keyword for DLLs which export the entries, as well
       as the module names supplied in the IMPORTS section.

       For example:  

           LIBRARY mydll
       not  
           LIBRARY MYDLL


           IMPORTS
               mydll.1
       not  
           IMPORTS
               MYDLL.1

    2. Enable a case-sensitive link using /c for the standalone linker
       (TLINK), or the Options|Linker|Case Sensitive Link option in the
       Programmer's Platform.


 5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM
---------------------------------------------

  Included with Borland C++ is a program to test your Expanded
  Memory hardware and software. If you have problems using
  Borland C++ with your EMS, type EMSTEST at the DOS prompt and
  follow the instructions.


 6.  CORRECTIONS TO THE DOCUMENTS
---------------------------------

  Getting Started
  ---------------
  Pg. 3    The manual says that Borland C++ requires DOS 2.0 or higher.
           It should say DOS 3.0 or higher.

  Borland C++ Programmer's Guide
  ------------------------------
  Pg. 168  _WINDOWS shown in the last heading should be _Windows.

  Borland C++ User's Guide
  ------------------------
  Pg. 122  The section on Dynamic Link Libraries should include
           the note that DLLs written in C++ are only supported
           in the compact and large memory models; this
           restriction does not apply to DLLs with C language
           source.

  Pg. 158  In the first paragraph it says you need at least 576k of
           extended memory. The correct amount is 320k.

  Pg. 159  Note that values of at least 120 should be specified in
           the TKERNEL kilos parameter.

  Pg. 260  Several TLINK error messages are not included; here is a
           list of those messages and their meanings:

  - Debug info option ignored for .COM files

     Borland C++ does not include debug information for .COM
     files.

  - Overlays ignored in new executable image

     This error occurs if you attempt to link an Windows program
     with the /o option on.

     Windows executables can't be overlaid, although, with
     discardable code segments, you should be able to achieve a
     similar effect.

  - Relocation item exceeds 1MB DOS limit

     The DOS executable file format doesn't support relocation
     items for locations exceeding 1MB.

     Although DOS could never load an image this big, DOS extenders
     can, and thus TLINK supports the generation of images greater
     than DOS could load.

     Even if the image is loaded with a DOS extender, the DOS
     executable file format is limited to describing relocation
     items in the first 1MB of the image.

  -'filename' ('linenum'): Duplicate internal name in exports

     Two export functions listed in the EXPORTS section of the
     module definition file defined the same internal name.

  -'filename' ('linenum'): Duplicate internal name in imports

     Two import functions listed in the IMPORTS section of the
     module definition file defined the same internal name.

  - 'filename' ('linenum'): Duplicate ordinal 'number' in exports

     TLINK encountered two exports with the same ordinal value.

     Check the module definition file to ensure that there are no
     duplicate ordinal values specified in the EXPORTS section.

     If not, you are linking with modules that specify exports by
     ordinals and one of two things happened:

       - two export records specify the same ordinal, or
       - the exports section in the module definition file
         duplicates an ordinal in an export record.

  - Segment alignment factor too small

     This error occurs if the segment alignment factor (set with
     the /A option) is too small to represent the file addresses
     of the segments in the .EXE file.

     This error only occurs when linking for Windows.

  - Segment too large for segment table

     This error should never occur in practice.

     It means that a segment was bigger than 64K and its size
     can't be represented in the executable file.

     This error can only occur when linking for Windows; the
     format of the executable file used for Windows does not
     support segments greater than 64K.

  - Invalid size specified for segment alignment

     This error occurs if an invalid value is specified for the /A
     option.

     The size specified with /A must be an integral multiple of 2
     and less than 64K; common values are 16 and 512.

     This error only occurs when linking for Windows.

  - 'filename' ('linenum'): Duplicate external name in exports

     Two export functions listed in the EXPORTS section of a
     module definition file defined the same external name.

     For example:

       EXPORTS AnyProc=MyProc1 AnyProc=MyProc2 - Automatic data
       segment exceeds 64K

     The sum of the DGROUP physical segment, local heap, and stack
     exceeded 64K.

     Either specify smaller values for the HEAPSIZE and STACKSIZE
     statements in the module definition file, or decrease the
     size of your near data in DGROUP.

     The map file will show the sizes of the component segments in
     DGROUP.

     Use the /s TLINK command-line option to find the module.

  - Debugging information overflow; try fewer modules with debug
    info

     Too many modules containing debugging information are
     included in the link.

     The debugging information executable file specification uses
     16-bit fields for many counts. This error message indicates
     that one of the count fields have overflowed.

     To exclude some modules with debug information from the link,
     either:
       - use the /v+ and /v- stand-alone linker options, or
       - turn on the Exclude Debug Information option

  - Limit of 254 segments for new executable file exceeded

     You have reached the limit of segments that can be specified
     by the New Executable file format.

     Only 254 segments can be represented in Windows EXEs and
     DLLs.

     To reduce the total number of segments to below 254, turn on
     the Pack Code Segments option to combine segments.

  - Imported references from VIRDEFs not supported

     TLINK does not support offset fixups to imported names when
     those fixups are associated with VIRDEFs.

     This situation is not likely to occur. However, if it does,
       - use the -Vs command-line option, or
       - set C++ Virtual Tables to Local in the IDE.

     VIRDEFs are used for C++ virtual tables and inline functions
     which, for debugging purposes, are pulled out-of-line.

  - Invalid size specified for segment packing

     You have specified an invalid size for the code segment
     packing limit. The default is 8192; legal values are from 1
     to 65536.
020 Borland C++ V3.00 12×HD
README [展开]
          Welcome to Borland C++ & Application Frameworks 3.0
          ---------------------------------------------------

  This README file contains important information about Borland C++.
  For the latest information about Borland C++ and its accompanying
  programs and manuals, read this file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the Documents


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Borland C++ manuals first. If you still have a question and
  need assistance, help is available from the following sources:

  1. Type GO BPROGB on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
     catalog of entries.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 438-5300. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Borland
        C++ can be displayed by pressing Alt-H/A in the IDE.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.


 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Borland C++. The
  files on the distribution disks are all archived and have to be
  properly assembled.  You cannot do this by hand!

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  -  This INSTALL handles the installation of both the compiler
     and debugger and tools in one operation, and allows several
     new configuration options.

  -  Note: The list of files is contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  -  After installation, make sure you insert \BORLANDC\BIN - or
     whatever you selected as your BIN directory - into
     your DOS path so the DLL and executable files can be found.

  -  If you have previously installed Resource Workshop, make sure
     that you remove the directory of that version from your path. The
     version included on these disks supercedes previous versions.

  -  If you use a Windows command shell other than Program Manager,
     you may not get a Borland C++ group installed for Windows. If
     you don't, use File|Run in Program Manager to run the following
     command:

          GROUPS GROUPS.B$$

     You will then have a new group for Borland C++.

  -  If you chose to put Turbo Debugger files in a non-default
     directory which is not on your path, you will need to copy
     WINDEBUG.DLL from that directory to one which is on your path if
     you want to debug Windows applications with Turbo Debugger.

  -  After your initial installation, you can run INSTALL again to
     add elements you omitted the first time. Just select only the
     things you want to add in the INSTALL options screen. Because
     some things you may want to save could be overwritten, review
     the following items to make sure you don't lose important
     information:

     1.  Selecting CMD (the Command-line compiler) causes an 
         overwrite of any existing turboc.cfg & tlink.cfg file
         with path information provided in that INSTALL session.
         Any switches other than -L (library path) and -I
         (include path) will not be preserved.

     2.  Selecting IDE will clear the previous settings for the
         desktop and default project and reset them to the
         defaults (for instance, 25-line display mode), and the
         include and library paths will be reset to the paths
         provided in that INSTALL session.

     3.  By selecting any one of the following, the help file
         paths and choices for THELP.CFG will reflect the current
         session's installation choices: 
         
              a. CMD - command-line compiler 
              b. IDE - integrated environment
              c. TD - Turbo Debugger
              d. TASM - Turbo Assembler 
              e. TV - Turbo Vision
              f. OWL - ObjectWindows library

     4.  Alterations to headers or startup files will be
         overwritten if any library models are selected.

     5.  Selecting the Create BorlandC++ Group option will add an
         icon to the existing group.

     In general, any selection you make of something installed
     earlier will cause an overwrite of the earlier version
     without prompting.

  You should read the rest of this README file to get further
  information about this release before you do the installation.
  See also the files in the DOC subdirectory after installation
  for general information not included in the manuals.

 3. FEATURES
------------

  Borland C++ 3.0 includes complete support for Windows
  programming, as well as big speed and capacity gains.  Here are
  some important features found in this version:

  - A Windows hosted IDE (TCW.EXE), including a class hierarchy 
    browser.

  - New code optimization features. 

  - Turbo Debugger support for breakpoints with multiple conditions
    and for viewing selectors.

  - Profiling under Windows (TPROFW.EXE).

  - Remote debugging using a Novell-compatible network.

  - DPMI services for increased capacity and operation under Windows
    3.0 Enhanced Mode.

  - C++ 2.1 support, including the new nested class specifications,
    and support of C++ 3.0 templates.

  - Added library functions for compatibility with other runtime 
    libraries, and addition of support for long double parameters
    in math functions. (Please see the Library Reference for details.)

  - New MAKE features. (Please see the Tools and Utilities Guide
    for details.)

  - EasyWin, which includes library support for stdio.h and
    conio.h functions under Windows. (Please see the Borland C++
    User's Guide for details.)

  - Object oriented assembler features in Turbo Assembler.

  - Added BGI (Borland Graphics Interface) fonts and support.

  - A resident DPMI kernel program, DPMIRES.EXE. (See "DPMI",
    below.)

  - WinSight, a debugging tool for examining Windows messages
    and general information about Windows classes. (Please see the
    Tools and Utilities Guide for details.)

  - FCONVERT.EXE -  Converts OEM to ANSI Character Set

      DOS text files use the OEM character set; Windows text
      files generally use the ANSI character set. The demo
      program, FCONVERT.EXE converts data back and forth between
      these formats. The only text files that will be affected
      are those containing international characters (ASCII values
      above 128) like the umlaut, etc. Not all OEM characters are
      present in the ANSI character set, and vice versa. 
      Therefore, converting between these character sets may
      produce a mapping that is not reversible.  Refer to your
      Windows documentation for further information about ANSI
      vs. OEM character sets.

  - Inline versions of string and memory library functions for
    code efficiency. (Please see the section on Intrinsic
    Functions in Appendix A in the User's Guide for details.)

  - THELP now allows you to switch between help files without
    unloading and reloading. (Please see UTIL.DOC for details.)

  - Runtime library source code.

NEW BGI FONTS
-------------

Several new fonts have been added to the Borland Graphics Interface:


Name            Value   Description
-------------------------------------------
SCRIPT_FONT     5       Stroked script font
SIMPLEX_FONT    6       Stroked simplex font
TRIP_SCR_FONT   7       Stroked triplex script font
COMPLEX_FONT    8       Stroked complex font
EURO_FONT       9       Stroked European font
BOLD_FONT       10      Stroked bold font

The fonts in the BGI now support the full ASCII character set.

DPMI
----

BC.EXE, BCC.EXE, MAKE.EXE, and TLINK.EXE are now hosted under
DPMI. These files replace both the files with the same name in
Borland C++ 2.0 and the BCX.EXE, BCCX.EXE, and TLINKX.EXE files
in the same product. There is no longer a TKERNEL.EXE file.

Important!
----------
  You must have at least 1Mb of extended memory to run these programs.

If you encounter a "machine not in database" message while attempting
to run the compiler, run the DPMIINST program to add your machine
configuration to the DPMI server database.

This version includes a resident DPMI host program, DPMIRES.EXE,
that allows you to preload the server before invoking BC, BCC, or
any other DPMI-hosted executables. If you want to run such hosted
EXEs in a Windows Standard Mode DOS window, you should run
DPMIRES.EXE before loading Windows. To do this, enter the
following commands at DOS:
 
  set DPMIMEM=MAXMEM 2000
  dpmires
  win /s

If you want to limit the amount of extended memory used by the
DPMI-hosted executables, an environment variable called DPMIMEM
can be set to do so. For instance, the command

  set DPMIMEM=MAXMEM 2000

reserves about 2 Mb of memory for DPMIRES. The number after MAXMEM
can be adjusted, but cannot be lower than 1000.

DPMIRES should not be run before running Windows in Enhanced Mode.
Windows requires its own DPMI services.

The hosted executables cannot spawn each other when SHARE is loaded.
For instance, if you run MAKE on a file which in turn calls MAKE
again, you will get a sharing violation. In this specific case,
you can call the real mode version, MAKER, within the given makefile,
and a sharing violation won't occur.

 4. IMPORTANT INFORMATION
-------------------------

  - There is now only one version of the DOS IDE, BC.EXE, and
    of the command-line compiler program, BCC.EXE. Because the
    BCX and BCCX files are no longer in Borland C++,  you'll need
    to alter batch or make files that use those names.

  - Borland C++ only supports Protected Mode Windows target
    files. Make sure to use the /t option when using the Resource
    Compiler if you want to enforce Protected Mode usage.

  - When using Brief with THELP, make sure to use Brief's -p
    switch to ensure that the THELP window will be visible.

  - We recommend that you use the following mouse drivers with
    this product:

       Microsoft Mouse version 7.04 or later;
       Logitech Mouse version 5.01 or later;
       Genius Mouse version 9.06 or later.

  - If you use MAKE or the IDE's Project Make to invoke the Resource
    Compiler, the .RC files you wish to compile MUST be in the same 
    directory as your project or makefile.  This is because the Microsoft
    Resource Compiler does not properly handle relative path names, and
    returns a misleading error message that refers to an incorrectly
    spelled version of your .RC file.

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:

        extern void _floatconvert();
        #pragma extref _floatconvert

    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.

  - Make sure that you use the -WE switch (Options|Compiler|Entry|
    Windows <DLL> explicit functions exported in the IDE) when
    using the fastcall modifier. The same applies when using the
    fastcall compilation option (-pr on the command line,
    Options|Compiler|Entry|Register in the IDE.)

  COMPILER

  - The default extension for source files to the command-line
    compiler is .CPP; that is, if you enter

       BCC -c test

    the compiler will search for test.cpp, and give an error if a
    file of that name cannot be found. If you want to have the
    command-line compiler assume a .c extension and C language
    source, use the command-line option -P-c. For more
    information, see "The command-line compiler" in the User's
    Guide.

  - Note that the Generate COMDEFs choice under
    Options|Compiler|Code Generation and the -Fc command-line
    option are only supported in the C language. Linker errors
    will result if you attempt to use a communal variable in C++.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - Note that SYMDEB creates .SYM files for use in debugging;
    Borland C++ creates .SYM files for pre-compiled headers. They
    are not compatible and collisions should be avoided by
    setting the name of the pre-compiled header file (using
    -H=filename - see the User's Guide Chapter, "The Command-line
    compiler for more details.)

  - There is now full support of distance modifiers (near and
    far) used for class member pointers. Here are two sample
    declarations and their meanings:

       void (A::* far var) ();

    this is a far variable 'var' of type 'void (A::*)()';

       void (far A::* var) ();

    this is a 'default distance' variable 'var' of type
	'void (far A::*)()'

  - You must use "smart callbacks" - -WS from the command line,
    Options| Compiler|Entry/Exit Code|Windows smart callbacks in
    the IDE - if your application uses classes whose code is in a
    DLL. This applies especially in the case of a class
    implemented in an EXE which is derived from another
    implemented in a DLL, which normally applies for users of OWL
    and other object-oriented class libraries.

  - If you use C++ templates, and use a separate TLINK command
    line rather than letting BCC invoke TLINK, you should make
    sure that you turn on case-sensitive links with the /c switch.


  IDE

  - When debugging a mouse application the Options|Debugger|Display
    Swapping option should be set to "Always" for best results.

  - In the DOS IDE, the mouse cursor is turned off during compilation
    for performance improvements.

  - If you run File|Printer setup from TCW.EXE (or another Windows
    application which has printer setup support) under the Windows
    3.0 debugging kernel, you will get a System Error from Windows.
    You must switch to the NODEBUG version to run this option.

  - The initial block marking behavior in the IDE is determined
    by which version of the IDE is used first after installation.
    Invoking TCW.EXE first will cause Windows-style block marking
    conventions to be in effect; otherwise the standard DOS IDE
    behavior will be used. You can change the behavior by
    selecting Options|Environment| Editor and changing the
    settings for Persistent blocks and Overwrite blocks.

  WinSight

  - WinSight traces messages received by GetMessage or SendMessage. It
    does not trace messages sent directly by function call such as
    WM_INITDIALOG.

  - Please note that messages displayed as "dispatched" are actually
    intercepted at the time of GetMessage, not DispatchMessage.


  EXAMPLE PROGRAMS

  - When you are running any example programs that come with .PRJ
    files, if you didn't use the standard directories when you
    installed Borland C++ you will have to change the .PRJ file
    to reflect your actual directory setup.  Do this from inside
    Borland C++ with Alt-O/D.


  LINKING C++ WITH C

  - Linking C++ modules with C modules requires the use of a
    linkage specification.  Prototypes for C functions within C++
    modules must be in one of the following forms:

        extern "C" declaration
        extern "C" { declarations }

    For example, if a C module contains these functions:

        char *SCopy(char*, char*);
        void ClearScreen(void)

    they must be declared in a C++ module in one of the
      following ways:

        extern "C" char *SCopy(char*, char*);
        extern "C" void ClearScreen(void);

      or

         extern "C" {
            char *SCopy(char*, char*);
            void ClearScreen(void);
         }

    Failure to do so will result in "Undefined symbol" errors
      during link. For further examples, see the standard header
      files.

  OPTIMIZATIONS

  - When Ignore Aliasing is used - -Oa from the command line, or
    Options|Compiler|Optimization|Assume no pointer aliasing in
    the IDE - some initializations could be skipped. This applies
    only when Copy propagation -Op or Options|Compiler|Optimization|
    Copy propagation is used as well (which is the case when
    using -O2 or Options|Compiler|Optimization|Fastest Code.) The
    following case illustrates the issue:

        len = 0;
        read(help_file, (char *)&len, 1);
        read(help_file, (char *)title, len);

    The initializion of len to the value 0 above will probably
    not be reflected in the first call to read() if aliases are
    ignored. If the initialization of len were guaranteed by the
    call to read(), the first line would be unnecessary, and the
    value in len would be assigned and passed to the second read
    correctly. We recommend that you avoid using these options
    together when explicit initializations are used in code
    sequences like these.


  TURBO DEBUGGER/TURBO PROFILER/TURBO ASSEMBLER

  - Some Windows mouse drivers are incompatible with Turbo
    Debugger, and will cause the mouse cursor to get scrambled
    when debugging DOS graphics applications on a second monitor
    (-do option).  If that happens, you can try a different
    driver, or turn off the mouse in TD by using the -p- option on
    the TD command line.  The mouse will still be active in the
    target application.

  - You cannot set a window message breakpoint by using a window
    handle in an ObjectWindows application. You can, however, set
    window message breakpoints with ObjectWindows applications by
    enabling ObjectWindows support (use TDINST -w and choose
    Options|Source Debugging|OWL Window Messages), then using
    window object names to set message breakpoints.

  - The MEMPAGE segment attribute in TASM is not currently
    supported by TLINK.  This option was added to TASM to support
    a feature of the Phar Lap linker.

  - The first time a program is run under TDW or TPROFW, mouse
    messages are processed normally. However, on every subsequent
    execution of that program,  you must press a key on the
    keyboard before mouse messages can be processed.

  - On page 10 in Chapter 1 of the "Turbo Profiler User's Guide,"
    there is a statement that Pascal versions of the PRIMEn.C
    programs are included  on disk. Only the C versions of these
    sample programs are included on the distribution disks.

  - If you don't see the mouse cursor when debugging a
    TurboVision application, reload the target program (press
    Ctrl-F2), and the mouse will appear.

  Super VGA support for TDW & TPROFW
  ==================================

  TDW and TPROFW handles most of the popular 2, 4, and 16-color
  high-resolution Super VGA modes. If your card isn't supported
  correctly, or if you want to debug in a 256-color mode, you'll
  need to use a special Super VGA DLL.

  Currently, the following DLLs are supplied with your language
  compiler to support these SVGA cards and modes:

    TSENG.DLL (TSENG ET-3000 /ET-4000 based cards)
       640x480x256
       800x600x256
       1024x768x256


    ATI.DLL (ATI VGA Wonder card)
       640x480x256    (See the NOTE below)
       800x600x256

  To use a Super VGA DLL, copy the appropriate DLL file into the
  directory that contains the TDW or TPROFW executable (usually
  the BIN subdirectory of your language compiler directory), and
  rename it to TDVIDEO.DLL.

  TDW (or TPROFW), upon loading, looks for TDVIDEO.DLL in the
  same directory that harbors TDW.EXE (or TPROFW.EXE). If it
  finds the file, TDW (or TPROFW) accesses the DLL as it's
  needed. TDW (or TPROFW) makes calls to the DLL to handle the
  entire video screen switching context. The DLL accomplishes the
  screen switching by allocating a buffer as it gets loaded.
  Graphic screen contents are then saved to this buffer as TDW
  (or TPROFW) enters text mode. The DLL restores the graphics
  screen from this buffer as TDW (or TPROFW) exits text mode.
  Memory allocated for the buffer is freed when the DLL is
  unloaded.

  If there is an error loading TDVIDEO.DLL, or if the DLL doesn't
  support the selected card or mode, TDW will report the error in
  a Windows dialog box. When this happens, TDW will unload
  TDVIDEO and exit. If this situation occurs, delete TDVIDEO.DLL,
  or select a mode that is supported by the DLL.

  If you're debugging an application that's been built with
  EasyWin, you may see incorrect screen painting as you step over
  lines of code that make calls to STDIO functions. In this case,
  edit the TDVIDEO.INI file and set the Int2FAssist option to
  "yes" (see the NOTE below).

  NOTE: The ATI mode 640x480x256 and EasyWin applications may
    require some special handling. An option called Int2FAssist
    in the TDVIDEO.INI file allows this mode to work correctly on
    most systems. The behaviour is as follows: When you set
    "Int2FAssist=yes", TDVIDEO makes Windows tell all sub-windows
    on the screen to re-paint themselves as the DLL is loaded.
    This allows the user screen to be viewed when Stepping,
    Tracing, or Running your application. It will not, however,
    switch to the user screen when you press <Alt-F5> since TDW
    is still in control (it doesn't allow Windows to process any
    messages). If you also set "SaveWholeScreen=yes", then <Alt-
    F5> will show the user screen (TDVIDEO will now copy the
    screen for you). The drawback to enabling SaveWholeScreen is
    that it will take longer to Step or Trace if TDW needs to
    switch back to the user screen for that particular
    instruction. Also, extra messages are getting passed to your
    application that normally would not be passed. This may
    effect the debugging of certain pieces of code (like finding
    a bug in an owner-draw procedure). In these cases, you will
    not want to use this video mode.


  TDVIDEO.INI
  -----------

  You can create the file TDVIDEO.INI with any ASCII text editor.
  This file is used to control how TDVIDEO.DLL functions.
  TDVIDEO.INI must be located in WINDOW's main directory (usually
  C:\WINDOWS). The options in TDVIDEO.INI are handled by the DLL
  itself and are therefore subject to change with newer versions
  of the DLLs. The DLLs use the following options, written in any
  order, under the heading [VideoOptions]:

    SaveWholeScreen --    default = 'no'
    Int2FAssist     --    default = 'no'
    DebugFile       --    default = ''  (no logging will occur)

  The SaveWholeScreen and Int2FAssist can be set to either 'yes'
  or 'no'. DebugFile can be either blank, or it can be set to a
  specific filename.

  *** SaveWholeScreen ***

    This option, normally set to 'no', determines whether the
    entire screen (512k - 64k from 8 planes) will be saved (the
    entire graphics screen is cleared when switching to it) or if
    only the top 32K of planes 0 through 3 will be saved (the
    entire screen is NOT cleared when switching modes.)

    Saving the whole screen is rarely needed, but is provided in
    case you're using a nonstandard card that needs the whole
    screen to be saved.

  *** Int2FAssist ***

    This option, normally set to 'no', tells TDVIDEO, to make a
    special Int 2F call before switching video modes. This call
    tells the current Windows screen driver (VGA.DRV for standard
    VGA mode) what's happening. The desired side-effect of this
    call is to make Windows tell all of its child windows to re-
    paint themselves. This option is provided only for support for an
    ATI Super VGA video mode and for applications built using
    EasyWin (see NOTE above). However, be aware, that this option
    can affect the other supported modes if it's enabled (use
    this option only if absolutly necessary).

  *** DebugFile ***

    TDVIDEO.DLL normally doesn't save any debugging information.
    If you're having problems using a special DLL, the DebugFile
    option can be used to specify the path and filename of a log
    file. Information logged to this file can be used if you need
    to contact Borland's Technical Support. Information logged
    consists of the Date/Time, the version of the DLL, the name
    of the Windows screen driver that is currently in use, the
    state of all .INI options, and a listing of all the calls to
    the DLL's functions.

    For example, if you want your DLL to save the entire screen
    and log information to a file named C:\WINDOWS\TDVIDEO.LOG,
    create a file called TDVIDEO.INI in the WINDOWS directory
    that contains the following commands:

      [VideoOptions]
      SaveWholeScreen=yes
      DebugFile=c:\windows\tdvideo.log


  Turbo Profiler and remote profiling of Windows applications
  ===========================================================

  Some system configurations may cause WREMOTE and TPROF to fail when
  profiling Windows applications on a remote system. The problem usually
  causes both your program and Windows to abort when you attempt to
  execute your program on the remote machine. If you experience this
  problem with your system configuration, there are several possible
  ways to avoid the problem.

    1. Use TPROFW to profile the program directly under Windows on one
       machine, rather than using two machines.

    2. Run Windows in standard mode (using the DOS command WIN
       /S), then load WREMOTE. On the local machine, use TPROF in
       passive analysis mode (note that passive analysis is not
       available in 386 enhanced mode.)

    3. If you require active analysis mode and cannot use TPROFW
       directly, the following procedure may provide a solution.
       First, load Windows and WREMOTE on the remote machine.
       Next, load TPROF on the local machine and, without running
       the program, remove all area markers using the Module
       window's local menu (Ctrl-R, A, from the Module window).
       With this, exit TPROF using Alt-X, thus creating a .TFA
       file having no areas marked.  Reload TPROF and your
       program; there should be no areas marked (you can verify
       this by opening an Areas window). Add any areas you are
       interested in examining, and begin profiling your program.



  CLASS LIBRARY

  - If you used the add(), addAt(), or getItemsInContainer()
    member functions of the Array class in Borland C++ 2.0
    applications, note that their behavior has changed slightly.
    The following rules apply to these and related functions:

      1. add() will insert its argument at the lowest available
         location in the Array.  This location is known as the
         "insertion point".

      2. detach() will remove its argument from the Array, and if
         that Object is located below the insertion point, it
         will move the elements above the Object being removed
         and below the insertion point down one position, so that
         the elements below the insertion point remain
         contiguous.  The insertion point, of course, moves down
         one.

      3. if the location specified in a call to addAt() is below
         or at the insertion point, the elements above the
         specified location and below the insertion point are
         moved up one position, and the Object is inserted.  The
         insertion point moves up one.

      4. if the location specified in a call to addAt() is above
         the insertion point, the Object is inserted at that
         location, replacing any Object that may have been placed
         there previously.

      5. getItemsInContainer() returns the number of elements
         below the current insertion point.  If you use addAt()
         to add elements above the insertion point, they will not
         affect the value returned by getItemsInContainer(). 
         This is a change from the behavior in the previous
         version of the class library.

  - Two versions of the class library sources are provided; one
    using an implementation using C++ templates, and one not using
    templates. The small and dynamic link libraries are provided, and
    a makefile is provided to build other models.


  ObjectWindows Library

  - You must rebuild the class libraries in the appropriate model
    for the intended OWL model if they don't already exist - see
    paragraph above.

  - Note that you must use the TWindow member function AssignMenu
    to assign a window's Attr.Menu member and to load a menu for
    that window.

  - Before you try the MFILEAPP example, you should change line 10
    of MFILEAPP.CPP to

       const char DskFile[] = "MFILEAPP.D$$";

    The DSK extension is used for desktop files in the Integrated
    Development Environment.


  Please see OWL.DOC for additional information on ObjectWindows
  Library.

  TURBO VISION

  - For information on the Help compiler, and how to build a help
    document, please refer to the comments in the file TVHC.CPP in
    the help directory.  Also, see TVDemo for an example of how to
    add help to your applications.

  - Due to the complex interactions among the Turbo Vision classes,
    certain situations can arise involving deletion of objects that
    cannot be properly handled through destructors.  Therefore, we
    provide a static member function void destroy( TObject * ) to
    the class TObject.  Whenever an object of a type derived from
    TObject is to be deleted, the function destroy() should be called
    instead.  This will take care of terminating the object,
    correctly freeing the memory that it occupied.  For example:
    
             TDialog *dlg = new TDialog( ... );
             //delete dlg;    // DON'T DO THIS
             destroy( dlg );  // DO IT THIS WAY

  - The Turbo Vision Source Code is provided for your use and
    modification.  IMPORTANT: Borland Technical Support will not
    answer questions or provide any assistance relating to this
    product.  Essentially, the Sources are provided "as is" and you
    are on your own.

  - In order to build the library, you must have Tasm available.

  - When building or modifying the library it is better to place
    debug info in only those modules in which you are interested.
    If you place debug info all the modules, Tlink may not be able
    to link your application.

  - In order to build an overlayed Turbo Vision application with
    BC3, make sure you observe the following:

      1. You need to rebuild the Turbo Vision library with
         overlays. Change to the SOURCE directory under TVISION
         and enter the command

                 make -DOVERLAY -B

         This will produce a new version of TV.LIB which will
         support overlays. It will also produce two .OBJ files,
         SYSINT.OBJ and TEVENT.OBJ.  These two files contain code
         for TV's interrupt handlers, so they cannot be 
         overlayed.

      2. When building an overlayed application, you must be sure
         to link with the three files SYSINT.OBJ, TEVENT.OBJ, and
         TV.LIB.  The two .OBJ files must not be in overlays. 
         Your command line should look something like this:

           bcc -ml -Yo myfile -Yo- sysint.obj tevent.obj -Yo tv.lib

         See the Programmer's Guide for details on the meanings
         of the various Yo switches.

	  3. To improve performance, increase the size of the global 
         variable __ovrbuffer to 0x2000 or greater.


  - TNSCollection::atFree (page 323)
   
    The atFree member function of TNSCollection is not documented in
    the TurboVision User's Guide.  The description should read:

  	Syntax:
    void atFree(ccIndex index);

    Removes the item at the index position, then destroys the item
    with delete(item).  The following items are moved up one position,
    and count is decremented by 1.  If index is greater than or equal
    to count, error(1,0) is called.

  - messageBox (page 479)
    
    The messageBox function returns an unsigned short integer (ushort) 
    that has one of the following values, corresponding to the dialog
    box standard commands:
 
      cmOk
      cmCancel
      cmYes
      cmNo
      cmDefault


  Please see TV.DOC for additional information on Turbo Vision.

  RUNTIME LIBRARY SOURCE

  The Borland C++ Runtime Library Source Code is provided for
  your use and modification.  IMPORTANT: Borland Technical
  Support will not answer questions or provide any assistance
  relating to this product.  Essentially, the Sources are
  provided "as is" and you are on your own. If you find what you
  think is a genuine problem with the source code, however, we
  would like to hear about it. See "How to Get Help" above.

  See CRTL.DOC for more information on building the Runtime
  Library from source.

 5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM
---------------------------------------------

  Included with Borland C++ is a program to test your Expanded
  Memory hardware and software. If you have problems using
  Borland C++ with your EMS, type EMSTEST at the DOS prompt and
  follow the instructions.


 6.  CORRECTIONS TO THE DOCUMENTS
---------------------------------

Borland C++ Programmer's Guide
------------------------------
 Chapter 8, "Building a Windows application"
 -------------------------------------------
  Page 321
  --------
  The TLINK command line should be changed to:

   tlink /Tw /v /n /c C:\BORLANDC\LIB\c0ws whello,\
         whello,\
         ,\
         C:\BORLANDC\LIB\cws
                         ^^^

Turbo Assembler User's Guide
----------------------------

Page 333 in Appendix D, Utilities, states that Turbo Assembler's online
help facility is called TASMHELP. TASMHELP can be used as documented, but
only if Turbo Assembler is installed in a directory other than the directory
where Borland C++ is installed. If TASM is installed in the same directory
as Borland C++, use the THELP utility for online help. THELP allows you to
access a variety of help files via an easy to use menu system.

Here's how THELP works:

  1) After installing Borland C++ and Turbo Assembler, invoke THELP at
     your DOS prompt.

  2) Type ALT-F to bring up the menu of available help files.

  3) Choose TASM.TAH to access help for Turbo Assembler.


Tools and Utilities Guide
-------------------------

 Introduction
 ------------
 Information on transfer macros, the Turbo Editor Macro Language
 (TEML), and the Turbo Editor Macro Compiler (TEMC) are also
 documented in the online file UTIL.DOC.

 Chapter 1, "Import library tools"
 ---------------------------------

  Page 7
  ------
   IMPLIBW does allow you to create a single import library from
   multiple DLLs or module definition files. At the File Select
   dialog box, you can type multiple filenames in the File edit
   control. When you choose OK to make the import library,
   IMPLIBW will use all the exports from each of the DLLs or
   module definition files you listed. Note that you can only
   select a single file using the file list box; you must type in
   the filenames if you need to specify more than one.

 Chapter 2, "Make: The program manager"
 --------------------------------------

  Page 11
  -------
   In the sentence that begins "All options that do not specify a
   string (-s or ±a, for example)..." the "±a" should be "-a".

  Page 33
  -------
   The last word of the page, "which" should be "while @<".

 Chapter 3, "TLIB: The Turbo librarian"
 --------------------------------------
 - There is an additional TLIB command line option, /0, which is not
   documented in the printed TLIB reference (Chapter 3 of the Tools &
   Utilities Guide).  The /0 option instructs the Turbo Librarian to
   remove all "Comment" records from the library.  Comment records are
   typically used to store information used by the debugger or other
   tools, and are not needed to create an executable file.  Using this
   option will make your libraries (and executable programs created using
   the libraries) smaller.  The /0 option is equivalent to checking
   Purge Comment Records in the Options|Librarian dialog box within the IDE.

 Chapter 4, "TLINK: The Turbo linker"
 --------------------------------------

  Page 58
  -------
   Change the TLINK format description to:

    tlink C0[W|D|F]x myobjs,exe,[map],[IMPORT][mylibs][OVERLAY]
    [EMU|FP87 mathx][CWx|Cx],[deffile]
    ^^^^^^^^^^^^^^^^^^^^^^^^
  Page 60
  -------
   Reverse the order of the two bullet items below:

   o CWx.LIB, the run-time library..
   o if you are using floating point math, FP87.LIB...

   The math libraries should be linked before the run-time library.


 Appendix A, "Error messages"
 ----------------------------

  Page 183
  --------
   In the TLINK warning "filename(linenum): Duplicate internal name
   in imports," there is an extraneous right bracket that should be
   removed.

  Page 197
  --------
   In the compile-time error "Last parameter of operator must have
   type int," "operator-±" should actually read "operator--"

Library Reference
-----------------

  Chapter 2, "The run-time library"
  ---------------------------------
    Page 173
    --------
      Under "Return value" "doserno" should be "_doserrno".

    Page 174
    --------
      Under "Return value" "doserno" should be "_doserrno" and
      the entry for ENOENT should be "Path or file name not found".

    Page 185
    --------
      _fpreset() is shown as being available under Windows, which
      is not true.

  Note that two functions are incorrectly prototyped in the Library
  Reference. Here are their correct prototypes:

   size_t far _fstrlen(const char far *s);
   size_t far _fstrcspn(const char *s1, const char far *s2);

  The following functions have some missing documentation in the
  Library Reference:

  ------------------------------------------------------------------
  Function: stackavail
  Gets the amount of available memory.

  Syntax:
  #include <malloc.h>
  size_t stackavail(void);

  ╔═══════╤════════╤══════════╤══════════╤═══════════╗
  ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║
  ╟───────┼────────┼──────────┼──────────┼───────────╢
  ║    ■  │        │          │          │           ║
  ╚═══════╧════════╧══════════╧══════════╧═══════════╝

  Remarks:
  stackavail returns the number of bytes available on the stack. This
  is the amount of dynamic memory which alloca may access.

  Return value:
  stackavail returns a size_t value indicating the number of bytes
  available.

  See also:
  alloca, allocmem, coreleft, _dos_allocmem, farcoreleft,
  _stklen (global variable)

  Example:
  #include <malloc.h>
  #include <stdio.h>

  int main(void) {
     char *buf;

     printf("\nThe stack: %u\tstack pointer: %u", stackavail(), _SP);
     buf = (char *) alloca(100 * sizeof(char));
     printf("\nNow, the stack: %u\tstack pointer: %u", stackavail(), _SP);
     return(0);
     }


  Program output:
    The stack: 63528         stack pointer: 65524
    Now, the stack: 63424    stack pointer: 65420


  ------------------------------------------------------------------
  Function: strcmp, _fstrcmp
  Compares one string to another.

  Syntax:
  #include <string.h>
  Near version: int strcmp(const char *s1, const char *s2);
  Far version: int far _fstrcmp(const char far *s1, const char far *s2);


                ╔═══════╤════════╤══════════╤══════════╤═══════════╗
                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║
                ╟───────┼────────┼──────────┼──────────┼───────────╢
  Near version  ║    ■  │    ■   │     ■    │    ■     │           ║
                ╟───────┼────────┼──────────┼──────────┼───────────╢
  Far version   ║    ■  │        │     ■    │          │           ║
                ╚═══════╧════════╧══════════╧══════════╧═══════════╝

  Remarks:
  strcmp performs an unsigned comparison of s1 to s2, starting with
  the  first character in each string and continuing with
  subsequent characters  until the corresponding characters differ
  or until the end of the strings is reached.

  Return value:
  strcmp returns a value that is

    < 0 if s1 is less than s2
    == 0 if s1 is the same as s2
    > 0 if s1 is greater than s2

  See also:
  strcmpi, strcoll, stricmp, strncmp, strncmpi, strnicmp

  Example:
  #include <string.h>
  #include <stdio.h>

  int main(void)
  {
     char *buf1 = "aaa", *buf2 = "bbb", *buf3 ="ccc";
     int ptr;
     ptr = strcmp(buf2, buf1);
     if (ptr > 0)
        printf("buffer 2 is greater than buffer 1\n");
     else
        printf("buffer 2 is less than buffer 1\n");
     ptr = strcmp(buf2, buf3);
     if (ptr > 0)
        printf("buffer 2 is greater than buffer 3\n");
     else
        printf("buffer 2 is less than buffer 3\n");
     return 0;
  }



  ------------------------------------------------------------------
  Function: strcpy, _fstrcpy
  Copies one string into another.

  Syntax
  #include <string.h>
  Near version: char *strcpy(char *dest, const char *src);
  Far version: char far * _fstrcpy(char far *dest, const char far *src);



                ╔═══════╤════════╤══════════╤══════════╤═══════════╗
                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║
                ╟───────┼────────┼──────────┼──────────┼───────────╢
  Near version  ║    ■  │    ■   │     ■    │    ■     │           ║
                ╟───────┼────────┼──────────┼──────────┼───────────╢
  Far version   ║    ■  │        │     ■    │          │           ║
                ╚═══════╧════════╧══════════╧══════════╧═══════════╝

  Remarks:
  Copies string src to dest, stopping after the terminating null
  character has been moved.

  Return value:
  strcpy returns dest.

  See also: stpcpy

  Example:
  #include <stdio.h>
  #include <string.h>

  int main(void)
  {
     char string[10];
     char *str1 = "abcdefghi";
     strcpy(string, str1);
     printf("%s\n", string);
     return 0;
  }

  ------------------------------------------------------------------
  Function: _dos_open
  Opens the specified file and prepares it for reading or writing.

  Syntax:
  #include <fcntl.h>
  #include <share.h>
  #include <DOS.H>
  unsigned _dos_open(const char *filename, unsigned oflags, int *handlep);

  Arguments:
  filename --  File that the function opens and prepares for reading and/or
               writing
  oflags   --  Open-mode symbolic constants (defined in FCNTL.H) and
               file-sharing symbolic constants (defined in SHARE.H) that
               specify the file's open mode (read, write, share, etc.)
  handlep  --  Points to the location where the function stores
               the file's handle.

                ╔═══════╤════════╤══════════╤══════════╤═══════════╗
                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║
                ╟───────┼────────┼──────────┼──────────┼───────────╢
                ║  Yes  │        │    Yes   │          │           ║
                ╚═══════╧════════╧══════════╧══════════╧═══════════╝


  Remarks:
  Opens the file specified by filename, then prepares it for reading
  or writing. The file is always opened in binary mode.

  On successfully opening the file, the function sets the file
  pointer (which marks the current position in the file) to the
  beginning of the file.

  The maximum number of simultaneously open files is defined by
  HANDLE_MAX.

  Return Value:
  On success, _dos_open returns 0, stores the file handle at the location
    *handlep
  On error, _dos_open returns the DOS error code and sets errno to one
    of the following:
           ENOENT  (Path or file not found)
           EMFILE  (Too many open files)
           EACCES  (Permission denied)
           EINVACC (Invalid access code)

   See Also:  _dos_creat _dos_read _dos_write _read open sopen

ObjectWindows User's Guide
--------------------------
  Chapter 2, "Stepping through Windows"
  -------------------------------------
    Page 22
    -------
      The sentence that begins "These libraries are located in
      the library  directories listed in the following table..."
      should instead read "Table 2.2 lists the file names of the
      static ObjectWindows library  and static container class
      library for each supported memory model."

  Chapter 11, "Dialog objects"
  ----------------------------
    Page 151
    --------
      In the TSampleWindow::GetName fragment shown, a line is in error. 
      The line that begins
         if (ExecDialog(new TInputDialog(this...
      should read
         if (GetApplication()->ExecDialog(new TInputDialog(this...

  Chapter 12, "Control objects"
  ----------------------------
    Page 158+
    ---------
      Although it doesn't specifically state so, TListBox and its member
      functions can be used with both single- and multiple- selection
      list boxes.


Turbo Vision User's Guide
-------------------------

  - cmOk has been changed to cmOK to be consistent with all other
    uses of 'OK'.

  - TView.writeCStr() is not available.  Use TView.writeStr(). All
    documentation for TView.writeCStr applies exactly to TView.writeStr.

  - TProgram has two additional member functions, suspend() and
    resume().  They do the same thing as the corresponding functions
    in TMouse, TEventQueue, etc. - they encapsulate suspension and
    resumption when doing things like a DOS shell.

  - The parameter list for the constructor for TSubMenu has been
    changed from 
            TSubMenu( const char *, int, int = 0 )
    to 
            TSubMenu( const char *, ushort, ushort = hcNoContext )

  - TNSCollection::atFree (page 323)
   
    The atFree member function of TNSCollection is not documented in
    the TurboVision User's Guide.  The description should read:

  	Syntax:
    void atFree(ccIndex index);

    Removes the item at the index position, then destroys the item
    with delete(item).  The following items are moved up one position,
    and count is decremented by 1.  If index is greater than or equal
    to count, error(1,0) is called.

  - messageBox (page 479)
    
    The messageBox function returns an unsigned short integer (ushort) 
    that has one of the followin values, corresponding to the dialog
    box standard commands:
 
      cmOK
      cmCancel
      cmYes
      cmNo
      cmDefault


021 Borland C++ V3.10 18×HD
README [展开]
          Welcome to Borland C++ & Application Frameworks 3.1
          ---------------------------------------------------

  This README file contains important information about Borland C++.
  For the latest information about Borland C++ and its accompanying
  programs and manuals, read this file in its entirety.

TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Features
4.  Important Information
5.  Testing Your Expanded Memory
6.  Corrections to the Documents


 1. HOW TO GET HELP
-------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and the
  Borland C++ manuals first. If you still have a question and
  need assistance, help is available from the following sources:

  1. Type

        GO BCPPDOS     - for questions pertaining to DOS

         or

        GO BCPPWIN     - for questions pertaining to Windows

     on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Check with your local software dealer or users' group.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX 
     catalog of entries.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement that came with the package,
     you may call the Borland Technical Support Department at
     (408) 461-9133. Please have the following information ready
     before calling:

     a. Product name and serial number on your original
        distribution disk.  Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Borland
        C++ can be displayed by pressing Alt-H/A in the IDE.

     c. Computer brand, model, and the brands and model numbers of
        any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT file.

     f. Contents of your CONFIG.SYS file.

 2. INSTALLATION
----------------

  You MUST use the INSTALL program to install Borland C++. The
  files on the distribution disks are all archived and have to be
  properly assembled.  You cannot do this by hand!

  Installing to the same directory structure as a previous version
  without erasing the directories is not recommended; you may
  encounter problems due to old header files, libraries, memory
  managers, or configuration files.

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL.  You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type:

    A:
    INSTALL

  -  This INSTALL handles the installation of both the compiler
     and debugger and tools in one operation, and allows several
     new configuration options.

  -  Note: The list of files is contained in a separate file
     called FILELIST.DOC, which will appear in the target
     directory you specify during installation.

  -  After installation, make sure you insert \BORLANDC\BIN - or
     whatever you selected as your BIN directory - into
     your DOS path so the DLL and executable files can be found.

  -  If you have previously installed Resource Workshop, make sure
     that you remove the directory of that version from your path. The
     version included on these disks supercedes previous versions.

  -  If you use a Windows command shell other than Program Manager,
     you may not get a Borland C++ group installed for Windows. If
     you don't, use File|Run in Program Manager to run the following
     command:

          GROUPS GROUPS.B$$

     You will then have a new group for Borland C++.

  -  After your initial installation, you can run INSTALL again to
     add elements you omitted the first time. Select only the
     things you want to add in the INSTALL options screen. Because
     some things you may want to save could be overwritten, review
     the following items to make sure you don't lose important
     information:

     1.  Selecting CMD (the Command-line compiler) causes an 
         overwrite of any existing TURBOC.CFG & TLINK.CFG file
         with path information provided in that INSTALL session.
         Any switches that you have added will not be preserved.

     2.  By selecting any one of the following, the help file
         paths and choices for THELP.CFG will reflect the current
         session's installation choices: 
         
              a. CMD - command-line compiler 
              b. IDE - integrated environment
              c. TD - Turbo Debugger
              d. TASM - Turbo Assembler 
              e. TV - Turbo Vision
              f. OWL - ObjectWindows library

     3.  If you have made any alterations to headers or startup files
         they will be overwritten if any library models are selected.

     4.  Selecting the Create BorlandC++ Group option will add a
         group to the desktop and insert the appropriate icons
         into that group if this is a first time installation. If
         this is a re-installation this option will insert the
         appropriate icons into the existing group.

     In general, any selection you make of something installed
     earlier will cause an overwrite of the earlier version
     without prompting.

     An attempt to install to a network directory for which you
     don't have delete rights will fail with the message "Invalid
     directory." Make sure delete rights are secured before
     attempting an installation to a network.

  You should read the rest of this README file to get further
  information about this release before you do the installation.
  See also the files in the DOC subdirectory after installation
  for general information not included in the manuals.


 3. NEW FEATURES
----------------

  - Borland C++ for Windows: A Windows-hosted IDE which produces
    Optimized code. The same Optimization options available in BC.EXE 
    are in BCW.EXE.

  - Color syntax highlighting: All IDEs now highlight your source
    according to syntax. See the choices under Options|Environment|
    Colors|Edit Window in the DOS IDE and Options|Environment|
    Highlight in the Windows IDEs. This option is enabled by
    Options|Environment|Editor|Syntax Highlighting.

  - 386 code generation: An option has been added to produce 386
    instructions in the generated code. Use -3 at the command line,
    or Options|Compiler|Advanced Code Generation|80386 in the IDEs.

  - The Object Data calling convention for improved efficiency of C++
    code. See the User's Guide chapter, "The Command-line Compiler",
    under the option -po for more information. This option is also
    available under Options|Compiler|Optimizations|Object data calling
    in the IDE.

  - Windows 3.1 support: All executables and DLLs have been modified
    appropriately for compatibility with Version 3.1 of Windows.
    The ObjectWindows Library header files have been modified for
    compatibility with the new Windows header files as well.

    NOTE CONCERNING USE OF MICROSOFT WINDOWS 3.1 REDISTRIBUTABLES FOR
    APPLICATIONS RUNNING ON MICROSOFT WINDOWS 3.0

    This Borland language product contains everything you need to develop
    applications to run on the most recent version of Microsoft Windows,
    version 3.1.  In some cases, you may need to copy and include in your
    application one or more Microsoft "redistributable" files from a copy
    of version 3.1 so that your application will also run on version 3.0.
    Microsoft informs us that you may copy the redistributable files from
    from Microsoft Windows 3.1 for this purpose.  If you do so, you must
    comply with the conditions stated in the Borland No-Nonsense License
    Statement included in this package as if the redistributable files you
    copy were a part of this Borland language product.  Microsoft's
    redistributable files in Windows 3.1 are:

       winhelp.exe, winhelp.hlp, commdlg.dll, ddeml.dll, toolhelp.dll,
       vtd.386, olecli.dll, olesvr.dll, ver.dll, lzexpand.dll,
       expand.exe, regload.exe, stress.dll, dib.drv, markmidi.exe,
       penwin.dll, and shell.dll.

    If you do not find any of these files in the BIN directory, they
    are also included in the Windows retail distribution, and installed
    in your Windows directories.

  - WinSpector, a postmortem Windows debugging tool that traps
    general protection faults and provides information on where 
    the fault occurred and the state of the machine at the time.

  - You can now increase the number of files that can be open
    at one time in a DOS program by a simple modification of the
    runtime library.

    First, modify _NFILE.H in your INCLUDE directory by changing
    the #define for _NFILE_:

       #define _NFILE_ n

    where n is the number of files you want to open. Make sure the
    FILES statement in your CONFIG.SYS file specifies at least
    this number.

    Then compile the two files FILES.C and FILES2.C in the LIB
    directory:

       BCC -c -m<model> files.c files2.c

    where <model> is the memory model you're using.

    Then link them directly with the program which opens the files,
    for instance:

       BCC myfile.c files.obj files2.obj

    If you want the change to apply to all modules, add
    FILES.OBJ and FILES2.OBJ created above to the libraries
    you use; from the LIB directory, type:

       TLIB c<model> +-files.obj +-files2.obj

    where <model> matches what you used for the BCC command
    above.


DPMI
----

BC.EXE, BCC.EXE, MAKE.EXE, and TLINK.EXE are now hosted under
DPMI. These files replace both the files with the same name in
Borland C++ 2.0 and the BCX.EXE, BCCX.EXE, and TLINKX.EXE files
in the same product. There is no longer a TKERNEL.EXE file.

Important!
----------
You must have at least 1Mb of extended memory to run these programs.

If you encounter a "machine not in database" message while attempting
to run the compiler, run the DPMIINST program to add your machine
configuration to the DPMI server database.

This version includes a resident DPMI host program, DPMIRES.EXE,
that allows you to preload the server before invoking BC, BCC, or
any other DPMI-hosted executables. If you want to run such hosted
EXEs in a Windows Standard Mode DOS window, you should run
DPMIRES.EXE before loading Windows. To do this, enter the
following commands at DOS:
 
  set DPMIMEM=MAXMEM 2000
  dpmires
  win /s

If you want to limit the amount of extended memory used by the
DPMI-hosted executables, an environment variable called DPMIMEM
can be set to do so. For instance, the command

  set DPMIMEM=MAXMEM 2000

reserves about 2 Mb of memory for DPMIRES. The number after MAXMEM
can be adjusted, but cannot be lower than 1000.

DPMIRES should not be run before running Windows in Enhanced Mode.
Windows requires its own DPMI services.

The hosted executables cannot spawn each other when SHARE is loaded.
For instance, if you run MAKE on a file which in turn calls MAKE
again, you will get a sharing violation. In this specific case,
you can call the real mode version, MAKER, within the given makefile,
and a sharing violation won't occur.

Note to OS/2 users: To run any DPMI-hosted executables, like BC, BCC,
or TLINK, in a DOS Window, you need to enable DPMI for that window:

   - Click the right mouse button on a DOS window icon in Command
     Prompts

   - Select Open|Settings|Session|DOS Settings|DPMI_DOS_API and select
     ENABLED.

Note to EMM386.SYS users: To run DPMI-hosted EXEs, under the EMM386
included with Windows 3.1, you need to apply a patch to our files
as follows:

   - Go to the BIN directory
   - Type the following command:

          patch server.dif dpmi16bi.ovl

You will now be able to run BC, BCC, etc.


 4. IMPORTANT INFORMATION
-------------------------

  - There is now only one version of the DOS IDE, BC.EXE, and
    of the command-line compiler program, BCC.EXE. Because the
    BCX and BCCX files are no longer in Borland C++,  you'll need
    to alter batch or make files that use those names.

  - Borland C++ only supports Protected Mode Windows target
    files. Make sure to use the /t option when using the Resource
    Compiler if you want to enforce Protected Mode usage.

  - When using Brief with THELP, make sure to use Brief's -p
    switch to ensure that the THELP window will be visible.

  - We recommend that you use the following mouse drivers with
    this product:

       Microsoft Mouse version 7.04 or later;
       Logitech Mouse version 5.01 or later;
       Genius Mouse version 9.06 or later.

  - If you use MAKE or the IDE's Project Make to invoke the Resource
    Compiler, the .RC files you wish to compile MUST be in the same 
    directory as your project or makefile.  This is because the Microsoft
    Resource Compiler does not properly handle relative path names, and
    returns a misleading error message that refers to an incorrectly
    spelled version of your .RC file.

  - If you get a "floating point formats not linked" message at
    runtime, put the following somewhere in your source files:

        extern void _floatconvert();
        #pragma extref _floatconvert

    This will force inclusion of floating point formats, which
    may not be linked to reduce executable size.

  - Make sure that you use the -WE switch (Options|Compiler|Entry|
    Windows <DLL> explicit functions exported in the IDE) when
    using the fastcall modifier. The same applies when using the
    fastcall compilation option (-pr on the command line,
    Options|Compiler|Entry|Register in the IDE.) Also see the first
    entry on using fastcall with main() in "COMPILER" below.

  - If the Windows 3.0 home directory precedes the Borland C++ BIN
    directory in your path, attempting to access Help will result in the
    message "This version of Help file not supported." To enable
    Help, either reorder your path or copy WINHELP.EXE to your Windows
    3.0 directory.

  - This compiler uses more strict checking of C++ syntax and argument
    matching than previous versions. You can expect more warning
    and error messages based on the ANSI C++ version 3.0 standard.

  - If you receive a "bad object record" message from the linker when
    building OWL or container class library applications, you are
    probably using the Borland C++ version 3.0 class libraries and/or
    OWL libraries. Make sure your library path specifies version 3.1
    libraries for those applications.

  COMPILER

  - When using fastcalls (-pr command line option) you are
    required to explicitly use the C calling convention, "cdecl",
    for main. For example:

        int cdecl main( )

    In Borland C++ 3.0 the compiler did not correctly name main when
    fastcalls were used, with the result that you were not
    required to cdecl main (in all cases).  This is a dangerous
    condition and the compiler now (correctly) names main,
    resulting in a linker error in Borland C++ 3.1 for those Borland C++
    3.0 compiled programs that didn't cdecl main.

    Please correct any "non-cdecl main" definitions, if compiled
    with fastcalls.

  - In Borland C++ 3.0 the compiler allowed conversions from "const void*"
    to "void *", contrary to ANSI; for Borland C++ 3.1 this is no
    longer allowed.  In addition, several other conversions
    regarding const variables have also been restricted.  If you
    are a user of the const keyword, expect that you may have
    conversions that were allowed to exist with Borland C++ 3.0 that
    will need to be changed in order to compile using Borland C++ 3.1.

  - In Borland C++ 3.0 the following syntax was allowed-

            class foo{
            ...
            }       // note that the semicolon is missing here

            f(){
            ...
            }

    The new compiler now requires the semicolon to be added after
    the class declaration. The compiler would interpret the
    example above as an attempt to return a class declaration to
    f().

  - A new implicit conversion rule is now enforced for constructors.

    From page 573 of The C++ Programming Language 2nd Edition:


      "When no constructor for class X accepts the given type, no
       attempt is made to find other constructors or conversion
       functions to convert the assigned value into a type acceptable
       to a constructor for class X."

    For example,

            class X { /* ... */ X(int); };
            class Y { /* ... */ Y(X); };
            Y a = 1;  // illegal: Y(X(1)) not tried

    Note that this rule only applies to constructors with ONE parameter.

  - The inport/outport functions have been changed to accept an
    unsigned parameter instead of an int. The new prototypes are:

     unsigned      inport(unsigned)
     unsigned char inportb(unsigned)
     void          outport(unsigned, unsigned)
     void          outportb(unsigned, unsigned char)

  - We have new resource compiler and linker components:

    BRCC is the Borland Resource Compiler. RLINK is the resource 
    linker/binder. BRC.EXE calls BRCC.EXE and RLINK.EXE, and is an 
    equivalent to Microsoft's Windows 3.1 RC. New features that 
    may not be found in other products include:

       - Binding of multiple RES files is supported under RLINK.

       - Resource ID conflicts are detected and resolved during
         binding.

    For more information, see the file MANUAL.RW located in your
    \BORLANDC\DOC directory.  

  - There is currently support in ObjectWindows for STRICT and
    non-STRICT versions of OWL programs for Borland C++ versions
    3.0 and 3.1. Simply define the macros WIN30 or WIN31, and add a
    definition for STRICT if you need STRICT compliance. For
    more details see WIN31.DOC in the DOC directory and
    OWL31.DOC in the OWL\DOC directory.

  - The default extension for source files to the command-line
    compiler is .CPP; that is, if you enter

       BCC -c test

    the compiler will search for test.cpp, and give an error if a
    file of that name cannot be found. If you want to have the
    command-line compiler assume a .c extension and C language
    source, use the command-line option -P-c. For more
    information, see "The command-line compiler" in the User's
    Guide.

  - Note that the Generate COMDEFs choice under
    Options|Compiler|Code Generation and the -Fc command-line
    option are only supported in the C language. Linker errors
    will result if you attempt to use a communal variable in C++.

  - The macros min() and max() are not defined when stdlib.h is
    compiled as C++ (to allow their use in 3rd party libraries,
    etc.).

  - Note that files with the extension .SYM can come from at least
    two different sources: Borland's precompiled headers, and the
    output of Microsoft's MAPSYM or Borland's TMAPSYM programs,which
    can also be used by SYMDEB and other debuggers.

    These files do not have compatible formats, so collisions
    should be avoided by renaming the precompiled header file
    with -H=<filename> on the BCC command line, or as a BCC transfer
    option in the IDE.

  - There is now full support of distance modifiers (near and
    far) used for class member pointers. Here are two sample
    declarations and their meanings:

       void (A::* far var) ();

    this is a far variable 'var' of type 'void (A::*)()';

       void (far A::* var) ();

    this is a 'default distance' variable 'var' of type
   'void (far A::*)()'

  - You must use "smart callbacks" - -WS from the command line,
    Options| Compiler|Entry/Exit Code|Windows smart callbacks in
    the IDE - if your application uses classes whose code is in a
    DLL. This applies especially in the case of a class
    implemented in an EXE which is derived from another
    implemented in a DLL, which normally applies for users of OWL
    and other object-oriented class libraries.

  - If you use C++ templates, and use a separate TLINK command
    line rather than letting BCC invoke TLINK, you should make
    sure that you turn on case-sensitive links with the /c switch.


  IDE

  - When debugging a mouse application the Options|Debugger|Display
    Swapping option should be set to "Always" for best results.

  - Defines entered under Options|Compiler|Code Generation entered
    with semicolons don't apply to RC project items. If you need to
    make multiple definitions for resource compilation in the IDE,
    enter separate defines in the Project Local Options, for example:

        -dDEF1 -dDEF2=1

  - In the DOS IDE, the mouse cursor is turned off during compilation
    for performance improvements.

  - If you run File|Printer setup from BCW.EXE (or another Windows
    application which has printer setup support) under the Windows
    3.0 debugging kernel, you will get a System Error from Windows.
    You must switch to the NODEBUG version to run this option.

  - The initial block marking behavior in the IDE is determined
    by which version of the IDE is used first after installation.
    Invoking BCW.EXE first will cause Windows-style block marking
    conventions to be in effect; otherwise the standard DOS IDE
    behavior will be used. You can change the behavior by
    selecting Options|Environment| Editor and changing the
    settings for Persistent blocks and Overwrite blocks.

  - The first time you open certain projects in Borland C++ for
    Windows (BCW), you will get a dialog indicating that one or
    more items will be converted. This will occur for all Windows
    projects existing prior to BC 3.1 and for all DOS projects
    that you open in BCW.  The purpose of the dialog is to
    indicate to you that certain changes need to be made to the
    project to allow it to compile properly for Windows. DOS
    projects that are opened in BCW will need to be changed to
    target Windows, and many projects will need to generate 80286
    code rather than 8088 code.  You have several options
    regarding saving the changes:

      Don't auto save project
      Warn before saving project
      Save project now

    The first option will be the most likely choice for DOS C++
    programs that you bring up in BCW in order to browse classes.
    When you close the project, it won't be saved, so that you don't
    lose the options you have already set.

    If you select the second option, you will be given the choice of
    saving the project when you close it.

    The last option saves the project with the new settings
    immediately.  For your current Windows projects, you will
    probably want to choose this option so that this dialog will no
    longer come up for the project.

  - The RC.EXE included in this release targets Windows 3.1. You
    will need to include the -30 option for RC files in any project
    intended to run under Windows 3.0. Use Options|Transfer|Resource
    Compiler|Edit|Command line, and change the entry to:

       -30 $RC

    If you use PRJ2MAK on a project which uses this option,
    you will need to edit the resulting .MAK file, and move
    the "-30" option to the RC line which links the .RES
    file to the .EXE file. For instance, the line output by
    PRJ2MAK may look like:

            rc filename.res filename.exe
            ..
            rc -30 <other options> filename.res filename.rc

    Change this to

            rc -30 filename.res filename.exe
            ..
            rc  <other options> filename.res filename.rc

  Resource Workshop

  - 256-Color bitmaps and RLE4 compression:

    Due to problems with many 256-color display drivers for Windows
    3.x, saving a bitmap with the RLE4 compression feature of
    Resource Workshop enabled can fail to produce valid output files.

    Under Windows, the display driver is responsible for providing
    RLE compression when it is requested. However, because many
    display drivers do not implement this feature correctly, we
    recommend that you take the following steps when attempting to
    use RLE4 compression:

    1. Save the bitmap with the compression option set to "None".
       This ensures that you will have a usable copy of your bitmap
       if the remaining steps are not successful.

    2. Set the compression option to "RLE4".

    3. Select Resource|Save Resource As and save the bitmap under a
       different file name.

    4. Select File|Open Project and load the compressed version of
       the bitmap.

    If you cannot load the compressed bitmap, you must use the
    uncompressed bitmap file you saved in step 1.

    If your 256-color driver fails to compress the bitmap correctly,
    contact the display driver vendor.


    Flood-fill with the paint bucket tool
    -------------------------------------

    Because of problems inherent to display drivers, flood-filling a
    section of a bitmap using the paint bucket tool can fail to
    produce the desired result.

    Resource Workshop provides an alternate version of the flood-fill
    algorithm that is slower but more reliable than the version
    provided by most Windows 3.x display drivers.

    You can enable Resource Workshop's flood-fill algorithm by adding
    a flag called "RWS_OwnFloodFill" to the Icon editor section
    ([RWS_Icon]) of WORKSHOP.INI. Set the flag to 1.

    The edited section of WORKSHOP.INI should look something like
    this:

        [RWS_Icon]
        RWS_OwnFloodFill=1
        PercentLeft=50
        ZoomLeft=8
        ZoomRight=1
        bVert=1

    Contact the display driver vendor if you experience flood-fill
    problems.


  WinSight

  - WinSight traces messages received by GetMessage or SendMessage. It
    does not trace messages sent directly by function call such as
    WM_INITDIALOG.

  - Please note that messages displayed as "dispatched" are actually
    intercepted at the time of GetMessage, not DispatchMessage.


  EXAMPLE PROGRAMS

  - When you are running any example programs that come with .PRJ
    files, if you didn't use the standard directories when you
    installed Borland C++ you will have to change the .PRJ file
    to reflect your actual directory setup.  Do this from inside
    Borland C++ with Alt-O/D.

  - When run under the Windows 3.1 debug kernel, many OWL examples will
    cause a message to be displayed like these:

        USER: Invalidation with fErase==FALSE prevents WM_ERASEBKGND
        Kernel: GlobalCompact(FFFFFFFF), discarding segments

    These messages are valid runtime warnings, but they don't
    indicate improper implementation; they are supplied for the
    information of the user or programmer under the debug kernel.

  - To build the help file for the HELPEX example, go to the
    EXAMPLES\WIN30 directory and type

         hc helpex


  LINKING C++ WITH C

  - Linking C++ modules with C modules requires the use of a
    linkage specification.  Prototypes for C functions within C++
    modules must be in one of the following forms:

        extern "C" declaration
        extern "C" { declarations }

    For example, if a C module contains these functions:

        char *SCopy(char*, char*);
        void ClearScreen(void)

    they must be declared in a C++ module in one of the
      following ways:

        extern "C" char *SCopy(char*, char*);
        extern "C" void ClearScreen(void);

      or

         extern "C" {
            char *SCopy(char*, char*);
            void ClearScreen(void);
         }

    Failure to do so will result in "Undefined symbol" errors
    during link. For further examples, see the standard header
    files.

  OPTIMIZATIONS

  - When Ignore Aliasing is used - Options|Compiler|Optimization|
    Assume no pointer aliasing , or -Oa from the command line -
    some initializations could be skipped. This applies
    only when Copy propagation -Op or Options|Compiler|Optimization|
    Copy propagation is used as well (which is the case when
    using -O2 or Options|Compiler|Optimization|Fastest Code.) The
    following case illustrates the issue:

        len = 0;
        read(help_file, (char *)&len, 1);
        read(help_file, (char *)title, len);

    The initializion of len to the value 0 above will probably
    not be reflected in the first call to read() if aliases are
    ignored. If the initialization of len were guaranteed by the
    call to read(), the first line would be unnecessary, and the
    value in len would be assigned and passed to the second read
    correctly. We recommend that you avoid using these options
    together when explicit initializations are used in code
    sequences like these.


  TURBO DEBUGGER AND TOOLS


  Debugging Multiple Applications under Turbo Debugger for Windows
  ================================================================
     You can debug multiple applications under TDW as follows:

     1. Load the first program to be debugged into TDW.

     2. Once the application is loaded, press the F3 key to
        display the Load Module Source or DLL Symbols dialog box.

     3. In the DLL Name text entry box, enter the name of the
        .EXE or  DLL to add. If the .EXE or DLL resides in
        another directory, you need to provide the full path.

     4. Press the Enter key. TDW adds the program name to the 
        DLLs & Programs list box and puts the !! symbol after it.

     5. Close the Load Module Source or DLL dialog box, return to
        the Module window, and set any necessary breakpoints in
        the first program.

     6. Press F9 to run the first program.

     7. Switch to the Windows Program Manager while the first
        program is running and run the second program in the
        usual way.

     8. You see the display switch back to TDW with the CPU
        window showing the start-up information of the second
        application. Close the CPU window.

     9. In the Module window, set any necessary breakpoints in
        the second application, then press the F9 key to run it.

     This method is useful for debugging DDE conversations or any
     other inter-program communication in the Windows
     environment.


  TDW.INI, the Windows initialization file for TDW and TPROFW
  ===========================================================
    TDW.INI is located in your local Windows directory. It is the
    Windows initialization file used by TDW, TPROFW, and WREMOTE.
    TDW.INI specifies the name and location of the Debugger DLL and
    the video driver DLL (if any)  in the [TurboDebugger] section.
    It can also contain two other sections:

    o [VideoOptions], where you put settings for the video DLL, if any

    o [WRemote], where WRSETUP puts settings for remote debugging
      and profiling

   [TurboDebugger] section
   -----------------------
   WINDEBUG.DLL has been replaced by TDWIN.DLL. TDWIN.DLL can be
   located anywhere you wish (usually the main Windows directory).
   The DebuggerDLL entry must specify the full path to TDWIN.DLL.
  
   For example, if TDWIN.DLL is in the WINDOWS3.1 directory, its
   TDW.INI entry is
  
   [TurboDebugger]
   DebuggerDLL=c:\windows3.1\tdwin.dll
  
   The VideoDLL entry indicates a video support DLL for 8514 or
   Super VGA, because TDW doesn't support these video modes by
   default. This entry must specify the full path to the DLL. You
   can set various video options for the DLL in the
   [VideoOptions] section.  See the next section for a complete
   explanation of video DLL and options settings.


  SVGA support, the VideoDLL entry, and the [VideoOptions] section
  ----------------------------------------------------------------
   TDW and TPROFW handle most of the popular 2, 4, 16, and 256-color
   high-resolution Super VGA modes. If your card isn't supported
   correctly, you need to use a special Super VGA (SVGA) DLL.

   Currently, six DLLs are supplied with your language compiler to
   support various SVGA and 8514 video cards and modes. These DLLs are
   described in the next section. For information on how to specify the
   Video DLL or its options, see the sections "The VideoDLL entry" and
   "The [VideoOptions] section," which follow the "Video DLLs" section.


     Video DLLs
     ----------
     All the video DLLs described in this section are designed to work
     with the most current Windows screen drivers for your video card.  If
     you're not sure if you're using the latest drivers, contact your video
     card manufacturer for more information.

     From time to time we have new DLLs for new video cards. These DLLs,
     when available, can be downloaded from Compuserve, BIX, GEnie, and our
     local BBS (408-439-9096). As new video cards and modes appear on the
     market, we will be creating new DLLs for them. If the card you use
     isn't supported by one of our DLLs, please contact Tech Support for
     the latest video DLL information. Our main Tech Support phone number
     is 408-461-9133.


       ATI.DLL
       -------
       Works with the ATI VGA Wonder and XL cards in certain video modes.

       The latest ATI Drivers from ATI Technologies Inc. require the
       following TDW.INI file entries:


            Resolution   ATI.DLL  Int2FAssist
          -----------------------------------
          | 640X480    | Yes     |   Yes    |
          -----------------------------------
          | 800X600    | Yes     |   Yes    |
          -----------------------------------
          | 1024X768   | No      |    No    |
          -----------------------------------

       EXPLANATION: ATI.DLL is required in all video modes except
       1024 X 768 (this mode is directly supported by TDW and TPROFW).
       When the DLL is used (VideoDLL=ATI.DLL), Int2FAssist should be
       set to "yes" in the [VideoOptions] section.


       TSENG.DLL
       ---------
       Supports TSENG ET-3000 /ET-4000 based cards in certain
       video modes.

       The latest TSENG drivers are available from the Microsoft
       Windows Driver Library on CompuServe. They require the
       following TDW.INI file settings:


           Resolution   TSENG.DLL   Int2FAssist
          -------------------------------------
          | 640X480    | Yes       |   Yes    |
          -------------------------------------
          | 800X600    | No        |    No    |
          -------------------------------------
          | 1024X768   | No        |    No    |
          -------------------------------------

       EXPLANATION: TSENG.DLL should only be used with 640 X 480 X 256
       resolution (set VideoDLL=TSENG.DLL and put a "Int2FAssist=Yes"
       entry in the [VideoOptions] section). TDW and TPROFW directly
       support the other TSENG resolutions.



       TDVESA.DLL
       ----------
       Supports any video card that does VESA emulation, whether
       through a TSR or video card firmware. Use this DLL with
       all resolution settings.

           NOTE: You can run VESATEST.EXE from either DOS or
           Windows to see if your system provides the proper
           VESA functions. If the emulation is not loaded, TDW
           (or TPROFW) will display an error message indicating that
           the video DLL isn't supported by the current configuration.

       The TDVESA.DLL has been tested with the following video
       cards:

         o Video Seven VRAM II--uses V7VESA TSR supplied with card

         o Weitek Power Windows--emulates VESA with firmware.


       DUAL8514.DLL
       -------------
       Supports any dual-screen 8514 cards. This DLL is only for
       systems that have two-color monitors, one attached to the VGA
       card and one attached to the 8415/A card. It speeds up
       performance by preventing TDW (or TPROFW) from doing some
       things that aren't required in dual-monitor mode.

           NOTE: Using this DLL is not the same as invoking TDW
           with the -do parameter, which only specifies using a
           monochrome screen.


       STB.DLL
       -------
       Supports the MVP2 series of multi-screen video cards.


       ULTRA.DLL
       ---------
       Supports ATI Graphics cards, 8514 Ultra and Vantage cards
       (8514/Ultra, 8514/Vantage, Graphics/Ultra, and Graphics/Vantage),
       and 8514-based cards configured for a single monitor (including
       most IBM 8514/A cards). If you use this DLL with an IBM 8514/A
       card, set "ATI=no" in the [VideoOptions] section of TDW.INI.


   The VideoDLL entry
   ------------------
   To use an SVGA DLL, simply edit the TDW.INI file that the installation
   program puts in your main Windows directory. You can modify TDW.INI
   with any ASCII text editor. Under the section heading [TurboDebugger]
   there is an option called "VideoDLL". This entry should equal the
   path and filename of the DLL you want to use for SVGA support (see the
   example later in this file).

   If there's an error loading the DLL or if the DLL doesn't support
   the selected card or mode, TDW (or TPROFW) reports the error in a
   Windows dialog box. When this happens, TDW (or TPROFW) unloads the
   DLL and exits. If this situation occurs, remove the DLL's name from
   the VideoDLL line in the TDW.INI file or select a video mode that is
   supported by that DLL.


   The [VideoOptions] section
   --------------------------
   There are options you can set for the current video DLL. You list
   these options under the [VideoOptions] heading in any order you like.

   The following list shows all the video options:

     o SaveWholeScreen    --    default = no
     o Int2FAssist        --    default = no
     o DebugFile          --    default = <blank>
     o IgnoreMode         --    default = no
     o ATI                --    default = yes
     o Rows               --    default = 25
     o RestoreTextScreen  --    default = yes

   DebugFile can be either blank or set to a specific filename. The other
   four settings must be either "yes" or "no". Rows must be 25 or 50.


     SaveWholeScreen   (ATI, TSENG, TDVESA)
     ---------------
     This option, normally set to "no", determines whether the entire
     screen (512k - 64k from 8 planes) is saved (the entire graphics
     screen is cleared when switching to it) or if only the top 32K of
     planes 0 through 3 is saved (the entire screen is NOT cleared when
     switching modes.)

     Saving the whole screen is not usually necessary, but is provided
     in case you're using a nonstandard card that requires that the whole
     screen be saved. It also provides support for the Alt-F5 key
     combination under Int2FAssist mode.


     Int2FAssist  (ATI, TSENG)
     -----------
     This option, normally set to "no", tells the DLL to make a special
     Int 2F call before switching video modes. This call tells the current
     Windows screen driver what's happening. The desired side-effect of this
     call is to make Windows tell all its child windows to repaint
     themselves. This option is provided mainly to support some ATI Wonder
     and TSENG chip set video modes.


     DebugFile   (ALL DLLs)
     ---------
     The video DLL normally doesn't log any debugging information. If
     you're having problems using a particular DLL, you can use the
     DebugFile option to specify the path and filename of a log file.
     You can use the information logged to this file if you need to
     contact Borland's Technical Support.

     The information logged is:

       o the date and time you ran TDW or TPROFW
       o the version & location of the DLL
       o the name of the current Windows screen driver
       o the state of all TDW.INI options
       o a listing of all calls and parameters to the DLL's functions


     IgnoreMode   (ATI, TSENG)
     ----------
     This option only applies when the video DLL is ATI.DLL or TSENG.DLL.
     It tells the DLL to not do any mode or card checking and to force the
     Int2FAssist option on. This option is useful for cards that aren't
     directly supported by an official DLL yet, such as Paradise, Video-7,
     Trident, or any other video card without a graphics coprocessor.
     (With this option enabled, the functionality is identical to the
     temporary ALL.DLL that we offered in the past.)


     ATI   (ULTRA)
     ---
     This option is only used by ULTRA.DLL and is on by default. If you
     disable it, you can use ULTRA.DLL on regular IBM 8514/A cards.


     ROWS  (ALL DLLs)
     ----
     This option is only used if you use a configuration file to change
     the number of rows to 43/50 from 25. If you choose to have TDW
     start in 50-line mode, set the Rows option to 50 in the TDW.INI file.


     RestoreTextScreen   (DUAL8514, STB)
     -----------------
     This option is valid only with DUAL8514.DLL and STB.DLL. The
     settings are:

       o Yes    - restores TDW's (or TPROFW's) screen after exiting.
       o No     - does not touch TDW's (or TPROFW's) screen at all.
       o Clear  - forces the screen to clear upon exiting TDW (or TPROFW).


   Video DLL example
   -----------------
   If you have an ATI VGA Wonder card and you want it to save
   the entire screen and log information to a file named
   C:\WINDOWS\TDVIDEO.LOG, the TDW.INI file will look something
   like this:

       [TurboDebugger]
       DebuggerDLL=c:\windows3.1\tdwin.dll
       VideoDLL=c:\borlandc\bin\ati.dll

       [VideoOptions]
       SaveWholeScreen=yes
       DebugFile=c:\windows\tdvideo.log


   Technical information
   ---------------------
   TDW, upon loading, looks for the video DLL in the following
   locations in the following order:

     1. The same directory TDW (or TPROFW) is running from

     2. The Windows main directory

     3. The location specified in TDW.INI


   If it finds the file, TDW (or TPROFW) accesses the DLL as needed.
   TDW (or TPROFW) makes calls to the DLL to handle the entire video
   screen-switching context. The DLL accomplishes the screen switching
   by allocating a buffer as it gets loaded. Graphics screen contents
   are then saved to this buffer when TDW (or TPROFW)_enters text mode.
   The DLL restores the graphics screen from this buffer when TDW
   (or TPROFW) exits text mode. Memory allocated for the buffer is freed
   when the DLL is unloaded.


   Seeing the user screen of an application
   ----------------------------------------
   Some video modes might require some special handling. The Int2FAssist
   option allows these modes to work correctly on most systems. The
   behavior is as follows:

   When you set "Int2FAssist=yes", the DLL notifies Windows to tell
   all sub-windows on the screen to repaint themselves while the user
   application is running. This allows the user screen to be viewed
   when stepping, tracing, or running your application. It will not,
   however, switch to the user screen when you press the Alt-F5 key
   combination because TDW is still in control (TDW doesn't allow Windows
   to process any messages at this point.)

   If you also set "SaveWholeScreen=yes", pressing the Alt-F5 key
   combination shows the user screen. (The DLL will now copy the screen
   back for you.) The drawback to enabling SaveWholeScreen is that it
   will take longer to step or trace if TDW needs to switch back to
   the user screen for that particular instruction. Also, extra messages
   will be passed to your application that normally wouldn't be passed.
   This may affect the debugging of certain pieces of code (like finding
   a bug in an owner-draw control). In these cases, you won't want to use
   this option on the current video mode.


  Using TDW in Dual Monitor Monochrome Mode
  ----------------------------------------
   If TDW is activated using the -do switch, there is no need for
   a video DLL or a value in the VideoDLL section of TDW.INI. The
   value in VideoDLL should be removed as follows:

    [Debugger]
    VideoDll=


   The [WRemote] section
   ---------------------
   If you run WRSETUP to configure WREMOTE, the settings are
   saved in the WRemote section of TDW.INI. In previous versions,
   these settings were saved in the WRemote section of
   WREMOTE.INI. If you have a previous version of TDW or TPROFW
   and want to preserve your WREMOTE settings, you can append the
   contents of WREMOTE.INI into TDW.INI. Be sure to include the
   [WRemote] section heading.

   The settings for the [WRemote] section are described in the
   "Turbo Debugger User's Guide" in Appendix E, "Remote
   Debugging" starting on page 386.


  Known Problems
  ==============

  - TD386 and TF386 currently do not support machines with over
    16M of memory.  You must disable any extra memory to use
    these programs.

  - On page 10 in Chapter 1 of the "Turbo Profiler User's Guide,"
    there is a statement that Pascal versions of the PRIMEn.C
    programs are included on disk. Only the C versions of these
    sample programs are included on the distribution disks.

  - Some mouse drivers are incompatible with TD and will
    cause the mouse cursor to get scrambled when debugging DOS
    graphics applications on a second monitor (-do option).  If
    that happens, you can try a different driver or turn off the
    mouse in TD by using the -p- option on the TD command line.
    The mouse will still be active in the target application.

  - If you have any lines in your SYSTEM.INI that rename DLLs, such as
    "sound.dll=mysound.drv", TDW might display the error "Can't find 
    sound.dll" when it loads a program that uses the DLL.  To solve this 
    problem, use the -wd command switch to disable TDW's DLL checking when 
    you load such a program.

  - The first time a program is run under TDW or TPROFW, mouse
    messages are processed normally. However, on every subsequent
    execution of that program, you must press a key on the
    keyboard before mouse messages can be processed.

  - TSENG ET-4000 video chip set and Windows 3.1 problems

    Under Windows 3.1, if you use the standard Windows VGA or
    SuperVga  driver with a video card that uses the TSENG
    ET-4000 chip set, you might encounter a number of problems
    with running TDW on a single monitor.

    o The hardware cursor (the white cursor displayed in all
      dialog boxes that require text input) is invisible, but
      you can still debug your program.

    o On certain TSENG 4000-based cards (such as the Diamond
      Speedstar VGA card), when you launch TDW the default
      character set is replaced by graphic characters.

   To overcome this problem please contact Microsoft Corp and ask
   for the updated TSENG drivers that were NOT shipped with
   Windows 3.1. They are also located in the Microsoft Forum (GO
   MSOFT) under the Microsoft Software Library heading in
   CompuServe.
  
        Filenames      Date
        ---------      ----

        TSENG1.EXE     4/6/92
        TSENG2.EXE     4/6/92
        TSENG3.EXE     4/6/92
        TSENG4.EXE     4/6/92
  
  
   In the meantime, you can use one of the following alternatives:
  
   - Run Windows Setup and replace your Windows 3.1 VGA or SVGA driver
     with the Version 3.0 VGA driver supplied with Windows 3.1.
  
   - Start TDW from the DOS command line. For example,
  
     WIN TDW myprog
  
   - Each time you launch Windows, run a full screen DOS session
     and type "exit" to close it. After you do this, when you run
     TDW, it will use the correct character set.


  CLASS LIBRARY

  - If you used the add(), addAt(), or getItemsInContainer()
    member functions of the Array class in Borland C++ 2.0
    applications, note that their behavior has changed slightly.
    The following rules apply to these and related functions:

      1. add() will insert its argument at the lowest available
         location in the Array.  This location is known as the
         "insertion point".

      2. detach() will remove its argument from the Array, and if
         that Object is located below the insertion point, it
         will move the elements above the Object being removed
         and below the insertion point down one position, so that
         the elements below the insertion point remain
         contiguous.  The insertion point, of course, moves down
         one.

      3. if the location specified in a call to addAt() is below
         or at the insertion point, the elements above the
         specified location and below the insertion point are
         moved up one position, and the Object is inserted.  The
         insertion point moves up one.

      4. if the location specified in a call to addAt() is above
         the insertion point, the Object is inserted at that
         location, replacing any Object that may have been placed
         there previously.

      5. getItemsInContainer() returns the number of elements
         below the current insertion point.  If you use addAt()
         to add elements above the insertion point, they will not
         affect the value returned by getItemsInContainer(). 
         This is a change from the behavior in the previous
         version of the class library.

  - Two versions of the class library sources are provided; one
    using an implementation using C++ templates, and one not using
    templates. The small and dynamic link libraries are provided, and
    a makefile is provided to build other models.


  ObjectWindows Library

  - You must rebuild the class libraries in the appropriate model
    for the intended OWL model if they don't already exist - see
    paragraph above.

  - Due to restrictions on code size, compact model is no longer
    supported for OWL applications.

  - Note that you must use the TWindow member function AssignMenu
    to assign a window's Attr.Menu member and to load a menu for
    that window.

  - You must alter project files and makefiles to indicate
    compatibility with either Borland C++ version 3.0 or 3.1.
    Add WIN30 for OWL projects from Borland C++ 3.0, or WIN31
    for projects created under Borland C++ 3.1, to the defines
    under Options|Compiler|Code Generation in the IDE, or passing
    -DWIN30 or -DWIN31 to MAKE.

  - World of ObjectWindows video users need to make modifications
    to their Borland C++ 3.0 make or project files in order to
    successfully compile their OWL code with Borland C++ 3.1. You
    must define the WIN30 flag when compiling the OWL Video code.
    In MAKEFILE.INC add the text, "-DWIN30" to the four 'CFLAGS'/
    'CFLAGSD' lines.  In all project files, you must go to Options|
    Compiler|Code Generation and put WIN30 in the Defines combo box
    field (at the bottom of this dialog).


  Please see OWL31.DOC for additional information on ObjectWindows
  Library.

  TURBO VISION

  - For information on the Help compiler, and how to build a help
    document, please refer to the comments in the file TVHC.CPP in
    the help directory.  Also, see TVDemo for an example of how to
    add help to your applications.

  - Due to the complex interactions among the Turbo Vision classes,
    certain situations can arise involving deletion of objects that
    cannot be properly handled through destructors.  Therefore, we
    provide a static member function void destroy( TObject * ) to
    the class TObject.  Whenever an object of a type derived from
    TObject is to be deleted, the function destroy() should be called
    instead.  This will take care of terminating the object,
    correctly freeing the memory that it occupied.  For example:
    
             TDialog *dlg = new TDialog( ... );
             //delete dlg;    // DON'T DO THIS
             destroy( dlg );  // DO IT THIS WAY

  - The Turbo Vision Source Code is provided for your use and
    modification.  IMPORTANT: Borland Technical Support will not
    answer questions or provide any assistance relating to this
    product.  Essentially, the Sources are provided "as is" and you
    are on your own.

  - In order to build the library, you must have Tasm available.

  - When building or modifying the library it is better to place
    debug info in only those modules in which you are interested.
    If you place debug info all the modules, Tlink may not be able
    to link your application.

  - In order to build an overlayed Turbo Vision application with
    Borland C++ 3.1, make sure you observe the following:

      1. You need to rebuild the Turbo Vision library with
         overlays. Change to the SOURCE directory under TVISION
         and enter the command

                 make -DOVERLAY -B

         This will produce a new version of TV.LIB which will
         support overlays. It will also produce two .OBJ files,
         SYSINT.OBJ and TEVENT.OBJ.  These two files contain code
         for TV's interrupt handlers, so they cannot be 
         overlayed.

      2. When building an overlayed application, you must be sure
         to link with the three files SYSINT.OBJ, TEVENT.OBJ, and
         TV.LIB.  The two .OBJ files must not be in overlays.
         You also need to specify local virtual tables.
         Your command line should look something like this:

         bcc -ml -Vs -B -Yo myfile -Yo- sysint.obj tevent.obj -Yo tv.lib

         See the Programmer's Guide for details on the meanings
         of the various -Yo switches.

     3. To improve performance, increase the size of the global
         variable __ovrbuffer to 0x2000 or greater.


  RUNTIME LIBRARY SOURCE

  The Borland C++ Runtime Library Source Code is provided for
  your use and modification.  IMPORTANT: Borland Technical
  Support will not answer questions or provide any assistance
  relating to this product.  Essentially, the Sources are
  provided "as is" and you are on your own. If you find what you
  think is a genuine problem with the source code, however, we
  would like to hear about it. See "How to Get Help" above.

  See CRTL.DOC for more information on building the Runtime
  Library from source.

 5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM
---------------------------------------------

  Included with Borland C++ is a program to test your Expanded
  Memory hardware and software. If you have problems using
  Borland C++ with your EMS, type EMSTEST at the DOS prompt and
  follow the instructions.


 6.  CORRECTIONS TO THE DOCUMENTS
---------------------------------

Please see the MANUAL.XXX files in the DOC subdirectory for corrections
to the documents.
022 Borland C++ V4.00 22×TD
README.TXT [展开]
				WELCOME TO BORLAND C++ 4.0


This README file contains important information about Borland C++.
For the latest information about Borland C++ and its accompanying
programs and manuals, read this entire file.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
     -Sources of information
2.  Installation
3.  Features
     -Compiler
     -Linker
     -IDE
     -Turbo Debugger
     -Resource Workshop
     -ObjectWindows Library (OWL)
     -VBX Support
     -Documentation
4.  Important Information
	 -Object File Format
	 -Make
	 -Out of Memory and MAKESWAP
	 -Threads
     -New Tools
	 -DDVT functions and RTTI
	 -Inline assembly and interrupts
	 -BC4 path name
	 -Creating 16-bit import libraries from .DEF files
	 -Debugging DDE applications
     -Running from a Windows 3.1 DOS Prompt
	 -Developing under NT
     -C/C++ Language Changes
     -Developing for NT
     -Libraries and Startup Code
     -Compiler and Linker Switch Changes
     -Creating .COM files
     -Converting Borland C++ 3.1 Windows Code to Borland C++ 4.0
     -Changes to the Class Libraries
     -Casting Macros
     -IDE/Integrated Debugging
     -Floating Point Formats
     -Turbo Debugger for Windows
     -Using Tools with NTFS
     -Run-time Type Information and Virtual Destructors

------------------
1. HOW TO GET HELP
------------------

SOURCES OF INFORMATION
----------------------
  If you have any problems, please read this file, the
  HELPME!.DOC and other files in your DOC subdirectory, and
  check the on-line help and the Borland C++ manuals first.
  If you still have a question and need assistance, help is
  available from the following sources:

  1. For instant on-line access to the Borland forums with
     their libraries of technical information and answers
     to common questions, type

        GO BCPPDOS     - for questions pertaining to DOS

         or

        GO BCPPWIN     - for questions pertaining to Windows

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's on-line charges.

  2. Borland offers a wide variety of Technical Support plans
     providing a range of assistance from installation and general
     usage of Borland C++ to language syntax, programming, and
     debugging help. For information about these support programs,
     call 1-800-523-7070.

  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX
      catalog of technical document entries.

  4. Borland DLBBS. Dial (408) 431-5096 (up to 9600 baud, 8-N-1)
      for a host of free technical documents and example programs.

  5. For immediate assistance with everything from configuring Borland C++
      to programming or debugging, call our C++ Programmer's
      Advisor Lines ($2/minute, first minute free):
            * Windows / Win32:     1-900-555-1002  or 1-800-782-5558 (MC/Visa)
            * DOS :      1-900-555-1004  or 1-800-368-3366 (MC/Visa)

---------------
2. INSTALLATION
---------------

IMPORTANT!
Do not install Borland C++ 4.0 files over previously installed Borland
C++ directories. The files in this distribution will not work
with previously shipped tools and libraries.  This is particularly
true for configuration files from previous shipping
releases, like TDCONFIG.TDW and BCCONFIG.BCW.

Also, be especially careful when using object files and libraries
from Borland C++ 3.1 with binaries created with this release. There are
several potential problems when linking with old objects or libraries.
Exceptions won't work correctly (destructors won't get called) when a
pre-BC4 stack frame is unwound due to an exception. Also, if a constructor
or destructor compiled with a pre-BC4 compiler is involved in exception
unwinding, trouble may occur. Another potential problem is when an RTTI class
is shared with pre-BC4 code; some cases of that will be caught by the linker,
but others may fail mysteriously. Try using the -K2 switch to get pre-BC4 code
to link. Note: these problems are C++ specific. C objects between versions
should be more readily compatible.


Installing Borland C++ 4.0 on your hard disk:
--------------------------------------
Installing from floppy disks:
     1. Select File|Run from Windows 3.1, Windows for Workgroups 3.1x,
        or Windows NT.
     2. Enter A:INSTALL (or B:INSTALL) on the input line.
     3. Under "Installation Options", you have the option of not
        installing Win32s, which should be turned off if you are
        installing under Windows NT.
          (NOTE that BCW does not run under NT, so if you are only using
          NT, you may wish to not install it.)
     4. Fill in directories as appropriate, and INSTALL will create
          appropriate Windows groups, install Win32s, and install the
        new Borland C++ 4.0 software according to the directories you select.

Installing from the CD-ROM:
     1. Go to the CD-ROM, and change directories to INSTALL.
     2. Select File|Run from Windows 3.1, Windows for Workgroups 3.1x,
        or Windows NT.
     3. Enter X:INSTALL on the input line (where X: is your CD-ROM drive).
     4. Under "Installation Options", you have the option of not
        installing Win32s, which should be turned off if you are
        installing under Windows NT.
     5. Fill in directories as appropriate, and INSTALL will create
        appropriate Windows groups, install Win32s, and install the
        new Borland C++ 4.0 software according to the directories you select.

To use the built-in transfer tools and Help, make sure their location is
in your path (the \BIN directory for Borland C++ 4.0).

After installing, make sure your path is set correctly, and restart
Windows before using Borland C++ 4.0.

NOTE: If you want to install the Win32s debug kernel, use the
SWITCH.BAT file provided with the Microsoft Win32s tools, found on the
NT SDK CD-ROM distribution.  This will ensure that the proper files
are copied to the appropriate places.  Not copying the files correctly
will result in obscure load errors.


Configuring Borland Pascal and Borland C++
------------------------------------------
The install program for Borland C++ 4.0 will configure your system to
allow the use of Borland C++ 4.0 and Borland Pascal 7.0 on the same
machine.  As long as you have installed Borland Pascal prior to
(rather than after) installing Borland C++ there are very few
guidelines you must follow:

- The two Windows hosted IDEs may not be run simultaneously.

- Each must use their respective copies of tools and utilities that
  depend on debug information, most notably Turbo Debugger for Windows
  (TDW).  You may find it useful to rename the Borland Pascal version
  of TDW.EXE to something like BPTDW.EXE to avoid confusing filenames
  in your path.

- Both versions of TDW may not be run simultaneously.

- Make sure that old copies of TDW.INI are removed from your system.
  (Running the utility TDWINI.EXE will make sure that this takes
  place.)

To reduce disk space requirements, you may wish to remove duplicate
versions of utilities that do not require debug information, such as
WinSight and Resource Workshop.  Use the versions that came with
Borland C++ 4.0 so that you will have the latest features.

To use TDWGUI.DLL with TDW version 3.1 you need to add UseTimer=Yes
to the VideoOptions section of TDW.INI.  This option should not be
set when using TDW version 4.0.  This means that you would need to
change your TDW.INI file by hand each time you switched between
versions of TDW.  For this reason, we recommend the non-windowed
video DLLs (such as SVGA.DLL) for customers who debug both BP and BC
applications.

If you are installing Borland Pascal 7.0 AFTER Borland C++ 4.0 has
been installed, you will have to change by hand the system settings
that allow these products to coexist:

In your SYSTEM.INI file, check your [386Enh] section for multiple
entries for the device TDDEBUG.386.  Remove duplicate entries of
TDDEBUG.386 so that only the version from Borland C++ is loaded.  On
disk, you may also want to rename or remove the BP7 versions of
TDDEBUG.386 and TDWIN.DLL to avoid their accidental loading.  You
must restart Windows after making changes to SYSTEM.INI.


Win32s and minimum swap file size
---------------------------------
Borland recommends that you have a minimum of 12 MB of memory available to
run Win32s applications.  For example, if your machine has 8 MB of memory
available to Windows, you should configure your "Virtual Memory" (swapfile)
to at least 4 MB.  This will reduce the risk of out-of-memory errors
occuring in Win32s.


NT console applications and Win32s
----------------------------------
There is no Win32s console, so attempting to run a Win32 console
application without NT loaded will result in an error.


Changes to SYSTEM.INI file
--------------------------
The install program makes these changes to the SYSTEM.INI file:

  1) Adds "device=c:\bc4\bin\windpmi.386" to support our 32-bit tools.
  2) Adds "device=c:\bc4\bin\tddebug.386" to support our debugger.


Configuring the Windows NT command prompt
-----------------------------------------
To run 16-bit protected-mode programs (bcc, tlink) under an NT command prompt
you need to add the following line to CONFIG.NT:

  ntcmdprompt

Under the default NT command-line prompt, DOS COMMAND.COM is run after
returning from a TSR (such as RTM.EXE which bcc and tlink load). Adding the
above line will cause the original NT CMD.EXE to be run.


Outdated versions of Win32s
---------------------------
If you are running an outdated version of Win32s, the INSTALL program will
instruct you to remove it before installation.  To remove an old
version of Win32s perform the following steps:

  1. Change directory to the WINDOWS directory on your hard drive.  This
     is most likely C:\WINDOWS.

  2. Edit the SYSTEM.INI file and remove the line in the [386Enh]
     section that reads:

       device=C:\WINDOWS\SYSTEM\WIN32S\W32S.386

     (The actual path in the above line may be different to reflect your
      configuration.)

  3. Change directory to the SYSTEM subdirectory.

  4. Remove the following files:

       W32SYS.DLL
       WIN32S.INI
       WIN32S16.DLL

  5. Change directory to the WIN32S subdirectory.

  6. Remove all files here.

  7. Change directory back to SYSTEM and remove the WIN32S subdirectory.

You will now be ready to run the INSTALL program.  Be sure to select
<Install Win32s> in the INSTALL program so that the newer version of Win32s
will be installed.

-----------
3. FEATURES
-----------

Compiler:
---------
  - Support for writing 16 and 32-bit Windows applications that target
    Windows 3.1, Win32s and Windows NT, and 16-bit DOS applications.
  - Pentium support.
  - Support for ANSI C++ exception handling, structured exception handling
    under C, and mixed C/C++ exception handling. All exception handling
    constructs are available for both 16- and 32-bit.
  - Additional optimizations and faster compile time.
  - Support for ANSI C++ operator new[] and operator delete[].
  - Runtime Library support for the ANSI C++ string class.
  - Support for ANSI C++ runtime type identification (RTTI).
  - Support for ANSI C++ new style casts dynamic_cast, static_cast, const_cast,
    and  reinterpret_cast.
  - Support for three character types as provided in ANSI C++.

Linker (16-bit and 32-bit):
---------------------------
  - Now handles binding of resources; no need for a separate RC or
    RLINK step.
  - Linker debug capacity expanded.

IDE
---
  - 16-bit DOS and Windows plus 32-bit Windows targeting from a single IDE.
  - Integrated GUI debugging for 16-bit Windows applications.
  - Includes both 16- and 32-bit tools (compiler, linker, resource
    compiler, resource binder, and library manager)
  - A new project manager that supports multiple targets, drag-and-drop,
    and Style Sheets for associating options.
  - AppExpert, which simplifies the process of creating
    ObjectWindows applications through code generation.
  - ClassExpert, which simplifies adding and managing classes in
    your AppExpert application.
  - Transfers, Settings Notebook, SpeedMenus, and a configurable SpeedBar.
  - Expanded editor support, including column blocking and window
    splitting.  TEMC now called KEYMAPR.

Turbo Debugger:
---------------
  - Turbo Debugger (TD32) for Win32s and Windows NT.
  - Support for OS exception handling.
  - Support C/C++ exception handling.
  - Windows NT thread support.
  - Video DLL to run TDW in a window.
  - Remote debugging with TDW.
  - Session state saving.
  - Process attach for Windows NT.
  - Turbo Debugger Video Configuration Utility (TDWINI.EXE).
  - Built in large model for greater capacity.

Resource Workshop:
------------------
  - Support for Win32s, Win32.
  - Resource preview
  - DialogExpert
  - Auto ID numbering
  - Auto mapping of accelerators and help hints to menu items
  - Support for VBX controls
  - SpeedMenus
  - Dialog editor property inspector
  - Integrated with ClassExpert and IDE project manager

ObjectWindows Library (OWL)
---------------------------
  - Complete coverage of Windows API, including GDI
  - Single source for Win 3.1, Win 32s, and NT
  - Built in exception handling using standard C++ exceptions for robust error
    handling
  - Built-in type safety using standard C++ templates
  - Toolbars, status lines, and print preview
  - Flexible Document/View architecture
  - Supports VBX 1.0 controls in a dialog or window
  - Layout Windows
  - Mix-in architecture
  - Support for 3d controls
  - Support for BWCC controls
  - Gadgets and Widgets
  - Multi threading support
  - Printing and print previewing support

VBX Support
-----------
Borland's visual tools, such as Resource Workshop, provide support of VBX 1.0
controls via a DLL called BIVBX10.DLL. You can freely distrubute this DLL
with programs you create that use VBX controls.

BIVBX10.DLL has been tested with a large number of VBX controls written to the
Microsoft Visual Basic 1.0 CDK specification. If you have a problem with a
specific control, make sure that it does not require VB 2.0 or VB 3.0 CDK
functionality. VBX 2.0 and 3.0 controls will usually display a message saying
that they require VB 2.0 or 3.0 support. In some cases, though, the control may
appear to work but exhibit instability. Please contact the control vendor and
explain the problem. They may have an updated control or may be able to contact
Borland to find a solution.

Documentation:
--------------
This distribution includes printed books and online help to assist
you in understanding and using the new features of Borland C++ 4.0.

For C++ Language and Programming information:
     See the Library Reference, the
     Programmer's Guide, and the DOS Reference.
     See also the online Help.

For information on using MAKE, TLINK, and resource tools:
     See the User's Guide.
     See also the online Help.

For information on keyboard mapping and KEYMAPR (used to be called TEMC):
     See the online Help.

For information on using the IDE, AppExpert & ClassExpert, the Integrated
Debugger, and compiling options:
     See the User's Guide.
     See also the online Help.

For information on using the new Project Manager:
     See the online Help.

For information on converting your ObjectWindows 1.0 code to
ObjectWindows 2.0:
     See the ObjectWindows Programmer's Guide.
     See also the online text file owldoc.wri.

For information on programming in ObjectWindows 2.0:
     See the ObjectWindows Reference Guide, and the
     ObjectWindows Programmer's Guide.
     See also the online text file, owldoc.wri.

For help using Turbo Debugger:
     See the online text files helpme!.tdw and hints.tdw.
     See also the online Help.

To use the online Help, make sure the Borland C++ 4.0 \BIN directory is
on your path.


------------------------
4. IMPORTANT INFORMATION
------------------------

Object File Format
------------------
This product is designed to use and generate only object files which
adhere to the Intel OMF (Object Module Format) specification. TLINK32
and TLIB only accept files of this format, and all provided libraries
use this format. There is no support in the linker or librarian for
COFF object modules produced by Microsoft C tools.


MAKE
----
MAKE will not put a space between two sets of file list macros as in BC++ 3.1
and before.  The example makefile below illustrates this; simply execute MAKE
in the directory containing the makefile. The output is:

   ALLOBJS1 = one onetwo two
   ALLOBJS2 = one one two two

makefile:

OBJS1 = \
   one \
   one

OBJS2 = \
   two \
   two

ALLOBJS1 = $(OBJS1)$(OBJS2)
ALLOBJS2 = $(OBJS1) $(OBJS2)

..:

   @@echo ALLOBJS1 = $(ALLOBJS1)
   @@echo ALLOBJS2 = $(ALLOBJS2)


Out of Memory and MAKESWAP 
-------------------------- 

If you get "Out of Memory" errors from DOS when running the
command-line tools, or if you have only 8 MB of RAM and have
out-of-memory problems building and using 32-bit applications,
then create a swap file with the MAKESWAP utility.  (Note that
this applies to DOS only, not to DOS boxes opened under
Windows.) MAKESWAP takes the size of the file to create in
KBytes, for example

  MAKESWAP 12000

will create a 12MB swap file in the current directory called EDPMI.SWP
for use by Borland command-line tools.  To enable the swap file, use
the DPMI32 environment variable by issuing the following command at
the DOS prompt:

  set DPMI32=SWAPFILE <location of swap file>\EDPMI.SWP

You must clear this environment variable by issuing the command

  set DPMI32=

before running Paradox or other 16-bit DPMI-hosted executables,
such as Borland C++ 3.1 command-line tools.


Threads
-------
When creating secondary threads, the _beginthread or _beginthreadNT
and _endthread() RTL functions must be used to ensure the proper RTL
initialization and cleanup. Using NT's CreateThread and ExitThread
functions will result in undefined behavior if an implicit or
explicit call is made to the RTL. Both exception handling and RTTI
can lead to implicit RTL calls.


DDVT functions and RTTI
-----------------------
When compiling code that contains DDVT functions, do not use run-time
type information or you will receive an error message. In order to
compile without using run-time type information, compile all code
that uses DDVTs (for instance OWL 1.0x libraries and applications)
with the -RT- switch (Options|Project|C++ Options|Exception
handling\RTTI in the IDE).


Inline assembly and interrupts
------------------------------
If your inline assembly code includes an interrupt call, the compiler does not
preserve any registers altered by the call. You must write code to save and
restore registers when using interrupt calls within inline assembly code.


BC4 path name
------------------
Any occurrence of BORLANDC in the BC++ 4.0 path should be replaced with BC4.


Creating 16-bit import libraries from .DEF files
------------------------------------------------
Use the /o implib switch when creating 16-bit import libraries from .DEF files
to prevent implib from generating extensions for import entry module names.


Debugging DDE applications
--------------------------
DDE applications must be debugged in hard mode.


New Tools
----------
The 16-bit linker has been modified in this version to allow for more than 64K
symbols in the executable's symbol table. The following tools have changed to
conform to the resulting new debug information format:

  TDW
  TDUMP
  Turbo Debugger (standalone)
  IDE Debugger
  IDE Browser

These tools have versioning information, so that if you attempt to use any of
them with executables created in prior versions, an error message will result.
You will then need to relink your executables.

If you don't see correct dump information when using TDUMP version 4.1 on your
executables, check the header at the top of the output. If it does not indicate
version 4.0 debug information, the associated .EXE file must be recompiled with
version 4.0 tools.


Running from a Windows 3.1 DOS Prompt
-------------------------------------
If you run BCC or TLINK from a Windows DOS box and you get
out of memory errors, increase the XMS memory (in the 'Maximum'
setting) allocated for the DOS box by editing the appropriate .PIF
file (usually DOSPRMPT.PIF). BCC.EXE needs about 4MB to compile
medium-sized .CPP files, and might need more memory for large .CPP
files with debugging information.

NOTE: You must set the 'Maximum:' setting to the amount needed, not
      the 'Required:' setting.  Using the 'Required:' setting only
      sets aside memory for XMS, NOT for DPMI services and hence
      any amount set in the 'Required:' setting box is unavailable.


Developing under NT
-------------------
To do development on NT, use the command-line tools, Resource
Workshop, and TD32. The IDE is not currently supported under Windows
NT.


C/C++ Language Changes
----------------------
Many changes were made to the compiler in compliance with the
latest changes proposed by the ANSI C++ committee.  These include
three distinct char types, enhancements to templates, support for
virtual functions differing in return types, and other improvements
listed here.  See the Library Reference and the Programmer's Guide
for complete details on these changes and how they affect your
code.

wchar_t is a fundamental data type in C++ programs. In C programs it
continues to be a typedef defined in stddef.h. See online Help.

Enum operator overloading is also supported.

The runtime library now supports the ANSI C++ string class.  If you
already have a string class, it must be renamed for Borland C++ 4.0.

In addition, operator new and operator new[] now throw an
exception (xalloc), as specified by the ANSI C++ committee.
To get the old behavior, you can issue set_new_handler(0). 
(set_new_handler(0), however, does not work with ObjectWindows
or string classes.) See Chapter 3 of the Programmer's Guide.

Arrays are now being allocated through operator new[]() and deleted
by operator delete[](). An example is provided in Chapter 3 of the
Programmer's Guide.

Borland C++ 4.0 implements ANSI C++ runtime type identification (RTTI). See
the Library Reference, "C++ runtime support",  for a description of
class Type_info. RTTI and operator typeid() are fully described in
Chapter 3 of the Programmer's Guide.

Borland C++ 4.0 provides a full implementation of exception handling
under C++ and C.  C exceptions can be handled in C or C++ code;
C++ exceptions can be handled only in C++ code. The C++ exceptions are
described in the Library Reference, "C++ run-time support." See Chapter 4
of the Programmer's Guide for a full description of how to use exception
handling.

Borland C++ 4.0 also implements the accepted ANSI C++ new style casts.
See the Chapter 3 of the Programmer's Guide for information and
examples.


Libraries and Startup Code
--------------------------
The contents of the LIB directory are described in the online Help.
See the DOS Reference for a description of DOS-only libraries and
start-up code.

There are two new functions that provide access to 32-bit operating system
file handles. See online Help for a description of _open_osfhandle and
_get_osfhandle.

Member function Type_info::fname() is not available.

Several global variables and library functions have been renamed. See the
Library Reference, Chapter 1.


Compiler and Linker Switch Changes
----------------------------------
See the User's Guide for information on new compiler and linker switches.

You may get this 32-bit Linker warning:
     Warning: External symbol <XX> was not qualified with __import in
       module <YY>
If the symbol <XX> is a function, you can ignore this warning.  If
the symbol <XX> is data, then you must qualify the symbol with __import.

BCC32 provides support for the Pentium processor. This support is enabled
by the -5 compiler switch.


Creating .COM Files
-------------------
Creating .COM files requires setting the compiler to the tiny memory
model, telling the linker to make a .COM file, and linking to the
CT.LIB library.  The IDE does not generate .COM files but the
command-line tools do.  For example:

     bcc -mt -lt file.cpp ct.lib


Converting Borland C++ 3.1 Windows Code to Borland C++ 4.0
----------------------------------------------------------
To get your BC++ 3.1 code to compile and run under Borland C++ 4.0,
modify your code to reflect three character types where compiler
errors occur when using the Borland C++ 4.0 RTL includes.
Alternatively, you can use the -K2 compiler option with the RTL
includes from BC++ 3.1. This option provides for only two character
types. (Note that -K2, a backward compatibility switch, is supported
only in the 16-bit compiler.) Also, use operator new[]() and
delete[]() syntax for class arrays.

Certain 32-bit to 8-bit conversions allowed by ANSI are flagged by
BCC32 with "Conversion may lose significant digits in function
XXXXX".  You can safely ignore this message if you are doing certain
types of 32-bit to 8-bit casts (for instance, int to char) and you're
not worried about losing significant digits in those cases.


Changes to the Class Libraries
------------------------------
Only the version of the class library implemented with C++ templates
is distributed and directly supported in Borland C++ 4.0.

The class library "object-based" include files are provided in the
\BC4\INCLUDE\CLASSLIB\OBSOLETE subdirectory.  The object-based
libraries themselves are not supplied, but can be built using the
instructions found in the \BC4\SOURCE\CLASSLIB makefile (see the
comments located there).

TSArray and TSArrayIterator classes have been added to the class libraries.
They are aliases for TSArrayAsVector and TSArrayAsVectorIterator.

The Flush and Delete member functions for direct containers (except
dictionaries) no longer take a delete parameter (this parameter had been
ignored since direct containers have their own copy of the contained element).
For example:

  TMArrayAsVector<double> arr(10);
  arr.Flush(); // legal
  arr.Flush(1);     // illegal - causes syntax error
  arr.Detach(index);     // legal
  arr.Detach(index,1);   // illegal - causes syntax error

  TMIArrayAsVector<double> arr1(10);
  arr1.Flush();     // legal
  arr1.Flush(1);    // legal.
  arr1.Detach(index); // legal
  arr1.Detach(index,1); // legal

Bag and set container member function FindMember is now called Find.
It takes the same parameters.

Association containers now have a member function called DeleteElements:

  void DeleteElements()

The dictionary containing the associations determines whether pointed-to
objects should be deleted, and, if so, calls DeleteElements for each of
the associations it holds. The Detach and Flush member functions for the
TMDictionaryAsHashTable template (and all templates derived from it)
have been changed to the following:

  int Detach( const T &t, DeleteType dt = DefDelete )

  void Flush( DeleteType dt = DefDelete )

These changes to the direct versions of the dictionary templates make
them similar to an indirect container in how they handle object
ownership. Here is an example:

  TDIAssociation<int,int> assoc( 3, new int(4) ); //create an association
  TDictionaryAsHashTable<int,int> dict; //create a dictionary
  dict.Add( assoc ); //copy assoc into the dictionary
  dict.OwnsElements(); //tell dict that it should delete pointed-to objects
  dict.Flush(); //delete the int created by new in the first line

All list and double-list containers now have the DetachAtHead member
function.  This function removes items from the head of a list
without searching for a match. The syntax is

  int DetachAtHead() // for direct lists

  int DetachAtHead( int del = 0 ) //for indirect lists

Example:

  TMListImp<MyObject>list; //create list to hold MyObjects
  list.Add(MyObject()); //construct a MyObject, add to list
  list.Add(MyObject()); //add second MyObject
  list.DetachAtHead(); //remove MyObject at head of list


Changes to class diagnostics
----------------------------
Previously, in order to create a diagnostic group you had to declare it
and define it in the same file:

  DIAG_DECLARE_GROUP(Sample);
  DIAG_DEFINE_GROUP(Sample, 1, 0);

We also provided a macro that did both together:

  DIAG_CREATE_GROUP(Sample, 1, 0);

A change in the diagnostic software makes it illegal to have both
DECLARE and DEFINE in the same file. So code that creates a diagnostic
group now does it in one step:

  DIAG_DEFINE_GROUP(Sample, 1, 0);

DIAG_CREATE_GROUP has been removed. DIAG_DECLARE_GROUP still creates an
extern declaration for a diagnostic group (see file CHECKS.H and CHECKS.CPP).

Code that uses both DIAG_DECLARE_GROUP and DIAG_DEFINE_GROUP in the same
file must be changed to remove DIAG_DECLARE_GROUP.

Old code:

  DIAG_DECLARE_GROUP(Sample);
  DIAG_DEFINE_GROUP(Sample, 1, 0);

New code:

  DIAG_DEFINE_GROUP(Sample, 1, 0);

Any use of DIAG_CREATE_GROUP must be changed to DIAG_DEFINE_GROUP.

Old code:
  DIAG_CREATE_GROUP(Sample, 1, 0);

New code:

  DIAG_DEFINE_GROUP(Sample, 1, 0);

Also if a header file uses DIAG_DECLARE_GROUP (so that the group
declaration is automatically available to files that #include the
header) the source file that contains the DIAG_DEFINE_GROUP
invocation for that group will generate a redefinition error (this
isn't done anywhere in OWL or class lib). The solution here is to
conditionalize the header file so that the declaration goes away when
the source file with the DIAG_DEFINE_GROUP invocation is built:

     foo.h
     -----
     #if !defined( BUILD_FOO_GROUP )
     DIAG_DECLARE_GROUP( Foo );
     #endif

     foo.cpp
     -------
     #define BUILD_FOO_GROUP
     #include "foo.h"


Changes to Object Streaming
---------------------------
The implementation of Object Streaming formerly used in ObjectWindows
and Turbo Vision has been moved into the class library. Several 
changes have been made to the streaming mechanism, but they should be
transparent to existing class library code.  See the Programmer's
Guide for details on streaming.

The header file OBJSTRM.H defines several macros that will make creating
streamable objects easier. See that header file for details.

There are two types of streamable objects:
 - Resident objects which may be streamed out but which are not reconstructed
   when streamed back in
 - Dynamic objects which are reconstructed when streamed in

Resident objects include static objects and objects present when an
application starts, such as its main window. These objects must be streamed
out via a reference rather than via a pointer.

Dynamic objects, on the other hand, must be streamed out via pointers,
causing them to be reconstructed when streamed back in.

Resident objects must be streamed out before any objects which stream out
pointers to the resident objects, else duplicate objects will be constructed
when streaming in.

When streaming objects in, Streamer::Read must insure that all data fields
are initialized because the streaming constructor doesn't initialize any of
the data fields. Any data members not streamed in must be set to meaningful
values. Care must be taken to initialize the members before streaming in base
class data or pointers to objects which have pointers back to the current
object. Virtual functions are enabled in Streamer::Read.


Changes to the string class
---------------------------
The following sections correct string class member function definitions.

  size_t find_first_of( const string _FAR &s ) const
Locates the first occurrence in the target string of any character contained
in string s. If the search is successful find_first_of returns the character
location. If the search fails it returns NPOS.

  size_t find_first_of( const string _FAR &s, size_t pos ) const
Locates the first occurrence in the target string of any character contained
in string s after position pos. If the search is successful, it returns the
character position within the target string. If the search fails or if
pos > length(), it returns NPOS.

  size_t find_first_not_of( const string _FAR &s) const
Locates the first occurrence in the target string of any character not
contained in string s. If the search is successful, find_first_not_of returns
the character position within the target string. If the search fails it
returns NPOS.

  size_t find_first_not_of( const string _FAR &s, size_t pos ) const
Locates the first occurrence in the target string of any character not
contained in string s after position pos. If the search is successful
find_first_not_of returns the character position within the target string.
If the search fails or if pos > length(), find_first_not_of returns NPOS.

  size_t find_last_of( const string _FAR &s ) const
Locates the last occurrence in the target string of any character contained in
string s. If the search is successful find_last_of returns the character
position within the target string. If the search fails it returns 0.

  size_t find_last_of( const string _FAR &s, size_t pos ) const
Locates the last occurrence in the target string of any character contained in
string s after position pos. If the search is successful find_last_of returns
the character position within the target string. If the search fails or if
pos > length(), find_last_of returns NPOS.

  size_t find_last_not_of( const string _FAR &s ) const
Locates the last occurrence in the target string of any character not
contained in string s. If the search is successful find_last_not_of returns
the character position within the target string. If the search fails it
returns NPOS.

  size_t find_last_not_of( const string _FAR &s, size_t pos ) const
Locates the last occurrence in the target string of any character not
contained in string s after position pos. If the search is successful
find_last_not_of returns the character position within the target string. If
the search fails or if pos > length(), find_last_not_of returns NPOS.

The assign member funtion

     assign(const string&, size_t = NPOS);

was changed to

     assign(const string&, size_t = 0, size_t = NPOS);

The size_t parameter in the old version was the number of characters
to copy. In the new version that is the second size_t parameter; the
first one is the position in the passed string to start copying.
For example:

     string s1 = "abcdef";
     string s2;
     s2.assign( s1, 2, 3 );

After executing this code, s2 should contain "cde".

The same change was made in several other functions. 

     string(const string _FAR &, size_t, size_t);
     string(const char _FAR *, size_t, size_t);
     string(const char __far *, size_t, size_t);
     assign(const string _FAR &, size_t, size_t);
     append(const string _FAR &, size_t, size_t);
     append(const char _FAR *, size_t, size_t);
     prepend(const string _FAR&, size_t, size_t);
     prepend(const char _FAR*, size_t, size_t);
     compare(const string _FAR&, size_t, size_t);
     insert(size_t, const string _FAR&, size_t, size_t);
     replace(size_t, size_t, const string _FAR&, size_t, size_t);


Casting Macros
--------------
The following casting macros have been provided, and are defined in
\BC4\INCLUDE\CLASSLIB\DEFS.H:

  TYPESAFE_DOWNCAST(object,toClass)
Converts the pointer referred to by 'object' into a pointer to an object of
type 'toClass'. The macro parameters to TYPESAFE_DOWNCAST are in the
opposite order from the rest of the macros here. When using a compiler that
supports new style casts and runtime type information this is done with
dynamic_cast<> and will return 0 if the cast cannot be done. When using a
compiler that does not support new-style casts and runtime type information
this is done with fake runtime type information generated by the
IMPLEMENT_CASTABLE macro.

  STATIC_CAST(targetType,object)
Converts the data object referred to by 'object' into the type referred to
by 'targetType'. When using a compiler that supports new style casts, this is
done with static_cast<> and will fail if the cast cannot be done without
runtime type information. When using a compiler that does not support new-style
casts, this is done with an old-style dangerous cast.

  CONST_CAST(targetType,object)
Converts the data object referred to by 'object' into the type referred to
by 'targetType'. When using a compiler that supports new style casts, this
is done with const_cast<> and will fail if the cast changes the type of the
object in any way other than adding or removing const and volatile qualifiers.
When using a compiler that does not support new-style casts, this is done with
an old-style dangerous cast.

  REINTERPRET_CAST(targetType,object)
Converts the data object referred to by 'object' into the type referred to
by 'targetType'. When using a compiler that supports new style casts, this
is done with reinterpret_cast<>. When using a compiler that does not support
new-style casts, this is done with an old-style dangerous cast.


IDE/Integrated Debugging
------------------------
Using the IDE under NT is not currently supported.

The default extension for Borland C++ 4.0 project files is .IDE.

Using the Microsoft DBWIN utility interferes with the Event log's
ability to display those same messages. To see those messages in
the Event log, either quit DBWIN or select Options|No Output in DBWIN.

Project style sheets are inherited from the default project when you select
Project|New. You can set inheritance using the following option in the BCW.INI
file:
   [projects]
   inherit=0
where 0 inherits from the default project, 1 from the previous project,
and 2 from the shipping defaults (which are unchangeable).

The following listing explains some of the more useful BCW.INI settings:

[ToolDir]              ;BCW's default paths
BcInclude=\bc4\include ;Default Include path, MPD Directories
BcLib=\bc4\lib         ;Default Lib path, MPD Directories

[Project]
saveastext=1 ;PDL file with Style Sheets and Modified tools
readastext=1 ;Read Style Sheets and Tools

[IDE]
HelpDir=C:\BC4\BIN            ;where to find the help files
DefaultDesktopDir=C:\BC4\BIN\ ;where to find bcconfig.bcw,
                              ;bcwdef.bcw/dsw,*.tok,*.ckb

If you step over or into a throw() call, the application will run
until it reaches a breakpoint or program termination, instead of
stopping at the appropriate catch() function. To debug catch()
functions, you must set breakpoints within them.

Run to Cursor (F4) will do nothing if the source line you wish to run
to is the same source line that the execution point is on. Thus,
using F4 to iterate through any loop structure will not work.
Instead, set a breakpoint on a line in the loop and use Ctrl-F9
(Debug|Run) to iterate through the loop. Once finished with the loop,
the breakpoint can be removed.

The following combination of events will cause unusual behavior:

  - Placing breakpoints in Windows procedures or OWL event handler which will
    receive WM_KILLFOCUS or WM_WINDOWPOSCHANGED messages.
  - Shifting focus from this application while debugging, directly to the IDE.

When focus is changed from the application being debugged to the IDE,
Windows initiates an intertask SendMessage from the IDE to the
application. But the breakpoint prevents SendMessage from completing,
putting Windows into an unstable state. Many GUI debuggers silently
ignore a breakpoint in this situation. The Borland Integrated
Debugger displays a message box warning of this situation giving you
the choice of ignoring the breakpoint and continuing the application
or aborting the application so you can make further changes to the
code or placement of breakpoints before running again. The best way
to avoid this situation is to not click on the IDE when you have a
breakpoint in the Window procecure or OWL event handler that could
stop due to an intertask SendMessage from the IDE. Instead click on
some other application like the Program Manager. This will still
result in the WM_KILLFOCUS and related messages and the intertask
SendMessage, but the initiating task will not be the IDE and thus
completely avoids the Windows instability.

A further note: the first click of the mouse on the IDE immediately
initiates the MessageBox and the click in the OK box is the next
mouse event captured, so interesting visual effects may occur
depending on where that first mouse click occurred. For example, if
the first click was in the title bar of the IDE, the second click (in
the MessageBox OK) will result in a move of the IDE Window from its
original location to the location of the OK mouse click. If this
happens, move the IDE back to where you want it.


Floating Point Formats
----------------------
Floating point formats are a collection of formatting information used to
manipulate floating point numbers in certain runtime library functions such as
scanf() and atof().

This section discusses why you might get the error
FLOATING POINT FORMATS NOT LINKED : ABNORMAL PROGRAM TERMINATION and tells
you how to resolve it.

There are no current plans to fix this because it is not a bug. The
intent is to avoid linking the floating point formats (about 1K of
overhead) when they are not required.  The tradeoff is that the
programmer must explicitly request that the floating point formats be
linked in for some programs that manipulate floats in a limited and
specific fashion.

Because you can get the error in a number of different ways, check the
following list of potential causes to find out how to resolve the error.
These are listed in order of most common to least common causes.

  1.  CAUSE:  Floating point set to <None>.  You have your
      floating point option set to None when it should be set to
      either Fast or Normal.

      FIX:  Set Floating Point to Fast or Normal.

  2.  CAUSE:  Either the compiler is overoptimizing, or the
      floating point formats really do need to be linked in because
      your program manipulates floats in a limited and specific
      fashion.  Under certain obscure conditions, the compiler will
      ignore floating point usage in scanf().  (e.g., trying to
      read into a float variable that is part of an array contained
      in a structure.)

      FIX: Add the following to one source module:

              extern _floatconvert;
              #pragma extref _floatconvert

  3.  CAUSE:  Forgetting to put the address operator & on the scanf
      variable expression.  For example,
          float foo;
          scanf("%f", foo);

      FIX:  Change the code so that the & operator is used where it
      is needed.  For example, the above code should be
          float foo;
          scanf("%f", &foo);


Turbo Debugger for Windows
--------------------------
You can use TD32 to debug under Win32s. However, to do so, you must
ensure you use SVGA.DLL or equivalent support in the VideoDLL entry
in the [TurboDebugger] section of TDW.INI.

TD32 can support dual monitor debugging under Win32s. Ensure that
a monochrome adapter is installed in your machine and set the
Mono=yes flag in the [VideoOptions] section of TDW.INI:

     [VideoOptions]
     MONO=yes

See the online text file called td_help!.txt for more information on
using TD32 and TDW.


Using Tools with NTFS
---------------------
When using Borland C++ 4.0 tools under NTFS, be aware of assumptions
about file extensions. If Borland C++ 4.0 tools see an extension,
they assume no default. Therefore, with "bcc32 test.1.cpp", BCC32
spawns TLINK32 with "-ap c0x32.obj test.1, test.1, import32 cw32".
As TLINK32 sees an extension on test.1, it makes NO assumptions about
a .obj or .exe extension.  It attempts to look for test.1 (instead of
test.1.obj) and to create test. (instead of test.1.exe).

Embedded blanks in filenames are not currently supported. For
instance, under the Windows NT NTFS file system it is legal to have a
file named "This is an interesting file name.cpp". The response file
processing in our 32-bit tools cannot handle this type of file.

16-bit tools running on NT cannot use NTFS filenames.


Run-time Type Information and Virtual Destructors
-------------------------------------------------
When -xd is enabled, a pointer to a class with a virtual destructor can't
be deleted if that class is not compiled with -RT. The -RT and -xd options
are on by default.

EXAMPLE

  // Compiled with -RT- and -xd
  class A {
  public:
     virtual ~A() {}
  };

  void func(A *Aptr ) {
     delete Aptr;  // Error. 'A' is not a polymorphic class type
  }
023 Borland C++ PATCH V4.00 1×TD
Borland C++ V4.00 93年12月15日版的补丁程序
README [展开]
-------------------------------
 Borland C++ 4.0 UPDATE PATCHES
-------------------------------

--------------- 
*** Notice *** 
--------------- 
These patches are intended for use only with Borland language
products.  The resulting file(s) are subject to the terms of the
No-nonsense License Agreement which shipped with the Borland
language product you purchased.

---------------
README CONTENTS
---------------
    -Instructions for installing patches
    -Troubleshooting
    -BC4P01: Purpose
    -BC4P01: Files Modified
    -BC4P02: Purpose
    -BC4P02: Files Modified
    -BC4P03: Purpose
    -BC4P03: Files Modified
    -BC4P04: Purpose
    -BC4P04: Files Modified
    -TA4P01: Purpose
    -TA4P01: Files Modified
    -Creating .COM Files

-----------------------------------
Instructions for installing patches
-----------------------------------
The INSTALL.BAT file uses PATCH.EXE to apply a series of five
update patches to your installed Borland C++ directories.  
INSTALL.BAT must run from the floppy drive where the update disk 
is inserted. To perform the install, first change to your floppy 
drive and then type the following command:

   install base_dir windows_dir [/b]

base_dir is the base directory where BC4 is installed. 
windows_dir is the directory where Windows is installed.  The
optional /b switch creates backups of the original file versions.

For example, you might type these two commands:

   a:
   install c:\bc4 c:\windows /b

If you use the optional /b switch, then backup copies of the old
versions of the files modified will be placed into directories
called BACKUP in your BC4 top-level directory and your Windows
SYSTEM directory.  You may omit the /b flag if you do not wish to 
keep these old versions.  Be sure that you have enough extra disk 
space before using the backup switch (20 MB).

In most cases INSTALL.BAT will be sufficient and it will not be
necessary to do anything more.  However, if for any reason you 
need to apply any of the supplied patches individually, you can do 
so by copying PATCH.EXE and the desired patch file to your BC4 top 
level directory and executing the following command from that 
directory:

PATCH -BACKUP PATCHFILE.RTP

In the above example, substitute the name of the desired patch.
Patches should be applied in order by the number indicated in the
filename of the patch.

---------------
Troubleshooting
---------------
If PATCH.EXE is unable to locate the correct files to
patch, you will see the message:

       Warning wpt0015: Old File does not exist

This may indicate one of the following cases:

1) You have previously deleted one or more files from BC4
   that PATCH.EXE has attempted to patch.  In this case,
   PATCH.EXE will skip the files you have deleted.  If you
   wish to replace a missing file, you must first reinstall
   from your Borland C++ 4.0 master diskettes before 
   applying the patch.

2) You have specified the wrong top level directory for
   Borland C++.  In this case, verify the directory name in
   which you have installed Borland C++ 4.0 and use the
   correct directory name when running INSTALL.BAT.

3) When you installed BC4, you chose not to install one or
   more of the files that PATCH.EXE has attempted to patch.
   In this case, PATCH.EXE will skip the files you did not
   install.  If you wish to add a missing file, you must
   first install from your Borland C++ 4.0 master diskettes
   before applying the patch.

4) Install is attempting to patch Turbo Assembler 4.0 which
   you do not own or have not installed.  PATCH.EXE will
   safely skip the files you do not have, and you may ignore
   this message.  If you wish to order the Turbo Assembler
   upgrade to Borland C++ 4.0, you can contact the Borland
   Order Desk at 1-800-331-0877.

5) You have installed a LAN installation of Borland C++ and
   thus your Borland Windows Custom Controls (BWCC) are not
   installed in your Windows SYSTEM directory.  In this case
   copy PATCH.EXE and BC4P04.RTP from your patch disk to the
   directory above the directory in which you have BWCC.DLL
   installed.  In most cases this will be your Borland C++ top
   level directory, C:\BC4 by default.  From this directory,
   execute the following command from a DOS command prompt:

       PATCH -BACKUP BC4P04.RTP

PATCH.EXE will report the following message if it
determines that a file does not need to be patched:

       New Version of File 'FILENAME' already exists.

This may indicate one of the following cases:

1) You have purchased a recent copy of Borland C++ 4.0 in
   which the software changes have already been introduced.

2) You have already applied the patch.

In either case, PATCH.EXE has verified that your software is
up to date and you need not take further action.

PATCH.EXE may terminate and report the following message when
running under Windows NT:

       error ept0017: Failure Opening Old File: FILENAME

It is recommended that you run INSTALL.BAT under DOS, rather than
under Windows NT, if possible.  Otherwise, shut down all unnecessary
applications under NT and restart INSTALL.BAT.  PATCH.EXE will skip over
any files that were previously patched, printing a message for each file
skipped, and continue where it left off.  You may have to restart
INSTALL.BAT more than one time.

---------------
BC4P01: Purpose 
---------------
Updates VBX files to correct a problem when debugging
applications in the IDE integrated debugger under the debugging
kernel of Windows 3.1

----------------------
BC4P01: Files Modified
----------------------
bivbx10.dll
bivbx.lib

---------------
BC4P02: Purpose
---------------
Updates Borland C++ 4.0 header files and introduces CT.LIB to
allow for the creation of COM files.

----------------------
BC4P02: Files Modified
----------------------
c0t.obj
constrea.h
cstring.h
fstream.h
iostream.h
setjmp.h
stdiostr.h
strstrea.h
typeinfo.h

---------------
BC4P03: Purpose
---------------
This BC4P updates Borland C++ 4.0 for use with Microsoft Windows 4.0
beta, code named Chicago, and also corrects the following problems
unrelated to use under Chicago:

Integrated Development Environment (BCW):
+ canceling a compile when using precompiled headers caused a sharing
  violation
+ alt-n lost the cursor position (also fixed when loading
  pane via BufferList)
+ editor printing did not restart line numbers or start each file at
  the top of a page when more than one file is printed
+ editor bookmarks were not saved and restored properly
+ "replace all" in selected text caused display errors
+ using TrueType fonts the visual caret position was different than
  the edit position
+ using bitmap fonts text became horizontally stretched under some
  conditions
+ rescan failures would occur in the case of some user modifications to
  generated code

----------------------
BC4P03: Files Modified
----------------------
bc40rtl.dll
bcc32.exe
bcw.exe
bcwdbk16.dll
bcwdbv16.dll
bcws16.dll
bcws32.exe
brc.exe
brc32.exe
brcc.exe
brcc32.exe
brcwin.dll
brush.cpp
buttonga.cpp
c0c.obj
c0fc.obj
c0fh.obj
c0fl.obj
c0fm.obj
c0fs.obj
c0ft.obj
c0h.obj
c0l.obj
c0m.obj
c0s.obj
cc.lib
ch.lib
cl.lib
cm.lib
codegen.dll
compat.txt
cpp32.exe
crtldll.lib
cs.lib
cw32.dll
cw32.lib
cw32mt.dll
cw32mt.lib
cwc.lib
cwl.lib
cwm.lib
cws.lib
ideedit.dll
idepane.dll
impdef.exe
implib.exe
make.exe
objxref.exe
owl200f.dll
owldoc.wri
owlwf.lib
rescan.snp
rlink.exe
td32.exe
td32inst.exe
tdstrp32.exe
tdump.exe
tlib.exe
tlink32.exe
tvwrite.obj
version.rc
worked1.dll
worked2.dll
worked3.dll
worked4.dll
worked5.dll
worklib1.dll
worklib2.dll
workop32.dos
workop32.w32
workopt.dos
workopt.w32
workres.dll
workshop.exe

---------------
BC4P04: Purpose
---------------
Updates Borland Windows Custom Controls (BWCC) for Chicago
compatibility.

----------------------
BC4P04: Files Modified
----------------------
bw32000c.dll
bw320007.dll
bw320009.dll
bwcc.dll
bwcc000c.dll
bwcc0007.dll
bwcc0009.dll
bwcc32.dll

---------------
TA4P01: Purpose
---------------
Changes Turbo Assembler 4.0 to be compatible with Chicago.

----------------------
TA4P01: Files Modified
----------------------
h2ash.exe
h2ash32.exe
tasm32.exe

-------------------
Creating .COM Files
-------------------

Creating .COM files requires setting the compiler to the tiny memory model,
telling the linker to make a .COM file, and linking to the CT.LIB library.  
The IDE does not generate .COM files; this must be done from the command line.  
Use a command like this:

     bcc -mt -lt file.cpp ct.lib
024 Microsoft C++ V7.00 11×HD
开发大型应用软件的强大编程工具,具有面向对象编程方式并提供开发WINDOWS应用程序的完整环境.它所生成的代码运行速度快,代码量小,调试工具齐全,操作方便
README.TXT [展开]
                               README.TXT File
               README file for Microsoft(R) C/C++, Version 7.0
                  (C) Copyright Microsoft Corporation, 1992

     This document contains release notes for version 7.0 of Microsoft
     C/C++ and its libraries for MS-DOS(R) and Microsoft Windows(TM)
     operating systems.

========================< IMPORTANT REQUIREMENT >==========================

     Microsoft C/C++ version 7.0 requires DPMI services.  If you wish 
     to use Windows as your development environment, Windows provides 
     DPMI services for you.  TO USE MS-DOS AS YOUR DEVELOPMENT 
     ENVIRONMENT YOU MUST INSTALL 386-Max TO PROVIDE THESE SERVICES. 

================================< CONTENTS >===============================


     This file has the following sections:


     Part 1: ESSENTIAL WINDOWS 3.0 COMPATIBILITY INFORMATION

     Part 2: Setup and Configuration Notes 

     Part 3: Support for Windows 3.1 in the Microsoft Foundation Classes

     Part 4: List of Additional Readme Files 

     Part 5: List of Topics in the DETAILS.TXT file


=======< Part 1: ESSENTIAL WINDOWS 3.0 COMPATIBILITY INFORMATION >======


     To make it easy for you to update to the latest Windows APIs
     and the new features of Windows 3.1, MS C/C++ supports
     Windows 3.1 by default. Windows 3.0 applications that are
     rebuilt with C/C++ will target Windows 3.1 by default.
     Therefore, attempting to run them under Windows 3.0
     generates an error.

     If you do not wish to take advantage of new Windows 3.1
     functionality, or if you want your applications to run on either
     Windows 3.0 or Windows 3.1, then follow these instructions for
     building Windows 3.0 applications.


     Building Windows 3.0 Projects with PWB
     --------------------------------------

     New projects:

          Choose one of the four Windows 3.0 project templates when
          prompted for a project template.

     Rebuilding existing projects:

          Reset the current project template by choosing Project
          Templates from the Options menu and then selecting Set
          Project Template. Note: This resets all build options,
          so check the resulting options to ensure they are
          appropriate for your project.

          An alternative method is to add the WINVER=0x300 macro in
          the Additional Global C/C++ Options dialog box and to
          modify the RC Build command in the Customize Project Template 
          dialog box. This dialog box can be accessed from the Project 
          Templates option on the Options menu. To make this modification,
          change:

          command rc_exe "$(RC) $(RESS) $@"
          
          to:

          command rc_exe "$(RC) /30 $(RESS) $@"


     Building Windows 3.0 Projects from the Command Line
     ---------------------------------------------------

     The two methods for building Windows 3.0 projects from the
     command line are described in this section.


          Using the WINVER Macro
          ----------------------

          To compile Windows 3.0 applications, you must either add
          the line:

          #define WINVER 0x0300

          to your source file before the line including the WINDOWS.H
          include file, or add the /DWINVER=0x0300 option when compiling
          all modules in the Windows 3.0 project. This prevents any 
          Windows 3.1-specific types, functions, or definitions from 
          being included.  


          Using the RC /30 Switch
          -----------------------

          In order to ensure that your application is Windows
          3.0-compatible, use the RC /30 option when combining
          your .EXE and .RES files. Use this option whenever RC
          is invoked after your .EXE file is linked, but do
          not use the /30 option with the /r option.


     Using Windows 3.1 Features in Windows 3.0 Applications
     ------------------------------------------------------

     You can also build a Windows 3.0-compatible application that
     conditionally makes use of new Windows 3.1 features if the
     application is running on a Windows 3.1 system. To do this,
     use the RC /30 command-line option, but do not use the
     #define directive to define WINVER equal to 0x0300.  Use the
     GetVersion() API to determine the version of Windows that is
     running before calling any new Windows 3.1 APIs.

     The sample code below demonstrates how the global constant
     fWin31 can be set to TRUE if Windows version 3.1 or greater
     is running on the system.  You can use similar code in your
     application initialization.

     extern BOOL fWin31;

     {
         UINT version;
         fWin31 = FALSE;
         version = LOWORD(GetVersion());
         if (((LOBYTE(version) << 8 ) | HIBYTE(version)) >= 0x030a)
         {
             fWin31 = TRUE;
         }
     }

     You can call new Windows 3.1 functions directly in your
     source as long as you link to the Windows 3.1 LIBW.LIB. In
     this case, no call to GetProcAddress() is needed.  However,
     on a computer running Windows 3.0, you must make sure new
     Windows 3.1 functions are not called. Here's an example of
     how this can be done:

     extern BOOL fWin31;

     if (fWin31)
     {
         ScrollWindowEx(hwnd, ...);
     }
     else
     {
         ScrollWindow(hwnd, ...);
     }


     Using the MFC Library with Windows 3.0 and Windows 3.1
     ------------------------------------------------------

     The MFC library header files can build applications targeted for 
     either Windows 3.0 or Windows 3.1.  Windows 3.1 is the default 
     target. This means that all of the new Windows 3.1 APIs are available
     for use. If you must target an application for Windows 3.0 only, you
     should define WINVER=0x0300 before including AFXWIN.H in your source
     files. This restricts the Windows and MFC interfaces to Windows 
     3.0-compatible versions only.

     The compiled MFC library (object code) must always be built for 
     Windows 3.1. It will fail to compile if WINVER is defined to be 0x0300.
     The library is compatible with both Windows 3.0 and Windows 3.1 
     run-time systems.  If you customize the MFC library, you should not
     redefine WINVER; the default value (WINVER=0x030A) is sufficient.


===================< Part 2: Setup and Configuration Notes >===============


     Getting Help on Error Messages
     ------------------------------

     To find information on any error message, you can access Help by
     using the stand-alone utility QuickHelp, by using the Help menu in
     the Programmer's WorkBench (PWB), or by checking the "Comprehensive
     Index and Errors Reference" manual.

     To find out about an error message using QuickHelp, at the
     operating-system prompt type:

          QH cxxxx

     where <c> is the error's alphabetic prefix and <xxxx> is the
     four-digit error number.

     To find out more about how to view errors from within PWB, choose
     "Errors" from the Microsoft Advisor Contents screen in PWB.
     (The Microsoft Advisor Contents screen appears when you choose
     "Contents" from the Help menu in PWB.)

     Some errors are documented in Help but are not in the "Comprehensive
     Index and Errors Reference" manual. See ERRATA2.TXT for a listing of
     these errors.


     Copying a Single File from Installation Disks
     ---------------------------------------------

     See the ANSWERS.TXT file for instructions.


     Installation of Graphics Sample Files
     -------------------------------------

     Setup does not create the SORTDEMO and GRAPHICS subdirectories, 
     or copy their associated graphics samples, unless you request that
     Setup install the graphics libraries.


     Loading Windows From Your AUTOEXEC.BAT File
     -------------------------------------------

     If you allow Setup to modify your AUTOEXC.BAT file, and your
     AUTOEXEC.BAT file contains a statement that loads Windows, the 
     resulting behavior may cause unexpected system problems. Therefore,
     if your AUTOEXEC.BAT file loads Windows, do not allow Setup to 
     modify your AUTOEXEC.BAT file. Save the changes during Setup and 
     modify your file once Setup has finished.


     Using Windows 3.0 and HIMEM.SYS with More Than 16 MB RAM
     --------------------------------------------------------

     Installing C/C++, which provides a new version of HIMEM.SYS, may
     cause a system crash if your computer has more than 16 MB of RAM.
     This is not an issue for Windows 3.1 users or 386-Max users.
     If you do not want to upgrade to Windows 3.1 or you want to run
     both versions of Windows, replace the HIMEM.SYS driver installed
     by C/C++ with the HIMEM.SYS driver from Windows 3.0.


     Incorrect Drivers May Prevent Windows From Running
     --------------------------------------------------

     The Setup program adds a DEVICE statement for the CVW1.386 driver to 
     your SYSTEM.INI file. If your SYSTEM.INI file also contains a DEVICE
     statement for CV1.386, a driver no longer necessary for C/C++, 
     Windows 3.x will not run. Remove the DEVICE statement for CV1.386 
     to solve this problem.


     Avoiding Data Loss When Using SMARTDRV.EXE
     ------------------------------------------

     SMARTDRV.EXE does not write data to disk immediately. If your computer
     should crash after the time data is written to the cache and before
     the data is written to the disk, data can be lost. Issuing the
     following command causes SMARTDRV to write all data in the cache to
     the disk:

     SMARTDRV /c


     Setup May Not Detect Foreign Disk Cache
     ---------------------------------------
     Setup may install SMARTDRV.EXE if it does not detect the foreign 
     disk cache installed on your system. Remove the DEVICE statements 
     for SMARTDRV.EXE from your AUTOEXEC.BAT and CONFIG.SYS files to 
     resolve this problem.


     Fragmented Memory May Cause Internal Compiler Error
     ---------------------------------------------------

     The compiler generates an internal error R6900 if memory has been
     fragmented in such a way that chunks of free memory greater than
     4K exist between allocated memory blocks. To determine if memory
     fragmentation is the cause of the problem, check memory usage with
     the techniques described in Chapter 3 of the "Getting Started"
     manual. Changing the way memory is allocated, or modifying the
     behavior of TSRs, may reduce memory fragmentation.


     Programs That May Be Incompatible with SMARTDRV.EXE
     ---------------------------------------------------

     The following applications may be incompatible with SMARTDRV.EXE,
     version 4.0:

     - The Disk Protect feature in Norton Utilities version 6.0

       Do not use the Disk Protect feature in Disk Monitor. If you do,
       you will encounter an error and your system may hang if you try
       to write to the protected drive. If you want to write to and
       cache a protected drive, use the Norton cache program when using
       Disk Monitor.

     - The Calibrate program in Norton Utilities version 6.01

       Calibrate fails on the Disk Mapping test if SMARTDRV is enabled.

     - DoubleDisk from Vertisoft

       Do not enable write-behind caching for DoubleDisk compressed
       partitions.

     - Storage Dimensions SCSI Driver (SSTOR.SYS)

       Using the SSTOR.SYS driver, the SCSI drive appears corrupted when
       SMARTDRV is loaded. The disk's contents are not altered, but they
       are inaccessible when using SMARTDRV.

     The following drivers, installed in a CONFIG.SYS file, are
     incompatible with SMARTDRV.EXE version 4.0:

     - The SuperStor utility from Addstor (SSTORDRV.SYS)

       Do not use the Create Mountable Drive or Mount and Dismount features
       of SuperStor after SMARTDRV is loaded. You must configure your
       SuperStor partitions before loading SMARTDRV. If your AUTOEXEC.BAT
       file includes "mount" configuration commands, make sure that the
       SMARTDRV command line follows the SuperStor configuration command
       lines.

       Also, you will receive read-write errors if you use SMARTDRV to
       cache a SuperStor compressed drive. To prevent SMARTDRV from
       caching the compressed drive, you must include the driver letter-
       option on the SMARTDRV command line.

       For example, if drive C is the uncompressed drive, and drives E
       and F are the compressed SuperStor drives, you would type the
       following command line or include it in your AUTOEXEC.BAT file:

       smartdrv e- f-

     - The network driver from DNA Networks Inc. (STATION.SYS)

       Using both STATION.SYS and SMARTDRV may cause your system to hang.

     - Versions prior to version 7.x of the driver for the
       Bernoulli Box (RCD.SYS)

       The RCD.EXE program requires that driver RCD.SYS be installed to
       use the Bernoulli Box. When SMARTDRV is running, RCD.EXE does
       not recognize that RCD.SYS has been installed.

     - The Norton Antivirus utility (NAV_.SYS and NAV&.SYS)

       The NAV_.SYS and NAV&.SYS drivers for the Norton Antivirus utility
       may generate "Not enough memory" errors or hang your system when
       loading SMARTDRV.EXE. One workaround is to use the /L command-line
       option to load SMARTDRV.EXE into low memory. An alternative is using
       the /B option with NAV&.SYS to avoid the NAV&.SYS bug that causes
       your system to hang.

     The following driver, installed in an AUTOEXEC.BAT file, is
     incompatible with SMARTDRV.EXE version 4.0:

     - DataMonitor version 7.1 by PC Tools (DATAMON.*)

       Loading DataMonitor after SMARTDRV is installed may cause your
       system to hang.


     Setup Generates a "Cannot write to library file" Error
     -------------------------------------------------------

     If your TMP environment variable is pointing to a RAM drive that
     doesn't have enough space for the temporary files that Setup uses
     during the library-building process, this error can result. To solve
     this problem, set the TMP variable to your hard disk, if your hard
     disk has sufficient space, or select fewer libraries from the Custom
     Installation Setup screen. You can run Setup again later to build
     additional libraries.


     Installation Order May Affect 386-Max Performance
     -------------------------------------------------

     Installing MS C/C++ before 386-Max can improve 386-Max's capability
     for managing the upper memory area.


     Using Earlier Versions of 386-Max with C/C++
     --------------------------------------------

     If you already use 386-Max, be sure to upgrade your system with the
     version of 386-Max that is supplied with Microsoft C/C++. This newer
     version includes bug fixes that affect the performance of C/C++.


===< Part 3: Support for Windows 3.1 in the Microsoft Foundation Classes >===


     The Microsoft Foundation classes provide support for the
     enhancements provided in Windows version 3.1. The following
     features are described in technical notes in the
     \C700\MFC\DOC directory and demonstrated in sample programs in
     \C700\MFC\SAMPLES. These API functions are documented only in 
     the Help system. The following list describes the enhancements 
     that can be used to develop applications for both Windows 3.0 
     and Windows 3.1.

     - The development and use of custom controls is supported. In
       addition, owner draw controls and bitmap buttons are provided. 
       See TN014.TXT and the sample application CTRLTEST.

     - To improve robustness, the Microsoft Foundation Class Library 
       fully supports the STRICT data types defined in the Windows 3.1 
       interface file, WINDOWS.H.

     - Common dialog operations are now supported with easily
       customized classes including CFileDialog (for both File Open
       and File Save As), CFindReplaceDialog (to implement modeless
       find and replace), CColorDialog (for color selection),
       CPrintDialog (for both print setup and print), and
       CFontDialog (for font selection). These new dialogs are
       described in TN013.TXT.

     - The Microsoft Foundation Classes were designed and implemented
       using the Windows 3.1 Debug Kernel.  If your application issues
       any Debug Kernel warnings, they are most likely due to the way you
       structured your application code.  If you receive any Fatal Exit
       messages, the cause is most likely a result of an incorrectly
       used feature.  Some Debug Kernel warnings (such as 'Invalidate with
       fErase == FALSE prevents EraseBackground') will be issued even
       when features are used correctly .

     - Dialog boxes now feature a gray background that is easily 
       customized.

     - OLE servers now register themselves at startup so that
       users do not need to use REGEDIT.EXE.

     - Microsoft Foundation Classes now support the Microsoft Pen Windows
       controls (see TN015.TXT). A sample application, SPEAKN.EXE,
       is provided to demonstrate the use of Pen and MultiMedia. 
       A pen palette and/or MultiMedia extensions are NOT required. 
       Applications developed with the Microsoft Foundation classes 
       are automatically "pen-aware."

     - Using multiple inheritance with Microsoft Foundation
       classes is demonstrated in the sample application MINSVRMI,
       a small OLE server that uses multiple inheritance.

     - For applications that target Windows 3.1 only, the Microsoft 
       Foundation Class Library supports the most useful of the new 
       Windows 3.1 API functions and messages.


==================< Part 4: List of Additional Readme Files >==============


FILE                      CONTENTS
----                      --------

ANSWERS.TXT               Answers to commonly asked questions
DETAILS.TXT               Product notes for Microsoft C/C++. See Part 5
                          of this file for a list of topics in DETAILS.TXT
ERRATA1.TXT               Documentation additions and corrections for
                          "Environment and Tools," "C++ Tutorial,"
                          "C Language Reference," "C++ Language
                          Reference," and "Programming Techniques."
ERRATA2.TXT               Documentation additions and corrections for
                          "Run-Time Library Reference," "Class Libraries
                          Reference," "Class Libraries User's Guide,"
                          "Comprehensive Index and Errors Reference,"
                          CLANG.HLP, CL.HLP, LINK Help, header files, and
                          Microsoft Class Libraries Quick-Reference Card
BIN\MSD.TXT               Documentation for diagnostics utility
SOURCE\MOVE\MOVEAPI.TXT   Move - Help document
SOURCE\STARTUP\README.TXT Startup build instructions

From the C700\SAMPLES directory:
    IOSTUTOR\README.TXT     Instructions for building iostream demo
    CPPTUTOR\OOD\OODEMO.TXT Notes on the OODEMO sample
    SAMPLES.TXT             Samples document

MFC README Files:
    MFC\README.TXT        Introduction to the MFC library
    MFC\SRC\README.TXT    How to build the libraries
    MFC\LIB\README.TXT    Information file for MFC Libraries

MFC README Files from the MFC\DOC directory:
    README.TXT            Overview of tech notes
    TN001.TXT             Tech note on class registration
    TN002.TXT             Tech note on persistence
    TN003.TXT             Tech note on handle maps
    TN004.TXT             Tech note on templates
    TN005.TXT             Tech note on MDI
    TN006.TXT             Tech note on message maps
    TN007.TXT             Tech note on Windows debugging aids
    TN008.TXT             Tech note on Foundation OLE support
    TN009.TXT             Tech note on writing an OLE client with MFC
    TN010.TXT             Tech note on writing an OLE server with MFC
    TN011.TXT             Tech note on DLL support
    TN012.TXT             Tech note on robustness issues 
                                       (including WIN 3.1 STRICT)
    TN013.TXT             Tech note on standard dialog classes
    TN014.TXT             Tech note on custom controls
    TN015.TXT             Tech note on Pen Windows
    TN016.TXT             Tech note on multiple inheritance

MFC README Files from the MFC\SAMPLES directory:
    ABOUT2\README.TXT         Information file for About2
    HELLO\README.TXT          Hello/Generic application
    README.TXT                Explanation of the MFC Samples
    TEMPLDEF\README.TXT       Instructions
    TESTCLNT\README.TXT       MFC OLE Test Client Sample
    TESTSERV\README.TXT       MFC OLE Test Server Sample
    TUTORIAL\CHAR\README.TXT  Tutorial samples applications
    TUTORIAL\README.TXT       Tutorial samples applications
    TUTORIAL\WIN\README.TXT   Tutorial samples applications

     IMPORTANT: See README.SDK for release information relating to the
     Windows 3.1 SDK product. Documentation for the Windows 3.1 functions 
     is available in Help only.


=================< Part 5: Topics Covered in DETAILS.TXT >=================


     See the DETAILS.TXT file for information on the following topics:

     - Using PWB
          Running PWB in a Window  
          Using Precompiled Headers from PWB
          New PWB Switches: Friction and Factor 
          Minimum Memory Requirement for Accessing Help in PWB
     - Command-Line Options
          New CL Default is /Od if Optimizations Not Specified
          Mixing P-Code and Fully Optimized Machine Code
     - C++ Topics
          Destructors for Objects in Global and Static Arrays
          Defining const struct Parameters for Member Functions
          Return Types for Based Virtual Functions
          Calling Temporary Objects of Types with Destructors
          Explicit Conversion Recommended for Member Functions
          Function-Style Initializers Starting with Casts
     - Specifying Program Starting Execution Points
          Windows 3.x Executable Files (EXE)
          Windows 3.x Dynamic-Link Libraries (DLL)
          Windows 3.x and the NOCRT Libraries
     - Run-Time Support for Windows Exit Procedure Routines
          Information on the Windows WEP Routine
          Providing Your Own DLL Termination Routine
          General Notes
          Library Initialization Code in Windows DLLs
     - New Function and Pragma Behavior
          Using the Intrinsic Version of strlen
          The check_pointer Pragma
          The data_seg Pragma
     - Identifier Naming Issues
          Finding Local Static Variables in Browser Information
          Missing Symbol Names for enums
          Long Identifier Names Create Problems for LIB.EXE
     - Using the CodeView(R) Debugger with MS C/C++ 
          CodeView Now Runs in a Windows-Like Environment
          CodeView Error When Debugging Programs Built With Class Libraries
          Extended-Line Modes Enabled for CodeView Debugger
          Remote Debugging with CodeView
          Debugging Locally on an 80286
          Running CodeView on an 80286 Computer
          Debugging P-Code
          CodeView's Access to Function Code in Libraries
          Unloading DLLs When CodeView Terminates
          Removing CodeView 3.07 from SDK Program Manager Group
          Unsuccessful Connection to Remote Terminal
          Running Screen Saver Programs While Debugging
          DOS Session Running in a Window Does Not Have Mouse Support
          Application I/O When Debugging Can Cause Screen Corruption
          Recovering From "Internal Debugger Error"
          Debugging Applications That Use a Mouse
          Debugging Basic or FORTRAN in the Windows Environment
          Setting the Scope of the Show Address Option in CodeView
          Disable the Minimize On Use Option When Debugging



=============================================================================


     Microsoft, MS, MS-DOS, and CodeView are registered trademarks, and
     Windows is a trademark of Microsoft Corporation.

     386-Max is a trademark of Qualitas, Inc.

     Bernoulli Box is a trademark of Iomega Corporation.

     Norton Utilities is a registered trademark of Peter Norton Computing.

     SuperStor is a trademark and Addstor is a registered trademark of
     Addstor, Inc.

     NOTE: Microsoft improves its languages documentation at the time of
     reprinting, so some of the information in this file may already be
     included in your manuals.
025 M.S. C/C++ PROGRAMMING GUIDE 1×HD
RAW 1.raw
原始 1.DDI
026 MS-Visual C++ V1.00 20×TD
C++ 7.0的继承者具有C++ 7.0的所有功能,它将面向对象的编程能力同可视环境结合在一起,利用WIZARD为面向对象的编程提供生动的线索结构,提高了编程效率
README.TX_ [展开]
=================================
C Runtime Library Startup Sources
=================================

The directory \startup and its subdirectories contain the files
necessary for building the startup portion of the C runtime library.
The \startup directory contains the startup source files, the include
files, the batch file, and the make files used to build the startup
object files.  The subdirectories of \startup contain OS specific
sources.

The startup object files can be built by invoking cstartup.bat (DOS/WIN)
from within the \startup directory.  This batch file assumes the following:

      * Nmake.exe, link.exe, the C compiler, and the assembler must
	be in the execution path.  MASM 6.0 and C 8.0 or later are
	required to build the startup sources.

      * Environment variable INCLUDE must be set to the directory that
	contains your C include files.

      * Environment variable LIB must be set to the directory that
	contains your C library files.	The library files for your OS
	target must exist in that directory (e.g., ?libcer.lib for DOS,
	?libcewq.lib for WIN, etc.).

      * For WIN, libw.lib must be in the directory specified by the LIB
	environment variable and windows.h must be in the directory specified
	by the INCLUDE environment variable.

Cstartup will create memory model specific subdirectories and place the
appropriate object files there.  Under each memory model subdirectory,
cstartup creates additional subdirectories where OS specific objects reside.

	OBJ Directories 	Contents
	--------------- 	--------

        S, M, C, L              Small, medium, compact, large model
                                directories which contain OS specifc
                                objects

        S/DOS, M/DOS, etc.      MS-DOS startup objects

        S/WIN, M/WIN, etc.      Windows EXE startup objects

        S/DLL, M/DLL, etc.      Windows DLL startup objects

The message "<cEnd - nogen>" is generated when some of the assembly language 
source files are assembled.  This message is expected and is totally benign.


Running C Startup
-----------------

Use the cstartup batch file to build the various C runtime startup objects.
The cstartup batch file allows you to select various combinations of
OS platforms and models.  The interface is:

	Usage:	cstartup [?] [os] [models]

		[?] displays this help message.

		[os] is an optional list of one or more OS designators
		seperated by spaces (DOS, WIN); default is all.

		[model] is an optional list of memory model designators
		seperated by spaces (S, M, C, L); default is all.

Examples:

	cstartup dos s		/* build small model DOS objects */

	cstartup win s l	/* build small and large model WIN objects */

	cstartup		/* build all startup objects */

	cstartup ?		/*** display a help message ***/


[Note:	You may need to delete old objects from previous startup builds
if you alter build options, startup sources, etc.]


Startup Files
-------------

The following files are contained in the \startup directory:

Startup source files:

	CHKSTK.ASM
	CHKSUM.ASM
	CRT0FP.ASM
	FILE.ASM
	FMSGHDR.ASM
	RCHKSTK.ASM
	SETARGV.ASM
	WILD.C
	_FILE.C

	DOS\CRT0.ASM
	DOS\CRT0DAT.ASM
	DOS\CRT0MSG.ASM
	DOS\EXECMSG.ASM
	DOS\NMSGHDR.ASM
	DOS\STDALLOC.ASM
	DOS\STDARGV.ASM
	DOS\STDENVP.ASM

	WIN\CRT0.ASM
	WIN\FATAL.ASM
	WIN\NOQWIN.ASM
	WIN\QWCINIT.ASM
	WIN\STUBMAIN.ASM
	WIN\STUBWEP.ASM
	WIN\WCHKSTK.ASM
	WIN\WEP.ASM
	WIN\WFILE.ASM
	WIN\WINDGRP.ASM
	WIN\WINDGRPX.C
	WIN\WNULL.ASM

Include files:

	CMACROS.INC
	CMSGS.INC
	DEFSEGS.INC
	FCNTL.INC
	HEAP.INC
	MSDOS.INC
	RTERR.INC
	STDLIB.INC
	STDIO.INC
	VERSION.INC

	FILE2.H
	INTERNAL.H
	MSDOS.H
	REGISTER.H

Build files:

	CSTARTUP.BAT	;builds objs and links null program on DOS and WIN
	CSUB.BAT	;(used by cstartup)

	MAKEFILE.DOS	;makefile used in DOS build
	MAKEFILE.WIN	;makefile used in WIN build
	WINDLL.MKF	;makefile used in WIN DLL build
	WINEXE.MKF	;makefile used in WIN EXE build

	NULBODY.C	;null C program
	DOS\NULBODY.LNK ;DOS link script for null program
	WIN\NULBODY.DEF ;WIN def file for null program
	WIN\NULBODY.LNK ;WIN link script for null program

Documentation:

	README.TXT	;information about \startup directory structure
			;and contents

[Note:	Startup sources written in assembly language have been edited with
tab stops set to 8.  Startup sources written in C have been edited with
tab stops set to 4.]


Placing the Stack outside of DGROUP
-----------------------------------

If your program requires a large amount of stack space, the run time
library can be configured to place the stack in a seperate segment
outside of DGROUP.  By doing this, the stack can be up to 64K in size
without reducing the amount of storage available in DGROUP for near
data.  In order to do this your program must be either compact, large,
or huge model.	You must also direct the compiler to assume that
that SS != DS.	Thus, your memory model specification should be -ACw,
-ALw, or -AHw.	See the compiler documentation for more information
about these options.

To use a far stack, you must assemble the startup sources provided
with C 8.0.  In the startup sources directory is a file called "makefile.dos"
which controls the startup module build process for the run time library.
To enable a far stack, you need to edit the makefile.  Near the top of
the file are two lines which begin "CFLAGS=" and "ASMFLAGS=".  You should
add the text " -DFARSTACK" to the end of these two lines.  Then build
the startup modules according to instructions given previously in this
file.  You should then use the LIB utility to replace the startup modules
in your library with the new modules you have built.  When linking, the
size of the stack can be controlled with the /STACK command line option.

If you are creating DOS programs, the size of your .EXE file will be
increased by the size of your stack.  This is a consequence of the DOS
.EXE format.  To reduce the size of your .EXE file, link with the
/EXEPACK option.

[Note:	The far stack option is not supported in the Windows
startup files.]


				--- End ---
027 M.S. QUICK C F/W 5×HD
SETUP.TXT [展开]
Microsoft QuickC for Windows SETUP Program

A mouse is not required to run the SETUP program.  You can turn options
on or off either by clicking the option you want or by using the TAB key
and then pressing the SPACEBAR.  Pressing the SPACEBAR toggles the
installation option on or off.

The remainder of this file describes the options available at setup time.
Each option is explained in its own section below.

For additional technical information on using Microsoft QuickC for
Windows, see the README.TXT file located in your Microsoft QuickC for
Windows install directory. This file can be opened using any text editor
or word processor, such as Microsoft Windows Notepad.

The amount of disk space required for each option and the total amount
of disk space required to install all of the selected options are
displayed at the bottom of the dialog box.  Use this information and the 
following information on the options to determine which options you want 
to install.

1)  Development Environment

Choosing this option installs the minimum file set necessary for using 
Microsoft QuickC for Windows.  If you are installing Microsoft QC/Win
for the first time, you must turn on this option.

2)  QuickCase:W

Choosing this option installs the QuickCase:W user interface prototyper.
It will either work independently or in conjunction with the QC/Win
development environment.

3)  Resource Editors

Choosing this option installs the necessary applications to edit dialog
boxes, bitmaps, icons and cursors for Windows applications.

4)  Runtime Libraries

Choosing this option installs the necessary runtime libraries to write
both Windows and DOS applications. These libraries also include the
QuickWin routines to allow easy porting of applications from DOS to
Windows.

5)  Sample Programs

Choosing this option installs the sample programs for QC/Win.


6)  On-line Help Files

Choosing this option installs on-line help files for the Quick
Development Environment as well as the Windows API reference and
the C Languages Reference.
028 HIGH C V2.32 5×HD
README [展开]
       Copyright (C) 1991 MetaWare Incorporated; All Rights Reserved.

                            High C Version 2.31
                       Globally Optimizing Compiler
                        for Extended DOS 80386/486
                                April 1991


Table of Contents
-----------------
 1.  Introduction
 2.  Release Notes
 3.  New Features
 4.  Additions/Corrections to Printed Documentation
 5.  Wildcard Expansion
 6.  Driver Notes
 7.  New Command-Line Options
 8.  GFX Graphics Functions
 9.  Known Problems


1.  Introduction
----------------

  This product is an entirely new version of the High C 386 compiler for MS-
  DOS.  The compiler includes global optimizations and a function inliner
  that greatly enhance the performance of the generated code.  The full power
  of protected mode on the 386 and 486 is supported in conjunction with Phar
  Lap's 386|DOS-Extender.  Specific support for the 486 is provided under
  toggle control.  Version 2.3 enhances program development with support for
  the 32-bit source-level debugger, an execution profiler, a one-step compile-
  and-link driver, an editor, a graphics library for the 386/486 in protected
  mode, and MetaWare's DOS Helper (a set of UNIX-style utilities for MS-DOS).
  There are many internal differences between the 1.x and 2.x versions of High
  C.  However, the source-language syntax and command-line options are almost
  identical (except for the points mentioned in file ETC\DIFFER.DOC).


2.  Release Notes
-----------------

* For installation instructions, read the Installation Guide provided with
  your documentation.

* For differences from prior versions, read the New Information! document.

* Last-minute-supplied or unclassified software is in subdirectory ETC.

* See file WEITEK.DOC in the WEITEK subdirectory for detailed information
  about Weitek ABACUS coprocessor support.


3.  New Features
----------------

* MetaWare Profiler: see file README.PRF for information about the Profiler.

* MetaWare Debugger: if you have also licensed the MetaWare Debugger, see file
  README.MDB for information.

* Microsoft Graphics compatibility functions.

* SIGNAL.H functions raise() and signal() implemented.

* Interrupt vector functions added to DOS.H:
     _getrvect()
     _getpvect()
     _setrvect()
     _setpvect()
     _setrpvectp()

  These functions have been added to the High C Extended DOS 80386 Run-Time
  Library.  Their counterparts in the 80x86 product are _dos_getvect() and
  _dos_setvect().

* Optimization Levels

  The compiler now has five optimization levels, numbered 0 through 4.  You
  specify the optimization level on the command line with option -On, where O
  is the letter O and n is a number 0 through 4 (for instance, specify -O2 for
  optimization level 2).  The default level is 0.  In general, the higher the
  optimization level, the faster the generated code will run, usually at the
  expense of compile time.

  Here is a summary of the additional optimizations performed at each level:

    Level 0 (Default)
    -----------------
      - One iteration of local common subexpression elimination (CSE), copy
        propagation, and constant propagation.

      - One iteration of live/dead analysis.

      - Numerous strength reductions (such as multiply converted to shift).

      - Global register allocation.

    Level 1
    -------
      - Multiple iterations of local common subexpression elimination
        (CSE), copy propagation, and constant propagation.

      - Global CSE elimination (multiple iterations).

      - Removal of invariant expressions from loops.

      - Multiple iterations of live/dead analysis.

      - Register lifetime analysis prior to register allocation (can improve
        global register allocation).

      - Back-substitution of epilogue code to avoid unconditional jumps.

      - Expression simplification by applying law of associativity.
        For example, (x+k1)+k2 -> x+(k1+k2)

      - Improved spill analysis when performing register allocation.

      - Cross jumping (tail merging).

    Level 2
    -------
      - Local CSE elimination phase is re-invoked to clean up register
        spill code.

    Level 3
    -------
      - The Behaved toggle is initialized to On.  Consequently, the compiler
        assumes that the program being compiled is "well behaved".   See
        Section 4 below for a description of this toggle.

    Level 4
    -------
      - Same as Level 3 as of this writing.

* Warning Levels

   The compiler now supports four levels of warning diagnostics, numbered 0
   through 4.  Setting the warning level to n means that warning diagnostics
   with severity level n or less are displayed.  A setting of 0 suppresses all
   warnings.  The default warning level is 3.  Level 1 warnings should be of
   most interest to programmers. Levels 2 and 3 are less so; level 4 is merely
   informational.

   You can set the warning level on the command line with option -wn, where n
   is a number 0 through 4; or you can use pragma Warning_level in your source.
   Pragma Warning_level has the following form:

      #pragma Warning_level(n)

   where n is a decimal integer constant denoting the level.

   Messages and classifications may change as the compiler is revised.  As of
   this writing, warning messages are classified as follows:

      Level 4 (Initializes VP_UP_warn toggle to On)
      -------
         Old-style K&R C would possibly produce different results for
         relational.

      Level 3
      -------
         '=' encountered where '==' may have been intended.
         Function called but not defined.
         Unsigned compare with zero always false/true.
         Variable "name" is never referenced.

      Level 2
      -------
         Expression has no side effects.
         Prototype causes non-standard conversion from "type1" to "type2".
            (Also under control of Prototype_conversion_warn toggle.)
         Static function is not referenced.
         Toggle "name" is unrecognized.
         Variable "name" is possibly referenced before set.

   All other warning messages are level 1.


4.  Additions/Corrections to Printed Documentation
--------------------------------------------------

* Toggle Behaved -- default Off at optimization levels 0-2, On at level 3 and
                    above.

   When this toggle is On, the compiler assumes that the program being
   compiled is "well behaved".  A "well behaved" program follows these rules:

   -  No address of a union member is ever assigned to a pointer.

   -  No value of a pointer type is ever cast to an incompatible pointer type.

   With these assumptions, the compiler may be able to generate substantially
   better code when referencing pointer-based variables.

   The compiler issues an appropriate warning if any of the above assumptions
   is violated in a way that affects assumptions made by the optimizer.  You
   must judge whether the warnings can be safely ignored, or if the program
   needs to be compiled at a lower optimization level.

   WARNING:  The compiler may not catch all instances of misbehaved code. For
             example, a pointer-to-char may be passed to an undeclared
             external function expecting a pointer-to-int.  Therefore, it is
             possible for a program to compile at level 3 without warnings
             (and yet run incorrectly), but run correctly when compiled at a
             lower optimization level.

* Toggle Callee_pops_when_possible

   Callee_pops_when_possible works with non-prototyped functions and is
   completely SAFE.  The compiler marks those functions that are "safe" with a
   bit.  If the function is non-prototyped and is called before it is defined,
   or called with an argument list inconsistent with its definition, then the
   "safe" bit is turned off.

* Toggle Use_UP_rules -- Default: Off

   In C there are two rules for implicitly widening an unsigned char or
   unsigned short operand in an arithmetic expression: value-preserving (VP)
   and unsignedness-preserving (UP).

   The VP rule widens an unsigned char or unsigned short to signed int.  This
   is the rule used in Standard C.

   The UP rule widens such operands to unsigned int.  This rule is used by
   older compilers, such as those based on the AT&T Portable C Compiler.

   Some programs can behave differently depending on which rule is in force.
   For example:

      unsigned char c;
      ...
      if (c-1 > 0) foo();

   If c happens to have the value zero when the if statement is executed, the
   relational expression will be false if the VP rule is used, true if the UP
   rule is used.  This latter characteristic occurs because c is widened to an
   unsigned int; therefore, the type of the expression c-1 is also unsigned
   int.

   If you are compiling code that was originally developed under a UP
   compiler, turn On toggle Use_UP_rules.

* Toggle VP_UP_warn - Default: Off if Warning_Level < 4; On otherwise.

   When On, the compiler issues a warning when it encounters an expression
   that could have a different value depending on whether value-preserving or
   unsignedness-preserving rules are used.  See the description of toggle
   Use_UP_rules.

* -Hansi and in-line transcendentals

   If you are using the -Hansi switch and would like to get faster transcen-
   dentals, but are not concerned about errno values, you may turn off the
   toggle Strict_ansi_math:

      -Hansi -Hoff=Strict_ansi_math

   By default, when -Hansi is specified on the command line, Strict_ansi_math
   is also set by the driver.  Strict_ansi_math causes the compiler to
   generate calls to library functions for the transcendentals, instead of
   inlining them.  This is necessary for ANSI conformance.  Without the calls,
   the compiler will inline many trancendentals; and after the Common Sub-
   expression Elimination phase of optimization, errno may not always be set.

* log(), log10()

   The log() and log10() functions are documented to return -HUGE_VAL if
   passed a value <= 0.0 when, in fact, the functions return 0.0.  This
   behavior is outside ANSI specifications ("A domain error occurs if the
   argument is negative.  A range error may occur if the argument is zero.")
   and should not be relied upon.

* Memory-model override

   In both Version 2.3 and Version 1.7 of the High C compiler for Extended
   DOS 80386, command-line option -Mx overrides any "pragma Memory_model"
   specification in the program.  However, Versions 1.7 and 2.3 differ in how
   multiple "pragma Memory_model" specifications are handled.  In 1.7 the last
   instance overrides any previous specifications; in 2.3 the first instance
   takes precedence.

* Optimize_for_space toggle is recognized, but is not yet supported.

* PCC_msgs toggle

   The PCC_msgs toggle has been replaced by a more general warning level
   capability.  You can set the warning level on the command line with
   option -wn, where n is a number 0 through 4; or you can use pragma
   Warning_level in your source.  See the New Features section of this
   readme for more information about warning levels.

* _setlogorg() library function

   This function was incorrectly documented to take void as its argument.
   The proper usage is:

   struct xycoord{ short xcoord, short ycoord } _setlogorg(short x,short y);

   The return value is the previous logical coordinate of the origin.

* _setvideomode() library function

   The macro _ERESCOLOR was incorrectly documented to supply 64 colors
   and 640x480 resolution.  The correct attributes are 16 colors and
   640x350 resolution.

* Stack dump

   The stackdump(int handle) routine does not include any routine names.  It
   does include the "will return to" address, and eight arguments from the
   stack.  It cannot provide any arguments that were passed in registers.

* Use_wtlbase_for_weitek toggle

   This toggle has been added for Weitek support.  With flat-model code, use
   _mwWTLBASE as the base address of the Weitek instructions.


5.  Wildcard Expansion
----------------------

   ETC\WCARD.C is a program that examines DOS wildcards in the argc/argv
   array and expands them.  If compiled with TEST defined, the program
   executes and shows the arguments before and after expansion.  Compiled
   without TEST, it is suitable for inclusion in your program.


6.  Driver Notes
----------------

   When you invoke High C with the command hc386, you are invoking a driver
   program which in turn invokes the compiler.  See the Programmer's Guide
   chapter Invoking and Controlling the Compiler.


7.  New Command-Line Options
----------------------------

 -fsoft     Causes the compiler to generate emulation code and link with the
            emulation library.

 -f287      Causes the compiler to generate 287 floating-point code and link
            with the coprocessor library.

 -f387      Causes the compiler to generate 387 floating-point code and link
            with the coprocessor library.

 -f4167     See file WEITEK.DOC in the WEITEK subdirectory, and Programmer's
 -f3167     Guide chapter Floating-Point Support, for information about these
 -f1167     options.

 -sched     Turns scheduling on when used with toggle -486 or option -f1167,-
            f3167, or -f4167.

 -w67seg    (MS-DOS hosts only.)  Enables segmented code generation for
            Weitek instructions.

 -w67flat   (MS-DOS hosts only.)  Enables flat-model code generation for
            Weitek instructions.  Also causes the compiler to use _mwWTLBASE
            as the base address of the Weitek instructions.

 -weitek    Used in conjunction with -f1167, -f3167, or -f4167, this toggle
            enables options -sched, -w67flat, and -O.


8. GFX Graphics Functions
-------------------------

   If you use option -Hansi (for strict ANSI conformance), GFX Graphics
   functions will not be available to you with the original all-uppercase
   versions of the function names unless you explicitly link non-ANSI library
   NA.LIB.  This is because these non-ANSI function names appear only in
   NA.LIB, which is omitted from the link when you specify -Hansi on the
   driver command line.

   You can use the functions as documented, with option -Hansi specified, by
   linking NA.LIB and specifying #define __HIGHC__ before including GFX.H.
   For example:

      #define __HIGHC__
      #include <GFX.H>
      #undef  __HIGHC__

   Link NA.LIB by specifying driver command-line option -lNA.LIB.

   NA.LIB includes all the non-ANSI function names.  GFX Graphics functions
   have also been provided in the ANSI library, with their names lowercased
   and prefixed by _gfx_.  For example, SCREEN becomes _gfx_screen.  The GFX
   macro names are prefixed with an underscore.  For example, DFLT becomes
   _DFLT.

   NOTE:  The GFX functions are not prototyped in accordance with the ANSI
          Standard, so you may get copious warning messages from the compiler
          indicating that a called function does not conform to its prototype.
          If you do not require strict ANSI conformance, you may ignore such
          warning messages about GFX functions.

   NOTE:  The GFX Graphics functions work only if linked with a linker that
          produces Phar Lap .EXP type executables.


9.  Known Problems
------------------

*  Function _bios_disk() does not support read, write, or verify operations.

*  The graphics functions provided work only if linked with a linker that
   produces Phar Lap .EXP type executables.

*  You must call _setvideomode() before using any of the graphics functions
   in graph.h.

*  The graphics function _setlogorg() sets the wrong origin when used in
   conjunction with _setcliprgn().  The origin it sets is relative to the
   upper lefthand corner of the viewport or current clipping region.  It
   should be relative only to the viewport origin.  This will affect all
   the graphics procedures which use the origin to calculate where to
   write pixels.

*  The functions _outtext(), _settextwindow(), and _settextposition() support
   only 25 rows of text output.  When _setvideomode() is called, it resets
   the text screen to 80x25 or 40x25 text resolution, depending on which text
   resolution is supported by the video mode you set.  _setvideomode() must
   be called before any of the graphics functions from graph.h can be called.

*  A bug in fgets() causes the end-of-file flag not to be set when end-of-file
   is reached while reading a file in binary mode.  When end-of-file is
   reached, fgets() returns NULL.

*  If the first character of an I/O buffer was a '\n', it was not correctly
   translated by fwrite() to CR LF when writing to a file.  This bug is
   fixed in this version.

*  At the hardware level, the signal() and raise() functions support only
   Ctrl-C and the critical-error exceptions.  All other signals are supported
   at the software level (via raise()).

   WARNING:  If a hardware interrupt occurs during a DOS or BIOS operation, it
             may not be possible to execute the signal handler.  In this case,
             the results are undefined, and may result in a system crash.  See
             the Library Reference Manual for descriptions of signal() and
             raise().

*  It is not possible to install the first function in the code segment as
   a signal handler.  The address of the first function is cs:0, which when
   passed to signal() (for example, signal(SIGINT,foo)) is interpreted as
   SIG_DFL (#define'd to 0 in signal.h).  This causes the program to execute
   an exit(3) instruction (the default action) instead of the intended
   handler.  To solve this problem, move the handler away from the beginning
   of the file in which it resides, or change the order in which the object
   modules are linked.

*  BlackStar C Function Library interrupt functions in_remint(), in_setint(),
   sy_setintf(), and sy_setintv() are not supported.

*  BlackStar C Function Library mouse functions ms_cget(), ms_cset(),
   ms_csof(), ms_cson(), ms_field(), ms_init(), ms_intr(), ms_motion(),
   ms_press(), ms_rels(), ms_shape(), and ms_stat() are not supported.

*  Running program SI_TEST.C in the BlackStar C Function Library may hang
   your machine.


Other Problems
--------------

If you think you have discovered a compiler problem, send a problem report to
MetaWare Technical Support.  If possible, please send a test case that
demonstrates the problem.

All problem reports must include your serial number and specify which version
of the compiler you are using.  If your sample code exceeds 15 lines, please
send it by diskette to the address below, or by E-mail to:

   uunet!acad!metaware!tech
             -or-
   Internet tech@metaware.com
             -or-
   INTERNET:tech@metaware.com

MetaWare Customer Service can be reached at (408) 429-6111, 8:00 am to 4:30 pm
Monday through Friday.


MetaWare Incorporated
2161 Delaware Avenue
Santa Cruz, CA 95060-5706
(408)429-6382  FAX:(408)429-9273
029 HIGH C V3.04 7×HD
README [展开]
       Copyright (C) 1993 MetaWare Incorporated; All Rights Reserved.

                         High C/C++ Version 3.04
                  Globally Optimizing Compiler and Tools
                for Extended DOS 80386/486 and Windows 3.0
                               January 1993


READMEs included in this distribution
-------------------------------------
   README       -- This general README.

   The following files are located in your HIGHC\DOC subdirectory:

   README.ADS   -- Developing an ADS Application
   README.CPP   -- C++ Specifics
   README.EMB   -- Embedded Applications Notes
   README.LIB   -- Additions to Run-Time Library Documentation
   README.MDB   -- MetaWare Debugger (MDB) Specifics
   README.PRF   -- MetaWare Profiler Specifics
   README.WIN   -- MetaWare 32-Bit Windows 3.0 Application Development Kit
   WEITEK.DOC   -- Weitek ABACUS Support
   REMINDER.DOC -- Troubleshooting Tips


Table of Contents
-----------------
 1.  Introduction
 2.  Release Notes
 3.  Additions/Corrections to Printed Documentation
 4.  New Toggles
 5.  Wildcard Expansion
 6.  Rogue Wave tools.h++ Examples and Documentation
 7.  Driver Notes
 8.  GFX Graphics Functions
 9.  Known Problems


1.  Introduction
----------------

Version 3.0 highlights and features include:

* C compiler and C++ compiler in one executable for gradual migration
* full implementation of the C++ language (minus exception handling)
* C++ I/O streams library
* Rogue Wave's tools.h++ library
* support for Microsoft Windows 3.0 development using the MetaWare ADK
    (NOTE: compatibility with Microsoft Windows 3.1 is under development)
* improved compile speed
* additional global optimizations
* a switch to specify optimization levels 0 through 7, or level s
* 32-Bit Source-Level Debugger (MDB and MDBW)
* a compile-and-link driver
* function inlining
* profiler
* editor
* disk cache
* keyboard and screen enhancers.


2.  Release Notes
-----------------

* For installation instructions, read the Installation Guide provided with
  your documentation.

* For differences from and compatibility with prior versions, read the New
  Information! document.

* Last-minute-supplied or unclassified software is in subdirectory ETC.


3.  Additions/Corrections to Printed Documentation
--------------------------------------------------

* See README.LIB for additions to the Run-Time Library documentation.

* See README.EMB for additional information about developing embedded
  applications.

* The High C++ Language Manual does not specify where the SHOWARGS.CPP program
  is located.  It is in the \HIGHC\DEMOS\CPP directory.

* The High C Extensions Manual lists keywords _packed and _unpacked.  These
  are now _Packed and _Unpacked.

* The file CVARS.C has been renamed _IOB.C and is located in the HIGHC\LIB\SRC
  directory.

  NOTE: A copy of the original CVARS.C is located in the \V1x directory.  You
        must compile with -Hloclib to use this version.

* Toggle Callee_pops_when_possible.

  This toggle works with non-prototyped functions and is completely SAFE.  The
  compiler marks those functions that are "safe" with a bit.  If the function
  is non-prototyped and is called before it is defined, or called with an
  argument list inconsistent with its definition, then the "safe" bit is
  turned off.

* -Hansi and in-line transcendentals.

  If you are using the -Hansi switch and would like to get faster transcenden-
  tals, but are not concerned about errno values, you may turn off the toggle
  Strict_ansi_math:

      -Hansi -Hoff=Strict_ansi_math

   By default, when -Hansi is specified on the command line, Strict_ansi_math
   is also set by the driver.  Strict_ansi_math causes the compiler to
   generate calls to library functions for the transcendentals, instead of
   inlining them.  This is necessary for ANSI conformance.  Without the calls,
   the compiler will inline many transcendentals; and after the Common Sub-
   expression Elimination phase of optimization, errno may not always be set.

* Memory-model override.

   In both Version 3.0 and Version 1.7x of the High C compiler for Extended
   DOS 80386/486, command-line option -Mx overrides any "pragma Memory_model"
   specification in the program.  However, Versions 1.7x and 3.0 differ in
   how multiple "pragma Memory_model" specifications are handled.  In 1.7x the
   last instance overrides any previous specifications; in 3.0 the first
   instance takes precedence.

* Stack dump.

   The stackdump(int handle) routine does not include any routine names.  It
   does include the "will return to" address, and eight arguments from the
   stack.  It cannot provide any arguments that were passed in registers.

* Inliner.

   The meaning of inliner option -His has changed; the compiler can now safely
   inline all functions.  -His=n is used instead to flag the inliner not to
   inline functions with stack size greater than n bytes.


4.  New Toggles
---------------

Toggle C_include -- Default: Off

  When On, this toggle causes all #include directives to behave like
  #c_include directives: a file is included only if it hasn't been included
  before.  See the description of #c_include in the High C/C++ Programmer's
  Guide, Section "Include Pragmas: Including Source Files."  Turning this
  toggle On can potentially save a lot of file I/O time during compilation.


5.  Wildcard Expansion
----------------------

  ETC\SRC\WCARD.C is a program that examines DOS wildcards in the argv[argc]
  array and expands them.  If compiled with TEST defined, the program executes
  and shows the arguments before and after expansion.  Compiled without TEST,
  it is suitable for inclusion in your program.


6.  Rogue Wave tools.h++ Examples and Documentation
---------------------------------------------------

To compile and run the Rogue Wave examples:

   1. Go to the HIGHC\RW\TOOLEXAM directory.

   2. To compile example1.cpp type:

         hc386 example1.cpp -lRWTOOL

      where RWTOOL is the tools library located in the HIGHC\SMALL directory.

   3. To run the example type:

         run386 example1

Documentation for tools.h++ is in three ASCII files, located in the DOC
subdirectory:

   TOOLS4_1.DOC  --  Class Library Version 4.0, Part I
   TOOLS4_2.DOC  --  Class Library Version 4.0, Part II
   TOOLS5.DOC    --  Class Library Version 5.0 supplement

Printed, bound versions of these manuals are included if you license the
source code, either from MetaWare or from Rogue Wave.  Word-wrap problems in
generating the ASCII files caused some tables to be misaligned.  Contact Rogue
Wave if you have questions about the documentation.


7.  Driver Notes
----------------

  When you invoke High C/C++ with the command hc386, you are invoking a driver
  program which in turn invokes the compiler.  See the Programmer's Guide for
  further information.


8. GFX Graphics Functions
-------------------------

   Whenever possible you should use the Microsoft-compatible graphics
   functions documented in the High C Library Reference Manual, instead of
   calling GFX functions directly.  Future releases of MetaWare compilers may
   not support GFX Graphics.

   When you specify option -Hansi (for strict ANSI conformance), GFX Graphics
   functions are not available to you with the original all-uppercase versions
   of the function names unless you explicitly link non-ANSI library HCNA.LIB.
   This is because these non-ANSI function names appear only in HCNA.LIB, which
   is omitted from the link when you specify -Hansi on the driver command
   line.

   You can use the functions as documented, with option -Hansi specified, by
   linking HCNA.LIB and specifying #define __HIGHC__ before including GFX.H.
   For example:

      #define __HIGHC__
      #include <GFX.H>
      #undef  __HIGHC__

   Link HCNA.LIB by specifying driver command-line option -lHCNA.LIB.

   HCNA.LIB includes all the non-ANSI function names.  GFX Graphics functions
   have also been provided in the ANSI library, with their names in lowercase
   and prefixed by _gfx_.  For example, SCREEN becomes _gfx_screen.  The GFX
   macro names are prefixed with an underscore.  For example, DFLT becomes
   _DFLT.

   NOTE:  The GFX functions are not prototyped in accordance with the ANSI
          Standard, so you may get copious warning messages from the compiler
          indicating that a called function does not conform to its prototype.
          If you do not require strict ANSI conformance, you may ignore such
          warning messages about GFX functions.

   NOTE:  The GFX Graphics functions work only if linked with a linker that
          produces Phar Lap .EXP type executables.

   Many of the GFX Graphics functions have been rewritten for greater speed,
   and numerous bugs have been fixed.


9.  Known Problems
------------------

*  Function _bios_disk() does not support read, write, or verify operations.

*  The graphics functions provided work only if linked with a linker that
   produces Phar Lap .EXP type executables.

*  You must call _setvideomode() before using any of the graphics functions
   in graph.h, except for _clearscreen() and _getvideoconfig().

*  At the hardware level, the signal() and raise() functions support only
   Ctrl-C and the critical-error exceptions.  All other signals are supported
   at the software level (via raise()).

   WARNING:  If a hardware interrupt occurs during a DOS or BIOS operation, it
             may not be possible to execute the signal handler.  In this case,
             the results are undefined, and may result in a system crash.  See
             the Library Reference Manual for descriptions of signal() and
             raise().

*  It is not possible to install the first function in the code segment as
   a signal handler.  The address of the first function is cs:0, which when
   passed to signal() (for example, signal(SIGINT, foo)) is interpreted as
   SIG_DFL (#define'd to 0 in signal.h).  This causes the program to execute
   an exit(3) instruction (the default action) instead of the intended
   handler.  To solve this problem, move the handler away from the beginning
   of the file in which it resides, or precede it with a dummy stub function;
   or change the order in which the object modules are linked.

*  DOS Helper program sc.exe does not work with MS-DOS 5.0, because the system
   call sc.exe uses has been nullified in this version of MS-DOS.

*  If you use the -P command-line option to generate a preprocessed .i file,
   you cannot compile the file.  You can work around the problem by editing
   the following section of file hc386.cnf:

     ##########
     # Define source-file suffixes recognized by the driver.
     #
     # Place CPP as the first element of these lists, to say for which
     # languages CPP is supported.  Currently, just for C; do not confuse
     # CPP with "C++".
     AEXT=.s .asm               %; # Assembly
     CEXT=CPP .c %; # C
     CPPEXT=CPP .cc .cpp %; # C++

   You can change the CPPEXT line to add the .i extension as follows:

     CPPEXT=CPP .cc .cpp .i %; # C++

   or, alternatively, specify -Hcppext=i on the driver command line.


Other Problems
--------------

If you think you have discovered a compiler problem, send a problem report to
MetaWare Technical Support.  If possible, please send a test case that
demonstrates the problem.

All problem reports must include your serial number and specify which version
of the compiler you are using.  If your sample code exceeds 15 lines, please
send it by diskette to the address below, or by E-mail to:

   tech@metaware.com

MetaWare Technical Support can be reached at (408) 429-6111, 8:00 am to 4:30 pm
Monday through Friday.


MetaWare Incorporated
2161 Delaware Avenue
Santa Cruz, CA 95060-5706
(408)429-6382  FAX:(408)429-9273

------------------------------------------------------------------------------
The installation program used to install MetaWare High C/C++, INSTALL, is
based on licensed software provided by Knowledge Dynamics Corp, P.O. Box 1558,
Canyon Lake, Texas 78130-1558 (USA).  INSTALL is Copyright (c) 1987-1991 by
Knowledge Dynamics Corp which reserves all copyright protection worldwide.
INSTALL is provided to you for the exclusive purpose of installing this
MetaWare product. MetaWare has made modifications to the software as provided
by Knowledge Dynamics Corp, and thus the performance and behavior of the
INSTALL program shipped with this MetaWare product may not represent the
performance and behavior of INSTALL as shipped by Knowledge Dynamics Corp.
MetaWare is exclusively responsible for the support of this MetaWare product,
including support during the installation phase.  In no event will Knowledge
Dynamics Corp. be able to provide any technical support for MetaWare products.
------------------------------------------------------------------------------
030 NDP C/386 V2.10 3×HD
README.DOC [展开]

                               NDP C-386
                              Version 2.1


Overview

    Version 2.1 of the NDP compilers provide all the functionality of
    the previous release (v2.0.8), with the addition of increased
    compatibility with the new C standard ANSI X3.159-1989 and with
    Microsoft C Version 5.0.

    NDP Fortran and Pascal users should note that, although there are no
    major changes that impact those compilers, there are bug fixes and
    other minor enhancements meant to increase the reliability of the
    entire line of NDP compilers.

    This file also clarifies the use of binary file I/O as it applies to
    all the compilers.

    
Installation
     
    For DOS users, a utility simplifies the installation process. To use
    it, insert Disk 1 into drive A, type "A:INSTALL", press <Enter>, and
    follow the instructions that appear on the screen.

    You can also install the compiler using the directions in Chapter 1
    of the User's Manual.  It is recommended that you install it in a
    new directory (e.g., \NDP21), to facilitate the compilation and
    testing of existing source code.


ANSI Compatibility (C only)

    This version of the compiler is intended to be compatible with ANSI
    X3.159-1989.  This compatiblity is achieved with library LIBA.LIB
    and changes to header files.  There are two incompatible INCLUDE
    directories. \INCL contains the standard NDP include files; \INCL_A
    contains header files that support the ANSI standard.  These
    directories contain files which may share a common name but which
    have different contents.  Copying these files into the same
    directory may cause problems.

    To compile a program written to the ANSI standard, do the following:

        1. Set the INCLUDE environment variable to be equal to the name
           of the directory where the ANSI include files are installed.
           For example:

                set include=c:\ndp21\ansi

        2. Use the -ansi switch when compiling.  For example:

                cc hi.c -ansi

    The ANSI compatible keywords supported in this release are:
    
        auto                extern                  sizeof
        break               float                   static
        case                for                     struct
        char                goto                    switch
        const               if                      typedef
        continue            int                     union
        default             long                    unsigned
        do                  register                void
        double              return                  volatile
        else                short                   while
        enum                signed

    The functions and/or macros that provide ANSI compatibility:

        Function   Header file          Function   Header file
        --------   -----------          --------   -----------
        abort      (stdlib.h)           mbstowcs   (stdlib.h)
        abs        (stdlib.h)           mbtowc     (stdlib.h)
        acos       (math.h)             memchr     (string.h)
        asctime    (time.h)             memcmp     (string.h)
        asin       (math.h)             memcpy     (string.h)
        assert     (assert.h)           memmove    (string.h)
        atan       (math.h)             memset     (string.h)
        atan2      (math.h)             mktime     (time.h)
        atexit     (stdlib.h)           modf       (math.h)
        atof       (stdlib.h)           perror     (stdio.h)
        atoi       (stdlib.h)           pow        (math.h)
        atol       (stdlib.h)           printf     (stdio.h)
        bsearch    (stdlib.h)           putc       (stdio.h)
        calloc     (stdlib.h)           putchar    (stdio.h)
        ceil       (math.h)             puts       (stdio.h)
        clearerr   (stdio.h)            qsort      (stdlib.h)
        clock      (time.h)             raise      (signal.h)
        cos        (math.h)             rand       (stdlib.h)
        cosh       (math.h)             realloc    (stdlib.h)
        ctime      (time.h)             remove     (stdio.h)
        difftime   (time.h)             rename     (stdio.h)
        div        (math.h)             rewind     (stdio.h)
        exit       (stdlib.h)           scanf      (stdio.h)
        exp        (math.h)             setbuf     (stdio.h)
        fabs       (math.h)             setjmp     (setjmp.h)
        fclose     (stdio.h)            setlocale  (locale.h)
        feof       (stdio.h)            setvbuf    (stdio.h)
        ferror     (stdio.h)            signal     (signal.h)
        fflush     (stdio.h)            sin        (math.h)
        fgetc      (stdio.h)            sinh       (math.h)
        fgetpos    (stdio.h)            sprintf    (stdio.h)
        fgets      (stdio.h)            sqrt       (math.h)
        floor      (math.h)             srand      (stdlib.h)
        fmod       (math.h)             sscanf     (stdio.h)
        fopen      (stdio.h)            strcat     (string.h)
        fprintf    (stdio.h)            strchr     (string.h)
        fputc      (stdio.h)            strcmp     (string.h)
        fputs      (stdio.h)            strcoll    (string.h)
        fread      (stdio.h)            strcpy     (string.h)
        free       (stdlib.h)           strcspn    (string.h)
        freopen    (stdio.h)            strerror   (string.h)
        frexp      (math.h)             strftime   (time.h)
        fscanf     (stdio.h)            strlen     (string.h)
        fseek      (stdio.h)            strncat    (string.h)
        fsetpos    (stdio.h)            strncmp    (string.h)
        ftell      (stdio.h)            strncpy    (string.h)
        fwrite     (stdio.h)            strpbrk    (string.h)
        getc       (stdio.h)            strrchr    (string.h)
        getchar    (stdio.h)            strspn     (string.h)
        getenv     (stdlib.h)           strstr     (string.h)
        gets       (stdio.h)            strtod     (stdlib.h)
        gmtime     (time.h)             strtok     (string.h)
        isalnum    (ctype.h)            strtol     (stdlib.h)
        isalpha    (ctype.h)            strtoul    (stdlib.h)
        iscntrl    (ctype.h)            strxfrm    (string.h)
        isdigit    (ctype.h)            system     (stdlib.h)
        isgraph    (ctype.h)            tan        (math.h)
        islower    (ctype.h)            tanh       (math.h)
        isprint    (ctype.h)            time       (time.h)
        ispunct    (ctype.h)            tmpfile    (stdio.h)
        isspace    (ctype.h)            tmpnam     (stdio.h)
        isupper    (ctype.h)            tolower    (ctype.h)
        isxdigit   (ctype.h)            toupper    (ctype.h)
        labs       (stdlib.h)           ungetc     (stdio.h)
        ldexp      (math.h)             va_arg     (stdarg.h)
        ldiv       (stdlib.h)           va_end     (stdarg.h)
        localeconv (locale.h)           va_start   (stdarg.h)
        localtime  (time.h)             vfprintf   (stdio.h,stdarg.h)
        log        (math.h)             vprintf    (stdio.h,stdarg.h)
        log10      (math.h)             vsprintf   (stdio.h,stdarg.h)
        longjmp    (setjmp.h)           wcstombs   (stdlib.h)
        malloc     (stdlib.h)           wctomb     (stdlib.h)
        mblen      (stdlib.h)


Microsoft C compatibility  (C only)

    Version 2.1 of the compiler is intended to be compatible with
    Microsoft C v5.0.  This compatiblity is achieved with a new library
    and changes to header files, as follows:

        LIBMS    LIB    Microsoft compatible functions library
        MALLOC   H      new header file for MS compatibility
        DOS      H      altered header file
        FLOAT    H      new header file for MS compatibility
        STDLIB   H      altered header file
        STDIO    H      altered header file

    The following is a list of the new functions and macros contained in
    the libarary and header files.  Items followed by a header file name
    are macros; items follows by "n/i" will be implemented in a later
    release.

        alloca                 eof                    _nfree (malloc.h)
        bdos                   fcloseall              _nheapchk (malloc.h)
        _bios_disk             _ffree (malloc.h)      _nheapset (malloc.h)
        _bios_equiplist        fgetchar (stdio.h)     _nheapwalk (malloc.h)
        _bios_keybrd           _fheapchk (malloc.h)   _nmalloc (malloc.h)
        _bios_memsize          _fheapset (malloc.h)   _nmsize (malloc.h)
        _bios_printer          _fheapwalk (malloc.h)  onexit (stdlib.h)
        _bios_serialcom        fieeetomsbin (n/i)     putch
        _bios_timeofday        filelength             putenv
        cgets                  flushall               rmdir
        chdir                  _fmalloc (malloc.h)    rmtmp (n/i)
        chmod                  fmsbintoieee (n/i)     _rotl
        chsize                 _fmsize (malloc.h)     _rotr
        _clear87 (float.h)     _fpreset               _searchenv
        _control87 (float.h)   fputchar (stdio.h)     segread
        cprintf                _freect                sopen
        cputs                  fstat (n/i)            spawnl
        cscanf                 ftime                  spawnle
        dieeetomsbin (n/i)     getch                  spawnlp
        dmsbintoieee (n/i)     getche                 spawnlpe
        _disable (dos.h)       getcwd                 spawnv
        _dos_allocmem          halloc (malloc.h)      spawnve
        _dos_close             _heapchk               spawnvp
        _dos_creat             _heapset               spawnvpe
        _dos_creatnew          _heapwalk              _splitpath
        dosexterr              hfree (malloc.h)       stackavail
        _dos_findfirst         int86                  stat (n/i)
        _dos_findnext          int86x                 _status87
        _dos_freemem           intdos                 strcmpi
        _dos_getdate           intdosx                _strdate
        _dos_getdiskfree       itoa                   strdup
        _dos_getdrive          kbhit                  _strerror
        _dos_getfileattr       lfind                  stricmp
        _dos_getftime          locking                strlwr
        _dos_gettime           _lrotl                 strnicmp
        _dos_keep              _lrotr                 strnset
        _dos_open              lsearch                strrev
        _dos_read              ltoa                   strset
        _dos_setblock          _makepath              _strtime
        _dos_setdate           matherr (n/i)          strupr
        _dos_setdrive          max (stdlib.h)         tell
        _dos_setfileattr       _memavl                tempnam
        _dos_setftime          _memmax                tzset
        _dos_settime           min (stdlib.h)         ultoa
        _dos_write             mkdir                  umask (n/i)
        dup                    movedata               ungetch
        dup2                   _msize                 utime
        _enable (dos.h)

    The following Microsoft C functions are NOT supported:

        _dos_getvect          execlp                  execvp
        _dos_setvect          execlpe                 execvpe
        execl                 execv                   _expand
        execle                execve

    Compatibility with Microsoft's graphics was initially available in
    NDP C-386 Version 2.0.8.  The following functions are supported:

        _clearscreen                   _putimage
        _ellipse                       _rectangle
        _floodfill                     _remapallpalette
        _getbkcolor                    _remappalette
        _getch                         _setactivepage
        _getcurrentposition            _setbkcolor
        _getimage                      _setcliprgn
        _getlogcoord                   _setcolor
        _getphyscoord                  _setlogorg
        _getpixel                      _setpixel
        _gettextcolor                  _settextcolor
        _gettextposition               _settextposition
        _getvideoconfig                _settextwindow
        _imagesize                     _setvideomode
        _lineto                        _setviewport
        _moveto                        _setvisualpage
        _outtext                       _wrapon

    The following graphics functions are NOT supported:

        _arc                           _pie
        _displaycursor                 _selectpalette
        _getfillmask                   _setfillmask

    Please see Chapter 11 of the NDP C-386 User's Manual for more
    information about the graphic functions that are supported.


Binary File I/O (all compilers)

    Support for binary file I/O was available in previous releases;
    however, there has been some confusion regarding it.  The type of
    I/O performed depends on the setting of the global variable _pmode.
    Setting _pmode to 8000hex will cause files to be opened in binary
    mode.  The default is _pmode = 4000hex (text mode).

    The file I/O type is set when the file is opened.  Subsequent
    changes to _pmode will have not alter the I/O type of an already
    open file.


Bug Fixes

    1. Text I/O has been accelerated with a change to UNGETC in run time
       library.

    2. SCANF now correctly reports EOF.

    3. The compiler driver now passes the full path name of .OBJ files
       to the linker.   Previously, a command such as:

                f77 c:\subdirectory\fm001.f

       caused the linker to look for fm001.obj in the current directory.

    4. The compiler driver now recognizes the SRC (source) environment
       variable.

    5. The count register used by REP MOV no longer is corrupted by
       fixup routine.

    6. In the FORTRAN library (module F_CLOS.C), direct access formatted
       files are not overwritten when opened with READONLY.

    7. In the MATH library LIBM1167 (FORTRAN, C, and Pascal compilers),
       the Weitek single precision math function RACOS is now correctly
       working with negative values.


Technical Support

    If you have any questions, you can contact MicroWay's technical
    support staff at:

        Voice:  (508) 746-7341
        FAX:    (508) 746-4678

    Please refer to your User Number, product name, version number, and
    hardware configuration when contacting us.

    You should register your purchase by completing and returning the
    User Registration card.
031 NDP C/386 V3.20 6×HD
32位编译型C语言可使用大于1兆的数组,支持EGA,VGA,800X600等16色图形显示
032 Watcom C/386 V8.50 5×HD
033 Watcom C/386 V9.01 6×HD
可使用32位DOS及WINDOWS,AUTOCAD,ADS,OS/2的C语言
034 C-Worthy V2.00 9×HD
软件界面开发系统,适用于MS-C和TURBO-C++,PASCAL交互制作字符及图形方式下的窗口,菜单,表格,颜色等,提供的函数库支持鼠标,键盘,编辑器,PCX图象,所有的函数均带有源程序
README.DOC [展开]
                       C-Worthy Version 2.0 Release Notes
                              [February 26, 1991]

Welcome to C-Worthy 2.0.

We're pleased that you have selected C-Worthy as your user interface
development system.  This version of C-Worthy owes a great deal to comments and
suggestions from C-Worthy users like yourself; if you have any problems or
suggestions for improvements we are eager to listen to you.

This file contains the latest information on this version of C-Worthy, as well
as hints on solving common problems and using some of C-Worthy's features.

Compiler Support Notes

These disks contain libraries to support Microsoft C versions 5.1 and 6.0,
Borland Turbo C (not C++) version 2.0, and Borland Turbo C++ version 1.0.

Support for Microsoft C 5.1, Turbo C 2.0, and Turbo C++ 1.0 may not be included
in future versions of C-Worthy, as these compilers have been superseded by more
recent versions.

We have not yet had the opportunity to do extensive testing with the newly
released Borland C++ 2.0.  However, source code customers will note that all
the library source code compiles correctly if the Turbo C++ 1.0 batch files are
modified to call bcc instead of tcc.

Upgrade Notes

See the file "upgrade.doc" on the C-Worthy Install Disk if you are upgrading
from a previous version of C-Worthy.

Help System

The file "h_lib.doc" on the install disk has information on how to use the help
librarian to implement context-sensitive help.

Unresolved Externals at Link Time

If, when linking, you encounter numerous errors of the form "unresolved
external" or "undefined symbol", one of the following conditions probably
applies:

   A.   Your application has been compiled with the old versions of the
   C-Worthy header files.  You must recompile with the new header files.

   If the undefined symbols are preceded by an underscore, this is the
   most likely source of the problem.

   B.   Your application has been compiled without defining your compiler
   version on the command line.  One of the following preprocessor symbols
   must be defined before any of the C-Worthy include files are processed:

   If you are using Microsoft C 6.0: MSC600 (example: cl -c -DMSC600 my.c)

   If you are using Microsoft C 5.1: MSC510 (example: cl -c -DMSC510 my.c)

   If you are using Turbo C 2.0: BTC200 (example: tcc -c -DBTC200 my.c)

   The best way to ensure that the correct command line options are used
   is to compile using the C-Worthy compiler batch files CWCL.BAT for
   large model and CWCM.BAT for medium model.

   If the undefined symbols are all capitalized, and are not preceded by
   an underscore, or if they are preceded by an '@', this is the most
   likely source of the problem.

   C.   If your application has been compiled correctly, you could be linking
   with the old version of the C-Worthy libraries.

_CDECL and _FASTCALL calling conventions

All C-Worthy routines are now declared as either _CDECL or _FASTCALL.  These
identifiers are defined in CWGEN.H.  For Microsoft C 6.0, the statements are

#define _CDECL _cdecl

#define _FASTCALL _fastcall

For Microsoft C 5.1 and Borland Turbo C, the statements are

#define _CDECL cdecl

#define _FASTCALL pascal

These statements allow C-Worthy to take advantage of special calling
conventions available with these compilers, resulting in slightly smaller and
faster code.  In addition, you may now use one of these calling conventions as
the default in your own program which uses C-Worthy.

Note that the compiler will convert symbols declared as _pascal to all
uppercase, with no prepended underscore (example: "STRING_LENGTH").  Symbols
defined as _fastcall will have '@' prepended by the compiler (example:
"@string_length"), while _cdecl symbols will have a prepended '_' (example:
"_string_length").

See "Unresolved Externals at Link Time" in this file for a description of
possible linking problems related to these naming conventions.

For additional details, see your compiler documentation.

If you need to disable this feature (for instance, if you are recompiling
C-Worthy with a compiler that does not support any of the above calling
conventions), just change the lines in CWGEN.H to read

#define _CDECL
#define _FASTCALL

Note for rebuilders of cwArchitect

As in past versions of C-Worthy, we have included library and source files to
enable the intrepid customer to modify and rebuild cwArchitect to handle
user-defined data types.  See the contents of the CWA directory for specifics.

Because of the greatly increased functionality of cwArchitect, it would no
longer function usefully within 640k unless we overlaid it.  We selected
Borland's VROOM technology to accomplish this; therefore, users who wish to
rebuild cwArchitect will need to use the Turbo C++ version of the libraries for
that task, and CWA.LIB is provided only for that compiler.  You may, of course,
continue to use the modified version of cwArchitect in support of Microsoft C
programming.

Additional toggle in cwArchitect Preferences

Because of the large amount of data associated with a menu being constructed
within cwArchitect, cwArchitect may be unable to handle menus with very many
choices.  If this occurs, cwArchitect will simply refuse to accept new menu
options in the Choices box.

If this happens to you (it should occur only with menus with very many choices,
such as a Windows-style menu with many pulldowns), select Preferences
cwArchitect from the main menu and set the Conserve Memory option to On.  This
will cause cwArchitect to save menu options to disk more frequently, resulting
in more capacity at the cost of slower performance.

As a side effect, with Conserve Memory on it is not possible to abandon changes
made to pulldowns by pressing Escape on the Choices box.

On-line reference for Microsoft PWB/Quickhelp

The file ISV.HLP in the C-Worthy Help directory contains the entire C-Worthy
reference manual in on-line form for users of Microsoft C 6.0.

Copy ISV.HLP into the directory containing your PWB help and it will be
instantly accessible from PWB or Quickhelp.  To try it, type QH and the name of
a C-Worthy function or data type - for example,

     QH menu

A reference page about C-Worthy's menu() function will appear.

Using the Palette Editor in your application

You may include cwArchitect's Palette Editor in your application, to allow
end-users to customize screen colors.

Simply call the function palette_editor() (documented in the Reference Manual)
from the menu choice you designate.

The palette editor requires two functions in the procedure table generated by
cwArchitect.  The functions are:

     text_style_action_proc
     palette_display_proc

To enter the procedures, just go to any field in a cwArchitect form that
requires a procedure name (for example, the Entry Procedure field on the Form
Information form).  Bring up the list of procedures by pressing <Grey+>, then
enter the two functions by pressing <Ins> and typing in their names.  After you
have entered the two procedures, press Escape to leave the list without
selecting a new Entry Procedure for your form.

Known Bugs

This section contains descriptions of known problems in the current version.
Where possible, we provide a workaround.

   Menu Choice Help Contexts may give wrong help.

   If you use cwArchitect to specify help contexts for menu choices, then add
   or delete contexts using H_LIB, you may get the wrong help for the menu
   choices in your application.

   cwArchitect normally stores the name of the context for each menu, form, or
   field that has a help context.  In the case of menu choices, the number is
   stored.  When help contexts are added or deleted, it is possible for some
   contexts to be re-numbered; therefore, stored numbers may no longer
   correspond to the correct help.

   The workaround for this version is to check your menu choice help contexts
   using cwArchitect after you make changes with H_LIB.  If the help context
   that appears for the option in the Option Information box is incorrect,
   change it back to the correct help context.

   Help contexts for forms, fields, and menus work correctly.

   Windows-Style Menu Pulldowns don't have Destroy Objects bit set by default.

   If you use cwArchitect to attach an object (a menu or a form) to a pulldown
   choice, the memory associated with the object won't be automatically freed
   after you access it in your application.

   To automatically free the memory, read the pulldown menu in cwArchitect,
   select Menu Information, and set the Destroy Object bit in the Control Flags
   field.

   H_LIB Write Ascii buffer pointer off by two.

   The Write Ascii function of H_LIB.EXE writes two nonsense characters at the
   start of each help context, and truncates the last two characters of the
   context.

   This does not affect the operation of the help system, only conversion from
   help files to ascii files.

   Errors occur in H_LIB when trying to open currently open file.

   If, while working in a file in H_LIB, you select File Open and enter the
   name of the currently open file, errors will occur if you immediately save
   the current file or proceed to reread the current file.

   If you enter the name of the currently open file in the File Open box by
   mistake, do not accept the "Save <filename>" prompt if it comes up.
   Instead, escape back to the main menu and save your work.

   Blank help contexts may confuse H_CONVRT.

   If you are upgrading from a prior version of C-Worthy, and your help files
   contain help contexts with no attached help, H_CONVRT may convert the files
   incorrectly.  If this occurs, simply use the HELPLIB that came with the old
   version of C-Worthy you have to attach a small amount text to each of the
   blank help contexts in your old help library.  H_CONVRT will then convert
   the file correctly.  You can then use H_LIB to make the contexts blank
   again, if you wish.
035 Turbo Pascal V3.00 1×HD
RAW 1.raw
原始 1.IMG
036 Turbo Pascal V6.00 5×DD
README [展开]
                     WELCOME TO TURBO PASCAL 6.0
                     ---------------------------

This README file contains important, last minute information about
Turbo Pascal 6.0. In addition to this file, there are several .DOC
files in the \TP\DOC directory that you should browse. The HELPME!.DOC
file answers many common Technical Support questions. The FIXES.DOC
file provides corrections to the printed documentation. And the
TVISION.DOC file gives additional information (reference and tutorial)
about programming in Turbo Vision.


TABLE OF CONTENTS
-----------------
 1.  How to Get Help
 2.  Installation
 3.  Take a Tour
 4.  Turbo Help
 5.  New Features
 6.  Turbo Vision Examples
 7.  Important Documentation Information
 8.  Compatibility Notes
 9.  Testing Expanded Memory
10.  TPCX
11.  Complete List of Files


 1. HOW TO GET HELP
-------------------
If you have any problems, please read this file, the *.DOC files in
\TP\DOC, and the Turbo Pascal manuals first. If you still have a
question and need assistance, help is available from the following
sources:

1. Type GO BPROGA on the CompuServe bulletin board system. If you are
   not a member of CompuServe, see the enclosed special offer.

2. Check with your software dealer or user group.

3. Write to us:

   Borland International
   Turbo Pascal 6.0 Technical Support
   1800 Green Hills Road
   P.O. Box 660001
   Scotts Valley, CA  95067-0001

   Please include your serial number or we will be unable to process
   your letter.

4. If you have an urgent problem and you have sent in the license
   agreement that accompanied this package, you may call the Borland
   Technical Support Department at (408) 438-5300. Please have the
   following information ready before calling:

   a. Product name and serial number from the distribution disks.

   b. Product version number. Both the IDE and the command-line
      compiler display a version number when they are executed.

   c. Computer brand, model, and the brands and model numbers of
      any additional hardware.

   d. Operating system and version number. (The version number can
      be determined by typing VER at the DOS prompt.)

   e. Contents of your AUTOEXEC.BAT and CONFIG.SYS files.

2. INSTALLATION
---------------
Use the INSTALL program to install Turbo Pascal. The files on the
distribution disks are all archived and INSTALL will de-archive them
for you. INSTALL will place them into subdirectories and automatically
create configuration files for both the command-line compiler and the
Integrated Development Environment (IDE). All further references to
directory paths in this README file assume you've used INSTALL's
default directory structure.

To start the installation, place the disk labeled INSTALL in Drive A:,
change to Drive A: and type A:INSTALL.

  A:
  INSTALL

INSTALL works on both hard disk and dual-floppy systems. If you decide
to de-archive files manually, just run the UNZIP program (found on the
INSTALLATION disk) on any .ZIP file. For example, to de-archive
TPC.EXE and TURBO.TPL from the TURBO.ZIP file on Drive A:, type:

  unzip a:turbo turbo.tpl tpc.exe

This places TURBO.TPL and TPC.EXE onto the current drive or directory
(and assumes UNZIP.EXE is already in the current drive or directory).


3. TAKE A TOUR
--------------
Take an online tour of the new Integrated Development Environment. Run
TPTOUR from the \TP directory for a 10-minute introduction to editing,
compiling and running programs in the new IDE.


4. TURBO HELP
-------------
The fastest way to get help on any Turbo Pascal feature is to use the
newly expanded online help system. Pull down the Help menu by typing
Alt-H and then browse topics (via the Contents menu) or lookup
identifiers (by selecting Topic search). If it's in Turbo Pascal, it's
in the help system! And if you use the command-line compiler and your
own editor, you can still get Turbo Help using THELP.COM. THELP is a
TSR that can be found in the \TP\UTILS directory.


5. NEW FEATURES
---------------
Turbo Pascal 6.0 offers many new features, including:

o Borland's new Integrated Developer's Environment (IDE), our new
  generation user interface that includes all the features you're used
  to, plus:

  o Mouse support.
  o Multiple overlapping windows.
  o Multi-file editor that can edit files up to 1 mbyte in size.
  o Cut, copy and paste using the Clipboard.
  o Turbo online help system that has been expanded, with
    copy-and-paste program examples for practically every function.
    Includes full reference to Turbo Vision objects, methods,
    variables and constants.
  o Conditional breakpoints.
  o CPU Register window.
  o Makes full use of EMS to enhance performance and increase
    capacity.
  o Built-in customization for color and startup options.

o Turbo Vision, an object-oriented, high-performance application
  framework and library. Programs written in Turbo Vision inherit
  everything from mouse support, dialogs, menus, overlapping windows,
  and automatic desktop management to the online help system,
  calculator, and other tools that you'll find in the \TP\TVDEMOS
  directory.

  Programming with Turbo Vision is so efficient and powerful, we used
  it to build the IDE itself!

o Built-in, inline assembler. Combine the best of both worlds: write
  assembly language instructions inside your Turbo Pascal programs.

o Turbo-driven compiler let's you build very large applications by
  using extended memory on 80286-compatible systems.

o Private fields and methods are now supported in an object
  declaration. This enables you to "enforce" encapsulation. Object
  privacy is implemented consistently with the existing data hiding
  capabilities of a unit. See P-87 in the User's Guide and P-35 in the
  Programmer's Guide for more information.

o Other enhancements include:
  o New Objects unit with better collections and streams.
  o New heap manager is faster and safer.
  o Extended syntax compiler directive {$X} allows you to
    optionally discard function results.
  o New procedure directives: far, near and assembler.
  o 80286 code generation directive {$G}.
  o Minor code generation improvements.
  o Address references in typed constant pointers.
  o Link in initialized data from .OBJs {$L}.


6. TURBO VISION EXAMPLES
------------------------
There are three different kinds of Turbo Vision example programs
provided. You'll find all the example programs from the Turbo Vision
Guide in the \TP\DOCDEMOS directory. You'll find several Turbo Vision
application support units in the \TP\TVISION directory. And you'll
find several Turbo Vision demonstration programs in the \TP\TVDEMOS
directory.

If you're trying to run one of the Turbo Vision demos from inside the
IDE, we recommend that you set Compile|Destination to disk and the
Link Buffer option to Disk (in the Options|Linker dialog box). Many of
these examples are large programs and require full memory capacity to
compile and run. Depending on your system configuration, you may need
to compile and run them from DOS. Here's how to use the command-line
compiler on TVDEMO.PAS:

  cd \tp\tvdemos
  tpc /m tvdemo

Then run TVDEMO.PAS from DOS by typing:

  tvdemo

In order to facilitate compiling these demos on a wide variety of
system configurations, we've turned off debug information {$D-} in all
Turbo Vision units. If you have a system with lots of memory and EMS,
you might want to enable the {$D} compiler directive in selected units
in \TP\TVDEMOS so you can step through the code.


7. IMPORTANT DOCUMENTATION INFORMATION
--------------------------------------
All source code examples from the Turbo Vision Guide and from the
User's Guide's chapter on object-oriented programming (chapter 4) can
be found in the \TP\DOCDEMOS directory.


8.  Compatibility notes
-----------------------

Turbo Pascal 6.0 Heap Manager
-----------------------------
The new heap manager is faster and more efficient than in Turbo Pascal
5.x. FreeMin is no longer needed and you can simply delete all
references to it in your programs. FreePtr has been replaced. If
you're relying on implementation-dependent features of the old heap
manager, you'll have to modify your code to eliminate references to
FreePtr. (If you just need to compress the heap, you can call the
SetMemTop procedure from the Turbo Vision Memory unit.) See Chapter 16
in the Programmer's Guide for more information about how the new heap
manager works.

If you are using a HeapError function, make sure it exits quickly when
passed a Size value of 0:

  function HeapError(Size: Word): Integer; far;
  begin
    if Size > 0 then
    begin
      { ... perform HeapError processing here ... }
    end;
  end;

In version 6.0, HeapError is called with a value of 0 whenever an
allocation moves the HeapPtr upwards.


Turbo Pascal 6.0 and the Toolboxes
----------------------------------
The 4.0 toolboxes all work with Turbo Pascal 6.0. (The Turbo Editor
Toolbox needs 2 easy source code modifications to work with 6.0. See
the file HELPME!.DOC in \TP\DOC for more information.)


Turbo Pascal 5.5 Object Unit
----------------------------
All the demo units and programs from Turbo Pascal 5.5 will work with
version 6.0 if you recompile them. However, we recommend that you use
the new Object unit's streams and collections in any new programs you
write. Note that you cannot use the 5.5 Objects unit with Turbo
Vision.


9. Testing Expanded Memory: EMSTEST.COM
---------------------------------------
EMSTEST.COM is in the \TP\UTILS directory and can be used to test your
Expanded Memory (EMS) hardware and software. If you have problems
using Turbo Pascal with your EMS, type EMSTEST at the DOS prompt and
follow the instructions. (To disable the IDE's EMS usage, specify /X-
on the commandline when you load TURBO. To determine how much EMS the
IDE is using, load TURBO and select GET INFO on the FILE menu.)


10. TPCX
--------
TPCX, the extended memory command-line compiler, provides more
compilation capacity by running in protected mode. It only may be used
on 80286-compatible machines (80386, 80486, etc.) that have at least 1
mbyte of extended memory.


TPCX and Ctrl-Break
-------------------
WARNING: When you run TPCX, it loads a DOS-extender kernel into memory
and then begins compiling. If you load TPCX and then want to terminate
the compilation early, do not press Ctrl-C or Ctrl-Break while the
kernel is being loaded! Instead, wait until you see the compilation
begin before interrupting. (Once you see the signon and copyright text
on the screen, it is safe to press Ctrl-C or Ctrl-Break.)

TPCX, disk caches and RAM disks
-------------------------------
Some older disk caches and RAM disks do not follow current industry
conventions for allocating extended memory and thus TPCX has no way to
detect their presence. If you've loaded a disk cache or RAM disk that
uses extended memory, you must make sure it's "well-behaved" before
running TPCX. You might do so by running TDMEM with and without these
disk utilities and comparing the amount of extended memory available.
When in doubt, remove your disk cache from extended memory before
running TPCX.EXE or TD286.EXE.


11. Complete List of Files
--------------------------
The INSTALL program will place all of the following on your hard disk
during the installation process (the floppy installation installs only
TURBO.TPL and TURBO.EXE or TPC.EXE):

  Install/Compiler
  ----------------
  INSTALL.EXE    - Installs Turbo Pascal on your system
  README.COM     - Program to display README file
  UNZIP.EXE      - De-archiving program
  TURBO.ZIP      - Archived file containing:
    TURBO.EXE    - Turbo Pascal Integrated Development Environment
    TURBO.TPL    - Resident units for Turbo Pascal
    TURBO.TP     - Configuration file for TURBO.EXE
    TPC.EXE      - Command-line version of Turbo Pascal
  README         - This file!

  Turbo Vision/Tour
  -----------------
  TVISION.ZIP    - Archived file containing Turbo Vision units:
    APP.PAS      - Application unit source
    BUFFERS.PAS  - Buffers unit source
    COLORSEL.PAS - Color installation unit source
    EDITORS.PAS  - Editors unit source
    MSGBOX.PAS   - Message box unit source
    STDDLG.PAS   - Standard dialogs unit source
    APP.TPU      - Application unit
    BUFFERS.TPU  - Buffers unit
    COLORSEL.TPU - Color installation unit
    DIALOGS.TPU  - Dialogs unit
    DRIVERS.TPU  - Drivers unit
    EDITORS.TPU  - Editors unit
    HISTLIST.TPU - History list unit
    MEMORY.TPU   - Memory management unit
    MENUS.TPU    - Menus unit
    MSGBOX.TPU   - Messagebox unit
    OBJECTS.TPU  - Objects unit
    STDDLG.TPU   - Standard dialogs unit
    TEXTVIEW.TPU - Simple text window unit
    VIEWS.TPU    - Views unit

  TVDEMOS.ZIP    - Archived file containing Turbo Vision demos:
    TVDEMO.PAS   - Turbo Vision demo application
    DEMOHELP.HLP - Compiled help file for TVDEMO
    ASCIITAB.PAS - ASCII table viewer
    CALC.PAS     - Desktop calculator
    CALENDAR.PAS - Desktop calendar (monthly viewer)
    DEMOHELP.PAS - Context file produced by running HC on DEMOHELP.TXT
    FVIEWER.PAS  - Text file viewer
    GADGETS.PAS  - Desktop gadgets (clock, heap viewer)
    HELPFILE.PAS - Help system manager
    MOUSEDLG.PAS - Mouse options dialog
    PUZZLE.PAS   - Simple brain teaser puzzle
    DEMOCMDS.PAS - Command constants for TVDEMO.PAS
    TVHC.PAS     - Help text compiler
    DEMOHELP.TXT - Help file source for TVDEMO.PAS
    TVRDEMO.PAS  - Resourced and overlaid version of TVDEMO.PAS
    MKRDEMO.BAT  - Builds TVRDEMO.EXE
    GENRDEMO.PAS - Used by TVRDMAKE.BAT to build resources for TVRDEMO.PAS
    TVEDIT.PAS   - Application that demonstrates the EDITORS unit

    TVFORMS.PAS  - Form entry and edit application
    FORMCMDS.PAS - Command constants
    DATACOLL.PAS - Data record collection
    LISTDLG.PAS  - List dialog manager
    FIELDS.PAS   - Edit/entry fields
    FORMS.PAS    - Form dialog manager
    PARTS.TVF    - Sample data file
    PHONENUM.TVF - Sample data file
    GENFORMS.BAT - Generates sample data files for TVFORMS.PAS
    GENFORM.PAS  - Used by GENFORMS.BAT
    GENPARTS.PAS - Used by GENFORMS.BAT
    GENPHONE.PAS - Used by GENFORMS.BAT

    FILEVIEW.PAS - Simple disk & file browser program
    TVTXTDMO.PAS - Demonstrates TEXTVIEW unit

    TVBGI.PAS    - Demonstrates BGI support unit (GRAPHAPP)
    GRAPHAPP.PAS - Support unit for swapping between Turbo Vision and BGI

  INTRFACE.ZIP   - Archived file containing the interface sections
                   of Turbo Vision and runtime library units
  TURBO3.ZIP     - Archived file containing TURBO3 and GRAPH3
                   compatibility units and interface documentation
  TOUR.ZIP       - Archived file containing the IDE Tour and its
                   overlay files.
  Online Help
  -----------
  HELP.ZIP       - Archived file containing:
    TURBO.HLP    - Online help data file

  BGI/Utilities
  -------------
  BGI.ZIP        - Archived file containing BGI driver and support
                   files:
    GRAPH.TPU    - Borland Graphics Interface (BGI) Graph unit
    ATT.BGI      - AT&T 6300 driver
    CGA.BGI      - CGA and MCGA driver
    EGAVGA.BGI   - EGA and VGA driver
    HERC.BGI     - Hercules mono driver
    PC3270.BGI   - 3270 PC driver
    IBM8514.BGI  - IBM 8514 driver
    GOTH.CHR     - Gothic font
    LITT.CHR     - Small font
    SANS.CHR     - Sans serif font
    TRIP.CHR     - Triplex font
    BGIDEMO.PAS  - Graph unit demo
    ARTY.PAS     - Graph unit demo
    BGILINK.PAS  - Graph unit demo
    BGIDRIV.PAS  - BGILINK.PAS demo unit
    BGIFONT.PAS  - BGILINK.PAS demo unit
    BGILINK.MAK  - BGILINK.PAS demo makefile
  UTILS.ZIP
    THELP.COM    - TSR online help utility
    TPUMOVER.EXE - Unit mover utility
    TEMC.EXE     - Turbo Editor Macro Compiler
    MAKE.EXE     - UNIX-style project management utility
    GREP.COM     - Text file search utility
    TOUCH.COM    - Changes a file's timestamp to force re-compilation
    BINOBJ.EXE   - Converts a binary data file to an .OBJ file
    EMSTEST.COM  - Expanded Memory (EMS) hardware/software diagnostic
                   utility
  DOCDEMOS.ZIP   - Archived file containing source code examples
                   from the User's Guide and Turbo Vision Guide.
  TCALC.ZIP      - Archived file contain the source code to the Turbo
                   Calc demo program
  DEMOS.ZIP      - Archived file contain numerous demo programs
  ONLINE.ZIP     - Archived file contain online documentation files:
    HELPME!.DOC  - Answers to commonly asked questions
    FIXES.DOC    - Corrections to the printed documentation
    TVISION.DOC  - Enhancements to Turbo Vision
    BUFFERS.DOC  - Documents the Turbo Vision buffers unit
    EDITORS.DOC  - Documents the Turbo Vision editors unit
    TEMC.DOC     - Turbo Editor Macro Compiler documentation
    THELP.DOC    - Turbo Help (TSR) documentation
    UTILS.DOC    - TPUMOVER, MAKE, GREP, TOUCH, BINOBJ documentation

  TPCX
  ----
  TPCX.EXE       - Extended memory, command-line version of Turbo Pascal
  TPCXINST.EXE   - Installation program for TPCX.EXE
  CPUTEST.EXE    - CPU diagnostic utility for TPCX.EXE
----------------------------------------------------------------------
037 Turbo Pascal V7.00 13×HD
README [展开]
                 Borland Pascal with Objects 7.0
                   Run-time Library Source Code
                 -------------------------------

Please read this document carefully. It is the only documentation
for the Borland Pascal with Objects run-time library source code.


TABLE OF CONTENTS
-----------------

1. System requirements
2. Run-time library source code support policy
3. Installing the run-time library source code
4. Run-time library source code overview
5. Building the run-time library
6. Modifying the run-time library source code


1. SYSTEM REQUIREMENTS
----------------------

  The Borland Pascal with Objects run-time library source code
  requires:

    o MS-DOS 3.0 or later
    o 2Mb of available extended memory
    o 80286 or later processor
    o approximately 1.6Mb of disk space (source only)
    o Borland Pascal with Objects 7.0


2. RUN-TIME LIBRARY SOURCE CODE SUPPORT POLICY
----------------------------------------------

IMPORTANT: Borland Technical Support will not answer questions or
provide any assistance relating to this product. This product is
provided "as is."

If you find a genuine problem with the source code, please send a
written description to our Technical Support Department by one of
two methods:

    1. Type GO BPROGA on the CompuServe bulletin board system for
       instant access to the Borland forums.

    2. Or you can write to:

          Borland International
          Borland Pascal RTL Source Code Technical Support
          P.O. Box 660001
          1800 Green Hills Road
          Scotts Valley, CA 95067-0001

    Please include the following information in your
    correspondence:

      A.  Product name and serial number from your original
          distribution disk.

      B.  Computer brand, model, and the brands and model numbers
          of any additional hardware.

      C.  Operating system and version number. The version number
          can be determined by typing VER at the DOS prompt.

      D.  Contents of your AUTOEXEC.BAT file.

      E.  Contents of your CONFIG.SYS file.

      F.  A complete description of the problem.


3. INSTALLING THE RUN-TIME LIBRARY SOURCE CODE
----------------------------------------------
The Borland Pascal with Objects run-time library source code
installation program, INSTALL.EXE, sets up the run-time library
source code on your system. To use INSTALL on Drive A, for
example, place the distribution disk in Drive A and type

  A:INSTALL

You can select the base directory for the run-time library by
selecting the "Run-time library directory" option, and entering
the desired path.  The install program will create several other
directories below the directory you specify.

The MAKEFILE included with the run-time library assumes that you
have installed Borland Pascal with Objects to the \BP directory,
and that you will accept the default RTL directory of \BP\RTL.
If you change either of these paths, you need to modify the
RTL's MAKEFILE accordingly. The remainder of this document
assumes that you are using the default directories.


4. RUN-TIME LIBRARY SOURCE CODE OVERVIEW
----------------------------------------
The source and object modules contained in this package
correspond to Borland Pascal with Objects 7.0.  We assume that
you own a copy of Borland Pascal with Objects 7.0 (including
Turbo Assembler 3.2), which you need to compile the run-time
library sources.

Borland Pascal with Objects' run-time library consists of source
code for the standard units, the Turbo Vision and ObjectWindows
application frameworks, and the Windows 3.1 interface files.
Sources are not supplied for following items: the 8087 emulator
part of the System unit, the assembly language parts of the
Overlay unit, the Graph unit, the .BGI or .CHR files, the GRAPH3
unit, or the TURBO3 unit.

Also included in the run-time library source code package is the
file MAKEFILE, which contains a script for building the entire
run-time library and application frameworks. In order to process
this script, you need the MAKE.EXE utility which comes with
Borland Pascal with Objects 7.0.


5. BUILDING THE RUN-TIME LIBRARY
--------------------------------
For each run-time library component, MAKEFILE defines which object
files depend on which source files, and what commands to execute
to update those object files. To do a "make" of the run-time
library source code, first make sure that MAKE.EXE, BPC.EXE, and
TASM.EXE are on your DOS PATH; then change to the \BP\RTL
directory and type:

   MAKE

MAKE will execute all necessary commands to completely update the
run-time libraries (TURBO.TPL, TPP.TPL, and TPW.TPL), Turbo
Vision, ObjectWindows, and the Windows 3.1 interface.

Don't be alarmed if MAKE doesn't assemble or compile anything;
that's just an indication that everything is up-to-date (i.e.,
all object files are more recent than their corresponding source
files).

The compiled versions of the run-time libraries and application
frameworks are written to directories under the \RTL\BIN
directory.  Below is a map of the directory structure, and what
files you should expect to find there:

  \RTL\BIN        - contains TURBO.TPL, TPP.TPL and TPW.TPL
  \RTL\BIN\TPU    - contains the .TPU files from TURBO.TPL
  \RTL\BIN\TPP    - contains the .TPP files from TPP.TPL
  \RTL\BIN\TPW    - contains the .TPW files from TPW.TPL
  \RTL\BIN\TV     - contains the Turbo Vision .TPU/.TPP files
  \RTL\BIN\OWL    - contains the ObjectWindows .TPW files
  \RTL\BIN\WIN31  - contains the Windows 3.1 .TPW files

In order to use the newly built versions of the run-time library,
you must copy the file(s) to the appropriate working directory.
By default, the .TPL files should be copied to the \BP\BIN
directory, and the Turbo Vision, ObjectWindows and Windows 3.1
interface files to the \BP\UNITS directory.


Creating a debug version of the run-time library
------------------------------------------------
You can build a version of the run-time library which contains
debug information, by using the following command line:

  MAKE -DDEBUG

Note: If you have already built the RTL, you will need to
instruct MAKE to do a build instead of a make.  Use the -B switch
to force MAKE to rebuild all files even if they are up to date:

  MAKE -B -DDEBUG

Once you have compiled the debug version, you can use the IDE's
integrated debugger (or other debugger) to trace into the RTL
itself. To allow the IDE to find RTL assembler source, use the
Options|Directories menu to set the INCLUDE directory path to
\BP\RTL and then re-compile your program.


Building parts of the run-time library
--------------------------------------
You can build specific parts of the run-time library by supplying
additional command line parameters to the MAKE utility.  For
example, you might want to rebuild only TURBO.TPL, the DOS
real-mode library, or only the ObjectWindows application
framework.  Below is a table of run-time library components you
can build separately, and the command lines to use for each:

  Component           Command line
  --------------      ---------------
  TURBO.TPL           MAKE rtldos
  TPP.TPL             MAKE rtldpmi
  TPW.TPL             MAKE rtlwin
  Turbo Vision        MAKE tv
  ObjectWindows       MAKE owl
  Win 3.1 interface   MAKE win31


6. MODIFYING THE RUN-TIME LIBRARY SOURCE CODE
---------------------------------------------
With the exception of the System unit, all RTL units are "normal"
Borland Pascal with Objects units. The System unit, however, has
a number of special properties.

The interface part of SYSTEM.PAS defines only variables and typed
constants--the remaining symbols are contained in a bootstrap
symbol table contained in the file SYSTEM.TPS. Furthermore, you
will notice a number of external procedures in the implementation
part; these "semi-hidden" procedures cannot be called directly
(since they are not exported), but the compiler knows about them.
When you call a built-in procedure or function, such as Writeln,
the compiler translates the reference into one or more calls to
hidden procedures in the System unit. Since the compiler depends
upon the hidden routines' order of declaration, it is very
important that you don't change their ordering.

We strongly recommend that you refrain from changing the System
unit's interface section, and only modify the implementation
section and the assembly language files. Very few changes are
possible in the interface section, and any change, however minor,
will cause a unit version mismatch between the System unit and
ALL OTHER UNITS compiled with the shipping RTL.



*  *  *  *  *  *
038 Turbo Pascal Developer's Guide 1×HD
README.TXT [展开]
This describes the content of the companion disk that is
included with Borland Pascal Developer's Guide. Each file on
the disk is an executable self-extracting archive. When you
run the appropriate .EXE program, the program automatically
extracts and decompresses its content into one or more text
and program source files.
The disk contains the following four subdirectories:
\SOURCE--Contains the source code to most example programs
in the text, organized by chapter. Not every chapter has
source code, so not every chapter has an .EXE archive file.
\TPR-BOOK--Contains an additional 400 pages of documentation
and sample programs that you can use. This bonus information
is not included in the text.
\MR_ED--Contains the Mister ED shareware editor. Mister ED
is a high-quality, easy-to-use, and very powerful
programmer's editor that is optimized for use in editing
program source code.
\PVGA--Contains 256-color support routines so that Turbo
Pascal programs can support the full range of a Super VGA
display. These routines require that your video card be
Paradise-compatible.
To access these files, copy the desired file to your hard
disk and then run the program. For example, to extract the
source code examples from Chapter 11, copy
\SOURCE\CHAP11.EXE to the desired subdirectory on your hard
disk. Then, run CHAP11.EXE. The program extracts and
decompresses the source code examples used in Chapter 11 of
the text. After the files are extracted, you can delete
CHAP11.EXE from your hard disk.
039 Borland Pascal Developer's Guide 1×TD
README.TXT [展开]
This describes the content of the companion disk that is
included with Borland Pascal Developer's Guide. Each file on
the disk is an executable self-extracting archive. When you
run the appropriate .EXE program, the program automatically
extracts and decompresses its content into one or more text
and program source files.
The disk contains the following four subdirectories:
\SOURCE--Contains the source code to most example programs
in the text, organized by chapter. Not every chapter has
source code, so not every chapter has an .EXE archive file.
\TPR-BOOK--Contains an additional 400 pages of documentation
and sample programs that you can use. This bonus information
is not included in the text.
\MR_ED--Contains the Mister ED shareware editor. Mister ED
is a high-quality, easy-to-use, and very powerful
programmer's editor that is optimized for use in editing
program source code.
\PVGA--Contains 256-color support routines so that Turbo
Pascal programs can support the full range of a Super VGA
display. These routines require that your video card be
Paradise-compatible.
To access these files, copy the desired file to your hard
disk and then run the program. For example, to extract the
source code examples from Chapter 11, copy
\SOURCE\CHAP11.EXE to the desired subdirectory on your hard
disk. Then, run CHAP11.EXE. The program extracts and
decompresses the source code examples used in Chapter 11 of
the text. After the files are extracted, you can delete
CHAP11.EXE from your hard disk.
040 Turbo Pascal V1.0 3×HD
README [展开]
                 Welcome to Turbo Pascal for Windows
                 -----------------------------------

This README file contains important, last minute information
about Turbo Pascal for Windows. There are three ways to program
Windows using Turbo Pascal:

  1) By simply using the WinCrt unit, you can write "standard"
     Pascal programs that do Readln, Writeln in a scrollable
     window. For more information about the WinCrt unit, refer to
     Chapter 14 in the Programmer's Guide (and see WELCOME.PAS in
     the \TPW directory).

  2) You can write Windows applications the "traditional" way.
     For examples of this style of Windows programming, see
     GENERIC.PAS and FDLGDEMO.PAS in the \TPW\WINDEMOS directory.

  3) The best way to write full-featured Windows applications is
     by using the ObjectWindows application framework.
     ObjectWindows uses object-oriented techniques to make
     Windows programming much easier and more efficient.
     ObjectWindows is described in detail in both the Windows
     Programmer's Guide and Windows Reference Guide. See
     HELLOAPP.PAS and the many other ObjectWindows demo programs
     in the \TPW\OWLDEMOS directory.

In addition to the release notes in this file, there are several
text files in the \TPW\DOC directory that you should browse. Make
sure you look at the MANUAL.TPW and MANUAL.TDW files which
provide corrections to the printed documentation.

A complete list of all files is provided in the FILELIST.DOC in
the \TPW directory.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  System Requirements
4.  Turbo Help
5.  Features
6.  Release Notes


1. HOW TO GET HELP
-------------------
If you have any problems, please read this file, the *.DOC files in
\TPW\DOC, and the Turbo Pascal manuals first. If you still have a
question and need assistance, help is available from the following
sources:

1. Type GO BPROGA on the CompuServe bulletin board system. If you are
   not a member of CompuServe, see the enclosed special offer.

2. Check with your software dealer or user group.

3. If you have an urgent problem and you have sent in the license
   agreement that accompanied this package, you may call the Borland
   Technical Support Department at (408) 438-5300. Please have the
   following information ready before calling:

   a. Product name and serial number from the distribution disks.

   b. Computer brand, model, and the brands and model numbers of
      any additional hardware.

   c. Operating system and version number. (The version number can
      be determined by typing VER at the DOS prompt. The Windows
      version number is displayed in the Program Manager's About
      Box.)

   d. Contents of your AUTOEXEC.BAT, CONFIG.SYS, TPW.INI and WIN.INI
      files.


2. INSTALLATION
---------------
Use the INSTALL program to install Turbo Pascal for Windows. The files
on the distribution disks are all archived and INSTALL will de-archive
them for you, place them into subdirectories and automatically create
configuration files for both the command-line compiler and the
Integrated Development Environment (IDE). All further references to
directory paths in this README file and in FILELIST.DOC assume you've
used INSTALL's default directory structure.

To run the installation program from Drive A type

    WIN A:INSTALL

or, if Windows is active, select the program manager's File|Run
command and type

    A:INSTALL

Install will unpack the compressed archive files (*.PAK) into
subdirectories on your hard disk. These files also can be
unpacked manually using the UNPAK.EXE utility. Your system must
have at least two megabytes of memory available to run Turbo
Pascal for Windows. Neither the Install program nor Turbo Pascal
for Windows will run in real mode.

After installation, make sure you add the Turbo Pascal for Windows
directories (e.g. C:\TPW;C:\TPW\UTILS) in your DOS path.


3. SYSTEM REQUIREMENTS
----------------------
Turbo Pascal for Windows requires at least 2 Mbytes of RAM and
runs on EGA, VGA and Hercules monochrome video adapters. Note
that dual monitors are required in order to debug your program in
SVGA mode.


4. TURBO HELP
-------------
The fastest way to get help on any Turbo Pascal or Windows API
feature is to use the online help system. Pull down the Help menu
by typing Alt-H or press F1 for more information. If it's in
Turbo Pascal for Windows, it's in the help system! TDW has its
own help system and help file as well.

5. FEATURES
-----------
Turbo Pascal for Windows has many features including:

 o Windows IDE - A Windows-hosted environment that is a full MDI
   application. You can edit and compile files in the IDE and
   then call TDW to debug your programs. (The IDE even has
   optional Wordstar compatible keys. Select the alternate
   command set on the Options|Preferences dialog.)

 o The compiler and RTL have many extensions for programming
   under Windows (see below). Refer to the demo programs in the
   \TPW\WINDEMOS directory.

 o ObjectWindows - An application framework and library that
   provides an objected-oriented layer to Windows programming.
   Use ObjectWindows' object-oriented techniques to build
   powerful Windows applications quickly. ObjectWindows (OWL)
   demo programs are in the \TPW\OWLDEMOS directory. OWL itself
   is in the \TPW\OWL directory.

 o WRT - Interactively build and edit Windows' resources with
   the Whitewater Resource Toolkit.  Create and edit icons,
   cursors, dialogs, menus, accelerators, bitmaps and strings.

 o TDW - A special version of the Turbo Debugger that debugs
   Windows 3.0 applications. TDW runs in text mode and can be
   launched from the IDE via the RUN|DEBUGGER menu.

     o uses display swapping to support single monitor debugging
     o full support for Windows DLLs
     o break on Windows messages

   See MANUAL.TDW in the \TPW\DOC directory for information about
   the various utilities that come with TDW.

 o Help system compiler - Use the help compiler to create
   Windows' online help for your programs. The help compiler
   (HC.EXE) is in the \TPW\UTILS directory. The help examples are
   in the \TPW\DOCDEMOS\HELPEX directory.

 o Other compiler and runtime library features:
   o Windows Crt unit (WinCrt) for writing "standard" programs
     that use Writeln and Readln (see \TPW\WELCOME.PAS).
   o Dynamic Method Tables
   o Full support for Windows-style null-terminated strings
   o Link in Windows resource Files ($R directive)
   o Full support for DLLs (Dynamic Link Libraries. See
     \TPW\OWLDEMOS\BITBTN.PAS).

A full suite of DOS command-line utilities, including a DOS
command-line compiler (TPCW.EXE) that produces Windows programs,
MAKE.EXE, and a Windows' resource compiler (RC.EXE) are also
provided.

6. RELEASE NOTES
----------------

Paradox Engine Sample Program
-----------------------------
 o Turbo Pascal for Windows can access Paradox data tables using
   the Paradox Engine 2.0 Dynamic Link Library (DLL). An example
   program that shows how this is done is included in the files
   \TPW\OWLDEMO\PXDEMO.PAS and \TPW\OWLDEMOS\PXACCESS.PAS. Note
   that you will need the PXENGWIN.DLL and the sample Paradox
   data files that are included with the Paradox Engine 2.0 in
   order to run PXDEMO. The Paradox Engine 2.0 is available
   separately from Borland and includes support for DOS and
   Windows programming using Turbo Pascal, Borland C and C++, and
   other languages.

WRT Release Notes
-----------------
 o If your system has plenty of memory (3 MBytes or more), you
   can speed up the WRT by inserting the following 3 lines in
   your WIN.INI file:

      [WRT]
      Static = 250
      Dynamic = 100

   This increases the memory available to the WRT and speeds up
   its editing operations.

 o Include file support - The WRT allows you to create include
   files that contain Pascal constant definitions. These files
   can be included in your TPW programs using the {$I Filename}
   directive. Note that these files can contain ONLY a const
   clause and constant declarations. No other language
   constructs, including comments, are allowed. The WRT can read
   and write these files from within the Header editor.

 o The WRT can edit resources, even if they're already bound into
   an .EXE file. Note that in this case, however, any TDW debug
   information already bound into the .EXE will be removed.


Help Compiler Release Notes
---------------------------
 o TPW provides the Windows help compiler, HC.EXE, in the
   \TPW\UTILS directory. A complete help example, HELPEX.PAS is
   located in \TPW\DOCDEMOS\HELPEX. There is also a complete
   ObjectWindows version of this example (OWLHELP.PAS). You can
   use the HELPEX.MAK file to make both examples by typing

     make -fhelpex.mak

   Make sure the command-line compiler (TPCW.EXE), the help
   compiler (HC.EXE), the resource compiler (RC.EXE) and MAKE.EXE
   are all on your DOS path. If you did not use the installation
   program's default directory structure, you'll need to modify
   HELPEX.MAK accordingly. See the printed documentation on the
   help compiler for more information about HC.EXE and
   HELPEX.PAS.


OEM vs. ANSI Character Sets
---------------------------
 o DOS text files use the OEM character set; Windows text files
   generally use the ANSI character set. The demo program,
   FCONVERT.PAS (located in \TPW\OWLDEMOS) converts data back and
   forth between these formats. The only text files that will be
   affected are those containing international characters (ASCII
   values above 128) like the umlaut, etc. Not all OEM characters
   are present in the ANSI character set, and vice versa.
   Therefore, converting between these character sets may produce
   a mapping that is not reversible. Refer to your Windows
   documentation for further information about ANSI vs. OEM
   character sets.


Turbo Pascal for DOS
--------------------
 o A DOS version of Turbo Pascal that produces DOS programs is
   also available. Contact your dealer or distributor, or call
   Borland for more information.

* * *
041 Turbo Pascal V1.5 6×HD
README [展开]
               Welcome to Turbo Pascal for Windows 1.5
               ---------------------------------------

This README file contains important, last minute information
about Turbo Pascal for Windows.

In addition to the release notes in this file, browse the
following text files in the \TPW\DOC directory:

  MANUAL.TPW, MANUAL.RW, README.RW, and README.TDW

These contain corrections to the printed documentation and other
useful information.

A complete list of all files is provided in the file FILELIST.DOC
in the \TPW directory.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  System Requirements
4.  Turbo Help
5.  Features
6.  Release Notes
7.  Windows 3.1 Redistributable license

1. HOW TO GET HELP
-------------------
If you have any problems, please read this file, the *.DOC files
in \TPW\DOC, and the Turbo Pascal manuals first. If you still
have a question and need assistance, help is available from the
following sources:

1. Type GO BORLAND on the CompuServe bulletin board system. If
   you are not a member of CompuServe, see the enclosed brochure.

2. Check with your software dealer or user group.

3. If you have an urgent problem and you have sent in the license
   agreement that accompanied this package, you may call the
   Borland Technical Support Department at (408) 461-9144. Please
   have the following information ready before calling:

   a. Product name and serial number from the distribution disks.

   b. Computer brand, model, and the brands and model numbers of
      any additional hardware.

   c. Operating system and version number. (The version number
      can be determined by typing VER at the DOS prompt. The
      Windows version number is displayed in the Program
      Manager's About Box.)

   d. Contents of your AUTOEXEC.BAT, CONFIG.SYS, TPW.INI and
      WIN.INI files.



2. INSTALLATION
---------------

NOTE: Before running the INSTALL program, you should disable any
Windows screen savers.  The install process will not complete
properly if interrupted by a screen saver.

NOTE: The installation program needs at least 1MB of free memory
to run.

Use the INSTALL program to install Turbo Pascal for Windows. The
files on the distribution disks are all archived and INSTALL will
de-archive them, place them into subdirectories and automatically
create configuration files for both the command-line compiler and
the Integrated Development Environment (IDE). All further
references to directory paths in this README file assume you've
used INSTALL's default directory structure.

To run the installation program from Drive A type

    WIN A:INSTALL

or, if Windows is active, select Program Manager's File|Run
command and type

    A:INSTALL

Install will unpack the compressed archive files (*.PAK) into
subdirectories on your hard disk. These files can also be
unpacked manually using the UNPAK.EXE utility. Your system must
have at least two megabytes of memory available to run Turbo
Pascal for Windows. Neither the Install program nor Turbo Pascal
for Windows will run in real mode.

Path Information
----------------
If you want to use the command line utilities provided with TPW
1.5, you will need to add the \TPW\UTILS directory to your DOS
path.  Other than these utilities, TPW does not require any of
its components to be listed on the DOS path.

Installing over Turbo Pascal for Windows Version 1.0
----------------------------------------------------
You can install Turbo Pascal for Windows Version 1.5 to the same
directory as version 1.0.  You can delete the Whitewater Resource
Toolkit (located in \TPW\UTILS) in favor of using Resource
Workshop, if desired.  The files you can delete are:  WRT.DAT,
WRT.EXE, WRT.FON, WRT.IMA, and WRT.HLP.  In addition, updated
versions of some Resource Workshop demos are located in the
Resource Workshop demo directory (\TPW\RWDEMOS).  You can delete
any duplicates of these newer files (located in \TPW\OWLDEMOS)
also.

Online Help under Windows 3.0
-----------------------------
In order to access online help for Turbo Pascal or Resource
Workshop, you must have the help system from Windows 3.1.  If the
Install program detects that you are running Windows 3.0, it will
attempt to rename your current versions of WINHELP.EXE and
WINHELP.HLP, and replace them with the newer Windows 3.1 versions
of the same files.  If this process fails (the Install program
will alert you if this happens), you will need to manually copy
the WINHELP.EXE and WINHELP.HLP from the \TPW directory to your
Windows directory.

Note: If you installed under Windows 3.1, these files were not
copied to your hard disk, since you already have the correct
versions in your \WINDOWS directory.


3. SYSTEM REQUIREMENTS
----------------------
Turbo Pascal for Windows requires at least 2 MB of RAM and runs
on EGA, VGA (and above) and Hercules monochrome video adapters
under Windows 3.0 and 3.1.


4. TURBO HELP
-------------
The fastest way to get help on any Turbo Pascal or Windows API
feature is to use the online help system. Pull down the Help menu
by typing Alt-H or press F1 for more information. TDW has its own
help system and help file as well.


5. FEATURES
-----------
New features in Turbo Pascal for Windows 1.5 include

  o Syntax Highlighting in the editor - Language elements (e.g.,
    reserved words, identifiers) are highlighted with selectable
    colors and fonts. Refer to the "Syntax Highlighting" help
    topic for complete documentation on this feature.

  o SpeedBar - Click an icon to perform common IDE operations,
    such as File|Open or Compile|Make. Refer to the "SpeedBar"
    help topic (Help|Search) for complete documentation on this
    feature.

  o Resource Workshop - Use Borland's award-winning tool to
    create and modify your menu, dialog, and other Windows 3.0
    and 3.1 resources.

  o Full Access to Windows 3.1 - All the TPUs, DLLs and utilities
    you need to take full advantage of the new Windows 3.1
    features including Object Linking and Embedding (OLE),
    Multimedia, TrueType fonts, PenWindows, etc.  Note: you must
    have Windows 3.1 to take advantage of these features.

  o New demo programs:

    COMMDLGS.PAS  - How to access new Common Dialogs DLL
    DDEMLCLI.PAS  - Example of a DDE client application
    DDEMLSVR.PAS  - Example of a DDE server
    MCISOUND.PAS  - Using MCI sound capabilities
                    (requires special hardware)
    OLECLI.PAS    - OLE client application
    OLESERVR.PAS  - OLE server application
    OWLPEN.PAS    - PenWindows example
                    (requires Pen or MS compatible mouse)
    PAINT.PAS     - Complete paint program
    SHELLDEM.PAS  - Win 3.1 Shell API demo
    TTDEMO.PAS    - Shows how to access new TrueType fonts

    (These programs and their accompanying files are located in
     the \TPW\OWLDEMOS directory.  PAINT.PAS is in
     \TPW\OWLDEMOS\PAINT.)

  o Easy access to Borland Window Custom Controls (BWCC) by using
    the BWCC unit provided. Place this unit in your "uses" clause
    to convert all dialogs and windows from StdDlgs and StdWnds
    to BWCC style. The BWCC unit replaces the WObjectB and
    StdDlgsB units that came with previous versions of Resource
    Workshop.

Other Turbo Pascal for Windows features include

  o Windows IDE - A Windows-hosted environment that is a full MDI
    application. You can edit and compile files in the IDE and
    then call TDW to debug your programs. (The IDE even has
    optional Wordstar compatible keys. Select the alternate
    command set on the Options|Preferences dialog.)

  o The compiler and RTL have many extensions for programming
    under Windows (see below). Refer to the demo programs in the
    \TPW\WINDEMOS directory.

  o ObjectWindows - An application framework and library that
    provides an object-oriented layer to Windows programming. Use
    ObjectWindows' object-oriented techniques to build powerful
    Windows applications quickly. ObjectWindows (OWL) demo
    programs are in the \TPW\OWLDEMOS directory. OWL itself is in
    the \TPW\OWL directory.

  o TDW - A special version of the Turbo Debugger that debugs
    Windows 3.0 and 3.1 applications. TDW runs in text mode and
    can be launched from the IDE via the RUN|DEBUGGER menu.

      o uses display swapping to support single monitor debugging
      o full support for Windows DLLs
      o break on Windows messages

    See README.TDW in the \TPW\DOC directory for the latest
    information about TDW.

  o Help system compiler - Use the help compiler to create
    Windows' online help for your programs. The help compiler
    (HC.BAT) is in the \TPW\UTILS directory. The help examples
    are in the \TPW\DOCDEMOS\HELPEX directory.

  o Other compiler and runtime library features:

    o Windows Crt unit (WinCrt) for writing "standard" programs
      that use Writeln and Readln (see \TPW\WELCOME.PAS).
    o Dynamic Method Tables
    o Full support for Windows-style null-terminated strings
    o Link in Windows resource Files ($R directive)
    o Full support for DLLs (Dynamic Link Libraries).

A full suite of DOS command-line utilities, including a DOS
command-line compiler (TPCW.EXE) that produces Windows programs,
MAKE.EXE, and a Windows resource compiler (RC.EXE) are also
provided.


6. RELEASE NOTES
----------------

Configuration Files
-------------------
  o TPW 1.5 uses the TPW.CFG to store configuration data.  This
    file is intended to be modified only through the Integrated
    Development Environment's dialog boxes.  Editing this file in
    any other way may result in loss of configuration data.


Runtime Libraries
-----------------
  o This version of the Turbo Pascal compiler is fully backwards
    compatible with version 1.0.  However, WOBJECTS.TPU has been
    updated.  Any third party units which list WOBJECTS in their
    "uses" clause will therefore report a "Unit version mismatch"
    error when compiling.  If you do not have the source code to
    these third party units, you can either: a) continue to use
    the WOBJECTS.TPU from TPW 1.0, or b) contact the author for
    an updated unit.  Units to which you do have source code can
    be recompiled using the Compile|Build option.


Integrated Development Environment
----------------------------------
  o The editor's Block Overwrite option is set to ON by default.
    This is a change from version 1.0.

  o The Tile command's shortcut key is now Shift-F4, and Cascade
    is now Shift-F5.  This is a change from version 1.0.  These
    commands have also exchanged positions on the Window menu.


Paradox Engine Sample Program
-----------------------------
  o Turbo Pascal for Windows can access Paradox data tables using
    the Paradox Engine 2.0 Dynamic Link Library (DLL). An example
    program that shows how this is done is included in the files
    \TPW\OWLDEMOS\PXDEMO.PAS and \TPW\OWLDEMOS\PXACCESS.PAS. Note
    that you will need the PXENGWIN.DLL and the sample Paradox
    data files that are included with the Paradox Engine 2.0 in
    order to run PXDEMO. The Paradox Engine 2.0 is available
    separately from Borland and includes support for DOS and
    Windows programming using Turbo Pascal, Borland C and C++,
    and other languages.


Resource Compiler
-----------------
  o Turbo Pascal for Windows 1.5 produces EXE files that will run
    under Windows 3.0 and later. Here's a sample command line
    that uses the resource compiler to produce an EXE that runs
    only under Windows 3.1

      rc -31 myprog.exe


Help Compiler
-------------

  o The Help Compiler for Windows 3.0 (HC.EXE) has been replaced
    by HC.BAT.  This batch file can run either the Windows 3.0
    Help Compiler (HC30.EXE) or the Windows 3.1 Help Compiler
    (HC31.EXE).

    By default, HC.BAT executes HC30.EXE, to produce a help file
    that works with the versions of WINHELP.EXE in either Windows
    3.0 or Windows 3.1.  To take advantage of the new Help
    features of Windows 3.1, use "-n" as the first parameter to
    HC.BAT, which will then execute HC31.EXE.

    HC.BAT, HC30.EXE, HC31.EXE are located in the utilities
    directory. To use these utilities, you'll need to have the
    \TPW\UTILS directory listed on your DOS PATH.

  o There is a complete help example, HELPEX.PAS, in the
    directory \TPW\DOCDEMOS\HELPEX. There is also a complete
    ObjectWindows version of this example (OWLHELP.PAS). You can
    use the HELPEX.MAK file to make both examples by typing

      make -fhelpex.mak

    Make sure the command-line compiler (TPCW.EXE), the help
    compiler (HC.BAT), the resource compiler (RC.EXE) and
    MAKE.EXE are all on your DOS path. If you did not use the
    installation program's default directory structure, you'll
    need to modify HELPEX.MAK accordingly.


OEM vs. ANSI Character Sets
---------------------------
  o DOS text files use the OEM character set; Windows text files
    generally use the ANSI character set. The demo program,
    FCONVERT.PAS (located in \TPW\OWLDEMOS) converts data back
    and forth between these formats. The only text files that
    will be affected are those containing international
    characters (ASCII values above 128) like the umlaut, etc. Not
    all OEM characters are present in the ANSI character set, and
    vice versa. Therefore, converting between these character
    sets may produce a mapping that is not reversible. Refer to
    your Windows documentation for further information about ANSI
    vs. OEM character sets.


Out of Date Drivers
-------------------
  o If your TPW IDE dialog boxes are unreadable, first delete
    TPW.DSK, TPW.CFG and TPW.INI files and then run the IDE
    again.  If the problem persists, contact your video card
    manufacturer for an update of your video drivers, or use the
    VGA.DRV driver supplied with Windows by Microsoft.

  o If you experience difficulty in printing from the IDE, make
    sure you have the newest Windows 3.1 printer drivers from
    Microsoft or from your printer vendor.


Using the Windows 3.1 Debugging Kernel
--------------------------------------
  o The Turbo Pascal for Windows version 1.5 IDE works under
    either the retail or the debugging kernel of Windows 3.1.
    However, you might experience problems with printing from the
    IDE under the debugging kernel.


Using Adobe Type Manager
------------------------
  o Older versions of Adobe Type Manager can cause some fonts to
    not appear in the Options|Preferences dialog box. Adobe Type
    Manager version 2.0 or later corrects this problem. You can
    contact Adobe about upgrades at 1-800-521-1976.


Turbo Pascal for DOS
--------------------
  o A DOS version of Turbo Pascal that produces DOS programs is
    also available. Contact your dealer or distributor, or call
    Borland for upgrade information at 1-800-331-0877 (U.S.
    customers only).


7. WINDOWS 3.1 REDISTRIBUTABLE LICENSE
--------------------------------------
NOTE CONCERNING USE OF MICROSOFT WINDOWS 3.1 REDISTRIBUTABLES FOR
APPLICATIONS RUNNING ON MICROSOFT WINDOWS 3.0

This Borland language product contains everything you need to
develop applications to run on the most recent version of
Microsoft Windows, version 3.1.  In some cases, you may need to
copy and include with your application one or more Microsoft
"redistributable" files from a copy of version 3.1 so that your
application will also run on version 3.0. Microsoft informs us
that you may copy the redistributable files from Microsoft
Windows 3.1 for this purpose.  If you do so, you must comply with
the conditions stated in the Borland No-Nonsense License
Statement included in this package as if the redistributable
files you copy were a part of this Borland language product.
Microsoft's redistributable files in Windows 3.1 are:
WINHELP.EXE, WINHELP.HLP, COMMDLG.DLL, DDEML.DLL, TOOLHELP.DLL,
VTD.386, OLECLI.DLL, OLESVR.DLL, VER.DLL, LZEXPAND.DLL,
EXPAND.EXE, REGLOAD.EXE, STRESS.DLL, DIB.DRV, MARKMIDI.EXE,
SHELL.DLL and PENWIN.DLL.

Note that some of these files are distributed with Turbo Pascal
for Windows 1.5 while others are part of the Windows 3.1 retail
product.

* * *
042 Turbo MASM V2.01 2×HD
README [展开]
            WELCOME TO TURBO ASSEMBLER VERSION 2.01
            ---------------------------------------

  This README file contains important information about Turbo
  Assembler Version 2.01. For the latest information about
  Turbo Assembler 2.01, the accompanying programs, and the manual,
  read this file in its entirety. The UPDATE.DOC file contains
  information on the new features in Turbo Assembler version 2.01.
  The HELPME!.DOC file answers many common Technical Support
  questions.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Important Notes
4.  Files on the Disks


1.  HOW TO GET HELP
-------------------

  If you have any problems, please read this file, HELPME!.DOC,
  UPDATE.DOC, and the Turbo Assembler manuals first. If you still
  have a question and need assistance, help is available from the
  following sources:

  1. Type GO BOR on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's online charges.

  2. Check with your local software dealer or users' group.

  3. Write to us at the following address:

     Borland International
     Turbo Assembler Technical Support
     1800 Green Hills Road
     P.O. Box 660001
     Scotts Valley, CA  95066-0001

     Please remember to include your serial number or we will be
     unable to process your letter.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement, you may call the Borland
     Technical Support Department at (408) 438-5300 Monday through
     Friday between the hours of 6 a.m. and 5 p.m. Pacific Time.
     Please have the following information ready before calling:

     a. Product name and serial number on your original
        distribution disk. Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number for Turbo
        Assembler is displayed when you run the program.

     c. Computer brand, model, and the brands and model numbers
        of any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT and CONFIG.SYS files.


2.  INSTALLATION
----------------

  You should read the rest of this README file to get further
  information about this release before you do the installation.

  The Turbo Assembler/INSTALLATION disk contains a program called
  INSTALL.EXE that will assist you with the installation of Turbo
  Assembler 2.01.

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL. You will
  be given instructions in a box at the bottom of the screen for
  each prompt. For example, if you will be installing from drive
  A:, type

    A: <Enter>
    INSTALL <Enter>

  If you have difficulty reading the text displayed by the INSTALL
  program, use the /B command-line parameter to force it to use
  black and white colors:

    a:install /B      - Forces INSTALL into BW80 mode

  Specifying the /B parameter may be necessary if you are using an
  LCD screen or a system that has a color graphics adapter and a
  monochrome or composite monitor.

  Notes for installation:

    INSTALL copies all Turbo Assembler files onto your hard disk
    and puts them into subdirectories. The default subdirectories
    are

      Turbo Assembler Directory:                   C:\TASM
      Examples Subdirectory:                       C:\TASM

  By default, all files from the distribution disks are placed in
  the Turbo Assembler Directory. If you would rather separate the
  examples programs into their own subdirectory, edit the default
  example files path before selecting START INSTALLATION.

  The Turbo Assembler distribution disks contain several files
  with a .ZIP file extension: TASM.ZIP, MANUAL.ZIP, etc. These
  files contain one or more other files that have been compressed
  and placed inside an archive. You can de-archive them yourself
  by using the UNZIP.EXE utility. For example,

    unzip /o tasm

  unpacks all the files stored in the TASM.ZIP archive into the
  current directory.

  INSTALL gives you a choice of copying the .ZIP files intact or
  de-archiving and copying all the individual files onto your hard
  disk during the installation process.


3.  IMPORTANT NOTES
-------------------

o Updated QUIRKS mode list
 
    The following apply to QUIRKS mode:
    1)  NEAR or SHORT jumps are generated even if FAR is specified,
        if source and destination segments are the same.
    2)  Type checking for some two-argument instructions is disabled,
        for example, MOV ES,BYTEPTR is allowed.
    3)  Forces an EQU to an expression with PTR in it to be a text
        macro.
    4)  Forces an EQU to an expression with : in it to be a
        text macro. 
    5)  Forces an EQU to an expression with OFFSET in it to be a text
        macro. 
    6)  Forces SHL operator to lose track of sign info.
    7)  Forces numeric equates (= or numeric EQU) to lose complex
        expression information such as segment, fixup type.
    8)  Reduces priority of GLOBAL, UNION keywords so that they may
        be overridden.
    9)  Causes warning instead of error to be generated if the second
        argument is missing in a two-argument instruction.
    10) Allows REPT without argument to be interpreted as REPT 0.
    11) Disables test for extra stuff on line after IF conditional.
 
    The following apply to QUIRKS with MASM51:
    1)  @@, @F, and @B are enabled.
    2)  Trailing language ID after NEAR or FAR in procedure
        declaration is allowed.
    3)  All procedure symbols are published globally.
    4)  :: label definitions are allowed.


o MASM compatibility pass

    Using TASM's /m command-line switch will generate a MASM-style
    second pass (compatibility pass) when the following
    constructions are present:

      o IF1 and IF2 directives
      o .ERR1 and .ERR2 directives
      o ELSEIF1 and ELSEIF2 directives
      o Forward references with IFDEF or IFNDEF
      o Forward references with the .TYPE operator
      o Recursively defined numbers (FOO=FOO+1)
      o Forward-referenced or recursively defined text macros 
          (FOO CATSTR FOO,<1>) 
      o Forward referenced macros

    The execution of the compatibility pass effectively disables
    the advantages associated with Turbo Assembler's multiple pass
    capabilities.


o Updated example files

    The WHEREIS example file has been updated to reflect some of
    the new TASM 2.01 features. In addition, IWHGLOBL.INC and
    IWHEREIS.ASM in TAEXMPL1.ZIP and GLOBALS.INC in TAEXMPL2.ZIP
    have been changed to remove the warning message "Global type
    doesn't match symbol type."


o SMART/NOSMART directives

    One of the optimizations that TASM 2.01 performs is to change
    FAR calls to an address in the same segment into a PUSH CS
    followed by a CALL NEAR.  Any FAR procedures that have an
    EXTRN definition declared inside a segment are considered to
    be in that segment, and TASM will generate the PUSH CS, CALL
    NEAR instructions for them.  To avoid this, put a procedure's
    EXTRN definition inside of a segment only if the procedure
    is actually in that segment, or put NOSMART and SMART
    directives around calls to the procedure in that segment.


o Turbo Assembler 2.01 Reference Guide corrections

    P. 187  In the section titled "Examples," make the following
    changes:

      prog.exe: myprog.asm prog2.asm include\stdio.inc
      tasm /t myprog.asm   # Recompile myprog using Turbo Assembler
      tasm /t prog2.asm # Recompile prog2 using Turbo Assembler
      tlink myprog prog2, prog

        Here are some better examples:

        prog.exe: myprog.obj prog2.obj
        tlink myprog prog2, prog

        myprog.obj: myprog.asm include\stdio.inc
        tasm myprog.asm

        prog2.obj: prog2.asm include\stdio.inc
        tasm prog2.asm

P. 196  The directives in Table D.1 should be uppercase.

P. 212  Ignore the second paragraph under the section "Turbo Link";
        TASM does not call TLINK.

 
4.  FILES ON THE DISK
---------------------

  TURBO ASSEMBLER/INSTALLATION
  ----------------------------
  INSTALL  EXE  -  Turbo Assembler installation program
  README   COM  -  Reads this README
  UNZIP    EXE  -  Program to unzip the .ZIP files
  TASM     ZIP  -  Turbo Assembler 2.01 and Utilities
    TASM     EXE  -  Turbo Assembler 2.01
    TLINK    EXE  -  Borland Turbo Linker
    MAKE     EXE  -  Program for managing projects
    GREP     COM  -  Turbo GREP program
    TCREF    EXE  -  Turbo Assembler cross-reference utility
    OBJXREF  COM  -  Object file cross-reference utility
    TOUCH    COM  -  Program that updates a file's date and time
    TLIB     EXE  -  Borland Turbo Librarian

  MANUAL   ZIP  -  Turbo Assembler 2.01 Documentation files.
    UPDATE   DOC  -  Complete description of new TASM 2.01 features
    TLINK    DOC  -  Updated information on TLINK.EXE
    GREP     DOC  -  Updated information on GREP.COM
    TCREF    DOC  -  Updated information on TCREF.EXE
    OBJXREF  DOC  -  Updated information on OBJXREF.COM
    HELPME!  DOC  -  Text file with the answers to many common
                     questions. Please read HELPME!.DOC before
                     contacting Technical Support
    BASIC    DOC  -  Interfacing Turbo Assembler with Turbo Basic
    PROLOG   DOC  -  Interfacing Turbo Assembler with Turbo Prolog

  MMACROS  ZIP  -  MASM Mode Macros
    BIOS     INC  -  Equates representing the BIOS services
    DOS      INC  -  Equates representing the DOS services
    KBD      INC  -  Equates representing the IBM PC keyboard keystrokes
    MBIOS    MAC  -  Macros used to interface with the IBM PC BIOS. 
                     MASM Mode
    MDOS     MAC  -  Macros to interface with DOS. MASM Mode
    MMACROS  MAC  -  General macros. MASM Mode

  README        -  This file


  TURBO ASSEMBLER/EXAMPLES
  ------------------------
  TAEXMPL1 ZIP  -  Ideal mode example and macros
    BIOS     INC  -  Equates representing the BIOS services
    BIOSMAC  DOC  -  Documentation for macros implemented in ?BIOS.MAC
    DEMO1    BAT  -  Batch file to make Whereis.exe
    DOS      INC  -  Equates representing the DOS services
    DOSMAC   DOC  -  Documentation for macros implemented in ?DOS.MAC
    IASCIIZS ASM  -  Routine to display an ASCIIZ string
    IBIOS    MAC  -  Ideal mode macros used to interface with the 
                     IBM PC BIOS
    IBYTECPY ASM  -  Routine that copies an array of bytes from one
                     location to another
    IDELCHAR ASM  -  Routine that deletes n characters from a
                     Pascal-style string starting at position i
    IDOS     INC  -  Type declarations used to interface with DOS
    IDOS     MAC  -  Macros to interface with DOS. Ideal Mode
    IEXECDOS ASM  -  Routines to handle calling DOS to perform a
                     command on a file
    IFINDBYT ASM  -  Routine that searches an array of bytes, looking
                     for a value; routine that returns the length of
                     an ASCIIZ string.
    IFINDFIL ASM  -  Routine that does a recursive search of a hard disk
                     looking for a file
    IFINDREP ASM  -  Routine that searches through an array of
                     bytes, replacing all instances of a value
                     with another value.
    ILOCSTRG ASM  -  Routine that searches through memory looking
                     for the nth Pascal-style string
    IMACROS  MAC  -  General macros. Ideal Mode
    IPARAM   ASM  -  Routines to return the # of command-line
                     parameters and the contents of an individual
                     parameter
    IPARSEFN ASM  -  Routine that parses a file name into Drive,
                     Path, and File spec
    ISKPWHIT ASM  -  Routine to advance a pointer past any whitespace
                     in an array of bytes
    IWHEREIS ASM  -  Main module for Whereis program
    IWHGLOBL INC  -  Global declarations for Whereis
    IWRITEPS ASM  -  Routine to display a Pascal-style string
    KBD      INC  -  Equates representing the IBM PC keyboard keystrokes
    WHEREIS  DOC  -  Documentation for Whereis file locator program
    WHEREIS  MAK  -  Make file for creating Whereis.exe using the Make
                     utility
    WHUSAGE  INC  -  Usage screen text

  TAEXMPL2 ZIP  -  FILT and standard segmentation (SHOW87) examples
    CONVERT1 INC  -  Converts from binary numbers to strings
    CONVERT2 INC  -  Converts from floating point to integer numbers
    DEMO3    BAT  -  Batch file to make Filt.exe text filter program
    DEMO2    BAT  -  Batch file to build Show87
    FILT     ASM  -  Text filter main file
    FILT     DOC  -  Documentation file for Filt.exe text filter
                     program
    FILT     MAK  -  Make file for creating Filt.exe using the
                     make utility
    FILT     RSP  -  Linker response file for linking Filt.exe
    GLOBALS  INC  -  Declares procedures and symbols needed by
                     the modules of FILT
    OBYTEHI  ASM  -  Processes the current high byte value in AL
    OBYTELOW ASM  -  Processes the current low byte value in AL
    OBYTENRM ASM  -  Processes the current normal byte value in AL
    OCMDNUM  ASM  -  Parses the command line
    OERREXIT ASM  -  Handles the printing of error messages
    OFCREATE ASM  -  Creates or truncates a file; the file is opened
                     for writing
    OFILALOC ASM  -  Allocates a read/write buffer
    OFILCLOS ASM  -  Closes a file
    OFILEFIL ASM  -  Fills a read buffer
    OFILFREE ASM  -  Deallocates a read/write buffer
    OFILREAD ASM  -  Reads from a file
    OFILWRIT ASM  -  Writes to a file
    OFLFLUSH ASM  -  Flushes the write buffer
    OFOPENR  ASM  -  Opens a file for reading
    OFOPENW  ASM  -  Opens a file for writing
    OLOCASE  ASM  -  Routine converts a letter to lowercase
    OPARSCMD ASM  -  Parses the command line
    OPRCBYTE ASM  -  Processes a byte
    OPROCDOC ASM  -  Processes an entire document, one line at a time
    OPROCLIN ASM  -  Processes a line
    OSETOPTN ASM  -  Sets options for FILT
    OSPACES  ASM  -  Stores a specified number of spaces at
                     particular location
    OSTORSPC ASM  -  Stores any currently stored spaces
    OSTORTAB ASM  -  Stores a tab character if there are any spaces
                     to compress
    OTABCLR  ASM  -  Clears all tab stops
    OTABNEXT ASM  -  Returns the number of spaces to the next tab stop
    OTABRSET ASM  -  Sets tab stops every eight columns
    OTABSET  ASM  -  Sets a tab stop at a specified column location
    OUPCASE  ASM  -  Converts a letter to uppercase
    SHOW87   ASM  -  Standard Segmentation Demo Program
    SHOW87   DOC  -  Documentation for Show87 8087 register display
                     program
    VIDEO1   INC  -  Routines to display text and control the screen
    VIDEO2   INC  -  Routines to display formatted text strings

  CHAPXMPL ZIP  -  Example Programs from the Manual

     Note: This file is not automatically unzipped when Turbo Assembler
           is installed to a hard disk. To unzip these files you
           will first need to switch to the drive and
           subdirectory containing this file and then give the
           command

           unzip /o chapxmpl

    Example         Pre-2.01 Doc        2.01 Doc
    
    HELLO    ASM  -  Pg   9             Pg   11
    HELLO2   ASM  -  Pg  13             Pg   15
    HELLOPRN ASM  -  Pg  15             Pg   17
    REVERSE  ASM  -  Pg  16             Pg   18
    ECHOCHAR ASM  -  Pg  55             Pg   72
    MODCHAR  ASM  -  Pg  80             Pg   78
    DELAY    ASM  -  Pg  88             Pg   87
    DSLYSTR  ASM  -  Pg 109             Pg  105
    USE_ES   ASM  -  Pg 110             Pg  107
    STDSEG   ASM  -  Pg 115             Pg  111
    STRINGS  ASM  -  Pg 132             Pg  127
    PRNTSTR  ASM  -  Pg 175             Pg  163
    CNTWORDS ASM  -  Pg 181             Pg  168
    MAIN     ASM  -  Pg 207             Pg  191
    SUB1     ASM  -  Pg 208             Pg  191
    PLUSONE  C    -  Pg 282             Pg  262
    SQRETBLE C    -  Pg 287             Pg  266
    SQRTBLE2 C    -  Pg 287             Pg  266
    STRINGUP C    -  Pg 293             Pg  271
    DOTOTAL  ASM  -  Pg 305             Pg  283
    SHOWTOT  C    -  Pg 306             Pg  284
    DOTOTAL2 ASM  -  Pg 307             Pg  285
    TOGLFLAG C    -  Pg 313             Pg  290
    TOGFLAG  ASM  -  Pg 313             Pg  290
    COUNT    ASM  -  Pg 327             Pg  304
    CALLCT   C    -  Pg 328             Pg  305
    COUNTLG  ASM  -  Pg 329             Pg  305
    CALCAVG  C    -  Pg 334             Pg  311
    AVERAGE  ASM  -  Pg 334             Pg  312
    SAMPLE   PAS  -  Pg 344             Pg  322
    ASMPROC  ASM  -  Pg 344             Pg  322
    TSAMPLE  PAS  -  Pg 345             Pg  323
    HEXSTR   ASM  -  Pg 357             Pg  334
    HEXTEST  PAS  -  Pg 358             Pg  336
    XCHANGE  ASM  -  Pg 360             Pg  337
    XCHANGE  PAS  -  Pg 361             Pg  338
    ENVSTR   ASM  -  Pg 362             Pg  340
    ENVTEST  PAS  -  Pg 364             Pg  342
    SCROLLH  PRO  -  Pg 387             see Prolog.doc
    SCROL    ASM  -  Pg 388             see Prolog.doc
    MYPROLOG PRO  -  Pg 391             see Prolog.doc
    MYASM    ASM  -  Pg 391             see Prolog.doc
    ADDPRO   PRO  -  Pg 393             see Prolog.doc
    ADD      ASM  -  Pg 393             see Prolog.doc
    SHOWMESS PRO  -  Pg 395             see Prolog.doc
    FROM_ASM ASM  -  Pg 395             see Prolog.doc
    SHOWNEW  PRO  -  Pg 396             see Prolog.doc
    FROM_NEW ASM  -  Pg 396             see Prolog.doc
    FUNC     PRO  -  Pg 398             see Prolog.doc
    IFUNC    ASM  -  Pg 398             see Prolog.doc
    MULT_C&D ASM  -  Pg 469             Pg  404
    PRIMES   ASM  -  Pg 521             Pg  449
    MASEXMPL ASM  -  Pg 548             Pg  476
    IDLEXMPL ASM  -  Pg 549             Pg  477

  THELP    ZIP  -  Turbo Help files for Turbo Assembler 2.01
    THELP    COM  -  Borland Turbo Help
    TASM     TAH  -  Turbo Assembler Help text file
    THELP    DOC  -  Information about THELP.COM

  TFEXMPL2 ZIP  -  Turbo Profiler example files
    PRIME0   C
    PRIME0   EXE
    PRIME1   C
    PRIME1   EXE
    PRIME2   C
    PRIME2   EXE
    PRIME3   C
    PRIME3   EXE
    PRIME4   C
    PRIME4   EXE
    PRIME5   C
    PRIME5   EXE
    PRIME6   C
    PRIME6   EXE

  TFHELP   ZIP  -  Turbo Help file for Turbo Profiler 1.01
    TFHELP   TFH


NOTE: If you have the 3.5" version of Turbo Assembler, you can
      find all files on one disk.
043 Turbo MASM V3.00 2×HD
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
044 Turbo Debug V2.01 1×HD
README [展开]
                WELCOME TO TURBO DEBUGGER 2.01
                ------------------------------

  This README file contains important information about Turbo
  Debugger Version 2.01. For the latest information about Turbo
  Debugger 2.01, the accompanying programs, and the manual, read
  this file in its entirety.


TABLE OF CONTENTS
-----------------
1.  How to Get Help
2.  Installation
3.  Notes and Restrictions
4.  About Turbo Debugger 2.01
5.  Files on the Disks


1.  HOW TO GET HELP
-------------------

  If you have any problems, please read this file, HELPME!.DOC,
  MANUAL.DOC, and the Turbo Debugger User's Guide first. If you still
  have questions and need assistance, help is available from the
  following sources:

  1. Type GO BOR on the CompuServe bulletin board system for
     instant access to the Borland forums with their libraries of
     technical information and answers to common questions.

     If you are not a member of CompuServe, see the enclosed
     special offer, and write for full details on how to receive
     a free IntroPak containing a $15 credit toward your first
     month's online charges.

  2. Check with your local software dealer or users' group.

  3. Write to us at the following address:

     Borland International
     Turbo Debugger Technical Support
     1800 Green Hills Road
     P.O. Box 660001
     Scotts Valley, CA  95066-0001

     Please remember to include your serial number or we will be
     unable to process your letter.

  4. If you have an urgent problem that cannot wait and you have
     sent in the license agreement, you may call the Borland
     Technical Support Department at (408) 438-5300 Monday through
     Friday between the hours of 6 a.m. and 5 p.m. Pacific Time.
     Please have the following information ready before calling:

     a. Product name and serial number on your original
        distribution disk. Please have your serial number ready
        or we will be unable to process your call.

     b. Product version number. The version number is displayed
        when running Turbo Debugger and pressing the <Alt - space>
        keys to bring up the System menu and choosing the
        About... option.

     c. Computer brand, model, and the brands and model numbers
        of any additional hardware.

     d. Operating system and version number. (The version number
        can be determined by typing VER at the DOS prompt.)

     e. Contents of your AUTOEXEC.BAT and CONFIG.SYS files.


2.  INSTALLATION
----------------

  You should read the rest of this README file to get further
  information about this release before you do the installation.

  The Turbo Debugger/INSTALLATION disk contains a program called
  INSTALL.EXE that will assist you with the installation of Turbo
  Debugger 2.01.

  To start the installation, change your current drive to the one
  that has the install program on it and type INSTALL. You will be
  given instructions in a box at the bottom of the screen for each
  prompt. For example, if you are installing from drive A:,
  you type

    A: <Enter>
    INSTALL <Enter>

  If you have difficulty reading the text displayed by the INSTALL
  program, use the /B command-line parameter to force it to use
  black and white colors:

    a:install /B      - Forces INSTALL into BW80 mode

  Specifying the /B parameter may be necessary if you are using an
  LCD screen or a system that has a color graphics adapter and a
  monochrome or composite monitor.

  Notes for installation:

    INSTALL copies all Turbo Debugger files onto your hard disk
    and puts them into subdirectories. The default subdirectories
    are

      Turbo Debugger Directory:                    C:\TD
      Examples Subdirectory:                       C:\TD

  By default, all files from the distribution disks are placed in
  the Turbo Debugger Directory. If you would rather separate the
  example programs into their own subdirectory, edit the default
  example files path before selecting START INSTALLATION.

  The Turbo Debugger distribution disks contain several files
  with a .ZIP file extension: TD.ZIP, TDUTIL.ZIP, TDEXMPL.ZIP,
  etc. These files contain one or more other files that have been
  compressed and placed inside an archive. You can de-archive
  them by using the UNZIP.EXE utility. For example,

    unzip /o tdexmpl

  unpacks all the files stored in the TDEXMPL.ZIP archive into the
  current directory.

  INSTALL gives you a choice of copying the .ZIP files intact or
  de-archiving and copying all the individual files onto your hard
  disk during the installation process.


3.  NOTES AND RESTRICTIONS
--------------------------
o You need to set the files directive in your CONFIG.SYS file to
  at least FILES = 10, preferably FILES = 20. If you have trouble
  doing the File|DOS Shell command or if TD can't find your source
  modules, make sure the FILES directive is in your CONFIG.SYS.

o FNxxxx variants of floating-point instructions are not
  supported in the built-in assembler in the CPU window.

o The Fxxxx instructions do not generate an FWAIT in Turbo
  Debugger. You must manually code an FWAIT before floating-point
  instructions if needed.

o A single Ctrl-Break inside a DOS function call waiting for
  console input will not interrupt DOS and return control to Turbo
  Debugger. You can either press Ctrl-Break once and then end the
  console input function by pressing Enter, or press Ctrl-Break
  twice. You will then interrupt DOS and Turbo Debugger will bring
  up a CPU Viewer showing code inside DOS. At this point, you can
  look around inside your program, but you might not be able to
  use F7 or F8 to trace or step inside DOS. You should use only F9
  at this point, possibly after setting a breakpoint inside your
  program.

o If you are using TD386, make sure that you use the -e option if
  you have loaded any TSRs or device drivers that are using
  extended memory allocated using the VDISK method. The value to
  indicate after the -e is the total amount (in Kbytes) of
  extended memory at the bottom of the extended memory area that
  is being used by other applications before loading TD386. If you
  do not use this option, TD386 may overwrite extended memory that
  is being used by the other applications. For example, if a
  disk-caching program that uses extended memory is loaded and you
  do not use the -e option, the program may write incorrect
  information to your hard disk.

  NOTE: If your programs use the INT 0x15, function 0x88 method
  to allocate memory, DO NOT count this memory, as TD386 will
  automatically leave that memory alone.

o TDINST contains two new options in the Display dialog box.
  'Floating precision' allows you to set the floating-point
  precision for variables entered in the Evaluate/Modify dialog
  box and Watches window. 'Range inspect' lets you set the
  default range for the number of elements to show in inspectors.

o You can set the way display updating is performed using either
  command line options (-do, -dp, -ds) or TDINST (selecting
  Display from its main menu shows the Display Options dialog
  box).  For both methods, user screen updating now defaults to
  Swap.  You might want to select Flip for faster operation;
  however, this option can cause display problems in some
  circumstances (usually involving memory-resident programs'
  assuming the active display page has not changed).  If you set
  user screen updating to Flip and the File|Dos shell command
  causes display problems, changing back to Swap should solve the
  problem.

o In version 2.01, TDINST contains two new options in the
  Miscellaneous Options dialog box.

    - Full Trace History enables you to set whether Turbo Debugger
      begins with full Backtrace capability.  This option defaults
      to OFF because saving Backtrace information slows execution
      of the program.  If the Full Trace History option is off,
      you can't use Run|Backtrace in Turbo Debugger until you turn
      this option on, by choosing the Full History option on the
      local menu of the Execution History window.

    - Link Speed now has a setting for 19200 baud.  New command
      line options controlling baud rate in TD and TDREMOTE are:
        -rs1      9600 baud (unchanged from version 2.0)
        -rs2     19200 baud (new)
        -rs3     38400 baud (previously -rs2)
        -rs4    115000 baud (default, previously -rs3)

o In version 2.01, the default setting for the NMI intercept is
  OFF. If you are using a hardware debugging board, you might need
  to turn this option on. Use caution, however, as several types
  of machines have incompatibilities that might cause mysterious
  crashes, possibly causing loss of data in memory or on disk. If
  you are using a Tandy 1000, we strongly recommended that you
  leave the NMI intercept off.

o For those of you using TD286.EXE, note that you may have to run
  TD286INS.EXE so that TD286 recognizes your machine
  configuration. In doing so, a file may be generated which has a
  .db extension. It is necessary that we have this file in order
  to make TD286 a better product.  You may, if you wish, upload
  this file to our BBS (Bulletin Board Service) here at Borland.
  When doing so you should call (408) 438-5300 and give our
  representatives your serial number so that they may allow you to
  upload your file.  They will help you with any questions you
  have regarding the use of our BBS. You can use TD286 with
  programs that are VCPI compliant, such as 386MAX, CEMM, & QEMM.
  However, to do so, there MUST be at least 640K of available EMS
  provided by these programs.  You can determine how much free EMS
  is available by using TDMEM.

o If you are using TD386, and you are receiving a "not enough
  memory to load symbol table" message, you need to enable EMS
  emulation for TD386.  To do this, use the -F option. For
  instance, to set up EMS for TD386 at segment 0D000h, invoke
  TD386 with "-FD000".

o If you are using an HP-Vectra, and you get an Unexpected Interrupt
  06 when trying to run TD386, you need to set an option in the
  CMOS setup.  By default the Vectra series uses a protected mode
  instruction as part of the HP-HIL.  To work around this, contact
  Hewlett Packard for instruction on disabling this function.

o If an Exception 06 occurs after running for awhile in TD386,
  your code has probably been overwritten.  An Exception 6 is
  generated by the 80386 when an illegal opcode is encountered.
  Common causes of this problem are using uninitialized pointers,
  etc.

o Exception 06, Exception 13, and Unexpected Interrupt 0D can also
  occur if you are using an old mouse driver, network driver, or
  other device driver. If you get these errors in TD386, try
  removing device drivers one at a time, starting with your mouse
  driver, then your network driver, and so on until you identify
  the offending driver. If an upgrade is available for the driver,
  see if installing it corrects the problem. The last resort is to
  remove the driver entirely, if possible.

o If stepping through your program seems extremely slow there are
  two common causes.

     - If you are using a PS/2 mouse driver, either remove the
       mouse driver or use a non-PS/2 mouse driver. Alternatively,
       you can disable the use of the mouse through the -p-
       command line option for TD.

     - Otherwise, slow execution is usually due to excessive disk
       swapping. Try using the "-y##" command line option (changes
       the size of your overlay pool) and experiment with higher
       or lower ## values.

o If you have a problem with TDCONVRT, you can get the latest
  version either from CompuServe, forum BPROGB section 7, or by
  calling the Borland Support BBS at (408)439-9181 and downloading
  TDCONVRT.ZIP. You will need the serial number from your Turbo
  Debugger installation diskette.

o If you get a "Cannot run TD386: Processor is already in V8086
  mode" error message when trying to load TD386, then you are
  using a program which uses the virtual mode of the 80386 (such
  as QEMM).  At this time, it is not possible to use these
  programs and TD386 at the same time.  If you need to use these
  memory managers, try using TD286 instead of TD386.

o If you're having problems with the mouse cursor disappearing or
  behaving erratically, you probably need an updated version of your
  mouse driver.  Because Turbo Debugger 2.01 demands more from the
  mouse driver than most previous programs, you might not experience
  a problem with your current driver until you use Turbo Debugger 2.01.

  At this time, the current major mouse driver revisions are:

        Logitech        4.10
        Genius          9.03
        Microsoft       7.04

  Contact the manufacturer of your mouse for information about
  obtaining a newer version.


4.  ABOUT TURBO DEBUGGER 2.01
-----------------------------
o Version 2.01 of Turbo Debugger has been designed to support the
  C++ language of Turbo C++. Earlier versions of Turbo C, Turbo
  Pascal, and TASM are still compatible with the new Turbo
  Debugger 2.01 as follows:

     TASM 1.0         (or later)
     Turbo C 2.0
     Turbo Pascal 5.0 (or later)

o The Utilities and Hardware Debugging appendices from the Turbo
  Debugger User's Guide have been incorporated into the
  MANUAL.DOC file on the Turbo Debugger disks.

o The file HELPME!.DOC on the distribution disks has more
  information about using the new mouse capabilities of Turbo
  Debugger 2.01.

o By default, TD286 will use all of your extended memory.  If you
  are debugging programs which use extended memory you can
  specify the amount of extended memory that TD286 is allowed to
  use by creating a file in the root directory of your current
  drive, called CONFIG.286.  This file can contain the following
  command:

     MEGS=#
       {Where # = the amount of extended memory TD286 is allowed to use}

  Also note p. 254 of the Turbo Debugger User Manual states that TD286.EXE
  uses all the same command-line options as TD.EXE.  This holds with some
  exceptions.  The -sm# option is not used by TD286.EXE since it runs in
  protected mode and automatically defines the necessary space for your
  programs spare symbol table.  The -r<X> options are not used since it
  is not necessary to perform remote debugging and the -y<#> options since
  TD286 does not use overlays.

5.  FILES ON THE DISKS
----------------------

  TURBO DEBUGGER/INSTALLATION
  ---------------------------
  INSTALL  EXE  -  Turbo Debugger installation program
  README   COM  -  Program to display README file
  UNZIP    EXE  -  Program to unpack archive programs
  TD       ZIP  -  Packed file containing the Turbo Debugger program
    TD       EXE  -  Turbo Debugger Program
    HELPME!  DOC  -  Lists answers to common questions about TD
    MANUAL   DOC  -  Explains corrections to the user's guide
  README        -  This file


  TURBO DEBUGGER/UTILITIES
  ------------------------
  TDUTIL   ZIP  -  Packed help and utility programs
    TD386    EXE  -  80386 virtual debugging
    TDCONVRT EXE  -  Converts CodeView information to Turbo Debugger format
    TDH386   SYS  -  Device driver for TD386.EXE and the 80386 debug registers
    TDMAP    EXE  -  Extracts debug information from .MAP files
    TDNMI    COM  -  TSR to clear NMI every half second
    TDPACK   EXE  -  Compresses debug information
    TDREMOTE EXE  -  Remote debugging kernel
    TDRF     EXE  -  Remote file transfer utility
    TDSTRIP  EXE  -  Strips debug information off executable files
    TDUMP    EXE  -  Dumps executable and object file information
    TDINST   EXE  -  Custom configuration program
    TDHELP   TDH  -  Turbo Debugger help file
    TDMEM    EXE  -  Displays the contents of memory
    TDDEV    EXE  -  Displays any device drivers that are loaded

  TDEXMPL  ZIP  -  Packed file that contains Turbo Debugger examples
    TCDEMO   C    -  Turbo C Program To Demonstrate Debugger Features
    TCDEMO   EXE  -  Executable File For Turbo C Program
    TCDEMOB  C    -  Turbo C Program To Demonstrate Debugger Features
    TCDEMOB  EXE  -  Executable File For Turbo C Program
    TPDEMO   PAS  -  Turbo Pascal Program To Demonstrate Debugger Features
    TPDEMO   EXE  -  Executable File For Turbo Pascal Program
    TPDEMOB  PAS  -  Turbo Pascal Program To Demonstrate Debugger Features
    TPDEMOB  EXE  -  Executable File For Turbo Pascal Program

  TFUTIL2  ZIP  -  Packed Turbo Profiler utility
    TF386    EXE  -  Utility For 80386 virtual profiling


  TURBO DEBUGGER/TD286
  --------------------
  TD286    ZIP  -  Archive containing the Protected Mode Turbo Debugger
    TD286    EXE  -  Protected Mode Turbo Debugger program
    TD286INS EXE  -  Kernel Configuration Program for Installing TD286.EXE

  TFEXMPL1  ZIP  -  Archive containing Turbo Profiler examples
    PLOST    C
    PLOST    EXE
    PLOSTPAS PAS
    PLOSTPAS EXE
    PTOLL    C
    PTOLL    EXE
    PTOLLPAS PAS
    PTOLLPAS EXE
    CALLTEST C
    CALLTEST EXE
    OVRDEMO  PAS
    OVRDEMO1 PAS
    OVRDEMO2 PAS
    OVRDEMO  EXE
    OVRDEMO  OVR

  TFEXMPL3 ZIP  -  Archive containing Turbo Profiler examples
    PRIME0PA PAS
    PRIME0PA EXE
    PRIME1PA PAS
    PRIME1PA EXE
    PRIME2PA PAS
    PRIME2PA EXE
    PRIME3PA PAS
    PRIME3PA EXE
    PRIME4PA PAS
    PRIME4PA EXE
    PRIME5PA PAS
    PRIME5PA EXE
    PRIME6PA PAS
    PRIME6PA EXE


  NOTE: If you have the 3.5" version of Turbo Debugger, the disk
      layout is as follows.
           The TURBO DEBUGGER/INSTALLATION disk is combined with
           the TURBO DEBUGGER/UTILITIES disk.

           The TURBO PROFILER/INSTALLATION disk is combined with
           the TURBO DEBUGGER/TD286 disk.
045 Turbo Debug V3.00 2×HD
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
046 Turbo Profiler V2.00 2×HD
RAW 1.raw
原始 1.IMG
047 Turbo Prolog V2.00 1×HD
RAW 1.raw
原始 1.IMG
048 FORTH V2.00 1×HD
049 MS-COBOL V4.50 6×HD
README.DOC [展开]
			     README.DOC File

		 Release Notes for the Microsoft(R) COBOL
		     Professional Development System
			       Version 4.5

		 (C) Copyright Microsoft Corporation, 1991

  This document contains essential information for version 4.5 of the
  Microsoft COBOL Professional Development System for MS-DOS(R) and the
  Microsoft Operating System/2 (MS(R) OS/2(R)). The information in this
  document is more up to date than that in the manuals.

  Microsoft improves its languages documentation at the time of reprinting,
  so some of the information in this file may already be included in your
  manuals.


  NEW FEATURES

   o  Support for Windows 3.0

      The following types of programs are supported under Windows 3.0 :

      - Existing DOS applications can be linked with a new runtime library
	(COBAPIDW) to produce an application that runs under Windows.

      - Programs that call the Windows API can now be written in 
	COBOL.  Note that if you do not have the Windows Software 
	Development Kit (SDK) and plan to create true COBOL Windows
	applications by calling the Windows API directly, you may be
	interested in using the Dialog Editor from the SDK.  The Dialog
	Editor is available through PSS by calling 637-7096.

      - Dynamic-link libraries that can be called from programs written
	in other programming languages can be written in COBOL.

   o  Intrinsic Functions

      The 1989 Addendum to the ANSI 85 COBOL Standard introduced a set of
      intrinsic functions.  These functions are fully supported in
      Microsoft COBOL 4.5. Functions are provided for Trigonometric,
      Financial, Statistical and String handling.

   o  Floating Point

      COMP-1 (32 bit Real) and COMP-2 (64 bit Real) data types have been
      added to this release of COBOL.  The syntax support is the same as
      defined for IBM OSVS COBOL and IBM VS COBOL II, and an Intel Floating
      Point Co-Processor will be used if available.

   o  Table Sort

      The SORT verb can now apply to a Data Division table, which will be
      sorted in place.

   o  EXIT PERFORM

      Control of program flow is enhanced with a new EXIT PERFORM statement.

   o  'IF 78-level DEFINED' syntax for conditional compilation

   o  Support for X/Open XPG3 COBOL definition

   o  Compilation up to 10% faster

   o  General performance improvements in generated code

   o  Save and Restore Environment enables you to save the break-points and
      monitors from one Animator session and reload them next time.

   o  Breakpoint when data value changes.

   o  Monitoring a subscripted item will follow a changing subscript.

   o  Data compression

      You can supply your own data compression routines, which can be
      tuned to the data that will be in the file.

   o  OS/2 Database Manager (SQL) enhancements

      Support for: qualified host variables; more than 100 host variables in
      one SQL statement; EXEC SQL WHENEVER SQLWARNING.

   o  Screens index program

      The Screens program will generate an index program which can be used
      for simple data entry applications.


  NEW DIRECTIVES

  These are the new compiler directives introduced in this product:

      ALIAS          Subscripts
      BROWSE         Create .SBR file
      CHECKDIV       Allow divide by zero
      DEFAULTCALLS   CALL convention
      DETECTLOCK     Detect record locks
      DLL            DLL or EXE
      FLAGAS         Show flags as errors etc.
      HIDEMESSAGE    Set message to hide
      INFORETURN     Info msg return value
      INTLEVEL       Portability level
      LOCKTYPE       Read locked records
      MF(7)          Micro Focus COBOL syntax
      SQLDB2         Mainframe compatibility
      SQLFORMAT      Define date format
      SQLPROT        Protect database
      WRITETHROUGH   Unbuffered writes
      XOPEN          X/Open


  THE COBOL SOFTWARE

  Compatibility with Previous Releases
  ====================================
  This product is generally compatible with previous releases, However,
  there are some differences. These are described in the ASCII text file,
  CBL-CMPT.DOC, supplied with this product. Before you use this product with
  programs created with earlier versions, we recommend that you read
  CBL-CMPT.DOC.


  Restrictions in the COBOL Software
  ==================================
   o  Cooperative Animation only allows 4 breakpoints to be set.

   o  In general, the components in this product support the High
      Performance File System complex filenames. However, the directory
      facility in some components will not work correctly when complex names
      are present. Also, names are restricted to a maximum of 65 characters.

   o  NODYNAM currently impacts both CALL literal and CALL identifier. To
      get mainframe-type link-edit, use NOLITLINK with DYNAM and LITLINK
      with NODYNAM when compiling to OBJ.

   o  The ANIMATOR Do command will not work with:

       -  the CHAIN verb when parameters are supplied
       -  CALL procedure-pointer
       -  CALL ....  BY VALUE
       -  CANCEL of nested program
       -  EXIT PERFORM/PARAGRAPH/SECTION
       -  intrinsic functions.

   o  The program-id of a called subprogram must be the same as the name
      used for the .OBJ file created by the compiler. Otherwise, a new copy
      will be loaded whenever the program is called.

   o  Under OS/2 you cannot redirect input to the compiler or Animator.

   o  On OS/2, any DLL that is to be loaded by the shared run-time that is
      not specified with a path must exist on a path given in the COBDIR
      environment variable, as well as on the OS/2 LIBPATH.

   o  EXTERNAL data items are limited to a maximum of 64K bytes each.

   o  The DISPLAY UPON PRINTER syntax does not work on OS/2.

   o  Any computation which has an intermediate result greater than 18
      digits may give an incorrect final result. This will affect arithmetic
      expressions such as those used in COMPUTE statements.

   o  Floating-point data is currently not supported in QuickWin applications.

   o  When interfacing with Microsoft C programs, the following C graphics
      library routines should not be called as this will corrupt the COBOL
      environment:

       -  _outtext
       -  _outmem
       -  _floodfill
       -  any routine that uses floodfill where you specify the
	  _GFILLINTERIOR option (namely _ellipse and _pie)

   o  You should not use cross-session animation on a network server since
      this can prevent cross-session animation operating on other machines
      on the network.

   o  You cannot have more than ten files in the USING or GIVING phrase of a
      MERGE statement.

   o  In VS COBOL II Releases 1 and 2, and OS/VS COBOL, the "PERFORM stack"
      is preserved between calls to a program. Thus, on re-entry to the
      program, the PERFORM state will be as it was when the program was last
      exited. This means that the code to return to the PERFORM statement
      which exists at the end of any piece of code that had been performed
      but had not exited when the program itself was exited will remain
      active, and may cause unexpected program flow when the program is
      re-entered.

      This COBOL behaves the same way as VS COBOL II Release 3 and
      initializes the PERFORM stack each time a program is called
      irrespective of the existence of the VSC2(1), VSC2(2) or OSVS
      directives.

   o  When interfacing with a C program, floating point items may only be
      passed as BY REFERENCE parameters, not as BY VALUE or BY CONTENT
      parameters.



  Restrictions in Related Software
  ================================

  Novell(R) network
  -----------------
   o  When sharing files across a Novell network, it is essential that all
      the workstations using the network are configured so that they do not
      use local buffering (CACHE DATA BUFFERING). Failure to do this may
      result in loss of data.

      Novell version 2.0A, and prior to 2.15 are all configured with local
      buffering on by default. To disable this buffering, in version 2.0A
      you require a patch from Novell. In other versions, insert the line:

	  CACHE BUFFERS = 0

      into the file SHELL.CFG on each workstation.

   o  Use of the NETBIOS option on a Novell network can cause loss of data
      on files shared across the network. (NETBIOS is activated by entering
      the NETBIOS command after connecting to the network. To avoid loss of
      data, do not use this command.)

   o  When creating multi-user programs to run on a Novell network, it is
      necessary to ensure that all disk mapping assignments are beyond E:.
      i.e. do not use assignments A: thru E:.



  DOCUMENTATION

  On-disk Documentation
  =====================
  The disks supplied with this product contain additional documentation.

  The following on-disk documents should be regarded as additional chapters,
  or additions to chapters, in your Operating Guide:

      MFCOMPAT.DOC  - Compatibility with Micro Focus COBOL
      OPTIMIZE.DOC  - Creating Optimized Programs
      TIMEOUT.DOC   - Timeout Support in ACCEPT


  Omissions and Errors
  ====================
  This section contains information that is either incorrect or missing from
  your Microsoft COBOL manuals. This information is organized according
  to the manual in which it appears. You may want to mark the changes in
  your manuals.


  Language Reference
  ------------------
  Page 5-24. There is an optional phrase within the WITH DUPLICATES phrase
  of the ALTERNATE RECORD KEY clause of the SELECT statement for an indexed
  file. Its syntax is:

      SUPPRESS  [WHEN]  { ZEROS         }
			{ SPACES        }
			{ [ALL] literal }

  SUPPRESS, ZEROS, SPACES, and ALL are all keywords.


  Page 5-32. Insert a new General Rule (13a) between rules 13 and 14:

  "If a file is defined as EXTERNAL and the operating system file name is
  assigned by means of a file name (for example, by use of either the
  DYNAMIC directive or keyword, using data-name-1 in the SELECT/ASSIGN
  statement, or using format 2 of the VALUE OF phrase of an FD), then the
  following rules should be followed:

    1) An identifier with the same name should be used to contain the
       physical file name in all programs which reference the file.

    2) Each definition of the identifier which contains the physical file
       name should also contain the EXTERNAL attribute.

  Any violation of these rules will not be detected at compile time.
  However, if any program in the run-unit violates these rules, the results
  at run time are unpredictable. That is, they may or may not execute as
  expected."


  Page 5-83. After General Rule 27, add:

  "28. The I-O phrase permits the opening of a file for both input and
  output operations (except for file with ORGANIZATION LINE SEQUENTIAL). If
  the file does not exist it will be created and used as an empty file for
  input unless NOT OPTIONAL was specified in the SELECT statement. An
  attempt to WRITE it will cause an error."

 
  Page 5-120. Add a new General Rule 13a:

  "The phrases ADVANCING PAGE and END-OF-PAGE must not both be specified in
  a single WRITE statement."


  Page 10-11, replace the entire second boxed extension with the following:

  "If a file is defined as EXTERNAL and the operating system file name is
  assigned by means of a file name (for example,  by use of either the
  DYNAMIC directive or keyword, using data-name-1 in the SELECT/ASSIGN
  statement, or using format 2 of the VALUE OF phrase of an FD), then the
  following rules should be followed:

    1) An identifier with the same name should be used to contain the
       physical file name in all programs which reference the file.

    2) Each definition of the identifier which contains the physical file
       name should also contain the EXTERNAL attribute.

  Any violation of these rules will not be detected at compile time.
  However, if any program in the run-unit violates these rules, the results
  at run time are unpredictable. That is, they may or may not execute as
  expected."


  Page 15-34, General Rule 4 of the FOREGROUND-COLOR clause. In the first
  sentence, change "contains a BACKGROUND-COLOR clause" to "contains a
  FOREGROUND-COLOR clause".


  Page 16-43, before the description of the ORD-MAX function insert a
  description of the ORD-MIN function. Its description is exactly the same
  as that of ORD-MAX, but replacing "ORD-MAX" by "ORD-MIN", "maximum" by
  "minimum" and "greatest" by "least" everywhere that they occur.


  Operating Guide
  ---------------

  General

      A number of the executable files are supplied with .PIF files for use
      with Microsoft Windows 3.0 or later. Using these .PIF files, the
      components of this system can be run as Windows applications, and can
      be added to a group for direct execution from Program Manager. From
      the DOS command line, these applications can be invoked using the
      command

       WIN prog.PIF

      where prog is the name of the relevant component.

  Chapter 9 (Packaging and Shipping Applications):

      There is a module RMSTAT.OBJ, which must be linked into your
      application if you want to get RM file statuses.

  Chapter 19 (SQL):

      There is no support for using COMP-1 items with SQL.

  Chapter 34 (Converting C Header Files with H2CPY)

      There is a utility called SPLIT78. It splits the constants file
      produced by H2CPY into several files.

      It uses the first set of characters before the first hyphen to name
      the files. For example, if OS2.78 contains:

	   78 ABB-COLOR                         VALUE H"01".
	   78 ABB-BACK-COLOR                    VALUE H"02".
	   78 ABB-MIX-MODE                      VALUE H"04".
	   78 ABB-BACK-MIX-MODE                 VALUE H"08".
	   78 ABB-SET                           VALUE H"10".
	   78 ABB-SYMBOL                        VALUE H"20".
	   78 ABB-REF-POINT                     VALUE H"40".

	   78 AF-CHAR                           VALUE H"01".
	   78 AF-VIRTUALKEY                     VALUE H"02".
	   78 AF-SCANCODE                       VALUE H"04".
	   78 AF-SHIFT                          VALUE H"08".
	   78 AF-CONTROL                        VALUE H"10".
	   78 AF-ALT                            VALUE H"20".
	   78 AF-LONEKEY                        VALUE H"40".
	   78 AF-SYSCOMMAND                     VALUE H"0100".
	   78 AF-HELP                           VALUE H"0200".

	   78 HWND-DESKTOP                      VALUE 1.
	   78 HWND-OBJECT                       VALUE 2.
	   78 HWND-TOP                          VALUE 3.
	   78 HWND-BOTTOM                       VALUE 4.
	   78 HWND-THREADCAPTURE                VALUE 5.
	   78 HWND-PARENT                       VALUE 0.

      then typing the command, "SPLIT78 OS2.78" will create 3 files:

		   ABB.78
		   AF.78
	    and    HWND.78

      The contents of OS2.78 will be unaffected. If any of the output files
      already exist they will be extended, so make sure your working
      directory contains no ".78" files other than the source file before
      you enter the command SPLIT78.

  Appendix B (Compiler Directives):

      The default for the directive CHECKDIV is NOCHECKDIV, not CHECKDIV as
      stated in the manuals.

      There is an additional directive FLAGCD. Its syntax is [NO] FLAGCD.
      When it is set, selecting flagging for the dialect SAA, ANS85, OSVS or
      VSC2 release 2 or 3 will not only flag syntax outside that dialect,
      but will also flag any directive settings that cause behavior
      incompatible with that dialect. The default is NOFLAGCD.

      There are two additional directives, HOST-NUMCOMPARE and ZWB which
      direct the results of comparing a numeric display field with SPACE,
      " " and "0". The directives are provided to ensure compatibility with
      mainframe COBOL operation. If NOHOST-NUMCOMPARE or ZWB are specified,
      the results of comparing are as now. If HOST-NUMCOMPARE and NOZWB are
      specified together, the results are the exact opposite. Hence, if
      PIC-9 contains spaces, the results of the comparison with SPACES, " "
      and "0" are:
				  PIC-9 = SPACE  PIC-9 = " "  PIC-9 = "0"
      NOZWB and HOST-NUMCOMPARE       TRUE           TRUE         FALSE
      ZWB or NOHOST-NUMCOMPARE        FALSE          FALSE        TRUE

      These results are the same independent of the setting of the F
      run-time switch.

      There is an additional generator directive SIGNCOMPARE. Its syntax is
      [NO] SIGNCOMPARE. When it is set in an EBCDIC program, it changes the
      way some numeric comparisons are performed so that, for example, an
      unsigned data item containing 1234 is equal to a signed data item
      containing +1234. This does, however, cause these comparisons to be much
      less efficient. The default is NOSIGNCOMPARE. If you are using an
      add-on product, note that the behavior in intermediate code is the
      same as you get in generated code with SIGNCOMPARE; thus with the
      default setting of this directive, the behavior in intermediate code
      and generated code is different.

      There is an error in the example given for STICKY-LINKAGE. The name
      of the data item referenced in the Procedure Division code should be
      HOURLY-RATE, not RATE.

      There is an additional directive ZEROLENGTHFALSE. Its syntax is
      [NO] ZEROLENGTHFALSE. When it is set, all class tests of zero length
      group items return false. Otherwise they all return true. The default
      is NOZEROLENGTHFALSE. For conformance to ANSI and SAA you must set
      ZEROLENGTHFALSE.

  Appendices C and D (COBOL System Library Routines)

      The following passage is relevant to both these appendices:

      The COBOL system library routines generally supply features that
      cannot be accessed using COBOL syntax, such as operating system
      functions. Under OS/2, many of the features can be accessed directly
      by calling the OS/2 API functions. However, this ties the program to
      OS/2, with DOS capability available only for those API calls which are
      part of the Family API, and only then when the program is bound.

      Parameters to the call-by-name routines can be defined anywhere
      provided they do not cross a segment boundary. (See the CHIP "16" and
      FLAG-CHIP compiler directives.) Parameters to the call-by-number
      routines must not be defined in the Linkage Section or Local-Storage
      Section of your program, and must be in the first 64K of the Data
      Division.


  Error Messages
  --------------

  Page 2-2. The reference to the E switch is only appropriate if you have
  the Toolset or Workbench add-on products. Consequently, the effect of the
  E switch is not documented in the Operating Guide as stated.


  Pocket Guide
  ------------

  Reserved Words List

      The words SECONDS is shown as a reserved word. This is incorrect.
050 MS-FORTRAN V3.13 1×HD
051 MS-FORTRAN V5.00 4×HD
README.DOC [展开]
==============================<README.DOC file>==============================


Release Notes for the Microsoft(R) FORTRAN Optimizing Compiler, Version 5.00

                (C) Copyright Microsoft Corporation, 1989

This file contains information about Version 5.00 of the Microsoft(R) FORTRAN
Optimizing Compiler and libraries for MS-DOS(R) and the Microsoft Operating
System/2 (MS(R) OS/2). It also contains information about the utility
programs supplied with this product.

This file is more up-to-date than the manuals. If the manuals conflict with
this file, you should assume this file is correct.

Microsoft updates language documentation when it is reprinted, so some of the
information in this file may already be in your manuals.

Microsoft documentation uses the term "OS/2" to refer to the OS/2 systems -- 
Microsoft Operating System/2 (MS OS/2) and IBM(R) OS/2. Similarly, the term 
"DOS" refers to both the MS-DOS and IBM Personal Computer DOS operating
systems.  The name of a specific operating system is used when it is necessary
to note features that are unique to that system.



====================<Requesting Assistance from Microsoft>===================

                              (1-206-454-2030)

When reporting problems, the following information will help Microsoft
resolve the problem quickly:

*    The compiler version number (from the logo that appears on the screen
     when you invoke the compiler with the FL command).

*    The version of DOS you are running. Use the DOS "VER" command.

*    Your system configuration (the machine, total memory, and total free
     memory at compiler execution time). Use the DOS "CHKDSK" command.

*    The command line used for compilation.

*    All object files/libraries used to link, if necessary. You need not
     use standard object files/libraries, but please specify which ones you
     did use.

Please have this information ready when you call.



=================================<Contents>==================================

This file has five parts:

     Part    Note
     ----    ----
     1       Additional information about the SETUP program
     2       Changes and additions to "Microsoft FORTRAN Reference"
     3       Changes and additions to "Microsoft FORTRAN Advanced Topics"
     4       Changes and additions to "Microsoft Editor User's Guide"
     5       Changes and additions to "Microsoft CodeView(R) and Utilities
             User's Guide"



=========================<Part 1: The SETUP Program>=========================


Disk Space for Additional Libraries
-----------------------------------

    Each library for a different combination of memory model and floating-
    point arithmetic requires up to 220K of disk space. If you intend to
    create more than one library when running SETUP, be sure to take into
    account the additional disk space required.


Standard and High-Density Disks
-------------------------------

    If you select full installation for OS/2 Protected Mode (as opposed to
    creating only protected-mode libraries), SETUP prompts you to insert
    high-density disks. See PACKING.LST on the SETUP disk for the specific
    disk layout.


File Facility Program
---------------------

    SETUP does not support the IBM File Facility utility program (or any
    similar programs that search for data files). They should be removed
    before running SETUP.



====================<Part 2: Microsoft FORTRAN Reference>====================


$NOTRUNCATE Metacommand
-----------------------

    $NOTRUNCATE is now the default. As a result, it is possible to create
    variable names, common block names, and function or subroutine names that
    are longer than the 26-character space allotted in a .LST file. If these
    identifiers do not differ in the first 26 characters, the .LST file shows
    them with the same name.


New NINT Functions
------------------

    Three NINT intrinsic functions have been added: NINT1, NINT2, and NINT4.
    These return integer values of one, two, and four bytes respectively.


The /4I2 Switch and the INT and NINT Functions
----------------------------------------------

    The length of the value returned by the INT and NINT intrinsic functions
    is determined by the integer storage switch: two bytes if /4I2 is used,
    four bytes if /4I4 (the default) is used.

    If you want these functions to return a value with a length different
    from the length set by the integer storage switch, use INT1, INT2, or
    INT4 instead of INT, and use NINT1, NINT2, or NINT4 instead of NINT.


Interaction of AUTOMATIC Variables and the Large Memory Model
-------------------------------------------------------------

    The $LARGE metacommand overrides the /4Ya switch or an AUTOMATIC command
    without specified variables. All arrays are made FAR or HUGE, rather than
    being placed on the stack.


80387 Coprocessor Instructions
------------------------------

    The run-time libraries recognize the presence of an 80387 coprocessor. If
    you are not using the alternate math package, the library uses the 80387
    SIN and COS instructions, rather than deriving sines and cosines from the
    FPTAN instruction.


Array Conformity in Functions and Subroutines
---------------------------------------------

    A formal array argument in a subroutine or function does not have to have
    the same number of dimensions or total size as the actual array argument
    passed to it. This permits the procedure to contain a formal array that
    is as large as you think you will ever need; the calling program can then
    pass any array of the same size or smaller.

    Note, however, that if the formal and actual dimensions do not match in
    quantity and size, the formal array elements do not point to the same
    memory locations as the actual array elements with the same subscripts.
    In this case, your program has to calculate the correct subscripts.


Reading and Writing RECORD (structure) Variables
------------------------------------------------

    Section 1.4 of the Microsoft FORTRAN Reference, "Records," states that
    structure variables may not be written as a whole to files. This is true
    only for formatted reads and writes. A whole structure variable may be
    written or read in unformatted form.


"Out of Memory" Error Message
-----------------------------

    This compiler error does not have an error number. It occurs when the
    FL program does not have sufficient memory, as in the following cases:

    1. You used wildcard characters to specify the files to be compiled
       (for example, FL *.FOR) and there were too many files. The exact
       number of files that can be handled depends on the amount of system
       memory.
    2. The computer did not have enough free memory. This may occur when
       other processes are running under Microsoft Windows or OS/2.


Additional Compiler Error Messages
----------------------------------

    F2399: <name> : COMMON (or EQUIVALENCE) : automatic variable illegal.

    A variable previously declared as AUTOMATIC cannot appear in a COMMON
    block or an EQUIVALENCE statement.


    F4187: Debugging information exceeds 64K - extra ignored.

    There was more debugging information than could fit in the allotted 64K
    space. The additional information (which is usually symbols) was
    discarded.


Revised Compiler Error Message
------------------------------

    The <attribute> in error message F2384 can be "common block" or
    "equivalenced," in addition to ALLOCATABLE, EXTERN, FAR, or HUGE.


Linker Path Specification
-------------------------

    The /link option does not allow you to specify the linker's path. FL
    assumes the linker is in the same directory as the compiler.


Linker EXEPACK Option
---------------------

    You can create a packed executable (.EXE) file by specifying the /E
    (EXEPACK) linker option.


Linker Error Message Corrections
--------------------------------

    error L1006   /STACK : stack size exceeds 65535 bytes

    The value given as a parameter to the /STACK option exceeds the maximum.


    error L1041   resident-name table overflow

    The resident-name table exceeds 65,534 bytes. (An entry in the resident-
    name table is made for each exported routine without a designated
    ordinal, or with an ordinal if RESIDENTNAME is given. An entry consists
    of the name plus three bytes of information. The first entry is the
    module name.)


    error L1042   nonresident-name table overflow

    The nonresident-name table exceeds 65,534 bytes. (An entry in the
    nonresident-name table is made for each exported routine which designates
    an ordinal and does not say RESIDENTNAME. The entry consists of the name
    plus three bytes of information. The first entry is the DESCRIPTION
    statement.)

    Errors L1041 and L1042 can be handled by reducing the number of exported
    routines, or by changing some of them to resident status.


Reserved File Names
-------------------

    The following file names are reserved for operating system devices. If
    one of these names is specified in the FILE= option of a FORTRAN OPEN
    statement, the connection is always to the device, even if a disk file
    with the same name already exists.

    File Name     Device
    ---------     ------

    AUX           communications port (COM1)
    COM1          communications port
    CON           keyboard and screen
    ERR           standard error output (screen)
    LINE          communications port (COM1)
    LPT1          printer
    NUL           null device
    PRN           printer (LPT1)
    USER          keyboard and screen

    You can use READ and WRITE statements (as appropriate) to access these
    devices, and CLOSE statements to disconnect them, just as you would with
    other files. FORTRAN carriage-control characters are recognized for
    these devices.

    We recommend that you not use the names of these devices for disk files. 


FL Switch Default Values
------------------------

    If no switches appear in the FL command line, the source code is compiled
    with the following defaults:

    1. The Large memory model is used
    2. The 8086/8088 instruction set is used
    3. 8087/287/387 in-line instructions are used for floating-point
       calculations
    4. Variable, subroutine, or function names are not truncated
    5. All integer and single-precision floating-point numbers are four bytes
    6. All Microsoft extensions to FORTRAN are enabled
    7. FORTRAN 66-style DO statements are disabled
    8. Full optimization is performed
    9. Debugging (extended run-time error handling) is disabled

    Any metacommands in a source code file override these defaults.


Default Stack Size
------------------

   The default stack size is 2,048 bytes (hexadecimal #800). This value can
   be changed with the /F option when running FL, or the /STACK option when
   running LINK.


Compiling Extremely Large Programs
----------------------------------

    This release has an additional disk labeled HIGH-CAPACITY COMPILER,
    which contains an alternate form of the Compiler Pass 1 named F1L.EXE.
    SETUP does not install F1L.EXE; you must copy it from the distribution
    disk if you need it.

    This compiler pass is used to compile programs that receive error message
    "F1901: program too large for memory." The F1L.EXE pass is invoked by
    adding the /B1 option to the FL command line, as follows:

        FL  /B1  <path>\F1L.EXE  <sourcefile>.FOR

    where <path> is the path (including drive and directory) where F1L.EXE
    resides, and <sourcefile> is the name of the FORTRAN source file you are
    compiling. Alternatively, you can rename F1L.EXE to F1.EXE to make the
    high-capacity version the default.



=================<Part 3: Microsoft FORTRAN Advanced Topics>=================


Page     Note
----     ----
 191     The plus sign (+) used as a continuation character in front of the
         WRITE statement should be removed.


Huge Arrays in Bound Programs under DOS
---------------------------------------

    If a huge array is initialized with DATA statements, and the program is
    bound, the array will not be properly initialized when the program is run
    under DOS or OS/2 real mode. The array is properly initialized when the
    program runs under OS/2 protected mode. This is due to a problem with the
    OS/2 version 1.1 API.LIB.

    There are two workarounds:

    1. Initialize the huge array with assignment statements.

    2. Instead of binding the program, build a "dual-mode" executable file.

       Compile and link your program for real mode. Then insert the following
       statement in your definitions file (or create a definitions file with
       this statement):

       STUB '<file>.EXE'

       where <file> is the base name of the real-mode executable file you
       created.

       Compile and link the program a second time for protected mode,
       specifying this definitions file. Be sure to select a different base
       name for the .EXE file, so that this protected-mode version will not
       overwrite the real-mode version.

       The resulting executable file now contains both a real-mode and a
       protected-mode program (rather than a single bound program). The
       appropriate program is automatically loaded at run time.


Hercules(R) Graphics Support
----------------------------

    This release of Microsoft FORTRAN supports the Hercules(R) display
    adapter. This is a brief summary of the feature:

    1. The Hercules Graphics Card, Graphics Card Plus, InColor(TM) Card, and
       100%-compatible cards are supported.

    2. Only monochrome text and graphics are supported. The screen resolution
       is 720 x 348 pixels. The text dimensions are 80 columns by 25 rows,
       with a 9 x 14 character box. The bottom two scan lines of the 25th row
       are not visible.

    3. You must load the Hercules driver MSHERC.COM before running your
       program. Place this driver in one of the directories specified in the
       system PATH environment variable, then type MSHERC at the command line
       prompt. You can also add this command to your AUTOEXEC.BAT file.

       If you have both a Hercules monochrome card and a color video card you
       should invoke MSHERC.COM with the /H (/HALF) option. The /H option
       limits the driver to a single graphics page, so that the two cards do
       not attempt to use the same memory.

       If you develop commercial applications that use graphics, you should
       include MSHERC.COM with your products. A license is not required.
       (MSHERC.COM is identical to QBHERC.COM, the Hercules driver supplied
       with Microsoft QuickBASIC 4.0 and Microsoft BASIC Compiler 6.0.)

    4. To use a mouse, you must follow the special instructions for Hercules
       cards in the Microsoft Mouse Programmer's Reference Guide. (This
       product must be ordered separately. It is not supplied with Microsoft
       FORTRAN or the Microsoft Mouse package.)

    5. In the file FGRAPH.FD, the manifest constant $HERCMONO sets the video
       mode to 720 x 348 monochrome for Hercules graphics, and the constant
       $HGC has been added in the section "videoconfig adapter values."


Calling the Graphics Libraries
------------------------------

    Unlike the FORTRAN intrinsic functions, which the linker recognizes and
    automatically searches for in the libraries, the linker has no record of
    the names of the graphics library routines. Therefore, the appropriate
    graphics library must be explicitly specified in the FL command line or
    when linking manually. You do not need to use the /link switch. For
    example, the following FL command line compiles the source file FONTS.FOR
    and links it with GRAPHICS.LIB:

        FL  FONTS.FOR  GRAPHICS.LIB


Additional Graphics Routines
----------------------------

    Two routines have been added to the graphics library.

    ScrollTextWindow (lines)
    ------------------------

    The ScrollTextWindow subroutine scrolls text within the defined text
    window. Any text or graphics outside the window is unaffected.
    ScrollTextWindow takes a single integer argument which equals the number
    of lines to be scrolled. Positive values scroll the screen up; negative
    values scroll the screen down.

    GetTextWindow (r1, c1, r2, c2)
    ------------------------------

    The GetTextWindow subroutine takes four integer arguments, which return
    the upper-left-hand and lower-right-hand corner boundaries of the current
    text window (as established by SetTextWindow). The first two are the row
    and column of the upper-left-hand corner. The second two are the row
    and column of the lower-right-hand corner.


Proper Use of Include Files with IMPLICIT NONE
----------------------------------------------

    If you use both IMPLICIT NONE and INCLUDE 'FGRAPH.FI', the correct order
    is

        INCLUDE 'FGRAPH.FI'
        IMPLICIT NONE

    Here is a sample file with two subroutines and a main program. (The
    PROGRAM Main statement is still optional but using it if you also use
    IMPLICIT NONE is clearer.) Note that INCLUDE 'FGRAPH.FI' appears once
    per file, while INCLUDE 'FGRAPH.FD' appears once in each routine.

        INCLUDE 'FGRAPH.FI'
        PROGRAM  Main
        IMPLICIT NONE
        INCLUDE 'FGRAPH.FD'
           .
           .
           .
        END


        SUBROUTINE  One
        IMPLICIT NONE
        INCLUDE 'FGRAPH.FD'
           .
           .
           .
        END


        SUBROUTINE  Two
        IMPLICIT NONE
        INCLUDE 'FGRAPH.FD'
           .
           .
           .
        END



===================<Part 4: Microsoft Editor User's Guide>===================


Version 1.02 (shipped with FORTRAN)

Autostart Mode
--------------

    If an "autostart" assignment appears in the TOOLS.INI file, the macro on
    the right of the assignment is executed automatically each time the
    editor is run. An autostart assignment takes the form

        autostart:=macro

    where macro is any valid Microsoft Editor function assignment, switch
    setting, or macro.


Stream Mode Default
-------------------

    The editor now always starts in stream mode, regardless of the mode set
    when you exited.


enterboxmode Switch
-------------------

    The enterboxmode switch, when set to "yes," starts the editor in box
    mode. Its default value is "no."


Setting Editor Modes
--------------------

    Some editor modes are set with functions that toggle the mode between two
    states, rather than setting the mode directly. For example, the boxstream
    function switches between box mode and stream mode; it does not set
    either mode directly.

    This inability to set the mode directly can cause problems if you want to
    use an autostart command to set a specific mode (for example, stream)
    every time the editor is run. There is no default status for boxstream;
    the current status is retained when you exit. Consequently, an
    autostart:=boxstream statement in TOOLS.INI toggles the existing mode,
    whether it's box or stream.

    The boxstream function returns a TRUE/FALSE flag indicating the
    function's status. In the case of boxstream, TRUE is returned if the mode
    was set to box, FALSE if it was set to stream. You can test this flag and
    use the test results to determine whether boxstream should be called a
    second time to reset the mode to the desired value.

    For example, suppose you want the editor to always start up in stream
    mode. You would enter the following autostart macro in your TOOLS.INI
    file:

        autostart:=boxstream -> boxstream

    The initial call to the boxstream function toggles the existing mode to
    either box or stream. The macro conditional -> terminates the macro if
    the returned value is FALSE. Therefore, if the initial boxstream command
    switched to stream mode, FALSE is returned and the macro terminates. If
    the initial boxstream command switched to box mode, TRUE is returned, the
    macro does not terminate, and the boxstream function is repeated to
    toggle the mode to stream. Regardless of the initial condition, you are
    now in stream mode.


Default Values for Help Switches
--------------------------------

    There are four switches that set the text colors for Help files:
    helpboldcolor, helpitalcolor, helpundcolor, and helpwarncolor. The value
    you specify for the high-order digit of these colors is automatically
    replaced by the high-order digit of the value for the fgcolor switch.
    This replacement assures that one of the Help colors always matches one
    of the foreground colors, to promote visual consistency.



===========<Part 5: Microsoft CodeView and Utilities User's Guide>===========


CodeView Support for FORTRAN Record Variables
---------------------------------------------

    CodeView 2.3 supports the display of record elements as well as ordinary
    variables. For example, if the record variable 'employee' is declared
    with the following structure

        STRUCTURE /emprec/
           INTEGER       years
           REAL          raises(10)
           CHARACTER*10  empname(3)
        END STRUCTURE

        RECORD /emprec/ employee

    the elements of 'employee' can be displayed individually. The CodeView
    command

        ?employee.raises(2)

    displays the current value of the second array member of the record
    element 'raises' of the record variable 'employee'.



ERROUT Utility
--------------

    The ERROUT utility is no longer supplied with Microsoft FORTRAN. All
    compiler, linker, and utility error messages are now directed to "stdout"
    instead of "stderr," so DOS redirection may be used to write error
    messages to any file. The header information (product name, version
    number, and Microsoft copyright notice) is still sent to "stderr."


EXEPACK Utility
---------------

    The EXEPACK utility is no longer supplied with Microsoft FORTRAN. Use the
    /E link option to create a packed executable file.


NMAKE Utility
-------------

    The MAKE utility has been replaced with the NMAKE utility. NMAKE is not
    compatible with existing MAKE files. Please read the section on NMAKE
    before running MAKE files.
052 MS-FORTRAN V5.10 6×HD
带有集成开发环境,可生成WINDOWS应用程序
README.DOC [展开]
                            README.DOC File
              Release notes for the Microsoft(R) FORTRAN
             Professional Development System, Version 5.1

This document contains release notes for version 5.1 of the Microsoft
FORTRAN Professional Development System for MS-DOS(R) and the Microsoft
Operating System/2 (MS(R) OS/2).  The information in this document is
more up-to-date than that in the manuals and the Microsoft Advisor
(online help).

Microsoft improves its languages documentation at the time of reprinting,
so some of the information in this file may already be in your manuals.



=================================< Contents >==================================


This file has 5 parts:

      Part    Contents
      ----    --------
      1       The SETUP Program
      2       FORTRAN Programming with Microsoft Windows
      3       Additions to the Microsoft FORTRAN Reference
      4       Additions to the Microsoft FORTRAN Environment and Tools
      5       Miscellaneous



=============================< The SETUP Program >=============================


Disk Space for Additional Libraries
-----------------------------------

Each library for a different combination of memory model and floating-
point arithmetic requires a minimum of 220K of disk space. If you intend
to create more than one library when running SETUP, be sure to take into
account the additional disk space required.


DECOMP.EXE
----------

The files on the FORTRAN 5.1 disks are compressed. SETUP uses a utility
called DECOMP.EXE to decompress the files before copying them to your hard
disk. Normally you should use SETUP to copy files, and they will be
decompressed automatically.

Occasionally, however, you may want to copy a file from the SETUP disks
directly to your hard disk without using the SETUP program. In that case,
you will have to use the DECOMP.EXE utility to decompress the file. The
syntax for DECOMP.EXE is:

     DECOMP filename.ab$ filename.abc

where filename.abc is the decompressed filename.

All compressed files end with $. If the filename extension is three
characters long, the final character will be replaced with a $. If the
extension is two characters, the two characters will be retained and a
$ will be placed in the third position. If the extension has one
character, then that character will be retained and followed by a $. If
there is no extension, then the filename will be given a suffix of a
single $.

For example:

     f1.ex$      ->  f1.exe
     source.do$  -> source.doc
     flib.fd$    -> flib.fd
     mulmix.c$   -> mulmix.c
     makefile.$  -> makefile



================< FORTRAN Programming with Microsoft Windows >================


Requirement for Windows Dynamic-Link Libraries
----------------------------------------------

All FORTRAN 5.1 dynamic-link libraries (DLLs) must explicitly export the
symbol WEP. To do this, the statement

     EXPORTS
         WEP

should be added to the DLL's module definition file. The WEP routine is
included in the FORTRAN 5.1 startup code. If a DLL already has a user-
defined WEP routine (for example, in a mixed-language DLL with existing C
code), the WEP routine should be renamed _WEP. The FORTRAN 5.1 startup
code will call _WEP, if present, during DLL termination. For additional
information concerning the WEP function, see the Windows 3.0 SDK
documentation.


Close All Files Before Exiting a Windows DLL
--------------------------------------------

When a Windows DLL written in FORTRAN terminates, any information
left in a file output buffer will be lost. This is a result of how DLLs
are terminated in Windows. To insure that all data is written to a 
file, explicitly CLOSE any open files in a DLL before the DLL is terminated.
One way of doing this is by adding a function to the DLL code that closes all
files, and calling this function just before the application terminates.


MessageBox Support
-------------------

FORTRAN supports two modes of MessageBox for QuickWin applications,
TASKMODAL and SYSTEMMODAL.  TASKMODAL requires that you respond to the
message box before the application will perform any further calculations;
however, all other applications currently running will not be affected.
SYSTEMMODAL requires you to respond before any application may run.


Maximizing Windows
------------------

To maximize the frame window of a QuickWin application, place the 
following statement in the WIN.INI file:

     [<appname>]
     QWINMaximized=1

where <appname> is the base name of your executable file. For example, if
the executable file is called PROGRAM.EXE, the value for <appname> would
be PROGRAM.


Windows DLLs and Subprograms with String Arguments
--------------------------------------------------

Don't pass char*(*) arguments to a subprogram residing in a Windows DLL.
This is because the runtime in the calling DLL or EXE cannot communicate
the length of the string with the runtime in the called DLL.



==============< Additions to the Microsoft FORTRAN Reference >=================

/Gt option
----------

The /Gt, or data threshold, compiler option can remedy a number of link-
time and run-time errors in FORTRAN 5.1.  The /Gt option sets a threshold
value that determines where data items are stored in memory. Data items
that are greater in size than the threshold value, and that would normally
be stored in the default data segment, or DGROUP, are moved to a far
segment of data.  This frees up more room in DGROUP for variables less
than the threshold value and for other uses, such as the program STACK
and NEAR HEAP.

Using the /Gt switch can often help eliminate the LINK errors:

     L1070: 'segment name':Segment exceeds 64K

where segment can be _BSS or _DATA

     L2041: Stack Plus Data exceeds 64K

and the run-time error:

     F6700: Heap Space Limit Exceeded

In each of these cases, too much data is being stored in DGROUP, and using
the /Gt switch may free up the required space.  See Section 7.6 of the
FORTRAN 5.1 Reference for more information.


/Oc Option
----------

When you use the /Oc (default common subexpression optimization), the
compiler examines only short sections of code for common subexpressions.
You can disable default common subexpression optimization with the /Od
option.


Special Device Names
--------------------

The list of special device names in the FORTRAN Reference Manual is
incomplete.  The complete list of special device names is:

     Device Name              Comments
     ===========              ========
     CON                      stdout, stdin
     USER                     stdout, stdin
     COM1                     COM1 port
     AUX                      COM1 alias
     LINE                     COM1 alias
     LPT1                     stdprn
     PRN                      stdprn
     LPT2
     LPT3
     LPT4
     ERR                      stderr
     NUL                      null device

Note that COM2, COM3, and COM4 are not special device names in FORTRAN 
5.1.

To access these devices, use an OPEN statement of the form:

      OPEN (10, FILE='lpt1')

For connections to LPT2 or COM2, you are also required to specify
STATUS='old'.  These two devices are not treated as standard devices
like LPT1 and COM1.  Output to these devices is of the same form as to a
file, i.e. the output is buffered and carriage control characters in 
column 1 are ignored.


/ND Option
----------

When using the /ND option in a module, you must also set the loadds
attribute on all subprograms called from outside the module.


Restrictions on String Assignment
---------------------------------

The right and left sides of a string assignment may not reference the
same memory location.  For example, the following may fail because the
generated code overlays the input as it produces the output:

     character *10 string/'0123456789'
     string = '#' // string
     write (*,*) 'string = ' string
     end


IBM VS Extensions in Microsoft FORTRAN
-----------------------------------------

Microsoft FORTRAN supports only the following IBM VS FORTRAN
extensions:

- 31-character names
- Allowing integer arrays to contain FORMAT specifications
- DO statements without specified labels
- DO WHILE statement
- END DO statement
- Equivalence of character and non character items
- Mixing of character and non-character items in COMMON
- NAMELIST
- Specification of common block items in DATA outside block data
    subprograms
- Initialization on the declaration line
- IMPLICIT NONE
- INCLUDE
- Length specification within declarations
- Noninteger array subscripts
- Z edit descriptor
- ! comments
- $ and _ in identifiers


$NOTRUNCATE Metacommand
-----------------------

$NOTRUNCATE is now the default. As a result, it is possible to create
variable names, common block names, and function or subroutine names that
are longer than the 26-character space allotted in a .LST file. If these
identifiers do not differ in the first 26 characters, the .LST file shows
them with the same name.


New NINT Functions
------------------

Three NINT intrinsic functions have been added: NINT1, NINT2, and NINT4.
These return integer values of one, two, and four bytes respectively.


The /4I2 Switch and the INT and NINT Functions
----------------------------------------------

The length of the value returned by the INT and NINT intrinsic functions
is determined by the integer storage switch: two bytes if /4I2 is used,
four bytes if /4I4 (the default) is used.

If you want these functions to return a value with a length different
from the length set by the integer storage switch, use INT1, INT2, or
INT4 instead of INT, and use NINT1, NINT2, or NINT4 instead of NINT.


80387 Coprocessor Instructions
------------------------------

The run-time libraries recognize the presence of an 80387 coprocessor. If
you are not using the alternate math package, the library uses the 80387
SIN and COS instructions, rather than deriving sines and cosines from the
FPTAN instruction.


Array Conformity in Functions and Subroutines
---------------------------------------------

A formal array argument in a subroutine or function does not have to have
the same number of dimensions or total size as the actual array argument
passed to it. This permits the procedure to contain a formal array that
is as large as you think you will ever need; the calling program can then
pass any array of the same size or smaller.

Note, however, that if the formal and actual dimensions do not match in
quantity and size, the formal array elements do not point to the same
memory locations as the actual array elements with the same subscripts.
In this case, your program has to calculate the correct subscripts.


"Out of Memory" Error Message
-----------------------------

This compiler error does not have an error number. It occurs when the FL
program does not have sufficient memory, as in the following cases:

1. You used wildcard characters to specify the files to be compiled (for
example, FL *.FOR) and there were too many files. The exact number of
files that can be handled depends on the amount of system memory.

2. The computer did not have enough free memory. This may occur when
other processes are running under Microsoft Windows or OS/2.


Additional Compiler Error Messages
----------------------------------

F2399: <name> : COMMON (or EQUIVALENCE) : automatic variable illegal.

A variable previously declared as AUTOMATIC cannot appear in a COMMON
block or an EQUIVALENCE statement.


F4187: Debugging information exceeds 64K - extra ignored.

There was more debugging information than could fit in the allotted 64K
space. The additional information (which is usually symbols) was
discarded.


Revised Compiler Error Message
------------------------------

The <attribute> in error message F2384 can be "common block" or
"equivalenced," in addition to ALLOCATABLE, EXTERN, FAR, or HUGE.


Linker Path Specification
-------------------------

The /link option does not allow you to specify the linker's path. FL
assumes the linker is in the same directory as the compiler.


FL Switch Default Values
------------------------

If no switches appear in the FL command line, the source code is compiled
with the following defaults:

1. The Large memory model is used
2. The 8086/8088 instruction set is used
3. 8087/287/387 in-line instructions are used for floating-point
   calculations
4. Variable, subroutine, or function names are not truncated
5. All integer and single-precision floating-point numbers are four bytes
6. All Microsoft extensions to FORTRAN are enabled
7. FORTRAN 66-style DO statements are disabled
8. Full optimization is performed
9. Debugging (extended run-time error handling) is disabled

Any metacommands in a source code file override these defaults.


Compiling Extremely Large Programs
----------------------------------

This release contains the file F1L.EXE, which is an alternate form of the
Compiler Pass 1 disk if you need it.

This compiler pass is used to compile programs that receive error message
"F1901: program too large for memory." The F1L.EXE pass is invoked by
 adding the /B1 option to the FL command line, as follows:

     FL  /B1  F1L.EXE  <sourcefile>.FOR

where <path> is the path (including drive and directory) where F1L.EXE
resides, and <sourcefile> is the name of the FORTRAN source file you are
compiling. Alternatively, you can rename F1L.EXE to F1.EXE to make the
high-capacity version the default.


Compiler Errors and Warnings Generated by $DEBUG and /4Yb
---------------------------------------------------------

In addition to the expanded run-time error handling and testing
that $DEBUG and /4Yb enable, there are a number of compiler errors and
warnings that appear if $DEBUG or /4Yb are used. They are:

Error F2367: INTEGER : range error
Error F2533: lower substring bound exceeds upper bound
Error F2534: upper substring bound exceeds string length
Error F2535: lower substring bound not positive
Error F2536: subscript out of range
Warning F4501: subscript out of range (array argument)



======< Additions to the Microsoft FORTRAN Environment and Tools >======


Displaying FORTRAN Arrays in CodeView
-------------------------------------

CodeView allows you to expand arrays and examine the individual elements
of an array.  This feature, however, only works on one-dimensional arrays.
Arrays of two dimensions or more cannot be expanded in CodeView.

Another limitation of CodeView is that it cannot keep track of elements
of HUGE arrays beyond the first 64K, or first segment, of the array.  An
attempt to display an array element beyond the first segment will fail to
give the proper value.


TXTONLY.OBJ
-----------

TXTONLY.OBJ is useful for programs that may use _clearscreen, _outtext,
_settextcolor, _settextwindow, and so on, but do not use graphics. If you
have a program that never has to work in or switch into graphics modes and
never changes the palette, linking TXTONLY.OBJ into your DOS .EXE file (in
the .OBJ field) will save about 12K of .EXE size.



================================< Miscellaneous >=============================

APPEND.EXE
----------

Do not use the APPEND.EXE utility (shipped with DOS 4.01 and later
versions) with FORTRAN applications.  FORTRAN 5.1 does not set the
APPEND path and the results are unpredictable.
053 Science & Eng.Tools F/Fortran 1×HD
README.TXT [展开]
To: Jack Riegel
From: Lisa Papineau

Here's another new disk.  Give this one a try.  Like I said in our phone
conversation I've made changes to the routines:

- RoundAxes       \ Rounding errors
- ConvertNum      /
- OneTimeInit     - Font Path
- All routines which uses allocate/dealloc now check ierr for non zero


I eliminated all of the Status Report stuff from the 3 *.out files you
sent me.  I've included  3 programs which I used to test your data,
test.for, test2.for and test3.for on your original disk.  Be sure to
set stdhdr.for to maxr = 1350 or so before compiling.

Give this a try and let me know if any problems persist.
RAW 1.raw
原始 1.IMG
054 NDT FORTRAN/386 V2.10 3×HD
README.DOC [展开]

                               NDP C-386
                              Version 2.1


Overview

    Version 2.1 of the NDP compilers provide all the functionality of
    the previous release (v2.0.8), with the addition of increased
    compatibility with the new C standard ANSI X3.159-1989 and with
    Microsoft C Version 5.0.

    NDP Fortran and Pascal users should note that, although there are no
    major changes that impact those compilers, there are bug fixes and
    other minor enhancements meant to increase the reliability of the
    entire line of NDP compilers.

    This file also clarifies the use of binary file I/O as it applies to
    all the compilers.

    
Installation
     
    For DOS users, a utility simplifies the installation process. To use
    it, insert Disk 1 into drive A, type "A:INSTALL", press <Enter>, and
    follow the instructions that appear on the screen.

    You can also install the compiler using the directions in Chapter 1
    of the User's Manual.  It is recommended that you install it in a
    new directory (e.g., \NDP21), to facilitate the compilation and
    testing of existing source code.


ANSI Compatibility (C only)

    This version of the compiler is intended to be compatible with ANSI
    X3.159-1989.  This compatiblity is achieved with library LIBA.LIB
    and changes to header files.  There are two incompatible INCLUDE
    directories. \INCL contains the standard NDP include files; \INCL_A
    contains header files that support the ANSI standard.  These
    directories contain files which may share a common name but which
    have different contents.  Copying these files into the same
    directory may cause problems.

    To compile a program written to the ANSI standard, do the following:

        1. Set the INCLUDE environment variable to be equal to the name
           of the directory where the ANSI include files are installed.
           For example:

                set include=c:\ndp21\ansi

        2. Use the -ansi switch when compiling.  For example:

                cc hi.c -ansi

    The ANSI compatible keywords supported in this release are:
    
        auto                extern                  sizeof
        break               float                   static
        case                for                     struct
        char                goto                    switch
        const               if                      typedef
        continue            int                     union
        default             long                    unsigned
        do                  register                void
        double              return                  volatile
        else                short                   while
        enum                signed

    The functions and/or macros that provide ANSI compatibility:

        Function   Header file          Function   Header file
        --------   -----------          --------   -----------
        abort      (stdlib.h)           mbstowcs   (stdlib.h)
        abs        (stdlib.h)           mbtowc     (stdlib.h)
        acos       (math.h)             memchr     (string.h)
        asctime    (time.h)             memcmp     (string.h)
        asin       (math.h)             memcpy     (string.h)
        assert     (assert.h)           memmove    (string.h)
        atan       (math.h)             memset     (string.h)
        atan2      (math.h)             mktime     (time.h)
        atexit     (stdlib.h)           modf       (math.h)
        atof       (stdlib.h)           perror     (stdio.h)
        atoi       (stdlib.h)           pow        (math.h)
        atol       (stdlib.h)           printf     (stdio.h)
        bsearch    (stdlib.h)           putc       (stdio.h)
        calloc     (stdlib.h)           putchar    (stdio.h)
        ceil       (math.h)             puts       (stdio.h)
        clearerr   (stdio.h)            qsort      (stdlib.h)
        clock      (time.h)             raise      (signal.h)
        cos        (math.h)             rand       (stdlib.h)
        cosh       (math.h)             realloc    (stdlib.h)
        ctime      (time.h)             remove     (stdio.h)
        difftime   (time.h)             rename     (stdio.h)
        div        (math.h)             rewind     (stdio.h)
        exit       (stdlib.h)           scanf      (stdio.h)
        exp        (math.h)             setbuf     (stdio.h)
        fabs       (math.h)             setjmp     (setjmp.h)
        fclose     (stdio.h)            setlocale  (locale.h)
        feof       (stdio.h)            setvbuf    (stdio.h)
        ferror     (stdio.h)            signal     (signal.h)
        fflush     (stdio.h)            sin        (math.h)
        fgetc      (stdio.h)            sinh       (math.h)
        fgetpos    (stdio.h)            sprintf    (stdio.h)
        fgets      (stdio.h)            sqrt       (math.h)
        floor      (math.h)             srand      (stdlib.h)
        fmod       (math.h)             sscanf     (stdio.h)
        fopen      (stdio.h)            strcat     (string.h)
        fprintf    (stdio.h)            strchr     (string.h)
        fputc      (stdio.h)            strcmp     (string.h)
        fputs      (stdio.h)            strcoll    (string.h)
        fread      (stdio.h)            strcpy     (string.h)
        free       (stdlib.h)           strcspn    (string.h)
        freopen    (stdio.h)            strerror   (string.h)
        frexp      (math.h)             strftime   (time.h)
        fscanf     (stdio.h)            strlen     (string.h)
        fseek      (stdio.h)            strncat    (string.h)
        fsetpos    (stdio.h)            strncmp    (string.h)
        ftell      (stdio.h)            strncpy    (string.h)
        fwrite     (stdio.h)            strpbrk    (string.h)
        getc       (stdio.h)            strrchr    (string.h)
        getchar    (stdio.h)            strspn     (string.h)
        getenv     (stdlib.h)           strstr     (string.h)
        gets       (stdio.h)            strtod     (stdlib.h)
        gmtime     (time.h)             strtok     (string.h)
        isalnum    (ctype.h)            strtol     (stdlib.h)
        isalpha    (ctype.h)            strtoul    (stdlib.h)
        iscntrl    (ctype.h)            strxfrm    (string.h)
        isdigit    (ctype.h)            system     (stdlib.h)
        isgraph    (ctype.h)            tan        (math.h)
        islower    (ctype.h)            tanh       (math.h)
        isprint    (ctype.h)            time       (time.h)
        ispunct    (ctype.h)            tmpfile    (stdio.h)
        isspace    (ctype.h)            tmpnam     (stdio.h)
        isupper    (ctype.h)            tolower    (ctype.h)
        isxdigit   (ctype.h)            toupper    (ctype.h)
        labs       (stdlib.h)           ungetc     (stdio.h)
        ldexp      (math.h)             va_arg     (stdarg.h)
        ldiv       (stdlib.h)           va_end     (stdarg.h)
        localeconv (locale.h)           va_start   (stdarg.h)
        localtime  (time.h)             vfprintf   (stdio.h,stdarg.h)
        log        (math.h)             vprintf    (stdio.h,stdarg.h)
        log10      (math.h)             vsprintf   (stdio.h,stdarg.h)
        longjmp    (setjmp.h)           wcstombs   (stdlib.h)
        malloc     (stdlib.h)           wctomb     (stdlib.h)
        mblen      (stdlib.h)


Microsoft C compatibility  (C only)

    Version 2.1 of the compiler is intended to be compatible with
    Microsoft C v5.0.  This compatiblity is achieved with a new library
    and changes to header files, as follows:

        LIBMS    LIB    Microsoft compatible functions library
        MALLOC   H      new header file for MS compatibility
        DOS      H      altered header file
        FLOAT    H      new header file for MS compatibility
        STDLIB   H      altered header file
        STDIO    H      altered header file

    The following is a list of the new functions and macros contained in
    the libarary and header files.  Items followed by a header file name
    are macros; items follows by "n/i" will be implemented in a later
    release.

        alloca                 eof                    _nfree (malloc.h)
        bdos                   fcloseall              _nheapchk (malloc.h)
        _bios_disk             _ffree (malloc.h)      _nheapset (malloc.h)
        _bios_equiplist        fgetchar (stdio.h)     _nheapwalk (malloc.h)
        _bios_keybrd           _fheapchk (malloc.h)   _nmalloc (malloc.h)
        _bios_memsize          _fheapset (malloc.h)   _nmsize (malloc.h)
        _bios_printer          _fheapwalk (malloc.h)  onexit (stdlib.h)
        _bios_serialcom        fieeetomsbin (n/i)     putch
        _bios_timeofday        filelength             putenv
        cgets                  flushall               rmdir
        chdir                  _fmalloc (malloc.h)    rmtmp (n/i)
        chmod                  fmsbintoieee (n/i)     _rotl
        chsize                 _fmsize (malloc.h)     _rotr
        _clear87 (float.h)     _fpreset               _searchenv
        _control87 (float.h)   fputchar (stdio.h)     segread
        cprintf                _freect                sopen
        cputs                  fstat (n/i)            spawnl
        cscanf                 ftime                  spawnle
        dieeetomsbin (n/i)     getch                  spawnlp
        dmsbintoieee (n/i)     getche                 spawnlpe
        _disable (dos.h)       getcwd                 spawnv
        _dos_allocmem          halloc (malloc.h)      spawnve
        _dos_close             _heapchk               spawnvp
        _dos_creat             _heapset               spawnvpe
        _dos_creatnew          _heapwalk              _splitpath
        dosexterr              hfree (malloc.h)       stackavail
        _dos_findfirst         int86                  stat (n/i)
        _dos_findnext          int86x                 _status87
        _dos_freemem           intdos                 strcmpi
        _dos_getdate           intdosx                _strdate
        _dos_getdiskfree       itoa                   strdup
        _dos_getdrive          kbhit                  _strerror
        _dos_getfileattr       lfind                  stricmp
        _dos_getftime          locking                strlwr
        _dos_gettime           _lrotl                 strnicmp
        _dos_keep              _lrotr                 strnset
        _dos_open              lsearch                strrev
        _dos_read              ltoa                   strset
        _dos_setblock          _makepath              _strtime
        _dos_setdate           matherr (n/i)          strupr
        _dos_setdrive          max (stdlib.h)         tell
        _dos_setfileattr       _memavl                tempnam
        _dos_setftime          _memmax                tzset
        _dos_settime           min (stdlib.h)         ultoa
        _dos_write             mkdir                  umask (n/i)
        dup                    movedata               ungetch
        dup2                   _msize                 utime
        _enable (dos.h)

    The following Microsoft C functions are NOT supported:

        _dos_getvect          execlp                  execvp
        _dos_setvect          execlpe                 execvpe
        execl                 execv                   _expand
        execle                execve

    Compatibility with Microsoft's graphics was initially available in
    NDP C-386 Version 2.0.8.  The following functions are supported:

        _clearscreen                   _putimage
        _ellipse                       _rectangle
        _floodfill                     _remapallpalette
        _getbkcolor                    _remappalette
        _getch                         _setactivepage
        _getcurrentposition            _setbkcolor
        _getimage                      _setcliprgn
        _getlogcoord                   _setcolor
        _getphyscoord                  _setlogorg
        _getpixel                      _setpixel
        _gettextcolor                  _settextcolor
        _gettextposition               _settextposition
        _getvideoconfig                _settextwindow
        _imagesize                     _setvideomode
        _lineto                        _setviewport
        _moveto                        _setvisualpage
        _outtext                       _wrapon

    The following graphics functions are NOT supported:

        _arc                           _pie
        _displaycursor                 _selectpalette
        _getfillmask                   _setfillmask

    Please see Chapter 11 of the NDP C-386 User's Manual for more
    information about the graphic functions that are supported.


Binary File I/O (all compilers)

    Support for binary file I/O was available in previous releases;
    however, there has been some confusion regarding it.  The type of
    I/O performed depends on the setting of the global variable _pmode.
    Setting _pmode to 8000hex will cause files to be opened in binary
    mode.  The default is _pmode = 4000hex (text mode).

    The file I/O type is set when the file is opened.  Subsequent
    changes to _pmode will have not alter the I/O type of an already
    open file.


Bug Fixes

    1. Text I/O has been accelerated with a change to UNGETC in run time
       library.

    2. SCANF now correctly reports EOF.

    3. The compiler driver now passes the full path name of .OBJ files
       to the linker.   Previously, a command such as:

                f77 c:\subdirectory\fm001.f

       caused the linker to look for fm001.obj in the current directory.

    4. The compiler driver now recognizes the SRC (source) environment
       variable.

    5. The count register used by REP MOV no longer is corrupted by
       fixup routine.

    6. In the FORTRAN library (module F_CLOS.C), direct access formatted
       files are not overwritten when opened with READONLY.

    7. In the MATH library LIBM1167 (FORTRAN, C, and Pascal compilers),
       the Weitek single precision math function RACOS is now correctly
       working with negative values.


Technical Support

    If you have any questions, you can contact MicroWay's technical
    support staff at:

        Voice:  (508) 746-7341
        FAX:    (508) 746-4678

    Please refer to your User Number, product name, version number, and
    hardware configuration when contacting us.

    You should register your purchase by completing and returning the
    User Registration card.
055 NDT FORTRAN/386 V3.20 8×HD
32位编译型语言可使用大于1兆的数组,支持EGA,VGA,800X600等16色图形显示
056 PC-LOGO V2.0 1×HD
RAW 1.raw
原始 1.IMG
057 MASM V5.00 1×HD
README.DOC [展开]
		    Microsoft Macro Assembler Package
			     Version 5.00

	Text files on the Macro	Assembler disks	are tabbed to save
	disk space. If your printer does not automatically handle
	tabs during printing, you must use a print program that
	expands	tabs. For example, use the DOS PRINT program to	print
	this and other document	or source files	on the disk.

  Note to DOS 3.0 Users

	Because	of an incompatibility between DOS 3.0 and the batch
	file enhancer on this disk, you	cannot run the setup batch
	files under DOS	3.0. Instead, follow the setup instructions in
	Chapter	1 of the Programmer's Guide. You can run the CodeView
	demo on	Disk 2.	Type DEMO to run DEMO.BAT.

  ==( MASM.EXE )==

  New Feature

	The /LA	option has been	added to specify a complete listing
	of all symbols,	macros,	and false conditionals.	It is
	equivalent to using the	.LIST, .LFCOND,	.LALL, and .CREF
	directives throughout the source file. The option overrides
	any conflicting	directives in the source file.

  Clarification

	The PTR	operator can be	used to	specify	the size of a
	register indirect operand for a	CALL or	JMP instruction.
	However, the size cannot be specified with NEAR	or FAR.	Use
	WORD or	DWORD instead. (In 80386 32-bit	segments, use DWORD
	or FWORD.) Examples are	shown below:

	  ; 8086, 80826, or 80386 16-bit mode

	  jmp  WORD PTR	[bx]	    ; Legal near jump
	  call NEAR PTR	[bx]	    ; Illegal near call
	  call DWORD PTR [bx]	    ; Legal far	call
	  jmp  FAR PTR [bx]	    ; Illegal far jump

	  ; 80386 32-bit mode only

	  jmp  DWORD PTR [bx]	    ; Legal near jump
	  call NEAR PTR	[bx]	    ; Illegal near call
	  call FWORD PTR [bx]	    ; Legal far	call
	  jmp  FAR PTR [bx]	    ; Illegal far jump

	This limitation	only applies to	register indirect operands.
	NEAR or	FAR can	be applied to operands associated with
	labels.	Examples are shown below:

	  jmp  NEAR PTR	pointer[bx] ; Legal
	  call FAR PTR location	    ; Legal
è
  Correction

	When evaluating	expressions, MASM does 16-bit arithmetic except
	when the 80386 processor is enabled. If	the .386 or .386P
	directive has been given, MASM does 32-bit arithmetic. This
	behavior is consistent with earlier versions of	MASM, which
	always did 16-bit arithmetic. The notes	in Sections 9.2.1 and
	9.2.1.5	of the Programmer's Guide are incorrect. They should say
	that MASM always does 16-bit arithmetic.

  Clarification

	The description	of declaring external symbols in Section 8.2
	is incomplete and the example is incorrect. You	cannot
	access the segment of an external far data variable with the
	@FARDATA equate. Instead you must use the SEG operator as
	shown below:

		 .FARDATA
		 EXTRN	   fvar:WORD	   ; FAR variable in far data
		 .CODE
	  start: ASSUME	   es:SEG fvar	   ; Tell the assembler
		 mov	   ax,SEG fvar	   ; Tell the processor
		 mov	   es,ax

	This is	the same limitation described for communal variables
	in Section 8.4.	The reason is that under the DOS segment
	conventions, multiple far data segments	share the same name
	(FAR_DATA) and have private combine type. Segments with	the
	same name can only be distinguished indirectly using the SEG
	operator.

  Clarification

	The .286P and .386P processor directives enable	instructions
	that are normally used in systems programming. However,
	some of	these instructions do not necessarily require that
	the processor be in privileged or protected mode.

  Correction

	Public absolute	symbols	must be	declared during	pass 1.	This
	means that aliases for absolute	symbols	or other forward
	references to them will	cause errors. For example, the
	following code generates an error:

		 PUBLIC	lines
	  lines	 EQU	rows
	  rows	 EQU	25

	This behavior is different than	in previous versions of	MASM
	and contrary to	the note in Section 8.1.


è
  Behavior Change

	Some errors and	questionable practices that were ignored by
	earlier	versions are now flagged as errors. As a result,
	existing source	code may produce errors	or warnings.
	The following are examples:

	  - Labels defined only	during pass 1 will cause errors	if
	    used in expressions.
	  - A CS assume	that changes from pass 1 to pass 2 causes
	    an error.
	  - Constants are now checked for type overflow.
	  - Reserved words used	as labels produce warnings.
	  - The	OFFSET operator	used with a constant causes an error.

  ==( CREF.EXE )==

  New Feature

	Cross-reference	listing	files created with CREF	now have an
	additional symbol. A line number followed by + indicates
	that a symbol is modified at the given line. For example:

	  TST .	. . . .	. . . .	. . . .	.  134#	  237	 544+

	The symbol TST is defined at line 134, used at line 237, and
	modified at line 544.

  ==( MASM.EXE and LINK.EXE	)==

  Clarification

	The description	of STACK combine type in Section 5.2.2.3
	does not explain how multiple initialized stack	segments are
	combined. The total size of the	stack is the total size	of
	all stack definitions. LINK puts initialized data for each
	defined	stack segment at the end of the	stack. Data initialized
	in the last segment linked overrides data initialized in
	previoussegments. This behavior	is usually not relevant, since
	most programs only define one stack of uninitialized data.
	Stack data cannot be initialized with simplified segment
	directives.

  ==( CodeView Debugger	)==

  New Feature

	The /R option has been added to	enable the CodeView debugger
	to use the debug registers (DR0, DR1, DR2, and DR3) of the
	80386 processor. The option is ignored if you do not have an
	80386 processor.

	The display does not change to indicate	that the debug
	registers are in use, but debugger operations with
è	tracepoint or trace memory statements (but not with
	watchpoint statements) will be much faster. Any	of the
	following conditions will prevent the debugger from using
	debug registers:

	  1) /E	is used.
	  2) More than four tracepoints	are set.
	  3) A tracepoint watches more than four bytes of memory.
	  4) A watchpoint is set.

  Clarification

	The Pascal expression evaluator	described in the CodeView
	and Utilities manual is	not implemented	in this	version	of
	the CodeView debugger. It will be implemented in the
	debugger supplied with the next	version	of Pascal, which
	will also produce executable files with	CodeView symbolic
	information. Current versions of Pascal	do not work with the
	CodeView debugger.

  Clarification

	Section	4.2, "FORTRAN Expressions," of the CodeView and
	Utilities manual should	mention	that FORTRAN relational
	operators do not work with string variables or constants.

  Warning

	Some versions of the GENOA EGA short card are incompatible
	with CodeView when used	with a mouse. You can work around this
	problem	by turning off the mouse with /M.

  ==( LINK.EXE )==

  New Feature

	The following new LINK message warns about a practice that is
	legal in real mode, but	illegal	in protected mode:

	  warning L4003: intersegment self-relative fixup at <position>

	In assembly-language, the warning only occurs if the DOSSEG
	directive or /DOSSEG linker option is used. It indicates a
	16-bit jump to an address in another segment. For example,
	the following code produces the	error:

	  _TEXT	  SEGMENT
		  EXTRN	   doit:NEAR
		  jmp	   _TEXT2:doit
		  .
		  .
		  .
	  _TEXT	  ENDS

	  _TEXT2  SEGMENT
è		  PUBLIC   doit
	  doit	  PROC	   NEAR
		  .
		  .
		  .
	  doit	  ENDP
	  _TEXT2  ENDS

	The warning usually indicates a	fatal error in high-level-
	language programs. It can occur	when the /NT option is used
	to compile a small-model C program.

  ==( Mixed-Languages Programming Guide	)==

  Clarification

	Naming convention rules	on page	10 are incomplete. If you
	combine	BASIC with other high-level languages, avoid using
	symbolic names longer than eight characters. Pascal and	C
	will recognize only the	first eight characters,	whereas
	BASIC will recognize more than eight characters.

  Clarification

	The example programs for BASIC in Chapter 6 will not work
	with QuickBASIC	Versions 2.0 or	3.0. They will work if you
	rewrite	the function as	a subprogram, and omit the DECLARE
	statement. Functions and DECLARE statements will be supported
	in future versions of Microsoft	BASIC compilers.

  ==( Macro Files )==

  New Feature

	Macro files have been added to the Macro Assembler package.
	The following files are	provided:

	      MIXED.INC	      For defining assembler procedures
			      that can be called from high-level
			      languages

	      MIXED.DOC	      Documentation for	the macros in
			      MIXED.INC.

	      DOS.INC	      For calling common DOS interrupts

	      BIOS.INC	      For calling common BIOS interrupts
			      used on IBM and IBM-compatible computers

	      MACRO.DOC	      Description, syntax, and reference
			      for using	the macros in DOS.INC and
			      BIOS.INC.
058 MASM V6.00 4×HD
带有PWB,将汇编和链结合为一体
README.DOC [展开]
                               README.DOC File

             Release Notes for the Microsoft(R) Macro Assembler
                Professional Development System, Version 6.0

                  (C) Copyright Microsoft Corporation, 1991
                                          
     This document contains release notes for version 6.0 of the
     Microsoft Macro Assembler Professional Development System for
     MS-DOS(R) and the Microsoft Operating System/2 (MS(R) OS/2). The
     information in this document and in the Microsoft Advisor (online
     help) is more up-to-date than that in the manuals.
  
     Microsoft improves its languages documentation at the time of
     reprinting, so some of the information in this file may already be
     included in your manuals.



================================< Contents >================================

  
     This file has 7 parts:
  
               Part     Contents
               ----     --------
               1        Information for MASM 5.1 programmers

               2        Notes on "Installing and Using"

               3        Notes on "MASM 6.0 Reference"

               4        Notes on "MASM 6.0 Programmer's Guide"

               5        Using the DOS-Extended assembler

               6        Changes to CMACROS.INC

               7        Known assembler bugs



===============< Part 1: Information for MASM 5.1 programmers >=============


     "Quick Start" booklet
     ---------------------

     If you have programs that assemble with previous versions of MASM,
     this booklet will help you to use MASM 6.0.



=================< Part 2: Notes on "Installing and Using" >================


     Installation Program Notes
     --------------------------

        - Use "SETUP /M" if you are using a monochrome display adapter
          as your primary display.

        - Under OS/2, if you are already running QuickHelp as a keyboard
          monitor, disable it before running SETUP so that it can copy
          new versions of QuickHelp and MSHELP.DLL to your hard disk.



==================< Part 3: Notes on "MASM 6.0 Reference" >=================


     Page    Note
     ----    ----

     16      MASM /D Option
             --------------
             The /D Option is translated as follows:

             /D        Creates a Pass 1 listing. Translated to /Fl /Sf.

     17      ML /VM Option
             -------------
             /VM       Enables virtual memory under MS-DOS.

     33      EXITM Directive
             ---------------
             The EXITM directive takes an optional textitem, not an
             expression.

     152     XCHG Instruction
             ----------------
             The second example line should be as follows:

             xchg  dl, dh



==============< Part 4: Notes on "MASM 6.0 Programmer's Guide" >============


     Reserved Words
     --------------

     Add this paragraph to the description of reserved words in Section
     1.21, "Reserved Words," and Appendix D, "MASM Reserved Words":

     With the /Zm command-line option or OPTION M510, keywords and
     instructions that are not available in the current CPU mode (such as
     ENTER under .8086) are not treated as keywords. The USE32, FLAT, FAR32,
     and NEAR32 segment types and the 80386/486 registers are not keywords
     with processor selection directives less than .386.


     ALIGN, EVEN, and ORG in Structures and Unions
     ---------------------------------------------

     Add this paragraph to Section 5.2, "Structures and Unions."

     The ALIGN, EVEN, and ORG directives can be used during structure
     definition to modify how offsets of elements are defined. The EVEN
     and ALIGN directives will round the current field offset up to the
     specified align value by inserting padding bytes into the skipped
     space. The ORG directive may be used to change the current field
     offset to a new value, either positive or negative. If the ORG
     directive is used in a structure definition, you cannot create an
     instance of the structure.


     Nested Structure Example
     ------------------------

     Change this line in the first example of Section 5.2.2, "Defining 
     Structure and Union Variables."

           ITYPE     UNION

     should be:

           UNION     ITYPE


     PUSHCONTEXT/POPCONTEXT Table
     ----------------------------

     The table in Section 9.7.2, "Testing for Argument Type and 
     Environment" should be as follows:

     Option     Description
     ------     -----------
     ASSUMES    Saves segment register information
     LISTING    Saves listing and CREF information
     CPU        Saves current CPU and processor
     RADIX      Saves current default radix
     ALL        All of the above


     New Anonymous Bitfield Syntax
     -----------------------------
     Add these paragraphs to Section 16.3.5, "Bit Fields."

     H2INC translates anonymous bitfields by padding with a tag
     corresponding to the bit position.

     For example,

     struct s
     {
        int :8;
        int j:8;
     }

     becomes:

     s      RECORD  j@s:8,
                    @8@s:8


     Basic/MASM Far Externs
     ----------------------

     Add these paragraphs to Section 20.3.3, "The Basic/MASM Interface."

     When interfacing with Basic, all EXTERNs that are far must be
     declared outside of a code or data segment.

     This is incorrect:

     .MODEL     medium
     .CODE
     EXTERN     StringAddress:FAR

     This is correct:

     .MODEL     medium
     EXTERN     StringAddress:FAR
     .CODE


     New Command-line Options
     ------------------------

     Add these paragraphs to Appendix C, "Generating and Reading Assembly
     Listings."

     With the PAGE directive, the default page length is 0 (infinite), and
     the default page width is 0 (infinite). The allowable range of values
     is 0 and 60-255 for page width, 0 and 10-255 for page length.

     With the /Sf option, a first-pass listing will be generated even if
     a fatal error occurs. The symbol table will be appended onto the end
     of the listing file unless you give the /Sn option.

     The first-pass listing is controlled by the same set of commands that
     are used with the final listing.


     Additional Error Messages
     -------------------------

     Add these new or changed error messages to Appendix F, "Error
     Messages."


     MASM fatal error A1006

     invalid command-line option: 'option'

     ML did not recognize the given parameter as an option.

     This error is generally caused when there is a syntax error on the
     command line. It can also be generated by trying to assemble multiple
     assembly language files on the MLX driver command line.


     MASM fatal error A1017

     out of near memory

     There was insufficient memory to assemble the program.

     One of the following may be a solution:

        - If you are using the NMAKE utility, try using NMK or
          assembling outside of NMAKE.

        - in PWB, try exiting and assembling using ML.

        - In OS/2, try increasing the swap space.

        - In DOS, remove terminate-and-stay-resident (TSR) software.

        - If you have extended memory available, use the MLX.EXE driver.

        - Change CONFIG.SYS to specify a lower number of buffers (the
          BUFFERS= command) and fewer drives (the LASTDRIVE= command).

        - Eliminate unnecessary INCLUDE directives.


     MASM fatal error A1019

     invocation failed : retry command line with /VM option

     ML tried to restart itself with the /VM option but failed.

     Enter the ML command line again, but add the /VM virtual-memory
     option explicitly.


     MLX fatal error A1800

     processor not 80286 or above

     You can only run MLX.EXE on an 80286 or above processor.

     Use ML.EXE if you do not have an 80286 or 80386/486 processor.


     MLX fatal error A1801

     processor in protected or virtual 8086 mode

     The MLX driver cannot run from XMS memory when in protected or
     virtual 8086 mode.


     MLX fatal error A1802

     DPMI, VCPI, or XMS driver not installed

     The MLX driver cannot find a compatible driver in memory.

     You must have a DPMI, VCPI, or XMS driver, such as HIMEM.SYS,
     installed before running MLX.EXE.


     MLX fatal error A1803

     unexpected initialization error

     The MLX driver was unable to initialize the memory manager.

     Make sure that you have a compatible DPMI, VCPI, or XMS driver
     installed. HIMEM.SYS is a compatible XMS driver and is included in
     this package.


     MLX fatal error A1804

     not enough near memory to load MLX.EXE

     There was insufficient memory to start the DOS-extended assembler.

     One of the following may be a solution:

        - If you are using the NMAKE utility, try using NMK or
          assembling outside of NMAKE.

        - Remove terminate-and-stay-resident (TSR) software.

        - Change CONFIG.SYS to specify a lower number of buffers (the
          BUFFERS= command) and fewer drives (the LASTDRIVE= command).


     MLX fatal error A1805

     unable to run under Windows in standard mode

     You can only run MLX.EXE in a Windows DOS box when running real or
     386 enhanced mode.


     MLX fatal error A1806

     insufficient extended memory to load ML.EXE

     There is not enough extended memory available to load the assembler
     into high memory.

     Change your configuration to give more memory to the DOS extender.
     This may involve reducing the size of a RAM disk or cache.


     MLX fatal error A1807

     disk I/O error while loading program

     The assembler encountered an error when trying to load ML into high
     memory.

     One of the following may be a cause:

        - The disk has a bad sector.

        - The file-access attribute is set to prevent reading.

        - The drive is not ready.


     MLX fatal error A1808

     out of space in GDT

     The MLX driver could not add enough entries to the Global
     Descriptor Table (GDT).

     You may be able to overcome this problem by rebooting your system
     and running MLX.EXE before starting other programs.


     MLX fatal error A1809

     bad environment table

     There was an invalid environment table passed to MLX.EXE.

     The calling program passed a bad environment table. This error can
     be caused by a corrupt version of COMMAND.COM.


     MLX fatal error A1810

     cannot load ML.EXE

     The ML driver could not be found in the current path.

     Make sure that the DOS version of ML.EXE was copied from the
     distribution disks and is in the current path.


     MLX fatal error A1811

     ML.EXE not protected-mode compatible

     An obsolete version of ML.EXE was found in the current path.

     Make sure that the DOS version of ML.EXE was copied from the
     distribution disks and is in the current path.


     MLX fatal error A1850

     unrecoverable fault

     The MLX driver called ML.EXE, which generated a system error.

     Note the circumstances of the error and notify Microsoft
     Corporation by following the instructions in the Microsoft Product
     Assistance Request form at the back of one of your manuals.


     MASM error A2007

     non-benign record redefinition

     A RECORD definition conflicted with a previous definition.

     One of the following occurred:

        - There were different numbers of fields.

        - There were different numbers of bits in a field.

        - There was a different label.

        - There were different initializers.


     MASM error A2202

     illegal use of segment register

     You cannot use segment overrides for the FS or GS segment registers
     when generating floating-point emulation instructions with the /FPi
     command-line option or OPTION EMULATOR.


     MASM error A2203

     cannot declare scoped code label as PUBLIC

     A code label defined with the "label:" syntax was declared PUBLIC.

     Use the "label::" syntax, the LABEL directive, or OPTION NOSCOPED
     to eliminate this error.


     MASM error A2204

     .MSFLOAT directive is obsolete : ignored

     The Microsoft Binary Format is no longer supported.

     You should convert your code to the IEEE numeric standard, which is
     used in the 80x87-series coprocessors.


     MASM error A2205

     ESC instruction is obsolete : ignored

     The ESC (Escape) instruction is no longer supported. All numeric
     coprocessor instructions are now supported directly by the assembler.


     MASM warning A4005

     unknown default prologue argument

     An unknown argument was passed to the default prologue.

     The default prologue understands only the FORCEFRAME and LOADDS
     arguments.


     MASM warning A4013

     line number information for segment without class 'CODE'

     There were instructions in a segment that did not have a class
     name that ends with "CODE". The assembler did not generate
     CodeView information for these instructions.

     CodeView cannot process modules with code in segments with
     class names that do not end with "CODE".


     MASM warning A4014

     instructions and initialized data not supported in AT segments

     An instruction or initialized data was found in a segment defined
     with the AT attribute. The code or data will not be loaded at run
     time.

     Data in AT segments must be declared with the ? initializer.


     MASM warning A6004

     procedure argument or local not referenced

     You passed a procedure argument or created a variable with the LOCAL
     directive that was not used in the procedure body.

     Unnecessary parameters and locals waste code and stack space.


     MASM warning A6005

     IF condition may be pass-dependent

     Under the /Zm command-line option or the OPTION M510 directive,
     the value of an IF condition changed between passes.

     This error message may indicate that the code is pass-dependent and
     must be rewritten.


     H2INC fatal error HI1801

     incomplete model specification

     Only part of a custom memory-model specification was specified on
     the command line.

     When you specify a custom memory model with the /A command-line
     option, you must specify code pointer distance, data pointer distance,
     and DS register setup. This error is equivalent to the D2013 error
     message for CL.



=================< Part 5: Using the DOS-extended assembler >===============


     MLX: The DOS-Extended Assembler
     -------------------------------

     There is a new DOS-extended driver for ML called MLX. MLX loads
     ML.EXE into high memory so that the assembler takes up very little
     space in the first 640K of memory.

     MLX uses extended memory to run ML in protected mode. If you have
     multiple extended memory drivers available, MLX will select the
     driver to use in this order:

       - DPMI
       - VCPI
       - XMS

     The HIMEM.SYS XMS driver is included in the MASM 6.0 package and
     is automatically copied by setup into the real-mode executables
     directory as MLX.EXE. To use HIMEM.SYS, put the following line
     into your CONFIG.SYS file:

       DEVICE = <path>HIMEM.SYS

     Where <path> is the path to the location of HIMEM.SYS.

     Use MLX only if running ML with the /VM virtual-memory option fails
     due to an out of memory error. Because it runs in real mode, ML
     with the /VM command-line option can run significantly faster than
     MLX.


     MLX Requirements
     ----------------

     MLX requires an active DPMI, VCPI or XMS driver and at least 384K
     of available extended memory to operate.


     Differences between ML and MLX
     ------------------------------

     The MLX DOS-extended driver can only assemble one source file at
     a time. You must split multiple-file assemblies into several
     invocations of MLX.

     If you want to use MLX from the PWB command line, you must manually
     change your makefile to reflect the name of the MLX driver. Change
     the line:

       ASM = ML

     to

       ASM = MLX


======================< Part 6: Changes to CMACROS.INC >====================


     Using CMACROS.INC
     -----------------

     There is a new, MASM 6.0-compatible version of CMACROS.INC included
     with the assembler. If you work with the Windows 3.0 Software
     Development Kit, or the C 6.0 or FORTRAN 5.0 startup code, use the 
     new version of CMACROS.INC.


     C and FORTRAN Startup Sources
     -----------------------------

     To build the C or FORTRAN start-up sources, change the ASMFLAGS line
     of MAKEFILE from

     ASMFLAGS= -Mx -Dmem_$(MODEL) -I$(INC)

     to

     ASMFLAGS= -Mx -Dmem_$(MODEL) -I$(INC) -DMS_STARTUP



=====================< Part 7: Known assembler bugs >===================


     Ambiguous Radix Characters
     --------------------------

     The assembler accepts numeric characters outside the range of the
     current radix.  These characters are given their appropriate
     values but are handled under the current radix.  For example,

     .RADIX 10
     mov    ax, 1F
     mov    bx, 1Fh

     loads ax with 25 (10 from the tens digit and 15 from the ones).
     The bx register is loaded properly.
059 ABEL V2.02 1×HD
060 ABEL V4.02 3×HD
可编程逻辑器件用高级语言
README.1ST [展开]
ATMEL-ABEL 

    ATV5000
    File                                                              
    Source    Description                                      Comments      
   |---------|------------------------------------------------|---------------|
    USEV5K    Using V5000 features in ABEL 4.x syntax          Please Read.
    V5KAPP    Example using state machine, Boolean equations   	


    ATV2500
    File                                                              
    Source    Description                                      Comments      
   |---------|------------------------------------------------|---------------|
    ABELNODE  List of Nodes for the Buried Registers           Please Read.
    T45       Emulates 7445  - BCD to Decimal Decoder          Truth Table
    T47       Emulates 7447  - BCD to 7 Segment Decoder        Truth Table
    T56       Emulates 7456  - Synchronous/Asynchronous        Boolean Eqns,
                               Frequency Divider               State Diagram
    T83       Emulates 7483  - 4-bit Adder with Fast Carry     Boolean Eqns
    T85       Emulates 7485  - 4-bit Magnitude Comparator      Boolean Eqns
    T138      Emulates 74138 - 3 to 8 Decoder                  Truth Table
    T148      Emulates 74148 - 8 to 3 Priority Encoder         Truth Table
    T166      Emulates 74166 - Serial/Parallel-Load 8 Bit      Boolean Eqns
                               Shift Registers (Buried Reg)            
    T167      Emulates 74167 - Synchronous Decade Rate         Boolean Eqns, 
                               Multiplier (Buried Registers)   State Diagram
    T180      Emulates 74180 - 8-bit Even/Odd Parity Generator Boolean Eqns
    AT160     Emulates 74160 - Synchronous Decade Counter      Macro
    AT161     Emulates 74161 - Synchronous Binary Counter      Macro
    EXMACRO   Example using macros                             @include
    OSC       Build an Oscillator using a ATV2500              App. Note

    ATV750
    File                                                              
    Source    Description                                      Comments      
   |---------|------------------------------------------------|---------------|
    ABELNODE  List of Nodes for the Buried Registers           Please Read
    FEEDBACK  Using the Correct Feedback Paths		       Boolean Eqns,
              Observing Register State when Output is High Z   State Diagram
    IOEX3     Writing Test Vectors for I/O pins                I/O Pins
    EX375     Asychrounous 20-bit Counter                      Asych Clocking
    DUCK      When to Use Special Constants .D.,.U.,.C.,.K.    Test Vectors
    T885      Emulates 74885 - 8-bit Magnitude Comparator      Boolean Eqns
    GCOUNT    8-bit Pseudo Gray Code Counter(include decoding) Boolean Eqns
原始 1.IMG 2.IMG 3.IMG
061 CUPL V2.00 1×HD
可编程逻辑器件用高级语言
README [展开]
Release Notes for CUPL - Universal Compiler for Programmable Logic

CUPL        Release
Version     Date        NOTES
-----------------------------------------------------------------------
1.01a        9/10/83    First production release of CUPL with universal
                        design support for 29 devices.

1.01b       10/31/83    Fixes for various devices including M16C1 and
                        N16C1.  Fix in CSIM to simulate 16 product
                        terms in PAL16C1.  Distribute on double-sided
                        diskettes (MS/PC-DOS).

2.00a       11/19/84    First release of newly structured CUPL, using
                        device database with support for 76 devices.
                        Added support for PAL XOR devices, IFL JK and RS
                        devices.  Improved simulator handling of
                        asynchronous feedback.  Many new syntax features
                        including outputs grouped as fields, numbers,
                        and function table input.  Added full logic
                        minimization.

2.01a       12/21/84    Restructuring of distribution diskettes for
                        proper installation (MS/PC-DOS).  CSIM properly
                        removes existing vectors in JEDEC file before
                        appending new test vectors.  CSIM properly renames
                        JEDEC file when $exit directive used.  CSIM
                        properly simulates programmable polarity before
                        the output register.

                        Added support for:    AMD  AmPAL18P8
                                              MMI  PAL6L16
                                              MMI  PAL8L14
                        Device changes:
                        ---------------
                        p16rp4   rev 11   Fix for simulation of
                        p16rp6   rev 11      programmable polarity before
                        p16rp8   rev 11      output register.
                        p32r16   rev 06   MMI changed JEDEC fuse spec.
                        p64r32   rev 06   MMI changed JEDEC fuse spec.
                        f103     rev 07   Fixed polarity of output pins.
                        f155     rev 08   Fixed HL plot for register
                        f157     rev 07      RESET/PRESET & Complement
                        f159     rev 12      array.  Fixed polarity of
                                             non-registered output pins.
                        f162     rev 04   Fixed polarity of output pins.
                        f163     rev 04   Fixed polarity of output pins.
                        p20rs4   rev 16   Fix for simulation of
                        p20rs8   rev 14      programmable polarity before
                        p20rs10  rev 15      output register.

2.02a        1/17/85    Incorporates faster, more memory efficient
                        algorithm for DeMorgan property.

                        Added support for:    MMI  PAL20RA10
                                              MMI  PAL20P8E
                        Device changes:
                        ---------------
                        p16rp4   rev 11   Fix for simulation of
                        p16rp6   rev 11      programmable polarity before
                                             output register.

2.02b        3/20/85    Fixes for various devices.  Clarify certain error
                        messages.  Made -g flag work.  Added out of memory
                        error message for logic minimizer.  Improved CSIM
                        error reporting.

                        Device changes:
                        ---------------
                        ep300   rev 15    Added warnings for SP/AR terms.
                                             Fixed polarity for pin 1.
                        p20ra10 rev 08    Fixed simulation error on pin 20.
                        p20rs4  rev 17    Fixed number of fuses in JEDEC.
                        p20s10  rev 14    Fixed number of fuses in JEDEC.
                        p32r16  rev 09    No functional change.
                        p64r32  rev 12    Allow pin 44 to be input.
                                             Allow combinatorial output mode.
                        f155    rev 10    Fixed HL plot for complement
                        f157    rev 09       array.
                        f159    rev 15    Fixed HL plot for complement
                                             array and output enable terms.
                                             Fixed default for pin 6 to be
                                             active when used as an output.
                        f105    rev 15    Fixed HL plot for complement
                        f167    rev 15       array.  Allow AP extension
                                             on internal node flip-flops.

2.02c        5/30/85    Fixed ASCII-HEX generation for PROMs.

                        Device changes:
                        ---------------
                        p20p8e   rev 02   Fixed polarity for output pins.

2.10a        3/11/86    Added state machine syntax for all registered
                        devices.  Added user defined functions and new truth
                        table format.  Improved logic minimization and
                        DeMorgan algorithms.  Time/date stamp on all output
                        files.  Print chip diagram in documentation file.
                        Fixed fuse plot generation for FPLA (Signetics)
                        devices when product terms merged.  Use up to 640K 
                        on MS/PC-DOS version.

                        Added support for:    Altera     EP600 (limited)
                                              Lattice    GAL16V8, GAL20V8
                                              MMI        PAL16RA8
                                              National   PL1016P8, PL10016P8
                                              National   PL1016RP8, PL10016RP8
                                              Panatech   EPL10P8, EPL12P6
                                                 Ricoh   EPL14P2, EPL16P8
                                                 VTI     EPL16RP4, RP6, RP8
                                              Signetics  82S151, 82S168
                                              Signetics  82S173, 82S179
                                              T.I.       PLR19L8, PLR19R4
                                              T.I.       PLR19R6, PLR19R8
                                              T.I.       FPGA529

                        Device changes:
                        ---------------
                        f157     rev 13   Fixed HL plot for bank A reset and
                                             preset terms.
                        f162     rev 07   Signetics changed JEDEC fuse spec.
                        f163     rev 07   Signetics changed JEDEC fuse spec.
                        p14p4    rev 07   Fixed error in fuse map.
                        p20rs10  rev 19   Fixed output enable for pin 14.
                        p1020p8  rev 06   Created from p20p8e when MMI
                                             changed pinout.

2.11a        7/15/86    Allows use of floppy diskettes for MS-DOS systems.
                        CUPL looks at search path for each module.  Allows  
                        larger state machine designs.  Fixes in expression 
                        evaluation and logic minimization.  Added multiple 
                        output minimization for FPLA (Signetics) devices.  
                        Added support for latched input devices and
                        toggle flip-flops.

                        Added support for:    AMD        AmPAL23S8
                                              T.I.       PLT19L8, PLT19R4
                                              T.I.       PLT19R6, PLT19R8
                                              T.I.       TIBPAL20SP8
					      T.I.       TIBPAL20RSP4
                                              T.I.       TIBPAL20RSP6
					      T.I.	 TIBPAL20RSP8
                                              T.I.       TIBPAL22VP10

                        Device changes:
                        ---------------
                        ep300    rev 20   Added new macrocells for schematic
                        f105     rev 21       capture.
                        f155     rev 14                                     
                        f157     rev 14                                     
                        f159     rev 19                                     
                        f167     rev 22                                     
                        f168     rev 04                                     
                        f179     rev 02                                     
                        p16ra8   rev 02                                     
                        p20ra10  rev 13
                        p19r4r   rev 06
                        p19r6r   rev 06
                        p19r8r   rev 06
                        p19l8r   rev 07   Fixed error in fuse plot.  Fixed
                                              input pin 2 error.
			ep600	 rev 05	  Fixed error in fuse map.  Added 
                                              support for T flip-flops and
                                              asynchronous register clocking.
			g20v8ma  rev 02   Fixed error in fuse map for pin 15.

2.11b        11/14/86   Fixes for indexed variables in state machine      
                        syntax and CSIM ORDER list.  Added the QV and P
                        fields to the JEDEC file when test vectors are
                        created.  Added an alternate packages device
                        library, SMD.DL, which has leadless chip carrier
                        pinouts for 24 pin DIPs in 28 pin LCCs.

                        Added support for:    AMD        AmPAL10H20EV8            
                                              AMD        AmPAL10H20EG8        
                                              AMD        AmPAL22P10
                                              AMD        AmPAL22RP4
                                              AMD        AmPAL22RP6
                                              AMD        AmPAL22RP8
                                              AMD        AmPAL22RP10
					      MMI	 PAL10H20G8
                                              T.I.       TIBPAL16SP8
				 	      T.I.       TIBPAL16RSP4
                                              T.I.       TIBPAL16RSP6
					      T.I.	 TIBPAL16RSP8

                        Device changes:
                        ---------------
                        p16ra8   rev 03   Fixed error in fuse map.          
                        ep600    rev 10   Fixed asynchronous reset defaults
                                          and simulation
RAW 1.raw
原始 1.IMG
062 ICT PEEL V3.60 1×TD
可编程逻辑器件用高级语言
README.DOC [展开]
               WELCOME to the ICT PEEL Development Software!


*************************** Table of Contents ********************************

Section 1 - System Requirements and software initialization
Section 2 - About Version 3.60 ...
Section 3 - About Version 3.55 to 3.58...
Section 4 - About Version 3.50 ...
Section 5 - About Version 3.40 ...
Section 6 - About Version 3.30 ...
Section 7 - About Version 3.20 ...
Section 8 - About Version 3.10 ...
Section 9 - About Version 3.00 ...

All users should read sections 1 and 2.


***************************** Introduction ***********************************

This document briefly describes the system requirement, software
initialization, and additions or changes of the previous software versions.

This diskette contains software which can be executed with or without the
programmer hardware for the PEEL Development System (PDS-1). The software will
automatically initialize to PDS-1 if the programmer hardware is present.

For more information, refer to your users manual, select the HELP command from
the main screen after the software has been executed, or read the following:


****************************** Section 1 *************************************

SYSTEM REQUIREMENTS

- IBM PC,XT,AT or compatible
- Minimum 384K RAM memory
- Monochrome or Color Display
- One high density floppy disk drive and a hard disk
- DOS version 2.1 or greater

Note: PC address location = 259 HEX
      PC data location    = 258 HEX


HARD DISK INSTALLATION:

1. Turn computer on.
2. Boot-up DOS 2.1 or greater.
3. Make sure you have a back-up copy of the original diskettes.
4. Insert the PDS-1 diskette into drive A.
5. At the drive A cursor (A>), type "INSTALHD" followed by the ENTER key.
   This will create a directory named PEEL and copy all files from the
   PDS-1 diskette into that directory, and then start the software.
6. Answer the system set-up questions for system type, color, and sound.
7. The PEEL software is now ready for operation.

   Subsequent use after software is installed:

1. Turn computer on.
2. Boot-up DOS 2.1 or greater.
3. Change to the PEEL directory by typing "CD\PEEL".
4. Type "PEEL" followed by the ENTER key (press the ENTER key twice to bypass
   the messages).
5. The PEEL software is now ready for operation.

****************************** Section 2 *************************************

About Version 3.60 ... (Changes and Additions to V3.58)

 1. Programmer - Change 18CV8 verify vpp voltage to 13 volts to make it work
                 for different speed of 18cv8.

****************************** Section 3 *************************************

About Version 3.55 to 3.58 ... (Changes and Additions to V3.50)
 
 1. Programmer - Add PEEL22CV10A and PEEL22CV10A+
 2. Translator - Add 18V8 to 18CV8.
 3. Translator - Add SIG 16SV8 to 18CV8.
 4. Translator - Add PAL 20C1 to 173.
 5. Translator - Add FPLA473 to PEEL273, used a pin 13 substituion.
 6. Translator - Add 18U8 to 18CV8.
 7. Translator - Fixed bug for 16V8 to 18CV8.
 8. Programmer - Added auto-handler.
 9. Simulator  - Fixed bug fault grad.
 10. Simulator  - Fixed bug for 22CV10.

****************************** Section 4 *************************************

About Version 3.50 ... (Changes and Additions to V3.40)

 1. Programmer - Add initial calibration.
 2. Programmer - Change PC address and Data to variable.
 3. Translator - Add PAL20ARP4, 20ARP6, 20ARP8 and 20ARP10 to PEEL20CG10,
                 22CV10 and 22CV10Z.
 4. Translator - Add PAL20RP4, 20RP6 and 20RP8 to PEEL20CG10, 22CV10 and
                 22CV10Z.
 5. APEEL - Fixed simulation bugs for Feed_Or configuration.
 6. Loader - Deleted Continuity-Test for CYP22V10.
 7. APEEL - Fixed 22CV10Z and 20CG10 feedback polarity bug.

Note: Please refer to the HELP file (PEEL.HLP) for description of features not
      discussed in the manual. The PEEL.HLP file can be accessed from PEEL.EXE
      program.


****************************** Section 5 *************************************

About Version 3.40 ... (Changes and Additions to V3.30)

 1. Translator - Add zero-power mode and signature selection mode.
 2. Translator - Fixed PEEL173 and PEEL273 bug.
 3. Translator - Add PAL22AP10-to-PEEL273 and PAL22AP10-to-PEEL20CG10.
 4. APEEL and Translator - Optimized PEEL22CV10Z JEDEC file.
 5. Loader - Deleted Continuity-Test for GAL16V8.
 6. APEEL - Fixed Macrocell Configuration bug ("LATCH" is not a reserved word).


****************************** Section 6 *************************************

About Version 3.30 ... (Changes and Additions to V3.20)

 1. Translator - Fixed EP320-to-PEEL18CV8 bug.
 2. Translator - Fixed GAL16V8-to-PEEL18CV8 bug.


****************************** Section 7 *************************************

About Version 3.20 ... (Changes and Additions to V3.10)

 For PDS-1 only:
 1. GENERAL - Decreased programming/verification time.


****************************** Section 8 *************************************

About Version 3.10 ... (Changes and Additions to V3.00)

 1. GENERAL - Increased execution speed (about 30 to 50% faster than V3.00),
              especially for users with 80x86 (e.g. 80286, 80386) computers.
 2. GENERAL - Add DOS command shell.
 3. GENERAL - add faster sort routine for file selection menu.
 4. APEEL   - add "AUTO_SECURE" mode. JEDEC file created by APEEL has the
              security bit mode set ("G1").


****************************** Section 9 *************************************

About Version 3.00 ... (Changes and Additions to V2.40)

 1. GENERAL - Increase RAM memory requirement from 256 to 384 K-bytes.
              Notes: If you have only 256 K-bytes of RAM memory, most functions
                     in the PEEL software will operate properly. The three
                     functions not operating are the PLD (e.g. PAL, EPLD, GAL
                     and FPLA) loaders, translators, and editor. However, you
                     can run PEELXLT.EXE (translator) and PEELEDIT.COM (editor)
                     from MSDOS.
 2. GENERAL - Add COM transmit/receive (IBM or 100% IBM compatible PC only).
 3. GENERAL - Add video terminal emulation mode (IBM or 100% IBM compatible
              PC only).
 4. GENERAL - Add file utilities for create and remove directory, and erase
              and rename file.
 5. TRANSLATOR - Add PAL 24-pin (small and medium series) to PEEL20CG10.
 6. TRANSLATOR - Add GAL20V8 to PEEL20CG10.
 7. TRANSLATOR - Translator can be executed from MSDOS. Type "PEELXLT" will
                 display the command format.
 8. APEEL - Fix syntax error checking bugs.

 For PDS-1 only:
 9. LOADER - Add PAL 24-pin (small and medium series).
10. LOADER - Add PALC22V10.
11. LOADER - Loaders for all PLDs (excluding PEEL devices) are modularized into
             a separate program called "PLDLOAD.EXE". YOU MUST NOT EXECUTE THIS
             PROGRAM FROM MSDOS. The PLDLOAD.EXE must interface with the
             PEEL.EXE program.

原始 1.IMG ICTPEEL
063 ICT PLACE V2.40 1×TD
可编程逻辑器件用高级语言
README [展开]
********  Welcome to the PLACE Advance Development Software from ICT  ********

This README.DOC file provides the following information regarding the PLACE
software.

  1. System Requirements.
  2. Software Installation to Hard Disk.
     IMPORTANT! The PLACE installation procedure has been changed since the
     PLACE manual was printed. Please use the procedure specified in this
     file.
  3. PLACE Glossary.
  4. The New Features of Version 2.20.

*** System Requirements ***

- IBM PC compatible computers,includeing the XT, AT, 386, 486 or compatible.
- Minimum 560K RAM memory for all the designs.
- EGA, VGA , SVGA or Hercules Graphics
- At least 4.0 MB of hard disk free space
- Microsoft mouse or compatible with driver
- One communication port (serial port) for PDS-2 programmer, if you are using 
  PDS-2 programmer. 
- DOS version 3.0 or higher
- (Optional) Expanded Memory with LIM Specification Version 3.2 or higher.


*** Software Installation to Hard Disk ***

1.  Turn the computer on.
2.  Boot-up DOS 3.0 or higher.
3.  Install you mouse driver. PLACE will not boot-up without it.
4.  Insert the PLACE Disk into drive A. 
5.  At the prompt "A>", type "INSTALL" followed by the ENTER key. This
    copies all files from the diskettes into the user-specified directory
    (directory defaults to "C:\ICTPLACE"). The installation program
    automatically decompresses all the PLACE files using the LHA program
    by H. Yoshizaki (Copyright reserved).
6.  After installation is completed, type "INIT" followed by the ENTER
    key.


Notes:
a.  For re-initialization, type "INIT" followed by the ENTER key.
b.  (Optional) Assuming the target hard disk drive is C, include the
    directory "C:\ICTPLACE" into your DOS Path and insert the statement
    "SET ICTPLACE=C:\ICTPLACE" into your AUTOEXEC.BAT file.
    This allows you to call PLACE from any directory.


*** PLACE Glossary ***

Below lists the common terms that the PLACE manual uses.

Click    - press left button of mouse and release immediately.
           This mouse action is mostly used to select a feature or mode. It is
           sometimes used to emulate the ENTER key (for instance, after
           entering a label in the "Label" mode).
Click-R  - press right button of mouse and release immediately.
           Usually used to abort or quit a function or mode. A special function
           for this mouse action is to toggle between two modes, such as between
           "Edit Arch" and "Edit Eqn" modes in the Design operation, and
           between normal and "Edit" mode in the Simulate operation.
Click-LH - press left button and hold it down while moving the mouse cursor
           to a desired location. Release mouse button when destination is
           reached. Used in the scrolling from a LCC (or IOC) to another LCC,
           or in selecting a "Zoom" window in the Simulate operation.
Click-MH - press middle button and hold it down to enter a specific mode.
           Release mouse button to exit the mode. 
LCC      - Logic Control Cell (PEEL Arrays only).
IOC      - I/O Cell.
INC      - Input Cell (PA7140 and PA7128 devices only)
GBC      - Global Cell (PEEL Arrays only).
RT       - (Register Type) Dynamic Register Control (PEEL Arrays only).
Reset    - Global Reset for the LCC flip-flop (PEEL Arrays only).
Preset   - Global Preset for the LCC flip-flop (PEEL Arrays only).
PCLKA,
PCLKB,
PCLKC    - Global product term clocks for the IOC flip-flop (PEEL Arrays only).


*** The New Features of Version 2.20. ***

1.  Support for the PA7140 and PA7128 PEEL Arrays.

2.  Interface to PEEL Development System PDS-2 programmer which support for
    full ICT PEEL and PEEL Array products.

3.  The Vpp, program/verify, voltage changed for the ICT A parts.

4.  Updated Counter macro function. 

    a) Must be specified in the DEFINE section.

    b) Syntax is:

         COUNTERF(load, updown, cBits, type, iBits);

         load: 0 = No load function
               Pin_Name, Node_Name (Cell_Names),
               Macro_defined_label  = load control

         updown: 0 = Up Ccount
                 1 = Down Count
                 Pin_Name, Node_Name (Cell_Names),
                 Macro_defined_label = updown control
                 (TRUE logic for Up Count)

         cBits: A Macro-Set-Variable (page 5-22) with at least 2 elements.
                This set contains the counting bits which include Pin_Names
                or Node_Names (Cell_Names).

         type: D = D-type counter
               T = T-type counter
               (The pins or cells assigned to the macro label in the "cBits"
                parameter must have the same register type)

         iBits: 0 = Non-loadable counter
                Macro-Set-Variable = Data bits for loading the counter. This
                set must have the same number of elements as the cBits. The
                elements include Pin_Names or Node_Names (Cell_Names).
                If load=0, then iBits=0.

    c) An Example is:

         DEFINE

         UPDN_BITS = [Q4 Q3 Q2 Q1 Q0]; "Counting Bits. Q[4-0] can be pin or
                                       "cell labels.

         LOAD_EN = A & B;              "Load Control Equation. Loads when
                                       "A=TRUE and B=TRUE.
         LOAD_BITS = [L4 L3 L2 L1 L0]  "Load Inputs, either pin or cell
                                       "labels.

         UPDN_CON = C & !D;            "Updown Control.
                                       "If C=TRUE, D=FALSE, it is Up Counter
                                       "Else, it is Down Counter.

         COUNTERF(LOAD_EN, UPDN_CON, UPDN_BITS, T, LOAD_BITS);
         .
         .
         .

         EQUATIONS

5.  Updated the PEELXLT.exe which translates a PLD File to a PEEL Device.

    From DOS prompt,
    Type "PEELXLT source_filename source_PLD target_PEEL_device"
    Example: PEELXLT R8CNTR 16R8 18CV8
    It is assumed to have a ".JED" extension for the soure file. In this
    case it creates the PEEL device JEDEC file :R8CNTR.JEX".
064 PLM-51 1×HD
51单片机编程用高级语言
065 PLM-96 1×HD
96/98单片机编程用高级语言
066 ASM-51 1×HD
51单片机汇编语言
067 UNASM-51 1×HD
51单片机反汇编工具
068 ASM-96 1×HD
96/98单片机汇编语言
069 UNASM-96 1×HD
96/98单片机反汇编工具
070 C-51 1×HD
51单片机编程用高级语言
RAW 1.raw
原始 1.IMG
071 C-96 1×HD
96/98单片机编程用高级语言
RAW 1.raw
原始 1.IMG
072 雷奥特 3×HD
给出流程图即可自动生成 C BASICE 等源程序
原始 1.IMG 2.IMG 3.IMG
073 Project v1.0 1×HD
RAW 1.raw
原始 1.IMG
074 Project v3.0 4×HD
075 286|DOS EXTENDER LITEV 2.50 1×HD
README.1ST [展开]
	Installation Instructions for 286|DOS-Extender Lite (TM)

Phar Lap Software, Inc.
60 Aberdeen Ave.		Voice: +1 617 661 1510
Cambridge, MA  02138		FAX: +1 617 876 2972

Welcome, and thank you for using Phar Lap's 286|DOS-Extender Lite.
Lite is a special, limited version of Phar Lap's award-winning
286|DOS-Extender SDK designed exclusively for users of Borland C++
3.1.  If you enjoy using 286|DOS-Extender Lite, we hope that you will
consider purchasing our full-featured SDK.

These notes explain how to install Lite on your hard disk, provide a
simple description of building one of the example programs, and describe
other documentation files on this diskette.  A complete description of how
to compile for protected mode can be found in LITE286.DOC, described below.  

*******************************************************************************
			Other Documentation
*******************************************************************************
There are several other files which contain valuable information about
286|DOS-Extender Lite.  These files are located in the distribution
diskette in a directory called A:\DOC, and are copied to \LITE286\DOC
during installation.

LITE286.DOC contains "Borland C++ User's Guide to 286|DOS-Extender Lite".
It explains how to compile and run DOS-extended programs after installing
Lite.  You may want to print this file and keep it handy as a reference
while you are writing programs for Lite.

LITEINFO is a short description of 286|DOS-Extender Lite, and contains
an overview of the major differences between Lite and our full-featured
SDK.  It is identical to the text that is displayed if you run
LITE286.EXE with no arguments or options.

INTL.DLR contains a list of overseas dealers.  If you are outside the
USA, please feel free to contact either Phar Lap or one of these dealers
for technical support or to order your 286|DOS-Extender SDK.

ORDER.FRM is a copy of the coupon included in the 286|DOS-Extender
Lite package.

*******************************************************************************
			Installation
*******************************************************************************
Before installing 286|DOS-Extender Lite, you must have previously installed
Borland C++ 3.1 on your hard drive.  Please note that to use Lite, you need
not install the entire 3.1 release; only the command-line compiler and the
DOS large-model libraries are required.  If you wish to write protected-mode
graphics programs using the Borland Graphics Interface (BGI), then you must
also install that component.  Lite does not require, and will not use, any of
the files installed by the "Windows Options..." menu.

For our examples, we assume you have installed Borland C++ in C:\BORLANDC.
If you have installed it elsewhere, modify these instructions accordingly.

Installing 286|DOS-Extender Lite is a three-step process.  First, you
must copy all of the files from the distribution diskette to your hard
drive.  Second, you must build a special, protected-mode version of the
C run-time library.  Third, you may optionally build a special version
of the graphics library.  After you have completed each of these steps,
you are ready to start building protected mode applications!


Step 1: Copy Files From Diskette
--------------------------------
To copy the files from the diskette, insert the distribution diskette
and type "A:INSTALL".  The installation program will then ask you a
series of questions.  You may either install Lite in the suggested
directory or specify your own location.  These instructions assume that
you install Lite in C:\LITE286.  If you have 286|DOS-Extender SDK, you
should *not* install Lite in the same directory as the SDK.

If you prefer not to use our interactive installation program
A:INSTALL.EXE, you may copy the files with xcopy:

	C:\> xcopy a:\ c:\lite286\. /s


Step 2: Build a Run-Time Library
--------------------------------
Instead of using the large-model real-mode CL.LIB that comes with
Borland C++, 286|DOS-Extender Lite requires a protected-mode library
called BCL286.LIB.  BCL286.LIB is based on CL.LIB but contains some
small but important modifications for protected mode.  The batch
program \LITE286\BC3\LIB\MKLIB.BAT creates BCL286.LIB from a copy of
CL.LIB.  The new library is created in \LITE286\BC3\LIB.  MKLIB.BAT
does not in any way modify files in the \BORLANDC directory tree.

MKLIB.BAT should be executed while \LITE286\BC3\LIB is the current directory:

	C:\> cd \lite286\bc3\lib
	C:\LITE286\BC3\LIB> mklib l \borlandc\lib

MKLIB.BAT invokes LIB.EXE from Borland C++ 3.1 -- if MKLIB.BAT fails,
check that you installed Borland C++ correctly, and that \BORLANDC\BIN
is in your PATH environment variable.

Step 3: Build a Graphics Library
--------------------------------
Protected-Mode Lite programs can call the Borland Graphics
Interface (BGI).  Just as a special version of the C library
must be built, you must build a special version of the graphics
library.

The batch program which does this is \LITE286\BC3\LIB\MKGRAPH.BAT:

	C:\LITE286\BC3\LIB> mkgraph \borlandc\lib


*******************************************************************************
			Building Sample Executables
*******************************************************************************
To simplify building protected-mode executables, we provide
\LITE286\BIN\BCC286.EXE.  BCC286 acts as a "front-end" to BCC.EXE and
TLINK.EXE, providing them with all the proper options and arguments.  For
complete documentation on BCC286.EXE, consult the file LITE286.DOC.

BCC286.EXE uses certain environment variables to control its operations.
These variables are not strictly required, but we will use them in this
demonstration.

The LIB environment variable contains a list of directories in which to
search for libraries and startup object modules.  This list must include
Lite's library directory in addition to Borland C++'s.

The PATH environment variable must include both Lite's executable directory
and Borland C++'s.

	C:\LITE286\EXAMPLES> set LIB=\lite286\bc3\lib;\borlandc\lib
	C:\LITE286\EXAMPLES> set PATH=\dos;\lite286\bin;\borlandc\bin
	C:\LITE286\EXAMPLES> bcc286 hello.c
	C:\LITE286\EXAMPLES> hello.exe
	Hello from protected mode!

When compiling a program that uses BGI for real mode you link against
GRAPHICS.LIB.  For protected mode, the library to use is GRAPH286.LIB.
Assuming the environment variables are still set as above, then building
a protected-mode BGIDEMO.EXE is as simple as:

	C:\LITE286\EXAMPLES> bcc286 bgidemo.c graph286.lib

LITE286.DOC provides complete details of the build process; it also
describes LITE286.EXE and GORUN286.EXE, the programs which actually
load and execute your program in protected mode.

*******************************************************************************
				What Next?
*******************************************************************************
You have now completely installed 286|DOS-Extender Lite, and are ready to
build multi-megabyte programs.  Please read the file LITE286.DOC for more
information on protected-mode programming.

We sincerely hope that you find 286|DOS-Extender Lite both useful and
easy to use.  If Lite makes you more productive, then consider what our
full-featured 286|DOS-Extender SDK can do for you!  Ordering information
is contained in the files LITEINFO, ORDER.FRM, and INTL.DLR.
原始 1.IMG DISK 1
076 386|DOS EXTENDER 1×HD
README.MDB [展开]
    Copyright (C) 1991 MetaWare Incorporated.  All Rights Reserved.

                       MetaWare Debugger Version 1.13
                         for Extended DOS 80386/486
                                  April 1991

Table of Contents
-----------------

1.  Contents of the Distribution
2.  Configuring the Debugger
3.  Miscellaneous
4.  PC-NFS Notes
5.  AutoCAD Development System
6.  Known Problems
7.  Other Problems


1. Contents of the Distribution
-------------------------------

   The following files on your mdb distribution disk make up the actual
   debugger, mdb examples, and on-line documentation: 

   readme.mdb         - This file.
   bin\cfigmdb.exe    - Debugger user-interface configuration utility.
                         Operates on the color.db file.
   bin\color.db       - Binary file used by the debugger to specify user-
                         interface colors.
   bin\cx.exe         - Executable file compress utility
   bin\dbglib.rex     - Phar Lap-provided debugger interface library loaded
                         dynamically at run time by mdb.exe.
   bin\mdb.bod        - Text of the debugger's on-line help.
   bin\mdb.cnf        - Debugger driver configuration file.
   bin\mdb.env        - Debugger environment file.
   bin\mdb.exe        - Debugger driver program.
   bin\mdb.idx        - Index file for on-line help.
   bin\mdb.txt        - Menu help file used by the debugger.
   bin\mdb1.cx        - Compressed debugger executable
   bin\mon.exp        - Remote debugging monitor.
   examples\mdb_bad.c - Example program used in debugger tutorial.
   examples\mdb_good.c- Example program used in debugger tutorial.

Your mdb distribution disk also contains batch files, scripts and
executable utility programs that we use during the mdb installation.
This group of files is listed below:

   bin\cx.exe         
   mw_db.1
   cleanup.bat
   install.bat
   installit.com
   install1.bat
   install2.bat
   find.exe
   mdbser.exe

2.  Configuring the Debugger
----------------------------

*  Debugger configuration file mdb.env and help files.

   Set environment variable MDBENV to the location of the mdb.env file,
   and MDBHELP to the directory in which the help files reside.

   For example:

      set MDBENV=c:\hc386\bin\mdb.env
      set MDBHELP=c:\hc386\bin

   By default, the debugger looks for its configuration file (mdb.cnf) and its
   help files (mdb.txt, mdb.bod, and mdb.idx) in the directory in which the
   debugger executable (mdb1.exp) is found.

*  To configure run386 command-line switches for the debugger, you may edit
   the mdb.cnf file to set the R386ARGS variable.

   If you hit the MS-DOS command-line limit of 128 characters, you may set
   an arbitrary environment variable, say R386, to the desired switches, and
   set mdb.cnf's R386ARGS variable to %R386.  This will cause run386 to read
   the environment variable as part of the command line.  See Phar Lap's
   run386 documentation for more details.

*  User-Interface Colors

   To change the debugger's user-interface colors, first edit the debugger
   configuration file mdb.env in the \bin directory and set the COLOR variable
   to the location of the color file in the \bin directory.  The debugger will
   use this color file at start-up.  For example:

      COLOR=c:\hc386\bin\color.db

   Then use program cfigmdb to edit color.db and change the colors.  Just run
   cfigmdb and specify color.db at the Color:Load menu choice.

*  Key Macros

   Function keys F2 through F9, all the Alt-F keys, and all the Ctrl-F keys
   can be remapped to any command or macro.  Use the Macro:key menu item to
   remap any of these keys during a debugging session, or edit file mdb.env to
   change the defaults.  These key macros can then be invoked from the
   debugger command line.

*  Start-Up Macros

   To define a group of macros at debugger start-up, edit the debugger
   configuration file mdb.env and set the STARF variable to the location
   of your macro file.  For example:

      STARF=c:\hc386\bin\start.mac


3.  Miscellaneous
-----------------

*  The debugger (mdb) is a protected-mode program; it runs only on an 80386
   or 80486 machine under Phar Lap's 386|DOS-Extender.  To execute the
   debugger, you must have version 2.2b or later of run386.exe available via
   your PATH environment variable.

*  RELOAD to debug a program again.

   The RELOAD command prepares the currently loaded program to be debugged
   again.  The debugging environment (breakpoints, watch windows, and so on)
   remains unchanged.

*  Integer variables are type long.

   The size of an integer is machine dependent.  On the 80386, integers are
   four bytes and are mapped to type long by the debugger.

*  Setting the minimum heap size for a program.

   The KEEPHEAP command displays or sets the minimum initial heap size for a
   program in pages of 4K bytes.  The default is two pages.  Normally, a
   program grows its heap at run time for dynamic memory allocation.  If your
   program is built with the assumption that a large heap will be available at
   start-up, you may use this command to reserve the amount of memory
   necessary for your heap.

*  Expression reevaluation for the EXAMINE command and the Symbol:Examine
   window.

   REEVALUATE [ON | OFF] enables or disables expression reevaluation for the
   EXAMINE command and the Symbol:Examine window.  If neither ON nor OFF is
   specified, the current state of reevaluation is displayed.

   If enabled, examined expressions are reevaluated every time the value of an
   expression may have changed.  Otherwise the expressions are evaluated only
   once and the addresses of the resulting lvalues are watched for a change of
   contents.  By default, REEVALUATE is OFF.

   For example,  consider examining the expression foo[i] when i = 3.  With
   REEVALUATE ON, when i changes, a different element of foo will be
   displayed. With REEVALUATE OFF, a change in i will have no effect, and
   foo[3] will still be displayed.


4. PC-NFS Notes
---------------

   If PC-NFS is installed and there is a network drive on your path, when you
   invoke the debugger you will get a message about a network error, such as:

      Unexpected Network Failure
        Abort, Retry, Fail?

   At this point, if you type "f" the debugger will come up normally.  The
   problem is that the code in the debugger driver that searches your path for
   the DOS extender (run386.exe) provokes an error in PC-NFS.  To eliminate
   this inconvenience, you can provide the debugger driver with the full
   pathname of run386.exe, as follows.

   Edit the file mdb.cnf in the \bin subdirectory of the directory in which
   you installed the debugger.  Find the line that reads:

      #exec  :run386 ...

   and replace it with a line that uses the full pathname of run386, in place
   of ":run386":

      #exec  drive:full\pathname\of\run386 ...


5. AutoCAD Development System
-----------------------------

*  AutoCAD ADS users: please read the ADS appendix in the Debugger User's
   Guide and Reference Manual.


6.  Known Problems
------------------

*  To ensure optimal performance of the debugger, an updated copy of Phar Lap
   file dbglib.rex is included in this distribution.  To make sure this file
   is referenced when linking, your PATH variable must reference the \bin
   directory BEFORE referencing the Phar Lap directory.

*  Graphics debugging is supported only on a VGA monitor with the following
   debugger toggles:

      FLIP ON     /* This toggle must be on.  */
      EGA  OFF    /* This toggle must be off. */

   Graphics debugging on an EGA monitor is possible, but expect inconsistent
   results, because EGA video cards have some read-only registers that the
   debugger cannot restore.  Be sure to set the toggles as defined above.

   EGA Graphics debugging is supported if you are using the TANDEM feature
   of the debugger.

*  DOS program share.exe may cause a program load to fail.

*  RELOAD might fail under Phar Lap's VMM.

*  Multiple breakpoints at one address are not supported.

*  CALLSTACK cannot display register-based arguments.

   Until we provide extensions to debug records, the debugger's CALLSTACK
   command will not be able to locate register parameters.

*  FLIP OFF mode may be confusing when your program requests input.

   If you use FLIP OFF to turn off swapping to the output screen after every
   program step, be aware that if your program requests user input you will
   not be able to view the output screen to see the prompt.

*  The debugger currently does not work under ERGO Computing's OS/386.  We are
   working with ERGO Computing to get the needed support added to OS/386.

*  Reloading AutoCAD kills the debugger.  AutoCAD resets many interrupt
   vectors, and unless it has an opportunity to clean up, the system will be
   very confused.  


7.  Other Problems
------------------

If you think you have discovered a debugger problem, send a problem report to
MetaWare Technical Support.  If possible, please send a test case that
demonstrates the problem.

All problem reports must include your serial number and specify which version
of the compiler you are using.  If your sample code exceeds 15 lines, please
send it by diskette to the address below, or by E-mail to:

   uunet!acad!metaware!tech
             -or-
   Internet tech@metaware.com
             -or-
   INTERNET:tech@metaware.com

MetaWare Technical Support can be reached at (408) 429-6111, 8:00 am to 4:30 pm
Monday through Friday.


MetaWare Incorporated
2161 Delaware Avenue
Santa Cruz, CA 95060-5706
(408)429-6382  FAX:(408)429-9273
RAW 1.raw
原始 1.IMG
077 386|DOS EXTENDER SDK V5.00 3×HD
含有386ASM,386LINK,386DEBUG等,可将EXP文件转换为EXE文件支持MS-C等
078 386/MAX V6.01 1×HD
DPMI管理程序,使其他程序可使用大内存
079 BlackStar C LIB V5.0 1×HD
HIG-C 的图形,TSR,串口,鼠标器,菜单等函数库
README [展开]
       Copyright (C) 1991 MetaWare Incorporated.  All Rights Reserved.

                         BlackStar C Function Library
                                January 1991

Installing the Library
----------------------

To install the BlackStar library files, make a subdirectory on the disk on
which the library is to be installed, change to that directory, and with the
BlackStar diskette in drive A type:

   a:install

For example, if you are installing the library on hard drive C and the
BlackStar diskette is in drive A, type the following sequence of commands:

    c:
    md blackstr
    cd blackstr
    a:install

If you are installing to a hard disk other than C or from a diskette drive
other than A, the install batch file accepts explicit parameters for the
source drive and destination drive.  For example, to install from diskette
drive B to hard drive D:

    d:
    md blackstr
    cd blackstr
    b:install b: d:


Introduction
------------

The complete source code for the BlackStar Library is included in this
distribution, in the following directories:

   clib      - System-independent C source code.

   ibmlib    - System-dependent C and assembly code.

Each of these directories has three object subdirectories that contain files
for recompiling the libraries for use with different High C compilers:

   dx86_o    - Version 1.6 locally optimizing compiler for MS-DOS 80x86.

   d386_o    - Version 1.7 locally optimizing compiler for extended DOS
               80386/486.

   gd386_o   - Version 2.3 globally optimizing compiler for extended DOS
               80386/486.

In each object subdirectory you will find the following batch files:

   comp.bat  - Rebuild libraries.  Make the appropriate object directory (such
               as d386_o) your current working directory, and type "comp".
               comp invokes the compiler driver, setting the appropriate
               macros for the given compiler.

   recomp.bat - Remake only the object modules for which source modules have
               changed.  If you modify a source file, change directory to the
               appropriate object directory and delete the corresponding
               object module.  Then type recomp and the batch file will
               recompile or reassmeble the source files for which object files
               are missing, and then rebuild the library.

NOTE:  The batch files invoke some tools not supplied with High C.  The
386/486 versions of the batch files use the Phar Lap tools 386asm and 386lib.
The 80x86 versions of the batch files use the Microsoft tools masm and lib to
build the libraries.

WARNING:  IF YOU ARE USING MICROSOFT'S LINK.EXE, the linker must be told to
increase the maximum number of segments allowed during the link.  This may be
accomplished by setting the link environment variable with the following
command (which may be included in your autoexec.bat file):

   set link=/SE:400


Structure of this distribution
------------------------------

\source\clib            -- Source code for the machine-independent
                            portions of the BlackStar library.
\source\clib\dx86_o     -- Object modules for the 80x86 libraries.
\source\clib\d386_o     -- Object modules for the 80386/486 libraries.
\source\clib\gd386_o    -- Object modules for the 80386/486 for the
                            globally optimizing compiler libraries.
\source\ibmlib          -- Source code for the machine-dependent
                            portions of the BlackStar library.
\source\ibmlib\dx86_o   -- Object modules for the 80x86 libraries.
\source\ibmlib\d386_o   -- Object modules for the 80386/486 libraries.
\source\ibmlib\gd386_o  -- Object modules for the 80386/486 for the
                            globally optimizing compiler libraries.
\inc                    -- Header files for the BlackStar library.
\lib                    -- Libraries for each of the three High C compilers:
     clibs,ibmlibs      -- Small-model libraries for 80x86.
     clibs,ibmlibc      -- Compact-model libraries for 80x86.
     clibs,ibmlibm      -- Medium-model libraries for 80x86.
     clibs,ibmlibl      -- Large-model libraries for 80x86.
     clibs,ibmlibb      -- Big-model libraries for 80x86.
     clib3,ibmlib3      -- Small-model emulation libraries for 80386/486.
     clibg3,ibmlibg3    -- Small-model emulation libraries for the
                           globally optimizing 80386/486 compiler.

\demos                  -- Source code for programs demonstrating the use of
                            some of the BlackStar functions.
\demos\dx86_o           -- Executables created with the 80x86 compiler.
\demos\d386_o           -- Executables created with the 80386/486 compiler.
\demos\gd386_o          -- Executables created with the 80386/486 globally
                            optimizing compiler libraries.
\utils                  -- Source code for three utility programs which use
                            some of the BlackStar functions.
\utils\dx86_o           -- Executables created with the 80x86 compiler.
\utils\d386_o           -- Executables created with the 80386/486 compiler.
\utils\gd386_o          -- Executables created with the 80386/486 globally
                            optimizing compiler libraries.


Using the BlackStar C Function Library with High C
--------------------------------------------------

If you want to link in the BlackStar libraries every time you link with the
High C driver, set the USERLIB variable in your hcset.cnf or hc386set.cnf
driver configuration file.  If you want to specify the additional libraries
each time you link, use the -l and -L driver options.

If you want the BlackStar include files included in the compiler include
search path, set environment variable SPATH or use driver option -I or
-Hipath.

See the High C Programmer's Guide for more information about these options.


Floating-Point Instructions
---------------------------

The libraries supplied with the distribution are compiled for floating-point
instruction emulation.  If you want to rebuild the libraries to support a
coprocessor, you must edit the files comp.bat and recomp.bat in the _o
directories to add the appropriate command-line option(s) to generate
floating-point code.

For example, to cause the 80x86 compiler to generate 80287 floating-point
code, use command-line option -Hon=Floating_point.

To generate 80387 floating-point code with the 80386/486 compiler, change
command-line option -fsoft in the batch files to -f387.  

See the Programmer's Guide for more information about floating-point code.


Notes
-----

GRAPHICS    -- The gr_fill() function puts dots to the screen in the
               background color, and is slow.  Use the sc_clr() function if
               you want to clear the whole screen or if you can clear to
               character boundaries (bytes).

HEADERS     -- You should include your standard headers before blackstr.h.
               The blackstr.h has #ifndefs for some macros, etc.

INDOSF      -- The utility for indosf (DOS in critical section) is
               undocumented and should be used with care.

MOUSE       -- The mouse functions have not been implemented for the
               80386/486.

INTERRUPTS  -- The interrupt functions have not been implemented for the
               80386/486.  This, also, affects the routine pr_signal() which
               calls the unimplemented function sy_getintv() and
               sy_setintv().

MEMMODELS   -- The library is now distributed and supported for Small, Medium,
               Large, Compact, and Big memory models for the 80x86, and Small
               model for the 80386/486.
RAW 1.raw
原始 1.IMG
080 386/VMM V4.0 1×HD
虚拟内存管理,使HIG-C可使用硬盘来模拟内存
原始 1.IMG VMM_1
081 Demo-II 1×HD
产生程序原型,演示及教学,可用于商业软件的推销
README.ASC [展开]
     ----------------------------------------------
      Companion Diskette for "Programming Windows"
      (c) Charles Petzold, 1992
     ----------------------------------------------

This diskette contains source code and executable (.EXE) files for all the
sample programs described in the third edition of "Programming Windows" by
Charles Petzold (Microsoft Press, 1992). The programs are stored in
subdirectories corresponding to the book chapters.

In the root directory of the companion diskette, you'll find four batch files
named MSC.BAT, BCP.BAT, MSCDLL.BAT, and BCPDLL.BAT. Before compiling the
programs, you must execute MSC.BAT and MSCDLL.BAT if you are using Microsoft
C/C++ 7.0, or BCP.BAT and BCPDLL.BAT if you're using Borland C++ 3.1.

If you want to recreate all the .EXE files, you can run the MAKEMSC.BAT batch
file (for the Microsoft compiler) or MAKEBCP.BAT for the Borland compiler.
082 Norton guide 2×HD
C语言随机帮助程序,驻留内存可随时查看各函数的用法及
RAW 1.raw 2.raw
原始 1.IMG 2.IMG
083 C-SCAPE 2×HD
图形方式用户界面函数库,用于MS-C图形方式下的各种菜单,窗口编辑器,鼠标器的函数库,可处理PCX图象,含有C语言源程序
084 QuantASM Power LIB V1.2 1×HD
含数百个汇编语言子程序原文件,为你编写程序提供极大的方便
README.TXT [展开]
                  Errors and ommissions in the manual   (version 1.22)
                  -----------------------------------

0. See MANUAL.TXT for documentation on new routines.
   See XINDEX.TXT for a cross index of routines to example programs.

1. page 2-2 add:
   ASCIIZ list   zero or more ASCIIZ strings followed by an additional
                 zero (null) byte.

2. page 3-6
   typo in WIN_DISPLAY_LINE:
      ES:SI should be ES:DI
   new feature in WIN_DISPLAY_LINE, WIN_DISPLAY_LINE_ATTR
       -1 for BL centers text on a line
       -1 for BH centers text vertically

3. page 3-15 typo in WIN_DISPLAY_VIEW:
   SDI should be SI

4. page 4-3  in MENU_HORIZONTAL, add:  If DI is zero then the 81-byte
   scratch buffer is set to be immediately after the menu structure.

5. page 4-5 in MENU_MOVE_WORD_CURSOR, change the last sentence to read:
   Single character words or a single character and a period are not
   accepted.

6. pages 5-10, 11 in DRAW_RT_ARROW, DRAW_LF_ARROW, DRAW_UP_ARROW and
   DRAW_DN_ARROW all accept CX as the length of the arrow to draw.



7. page 10-22, 23 error in STR_COMPARE and STR_ICOMPARE
   The outputs for these routines are incorrect. They should read

   outputs:   CF ZF set for conditional jumps
              CX    number of characters matched
              AL    0  if not equal
                    1  if found string 1 null first
                    2  if found string 2 null first

   (Note: the AL information can be used to when trying to locate one
    string within another string, i.e. see STR_LOCATE, STR_ILOCATE)

8. page 11-13, 14 in MEM_COMPRESS and MEM_COMPRESS_W,
   a. error in record type 3, should be:

      record type 3:  db 3
                      dw <repeat count>
                      db <repeated byte>

   b. two new record types:

      record type 5:  db 5 + 16 * (repeat count)
                      db <repeated byte>

      record type 6:  db 6 + 16 * (length)
                      db <data>...

   c. record types 5 - 8 changed to 7 - 10

   d. error in record type 7, (now record type 10) should be:

      record type 9:  db 9
                      dw <repeat count>
                      dw <repeated word>

   e. two new record types:

      record type 11:  db 11+ 16 * (repeat count)
                       dw <repeated word>

      record type 12:  db 12+ 16 * (length)
                       dw <data>...

9. page 16-5 typo in DT_DATE_TO_ASCII
   pointer to time structure should be pointer to date structure

10. page 16-6 typo in DT_ASCII_TO_DATE
    time string should be date string

11. page 16-7 new feature in DT_TIME_TO_ASCII
    am/pm flag can have the value of 3 (12 hr with blank or pm)

12. page B-2 new bits in win_features byte in window structure:
       bits 0-2: not used (set to 0)
       bit 3:   1 = drop shadow (if color)
       bit 4:   1 = box outline uses existing screen attributes
       bit 5:   1 = no box outline
       bit 6:   1 = center the title (win_title_ptr <> 0)
       bit 7:   reserved (set to 0)

13. page B-5 change to MENU STRUCTURE (See QPLSTRUC.INC)
    a. the byte menu_horiz has been changed to menu_type
       0 = vertical menu  (Note: the setup routines handle this automatically)
       3 = horizontal menu
        other values reserved for future use
    (the horizontal tab amount is the menu_bar_width)

    b. the items marked menu_jmp_tbl and menu_jmp_tbl2 are not used, but
       will be in a future release, set these to zero.

    c. the check mark operation has been changed.
       1. menu_check_flag is now menu_check_cnt and is the number of items
          that may be "checked" off. Set to zero to disable.
       2. menu_check_rcol and menu_check_rrow are the relative column
          and row for the check mark, based on 0,0 being the leftmost
          column and row of the highlight bar.
       3. menu_check_bits is a word containing bits set for each item
          that are currently "checked". If you preset this value to
          other than zero, then be sure to not have more bits set than
          specified in menu_check_cnt.  (See example XCHECK)


                            **************
                            ***  NOTE  ***
                            **************

14.
  a. To assemble and link the examples:

   MASM %1;
   LINK/CP:1 %1;

   where %1 is the name of the example program (without the .ASM)

   The /CP:1 command line option changes the program's maximum memory
   allocation to the minimum required.

  b. For your code (when using WIN_INIT) you may:
     1) link with  LINK/CP:1  or use EXEMOD/MAX
     or
     2) use dos function 4Ah at the start of your code to shrink the
        amount of memory being used.
     or
     3) declare fixed size segments in your code for the init_buf_seg
        and init_tmp_seg in the window initialization structure (See
        Appendix B, page 6)
     or
     4) any logical combination of 1,2 and 3.
RAW 1.raw
原始 1.IMG
ESC返回光盘列表 85 个软件 · CD 5