Usage:
val <obj-files>,<exe-file>,<map-file>,<lib-files>,<res-files>,<def-file>

where:
  <obj-files> = <ambiguous filespec> [{'+' | ' '} <ambiguous filespec>]...
  <exe-file>  = <unique filespec>
  <map-file>  = <unique filespec>
  <lib-files> = <ambiguous filespec> [{'+'|' '} <ambiguous filespec>]...

If any of the above operands are missing, you will be prompted.  A ';' may 
appear in place of a comma to take defaults for the balance of the operands.

Two additional file specifications are required when /PE is specified on
the command line:

  <res-files> = <ambiguous filespec> [{'+'|' '} <ambiguous filespec>]...
  <def-file>  = <unique filespec>

A response file may be used where ever a filespec can occur.  A response file
is prefixed with a '@'.  The linker will automatically look for two response
files called "VAL.ENV".  One in the directory where the linker resides and the
other from the current drive/directory.  In this manner, defaults may be set.
Note these files work like any response file, and carriage returns are
probably not desired.

Switches, which are explained below, may appear either before or after a
file specification.  A switch which immediately preceeds a file specification
must be followed by a space.  Switch are prefixed by "/".

Press [RETURN] to continue.
Switches:

Abbr       Full
Name       Name        Def                    Description
---- ----------------- ------ -----------------------------------------------
AH   ALignexeheader    Yes    Align EXE header to paragraph boundary
A32  Align32           0      Alignment for 32-bit images, not PE or LX
BDL  buildDll          No     PE files will be dlls.
BSZ  BUffersize:n      32768  Set I/O buffersize (512 - 65,024 bytes)
CI   CAseignore        Yes    Linker will ignore the case of symbols
CO   COmfile           No     Linker will to produce a .COM file
CON  consoleSubSys     Yes    PE files will be console apps
     CParmaxalloc      0xFFFF Sets max paragraphs needed beyond EXE file
DE   DEbug             No     Enable debug information
DET  DETaillevel       0      Sets the detail included in the .MAP file:
                               0 - Standard link map 
                               1 - Include Segment header info
                               2 - Include Segment header info by module
                               3 - Include data map by module
                               4 - Include EXE header
                               5 - Include fixup info
     DOsseg            No     Use Microsoft "DOSSEG" segment ordering

Press [RETURN] to continue.
Switches (continued):

Abbr       Full
Name       Name        Def                    Description
---- ----------------- ------ -----------------------------------------------
     EXechecksum       No     Compute checksum in .EXE header file 
FA   FileAlign         512    File alignment for PE images
GHS  GRouphashsize:n   25     Hash size for group symbols (1, 1023)
HLP  HElp              No     Produce this information
L    LIbdir            None   Library search directory path
LE   LE                No     Linker will produce an LE executable
LHS  LNamehashsize:n   25     Hash size for LNAMES symbols (1 - 1023)
LX   LX                No     Linker will produce an LX executeable
LXP  LXPAGESIze        4096   LX file format page size (128-32768)
LXS  LXPAGESHift       12     LX file format page shift (7-15)
LXV  LXVersion         0      LX module version (0-0xffffffff)
MP   MAp               No     Produce link map with public symbols
NAH  NOALignexeheader  No     Align EXE header to standard page boundary
NCI  NOCAseignore      No     Linker will respect case of symbols
NCO  NOCOMfile         Yes    Linker will not produce a .COM file
NDL  NObuildDLL        Yes    PE files will not be DLLs.
NDO  NODOsseg          Yes    Linker will not use DOSSEG ordering

Press [RETURN] to continue.
Switches (continued):

Abbr       Full
Name       Name        Def                    Description
---- ----------------- ------ -----------------------------------------------
NEX  NOEXechecksum     Yes    Set checksum in .EXE header file to 0
NLE  NOLE              Yes    Linker will not produce an LE executable
NLX  NOLX              Yes    Linker will not produce an LX executable
NMP  NOMAp             Yes    Publics not included in link map
NOB  NOOBjchecksum     Yes    Ignore checksum in .OBJ records               
NPS  NOpadSegments     Yes    Don't pad PE sections
NPA  NOPAuse           Yes    No pause before writing executable image
NPE  NoPE              Yes    Linker will not produce a PE executable
NSY  NOSYsfile         Yes    Linker will not produce a .SYS file
NSYM NOSymbolTable     Yes    Linker will not produce a symbol table
NST  NOSTatistics      Yes    Linker will not give performance statistics
N32  NOUse32           Yes    Linker will not allow 32-bit segments
     OBjchecksum       No     Test checksum in .OBJ records               
     ORder:(text)      none   Segment ordering expression (see below)
OA   ObjectAlign       4096   Object alignment for PE images
     PAuse             No     Pause before writing executable image
PAS  padSegments       No     Pad PE sections

Press [RETURN] to continue.
Switches (continued):

Abbr       Full
Name       Name        Def                    Description
---- ----------------- ------ -----------------------------------------------
PE   PE                No     Produce a PE executable
PH   peHeapSize        65536  Heap size for PE files
PHC  peHeapCommit      0      Amount of heap to commit for PE files
PIB  peImageBase       4M     Image base for PE files
PSC  peStackCommit     8K     Amount of stack to commit for PE files
PS   peStackSize       1M     Stack size for PE,LX, and LE files
PHS  PUblichashsize:n  525    Hash size for public symbols (1 - 1023)
     SYsfile           No     Produce a .SYS file (e.g., device driver)
SHS  SEgmenthashsize:n 25     Hash size for segment (1 - 1023)
STB  StubFile:(text)   stub32a.exe  MSDOS Stub file for PE/LE/LX formats
STK  STACk:n           none   Insure there is a stack of at least n bytes
STS  STATistics        No     Produce performance statistics for linker
SY   SYsfile           NO     Linker will produce a .SYS file
SYM  SymTable          No     Produce GRDB compatible symbol table
TMP  TEmpfile:(text)  val.tmp Specifies name of linker temporary file
WIN  winSubSys         No     PE files will use WIN32 subsystem
32   Use32             No     Linker will allow 32-bit segments

Press [RETURN] to continue.
Segment order expressions:

<exp>     :: <term>   [{'or' |'+'|'|'} <term>  ]...
<term  >  :: <factor> [{'and'|'*'|'&'} <factor>]...
<factor>  :: ['!'] 
	     {'True'		        | (always include segment)
	      'Talse'		        | (never include segment)
	      'Class['  <pattern> ']'   | (inc if seg's class matches pattern)
	      'Group['  <pattern> ']'   | (inc if seg's group matching pattern)
	      'Segment['<pattern> ']'   | (inc if segment name matches pattern)
	      '(' <exp> ')'}
<pattern> :: A pattern used to match a class, group or segment.  The pattern
	     may contain imbedded '?' characters which will match any single
	     character.  The pattern may contain a leading and/or trailing '*'
	     character.  If the '*' is leading, then the remaining pattern must
	     match the end of the class, group or segment name.  If the '*' is
	     trailing, then the remaining pattern must match the beginning of
	     the class, group or segment name.  If the '*' is both leading and
	     trailing, then the remaining pattern can match anywhere in the
	     class, group or segment name.

Press [RETURN] to continue.

Example: /DOSSEG is equivalent to:
	 /ORDER:(class[*code],!group[dgroup],class[begdata],
		 !(class[bss]|class[stack]),class[bss],class[stack])

VALX is courtesy of:

David Troendle - original VAL linker for DOS/16
David Lindauer - 32-bit extensions