home *** CD-ROM | disk | FTP | other *** search
/ Giga Games 1 / Giga Games.iso / net / usenet / volume7 / nethack3 / patch2b < prev    next >
Encoding:
Internet Message Format  |  1989-08-19  |  55.3 KB

  1. Path: uunet!zephyr.ens.tek.com!tekgen!tekred!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v08i007:  NetHack3 -  display oriented dungeons & dragons (Ver. 3.0), Patch2b
  5. Message-ID: <4459@tekred.CNA.TEK.COM>
  6. Date: 18 Aug 89 15:47:32 GMT
  7. Sender: nobody@tekred.CNA.TEK.COM
  8. Lines: 2123
  9. Approved: billr@saab.CNA.TEK.COM
  10.  
  11. Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
  12. Posting-number: Volume 8, Issue 7
  13. Archive-name: NetHack3/Patch2b
  14. Patch-To: NetHack3: Volume 7, Issue 56-93
  15.  
  16.     [If this shar file unpacks with 2 control characters missing,
  17.      they are the control-G characters at the end of the "echo "
  18.      statements in Makefile.tcc.    -br]
  19.  
  20. #! /bin/sh
  21. # This is a shell archive.  Remove anything before this line, then unpack
  22. # it by saving it into a file and typing "sh file".  To overwrite existing
  23. # files, type "sh file -c".  You can also feed this as standard input via
  24. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  25. # will see the following message at the end:
  26. #        "End of archive 2 (of 7)."
  27. # Contents:  patch02b
  28. # Wrapped by billr@saab on Fri Aug 18 08:33:16 1989
  29. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  30. if test -f 'patch02b' -a "${1}" != "-c" ; then 
  31.   echo shar: Will not clobber existing file \"'patch02b'\"
  32. else
  33. echo shar: Extracting \"'patch02b'\" \(52490 characters\)
  34. sed "s/^X//" >'patch02b' <<'END_OF_FILE'
  35. X*** others/Old/Make.ini    Wed Aug 16 12:06:40 1989
  36. X--- others/Make.ini    Tue Aug 15 20:38:30 1989
  37. X***************
  38. X*** 1,7 ****
  39. X! #    SCCS Id: @(#)Make.ini    1.4    87/08/08
  40. X! # This is a sample `make.ini' file for NDMAKE v3.7.  You will probably want
  41. X! # to customize it for your system.
  42. X  
  43. X  
  44. X  
  45. X  # The order to search for rules and files is specified by .SUFFIXES
  46. X--- 1,7 ----
  47. X! #    SCCS Id: @(#)Make.ini    3.0    89/08/13
  48. X  
  49. X+ # This is a sample `make.ini' file for NDMAKE v3.8.  You will probably want
  50. X+ # to customize it for your system.
  51. X  
  52. X  
  53. X  # The order to search for rules and files is specified by .SUFFIXES
  54. X***************
  55. X*** 14,19 ****
  56. X--- 14,20 ----
  57. X  LIBS =
  58. X  BIN =
  59. X  LFLAGS =
  60. X+ CC = cl
  61. X  
  62. X  # A universally useful target.
  63. X  clean:
  64. X***************
  65. X*** 30,36 ****
  66. X  .asm.obj:; masm $*.asm;
  67. X  
  68. X  # To produce a `.obj' file from a `.c' file using Microsoft C. 
  69. X! .c.obj:; msc $(CFLAGS) -I\c $*.c
  70. X  
  71. X  # To produce a `.obj' file from a `.for' file using Microsoft Fortran.
  72. X  .for.obj:
  73. X--- 31,37 ----
  74. X  .asm.obj:; masm $*.asm;
  75. X  
  76. X  # To produce a `.obj' file from a `.c' file using Microsoft C. 
  77. X! .c.obj:; $(CC) $(CFLAGS) -c $*.c
  78. X  
  79. X  # To produce a `.obj' file from a `.for' file using Microsoft Fortran.
  80. X  .for.obj:
  81. X***************
  82. X*** 55,61 ****
  83. X  
  84. X  # To produce a `.exe' file from a `.c' file.
  85. X  .c.exe:
  86. X!     msc $(CFLAGS) -I\c $*.c
  87. X      link $*.obj $(SETARGV), $@,, $(LIBS) $(LFLAGS)
  88. X      erase $*.obj
  89. X  
  90. X--- 56,62 ----
  91. X  
  92. X  # To produce a `.exe' file from a `.c' file.
  93. X  .c.exe:
  94. X!     $(CC) $(CFLAGS) -c $*.c
  95. X      link $*.obj $(SETARGV), $@,, $(LIBS) $(LFLAGS)
  96. X      erase $*.obj
  97. X  
  98. X*** others/Old/Makefile.tcc    Wed Aug 16 12:07:08 1989
  99. X--- others/Makefile.tcc    Wed Aug 16 10:14:40 1989
  100. X***************
  101. X*** 24,36 ****
  102. X  # Optional PC NetHack features (see pcconf.h).  Set to nothing if not used.
  103. X  #
  104. X  #    Fish's TERMLIB termcap library.
  105. X! TERMLIB = $(LIB)\termlib.lib
  106. X  #
  107. X  #     High-quality BSD random number generation routines.
  108. X  RANDOM = o\random.obj
  109. X  
  110. X  LFLAGS    = /noi
  111. X! TLFLAGS = /x /c
  112. X  # No need to link in the floating point library
  113. X  LIBS    = $(LIB)\c$(MODEL)
  114. X  
  115. X--- 24,37 ----
  116. X  # Optional PC NetHack features (see pcconf.h).  Set to nothing if not used.
  117. X  #
  118. X  #    Fish's TERMLIB termcap library.
  119. X! #TERMLIB = $(LIB)\termlib.lib
  120. X! TERMLIB =
  121. X  #
  122. X  #     High-quality BSD random number generation routines.
  123. X  RANDOM = o\random.obj
  124. X  
  125. X  LFLAGS    = /noi
  126. X! TLFLAGS = /x/c
  127. X  # No need to link in the floating point library
  128. X  LIBS    = $(LIB)\c$(MODEL)
  129. X  
  130. X***************
  131. X*** 43,48 ****
  132. X--- 44,54 ----
  133. X  # reason with too many objects it produces a file that freaks out
  134. X  # and hangs the system.
  135. X  #
  136. X+ # Also note:
  137. X+ #
  138. X+ # Using /EXEPACK with LINK will greatly reduce the size of the
  139. X+ # executable (about 50K), it will also greatly increase the memory
  140. X+ # required to load it (about 20K).
  141. X  TLINK    = tlink
  142. X  LINK    = link
  143. X  
  144. X***************
  145. X*** 76,90 ****
  146. X  VOBJM = o\apply.obj o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj \
  147. X      o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj \
  148. X      o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj \
  149. X!     o\exper.obj o\fountain.obj o\invent.obj o\lock.obj o\mcastu.obj \
  150. X!     o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj o\music.obj \
  151. X!     o\objnam.obj o\options.obj o\pager.obj o\pickup.obj o\polyself.obj \
  152. X!     o\potion.obj o\pray.obj o\priest.obj o\read.obj o\restore.obj \
  153. X!     o\rip.obj o\rnd.obj o\rumors.obj o\save.obj o\search.obj o\shk.obj \
  154. X!     o\sit.obj o\sounds.obj o\spell.obj o\steal.obj o\termcap.obj \
  155. X!     o\track.obj o\trap.obj o\uhitm.obj o\vault.obj o\weapon.obj \
  156. X!     o\were.obj o\wield.obj o\wizard.obj o\worm.obj o\worn.obj \
  157. X!     o\write.obj o\zap.obj
  158. X  VOBJL = o\mklev.obj o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj \
  159. X      o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj
  160. X  VOBJ  = $(VOBJS) $(VOBJM) $(VOBJL)
  161. X--- 82,96 ----
  162. X  VOBJM = o\apply.obj o\artifact.obj o\attrib.obj o\bones.obj o\dbridge.obj \
  163. X      o\demon.obj o\do.obj o\do_name.obj o\do_wear.obj o\dog.obj \
  164. X      o\dogmove.obj o\dokick.obj o\dothrow.obj o\eat.obj o\engrave.obj \
  165. X!     o\exper.obj o\fountain.obj o\invent.obj o\lock.obj \
  166. X!     o\mcastu.obj o\mhitm.obj o\mhitu.obj o\msdos.obj o\mthrowu.obj \
  167. X!     o\music.obj o\objnam.obj o\options.obj o\pager.obj o\pickup.obj \
  168. X!     o\polyself.obj o\potion.obj o\pray.obj o\priest.obj o\read.obj \
  169. X!     o\restore.obj o\rip.obj o\rnd.obj o\rumors.obj o\save.obj \
  170. X!     o\search.obj o\shk.obj o\sit.obj o\sounds.obj o\spell.obj \
  171. X!     o\steal.obj o\termcap.obj o\track.obj o\trap.obj o\uhitm.obj \
  172. X!     o\vault.obj o\weapon.obj o\were.obj o\wield.obj o\wizard.obj \
  173. X!     o\worm.obj o\worn.obj o\write.obj o\zap.obj
  174. X  VOBJL = o\mklev.obj o\mkmaze.obj o\extralev.obj o\sp_lev.obj o\mkroom.obj \
  175. X      o\shknam.obj o\topten.obj o\end.obj o\o_init.obj o\u_init.obj
  176. X  VOBJ  = $(VOBJS) $(VOBJM) $(VOBJL)
  177. X***************
  178. X*** 102,112 ****
  179. X  GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  180. X  CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  181. X  TRAP_H       = $(INCL)\trap.h
  182. X! PCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\system.h $(INCL)\extern.h
  183. X  PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  184. X  YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  185. X           $(INCL)\monst.h $(INCL)\youprop.h
  186. X! DECL_H       = $(INCL)\decl.h
  187. X  DECL_H       = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h \
  188. X           $(INCL)\pm.h
  189. X  HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  190. X--- 108,118 ----
  191. X  GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  192. X  CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  193. X  TRAP_H       = $(INCL)\trap.h
  194. X! #PCCONF_H  = $(INCL)\system.h $(INCL)\extern.h
  195. X  PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  196. X  YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  197. X           $(INCL)\monst.h $(INCL)\youprop.h
  198. X! #DECL_H       = $(INCL)\decl.h
  199. X  DECL_H       = $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) $(INCL)\onames.h \
  200. X           $(INCL)\pm.h
  201. X  HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  202. X***************
  203. X*** 122,129 ****
  204. X  
  205. X  # The main target
  206. X  $(GAMEFILE): o $(HOBJ) Makefile
  207. X!     if exist $(GAMEFILE) del $(GAMEFILE)
  208. X!     link $(C0) $(HOBJ),$(GAMEFILE) /seg:1024 /e,,$(LIBS) $(TERMLIB) $(LFLAGS)
  209. X      echo 
  210. X  $(GAME): $(GAMEFILE)
  211. X  
  212. X--- 128,135 ----
  213. X  
  214. X  # The main target
  215. X  $(GAMEFILE): o $(HOBJ) Makefile
  216. X!     if exist $@ del $@
  217. X!     $(LINK) $(C0) $(HOBJ),$@ /seg:1024,,$(LIBS) $(TERMLIB) $(LFLAGS)
  218. X      echo 
  219. X  $(GAME): $(GAMEFILE)
  220. X  
  221. X***************
  222. X*** 198,204 ****
  223. X      cd $(AUX)
  224. X      xcopy *. $(GAMEDIR)
  225. X  
  226. X! spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
  227. X      lev_comp $(AUX)\castle.des
  228. X      lev_comp $(AUX)\endgame.des
  229. X      lev_comp $(AUX)\tower.des
  230. X--- 204,210 ----
  231. X      cd $(AUX)
  232. X      xcopy *. $(GAMEDIR)
  233. X  
  234. X! spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des lev_comp.exe
  235. X      lev_comp $(AUX)\castle.des
  236. X      lev_comp $(AUX)\endgame.des
  237. X      lev_comp $(AUX)\tower.des
  238. X***************
  239. X*** 220,225 ****
  240. X--- 226,234 ----
  241. X      del onames.h
  242. X      del pm.h
  243. X      touch date.h onames.h pm.h
  244. X+     cd $(AUX)
  245. X+     del data
  246. X+     del rumors
  247. X      cd $(SRC)
  248. X      del makedefs.exe
  249. X      if exist lev_comp.exe del lev_comp.exe
  250. X*** others/Old/msdos.c    Wed Aug 16 12:07:48 1989
  251. X--- others/msdos.c    Wed Aug 16 10:15:04 1989
  252. X***************
  253. X*** 16,21 ****
  254. X--- 16,24 ----
  255. X  #   undef getdate
  256. X  #  endif
  257. X  # endif
  258. X+ #ifdef OS2
  259. X+ # include "def_os2.h"    /* OS2 definitions (Timo Hakulinen) */
  260. X+ #endif
  261. X  static char DOSgetch();
  262. X  #ifdef DGK
  263. X  static char BIOSgetch();
  264. X***************
  265. X*** 43,55 ****
  266. X      return ((ch == '\r') ? '\n' : ch);
  267. X  }
  268. X  
  269. X  #define DIRECT_INPUT    0x7
  270. X  static char
  271. X  DOSgetch() {
  272. X  #ifdef TOS
  273. X      return (Crawcin() & 0x007f);
  274. X  #else
  275. X!     union REGS regs;
  276. X  
  277. X      regs.h.ah = DIRECT_INPUT;
  278. X      intdos(®s, ®s);
  279. X--- 46,72 ----
  280. X      return ((ch == '\r') ? '\n' : ch);
  281. X  }
  282. X  
  283. X+ #ifndef OS2
  284. X  #define DIRECT_INPUT    0x7
  285. X+ #endif
  286. X  static char
  287. X  DOSgetch() {
  288. X+ #ifdef OS2
  289. X+     KBDKEYINFO CharData;
  290. X+     USHORT IOWait = 0;
  291. X+     HKBD KbdHandle = 0;
  292. X+ 
  293. X+     KbdCharIn(&CharData,IOWait,KbdHandle);
  294. X+     if (CharData.chChar == 0) {    /* an extended code -- not yet supported */
  295. X+         KbdCharIn(&CharData,IOWait,KbdHandle);       /* eat the next character */
  296. X+         CharData.chChar = 0;        /* and return a 0 */
  297. X+     }
  298. X+     return (CharData.chChar);
  299. X+ #else
  300. X  #ifdef TOS
  301. X      return (Crawcin() & 0x007f);
  302. X  #else
  303. X!     union REGS regs;
  304. X  
  305. X      regs.h.ah = DIRECT_INPUT;
  306. X      intdos(®s, ®s);
  307. X***************
  308. X*** 60,65 ****
  309. X--- 77,83 ----
  310. X      }
  311. X      return (regs.h.al);
  312. X  #endif /* TOS */
  313. X+ #endif /* OS2 */
  314. X  }
  315. X  
  316. X  #include <ctype.h>
  317. X***************
  318. X*** 93,107 ****
  319. X--- 111,130 ----
  320. X              flags.toplin = 0;
  321. X              more();
  322. X          }
  323. X+         gettty(); /* ctrl-P might get turned back on (TH) */
  324. X          chdirx(hackdir, 0);
  325. X          start_screen();
  326. X          docrt();
  327. X      } else
  328. X+ #ifdef OS2
  329. X+         pline("Cannot exec CMD.EXE");
  330. X+ #else
  331. X  #ifdef TOS
  332. X          pline("Cannot find SHELL");
  333. X  #else
  334. X          pline("Cannot exec COMMAND.COM");
  335. X  #endif
  336. X+ #endif /* OS2 */
  337. X      return 0;
  338. X  }
  339. X  #endif /* SHELL */
  340. X***************
  341. X*** 173,189 ****
  342. X  #define SHIFT        (0x1 | 0x2)
  343. X  /* #define CTRL        0x4 */
  344. X  /* #define ALT        0x8 */
  345. X  #define KEYBRD_BIOS    0x16
  346. X  
  347. X  static char
  348. X  BIOSgetch() {
  349. X      unsigned char scan, shift, ch;
  350. X  #ifdef TOS
  351. X      long  x;
  352. X  #else
  353. X      union REGS regs;
  354. X  #endif
  355. X-     struct pad (*kpad)[PADKEYS];
  356. X  
  357. X      /* Get scan code.
  358. X       */
  359. X--- 196,225 ----
  360. X  #define SHIFT        (0x1 | 0x2)
  361. X  /* #define CTRL        0x4 */
  362. X  /* #define ALT        0x8 */
  363. X+ #ifndef OS2
  364. X  #define KEYBRD_BIOS    0x16
  365. X+ #endif
  366. X  
  367. X  static char
  368. X  BIOSgetch() {
  369. X      unsigned char scan, shift, ch;
  370. X+     struct pad (*kpad)[PADKEYS];
  371. X+ 
  372. X+ #ifdef OS2
  373. X+     KBDKEYINFO CharData;
  374. X+     USHORT IOWait = 0;
  375. X+     HKBD KbdHandle = 0;
  376. X+ 
  377. X+     KbdCharIn(&CharData,IOWait,KbdHandle);
  378. X+     ch = CharData.chChar;
  379. X+     scan = CharData.chScan;
  380. X+     shift = CharData.fsState;
  381. X+ #else /* OS2 */
  382. X  #ifdef TOS
  383. X      long  x;
  384. X  #else
  385. X      union REGS regs;
  386. X  #endif
  387. X  
  388. X      /* Get scan code.
  389. X       */
  390. X***************
  391. X*** 191,197 ****
  392. X      x = Crawcin();
  393. X      ch = x & 0x0ff;
  394. X      scan = (x & 0x00ff0000L) >> 16;
  395. X! #else    
  396. X      regs.h.ah = 0;
  397. X      int86(KEYBRD_BIOS, ®s, ®s);
  398. X      ch = regs.h.al;
  399. X--- 227,233 ----
  400. X      x = Crawcin();
  401. X      ch = x & 0x0ff;
  402. X      scan = (x & 0x00ff0000L) >> 16;
  403. X! #else
  404. X      regs.h.ah = 0;
  405. X      int86(KEYBRD_BIOS, ®s, ®s);
  406. X      ch = regs.h.al;
  407. X***************
  408. X*** 206,220 ****
  409. X      int86(KEYBRD_BIOS, ®s, ®s);
  410. X      shift = regs.h.al;
  411. X  #endif
  412. X      /* If scan code is for the keypad, translate it.
  413. X       */
  414. X      kpad = flags.num_pad ? numpad : keypad;
  415. X      if (iskeypad(scan)) {
  416. X          if (shift & SHIFT) {
  417. X! #ifndef TOS
  418. X!             flags.mv = flags.run = 1;
  419. X!             /* necessary if number_pad is on */
  420. X! #endif
  421. X              ch = (*kpad)[scan - KEYPADLOW].shift;
  422. X          } else
  423. X              ch = (*kpad)[scan - KEYPADLOW].normal;
  424. X--- 242,255 ----
  425. X      int86(KEYBRD_BIOS, ®s, ®s);
  426. X      shift = regs.h.al;
  427. X  #endif
  428. X+ #endif /* OS2 */
  429. X+ 
  430. X      /* If scan code is for the keypad, translate it.
  431. X       */
  432. X      kpad = flags.num_pad ? numpad : keypad;
  433. X      if (iskeypad(scan)) {
  434. X          if (shift & SHIFT) {
  435. X!             /* if number_pad is on, this makes little difference */
  436. X              ch = (*kpad)[scan - KEYPADLOW].shift;
  437. X          } else
  438. X              ch = (*kpad)[scan - KEYPADLOW].normal;
  439. X***************
  440. X*** 224,229 ****
  441. X--- 259,265 ----
  442. X  
  443. X  #ifndef TOS
  444. X  
  445. X+ #ifndef OS2
  446. X  #define FINDFIRST    0x4E00
  447. X  #define FINDNEXT    0x4F00
  448. X  #define GETDTA        0x2F00
  449. X***************
  450. X*** 230,248 ****
  451. X  #define SETFILETIME    0x5701
  452. X  #define GETSWITCHAR    0x3700
  453. X  #define FREESPACE    0x36
  454. X  
  455. X  #ifdef __TURBOC__
  456. X  #define switchar()    (char)getswitchar()
  457. X  #else
  458. X  static char
  459. X  switchar()
  460. X  {
  461. X!     union REGS regs;
  462. X  
  463. X      regs.x.ax = GETSWITCHAR;
  464. X      intdos(®s, ®s);
  465. X      return regs.h.dl;
  466. X  }
  467. X  #endif
  468. X  
  469. X  long
  470. X--- 266,287 ----
  471. X  #define SETFILETIME    0x5701
  472. X  #define GETSWITCHAR    0x3700
  473. X  #define FREESPACE    0x36
  474. X+ #endif
  475. X  
  476. X  #ifdef __TURBOC__
  477. X  #define switchar()    (char)getswitchar()
  478. X  #else
  479. X+ #ifndef OS2
  480. X  static char
  481. X  switchar()
  482. X  {
  483. X!     union REGS regs;
  484. X  
  485. X      regs.x.ax = GETSWITCHAR;
  486. X      intdos(®s, ®s);
  487. X      return regs.h.dl;
  488. X  }
  489. X+ #endif /* OS2 */
  490. X  #endif
  491. X  
  492. X  long
  493. X***************
  494. X*** 249,254 ****
  495. X--- 288,314 ----
  496. X  freediskspace(path)
  497. X  char *path;
  498. X  {
  499. X+ #ifdef OS2
  500. X+     struct {
  501. X+         ULONG  idFileSystem;
  502. X+         ULONG  cSectorUnit;
  503. X+         ULONG  cUnit;
  504. X+         ULONG  cUnitAvail;
  505. X+         USHORT cbSector;
  506. X+     } FSInfoBuf;
  507. X+     USHORT DriveNumber, FSInfoLevel = 1, res;
  508. X+ 
  509. X+     if (path[0] && path[1] == ':')
  510. X+         DriveNumber = (toupper(path[0]) - 'A') + 1;
  511. X+     else
  512. X+         DriveNumber = 0;
  513. X+     res = DosQFSInfo(DriveNumber,FSInfoLevel,(PBYTE)&FSInfoBuf,sizeof(FSInfoBuf));
  514. X+     if (res)
  515. X+         return -1L;        /* error */
  516. X+     else
  517. X+         return ((long) FSInfoBuf.cSectorUnit * FSInfoBuf.cUnitAvail *
  518. X+                    FSInfoBuf.cbSector);
  519. X+ #else
  520. X      union REGS regs;
  521. X  
  522. X      regs.h.ah = FREESPACE;
  523. X***************
  524. X*** 261,268 ****
  525. X--- 321,334 ----
  526. X          return -1L;        /* bad drive number */
  527. X      else
  528. X          return ((long) regs.x.bx * regs.x.cx * regs.x.ax);
  529. X+ #endif /* OS2 */
  530. X  }
  531. X  
  532. X+ #ifdef OS2
  533. X+ FILEFINDBUF ResultBuf;
  534. X+ HDIR DirHandle;
  535. X+ #endif
  536. X+ 
  537. X  /* Functions to get filenames using wildcards
  538. X   */
  539. X  static int
  540. X***************
  541. X*** 269,274 ****
  542. X--- 335,347 ----
  543. X  findfirst(path)
  544. X  char *path;
  545. X  {
  546. X+ #ifdef OS2
  547. X+     USHORT res, SearchCount = 1;
  548. X+ 
  549. X+     DirHandle = 1;
  550. X+     res = DosFindFirst((PSZ)path,&DirHandle,0,&ResultBuf,sizeof(FILEFINDBUF),&SearchCount,0L);
  551. X+     return(!res);
  552. X+ #else
  553. X      union REGS regs;
  554. X      struct SREGS sregs;
  555. X  
  556. X***************
  557. X*** 278,294 ****
  558. X--- 351,376 ----
  559. X      sregs.ds = FP_SEG(path);
  560. X      intdosx(®s, ®s, &sregs);
  561. X      return !regs.x.cflag;
  562. X+ #endif /* OS2 */
  563. X  }
  564. X  
  565. X  static int
  566. X  findnext() {
  567. X+ #ifdef OS2
  568. X+     USHORT res, SearchCount = 1;
  569. X+ 
  570. X+     res = DosFindNext(DirHandle,&ResultBuf,sizeof(FILEFINDBUF),&SearchCount);
  571. X+     return(!res);
  572. X+ #else
  573. X      union REGS regs;
  574. X  
  575. X      regs.x.ax = FINDNEXT;
  576. X      intdos(®s, ®s);
  577. X      return !regs.x.cflag;
  578. X+ #endif /* OS2 */
  579. X  }
  580. X  
  581. X+ #ifndef OS2
  582. X  /* Get disk transfer area, Turbo C already has getdta */
  583. X  static char *
  584. X  getdta() {
  585. X***************
  586. X*** 306,311 ****
  587. X--- 388,394 ----
  588. X  #endif
  589. X      return ret;
  590. X  }
  591. X+ #endif  /* OS2 */
  592. X  
  593. X  #else /* TOS */
  594. X  
  595. X***************
  596. X*** 348,358 ****
  597. X--- 431,447 ----
  598. X  filesize(file)
  599. X  char *file;
  600. X  {
  601. X+ #ifndef OS2
  602. X      char *dta;
  603. X+ #endif
  604. X  
  605. X      if (findfirst(file)) {
  606. X+ #ifdef OS2
  607. X+         return  (* (long *) (ResultBuf.cbFileAlloc));
  608. X+ #else
  609. X          dta = getdta();
  610. X          return  (* (long *) (dta + 26));
  611. X+ #endif
  612. X      } else
  613. X          return -1L;
  614. X  }
  615. X***************
  616. X*** 361,373 ****
  617. X  eraseall(path, files)
  618. X  char *path, *files;
  619. X  {
  620. X!     char *dta, buf[PATHLEN];
  621. X  
  622. X      dta = getdta();
  623. X      Sprintf(buf, "%s%s", path, files);
  624. X      if (findfirst(buf))
  625. X          do {
  626. X!             Sprintf(buf, "%s%s", path, dta + 30);
  627. X              (void) unlink(buf);
  628. X          } while (findnext());
  629. X      return;
  630. X--- 450,474 ----
  631. X  eraseall(path, files)
  632. X  char *path, *files;
  633. X  {
  634. X!     char
  635. X! #ifndef OS2
  636. X!         *dta,
  637. X! #endif
  638. X!     buf[PATHLEN];
  639. X  
  640. X+ #ifndef OS2
  641. X      dta = getdta();
  642. X+ #endif
  643. X      Sprintf(buf, "%s%s", path, files);
  644. X      if (findfirst(buf))
  645. X          do {
  646. X!             Sprintf(buf, "%s%s", path,
  647. X! #ifdef OS2
  648. X!                 ResultBuf.achName
  649. X! #else
  650. X!                 dta + 30
  651. X! #endif
  652. X!                 );
  653. X              (void) unlink(buf);
  654. X          } while (findnext());
  655. X      return;
  656. X***************
  657. X*** 378,387 ****
  658. X  void
  659. X  copybones(mode) {
  660. X      char from[PATHLEN], to[PATHLEN], last[13], copy[8];
  661. X!     char *frompath, *topath, *dta, *comspec;
  662. X      int status;
  663. X      long fs;
  664. X      extern saveprompt;
  665. X  #ifdef TOS
  666. X      extern int _copyfile();
  667. X  #endif
  668. X--- 479,493 ----
  669. X  void
  670. X  copybones(mode) {
  671. X      char from[PATHLEN], to[PATHLEN], last[13], copy[8];
  672. X!     char *frompath, *topath,
  673. X! #ifndef OS2
  674. X!     *dta,
  675. X! #endif
  676. X!     *comspec;
  677. X      int status;
  678. X      long fs;
  679. X      extern saveprompt;
  680. X+ 
  681. X  #ifdef TOS
  682. X      extern int _copyfile();
  683. X  #endif
  684. X***************
  685. X*** 391,397 ****
  686. X--- 497,505 ----
  687. X      /* Find the name of the last file to be transferred
  688. X       */
  689. X      frompath = (mode != TOPERM) ? permbones : levels;
  690. X+ #ifndef OS2
  691. X      dta = getdta();
  692. X+ #endif
  693. X      last[0] = '\0';
  694. X      Sprintf(from, "%s%s", frompath, allbones);
  695. X      topath = (mode == TOPERM) ? permbones : levels;
  696. X***************
  697. X*** 406,412 ****
  698. X              if (_copyfile(from, to))
  699. X                  goto error_copying;
  700. X  #endif
  701. X!             Strcpy(last, dta + 30);
  702. X          } while (findnext());
  703. X  #ifdef TOS
  704. X      else
  705. X--- 514,526 ----
  706. X              if (_copyfile(from, to))
  707. X                  goto error_copying;
  708. X  #endif
  709. X!             Strcpy(last,
  710. X! #ifdef OS2
  711. X!                 ResultBuf.achName
  712. X! #else
  713. X!                 dta + 30
  714. X! #endif
  715. X!                 );
  716. X          } while (findnext());
  717. X  #ifdef TOS
  718. X      else
  719. X***************
  720. X*** 413,419 ****
  721. X          return;
  722. X  #else
  723. X      if (last[0]) {
  724. X!         Sprintf(copy, "%cC copy", switchar());
  725. X  
  726. X          /* Remove any bones files in `to' directory.
  727. X           */
  728. X--- 527,539 ----
  729. X          return;
  730. X  #else
  731. X      if (last[0]) {
  732. X!         Sprintf(copy, "%cC copy",
  733. X! #ifdef OS2
  734. X!             '/'
  735. X! #else
  736. X!             switchar()
  737. X! #endif
  738. X!             );
  739. X  
  740. X          /* Remove any bones files in `to' directory.
  741. X           */
  742. X***************
  743. X*** 516,523 ****
  744. X--- 636,651 ----
  745. X  static boolean
  746. X  record_exists() {
  747. X      int fd;
  748. X+ #ifdef OS2_CODEVIEW
  749. X+     char tmp[PATHLEN];
  750. X  
  751. X+     Strcpy(tmp,hackdir);
  752. X+     append_slash(tmp);
  753. X+     Strcat(tmp,RECORD);
  754. X+     if ((fd = open(tmp, 0)) >= 0) {
  755. X+ #else
  756. X      if ((fd = open(RECORD, 0)) >= 0) {
  757. X+ #endif
  758. X          (void) close(fd);
  759. X          return TRUE;
  760. X      }
  761. X***************
  762. X*** 788,794 ****
  763. X--- 916,924 ----
  764. X  /* Chdrive() changes the default drive.
  765. X   */
  766. X  #ifndef __TURBOC__
  767. X+ #ifndef OS2
  768. X  #define SELECTDISK    0x0E
  769. X+ #endif
  770. X  void
  771. X  chdrive(str)
  772. X  char *str;
  773. X***************
  774. X*** 795,802 ****
  775. X--- 925,934 ----
  776. X  {
  777. X      char *ptr;
  778. X  #ifndef TOS
  779. X+ #ifndef OS2
  780. X      union REGS inregs;
  781. X  #endif
  782. X+ #endif
  783. X      char drive;
  784. X  
  785. X      if ((ptr = index(str, ':')) != NULL) {
  786. X***************
  787. X*** 804,813 ****
  788. X--- 936,949 ----
  789. X  #ifdef TOS
  790. X          Dsetdrv(drive - 'A');
  791. X  #else
  792. X+ #ifdef OS2
  793. X+         DosSelectDisk((USHORT)(drive - 'A' + 1));
  794. X+ #else
  795. X          inregs.h.ah = SELECTDISK;
  796. X          inregs.h.dl = drive - 'A';
  797. X          intdos(&inregs, &inregs);
  798. X  #endif
  799. X+ #endif
  800. X      }
  801. X      return;
  802. X  }
  803. X***************
  804. X*** 829,834 ****
  805. X--- 965,971 ----
  806. X   * Thanks to Mark Zbikowski (markz@microsoft.UUCP).
  807. X   */
  808. X  
  809. X+ #ifndef OS2
  810. X  #define DEVICE        0x80
  811. X  #define RAW        0x20
  812. X  #define IOCTL        0x44
  813. X***************
  814. X*** 836,849 ****
  815. X--- 973,999 ----
  816. X  #define STDOUT        fileno(stdout)
  817. X  #define GETBITS        0
  818. X  #define SETBITS        1
  819. X+ #endif
  820. X  
  821. X  static unsigned    int old_stdin, old_stdout;
  822. X  
  823. X  void
  824. X  disable_ctrlP() {
  825. X+ #ifdef OS2
  826. X+     KBDINFO KbdInfo;
  827. X+     HKBD KbdHandle = 0;
  828. X+ #endif
  829. X+ 
  830. X  #ifdef DGK
  831. X      if (!flags.rawio) return;
  832. X  #endif
  833. X+ #ifdef OS2
  834. X+     KbdInfo.cb = 10;
  835. X+     KbdGetStatus(&KbdInfo,KbdHandle);
  836. X+     KbdInfo.fsMask &= 0xFFF7; /* ASCII off */
  837. X+     KbdInfo.fsMask |= 0x0004; /* BINARY on */
  838. X+     KbdSetStatus(&KbdInfo,KbdHandle);
  839. X+ #else
  840. X      old_stdin = ioctl(STDIN, GETBITS, 0);
  841. X      old_stdout = ioctl(STDOUT, GETBITS, 0);
  842. X      if (old_stdin & DEVICE)
  843. X***************
  844. X*** 850,870 ****
  845. X--- 1000,1035 ----
  846. X          ioctl(STDIN, SETBITS, old_stdin | RAW);
  847. X      if (old_stdout & DEVICE)
  848. X          ioctl(STDOUT, SETBITS, old_stdout | RAW);
  849. X+ #endif /* OS2 */
  850. X      return;
  851. X  }
  852. X  
  853. X  void
  854. X  enable_ctrlP() {
  855. X+ #ifdef OS2
  856. X+     KBDINFO KbdInfo;
  857. X+     HKBD KbdHandle = 0;
  858. X+ #endif
  859. X+ 
  860. X  #ifdef DGK
  861. X      if (!flags.rawio) return;
  862. X  #endif
  863. X+ #ifdef OS2
  864. X+     KbdInfo.cb = 10;
  865. X+     KbdGetStatus(&KbdInfo,KbdHandle);
  866. X+     KbdInfo.fsMask &= 0xFFFB; /* BINARY off */
  867. X+     KbdInfo.fsMask |= 0x0008; /* ASCII on */
  868. X+     KbdSetStatus(&KbdInfo,KbdHandle);
  869. X+ #else
  870. X      if (old_stdin)
  871. X          (void) ioctl(STDIN, SETBITS, old_stdin);
  872. X      if (old_stdout)
  873. X          (void) ioctl(STDOUT, SETBITS, old_stdout);
  874. X+ #endif
  875. X      return;
  876. X  }
  877. X  
  878. X+ #ifndef OS2
  879. X  static unsigned int
  880. X  ioctl(handle, mode, setvalue)
  881. X  int handle, mode;
  882. X***************
  883. X*** 880,885 ****
  884. X--- 1045,1051 ----
  885. X      intdos(®s, ®s);
  886. X      return (regs.x.dx);
  887. X  }
  888. X+ #endif /* OS2 */
  889. X  #endif /* TOS */
  890. X  
  891. X  #ifdef DGK
  892. X***************
  893. X*** 918,923 ****
  894. X--- 1084,1096 ----
  895. X                  pp++;
  896. X          }
  897. X      }
  898. X+ #ifdef OS2_CODEVIEW /* one more try for hackdir */
  899. X+     Strcpy(buf,hackdir);
  900. X+     append_slash(buf);
  901. X+     Strcat(buf,name);
  902. X+     if(fp = fopen(buf,mode))
  903. X+         return fp;
  904. X+ #endif
  905. X      return (FILE *)0;
  906. X  }
  907. X  #endif /* DGK */
  908. X***************
  909. X*** 950,955 ****
  910. X--- 1123,1179 ----
  911. X      exit(code);
  912. X      return;
  913. X  }
  914. X+ 
  915. X+ # ifdef DGK        /* for flags.IBMBIOS */
  916. X+ void
  917. X+ get_scr_size()
  918. X+ {
  919. X+ #  ifdef OS2
  920. X+     VIOMODEINFO ModeInfo;
  921. X+     HVIO VideoHandle = 0;
  922. X+ 
  923. X+     ModeInfo.cb = sizeof(ModeInfo);
  924. X+ 
  925. X+     VioGetMode(&ModeInfo,VideoHandle);
  926. X+ 
  927. X+     CO = ModeInfo.col;
  928. X+     LI = ModeInfo.row;
  929. X+ #  else
  930. X+     union REGS regs;
  931. X+ 
  932. X+     if (!flags.IBMBIOS) {        /* assume standard screen size */
  933. X+         CO = 80;
  934. X+         LI = 24;
  935. X+         return;
  936. X+     }
  937. X+ 
  938. X+     regs.x.ax = 0x1130;        /* Func AH = 11h, Subfunc AL = 30h */
  939. X+     regs.x.bx = 0;            /* current ROM BIOS font */
  940. X+     regs.h.dl = 24;            /* default row count */
  941. X+                     /* in case no EGA/MCGA/VGA */
  942. X+     int86(0x10, ®s, ®s);    /* Get Font Information */
  943. X+ 
  944. X+     /* MDA/CGA/PCjr ignore INT 10h, Function 11h, but since we
  945. X+      * cleverly loaded up DL with the default, everything's fine.
  946. X+      *
  947. X+      * Otherwise, DL now contains rows - 1.  Also, CX contains the
  948. X+      * points (bytes per character) and ES:BP points to the font
  949. X+      * table.  -3.
  950. X+      */
  951. X+ 
  952. X+     regs.h.ah = 0x0f;
  953. X+     int86(0x10, ®s, ®s);    /* Get Video Mode */
  954. X+ 
  955. X+     /* This goes back all the way to the original PC.  Completely
  956. X+      * safe.  AH contains # of columns, AL contains display mode,
  957. X+      * and BH contains the active display page.
  958. X+      */
  959. X+ 
  960. X+     LI = regs.h.dl + 1;
  961. X+     CO = regs.h.ah;
  962. X+ #  endif
  963. X+ }
  964. X+ # endif
  965. X  #endif /* MSDOS */
  966. X  
  967. X  #ifdef TOS
  968. X*** others/Old/pcmain.c    Wed Aug 16 12:08:48 1989
  969. X--- others/pcmain.c    Tue Aug 15 21:13:42 1989
  970. X***************
  971. X*** 1,7 ****
  972. X  /*    SCCS Id: @(#)pcmain.c    3.0    88/11/23
  973. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  974. X  /* NetHack may be freely redistributed.  See license for details. */
  975. X! /* main.c - (PC, TOS and AMIGA) version */
  976. X  
  977. X  #include "hack.h"
  978. X  #ifndef NO_SIGNAL
  979. X--- 1,7 ----
  980. X  /*    SCCS Id: @(#)pcmain.c    3.0    88/11/23
  981. X  /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
  982. X  /* NetHack may be freely redistributed.  See license for details. */
  983. X! /* main.c - PC, ST, and Amiga NetHack */
  984. X  
  985. X  #include "hack.h"
  986. X  #ifndef NO_SIGNAL
  987. X***************
  988. X*** 15,20 ****
  989. X--- 15,21 ----
  990. X  
  991. X  int (*afternmv)(), (*occupation)();
  992. X  static void moveloop();    /* a helper function for MSC optimizer */
  993. X+ static void newgame();
  994. X  
  995. X  #if defined(DGK) && !defined(OLD_TOS)
  996. X  struct finfo    zfinfo = ZFINFO;
  997. X***************
  998. X*** 74,80 ****
  999. X  # endif
  1000. X      if (getcwd(orgdir, sizeof orgdir) == NULL) {
  1001. X          xputs("NetHack: current directory path too long\n");
  1002. X!         _exit(1);
  1003. X      }
  1004. X      funcp = exit;    /* Kludge to get around LINT_ARGS of signal.
  1005. X               * This will produce a compiler warning, but that's OK.
  1006. X--- 75,81 ----
  1007. X  # endif
  1008. X      if (getcwd(orgdir, sizeof orgdir) == NULL) {
  1009. X          xputs("NetHack: current directory path too long\n");
  1010. X!         return 1;
  1011. X      }
  1012. X      funcp = exit;    /* Kludge to get around LINT_ARGS of signal.
  1013. X               * This will produce a compiler warning, but that's OK.
  1014. X***************
  1015. X*** 85,91 ****
  1016. X  #endif /* AMIGA */
  1017. X  
  1018. X      /* Set the default values of the presentation characters */
  1019. X!     memcpy((genericptr_t) &showsyms, (genericptr_t) &defsyms, sizeof(struct symbols));
  1020. X      if ((dir = getenv("HACKDIR")) != NULL) {
  1021. X          Strcpy(hackdir, dir);
  1022. X  #ifdef CHDIR
  1023. X--- 86,93 ----
  1024. X  #endif /* AMIGA */
  1025. X  
  1026. X      /* Set the default values of the presentation characters */
  1027. X!     (void) memcpy((genericptr_t) &showsyms,
  1028. X!         (genericptr_t) &defsyms, sizeof(struct symbols));
  1029. X      if ((dir = getenv("HACKDIR")) != NULL) {
  1030. X          Strcpy(hackdir, dir);
  1031. X  #ifdef CHDIR
  1032. X***************
  1033. X*** 101,110 ****
  1034. X      initoptions();
  1035. X      if (!hackdir[0])
  1036. X          Strcpy(hackdir, orgdir);
  1037. X  #ifdef TOS
  1038. X!     if(argc > 1 && !strncmp(argv[1], "-D", 2)) {
  1039. X  #else
  1040. X!     if(argc > 1 && !strncmp(argv[1], "-d", 2)) {
  1041. X  #endif
  1042. X          argc--;
  1043. X          argv++;
  1044. X--- 103,114 ----
  1045. X      initoptions();
  1046. X      if (!hackdir[0])
  1047. X          Strcpy(hackdir, orgdir);
  1048. X+ 
  1049. X+     if(argc > 1) {
  1050. X  #ifdef TOS
  1051. X!         if(!strncmp(argv[1], "-D", 2)) {
  1052. X  #else
  1053. X!         if(!strncmp(argv[1], "-d", 2)) {
  1054. X  #endif
  1055. X          argc--;
  1056. X          argv++;
  1057. X***************
  1058. X*** 115,124 ****
  1059. X              argv++;
  1060. X              dir = argv[0];
  1061. X          }
  1062. X!         if(!*dir)
  1063. X!             error("Flag -d must be followed by a directory name.");
  1064. X          Strcpy(hackdir, dir);
  1065. X!     }
  1066. X  
  1067. X      /*
  1068. X       * Now we know the directory containing 'record' and
  1069. X--- 119,131 ----
  1070. X              argv++;
  1071. X              dir = argv[0];
  1072. X          }
  1073. X!         if(!*dir) {
  1074. X!             /* can't use error() until termcap read in */
  1075. X!             xputs("Flag -d must be followed by a directory name.\n");
  1076. X!             return 1;
  1077. X!         }
  1078. X          Strcpy(hackdir, dir);
  1079. X!         }
  1080. X  
  1081. X      /*
  1082. X       * Now we know the directory containing 'record' and
  1083. X***************
  1084. X*** 125,133 ****
  1085. X       * may do a prscore().
  1086. X       */
  1087. X  #ifdef TOS
  1088. X!     if(argc > 1 && !strncmp(argv[1], "-S", 2)) {
  1089. X  #else
  1090. X!     if(argc > 1 && !strncmp(argv[1], "-s", 2)) {
  1091. X  #endif
  1092. X  #ifdef CHDIR
  1093. X          chdirx(hackdir,0);
  1094. X--- 132,140 ----
  1095. X       * may do a prscore().
  1096. X       */
  1097. X  #ifdef TOS
  1098. X!         else if (!strncmp(argv[1], "-S", 2)) {
  1099. X  #else
  1100. X!         else if (!strncmp(argv[1], "-s", 2)) {
  1101. X  #endif
  1102. X  #ifdef CHDIR
  1103. X          chdirx(hackdir,0);
  1104. X***************
  1105. X*** 134,139 ****
  1106. X--- 141,147 ----
  1107. X  #endif
  1108. X          prscore(argc, argv);
  1109. X          exit(0);
  1110. X+         }
  1111. X      }
  1112. X  
  1113. X  #ifndef AMIGA
  1114. X***************
  1115. X*** 149,162 ****
  1116. X      cls();
  1117. X      u.uhp = 1;    /* prevent RIP on early quits */
  1118. X      u.ux = FAR;    /* prevent nscr() */
  1119. X  #ifndef OLD_TOS
  1120. X      /*
  1121. X       * We cannot do chdir earlier, otherwise gethdate will fail.
  1122. X       */
  1123. X! #ifdef CHDIR
  1124. X      chdirx(hackdir,1);
  1125. X! #endif
  1126. X  #endif
  1127. X      /*
  1128. X       * Process options.
  1129. X       */
  1130. X--- 157,178 ----
  1131. X      cls();
  1132. X      u.uhp = 1;    /* prevent RIP on early quits */
  1133. X      u.ux = FAR;    /* prevent nscr() */
  1134. X+ 
  1135. X+     /*
  1136. X+      * Find the creation date of this game,
  1137. X+      * so as to avoid restoring outdated savefiles.
  1138. X+      */
  1139. X+     /* gethdate(hname); */
  1140. X+ 
  1141. X  #ifndef OLD_TOS
  1142. X      /*
  1143. X       * We cannot do chdir earlier, otherwise gethdate will fail.
  1144. X       */
  1145. X! # ifdef CHDIR
  1146. X      chdirx(hackdir,1);
  1147. X! # endif
  1148. X  #endif
  1149. X+ 
  1150. X      /*
  1151. X       * Process options.
  1152. X       */
  1153. X***************
  1154. X*** 165,173 ****
  1155. X          argc--;
  1156. X          switch(argv[0][1]){
  1157. X  #if defined(WIZARD) || defined(EXPLORE_MODE)
  1158. X! #ifndef TOS
  1159. X          case 'D':
  1160. X! #endif    /* TOS */
  1161. X          case 'X':
  1162. X  # ifdef WIZARD
  1163. X              /* Must have "name" set correctly by NETHACK.CNF,
  1164. X--- 181,189 ----
  1165. X          argc--;
  1166. X          switch(argv[0][1]){
  1167. X  #if defined(WIZARD) || defined(EXPLORE_MODE)
  1168. X! # ifndef TOS
  1169. X          case 'D':
  1170. X! # endif
  1171. X          case 'X':
  1172. X  # ifdef WIZARD
  1173. X              /* Must have "name" set correctly by NETHACK.CNF,
  1174. X***************
  1175. X*** 186,195 ****
  1176. X--- 202,217 ----
  1177. X  #endif
  1178. X  #ifdef NEWS
  1179. X          case 'N':
  1180. X+ # ifndef TOS
  1181. X+         case 'n':
  1182. X+ # endif
  1183. X              flags.nonews = TRUE;
  1184. X              break;
  1185. X  #endif
  1186. X          case 'U':
  1187. X+ #ifndef TOS
  1188. X+         case 'u':
  1189. X+ #endif
  1190. X              if(argv[0][2])
  1191. X                (void) strncpy(plname, argv[0]+2, sizeof(plname)-1);
  1192. X              else if(argc > 1) {
  1193. X***************
  1194. X*** 202,217 ****
  1195. X  #ifdef DGK
  1196. X          /* Person does not want to use a ram disk
  1197. X           */
  1198. X          case 'R':
  1199. X              ramdisk = FALSE;
  1200. X              break;
  1201. X  #endif
  1202. X          case 'C':   /* character role is next character */
  1203. X!             /* allow -T for Tourist, etc. */
  1204. X              (void) strncpy(pl_character, argv[0]+2,
  1205. X                  sizeof(pl_character)-1);
  1206. X          default:
  1207. X              Printf("Unknown option: %s\n", *argv);
  1208. X          }
  1209. X      }
  1210. X  
  1211. X--- 224,250 ----
  1212. X  #ifdef DGK
  1213. X          /* Person does not want to use a ram disk
  1214. X           */
  1215. X+ # ifdef TOS
  1216. X          case 'R':
  1217. X+ # else
  1218. X+         case 'r':
  1219. X+ # endif
  1220. X              ramdisk = FALSE;
  1221. X              break;
  1222. X  #endif
  1223. X          case 'C':   /* character role is next character */
  1224. X!             /* allow -CT for Tourist, etc. */
  1225. X              (void) strncpy(pl_character, argv[0]+2,
  1226. X                  sizeof(pl_character)-1);
  1227. X+             break;
  1228. X          default:
  1229. X+ #ifndef TOS
  1230. X+             /* allow -T for Tourist, etc. */
  1231. X+             (void) strncpy(pl_character, argv[0]+1,
  1232. X+                 sizeof(pl_character)-1);
  1233. X+ #else
  1234. X              Printf("Unknown option: %s\n", *argv);
  1235. X+ #endif
  1236. X          }
  1237. X      }
  1238. X  
  1239. X***************
  1240. X*** 274,281 ****
  1241. X          /* get shopkeeper set properly if restore is in shop */
  1242. X          (void) inshop();
  1243. X  #ifdef EXPLORE_MODE
  1244. X!         if (discover) {
  1245. X              You("are in non-scoring discovery mode.");
  1246. X              pline("Do you want to keep the save file? ");
  1247. X              if(yn() == 'n')
  1248. X                  (void) unlink(SAVEF);
  1249. X--- 307,317 ----
  1250. X          /* get shopkeeper set properly if restore is in shop */
  1251. X          (void) inshop();
  1252. X  #ifdef EXPLORE_MODE
  1253. X!         if (discover)
  1254. X              You("are in non-scoring discovery mode.");
  1255. X+ #endif
  1256. X+ #if defined(EXPLORE_MODE) || defined(WIZARD)
  1257. X+         if (discover || wizard) {
  1258. X              pline("Do you want to keep the save file? ");
  1259. X              if(yn() == 'n')
  1260. X                  (void) unlink(SAVEF);
  1261. X***************
  1262. X*** 284,327 ****
  1263. X          flags.move = 0;
  1264. X      } else {
  1265. X  not_recovered:
  1266. X! #ifdef DGK
  1267. X!         gameDiskPrompt();
  1268. X! #endif
  1269. X!         fobj = fcobj = invent = 0;
  1270. X!         fmon = fallen_down = 0;
  1271. X!         ftrap = 0;
  1272. X!         fgold = 0;
  1273. X!         flags.ident = 1;
  1274. X!         init_objects();
  1275. X!         u_init();
  1276. X! #ifndef NO_SIGNAL
  1277. X!         (void) signal(SIGINT, (SIG_RET_TYPE) done1);
  1278. X! #endif
  1279. X!         mklev();
  1280. X!         u.ux = xupstair;
  1281. X!         u.uy = yupstair;
  1282. X!         (void) inshop();
  1283. X!         setsee();
  1284. X!         flags.botlx = 1;
  1285. X!         /* Fix bug with dog not being made because a monster
  1286. X!          * was on the level 1 staircase
  1287. X!          */
  1288. X!         if(levl[u.ux][u.uy].mmask) mnexto(m_at(u.ux, u.uy));
  1289. X!         (void) makedog();
  1290. X!         seemons();
  1291. X! #ifdef NEWS
  1292. X!         if(flags.nonews || !readnews())
  1293. X!             /* after reading news we did docrt() already */
  1294. X! #endif
  1295. X!             docrt();
  1296. X! 
  1297. X          /* give welcome message before pickup messages */
  1298. X          pline("Hello %s, welcome to NetHack!", plname);
  1299. X          set_wear();
  1300. X          pickup(1);
  1301. X          read_engr_at(u.ux,u.uy);
  1302. X-         flags.move = 0;
  1303. X      }
  1304. X      flags.moonphase = phase_of_the_moon();
  1305. X      if(flags.moonphase == FULL_MOON) {
  1306. X          You("are lucky!  Full moon tonight.");
  1307. X--- 320,338 ----
  1308. X          flags.move = 0;
  1309. X      } else {
  1310. X  not_recovered:
  1311. X!         newgame();
  1312. X          /* give welcome message before pickup messages */
  1313. X          pline("Hello %s, welcome to NetHack!", plname);
  1314. X+ #ifdef EXPLORE_MODE
  1315. X+         if (discover)
  1316. X+             You("are in non-scoring discovery mode.");
  1317. X+ #endif
  1318. X+         flags.move = 0;
  1319. X          set_wear();
  1320. X          pickup(1);
  1321. X          read_engr_at(u.ux,u.uy);
  1322. X      }
  1323. X+ 
  1324. X      flags.moonphase = phase_of_the_moon();
  1325. X      if(flags.moonphase == FULL_MOON) {
  1326. X          You("are lucky!  Full moon tonight.");
  1327. X***************
  1328. X*** 334,339 ****
  1329. X--- 345,353 ----
  1330. X  #ifndef NO_SIGNAL
  1331. X      (void) signal(SIGINT, SIG_IGN);
  1332. X  #endif
  1333. X+ #ifdef OS2
  1334. X+     gettty(); /* somehow ctrl-P gets turned back on during startup ... */
  1335. X+ #endif
  1336. X      /* Help for Microsoft optimizer.  Otherwise main is too large -dgk*/
  1337. X      moveloop();
  1338. X      return 0;
  1339. X***************
  1340. X*** 376,382 ****
  1341. X  #endif
  1342. X                  if(u.uhp < 1) {
  1343. X                  You("die...");
  1344. X!                 done("died");
  1345. X                  }
  1346. X  #ifdef POLYSELF
  1347. X              if (u.mtimedone) {
  1348. X--- 390,396 ----
  1349. X  #endif
  1350. X                  if(u.uhp < 1) {
  1351. X                  You("die...");
  1352. X!                 done(DIED);
  1353. X                  }
  1354. X  #ifdef POLYSELF
  1355. X              if (u.mtimedone) {
  1356. X***************
  1357. X*** 590,601 ****
  1358. X  #else
  1359. X          dir = ".";
  1360. X  #endif
  1361. X!         if((fd = open(RECORD, 2)) < 0) {
  1362. X  #ifdef DGK
  1363. X          char tmp[PATHLEN];
  1364. X  
  1365. X          Strcpy(tmp, dir);
  1366. X          append_slash(tmp);
  1367. X          msmsg("Warning: cannot write %s%s\n", tmp, RECORD);
  1368. X          getreturn("to continue");
  1369. X  #else
  1370. X--- 604,627 ----
  1371. X  #else
  1372. X          dir = ".";
  1373. X  #endif
  1374. X! #ifdef OS2_CODEVIEW  /* explicit path on opening for OS/2 */
  1375. X!         {
  1376. X!         char tmp[PATHLEN];
  1377. X! 
  1378. X!         Strcpy(tmp, dir);
  1379. X!         append_slash(tmp);
  1380. X!         Strcat(tmp, RECORD);
  1381. X!         if((fd = open(tmp, 2)) < 0) {
  1382. X! #else
  1383. X!         if((fd = open(RECORD, 2)) < 0) {
  1384. X! #endif
  1385. X  #ifdef DGK
  1386. X+ #ifndef OS2_CODEVIEW
  1387. X          char tmp[PATHLEN];
  1388. X  
  1389. X          Strcpy(tmp, dir);
  1390. X          append_slash(tmp);
  1391. X+ #endif
  1392. X          msmsg("Warning: cannot write %s%s\n", tmp, RECORD);
  1393. X          getreturn("to continue");
  1394. X  #else
  1395. X***************
  1396. X*** 604,609 ****
  1397. X--- 630,638 ----
  1398. X  #endif
  1399. X          } else
  1400. X          (void) close(fd);
  1401. X+ #ifdef OS2_CODEVIEW
  1402. X+         }
  1403. X+ #endif
  1404. X      }
  1405. X  }
  1406. X  #endif /* CHDIR /**/
  1407. X***************
  1408. X*** 619,622 ****
  1409. X--- 648,695 ----
  1410. X          pushch(0);
  1411. X  #endif
  1412. X      }
  1413. X+ }
  1414. X+ 
  1415. X+ static void
  1416. X+ newgame() {
  1417. X+ #ifdef DGK
  1418. X+     gameDiskPrompt();
  1419. X+ #endif
  1420. X+ 
  1421. X+     fobj = fcobj = invent = 0;
  1422. X+     fmon = fallen_down = 0;
  1423. X+     ftrap = 0;
  1424. X+     fgold = 0;
  1425. X+     flags.ident = 1;
  1426. X+ 
  1427. X+     init_objects();
  1428. X+     u_init();
  1429. X+ 
  1430. X+ #ifndef NO_SIGNAL
  1431. X+     (void) signal(SIGINT, (SIG_RET_TYPE) done1);
  1432. X+ #endif
  1433. X+ 
  1434. X+     mklev();
  1435. X+     u.ux = xupstair;
  1436. X+     u.uy = yupstair;
  1437. X+     (void) inshop();
  1438. X+ 
  1439. X+     setsee();
  1440. X+     flags.botlx = 1;
  1441. X+ 
  1442. X+     /* Move the monster from under you or else
  1443. X+      * makedog() will fail when it calls makemon().
  1444. X+      *             - ucsfcgl!kneller
  1445. X+      */
  1446. X+     if(levl[u.ux][u.uy].mmask) mnexto(m_at(u.ux, u.uy));
  1447. X+ 
  1448. X+     (void) makedog();
  1449. X+     seemons();
  1450. X+ #ifdef NEWS
  1451. X+     if(flags.nonews || !readnews())
  1452. X+         /* after reading news we did docrt() already */
  1453. X+ #endif
  1454. X+         docrt();
  1455. X+ 
  1456. X+     return;
  1457. X  }
  1458. X*** /dev/null    Tue Aug 15 10:53:49 1989
  1459. X--- others/Makefile.os2    Tue Aug 15 20:51:02 1989
  1460. X***************
  1461. X*** 0 ****
  1462. X--- 1,320 ----
  1463. X+ #    SCCS Id: @(#)Makefile.os2    3.0    89/08/10
  1464. X+ #    PC NetHack 3.0 Makefile for Microsoft(tm) C 5.1 and OS/2
  1465. X+ #
  1466. X+ #    NDMAKE ver 4.3+ is required, MS-MAKE does *not* work
  1467. X+ #
  1468. X+ # Large memory model
  1469. X+ CC    = cl
  1470. X+ LINK    = link
  1471. X+ MODEL    = L
  1472. X+ 
  1473. X+ # Directories (makedefs hardcodes these, don't change them)
  1474. X+ INCL    = ..\include
  1475. X+ AUX    = ..\auxil
  1476. X+ SRC    = ..\src
  1477. X+ 
  1478. X+ # memory model, compile only, #define LINT_ARGS, disable optimization,
  1479. X+ # remove stack probes, 80286 instruction set, dedicated datasegment for
  1480. X+ # items >= 5 bytes, pack structures on 1 byte boundaries, generate code
  1481. X+ # for 8087 coprocessor, include file path
  1482. X+ CFLAGS    = /A$(MODEL) /c /DLINT_ARGS /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /I$(INCL)
  1483. X+ 
  1484. X+ # + prepare for CodeView symbolic debugger
  1485. X+ #CFLAGS    = /A$(MODEL) /c /DLINT_ARGS /Od /Gs /G2 /Gt5 /Zp1 /FPi87 /I$(INCL) /Zi
  1486. X+ 
  1487. X+ # don't ignore case in symbols, no default lib search, stack 4096 bytes
  1488. X+ # (actually a bit of overkill), allow max 1024 segments in program
  1489. X+ LFLAGS    = /noig /nod /stack:4096 /seg:1024
  1490. X+ 
  1491. X+ # + prepare for CodeView symbolic debugger
  1492. X+ #LFLAGS    = /noig /nod /stack:4096 /seg:1024 /CO
  1493. X+ 
  1494. X+ # real mode C libraries for 8087 coprocessor
  1495. X+ RLIBS    = $(MODEL)libc7r
  1496. X+ 
  1497. X+ # protected mode C libraries for 8087, OS/2 API entry points
  1498. X+ PLIBS    = $(MODEL)libc7p doscalls
  1499. X+ 
  1500. X+ # termcap routines
  1501. X+ TERMLIB= termlib.lib
  1502. X+ 
  1503. X+ # module definition file for OS/2
  1504. X+ OS2DEFS    = $(GAME).def
  1505. X+ 
  1506. X+ # target system
  1507. X+ TARG    = pc
  1508. X+ 
  1509. X+ .c.o:
  1510. X+     $(CC) $(CFLAGS) /Foo\$*.o $*.c
  1511. X+ 
  1512. X+ # Optional high-quality BSD random number generation routines (see pcconf.h).
  1513. X+ # Set to nothing if not used.
  1514. X+ RANDOM = o\random.o
  1515. X+ 
  1516. X+ # Termcap objs
  1517. 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
  1518. X+ 
  1519. X+ # For NDMAKE, to handle the .o suffix.
  1520. X+ .SUFFIXES: .exe .o .c .y .l
  1521. X+ 
  1522. X+ # The game name
  1523. X+ GAME= nethack
  1524. X+ 
  1525. X+ # The game directory
  1526. X+ GAMEDIR = \games\$(GAME)
  1527. X+ 
  1528. X+ # The game filename
  1529. X+ GAMEFILE = $(GAMEDIR)\$(GAME).exe
  1530. X+ 
  1531. X+ # object files for makedefs
  1532. X+ MAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o
  1533. X+ 
  1534. X+ # object files for special levels compiler
  1535. 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
  1536. X+ 
  1537. X+ # nothing below this line should have to be changed
  1538. X+ #
  1539. X+ # other things that have to be reconfigured are in config.h,
  1540. X+ # {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h
  1541. X+ 
  1542. X+ VOBJ =    o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o o\cmd.o \
  1543. X+     o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \
  1544. X+     o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \
  1545. X+     o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \
  1546. X+     o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \
  1547. X+     o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \
  1548. X+     o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \
  1549. X+     o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \
  1550. X+     o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \
  1551. X+     o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \
  1552. X+     o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \
  1553. X+     o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \
  1554. X+     o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \
  1555. X+     o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o
  1556. X+ HOBJ =    $(VOBJ) o\version.o
  1557. X+ 
  1558. X+ PCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
  1559. X+          $(INCL)\extern.h $(INCL)\def_os2.h 
  1560. X+ GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  1561. X+ CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  1562. X+ TRAP_H       = $(INCL)\trap.h
  1563. X+ PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  1564. X+ YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  1565. X+          $(INCL)\monst.h $(INCL)\youprop.h
  1566. X+ DECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  1567. X+          $(INCL)\onames.h $(INCL)\pm.h
  1568. X+ HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  1569. X+          $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
  1570. X+          $(INCL)\rm.h
  1571. X+ 
  1572. X+ # The main target
  1573. X+ $(GAMEDIR)\$(GAME).exe: o $(HOBJ) $(OS2DEFS) $(TERMLIB)
  1574. X+     $(LINK) $(HOBJ),$(GAMEDIR)\$(GAME),$(GAME),$(PLIBS) $(TERMLIB),$(OS2DEFS) $(LFLAGS) ;
  1575. X+ 
  1576. X+ # NDMAKE automatically generates LINK response files, so you can
  1577. X+ # uncomment the second line if you are using NDMAKE.
  1578. X+ 
  1579. X+ $(GAME): $(GAMEDIR)\$(GAME).exe
  1580. X+ $(GAME).exe: $(GAMEDIR)\$(GAME).exe
  1581. X+ 
  1582. X+ all:    o makedefs lev_comp $(GAME) auxil record
  1583. X+     @echo Done.
  1584. X+ 
  1585. X+ o:
  1586. X+     mkdir o
  1587. X+ 
  1588. X+ $(TERMLIB): $(TERMOBJS)
  1589. X+     lib $(TERMLIB) -+ $(TERMOBJS) ;
  1590. X+ 
  1591. X+ makedefs:    makedefs.exe
  1592. X+ makedefs.exe:    $(MAKEOBJS)
  1593. X+     $(LINK) $(MAKEOBJS),,,$(RLIBS) $(LFLAGS) ;
  1594. X+ 
  1595. X+ o\makedefs.o:  $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
  1596. X+ 
  1597. X+ lev_comp:  lev_comp.exe
  1598. X+ lev_comp.exe:  $(SPLEVOBJS)
  1599. X+     $(LINK) $(SPLEVOBJS),lev_comp,,$(RLIBS) $(LFLAGS) ;
  1600. X+ 
  1601. X+ o\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  1602. X+ o\lev_lex.o:  $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
  1603. X+ o\lev_main.o:  $(HACK_H) $(INCL)\sp_lev.h
  1604. X+ 
  1605. X+ # If you have yacc or lex programs, and make any changes,
  1606. X+ # add some .y.c and .l.c rules to your Make.ini.
  1607. X+ 
  1608. X+ lev_comp.c:  lev_comp.y
  1609. X+ lev_lex.c:  lev_comp.l
  1610. X+ 
  1611. X+ #
  1612. X+ #    The following include files depend on makedefs to be created.
  1613. X+ #
  1614. X+ #    date.h should be remade any time any of the source or include code
  1615. X+ #    is modified.
  1616. X+ #
  1617. X+ $(INCL)\date.h:     $(VOBJ) makedefs.exe
  1618. X+     .\makedefs -v
  1619. X+ 
  1620. X+ $(INCL)\trap.h:    makedefs.exe
  1621. X+     .\makedefs -t
  1622. X+ 
  1623. X+ $(INCL)\onames.h: makedefs.exe
  1624. X+     .\makedefs -o
  1625. X+ 
  1626. X+ $(INCL)\pm.h: makedefs.exe
  1627. X+     .\makedefs -p
  1628. X+ 
  1629. X+ data:    $(AUX)\data.base makedefs.exe
  1630. X+     .\makedefs -d
  1631. X+ 
  1632. X+ rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
  1633. X+     .\makedefs -r
  1634. X+ 
  1635. X+ #
  1636. X+ #    The following programs vary depending on what OS you are using.
  1637. X+ #
  1638. X+ o\main.o:   $(HACK_H) $(TARG)main.c
  1639. X+     $(CC) $(CFLAGS) /Foo\main.o $(TARG)main.c
  1640. X+ 
  1641. X+ o\tty.o:   $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
  1642. X+     $(CC) $(CFLAGS) /Foo\tty.o $(TARG)tty.c
  1643. X+ 
  1644. X+ o\unix.o:   $(HACK_H) $(TARG)unix.c
  1645. X+     $(CC) $(CFLAGS) /Foo\unix.o $(TARG)unix.c
  1646. X+ 
  1647. X+ #
  1648. X+ # Secondary targets
  1649. X+ #
  1650. X+ 
  1651. X+ auxil:    spec_levs
  1652. X+     xcopy $(AUX)\*. $(GAMEDIR)
  1653. X+ 
  1654. X+ spec_levs: $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
  1655. X+     lev_comp $(AUX)\castle.des
  1656. X+     lev_comp $(AUX)\endgame.des
  1657. X+     lev_comp $(AUX)\tower.des
  1658. X+     xcopy castle $(GAMEDIR)
  1659. X+     del castle
  1660. X+     xcopy endgame $(GAMEDIR)
  1661. X+     del endgame
  1662. X+     xcopy tower? $(GAMEDIR)
  1663. X+     del tower?
  1664. X+ 
  1665. X+ $(OS2DEFS):
  1666. X+     echo NAME $(GAME) WINDOWCOMPAT> $(OS2DEFS)
  1667. X+     echo DESCRIPTION 'NetHack 3.0'>> $(OS2DEFS)
  1668. X+     echo PROTMODE>> $(OS2DEFS)
  1669. X+     echo EXETYPE OS2>> $(OS2DEFS)
  1670. X+ 
  1671. X+ record: $(GAMEDIR)\record
  1672. X+ $(GAMEDIR)\record:
  1673. X+     echo foo> $(GAMEDIR)\record
  1674. X+ 
  1675. X+ clean:
  1676. X+     del o\*.obj
  1677. X+     rmdir o
  1678. X+ 
  1679. X+ spotless: clean
  1680. X+     del $(INCL)\date.h
  1681. X+     del $(INCL)\onames.h
  1682. X+     del $(INCL)\pm.h
  1683. X+     touch $(INCL)\date.h $(INCL)\onames.h $(INCL)\pm.h
  1684. X+     del makedefs.exe
  1685. X+     if exist lev_comp.exe del lev_comp.exe
  1686. X+ 
  1687. X+ #
  1688. X+ # Other dependencies
  1689. X+ #
  1690. X+ 
  1691. X+ # GO AHEAD, DELETE THIS LINE
  1692. X+ 
  1693. X+ o\alloc.o:  $(CONFIG_H)
  1694. X+ o\apply.o:  $(HACK_H) $(INCL)\edog.h
  1695. X+ o\artifact.o:  $(HACK_H) $(INCL)\artifact.h
  1696. X+ o\attrib.o:  $(HACK_H)
  1697. X+ o\bones.o:  $(HACK_H)
  1698. X+ o\cmd.o:  $(HACK_H) $(INCL)\func_tab.h
  1699. X+ o\dbridge.o: $(HACK_H)
  1700. X+ o\decl.o:  $(HACK_H)
  1701. X+ o\demon.o:  $(HACK_H)
  1702. X+ o\do.o:  $(HACK_H)
  1703. X+ o\do_name.o:  $(HACK_H)
  1704. X+ o\do_wear.o:  $(HACK_H)
  1705. X+ o\dog.o:  $(HACK_H) $(INCL)\edog.h
  1706. X+ o\dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  1707. X+ o\dokick.o:  $(HACK_H)
  1708. X+ o\dothrow.o:  $(HACK_H)
  1709. X+ o\eat.o:  $(HACK_H)
  1710. X+ o\end.o:  $(HACK_H) $(INCL)\eshk.h
  1711. X+ o\engrave.o:  $(HACK_H)
  1712. X+ o\exper.o:  $(HACK_H)
  1713. X+ o\extralev.o:  $(HACK_H)
  1714. X+ o\fountain.o:  $(HACK_H)
  1715. X+ o\getline.o:  $(HACK_H) $(INCL)\func_tab.h
  1716. X+ o\hack.o:  $(HACK_H)
  1717. X+ o\invent.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1718. X+ o\ioctl.o:  $(HACK_H)
  1719. X+ o\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  1720. X+ o\lock.o:  $(HACK_H)
  1721. X+ o\makemon.o:  $(HACK_H)
  1722. X+ o\mail.o:  $(HACK_H)
  1723. X+ o\mcastu.o:  $(HACK_H)
  1724. X+ o\mhitm.o:  $(HACK_H) $(INCL)\artifact.h
  1725. X+ o\mhitu.o:  $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  1726. X+ o\mklev.o:  $(HACK_H)
  1727. X+ o\mkmaze.o:  $(HACK_H)
  1728. X+ o\mkobj.o:  $(HACK_H)
  1729. X+ o\mkroom.o:  $(HACK_H)
  1730. X+ o\mon.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1731. X+ o\mondata.o:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  1732. X+ o\monmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  1733. X+ o\monst.o:  $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h
  1734. X+ o\msdos.o:  $(HACK_H)
  1735. X+ o\mthrowu.o:  $(HACK_H)
  1736. X+ o\music.o:  $(HACK_H)
  1737. X+ o\o_init.o:  $(HACK_H) $(INCL)\onames.h
  1738. X+ o\objects.o:  $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
  1739. X+ o\objnam.o:  $(HACK_H)
  1740. X+ o\options.o:  $(HACK_H)
  1741. X+ o\pager.o:  $(HACK_H)
  1742. X+ o\panic.o:  $(CONFIG_H)
  1743. X+ o\pickup.o:  $(HACK_H)
  1744. X+ o\polyself.o:  $(HACK_H)
  1745. X+ o\potion.o:  $(HACK_H)
  1746. X+ o\pray.o:  $(HACK_H)
  1747. X+ o\pri.o:  $(HACK_H)
  1748. X+ o\priest.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
  1749. X+ o\prisym.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1750. X+ o\random.o:
  1751. X+ o\read.o:  $(HACK_H)
  1752. X+ o\restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1753. X+ o\rip.o:  $(HACK_H)
  1754. X+ o\rnd.o:  $(HACK_H)
  1755. X+ o\rumors.o:  $(HACK_H)
  1756. X+ o\save.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  1757. X+ o\search.o:  $(HACK_H) $(INCL)\artifact.h
  1758. X+ o\shk.o:  $(HACK_H) $(INCL)\eshk.h
  1759. X+ o\shknam.o:  $(HACK_H) $(INCL)\eshk.h
  1760. X+ o\sit.o:  $(HACK_H)
  1761. X+ o\sounds.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  1762. X+ o\sp_lev.o:  $(HACK_H) $(INCL)\sp_lev.h
  1763. X+ o\spell.o:  $(HACK_H)
  1764. X+ o\steal.o:  $(HACK_H)
  1765. X+ o\termcap.o:  $(HACK_H)
  1766. X+ o\timeout.o:  $(HACK_H)
  1767. X+ o\topl.o:  $(HACK_H)
  1768. X+ o\topten.o:  $(HACK_H)
  1769. X+ o\track.o:  $(HACK_H)
  1770. X+ o\trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
  1771. X+ o\u_init.o:  $(HACK_H)
  1772. X+ o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
  1773. X+ o\vault.o:  $(HACK_H) $(INCL)\vault.h
  1774. X+ o\version.o:  $(HACK_H) $(INCL)\date.h
  1775. X+ o\weapon.o:  $(HACK_H)
  1776. X+ o\were.o:  $(HACK_H)
  1777. X+ o\wield.o:  $(HACK_H)
  1778. X+ o\wizard.o:  $(HACK_H)
  1779. X+ o\worm.o:  $(HACK_H) $(INCL)\wseg.h
  1780. X+ o\worn.o:  $(HACK_H)
  1781. X+ o\write.o:  $(HACK_H)
  1782. X+ o\zap.o:  $(HACK_H)
  1783. X*** /dev/null    Tue Aug 15 10:53:49 1989
  1784. X--- others/Makefile.msc    Tue Aug 15 20:51:09 1989
  1785. X***************
  1786. X*** 0 ****
  1787. X--- 1,322 ----
  1788. X+ #    SCCS Id: @(#)Makefile.msc    3.0    89/08/13
  1789. X+ #    PC NetHack 3.0 Makefile for Microsoft(tm) "C" 5.1 -- Paul Gyugyi
  1790. X+ #
  1791. X+ # Large memory model, register bug, remove stack probes:
  1792. X+ CC    = cl /c
  1793. X+ LINK    = link
  1794. X+ MODEL    = L
  1795. X+ 
  1796. X+ # Directories (makedefs hardcodes these, don't change them)
  1797. X+ INCL    = ..\include
  1798. X+ AUX    = ..\auxil
  1799. X+ SRC    = ..\src
  1800. X+ 
  1801. X+ # If you don't have a 286 or better, remove the /G2 in the line below.
  1802. X+ CFLAGS    = /A$(MODEL) /DLINT_ARGS /DDGK /Os /Oa /G2 /Gs /Gt28 /I$(INCL) /W0
  1803. X+ LFLAGS    = /noi /st:0x0aff /se:512
  1804. X+ TARG    = pc
  1805. X+ 
  1806. X+ .c.o:
  1807. X+     $(CC) $(CFLAGS) /Foo\$*.o $*.c 
  1808. X+ 
  1809. X+ # Optional high-quality BSD random number generation routines (see pcconf.h).
  1810. X+ # Set to nothing if not used.
  1811. X+ # RANDOM = o\random.o
  1812. X+ RANDOM =
  1813. X+ 
  1814. X+ # For NDMAKE, to handle the .o suffix.
  1815. X+ .SUFFIXES: .exe .o .c .y .l
  1816. X+ 
  1817. X+ # The game name
  1818. X+ GAME= nethack
  1819. X+ 
  1820. X+ # The game directory
  1821. X+ GAMEDIR = \games\$(GAME)
  1822. X+ 
  1823. X+ # The game filename
  1824. X+ GAMEFILE = $(GAMEDIR)\$(GAME).exe
  1825. X+ 
  1826. X+ # object files for makedefs
  1827. X+ MAKEOBJS = o\makedefs.o o\alloc.o o\monst.o o\objects.o o\panic.o
  1828. X+ 
  1829. X+ # object files for special levels compiler
  1830. 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
  1831. X+ 
  1832. X+ # nothing below this line should have to be changed
  1833. X+ #
  1834. X+ # other things that have to be reconfigured are in config.h,
  1835. X+ # {unixconf.h, pcconf.h, tosconf.h}, and possibly system.h
  1836. X+ 
  1837. X+ VOBJ =    o\alloc.o o\apply.o o\artifact.o o\attrib.o o\bones.o o\cmd.o \
  1838. X+     o\dbridge.o o\decl.o o\demon.o o\do.o o\do_name.o o\do_wear.o \
  1839. X+     o\dog.o o\dogmove.o o\dokick.o o\dothrow.o o\eat.o o\end.o o\engrave.o \
  1840. X+     o\exper.o o\extralev.o o\fountain.o o\getline.o o\hack.o o\invent.o \
  1841. X+     o\lock.o o\mail.o o\main.o o\makemon.o o\mcastu.o o\mhitm.o o\mhitu.o \
  1842. X+     o\mklev.o o\mkmaze.o o\mkobj.o o\mkroom.o o\mon.o o\mondata.o \
  1843. X+     o\msdos.o o\monmove.o o\monst.o o\mthrowu.o o\music.o o\o_init.o \
  1844. X+     o\objects.o o\objnam.o o\options.o o\pager.o o\pickup.o o\polyself.o \
  1845. X+     o\potion.o o\pray.o o\pri.o o\priest.o o\prisym.o $(RANDOM) o\read.o \
  1846. X+     o\restore.o o\rip.o o\rnd.o o\rumors.o o\save.o o\search.o o\shk.o \
  1847. X+     o\shknam.o o\sit.o o\sounds.o o\sp_lev.o o\spell.o o\steal.o \
  1848. X+     o\termcap.o o\timeout.o o\topl.o o\topten.o o\track.o o\trap.o \
  1849. X+     o\tty.o o\u_init.o o\uhitm.o o\unix.o o\vault.o o\weapon.o o\were.o \
  1850. X+     o\wield.o o\wizard.o o\worm.o o\worn.o o\write.o o\zap.o
  1851. X+ HOBJ =    $(VOBJ) o\version.o
  1852. X+ 
  1853. X+ PCCONF_H   = $(INCL)\$(TARG)conf.h $(INCL)\msdos.h $(INCL)\system.h \
  1854. X+          $(INCL)\extern.h 
  1855. X+ GLOBAL_H   = $(INCL)\global.h $(INCL)\coord.h $(PCCONF_H)
  1856. X+ CONFIG_H   = $(INCL)\config.h $(INCL)\tradstdc.h $(GLOBAL_H)
  1857. X+ TRAP_H       = $(INCL)\trap.h
  1858. X+ PERMONST_H = $(INCL)\permonst.h $(INCL)\monflag.h
  1859. X+ YOU_H       = $(INCL)\you.h $(INCL)\attrib.h $(PERMONST_H) $(INCL)\mondata.h \
  1860. X+          $(INCL)\monst.h $(INCL)\youprop.h
  1861. X+ DECL_H       = $(INCL)\decl.h $(INCL)\spell.h $(INCL)\obj.h $(YOU_H) \
  1862. X+          $(INCL)\onames.h $(INCL)\pm.h
  1863. X+ HACK_H       = $(CONFIG_H) $(DECL_H) $(INCL)\monsym.h $(INCL)\mkroom.h \
  1864. X+          $(INCL)\objclass.h $(INCL)\gold.h $(INCL)\trap.h $(INCL)\flag.h \
  1865. X+          $(INCL)\rm.h
  1866. X+ 
  1867. X+ # The main target
  1868. X+ # NDMAKE automatically generates LINK response files
  1869. X+ $(GAMEDIR)\$(GAME).exe: $(HOBJ) ltermlib.lib
  1870. X+     $(LINK) $(HOBJ),nethack,nethack,$(SRC)\ltermlib $(LFLAGS)
  1871. X+ 
  1872. X+ 
  1873. X+ $(GAME): $(GAMEDIR)\$(GAME).exe
  1874. X+ $(GAME).exe: $(GAMEDIR)\$(GAME).exe
  1875. X+ 
  1876. X+ 
  1877. X+ # make ltermlib.lib -- replaces makefile in termcap.arc
  1878. X+ # unarc termcap.arc into src directory, but be careful that the
  1879. X+ # makefile in the archive does not overwrite this one
  1880. X+ TL_LSOURCES =    tgetent.c tgetflag.c tgetnum.c tgetstr.c tgoto.c tputs.c \
  1881. X+         isdigit.c fgetlr.c
  1882. X+ 
  1883. X+ TL_LOBJECTS =    o\tgetent.o o\tgetflag.o o\tgetnum.o o\tgetstr.o \
  1884. X+                 o\tgoto.o o\tputs.o o\isdigit.o o\fgetlr.o
  1885. X+ 
  1886. X+ ltermlib.lib :    $(TL_LOBJECTS)
  1887. X+         lib ltermlib.lib -+ $(TL_LOBJECTS);
  1888. X+ 
  1889. X+ .c.o:
  1890. X+     $(CC) $(CFLAGS) /Fo.\o\$*.o $*.c
  1891. X+ 
  1892. X+ all:    o lev_comp.exe $(GAME) auxil.tag install.tag
  1893. X+     @echo Done.
  1894. X+ 
  1895. X+ o:
  1896. X+     if not exist .\o\*.* mkdir o
  1897. X+ 
  1898. X+ makedefs.exe:    $(MAKEOBJS)
  1899. X+     $(LINK) $(LFLAGS) $(MAKEOBJS);
  1900. X+ 
  1901. X+ o\makedefs.o:  $(INCL)\config.h $(INCL)\permonst.h $(INCL)\objclass.h
  1902. X+ 
  1903. X+ lev_comp.exe:  $(SPLEVOBJS)
  1904. X+     $(LINK) $(LFLAGS) $(SPLEVOBJS),lev_comp.exe;
  1905. X+ 
  1906. X+ o\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  1907. X+ o\lev_lex.o:  $(INCL)\lev_comp.h $(HACK_H) $(INCL)\sp_lev.h
  1908. X+ o\lev_main.o:  $(HACK_H) $(INCL)\sp_lev.h
  1909. X+ 
  1910. X+ # If you have yacc or lex programs, and make any changes,
  1911. X+ # add some .y.c and .l.c rules to your Make.ini.
  1912. X+ 
  1913. X+ lev_comp.c:  lev_comp.y
  1914. X+ lev_lex.c:  lev_comp.l
  1915. X+ 
  1916. X+ #
  1917. X+ #    The following include files depend on makedefs to be created.
  1918. X+ #
  1919. X+ #    date.h should be remade any time any of the source or include code
  1920. X+ #    is modified.
  1921. X+ #
  1922. X+ $(INCL)\date.h:     $(VOBJ) makedefs.exe
  1923. X+     .\makedefs -v
  1924. X+ 
  1925. X+ $(INCL)\trap.h:     makedefs.exe
  1926. X+     .\makedefs -t
  1927. X+ 
  1928. X+ $(INCL)\onames.h:  makedefs.exe
  1929. X+     .\makedefs -o
  1930. X+ 
  1931. X+ $(INCL)\pm.h:  makedefs.exe
  1932. X+     .\makedefs -p
  1933. X+ 
  1934. X+ data:    $(AUX)\data.base makedefs.exe
  1935. X+     .\makedefs -d
  1936. X+ 
  1937. X+ rumors: $(AUX)\rumors.tru $(AUX)\rumors.fal makedefs.exe
  1938. X+     .\makedefs -r
  1939. X+ 
  1940. X+ #
  1941. X+ #    The following programs vary depending on what OS you are using.
  1942. X+ #
  1943. X+ o\main.o:   $(HACK_H) $(TARG)main.c
  1944. X+     $(CC) $(CFLAGS)  /Fo.\o\main.o $(TARG)main.c
  1945. X+ 
  1946. X+ o\tty.o:   $(HACK_H) $(INCL)\func_tab.h $(TARG)tty.c
  1947. X+     $(CC) $(CFLAGS)  /Fo.\o\tty.o $(TARG)tty.c
  1948. X+ 
  1949. X+ o\unix.o:   $(HACK_H) $(TARG)unix.c
  1950. X+     $(CC) $(CFLAGS)  /Fo.\o\unix.o $(TARG)unix.c
  1951. X+ 
  1952. X+ #
  1953. X+ # Secondary targets
  1954. X+ #
  1955. X+ 
  1956. X+ auxil.tag:    spec_levs.tag data rumors termcap
  1957. X+ # the tag file is a dummy file to keep from redoing this every make
  1958. X+         echo special levels created > auxil.tag
  1959. X+ 
  1960. X+ install.tag:
  1961. X+ # always done
  1962. X+ # assume \games exists already, but make it just to make sure
  1963. X+         md \games
  1964. X+         md $(GAMEDIR)
  1965. X+         md $(GAMEDIR)\bones
  1966. X+         echo y>yes.txt
  1967. X+ #
  1968. X+ #       Watch Out!  The next command cleans out the game & bones dirs!
  1969. X+ #       This will delete any config file you have and overwrite it
  1970. X+ #       with the default.
  1971. X+ #       Since the game options may have changed since your last install, 
  1972. X+ #       you should say yes to clean the directory.
  1973. X+ #
  1974. X+         del $(GAMEDIR)\*.* < yes.txt
  1975. X+         del $(GAMEDIR)\bones\*.* < yes.txt
  1976. X+         copy termcap     $(GAMEDIR)\termcap
  1977. X+         copy castle      $(GAMEDIR)
  1978. X+     copy endgame     $(GAMEDIR)
  1979. X+     copy tower?      $(GAMEDIR)
  1980. X+         copy $(GAME).exe $(GAMEDIR)
  1981. X+     copy $(AUX)\*.   $(GAMEDIR)
  1982. X+         copy nethack.cnf $(GAMEDIR)
  1983. X+         echo record >    $(GAMEDIR)\record
  1984. X+         echo install done >install.tag
  1985. X+ 
  1986. X+ 
  1987. X+ spec_levs.tag: lev_comp.exe $(AUX)\castle.des $(AUX)\endgame.des $(AUX)\tower.des
  1988. X+     lev_comp $(AUX)\castle.des
  1989. X+     lev_comp $(AUX)\endgame.des
  1990. X+     lev_comp $(AUX)\tower.des
  1991. X+         echo spec_lev done >spec_levs.tag
  1992. X+ 
  1993. X+ clean:
  1994. X+     del o\*.o
  1995. X+     rmdir o
  1996. X+ 
  1997. X+ spotless: clean
  1998. X+     cd $(INCL)
  1999. X+     del date.h
  2000. X+     del onames.h
  2001. X+     del pm.h
  2002. X+     cd $(SRC)
  2003. X+     del makedefs.exe
  2004. X+     del lev_comp.exe
  2005. X+         del $(AUX)\data
  2006. X+         del $(AUX)\rumors
  2007. X+         del castle
  2008. X+         del endgame
  2009. X+         del tower?
  2010. X+         del *.tag
  2011. X+         del $(GAME).exe
  2012. X+         del $(GAME).map
  2013. X+ 
  2014. X+ #
  2015. X+ # Other dependencies
  2016. X+ #
  2017. X+ 
  2018. X+ # GO AHEAD, DELETE THIS LINE
  2019. X+ 
  2020. X+ o\alloc.o:  $(CONFIG_H)
  2021. X+ o\apply.o:  $(HACK_H) $(INCL)\edog.h
  2022. X+ o\artifact.o:  $(HACK_H) $(INCL)\artifact.h
  2023. X+ o\attrib.o:  $(HACK_H)
  2024. X+ o\bones.o:  $(HACK_H)
  2025. X+ o\cmd.o:  $(HACK_H) $(INCL)\func_tab.h
  2026. X+ o\dbridge.o: $(HACK_H)
  2027. X+ o\decl.o:  $(HACK_H)
  2028. X+ o\demon.o:  $(HACK_H)
  2029. X+ o\do.o:  $(HACK_H)
  2030. X+ o\do_name.o:  $(HACK_H)
  2031. X+ o\do_wear.o:  $(HACK_H)
  2032. X+ o\dog.o:  $(HACK_H) $(INCL)\edog.h
  2033. X+ o\dogmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\edog.h
  2034. X+ o\dokick.o:  $(HACK_H)
  2035. X+ o\dothrow.o:  $(HACK_H)
  2036. X+ o\eat.o:  $(HACK_H)
  2037. X+ o\end.o:  $(HACK_H) $(INCL)\eshk.h
  2038. X+ o\engrave.o:  $(HACK_H)
  2039. X+ o\exper.o:  $(HACK_H)
  2040. X+ o\extralev.o:  $(HACK_H)
  2041. X+ o\fountain.o:  $(HACK_H)
  2042. X+ o\getline.o:  $(HACK_H) $(INCL)\func_tab.h
  2043. X+ o\hack.o:  $(HACK_H)
  2044. X+ o\invent.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  2045. X+ o\ioctl.o:  $(HACK_H)
  2046. X+ o\lev_comp.o:  $(HACK_H) $(INCL)\sp_lev.h
  2047. X+ o\lock.o:  $(HACK_H)
  2048. X+ o\makemon.o:  $(HACK_H)
  2049. X+ o\mail.o:  $(HACK_H)
  2050. X+ o\mcastu.o:  $(HACK_H)
  2051. X+ o\mhitm.o:  $(HACK_H) $(INCL)\artifact.h
  2052. X+ o\mhitu.o:  $(HACK_H) $(INCL)\artifact.h $(INCL)\edog.h
  2053. X+ o\mklev.o:  $(HACK_H)
  2054. X+ o\mkmaze.o:  $(HACK_H)
  2055. X+ o\mkobj.o:  $(HACK_H)
  2056. X+ o\mkroom.o:  $(HACK_H)
  2057. X+ o\mon.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  2058. X+ o\mondata.o:  $(HACK_H) $(INCL)\eshk.h $(INCL)\epri.h
  2059. X+ o\monmove.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\artifact.h
  2060. X+ o\monst.o:  $(CONFIG_H) $(PERMONST_H) $(INCL)\eshk.h $(INCL)\vault.h $(INCL)\epri.h
  2061. X+ o\msdos.o:  $(HACK_H)
  2062. X+ o\mthrowu.o:  $(HACK_H)
  2063. X+ o\music.o:  $(HACK_H)
  2064. X+ o\o_init.o:  $(HACK_H) $(INCL)\onames.h
  2065. X+ o\objects.o:  $(CONFIG_H) $(INCL)\obj.h $(INCL)\objclass.h $(INCL)\prop.h
  2066. X+ o\objnam.o:  $(HACK_H)
  2067. X+ o\options.o:  $(HACK_H)
  2068. X+ o\pager.o:  $(HACK_H)
  2069. X+ o\panic.o:  $(CONFIG_H)
  2070. X+ o\pickup.o:  $(HACK_H)
  2071. X+ o\polyself.o:  $(HACK_H)
  2072. X+ o\potion.o:  $(HACK_H)
  2073. X+ o\pray.o:  $(HACK_H)
  2074. X+ o\pri.o:  $(HACK_H)
  2075. X+ o\priest.o:  $(HACK_H) $(INCL)\mfndpos.h $(INCL)\eshk.h $(INCL)\epri.h
  2076. X+ o\prisym.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  2077. X+ o\random.o:
  2078. X+ o\read.o:  $(HACK_H)
  2079. X+ o\restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  2080. X+ o\rip.o:  $(HACK_H)
  2081. X+ o\rnd.o:  $(HACK_H)
  2082. X+ o\rumors.o:  $(HACK_H)
  2083. X+ o\save.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
  2084. X+ o\search.o:  $(HACK_H) $(INCL)\artifact.h
  2085. X+ o\shk.o:  $(HACK_H) $(INCL)\eshk.h
  2086. X+ o\shknam.o:  $(HACK_H) $(INCL)\eshk.h
  2087. X+ o\sit.o:  $(HACK_H)
  2088. X+ o\sounds.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\eshk.h
  2089. X+ o\sp_lev.o:  $(HACK_H) $(INCL)\sp_lev.h
  2090. X+ o\spell.o:  $(HACK_H)
  2091. X+ o\steal.o:  $(HACK_H)
  2092. X+ o\termcap.o:  $(HACK_H)
  2093. X+ o\timeout.o:  $(HACK_H)
  2094. X+ o\topl.o:  $(HACK_H)
  2095. X+ o\topten.o:  $(HACK_H)
  2096. X+ o\track.o:  $(HACK_H)
  2097. X+ o\trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
  2098. X+ o\u_init.o:  $(HACK_H)
  2099. X+ o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
  2100. X+ o\vault.o:  $(HACK_H) $(INCL)\vault.h
  2101. X+ o\version.o:  $(HACK_H) $(INCL)\date.h
  2102. X+ o\weapon.o:  $(HACK_H)
  2103. X+ o\were.o:  $(HACK_H)
  2104. X+ o\wield.o:  $(HACK_H)
  2105. X+ o\wizard.o:  $(HACK_H)
  2106. X+ o\worm.o:  $(HACK_H) $(INCL)\wseg.h
  2107. X+ o\worn.o:  $(HACK_H)
  2108. X+ o\write.o:  $(HACK_H)
  2109. X+ o\zap.o:  $(HACK_H)
  2110. END_OF_FILE
  2111. echo shar: 2 control characters may be missing from \"'patch02b'\"
  2112. if test 52490 -ne `wc -c <'patch02b'`; then
  2113.     echo shar: \"'patch02b'\" unpacked with wrong size!
  2114. fi
  2115. # end of 'patch02b'
  2116. fi
  2117. echo shar: End of archive 2 \(of 7\).
  2118. cp /dev/null ark2isdone
  2119. MISSING=""
  2120. for I in 1 2 3 4 5 6 7 ; do
  2121.     if test ! -f ark${I}isdone ; then
  2122.     MISSING="${MISSING} ${I}"
  2123.     fi
  2124. done
  2125. if test "${MISSING}" = "" ; then
  2126.     echo You have unpacked all 7 archives.
  2127.     rm -f ark[1-9]isdone
  2128. else
  2129.     echo You still need to unpack the following archives:
  2130.     echo "        " ${MISSING}
  2131. fi
  2132. ##  End of shell archive.
  2133. exit 0
  2134.