Files
TeslaRel410/BORLAND/INSTALL/BC45
CydandClaude Fable 5 63312e07f9 source410: literal 4.10 source reconstruction + BC++ 4.52 fleet toolchain archived
- BORLAND/: Borland C++ 4.52 (chosen over 4.5 by byte-match: CODE/RP/CW32.LIB
  is identical to 4.52's install lib). BCC32/TLINK32/TLIB/MAKE run natively on
  Win11; CODE/BT/OPT.MAK is the shipped BTL4OPT.EXE's exact flag recipe
  (extender = Borland PowerPack DPMI32, not Phar Lap TNT).
- restoration/source410/: the literal 1995-form reconstruction of the missing
  BT game source (never mixed into CODE/). Round 1-3 state:
  * 6 of 10 surviving original TUs COMPILE CLEAN under the period toolchain
    (BTMSSN, BTCNSL, BTSCNRL, BTTEAM, BTL4MODE, BTL4ARND) - first builds
    since 1996.
  * BT_L4/BTL4APP.CPP pilot reconstruction: 12/12 functions, Fail() lands on
    its binary-recorded line 400 exactly.
  * BT/BTCNSL.HPP: console wire IDs recovered from the binary's ctors
    (Killed=9, Damaged=10, ScoreUpdate=13, DeathWithoutHonor=15 [T1];
    TeamScore=12 flagged [T4]).
  * MUNGA/: 8 engine-header backfills back-dated from the BT412 WinTesla tree
    (VDATA numbering decomp-verified; AUDREND's OpenAL-era virtual removed -
    the period compiler is the drift detector).
  * Tooling: backdate.py (WinTesla->1995 header transform), compile410.sh
    (per-TU verification sweep under authentic OPT.MAK flags).
  * README: corrected roadmap - MECH.HPP is the capstone grown with the mech
    TU reconstructions; BTREG.CPP green = the header-family milestone.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-19 07:33:26 -05:00
..

                        *****************************

                         WELCOME TO BORLAND C++ 4.52

                        *****************************



This README file contains important information about

BORLAND C++.  For the latest information about Borland C++

and its accompanying programs, read this entire file.



*****************

TABLE OF CONTENTS

*****************

1.  How to Get Assistance

          -- Sources of information

2.  Installation

          -- Installing Borland C++ on your hard disk

3.  New Features

4.  Important Information

          -- ObjectComponents Framework (OCF), OLE 2.0, 

             and ObjectWindows 2.5

                   -- New files in WINDOWS\SYSTEM directory

                   -- New tools for registering OLE servers and

                      automation controllers

                   -- Registering a debugger to run an OLE server

                   -- Debugging OLE applications under Windows NT

                   -- WinSight

                   -- OLE error codes

                   -- OLE2 applications

                   -- OLE implementation under Windows NT

                   -- OLE2 compiler options

          -- VBX Support (including 32-bit)

          -- OpenHelp

                   -- OpenHelp with TASM and PowerPack

          -- Out of Memory and MAKESWAP

          -- Threads

          -- DDVT functions and RTTI

          -- Inline assembly and interrupts

          -- Creating 16-bit import libraries from .DEF files

          -- New Compiler Back-end and Pentium scheduler support

          -- New Compiler Switches and Linker Optimizations

          -- NOEHxx Libraries

          -- IDE/Integrated Debugging

          -- InProc servers and the IDE

          -- Turbo Debugger for Windows

          -- Using Tools with NTFS

          -- CTLDATA statements in Win32

          -- Running from a Windows 3.1 DOS Prompt

          -- Converting Borland C++ 3.1 to Borland C++ 4.52 code

          -- Floating-Point Formats

          -- WinRun

          -- AppExpert and OWL

          -- Online Registration



*********************************************

1. HOW TO GET ASSISTANCE

*********************************************

If you have any problems, please read this file, the HELPME.WRI and other

files in your DOC subdirectory, and check the on-line help. If you still

have a question and need assistance, help is available from the following

sources:



  1. 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.



  2. For immediate assistance with everything from configuring Borland C++

     to C++ 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)



     For assistance outside of North America, contact your local Borland 

     representative.



  3. To receive Technical Support for Borland Database Tools, please call:

     1-800-839-9777



  4. For on-line access to the Borland CompuServe forums, with their 

     libraries of technical information and answers to common questions,

     type



     GO BCPPDOS   - for questions pertaining to DOS

     GO BDEVTOOLS - for questions pertaining to Borland Database Tools

     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.



  5. Borland's TECHFAX service. Call (800) 822-4269 for a FAX

     catalog of technical document entries. For assistance outside of 

     North America, contact your local Borland representative.



  6. Borland DLBBS. Dial (408) 431-5096 (up to 9600 baud, 8-N-1)

     for a host of free technical documents and example programs.



  7. Technical information on Borland C++ is available on the Internet

     via anonymous ftp at our ftp site ftp.borland.com and via the

     World Wide Web at the URL http://www.borland.com.



  8. Subscribe to Borland's free electronic newsletter and get a regular

     update on the hottest programming tips and tricks.  Send your full

     name and address via electronic mail to tech-info@borland.com.



