From: jwalz Date: Sat, 5 Jan 2002 21:05:57 +0000 (+0000) Subject: *** empty log message *** X-Git-Tag: MOVE2GIT~3728 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=841022952b3e676484269a6f9865cf884076c156;p=nethack *** empty log message *** --- diff --git a/sys/os2/Install.os2 b/sys/os2/Install.os2 new file mode 100644 index 000000000..e0e7651de --- /dev/null +++ b/sys/os2/Install.os2 @@ -0,0 +1,276 @@ + Instructions for compiling and installing NetHack 3.3 + on an OS/2 system + ===================================================== + Timo Hakulinen + Last revision: 29 October 1996 + +0. Read this entire file before starting, and come back to the Notes below if + you have any problems. + +1. Make sure all the NetHack files are in the appropriate directory + structure. You should have a top directory (e.g. nh33, or whatever you + like) with subdirectories dat, doc, include, src, util, sys\share, + sys\os2, and win\tty. You may have other subdirectories under sys and + win, but they will not affect compilation for an OS/2 system. If you do + not follow this structure, the makefile will not function properly. The + .c files for the main program belong in src, those for utility programs in + util, and OS/2-specific ones in sys\os2. All the .h files belong in + include, the documentation in doc, and assorted data files in dat. There + are also some necessary files in sys\share (pc*.c, random.c, dgn_*.*, + lev_*.*). A more detailed explanation of the directory structure is found + in file Files, which should be in the top directory. + + If you downloaded or ftp'd the sources from a UNIX system, the lines may + end in UNIX-style newlines instead of the carriage return and line feed + pairs used by DOS and OS/2. You'll have to convert them (with a utility + like Rahul Dhesi's "flip"). Also, every file should end with a carriage + return / line feed pair, because Microsoft C has had a habit of ignoring + the last line of each file otherwise. Besides, even editing UNIX-style + files with DOS editors is often a royal pain. + +2. The makefile for OS/2, Makefile.os2, is found in directory sys\os2. Copy + it to directory src and rename it Makefile. From now on, Makefile.os2 + will be referred to as "the makefile" in this document. + + The makefile supports the following make utilities: + + NDMAKE a public domain make utility for DOS by Don Kneller + NMAKE make shipped with Microsoft languages and IBM C Set/2 + DMAKE a public domain make for DOS and OS/2 by Dennis Vadura + + Both NDMAKE and DMAKE are available at major archive sites. The + following compilers are supported: + + compiler: runs in: compiles for: + + Microsoft C 5.1 DOS / OS/2 1.0-Warp OS/2 1.x + Microsoft 6.0A (see note 5) - " - - " - + IBM C Set/2 1.00, Toolkit/2 2.00 OS/2 2.x, Warp OS/2 2.x, Warp + IBM CSet++ 2.00 OS/2 2.x, Warp OS/2 2.x, Warp + GCC emx 0.8f (see note 6) OS/2 2.x, Warp OS/2 2.x, Warp + + Note that code compiled for OS/2 versions 1.0-1.3 runs unmodified in OS/2 + versions 2.0 and up. In principle it should be possible to cross compile + NetHack 3.3 for OS/2 in DOS using NDMAKE and MSC, but this is not + recommended (see note 3). + + If you're using some other compiler than one listed above, you will have + to adapt the makefile to your needs. In particular, change the CC, + CFLAGS, LINK, and LFLAGS macros to your C compiler's and linker's liking. + See the makefile for more information. + + If you are going to be constructing Fred Fish's termcap library, you'll + need Makefile.lib in sys\share (see note 4). + +3. Go to the include subdirectory. First edit config.h according to the + comments to match your system and desired set of features. In particular, + make sure that OS2 is defined, and that UNIX, HACKDIR, and COMPRESS are + *not* defined. If you want to try out the new DLB data file library + scheme, uncomment DLB. Note that although the makefile contains some + support for this scheme, it's new in NetHack 3.3 and hasn't been tested. + If your compiler is ANSI compliant (like practically all OS/2 compilers + are), it's probable that nothing else needs to be configured in config.h. + + Next look at os2conf.h. This file shouldn't need much changing. If you + want to use the hardcoded OS/2 system definitions in def_os2.h instead of + the compiler's standard headers, comment out OS2_USESYSHEADERS. This may + become necessary if you are using a compiler which doesn't come with + proper system headers by default. In this case you may have to edit the + definitions there, because every compiler has its own way of declaring + the necessary system functions and data structures. In general you + should prefer the compiler's offerings, if possible. + + If you are going to compile the game on an HPFS drive, uncomment OS2_HPFS, + which enables the use of longer file names during compilation. The + generated executable will only use file names compatible with FAT drives, + however. + + If you are using a 32 bit compiler other than GCC emx 0.8f or C Set/2 in + OS/2 2.x, force OS2_32BITAPI to be defined. Otherwise it is defined only + for the above mentioned compilers. + + If you are not going to include random.c, because you are using the + random number generator provided by your compiler, you will need to + comment out RANDOM. + + If you want to muck with different termcap settings, uncomment TERMLIB to + enable the use of termcap routines (see note 4). This is not necessary to + create a fully functional game, however. + +4. If you are using another compiler than MSC, GCC, or IBM C Set/2, you may + want to look through system.h in the include directory. This file matches + the return and parameter types for system calls and library routines with + various flavors of compilers and operating systems. Leaving this file + alone is unlikely to cause problems, but if you get compile errors with + any functions in the standard library, it's worth checking the + declarations there. + +5. 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. + +6. Go to the src directory and edit the top of the makefile. Be sure that + the directory you want the game installed to actually exists. + + You'll need nroff and/or TeX/LaTeX to do the files in doc. If you don't + have either of these, you can skip it. + + If you elected not to use the high quality BSD random number routines by + commenting out RANDOM in os2conf.h, comment out (or set equal to nothing) + the RANDOM macro in the makefile. + + If you elected to use Fred Fish's termcap library (bundled in as + termcap.uu in directory sys\share), you will have to generate termlib.lib + from those sources by typing "make -f makefile.lib termlib.lib". You must + set the TERMLIB option in the makefile to link the resulting termlib.lib + into the game. + + 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 time stamps fool make. + + If you have lex and yacc programs, or the equivalent flex and bison + programs, you can set up the makefile to generate the appropriate .h and + .c files from their .l and .y counterparts whenever you recompile. This + is done by changing the do_yacc and do_lex targets in the makefile to + depend on targets yacc_act and lex_act instead of yacc_cpy and lex_cpy. + Otherwise the makefile will copy pre-generated yacc and lex output files + dgn_*.* and lev_*.* from directory sys\share to util and include. + + Now, enter "make all", and take a siesta; your computer will be occupied + for a fair amount of time. If all goes well, you will get an executable. + +7. All the support data files should have been copied to the game directory + by the make process. Here is the complete list in alphabetical order of + all the files that should have gotten there during a full build: + + Arc-fila.lev Arc-filb.lev Arc-goal.lev Arc-loca.lev Arc-strt.lev + Bar-fila.lev Bar-filb.lev Bar-goal.lev Bar-loca.lev Bar-strt.lev + Cav-fila.lev Cav-filb.lev Cav-goal.lev Cav-loca.lev Cav-strt.lev + Hea-fila.lev Hea-filb.lev Hea-goal.lev Hea-loca.lev Hea-strt.lev + Kni-fila.lev Kni-filb.lev Kni-goal.lev Kni-loca.lev Kni-strt.lev + Mon-fila.lev Mon-filb.lev Mon-goal.lev Mon-loca.lev Mon-strt.lev + Pri-fila.lev Pri-filb.lev Pri-goal.lev Pri-loca.lev Pri-strt.lev + Ran-fila.lev Ran-filb.lev Ran-goal.lev Ran-loca.lev Ran-strt.lev + Rog-fila.lev Rog-filb.lev Rog-goal.lev Rog-loca.lev Rog-strt.lev + Sam-fila.lev Sam-filb.lev Sam-goal.lev Sam-loca.lev Sam-strt.lev + Tou-fila.lev Tou-filb.lev Tou-goal.lev Tou-loca.lev Tou-strt.lev + Val-fila.lev Val-filb.lev Val-goal.lev Val-loca.lev Val-strt.lev + Wiz-fila.lev Wiz-filb.lev Wiz-goal.lev Wiz-loca.lev Wiz-strt.lev + air.lev asmodeus.lev astral.lev baalz.lev bigrm-1.lev + bigrm-2.lev bigrm-3.lev bigrm-4.lev bigrm-5.lev castle.lev + cmdhelp data dungeon earth.lev fakewiz1.lev + fakewiz2.lev fire.lev help hh history + juiblex.lev knox.lev license medusa-1.lev medusa-2.lev + minefill.lev minend-1.lev minend-2.lev minetn-1.lev minetn-2.lev + nethack.cmd nethack.cnf nethack.exe nethack.ico opthelp + options oracle.lev oracles orcus.lev quest.dat + recover.exe rumors sanctum.lev soko1-1.lev soko1-2.lev + soko2-1.lev soko2-2.lev soko3-1.lev soko3-2.lev soko4-1.lev + soko4-2.lev tower1.lev tower2.lev tower3.lev valley.lev + water.lev wizard1.lev wizard2.lev wizard3.lev wizhelp + + Yes. It's 112 files for a full featured NetHack 3.3. If any of the files + are missing, try to rerun make. If that doesn't help, you'll have to try + to decipher the makefile to find out how to manually create the missing + files. These kinds of troubles shouldn't happen except for two reasons: + You've run out of disk space while compiling or your make utility doesn't + understand the makefile properly for some reason. In either case, you + should get some warnings from the make, though. + + If you have old record, logfile, or news files in the game directory, they + are not overwritten. Of course, old records from NetHack 3.1 and 3.2 are + not worth keeping with 3.3, since these games are really quite different. + + Edit file nethack.cnf in the game directory to reflect your particular + setup and personal preferences, following the comments there. More info + about settable options can be found in the file opthelp and the guidebook. + + If you compiled in the TERMLIB feature, also move the sys\share\termcap + file to your game directory. + +8. If you'll be running NetHack from a different subdirectory, you will want + to "set HACKDIR=c:\games\nh33" (or whatever directory you want to use). + Add it to your config.sys, if you'll be playing often. + + You can also create a special NetHack entry in your Presentation Manager / + Workplace Shell desktop. This will use the included NetHack icon. + The following is a sample program description for OS/2 1.3 desktop, but + it's similar for OS/2 2.0: + + Program title: NetHack 3.3 + Path and file name: c:\games\nh33\nethack.cmd + Parameters: + Working directory: c:\games\nh33 + Program type: OS/2 Full screen + + Naturally you must fill in your own game directory and parameters if you + want to set any. The program type can be either OS/2 Full screen or OS/2 + Windowed. Note that you should set the executable path to use the .cmd + file generated by the makefile. This file generates an extra pause after + the program exit, because otherwise you wouldn't get to see the high score + list upon quitting due to PM/WPS automatically closing the program window. + When starting NetHack normally from OS/2 command prompt, the command + processor starts nethack.exe instead, so no extra pause is generated. + +9. If you want to clear up the temporary files and objects created by the + compilation process, you may issue "make spotless". This will return your + source tree to near-distribution condition. Naturally, it will not affect + your newly built game files in any way. + +10. Play NetHack. If it works, you're done! + + +Notes +----- + +1) Save-files and bones-files from previous versions will not work with + NetHack 3.3. Don't bother trying to keep them. + +2) To install an update of NetHack after changing something, enter "make" + 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.) + +3) When cross-compiling for OS/2 in DOS, NDMAKE is the best choice because it + requires the least RAM for itself. Note however, that cross-compilation + in DOS is discouraged, because it is considered obsolete (OS/2 is really + a much better place to compile). If you still want to try, here are some + suggestions: + + During linking, Microsoft linker will need temporary storage space. Make + sure you have about 1 MB of free disk where ever you have defined your + temporary storage. It is also a good idea to compile with as much free + RAM as possible. It may otherwise get crowded with the bigger, more + complex source files (compiler bombs with "out of heap space" or similar). + If this happens, strip your configuration, zap TSR's, get a better memory + manager etc. + +4) The file sys\share\termcap.uu is the fixed version of the Fred Fish + termcap library. You will need to run a uudecode utility on it 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 best + to unzip a copy in the src directory. That way you will not miss copying + any files over. Wherever you unzip it, get rid of the included makefile + since a better version has been provided as Makefile.lib. After creating + the termcap library file termlib.lib, copy it to src before compiling the + game main source. + +5) When compiling with MSC 6.0, the maintenance version 6.0A should be used + instead of the original 6.0, which was all too buggy to successfully build + NetHack. + +6) Note that emx 0.8f is the first version of GCC for OS/2 that can properly + compile NetHack. Earlier versions do not work, because they don't support + the 16 bit API calls of OS/2. + + GCC emx 0.8f does not currently work properly when fseek() function is + used with text files. This is well documented in the compiler's + documentation. Unfortunately NetHack uses fseek() in several places in + connection with text data. This means that some help texts may not come + out right, but no serious problems should emerge.