diff -Naurd ../nethack-3.4.0/sys/os2/Makefile.os2 ./sys/os2/Makefile.os2
--- ../nethack-3.4.0/sys/os2/Makefile.os2 Wed Mar 20 23:43:45 2002
+++ ./sys/os2/Makefile.os2 Mon Feb 24 15:25:05 2003
@@ -1,24 +1,13 @@
-#	SCCS Id: @(#)Makefile.os2	3.4	1996/10/29
-#	OS/2 NetHack 3.4 Makefile for OS/2 versions 1.x and 2.x
+#	SCCS Id: @(#)Makefile.os2	3.4.1	1996/10/29
+#	OS/2 NetHack 3.4.1 Makefile for OS/2 versions 1.x and 2.x
 #	Copyright (C) 1990, 1991, 1992, 1993, 1996 Timo Hakulinen
 #
 #	Several compilers exist for OS/2 but, currently only GCC emx is tested
-#	and used for releases.  make programs other than dmake are not tested
-#	and the support is left here for historic purposes.
+#	and used for releases.  make programs other than dmake are not tested.
 #
 #	Supported compilers: GCC emx 0.9g
 #
-#	NDMAKE ver 4.5, Microsoft/IBM NMAKE, or Dennis Vadura's DMAKE is
-#	required; old MS-MAKE will not work.  To enable the appropriate
-#	make utility, uncomment the respective make-specific macros.  If
-#	you plan to cross-compile in DOS, your best bet is NDMAKE, since
-#	it requires less memory than NMAKE.  To compile in OS/2 use NMAKE,
-#	DMAKE or something compatible.  Remember to set $(RLIBS) to real mode
-#	libraries if cross-compiling in DOS, and to protected mode libraries
-#	for compilation in OS/2.
-#
-#	GNU MAKE for OS/2 seems to be too limited / braindamaged at the
-#	moment for me to bother implementing support for it.  Maybe later.
+#	DMAKE is required.  Credit for the makefile improvements goes to Pekka Rousu.
 #
 #	Copy this file into $(SRC) directory, rename it to "makefile"
 #	(important, many targets rely on it), compile and link inside
@@ -48,78 +37,67 @@
 #	Compiler and linker selection.
 #
 
+#format        = omf
+format = a.out
+
+.IF $(format) == a.out
+with_x11 = yes
+#debug = yes
+.END
+
+
 CC	= gcc		# GCC
 
+.IF $(format) == a.out
 LINK    = gcc
-#LINK	= link386	# GCC OMF, CSet/2
-
-#
-#  Uncomment the following to compile for X11 and set X11ROOT apropriately
-#
-#WINX11OBJ01 =  $(OBJ)/Window.o
-#WINX11OBJ02 = $(OBJ)/dialogs.o
-#WINX11OBJ03 = $(OBJ)/winX.o
-#WINX11OBJ04 = $(OBJ)/winmap.o
-#WINX11OBJ05 = $(OBJ)/winmenu.o
-#WINX11OBJ06 = $(OBJ)/winmesg.o
-#WINX11OBJ07 = $(OBJ)/winmisc.o
-#WINX11OBJ08 = $(OBJ)/winstat.o
-#WINX11OBJ09 = $(OBJ)/wintext.o
-#WINX11OBJ10 = $(OBJ)/winval.o
-#WINX11OBJ11 = $(OBJ)/tile.o
-#X11ROOT = e:/xfree86
-#WINX11CFLAGS = -DUSE_XPM -DX11_GRAPHICS \
-#            -I$(X11ROOT)/include -Zmtd
-#WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm -L$(X11ROOT)/lib -lc_app
-#WINX11SRC = ../win/X11/Window.c ../win/X11/dialogs.c ../win/X11/winX.c \
-#	../win/X11/winmap.c  ../win/X11/winmenu.c ../win/X11/winmesg.c \
-#	../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \
-#	../win/X11/winval.c tile.c
-#WINX11OBJ = $(WINX11OBJ01) $(WINX11OBJ02) $(WINX11OBJ03) $(WINX11OBJ04) \
-#	$(WINX11OBJ05) $(WINX11OBJ06) $(WINX11OBJ07) $(WINX11OBJ08) \
-#	$(WINX11OBJ09) $(WINX11OBJ10) $(WINX11OBJ11)
-#WINX11VARDAT=x11tiles pet_mark.xbm rip.xpm
-#X11ECHO	= $(CMD) @echo
+#LINK  = link386       # GCC OMF, CSet/2
+.ELSE
+LINK   = link386       # GCC OMF, CSet/2
+LFLAGS = /noig /stack:40000
+.END
 
