# HOW to Compile FreeCOM v0.8x in Ten Steps

Because of several complaints about how to compile FreeCOM, this description has been crafted to show this process step-by-step.

## Table of Contents

Preparations
Used System
Required Programs and Libraries
System Configuration
CONFIG.SYS
AUTOEXEC.BAT
One-time Preparations
Contents of Directory C:\BIN
Contents of Directory C:\
Ten Steps to Compile FreeCOM v0.8x

## Preparations

This description starts at the scratch, hence, it is assumed that no other tools are already installed and up and running. If there are some program available, you must take precautions to incorporate them into the process.

### Used System

This examples uses the following system:

- VMware, VirtualBox, DOSEMU2, DOSBOX-X (to emulate an unique PC, with a newly formatted, virtual partition)
- OS: FreeDOS kernel, binary release downloaded from: https://github.com/FDOS/kernel;
- Shell: FreeCOM v0.83 Beta 46 or later (tested with both binary release and XMS-Swap release); downloaded from FreeCOM's home page on GitHub
  The binary variant is installed as the default shell `COMMAND.COM`, the XMS-Swapping variant is installed as `COM-XMS.COM`; both on the root directory of the hard disk parition.

### Required Programs and Libraries

All this stuff will be made accessable to the Virtual PC through CD-Rom, as this is the only variant for this VMware release.

- Nasm (aka Netware Assembler) is used to compile enclosed assembly files; Nasm is hosted on https://www.nasm.us/, too; Version 2.15 or newer is recommended of the 16-bit pre-compiled Nasm.
  The Nasm Zip-file is unpacked into directory `nasm` on the CD-Rom.
- Open Watcom or GCC-ia16 are the recommended compilers, but Borland compilers are still supported.
- Turbo C++ v1.01 is used to compile the enclosed C files, download from the Borland museum.
  The Turbo C++ Zip-file is unpacked into directory `tcpp101` on the CD-Rom.
- Some `unzip`-utility for DOS, I'm using UnZip 5.12 of 28 August 1994, by Info-ZIP.
  Executable is located at the root directory of the CD-Rom.
- Some plain text editor for DOS, I'm using Elvis v2.1_4 for DOS.
  The executable is named `vi.exe` and is located at the root directory of the CD-Rom.
- The source of FreeCOM v0.83 Beta 48, located on the root directory of the CD-Rom.
  Or pick some newer release.
- The SUPPL library pre-compiled for Turbo C++ v1.01, located on the root directory of the CD-Rom. *** SUPPL is now included within the FreeCOM source archive, though it may still work from standalone version.

## System Configuration

### CONFIG.SYS

    files=20
    device=fdxms.sys
    device=NEC_IDE.SYS /D:CD001
    ;shell=com-xms.com /p/e:256

### AUTOEXEC.BAT

    path c:\bin;c:\tcpp101\bin
    set TEMP=C:\Temp
    SHSUCDX.EXE  /D:CD001

## One-time Preparations

Note: On drive `D:` the CD-Rom has been mounted.

    MKDIR %TEMP%
    MKDIR C:\BIN
    COPY D:\NASM\NASM.EXE D:\VI.EXE D:\UNZIP.EXE C:\BIN
    d:
    cd tcpp101
    install

### Contents of Directory C:\BIN

     Volume in drive C has no label
     Volume Serial Number is 58EF-6DA7

     Directory of C:\BIN

    .                    <DIR>  11-03-02  9:44a
    ..                   <DIR>  11-03-02  9:44a
    VI       EXE       372,158  04-25-01 12:37p
    SHSUCDX  EXE        15,726  10-20-00 10:34p
    NASM     EXE       252,452  09-12-02  6:37p
    UNZIP    EXE        43,691  08-29-94  9:37p
             4 file(s)        684,027 bytes
             2 dir(s)      24,221,696 bytes free

### Contents of Directory C:\

     Volume in drive C has no label
     Volume Serial Number is 58EF-6DA7

     Directory of C:\

    KERNEL   SYS        40,962  10-27-02 11:17p
    COMMAND  COM        86,573  10-16-02  9:10p
    COM-XMS  COM        88,203  10-16-02  9:07p
    CONFIG   SYS            86  10-30-02  1:24p
    AUTOEXEC BAT            69  10-30-02 11:28a
    FDXMS    SYS         4,836  03-02-02  6:55p
    NEC_IDE  SYS        29,089  04-26-96  8:37a
    TEMP                 <DIR>  04-25-01  1:32p
    TCPP101              <DIR>  11-03-02  9:56a
    BIN                  <DIR>  11-03-02  9:44a
             7 file(s)        249,818 bytes
             3 dir(s)      24,221,696 bytes free