=============== 

2. INSTALLATION 

=============== 

IMPORTANT!

Do not install Borland C++ 4.52 over previously installed

Borland C++ directories from versions 4.5 or earlier. 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.



If you used Turbo Assembler 4.0 or the Borland Power Pack

for DOS with a previous installation of Borland C++, you

must reinstall those products after installing Borland C++

4.52.



If you used CodeGuard for Borland C++ 4.5 with a previous

installation of Borland C++, you must reinstall CodeGuard

after installing Borland C++ 4.52.



Also, be especially careful when using object files and

libraries from earlier Borland C++ versions 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.



Do not use long file names when installing under Windows

NT.



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

Installing Borland C++ 4.52 on your hard disk

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



For information about installing Borland C++ 4.52 from

CD-ROM, see the CD booklet.



To install Borland C++ 4.52 from floppy disks,

1.  Put disk 1 in your floppy drive.

2.  In Program Manager, choose File|Run.

3.  Type A:\INSTALL. (If your disk drive is not drive A, type the

    appropriate letter instead.)

4.  Choose OK.

5.  Follow the instructions on the screen.



Diagnostic and debug version of OWL are not installed to the

hard disk, but they can be copied from the CD or built from

OWL source using the makefile provided.



Users of ObjectWindows 1.0, Turbo Vision 1.0, or the Paradox

Engine should read the COMPAT.TXT file for information on

using these products with Borland C++ 4.52.



To get Turbo Profiler, you must install the debuggers.



**** Note to Windows NT, OS/2, and Windows 95 users ****



If you intend to use Borland C++ under any of these

platforms you must follow some additional installation

steps, which are listed in the INSTALL.TXT file.  If you

fail to read and follow these configuration guidelines, you

may encounter several significant problems when using

Borland C++.



The following files which appear in the BC45\BIN directory

are intended for Windows 3.1 and may not work correctly in

conjuction with 32-bit applications running under Windows

95:



DIB.DRV

YESMOUSE.DRV

VGAP.DRV

MSMOUSE.DRV



However, certain 16-bit applications require these drivers to run.



For more information about installing and configuring

Borland C++, see the file INSTALL.TXT which can be found in

the following locations:



* Borland C++ floppy disk 1 (INSTALL.TXT)

* Borland C++ CD-ROM (\BC45\INSTALL.TXT)





***************

3. NEW FEATURES

***************



Borland C++ 4.52 is an update to 4.51.  The main difference

is the upgrading of header files and import libraries to

support the Windows 95 programming.  There is a new version

of the OWL libraries (2.52) to accommodate some altered

structure definitions in the new Win32 headers.  In addition,

4.52 makes small improvements to our VBX support.  For a

more specific list of updated files, see INSTALL.TXT.



The rest of this section describes what was new in 4.5 for

users who are upgrading from earlier versions.



