From: jwalz Date: Sat, 5 Jan 2002 21:05:56 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: MOVE2GIT~3738 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d884715fac0c5ddf4ec754dc16c38057812d9c21;p=nethack *** empty log message *** --- diff --git a/sys/msdos/Install.dos b/sys/msdos/Install.dos new file mode 100644 index 000000000..6045574e7 --- /dev/null +++ b/sys/msdos/Install.dos @@ -0,0 +1,537 @@ + SCCS Id: @(#)Install.dos 3.3 2000/08/02 + + Copyright (c) NetHack PC Development Team 1990-2000. + 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: August 2, 2000 + +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 previous effort of Pierre Martineau, Stephen Spackman, Steve Creps, Mike +Threepoint, Mike Stephenson, Norm Meluch and Don Kneller. + +CONTENTS: + + I. Dispelling the Myths + II. Compiling on a DOS machine + Appendix A - Building the "official binaries" + Appendix B - Building other binaries + Appendix C - Microsoft C Compiler notes + Appendix D - DJGPP Compiler (gcc ported to msdos) notes + Appendix E - Borland C++ Compiler notes + Appendix F - Microsoft C Compiler Warnings + Appendix G - Additional Notes + Appendix H - Contacting Us + +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.52c + djgpp V2.0 or later + Borland C V3.1 + + For specific details concerning each compiler, please see the + corresponding appendix. + + The makefile named Makefile.MSC is for use with Microsoft's NMAKE, + the make utility that ships with the Microsoft C Compiler version 7.0 + and above, including the 16-bit 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 working 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 in (GAMEDIR) 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. The overlay + description file src\Schema3.def is created from sys\msdos\Schema3.MSC + by setup.bat. + + 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! + In fact, we haven't tested NetHack without it for several releases now. + +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. + + 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, simply do the following: + +1. 16-bit Real Mode Overlaid version + Use the 16-bit Microsoft Visual C++ V1.52c compiler + + Paths below are relative to the top of your unpacked + NetHack source distribution: + + md \games\nethack + cd sys\msdos + setup MSC + cd ..\..\src + nmake install + +2. 32-bit Protected Mode DPMI version + Use the 32-bit djgpp compiler V2.03 or greater + + Paths below are relative to the top of your unpacked + NetHack source distribution: + + md \games\nethackd + cd sys\msdos + setup GCC + cd ..\..\src + make install + + +Appendix B - Building other binaries + + 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 an overlaid binary built with Microsoft C 7.00, make no changes to + any of the defines and use the Makefile.MSC as distributed. + + For an 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 C - 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.52c 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. The Makefile + will set the CL environment variable within the context of the build, + so you do not have to do it elsewhere. + + + 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 D - 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 in August 2000, 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.03 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 E - 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 F - 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 G - 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. + +Appendix H - Contacting the Development Team + + 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 + +