{
  "disks": {
    "1": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "INSTALL  EXE",
              "size": 133194,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "UNZIP    EXE",
              "size": 23044,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "README   COM",
              "size": 4217,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "README",
              "size": 48845,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLASSBLD ZIP",
              "size": 2007,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLASSINC ZIP",
              "size": 54720,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK1    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "FILELIST DOC",
              "size": 110776,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "INCLUDE  ZIP",
              "size": 60803,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TD       CA2",
              "size": 224538,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TDW      CA2",
              "size": 72149,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TVINC    ZIP",
              "size": 39877,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP2   CA3",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "10": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "TVHELP   ZIP",
              "size": 89336,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WBIN     CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WBIN     CA2",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WINLIB   CA2",
              "size": 190176,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLIBSRC  ZIP",
              "size": 61756,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLIBSRC1 ZIP",
              "size": 85682,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK10   DSK",
              "size": 6,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "IOSTRSRC ZIP",
              "size": 41523,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "11": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DISK11   DSK",
              "size": 7,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLIBSRC2 ZIP",
              "size": 117289,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "IOSTRSR1 ZIP",
              "size": 65537,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "MATHSRC  ZIP",
              "size": 116296,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "RTLINSRC ZIP",
              "size": 28639,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TDUTIL   ZIP",
              "size": 267774,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TPROF    ZIP",
              "size": 356027,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TPROFW   ZIP",
              "size": 240411,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "12": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "CLASSLIB ZIP",
              "size": 135600,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLASSSRC ZIP",
              "size": 33726,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLIBSRC3 ZIP",
              "size": 199010,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CMDLINE  CA2",
              "size": 108563,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK12   DSK",
              "size": 7,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "RW       CA3",
              "size": 108927,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TASM     CA2",
              "size": 13785,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TVLIB    ZIP",
              "size": 171156,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WBIN     CA3",
              "size": 157180,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WINLBSRC ZIP",
              "size": 64075,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "2": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "WHELP2   CA4",
              "size": 315063,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BC       CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BGI      ZIP",
              "size": 122261,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BIN      ZIP",
              "size": 240221,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CALC     ZIP",
              "size": 7188,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DLOBJ    ZIP",
              "size": 518,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK2    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWLINC   ZIP",
              "size": 42810,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWLSRC   ZIP",
              "size": 77066,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "3": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "CMDLINE  CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TVDEMOS  ZIP",
              "size": 76512,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TVSRC    ZIP",
              "size": 163696,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WCOBJ    ZIP",
              "size": 509,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WLOBJ    ZIP",
              "size": 518,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK3    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BINDLL   ZIP",
              "size": 183262,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BONK     ZIP",
              "size": 31486,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CHECKERS ZIP",
              "size": 28014,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CURSOR   ZIP",
              "size": 6137,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "EXAMPLES ZIP",
              "size": 29476,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "GDIDEMO  ZIP",
              "size": 20089,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWL      ZIP",
              "size": 313,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "STARTUP  ZIP",
              "size": 17801,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TASMEXMP ZIP",
              "size": 46309,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TDWEXMPL ZIP",
              "size": 154210,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHEREIS  ZIP",
              "size": 70937,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "4": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "WEXAMPLE ZIP",
              "size": 140985,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP2   CA2",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WINLIB   CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WMOBJ    ZIP",
              "size": 518,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WSOBJ    ZIP",
              "size": 509,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLIB     ZIP",
              "size": 128581,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "FILEAPP  ZIP",
              "size": 3665,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK4    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "HEAP     ZIP",
              "size": 20590,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "LLIB     ZIP",
              "size": 129378,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWLDOC   ZIP",
              "size": 24415,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "RWDOC    ZIP",
              "size": 25025,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "5": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "OWLDEMOS ZIP",
              "size": 97903,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "RWCDEMO  ZIP",
              "size": 54343,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP1   CA3",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP1   CA4",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP1   CA5",
              "size": 188215,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WINCLUDE ZIP",
              "size": 57510,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK5    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BATSRC   ZIP",
              "size": 10669,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BWCC     ZIP",
              "size": 45135,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "CLASSEXM ZIP",
              "size": 13441,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "6": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "DOC      ZIP",
              "size": 131048,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "FILT     ZIP",
              "size": 54797,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "HLIB     ZIP",
              "size": 133024,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "IDE      ZIP",
              "size": 43379,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK6    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "MFILEAPP ZIP",
              "size": 5189,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "MLIB     ZIP",
              "size": 126143,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "PAINT    ZIP",
              "size": 10882,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "PROGTALK ZIP",
              "size": 7702,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "QUEUE    ZIP",
              "size": 8057,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "SLIB     ZIP",
              "size": 128759,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "SYSINFO  ZIP",
              "size": 4745,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TASM     CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TTT      ZIP",
              "size": 6658,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "EMUSRC   ZIP",
              "size": 21042,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "STEPS    ZIP",
              "size": 32576,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TCALC    ZIP",
              "size": 23700,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "XLIB     ZIP",
              "size": 72387,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "INDEPSRC ZIP",
              "size": 10502,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "7": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "WHELP1   CA2",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWLLIB   CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "OWLLIB   CA2",
              "size": 213839,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK7    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BC       CA2",
              "size": 247967,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "8": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "RW       CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "RW       CA2",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TD       CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK8    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TDEXMPL  ZIP",
              "size": 41188,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TFEXMPL  ZIP",
              "size": 86232,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    },
    "9": {
      "dirs": [
        {
          "path": "/",
          "files": [
            {
              "name": "TDW      CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP1   CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "WHELP2   CA1",
              "size": 361472,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "TVDOCDEM ZIP",
              "size": 70383,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "DISK9    DSK",
              "size": 5,
              "date": "1991-11-11",
              "time": "3:00"
            },
            {
              "name": "BINSRC   ZIP",
              "size": 8067,
              "date": "1991-11-11",
              "time": "3:00"
            }
          ]
        }
      ]
    }
  },
  "desc_file": "README",
  "desc_text": "          Welcome to Borland C++ & Application Frameworks 3.0\r\n          ---------------------------------------------------\r\n\r\n  This README file contains important information about Borland C++.\r\n  For the latest information about Borland C++ and its accompanying\r\n  programs and manuals, read this file in its entirety.\r\n\r\nTABLE OF CONTENTS\r\n-----------------\r\n1.  How to Get Help\r\n2.  Installation\r\n3.  Features\r\n4.  Important Information\r\n5.  Testing Your Expanded Memory\r\n6.  Corrections to the Documents\r\n\r\n\r\n 1. HOW TO GET HELP\r\n-------------------\r\n  If you have any problems, please read this file, the\r\n  HELPME!.DOC and other files in your DOC subdirectory, and the\r\n  Borland C++ manuals first. If you still have a question and\r\n  need assistance, help is available from the following sources:\r\n\r\n  1. Type GO BPROGB on the CompuServe bulletin board system for\r\n     instant access to the Borland forums with their libraries of\r\n     technical information and answers to common questions.\r\n\r\n     If you are not a member of CompuServe, see the enclosed\r\n     special offer, and write for full details on how to receive\r\n     a free IntroPak containing a $15 credit toward your first\r\n     month's on-line charges.\r\n\r\n  2. Check with your local software dealer or users' group.\r\n\r\n  3. Borland's TECHFAX service. Call (800) 822-4269 for a FAX \r\n     catalog of entries.\r\n\r\n  4. If you have an urgent problem that cannot wait and you have\r\n     sent in the license agreement that came with the package,\r\n     you may call the Borland Technical Support Department at\r\n     (408) 438-5300. Please have the following information ready\r\n     before calling:\r\n\r\n     a. Product name and serial number on your original\r\n        distribution disk.  Please have your serial number ready\r\n        or we will be unable to process your call.\r\n\r\n     b. Product version number. The version number for Borland\r\n        C++ can be displayed by pressing Alt-H/A in the IDE.\r\n\r\n     c. Computer brand, model, and the brands and model numbers of\r\n        any additional hardware.\r\n\r\n     d. Operating system and version number. (The version number\r\n        can be determined by typing VER at the DOS prompt.)\r\n\r\n     e. Contents of your AUTOEXEC.BAT file.\r\n\r\n     f. Contents of your CONFIG.SYS file.\r\n\r\n\r\n 2. INSTALLATION\r\n----------------\r\n\r\n  You MUST use the INSTALL program to install Borland C++. The\r\n  files on the distribution disks are all archived and have to be\r\n  properly assembled.  You cannot do this by hand!\r\n\r\n  To start the installation, change your current drive to the one\r\n  that has the install program on it and type INSTALL.  You will\r\n  be given instructions in a box at the bottom of the screen for\r\n  each prompt. For example, if you will be installing from drive\r\n  A:, type:\r\n\r\n    A:\r\n    INSTALL\r\n\r\n  -  This INSTALL handles the installation of both the compiler\r\n     and debugger and tools in one operation, and allows several\r\n     new configuration options.\r\n\r\n  -  Note: The list of files is contained in a separate file\r\n     called FILELIST.DOC, which will appear in the target\r\n     directory you specify during installation.\r\n\r\n  -  After installation, make sure you insert \\BORLANDC\\BIN - or\r\n     whatever you selected as your BIN directory - into\r\n     your DOS path so the DLL and executable files can be found.\r\n\r\n  -  If you have previously installed Resource Workshop, make sure\r\n     that you remove the directory of that version from your path. The\r\n     version included on these disks supercedes previous versions.\r\n\r\n  -  If you use a Windows command shell other than Program Manager,\r\n     you may not get a Borland C++ group installed for Windows. If\r\n     you don't, use File|Run in Program Manager to run the following\r\n     command:\r\n\r\n          GROUPS GROUPS.B$$\r\n\r\n     You will then have a new group for Borland C++.\r\n\r\n  -  If you chose to put Turbo Debugger files in a non-default\r\n     directory which is not on your path, you will need to copy\r\n     WINDEBUG.DLL from that directory to one which is on your path if\r\n     you want to debug Windows applications with Turbo Debugger.\r\n\r\n  -  After your initial installation, you can run INSTALL again to\r\n     add elements you omitted the first time. Just select only the\r\n     things you want to add in the INSTALL options screen. Because\r\n     some things you may want to save could be overwritten, review\r\n     the following items to make sure you don't lose important\r\n     information:\r\n\r\n     1.  Selecting CMD (the Command-line compiler) causes an \r\n         overwrite of any existing turboc.cfg & tlink.cfg file\r\n         with path information provided in that INSTALL session.\r\n         Any switches other than -L (library path) and -I\r\n         (include path) will not be preserved.\r\n\r\n     2.  Selecting IDE will clear the previous settings for the\r\n         desktop and default project and reset them to the\r\n         defaults (for instance, 25-line display mode), and the\r\n         include and library paths will be reset to the paths\r\n         provided in that INSTALL session.\r\n\r\n     3.  By selecting any one of the following, the help file\r\n         paths and choices for THELP.CFG will reflect the current\r\n         session's installation choices: \r\n         \r\n              a. CMD - command-line compiler \r\n              b. IDE - integrated environment\r\n              c. TD - Turbo Debugger\r\n              d. TASM - Turbo Assembler \r\n              e. TV - Turbo Vision\r\n              f. OWL - ObjectWindows library\r\n\r\n     4.  Alterations to headers or startup files will be\r\n         overwritten if any library models are selected.\r\n\r\n     5.  Selecting the Create BorlandC++ Group option will add an\r\n         icon to the existing group.\r\n\r\n     In general, any selection you make of something installed\r\n     earlier will cause an overwrite of the earlier version\r\n     without prompting.\r\n\r\n  You should read the rest of this README file to get further\r\n  information about this release before you do the installation.\r\n  See also the files in the DOC subdirectory after installation\r\n  for general information not included in the manuals.\r\n\r\n 3. FEATURES\r\n------------\r\n\r\n  Borland C++ 3.0 includes complete support for Windows\r\n  programming, as well as big speed and capacity gains.  Here are\r\n  some important features found in this version:\r\n\r\n  - A Windows hosted IDE (TCW.EXE), including a class hierarchy \r\n    browser.\r\n\r\n  - New code optimization features. \r\n\r\n  - Turbo Debugger support for breakpoints with multiple conditions\r\n    and for viewing selectors.\r\n\r\n  - Profiling under Windows (TPROFW.EXE).\r\n\r\n  - Remote debugging using a Novell-compatible network.\r\n\r\n  - DPMI services for increased capacity and operation under Windows\r\n    3.0 Enhanced Mode.\r\n\r\n  - C++ 2.1 support, including the new nested class specifications,\r\n    and support of C++ 3.0 templates.\r\n\r\n  - Added library functions for compatibility with other runtime \r\n    libraries, and addition of support for long double parameters\r\n    in math functions. (Please see the Library Reference for details.)\r\n\r\n  - New MAKE features. (Please see the Tools and Utilities Guide\r\n    for details.)\r\n\r\n  - EasyWin, which includes library support for stdio.h and\r\n    conio.h functions under Windows. (Please see the Borland C++\r\n    User's Guide for details.)\r\n\r\n  - Object oriented assembler features in Turbo Assembler.\r\n\r\n  - Added BGI (Borland Graphics Interface) fonts and support.\r\n\r\n  - A resident DPMI kernel program, DPMIRES.EXE. (See \"DPMI\",\r\n    below.)\r\n\r\n  - WinSight, a debugging tool for examining Windows messages\r\n    and general information about Windows classes. (Please see the\r\n    Tools and Utilities Guide for details.)\r\n\r\n  - FCONVERT.EXE -  Converts OEM to ANSI Character Set\r\n\r\n      DOS text files use the OEM character set; Windows text\r\n      files generally use the ANSI character set. The demo\r\n      program, FCONVERT.EXE converts data back and forth between\r\n      these formats. The only text files that will be affected\r\n      are those containing international characters (ASCII values\r\n      above 128) like the umlaut, etc. Not all OEM characters are\r\n      present in the ANSI character set, and vice versa. \r\n      Therefore, converting between these character sets may\r\n      produce a mapping that is not reversible.  Refer to your\r\n      Windows documentation for further information about ANSI\r\n      vs. OEM character sets.\r\n\r\n  - Inline versions of string and memory library functions for\r\n    code efficiency. (Please see the section on Intrinsic\r\n    Functions in Appendix A in the User's Guide for details.)\r\n\r\n  - THELP now allows you to switch between help files without\r\n    unloading and reloading. (Please see UTIL.DOC for details.)\r\n\r\n  - Runtime library source code.\r\n\r\nNEW BGI FONTS\r\n-------------\r\n\r\nSeveral new fonts have been added to the Borland Graphics Interface:\r\n\r\n\r\nName            Value   Description\r\n-------------------------------------------\r\nSCRIPT_FONT     5       Stroked script font\r\nSIMPLEX_FONT    6       Stroked simplex font\r\nTRIP_SCR_FONT   7       Stroked triplex script font\r\nCOMPLEX_FONT    8       Stroked complex font\r\nEURO_FONT       9       Stroked European font\r\nBOLD_FONT       10      Stroked bold font\r\n\r\nThe fonts in the BGI now support the full ASCII character set.\r\n\r\nDPMI\r\n----\r\n\r\nBC.EXE, BCC.EXE, MAKE.EXE, and TLINK.EXE are now hosted under\r\nDPMI. These files replace both the files with the same name in\r\nBorland C++ 2.0 and the BCX.EXE, BCCX.EXE, and TLINKX.EXE files\r\nin the same product. There is no longer a TKERNEL.EXE file.\r\n\r\nImportant!\r\n----------\r\n  You must have at least 1Mb of extended memory to run these programs.\r\n\r\nIf you encounter a \"machine not in database\" message while attempting\r\nto run the compiler, run the DPMIINST program to add your machine\r\nconfiguration to the DPMI server database.\r\n\r\nThis version includes a resident DPMI host program, DPMIRES.EXE,\r\nthat allows you to preload the server before invoking BC, BCC, or\r\nany other DPMI-hosted executables. If you want to run such hosted\r\nEXEs in a Windows Standard Mode DOS window, you should run\r\nDPMIRES.EXE before loading Windows. To do this, enter the\r\nfollowing commands at DOS:\r\n \r\n  set DPMIMEM=MAXMEM 2000\r\n  dpmires\r\n  win /s\r\n\r\nIf you want to limit the amount of extended memory used by the\r\nDPMI-hosted executables, an environment variable called DPMIMEM\r\ncan be set to do so. For instance, the command\r\n\r\n  set DPMIMEM=MAXMEM 2000\r\n\r\nreserves about 2 Mb of memory for DPMIRES. The number after MAXMEM\r\ncan be adjusted, but cannot be lower than 1000.\r\n\r\nDPMIRES should not be run before running Windows in Enhanced Mode.\r\nWindows requires its own DPMI services.\r\n\r\nThe hosted executables cannot spawn each other when SHARE is loaded.\r\nFor instance, if you run MAKE on a file which in turn calls MAKE\r\nagain, you will get a sharing violation. In this specific case,\r\nyou can call the real mode version, MAKER, within the given makefile,\r\nand a sharing violation won't occur.\r\n\r\n 4. IMPORTANT INFORMATION\r\n-------------------------\r\n\r\n  - There is now only one version of the DOS IDE, BC.EXE, and\r\n    of the command-line compiler program, BCC.EXE. Because the\r\n    BCX and BCCX files are no longer in Borland C++,  you'll need\r\n    to alter batch or make files that use those names.\r\n\r\n  - Borland C++ only supports Protected Mode Windows target\r\n    files. Make sure to use the /t option when using the Resource\r\n    Compiler if you want to enforce Protected Mode usage.\r\n\r\n  - When using Brief with THELP, make sure to use Brief's -p\r\n    switch to ensure that the THELP window will be visible.\r\n\r\n  - We recommend that you use the following mouse drivers with\r\n    this product:\r\n\r\n       Microsoft Mouse version 7.04 or later;\r\n       Logitech Mouse version 5.01 or later;\r\n       Genius Mouse version 9.06 or later.\r\n\r\n  - If you use MAKE or the IDE's Project Make to invoke the Resource\r\n    Compiler, the .RC files you wish to compile MUST be in the same \r\n    directory as your project or makefile.  This is because the Microsoft\r\n    Resource Compiler does not properly handle relative path names, and\r\n    returns a misleading error message that refers to an incorrectly\r\n    spelled version of your .RC file.\r\n\r\n  - If you get a \"floating point formats not linked\" message at\r\n    runtime, put the following somewhere in your source files:\r\n\r\n        extern void _floatconvert();\r\n        #pragma extref _floatconvert\r\n\r\n    This will force inclusion of floating point formats, which\r\n    may not be linked to reduce executable size.\r\n\r\n  - Make sure that you use the -WE switch (Options|Compiler|Entry|\r\n    Windows <DLL> explicit functions exported in the IDE) when\r\n    using the fastcall modifier. The same applies when using the\r\n    fastcall compilation option (-pr on the command line,\r\n    Options|Compiler|Entry|Register in the IDE.)\r\n\r\n  COMPILER\r\n\r\n  - The default extension for source files to the command-line\r\n    compiler is .CPP; that is, if you enter\r\n\r\n       BCC -c test\r\n\r\n    the compiler will search for test.cpp, and give an error if a\r\n    file of that name cannot be found. If you want to have the\r\n    command-line compiler assume a .c extension and C language\r\n    source, use the command-line option -P-c. For more\r\n    information, see \"The command-line compiler\" in the User's\r\n    Guide.\r\n\r\n  - Note that the Generate COMDEFs choice under\r\n    Options|Compiler|Code Generation and the -Fc command-line\r\n    option are only supported in the C language. Linker errors\r\n    will result if you attempt to use a communal variable in C++.\r\n\r\n  - The macros min() and max() are not defined when stdlib.h is\r\n    compiled as C++ (to allow their use in 3rd party libraries,\r\n    etc.).\r\n\r\n  - Note that SYMDEB creates .SYM files for use in debugging;\r\n    Borland C++ creates .SYM files for pre-compiled headers. They\r\n    are not compatible and collisions should be avoided by\r\n    setting the name of the pre-compiled header file (using\r\n    -H=filename - see the User's Guide Chapter, \"The Command-line\r\n    compiler for more details.)\r\n\r\n  - There is now full support of distance modifiers (near and\r\n    far) used for class member pointers. Here are two sample\r\n    declarations and their meanings:\r\n\r\n       void (A::* far var) ();\r\n\r\n    this is a far variable 'var' of type 'void (A::*)()';\r\n\r\n       void (far A::* var) ();\r\n\r\n    this is a 'default distance' variable 'var' of type\r\n\t'void (far A::*)()'\r\n\r\n  - You must use \"smart callbacks\" - -WS from the command line,\r\n    Options| Compiler|Entry/Exit Code|Windows smart callbacks in\r\n    the IDE - if your application uses classes whose code is in a\r\n    DLL. This applies especially in the case of a class\r\n    implemented in an EXE which is derived from another\r\n    implemented in a DLL, which normally applies for users of OWL\r\n    and other object-oriented class libraries.\r\n\r\n  - If you use C++ templates, and use a separate TLINK command\r\n    line rather than letting BCC invoke TLINK, you should make\r\n    sure that you turn on case-sensitive links with the /c switch.\r\n\r\n\r\n  IDE\r\n\r\n  - When debugging a mouse application the Options|Debugger|Display\r\n    Swapping option should be set to \"Always\" for best results.\r\n\r\n  - In the DOS IDE, the mouse cursor is turned off during compilation\r\n    for performance improvements.\r\n\r\n  - If you run File|Printer setup from TCW.EXE (or another Windows\r\n    application which has printer setup support) under the Windows\r\n    3.0 debugging kernel, you will get a System Error from Windows.\r\n    You must switch to the NODEBUG version to run this option.\r\n\r\n  - The initial block marking behavior in the IDE is determined\r\n    by which version of the IDE is used first after installation.\r\n    Invoking TCW.EXE first will cause Windows-style block marking\r\n    conventions to be in effect; otherwise the standard DOS IDE\r\n    behavior will be used. You can change the behavior by\r\n    selecting Options|Environment| Editor and changing the\r\n    settings for Persistent blocks and Overwrite blocks.\r\n\r\n  WinSight\r\n\r\n  - WinSight traces messages received by GetMessage or SendMessage. It\r\n    does not trace messages sent directly by function call such as\r\n    WM_INITDIALOG.\r\n\r\n  - Please note that messages displayed as \"dispatched\" are actually\r\n    intercepted at the time of GetMessage, not DispatchMessage.\r\n\r\n\r\n  EXAMPLE PROGRAMS\r\n\r\n  - When you are running any example programs that come with .PRJ\r\n    files, if you didn't use the standard directories when you\r\n    installed Borland C++ you will have to change the .PRJ file\r\n    to reflect your actual directory setup.  Do this from inside\r\n    Borland C++ with Alt-O/D.\r\n\r\n\r\n  LINKING C++ WITH C\r\n\r\n  - Linking C++ modules with C modules requires the use of a\r\n    linkage specification.  Prototypes for C functions within C++\r\n    modules must be in one of the following forms:\r\n\r\n        extern \"C\" declaration\r\n        extern \"C\" { declarations }\r\n\r\n    For example, if a C module contains these functions:\r\n\r\n        char *SCopy(char*, char*);\r\n        void ClearScreen(void)\r\n\r\n    they must be declared in a C++ module in one of the\r\n      following ways:\r\n\r\n        extern \"C\" char *SCopy(char*, char*);\r\n        extern \"C\" void ClearScreen(void);\r\n\r\n      or\r\n\r\n         extern \"C\" {\r\n            char *SCopy(char*, char*);\r\n            void ClearScreen(void);\r\n         }\r\n\r\n    Failure to do so will result in \"Undefined symbol\" errors\r\n      during link. For further examples, see the standard header\r\n      files.\r\n\r\n  OPTIMIZATIONS\r\n\r\n  - When Ignore Aliasing is used - -Oa from the command line, or\r\n    Options|Compiler|Optimization|Assume no pointer aliasing in\r\n    the IDE - some initializations could be skipped. This applies\r\n    only when Copy propagation -Op or Options|Compiler|Optimization|\r\n    Copy propagation is used as well (which is the case when\r\n    using -O2 or Options|Compiler|Optimization|Fastest Code.) The\r\n    following case illustrates the issue:\r\n\r\n        len = 0;\r\n        read(help_file, (char *)&len, 1);\r\n        read(help_file, (char *)title, len);\r\n\r\n    The initializion of len to the value 0 above will probably\r\n    not be reflected in the first call to read() if aliases are\r\n    ignored. If the initialization of len were guaranteed by the\r\n    call to read(), the first line would be unnecessary, and the\r\n    value in len would be assigned and passed to the second read\r\n    correctly. We recommend that you avoid using these options\r\n    together when explicit initializations are used in code\r\n    sequences like these.\r\n\r\n\r\n  TURBO DEBUGGER/TURBO PROFILER/TURBO ASSEMBLER\r\n\r\n  - Some Windows mouse drivers are incompatible with Turbo\r\n    Debugger, and will cause the mouse cursor to get scrambled\r\n    when debugging DOS graphics applications on a second monitor\r\n    (-do option).  If that happens, you can try a different\r\n    driver, or turn off the mouse in TD by using the -p- option on\r\n    the TD command line.  The mouse will still be active in the\r\n    target application.\r\n\r\n  - You cannot set a window message breakpoint by using a window\r\n    handle in an ObjectWindows application. You can, however, set\r\n    window message breakpoints with ObjectWindows applications by\r\n    enabling ObjectWindows support (use TDINST -w and choose\r\n    Options|Source Debugging|OWL Window Messages), then using\r\n    window object names to set message breakpoints.\r\n\r\n  - The MEMPAGE segment attribute in TASM is not currently\r\n    supported by TLINK.  This option was added to TASM to support\r\n    a feature of the Phar Lap linker.\r\n\r\n  - The first time a program is run under TDW or TPROFW, mouse\r\n    messages are processed normally. However, on every subsequent\r\n    execution of that program,  you must press a key on the\r\n    keyboard before mouse messages can be processed.\r\n\r\n  - On page 10 in Chapter 1 of the \"Turbo Profiler User's Guide,\"\r\n    there is a statement that Pascal versions of the PRIMEn.C\r\n    programs are included  on disk. Only the C versions of these\r\n    sample programs are included on the distribution disks.\r\n\r\n  - If you don't see the mouse cursor when debugging a\r\n    TurboVision application, reload the target program (press\r\n    Ctrl-F2), and the mouse will appear.\r\n\r\n  Super VGA support for TDW & TPROFW\r\n  ==================================\r\n\r\n  TDW and TPROFW handles most of the popular 2, 4, and 16-color\r\n  high-resolution Super VGA modes. If your card isn't supported\r\n  correctly, or if you want to debug in a 256-color mode, you'll\r\n  need to use a special Super VGA DLL.\r\n\r\n  Currently, the following DLLs are supplied with your language\r\n  compiler to support these SVGA cards and modes:\r\n\r\n    TSENG.DLL (TSENG ET-3000 /ET-4000 based cards)\r\n       640x480x256\r\n       800x600x256\r\n       1024x768x256\r\n\r\n\r\n    ATI.DLL (ATI VGA Wonder card)\r\n       640x480x256    (See the NOTE below)\r\n       800x600x256\r\n\r\n  To use a Super VGA DLL, copy the appropriate DLL file into the\r\n  directory that contains the TDW or TPROFW executable (usually\r\n  the BIN subdirectory of your language compiler directory), and\r\n  rename it to TDVIDEO.DLL.\r\n\r\n  TDW (or TPROFW), upon loading, looks for TDVIDEO.DLL in the\r\n  same directory that harbors TDW.EXE (or TPROFW.EXE). If it\r\n  finds the file, TDW (or TPROFW) accesses the DLL as it's\r\n  needed. TDW (or TPROFW) makes calls to the DLL to handle the\r\n  entire video screen switching context. The DLL accomplishes the\r\n  screen switching by allocating a buffer as it gets loaded.\r\n  Graphic screen contents are then saved to this buffer as TDW\r\n  (or TPROFW) enters text mode. The DLL restores the graphics\r\n  screen from this buffer as TDW (or TPROFW) exits text mode.\r\n  Memory allocated for the buffer is freed when the DLL is\r\n  unloaded.\r\n\r\n  If there is an error loading TDVIDEO.DLL, or if the DLL doesn't\r\n  support the selected card or mode, TDW will report the error in\r\n  a Windows dialog box. When this happens, TDW will unload\r\n  TDVIDEO and exit. If this situation occurs, delete TDVIDEO.DLL,\r\n  or select a mode that is supported by the DLL.\r\n\r\n  If you're debugging an application that's been built with\r\n  EasyWin, you may see incorrect screen painting as you step over\r\n  lines of code that make calls to STDIO functions. In this case,\r\n  edit the TDVIDEO.INI file and set the Int2FAssist option to\r\n  \"yes\" (see the NOTE below).\r\n\r\n  NOTE: The ATI mode 640x480x256 and EasyWin applications may\r\n    require some special handling. An option called Int2FAssist\r\n    in the TDVIDEO.INI file allows this mode to work correctly on\r\n    most systems. The behaviour is as follows: When you set\r\n    \"Int2FAssist=yes\", TDVIDEO makes Windows tell all sub-windows\r\n    on the screen to re-paint themselves as the DLL is loaded.\r\n    This allows the user screen to be viewed when Stepping,\r\n    Tracing, or Running your application. It will not, however,\r\n    switch to the user screen when you press <Alt-F5> since TDW\r\n    is still in control (it doesn't allow Windows to process any\r\n    messages). If you also set \"SaveWholeScreen=yes\", then <Alt-\r\n    F5> will show the user screen (TDVIDEO will now copy the\r\n    screen for you). The drawback to enabling SaveWholeScreen is\r\n    that it will take longer to Step or Trace if TDW needs to\r\n    switch back to the user screen for that particular\r\n    instruction. Also, extra messages are getting passed to your\r\n    application that normally would not be passed. This may\r\n    effect the debugging of certain pieces of code (like finding\r\n    a bug in an owner-draw procedure). In these cases, you will\r\n    not want to use this video mode.\r\n\r\n\r\n  TDVIDEO.INI\r\n  -----------\r\n\r\n  You can create the file TDVIDEO.INI with any ASCII text editor.\r\n  This file is used to control how TDVIDEO.DLL functions.\r\n  TDVIDEO.INI must be located in WINDOW's main directory (usually\r\n  C:\\WINDOWS). The options in TDVIDEO.INI are handled by the DLL\r\n  itself and are therefore subject to change with newer versions\r\n  of the DLLs. The DLLs use the following options, written in any\r\n  order, under the heading [VideoOptions]:\r\n\r\n    SaveWholeScreen --    default = 'no'\r\n    Int2FAssist     --    default = 'no'\r\n    DebugFile       --    default = ''  (no logging will occur)\r\n\r\n  The SaveWholeScreen and Int2FAssist can be set to either 'yes'\r\n  or 'no'. DebugFile can be either blank, or it can be set to a\r\n  specific filename.\r\n\r\n  *** SaveWholeScreen ***\r\n\r\n    This option, normally set to 'no', determines whether the\r\n    entire screen (512k - 64k from 8 planes) will be saved (the\r\n    entire graphics screen is cleared when switching to it) or if\r\n    only the top 32K of planes 0 through 3 will be saved (the\r\n    entire screen is NOT cleared when switching modes.)\r\n\r\n    Saving the whole screen is rarely needed, but is provided in\r\n    case you're using a nonstandard card that needs the whole\r\n    screen to be saved.\r\n\r\n  *** Int2FAssist ***\r\n\r\n    This option, normally set to 'no', tells TDVIDEO, to make a\r\n    special Int 2F call before switching video modes. This call\r\n    tells the current Windows screen driver (VGA.DRV for standard\r\n    VGA mode) what's happening. The desired side-effect of this\r\n    call is to make Windows tell all of its child windows to re-\r\n    paint themselves. This option is provided only for support for an\r\n    ATI Super VGA video mode and for applications built using\r\n    EasyWin (see NOTE above). However, be aware, that this option\r\n    can affect the other supported modes if it's enabled (use\r\n    this option only if absolutly necessary).\r\n\r\n  *** DebugFile ***\r\n\r\n    TDVIDEO.DLL normally doesn't save any debugging information.\r\n    If you're having problems using a special DLL, the DebugFile\r\n    option can be used to specify the path and filename of a log\r\n    file. Information logged to this file can be used if you need\r\n    to contact Borland's Technical Support. Information logged\r\n    consists of the Date/Time, the version of the DLL, the name\r\n    of the Windows screen driver that is currently in use, the\r\n    state of all .INI options, and a listing of all the calls to\r\n    the DLL's functions.\r\n\r\n    For example, if you want your DLL to save the entire screen\r\n    and log information to a file named C:\\WINDOWS\\TDVIDEO.LOG,\r\n    create a file called TDVIDEO.INI in the WINDOWS directory\r\n    that contains the following commands:\r\n\r\n      [VideoOptions]\r\n      SaveWholeScreen=yes\r\n      DebugFile=c:\\windows\\tdvideo.log\r\n\r\n\r\n  Turbo Profiler and remote profiling of Windows applications\r\n  ===========================================================\r\n\r\n  Some system configurations may cause WREMOTE and TPROF to fail when\r\n  profiling Windows applications on a remote system. The problem usually\r\n  causes both your program and Windows to abort when you attempt to\r\n  execute your program on the remote machine. If you experience this\r\n  problem with your system configuration, there are several possible\r\n  ways to avoid the problem.\r\n\r\n    1. Use TPROFW to profile the program directly under Windows on one\r\n       machine, rather than using two machines.\r\n\r\n    2. Run Windows in standard mode (using the DOS command WIN\r\n       /S), then load WREMOTE. On the local machine, use TPROF in\r\n       passive analysis mode (note that passive analysis is not\r\n       available in 386 enhanced mode.)\r\n\r\n    3. If you require active analysis mode and cannot use TPROFW\r\n       directly, the following procedure may provide a solution.\r\n       First, load Windows and WREMOTE on the remote machine.\r\n       Next, load TPROF on the local machine and, without running\r\n       the program, remove all area markers using the Module\r\n       window's local menu (Ctrl-R, A, from the Module window).\r\n       With this, exit TPROF using Alt-X, thus creating a .TFA\r\n       file having no areas marked.  Reload TPROF and your\r\n       program; there should be no areas marked (you can verify\r\n       this by opening an Areas window). Add any areas you are\r\n       interested in examining, and begin profiling your program.\r\n\r\n\r\n\r\n  CLASS LIBRARY\r\n\r\n  - If you used the add(), addAt(), or getItemsInContainer()\r\n    member functions of the Array class in Borland C++ 2.0\r\n    applications, note that their behavior has changed slightly.\r\n    The following rules apply to these and related functions:\r\n\r\n      1. add() will insert its argument at the lowest available\r\n         location in the Array.  This location is known as the\r\n         \"insertion point\".\r\n\r\n      2. detach() will remove its argument from the Array, and if\r\n         that Object is located below the insertion point, it\r\n         will move the elements above the Object being removed\r\n         and below the insertion point down one position, so that\r\n         the elements below the insertion point remain\r\n         contiguous.  The insertion point, of course, moves down\r\n         one.\r\n\r\n      3. if the location specified in a call to addAt() is below\r\n         or at the insertion point, the elements above the\r\n         specified location and below the insertion point are\r\n         moved up one position, and the Object is inserted.  The\r\n         insertion point moves up one.\r\n\r\n      4. if the location specified in a call to addAt() is above\r\n         the insertion point, the Object is inserted at that\r\n         location, replacing any Object that may have been placed\r\n         there previously.\r\n\r\n      5. getItemsInContainer() returns the number of elements\r\n         below the current insertion point.  If you use addAt()\r\n         to add elements above the insertion point, they will not\r\n         affect the value returned by getItemsInContainer(). \r\n         This is a change from the behavior in the previous\r\n         version of the class library.\r\n\r\n  - Two versions of the class library sources are provided; one\r\n    using an implementation using C++ templates, and one not using\r\n    templates. The small and dynamic link libraries are provided, and\r\n    a makefile is provided to build other models.\r\n\r\n\r\n  ObjectWindows Library\r\n\r\n  - You must rebuild the class libraries in the appropriate model\r\n    for the intended OWL model if they don't already exist - see\r\n    paragraph above.\r\n\r\n  - Note that you must use the TWindow member function AssignMenu\r\n    to assign a window's Attr.Menu member and to load a menu for\r\n    that window.\r\n\r\n  - Before you try the MFILEAPP example, you should change line 10\r\n    of MFILEAPP.CPP to\r\n\r\n       const char DskFile[] = \"MFILEAPP.D$$\";\r\n\r\n    The DSK extension is used for desktop files in the Integrated\r\n    Development Environment.\r\n\r\n\r\n  Please see OWL.DOC for additional information on ObjectWindows\r\n  Library.\r\n\r\n  TURBO VISION\r\n\r\n  - For information on the Help compiler, and how to build a help\r\n    document, please refer to the comments in the file TVHC.CPP in\r\n    the help directory.  Also, see TVDemo for an example of how to\r\n    add help to your applications.\r\n\r\n  - Due to the complex interactions among the Turbo Vision classes,\r\n    certain situations can arise involving deletion of objects that\r\n    cannot be properly handled through destructors.  Therefore, we\r\n    provide a static member function void destroy( TObject * ) to\r\n    the class TObject.  Whenever an object of a type derived from\r\n    TObject is to be deleted, the function destroy() should be called\r\n    instead.  This will take care of terminating the object,\r\n    correctly freeing the memory that it occupied.  For example:\r\n    \r\n             TDialog *dlg = new TDialog( ... );\r\n             //delete dlg;    // DON'T DO THIS\r\n             destroy( dlg );  // DO IT THIS WAY\r\n\r\n  - The Turbo Vision Source Code is provided for your use and\r\n    modification.  IMPORTANT: Borland Technical Support will not\r\n    answer questions or provide any assistance relating to this\r\n    product.  Essentially, the Sources are provided \"as is\" and you\r\n    are on your own.\r\n\r\n  - In order to build the library, you must have Tasm available.\r\n\r\n  - When building or modifying the library it is better to place\r\n    debug info in only those modules in which you are interested.\r\n    If you place debug info all the modules, Tlink may not be able\r\n    to link your application.\r\n\r\n  - In order to build an overlayed Turbo Vision application with\r\n    BC3, make sure you observe the following:\r\n\r\n      1. You need to rebuild the Turbo Vision library with\r\n         overlays. Change to the SOURCE directory under TVISION\r\n         and enter the command\r\n\r\n                 make -DOVERLAY -B\r\n\r\n         This will produce a new version of TV.LIB which will\r\n         support overlays. It will also produce two .OBJ files,\r\n         SYSINT.OBJ and TEVENT.OBJ.  These two files contain code\r\n         for TV's interrupt handlers, so they cannot be \r\n         overlayed.\r\n\r\n      2. When building an overlayed application, you must be sure\r\n         to link with the three files SYSINT.OBJ, TEVENT.OBJ, and\r\n         TV.LIB.  The two .OBJ files must not be in overlays. \r\n         Your command line should look something like this:\r\n\r\n           bcc -ml -Yo myfile -Yo- sysint.obj tevent.obj -Yo tv.lib\r\n\r\n         See the Programmer's Guide for details on the meanings\r\n         of the various Yo switches.\r\n\r\n\t  3. To improve performance, increase the size of the global \r\n         variable __ovrbuffer to 0x2000 or greater.\r\n\r\n\r\n  - TNSCollection::atFree (page 323)\r\n   \r\n    The atFree member function of TNSCollection is not documented in\r\n    the TurboVision User's Guide.  The description should read:\r\n\r\n  \tSyntax:\r\n    void atFree(ccIndex index);\r\n\r\n    Removes the item at the index position, then destroys the item\r\n    with delete(item).  The following items are moved up one position,\r\n    and count is decremented by 1.  If index is greater than or equal\r\n    to count, error(1,0) is called.\r\n\r\n  - messageBox (page 479)\r\n    \r\n    The messageBox function returns an unsigned short integer (ushort) \r\n    that has one of the following values, corresponding to the dialog\r\n    box standard commands:\r\n \r\n      cmOk\r\n      cmCancel\r\n      cmYes\r\n      cmNo\r\n      cmDefault\r\n\r\n\r\n  Please see TV.DOC for additional information on Turbo Vision.\r\n\r\n  RUNTIME LIBRARY SOURCE\r\n\r\n  The Borland C++ Runtime Library Source Code is provided for\r\n  your use and modification.  IMPORTANT: Borland Technical\r\n  Support will not answer questions or provide any assistance\r\n  relating to this product.  Essentially, the Sources are\r\n  provided \"as is\" and you are on your own. If you find what you\r\n  think is a genuine problem with the source code, however, we\r\n  would like to hear about it. See \"How to Get Help\" above.\r\n\r\n  See CRTL.DOC for more information on building the Runtime\r\n  Library from source.\r\n\r\n 5. TESTING YOUR EXPANDED MEMORY: EMSTEST.COM\r\n---------------------------------------------\r\n\r\n  Included with Borland C++ is a program to test your Expanded\r\n  Memory hardware and software. If you have problems using\r\n  Borland C++ with your EMS, type EMSTEST at the DOS prompt and\r\n  follow the instructions.\r\n\r\n\r\n 6.  CORRECTIONS TO THE DOCUMENTS\r\n---------------------------------\r\n\r\nBorland C++ Programmer's Guide\r\n------------------------------\r\n Chapter 8, \"Building a Windows application\"\r\n -------------------------------------------\r\n  Page 321\r\n  --------\r\n  The TLINK command line should be changed to:\r\n\r\n   tlink /Tw /v /n /c C:\\BORLANDC\\LIB\\c0ws whello,\\\r\n         whello,\\\r\n         ,\\\r\n         C:\\BORLANDC\\LIB\\cws\r\n                         ^^^\r\n\r\nTurbo Assembler User's Guide\r\n----------------------------\r\n\r\nPage 333 in Appendix D, Utilities, states that Turbo Assembler's online\r\nhelp facility is called TASMHELP. TASMHELP can be used as documented, but\r\nonly if Turbo Assembler is installed in a directory other than the directory\r\nwhere Borland C++ is installed. If TASM is installed in the same directory\r\nas Borland C++, use the THELP utility for online help. THELP allows you to\r\naccess a variety of help files via an easy to use menu system.\r\n\r\nHere's how THELP works:\r\n\r\n  1) After installing Borland C++ and Turbo Assembler, invoke THELP at\r\n     your DOS prompt.\r\n\r\n  2) Type ALT-F to bring up the menu of available help files.\r\n\r\n  3) Choose TASM.TAH to access help for Turbo Assembler.\r\n\r\n\r\nTools and Utilities Guide\r\n-------------------------\r\n\r\n Introduction\r\n ------------\r\n Information on transfer macros, the Turbo Editor Macro Language\r\n (TEML), and the Turbo Editor Macro Compiler (TEMC) are also\r\n documented in the online file UTIL.DOC.\r\n\r\n Chapter 1, \"Import library tools\"\r\n ---------------------------------\r\n\r\n  Page 7\r\n  ------\r\n   IMPLIBW does allow you to create a single import library from\r\n   multiple DLLs or module definition files. At the File Select\r\n   dialog box, you can type multiple filenames in the File edit\r\n   control. When you choose OK to make the import library,\r\n   IMPLIBW will use all the exports from each of the DLLs or\r\n   module definition files you listed. Note that you can only\r\n   select a single file using the file list box; you must type in\r\n   the filenames if you need to specify more than one.\r\n\r\n Chapter 2, \"Make: The program manager\"\r\n --------------------------------------\r\n\r\n  Page 11\r\n  -------\r\n   In the sentence that begins \"All options that do not specify a\r\n   string (-s or ±a, for example)...\" the \"±a\" should be \"-a\".\r\n\r\n  Page 33\r\n  -------\r\n   The last word of the page, \"which\" should be \"while @<\".\r\n\r\n Chapter 3, \"TLIB: The Turbo librarian\"\r\n --------------------------------------\r\n - There is an additional TLIB command line option, /0, which is not\r\n   documented in the printed TLIB reference (Chapter 3 of the Tools &\r\n   Utilities Guide).  The /0 option instructs the Turbo Librarian to\r\n   remove all \"Comment\" records from the library.  Comment records are\r\n   typically used to store information used by the debugger or other\r\n   tools, and are not needed to create an executable file.  Using this\r\n   option will make your libraries (and executable programs created using\r\n   the libraries) smaller.  The /0 option is equivalent to checking\r\n   Purge Comment Records in the Options|Librarian dialog box within the IDE.\r\n\r\n Chapter 4, \"TLINK: The Turbo linker\"\r\n --------------------------------------\r\n\r\n  Page 58\r\n  -------\r\n   Change the TLINK format description to:\r\n\r\n    tlink C0[W|D|F]x myobjs,exe,[map],[IMPORT][mylibs][OVERLAY]\r\n    [EMU|FP87 mathx][CWx|Cx],[deffile]\r\n    ^^^^^^^^^^^^^^^^^^^^^^^^\r\n  Page 60\r\n  -------\r\n   Reverse the order of the two bullet items below:\r\n\r\n   o CWx.LIB, the run-time library..\r\n   o if you are using floating point math, FP87.LIB...\r\n\r\n   The math libraries should be linked before the run-time library.\r\n\r\n\r\n Appendix A, \"Error messages\"\r\n ----------------------------\r\n\r\n  Page 183\r\n  --------\r\n   In the TLINK warning \"filename(linenum): Duplicate internal name\r\n   in imports,\" there is an extraneous right bracket that should be\r\n   removed.\r\n\r\n  Page 197\r\n  --------\r\n   In the compile-time error \"Last parameter of operator must have\r\n   type int,\" \"operator-±\" should actually read \"operator--\"\r\n\r\nLibrary Reference\r\n-----------------\r\n\r\n  Chapter 2, \"The run-time library\"\r\n  ---------------------------------\r\n    Page 173\r\n    --------\r\n      Under \"Return value\" \"doserno\" should be \"_doserrno\".\r\n\r\n    Page 174\r\n    --------\r\n      Under \"Return value\" \"doserno\" should be \"_doserrno\" and\r\n      the entry for ENOENT should be \"Path or file name not found\".\r\n\r\n    Page 185\r\n    --------\r\n      _fpreset() is shown as being available under Windows, which\r\n      is not true.\r\n\r\n  Note that two functions are incorrectly prototyped in the Library\r\n  Reference. Here are their correct prototypes:\r\n\r\n   size_t far _fstrlen(const char far *s);\r\n   size_t far _fstrcspn(const char *s1, const char far *s2);\r\n\r\n  The following functions have some missing documentation in the\r\n  Library Reference:\r\n\r\n  ------------------------------------------------------------------\r\n  Function: stackavail\r\n  Gets the amount of available memory.\r\n\r\n  Syntax:\r\n  #include <malloc.h>\r\n  size_t stackavail(void);\r\n\r\n  ╔═══════╤════════╤══════════╤══════════╤═══════════╗\r\n  ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║\r\n  ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n  ║    ■  │        │          │          │           ║\r\n  ╚═══════╧════════╧══════════╧══════════╧═══════════╝\r\n\r\n  Remarks:\r\n  stackavail returns the number of bytes available on the stack. This\r\n  is the amount of dynamic memory which alloca may access.\r\n\r\n  Return value:\r\n  stackavail returns a size_t value indicating the number of bytes\r\n  available.\r\n\r\n  See also:\r\n  alloca, allocmem, coreleft, _dos_allocmem, farcoreleft,\r\n  _stklen (global variable)\r\n\r\n  Example:\r\n  #include <malloc.h>\r\n  #include <stdio.h>\r\n\r\n  int main(void) {\r\n     char *buf;\r\n\r\n     printf(\"\\nThe stack: %u\\tstack pointer: %u\", stackavail(), _SP);\r\n     buf = (char *) alloca(100 * sizeof(char));\r\n     printf(\"\\nNow, the stack: %u\\tstack pointer: %u\", stackavail(), _SP);\r\n     return(0);\r\n     }\r\n\r\n\r\n  Program output:\r\n    The stack: 63528         stack pointer: 65524\r\n    Now, the stack: 63424    stack pointer: 65420\r\n\r\n\r\n  ------------------------------------------------------------------\r\n  Function: strcmp, _fstrcmp\r\n  Compares one string to another.\r\n\r\n  Syntax:\r\n  #include <string.h>\r\n  Near version: int strcmp(const char *s1, const char *s2);\r\n  Far version: int far _fstrcmp(const char far *s1, const char far *s2);\r\n\r\n\r\n                ╔═══════╤════════╤══════════╤══════════╤═══════════╗\r\n                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║\r\n                ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n  Near version  ║    ■  │    ■   │     ■    │    ■     │           ║\r\n                ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n  Far version   ║    ■  │        │     ■    │          │           ║\r\n                ╚═══════╧════════╧══════════╧══════════╧═══════════╝\r\n\r\n  Remarks:\r\n  strcmp performs an unsigned comparison of s1 to s2, starting with\r\n  the  first character in each string and continuing with\r\n  subsequent characters  until the corresponding characters differ\r\n  or until the end of the strings is reached.\r\n\r\n  Return value:\r\n  strcmp returns a value that is\r\n\r\n    < 0 if s1 is less than s2\r\n    == 0 if s1 is the same as s2\r\n    > 0 if s1 is greater than s2\r\n\r\n  See also:\r\n  strcmpi, strcoll, stricmp, strncmp, strncmpi, strnicmp\r\n\r\n  Example:\r\n  #include <string.h>\r\n  #include <stdio.h>\r\n\r\n  int main(void)\r\n  {\r\n     char *buf1 = \"aaa\", *buf2 = \"bbb\", *buf3 =\"ccc\";\r\n     int ptr;\r\n     ptr = strcmp(buf2, buf1);\r\n     if (ptr > 0)\r\n        printf(\"buffer 2 is greater than buffer 1\\n\");\r\n     else\r\n        printf(\"buffer 2 is less than buffer 1\\n\");\r\n     ptr = strcmp(buf2, buf3);\r\n     if (ptr > 0)\r\n        printf(\"buffer 2 is greater than buffer 3\\n\");\r\n     else\r\n        printf(\"buffer 2 is less than buffer 3\\n\");\r\n     return 0;\r\n  }\r\n\r\n\r\n\r\n  ------------------------------------------------------------------\r\n  Function: strcpy, _fstrcpy\r\n  Copies one string into another.\r\n\r\n  Syntax\r\n  #include <string.h>\r\n  Near version: char *strcpy(char *dest, const char *src);\r\n  Far version: char far * _fstrcpy(char far *dest, const char far *src);\r\n\r\n\r\n\r\n                ╔═══════╤════════╤══════════╤══════════╤═══════════╗\r\n                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║\r\n                ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n  Near version  ║    ■  │    ■   │     ■    │    ■     │           ║\r\n                ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n  Far version   ║    ■  │        │     ■    │          │           ║\r\n                ╚═══════╧════════╧══════════╧══════════╧═══════════╝\r\n\r\n  Remarks:\r\n  Copies string src to dest, stopping after the terminating null\r\n  character has been moved.\r\n\r\n  Return value:\r\n  strcpy returns dest.\r\n\r\n  See also: stpcpy\r\n\r\n  Example:\r\n  #include <stdio.h>\r\n  #include <string.h>\r\n\r\n  int main(void)\r\n  {\r\n     char string[10];\r\n     char *str1 = \"abcdefghi\";\r\n     strcpy(string, str1);\r\n     printf(\"%s\\n\", string);\r\n     return 0;\r\n  }\r\n\r\n  ------------------------------------------------------------------\r\n  Function: _dos_open\r\n  Opens the specified file and prepares it for reading or writing.\r\n\r\n  Syntax:\r\n  #include <fcntl.h>\r\n  #include <share.h>\r\n  #include <DOS.H>\r\n  unsigned _dos_open(const char *filename, unsigned oflags, int *handlep);\r\n\r\n  Arguments:\r\n  filename --  File that the function opens and prepares for reading and/or\r\n               writing\r\n  oflags   --  Open-mode symbolic constants (defined in FCNTL.H) and\r\n               file-sharing symbolic constants (defined in SHARE.H) that\r\n               specify the file's open mode (read, write, share, etc.)\r\n  handlep  --  Points to the location where the function stores\r\n               the file's handle.\r\n\r\n                ╔═══════╤════════╤══════════╤══════════╤═══════════╗\r\n                ║  DOS  │  UNIX  │  Windows │  ANSI C  │ C++ only  ║\r\n                ╟───────┼────────┼──────────┼──────────┼───────────╢\r\n                ║  Yes  │        │    Yes   │          │           ║\r\n                ╚═══════╧════════╧══════════╧══════════╧═══════════╝\r\n\r\n\r\n  Remarks:\r\n  Opens the file specified by filename, then prepares it for reading\r\n  or writing. The file is always opened in binary mode.\r\n\r\n  On successfully opening the file, the function sets the file\r\n  pointer (which marks the current position in the file) to the\r\n  beginning of the file.\r\n\r\n  The maximum number of simultaneously open files is defined by\r\n  HANDLE_MAX.\r\n\r\n  Return Value:\r\n  On success, _dos_open returns 0, stores the file handle at the location\r\n    *handlep\r\n  On error, _dos_open returns the DOS error code and sets errno to one\r\n    of the following:\r\n           ENOENT  (Path or file not found)\r\n           EMFILE  (Too many open files)\r\n           EACCES  (Permission denied)\r\n           EINVACC (Invalid access code)\r\n\r\n   See Also:  _dos_creat _dos_read _dos_write _read open sopen\r\n\r\nObjectWindows User's Guide\r\n--------------------------\r\n  Chapter 2, \"Stepping through Windows\"\r\n  -------------------------------------\r\n    Page 22\r\n    -------\r\n      The sentence that begins \"These libraries are located in\r\n      the library  directories listed in the following table...\"\r\n      should instead read \"Table 2.2 lists the file names of the\r\n      static ObjectWindows library  and static container class\r\n      library for each supported memory model.\"\r\n\r\n  Chapter 11, \"Dialog objects\"\r\n  ----------------------------\r\n    Page 151\r\n    --------\r\n      In the TSampleWindow::GetName fragment shown, a line is in error. \r\n      The line that begins\r\n         if (ExecDialog(new TInputDialog(this...\r\n      should read\r\n         if (GetApplication()->ExecDialog(new TInputDialog(this...\r\n\r\n  Chapter 12, \"Control objects\"\r\n  ----------------------------\r\n    Page 158+\r\n    ---------\r\n      Although it doesn't specifically state so, TListBox and its member\r\n      functions can be used with both single- and multiple- selection\r\n      list boxes.\r\n\r\n\r\nTurbo Vision User's Guide\r\n-------------------------\r\n\r\n  - cmOk has been changed to cmOK to be consistent with all other\r\n    uses of 'OK'.\r\n\r\n  - TView.writeCStr() is not available.  Use TView.writeStr(). All\r\n    documentation for TView.writeCStr applies exactly to TView.writeStr.\r\n\r\n  - TProgram has two additional member functions, suspend() and\r\n    resume().  They do the same thing as the corresponding functions\r\n    in TMouse, TEventQueue, etc. - they encapsulate suspension and\r\n    resumption when doing things like a DOS shell.\r\n\r\n  - The parameter list for the constructor for TSubMenu has been\r\n    changed from \r\n            TSubMenu( const char *, int, int = 0 )\r\n    to \r\n            TSubMenu( const char *, ushort, ushort = hcNoContext )\r\n\r\n  - TNSCollection::atFree (page 323)\r\n   \r\n    The atFree member function of TNSCollection is not documented in\r\n    the TurboVision User's Guide.  The description should read:\r\n\r\n  \tSyntax:\r\n    void atFree(ccIndex index);\r\n\r\n    Removes the item at the index position, then destroys the item\r\n    with delete(item).  The following items are moved up one position,\r\n    and count is decremented by 1.  If index is greater than or equal\r\n    to count, error(1,0) is called.\r\n\r\n  - messageBox (page 479)\r\n    \r\n    The messageBox function returns an unsigned short integer (ushort) \r\n    that has one of the followin values, corresponding to the dialog\r\n    box standard commands:\r\n \r\n      cmOK\r\n      cmCancel\r\n      cmYes\r\n      cmNo\r\n      cmDefault\r\n\r\n\u001a"
}