+.IF $(with_x11) == yes
+WINX11OBJ01 = $(OBJ)/Window.o
+WINX11OBJ02 = $(OBJ)/dialogs.o
+WINX11OBJ03 = $(OBJ)/winX.o
+WINX11OBJ04 = $(OBJ)/winmap.o
+WINX11OBJ05 = $(OBJ)/winmenu.o
+WINX11OBJ06 = $(OBJ)/winmesg.o
+WINX11OBJ07 = $(OBJ)/winmisc.o
+WINX11OBJ08 = $(OBJ)/winstat.o
+WINX11OBJ09 = $(OBJ)/wintext.o
+WINX11OBJ10 = $(OBJ)/winval.o
+WINX11OBJ11 = $(OBJ)/tile.o
+X11ROOT = e:/xfree86
+WINX11CFLAGS = -DUSE_XPM -DX11_GRAPHICS \
+            -I$(X11ROOT)/include -Zmtd
+WINX11LIB = -lXaw -lXmu -lXext -lXt -lX11 -lXpm -L$(X11ROOT)/lib -lc_app
+WINX11SRC = ../win/X11/Window.c ../win/X11/dialogs.c ../win/X11/winX.c \
+       ../win/X11/winmap.c  ../win/X11/winmenu.c ../win/X11/winmesg.c \
+       ../win/X11/winmisc.c ../win/X11/winstat.c ../win/X11/wintext.c \
+       ../win/X11/winval.c tile.c
+WINX11OBJ = $(WINX11OBJ01) $(WINX11OBJ02) $(WINX11OBJ03) $(WINX11OBJ04) \
+       $(WINX11OBJ05) $(WINX11OBJ06) $(WINX11OBJ07) $(WINX11OBJ08) \
+       $(WINX11OBJ09) $(WINX11OBJ10) $(WINX11OBJ11)
+WINX11VARDAT=x11tiles pet_mark.xbm rip.xpm
+X11ECHO        = $(CMD) @echo
+.END
 
 
 
-#
-#	Make syntax peculiarities.
-#
-#	Enable the uppermost eight lines for NDMAKE, the middle eight
-#	for NMAKE (MSC, CSet/2), and the lowermost eight for DMAKE.
-#
 
-#MAKEB	= ndmake	# Executable name (change if necessary)
-#CMD	=		# Command processor name if required
-#AB	= $*.c		# Base name of the target in target action
-#CB	= $*.c		#               - " -               dependent
-#B	= (		# Command line begin in shell one-liners
-#E	= )		#   - " -      end   - " -
-#S	= ;		# Command separator  - " -
-#P	= %		# Literal percent sign
-#MAKEB	= nmake
-#CMD	=
-#AB	= $(@B).c
-#CB	= $$(@B).c
-#B	= (
-#E	= )
-#S	= &
-#P	= %%
 MAKEB	= dmake
 CMD	= cmd /C
 AB	= $(@:B).c
 CB	= $$(@:B).c
-B	= $(CMD) "
-E	= "
-S	= &
+BEG	= $(CMD) "
+END	= "
+SEP	= &
 P	= %
 
 #
 #	Most makes execute actions automatically inside a subshell,
-#	which makes even the shell internals work ok.  This applies
-#	to NDMAKE and NMAKE.  DMAKE wants it spelled out for it.
+#	which makes even the shell internals work ok.
 #
 
 ECHO	= $(CMD) @echo