Borland C++ 4.5 includes the following new features:



  * A complete encapsulation of OLE2 via new ObjectWindows classes

    and the ObjectComponents Framework, a new set of C++ classes. This

    allows you to develop applications that support the following

    OLE capabilities in both 16 and 32-bits:

          - Linking and embedding containers

          - Linking and embedding servers

          - Automation servers (automatable servers)

          - Automation controllers

          - OLE clipboard operations

          - OLE drag and drop operations

          - In-place editing

          - OLE user interface, including menu merging, pop-up menu

            for activated object, verbs on container's Edit menu

          - Compound file storage

          - Registration

          - Localized strings for international support

          - Type libraries

  * IDE enhancements to TargetExpert, AppExpert, and ClassExpert to

    support the new OLE2 capabilities.

  * A new, faster, default compiler back-end.

  * The 16-bit Profilers (TPROF and TPROFW) have returned to the product.

  * VBX support for 32-bit programs.

  * OpenHelp, a utility that enhances the functionality of Windows Help

    by allowing you to quickly search for topics across Help files, as

    well as the ability to add your own Help files (or remove them) from

    the search.

  * Visio OLE Testbed, a subset of Shapeware's drag-and-drop drawing

    program. You can use Visio OLE Testbed to test OLE compound documents,

    objects, and automation with applications you create using Borland C++.

  * WinRun allows you to launch Window application from the MS-DOS prompt

    in Windows 3.1.

  * For CD-ROM users, the complete Borland C++ manual set is now available

    online in the DynaText document viewing browser. Using DynaText, you 

    can search through the entire collection of books to find selected

    topics. You can view the contents of a single book page by page or 

    even print the complete documentation set. See the booklet in your

    Borland C++ 4.52 CD-ROM case for information about how to launch and

    use the DynaText Browser.  Complete information on how to use DynaText

    is available in the online Help for the Browser.

  * Improved EasyWin provides scrolling and printing support for character

    based Windows applications.

  * Software based correction for the FDIV flaw in older Pentium chips.

    For more information, see BCW.HLP.



************************

4. IMPORTANT INFORMATION

************************

This section contains important information not found in the manuals, 

online Help, or online text files.  Please read through this material

in its entirety.



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

ObjectComponents Framework (OCF), OLE 2.0, and ObjectWindows 2.5

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



New file In WINDOWS\SYSTEM directory

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



Borland C++ 4.52 installs new files called BOCOLE.DLL and

BOCOF.DLL in your WINDOWS\SYSTEM directory. These libraries

must be present in order for 16 and 32-bit ObjectComponents

programs to execute respectively.  BOCOFW.DLL is a unicode

implementation of BOCOF.DLL which can be rebuilt from

source or copied from the CD-ROM.  BOCOFW.DLL is for use on

Windows NT only.



New tools for registering OLE servers and automation controllers

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



The program tool AUTOGEN simplifies the task of writing

proxy classes for an automation controller. AUTOGEN reads

type libraries (*.OLB; *.TLB) and emits C++ source files

containing the proxy objects. The REGISTER and GUIDGEN

utilities provide a means of registering and unregistering

servers and generating unique identifiers.



Registering a debugger to run an OLE server

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



To make OLE invoke your server through the debugger, add the

following entry to the appropriate registration table.



     REGDATA(debugger,   "TDW")



You can specify a complete path to the debugger as well as

command-line options for the debugger.  Do not place the

name of the server program on the debugger command line.

That will happen automatically.



If you want to choose at runtime whether to invoke the

server with or without the debugger, then each application

or document must essentially be registered twice, using

different CLSIDs, progids, and descriptions. The debug and

non-debug entries will appear simultaneously in object

browsers.  The debug invocation will have the /Debug flag

on the command line; this will in turn register the

application class factory for the debug registration

instead of the normal registration. To test for the

presence of /Debug on the command line, call this function:



      TOcModule::IsOptionSet(amDebug);



If you register debugprogid, you should also register both

debugdesc and debugger. The debug description string

distinguishes the debugging and non-debugging registry

entries for the user. If you register debugprogid, the

debugger entry will be used only for the debug

registration.



These are typical debug entries:

     REGDATA(debugprogid,"MyDocument.Debug")

     REGDATA(debugdesc,  "MyDocument Debug Object")

     REGDATA(debugger,   "TDW")



There is also a debugclsid entry, but you don't have to

register it yourself because ObjectComponents generates it

for you automatically by offsetting the application's

clsid.



The application registration is used for automation

invocations, and document registrations are used for

linking and embedding invocations.  Any or all can be set

up for dual registration.



For DLL servers, the registration debug entries are

completely ignored.  To debug DLL servers, use the

REGISTER  tool with the -Debug command-line option. This

