***************
*** 0 ****
--- 1,490 ----
+ 	SCCS Id: @(#)Install.dos	 3.3		1999/12/04
+ 
+ 	   Copyright (c) NetHack PC Development Team 1990-1999.
+        NetHack may be freely redistributed.  See license for details.
+        ==============================================================
+               Instructions for compiling and installing
+ 		     NetHack 3.3 on a DOS system
+          ======================================================
+                   (or, How to make PC NetHack 3.3)
+ 		  Last revision: December  4, 1999
+ 
+ Credit for a runnable full PC NetHack 3.3 goes to the PC Development team
+ of Paul Winner, Kevin Smolkowski, Michael Allison, Yitzhak Sapir, Bill Dyer, 
+ Timo Hakulinen, Yamamoto Keizo, Mike Threepoint, Mike Stephenson, 
+ Stephen White, Ken Washikita and Janet Walz.  The present port is based
+ on the work of Pierre Martineau, Stephen Spackman, Steve Creps, Mike
+ Threepoint, Mike Stephenson, Norm Meluch and Don Kneller.
+ 
+ I.  Dispelling the Myths:
+ 
+     Compiling NetHack is not as easy as it sounds, nor as hard as it looks,
+     however it will behoove you to read this entire file through before
+     beginning the task.
+ 
+     We have provided the proper makefiles for building NetHack using the
+     following compilers:
+ 
+     Microsoft C 7.0 and Microsoft Visual C++ Professional (MSVC) 1.0 or later
+     djgpp V2.0 or later
+ 
+     For specific details concerning each compiler, please see the
+     corresponding appendix.
+ 
+     The makefile named Makefile.MSC is for use with NMAKE, the make
+     utility that ships with the Microsoft C Compiler version 7.0 and
+     above, including Microsoft Visual C++ Professional.
+ 
+     The makefile named Makefile.GCC is for use with GNU Make that
+     accompanies djgpp.
+ 
+     The makefile named Makefile.BC is for use with Borland's make that
+     accompanies Borland C 3.1.  Other versions of Borland's make may or
+     may not work, but version 3.7 (of MAKE) is known to not work.
+ 
+     If you want to build a copy of NetHack that is identical to the
+     "official binaries", please see appendix A.
+ 
+     You may find it useful to obtain copies of lex (flex) and yacc (bison
+     or byacc).  While not strictly necessary to compile nethack, they are 
+     required should you desire to make any changes to the level and dungeon 
+     compilers.  Flex and Bison are included with the DJGPP distribution and 
+     are also available on many archive sites.
+ 
+ II. To compile your copy of NetHack on a DOS machine:
+     (or "just follow these few 'simple' steps outlined below.")
+ 
+ 1.  It almost goes without saying that you should make sure that your tools
+     are set up and running correctly.
+ 
+ 2.  Make sure all the NetHack files are in the appropriate directory
+     structure.  You should have a main directory with subdirectories
+     dat, doc, include, src, sys\share, sys\msdos, util, win\tty and
+     win\share.  Other subdirectories may also be included in your
+     distribution, but they are not necessary for use with DOS.  You can
+     delete them to save space.  If you are using MSC7 or MSVC, the makefile
+     will create an additional directory src\o.
+ 
+     Required Source Directories for DOS NetHack:
+ 
+                            (top)
+                              |
+         ------------------------------------------------- 
+         |       |     |        |       |     |          | 
+        util    dat   doc    include   src   sys        win
+                                              |          |
+                                           ------      ----- 
+                                           |    |      |   |  
+                                        share msdos   tty share
+ 
+     Check the file "Files" in your top level directory for an exact
+     listing of what files are in which directory.  In order for the
+     Makefiles to work, all the source files must be in the proper
+     locations.
+ 
+     If you downloaded or ftp'd the sources from a UNIX system, the lines
+     will probably end in UNIX-style newlines, instead of the carriage
+     return and line feed pairs used by DOS.  Some programs have trouble
+     with them, so you may need to convert them (with a utility like
+     Rahul Dhesi's "flip").
+ 
+ 3.  A few files in the NetHack distribution are uuencoded because
+     they contain non-ascii characters, or binary information.  To use
+     them they must first be decoded using a uudecode utility (available
+     from your local archive site).  After reading the descriptions
+     of these files below, uudecode the ones that you will need in order
+     to build NetHack with the options that you have decided you want.
+ 
+     The uuencoded files that are relevant to NetHack on a DOS machine
+     include:
+ 
+        nhico.uu   Optional.  This uudecodes into a MS-Windows compatible
+                   ICON.  You only need to uudecode this if you plan on
+                   launching NetHack from MS-Windows, and want a unique
+                   Nethack ICON to use.
+ 
+        nhpif.uu   Optional.  This uudecodes into a MS-Windows compatible
+                   PIF file which may be used to launch NetHack from the
+                   MS-Windows program manager.  You only need to uudecode
+                   this if you plan on launching NetHack from within
+                   MS-Windows.
+ 
+        termcap.uu Optional.  Termcap support is no longer required for
+                   building NetHack, though you can if you want to.
+                   The file termcap.uu is the fixed version
+                   of the Fred Fish termcap library.  If you have modified
+                   pcconf.h to define TERMLIB as well as commented out
+                   the default #define NO_TERMS, then you will need to
+                   run a uudecode utility on termcap.uu to generate the
+                   file termcap.zip.  termcap.zip contains several files
+                   of termcap routines. Using them with NetHack involves
+                   very little knowledge of the UNIX concept of a termcap
+                   database; mostly you need to know enough to set a TERM
+                   environment variable.  You can unzip termcap.zip in the
+                   sys/share directory, but if you are going to use it, it
+                   is probably better to unzip a copy in a special directory
+                   and copy the library files to where your linker can find
+                   them.  NetHack versions since 3.1.2 no longer enable
+                   the use of termcap in the default configuration, or
+                   with the official binaries.
+ 
+                   Makefiles are included should you want to build your own
+                   termcap library file.  Makemsc.lib works with Microsoft
+                   C (MSC and MSVC) and generates termcap.lib, Makegcc.lib
+                   works with DJGPP and generates libtermc.a.
+ 
+ 4.  Go to the sys/msdos directory and ensure that the file setup.bat
+     has MSDOS style end-of-line characters rather than UNIX style
+     end-of-line characters.  You can do that using a utility like
+     Rahul Dhesi's "flip", or by invoking the MSDOS edit utility on
+     setup.bat and saving the file without making any changes. Failure to
+     do this will prevent the bat file from executing completely, yet no
+     warning message will be given.
+ 
+     Run the setup.bat batch file with one of the following as the argument:
+ 
+        MSC        For Microsoft C and its NMAKE.
+ 
+        GCC        For djgpp and GNU MAKE.
+ 
+        BC         For Borland C++ 3.1, and Borland's MAKE.
+ 
+     The appropriate and necessary Makefile movements will be accomplished
+     for you, as well as verifying a few files and fixing a few file names
+     on FAT systems with long file name support.
+ 
+ 5.  Now go to the include subdirectory to check a couple of the header
+     files there.  Things *should* work as they are, but since you have
+     probably set up your system in some sort of custom configuration
+     it doesn't hurt to check out the following:
+ 
+     First check config.h according to the comments to match your system and
+     desired set of features.  Mostly you need to check the WIZARD option,
+     and check TERMLIB and COMPRESS.  Also be sure to leave DLB support 
+     commented out in config.h.  MSDOS has support for DLB, but it must be 
+     done through the Makefile, rather than config.h, to ensure that the 
+     necessary packaging steps are done.
+ 
+     We've managed to enable all the special features.  You may include all
+     or as few of them as you wish.  To conserve disk space, you may wish
+     to disable LOGFILE and NEWS.
+ 
+     Also check pcconf.h, which should not need much editing (if you are
+     including random.c, and if you do not require termcap for screen
+     management).  If you are not including random.c you will need to
+     comment out RANDOM.
+ 
+     There are several options available for screen management with this
+     release of PC NetHack.  The features #define TERMLIB, #define
+     ANSI_DEFAULT, and #define NO_TERMS in pcconf.h control the various
+     options.
+ 
+     The NO_TERMS feature (the default) has the advantage of not needing a
+     DEVICE=ANSI.SYS statement in config.sys.  The supplied sources and
+     header files are distributed with support for NO_TERMS enabled.
+     NO_TERMS will not work with TERMLIB, nor with ANSI_DEFAULT defined.
+     The NO_TERMS feature uses internal routines for screen management, and
+     may be an ideal choice if your play machine is industry standard (has
+     an IBM compatible BIOS).
+ 
+     Should you choose to leave NO_TERMS defined, define only one of the two
+     screen access methods.  If compiling for Microsoft compilers, use
+     SCREEN_BIOS; if using DJGPP, you can choose between SCREEN_BIOS
+     and SCREEN_DJGPPFAST.  Never, never, ever choose both.  Bad things
+     will happen.  We are not kidding.
+ 
+     If you leave the #define TERMLIB commented in pcconf.h to disable use
+     of termcap routines, then your screen management must rely on either
+     the NO_TERMS feature described above, or the ANSI_DEFAULT feature.
+     Either of these will make your job a bit easier than if you choose to
+     use TERMLIB.  If you elect to include TERMLIB support, you may compile
+     with both TERMLIB and ANSI_DEFAULT, and simply not set your TERM variable
+     if you do not wish to use the termcap file settings.  You will need
+     to uudecode the termcap library in sys\share if you are using the TERMLIB
+     feature.
+ 
+ 6.  If you want to change the high score list behavior, examine the top of
+     topten.c, in the src directory.  You may want to change the definitions of
+     PERSMAX, POINTSMIN, and ENTRYMAX.  We set POINTSMIN to 51 and ENTRYMAX to
+     50 to keep the size of the score list down.
+ 
+ 7.  Go to the src directory and edit the top of your Makefile.  Be sure the
+     directory you want the game installed (GAMEDIR) in actually exists.
+ 
+     If you elected to use termcap (TERMLIB defined), then uncomment the
+     TERMLIB macro in your Makefile that points to the location of the
+     library.
+ 
+     That is,    TERMLIB =
+     should be   TERMLIB = (SSYS)\termlib.lib
+ 
+     If you are recompiling after patching your sources, or if you got your
+     files from somewhere other than the official distribution, "touch
+     makedefs.c" to ensure that certain files (onames.h and pm.h) are remade,
+     lest potentially troublesome timestamps fool your make utility.
+ 
+     a) For Borland C++ 3.1,
+ 
+        Choose an overlay schema by setting SCHEMA to 1 or 2.  If you change
+        the overlay schema, you will need to recompile all the object modules
+        from scratch since the overlay schema is information is used during
+        compile time for Borland C++, unlike Microsoft C which does it during
+        link time.
+ 
+     b) For Microsoft C 7.0 or greater, and Microsoft Visual C++
+ 
+        The only overlay schema available is Schema3 so you don't have to 
+        choose one.  The Makefile is set up for it already.
+ 
+     If you elected to add graphical tile support, set TILESUPPORT to Y.
+ 
+     Set USE_DLB to Y if you wish to place NetHack's many runtime files into
+     a special archive that NetHack can utilize.  This is highly recommended!
+ 
+ 8.  Now that everything is set up, what you do next depends on which
+     compiler and version you are using.  You will need to execute either
+     step 8a, or step 8b, or step 8c, but only one of them.
+ 
+     a) For Microsoft C 7.0 or greater, and Microsoft Visual C++
+ 
+        Go to the src directory, and "nmake install".
+ 
+     b) For djgpp
+ 
+        Go to the src directory, and using the GNU Make utility,
+        "make install".
+ 
+     c) For Borland C V3.1
+ 
+        Go to the src directory, and using the Borland Make utility,
+        "make -N install".
+ 
+ 
+     Depending on your particular machine and compiler, you can either
+     grab a cup of coffee or go home for the day.  Your computer will be
+     occupied for quite some time.  If all goes well, you will get an
+     NetHack executable.
+ 
+ 9.  If you chose DLB support (recommended), make sure that the file nhdat 
+     got copied into the game directory.
+ 
+     If you didn't choose DLB support, make sure the support files --
+     data, rumors, cmdhelp, opthelp, help, hh,history, guidebook.txt
+     license, and all the *.lev files -- were copied to the game directory.  
+     If not, move them there from the dat directory yourself.  rumors can 
+     be created manually be entering "makedefs -r", data by entering 
+     "makedefs -d".
+ 
+     Make sure the files NetHack1.tib and NetHacko.tib made it to your game
+     directory.  Copy them from src to the game directory yourself if
+     necessary.
+ 
+     Make sure the files defaults.nh and termcap made it to your game
+     directory.  If not, go to sys\share and copy NetHack.cnf to
+     your game directory as defaults.nh.  The name in previous versions was
+     nethack.cnf, but the CNF extension conflicted with the MS Windows
+     speed-dialer, making the file hidden on many machines.
+ 
+     If you changed your build settings to include TERMCAP support, copy
+     termcap to your game directory.  
+ 
+     Edit defaults.nh to reflect your particular setup and personal 
+     preferences, by following the comments.
+ 
+     Also, make sure the file msdoshlp.txt made it to your game directory.
+     If it didn't, move it from sys\msdos to your game directory
+     yourself.
+ 
+ 10. In your game directory, review the settings in defaults.nh and adjust
+     them according to your style of play.  Some new options that you might
+     be interested in are "menustyle" (for tailoring new object selection
+     interface), and "video" (for turning on graphical tiles).
+ 
+     On Borland C++, the soundcard:autodetect option enables pc speaker
+     sound in NetHack if you compiled with PCMUSIC set in pcconf.h. It
+     is rumored that this also works with djgpp, but the PCMUSIC setting
+     in pcconf.h must be uncommented manually.
+ 
+ 11. Play NetHack.  If it works, you're done!
+ 
+ Appendix A - Building the "official binaries"
+ 
+     If you wish to build a copy of NetHack identical to the ones that
+     the pc team distributes, observe the following:
+ 
+     Make sure that USE_DLB and TILESUPPORT (if using Microsoft C or Borland
+     C) are both set to be turned on in the appropriate makefile.
+ 
+     For the overlaid binary built with Microsoft C 7.00, make no changes to
+     any of the defines and use the Makefile.MSC as distributed.
+ 
+     For the overlaid binary built with Borland C++ 3.1, make no changes to
+     any of the defines and use the makefile Makefile.BC as distributed.
+ 
+     For the 32-bit binary built with DJGPP (playable on a 386 or
+     better machine only), make no changes to any of the defines and use 
+     the Makefile.GCC as distributed.
+ 
+     Make sure the following files have been converted from the
+     unix style "^J" end of line, to the msdos style "^M^J":
+       license, help, hh, termcap, history, cmdhelp wizhelp and
+       defaults.nh.
+ 
+     Uudecode nhico.uu nhpif.uu.
+ 
+     Place all the files in a clean directory and test.
+ 
+ Appendix B - Microsoft C Compilers
+ 
+     Officially, support is no longer provided for MSC versions prior to
+     7.0.  For versions of MSC 7.0 and greater (including Visual C++ ),
+     a single Makefile is used, and it is MS NMAKE specific.  It is executed
+     from the src directory.  It makes several passes over the files in order
+     to produce overlays.
+ 
+     MSC Version 7.0 works with or without the August 1992 patch.
+ 
+     MSVC Professional 1.x works as distributed.  In some rare cases
+     you may encounter a problem with the compiler where it stops
+     part way through the build with a memory error.  Things proceed
+     normally after starting 'nmake install' once again.  The problem,
+     although annoying if it happens, does not affect the code generation
+     or the final executable.
+ 
+     MSC Version 7.0 and MSVC take advantage of the CL environment variables
+     to set the compiler flags, as they exceed the MSDOS limitation of 128
+     characters on the command line.  Please read the Makefile carefully
+     and select those options that go with the compiler.  Also, remember
+     to run setup.bat to set the CL environment variable before you compile.
+ 
+   Microsoft C version 7.0 and
+   Microsoft Visual C++ Professional versions up to 1.52c.
+ 
+     Microsoft's MOVE overlay facility is suitable for building overlaid
+     versions of NetHack.
+ 
+     A single Makefile is used, and it is NMAKE specific.  It is executed
+     from the src directory.  It is stored in the distribution as
+     sys/msdos/Makefile.MSC.  It is moved to the src directory (with the
+     new name 'Makefile') by setup.bat when invoked like so: "setup MSC".
+ 
+     The Microsoft Visual C++ Professional compiler utilizes the same
+     Makefiles and instructions for compiling as Microsoft C version 7.0.
+ 
+ Appendix C - DJGPP Compiler (gcc ported to msdos)
+ 
+     If you have a 386 or better machine, you are in luck.  You can compile
+     NetHack without spending money on a compiler.  DJGPP is available free
+     from many archive sites.
+     At the time of this release, the URL
+ 	http://www.delorie.com/djgpp/zip-picker.html/
+     had information on how to obtain djgpp and what pieces to get.
+ 
+     Setting up DJGPP is more than adequately explained in the documentation
+     that comes with it.  Be sure to pick up the yacc and flex built with
+     DJGPP if you intend to do any modification of the special levels or
+     dungeon compilers.  They should be available at the same place you got
+     djgpp.
+ 
+     The latest version of djgpp, V2.0 will produce a binary that will run
+     under Microsoft Windows, or any other DPMI provider.  djgpp also comes
+     with a DPMI provider called CWSDPMI.  Place CWSDPMI.EXE in your path
+     and it will be used in the absence of any other DPMI provider.
+ 
+     If you want to use the built-in DJGPP screen routines, uncomment
+     SCREEN_DJGPPFAST in pcconf.h (the default for djgpp).
+     Note that some of these routines are broken under early versions
+     of the compiler, so we pick and choose the ones that work.
+     See video.c for details.
+ 
+ Appendix D - Borland C++ Compiler
+ 
+     Officially, support is not provided for any version of Borland C++ or
+     Turbo C++ other than Borland C++ 3.1.  It does not work with Borland
+     C++ 4.5 yet, and versions 4.0 and 5.0 have not been tested.  We believe
+     that compiling with the version of Turbo C++ equivalent to Borland C++
+     3.1 should work.  For Borland C++ 3.1, a single Makefile is used, and it
+     is specific to Borland's MAKE version 3.6.  It is executed from the src
+     directory and makes several passes over the files in order to produce
+     overlays.
+ 
+   Borland C++ 3.1
+ 
+     Borland's VROOMM overlay facility is suitable for building overlaid
+     versions of NetHack.
+ 
+     A single Makefile is used, and it is MAKE 3.6 specific.  It is executed
+     from the src directory.  It is stored in the distribution as
+     sys/msdos/Makefile.BC.  It is moved to the src directory (with the
+     new name 'Makefile') by setup.bat.
+ 
+     Remember to type 'make -N install' rather than just 'make install'.  The
+     -N option is required.
+ 
+     Make sure to set the directories BCTOP and related directories in
+     Makefile. to the correct directory.  There are problems in running the
+     newest versions of flex and bison from the all-purpose Makefile so you
+     should leave DO_YACC and DO_LEX as is.
+ 
+   Turbo C++
+ 
+     As explained, this has not been tested.  However, if you want to test if
+     Turbo C++ works, provided that the copy of Borland's MAKE you have is
+     version 3.6 (you can check this by running MAKE in an empty directory),
+     you are welcome to try.  If Turbo C++ does not define __BORLANDC__,
+     just put the line:
+ 	#define __BORLANDC__	__TURBOC__
+     at the very very top of hack.h.  If it works, be sure to tell us.
+ 
+ Appendix E - Microsoft C Compiler Warnings
+ 
+     If you are using MSC for your compile with any of the /W levels set,
+     you can expect warnings.  The list below are those warnings that we
+     are aware of and our recommendation for dealing with them.  You can
+     use the warning disable pragma to ignore them if you wish.  (NOTE:
+     this is not a complete list of all warnings you might receive, only
+     those for which we feel we can safely provide guidance on.)
+ 
+ C4131 (function:uses old-style declarator)
+     You should ignore this warning.  In order to make the source code as
+     portable as possible, only old-style declarators are used so that as
+     many compilers as possible can use the same code.
+ C4706 (Assignment within conditional expression)
+     This is a perfectly valid construction.  These warnings have not
+     produced any problems.
+ C4761 (Integral size mismatch in argument; conversion supplied)
+     These should be no problem.  Prototyping compilers will do the con-
+     version, and non-prototyping compilers will go through int anyway.
+ 
+ Appendix F - Additional Notes
+ 
+ 1)  Save files and bones files from previous versions of NetHack will not
+     work with this NetHack.  Don't bother trying to keep them.  Record
+     (score) files from before 3.0 patchlevel 7 will almost work, but you need
+     to make one change manually to them:  At the end of each line is a word or
+     phrase specifying what killed the player.  Change the string to start with
+     the words "killed by", "killed by a", or "killed by an" (whichever is
+     appropriate).  If the death was petrification, it should read "petrified
+     by" instead of "killed by".  Don't change "starvation", "quit", "escaped",
+     or "ascended".
+ 
+ 2)  To install an update of NetHack after changing something, type 'nmake'
+     for Microsoft C, 'make -N' for Borland C++, and 'make' for DJGPP
+     from the src directory.  If you add, delete, or reorder monsters or
+     objects, or you change the format of saved level files, delete any save
+     and bones files.  (Trying to use such files sometimes produces amusing
+     confusions on the game's part, but usually crashes.)
+ 
+     If you made changes to any of the level compiler software, you may have
+     to delete dgn_flex.c, dgn_yacc.c, lev_flex.c, and lev_yacc.c from the
+     util directory to ensure that they are remade.  This is not officially
+     supported for Borland C++.
+ 
+ 3)  During linking the Microsoft Overlay Linker will need temporary storage
+     space.  Make sure you have about a meg of free disk wherever you have
+     defined your temporary storage.
+ 
+ 4)  If you discover a bug and wish to report it please send mail to:
+         nethack-bugs@nethack.org 
+     If you have comments or suggestions, feel free to drop us a line c/o
+         DevTeam@nethack.org
