These are the changes to the original source
archive (279v5). You don't need to apply them
if you can get the latest archive, which will
have them applied already.

*** ../old/src/cave.c	Thu Mar 07 14:52:50 1996
--- cave.c	Sat Mar 09 14:03:04 1996
***************
*** 952,957 ****
--- 952,959 ----
   *
   * Note that, for efficiency, we contain an "optimized" version
   * of both "lite_spot()" and "print_rel()".
+  *
+  * We update the term_map here, if so configured. -EK-
   */
  void prt_map(void)
  {
***************
*** 992,997 ****
--- 994,1002 ----
  
      /* Restore the cursor */
      (void)Term_set_cursor(v);
+ 
+     /* Update map window (if necessary/allowed) */
+     do_cmd_view_map(1);
  }
  
  
*** ../old/src/cmd3.c	Thu Mar 07 14:53:34 1996
--- cmd3.c	Sat Mar 09 14:30:44 1996
***************
*** 1666,1673 ****
   * Note the use of a specialized "priority" function to allow this
   * function to work with any graphic attr/char mappings, and the
   * attempts to optimize this function where possible.
   */
! void do_cmd_view_map(void)
  {
      int i, j, x, y;
  
--- 1666,1677 ----
   * Note the use of a specialized "priority" function to allow this
   * function to work with any graphic attr/char mappings, and the
   * attempts to optimize this function where possible.
+  *
+  * If "to_map_win" is 0, then the map is drawn to the screen 
+  * window ('M' command), otherwise it's drawn to the map window 
+  * (if applicable). -EK-
   */
! void do_cmd_view_map(int to_map_win)
  {
      int i, j, x, y;
  
***************
*** 1684,1689 ****
--- 1688,1697 ----
      bool old_view_yellow_lite = view_yellow_lite;
      bool old_view_bright_lite = view_bright_lite;
      
+     
+     /* Decide if we have do to something */
+     if (to_map_win && (!use_map_window || !term_map)) return;     
+     
  
      /* Hack -- Cancel the options */
      view_yellow_lite = FALSE;
***************
*** 1693,1708 ****
      /* Enter "icky" mode */
      character_icky = TRUE;
  
-     /* Save the screen */
-     Term_save();
  
!     /* Note */
!     prt("Please wait...", 0, 0);
!     
!     /* Flush */
!     Term_fresh();
  
      
      /* Clear the chars and attributes */
      for (y = 0; y < MAP_HGT+2; ++y) {
          for (x = 0; x < MAP_WID+2; ++x) {
--- 1701,1725 ----
      /* Enter "icky" mode */
      character_icky = TRUE;
  
  
!     if (!to_map_win)
!     {
!         /* Save the screen */
!         Term_save();
  
+         /* Note */
+         prt("Please wait...", 0, 0);
      
+         /* Flush */
+         Term_fresh();    
+     }
+     else
+     {
+         /* Switch to map window -EK- */
+         Term_activate(term_map);
+     }
+ 
+    
      /* Clear the chars and attributes */
      for (y = 0; y < MAP_HGT+2; ++y) {
          for (x = 0; x < MAP_WID+2; ++x) {
***************
*** 1759,1767 ****
      /* Draw the vertical edges */
      for (y = 1; y <= MAP_HGT; y++) mc[y][0] = mc[y][x] = '|';
  
! 
!     /* Clear the screen */
!     Term_clear();
  
      /* Display each map line in order */
      for (y = 0; y < MAP_HGT+2; ++y) {
--- 1776,1792 ----
      /* Draw the vertical edges */
      for (y = 1; y <= MAP_HGT; y++) mc[y][0] = mc[y][x] = '|';
  
!     if (!to_map_win)
!     {
!         /* Clear the screen */
!         Term_clear();
! 
!         /* 
!          * This is not needed in the map window, because the map never 
!          * changes size; also it flickers less when the borg is running 
!          * <g> -EK- 
!          */
!     }
  
      /* Display each map line in order */
      for (y = 0; y < MAP_HGT+2; ++y) {
***************
*** 1788,1804 ****
          }
      }
  
!     /* Wait for it */
!     put_str("Hit any key to continue", 23, 23);
  
      /* Hack -- Hilite the player */
      move_cursor(py / RATIO + 1, px / RATIO + 1);
  
!     /* Get any key */
!     inkey();
  
!     /* Restore the screen */
!     Term_load();
  
      /* Leave "icky" mode */
      character_icky = FALSE;
--- 1813,1844 ----
          }
      }
  
!     if (!to_map_win)
!     {
!         /* Wait for it */
!         put_str("Hit any key to continue", 23, 23);
!     }
  
      /* Hack -- Hilite the player */
+     /* XXX needed if to_map_win!=0?  -EK- */
      move_cursor(py / RATIO + 1, px / RATIO + 1);
  
!     if (!to_map_win)
!     {
!         /* Get any key */
!         inkey();
  
!         /* Restore the screen */
!         Term_load();
!     }
!     else
!     {
!         /* Flush screen */
!         Term_fresh();
! 
!         /* Switch back to main screen */
!         Term_activate(term_screen);
!     }
  
      /* Leave "icky" mode */
      character_icky = FALSE;
*** ../old/src/cmd4.c	Thu Mar 07 17:08:26 1996
--- cmd4.c	Sat Mar 09 13:27:42 1996
***************
*** 64,69 ****
--- 64,80 ----
  
  #endif
  
+ #ifdef GRAPHIC_MAP                                          /* -EK- */
+ 
+     /* Hack -- erase the "mirror" window */
+     if (term_map) {
+         Term_activate(term_map);
+         Term_clear();
+         Term_fresh();
+     }
+ 
+ #endif
+ 
      /* Activate the main screen */
      Term_activate(term_screen);
  
*** ../old/src/dungeon.c	Thu Mar 07 14:55:06 1996
--- dungeon.c	Sat Mar 09 14:03:04 1996
***************
*** 1360,1366 ****
  
          /* Full dungeon map */
          case 'M':
!             do_cmd_view_map(); break;
  
          /* Locate player on map */	
          case 'L':
--- 1360,1366 ----
  
          /* Full dungeon map */
          case 'M':
!             do_cmd_view_map(0); break;
  
          /* Locate player on map */	
          case 'L':
*** ../old/src/main-emx.c	Thu Mar 07 14:58:12 1996
--- main-emx.c	Sat Mar 09 14:34:02 1996
***************
*** 72,77 ****
--- 72,79 ----
   *   2.03.96   EK      2.7.9    Uploaded binaries to export.andrew.cmu.edu
   *                      v4
   *                              
+  *   9.03.96   EK      2.7.9    Adjustable background color (PM)
+  *                      v5      Added map window
   */
  
  #include <signal.h>
***************
*** 270,276 ****
  static termPipe term_screen_main,
                  term_screen_recall,
                  term_screen_choice,
!                 term_screen_mirror;
  
  /*
   * Check for events -- called by "Term_scan_emx()"
--- 272,279 ----
  static termPipe term_screen_main,
                  term_screen_recall,
                  term_screen_choice,
!                 term_screen_mirror,
!                 term_screen_map;
  
  /*
   * Check for events -- called by "Term_scan_emx()"
***************
*** 523,528 ****
--- 526,532 ----
      initPipeTerm(&term_screen_recall,"recall",&term_recall);
      initPipeTerm(&term_screen_choice,"choice",&term_choice);
      initPipeTerm(&term_screen_mirror,"mirror",&term_mirror);
+     initPipeTerm(&term_screen_map,   "map",   &term_map);
  
      /* Initialize main window */
      t = (term*)(&term_screen_main);
***************
*** 562,568 ****
  
  #else /* __EMX__CLIENT__ */
  
! int __EMX__CLIENT__(int argc, char **argv)
  {
      int c, end = 0, lines = 25;
      int x, y, h, n, v;
--- 566,572 ----
  
  #else /* __EMX__CLIENT__ */
  
! int main(int argc, char **argv)
  {
      int c, end = 0, lines = 25;
      int x, y, h, n, v;
***************
*** 794,800 ****
  static termWindow term_screen_main,
                    term_screen_recall,
                    term_screen_choice,
!                   term_screen_mirror;
  
  /*
   * Check for events -- called by "Term_scan_emx()"
--- 798,805 ----
  static termWindow term_screen_main,
                    term_screen_recall,
                    term_screen_choice,
!                   term_screen_mirror,
!                   term_screen_map;
  
  /*
   * Check for events -- called by "Term_scan_emx()"
***************
*** 884,889 ****
--- 889,895 ----
      emx_init_term(&term_screen_recall,term_screen_main.instance,&term_recall,1);
      emx_init_term(&term_screen_choice,term_screen_main.instance,&term_choice,2);
      emx_init_term(&term_screen_mirror,term_screen_main.instance,&term_mirror,3);
+     emx_init_term(&term_screen_map   ,term_screen_main.instance,&term_map   ,4);
  
      /* Activate main window */
      Term_activate(term_screen);
***************
*** 927,932 ****
--- 933,943 ----
      {
          term_nuke(term_mirror);
          emx_nuke(((termWindow*)term_mirror)->instance);
+     }
+     if (term_map) 
+     {
+         term_nuke(term_map);
+         emx_nuke(((termWindow*)term_map)->instance);
      }
      if (term_screen) 
      {
*** ../old/src/main.c	Thu Mar 07 15:00:00 1996
--- main.c	Sat Mar 09 13:27:42 1996
***************
*** 86,91 ****
--- 86,92 ----
      if (term_recall) term_nuke(term_recall);
      if (term_mirror) term_nuke(term_mirror);
      if (term_screen) term_nuke(term_screen);
+     if (term_screen) term_nuke(term_map);
  }
  
  
*** ../old/src/store.c	Thu Mar 07 15:42:20 1996
--- store.c	Sat Mar 09 14:03:04 1996
***************
*** 2751,2757 ****
  
          /* Full dungeon map */
          case 'M':
!             do_cmd_view_map(); break;
  
          /* Locate player on map */	
          case 'L':
--- 2751,2757 ----
  
          /* Full dungeon map */
          case 'M':
!             do_cmd_view_map(0); break;
  
          /* Locate player on map */	
          case 'L':
*** ../old/src/variable.c	Thu Mar 07 15:43:16 1996
--- variable.c	Sat Mar 09 13:56:04 1996
***************
*** 263,268 ****
--- 263,271 ----
  bool use_choice_choose;		/* Use "choice" window -- show "choices" */
  bool use_choice_spells;		/* Use "choice" window -- show "spells" */
  
+ bool use_map_window=1;          /* Use "map" window -- display map */
+                                 /* XXX XXX XXX make option XXX XXX XXX */
+ 
  bool show_choose_info;		/* Show info in windows when "choosing" */
  bool show_choose_prompt;	/* Show prompt in windows when "choosing" */
  bool show_choose_weight;	/* Show weights in windows when "choosing" */
***************
*** 291,296 ****
--- 294,300 ----
  term *term_mirror;		/* The mirror window */
  term *term_recall;		/* The recall window */
  term *term_choice;		/* The choice window */
+ term *term_map;                 /* The map window */
  
  
  s16b feeling;			/* Most recent feeling */
*** ../old/src/config.h	Thu Mar 07 14:54:32 1996
--- config.h	Sat Mar 09 13:27:42 1996
***************
*** 173,189 ****
  /*
   * OPTION: Hack -- Compile in support for "Cyborg" mode
   */
! /* #define ALLOW_BORG */
  
  /*
   * OPTION: Hack -- Compile in support for "Wizard Commands"
   */
! /* #define ALLOW_WIZARD */
  
  /*
   * OPTION: Hack -- Compile in support for "Spoiler Generation"
   */
! /* #define ALLOW_SPOILERS */
  
  
  /*
--- 173,189 ----
  /*
   * OPTION: Hack -- Compile in support for "Cyborg" mode
   */
! #define ALLOW_BORG 
  
  /*
   * OPTION: Hack -- Compile in support for "Wizard Commands"
   */
! #define ALLOW_WIZARD 
  
  /*
   * OPTION: Hack -- Compile in support for "Spoiler Generation"
   */
! #define ALLOW_SPOILERS 
  
  
  /*
***************
*** 214,220 ****
   * prints pretty "titles" such as "Ranger Lord" after the race and
   * class, and on the tombstone, and in the "description" files.
   */
! /* #define ALLOW_TITLES */
  
  
  /*
--- 214,220 ----
   * prints pretty "titles" such as "Ranger Lord" after the race and
   * class, and on the tombstone, and in the "description" files.
   */
! #define ALLOW_TITLES 
  
  
  /*
***************
*** 468,473 ****
--- 468,478 ----
   * OPTION: Allow the use of a "Mirror Window", if supported
   */
  #define GRAPHIC_MIRROR
+ 
+ /*
+  * OPTION: Allow the use of a "Map Window", if supported           -EK-
+  */
+ #define GRAPHIC_MAP
  
  
  
*** ../old/src/externs.h	Thu Mar 07 14:55:14 1996
--- externs.h	Sat Mar 09 14:03:04 1996
***************
*** 209,214 ****
--- 209,215 ----
  extern bool use_choice_normal;
  extern bool use_choice_choose;
  extern bool use_choice_spells;
+ extern bool use_map_window;
  extern bool show_choose_info;
  extern bool show_choose_prompt;
  extern bool show_choose_weight;
***************
*** 225,230 ****
--- 226,232 ----
  extern term *term_mirror;
  extern term *term_recall;
  extern term *term_choice;
+ extern term *term_map;                       /* XXX XXX XXX not initialized to '0' */
  extern s16b feeling;
  extern s16b rating;
  extern bool good_item_flag;
***************
*** 428,434 ****
  extern void do_cmd_target(void);
  extern void do_cmd_look(void);
  extern void do_cmd_locate(void);
! extern void do_cmd_view_map(void);
  extern void do_cmd_query_symbol(void);
  
  /* cmd4.c */
--- 430,436 ----
  extern void do_cmd_target(void);
  extern void do_cmd_look(void);
  extern void do_cmd_locate(void);
! extern void do_cmd_view_map(int to_map_win);
  extern void do_cmd_query_symbol(void);
  
  /* cmd4.c */
*** ../old/src/Makefile.emx	Thu Mar 07 17:08:58 1996
--- Makefile.emx	Sat Mar 09 13:39:08 1996
***************
*** 25,45 ****
  #		  Needs 4OS2.
  #
  
! VERSION         = 279v4
  EXPORT          = angband-$(VERSION).os2.zip
  
- .KEEP_STATE:
- 
  CC 		= gcc
  AR		= ar
  CFLAGS 		= -MMD -O3 -DUSE_EMX -Zmt 
  LFLAGS 		= -lvideo 
  
  # Uncomment this if you have nice installed
! #NICE 		= nice -i -n -30
  
  ###################################################################################
  
  default: all depends :-)
  
  install: ..\angband.exe ..\aclient.exe ..\startwnd.cmd
--- 25,45 ----
  #		  Needs 4OS2.
  #
  
! VERSION         = 279v5
  EXPORT          = angband-$(VERSION).os2.zip
  
  CC 		= gcc
  AR		= ar
  CFLAGS 		= -MMD -O3 -DUSE_EMX -Zmt 
  LFLAGS 		= -lvideo 
  
  # Uncomment this if you have nice installed
! NICE 		= nice -i -n -30
  
  ###################################################################################
  
+ .KEEP_STATE:
+ 
  default: all depends :-)
  
  install: ..\angband.exe ..\aclient.exe ..\startwnd.cmd
***************
*** 49,56 ****
      -+@ del aclient.exe
      -+@ del depends
      -+@ del _state.mk
!     -+@ del *.o
      -+@ del *.d
  
  patches:  ..\patches.txt ..\exp\patches.uue ..\exp\files.uue
  
--- 49,57 ----
      -+@ del aclient.exe
      -+@ del depends
      -+@ del _state.mk
!     -+@ del *.a
      -+@ del *.d
+     -+@ del *.o
  
  patches:  ..\patches.txt ..\exp\patches.uue ..\exp\files.uue
  
***************
*** 106,128 ****
             cd ..                                ^ \
             del tmpdir /xsqy >& nul
    
! PATCHFILES  = *.c
! PATCHFILES += *.h
! PATCHFILES += makefile*
! PATCHFILES += ..\lib\user\pref-emx.prf
  
- ..\patches.txt .PHONY .IGNORE:
  # Needs 4OS2! 
!     +@ echo These are the changes to the original source  > ..\patches.txt ^ \
!        echo archive ($(VERSION)). You don't need to apply them >> ..\patches.txt ^ \
!        echo if you can get the latest archive, which will >> ..\patches.txt ^ \
!        echo have them applied already. >> ..\patches.txt ^ \
!        echo. >> ..\patches.txt ^ \
!        except (*~) for %a in ($(PATCHFILES)) \
         do (diff -c ..\old\src\%a %a >> ..\patches.txt)
  
- ..\exp\patches.uue: ..\patches.txt
  # Needs 4OS2!
      +@ md ..\exp >& nul                                         ^ \
         cd ..\exp                                                ^ \
         copy ..\patches.txt patches-$(VERSION).os2               ^ \
--- 107,126 ----
             cd ..                                ^ \
             del tmpdir /xsqy >& nul
    
! PATCHFILES  = *.c *.h makefile* ..\lib\user\pref-emx.prf
  
  # Needs 4OS2! 
! ..\patches.txt .PHONY .IGNORE:
!     +@ echo These are the changes to the original source  > ..\patches.txt       	^ \
!        echo archive ($(VERSION)). You don't need to apply them >> ..\patches.txt 	^ \
!        echo if you can get the latest archive, which will >> ..\patches.txt 		^ \
!        echo have them applied already. >> ..\patches.txt 				^ \
!        echo. >> ..\patches.txt 								^ \
!        except (*~) for %a in ($(PATCHFILES)) 						  \
         do (diff -c ..\old\src\%a %a >> ..\patches.txt)
  
  # Needs 4OS2!
+ ..\exp\patches.uue: ..\patches.txt
      +@ md ..\exp >& nul                                         ^ \
         cd ..\exp                                                ^ \
         copy ..\patches.txt patches-$(VERSION).os2               ^ \
***************
*** 134,141 ****
  FILES  = main-emx.c makefile.emx ..\lib\user\pref-emx.prf 
  FILESP = main-emx.c makefile.emx pref-emx.prf 
  
- ..\exp\files.uue: $(FILES)
  # Needs 4OS2!
      +@ 	md ..\exp >& nul                                        ^ \
  	cd ..\exp                                               ^ \
  	for %a in ($(FILES)) copy ..\src\%a > nul               ^ \
--- 132,139 ----
  FILES  = main-emx.c makefile.emx ..\lib\user\pref-emx.prf 
  FILESP = main-emx.c makefile.emx pref-emx.prf 
  
  # Needs 4OS2!
+ ..\exp\files.uue: $(FILES)
      +@ 	md ..\exp >& nul                                        ^ \
  	cd ..\exp                                               ^ \
  	for %a in ($(FILES)) copy ..\src\%a > nul               ^ \
***************
*** 189,195 ****
      $(AR) r angband.a $(OBJS)
  
  aclient.exe: main-emx.c
!     $(NICE) $(CC) $(CFLAGS) -D__EMX__CLIENT__=main  -o aclient.exe main-emx.c -lvideo
  
  main-emx.o: main-emx.c
      $(NICE) $(CC) $(CFLAGS) -Wall -c main-emx.c -o main-emx.o
--- 187,193 ----
      $(AR) r angband.a $(OBJS)
  
  aclient.exe: main-emx.c
!     $(NICE) $(CC) $(CFLAGS) -Wall -D__EMX__CLIENT__ -o aclient.exe main-emx.c -lvideo
  
  main-emx.o: main-emx.c
      $(NICE) $(CC) $(CFLAGS) -Wall -c main-emx.c -o main-emx.o