@@ -197,7 +175,7 @@
 
 OBJ	= \tmp\obj		# Object files
 TEMP	= \tmp\bin		# Temporary files during make process
-GAMEDIR = \games\nh34		# Game directory
+GAMEDIR = \games\nh341x11	# Game directory
 PLIBP	= c:\emx\lib		# Protected mode C libraries
 RLIBP	= c:\emx\lib		# Possible real mode C libraries
 
@@ -206,7 +184,7 @@
 #
 
 GAME	= nethack
-GAMEDES = "NetHack 3.4"
+GAMEDES = "NetHack 3.4.1"
 
 #
 #	The uppermost two lines for MSC, the middle two for GCC, and
@@ -217,7 +195,8 @@
 #
 
 CFLAGS	= -c $(GCCO) $(WARN) -I$(INCL) $(CDFLAGS) $(STDC) $(WINX11CFLAGS)
-O	= -s -O -o
+#OPT	= -s -O -o
+OPT	= -o
 
 #
 #	Compiler warning levels.  These are really for development, so
@@ -238,8 +217,11 @@
 #	object format, the lower for Unix style a.out format.
 #
 
-#GCCO	= -Zomf -Zsys	# GCC OMF
-GCCO	=		# GCC a.out
+.IF $(format) == omf
+GCCO   = -Zomf -Zsys
+.ELSE
+GCCO   =
+.END
 
 #
 #	MSC 5.1 needs the large model first pass of the compiler.
@@ -258,10 +240,13 @@
 #	Prepare for a debugger.
 #
 
+.IF $(debug) == yes
 CDFLAGS =
 LDFLAGS =
-CDFLAGS = -g		# GDB (GCC a.out)
-LDFLAGS = -g		# - " -
+.ELSE
+CDFLAGS = -O -s
+LDFLAGS = -s
+.END
 
 #
 #	How to produce the most ANSI-like environment.
@@ -273,8 +258,11 @@
 #	Possible system object files required during linking.
 #
 
+.IF $(format) == omf
+SYSOBJ = $(PLIBP)\crt0.obj     $(PLIBP)\end.lib# GCC OMF
+.ELSE
 SYSOBJ	=			# MSC, GCC a.out, CSet/2
-#SYSOBJ	= $(PLIBP)\crt0.obj	$(PLIBP)\end.lib# GCC OMF
+.END
 
 #
 #	Compiler library selection.  Change if necessary.
@@ -287,8 +275,11 @@
 #	OS/2 API entry points.
 #
 
-#PLIBS	= $(PLIBP)\st\c $(PLIBP)\st\c_app $(PLIBP)\c_alias $(PLIBP)\gcc $(PLIBP)\st\sys $(PLIBP)\os2	# GCC emx 0.9 OMF
-PLIBS	= -lgcc -lc -lgcc -los2 $(X11LIBS)	# GCC a.out
+.IF $(format) == omf
+PLIBS  = $(PLIBP)\st\c $(PLIBP)\st\c_app $(PLIBP)\c_alias $(PLIBP)\gcc $(PLIBP)\st\sys $(PLIBP)\os2    # GCC emx 0.9 OMF
+.ELSE
+PLIBS  = -lgcc -lc -lgcc -los2 $(X11LIBS)      # GCC a.out
+.END
 
 #
 #	C libraries used by makedefs, lev_comp and dgn_comp (change if
@@ -300,31 +291,34 @@
 #RLIBS	= $(RLIBP)\llibcer
 RLIBS	= $(PLIBS)
 