## Ten Steps to Compile FreeCOM v0.83 Beta 48

    c:
    CD \
    unzip d:\COM083BE.ZIP
    unzip -q freecom.zip
    del freecom.zip
    cd freecom\suppl\
    unzip -n d:\suppl.zip
    cd ..
    vi config.mak
    build

There should be a `COMMAND.COM` located in the current directory now.

There is also a sample build log.

The `build` script uses the environment variables `SWAP` and `LNG`.

# Appendix A: Description of settings

- `FILES=20` is required by Turbo C++.

- The driver `fdxms.sys` provides a XMS API similiar to `HIMEM.SYS`

- The driver `NEC_IDE.SYS` I've got along with some Oak IDE-CD-Rom device and seems to handle all recent IDE-CD-Rom drivers pretty well, like the emulated CD-Rom in VMware.
  The option `/D:CD001` causes the driver to install a device named `CD001` for the CD-Rom device in order to be found by the CD-redirector later on.

- Uncomment (remove the semicolon from the first column of the line) the line in order to use the XMS-Swapping variant of FreeCOM v0.83 Beta 46.

- The two directories in which DOS is to search for executable programs:

  1. In `C:\BIN` all relevant tools, such as assembler and Unzip, will be located.
  2. In `c:\tcpp101\bin` the executables of the Turbo C++ compiler are located.

- The environment variable `TEMP` points to the directory temporary files are to be created in.

- Loads the CD-Rom mid-level driver, similiar to `MSCDEX`, the option `/D:CD001` must specify the same driver name as the low-level CD-Rom driver.

- Create the temporary directory, if not already present.

- Create the directory for the executables, if not already present.

- Copy all the executables, like assembler, text editor and unzip-utility, to the central directory.

- The unpacked Turbo C++ v1.01 install files are located in this directory.

- Runs the Turbo C++ v1.01 installation program. The following settings are used:

  - Source drive: `D`
  - Source directory: `\TCPP101`
  - select entry `Turbo C++ Directory`
  - Target directory: `C:\TCPP101`
    All the remaining installation directories should automatically be changed below this directory.
  - select entry `Start Installation`

- The `SHSUCDX` presents the long filename `com083Beta48.zip` as `COM083BE.ZIP`, hence, unzipping the FreeCOM source archive.
  Note: This is the only point to change when compiling another FreeCOM release usually; just unpack the particular `.ZIP` file here. However, it is not recommended to overwrite an elder release of FreeCOM; when doing so, you should at least pass the `-r` option to `build`!

- Because the FreeCOM archive is a double-zipped archive, `FREECOM.ZIP` is the real archive containing the source files. In result a new directory `FREECOM` containing all the source tree is created. The option `-q` causes `unzip` to run quitely.

- Go to the default location of the SUPPL library.

- Unzip the pre-compiled SUPPL library, the option `-n` causes `unzip` to not complain about the already present files in the current directory.

- Go to the main directory of FreeCOM.

- Edit the configuration of the build process via adopting the file `CONFIG.MAK`:
  Note: The default configuration has been adjusted to comply with these steps, hence, no adoptions are required; so you might skip this step as well.

- Actually runs the build process:

  - in order to force to re-built all portions of FreeCOM, e.g. when the source code was overwritten with another version or when switching between XMS-Swapping enabled or disabled, pass the `-r` option as the first argument to `build`.
  - to build the XMS-Swapping variant of FreeCOM specify `xms-swap` as the first (or second) argument, e.g.:

        build.bat xms-swap

    .
  - to build FreeCOM with some specific language other than English, specify the language as the last argument, e.g.:

        build.bat Dutch

    or

        build.bat xms-swap Dutch

    . For each supported language, a corresponding `.LNG` file is located in sub-directory `STRINGS`, hence, the command `DIR STRINGS\*.LNG` displays a list of supported languages. Do not specify the extension `.LNG` on `build`'s command line!
  The environment variable `SWAP` is internally used by the `build` script and is removed upon successful finish.
  The script stores the selected language, or `English` if none has been selected on command line and the variable is not already defined, into the environment variable `LNG`; hence, the selected language keeps permanently selected between different runs of `build`, until reset by the user manually as the last argument of the `build` script, by removing or changing the variable directly or by rebooting the system.