will launch the DLL and break inside, allowing breakpoints

to be set. Do not close the message box until the debugging

session is complete.



Debugging OLE applications under Windows NT

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



When debugging OLE applications under Windows NT 3.5, you

may experience a lock up if a program is forced to

terminate.  This will happen when any OLE application is

running under the IDE and you explicitly request Debug |

Program Terminate, or implicitly request program termination

by closing a project.  This problem will not occur under

Windows 3.1 or Windows 95, and will not happen with non-OLE

applications.  Borland recommends that all developers

running under NT accept any updates to the NT OLE DLLs if

and when they are made available by Microsoft.



WinSight

--------



When WinSight spies on an ObjectWindows OLE container, it

sometimes causes corruption of the container's menus.  This

behavior is expected.  If it occurs, quit the application

and start again.



OLE error codes

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



The file DOC\OLE_ERRS.TXT contains a list of the error codes

OLE defines.  The list is sorted in numerical order.  Refer

to it for help in interpreting OLE-related error returns.



OLE2 applications

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



Many commercial products are now offering their first

generation of OLE2 enabled applications. Some of these

applications are more complete OLE implementations than

others. Borland has observed several major commercial

applications that exhibit errant behavior when asked to

perform certain OLE operations. This is especially true when

asked to embed DLL servers, which many OLE applications

appear to be unprepared to handle. If you experience

problems when using OLE applications you create with

Borland C++ in conjunction with third party products, do

not jump to the conclusion that the problem is yours.  Until

OLE applications in the market place mature, it is not yet a

safe assumption that just because a product comes from a

leading company that it is robust. Changes introduced

between OLE 2.0 and OLE 2.02 are responsible for exposing

some of these problems. When reporting bugs in OLE

applications to third parties, be sure to specify that they

should be developing and testing under the latest version

of OLE.



OLE implementation under Windows NT

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



The 16 bit OLE implementation originally shipped in Windows

NT 3.5 may exhibit problems with DLL servers and may behave

differently than the version of OLE that MS recommends for

Windows 3.1. Borland recommends that all NT developers

update to later versions of the NT OLE DLLs if and when

they are made available by Microsoft.



OLE2 compiler options

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

1) 32 bit OLE2 projects must increase the identifier length to 55.

   You can do this with the command line compiler -i switch or in the IDE

   with the Options|Project|Compiler|Source edit field.

2) When using 32-bit OLE2, INC_OLE2 must be defined. You can do this on the

   command line with -DINC_OLE2 or in the IDE in the

   Options|Project|Compiler|Defines edit field.

3) When linking 16 or 32 bit OLE2 modules, the OLE2 import library

   (ole2w16.lib or ole2w32.lib) must come before the RTL import library 

   (import.lib or import32.lib respectively).





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

VBX Support (including 32-bit)

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

The BIVBX102.DLL has been renamed to BIVBX11.DLL.



BIVBX11.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 might appear to work but exhibit instability. Please

contact the control vendor and explain the problem. They might have an

updated control or might be able to contact Borland to find a solution.



The following functions in BIVBX.H are limited to 16-bit only and should be

replaced as follows:



 Old (16-bit only)         New (16-bit and 32-bit)

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

 VBXGetBasicStringPtr      VBXGetBasicStringBuf

 VBXGetCStringPtr          VBXGetCStringBuf

 VBXGetEventName           VBXGetEventNameBuf

 VBXGetPropName            VBXGetPropNameBuf

 VBXLockCString            VBXLockCStringBuf

 VBXMethod                 N/A



To build any 32-bit application that uses VBX controls, link with

BIVBX32.LIB instead of BIVBX.LIB. VBX support for 32-bit applications

requires that the following files are present in the Windows

\SYSTEM directory at run-time:



All:           BIVBX11.DLL

Win32s:        BIVBX11S.DLL and BIVBX11.32S

Windows95:     BIVBX11C.DLL and BIVBX11.32C

NT:            BIVBX11N.EXE and BIVBX11.32N (installed in \SYSTEM32)



For more information, see the BIVBX.WRI file.



TargetExpert now manages libraries for VBX controls.   If you have an IDE

project which uses VBX controls, make the following change  to your project

to take advantage of TargetExpert support:

- In the project window, delete the bivbx.lib node.

