billr@saab.CNA.TEK.COM (Bill Randle) (08/18/89)
Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu> Posting-number: Volume 8, Issue 7 Archive-name: NetHack3/Patch2b Patch-To: NetHack3: Volume 7, Issue 56-93 [If this shar file unpacks with 2 control characters missing, they are the control-G characters at the end of the "echo " statements in Makefile.tcc. -br] #! /bin/sh # This is a shell archive. Remove anything before this line, then unpack # it by saving it into a file and typing "sh file". To overwrite existing # files, type "sh file -c". You can also feed this as standard input via # unshar, or by typing "sh <file", e.g.. If this archive is complete, you # will see the following message at the end: # "End of archive 2 (of 7)." # Contents: patch02b # Wrapped by billr@saab on Fri Aug 18 08:33:16 1989 PATH=/bin:/usr/bin:/usr/ucb ; export PATH if test -f 'patch02b' -a "${1}" != "-c" ; then echo shar: Will not clobber existing file \"'patch02b'\" else echo shar: Extracting \"'patch02b'\" \(52490 characters\) sed "s/^X//" >'patch02b' <<'END_OF_FILE' X*** others/Old/Make.ini Wed Aug 16 12:06:40 1989 X--- others/Make.ini Tue Aug 15 20:38:30 1989 X*************** X*** 1,7 **** X! # SCCS Id: @(#)Make.ini 1.4 87/08/08 X! # This is a sample `make.ini' file for NDMAKE v3.7. You will probably want X! # to customize it for your system. X X X X # The order to search for rules and files is specified by .SUFFIXES X--- 1,7 ---- X! # SCCS Id: @(#)Make.ini 3.0 89/08/13 X X+ # This is a sample `make.ini' file for NDMAKE v3.8. You will probably want X+ # to customize it for your system. X X X # The order to search for rules and files is specified by .SUFFIXES X*************** X*** 14,19 **** X--- 14,20 ---- X LIBS = X BIN = X LFLAGS = X+ CC = cl X X # A universally useful target. X clean: X*************** X*** 30,36 **** X .asm.obj:; masm $*.asm; X X # To produce a `.obj' file from a `.c' file using Microsoft C. X! .c.obj:; msc $(CFLAGS) -I\c $*.c X X # To produce a `.obj' file from a `.for' file using Microsoft Fortran. X .for.obj: X--- 31,37 ---- X .asm.obj:; masm $*.asm; X X # To produce a `.obj' file from a `.c' file using Microsoft C. X! .c.obj:; $(CC) $(CFLAGS) -c $*.c X X # To produce a `.obj' file from a `.for' file using Microsoft Fortran. X .for.obj: X*************** X*** 55,61 **** X X # To produce a `.exe' file from a `.c' file. X .c.exe: X! msc $(CFLAGS) -I\c $*.c X link $*.obj $(SETARGV), $@,, $(LIBS) $(LFLAGS) X erase $*.obj X X--- 56,62 ---- X X # To produce a `.exe' file from a `.c' file. X .c.exe: X! $(CC) $(CFLAGS) -c $*.c X link $*.obj $(SETARGV), $@,, $(LIBS) $(LFLAGS) X erase $*.obj X X*** others/Old/Makefile.tcc Wed Aug 16 12:07:08 1989 X--- others/Makefile.tcc Wed Aug 16 10:14:40 1989 X*************** X*** 24,36 **** X # Optional PC NetHack features (see pcconf.h). Set to nothing if not used. X # X # Fish's TERMLIB termcap library. X! TERMLIB = $(LIB)\termlib.lib X # X # High-quality BSD random number generation routines. X RANDOM = o\random.obj X X LFLAGS = /noi X! TLFLAGS = /x /c X # No need to link in the floating point library X LIBS = $(LIB)\c$(MODEL) X X--- 24,37 ---- X # Optional PC NetHack features (see pcconf.h). Set to nothing if not used. X # X # Fish's TERMLIB termcap library. X! #TERMLIB = $(LIB)\termlib.lib X! TERMLIB = X # X # High-quality BSD random number generation routines. X RANDOM = o\random.obj X X LFLAGS = /noi X! TLFLAGS = /x/c X # No need to link in the floating point library X LIBS = $(LIB)\c$(MODEL) X X*************** X*** 43,48 **** X--- 44,54 ---- X # reason with too many objects it produces a file that freaks out X # and hangs the system. X # X+ # Also note: X+ # X+ # Using /EXEPACK with LINK will greatly reduce the size of the X+ # executable (about 50K), it will also greatly increase the memory X+ # required to load it (about 20K). X TLINK = tlink X LINK = link X X*************** X*** 76,90 **** X VOBJM = o\apply.obj o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj \ X o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj \ X o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj \ X! o\exper.obj o\fountain.obj o\invent.obj o\lock.obj o\mcastu.obj \ X! o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj o\music.obj \ X! o\objnam.obj o\options.obj o\pager.obj o\pickup.obj o\polyself.obj \ X! o\potion.obj o\pray.obj o\priest.obj o\read.obj o\restore.obj \ X! o\rip.obj o\rnd.obj o\rumors.obj o\save.obj o\search.obj o\shk.obj \ X! o\sit.obj o\sounds.obj o\spell.obj o\steal.obj o\termcap.obj \ X! o\track.obj o\trap.obj o\uhitm.obj o\vault.obj o\weapon.obj \ X! o\were.obj o\wield.obj o\wizard.obj o\worm.obj o\worn.obj \ X! o\write.obj o\zap.obj X VOBJL = o\mklev.obj o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj \ X o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj X VOBJ = $(VOBJS) $(VOBJM) $(VOBJL) X--- 82,96 ---- X VOBJM = o\apply.obj o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj \ X o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj \ X o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj \ X! o\exper.obj o\fountain.obj o\invent.obj o\lock.obj \ X! o\mcastu.obj o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj \ X! o\music.obj o\objnam.obj o\options.obj o\pager.obj o\pickup.obj \ X! o\polyself.obj o\potion.obj o\pray.obj o\priest.obj o\read.obj \ X! o\restore.obj o\rip.obj o\rnd.obj o\rumors.obj o\save.obj \ X! o\search.obj o\shk.obj o\sit.obj o\sounds.obj o\spell.obj \ X! o\steal.obj o\termcap.obj o\track.obj o\trap.obj o\uhitm.obj \ X! o\vault.obj o\weapon.obj o\were.obj o\wield.obj o\wizard.obj \ X! o\worm.obj o\worn.obj o\write.obj o\zap.obj X VOBJL = o\mklev.obj o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj \ X o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj X VOBJ = $(VOBJS) $(VOBJM) $(VOBJL) X*************** X*** 102,112 **** X GLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H) X CONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H) X TRAP_H = $(INCL)\trap.h X! PCCONF_H = $(INCL)\$(TARG)conf.h $(INCL)\system.h $(INCL)\extern.h X PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h X YOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \ X $(INCL)\monst.h $(INCL)\youprop.h X! DECL_H = $(INCL)\decl.h X DECL_H = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h \ X $(INCL)\pm.h X HACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \ X--- 108,118 ---- X GLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H) X CONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H) X TRAP_H = $(INCL)\trap.h X! #PCCONF_H = $(INCL)\system.h $(INCL)\extern.h X PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h X YOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \ X $(INCL)\monst.h $(INCL)\youprop.h X! #DECL_H = $(INCL)\decl.h X DECL_H = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h \ X $(INCL)\pm.h X HACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \ X*************** X*** 122,129 **** X X # The main target X $(GAMEFILE): o $(HOBJ) Makefile X! if exist $(GAMEFILE) del $(GAMEFILE) X! link $(C0) $(HOBJ),$(GAMEFILE) /seg:1024 /e,,$(LIBS) $(TERMLIB) $(LFLAGS) X echo X $(GAME): $(GAMEFILE) X X--- 128,135 ---- X X # The main target X $(GAMEFILE): o $(HOBJ) Makefile X! if exist $@ del $@ X! $(LINK) $(C0) $(HOBJ),$@ /seg:1024,,$(LIBS) $(TERMLIB) $(LFLAGS) X echo X $(GAME): $(GAMEFILE) X X*************** X*** 198,204 **** X cd $(AUX) X xcopy *. $(GAMEDIR) X X! spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des X lev_comp $(AUX)\castle.des X lev_comp $(AUX)\endgame.des X lev_comp $(AUX)\tower.des X--- 204,210 ---- X cd $(AUX) X xcopy *. $(GAMEDIR) X X! spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des lev_comp.exe X lev_comp $(AUX)\castle.des X lev_comp $(AUX)\endgame.des X lev_comp $(AUX)\tower.des X*************** X*** 220,225 **** X--- 226,234 ---- X del onames.h X del pm.h X touch date.h onames.h pm.h X+ cd $(AUX) X+ del data X+ del rumors X cd $(SRC) X del makedefs.exe X if exist lev_comp.exe del lev_comp.exe X*** others/Old/msdos.c Wed Aug 16 12:07:48 1989 X--- others/msdos.c Wed Aug 16 10:15:04 1989 X*************** X*** 16,21 **** X--- 16,24 ---- X # undef getdate X # endif X # endif X+ #ifdef OS2 X+ # include "def_os2.h" /* OS2 definitions (Timo Hakulinen) */ X+ #endif X static char DOSgetch(); X #ifdef DGK X static char BIOSgetch(); X*************** X*** 43,55 **** X return ((ch == '\r') ? '\n' : ch); X } X X #define DIRECT_INPUT 0x7 X static char X DOSgetch() { X #ifdef TOS X return (Crawcin() & 0x007f); X #else X! union REGS regs; X X regs.h.ah = DIRECT_INPUT; X intdos(®s, ®s); X--- 46,72 ---- X return ((ch == '\r') ? '\n' : ch); X } X X+ #ifndef OS2 X #define DIRECT_INPUT 0x7 X+ #endif X static char X DOSgetch() { X+ #ifdef OS2 X+ KBDKEYINFO CharData; X+ USHORT IOWait = 0; X+ HKBD KbdHandle = 0; X+ X+ KbdCharIn(&CharData,IOWait,KbdHandle); X+ if (CharData.chChar == 0) { /* an extended code -- not yet supported */ X+ KbdCharIn(&CharData,IOWait,KbdHandle); /* eat the next character */ X+ CharData.chChar = 0; /* and return a 0 */ X+ } X+ return (CharData.chChar); X+ #else X #ifdef TOS X return (Crawcin() & 0x007f); X #else X! union REGS regs; X X regs.h.ah = DIRECT_INPUT; X intdos(®s, ®s); X*************** X*** 60,65 **** X--- 77,83 ---- X } X return (regs.h.al); X #endif /* TOS */ X+ #endif /* OS2 */ X } X X #include <ctype.h> X*************** X*** 93,107 **** X--- 111,130 ---- X flags.toplin = 0; X more(); X } X+ gettty(); /* ctrl-P might get turned back on (TH) */ X chdirx(hackdir, 0); X start_screen(); X docrt(); X } else X+ #ifdef OS2 X+ pline("Cannot exec CMD.EXE"); X+ #else X #ifdef TOS X pline("Cannot find SHELL"); X #else X pline("Cannot exec COMMAND.COM"); X #endif X+ #endif /* OS2 */ X return 0; X } X #endif /* SHELL */ X*************** X*** 173,189 **** X #define SHIFT (0x1 | 0x2) X /* #define CTRL 0x4 */ X /* #define ALT 0x8 */ X #define KEYBRD_BIOS 0x16 X X static char X BIOSgetch() { X unsigned char scan, shift, ch; X #ifdef TOS X long x; X #else X union REGS regs; X #endif X- struct pad (*kpad)[PADKEYS]; X X /* Get scan code. X */ X--- 196,225 ---- X #define SHIFT (0x1 | 0x2) X /* #define CTRL 0x4 */ X /* #define ALT 0x8 */ X+ #ifndef OS2 X #define KEYBRD_BIOS 0x16 X+ #endif X X static char X BIOSgetch() { X unsigned char scan, shift, ch; X+ struct pad (*kpad)[PADKEYS]; X+ X+ #ifdef OS2 X+ KBDKEYINFO CharData; X+ USHORT IOWait = 0; X+ HKBD KbdHandle = 0; X+ X+ KbdCharIn(&CharData,IOWait,KbdHandle); X+ ch = CharData.chChar; X+ scan = CharData.chScan; X+ shift = CharData.fsState; X+ #else /* OS2 */ X #ifdef TOS X long x; X #else X union REGS regs; X #endif X X /* Get scan code. X */ X*************** X*** 191,197 **** X x = Crawcin(); X ch = x & 0x0ff; X scan = (x & 0x00ff0000L) >> 16; X! #else X regs.h.ah = 0; X int86(KEYBRD_BIOS, ®s, ®s); X ch = regs.h.al; X--- 227,233 ---- X x = Crawcin(); X ch = x & 0x0ff; X scan = (x & 0x00ff0000L) >> 16; X! #else X regs.h.ah = 0; X int86(KEYBRD_BIOS, ®s, ®s); X ch = regs.h.al; X*************** X*** 206,220 **** X int86(KEYBRD_BIOS, ®s, ®s); X shift = regs.h.al; X #endif X /* If scan code is for the keypad, translate it. X */ X kpad = flags.num_pad ? numpad : keypad; X if (iskeypad(scan)) { X if (shift & SHIFT) { X! #ifndef TOS X! flags.mv = flags.run = 1; X! /* necessary if number_pad is on */ X! #endif X ch = (*kpad)[scan - KEYPADLOW].shift; X } else X ch = (*kpad)[scan - KEYPADLOW].normal; X--- 242,255 ---- X int86(KEYBRD_BIOS, ®s, ®s); X shift = regs.h.al; X #endif X+ #endif /* OS2 */ X+ X /* If scan code is for the keypad, translate it. X */ X kpad = flags.num_pad ? numpad : keypad; X if (iskeypad(scan)) { X if (shift & SHIFT) { X! /* if number_pad is on, this makes little difference */ X ch = (*kpad)[scan - KEYPADLOW].shift; X } else X ch = (*kpad)[scan - KEYPADLOW].normal; X*************** X*** 224,229 **** X--- 259,265 ---- X X #ifndef TOS X X+ #ifndef OS2 X #define FINDFIRST 0x4E00 X #define FINDNEXT 0x4F00 X #define GETDTA 0x2F00 X*************** X*** 230,248 **** X #define SETFILETIME 0x5701 X #define GETSWITCHAR 0x3700 X #define FREESPACE 0x36 X X #ifdef __TURBOC__ X #define switchar() (char)getswitchar() X #else X static char X switchar() X { X! union REGS regs; X X regs.x.ax = GETSWITCHAR; X intdos(®s, ®s); X return regs.h.dl; X } X #endif X X long X--- 266,287 ---- X #define SETFILETIME 0x5701 X #define GETSWITCHAR 0x3700 X #define FREESPACE 0x36 X+ #endif X X #ifdef __TURBOC__ X #define switchar() (char)getswitchar() X #else X+ #ifndef OS2 X static char X switchar() X { X! union REGS regs; X X regs.x.ax = GETSWITCHAR; X intdos(®s, ®s); X return regs.h.dl; X } X+ #endif /* OS2 */ X #endif X X long X*************** X*** 249,254 **** X--- 288,314 ---- X freediskspace(path) X char *path; X { X+ #ifdef OS2 X+ struct { X+ ULONG idFileSystem; X+ ULONG cSectorUnit; X+ ULONG cUnit; X+ ULONG cUnitAvail; X+ USHORT cbSector; X+ } FSInfoBuf; X+ USHORT DriveNumber, FSInfoLevel = 1, res; X+ X+ if (path[0] && path[1] == ':') X+ DriveNumber = (toupper(path[0]) - 'A') + 1; X+ else X+ DriveNumber = 0; X+ res = DosQFSInfo(DriveNumber,FSInfoLevel,(PBYTE)&FSInfoBuf,sizeof(FSInfoBuf)); X+ if (res) X+ return -1L; /* error */ X+ else X+ return ((long) FSInfoBuf.cSectorUnit * FSInfoBuf.cUnitAvail * X+ FSInfoBuf.cbSector); X+ #else X union REGS regs; X X regs.h.ah = FREESPACE; X*************** X*** 261,268 **** X--- 321,334 ---- X return -1L; /* bad drive number */ X else X return ((long) regs.x.bx * regs.x.cx * regs.x.ax); X+ #endif /* OS2 */ X } X X+ #ifdef OS2 X+ FILEFINDBUF ResultBuf; X+ HDIR DirHandle; X+ #endif X+ X /* Functions to get filenames using wildcards X */ X static int X*************** X*** 269,274 **** X--- 335,347 ---- X findfirst(path) X char *path; X { X+ #ifdef OS2 X+ USHORT res, SearchCount = 1; X+ X+ DirHandle = 1; X+ res = DosFindFirst((PSZ)path,&DirHandle,0,&ResultBuf,sizeof(FILEFINDBUF),&SearchCount,0L); X+ return(!res); X+ #else X union REGS regs; X struct SREGS sregs; X X*************** X*** 278,294 **** X--- 351,376 ---- X sregs.ds = FP_SEG(path); X intdosx(®s, ®s, &sregs); X return !regs.x.cflag; X+ #endif /* OS2 */ X } X X static int X findnext() { X+ #ifdef OS2 X+ USHORT res, SearchCount = 1; X+ X+ res = DosFindNext(DirHandle,&ResultBuf,sizeof(FILEFINDBUF),&SearchCount); X+ return(!res); X+ #else X union REGS regs; X X regs.x.ax = FINDNEXT; X intdos(®s, ®s); X return !regs.x.cflag; X+ #endif /* OS2 */ X } X X+ #ifndef OS2 X /* Get disk transfer area, Turbo C already has getdta */ X static char * X getdta() { X*************** X*** 306,311 **** X--- 388,394 ---- X #endif X return ret; X } X+ #endif /* OS2 */ X X #else /* TOS */ X X*************** X*** 348,358 **** X--- 431,447 ---- X filesize(file) X char *file; X { X+ #ifndef OS2 X char *dta; X+ #endif X X if (findfirst(file)) { X+ #ifdef OS2 X+ return (* (long *) (ResultBuf.cbFileAlloc)); X+ #else X dta = getdta(); X return (* (long *) (dta + 26)); X+ #endif X } else X return -1L; X } X*************** X*** 361,373 **** X eraseall(path, files) X char *path, *files; X { X! char *dta, buf[PATHLEN]; X X dta = getdta(); X Sprintf(buf, "%s%s", path, files); X if (findfirst(buf)) X do { X! Sprintf(buf, "%s%s", path, dta + 30); X (void) unlink(buf); X } while (findnext()); X return; X--- 450,474 ---- X eraseall(path, files) X char *path, *files; X { X! char X! #ifndef OS2 X! *dta, X! #endif X! buf[PATHLEN]; X X+ #ifndef OS2 X dta = getdta(); X+ #endif X Sprintf(buf, "%s%s", path, files); X if (findfirst(buf)) X do { X! Sprintf(buf, "%s%s", path, X! #ifdef OS2 X! ResultBuf.achName X! #else X! dta + 30 X! #endif X! ); X (void) unlink(buf); X } while (findnext()); X return; X*************** X*** 378,387 **** X void X copybones(mode) { X char from[PATHLEN], to[PATHLEN], last[13], copy[8]; X! char *frompath, *topath, *dta, *comspec; X int status; X long fs; X extern saveprompt; X #ifdef TOS X extern int _copyfile(); X #endif X--- 479,493 ---- X void X copybones(mode) { X char from[PATHLEN], to[PATHLEN], last[13], copy[8]; X! char *frompath, *topath, X! #ifndef OS2 X! *dta, X! #endif X! *comspec; X int status; X long fs; X extern saveprompt; X+ X #ifdef TOS X extern int _copyfile(); X #endif X*************** X*** 391,397 **** X--- 497,505 ---- X /* Find the name of the last file to be transferred X */ X frompath = (mode != TOPERM) ? permbones : levels; X+ #ifndef OS2 X dta = getdta(); X+ #endif X last[0] = '\0'; X Sprintf(from, "%s%s", frompath, allbones); X topath = (mode == TOPERM) ? permbones : levels; X*************** X*** 406,412 **** X if (_copyfile(from, to)) X goto error_copying; X #endif X! Strcpy(last, dta + 30); X } while (findnext()); X #ifdef TOS X else X--- 514,526 ---- X if (_copyfile(from, to)) X goto error_copying; X #endif X! Strcpy(last, X! #ifdef OS2 X! ResultBuf.achName X! #else X! dta + 30 X! #endif X! ); X } while (findnext()); X #ifdef TOS X else X*************** X*** 413,419 **** X return; X #else X if (last[0]) { X! Sprintf(copy, "%cC copy", switchar()); X X /* Remove any bones files in `to' directory. X */ X--- 527,539 ---- X return; X #else X if (last[0]) { X! Sprintf(copy, "%cC copy", X! #ifdef OS2 X! '/' X! #else X! switchar() X! #endif X! ); X X /* Remove any bones files in `to' directory. X */ X*************** X*** 516,523 **** X--- 636,651 ---- X static boolean X record_exists() { X int fd; X+ #ifdef OS2_CODEVIEW X+ char tmp[PATHLEN]; X X+ Strcpy(tmp,hackdir); X+ append_slash(tmp); X+ Strcat(tmp,RECORD); X+ if ((fd = open(tmp, 0)) >= 0) { X+ #else X if ((fd = open(RECORD, 0)) >= 0) { X+ #endif X (void) close(fd); X return TRUE; X } X*************** X*** 788,794 **** X--- 916,924 ---- X /* Chdrive() changes the default drive. X */ X #ifndef __TURBOC__ X+ #ifndef OS2 X #define SELECTDISK 0x0E X+ #endif X void X chdrive(str) X char *str; X*************** X*** 795,802 **** X--- 925,934 ---- X { X char *ptr; X #ifndef TOS X+ #ifndef OS2 X union REGS inregs; X #endif X+ #endif X char drive; X X if ((ptr = index(str, ':')) != NULL) { X*************** X*** 804,813 **** X--- 936,949 ---- X #ifdef TOS X Dsetdrv(drive - 'A'); X #else X+ #ifdef OS2 X+ DosSelectDisk((USHORT)(drive - 'A' + 1)); X+ #else X inregs.h.ah = SELECTDISK; X inregs.h.dl = drive - 'A'; X intdos(&inregs, &inregs); X #endif X+ #endif X } X return; X } X*************** X*** 829,834 **** X--- 965,971 ---- X * Thanks to Mark Zbikowski (markz@microsoft.UUCP). X */ X X+ #ifndef OS2 X #define DEVICE 0x80 X #define RAW 0x20 X #define IOCTL 0x44 X*************** X*** 836,849 **** X--- 973,999 ---- X #define STDOUT fileno(stdout) X #define GETBITS 0 X #define SETBITS 1 X+ #endif X X static unsigned int old_stdin, old_stdout; X X void X disable_ctrlP() { X+ #ifdef OS2 X+ KBDINFO KbdInfo; X+ HKBD KbdHandle = 0; X+ #endif X+ X #ifdef DGK X if (!flags.rawio) return; X #endif X+ #ifdef OS2 X+ KbdInfo.cb = 10; X+ KbdGetStatus(&KbdInfo,KbdHandle); X+ KbdInfo.fsMask &= 0xFFF7; /* ASCII off */ X+ KbdInfo.fsMask |= 0x0004; /* BINARY on */ X+ KbdSetStatus(&KbdInfo,KbdHandle); X+ #else X old_stdin = ioctl(STDIN, GETBITS, 0); X old_stdout = ioctl(STDOUT, GETBITS, 0); X if (old_stdin & DEVICE) X*************** X*** 850,870 **** X--- 1000,1035 ---- X ioctl(STDIN, SETBITS, old_stdin | RAW); X if (old_stdout & DEVICE) X ioctl(STDOUT, SETBITS, old_stdout | RAW); X+ #endif /* OS2 */ X return; X } X X void X enable_ctrlP() { X+ #ifdef OS2 X+ KBDINFO KbdInfo; X+ HKBD KbdHandle = 0; X+ #endif X+ X #ifdef DGK X if (!flags.rawio) return; X #endif X+ #ifdef OS2 X+ KbdInfo.cb = 10; X+ KbdGetStatus(&KbdInfo,KbdHandle); X+ KbdInfo.fsMask &= 0xFFFB; /* BINARY off */ X+ KbdInfo.fsMask |= 0x0008; /* ASCII on */ X+ KbdSetStatus(&KbdInfo,KbdHandle); X+ #else X if (old_stdin) X (void) ioctl(STDIN, SETBITS, old_stdin); X if (old_stdout) X (void) ioctl(STDOUT, SETBITS, old_stdout); X+ #endif X return; X } X X+ #ifndef OS2 X static unsigned int X ioctl(handle, mode, setvalue) X int handle, mode; X*************** X*** 880,885 **** X--- 1045,1051 ---- X intdos(®s, ®s); X return (regs.x.dx); X } X+ #endif /* OS2 */ X #endif /* TOS */ X X #ifdef DGK X*************** X*** 918,923 **** X--- 1084,1096 ---- X pp++; X } X } X+ #ifdef OS2_CODEVIEW /* one more try for hackdir */ X+ Strcpy(buf,hackdir); X+ append_slash(buf); X+ Strcat(buf,name); X+ if(fp = fopen(buf,mode)) X+ return fp; X+ #endif X return (FILE *)0; X } X #endif /* DGK */ X*************** X*** 950,955 **** X--- 1123,1179 ---- X exit(code); X return; X } X+ X+ # ifdef DGK /* for flags.IBMBIOS */ X+ void X+ get_scr_size() X+ { X+ # ifdef OS2 X+ VIOMODEINFO ModeInfo; X+ HVIO VideoHandle = 0; X+ X+ ModeInfo.cb = sizeof(ModeInfo); X+ X+ VioGetMode(&ModeInfo,VideoHandle); X+ X+ CO = ModeInfo.col; X+ LI = ModeInfo.row; X+ # else X+ union REGS regs; X+ X+ if (!flags.IBMBIOS) { /* assume standard screen size */ X+ CO = 80; X+ LI = 24; X+ return; X+ } X+ X+ regs.x.ax = 0x1130; /* Func AH = 11h, Subfunc AL = 30h */ X+ regs.x.bx = 0; /* current ROM BIOS font */ X+ regs.h.dl = 24; /* default row count */ X+ /* in case no EGA/MCGA/VGA */ X+ int86(0x10, ®s, ®s); /* Get Font Information */ X+ X+ /* MDA/CGA/PCjr ignore INT 10h, Function 11h, but since we X+ * cleverly loaded up DL with the default, everything's fine. X+ * X+ * Otherwise, DL now contains rows - 1. Also, CX contains the X+ * points (bytes per character) and ES:BP points to the font X+ * table. -3. X+ */ X+ X+ regs.h.ah = 0x0f; X+ int86(0x10, ®s, ®s); /* Get Video Mode */ X+ X+ /* This goes back all the way to the original PC. Completely X+ * safe. AH contains # of columns, AL contains display mode, X+ * and BH contains the active display page. X+ */ X+ X+ LI = regs.h.dl + 1; X+ CO = regs.h.ah; X+ # endif X+ } X+ # endif X #endif /* MSDOS */ X X #ifdef TOS X*** others/Old/pcmain.c Wed Aug 16 12:08:48 1989 X--- others/pcmain.c Tue Aug 15 21:13:42 1989 X*************** X*** 1,7 **** X /* SCCS Id: @(#)pcmain.c 3.0 88/11/23 X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X /* NetHack may be freely redistributed. See license for details. */ X! /* main.c - (PC, TOS and AMIGA) version */ X X #include "hack.h" X #ifndef NO_SIGNAL X--- 1,7 ---- X /* SCCS Id: @(#)pcmain.c 3.0 88/11/23 X /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ X /* NetHack may be freely redistributed. See license for details. */ X! /* main.c - PC, ST, and Amiga NetHack */ X X #include "hack.h" X #ifndef NO_SIGNAL X*************** X*** 15,20 **** X--- 15,21 ---- X X int (*afternmv)(), (*occupation)(); X static void moveloop(); /* a helper function for MSC optimizer */ X+ static void newgame(); X X #if defined(DGK) && !defined(OLD_TOS) X struct finfo zfinfo = ZFINFO; X*************** X*** 74,80 **** X # endif X if (getcwd(orgdir, sizeof orgdir) == NULL) { X xputs("NetHack: current directory path too long\n"); X! _exit(1); X } X funcp = exit; /* Kludge to get around LINT_ARGS of signal. X * This will produce a compiler warning, but that's OK. X--- 75,81 ---- X # endif X if (getcwd(orgdir, sizeof orgdir) == NULL) { X xputs("NetHack: current directory path too long\n"); X! return 1; X } X funcp = exit; /* Kludge to get around LINT_ARGS of signal. X * This will produce a compiler warning, but that's OK. X*************** X*** 85,91 **** X #endif /* AMIGA */ X X /* Set the default values of the presentation characters */ X! memcpy((genericptr_t) &showsyms, (genericptr_t) &defsyms, sizeof(struct symbols)); X if ((dir = getenv("HACKDIR")) != NULL) { X Strcpy(hackdir, dir); X #ifdef CHDIR X--- 86,93 ---- X #endif /* AMIGA */ X X /* Set the default values of the presentation characters */ X! (void) memcpy((genericptr_t) &showsyms, X! (genericptr_t) &defsyms, sizeof(struct symbols)); X if ((dir = getenv("HACKDIR")) != NULL) { X Strcpy(hackdir, dir); X #ifdef CHDIR X*************** X*** 101,110 **** X initoptions(); X if (!hackdir[0]) X Strcpy(hackdir, orgdir); X #ifdef TOS X! if(argc > 1 && !strncmp(argv[1], "-D", 2)) { X #else X! if(argc > 1 && !strncmp(argv[1], "-d", 2)) { X #endif X argc--; X argv++; X--- 103,114 ---- X initoptions(); X if (!hackdir[0]) X Strcpy(hackdir, orgdir); X+ X+ if(argc > 1) { X #ifdef TOS X! if(!strncmp(argv[1], "-D", 2)) { X #else X! if(!strncmp(argv[1], "-d", 2)) { X #endif X argc--; X argv++; X*************** X*** 115,124 **** X argv++; X dir = argv[0]; X } X! if(!*dir) X! error("Flag -d must be followed by a directory name."); X Strcpy(hackdir, dir); X! } X X /* X * Now we know the directory containing 'record' and X--- 119,131 ---- X argv++; X dir = argv[0]; X } X! if(!*dir) { X! /* can't use error() until termcap read in */ X! xputs("Flag -d must be followed by a directory name.\n"); X! return 1; X! } X Strcpy(hackdir, dir); X! } X X /* X * Now we know the directory containing 'record' and X*************** X*** 125,133 **** X * may do a prscore(). X */ X #ifdef TOS X! if(argc > 1 && !strncmp(argv[1], "-S", 2)) { X #else X! if(argc > 1 && !strncmp(argv[1], "-s", 2)) { X #endif X #ifdef CHDIR X chdirx(hackdir,0); X--- 132,140 ---- X * may do a prscore(). X */ X #ifdef TOS X! else if (!strncmp(argv[1], "-S", 2)) { X #else X! else if (!strncmp(argv[1], "-s", 2)) { X #endif X #ifdef CHDIR X chdirx(hackdir,0); X*************** X*** 134,139 **** X--- 141,147 ---- X #endif X prscore(argc, argv); X exit(0); X+ } X } X X #ifndef AMIGA X*************** X*** 149,162 **** X cls(); X u.uhp = 1; /* prevent RIP on early quits */ X u.ux = FAR; /* prevent nscr() */ X #ifndef OLD_TOS X /* X * We cannot do chdir earlier, otherwise gethdate will fail. X */ X! #ifdef CHDIR X chdirx(hackdir,1); X! #endif X #endif X /* X * Process options. X */ X--- 157,178 ---- X cls(); X u.uhp = 1; /* prevent RIP on early quits */ X u.ux = FAR; /* prevent nscr() */ X+ X+ /* X+ * Find the creation date of this game, X+ * so as to avoid restoring outdated savefiles. X+ */ X+ /* gethdate(hname); */ X+ X #ifndef OLD_TOS X /* X * We cannot do chdir earlier, otherwise gethdate will fail. X */ X! # ifdef CHDIR X chdirx(hackdir,1); X! # endif X #endif X+ X /* X * Process options. X */ X*************** X*** 165,173 **** X argc--; X switch(argv[0][1]){ X #if defined(WIZARD) || defined(EXPLORE_MODE) X! #ifndef TOS X case 'D': X! #endif /* TOS */ X case 'X': X # ifdef WIZARD X /* Must have "name" set correctly by NETHACK.CNF, X--- 181,189 ---- X argc--; X switch(argv[0][1]){ X #if defined(WIZARD) || defined(EXPLORE_MODE) X! # ifndef TOS X case 'D': X! # endif X case 'X': X # ifdef WIZARD X /* Must have "name" set correctly by NETHACK.CNF, X*************** X*** 186,195 **** X--- 202,217 ---- X #endif X #ifdef NEWS X case 'N': X+ # ifndef TOS X+ case 'n': X+ # endif X flags.nonews = TRUE; X break; X #endif X case 'U': X+ #ifndef TOS X+ case 'u': X+ #endif X if(argv[0][2]) X (void) strncpy(plname, argv[0]+2, sizeof(plname)-1); X else if(argc > 1) { X*************** X*** 202,217 **** X #ifdef DGK X /* Person does not want to use a ram disk X */ X case 'R': X ramdisk = FALSE; X break; X #endif X case 'C': /* character role is next character */ X! /* allow -T for Tourist, etc. */ X (void) strncpy(pl_character, argv[0]+2, X sizeof(pl_character)-1); X default: X Printf("Unknown option: %s\n", *argv); X } X } X X--- 224,250 ---- X #ifdef DGK X /* Person does not want to use a ram disk X */ X+ # ifdef TOS X case 'R': X+ # else X+ case 'r': X+ # endif X ramdisk = FALSE; X break; X #endif X case 'C': /* character role is next character */ X! /* allow -CT for Tourist, etc. */ X (void) strncpy(pl_character, argv[0]+2, X sizeof(pl_character)-1); X+ break; X default: X+ #ifndef TOS X+ /* allow -T for Tourist, etc. */ X+ (void) strncpy(pl_character, argv[0]+1, X+ sizeof(pl_character)-1); X+ #else X Printf("Unknown option: %s\n", *argv); X+ #endif X } X } X X*************** X*** 274,281 **** X /* get shopkeeper set properly if restore is in shop */ X (void) inshop(); X #ifdef EXPLORE_MODE X! if (discover) { X You("are in non-scoring discovery mode."); X pline("Do you want to keep the save file? "); X if(yn() == 'n') X (void) unlink(SAVEF); X--- 307,317 ---- X /* get shopkeeper set properly if restore is in shop */ X (void) inshop(); X #ifdef EXPLORE_MODE X! if (discover) X You("are in non-scoring discovery mode."); X+ #endif X+ #if defined(EXPLORE_MODE) || defined(WIZARD) X+ if (discover || wizard) { X pline("Do you want to keep the save file? "); X if(yn() == 'n') X (void) unlink(SAVEF); X*************** X*** 284,327 **** X flags.move = 0; X } else { X not_recovered: X! #ifdef DGK X! gameDiskPrompt(); X! #endif X! fobj = fcobj = invent = 0; X! fmon = fallen_down = 0; X! ftrap = 0; X! fgold = 0; X! flags.ident = 1; X! init_objects(); X! u_init(); X! #ifndef NO_SIGNAL X! (void) signal(SIGINT, (SIG_RET_TYPE) done1); X! #endif X! mklev(); X! u.ux = xupstair; X! u.uy = yupstair; X! (void) inshop(); X! setsee(); X! flags.botlx = 1; X! /* Fix bug with dog not being made because a monster X! * was on the level 1 staircase X! */ X! if(levl[u.ux][u.uy].mmask) mnexto(m_at(u.ux, u.uy)); X! (void) makedog(); X! seemons(); X! #ifdef NEWS X! if(flags.nonews || !readnews()) X! /* after reading news we did docrt() already */ X! #endif X! docrt(); X! X /* give welcome message before pickup messages */ X pline("Hello %s, welcome to NetHack!", plname); X set_wear(); X pickup(1); X read_engr_at(u.ux,u.uy); X- flags.move = 0; X } X flags.moonphase = phase_of_the_moon(); X if(flags.moonphase == FULL_MOON) { X You("are lucky! Full moon tonight."); X--- 320,338 ---- X flags.move = 0; X } else { X not_recovered: X! newgame(); X /* give welcome message before pickup messages */ X pline("Hello %s, welcome to NetHack!", plname); X+ #ifdef EXPLORE_MODE X+ if (discover) X+ You("are in non-scoring discovery mode."); X+ #endif X+ flags.move = 0; X set_wear(); X pickup(1); X read_engr_at(u.ux,u.uy); X } X+ X flags.moonphase = phase_of_the_moon(); X if(flags.moonphase == FULL_MOON) { X You("are lucky! Full moon tonight."); X*************** X*** 334,339 **** X--- 345,353 ---- X #ifndef NO_SIGNAL X (void) signal(SIGINT, SIG_IGN); X #endif X+ #ifdef OS2 X+ gettty(); /* somehow ctrl-P gets turned back on during startup ... */ X+ #endif X /* Help for Microsoft optimizer. Otherwise main is too large -dgk*/ X moveloop(); X return 0; X*************** X*** 376,382 **** X #endif X if(u.uhp < 1) { X You("die..."); X! done("died"); X } X #ifdef POLYSELF X if (u.mtimedone) { X--- 390,396 ---- X #endif X if(u.uhp < 1) { X You("die..."); X! done(DIED); X } X #ifdef POLYSELF X if (u.mtimedone) { X*************** X*** 590,601 **** X #else X dir = "."; X #endif X! if((fd = open(RECORD, 2)) < 0) { X #ifdef DGK X char tmp[PATHLEN]; X X Strcpy(tmp, dir); X append_slash(tmp); X msmsg("Warning: cannot write %s%s\n", tmp, RECORD); X getreturn("to continue"); X #else X--- 604,627 ---- X #else X dir = "."; X #endif X! #ifdef OS2_CODEVIEW /* explicit path on opening for OS/2 */ X! { X! char tmp[PATHLEN]; X! X! Strcpy(tmp, dir); X! append_slash(tmp); X! Strcat(tmp, RECORD); X! if((fd = open(tmp, 2)) < 0) { X! #else X! if((fd = open(RECORD, 2)) < 0) { X! #endif X #ifdef DGK X+ #ifndef OS2_CODEVIEW X char tmp[PATHLEN]; X X Strcpy(tmp, dir); X append_slash(tmp); X+ #endif X msmsg("Warning: cannot write %s%s\n", tmp, RECORD); X getreturn("to continue"); X #else X*************** X*** 604,609 **** X--- 630,638 ---- X #endif X } else X (void) close(fd); X+ #ifdef OS2_CODEVIEW X+ } X+ #endif X } X } X #endif /* CHDIR /**/ X*************** X*** 619,622 **** X--- 648,695 ---- X pushch(0); X #endif X } X+ } X+ X+ static void X+ newgame() { X+ #ifdef DGK X+ gameDiskPrompt(); X+ #endif X+ X+ fobj = fcobj = invent = 0; X+ fmon = fallen_down = 0; X+ ftrap = 0; X+ fgold = 0; X+ flags.ident = 1; X+ X+ init_objects(); X+ u_init(); X+ X+ #ifndef NO_SIGNAL X+ (void) signal(SIGINT, (SIG_RET_TYPE) done1); X+ #endif X+ X+ mklev(); X+ u.ux = xupstair; X+ u.uy = yupstair; X+ (void) inshop(); X+ X+ setsee(); X+ flags.botlx = 1; X+ X+ /* Move the monster from under you or else X+ * makedog() will fail when it calls makemon(). X+ * - ucsfcgl!kneller X+ */ X+ if(levl[u.ux][u.uy].mmask) mnexto(m_at(u.ux, u.uy)); X+ X+ (void) makedog(); X+ seemons(); X+ #ifdef NEWS X+ if(flags.nonews || !readnews()) X+ /* after reading news we did docrt() already */ X+ #endif X+ docrt(); X+ X+ return; X } X*** /dev/null Tue Aug 15 10:53:49 1989 X--- others/Makefile.os2 Tue Aug 15 20:51:02 1989 X*************** X*** 0 **** X--- 1,320 ---- X+ # SCCS Id: @(#)Makefile.os2 3.0 89/08/10 X+ # PC NetHack 3.0 Makefile for Microsoft(tm) C 5.1 and OS/2 X+ # X+ # NDMAKE ver 4.3+ is required, MS-MAKE does *not* work X+ # X+ # Large memory model X+ CC = cl X+ LINK = link X+ MODEL = L X+ X+ # Directories (makedefs hardcodes these, don't change them) X+ INCL = ..\include X+ AUX = ..\auxil X+ SRC = ..\src X+ X+ # memory model, compile only, #define LINT_ARGS, disable optimization, X+ # remove stack probes, 80286 instruction set, dedicated datasegment for X+ # items >= 5 bytes, pack structures on 1 byte boundaries, generate code X+ # for 8087 coprocessor, include file path X+ CFLAGS = /A$(MODEL) /c /DLINT_ARGS /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /I$(INCL) X+ X+ # + prepare for CodeView symbolic debugger X+ #CFLAGS = /A$(MODEL) /c /DLINT_ARGS /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /I$(INCL) /Zi X+ X+ # don't ignore case in symbols, no default lib search, stack 4096 bytes X+ # (actually a bit of overkill), allow max 1024 segments in program X+ LFLAGS = /noig /nod /stack:4096 /seg:1024 X+ X+ # + prepare for CodeView symbolic debugger X+ #LFLAGS = /noig /nod /stack:4096 /seg:1024 /CO X+ X+ # real mode C libraries for 8087 coprocessor X+ RLIBS = $(MODEL)libc7r X+ X+ # protected mode C libraries for 8087, OS/2 API entry points X+ PLIBS = $(MODEL)libc7p doscalls X+ X+ # termcap routines X+ TERMLIB= termlib.lib X+ X+ # module definition file for OS/2 X+ OS2DEFS = $(GAME).def X+ X+ # target system X+ TARG = pc X+ X+ .c.o: X+ $(CC) $(CFLAGS) /Foo\$*.o $*.c X+ X+ # Optional high-quality BSD random number generation routines (see pcconf.h). X+ # Set to nothing if not used. X+ RANDOM = o\random.o X+ X+ # Termcap objs X+ TERMOBJS= o\tgetent.o o\tgetflag.o o\tgetnum.o o\tgetstr.o o\tgoto.o o\tputs.o o\isdigit.o o\fgetlr.o X+ X+ # For NDMAKE, to handle the .o suffix. X+ .SUFFIXES: .exe .o .c .y .l X+ X+ # The game name X+ GAME= nethack X+ X+ # The game directory X+ GAMEDIR = \games\$(GAME) X+ X+ # The game filename X+ GAMEFILE = $(GAMEDIR)\$(GAME).exe X+ X+ # object files for makedefs X+ MAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o X+ X+ # object files for special levels compiler X+ SPLEVOBJS = o\lev_comp.o o\lev_lex.o o\lev_main.o o\alloc.o o\monst.o o\objects.o o\panic.o X+ X+ # nothing below this line should have to be changed X+ # X+ # other things that have to be reconfigured are in config.h, X+ # {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h X+ X+ VOBJ = o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o o\cmd.o \ X+ o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \ X+ o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \ X+ o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \ X+ o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \ X+ o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \ X+ o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \ X+ o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \ X+ o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \ X+ o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \ X+ o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \ X+ o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \ X+ o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \ X+ o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o X+ HOBJ = $(VOBJ) o\version.o X+ X+ PCCONF_H = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \ X+ $(INCL)\extern.h $(INCL)\def_os2.h X+ GLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H) X+ CONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H) X+ TRAP_H = $(INCL)\trap.h X+ PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h X+ YOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \ X+ $(INCL)\monst.h $(INCL)\youprop.h X+ DECL_H = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \ X+ $(INCL)\onames.h $(INCL)\pm.h X+ HACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \ X+ $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \ X+ $(INCL)\rm.h X+ X+ # The main target X+ $(GAMEDIR)\$(GAME).exe: o $(HOBJ) $(OS2DEFS) $(TERMLIB) X+ $(LINK) $(HOBJ),$(GAMEDIR)\$(GAME),$(GAME),$(PLIBS) $(TERMLIB),$(OS2DEFS) $(LFLAGS) ; X+ X+ # NDMAKE automatically generates LINK response files, so you can X+ # uncomment the second line if you are using NDMAKE. X+ X+ $(GAME): $(GAMEDIR)\$(GAME).exe X+ $(GAME).exe: $(GAMEDIR)\$(GAME).exe X+ X+ all: o makedefs lev_comp $(GAME) auxil record X+ @echo Done. X+ X+ o: X+ mkdir o X+ X+ $(TERMLIB): $(TERMOBJS) X+ lib $(TERMLIB) -+ $(TERMOBJS) ; X+ X+ makedefs: makedefs.exe X+ makedefs.exe: $(MAKEOBJS) X+ $(LINK) $(MAKEOBJS),,,$(RLIBS) $(LFLAGS) ; X+ X+ o\makedefs.o: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h X+ X+ lev_comp: lev_comp.exe X+ lev_comp.exe: $(SPLEVOBJS) X+ $(LINK) $(SPLEVOBJS),lev_comp,,$(RLIBS) $(LFLAGS) ; X+ X+ o\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\lev_lex.o: $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h X+ o\lev_main.o: $(HACK_H) $(INCL)\sp_lev.h X+ X+ # If you have yacc or lex programs, and make any changes, X+ # add some .y.c and .l.c rules to your Make.ini. X+ X+ lev_comp.c: lev_comp.y X+ lev_lex.c: lev_comp.l X+ X+ # X+ # The following include files depend on makedefs to be created. X+ # X+ # date.h should be remade any time any of the source or include code X+ # is modified. X+ # X+ $(INCL)\date.h: $(VOBJ) makedefs.exe X+ .\makedefs -v X+ X+ $(INCL)\trap.h: makedefs.exe X+ .\makedefs -t X+ X+ $(INCL)\onames.h: makedefs.exe X+ .\makedefs -o X+ X+ $(INCL)\pm.h: makedefs.exe X+ .\makedefs -p X+ X+ data: $(AUX)\data.base makedefs.exe X+ .\makedefs -d X+ X+ rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe X+ .\makedefs -r X+ X+ # X+ # The following programs vary depending on what OS you are using. X+ # X+ o\main.o: $(HACK_H) $(TARG)main.c X+ $(CC) $(CFLAGS) /Foo\main.o $(TARG)main.c X+ X+ o\tty.o: $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c X+ $(CC) $(CFLAGS) /Foo\tty.o $(TARG)tty.c X+ X+ o\unix.o: $(HACK_H) $(TARG)unix.c X+ $(CC) $(CFLAGS) /Foo\unix.o $(TARG)unix.c X+ X+ # X+ # Secondary targets X+ # X+ X+ auxil: spec_levs X+ xcopy $(AUX)\*. $(GAMEDIR) X+ X+ spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des X+ lev_comp $(AUX)\castle.des X+ lev_comp $(AUX)\endgame.des X+ lev_comp $(AUX)\tower.des X+ xcopy castle $(GAMEDIR) X+ del castle X+ xcopy endgame $(GAMEDIR) X+ del endgame X+ xcopy tower? $(GAMEDIR) X+ del tower? X+ X+ $(OS2DEFS): X+ echo NAME $(GAME) WINDOWCOMPAT> $(OS2DEFS) X+ echo DESCRIPTION 'NetHack 3.0'>> $(OS2DEFS) X+ echo PROTMODE>> $(OS2DEFS) X+ echo EXETYPE OS2>> $(OS2DEFS) X+ X+ record: $(GAMEDIR)\record X+ $(GAMEDIR)\record: X+ echo foo> $(GAMEDIR)\record X+ X+ clean: X+ del o\*.obj X+ rmdir o X+ X+ spotless: clean X+ del $(INCL)\date.h X+ del $(INCL)\onames.h X+ del $(INCL)\pm.h X+ touch $(INCL)\date.h $(INCL)\onames.h $(INCL)\pm.h X+ del makedefs.exe X+ if exist lev_comp.exe del lev_comp.exe X+ X+ # X+ # Other dependencies X+ # X+ X+ # GO AHEAD, DELETE THIS LINE X+ X+ o\alloc.o: $(CONFIG_H) X+ o\apply.o: $(HACK_H) $(INCL)\edog.h X+ o\artifact.o: $(HACK_H) $(INCL)\artifact.h X+ o\attrib.o: $(HACK_H) X+ o\bones.o: $(HACK_H) X+ o\cmd.o: $(HACK_H) $(INCL)\func_tab.h X+ o\dbridge.o: $(HACK_H) X+ o\decl.o: $(HACK_H) X+ o\demon.o: $(HACK_H) X+ o\do.o: $(HACK_H) X+ o\do_name.o: $(HACK_H) X+ o\do_wear.o: $(HACK_H) X+ o\dog.o: $(HACK_H) $(INCL)\edog.h X+ o\dogmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h X+ o\dokick.o: $(HACK_H) X+ o\dothrow.o: $(HACK_H) X+ o\eat.o: $(HACK_H) X+ o\end.o: $(HACK_H) $(INCL)\eshk.h X+ o\engrave.o: $(HACK_H) X+ o\exper.o: $(HACK_H) X+ o\extralev.o: $(HACK_H) X+ o\fountain.o: $(HACK_H) X+ o\getline.o: $(HACK_H) $(INCL)\func_tab.h X+ o\hack.o: $(HACK_H) X+ o\invent.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\ioctl.o: $(HACK_H) X+ o\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\lock.o: $(HACK_H) X+ o\makemon.o: $(HACK_H) X+ o\mail.o: $(HACK_H) X+ o\mcastu.o: $(HACK_H) X+ o\mhitm.o: $(HACK_H) $(INCL)\artifact.h X+ o\mhitu.o: $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h X+ o\mklev.o: $(HACK_H) X+ o\mkmaze.o: $(HACK_H) X+ o\mkobj.o: $(HACK_H) X+ o\mkroom.o: $(HACK_H) X+ o\mon.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h X+ o\mondata.o: $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h X+ o\monmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h X+ o\monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h X+ o\msdos.o: $(HACK_H) X+ o\mthrowu.o: $(HACK_H) X+ o\music.o: $(HACK_H) X+ o\o_init.o: $(HACK_H) $(INCL)\onames.h X+ o\objects.o: $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h X+ o\objnam.o: $(HACK_H) X+ o\options.o: $(HACK_H) X+ o\pager.o: $(HACK_H) X+ o\panic.o: $(CONFIG_H) X+ o\pickup.o: $(HACK_H) X+ o\polyself.o: $(HACK_H) X+ o\potion.o: $(HACK_H) X+ o\pray.o: $(HACK_H) X+ o\pri.o: $(HACK_H) X+ o\priest.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h X+ o\prisym.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\random.o: X+ o\read.o: $(HACK_H) X+ o\restore.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\rip.o: $(HACK_H) X+ o\rnd.o: $(HACK_H) X+ o\rumors.o: $(HACK_H) X+ o\save.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\search.o: $(HACK_H) $(INCL)\artifact.h X+ o\shk.o: $(HACK_H) $(INCL)\eshk.h X+ o\shknam.o: $(HACK_H) $(INCL)\eshk.h X+ o\sit.o: $(HACK_H) X+ o\sounds.o: $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h X+ o\sp_lev.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\spell.o: $(HACK_H) X+ o\steal.o: $(HACK_H) X+ o\termcap.o: $(HACK_H) X+ o\timeout.o: $(HACK_H) X+ o\topl.o: $(HACK_H) X+ o\topten.o: $(HACK_H) X+ o\track.o: $(HACK_H) X+ o\trap.o: $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h X+ o\u_init.o: $(HACK_H) X+ o\uhitm.o: $(HACK_H) $(INCL)\artifact.h X+ o\vault.o: $(HACK_H) $(INCL)\vault.h X+ o\version.o: $(HACK_H) $(INCL)\date.h X+ o\weapon.o: $(HACK_H) X+ o\were.o: $(HACK_H) X+ o\wield.o: $(HACK_H) X+ o\wizard.o: $(HACK_H) X+ o\worm.o: $(HACK_H) $(INCL)\wseg.h X+ o\worn.o: $(HACK_H) X+ o\write.o: $(HACK_H) X+ o\zap.o: $(HACK_H) X*** /dev/null Tue Aug 15 10:53:49 1989 X--- others/Makefile.msc Tue Aug 15 20:51:09 1989 X*************** X*** 0 **** X--- 1,322 ---- X+ # SCCS Id: @(#)Makefile.msc 3.0 89/08/13 X+ # PC NetHack 3.0 Makefile for Microsoft(tm) "C" 5.1 -- Paul Gyugyi X+ # X+ # Large memory model, register bug, remove stack probes: X+ CC = cl /c X+ LINK = link X+ MODEL = L X+ X+ # Directories (makedefs hardcodes these, don't change them) X+ INCL = ..\include X+ AUX = ..\auxil X+ SRC = ..\src X+ X+ # If you don't have a 286 or better, remove the /G2 in the line below. X+ CFLAGS = /A$(MODEL) /DLINT_ARGS /DDGK /Os /Oa /G2 /Gs /Gt28 /I$(INCL) /W0 X+ LFLAGS = /noi /st:0x0aff /se:512 X+ TARG = pc X+ X+ .c.o: X+ $(CC) $(CFLAGS) /Foo\$*.o $*.c X+ X+ # Optional high-quality BSD random number generation routines (see pcconf.h). X+ # Set to nothing if not used. X+ # RANDOM = o\random.o X+ RANDOM = X+ X+ # For NDMAKE, to handle the .o suffix. X+ .SUFFIXES: .exe .o .c .y .l X+ X+ # The game name X+ GAME= nethack X+ X+ # The game directory X+ GAMEDIR = \games\$(GAME) X+ X+ # The game filename X+ GAMEFILE = $(GAMEDIR)\$(GAME).exe X+ X+ # object files for makedefs X+ MAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o X+ X+ # object files for special levels compiler X+ SPLEVOBJS = o\lev_comp.o o\lev_lex.o o\lev_main.o o\alloc.o o\monst.o o\objects.o o\panic.o X+ X+ # nothing below this line should have to be changed X+ # X+ # other things that have to be reconfigured are in config.h, X+ # {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h X+ X+ VOBJ = o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o o\cmd.o \ X+ o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \ X+ o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \ X+ o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \ X+ o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \ X+ o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \ X+ o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \ X+ o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \ X+ o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \ X+ o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \ X+ o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \ X+ o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \ X+ o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \ X+ o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o X+ HOBJ = $(VOBJ) o\version.o X+ X+ PCCONF_H = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \ X+ $(INCL)\extern.h X+ GLOBAL_H = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H) X+ CONFIG_H = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H) X+ TRAP_H = $(INCL)\trap.h X+ PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h X+ YOU_H = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \ X+ $(INCL)\monst.h $(INCL)\youprop.h X+ DECL_H = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \ X+ $(INCL)\onames.h $(INCL)\pm.h X+ HACK_H = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \ X+ $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \ X+ $(INCL)\rm.h X+ X+ # The main target X+ # NDMAKE automatically generates LINK response files X+ $(GAMEDIR)\$(GAME).exe: $(HOBJ) ltermlib.lib X+ $(LINK) $(HOBJ),nethack,nethack,$(SRC)\ltermlib $(LFLAGS) X+ X+ X+ $(GAME): $(GAMEDIR)\$(GAME).exe X+ $(GAME).exe: $(GAMEDIR)\$(GAME).exe X+ X+ X+ # make ltermlib.lib -- replaces makefile in termcap.arc X+ # unarc termcap.arc into src directory, but be careful that the X+ # makefile in the archive does not overwrite this one X+ TL_LSOURCES = tgetent.c tgetflag.c tgetnum.c tgetstr.c tgoto.c tputs.c \ X+ isdigit.c fgetlr.c X+ X+ TL_LOBJECTS = o\tgetent.o o\tgetflag.o o\tgetnum.o o\tgetstr.o \ X+ o\tgoto.o o\tputs.o o\isdigit.o o\fgetlr.o X+ X+ ltermlib.lib : $(TL_LOBJECTS) X+ lib ltermlib.lib -+ $(TL_LOBJECTS); X+ X+ .c.o: X+ $(CC) $(CFLAGS) /Fo.\o\$*.o $*.c X+ X+ all: o lev_comp.exe $(GAME) auxil.tag install.tag X+ @echo Done. X+ X+ o: X+ if not exist .\o\*.* mkdir o X+ X+ makedefs.exe: $(MAKEOBJS) X+ $(LINK) $(LFLAGS) $(MAKEOBJS); X+ X+ o\makedefs.o: $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h X+ X+ lev_comp.exe: $(SPLEVOBJS) X+ $(LINK) $(LFLAGS) $(SPLEVOBJS),lev_comp.exe; X+ X+ o\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\lev_lex.o: $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h X+ o\lev_main.o: $(HACK_H) $(INCL)\sp_lev.h X+ X+ # If you have yacc or lex programs, and make any changes, X+ # add some .y.c and .l.c rules to your Make.ini. X+ X+ lev_comp.c: lev_comp.y X+ lev_lex.c: lev_comp.l X+ X+ # X+ # The following include files depend on makedefs to be created. X+ # X+ # date.h should be remade any time any of the source or include code X+ # is modified. X+ # X+ $(INCL)\date.h: $(VOBJ) makedefs.exe X+ .\makedefs -v X+ X+ $(INCL)\trap.h: makedefs.exe X+ .\makedefs -t X+ X+ $(INCL)\onames.h: makedefs.exe X+ .\makedefs -o X+ X+ $(INCL)\pm.h: makedefs.exe X+ .\makedefs -p X+ X+ data: $(AUX)\data.base makedefs.exe X+ .\makedefs -d X+ X+ rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe X+ .\makedefs -r X+ X+ # X+ # The following programs vary depending on what OS you are using. X+ # X+ o\main.o: $(HACK_H) $(TARG)main.c X+ $(CC) $(CFLAGS) /Fo.\o\main.o $(TARG)main.c X+ X+ o\tty.o: $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c X+ $(CC) $(CFLAGS) /Fo.\o\tty.o $(TARG)tty.c X+ X+ o\unix.o: $(HACK_H) $(TARG)unix.c X+ $(CC) $(CFLAGS) /Fo.\o\unix.o $(TARG)unix.c X+ X+ # X+ # Secondary targets X+ # X+ X+ auxil.tag: spec_levs.tag data rumors termcap X+ # the tag file is a dummy file to keep from redoing this every make X+ echo special levels created > auxil.tag X+ X+ install.tag: X+ # always done X+ # assume \games exists already, but make it just to make sure X+ md \games X+ md $(GAMEDIR) X+ md $(GAMEDIR)\bones X+ echo y>yes.txt X+ # X+ # Watch Out! The next command cleans out the game & bones dirs! X+ # This will delete any config file you have and overwrite it X+ # with the default. X+ # Since the game options may have changed since your last install, X+ # you should say yes to clean the directory. X+ # X+ del $(GAMEDIR)\*.* < yes.txt X+ del $(GAMEDIR)\bones\*.* < yes.txt X+ copy termcap $(GAMEDIR)\termcap X+ copy castle $(GAMEDIR) X+ copy endgame $(GAMEDIR) X+ copy tower? $(GAMEDIR) X+ copy $(GAME).exe $(GAMEDIR) X+ copy $(AUX)\*. $(GAMEDIR) X+ copy nethack.cnf $(GAMEDIR) X+ echo record > $(GAMEDIR)\record X+ echo install done >install.tag X+ X+ X+ spec_levs.tag: lev_comp.exe $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des X+ lev_comp $(AUX)\castle.des X+ lev_comp $(AUX)\endgame.des X+ lev_comp $(AUX)\tower.des X+ echo spec_lev done >spec_levs.tag X+ X+ clean: X+ del o\*.o X+ rmdir o X+ X+ spotless: clean X+ cd $(INCL) X+ del date.h X+ del onames.h X+ del pm.h X+ cd $(SRC) X+ del makedefs.exe X+ del lev_comp.exe X+ del $(AUX)\data X+ del $(AUX)\rumors X+ del castle X+ del endgame X+ del tower? X+ del *.tag X+ del $(GAME).exe X+ del $(GAME).map X+ X+ # X+ # Other dependencies X+ # X+ X+ # GO AHEAD, DELETE THIS LINE X+ X+ o\alloc.o: $(CONFIG_H) X+ o\apply.o: $(HACK_H) $(INCL)\edog.h X+ o\artifact.o: $(HACK_H) $(INCL)\artifact.h X+ o\attrib.o: $(HACK_H) X+ o\bones.o: $(HACK_H) X+ o\cmd.o: $(HACK_H) $(INCL)\func_tab.h X+ o\dbridge.o: $(HACK_H) X+ o\decl.o: $(HACK_H) X+ o\demon.o: $(HACK_H) X+ o\do.o: $(HACK_H) X+ o\do_name.o: $(HACK_H) X+ o\do_wear.o: $(HACK_H) X+ o\dog.o: $(HACK_H) $(INCL)\edog.h X+ o\dogmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h X+ o\dokick.o: $(HACK_H) X+ o\dothrow.o: $(HACK_H) X+ o\eat.o: $(HACK_H) X+ o\end.o: $(HACK_H) $(INCL)\eshk.h X+ o\engrave.o: $(HACK_H) X+ o\exper.o: $(HACK_H) X+ o\extralev.o: $(HACK_H) X+ o\fountain.o: $(HACK_H) X+ o\getline.o: $(HACK_H) $(INCL)\func_tab.h X+ o\hack.o: $(HACK_H) X+ o\invent.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\ioctl.o: $(HACK_H) X+ o\lev_comp.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\lock.o: $(HACK_H) X+ o\makemon.o: $(HACK_H) X+ o\mail.o: $(HACK_H) X+ o\mcastu.o: $(HACK_H) X+ o\mhitm.o: $(HACK_H) $(INCL)\artifact.h X+ o\mhitu.o: $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h X+ o\mklev.o: $(HACK_H) X+ o\mkmaze.o: $(HACK_H) X+ o\mkobj.o: $(HACK_H) X+ o\mkroom.o: $(HACK_H) X+ o\mon.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h X+ o\mondata.o: $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h X+ o\monmove.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h X+ o\monst.o: $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h X+ o\msdos.o: $(HACK_H) X+ o\mthrowu.o: $(HACK_H) X+ o\music.o: $(HACK_H) X+ o\o_init.o: $(HACK_H) $(INCL)\onames.h X+ o\objects.o: $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h X+ o\objnam.o: $(HACK_H) X+ o\options.o: $(HACK_H) X+ o\pager.o: $(HACK_H) X+ o\panic.o: $(CONFIG_H) X+ o\pickup.o: $(HACK_H) X+ o\polyself.o: $(HACK_H) X+ o\potion.o: $(HACK_H) X+ o\pray.o: $(HACK_H) X+ o\pri.o: $(HACK_H) X+ o\priest.o: $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h X+ o\prisym.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\random.o: X+ o\read.o: $(HACK_H) X+ o\restore.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\rip.o: $(HACK_H) X+ o\rnd.o: $(HACK_H) X+ o\rumors.o: $(HACK_H) X+ o\save.o: $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h X+ o\search.o: $(HACK_H) $(INCL)\artifact.h X+ o\shk.o: $(HACK_H) $(INCL)\eshk.h X+ o\shknam.o: $(HACK_H) $(INCL)\eshk.h X+ o\sit.o: $(HACK_H) X+ o\sounds.o: $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h X+ o\sp_lev.o: $(HACK_H) $(INCL)\sp_lev.h X+ o\spell.o: $(HACK_H) X+ o\steal.o: $(HACK_H) X+ o\termcap.o: $(HACK_H) X+ o\timeout.o: $(HACK_H) X+ o\topl.o: $(HACK_H) X+ o\topten.o: $(HACK_H) X+ o\track.o: $(HACK_H) X+ o\trap.o: $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h X+ o\u_init.o: $(HACK_H) X+ o\uhitm.o: $(HACK_H) $(INCL)\artifact.h X+ o\vault.o: $(HACK_H) $(INCL)\vault.h X+ o\version.o: $(HACK_H) $(INCL)\date.h X+ o\weapon.o: $(HACK_H) X+ o\were.o: $(HACK_H) X+ o\wield.o: $(HACK_H) X+ o\wizard.o: $(HACK_H) X+ o\worm.o: $(HACK_H) $(INCL)\wseg.h X+ o\worn.o: $(HACK_H) X+ o\write.o: $(HACK_H) X+ o\zap.o: $(HACK_H) END_OF_FILE echo shar: 2 control characters may be missing from \"'patch02b'\" if test 52490 -ne `wc -c <'patch02b'`; then echo shar: \"'patch02b'\" unpacked with wrong size! fi # end of 'patch02b' fi echo shar: End of archive 2 \(of 7\). cp /dev/null ark2isdone MISSING="" for I in 1 2 3 4 5 6 7 ; do if test ! -f ark${I}isdone ; then MISSING="${MISSING} ${I}" fi done if test "${MISSING}" = "" ; then echo You have unpacked all 7 archives. rm -f ark[1-9]isdone else echo You still need to unpack the following archives: echo " " ${MISSING} fi ## End of shell archive. exit 0