-SRCCC	= $(CC) $(CFLAGS) $(O) $@ $(AB)
-UTILCC	= $(B) cd $(UTIL) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
-SYSCC	= $(B) cd $(SYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
-SSYSCC	= $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
-PSYSCC	= $(B) cd $(SSYS) $(S) $(CC) $(CFLAGS) $(O) $@ pc$(AB) $(E)
-WINCC	= $(B) cd $(WIN) $(S) $(CC) $(CFLAGS) $(O) $@ $(AB) $(E)
+SRCCC	= $(CC) $(CFLAGS) $(OPT) $@ $(AB)
+UTILCC	= $(BEG) cd $(UTIL) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
+SYSCC	= $(BEG) cd $(SYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
+SSYSCC	= $(BEG) cd $(SSYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
+PSYSCC	= $(BEG) cd $(SSYS) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ pc$(AB) $(END)
+WINCC	= $(BEG) cd $(WIN) $(SEP) $(CC) $(CFLAGS) $(OPT) $@ $(AB) $(END)
 
 #
 #	Default linker skeletons.  The upper six lines for everything
-#	that uses standard OS/2 object format (MSC, CSet/2, GCC OMF),
-#	the lower six for GCC a.out format.
+#	that uses standard OS/2 object format (GCC OMF),  The lower six
+#	for GCC a.out format.
 #
 
-#GAMELN	= $(LINK) @$(TEMP)\$(GAME).rsp
-#MKDFLN	= $(LINK) @$(TEMP)\makedefs.rsp
-#LEVCLN	= $(LINK) @$(TEMP)\lev_comp.rsp
-#DGNCLN	= $(LINK) @$(TEMP)\dgn_comp.rsp
-#RCVRLN	= $(LINK) @$(TEMP)\recover.rsp
-#DLBRLN	= $(LINK) @$(TEMP)\dlb.rsp
-GAMELN	= $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe @$(TEMP)\$(GAME).r $(PLIBS) $(WINX11CFLAGS) $(WINX11LIB)
+.IF $(format) == omf
+GAMELN = $(LINK) @$(TEMP)\$(GAME).rsp
+MKDFLN = $(LINK) @$(TEMP)\makedefs.rsp
+LEVCLN = $(LINK) @$(TEMP)\lev_comp.rsp
+DGNCLN = $(LINK) @$(TEMP)\dgn_comp.rsp
+RCVRLN = $(LINK) @$(TEMP)\recover.rsp
+DLBRLN = $(LINK) @$(TEMP)\dlb.rsp
+.ELSE
+GAMELN = $(CC) $(LDFLAGS) -o $(GAMEDIR)\$(GAME).exe @$(TEMP)\$(GAME).r $(PLIBS) $(WINX11CFLAGS) $(WINX11LIB)
 MKDFLN	= $(CC) $(LDFLAGS) -o $(TEMP)\makedefs.exe $(TEMP)\$(MKDFDEF) $(SYSOBJ) $(MAKEOBJS) $(PLIBS)
 LEVCLN	= $(CC) $(LDFLAGS) -o $(TEMP)\lev_comp.exe $(TEMP)\$(LEVCDEF) $(SYSOBJ) $(SPLEVOBJS) $(PLIBS)
 DGNCLN	= $(CC) $(LDFLAGS) -o $(TEMP)\dgn_comp.exe $(TEMP)\$(DGNCDEF) $(SYSOBJ) $(DGNCOMPOBJS) $(PLIBS)
 RCVRLN	= $(CC) $(LDFLAGS) -o $(GAMEDIR)\recover.exe $(TEMP)\$(RCVRDEF) $(SYSOBJ) $(RECOVOBJS) $(PLIBS)
-DLBRLN	= $(CC) $(LDFLAGS) -o $(TEMP)\dlb.exe $(TEMP)\$(DLBDEF) $(SYSOBJ) $(DLBOBJS) $(PLIBS)
+ DLBRLN = $(CC) $(LDFLAGS) -o $(TEMP)\dlb.exe $(TEMP)\$(DLBDEF) $(SYSOBJ) $(DLBOBJS) $(PLIBS)
+.END
 
 #
 #	OS/2 module definition files for NetHack,
@@ -524,7 +518,8 @@
  asmodeus.lev baalz.lev    bigrm-1.lev \
  bigrm-2.lev  bigrm-3.lev  bigrm-4.lev castle.lev   fakewiz1.lev fakewiz2.lev \
  juiblex.lev  knox.lev     medusa-1.lev medusa-2.lev minend-1.lev minend-2.lev \
- minefill.lev minetn-1.lev minetn-2.lev oracle.lev   orcus.lev    sanctum.lev \
+ minend-3.lev minefill.lev minetn-1.lev minetn-2.lev minetn-3.lev minetn-4.lev \
+ minetn-5.lev minetn-6.lev minetn-7.lev oracle.lev   orcus.lev    sanctum.lev \
  tower1.lev   tower2.lev   tower3.lev valley.lev   wizard1.lev  wizard2.lev \
  wizard3.lev  astral.lev   air.lev earth.lev    fire.lev     water.lev \
  soko1-1.lev  soko1-2.lev  soko2-1.lev  soko2-2.lev  \
@@ -883,6 +878,7 @@
 	$(ECHO) $(WINOBJ4) >> $@
 	$(ECHO) $(HHOBJ) >> $@
 	$(ECHO) $(RANDOM) >> $@
+.IF $(with_x11) == yes
 	$(X11ECHO) $(WINX11OBJ01) >> $@
 	$(X11ECHO) $(WINX11OBJ02) >> $@
 	$(X11ECHO) $(WINX11OBJ03) >> $@
@@ -894,6 +890,7 @@
 	$(X11ECHO) $(WINX11OBJ09) >> $@
 	$(X11ECHO) $(WINX11OBJ10) >> $@
 	$(X11ECHO) $(WINX11OBJ11) >> $@
+.END
 
 
 
@@ -1059,7 +1056,7 @@
 	$(TOUCH) $(TT)
 
 faketouch :
-	$(B) $(CAT) $(TT) > $(TEMP)\foo.bar $(S) $(CP) $(TEMP)\foo.bar $(TT) $(S) $(RM) $(TEMP)\foo.bar $(E)
+	$(BEG) $(CAT) $(TT) > $(TEMP)\foo.bar $(SEP) $(CP) $(TEMP)\foo.bar $(TT) $(SEP) $(RM) $(TEMP)\foo.bar $(END)
 
 #
 #	Targets for the recovery utility.
@@ -1755,7 +1752,7 @@
 				$(WINSHARE)\other.txt
 	$(TEMP)\tile2x11.exe $(WINSHARE)\monsters.txt $(WINSHARE)\objects.txt \
 				$(WINSHARE)\other.txt
-	cp x11tiles $(GAMEDIR)\x11tiles
+	$(CP) x11tiles $(GAMEDIR)\x11tiles
 
 TEXT_IO = $(OBJ)\tiletext.o \
 	  $(OBJ)\tiletxt.o \
@@ -1773,10 +1770,10 @@
 	$(CC) $(LFLAGS) -o $(TEMP)\tile2x11.exe $(OBJ)\tile2x11.o $(TEXT_IO) $(LIBS)
 
 pet_mark.xbm: $(WINX11)\pet_mark.xbm
-	cp $(WINX11)\pet_mark.xbm $(GAMEDIR)\pet_mark.xbm
+	$(CP) $(WINX11)\pet_mark.xbm $(GAMEDIR)\pet_mark.xbm
 
 rip.xpm: $(WINX11)\rip.xpm
-	cp $(WINX11)\rip.xpm $(GAMEDIR)\rip.xpm
+	$(CP) $(WINX11)\rip.xpm $(GAMEDIR)\rip.xpm
 
 $(OBJ)\tile2x11.o : $(WINX11)\tile2x11.c $(INCL)\tile2x11.h
 	$(CC) $(CFLAGS) -o$(OBJ)\tile2x11.o -c $(WINX11)\tile2x11.c \
diff -Naurd ../nethack-3.4.0/sys/os2/os2.c ./sys/os2/os2.c
--- ../nethack-3.4.0/sys/os2/os2.c Wed Mar 20 23:43:45 2002
+++ ./sys/os2/os2.c Mon Feb 24 15:25:05 2003
@@ -358,4 +358,7 @@
 {
   return (char*)0;
 }
+#ifdef X11_GRAPHICS
+int errno;
+#endif
 #endif /* OS2 */