- In the project window, right click on your EXE node.

- From the resulting SpeedMenu, select TargetExpert.

- In TargetExpert, enable the VBX checkbox and press OK.



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

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.



----------

OpenHelp

----------

See the online Help provided with OpenHelp (OPENHELP.HLP) for details on how

to use and configure this new search engine.



OpenHelp with TASM and PowerPack

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

If you install TASM with BC 4.52, you need to run the OpenHelp configuration

to configure your Help files. If you install PowerPack, the BCDOS.HLP file

will be overwritten. However, the .HLX index file will not include index

entries for the new BCDOS.HLP file. To fix this, remove BCDOS.HLP from

OpenHelp and re-add it so that a new .HLX file is generated. You can delete

the BHBC4.HDX file from the \BIN directory because it is no longer needed.



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

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.



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

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.



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

New Compiler Back-end and Pentium scheduler support

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

Borland C++ 4.52 includes two different compiler back-ends. By

default, the IDE uses BCWS32.EXE and the command line uses BCC32.EXE. 

(Both 32-bit compilers use the same front-end.) However, if your application 

requires special Pentium scheduler support, then you must use BCWS32A.EXE 

from the IDE or BCC32A.EXE from the command line. 



To configure the IDE so that it uses BCWS32A.EXE:

1) Use a text editor to open the file \WINDOWS\BCW.INI.

2) Add the following lines to the file and then save the file:

   

   [SERVER]

   Server32=BCWS32A.EXE



The BCWS32A and BCC32A compilers reorder certain assembly instructions

so that they take advantage of the Pentium scheduler. However,

BCWS32A.EXE and BCC32A.EXE have the disadvantage of longer compile

times. Because the executable files produced by BCWS32.EXE and

BCC32.EXE run on all 80386 systems and greater, it's recommended

that you always use these default compilers, except when you need the

special support of the Pentium scheduler.



If you use the BCC32A.EXE command-line compiler, you can specify Pentium

scheduler support using the -5 command-line option. To specify Pentium

scheduler support for the BCWS32A.EXE IDE compiler, open the Project

Options dialog box and check 32-bit Compiler|Processor|Pentium setting.

Note that the default compilers do not support these option settings.



BCC32.EXE and BCW32S.EXE evaluate function parameters in the order they are

pushed on the stack as opposed to BCC32A.EXE and BCW32A.EXE, which evaluate

parameters from left to right. This difference in the order of evaluation is

important if, for example, functions called in parameter evaluations cause

global side effects. According to the ANSI C/C++ language specifications,

the evaluation of function parameters is implementation dependent.



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

New Compiler Switches and Linker Optimizations

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

See your documentation for a description of the new compiler switches

for exception handling and a list of the new optimization capabilities

as well as the new command-line linker options.



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

NOEHxx Libraries

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

Purpose:



The NOEHxx libraries eliminates the overhead of exception-handling code in

the run-time library for users who don't need it and who do rely on any

libraries that require it.



How to use:



A NOEHxx library must be linked in before the standard runtime library.

For command-line tools this can be accomplished by specifying the appropriate

NOEHxx library on the BCC command-line, or making it the first library given

to TLINK.



For the IDE, add the appropriate library to the project using AddNode.

To ensure the NOEHxx library is processed before the standard libraries,

turn on "Show Runtime Nodes" in the Options|Environment|ProjectView dialog.

From the project window you can move the library up and down using the

ALT-<arrow> keys. Be sure the NOEHxx library appears before other standard

libraries. Note: use NOEHWL.LIB when building DPMI16 programs.



What they do:



The NOEHxx libraries resolve calls to exception-related compiler helper

functions to dummy functions that return appropriate return values. They

also restore the pre-exception behavior of operator new to return NULL on

out of memory conditions. Non-exception enabled versions of setjmp() and

longjmp() are also provided.



Limitations:



Note: some features introduced in BC4.0 require exception handling.

These include the string class, BIDS container classes, the standard

OWL libraries, and RTTI.



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

IDE/Integrated Debugging

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

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.



DDE applications must be debugged in hard mode.



Hard-mode debugging does not work reliably under Windows NT version 3.1,

and might crash the WOW session. The IDE disallows users from selecting

hard mode on all stops, but setting a breakpoint on certain Windows

