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