- Note: This Logfile stops when building the `TOOLS` directory.

      File not found. - 'C:\FREECOM\LASTMAKE.MK'
      File not found. - 'C:\FREECOM\TOOLS\*.MAP'
      File not found. - 'C:\FREECOM\TOOLS\*.COM'
      File not found. - 'C:\FREECOM\UTILS\*.MAP'
      File not found. - 'C:\FREECOM\CRITER\*.OBJ'
      File not found. - 'C:\FREECOM\CRITER\*.CFG'
      MAKE0000.$$$ => C:\FREECOM\UTILS\TCCDOS.CFG
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      mktools.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      mkctxt.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      chunk.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      mkinfres.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      MAKE0000.$$$ => C:\FREECOM\STRINGS\TCCDOS.CFG
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      fixstrs.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      FIXSTRS: loading file DEFAULT.LNG
      FIXSTRS: loading file english
      FIXSTRS: building STRINGS resource
      FIXSTRS: building STRINGS library source files
      strings.h => C:\FREECOM\STRINGS\..\strings.h
      MAKE0001.$$$ => C:\FREECOM\STRINGS\MKSTRLIB.BAT
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      critstrs.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      CRITSTRS: load file DEFAULT.ERR
      CRITSTRS: load file english
      CRITSTRS: Running validation check
      CRITSTRS: Dumping CRITER strings resource
      TLIB 3.01 Copyright (c) 1987, 1990 Borland International
      +str0000.obj &
      +str0001.obj &
      +str0002.obj &
      +str0003.obj &
      +str0004.obj &
      +str0005.obj &
      +str0006.obj &
      +str0007.obj &
      +str0008.obj &
      +str0009.obj &
      +str000a.obj &
      +str000b.obj &
      +str000c.obj &
      +str000d.obj &
      +str000e.obj &
      +str000f.obj &
      +str0010.obj &
      +str0011.obj &
      +str0012.obj &
      +str0013.obj &
      +str0014.obj &
      +str0015.obj &
      +str0016.obj &
      +str0017.obj &
      +str0018.obj &
      +str0019.obj &
      +str001a.obj &
      +str001b.obj &
      +str001c.obj &
      +str001d.obj &
      +str001e.obj &
      +str001f.obj &
      +str0020.obj &
      +str0021.obj &
      +str0022.obj &
      +str0023.obj &
      +str0024.obj &
      +str0025.obj &
      +str0026.obj &
      +str0027.obj &
      +str0028.obj &
      +str0029.obj &
      +str002a.obj &
      +str002b.obj &
      +str002c.obj &
      +str002d.obj &
      +str002e.obj &
      +str002f.obj &
      +str0030.obj &
      +str0031.obj &
      +str0032.obj &
      +str0033.obj &
      +str0034.obj &
      +str0035.obj &
      +str0036.obj &
      +str0037.obj &
      +str0038.obj &
      +str0039.obj &
      +str003a.obj &
      +str003b.obj &
      +str003c.obj &
      +str003d.obj &
      +str003e.obj &
      +str003f.obj &
      +str0040.obj &
      +str0041.obj &
      +str0042.obj &
      +str0043.obj &
      +str0044.obj &
      +str0045.obj &
      +str0046.obj &
      +str0047.obj &
      +str0048.obj &
      +str0049.obj &
      +str004a.obj &
      +str004b.obj &
      +str004c.obj &
      +str004d.obj &
      +str004e.obj &
      +str004f.obj &
      +str0050.obj &
      +str0051.obj &
      +str0052.obj &
      +str0053.obj &
      +str0054.obj &
      +str0055.obj &
      +str0056.obj &
      +str0057.obj &
      +str0058.obj &
      +str0059.obj &
      +str005a.obj &
      +str005b.obj &
      +str005c.obj &
      +str005d.obj &
      +str005e.obj &
      +str005f.obj &
      +str0060.obj &
      +str0061.obj &
      +str0062.obj &
      +str0063.obj &
      +str0064.obj &
      +str0065.obj &
      +str0066.obj &
      +str0067.obj &
      +str0068.obj &
      +str0069.obj &
      +str006a.obj &
      +str006b.obj &
      +str006c.obj &
      +str006d.obj &
      +str006e.obj &
      +str006f.obj &
      +str0070.obj &
      +str0071.obj &
      +str0072.obj &
      +str0073.obj &
      +str0074.obj &
      +str0075.obj &
      +str0076.obj &
      +str0077.obj &
      +str0078.obj &
      +str0079.obj &
      +str007a.obj &
      +str007b.obj &
      +str007c.obj &
      +str007d.obj &
      +str007e.obj &
      +str007f.obj &
      +str0080.obj &
      +str0081.obj &
      +str0082.obj &
      +str0083.obj &
      +str0084.obj &
      +str0085.obj &
      +str0086.obj &
      +str0087.obj &
      +str0088.obj &
      +str0089.obj &
      +str008a.obj &
      +str008b.obj &
      +str008c.obj &
      +str008d.obj &
      +str008e.obj &
      +str008f.obj &
      +str0090.obj &
      +str0091.obj &
      +str0092.obj &
      +str0093.obj &
      +str0094.obj &
      +str0095.obj &
      +str0096.obj &
      +str0097.obj &
      +str0098.obj &
      +str0099.obj &
      +str009a.obj &
      +str009b.obj &
      +str009c.obj &
      +str009d.obj &
      +str009e.obj &
      +str009f.obj &
      +str00a0.obj &
      +str00a1.obj &
      +str00a2.obj &
      +str00a3.obj &
      +str00a4.obj &
      +str00a5.obj &
      +str00a6.obj &
      +str00a7.obj &
      +str00a8.obj &
      +str00a9.obj &
      +str00aa.obj &
      +str00ab.obj &
      +str00ac.obj &
      +str00ad.obj &
      +str00ae.obj &
      +str00af.obj &
      +str00b0.obj &
      +str00b1.obj &
      +str00b2.obj &
      +str00b3.obj &
      +str00b4.obj &
      +str00b5.obj &
      +str00b6.obj &
      +str00b7.obj &
      +str00b8.obj &
      +str00b9.obj &
      +str00ba.obj &
      +str00bb.obj &
      +str00bc.obj &
      +str00bd.obj &
      +str00be.obj &
      +str00bf.obj &
      +str00c0.obj &
      +str00c1.obj &
      +str00c2.obj &
      +str00c3.obj &
      +str00c4.obj &
      +str00c5.obj &
      +str00c6.obj &
      +str00c7.obj &
      +str00c8.obj &
      +str00c9.obj &
      +str00ca.obj &
      +str00cb.obj &
      +str00cc.obj &
      +str00cd.obj &
      +str00ce.obj &
      +str00cf.obj &
      +str00d0.obj &
      +str00d1.obj &
      +str00d2.obj &
      +str00d3.obj &
      +str00d4.obj &
      +str00d5.obj &
      +str00d6.obj &
      +str00d7.obj &
      +str00d8.obj &
      +str00d9.obj &
      +str00da.obj &
      +str00db.obj &
      +str00dc.obj &
      +str00dd.obj &
      +str00de.obj &
      +str00df.obj &
      +str00e0.obj &
      +str00e1.obj &
      +str00e2.obj
      strings.lib => C:\FREECOM\STRINGS\STRINGS\..\strings.lib
      strings.lst => C:\FREECOM\STRINGS\STRINGS\..\strings.lst
      context.h_c => C:\FREECOM\CRITER\..\context.h_c
      context.inc => C:\FREECOM\CRITER\..\context.inc
      MAKE0000.$$$ => C:\FREECOM\LIB\TCCDOS.CFG
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      alprmblk.c:
      alsysblk.c:
      beep_l.c:
      beep_n.c:
      brk_get.c:
      brk_set.c:
      cbreak.c:
      cbs.c:
      cd_dir.c:
      cgetch.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      cgettime.c:
      chgctxt.c:
      chgdrv.c:
      chgenv.c:
      chgenvc.c:
      chgenvr.c:
      cmdinput.c:
      comfile.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      compfile.c:
      ctxt.c:
      ctxt_adr.c:
      ctxt_as.c:
      ctxt_chg.c:
      ctxt_clr.c:
      ctxt_get.c:
      ctxt_inf.c:
      ctxt_mk.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      ctxt_mkn.c:
      ctxt_pop.c:
      ctxt_psh.c:
      ctxt_rnu.c:
      ctxt_set.c:
      ctxt_ss.c:
      ctxt_vw.c:
      curdatel.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      curtime.c:
      cwd.c:
      dateget.c:
      dateset.c:
      dbg_c.c:
      dbg_mem.c:
      dbg_prnt.c:
      dbg_s.c:
      dbg_sn.c:
      devopen.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      dispcnt.c:
      drvnum.c:
      efct_001.c:
      exec.c:
      exec1.c:
      farread.c:
      fcompl1.c:
      fcompl2.c:
      fdattr.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      fdevopen.c:
      fdsattr.c:
      fillcomp.c:
      find.c:
      freep.c:
      frsysblk.c:
      fstpcpy.c:
      gallstr.c:
      get1mcb.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      getenv.c:
      goxy.c:
      grabfcom.c:
      gumblink.c:
      hdlrctxt.c:
      hist_get.c:
      hist_set.c:
      inputdos.c:
      is_empty.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      is_fnamc.c:
      is_fnstr.c:
      is_pchr.c:
      isadev.c:
      keyprsd.c:
      kswap_c.c:
      lastdget.c:
      lastdset.c:
      leadopt.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      ltrimcl.c:
      ltrimsp.c:
      lwr1wd.c:
      match.c:
      messages.c:
      mk_rddir.c:
      mktmpfil.c:
      msg_dflt.c:
      msg_dps.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      msg_fstr.c:
      msg_get.c:
      msg_gpt.c:
      msg_mkey.c:
      msg_prmp.c:
      mux_ae.c:
      nls.c:
      nls_date.c:
      nls_time.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      num_fmt.c:
      onoff.c:
      openf.c:
      optsb.c:
      optsi.c:
      optss.c:
      parsenum.c:
      pr_date.c:
      pr_prmpt.c:
      pr_time.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      prprompt.c:
      realnum.c:
      res.c:
      res_r.c:
      res_w.c:
      resfile.c:
      rmtmpfil.c:
      rtrimcl.c:
      rtrimsp.c:
      salloc.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      samefile.c:
      scancmd.c:
      scanopt.c:
      showcmds.c:
      skqwd.c:
      split.c:
      sumblink.c:
      tempfile.c:
      timeget.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      timeset.c:
      tmpnam.c:
      trimcl.c:
      trimsp.c:
      txtlend.c:
      unquote.c:
      vcgetch.c:
      vcgetstr.c:
      where.c:
      err1.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err2.c:
      err3.c:
      err4.c:
      err5.c:
      err6.c:
      err7.c:
      err8.c:
      err9.c:
      err10.c:
      err11.c:
      err12.c:
      err13.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err14.c:
      err15.c:
      err16.c:
      err17.c:
      err18.c:
      err19.c:
      err20.c:
      err21.c:
      err22.c:
      err23.c:
      err24.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err25.c:
      err26.c:
      err27.c:
      err28.c:
      err29.c:
      err30.c:
      err31.c:
      err32.c:
      err33.c:
      err34.c:
      err35.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err36.c:
      err37.c:
      err38.c:
      err39.c:
      err40.c:
      err41.c:
      err42.c:
      err43.c:
      err44.c:
      err45.c:
      err46.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err47.c:
      err48.c:
      err49.c:
      err50.c:
      err51.c:
      err52.c:
      err53.c:
      err54.c:
      err55.c:
      err56.c:
      err57.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err58.c:
      err59.c:
      err60.c:
      err61.c:
      err62.c:
      err63.c:
      err64.c:
      err65.c:
      err66.c:
      err67.c:
      err68.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err69.c:
      err70.c:
      err71.c:
      err72.c:
      err73.c:
      err74.c:
      err75.c:
      err76.c:
      err77.c:
      err78.c:
      err79.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      err80.c:
      TLIB 3.01 Copyright (c) 1987, 1990 Borland International
      +alprmblk.obj &
      +alsysblk.obj &
      +beep_l.obj &
      +beep_n.obj &
      +brk_get.obj &
      +brk_set.obj &
      +cbreak.obj &
      +cbs.obj &
      +cd_dir.obj &
      +cgetch.obj &
      +cgettime.obj &
      +chgctxt.obj &
      +chgdrv.obj &
      +chgenv.obj &
      +chgenvc.obj &
      +chgenvr.obj &
      +cmdinput.obj &
      +comfile.obj &
      +compfile.obj &
      +ctxt.obj &
      +ctxt_adr.obj &
      +ctxt_as.obj &
      +ctxt_chg.obj &
      +ctxt_clr.obj &
      +ctxt_get.obj &
      +ctxt_inf.obj &
      +ctxt_mk.obj &
      +ctxt_mkn.obj &
      +ctxt_pop.obj &
      +ctxt_psh.obj &
      +ctxt_rnu.obj &
      +ctxt_set.obj &
      +ctxt_ss.obj &
      +ctxt_vw.obj &
      +curdatel.obj &
      +curtime.obj &
      +cwd.obj &
      +dateget.obj &
      +dateset.obj &
      +dbg_c.obj &
      +dbg_mem.obj &
      +dbg_prnt.obj &
      +dbg_s.obj &
      +dbg_sn.obj &
      +devopen.obj &
      +dispcnt.obj &
      +drvnum.obj &
      +efct_001.obj &
      +exec.obj &
      +exec1.obj &
      +farread.obj &
      +fcompl1.obj &
      +fcompl2.obj &
      +fdattr.obj &
      +fdevopen.obj &
      +fdsattr.obj &
      +fillcomp.obj &
      +find.obj &
      +freep.obj &
      +frsysblk.obj &
      +fstpcpy.obj &
      +gallstr.obj &
      +get1mcb.obj &
      +getenv.obj &
      +goxy.obj &
      +grabfcom.obj &
      +gumblink.obj &
      +hdlrctxt.obj &
      +hist_get.obj &
      +hist_set.obj &
      +inputdos.obj &
      +is_empty.obj &
      +is_fnamc.obj &
      +is_fnstr.obj &
      +is_pchr.obj &
      +isadev.obj &
      +keyprsd.obj &
      +kswap_c.obj &
      +lastdget.obj &
      +lastdset.obj &
      +leadopt.obj &
      +lowexec.obj &
      +ltrimcl.obj &
      +ltrimsp.obj &
      +lwr1wd.obj &
      +match.obj &
      +messages.obj &
      +mk_rddir.obj &
      +mktmpfil.obj &
      +msg_dflt.obj &
      +msg_dps.obj &
      +msg_fstr.obj &
      +msg_get.obj &
      +msg_gpt.obj &
      +msg_mkey.obj &
      +msg_prmp.obj &
      +mux_ae.obj &
      +nls.obj &
      +nls_date.obj &
      +nls_time.obj &
      +num_fmt.obj &
      +onoff.obj &
      +openf.obj &
      +optsb.obj &
      +optsi.obj &
      +optss.obj &
      +parsenum.obj &
      +pr_date.obj &
      +pr_prmpt.obj &
      +pr_time.obj &
      +prprompt.obj &
      +realnum.obj &
      +res.obj &
      +res_r.obj &
      +res_w.obj &
      +resfile.obj &
      +rmtmpfil.obj &
      +rtrimcl.obj &
      +rtrimsp.obj &
      +salloc.obj &
      +samefile.obj &
      +scancmd.obj &
      +scanopt.obj &
      +showcmds.obj &
      +skqwd.obj &
      +split.obj &
      +sumblink.obj &
      +tempfile.obj &
      +timeget.obj &
      +timeset.obj &
      +tmpnam.obj &
      +trimcl.obj &
      +trimsp.obj &
      +txtlend.obj &
      +unquote.obj &
      +vcgetch.obj &
      +vcgetstr.obj &
      +where.obj &
      +err1.obj &
      +err2.obj &
      +err3.obj &
      +err4.obj &
      +err5.obj &
      +err6.obj &
      +err7.obj &
      +err8.obj &
      +err9.obj &
      +err10.obj &
      +err11.obj &
      +err12.obj &
      +err13.obj &
      +err14.obj &
      +err15.obj &
      +err16.obj &
      +err17.obj &
      +err18.obj &
      +err19.obj &
      +err20.obj &
      +err21.obj &
      +err22.obj &
      +err23.obj &
      +err24.obj &
      +err25.obj &
      +err26.obj &
      +err27.obj &
      +err28.obj &
      +err29.obj &
      +err30.obj &
      +err31.obj &
      +err32.obj &
      +err33.obj &
      +err34.obj &
      +err35.obj &
      +err36.obj &
      +err37.obj &
      +err38.obj &
      +err39.obj &
      +err40.obj &
      +err41.obj &
      +err42.obj &
      +err43.obj &
      +err44.obj &
      +err45.obj &
      +err46.obj &
      +err47.obj &
      +err48.obj &
      +err49.obj &
      +err50.obj &
      +err51.obj &
      +err52.obj &
      +err53.obj &
      +err54.obj &
      +err55.obj &
      +err56.obj &
      +err57.obj &
      +err58.obj &
      +err59.obj &
      +err60.obj &
      +err61.obj &
      +err62.obj &
      +err63.obj &
      +err64.obj &
      +err65.obj &
      +err66.obj &
      +err67.obj &
      +err68.obj &
      +err69.obj &
      +err70.obj &
      +err71.obj &
      +err72.obj &
      +err73.obj &
      +err74.obj &
      +err75.obj &
      +err76.obj &
      +err77.obj &
      +err78.obj &
      +err79.obj &
      +err80.obj
      MAKE0000.$$$ => C:\FREECOM\CMD\TCCDOS.CFG
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      alias.c:
      beep.c:
      break.c:
      call.c:
      cdd.c:
      chdir.c:
      cls.c:
      copy.c:
      ctty.c:
      date.c:
      del.c:
      dir.c:
      dirs.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      doskey.c:
      echo.c:
      exit.c:
      exit2.c:
      fddebug.c:
      for.c:
      goto.c:
      history.c:
      if.c:
      memory.c:
      mkdir.c:
      path.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      pause.c:
      popd.c:
      prompt.c:
      pushd.c:
      rem.c:
      ren.c:
      rmdir.c:
      set.c:
      shift.c:
      time.c:
      truename.c:
      type.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      verify.c:
      which.c:
      TLIB 3.01 Copyright (c) 1987, 1990 Borland International
      +alias.obj &
      +beep.obj &
      +break.obj &
      +call.obj &
      +cdd.obj &
      +chdir.obj &
      +cls.obj &
      +copy.obj &
      +ctty.obj &
      +date.obj &
      +del.obj &
      +dir.obj &
      +dirs.obj &
      +doskey.obj &
      +echo.obj &
      +exit.obj &
      +exit2.obj &
      +fddebug.obj &
      +for.obj &
      +goto.obj &
      +history.obj &
      +if.obj &
      +memory.obj &
      +mkdir.obj &
      +path.obj &
      +pause.obj &
      +popd.obj &
      +prompt.obj &
      +pushd.obj &
      +rem.obj &
      +ren.obj &
      +rmdir.obj &
      +set.obj &
      +shift.obj &
      +time.obj &
      +truename.obj &
      +type.obj &
      +verify.obj &
      +which.obj
      MAKE0000.$$$ => C:\FREECOM\SHELL\TCCDOS.CFG
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      cswapc.c:
      batch.c:
      cmdtable.c:
      command.c:
      Turbo C++  Version 1.01 Copyright (c) 1990 Borland International
      expalias.c:
      init.c:
      kswap.c:
      loadhigh.c:
      module.c:
      redir.c:
      ver.c:
      Turbo Link  Version 3.01 Copyright (c) 1987, 1990 Borland International
      Warning: __fstpcpy defined in module FSTPCPY.OBJ is duplicated in module FSTPCPY
      Warning: _exit defined in module cswapc.c is duplicated in module EXIT
      Warning: _putenv defined in module ENV_PUT.OBJ is duplicated in module PUTENV
      shell\command.exe => C:\FREECOM\COMMAND.COM
      infores =>> C:\FREECOM\COMMAND.COM
      criter\criter1 =>> C:\FREECOM\COMMAND.COM
      criter\criter =>> C:\FREECOM\COMMAND.COM
      strings\strings.dat =>> C:\FREECOM\COMMAND.COM
      Poking: @19DF:0080 = 1

Copyright 2002 © Steffen Kaiser - former maintainer of FreeCOM