[comp.sources.games] v09i012: NetHack3 - display oriented dungeons & dragons

billr@saab.CNA.TEK.COM (Bill Randle) (02/24/90)

Submitted-by: Izchak Miller <izchak@linc.cis.upenn.edu>
Posting-number: Volume 9, Issue 12
Archive-name: NetHack3/Patch7l
Patch-To: NetHack3: Volume 7, Issue 56-93



#! /bin/sh
# This is a shell archive.  Remove anything before this line, then unpack
# it by saving it into a file and typing "sh file".  To overwrite existing
# files, type "sh file -c".  You can also feed this as standard input via
# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
# will see the following message at the end:
#		"End of archive 12 (of 30)."
# Contents:  patch7.20
# Wrapped by billr@saab on Wed Feb 21 10:04:33 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
if test -f 'patch7.20' -a "${1}" != "-c" ; then 
  echo shar: Renaming existing file \"'patch7.20'\" to \"'patch7.20.orig'\"
  mv -f 'patch7.20' 'patch7.20.orig'
fi
echo shar: Extracting \"'patch7.20'\" \(55350 characters\)
sed "s/^X//" >'patch7.20' <<'END_OF_FILE'
X*** /dev/null	Mon Feb 19 23:26:54 1990
X--- others/Makefile.lib	Sat Feb 17 20:36:02 1990
X***************
X*** 0 ****
X--- 1,22 ----
X+ #	SCCS Id: @(#)Makefile.lib	3.0	90/02/17
X+ #	Nethack makefile for Fred fish termlib -- Norman Meluch
X+ #
X+ CC	= cl /c
X+ MODEL	= L
X+ CFLAGS	= /A$(MODEL) /Os /Oa /Gs /Zp1 /W0
X+ #
X+ # Termcap routines.
X+ TERMLIB = termlib.lib
X+ #
X+ TL_LOBJECTS =	tgetent.o	tgetflag.o 	tgetnum.o	\
X+ 		tgetstr.o	tgoto.o		tputs.o		\
X+ 		isdigit.o	fgetlr.o
X+ #
X+ .SUFFIXES: .exe .o .c .obj .asm
X+ #
X+ .c.o:
X+ 	$(CC) $(CFLAGS) /Fo$*.o $*.c
X+ #
X+ $(TERMLIB):	$(TL_LOBJECTS)
X+ 	lib $(TERMLIB) -+ $(TL_LOBJECTS);
X+ 
X*** others/Old/Makefile.msc	Mon Feb 19 23:27:09 1990
X--- others/Makefile.msc	Sun Feb  4 15:22:47 1990
X***************
X*** 308,314 ****
X  o\topl.o:  $(HACK_H)
X  o\topten.o:  $(HACK_H)
X  o\track.o:  $(HACK_H)
X! o\trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
X  o\u_init.o:  $(HACK_H)
X  o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  o\vault.o:  $(HACK_H) $(INCL)\vault.h
X--- 308,314 ----
X  o\topl.o:  $(HACK_H)
X  o\topten.o:  $(HACK_H)
X  o\track.o:  $(HACK_H)
X! o\trap.o:  $(HACK_H) $(INCL)\edog.h
X  o\u_init.o:  $(HACK_H)
X  o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  o\vault.o:  $(HACK_H) $(INCL)\vault.h
X*** others/Old/Makefile.pc	Mon Feb 19 23:28:26 1990
X--- others/Makefile.pc	Sun Feb  4 15:23:19 1990
X***************
X*** 267,273 ****
X  o\topl.o:  $(HACK_H)
X  o\topten.o:  $(HACK_H)
X  o\track.o:  $(HACK_H)
X! o\trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
X  o\u_init.o:  $(HACK_H)
X  o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  o\vault.o:  $(HACK_H) $(INCL)\vault.h
X--- 267,273 ----
X  o\topl.o:  $(HACK_H)
X  o\topten.o:  $(HACK_H)
X  o\track.o:  $(HACK_H)
X! o\trap.o:  $(HACK_H) $(INCL)\edog.h
X  o\u_init.o:  $(HACK_H)
X  o\uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  o\vault.o:  $(HACK_H) $(INCL)\vault.h
X*** others/Old/Makefile.st	Mon Feb 19 23:28:41 1990
X--- others/Makefile.st	Fri Feb  9 19:55:41 1990
X***************
X*** 1,7 ****
X! #	SCCS Id: @(#)Makefile.st	3.0	89/07/07
X  #	ST NetHack 3.0 Makefile for GCC 1.34 or higher
X  #
X! #    NOTE: There's one really awful kludge here: I had to break
X  #    monst.o up into two pieces to get it to compile on my machine
X  #    (a Mega 2). You'll need "sed" to get this to work.
X  #    If you have 2.5 megs or more, you can probably delete the
X--- 1,11 ----
X! #	SCCS Id: @(#)Makefile.st	3.0	90/01/14
X  #	ST NetHack 3.0 Makefile for GCC 1.34 or higher
X  #
X! #    NOTE: There's a bug in the GCC 1.35 (and maybe 1.34) that
X! #    requires the omission of the -O flag on a couple of files;
X! #    see the comments further down.
X! #
X! #    Also: There's one really awful kludge here: I had to break
X  #    monst.o up into two pieces to get it to compile on my machine
X  #    (a Mega 2). You'll need "sed" to get this to work.
X  #    If you have 2.5 megs or more, you can probably delete the
X***************
X*** 26,37 ****
X  AUX	= ..\auxil
X  SRC	= ..\src
X  
X! CFLAGS	= $(MODEL) -O -fomit-frame-pointer -I..\include
X  LFLAGS	= $(MODEL) -s
X  TARG	= tos
X  PC	= pc
X  
X! # Optional high-quality BSD random number generation routines (see pcconf.h).
X  # Set to nothing if not used.
X  RANDOM = random.o
X  
X--- 30,48 ----
X  AUX	= ..\auxil
X  SRC	= ..\src
X  
X! #
X! # Use the following line for maximum warnings
X! WARN=-D__GNULINT__ -W -Wimplicit -Wreturn-type -Wunused -Wpointer-arith \
X!  -Wcast-qual -Wwrite-strings
X! #
X! # WARN =
X! #
X! CFLAGS = $(MODEL) -O -fomit-frame-pointer $(WARN) -I..\include
X  LFLAGS	= $(MODEL) -s
X  TARG	= tos
X  PC	= pc
X  
X! # Optional high-quality BSD random number generation routines (see tosconf.h).
X  # Set to nothing if not used.
X  RANDOM = random.o
X  
X***************
X*** 90,99 ****
X  $(GAME).ttp: $(HOBJ)
X  	$(CC) -o $(GAME).ttp $(LFLAGS) $(HOBJ) $(TERMCAP)
X  
X! $(GAMEDIR)\$(GAME).ttp: $(GAME).ttp
X! 	cp $(GAME).ttp $(GAMEDIR)
X! 
X! $(GAME): $(GAMEDIR)\$(GAME).ttp
X  
X  all:	$(GAME) lev_comp.ttp auxil
X  	@echo Done.
X--- 101,107 ----
X  $(GAME).ttp: $(HOBJ)
X  	$(CC) -o $(GAME).ttp $(LFLAGS) $(HOBJ) $(TERMCAP)
X  
X! $(GAME): $(GAME).ttp
X  
X  all:	$(GAME) lev_comp.ttp auxil
X  	@echo Done.
X***************
X*** 117,123 ****
X  #
X  # Also: for some reason the supplied lev_lex.c causes the GCC to abort
X  # on my machine (maybe not enough memory?) when compiled with -mshort.
X! # With MODEL=-mshort, I had to delete lev_lex.c and use these rules.
X  #
X  lev_comp.c:  lev_comp.y
X  	$(YACC) -d lev_comp.y
X--- 125,131 ----
X  #
X  # Also: for some reason the supplied lev_lex.c causes the GCC to abort
X  # on my machine (maybe not enough memory?) when compiled with -mshort.
X! # With MODEL=-mshort, I had to use the lev_lex.c from others.
X  #
X  lev_comp.c:  lev_comp.y
X  	$(YACC) -d lev_comp.y
X***************
X*** 166,180 ****
X  	$(CC) -c $(CFLAGS) $(PC)unix.c -o unix.o
X  
X  #
X! # GNU C doesn't like the array in rip.c!!!
X! rip.o:   $(HACK_H) 
X! 	$(CC) -c $(CFLAGS) -fwritable-strings rip.c
X! #
X! # GCC 1.35 + bones.c + -mshort + -O == incorrect code. Don't ask me why.
X! # So we just omit the -O on bones.c
X  #
X! bones.o: $(HACK_H)
X! 	$(CC) -c $(MODEL) -I$(INCL) bones.c
X  #
X  # Secondary targets
X  #
X--- 174,188 ----
X  	$(CC) -c $(CFLAGS) $(PC)unix.c -o unix.o
X  
X  #
X! # GCC 1.35 has trouble with the construct
X! #	for (x = ...) for(y = ...) levl[x][y].foo = stuff;
X! # this happens in (at least) bones.c and shknam.c. So if you're using
X! # 1.35, uncomment the following lines. The problem is fixed in 1.36.
X  #
X! #bones.o: $(HACK_H)
X! #	$(CC) $(MODEL) $(WARN) -I$(INCL) -c bones.c
X! #shknam.o: $(HACK_H) $(INCL)\eshk.h
X! #	$(CC) $(MODEL) $(WARN) -I$(INCL) -c shknam.c
X  #
X  # Secondary targets
X  #
X***************
X*** 221,227 ****
X  apply.o:  $(HACK_H) $(INCL)\edog.h
X  artifact.o:  $(HACK_H) $(INCL)\artifact.h
X  attrib.o:  $(HACK_H)
X! #bones.o:  $(HACK_H)
X  cmd.o:  $(HACK_H) $(INCL)\func_tab.h
X  dbridge.o: $(HACK_H)
X  decl.o:  $(HACK_H)
X--- 229,235 ----
X  apply.o:  $(HACK_H) $(INCL)\edog.h
X  artifact.o:  $(HACK_H) $(INCL)\artifact.h
X  attrib.o:  $(HACK_H)
X! bones.o:  $(HACK_H)
X  cmd.o:  $(HACK_H) $(INCL)\func_tab.h
X  dbridge.o: $(HACK_H)
X  decl.o:  $(HACK_H)
X***************
X*** 261,267 ****
X  # kludge for "monst.c: Virtual memory exhausted" errors
X  # we build monst.s in two pieces, then glue them together with
X  # "sed". if you don't have memory problems, uncomment out
X! # all but the next line. if you don't have sed, get it from
X  # a comp.binaries.atari.st site, or get gnu sed (the port to
X  # the atari GCC is easy).
X  
X--- 269,275 ----
X  # kludge for "monst.c: Virtual memory exhausted" errors
X  # we build monst.s in two pieces, then glue them together with
X  # "sed". if you don't have memory problems, uncomment out
X! # all but the line starting "monst.o:". if you don't have sed, get it from
X  # a comp.binaries.atari.st site, or get gnu sed (the port to
X  # the atari GCC is easy).
X  
X***************
X*** 291,297 ****
X  random.o:
X  read.o:  $(HACK_H)
X  restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X! #rip.o:  $(HACK_H)
X  rnd.o:  $(HACK_H)
X  rumors.o:  $(HACK_H)
X  save.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X--- 299,305 ----
X  random.o:
X  read.o:  $(HACK_H)
X  restore.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X! rip.o:  $(HACK_H)
X  rnd.o:  $(HACK_H)
X  rumors.o:  $(HACK_H)
X  save.o:  $(HACK_H) $(INCL)\lev.h $(INCL)\wseg.h
X***************
X*** 308,314 ****
X  topl.o:  $(HACK_H)
X  topten.o:  $(HACK_H)
X  track.o:  $(HACK_H)
X! trap.o:  $(HACK_H) $(INCL)\edog.h $(INCL)\trapname.h
X  u_init.o:  $(HACK_H)
X  uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  vault.o:  $(HACK_H) $(INCL)\vault.h
X--- 316,322 ----
X  topl.o:  $(HACK_H)
X  topten.o:  $(HACK_H)
X  track.o:  $(HACK_H)
X! trap.o:  $(HACK_H) $(INCL)\edog.h
X  u_init.o:  $(HACK_H)
X  uhitm.o:  $(HACK_H) $(INCL)\artifact.h
X  vault.o:  $(HACK_H) $(INCL)\vault.h
X*** others/Old/Makefile.tcc	Mon Feb 19 23:29:10 1990
X--- others/Makefile.tcc	Sun Feb  4 15:23:42 1990
X***************
X*** 1,22 ****
X! #	SCCS Id: @(#)Makefile.tcc	3.0	89/11/18
X  #	PC NetHack 3.0 Makefile for Turbo C 2.0
X  #	Perpetrator: Mike Threepoint, 890707
X  
X  ###
X- ### Directories
X- ###
X- # makedefs.c hardcodes the include and auxil directories, don't change them.
X- OBJ	= o
X- INCL	= ..\include
X- AUX	= ..\auxil
X- SRC	= ..\src
X- OTHERS	= ..\others
X- 
X- 
X- ###
X  ### Locals
X  ###
X- 
X  # the name of the game
X  GAME	= nethack
X  
X--- 1,10 ----
X! #	SCCS Id: @(#)Makefile.tcc	3.0	89/11/20
X  #	PC NetHack 3.0 Makefile for Turbo C 2.0
X  #	Perpetrator: Mike Threepoint, 890707
X  
X  ###
X  ### Locals
X  ###
X  # the name of the game
X  GAME	= nethack
X  
X***************
X*** 28,39 ****
X  
X  
X  ###
X  ### Compiler
X  ###
X  CC	= tcc
X  
X  # must use Huge model; Large is limited to 64K total global data.
X! MODEL	= h
X  
X  # signed chars, jump optimize, strict ANSI, register optimize, no stack frame
X  CFLAGS	= -c -no -m$(MODEL) -I$(INCL) -K- -O -A -Z -k- -w-pia -w-pro $(WIZARD)
X--- 16,44 ----
X  
X  
X  ###
X+ ### Directories
X+ ###
X+ # makedefs.c hardcodes the include and auxil directories, don't change them.
X+ OBJ	= o
X+ INCL	= ..\include
X+ AUX	= ..\auxil
X+ SRC	= ..\src
X+ OTHERS	= ..\others
X+ 
X+ # where the Turbo C libraries are kept
X+ LIB     = \turbo\c\lib
X+ 
X+ # directory NDMAKE uses for temporary files
X+ MAKE_TMP = $(TMP)
X+ 
X+ 
X+ ###
X  ### Compiler
X  ###
X  CC	= tcc
X  
X  # must use Huge model; Large is limited to 64K total global data.
X! MODEL   = h
X  
X  # signed chars, jump optimize, strict ANSI, register optimize, no stack frame
X  CFLAGS	= -c -no -m$(MODEL) -I$(INCL) -K- -O -A -Z -k- -w-pia -w-pro $(WIZARD)
X***************
X*** 40,46 ****
X  ## Note: Turbo C 2.0's -Z is bugged.  If you have weird problems, try -Z-.
X  
X  # wizardly defines
X! WIZARD	= -DDEBUG
X  
X  # linkers
X  TLINK	= tlink
X--- 45,51 ----
X  ## Note: Turbo C 2.0's -Z is bugged.  If you have weird problems, try -Z-.
X  
X  # wizardly defines
X! WIZARD  =
X  
X  # linkers
X  TLINK	= tlink
X***************
X*** 70,98 ****
X  ASM	= tasm
X  AFLAGS	= /MX
X  
X  
X  ###
X  ### Rules
X  ###
X  # search order
X  .SUFFIXES: .exe .obj .c .asm .y .l
X  # .c -> .obj
X  .c.obj:
X  	$(CC) $(CFLAGS) -c $<
X  # .asm -> .obj
X  .asm.obj:
X! 	$(ASM) $< $(AFLAGS);
X  # .obj -> .exe (for tlink)
X  .obj.exe:
X  	$(TLINK) $(TLFLAGS) $(C0) $<, $@,, $(LIBS);
X! ## Note: .y -> .c or .l -> .c rules are missing, because none of the developers
X! ##	 had a yacc or lex for the PC to write rules for.
X  
X  
X  ###
X  ### Optional features (see pcconf.h)
X  ###
X! # uncomment the blank definitions if not used
X  
X  # overlays
X  #OVERLAY = $(OBJ)\trampoli.obj ovlmgr.obj
X--- 75,122 ----
X  ASM	= tasm
X  AFLAGS	= /MX
X  
X+ # yacc/lex
X+ YACC	= bison
X+ LEX	= flex
X  
X+ 
X  ###
X  ### Rules
X  ###
X  # search order
X  .SUFFIXES: .exe .obj .c .asm .y .l
X+ 
X+ # .l -> .c (for flex)
X+ .l.c:
X+ 	$(LEX) $<
X+ 	del $@
X+ 	ren lex.yyc $@
X+ # .y -> .c (for bison)
X+ .y.c:
X+ 	$(YACC) $<
X+ 	del $@
X+ 	ren y.tbc $@
X+ 	del $*.h
X+ 	ren y.tbh $*.h
X  # .c -> .obj
X  .c.obj:
X  	$(CC) $(CFLAGS) -c $<
X  # .asm -> .obj
X  .asm.obj:
X! 	$(ASM) $(AFLAGS) $<;
X  # .obj -> .exe (for tlink)
X  .obj.exe:
X  	$(TLINK) $(TLFLAGS) $(C0) $<, $@,, $(LIBS);
X! 
X! # NDMAKE automatic response file generation
X! .RESPONSE_LINK: tlink
X! .RESPONSE_LIB:  tlib
X  
X  
X  ###
X  ### Optional features (see pcconf.h)
X  ###
X! # uncomment the definitions used
X  
X  # overlays
X  #OVERLAY = $(OBJ)\trampoli.obj ovlmgr.obj
X***************
X*** 139,146 ****
X  # panic.c is unnecessary for makedefs.exe and lev_comp.exe.
X  # ioctl.c is unnecessary for nethack.exe.
X  
X! ROOT =	$(OBJ)\main.obj 	$(OBJ)\allmain.obj	$(OBJ)\termcap.obj \
X! 	$(OBJ)\cmd.obj		$(OBJ)\hack.obj 	$(OBJ)\msdos.obj \
X  	$(OVERLAY)
X  
X  # the overlays -- the Microsoft Overlay Linker is limited to 63
X--- 163,170 ----
X  # panic.c is unnecessary for makedefs.exe and lev_comp.exe.
X  # ioctl.c is unnecessary for nethack.exe.
X  
X! ROOT =	$(OBJ)\main.obj    $(OBJ)\allmain.obj $(OBJ)\msdos.obj \
X! 	$(OBJ)\termcap.obj $(OBJ)\cmd.obj     $(OBJ)\hack.obj \
X  	$(OVERLAY)
X  
X  # the overlays -- the Microsoft Overlay Linker is limited to 63
X***************
X*** 150,200 ****
X  OVL03 = $(OBJ)\pri.obj $(OBJ)\prisym.obj
X  OVL04 = $(OBJ)\rnd.obj $(RANDOM)
X  OVL05 = $(OBJ)\timeout.obj
X! OVL06 = $(OBJ)\mon.obj $(OBJ)\exper.obj $(OBJ)\attrib.obj
X! OVL07 = $(OBJ)\monst.obj $(OBJ)\mondata.obj
X! OVL08 = $(OBJ)\monmove.obj $(OBJ)\track.obj
X! OVL09 = $(OBJ)\dog.obj $(OBJ)\dogmove.obj
X! OVL10 = $(OBJ)\makemon.obj
X! OVL11 = $(OBJ)\do_name.obj $(OBJ)\getline.obj
X! OVL12 = $(OBJ)\weapon.obj
X! OVL13 = $(OBJ)\wield.obj
X! OVL14 = $(OBJ)\invent.obj
X! OVL15 = $(OBJ)\objects.obj
X! OVL16 = $(OBJ)\mkobj.obj $(OBJ)\o_init.obj
X! OVL17 = $(OBJ)\objnam.obj
X! OVL18 = $(OBJ)\worn.obj
X! OVL19 = $(OBJ)\do_wear.obj
X! OVL20 = $(OBJ)\trap.obj
X! OVL21 = $(OBJ)\dothrow.obj
X! OVL22 = $(OBJ)\dokick.obj
X! OVL23 = $(OBJ)\uhitm.obj
X! OVL24 = $(OBJ)\mhitu.obj
X! OVL25 = $(OBJ)\mcastu.obj
X! OVL26 = $(OBJ)\mhitm.obj
X! OVL27 = $(OBJ)\mthrowu.obj
X! OVL28 = $(OBJ)\steal.obj
X! OVL29 = $(OBJ)\priest.obj
X! OVL30 = $(OBJ)\vault.obj
X! OVL31 = $(OBJ)\shk.obj $(OBJ)\shknam.obj
X! OVL32 = $(OBJ)\wizard.obj
X! OVL33 = $(OBJ)\worm.obj
X! OVL34 = $(OBJ)\were.obj
X! OVL35 = $(OBJ)\demon.obj
X! OVL36 = $(OBJ)\artifact.obj
X! OVL37 = $(OBJ)\music.obj $(OBJ)\dbridge.obj
X! OVL38 = $(OBJ)\sit.obj $(OBJ)\fountain.obj
X! OVL39 = $(OBJ)\sounds.obj
X! OVL40 = $(OBJ)\spell.obj
X! OVL41 = $(OBJ)\read.obj
X! OVL42 = $(OBJ)\potion.obj
X! OVL43 = $(OBJ)\zap.obj
X! OVL44 = $(OBJ)\eat.obj $(OBJ)\rumors.obj
X! OVL45 = $(OBJ)\do.obj
X! OVL46 = $(OBJ)\search.obj
X! OVL47 = $(OBJ)\lock.obj
X! OVL48 = $(OBJ)\apply.obj
X! OVL49 = $(OBJ)\engrave.obj
X! OVL50 = $(OBJ)\write.obj
X  OVL51 = $(OBJ)\pray.obj
X  OVL52 = $(OBJ)\options.obj
X  OVL53 = $(OBJ)\pickup.obj
X--- 174,224 ----
X  OVL03 = $(OBJ)\pri.obj $(OBJ)\prisym.obj
X  OVL04 = $(OBJ)\rnd.obj $(RANDOM)
X  OVL05 = $(OBJ)\timeout.obj
X! OVL06 = $(OBJ)\mon.obj $(OBJ)\exper.obj
X! OVL07 = $(OBJ)\attrib.obj
X! OVL08 = $(OBJ)\monst.obj $(OBJ)\mondata.obj
X! OVL09 = $(OBJ)\monmove.obj $(OBJ)\track.obj
X! OVL10 = $(OBJ)\dog.obj $(OBJ)\dogmove.obj
X! OVL11 = $(OBJ)\makemon.obj
X! OVL12 = $(OBJ)\do_name.obj $(OBJ)\getline.obj
X! OVL13 = $(OBJ)\weapon.obj
X! OVL14 = $(OBJ)\wield.obj
X! OVL15 = $(OBJ)\invent.obj
X! OVL16 = $(OBJ)\objects.obj
X! OVL17 = $(OBJ)\mkobj.obj $(OBJ)\o_init.obj
X! OVL18 = $(OBJ)\objnam.obj
X! OVL19 = $(OBJ)\worn.obj
X! OVL20 = $(OBJ)\do_wear.obj
X! OVL21 = $(OBJ)\trap.obj
X! OVL22 = $(OBJ)\dothrow.obj
X! OVL23 = $(OBJ)\dokick.obj
X! OVL24 = $(OBJ)\uhitm.obj
X! OVL25 = $(OBJ)\mhitu.obj
X! OVL26 = $(OBJ)\mcastu.obj
X! OVL27 = $(OBJ)\mhitm.obj
X! OVL28 = $(OBJ)\mthrowu.obj
X! OVL29 = $(OBJ)\steal.obj
X! OVL30 = $(OBJ)\priest.obj
X! OVL31 = $(OBJ)\vault.obj
X! OVL32 = $(OBJ)\shk.obj $(OBJ)\shknam.obj
X! OVL33 = $(OBJ)\wizard.obj
X! OVL34 = $(OBJ)\worm.obj
X! OVL35 = $(OBJ)\were.obj
X! OVL36 = $(OBJ)\demon.obj
X! OVL37 = $(OBJ)\artifact.obj
X! OVL38 = $(OBJ)\music.obj $(OBJ)\dbridge.obj
X! OVL39 = $(OBJ)\sit.obj $(OBJ)\fountain.obj
X! OVL40 = $(OBJ)\sounds.obj
X! OVL41 = $(OBJ)\spell.obj
X! OVL42 = $(OBJ)\read.obj
X! OVL43 = $(OBJ)\potion.obj
X! OVL44 = $(OBJ)\zap.obj
X! OVL45 = $(OBJ)\eat.obj $(OBJ)\rumors.obj
X! OVL46 = $(OBJ)\do.obj
X! OVL47 = $(OBJ)\search.obj
X! OVL48 = $(OBJ)\lock.obj
X! OVL49 = $(OBJ)\apply.obj
X! OVL50 = $(OBJ)\engrave.obj $(OBJ)\write.obj
X  OVL51 = $(OBJ)\pray.obj
X  OVL52 = $(OBJ)\options.obj
X  OVL53 = $(OBJ)\pickup.obj
X***************
X*** 496,506 ****
X  $(OBJ)\topten.obj:	$(HACK_H)
X  $(OBJ)\track.obj:	$(HACK_H)
X  $(OBJ)\trampoli.obj:	$(HACK_H)
X! $(OBJ)\trap.obj:	$(HACK_H)   $(INCL)\edog.h	 $(INCL)\trapname.h
X  $(OBJ)\u_init.obj:	$(HACK_H)
X  $(OBJ)\uhitm.obj:	$(HACK_H)   $(INCL)\artifact.h
X  $(OBJ)\vault.obj:	$(HACK_H)   $(INCL)\vault.h
X! $(OBJ)\version.obj:	$(HACK_H)   $(INCL)\date.h
X  $(OBJ)\weapon.obj:	$(HACK_H)
X  $(OBJ)\were.obj:	$(HACK_H)
X  $(OBJ)\wield.obj:	$(HACK_H)
X--- 520,530 ----
X  $(OBJ)\topten.obj:	$(HACK_H)
X  $(OBJ)\track.obj:	$(HACK_H)
X  $(OBJ)\trampoli.obj:	$(HACK_H)
X! $(OBJ)\trap.obj:	$(HACK_H)   $(INCL)\edog.h
X  $(OBJ)\u_init.obj:	$(HACK_H)
X  $(OBJ)\uhitm.obj:	$(HACK_H)   $(INCL)\artifact.h
X  $(OBJ)\vault.obj:	$(HACK_H)   $(INCL)\vault.h
X! $(OBJ)\version.obj:	$(HACK_H)   $(INCL)\date.h	 $(INCL)\patchlev.h
X  $(OBJ)\weapon.obj:	$(HACK_H)
X  $(OBJ)\were.obj:	$(HACK_H)
X  $(OBJ)\wield.obj:	$(HACK_H)
X*** /dev/null	Mon Feb 19 23:30:27 1990
X--- others/lev_lex.c	Fri Feb  9 20:03:52 1990
X***************
X*** 0 ****
X--- 1,1115 ----
X+ #define FLEX_COMPRESSED
X+ /* A lexical scanner generated by flex */
X+ 
X+ /* scanner skeleton version:
X+  * $Header: flex.skel,v 2.0 89/06/20 15:49:46 vern Locked $
X+  */
X+ 
X+ #include <stdio.h>
X+ 
X+ #define FLEX_SCANNER
X+ 
X+ /* amount of stuff to slurp up with each read */
X+ #ifndef YY_READ_BUF_SIZE
X+ #define YY_READ_BUF_SIZE 8192
X+ #endif
X+ 
X+ #ifndef YY_BUF_SIZE
X+ #define YY_BUF_SIZE (YY_READ_BUF_SIZE * 2) /* size of input buffer */
X+ #endif
X+ 
X+ /* returned upon end-of-file */
X+ #define YY_END_TOK 0
X+ 
X+ /* copy whatever the last rule matched to the standard output */
X+ 
X+ #define ECHO fputs( yytext, yyout )
X+ 
X+ /* gets input and stuffs it into "buf".  number of characters read, or YY_NULL,
X+  * is returned in "result".
X+  */
X+ #ifdef atarist
X+ static __st_read(fd, buf, size)
X+ int fd; char *buf; int size;
X+ {
X+ 	int r, num = 0;
X+ 	char *from;
X+ 
X+ 	if ((r = read(fd, buf, size)) < 0)
X+ 		return r;
X+ 	from = buf;
X+ 	while (r-- > 0) {
X+ 		if (*from == '\r')
X+ 			from++;
X+ 		else {
X+ 			*buf++ = *from++;
X+ 			num++;
X+ 		}
X+ 	}
X+ 	return num;
X+ }
X+ 
X+ #define YY_INPUT(buf,result,max_size) \
X+ 	if ( (result = __st_read( fileno(yyin), buf, max_size )) < 0 ) \
X+ 	    YY_FATAL_ERROR( "read() in flex scanner failed" );
X+ 
X+ #else
X+ 
X+ #define YY_INPUT(buf,result,max_size) \
X+ 	if ( (result = read( fileno(yyin), buf, max_size )) < 0 ) \
X+ 	    YY_FATAL_ERROR( "read() in flex scanner failed" );
X+ #endif
X+ 
X+ #define YY_NULL 0
X+ #define yyterminate() return ( YY_NULL )
X+ 
X+ /* report a fatal error */
X+ #define YY_FATAL_ERROR(msg) \
X+ 	{ \
X+ 	fputs( msg, stderr ); \
X+ 	putc( '\n', stderr ); \
X+ 	exit( 1 ); \
X+ 	}
X+ 
X+ /* default yywrap function - always treat EOF as an EOF */
X+ #define yywrap() 1
X+ 
X+ /* enter a start condition.  This macro really ought to take a parameter,
X+  * but we do it the disgusting crufty way forced on us by the ()-less
X+  * definition of BEGIN
X+  */
X+ #define BEGIN yy_start = 1 + 2 *
X+ 
X+ /* action number for EOF rule of a given start state */
X+ #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
X+ 
X+ /* special action meaning "start processing a new file" */
X+ #define YY_NEW_FILE goto new_file
X+ 
X+ /* default declaration of generated scanner - a define so the user can
X+  * easily add parameters
X+  */
X+ #ifdef __STDC__
X+ #define YY_DECL int yylex( void )
X+ #else
X+ #define YY_DECL int yylex()
X+ #endif
X+ 
X+ /* code executed at the end of each rule */
X+ #define YY_BREAK break;
X+ 
X+ #define YY_END_OF_BUFFER_CHAR 0
X+ 
X+ /* done after the current pattern has been matched and before the
X+  * corresponding action - sets up yytext
X+  */
X+ #define YY_DO_BEFORE_ACTION \
X+ 	yytext = yy_bp; \
X+ 	yy_hold_char = *yy_cp; \
X+ 	*yy_cp = '\0'; \
X+ 	yy_c_buf_p = yy_cp;
X+ 
X+ /* returns the length of the matched text */
X+ #define yyleng (int)(yy_cp - yy_bp)
X+ 
X+ #define EOB_ACT_RESTART_SCAN 0
X+ #define EOB_ACT_END_OF_FILE 1
X+ #define EOB_ACT_LAST_MATCH 2
X+ 
X+ /* return all but the first 'n' matched characters back to the input stream */
X+ #define yyless(n) \
X+ 	{ \
X+ 	*yy_cp = yy_hold_char; /* undo effects of setting up yytext */ \
X+ 	yy_c_buf_p = yy_cp = yy_bp + n; \
X+ 	YY_DO_BEFORE_ACTION; /* set up yytext again */ \
X+ 	}
X+ 
X+ #define unput(c) yyunput( c, yy_bp )
X+ 
X+ #define YY_USER_ACTION
X+ 
X+ FILE *yyin = (FILE *) 0, *yyout = (FILE *) 0;
X+ char *yytext;
X+ 
X+ #ifndef __STDC__
X+ #define const
X+ #endif
X+ 
X+ # line 1 "lev_comp.l"
X+ #define INITIAL 0
X+ # line 2 "lev_comp.l"
X+ /*	SCCS Id: @(#)lev_lex.c	3.0	90/01/04
X+ /*	Copyright (c) 1989 by Jean-Christophe Collet */
X+ /* NetHack may be freely redistributed.  See license for details. */
X+ 
X+ #define LEV_LEX_C
X+ 
X+ /* block some unused #defines to avoid overloading some cpp's */
X+ #define MONDATA_H	/* comment this line for pre-compiled headers */
X+ #define MONFLAG_H	/* comment this line for pre-compiled headers */
X+ 
X+ #include "hack.h"
X+ #include "lev_comp.h"
X+ #include "sp_lev.h"
X+ 
X+ /* Most of these don't exist in flex, yywrap is macro and
X+  * yyunput is properly declared in flex.skel.
X+  */
X+ #ifndef FLEX_SCANNER
X+ int FDECL (yyback, (int *, int));
X+ int NDECL (yylook);
X+ int NDECL (yyinput);
X+ int NDECL (yywrap);
X+ int NDECL (yylex);
X+ int FDECL (yyunput, (int));
X+ int FDECL (yyoutput, (int));
X+ #endif
X+ 
X+ #ifdef MSDOS
X+ #undef exit
X+ #endif
X+ 
X+ /* this doesn't always get put in lev_comp.h
X+  * (esp. when using older versions of bison)
X+  */
X+ 
X+ extern YYSTYPE yylval;
X+ 
X+ #ifdef MACOS
X+ #undef putchar
X+ #undef putc
X+ #undef printf
X+ #undef Printf
X+ #define Printf printf
X+ # ifdef LSC
X+ #define	putc(c,stream)	(fputc(c,stream))
X+ #define	putchar(c)	(fputc(c,stdout))
X+ # endif
X+ #endif
X+ int line_number = 1;
X+ 
X+ /* This is *** UGLY *** but I can't think a better way to do it
X+  * I really need a huge buffer to scan maps...
X+  */
X+ 
X+ #undef YYLMAX
X+ #define YYLMAX	2048
X+ 
X+ #define MAPC 1
X+ # line 61 "lev_comp.l"
X+ #define YY_END_OF_BUFFER 57
X+ typedef int yy_state_type;
X+ static const short int yy_accept[274] =
X+     {   0,
X+         0,    0,    0,    0,   57,   55,   53,   52,   55,   55,
X+        50,   55,   55,   55,   55,   55,   55,   55,   55,   55,
X+        55,   55,   55,   55,   55,   55,   55,   55,   55,   55,
X+        55,   55,   55,   55,   55,   55,   55,    1,   53,   55,
X+        55,   55,   53,    0,   51,    0,   50,    0,    0,    0,
X+         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,    0,    0,   48,    0,    0,    3,    0,
X+         1,   53,    0,    0,    1,    0,   54,    0,    0,    0,
X+ 
X+         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
X+        43,    0,   41,    0,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,    0,    0,   39,    0,    0,    0,    0,
X+         0,   11,    0,    0,    0,    0,    4,    0,    0,    0,
X+         0,    0,   21,   10,    0,    0,    0,    0,    0,    0,
X+         0,   49,   28,   36,    0,    0,    0,    0,    0,    0,
X+        22,    0,    0,    0,    0,    0,    0,   30,    7,    0,
X+        18,    0,    0,    0,    5,    0,    0,    0,    0,    0,
X+         0,   35,   47,    0,    0,    0,   45,    0,    0,    0,
X+ 
X+         0,    0,   27,    0,   34,    0,   37,    0,   29,   42,
X+         0,    0,    0,   19,    0,    0,    0,    8,    0,   14,
X+        40,   26,   38,   23,   24,    0,    0,   25,   32,   31,
X+        46,    0,    0,    0,    0,    9,    0,    0,   33,   44,
X+         2,    0,    6,   13,    0,    0,    0,    0,    0,    0,
X+         0,    0,    0,   12,    0,    0,    0,    0,    0,    0,
X+         0,    0,   20,    0,    0,    0,    0,    0,   17,    0,
X+        15,   16,    0
X+     } ;
X+ 
X+ static const char yy_ec[128] =
X+     {   0,
X+         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    4,    1,    5,    6,    1,    1,    1,    7,    1,
X+         1,    1,    8,    1,    8,    8,    1,    9,    9,    9,
X+         9,    9,    9,    9,    9,    9,    9,    1,    1,    1,
X+         1,    1,    1,    1,   10,   11,   12,   13,   14,    1,
X+        15,    1,   16,   17,   18,   19,   20,   21,   22,   23,
X+         1,   24,   25,   26,    1,   27,   28,    1,   29,   30,
X+         1,    8,    1,    1,   31,    1,   32,   33,   34,   35,
X+ 
X+        36,   37,   38,   39,   40,   41,   42,   43,   44,   45,
X+        46,   47,    1,   48,   49,   50,   51,    1,   52,    1,
X+         1,    1,    8,    8,    8,    1,    1
X+     } ;
X+ 
X+ static const char yy_meta[53] =
X+     {   0,
X+         1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1
X+     } ;
X+ 
X+ static const short int yy_base[277] =
X+     {   0,
X+         0,   47,   51,   74,  343,  344,   54,  344,  337,    0,
X+       332,  321,   38,  325,   54,   51,  316,  326,   61,  312,
X+       292,   24,   48,  288,  301,   49,  286,   50,   46,  288,
X+        34,   51,  284,   53,  293,  325,   91,  344,  100,  106,
X+       306,  124,  103,  321,  344,  318,  315,  297,  300,  311,
X+       298,  306,  291,  287,  295,  294,  297,  292,  297,  289,
X+       300,   71,  259,  262,  262,  274,  259,  252,  254,  250,
X+       264,  250,  265,  253,  246,   81,  255,  259,  262,  248,
X+       254,  243,  239,  242,  245,  344,  238,  283,  344,   92,
X+       344,  132,  140,  272,  344,  148,  344,  274,  259,  254,
X+ 
X+       261,  267,  265,  264,  252,  245,  261,  261,  257,  252,
X+       248,  232,  237,  218,  225,  216,  219,  215,  218,  212,
X+       344,  211,  344,  218,  210,  208,  211,  206,  219,  209,
X+       219,  217,  212,  210,  199,  344,  208,  197,  243,  225,
X+       220,  344,  232,  228,  227,  221,  211,  212,  224,  224,
X+       213,  212,  344,  344,  188,  184,  185,  194,  193,  179,
X+       191,  344,  344,  344,  190,  175,  176,  177,  183,  187,
X+       344,  184,  173,  168,  172,  177,  165,  344,  344,  204,
X+       344,  189,  186,  187,  344,  200,  195,  192,  181,  186,
X+       184,  344,  344,  160,  158,  154,  344,  166,  165,  163,
X+ 
X+       166,  149,  344,  146,  344,  151,  344,  158,  344,  344,
X+       170,  176,  167,  344,  171,  165,  173,  344,  156,  344,
X+       344,  344,  344,  344,  344,  138,  142,  344,  344,  344,
X+       344,  181,  170,  153,  163,  344,  165,   97,  344,  344,
X+       344,  164,  344,  344,  168,  150,  160,  151,  155,  157,
X+       146,  147,  153,  344,  143,  136,  146,  147,  141,  127,
X+       135,  131,  344,  127,  113,  112,  109,  101,  344,   98,
X+       344,  344,  344,  173,   62,  175
X+     } ;
X+ 
X+ static const short int yy_def[277] =
X+     {   0,
X+       273,    1,    1,    1,  273,  273,  273,  273,  274,  275,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  276,  273,  273,  273,  273,
X+       273,  276,  273,  274,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  276,  273,  273,
X+       273,  273,  273,  273,  273,  276,  273,  273,  273,  273,
X+ 
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+ 
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,    0,  273,  273,  273
X+     } ;
X+ 
X+ static const short int yy_nxt[397] =
X+     {   0,
X+         6,    7,    8,    7,    9,    6,   10,    6,   11,   12,
X+         6,    6,   13,    6,   14,    6,    6,    6,   15,   16,
X+        17,   18,    6,   19,    6,   20,    6,    6,    6,    6,
X+         6,   21,   22,   23,   24,   25,    6,    6,    6,    6,
X+         6,    6,   26,   27,   28,   29,   30,   31,   32,   33,
X+        34,   35,   36,   38,   39,   43,   40,   43,   40,   49,
X+        54,   50,   46,   52,   41,   80,   37,   53,   40,   63,
X+        58,   64,   55,   81,   59,   40,   38,   39,   77,   42,
X+        70,   40,   60,   65,   71,   75,   66,   41,   72,   82,
X+        67,   40,   78,   37,   73,   76,   83,   85,   40,   86,
X+ 
X+        90,   43,   91,   92,   43,   93,   43,   93,   91,   93,
X+       112,   93,   55,   93,  139,  127,  246,   93,  247,  248,
X+       113,  104,  272,   93,   93,  271,   95,   96,  128,   96,
X+        93,   96,  270,   43,   91,   92,  269,   93,  268,   93,
X+       267,   96,   91,   93,  266,   93,  265,   93,   96,   93,
X+        95,   96,  264,   96,  263,   96,   93,   93,  262,  261,
X+       260,  259,  258,  257,   93,   96,  256,  255,  254,  253,
X+       252,  251,   96,   44,   44,   88,   88,  250,  249,  245,
X+       244,  243,  242,  241,  240,  239,  238,  237,  236,  235,
X+       234,  233,  232,  231,  230,  229,  228,  227,  226,  225,
X+ 
X+       224,  223,  222,  221,  220,  219,  218,  217,  216,  215,
X+       214,  213,  212,  211,  210,  209,  208,  207,  206,  205,
X+       204,  203,  202,  201,  200,  199,  198,  197,  196,  195,
X+       194,  193,  192,  191,  190,  189,  188,  187,  186,  185,
X+       184,  183,  182,  181,  180,  179,  178,  177,  176,  175,
X+       174,  173,  172,  171,  170,  169,  168,  167,  166,  165,
X+       164,  163,  162,  161,  160,  159,  158,  157,  156,  155,
X+       154,  153,  152,  151,  150,  149,  148,  147,  146,  145,
X+       144,  143,  142,  141,  140,   89,  138,  137,  136,  135,
X+       134,  133,  132,  131,  130,  129,  126,  125,  124,  123,
X+ 
X+       122,  121,  120,  119,  118,  117,  116,  115,  114,  111,
X+       110,  109,  108,  107,  106,  105,  104,  103,  102,  101,
X+       100,   99,   98,   47,   97,   45,   94,   89,   87,   84,
X+        79,   74,   69,   68,   62,   61,   57,   56,   51,   48,
X+        47,   45,  273,    5,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273
X+ 
X+     } ;
X+ 
X+ static const short int yy_chk[397] =
X+     {   0,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
X+         1,    1,    2,    3,    3,    7,    3,    7,    3,   13,
X+        16,   13,  275,   15,    3,   31,    2,   15,    3,   22,
X+        19,   22,   16,   31,   19,    3,    4,    4,   29,    4,
X+        26,    4,   19,   23,   26,   28,   23,    4,   26,   32,
X+        23,    4,   29,    4,   26,   28,   32,   34,    4,   34,
X+ 
X+        37,   39,   39,   39,   43,   39,   43,   39,   40,   40,
X+        62,   40,   37,   40,   90,   76,  238,   39,  238,  238,
X+        62,   90,  270,   40,   39,  268,   42,   42,   76,   42,
X+        40,   42,  267,   92,   92,   92,  266,   92,  265,   92,
X+       264,   42,   93,   93,  262,   93,  261,   93,   42,   92,
X+        96,   96,  260,   96,  259,   96,   92,   93,  258,  257,
X+       256,  255,  253,  252,   93,   96,  251,  250,  249,  248,
X+       247,  246,   96,  274,  274,  276,  276,  245,  242,  237,
X+       235,  234,  233,  232,  227,  226,  219,  217,  216,  215,
X+       213,  212,  211,  208,  206,  204,  202,  201,  200,  199,
X+ 
X+       198,  196,  195,  194,  191,  190,  189,  188,  187,  186,
X+       184,  183,  182,  180,  177,  176,  175,  174,  173,  172,
X+       170,  169,  168,  167,  166,  165,  161,  160,  159,  158,
X+       157,  156,  155,  152,  151,  150,  149,  148,  147,  146,
X+       145,  144,  143,  141,  140,  139,  138,  137,  135,  134,
X+       133,  132,  131,  130,  129,  128,  127,  126,  125,  124,
X+       122,  120,  119,  118,  117,  116,  115,  114,  113,  112,
X+       111,  110,  109,  108,  107,  106,  105,  104,  103,  102,
X+       101,  100,   99,   98,   94,   88,   87,   85,   84,   83,
X+        82,   81,   80,   79,   78,   77,   75,   74,   73,   72,
X+ 
X+        71,   70,   69,   68,   67,   66,   65,   64,   63,   61,
X+        60,   59,   58,   57,   56,   55,   54,   53,   52,   51,
X+        50,   49,   48,   47,   46,   44,   41,   36,   35,   33,
X+        30,   27,   25,   24,   21,   20,   18,   17,   14,   12,
X+        11,    9,    5,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273,  273,  273,  273,  273,
X+       273,  273,  273,  273,  273,  273
X+ 
X+     } ;
X+ 
X+ /* the intent behind this definition is that it'll catch
X+  * any uses of REJECT which flex missed
X+  */
X+ #define REJECT reject_used_but_not_detected
X+ static char *yy_more_pos = (char *) 0;
X+ #define yymore() (yy_more_pos = yy_bp)
X+ 
X+ /* these variables are all declared out here so that section 3 code can
X+  * manipulate them
X+  */
X+ static char *yy_c_buf_p;	/* points to current character in buffer */
X+ static int yy_init = 1;		/* whether we need to initialize */
X+ static int yy_start = 0;	/* start state number */
X+ 
X+ /* true when we've seen an EOF for the current input file */
X+ static int yy_eof_has_been_seen;
X+ 
X+ static int yy_n_chars;		/* number of characters read into yy_ch_buf */
X+ 
X+ /* yy_ch_buf has to be 2 characters longer than YY_BUF_SIZE because we need
X+  * to put in 2 end-of-buffer characters (this is explained where it is
X+  * done) at the end of yy_ch_buf
X+  */
X+ static char yy_ch_buf[YY_BUF_SIZE + 2];
X+ 
X+ /* yy_hold_char holds the character lost when yytext is formed */
X+ static char yy_hold_char;
X+ 
X+ static yy_state_type yy_last_accepting_state;
X+ static char *yy_last_accepting_cpos;
X+ 
X+ #ifdef __STDC__
X+ static yy_state_type yy_get_previous_state( void );
X+ static int yy_get_next_buffer( void );
X+ static void yyunput( int c, char *buf_ptr );
X+ static int input( void );
X+ static void yyrestart( FILE *input_file );
X+ #else
X+ static yy_state_type yy_get_previous_state();
X+ static int yy_get_next_buffer();
X+ static void yyunput();
X+ static int input();
X+ static void yyrestart();
X+ #endif
X+ 
X+ YY_DECL
X+     {
X+     register yy_state_type yy_current_state;
X+     register char *yy_cp, *yy_bp;
X+     register int yy_act;
X+ 
X+ 
X+ 
X+     if ( yy_init )
X+ 	{
X+ 	if ( ! yy_start )
X+ 	    yy_start = 1;	/* first start state */
X+ 
X+ 	if ( ! yyin )
X+ 	    yyin = stdin;
X+ 
X+ 	if ( ! yyout )
X+ 	    yyout = stdout;
X+ 
X+ new_file:
X+ 	/* this is where we enter upon encountering an end-of-file and
X+ 	 * yywrap() indicating that we should continue processing
X+ 	 */
X+ 
X+ 	/* we put in the '\n' and start reading from [1] so that an
X+ 	 * initial match-at-newline will be true.
X+ 	 */
X+ 
X+ 	yy_ch_buf[0] = '\n';
X+ 	yy_n_chars = 1;
X+ 
X+ 	/* we always need two end-of-buffer characters.  The first causes
X+ 	 * a transition to the end-of-buffer state.  The second causes
X+ 	 * a jam in that state.
X+ 	 */
X+ 	yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
X+ 	yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
X+ 
X+ 	yy_eof_has_been_seen = 0;
X+ 
X+ 	yytext = yy_c_buf_p = &yy_ch_buf[1];
X+ 	yy_hold_char = *yy_c_buf_p;
X+ 	yy_init = 0;
X+ 	}
X+ 
X+     while ( 1 )		/* loops until end-of-file is reached */
X+ 	{
X+ 	yy_cp = yy_c_buf_p;
X+ 
X+ 	/* support of yytext */
X+ 	*yy_cp = yy_hold_char;
X+ 
X+ 	/* yy_bp points to the position in yy_ch_buf of the start of the
X+ 	 * current run.
X+ 	 */
X+ 	if ( yy_more_pos )
X+ 	    {
X+ 	    yy_bp = yy_more_pos;
X+ 	    yy_more_pos = (char *) 0;
X+ 	    }
X+ 	else
X+ 	    yy_bp = yy_cp;
X+ 
X+ 	yy_current_state = yy_start;
X+ 	if ( yy_bp[-1] == '\n' )
X+ 	    ++yy_current_state;
X+ 	do
X+ 	    {
X+ 	    register char yy_c = yy_ec[*yy_cp];
X+ 	    if ( yy_accept[yy_current_state] )
X+ 		{
X+ 		yy_last_accepting_state = yy_current_state;
X+ 		yy_last_accepting_cpos = yy_cp;
X+ 		}
X+ 	    while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
X+ 		{
X+ 		yy_current_state = yy_def[yy_current_state];
X+ 		if ( yy_current_state >= 274 )
X+ 		    yy_c = yy_meta[yy_c];
X+ 		}
X+ 	    yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
X+ 	    ++yy_cp;
X+ 	    }
X+ 	while ( yy_current_state != 273 );
X+ 	yy_cp = yy_last_accepting_cpos;
X+ 	yy_current_state = yy_last_accepting_state;
X+ 
X+ 	/* bogus while loop to let YY_BACK_TRACK, EOB_ACT_LAST_MATCH,
X+ 	 * and EOF actions branch here without introducing an optimizer-
X+ 	 * daunting goto
X+ 	 */
X+ 	while ( 1 )
X+ 	    {
X+ 	    yy_act = yy_accept[yy_current_state];
X+ 
X+ 	    YY_DO_BEFORE_ACTION;
X+ 	    YY_USER_ACTION;
X+ 
X+ #ifdef FLEX_DEBUG
X+ 	    fprintf( stderr, "--accepting rule #%d (\"%s\")\n",
X+ 		     yy_act, yytext );
X+ #endif
X+ 
X+ do_action:	/* this label is used only to access EOF actions */
X+ 	    switch ( yy_act )
X+ 		{
X+ 		case 0: /* must backtrack */
X+ 		/* undo the effects of YY_DO_BEFORE_ACTION */
X+ 		*yy_cp = yy_hold_char;
X+ 		yy_cp = yy_last_accepting_cpos;
X+ 		yy_current_state = yy_last_accepting_state;
X+ 		continue; /* go to "YY_DO_BEFORE_ACTION" */
X+ 
X+ case 1:
X+ # line 62 "lev_comp.l"
X+ { line_number++; yymore(); }	
X+ 	YY_BREAK
X+ case 2:
X+ # line 63 "lev_comp.l"
X+ { BEGIN 0;
X+ 		  line_number++;
X+ 		  yytext[yyleng-7] = 0; /* Discard \nENDMAP */
X+ 		  yylval.map = (char *) alloc(strlen(yytext)+1);
X+ 		  strcpy(yylval.map, yytext);
X+ 		  return MAP_ID;
X+ 		}
X+ 	YY_BREAK
X+ case 3:
X+ # line 70 "lev_comp.l"
X+ { line_number++; }
X+ 	YY_BREAK
X+ case 4:
X+ # line 71 "lev_comp.l"
X+ return MAZE_ID;
X+ 	YY_BREAK
X+ case 5:
X+ # line 72 "lev_comp.l"
X+ return LEVEL_ID;
X+ 	YY_BREAK
X+ case 6:
X+ # line 73 "lev_comp.l"
X+ return GEOMETRY_ID;
X+ 	YY_BREAK
X+ case 7:
X+ # line 74 "lev_comp.l"
X+ { BEGIN MAPC; line_number++; }
X+ 	YY_BREAK
X+ case 8:
X+ # line 75 "lev_comp.l"
X+ return OBJECT_ID;
X+ 	YY_BREAK
X+ case 9:
X+ # line 76 "lev_comp.l"
X+ return MONSTER_ID;
X+ 	YY_BREAK
X+ case 10:
X+ # line 77 "lev_comp.l"
X+ return TRAP_ID;
X+ 	YY_BREAK
X+ case 11:
X+ # line 78 "lev_comp.l"
X+ return DOOR_ID;
X+ 	YY_BREAK
X+ case 12:
X+ # line 79 "lev_comp.l"
X+ return DRAWBRIDGE_ID;
X+ 	YY_BREAK
X+ case 13:
X+ # line 80 "lev_comp.l"
X+ return MAZEWALK_ID;
X+ 	YY_BREAK
X+ case 14:
X+ # line 81 "lev_comp.l"
X+ return REGION_ID;
X+ 	YY_BREAK
X+ case 15:
X+ # line 82 "lev_comp.l"
X+ return RANDOM_OBJECTS_ID;
X+ 	YY_BREAK
X+ case 16:
X+ # line 83 "lev_comp.l"
X+ return RANDOM_MONSTERS_ID;
X+ 	YY_BREAK
X+ case 17:
X+ # line 84 "lev_comp.l"
X+ return RANDOM_PLACES_ID;
X+ 	YY_BREAK
X+ case 18:
X+ # line 85 "lev_comp.l"
X+ return ALTAR_ID;
X+ 	YY_BREAK
X+ case 19:
X+ # line 86 "lev_comp.l"
X+ return LADDER_ID;
X+ 	YY_BREAK
X+ case 20:
X+ # line 87 "lev_comp.l"
X+ return NON_DIGGABLE_ID;
X+ 	YY_BREAK
X+ case 21:
X+ # line 88 "lev_comp.l"
X+ return ROOM_ID;
X+ 	YY_BREAK
X+ case 22:
X+ # line 89 "lev_comp.l"
X+ { yylval.i=D_ISOPEN; return DOOR_STATE; }
X+ 	YY_BREAK
X+ case 23:
X+ # line 90 "lev_comp.l"
X+ { yylval.i=D_CLOSED; return DOOR_STATE; }
X+ 	YY_BREAK
X+ case 24:
X+ # line 91 "lev_comp.l"
X+ { yylval.i=D_LOCKED; return DOOR_STATE; }
X+ 	YY_BREAK
X+ case 25:
X+ # line 92 "lev_comp.l"
X+ { yylval.i=D_NODOOR; return DOOR_STATE; }
X+ 	YY_BREAK
X+ case 26:
X+ # line 93 "lev_comp.l"
X+ { yylval.i=D_BROKEN; return DOOR_STATE; }
X+ 	YY_BREAK
X+ case 27:
X+ # line 94 "lev_comp.l"
X+ { yylval.i=W_NORTH; return DIRECTION; }
X+ 	YY_BREAK
X+ case 28:
X+ # line 95 "lev_comp.l"
X+ { yylval.i=W_EAST; return DIRECTION; }
X+ 	YY_BREAK
X+ case 29:
X+ # line 96 "lev_comp.l"
X+ { yylval.i=W_SOUTH; return DIRECTION; }
X+ 	YY_BREAK
X+ case 30:
X+ # line 97 "lev_comp.l"
X+ { yylval.i=W_WEST; return DIRECTION; }
X+ 	YY_BREAK
X+ case 31:
X+ # line 98 "lev_comp.l"
X+ { yylval.i = -1; return RANDOM_TYPE; }
X+ 	YY_BREAK
X+ case 32:
X+ # line 99 "lev_comp.l"
X+ return O_REGISTER;
X+ 	YY_BREAK
X+ case 33:
X+ # line 100 "lev_comp.l"
X+ return M_REGISTER;
X+ 	YY_BREAK
X+ case 34:
X+ # line 101 "lev_comp.l"
X+ return P_REGISTER;
X+ 	YY_BREAK
X+ case 35:
X+ # line 102 "lev_comp.l"
X+ return A_REGISTER;
X+ 	YY_BREAK
X+ case 36:
X+ # line 103 "lev_comp.l"
X+ { yylval.i=1; return LEFT_OR_RIGHT; }
X+ 	YY_BREAK
X+ case 37:
X+ # line 104 "lev_comp.l"
X+ { yylval.i=3; return LEFT_OR_RIGHT; }
X+ 	YY_BREAK
X+ case 38:
X+ # line 105 "lev_comp.l"
X+ { yylval.i=2; return CENTER; }
X+ 	YY_BREAK
X+ case 39:
X+ # line 106 "lev_comp.l"
X+ { yylval.i=1; return TOP_OR_BOT; }
X+ 	YY_BREAK
X+ case 40:
X+ # line 107 "lev_comp.l"
X+ { yylval.i=3; return TOP_OR_BOT; }
X+ 	YY_BREAK
X+ case 41:
X+ # line 108 "lev_comp.l"
X+ { yylval.i=1; return LIGHT_STATE; }
X+ 	YY_BREAK
X+ case 42:
X+ # line 109 "lev_comp.l"
X+ { yylval.i=0; return LIGHT_STATE; }
X+ 	YY_BREAK
X+ case 43:
X+ # line 110 "lev_comp.l"
X+ { yylval.i=A_LAW; return ALIGNMENT; }
X+ 	YY_BREAK
X+ case 44:
X+ # line 111 "lev_comp.l"
X+ { yylval.i=A_NEUTRAL; return ALIGNMENT; }
X+ 	YY_BREAK
X+ case 45:
X+ # line 112 "lev_comp.l"
X+ { yylval.i=A_CHAOS; return ALIGNMENT; }
X+ 	YY_BREAK
X+ case 46:
X+ # line 113 "lev_comp.l"
X+ { yylval.i=1; return ALTAR_TYPE; }
X+ 	YY_BREAK
X+ case 47:
X+ # line 114 "lev_comp.l"
X+ { yylval.i=0; return ALTAR_TYPE; }
X+ 	YY_BREAK
X+ case 48:
X+ # line 115 "lev_comp.l"
X+ { yylval.i=1; return UP_OR_DOWN; }
X+ 	YY_BREAK
X+ case 49:
X+ # line 116 "lev_comp.l"
X+ { yylval.i=0; return UP_OR_DOWN; }
X+ 	YY_BREAK
X+ case 50:
X+ # line 117 "lev_comp.l"
X+ { yylval.i=atoi(yytext); return INTEGER; }
X+ 	YY_BREAK
X+ case 51:
X+ # line 118 "lev_comp.l"
X+ { yytext[yyleng-1] = 0; /* Discard the trailing \" */
X+ 		  yylval.map = (char *) alloc(strlen(yytext+1)+1);
X+ 		  strcpy(yylval.map, yytext+1); /* Discard the first \" */
X+ 		  return STRING; }
X+ 	YY_BREAK
X+ case 52:
X+ # line 122 "lev_comp.l"
X+ { line_number++; }
X+ 	YY_BREAK
X+ case 53:
X+ # line 123 "lev_comp.l"
X+ ;
X+ 	YY_BREAK
X+ case 54:
X+ # line 124 "lev_comp.l"
X+ { yylval.i = yytext[1]; return CHAR; }
X+ 	YY_BREAK
X+ case 55:
X+ # line 125 "lev_comp.l"
X+ { return yytext[0]; }
X+ 	YY_BREAK
X+ case 56:
X+ # line 126 "lev_comp.l"
X+ ECHO;
X+ 	YY_BREAK
X+ case YY_STATE_EOF(INITIAL):
X+ case YY_STATE_EOF(MAPC):
X+     yyterminate();
X+ 
X+ 		case YY_END_OF_BUFFER:
X+ 		    /* undo the effects of YY_DO_BEFORE_ACTION */
X+ 		    *yy_cp = yy_hold_char;
X+ 
X+ 		    yytext = yy_bp;
X+ 
X+ 		    switch ( yy_get_next_buffer() )
X+ 			{
X+ 			case EOB_ACT_END_OF_FILE:
X+ 			    {
X+ 			    if ( yywrap() )
X+ 				{
X+ 				/* note: because we've taken care in
X+ 				 * yy_get_next_buffer() to have set up yytext,
X+ 				 * we can now set up yy_c_buf_p so that if some
X+ 				 * total hoser (like flex itself) wants
X+ 				 * to call the scanner after we return the
X+ 				 * YY_NULL, it'll still work - another YY_NULL
X+ 				 * will get returned.
X+ 				 */
X+ 				yy_c_buf_p = yytext;
X+ 
X+ 				yy_act = YY_STATE_EOF((yy_start - 1) / 2);
X+ 				goto do_action;
X+ 				}
X+ 
X+ 			    else
X+ 				YY_NEW_FILE;
X+ 			    }
X+ 			    break;
X+ 
X+ 			case EOB_ACT_RESTART_SCAN:
X+ 			    yy_c_buf_p = yytext;
X+ 			    yy_hold_char = *yy_c_buf_p;
X+ 			    break;
X+ 
X+ 			case EOB_ACT_LAST_MATCH:
X+ 			    yy_c_buf_p = &yy_ch_buf[yy_n_chars];
X+ 
X+ 			    yy_current_state = yy_get_previous_state();
X+ 
X+ 			    yy_cp = yy_c_buf_p;
X+ 			    yy_bp = yytext;
X+ 			    continue; /* go to "YY_DO_BEFORE_ACTION" */
X+ 			}
X+ 		    break;
X+ 
X+ 		default:
X+ 		    printf( "action # %d\n", yy_act );
X+ 		    YY_FATAL_ERROR( "fatal flex scanner internal error" );
X+ 		}
X+ 
X+ 	    break; /* exit bogus while loop */
X+ 	    }
X+ 	}
X+     }
X+ 
X+ 
X+ /* yy_get_next_buffer - try to read in new buffer
X+  *
X+  * synopsis
X+  *     int yy_get_next_buffer();
X+  *     
X+  * returns a code representing an action
X+  *     EOB_ACT_LAST_MATCH - 
X+  *     EOB_ACT_RESTART_SCAN - restart the scanner
X+  *     EOB_ACT_END_OF_FILE - end of file
X+  */
X+ 
X+ static int yy_get_next_buffer()
X+ 
X+     {
X+     register char *dest = yy_ch_buf;
X+     register char *source = yytext - 1; /* copy prev. char, too */
X+     register int number_to_move, i;
X+     int ret_val;
X+     
X+     if ( yy_c_buf_p != &yy_ch_buf[yy_n_chars + 1] )
X+ 	{
X+ 	YY_FATAL_ERROR( "NULL in input" );
X+ 	/*NOTREACHED*/
X+ 	}
X+ 
X+     /* try to read more data */
X+ 
X+     /* first move last chars to start of buffer */
X+     number_to_move = yy_c_buf_p - yytext;
X+ 
X+     for ( i = 0; i < number_to_move; ++i )
X+ 	*(dest++) = *(source++);
X+ 
X+     if ( yy_eof_has_been_seen )
X+ 	/* don't do the read, it's not guaranteed to return an EOF,
X+ 	 * just force an EOF
X+ 	 */
X+ 	yy_n_chars = 0;
X+ 
X+     else
X+ 	{
X+ 	int num_to_read = YY_BUF_SIZE - number_to_move - 1;
X+ 
X+ 	if ( num_to_read > YY_READ_BUF_SIZE )
X+ 	    num_to_read = YY_READ_BUF_SIZE;
X+ 
X+ 	/* read in more data */
X+ 	YY_INPUT( (&yy_ch_buf[number_to_move]), yy_n_chars, num_to_read );
X+ 	}
X+ 
X+     if ( yy_n_chars == 0 )
X+ 	{
X+ 	if ( number_to_move == 1 )
X+ 	    ret_val = EOB_ACT_END_OF_FILE;
X+ 	else
X+ 	    ret_val = EOB_ACT_LAST_MATCH;
X+ 
X+ 	yy_eof_has_been_seen = 1;
X+ 	}
X+ 
X+     else
X+ 	ret_val = EOB_ACT_RESTART_SCAN;
X+ 
X+     yy_n_chars += number_to_move;
X+     yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
X+     yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
X+ 
X+     /* yytext begins at the second character in
X+      * yy_ch_buf; the first character is the one which
X+      * preceded it before reading in the latest buffer;
X+      * it needs to be kept around in case it's a
X+      * newline, so yy_get_previous_state() will have
X+      * with '^' rules active
X+      */
X+ 
X+     yytext = &yy_ch_buf[1];
X+ 
X+     return ( ret_val );
X+     }
X+ 
X+ 
X+ /* yy_get_previous_state - get the state just before the EOB char was reached
X+  *
X+  * synopsis
X+  *     yy_state_type yy_get_previous_state();
X+  */
X+ 
X+ static yy_state_type yy_get_previous_state()
X+ 
X+     {
X+     register yy_state_type yy_current_state;
X+     register char *yy_cp;
X+ 
X+     register char *yy_bp = yytext;
X+ 
X+     yy_current_state = yy_start;
X+     if ( yy_bp[-1] == '\n' )
X+ 	++yy_current_state;
X+ 
X+     for ( yy_cp = yytext; yy_cp < yy_c_buf_p; ++yy_cp )
X+ 	{
X+ 	register char yy_c = yy_ec[*yy_cp];
X+ 	if ( yy_accept[yy_current_state] )
X+ 	    {
X+ 	    yy_last_accepting_state = yy_current_state;
X+ 	    yy_last_accepting_cpos = yy_cp;
X+ 	    }
X+ 	while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
X+ 	    {
X+ 	    yy_current_state = yy_def[yy_current_state];
X+ 	    if ( yy_current_state >= 274 )
X+ 		yy_c = yy_meta[yy_c];
X+ 	    }
X+ 	yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
X+ 	}
X+ 
X+     return ( yy_current_state );
X+     }
X+ 
X+ 
X+ #ifdef __STDC__
X+ static void yyunput( int c, register char *yy_bp )
X+ #else
X+ static void yyunput( c, yy_bp )
X+ int c;
X+ register char *yy_bp;
X+ #endif
X+ 
X+     {
X+     register char *yy_cp = yy_c_buf_p;
X+ 
X+     *yy_cp = yy_hold_char; /* undo effects of setting up yytext */
X+ 
X+     if ( yy_cp < yy_ch_buf + 2 )
X+ 	{ /* need to shift things up to make room */
X+ 	register int number_to_move = yy_n_chars + 2; /* +2 for EOB chars */
X+ 	register char *dest = &yy_ch_buf[YY_BUF_SIZE + 2];
X+ 	register char *source = &yy_ch_buf[number_to_move];
X+ 
X+ 	while ( source > yy_ch_buf )
X+ 	    *--dest = *--source;
X+ 
X+ 	yy_cp += dest - source;
X+ 	yy_bp += dest - source;
X+ 
X+ 	if ( yy_cp < yy_ch_buf + 2 )
X+ 	    YY_FATAL_ERROR( "flex scanner push-back overflow" );
X+ 	}
X+ 
X+     if ( yy_cp > yy_bp && yy_cp[-1] == '\n' )
X+ 	yy_cp[-2] = '\n';
X+ 
X+     *--yy_cp = c;
X+ 
X+     YY_DO_BEFORE_ACTION; /* set up yytext again */
X+     }
X+ 
X+ 
X+ static int input()
X+ 
X+     {
X+     int c;
X+     char *yy_cp = yy_c_buf_p;
X+ 
X+     *yy_cp = yy_hold_char;
X+ 
X+     if ( *yy_c_buf_p == YY_END_OF_BUFFER_CHAR )
X+ 	{ /* need more input */
X+ 	yytext = yy_c_buf_p;
X+ 	++yy_c_buf_p;
X+ 
X+ 	switch ( yy_get_next_buffer() )
X+ 	    {
X+ 	    /* this code, unfortunately, is somewhat redundant with
X+ 	     * that above
X+ 	     */
X+ 	    case EOB_ACT_END_OF_FILE:
X+ 		{
X+ 		if ( yywrap() )
X+ 		    {
X+ 		    yy_c_buf_p = yytext;
X+ 		    return ( EOF );
X+ 		    }
X+ 
X+ 		yy_ch_buf[0] = '\n';
X+ 		yy_n_chars = 1;
X+ 		yy_ch_buf[yy_n_chars] = YY_END_OF_BUFFER_CHAR;
X+ 		yy_ch_buf[yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR;
X+ 		yy_eof_has_been_seen = 0;
X+ 		yytext = yy_c_buf_p = &yy_ch_buf[1];
X+ 		yy_hold_char = *yy_c_buf_p;
X+ 
X+ 		return ( input() );
X+ 		}
X+ 		break;
X+ 
X+ 	    case EOB_ACT_RESTART_SCAN:
X+ 		yy_c_buf_p = yytext;
X+ 		break;
X+ 
X+ 	    case EOB_ACT_LAST_MATCH:
X+ 		YY_FATAL_ERROR( "unexpected last match in input()" );
X+ 	    }
X+ 	}
X+ 
X+     c = *yy_c_buf_p;
X+     yy_hold_char = *++yy_c_buf_p;
X+ 
X+     return ( c );
X+     }
X+ 
X+ 
X+ #ifdef __STDC__
X+ static void yyrestart( FILE *input_file )
X+ #else
X+ static void yyrestart( input_file )
X+ FILE *input_file;
X+ #endif
X+ 
X+     {
X+     if ( yyin != stdin )
X+ 	fclose( yyin );
X+ 
X+     yyin = input_file;
X+     yy_init = 1;
X+     }
X+ # line 126 "lev_comp.l"
X+ 
X+ #ifdef	AMIGA
X+ long *alloc(n)
X+ 	unsigned n;
X+ {
X+ 	return ((long *)malloc (n));
X+ }
X+ #endif
X*** others/Old/ovlmgr.doc	Mon Feb 19 23:34:04 1990
X--- others/ovlmgr.doc	Mon Feb 19 23:23:01 1990
X***************
X*** 1,6 ****
X  		     Brief notes about ovlmgr.asm
X  		     ----------------------------
X! 			 (revised 1989nov12)
X  
X  OVLMGR.ASM is a preliminary version of a multiple-residency overlay
X  manager for use with the Microsoft Overlay Linker. It is functionally
X--- 1,6 ----
X  		     Brief notes about ovlmgr.asm
X  		     ----------------------------
X! 		     (version 3.0.624: 1990Feb19)
X  
X  OVLMGR.ASM is a preliminary version of a multiple-residency overlay
X  manager for use with the Microsoft Overlay Linker. It is functionally
X***************
X*** 104,116 ****
X  NOTA BENE: This is a preliminary version of the overlay manager, but
X  by now it should be fairly well debugged. If you are considering
X  upgrading it please be aware that the following improvements are
X! planned for the next version (though who knows when delivery will
X! occur):
X  	Twice the speed
X  	EMS support
X! 	compatible versions of setjmp() and longjmp()
X! 	Integration with malloc() so the heap can grow
X  	Major code revamping
X  
X  Enjoy!
X  ------------------------------------------------------------------------
X--- 104,120 ----
X  NOTA BENE: This is a preliminary version of the overlay manager, but
X  by now it should be fairly well debugged. If you are considering
X  upgrading it please be aware that the following improvements are
X! planned for the next version (many of them are already written and are
X! now being debugged or tested):
X! 
X  	Twice the speed
X+ 	Better memory utilisation
X  	EMS support
X! 	i386 support
X! 	Compatible versions of setjmp() and longjmp()
X! 	A method of changing the C heap size without relinking
X  	Major code revamping
X+ 	Monitoring, tuning and debugging tools
X  
X  Enjoy!
X  ------------------------------------------------------------------------
X***************
X*** 160,165 ****
X--- 164,177 ----
X  
X  Locking overlays into memory is not really implemeted even though
X  reading the source code might make you think it was.
X+ 
X+ Although we have not found a way of supporting versions of DOS prior
X+ to 3.0, the overlay manager still does not check that it is running
X+ under 3.0 or better (a stupid oversight at the time of writing).
X+ 
X+ This is not actually the most recent version of the overlay manager,
X+ but it IS the most recent one that seems to run cleanly with NetHack.
X+ A phenomenon that we are still investigating....
X  ------------------------------------------------------------------------
X  BUG ALERT
X  
X***************
X*** 169,174 ****
X--- 181,203 ----
X  pointer, you *will* die with ours. Nothing in an overlay ever ends up
X  in the same segment as the linker anticipated.	You have been warned!
X  ------------------------------------------------------------------------
X+ BUGS FIXED
X+ 
X+ A couple of rather stupid and/or unpleasant bugs have been fixed in
X+ this version (unfortunately called 3.0.624):
X+ 
X+ The interrupt vectors are now restored correctly when the programme
X+ exits, making a number of strange and worrisome interactions with DOS
X+ go away.
X+ 
X+ The lru computation is now done correctly, reducing the amount of disk
X+ I/O dramatically, and bringing behaviour in line with the theoretical
X+ model.
X+ 
X+ The implementation of the exec() call is now significantly cleaner and
X+ the chance of unfortunate interactions with software run in a subshell
X+ is greatly reduced.
X+ ------------------------------------------------------------------------
X  FOOTNOTES
X  
X  (1) If you hunt through the code you will find a magic constant you
X***************
X*** 195,200 ****
X  part of NetHack and may be freely distributed as described in the
X  NetHack license.
X  ----------------------------------------------------------------------
X! Stephen P Spackman		       stephen@concour.cs.concordia.ca
X  ----------------------------------------------------------------------
X!      Copyright (C) 1989 Pierre G Martineau and Stephen P Spackman
X--- 224,230 ----
X  part of NetHack and may be freely distributed as described in the
X  NetHack license.
X  ----------------------------------------------------------------------
X! Stephen P Spackman		             stephen@tira.uchicago.edu
X! Pierre G Martineau             elevia!ozrout!pierre@clyde.concordia.ca
X  ----------------------------------------------------------------------
X!   Copyright (C) 1989, 1990 Pierre G Martineau and Stephen P Spackman
X*** others/Old/pctty.c	Mon Feb 19 23:35:31 1990
X--- others/pctty.c	Thu Jan 25 22:19:45 1990
X***************
X*** 3,9 ****
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* tty.c - (PC) version */
X  
X! #define NEED_VARARGS
X  #include "hack.h"
X  
X  char erase_char, kill_char;
X--- 3,9 ----
X  /* NetHack may be freely redistributed.  See license for details. */
X  /* tty.c - (PC) version */
X  
X! #define NEED_VARARGS /* Uses ... */	/* comment line for pre-compiled headers */
X  #include "hack.h"
X  
X  char erase_char, kill_char;
X***************
X*** 25,31 ****
X  
X  /* reset terminal to original state */
X  void
X! settty(s) char *s; {
X  	end_screen();
X  	if(s) Printf(s);
X  	(void) fflush(stdout);
X--- 25,33 ----
X  
X  /* reset terminal to original state */
X  void
X! settty(s)
X! const char *s;
X! {
X  	end_screen();
X  	if(s) Printf(s);
X  	(void) fflush(stdout);
X***************
X*** 38,46 ****
X  /*VARARGS1*/
X  
X  void
X! error VA_DECL(char *,s)
X  	VA_START(s);
X! 	VA_INIT(s, char *);
X  	end_screen();
X  	putchar('\n');
X  	Vprintf(s,VA_ARGS);
X--- 40,48 ----
X  /*VARARGS1*/
X  
X  void
X! error VA_DECL(const char *,s)
X  	VA_START(s);
X! 	VA_INIT(s, const char *);
X  	end_screen();
X  	putchar('\n');
X  	Vprintf(s,VA_ARGS);
X
END_OF_FILE
if test 55350 -ne `wc -c <'patch7.20'`; then
    echo shar: \"'patch7.20'\" unpacked with wrong size!
fi
# end of 'patch7.20'
echo shar: End of archive 12 \(of 30\).
cp /dev/null ark12isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 30 archives.
    rm -f ark[1-9]isdone ark[1-9][0-9]isdone
else
    echo You still need to unpack the following archives:
    echo "        " ${MISSING}
fi
##  End of shell archive.
exit 0