messages might cause the debugger to go into hard mode.



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

InProc servers and the IDE

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

You must delete bcwdef.* files from BC++ 4.0 or 4.02 in order to use the

OleRegisterServer and OleUnregisterServer tools from the IDE SpeedMenu.



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

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



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

Using Tools with NTFS

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

When you are using Borland C++ 4.52 tools under NTFS, be aware of assumptions

about file extensions. If Borland C++ 4.52 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.



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

CTLDATA statements in Win32 

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

Different implementations of the Win32 API require different alignment rules 

applied to DLGITEMTEMPLATE data structures. For most dialog templates,

this difference has no effect because most programmers do not use this

statement. If, however, a dialog template uses the CTLDATA statement to

pass initialization data to a custom control, the data may not be passed

properly, or the dialog may fail to display properly or even at all, or the

program may receive a general protection fault. Borland's resource compilers

produce DLGITEMTEMPLATE data structures according to the alignment rules

applied by Win32s and Windows 95. Therefore, dialog templates using 

CTLDATA statements compiled using Resource Workshop, BRCC32, or BRCC may

not work in Windows NT. Note that this warning applies only if a template

uses the CTLDATA statement. All other templates work correctly in all

known implementations of the Win32 API.



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

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.  Thus, any

      amount set in the 'Required:' setting box is unavailable.



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

Converting Borland C++ 3.1 Windows Code to Borland C++ 4.52

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



To get your BC++ 3.1 code to compile and run under Borland

C++ 4.52, modify your code to reflect three character types

where compiler errors occur when using the Borland C++ 4.52

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.



Some 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.



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

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 this error in a number of different

ways, check the following list of potential causes to find

out how to resolve the error.  The causes are listed in

order of most common to least common.



  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 over-optimizing, 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);



--------

WinRun

--------



WinRun is a utility that lets you run a Windows program in a

DOS box. This utility is especially useful if you need to

run Windows programs from a DOS box in order to build

certain ObjectWindows OLE-enabled applications.  It

requires Windows 3.1 Enhanced mode. 



On the command line, you can optionally add /a or /w or /aw 

switches.  (Autodetect and Wait mode)



The install program automatically adds WinRun to your

startup group.



Switches for WinRun:



If you have selected the AutoDetect mode,(either by WinRun's

command line switch /a, or setting it in WinRun's system

menu), you can simply type BCW in a DOS box, and BCW will

launch. You can still use WR to launch an application, (for

example to override the current Asynch mode setting with

wr.exe's /w or /a switches) However, this switch slightly

affects the loadtime of all DOS programs though it is

minimal in cases where you are using a disk caching.



The Asynchronous mode (selectable through WinRun's menu or

/w command line switch) causes the DOS box NOT to wait for

the Windows application to finish. Instead, it will always

return with an exit code of 0.  In synchronous (wait) mode,

the DOS box will be suspended until the Windows application

terminates, and the exit code will be propagated to the DOS

box.



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

AppExpert and OWL

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



The value of the IDS_LISTNUM define in OWL has changed since

BC++ 4.02.  If you have created an application in BC++ 4.0

or 4.02 using AppExpert, you will receive redefinition

warnings when rebuilding in BC++ 4.52.  To correct this

problem, update the .RH file for your project to match the

new value for this define.  Specifically, the following

line



#define IDS_LISTNUM 32582



should be changed to



#define IDS_LISTNUM 32584



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

Online Registration

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



Borland C++ now features online registration capability, to

make it easier than ever to register your copy of Borland

C++.  Registration gains you access to Borland customer

support and assures that you will be among the first to be

notified of new product information and special upgrade

pricing.



Under Windows 3.1x, the registration utility adds the

program remind.exe to the load statement in your WIN.INI

file.  If you do not want to be reminded to register your

copy of Borland C++ remove remind.exe from your load

statement.



Removing the reminder under Windows NT requires editing the

system registry.



Begin by launching the Registry Editor, REGEDT32.EXE,

located in your SYSTEM32 directory.  Select the

HKEY_CURRENT_USER window and go into the folder



    hkey_current_user/Software/Microsoft/Windows NT/CurrentVersion/Windows



There you'll see a "load:" line with the path to REMIND.EXE.

Double click on that line and delete it.