home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / volume16 / nethck31 / patch3a < prev    next >
Encoding:
Internet Message Format  |  1993-07-23  |  59.1 KB

  1. Path: uunet!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v18i034:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch3a/18
  5. Date: 20 Jul 1993 22:24:42 GMT
  6. Organization: Tektronix, Inc, Redmond, OR, USA
  7. Lines: 1787
  8. Approved: billr@saab.CNA.TEK.COM
  9. Message-ID: <22hrba$9m2@ying.cna.tek.com>
  10. NNTP-Posting-Host: saab.cna.tek.com
  11. Xref: uunet comp.sources.games:1834
  12.  
  13. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  14. Posting-number: Volume 18, Issue 34
  15. Archive-name: nethack31/patch3a
  16. Patch-To: nethack31: Volume 16, Issue 1-116
  17. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  18.  
  19.     [Here's patch 3 to nethack3.1 in a series of 18 shar files. There
  20.      are both new files, replacement files and patch files. Run the
  21.      'patchit3.sh' script after unpacking everything to apply the patches.
  22.      You may then want to go in and cleanup things by removing the .orig
  23.      files.  -br]
  24.  
  25. [From the development team:]
  26. [[Mac windowing was further revised, and the Macintosh code was ported to
  27. Think C by Barton House.  Amiga windowing was also touched up.
  28.  
  29. The MSDOS black/gray/white intensities were changed again to avoid
  30. confusing displays on some PC hardware.  New video options were added
  31. to allow configuration around any other oddities.
  32.  
  33. Bugs were fixed.  In particular, an elusive bug dealing with horns of
  34. plenty was finally found, along with a couple VMS-specific ones such as
  35. fetching some bones files.  A number of messages were revised and updated
  36. as well.
  37.  
  38. Bones files and saved NetHack 3.1.2 games will not work with NetHack 3.1.3.
  39. Delete them, to avoid problems.]]
  40.  
  41.  
  42. #! /bin/sh
  43. # This is a shell archive.  Remove anything before this line, then unpack
  44. # it by saving it into a file and typing "sh file".  To overwrite existing
  45. # files, type "sh file -c".  You can also feed this as standard input via
  46. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  47. # will see the following message at the end:
  48. #        "End of archive 1 (of 18)."
  49. # Contents:  MANIFEST_P3 dat include patches03d sys sys/amiga sys/mac
  50. #   sys/msdos sys/share sys/unix
  51. # Wrapped by billr@saab on Tue Jul 20 14:57:18 1993
  52. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  53. if test -f 'MANIFEST_P3' -a "${1}" != "-c" ; then 
  54.   echo shar: Renaming existing file \"'MANIFEST_P3'\" to \"'MANIFEST_P3.orig'\"
  55.   mv -f 'MANIFEST_P3' 'MANIFEST_P3.orig'
  56. fi
  57. echo shar: Extracting \"'MANIFEST_P3'\" \(1416 characters\)
  58. sed "s/^X//" >'MANIFEST_P3' <<'END_OF_FILE'
  59. X   File Name        Archive #    Description
  60. X-----------------------------------------------------------
  61. X MANIFEST_P3                1    This shipping list
  62. X UPDATE3                    3    
  63. X dat                        1    
  64. X dat/quest.txt1             8    
  65. X dat/quest.txt2             9    
  66. X include                    1    
  67. X include/unixconf.h         6    
  68. X patches03a                 5    
  69. X patches03b                 3    
  70. X patches03c                 2    
  71. X patches03d                 1    
  72. X patches03e                 4    
  73. X patches03f.uu1            10    
  74. X patches03f.uu2            11    
  75. X patches03g                16    
  76. X patches03h                 6    
  77. X patchit3.sh                7    
  78. X sys                        1    
  79. X sys/amiga                  1    
  80. X sys/amiga/amifont8.uu      5    
  81. X sys/mac                    1    
  82. X sys/mac/DCproj.hqx        12    
  83. X sys/mac/Install.thk        8    
  84. X sys/mac/LCproj.hqx        14    
  85. X sys/mac/MDproj.hqx         9    
  86. X sys/mac/NHproj.hqx1       12    
  87. X sys/mac/NHproj.hqx2       13    
  88. X sys/mac/NHrsrc.hqx        17    
  89. X sys/mac/NetHack.r          6    
  90. X sys/mac/macmenu.c         15    
  91. X sys/msdos                  1    
  92. X sys/msdos/MakeGCC.src      7    
  93. X sys/msdos/msdos.hlp        4    
  94. X sys/share                  1    
  95. X sys/share/NOTE             2    
  96. X sys/share/dgn_comp.h       7    
  97. X sys/share/dgn_yacc.c      15    
  98. X sys/share/lev_comp.h       3    
  99. X sys/share/lev_yacc.c1      7    
  100. X sys/share/lev_yacc.c2     18    
  101. X sys/unix                   1    
  102. X sys/unix/snd86unx.shr     17    
  103. END_OF_FILE
  104. if test 1416 -ne `wc -c <'MANIFEST_P3'`; then
  105.     echo shar: \"'MANIFEST_P3'\" unpacked with wrong size!
  106. fi
  107. # end of 'MANIFEST_P3'
  108. if test ! -d 'dat' ; then
  109.     echo shar: Creating directory \"'dat'\"
  110.     mkdir 'dat'
  111. fi
  112. if test ! -d 'include' ; then
  113.     echo shar: Creating directory \"'include'\"
  114.     mkdir 'include'
  115. fi
  116. if test -f 'patches03d' -a "${1}" != "-c" ; then 
  117.   echo shar: Renaming existing file \"'patches03d'\" to \"'patches03d.orig'\"
  118.   mv -f 'patches03d' 'patches03d.orig'
  119. fi
  120. echo shar: Extracting \"'patches03d'\" \(53022 characters\)
  121. sed "s/^X//" >'patches03d' <<'END_OF_FILE'
  122. X*** /tmp/da20422    Mon Jul 12 17:29:30 1993
  123. X--- ./Files    Fri Jul  9 15:44:08 1993
  124. X***************
  125. X*** 94,101 ****
  126. X  
  127. X  sys/mac:
  128. X  (files for Macintosh versions)
  129. X! Install.mpw     MacHelp         NHDeflts        NHmake.hqx      NHrez.hqx
  130. X! NHrsrc.hqx      NHsound.hqx     News            dprintf.c       hack.h
  131. X  maccurs.c       macerrs.c       macfile.c       macmain.c       macmenu.c
  132. X  macsnd.c        mactopl.c       mactty.c        macunix.c       macwin.c
  133. X  mgetline.c      mhdump.c        mmodal.c        mrecover.c      mrecover.hqx
  134. X--- 94,102 ----
  135. X  
  136. X  sys/mac:
  137. X  (files for Macintosh versions)
  138. X! DCproj.hqx      Install.mpw     Install.thk     MacHelp         LCproj.hqx
  139. X! MDproj.hqx      NHDeflts        NHmake.hqx      NHproj.hqx      NHrsrc.hqx
  140. X! NHsound.hqx     NetHack.r       News            dprintf.c       hack.h
  141. X  maccurs.c       macerrs.c       macfile.c       macmain.c       macmenu.c
  142. X  macsnd.c        mactopl.c       mactty.c        macunix.c       macwin.c
  143. X  mgetline.c      mhdump.c        mmodal.c        mrecover.c      mrecover.hqx
  144. X***************
  145. X*** 105,112 ****
  146. X  (files for MSDOS version)
  147. X  Install.dos     MakeGCC.src     MakeGCC.utl     MakeMSC.src     MakeMSC.utl
  148. X  Makefile.dat    exesmurf.c      exesmurf.doc    maintovl.doc    msdos.c
  149. X! ovlmgr.asm      ovlmgr.doc      ovlmgr.uu       setup.bat       trampoli.c
  150. X! video.c
  151. X  (files for running MSDOS binary under Windows)
  152. X  nhico.uu        nhpif.uu
  153. X  
  154. X--- 106,113 ----
  155. X  (files for MSDOS version)
  156. X  Install.dos     MakeGCC.src     MakeGCC.utl     MakeMSC.src     MakeMSC.utl
  157. X  Makefile.dat    exesmurf.c      exesmurf.doc    maintovl.doc    msdos.c
  158. X! msdos.hlp       ovlmgr.asm      ovlmgr.doc      ovlmgr.uu       setup.bat
  159. X! trampoli.c      video.c
  160. X  (files for running MSDOS binary under Windows)
  161. X  nhico.uu        nhpif.uu
  162. X  
  163. X*** /tmp/da20638    Mon Jul 12 17:30:24 1993
  164. X--- dat/history    Mon Jul 12 13:14:37 1993
  165. X***************
  166. X*** 52,64 ****
  167. X  Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen
  168. X  Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC.
  169. X  
  170. X! Jon W{tte, with help from Ross Brown, Mike Engber, David Hairston, Michael
  171. X! Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke, Andy Swanson, and
  172. X! especially from Hao-yang Wang, developed NetHack 3.1 for the Macintosh.
  173. X  
  174. X  Timo Hakulinen ported NetHack 3.1 to OS/2.  Eric Smith ported NetHack 3.1
  175. X  to the Atari.  Pat Rankin, with help from Joshua Delahunty, is responsible
  176. X! for the VMS version of NetHack 3.1.
  177. X  
  178. X  Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11.
  179. X  
  180. X--- 52,66 ----
  181. X  Norm Meluch and Kevin Smolkowski, with help from Carl Schelin, Stephen
  182. X  Spackman, Steve VanDevender, and Paul Winner, ported NetHack 3.1 to the PC.
  183. X  
  184. X! Jon W{tte and Hao-yang Wang, with help from Ross Brown, Mike Engber, David
  185. X! Hairston, Michael Hamel, Jonathan Handler, Johnny Lee, Tim Lennan, Rob Menke,
  186. X! and Andy Swanson developed NetHack 3.1 for the Macintosh, porting it for
  187. X! MPW.  Building on their development, Barton House added a Think C port.  
  188. X  
  189. X  Timo Hakulinen ported NetHack 3.1 to OS/2.  Eric Smith ported NetHack 3.1
  190. X  to the Atari.  Pat Rankin, with help from Joshua Delahunty, is responsible
  191. X! for the VMS version of NetHack 3.1.  Michael Allison ported NetHack 3.1 to
  192. X! Windows NT.
  193. X  
  194. X  Dean Luick, with help from David Cohrs, developed NetHack 3.1 for X11.
  195. X  
  196. X***************
  197. X*** 70,94 ****
  198. X  in this, the list of Dungeoneers:
  199. X  
  200. X      Richard Addison           Eric Hendrickson       Mike Passaretti
  201. X!     Tom Almy                  Bruce Holloway         Pat Rankin
  202. X!     Ken Arromdee              Richard P. Hughey      Eric S. Raymond
  203. X!     Eric Backus               Ari Huttunen           Frederick Roeber
  204. X!     John S. Bien              John Kallen            John Rupley
  205. X!     Ralf Brown                Del Lamb               Carl Schelin
  206. X!     Ross Brown                Greg Laskin            Olaf Seibert
  207. X!     David Cohrs               Johnny Lee             Kevin Sitze
  208. X!     Jean-Christophe Collet    Tim Lennan             Eric R. Smith
  209. X!     Steve Creps               Merlyn LeRoy           Kevin Smolkowski
  210. X!     Kevin Darcy               Steve Linhart          Michael Sokolov
  211. X!     Matthew Day               Ken Lorber             Stephen Spackman
  212. X!     Joshua Delahunty          Dean Luick             Andy Swanson
  213. X!     Bill Dyer                 Benson I. Margulies    Kevin Sweet
  214. X!     Mike Engber               Pierre Martineau       Scott R. Turner
  215. X!     Jochen Erwied             Roland McGrath         Steve VanDevender
  216. X!     Mike Gallop               Norm Meluch            Janet Walz   
  217. X!     David Gentzel             Rob Menke              Hao-yang Wang
  218. X!     Mark Gooderum             Deron Meranda          Jon W{tte
  219. X!     David Hairston            Bruce Mewborne         Tom West
  220. X!     Timo Hakulinen            Izchak Miller          Paul Winner
  221. X!     Michael Hamel             Gil Neiger             Gregg Wonderly
  222. X      Jonathan Handler          Greg Olson
  223. X--- 72,97 ----
  224. X  in this, the list of Dungeoneers:
  225. X  
  226. X      Richard Addison           Eric Hendrickson       Mike Passaretti
  227. X!     Michael Allison           Bruce Holloway         Pat Rankin
  228. X!     Tom Almy                  Barton House           Eric S. Raymond
  229. X!     Ken Arromdee              Richard P. Hughey      Frederick Roeber
  230. X!     Eric Backus               Ari Huttunen           John Rupley
  231. X!     John S. Bien              John Kallen            Carl Schelin
  232. X!     Ralf Brown                Del Lamb               Olaf Seibert
  233. X!     Ross Brown                Greg Laskin            Kevin Sitze
  234. X!     David Cohrs               Johnny Lee             Eric R. Smith
  235. X!     Jean-Christophe Collet    Tim Lennan             Kevin Smolkowski
  236. X!     Steve Creps               Merlyn LeRoy           Michael Sokolov
  237. X!     Kevin Darcy               Steve Linhart          Stephen Spackman
  238. X!     Matthew Day               Ken Lorber             Andy Swanson
  239. X!     Joshua Delahunty          Dean Luick             Kevin Sweet
  240. X!     Bill Dyer                 Benson I. Margulies    Scott R. Turner
  241. X!     Mike Engber               Pierre Martineau       Steve VanDevender
  242. X!     Jochen Erwied             Roland McGrath         Janet Walz
  243. X!     Mike Gallop               Norm Meluch            Hao-yang Wang
  244. X!     David Gentzel             Rob Menke              Jon W{tte
  245. X!     Mark Gooderum             Deron Meranda          Tom West
  246. X!     David Hairston            Bruce Mewborne         Paul Winner
  247. X!     Timo Hakulinen            Izchak Miller          Gregg Wonderly
  248. X!     Michael Hamel             Gil Neiger
  249. X      Jonathan Handler          Greg Olson
  250. X*** /tmp/da20711    Mon Jul 12 17:30:48 1993
  251. X--- dat/rumors.fal    Fri Jul  2 13:19:26 1993
  252. X***************
  253. X*** 256,262 ****
  254. X  They say that minotaurs get lost outside of the mazes.
  255. X  They say that most trolls are born again.
  256. X  They say that naming your cat Garfield will make you more attractive.
  257. X- They say that no one has ever walked to hell.
  258. X  They say that no one knows everything about everything in the dungeon.
  259. X  They say that no one plays NetHack just for the fun of it.
  260. X  They say that no one really subscribes to rec.games.hack.
  261. X--- 256,261 ----
  262. X***************
  263. X*** 275,281 ****
  264. X  They say that queen bees get that way by eating royal jelly.
  265. X  They say that reading a scare monster scroll is the same as saying Elbereth.
  266. X  They say that real hackers always are controlled.
  267. X- They say that real hackers never burn in hell.
  268. X  They say that real hackers never sleep.
  269. X  They say that shopkeepers never carry more than 20 gold pieces, at night.
  270. X  They say that shopkeepers never sell blessed potions of invisibility.
  271. X--- 274,279 ----
  272. X***************
  273. X*** 326,332 ****
  274. X  They say that you should always store your tools in the cellar.
  275. X  They say that you should be careful while climbing the ladder to success.
  276. X  They say that you should call your armor `rustproof'.
  277. X- They say that you should keep your hands in your pockets around the gypsies.
  278. X  They say that you should name your dog Spuds to have a cool pet.
  279. X  They say that you should name your weapon after your first monster kill.
  280. X  They say that you should never introduce a rope golem to a succubus.
  281. X--- 324,329 ----
  282. X***************
  283. X*** 351,357 ****
  284. X  When in a maze follow the right wall and you will never get lost.
  285. X  When you have a key, you don't have to wait for the guard.
  286. X  Why are you wasting time reading fortunes?
  287. X- Why bother casting fireballs in hell?
  288. X  Wish for a master key and open the Magic Memory Vault!
  289. X  Wizard expects every monster to do its duty.
  290. X  Wow!  You could've had a potion of fruit juice!
  291. X--- 348,353 ----
  292. X*** /tmp/da20719    Mon Jul 12 17:30:50 1993
  293. X--- dat/rumors.tru    Wed Jul  7 16:01:08 1993
  294. X***************
  295. X*** 6,12 ****
  296. X  A nymph knows how to unlock chains.
  297. X  A potion of blindness lets you see invisible things.
  298. X  A priest can get the gods to listen easily.
  299. X- A priest can go to hell just like the rest of us.
  300. X  A priestess and a virgin you might be, but that unicorn won't care.
  301. X  A ring of conflict is a bad thing if there is a nurse in the room.
  302. X  A short sword is not as good as a long sword.
  303. X--- 6,11 ----
  304. X***************
  305. X*** 209,215 ****
  306. X  They say that grid bugs only exist in a strictly Cartesian sense.
  307. X  They say that hackers often feel jumpy about eating nymphs.
  308. X  They say that having polymorph control won't shock you.
  309. X- They say that hell hath no fury like Medusa scorned.
  310. X  They say that if it's hard getting your food down another bite could kill.
  311. X  They say that if you don't wear glasses why bother with carrots?
  312. X  They say that if you notice a loose board beneath you, don't step on it.
  313. X--- 208,213 ----
  314. X***************
  315. X*** 276,283 ****
  316. X  They say that the local shopkeeper frowns upon the rude tourist.
  317. X  They say that the only door to the vampire's tower is on its lowest level.
  318. X  They say that the only good djinni is a grateful djinni.
  319. X- They say that the road through hell is a one-way street.
  320. X- They say that the road to hell begins with Medusa.
  321. X  They say that the thing about genocide is that it works both ways.
  322. X  They say that the unicorn horn rule is if it ain't broke then don't fix it.
  323. X  They say that the view from a fog cloud is really very moving.
  324. X--- 274,279 ----
  325. X***************
  326. X*** 319,330 ****
  327. X  Vampires hate garlic.
  328. X  Vault guards never disturb their Lords.
  329. X  Visitors are requested not to apply genocide to shopkeepers.
  330. X- Warning:  people who eat red dragons can go to hell!
  331. X  Watch out, the Wizard might come back.
  332. X  Water traps have no effect on dragons.
  333. X  What is a cockatrice going to eat when it gets hungry?
  334. X- Where do you think all those demons come from?  From hell, of course.
  335. X- Where do you think hell is located?  It must be deep, deep down.
  336. X  Why do you suppose they call them MAGIC markers?
  337. X  Why would anybody in his sane mind engrave "Elbereth"?
  338. X  Wishing too much may bring you too little.
  339. X--- 315,323 ----
  340. X*** /tmp/da21642    Mon Jul 12 17:37:04 1993
  341. X--- sys/amiga/Install.ami    Mon Jul 12 14:14:17 1993
  342. X***************
  343. X*** 2,11 ****
  344. X        Using, Compiling, and Installing Amiga NetHack 3.1
  345. X        (or Everything You Never Wanted to Know Before NetHacking)
  346. X  
  347. X!          Last Revision: 12 May 1993 for NetHack 3.1.2
  348. X  
  349. X  
  350. X! 0. Pre-intro for NetHack 3.1.2.
  351. X     New for 3.1.2:
  352. X       Addition of asksavedisk option to eliminate need for savedir;n syntax
  353. X       Scrolling message window if screen is tall enough.
  354. X--- 2,16 ----
  355. X        Using, Compiling, and Installing Amiga NetHack 3.1
  356. X        (or Everything You Never Wanted to Know Before NetHacking)
  357. X  
  358. X!          Last Revision: 18 June 1993 for NetHack 3.1.3
  359. X  
  360. X  
  361. X! 0. Pre-intro for NetHack 3.1.3.
  362. X!    New for 3.1.3:
  363. X!      Updated this file: new binary release organization and missing options.
  364. X!      Fixed PAL screen calculation error.
  365. X!      Improved font characters for walls, floor, wands, doors, and swallowed.
  366. X!      Support for individual icons per character type.
  367. X     New for 3.1.2:
  368. X       Addition of asksavedisk option to eliminate need for savedir;n syntax
  369. X       Scrolling message window if screen is tall enough.
  370. X***************
  371. X*** 51,57 ****
  372. X      you are playing the Amiga version.  Finally, if you are having trouble
  373. X      compiling NetHack, you may use the same address, or, for compiler
  374. X      specific problems, send mail to:
  375. X!         Greg Olson (golson@sundown.sun.com)  for Manx
  376. X          Richard Addison (addison@pollux.usc.edu) for SAS/C.
  377. X      We do not currently have a contact for the DICE port.
  378. X  
  379. X--- 56,62 ----
  380. X      you are playing the Amiga version.  Finally, if you are having trouble
  381. X      compiling NetHack, you may use the same address, or, for compiler
  382. X      specific problems, send mail to:
  383. X!         Greg Olson (golson@sundown.sun.com) for Manx.
  384. X          Richard Addison (addison@pollux.usc.edu) for SAS/C.
  385. X      We do not currently have a contact for the DICE port.
  386. X  
  387. X***************
  388. X*** 103,108 ****
  389. X--- 108,118 ----
  390. X      * SCORE <options> - Display the record of scores.  Options as
  391. X        available on the CLI command line after a -s flag.
  392. X  
  393. X+     * FONT=name.font:size - Set font used for text on screens which are
  394. X+       tall enough (>250 lines).
  395. X+ 
  396. X+     * PENS=col0/col1/.../col7 - Set palette colors.
  397. X+ 
  398. X      Note that the NetHack.cnf file is read first, then the ToolTypes.  This
  399. X      means that the options specified in the NetHack.cnf act as defaults
  400. X      which can be overridden by an individual's personal icon's ToolTypes.
  401. X***************
  402. X*** 115,121 ****
  403. X      NetHack.cnf file or on an OPTIONS line: flush and silent.  When enabled,
  404. X      flush discards all characters in the queue except the first, which limits
  405. X      typeahead accidents.  The default setting is noflush.  Silent turns off
  406. X!     the (new for 3.1.1) audio output.
  407. X  
  408. X      Usually, most of the confusing options will be set in the NetHack.cnf
  409. X      file once when the game is installed and can be ignored after that.
  410. X--- 125,131 ----
  411. X      NetHack.cnf file or on an OPTIONS line: flush and silent.  When enabled,
  412. X      flush discards all characters in the queue except the first, which limits
  413. X      typeahead accidents.  The default setting is noflush.  Silent turns off
  414. X!     the audio output.
  415. X  
  416. X      Usually, most of the confusing options will be set in the NetHack.cnf
  417. X      file once when the game is installed and can be ignored after that.
  418. X***************
  419. X*** 138,156 ****
  420. X      each archive in the appropriate directory will put the files in the
  421. X      places they belong (note that the archives may have been split
  422. X      for distribution).  If you are installing from source, most of this
  423. X!     work will be done by the time the build is finished.
  424. X  
  425. X      IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE
  426. X      OLD SAVE AND BONES FILES - THEY WILL NOT WORK!  This includes save
  427. X!     and bones files from NetHack 3.1.0.
  428. X  
  429. X  Will NetHack fit on your machine?
  430. X      NetHack 3.1 is large.  NetHack 3.1 is very large.  You will need:
  431. X!     > Amiga 500, 1000, 2000, 2500, or 3000.  The A600, A1200, and A4000
  432. X        should work, but have not been tested.
  433. X!     > WorkBench 1.3 or 2.04.  WorkBench 1.2 will NOT work; we will NOT
  434. X!       be fixing that.  WorkBench 2.1 and 3.0 should work but have not been
  435. X!       tested.
  436. X      > At least 2 meg of RAM.  NetHack will NOT run in 1 meg.
  437. X      > Mass storage: NetHack will run on one floppy - but it won't be nice.
  438. X        Two floppies are almost enough.  A hard drive with over 3 meg of
  439. X--- 148,166 ----
  440. X      each archive in the appropriate directory will put the files in the
  441. X      places they belong (note that the archives may have been split
  442. X      for distribution).  If you are installing from source, most of this
  443. X!     work will be done by the time the build is finished.  See below for
  444. X!     complete installation instructions.
  445. X  
  446. X      IF YOU ALREADY HAVE A PREVIOUS VERSION INSTALLED YOU MUST DELETE THE
  447. X      OLD SAVE AND BONES FILES - THEY WILL NOT WORK!  This includes save
  448. X!     and bones files from NetHack 3.1.0 and 3.1.1.
  449. X  
  450. X  Will NetHack fit on your machine?
  451. X      NetHack 3.1 is large.  NetHack 3.1 is very large.  You will need:
  452. X!     > Amiga 500, 1000, 2000, 2500, 3000, or 4000.  The A600, and A1200
  453. X        should work, but have not been tested.
  454. X!     > WorkBench 1.3 or 2.04 or later.  WorkBench 1.2 or 2.02 will NOT work;
  455. X!       we will NOT be fixing that. 
  456. X      > At least 2 meg of RAM.  NetHack will NOT run in 1 meg.
  457. X      > Mass storage: NetHack will run on one floppy - but it won't be nice.
  458. X        Two floppies are almost enough.  A hard drive with over 3 meg of
  459. X***************
  460. X*** 158,239 ****
  461. X  
  462. X  Find space for the files
  463. X      Floppy installation:
  464. X!     Format four disks named:
  465. X          NetHack
  466. X          HackExe
  467. X          NHsave
  468. X          NHlevels
  469. X      Hard Disk installation:
  470. X          cd to wherever you want to install NetHack
  471. X      make a new directory to be the main NetHack directory:
  472. X!       makedir NetHack
  473. X!     and the subdirectories:
  474. X!       makedir NetHack/save
  475. X!       makedir NetHack/levels
  476. X!     In s:User-Sequence (under 2.0 or later) or s:Startup (under 1.3),
  477. X!     assign NetHack: to the NetHack directory you created above.
  478. X!     assign HackExe: to the same directory.
  479. X  Install the files
  480. X!     Unpack the archives in the directories or onto the disks (you can
  481. X!     tell what to unpack where by the file names) by cd'ing to HackExe:
  482. X!     and unpacking archive 1 and then to NetHack: and unpacking archive 2.
  483. X      Use the table in the next section to see where things should end up.
  484. X      Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds
  485. X      files end up in the NetHack:sounds directory.
  486. X  
  487. X  Configuration
  488. X      Using your favorite text editor, edit NetHack:NetHack.cnf to match
  489. X      your system.  Check HackExe:NetHack.dir and be sure that the paths
  490. X      are correct (note that the C or D beginning the line is required and
  491. X      is not part of the file path).  The HackWB program uses two standard
  492. X!     Amiga programs that must be installed in their standard places: c:copy,
  493. X!     c:rename.
  494. X  
  495. X  III.B. File Location Table
  496. X!     NetHack:
  497. X      A-filla.lev    A-fillb.lev    A-goal.lev    A-locate.lev
  498. X      A-start.lev    air.lev        asmodeus.lev    astral.lev
  499. X      B-filla.lev    B-fillb.lev    B-goal.lev    B-locate.lev
  500. X      B-start.lev    baalz.lev    bigroom.lev    C-filla.lev
  501. X      C-fillb.lev    C-goal.lev    C-locate.lev    C-start.lev
  502. X!     castle.lev    cmdhelp        data        default.icon
  503. X!     dungeon        E-filla.lev    E-fillb.lev    E-goal.lev
  504. X      E-locate.lev    E-start.lev    earth.lev    fakewiz1.lev
  505. X!     fakewiz2.lev    fire.lev    Guidebook    Guidebook.info
  506. X!     H-filla.lev    H-fillb.lev    H-goal.lev    H-locate.lev
  507. X!     H-start.lev    hack.font    HackWB        HackWB.info
  508. X!     HackCli        help        hh        history
  509. X!     juiblex.lev    K-filla.lev    K-fillb.lev    K-goal.lev
  510. X!     K-locate.lev    K-start.lev    knox.lev    license
  511. X!     logfile        ManPage        ManPage.info    medusa-1.lev
  512. X!     medusa-2.lev    minefill.lev    minetown.lev    mine_end.lev
  513. X!     NetHack.cnf    NetHack.c01    NetHack.d00    news
  514. X!     NewGame.info    opthelp        options        oracle.lev
  515. X!     oracles        orcus.lev    P-filla.lev    P-fillb.lev
  516. X!     P-goal.lev    P-locate.lev    P-start.lev    perm
  517. X!     quest.dat    R-filla.lev    R-fillb.lev    R-goal.lev
  518. X!     R-locate.lev    R-start.lev    ReadMe        ReadMe.info
  519. X!     record        recover        rumors        S-filla.lev
  520. X!     S-fillb.lev    S-goal.lev    S-locate.lev    S-start.lev
  521. X!     sanctum.lev    T-filla.lev    T-fillb.lev    T-goal.lev
  522. X!     T-locate.lev    T-start.lev    tower1.lev    tower2.lev
  523. X!     tower3.lev    V-filla.lev    V-fillb.lev    V-goal.lev
  524. X!     V-locate.lev    V-start.lev    valley.lev    W-filla.lev
  525. X!     W-fillb.lev    W-goal.lev    W-locate.lev    W-start.lev
  526. X!     water.lev    wizard1.lev    wizard2.lev    wizard3.lev
  527. X!     wizhelp
  528. X  
  529. X!     NetHack:hack
  530. X!     8
  531. X! 
  532. X!     NetHack:sounds
  533. X!     Bell        Bugle        Drum_Of_Earthquake
  534. X!     Fire_Horn    Frost_Horn    Leather_Drum
  535. X!     Magic_Flute    Magic_Harp    Tooled_Horn
  536. X!     Wooden_Flute    Wooden_Harp
  537. X! 
  538. X!     HackExe:
  539. X!     NetHack.dir
  540. X      NetHack.c00
  541. X  
  542. X  
  543. X--- 168,284 ----
  544. X  
  545. X  Find space for the files
  546. X      Floppy installation:
  547. X!     Format five disks named:
  548. X          NetHack
  549. X          HackExe
  550. X+         HackExe2
  551. X          NHsave
  552. X          NHlevels
  553. X      Hard Disk installation:
  554. X          cd to wherever you want to install NetHack
  555. X      make a new directory to be the main NetHack directory:
  556. X!       makedir NH313
  557. X!       makedir NH313/NetHack
  558. X!       makedir NH313/HackExe
  559. X!       makedir NH313/HackExe2
  560. X!     In S:User-Startup (under 2.0 or later) or S:Startup-Sequence
  561. X!     (under 1.3):
  562. X!       assign NetHack: to the NetHack directory you created above.
  563. X!       assign HackExe: to the HackExe directory.
  564. X!       assign HackExe2: to the HackExe2 directory.
  565. X! 
  566. X  Install the files
  567. X!     Unpack the archives in the directories or onto the disks.  Cd to
  568. X!     the appropriate places then unpack the files:
  569. X!     Archive 1 (the one this ReadMe came in), should be unpacked into
  570. X!     NetHack:.  If you are installing to hard disk, cd to the NH313 directory
  571. X!     before unpacking.
  572. X!       lz x NH31P3-1.lzh
  573. X!     Archive 2 unpacks in two sections to two different places.  If you are
  574. X!     installing to hard disk, cd to the NH313 directory before unpacking; if
  575. X!     you are installing to floppies, unpack each section to a different disk.
  576. X!       lz x NH31P3-2.lzh HackExe/#?
  577. X!       lz x NH31P3-2.lzh HackExe2/#?
  578. X!       
  579. X      Use the table in the next section to see where things should end up.
  580. X      Be sure that the file 8 ends up in NetHack:hack/8 and that the sounds
  581. X      files end up in the NetHack:sounds directory.
  582. X  
  583. X+ Floppy fixup
  584. X+     If you are installing to floppies the files on each disk are probably one
  585. X+     level too far down (for example NetHack:NetHack.cnf is probably
  586. X+     NetHack:NetHack/NetHack.cnf).  This is how to fix that:
  587. X+     Put the following lines into the file ram:fixit (be sure to delete the
  588. X+     blanks from the start of the lines or this will NOT work!)
  589. X+       .key x
  590. X+       rename <x> /<x>
  591. X+ 
  592. X+     For each of the disks NH313, NetHack, and HackExe, cd into the "inner"
  593. X+     directory (for example "cd NetHack:NetHack") and execute these commands:
  594. X+       list >ram:x lformat="execute ram:fixit %s" #?
  595. X+       execute ram:x
  596. X+ 
  597. X  Configuration
  598. X      Using your favorite text editor, edit NetHack:NetHack.cnf to match
  599. X      your system.  Check HackExe:NetHack.dir and be sure that the paths
  600. X      are correct (note that the C or D beginning the line is required and
  601. X      is not part of the file path).  The HackWB program uses two standard
  602. X!     Amiga programs that must be installed in their standard places: c:copy
  603. X!     and c:rename.  The icons for the documentation invoke SYS:Utilities/More
  604. X!     and will probably need to be updated for your installation.
  605. X  
  606. X+     Create the save file directory (makedir NetHack:save) and the levels file
  607. X+     directory (makedir NetHack:levels) - if you use floppies than these
  608. X+     directories will each be a different floppy.
  609. X+ 
  610. X+     Create the score file (echo to NetHack:record) and, if desired, the log
  611. X+     file (echo to NetHack:logfile).
  612. X+ 
  613. X  III.B. File Location Table
  614. X! NetHack:
  615. X!     amii.hlp    cmdhelp        data        default.icon
  616. X!     dungeon        Guidebook    Guidebook.info    hack.font
  617. X!     hack/8        HackCli        HackCli.info    HackWB
  618. X!     HackWB.hlp    HackWB.info    help        hh
  619. X!     history        license        ManPage        ManPage.info
  620. X!     NetHack.cnf    NewGame.info    opthelp        options
  621. X!     oracles        quest.dat    ReadMe        ReadMe.info
  622. X!     Recover        Recover.info    RecoverMan    RecoverMan.info    
  623. X!     rumors
  624. X!     sounds/Bell            sounds/Bugle
  625. X!     sounds/Drum_Of_Earthquake    sounds/Fire_Horn
  626. X!     sounds/Frost_Horn        sounds/Leather_Drum
  627. X!     sounds/Magic_Flute        sounds/Magic_Harp
  628. X!     sounds/Tooled_Horn        sounds/Wooden_Flute
  629. X!     sounds/Wooden_Harp
  630. X!     wizhelp
  631. X! 
  632. X! HackExe:
  633. X      A-filla.lev    A-fillb.lev    A-goal.lev    A-locate.lev
  634. X      A-start.lev    air.lev        asmodeus.lev    astral.lev
  635. X      B-filla.lev    B-fillb.lev    B-goal.lev    B-locate.lev
  636. X      B-start.lev    baalz.lev    bigroom.lev    C-filla.lev
  637. X      C-fillb.lev    C-goal.lev    C-locate.lev    C-start.lev
  638. X!     castle.lev    E-filla.lev    E-fillb.lev    E-goal.lev
  639. X      E-locate.lev    E-start.lev    earth.lev    fakewiz1.lev
  640. X!     fakewiz2.lev    fire.lev    H-filla.lev    H-fillb.lev
  641. X!     H-goal.lev    H-locate.lev    H-start.lev    juiblex.lev
  642. X!     K-filla.lev    K-fillb.lev    K-goal.lev    K-locate.lev
  643. X!     K-start.lev    knox.lev    medusa-1.lev    medusa-2.lev
  644. X!     minefill.lev    minetown.lev    mine_end.lev    NetHack.c01
  645. X!     NetHack.d00    NetHack.dir    oracle.lev    orcus.lev
  646. X!     P-filla.lev    P-fillb.lev    P-goal.lev    P-locate.lev
  647. X!     P-start.lev    R-filla.lev    R-fillb.lev    R-goal.lev
  648. X!     R-locate.lev    R-start.lev    S-filla.lev    S-fillb.lev
  649. X!     S-goal.lev    S-locate.lev    S-start.lev    sanctum.lev
  650. X!     T-filla.lev    T-fillb.lev    T-goal.lev    T-locate.lev
  651. X!     T-start.lev    tower1.lev    tower2.lev    tower3.lev
  652. X!     V-filla.lev    V-fillb.lev    V-goal.lev    V-locate.lev
  653. X!     V-start.lev    valley.lev    W-filla.lev    W-fillb.lev
  654. X!     W-goal.lev    W-locate.lev    W-start.lev    water.lev
  655. X!     wizard1.lev    wizard2.lev    wizard3.lev
  656. X  
  657. X! HackExe2:
  658. X      NetHack.c00
  659. X  
  660. X  
  661. X***************
  662. X*** 249,255 ****
  663. X  IV.B. Basic Compilation
  664. X      NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5,
  665. X      or the registered version of DICE.  The "official" compiler for NetHack 3.1
  666. X!     patchlevel 1 is SAS/C 6.2 - we have dropped support for SAS/C 5.x.
  667. X  
  668. X  IV.B.1. Introduction to Compiling NetHack
  669. X      Before doing any compilation, read the README files distributed
  670. X--- 294,300 ----
  671. X  IV.B. Basic Compilation
  672. X      NetHack can be built with SAS/C version 6.2, Manx/Aztec version 5,
  673. X      or the registered version of DICE.  The "official" compiler for NetHack 3.1
  674. X!     patchlevel 3 is SAS/C 6.2 - we have dropped support for SAS/C 5.x.
  675. X  
  676. X  IV.B.1. Introduction to Compiling NetHack
  677. X      Before doing any compilation, read the README files distributed
  678. X***************
  679. X*** 354,363 ****
  680. X      be the correct contents for a floppy based system.
  681. X  
  682. X  IV.C.2 TTY Interface
  683. X!     There is a basic tty interface available under 3.1.2.  This is a
  684. X      preliminary version and it will change in the future.  Expect bugs.
  685. X      (Due to the instability of the interface it will not be in the
  686. X!     official binaries for 3.1.2).  The TTY mode is designed for use in
  687. X      a BBS setting - it is specifically not recommended for use on the
  688. X      console.  The TTY interface is not currently compatible with split
  689. X      binaries - invoke NetHack directly as NetHack.  In addition, you should
  690. X--- 399,408 ----
  691. X      be the correct contents for a floppy based system.
  692. X  
  693. X  IV.C.2 TTY Interface
  694. X!     There is a basic tty interface available since 3.1.2.  This is a
  695. X      preliminary version and it will change in the future.  Expect bugs.
  696. X      (Due to the instability of the interface it will not be in the
  697. X!     official binaries for 3.1.3).  The TTY mode is designed for use in
  698. X      a BBS setting - it is specifically not recommended for use on the
  699. X      console.  The TTY interface is not currently compatible with split
  700. X      binaries - invoke NetHack directly as NetHack.  In addition, you should
  701. X*** /tmp/da21650    Mon Jul 12 17:37:07 1993
  702. X--- sys/amiga/Makefile.ami    Fri Jul  2 13:13:17 1993
  703. X***************
  704. X*** 358,364 ****
  705. X      copy $(NHGSTFILE) to $(GSTFILE)
  706. X  
  707. X  Amiga:ami.lnk: Amiga:Makefile.ami
  708. X!     list to Amiga:ami.lnk OBJ:\#?.o QUICK NOHEAD
  709. X  
  710. X  obj:  $(HOBJ)
  711. X  obja:  $(AMIGAOBJ)
  712. X--- 358,364 ----
  713. X      copy $(NHGSTFILE) to $(GSTFILE)
  714. X  
  715. X  Amiga:ami.lnk: Amiga:Makefile.ami
  716. X!     list to Amiga:ami.lnk lformat="OBJ:%s" OBJ:\#?.o QUICK NOHEAD
  717. X  
  718. X  obj:  $(HOBJ)
  719. X  obja:  $(AMIGAOBJ)
  720. X*** /tmp/da21666    Mon Jul 12 17:37:11 1993
  721. X--- sys/amiga/NetHack.cnf    Mon Jul 12 13:32:09 1993
  722. X***************
  723. X*** 88,94 ****
  724. X  
  725. X  # An example using the hack.font graphics character set:
  726. X  GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \
  727. X!        215 213 046 193 192 198 198 046 229 035 \
  728. X         060 062 060 062 094 034 095 092 035 123 \
  729. X         125 042 125 042 042 035 035 046 035 125 \
  730. X         241 240 242 243 042 033 123 125 064 038 \
  731. X--- 88,94 ----
  732. X  
  733. X  # An example using the hack.font graphics character set:
  734. X  GRAPHICS = 032 192 193 194 195 196 197 198 216 214 \
  735. X!        215 213 217 145 146 147 148 217 218 229 \
  736. X         060 062 060 062 094 034 095 092 035 123 \
  737. X         125 042 125 042 042 035 035 046 035 125 \
  738. X         241 240 242 243 042 033 123 125 064 038 \
  739. X*** /tmp/da21684    Mon Jul 12 17:37:15 1993
  740. X--- sys/amiga/amidos.c    Tue Jul  6 15:10:57 1993
  741. X***************
  742. X*** 194,202 ****
  743. X  eraseall(path, files)
  744. X  const char *path, *files;
  745. X  {
  746. X!     char buf[FILENAME];
  747. X!     short i;
  748. X!     BPTR fileLock, dirLock, dirLock2;
  749. X      struct FileInfoBlock *fibp;
  750. X      int chklen;
  751. X  #ifdef BETA
  752. X--- 194,200 ----
  753. X  eraseall(path, files)
  754. X  const char *path, *files;
  755. X  {
  756. X!     BPTR dirLock, dirLock2;
  757. X      struct FileInfoBlock *fibp;
  758. X      int chklen;
  759. X  #ifdef BETA
  760. X***************
  761. X*** 422,428 ****
  762. X  static BPTR OrgDirLock = NO_LOCK;
  763. X  
  764. X  chdir(dir)
  765. X! char *dir;
  766. X  {
  767. X      if (dir == orgdir) {
  768. X          /* We want to go back to where we came from. */
  769. X--- 420,426 ----
  770. X  static BPTR OrgDirLock = NO_LOCK;
  771. X  
  772. X  chdir(dir)
  773. X! const char *dir;
  774. X  {
  775. X      if (dir == orgdir) {
  776. X          /* We want to go back to where we came from. */
  777. X*** /tmp/da21725    Mon Jul 12 17:37:27 1993
  778. X--- sys/amiga/amii.hlp    Mon Jul 12 14:14:29 1993
  779. X***************
  780. X*** 1,4 ****
  781. X!             Amiga specific help file for NetHack 3.1.2
  782. X  
  783. X  The Amiga port of NetHack supports a number of additional commands
  784. X  and facilities specific to the Amiga.  Listed below are the things
  785. X--- 1,4 ----
  786. X!             Amiga specific help file for NetHack 3.1.3
  787. X  
  788. X  The Amiga port of NetHack supports a number of additional commands
  789. X  and facilities specific to the Amiga.  Listed below are the things
  790. X***************
  791. X*** 12,17 ****
  792. X--- 12,28 ----
  793. X                                  these settings of the pens to allow
  794. X                                  the game to be resumed with the
  795. X                                  same palette at a later date.
  796. X+ 
  797. X+ Separate Icon types for saved games:
  798. X+                                 Each character class can have a
  799. X+                                 separate icon.  The first letter
  800. X+                                 of the character class is used
  801. X+                                 for deriving the name.  e.g. a
  802. X+                                 Wizard saved game would use
  803. X+                                 Nethack:w.icon if it is present.
  804. X+                                 The NetHack:default.icon is used
  805. X+                                 if the associated character class
  806. X+                                 icon is not present.
  807. X  
  808. X  Amiga-specific run-time option:
  809. X          flush                   throw away keyboard type-ahead
  810. X*** /tmp/da21749    Mon Jul 12 17:37:33 1993
  811. X--- sys/amiga/amirip.c    Tue Jul  6 15:11:01 1993
  812. X***************
  813. X*** 45,50 ****
  814. X--- 45,51 ----
  815. X  static void strand ( int x , int y , int dir );
  816. X  static void tomb_text ( char *p );
  817. X  void draw_moon(int phase);
  818. X+ void FDECL( amii_outrip, ( winid, int ) );
  819. X  
  820. X  extern char *killed_by_prefix[];
  821. X  struct Window *ripwin;
  822. X*** /tmp/da21773    Mon Jul 12 17:37:39 1993
  823. X--- sys/amiga/amiwbench.c    Tue Jul  6 15:11:05 1993
  824. X***************
  825. X*** 405,411 ****
  826. X  ami_default_icon( defname )
  827. X      char *defname;
  828. X  {
  829. X-     long lock;
  830. X      static char name[ 300 ];
  831. X  
  832. X      strcpy( name, "NetHack:x.icon" );
  833. X--- 405,410 ----
  834. X*** /tmp/da21901    Mon Jul 12 17:38:11 1993
  835. X--- sys/amiga/wb.c    Tue Jul  6 15:01:45 1993
  836. X***************
  837. X*** 2124,2133 ****
  838. X  
  839. X                      fp = fopen( StrConf, "r" );
  840. X                      if( !fp )
  841. X                      fp = fopen( "NetHack:NetHack.cnf", "r" );
  842. X                      if( !fp )
  843. X                      {
  844. X!                                 errmsg( FLASH, "Can't open nethack.cnf" );
  845. X                                  break;
  846. X                              }
  847. X  
  848. X--- 2124,2136 ----
  849. X  
  850. X                      fp = fopen( StrConf, "r" );
  851. X                      if( !fp )
  852. X+                     {
  853. X                      fp = fopen( "NetHack:NetHack.cnf", "r" );
  854. X+                     strcpy( StrConf, "NetHack:NetHack.cnf" );
  855. X+                 }
  856. X                      if( !fp )
  857. X                      {
  858. X!                                 errmsg( FLASH, "Can't open config file" );
  859. X                                  break;
  860. X                              }
  861. X  
  862. X***************
  863. X*** 2147,2153 ****
  864. X                      nfp = fopen( nname, "w" );
  865. X                      if( !nfp )
  866. X                      {
  867. X!                                 errmsg( FLASH, "Can't open new_nethack.cnf for write" );
  868. X                                  fclose( fp );
  869. X                                  break;
  870. X                              }
  871. X--- 2150,2156 ----
  872. X                      nfp = fopen( nname, "w" );
  873. X                      if( !nfp )
  874. X                      {
  875. X!                                 errmsg( FLASH, "Can't open new config file for write" );
  876. X                                  fclose( fp );
  877. X                                  break;
  878. X                              }
  879. X***************
  880. X*** 2212,2217 ****
  881. X--- 2215,2221 ----
  882. X      FILE *fp, *nfp;
  883. X      char buf[ 300 ];
  884. X      char path=0,option=0,dir=0,pens=0,levels=0,save=0;
  885. X+     char oname[ 300 ], nname[ 300 ];
  886. X  
  887. X      setoneopt( PATH_IDX, StrPath );
  888. X      PutOptions( curopts );
  889. X***************
  890. X*** 2220,2235 ****
  891. X      setoneopt( LEVELS_IDX, StrLevels );
  892. X      setoneopt( SAVE_IDX, StrSave );
  893. X  
  894. X!     fp = fopen( "nethack.cnf", "r" );
  895. X      if( !fp )
  896. X      {
  897. X          errmsg( FLASH, "Can't open nethack.cnf" );
  898. X          return;
  899. X      }
  900. X!     nfp = fopen( "new_nethack.cnf", "w" );
  901. X      if( !nfp )
  902. X      {
  903. X!         errmsg( FLASH, "Can't open new_nethack.cnf for write" );
  904. X          fclose( fp );
  905. X          return;
  906. X      }
  907. X--- 2224,2253 ----
  908. X      setoneopt( LEVELS_IDX, StrLevels );
  909. X      setoneopt( SAVE_IDX, StrSave );
  910. X  
  911. X!     strcpy( oname, dirname( StrConf ) );
  912. X!     if( oname[ strlen(oname)-1 ] != ':' )
  913. X!     {
  914. X!     sprintf( nname, "%s/new_nethack.cnf", oname );
  915. X!     strcat( oname, "/" );
  916. X!     strcat( oname, "old_nethack.cnf" );
  917. X!     }
  918. X!     else
  919. X!     {
  920. X!     sprintf( nname, "%snew_nethack.cnf", oname );
  921. X!     strcat( oname, "old_nethack.cnf" );
  922. X!     }
  923. X! 
  924. X!     fp = fopen( StrConf, "r" );
  925. X      if( !fp )
  926. X      {
  927. X          errmsg( FLASH, "Can't open nethack.cnf" );
  928. X          return;
  929. X      }
  930. X!     nfp = fopen( nname, "w" );
  931. X      if( !nfp )
  932. X      {
  933. X!         sprintf( buf, "Can't open %s for write", nname );
  934. X!         errmsg( FLASH, buf );
  935. X          fclose( fp );
  936. X          return;
  937. X      }
  938. X***************
  939. X*** 2288,2296 ****
  940. X      /* Close up and rename files */
  941. X      fclose( fp );
  942. X      fclose( nfp );
  943. X!     unlink( "old_nethack.cnf" );
  944. X!     rename( "nethack.cnf", "old_nethack.cnf" );
  945. X!     rename( "new_nethack.cnf", "nethack.cnf" );
  946. X  }
  947. X  
  948. X  void do_gadgetup( imsg )
  949. X--- 2306,2340 ----
  950. X      /* Close up and rename files */
  951. X      fclose( fp );
  952. X      fclose( nfp );
  953. X!     unlink( oname );
  954. X!     if( filecopy( StrConf, oname ) == 0 )
  955. X!     filecopy( nname, StrConf );
  956. X! }
  957. X! 
  958. X! filecopy( from, to )
  959. X!     char *from, *to;
  960. X! {
  961. X!     char *buf;
  962. X!     int i = 0;
  963. X! 
  964. X!     buf = malloc( strlen(to) + strlen(from) + 20 );
  965. X!     if( buf )
  966. X!     {
  967. X!         sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to );
  968. X! 
  969. X!         /* Check SysBase instead?  Shouldn't matter  */
  970. X!     if( IntuitionBase->LibNode.lib_Version >= 37 )
  971. X!         i = System( buf, NULL );
  972. X!     else
  973. X!         Execute( buf, NULL, NULL );
  974. X!         free( buf );
  975. X!     }
  976. X!     else
  977. X!     {
  978. X!         errmsg( FLASH, "Failed to allocate memory for copy command" );
  979. X!         return( -1 );
  980. X!     }
  981. X!     return( i );
  982. X  }
  983. X  
  984. X  void do_gadgetup( imsg )
  985. X*** /tmp/da21909    Mon Jul 12 17:38:15 1993
  986. X--- sys/amiga/wbcli.c    Thu Jul  1 15:00:51 1993
  987. X***************
  988. X*** 218,224 ****
  989. X      run_game(gptr);
  990. X  
  991. X  /* wait for game to end */
  992. X!     WaitEOG(gptr);
  993. X      FreeGITEM(gptr);
  994. X  #endif /* TESTCMDLINE */
  995. X  /* ask about another? */
  996. X--- 218,227 ----
  997. X      run_game(gptr);
  998. X  
  999. X  /* wait for game to end */
  1000. X!     if(gptr->wbs)
  1001. X!         WaitEOG(gptr);
  1002. X!     /* else load failed */
  1003. X! 
  1004. X      FreeGITEM(gptr);
  1005. X  #endif /* TESTCMDLINE */
  1006. X  /* ask about another? */
  1007. X***************
  1008. X*** 958,963 ****
  1009. X--- 961,967 ----
  1010. X      {
  1011. X      vprintf( str, vp );
  1012. X      va_end( vp );
  1013. X+     printf("\n");
  1014. X      return;
  1015. X      }
  1016. X  
  1017. X*** /tmp/da21933    Mon Jul 12 17:38:22 1993
  1018. X--- sys/amiga/wbprotos.h    Fri Jul  2 13:12:55 1993
  1019. X***************
  1020. X*** 105,109 ****
  1021. X--- 105,110 ----
  1022. X  void UpdateCnfFile( void );
  1023. X  char *basename( char * );
  1024. X  void flushIDCMP( struct MsgPort *);
  1025. X+ filecopy( char *, char * );
  1026. X  
  1027. X  #undef P
  1028. X*** /tmp/da21965    Mon Jul 12 17:38:33 1993
  1029. X--- sys/amiga/winami.c    Thu Jul  8 14:19:59 1993
  1030. X***************
  1031. X*** 159,164 ****
  1032. X--- 159,166 ----
  1033. X  
  1034. X  struct Rectangle lastinvent, lastmsg;
  1035. X  
  1036. X+ static int FDECL( put_ext_cmd, ( char *, int, struct amii_WinDesc *, int ) );
  1037. X+ 
  1038. X  #ifdef    SHAREDLIB
  1039. X  WinamiBASE *WinamiBase;
  1040. X  
  1041. X***************
  1042. X*** 445,450 ****
  1043. X--- 447,453 ----
  1044. X      { SA_PubName, (ULONG)"NetHack" },
  1045. X      { SA_Overscan, OSCAN_TEXT },
  1046. X      { SA_Pens, (ULONG)scrnpens },
  1047. X+     { SA_DisplayID, 0 },
  1048. X      { TAG_DONE, 0 },
  1049. X  };
  1050. X  #endif
  1051. X***************
  1052. X*** 770,786 ****
  1053. X      if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL )
  1054. X      panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd");
  1055. X      amii_clear_nhwindow( NHW_MESSAGE );
  1056. X!     pline("# ");
  1057. X      colx = 3;
  1058. X      w = cw->win;
  1059. X  
  1060. X      if( bigscreen )
  1061. X      {
  1062. X!         bottom = w->Height - w->BorderTop - w->BorderBottom;
  1063. X!         bottom /= w->RPort->TxHeight;
  1064. X!         if( bottom > 0 )
  1065. X!         --bottom;
  1066. X      }
  1067. X      while((c = WindowGetchar()) != EOF)
  1068. X      {
  1069. X      amii_curs( WIN_MESSAGE, colx, bottom );
  1070. X--- 773,795 ----
  1071. X      if( WIN_MESSAGE == WIN_ERR || ( cw = amii_wins[ WIN_MESSAGE ] ) == NULL )
  1072. X      panic(winpanicstr, WIN_MESSAGE, "get_ext_cmd");
  1073. X      amii_clear_nhwindow( NHW_MESSAGE );
  1074. X!     if( scrollmsg )
  1075. X!     {
  1076. X!     pline("#");
  1077. X!     amii_putstr( WIN_MESSAGE, -1, " " );
  1078. X!     }
  1079. X!     else
  1080. X!     {
  1081. X!     pline("# ");
  1082. X!     }
  1083. X      colx = 3;
  1084. X      w = cw->win;
  1085. X  
  1086. X      if( bigscreen )
  1087. X      {
  1088. X!         bottom = amii_msgborder( w );
  1089. X      }
  1090. X+ 
  1091. X      while((c = WindowGetchar()) != EOF)
  1092. X      {
  1093. X      amii_curs( WIN_MESSAGE, colx, bottom );
  1094. X***************
  1095. X*** 789,794 ****
  1096. X--- 798,813 ----
  1097. X          int win, i, sel;
  1098. X          char buf[ 100 ];
  1099. X  
  1100. X+         if(did_comp){
  1101. X+         while(bufp!=obufp){
  1102. X+             bufp--;
  1103. X+             amii_curs(WIN_MESSAGE, --colx, bottom);
  1104. X+             Text(w->RPort,spaces,1);
  1105. X+             amii_curs(WIN_MESSAGE,colx,bottom);
  1106. X+             did_comp=0;
  1107. X+         }
  1108. X+         }
  1109. X+ 
  1110. X          win = amii_create_nhwindow( NHW_MENU );
  1111. X          amii_start_menu( win );
  1112. X  
  1113. X***************
  1114. X*** 808,813 ****
  1115. X--- 827,833 ----
  1116. X          {
  1117. X          *obufp = '\33';
  1118. X          obufp[ 1 ] = 0;
  1119. X+         return;
  1120. X          }
  1121. X          else
  1122. X          {
  1123. X***************
  1124. X*** 818,831 ****
  1125. X          }
  1126. X  
  1127. X          /* copy in the text */
  1128. X!         amii_clear_nhwindow( WIN_MESSAGE );
  1129. X!         strcpy( obufp, extcmdlist[ i ].ef_txt );
  1130. X!         colx = 0;
  1131. X!         pline( "# " );
  1132. X!         pline( obufp );
  1133. X!         bufp = obufp + 2;
  1134. X          }
  1135. X-         return;
  1136. X      }
  1137. X      else if(c == '\033')
  1138. X      {
  1139. X--- 838,853 ----
  1140. X          }
  1141. X  
  1142. X          /* copy in the text */
  1143. X!         if( extcmdlist[ i ].ef_txt != NULL )
  1144. X!         {
  1145. X!             amii_clear_nhwindow( WIN_MESSAGE );
  1146. X!             strcpy( obufp = bufp, extcmdlist[ i ].ef_txt );
  1147. X!             (void) put_ext_cmd( obufp, colx, cw, bottom );
  1148. X!             return;
  1149. X!         }
  1150. X!         else
  1151. X!             DisplayBeep( NULL );
  1152. X          }
  1153. X      }
  1154. X      else if(c == '\033')
  1155. X      {
  1156. X***************
  1157. X*** 884,900 ****
  1158. X          {
  1159. X          Strcpy(obufp, extcmdlist[com_index].ef_txt);
  1160. X          /* finish printing our string */
  1161. X!         Text( w->RPort, bufp, strlen( bufp ) );
  1162. X!         amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom);
  1163. X          bufp = obufp; /* reset it */
  1164. X          if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO)
  1165. X              bufp += strlen(obufp);
  1166. X!             did_comp=1;
  1167. X          }
  1168. X          else
  1169. X          {
  1170. X!         Text( w->RPort, bufp, strlen( bufp ) );
  1171. X!         amii_curs( WIN_MESSAGE, colx += strlen( bufp ), bottom);
  1172. X          if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO)
  1173. X              bufp++;
  1174. X          }
  1175. X--- 906,920 ----
  1176. X          {
  1177. X          Strcpy(obufp, extcmdlist[com_index].ef_txt);
  1178. X          /* finish printing our string */
  1179. X!         colx = put_ext_cmd( obufp, colx, cw, bottom );
  1180. X          bufp = obufp; /* reset it */
  1181. X          if(strlen(obufp) < BUFSZ-1 && strlen(obufp) < COLNO)
  1182. X              bufp += strlen(obufp);
  1183. X!         did_comp=1;
  1184. X          }
  1185. X          else
  1186. X          {
  1187. X!         colx = put_ext_cmd( obufp, colx, cw, bottom );
  1188. X          if(bufp-obufp < BUFSZ-1 && bufp-obufp < COLNO)
  1189. X              bufp++;
  1190. X          }
  1191. X***************
  1192. X*** 910,915 ****
  1193. X--- 930,985 ----
  1194. X      }
  1195. X      *bufp = 0;
  1196. X      return;
  1197. X+ }
  1198. X+ 
  1199. X+ static int
  1200. X+ put_ext_cmd( obufp, colx, cw, bottom )
  1201. X+     char *obufp;
  1202. X+     int colx, bottom;
  1203. X+     struct amii_WinDesc *cw;
  1204. X+ {
  1205. X+     struct Window *w = cw->win;
  1206. X+     char *t;
  1207. X+ 
  1208. X+     t = malloc( strlen( obufp ) + 7 );
  1209. X+     if( t != NULL )
  1210. X+     {
  1211. X+     if( scrollmsg )
  1212. X+     {
  1213. X+         sprintf( t, "xxx%s", obufp );
  1214. X+         t[0] = 1;
  1215. X+         t[1] = -1;
  1216. X+         t[2] = ' ';
  1217. X+         amii_curs( WIN_MESSAGE, 0, bottom);
  1218. X+         SetAPen( w->RPort, C_WHITE );
  1219. X+         Text(w->RPort, "># ", 3 );
  1220. X+         SetAPen( w->RPort, C_RED );
  1221. X+         Text(w->RPort, t+3, strlen( t ) - 3 );
  1222. X+     }
  1223. X+     else
  1224. X+     {
  1225. X+         sprintf( t, "# %s", obufp );
  1226. X+         amii_curs( WIN_MESSAGE, 0, bottom);
  1227. X+         SetAPen( w->RPort, C_WHITE );
  1228. X+         Text(w->RPort, t, strlen( t ) );
  1229. X+     }
  1230. X+     if( scrollmsg )
  1231. X+         SetAPen( w->RPort, C_WHITE );
  1232. X+     if( cw->data[ cw->maxrow - 1 ] )
  1233. X+         free( cw->data[ cw->maxrow - 1 ] );
  1234. X+     cw->data[ cw->maxrow - 1 ] = t;
  1235. X+     }
  1236. X+     else
  1237. X+     {
  1238. X+     amii_curs( WIN_MESSAGE, 0, bottom);
  1239. X+     SetAPen( w->RPort, C_WHITE );
  1240. X+     Text(w->RPort, "# ", 2 );
  1241. X+     SetAPen( w->RPort, C_RED );
  1242. X+     Text(w->RPort, obufp, strlen( obufp ) );
  1243. X+     SetAPen( w->RPort, C_WHITE );
  1244. X+     }
  1245. X+     amii_curs( WIN_MESSAGE, colx = strlen( obufp ) + 3 + ( scrollmsg != 0 ), bottom);
  1246. X+     return( colx );
  1247. X  }
  1248. X  #endif /* COM_COMPL */
  1249. X  
  1250. X*** /tmp/da21981    Mon Jul 12 17:38:38 1993
  1251. X--- sys/amiga/windefs.h    Tue Jul  6 15:45:52 1993
  1252. X***************
  1253. X*** 67,72 ****
  1254. X--- 67,76 ----
  1255. X  #include "amiga:lib/libmacs.h"
  1256. X  #endif
  1257. X  
  1258. X+ #ifdef    INTUI_NEW_LOOK
  1259. X+ #include <utility/tagitem.h>
  1260. X+ #endif
  1261. X+ 
  1262. X  /* cw->data[x] contains 2 characters worth of special information.  These
  1263. X   * characters are stored at the offsets as described here.
  1264. X   */
  1265. X*** /tmp/da21997    Mon Jul 12 17:38:42 1993
  1266. X--- sys/amiga/winfuncs.c    Tue Jul  6 15:45:58 1993
  1267. X***************
  1268. X*** 8,15 ****
  1269. X  #include "incl:patchlevel.h"
  1270. X  
  1271. X  int topl_addspace=1;
  1272. X  
  1273. X- 
  1274. X  void
  1275. X  amii_destroy_nhwindow(win)      /* just hide */
  1276. X      register winid win;
  1277. X--- 8,15 ----
  1278. X  #include "incl:patchlevel.h"
  1279. X  
  1280. X  int topl_addspace=1;
  1281. X+ extern struct TagItem scrntags[];
  1282. X  
  1283. X  void
  1284. X  amii_destroy_nhwindow(win)      /* just hide */
  1285. X      register winid win;
  1286. X***************
  1287. X*** 224,229 ****
  1288. X--- 224,237 ----
  1289. X      nw->TopEdge = 1;
  1290. X      nw->Height = HackScreen->WBorTop + 1 +
  1291. X          ((txheight+1)*(1+(scrollmsg != 0))) + 1 + HackScreen->WBorBottom;
  1292. X+     if( ( HackScreen->Height - 1 -
  1293. X+         ( ( TextsFont->tf_YSize +
  1294. X+             HackScreen->WBorTop + 1 + HackScreen->WBorBottom ) * 2 ) -
  1295. X+         ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 ) - maph <
  1296. X+             TextsFont->tf_YSize + 3 )
  1297. X+     {
  1298. X+         scrollmsg = 0;
  1299. X+     }
  1300. X      if( scrollmsg )
  1301. X      {
  1302. X          nw->FirstGadget = &MsgScroll;
  1303. X***************
  1304. X*** 234,243 ****
  1305. X          /* Text space in status window */
  1306. X          ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 -
  1307. X          maph;
  1308. X!         nw->Flags |= WINDOWSIZING;
  1309. X! #ifdef    VIEWWINDOW
  1310. X!         nw->Flags |= WINDOWDRAG;
  1311. X! #endif
  1312. X      }
  1313. X  #ifdef  INTUI_NEW_LOOK
  1314. X      if( IntuitionBase->LibNode.lib_Version >= 37 )
  1315. X--- 242,248 ----
  1316. X          /* Text space in status window */
  1317. X          ( ( TextsFont->tf_YSize + 1 ) * 2 ) - 2 -
  1318. X          maph;
  1319. X!         nw->Flags |= WINDOWSIZING|WINDOWDRAG;
  1320. X      }
  1321. X  #ifdef  INTUI_NEW_LOOK
  1322. X      if( IntuitionBase->LibNode.lib_Version >= 37 )
  1323. X***************
  1324. X*** 248,254 ****
  1325. X      /* Just allow height adjustments */
  1326. X      nw->MinWidth = w->Width;
  1327. X      nw->MinHeight = HackScreen->WBorTop +
  1328. X!         HackScreen->WBorBottom + ((w->RPort->TxHeight+1)*2) + 3;
  1329. X      }
  1330. X  
  1331. X      nw->IDCMPFlags |= MENUPICK;
  1332. X--- 253,259 ----
  1333. X      /* Just allow height adjustments */
  1334. X      nw->MinWidth = w->Width;
  1335. X      nw->MinHeight = HackScreen->WBorTop +
  1336. X!         HackScreen->WBorBottom + ((TextsFont->tf_YSize+1)*2) + 3;
  1337. X      }
  1338. X  
  1339. X      nw->IDCMPFlags |= MENUPICK;
  1340. X***************
  1341. X*** 294,300 ****
  1342. X      {
  1343. X      char buf[ 100 ];
  1344. X  
  1345. X!     sprintf( buf, "nw is l: %d, t: %d, w: %d, h: %d",
  1346. X          nw->LeftEdge, nw->TopEdge,
  1347. X          nw->Width, nw->Height );
  1348. X      raw_print( buf );
  1349. X--- 299,306 ----
  1350. X      {
  1351. X      char buf[ 100 ];
  1352. X  
  1353. X!     sprintf( buf, "nw(%d) is l: %d, t: %d, w: %d, h: %d",
  1354. X!         type,
  1355. X          nw->LeftEdge, nw->TopEdge,
  1356. X          nw->Width, nw->Height );
  1357. X      raw_print( buf );
  1358. X***************
  1359. X*** 520,525 ****
  1360. X--- 526,533 ----
  1361. X  void
  1362. X  amii_init_nhwindows()
  1363. X  {
  1364. X+     int forcenobig = 0;
  1365. X+ 
  1366. X      if (HackScreen)
  1367. X      panic( "init_nhwindow() called twice", 0 );
  1368. X  
  1369. X***************
  1370. X*** 572,590 ****
  1371. X          NewHackScreen.ViewModes |= LACE;
  1372. X          bigscreen = 1;
  1373. X      }
  1374. X!     else if( GfxBase->NormalDisplayRows >= 240 )
  1375. X      {
  1376. X          bigscreen = 1;
  1377. X      }
  1378. X      }
  1379. X      else if( bigscreen == -1 )
  1380. X      bigscreen = 0;
  1381. X      else if( bigscreen )
  1382. X      {
  1383. X      /* If bigscreen requested and we don't have enough rows in
  1384. X       * noninterlaced mode, switch to interlaced...
  1385. X       */
  1386. X!     if( GfxBase->NormalDisplayRows < 240 )
  1387. X      {
  1388. X          amiIDisplay->ypix *= 2;
  1389. X          NewHackScreen.ViewModes |= LACE;
  1390. X--- 580,601 ----
  1391. X          NewHackScreen.ViewModes |= LACE;
  1392. X          bigscreen = 1;
  1393. X      }
  1394. X!     else if( GfxBase->NormalDisplayRows >= 270 )
  1395. X      {
  1396. X          bigscreen = 1;
  1397. X      }
  1398. X      }
  1399. X      else if( bigscreen == -1 )
  1400. X+     {
  1401. X      bigscreen = 0;
  1402. X+     forcenobig = 1;
  1403. X+     }
  1404. X      else if( bigscreen )
  1405. X      {
  1406. X      /* If bigscreen requested and we don't have enough rows in
  1407. X       * noninterlaced mode, switch to interlaced...
  1408. X       */
  1409. X!     if( GfxBase->NormalDisplayRows < 270 )
  1410. X      {
  1411. X          amiIDisplay->ypix *= 2;
  1412. X          NewHackScreen.ViewModes |= LACE;
  1413. X***************
  1414. X*** 679,688 ****
  1415. X      }
  1416. X      NewHackScreen.BlockPen = C_CYAN;
  1417. X  #ifdef    INTUI_NEW_LOOK
  1418. X!     if( IntuitionBase->LibNode.lib_Version >= 37 && bigscreen )
  1419. X      {
  1420. X      NewHackScreen.Width = STDSCREENWIDTH;
  1421. X      NewHackScreen.Height = STDSCREENHEIGHT;
  1422. X      }
  1423. X  #endif
  1424. X  
  1425. X--- 690,734 ----
  1426. X      }
  1427. X      NewHackScreen.BlockPen = C_CYAN;
  1428. X  #ifdef    INTUI_NEW_LOOK
  1429. X!     if( IntuitionBase->LibNode.lib_Version >= 37 )
  1430. X      {
  1431. X+         int i;
  1432. X+         long modeid;
  1433. X+     struct Screen *wbscr;
  1434. X+ 
  1435. X+     for( i = 0; scrntags[i].ti_Tag != SA_DisplayID &&
  1436. X+             scrntags[i].ti_Tag != TAG_DONE; ++i )
  1437. X+     {
  1438. X+         continue;
  1439. X+     }
  1440. X+ 
  1441. X      NewHackScreen.Width = STDSCREENWIDTH;
  1442. X      NewHackScreen.Height = STDSCREENHEIGHT;
  1443. X+ 
  1444. X+     if( forcenobig == 0 )
  1445. X+     {
  1446. X+         wbscr = LockPubScreen( "Workbench" );
  1447. X+         if( wbscr )
  1448. X+         modeid = GetVPModeID( &wbscr->ViewPort ); 
  1449. X+ 
  1450. X+         if( ( wbscr != NULL ) && ( modeid != INVALID_ID ) )
  1451. X+         {
  1452. X+         if( wbscr->ViewPort.Modes & LACE )
  1453. X+             NewHackScreen.ViewModes |= LACE;
  1454. X+         UnlockPubScreen( NULL, wbscr );
  1455. X+         if( scrntags[i].ti_Tag == SA_DisplayID )
  1456. X+         {
  1457. X+             scrntags[i].ti_Data = (ULONG)modeid;
  1458. X+         }
  1459. X+         }
  1460. X+     }
  1461. X+     else
  1462. X+     {
  1463. X+         if( scrntags[i].ti_Tag == SA_DisplayID )
  1464. X+         {
  1465. X+         scrntags[i].ti_Tag = TAG_IGNORE;
  1466. X+         }
  1467. X+     }
  1468. X      }
  1469. X  #endif
  1470. X  
  1471. X***************
  1472. X*** 1082,1088 ****
  1473. X      TextsFont13.ta_Name = nname;
  1474. X      TextsFont13.ta_YSize = size;
  1475. X  
  1476. X!     /* No alternate text font allowed for 640x250 or smaller */
  1477. X      if( !HackScreen || !bigscreen )
  1478. X      return;
  1479. X  
  1480. X--- 1128,1134 ----
  1481. X      TextsFont13.ta_Name = nname;
  1482. X      TextsFont13.ta_YSize = size;
  1483. X  
  1484. X!     /* No alternate text font allowed for 640x269 or smaller */
  1485. X      if( !HackScreen || !bigscreen )
  1486. X      return;
  1487. X  
  1488. X*** /tmp/da22021    Mon Jul 12 17:38:49 1993
  1489. X--- sys/amiga/winproto.h    Thu Jul  8 14:20:03 1993
  1490. X***************
  1491. X*** 12,17 ****
  1492. X--- 12,20 ----
  1493. X  void amii_getlin ( const char *prompt , char *bufp );
  1494. X  void getlind ( const char *prompt , char *bufp , const char *dflt );
  1495. X  char *amii_get_color_string( void );
  1496. X+ int filecopy( char *from, char *to );
  1497. X+ char *basename( char *str );
  1498. X+ char *dirname( char *str );
  1499. X  
  1500. X  /* winstr.c */
  1501. X  void amii_putstr ( winid window , int attr , const char *str );
  1502. X***************
  1503. X*** 23,28 ****
  1504. X--- 26,32 ----
  1505. X  void amii_remember_topl ( void );
  1506. X  int amii_doprev_message ( void );
  1507. X  void flushIDCMP( struct MsgPort * );
  1508. X+ int amii_msgborder( struct Window * );
  1509. X  
  1510. X  /* winkey.c */
  1511. X  int amii_nh_poskey ( int *x , int *y , int *mod );
  1512. X*** /tmp/da22029    Mon Jul 12 17:38:51 1993
  1513. X--- sys/amiga/winreq.c    Tue Jul  6 15:01:54 1993
  1514. X***************
  1515. X*** 162,169 ****
  1516. X              else if( gd->GadgetID == GADCOLSAVE )
  1517. X              {
  1518. X                  FILE *fp, *nfp;
  1519. X!                 char buf[ 300 ];
  1520. X!                 int once = 0;
  1521. X  
  1522. X                  fp = fopen( configfile, "r" );
  1523. X              if( !fp )
  1524. X--- 162,169 ----
  1525. X              else if( gd->GadgetID == GADCOLSAVE )
  1526. X              {
  1527. X                  FILE *fp, *nfp;
  1528. X!                 char buf[ 300 ], nname[ 300 ], oname[ 300 ];
  1529. X!             int once = 0;
  1530. X  
  1531. X                  fp = fopen( configfile, "r" );
  1532. X              if( !fp )
  1533. X***************
  1534. X*** 172,178 ****
  1535. X                              break;
  1536. X              }
  1537. X  
  1538. X!                 nfp = fopen( "New_NetHack.cnf", "w" );
  1539. X                  if( !nfp )
  1540. X                  {
  1541. X                  pline( "can't write to New_NetHack.cnf" );
  1542. X--- 172,191 ----
  1543. X                              break;
  1544. X              }
  1545. X  
  1546. X!             strcpy( oname, dirname( configfile ) );
  1547. X!             if( oname[ strlen(oname)-1 ] != ':' )
  1548. X!             {
  1549. X!                 sprintf( nname, "%s/New_NetHack.cnf", oname );
  1550. X!                 strcat( oname, "/" );
  1551. X!                 strcat( oname, "Old_NetHack.cnf" );
  1552. X!             }
  1553. X!             else
  1554. X!             {
  1555. X!                 sprintf( nname, "%sNew_NetHack.cnf", oname );
  1556. X!                 strcat( oname, "Old_NetHack.cnf" );
  1557. X!             }
  1558. X! 
  1559. X!                 nfp = fopen( nname, "w" );
  1560. X                  if( !nfp )
  1561. X                  {
  1562. X                  pline( "can't write to New_NetHack.cnf" );
  1563. X***************
  1564. X*** 213,221 ****
  1565. X              }
  1566. X              fclose( fp );
  1567. X              fclose( nfp );
  1568. X!             unlink( "Old_NetHack.cnf" );
  1569. X!             rename( configfile, "Old_NetHack.cnf" );
  1570. X!             rename( "New_NetHack.cnf", configfile );
  1571. X              done = 1;
  1572. X              okay = 1;
  1573. X              }
  1574. X--- 226,234 ----
  1575. X              }
  1576. X              fclose( fp );
  1577. X              fclose( nfp );
  1578. X!             unlink( oname );
  1579. X!             if( filecopy( configfile, oname ) == 0 )
  1580. X!                 filecopy( nname, configfile );
  1581. X              done = 1;
  1582. X              okay = 1;
  1583. X              }
  1584. X***************
  1585. X*** 279,284 ****
  1586. X--- 292,360 ----
  1587. X  
  1588. X      LoadRGB4( &scrn->ViewPort, flags.amii_curmap, 1L << DEPTH );
  1589. X      CloseWindow( nw );
  1590. X+ }
  1591. X+ 
  1592. X+ char *dirname( str )
  1593. X+     char *str;
  1594. X+ {
  1595. X+     char *t, c;
  1596. X+     static char dir[ 300 ];
  1597. X+ 
  1598. X+     t = strrchr( str, '/' );
  1599. X+     if( !t )
  1600. X+     t = strrchr( str, ':' );
  1601. X+     if( !t )
  1602. X+     t = str;
  1603. X+     else
  1604. X+     {
  1605. X+         c = *t;
  1606. X+         *t = 0;
  1607. X+         strcpy( dir, str );
  1608. X+         *t = c;
  1609. X+     }
  1610. X+     return( dir );
  1611. X+ }
  1612. X+ 
  1613. X+ char *basename( str )
  1614. X+     char *str;
  1615. X+ {
  1616. X+     char *t;
  1617. X+ 
  1618. X+     t = strrchr( str, '/' );
  1619. X+     if( !t )
  1620. X+     t = strrchr( str, ':' );
  1621. X+     if( !t )
  1622. X+     t = str;
  1623. X+     else
  1624. X+     ++t;
  1625. X+     return( t );
  1626. X+ }
  1627. X+ 
  1628. X+ filecopy( from, to )
  1629. X+     char *from, *to;
  1630. X+ {
  1631. X+     char *buf;
  1632. X+     int i = 0;
  1633. X+ 
  1634. X+     buf = malloc( strlen(to) + strlen(from) + 20 );
  1635. X+     if( buf )
  1636. X+     {
  1637. X+         sprintf( buf, "c:copy \"%s\" \"%s\" clone", from, to );
  1638. X+ 
  1639. X+         /* Check SysBase instead?  Shouldn't matter  */
  1640. X+ #ifdef    INTUI_NEW_LOOK
  1641. X+     if( IntuitionBase->LibNode.lib_Version >= 37 )
  1642. X+         i = System( buf, NULL );
  1643. X+     else
  1644. X+ #endif
  1645. X+         Execute( buf, NULL, NULL );
  1646. X+         free( buf );
  1647. X+     }
  1648. X+     else
  1649. X+     {
  1650. X+         return( -1 );
  1651. X+     }
  1652. X+     return( i );
  1653. X  }
  1654. X  
  1655. X  /* The colornames, and the default values for the pens */
  1656. X*** /tmp/da22037    Mon Jul 12 17:38:54 1993
  1657. X--- sys/amiga/winstr.c    Thu Jul  8 14:20:07 1993
  1658. X***************
  1659. X*** 16,22 ****
  1660. X  {
  1661. X      struct Window *w;
  1662. X      register struct amii_WinDesc *cw;
  1663. X!     register char *ob;
  1664. X      int i, j, n0, bottom, totalvis, wheight;
  1665. X  
  1666. X  #ifdef    VIEWWINDOW
  1667. X--- 16,22 ----
  1668. X  {
  1669. X      struct Window *w;
  1670. X      register struct amii_WinDesc *cw;
  1671. X!     char *ob;
  1672. X      int i, j, n0, bottom, totalvis, wheight;
  1673. X  
  1674. X  #ifdef    VIEWWINDOW
  1675. X***************
  1676. X*** 72,81 ****
  1677. X  #define MORE_FUDGE  10  /* 8 for --more--, 1 for preceeding sp, 1 for */
  1678. X          /* putstr pad */
  1679. X      case NHW_MESSAGE:
  1680. X!         bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
  1681. X!         bottom /= w->RPort->TxHeight;
  1682. X!         if( bottom > 0 )
  1683. X!         --bottom;
  1684. X  
  1685. X      wheight = ( w->Height - w->BorderTop -
  1686. X                  w->BorderBottom - 3 ) / w->RPort->TxHeight;
  1687. X--- 72,79 ----
  1688. X  #define MORE_FUDGE  10  /* 8 for --more--, 1 for preceeding sp, 1 for */
  1689. X          /* putstr pad */
  1690. X      case NHW_MESSAGE:
  1691. X!         /* Calculate the bottom line */
  1692. X!         bottom = amii_msgborder( w );
  1693. X  
  1694. X      wheight = ( w->Height - w->BorderTop -
  1695. X                  w->BorderBottom - 3 ) / w->RPort->TxHeight;
  1696. X***************
  1697. X*** 267,272 ****
  1698. X--- 265,284 ----
  1699. X      }
  1700. X  }
  1701. X  
  1702. X+ int
  1703. X+ amii_msgborder( w )
  1704. X+     struct Window *w;
  1705. X+ {
  1706. X+     register int bottom;
  1707. X+ 
  1708. X+     /* There is a one pixel border at the borders, so subtract two */
  1709. X+     bottom = w->Height - w->BorderTop - w->BorderBottom - 2;
  1710. X+     bottom /= w->RPort->TxHeight;
  1711. X+     if( bottom > 0 )
  1712. X+     --bottom;
  1713. X+     return( bottom );
  1714. X+ }
  1715. X+ 
  1716. X  void
  1717. X  outmore( cw )
  1718. X      register struct amii_WinDesc *cw;
  1719. X***************
  1720. X*** 278,293 ****
  1721. X      if( scrollmsg )
  1722. X      {
  1723. X          int bottom;
  1724. X!         bottom = w->Height - w->BorderTop - w->BorderBottom;
  1725. X!         bottom /= w->RPort->TxHeight;
  1726. X!         if( bottom > 0 )
  1727. X!         --bottom;
  1728. X          ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  1729. X              w->BorderLeft-1, w->BorderTop+1,
  1730. X              w->Width - w->BorderRight-1,
  1731. X              w->Height - w->BorderBottom - 1 );
  1732. X          amii_curs( WIN_MESSAGE, 1, bottom );
  1733. X!         Text( w->RPort, "--more--", 9 );
  1734. X      }
  1735. X      else
  1736. X          Text( w->RPort, " --more--", 9 );
  1737. X--- 290,304 ----
  1738. X      if( scrollmsg )
  1739. X      {
  1740. X          int bottom;
  1741. X! 
  1742. X!         bottom = amii_msgborder( w );
  1743. X! 
  1744. X          ScrollRaster( w->RPort, 0, w->RPort->TxHeight,
  1745. X              w->BorderLeft-1, w->BorderTop+1,
  1746. X              w->Width - w->BorderRight-1,
  1747. X              w->Height - w->BorderBottom - 1 );
  1748. X          amii_curs( WIN_MESSAGE, 1, bottom );
  1749. X!         Text( w->RPort, "--more--", 8 );
  1750. X      }
  1751. X      else
  1752. X          Text( w->RPort, " --more--", 9 );
  1753. END_OF_FILE
  1754. if test 53022 -ne `wc -c <'patches03d'`; then
  1755.     echo shar: \"'patches03d'\" unpacked with wrong size!
  1756. fi
  1757. # end of 'patches03d'
  1758. if test ! -d 'sys' ; then
  1759.     echo shar: Creating directory \"'sys'\"
  1760.     mkdir 'sys'
  1761. fi
  1762. if test ! -d 'sys/amiga' ; then
  1763.     echo shar: Creating directory \"'sys/amiga'\"
  1764.     mkdir 'sys/amiga'
  1765. fi
  1766. if test ! -d 'sys/mac' ; then
  1767.     echo shar: Creating directory \"'sys/mac'\"
  1768.     mkdir 'sys/mac'
  1769. fi
  1770. if test ! -d 'sys/msdos' ; then
  1771.     echo shar: Creating directory \"'sys/msdos'\"
  1772.     mkdir 'sys/msdos'
  1773. fi
  1774. if test ! -d 'sys/share' ; then
  1775.     echo shar: Creating directory \"'sys/share'\"
  1776.     mkdir 'sys/share'
  1777. fi
  1778. if test ! -d 'sys/unix' ; then
  1779.     echo shar: Creating directory \"'sys/unix'\"
  1780.     mkdir 'sys/unix'
  1781. fi
  1782. echo shar: End of archive 1 \(of 18\).
  1783. cp /dev/null ark1isdone
  1784. MISSING=""
  1785. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ; do
  1786.     if test ! -f ark${I}isdone ; then
  1787.     MISSING="${MISSING} ${I}"
  1788.     fi
  1789. done
  1790. if test "${MISSING}" = "" ; then
  1791.     echo You have unpacked all 18 archives.
  1792.     echo "Now execute ./patchit3.sh"
  1793.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1794. else
  1795.     echo You still need to unpack the following archives:
  1796.     echo "        " ${MISSING}
  1797. fi
  1798. ##  End of shell archive.
  1799. exit 0
  1800.