*** ..\src.original\externs.h	Fri Mar 07 02:52:08 1997
--- externs.h	Sat Apr 05 12:56:26 1997
***************
*** 261,266 ****
--- 261,267 ----
  extern u32b option_mask[8];
  extern u32b window_flag[8];
  extern u32b window_mask[8];
+ extern byte window_pw_mode;
  extern term *angband_term[8];
  extern char angband_term_name[8][16];
  extern byte angband_color_table[256][4];
*** ..\src.original\cmd4.c	Tue Mar 04 03:19:06 1997
--- cmd4.c	Mon Apr 07 22:08:20 1997
***************
*** 648,656 ****
  	bool go = TRUE;
  
  	u32b old_flag[8];
! 
  
  	/* Memorize old flags */
  	for (j = 0; j < 8; j++)
  	{
  		/* Acquire current flags */
--- 648,657 ----
  	bool go = TRUE;
  
  	u32b old_flag[8];
!    byte old_mode;
  
  	/* Memorize old flags */
+    old_mode=window_pw_mode;
  	for (j = 0; j < 8; j++)
  	{
  		/* Acquire current flags */
***************
*** 665,671 ****
  	while (go)
  	{
  		/* Prompt XXX XXX XXX */
! 		prt("Window flags (<dir>, t, y, n, ESC) ", 0, 0);
  
  		/* Display the windows */
  		for (j = 0; j < 8; j++)
--- 666,672 ----
  	while (go)
  	{
  		/* Prompt XXX XXX XXX */
! 		prt("Window flags (<dir>, t, y, n, c, ESC) ", 0, 0);
  
  		/* Display the windows */
  		for (j = 0; j < 8; j++)
***************
*** 710,715 ****
--- 711,723 ----
  				/* Active flag */
  				if (window_flag[j] & (1L << i)) c = 'X';
  
+             /* Active character window flag */
+         		if ((window_flag[j] & (PW_PLAYER)) && (PW_PLAYER & (1L << i)))
+             {
+                c = '0' + window_pw_mode;
+    				if (use_color) a = TERM_L_GREEN;
+             }
+ 
  				/* Flag value */
  				Term_putch(35 + j * 5, i + 5, a, c);
  			}
***************
*** 767,772 ****
--- 775,795 ----
  				break;
  			}
  
+          case 'c':
+          case 'C':
+          {
+             /* Player character window? */
+         		if ((window_flag[x] & (PW_PLAYER)) && (window_flag[x] & (1L << y)))
+             {
+                /* Increment character window mode */
+                window_pw_mode = (++window_pw_mode) % 6;
+ 
+    				/* Set window flag */
+ 			   	window_flag[x] |= (1L << y);
+             }
+ 				break;
+          }
+ 
  			default:
  			{
  				d = keymap_dirs[ch & 0x7F];
***************
*** 788,794 ****
  		if (!angband_term[j]) continue;
  
  		/* Ignore non-changes */
! 		if (window_flag[j] == old_flag[j]) continue;
  
  		/* Activate */
  		Term_activate(angband_term[j]);
--- 811,818 ----
  		if (!angband_term[j]) continue;
  
  		/* Ignore non-changes */
! 		if (window_flag[j] == old_flag[j] && !(window_flag[j] & (PW_PLAYER))) continue;
! 		if ((window_flag[j] & (PW_PLAYER)) && (window_pw_mode == old_mode)) continue;
  
  		/* Activate */
  		Term_activate(angband_term[j]);
*** ..\src.original\files.c	Tue Mar 04 03:21:42 1997
--- files.c	Mon Apr 07 22:03:46 1997
***************
*** 1097,1102 ****
--- 1097,1104 ----
  
  	u32b f[3];
  
+    /* Check for spoiler info */
+   	bool spoil = FALSE;
  
  	/* Header */
  	c_put_str(TERM_WHITE, header, row, col);
***************
*** 1109,1126 ****
  	for (i=INVEN_WIELD; i<INVEN_TOTAL; i++)
  	{
  		object_type *o_ptr;
  
  		/* Object */
  		o_ptr = &inventory[i];
  
  		/* Known flags */
  		object_flags_known(o_ptr, &f[0], &f[1], &f[2]);
  
! 		/* Default */
! 		c_put_str(TERM_SLATE, ".", row, col);
  
  		/* Check flags */
! 		if (f[n-1] & flag) c_put_str(TERM_WHITE, "+", row, col);
  
  		/* Advance */
  		col++;
--- 1111,1155 ----
  	for (i=INVEN_WIELD; i<INVEN_TOTAL; i++)
  	{
  		object_type *o_ptr;
+       cptr c;
+       byte a = TERM_WHITE;
  
  		/* Object */
  		o_ptr = &inventory[i];
  
+ #ifdef SPOIL_ARTIFACTS
+       /* Full knowledge for some artifacts */
+      	if (artifact_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
+ #ifdef SPOIL_EGO_ITEMS
+ /* Full knowledge for some ego-items */
+   	if (ego_item_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
  		/* Known flags */
  		object_flags_known(o_ptr, &f[0], &f[1], &f[2]);
  
! 		/* Default (no information) */
!       c = " ";
! 
!       /* Fully known but has no effect  */
!       /* Artifact/Ego item must be *Identified* */
!       if ((artifact_p(o_ptr) || ego_item_p(o_ptr)) && (o_ptr->ident & IDENT_MENTAL))
!          c = ".";
! 
!       /* Normal items must be identified */
!       if (!(artifact_p(o_ptr) || ego_item_p(o_ptr)) && object_known_p(o_ptr))
!          c = ".";
! 
!       /* Spoilers enabled */
!       if (spoil) c = ".";
  
  		/* Check flags */
! 		if (f[n-1] & flag) c="+";
! 
!       /* Display modifier */
!       c_put_str(a, c, row, col);
  
  		/* Advance */
  		col++;
***************
*** 1129,1139 ****
  	/* Player flags */
  	player_flags(&f[0], &f[1], &f[2]);
  
! 	/* Default */
  	c_put_str(TERM_SLATE, ".", row, col);
  
  	/* Check flags */
! 	if (f[n-1] & flag) c_put_str(TERM_WHITE, "+", row, col);
  }
  
  
--- 1158,1168 ----
  	/* Player flags */
  	player_flags(&f[0], &f[1], &f[2]);
  
! 	/* Default (always known) */
  	c_put_str(TERM_SLATE, ".", row, col);
  
  	/* Check flags */
! 	if (f[n-1] & flag) c_put_str(TERM_SLATE, "+", row, col);
  }
  
  
***************
*** 1156,1165 ****
--- 1185,1199 ----
  	c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+7);
  
  	display_player_flag_aux(row+0, col, "Acid :", 2, (TR2_RES_ACID | TR2_IM_ACID));
+    if(p_ptr->oppose_acid) c_put_str(TERM_GREEN, "t",  row+0, col+19);
  	display_player_flag_aux(row+1, col, "Elec :", 2, (TR2_RES_ELEC | TR2_IM_ELEC));
+    if(p_ptr->oppose_elec) c_put_str(TERM_GREEN, "t",  row+1, col+19);
  	display_player_flag_aux(row+2, col, "Fire :", 2, (TR2_RES_FIRE | TR2_IM_FIRE));
+    if(p_ptr->oppose_fire) c_put_str(TERM_GREEN, "t",  row+2, col+19);
  	display_player_flag_aux(row+3, col, "Cold :", 2, (TR2_RES_COLD | TR2_IM_COLD));
+    if(p_ptr->oppose_cold) c_put_str(TERM_GREEN, "t",  row+3, col+19);
  	display_player_flag_aux(row+4, col, "Poisn:", 2, TR2_RES_POIS);
+    if(p_ptr->oppose_pois) c_put_str(TERM_GREEN, "t",  row+4, col+19);
  	display_player_flag_aux(row+5, col, "Light:", 2, TR2_RES_LITE);
  	display_player_flag_aux(row+6, col, "Dark :", 2, TR2_RES_DARK);
  	display_player_flag_aux(row+7, col, "Shard:", 2, TR2_RES_SHARDS);
***************
*** 1189,1195 ****
  
  	display_player_equippy(row-2, col+15);
  
! 	c_put_str(TERM_WHITE, "@abcdefghijkl", row-1, col+15);
  
  	display_player_flag_aux(row+0, col, "Free Action  :", 2, TR2_FREE_ACT);
  	display_player_flag_aux(row+1, col, "See Invisible:", 3, TR3_SEE_INVIS);
--- 1223,1229 ----
  
  	display_player_equippy(row-2, col+15);
  
! 	c_put_str(TERM_WHITE, "abcdefghijkl@", row-1, col+15);
  
  	display_player_flag_aux(row+0, col, "Free Action  :", 2, TR2_FREE_ACT);
  	display_player_flag_aux(row+1, col, "See Invisible:", 3, TR3_SEE_INVIS);
***************
*** 1333,1341 ****
--- 1366,1388 ----
  	/* Process equipment */
  	for (i=INVEN_WIELD; i<INVEN_TOTAL; i++)
  	{
+ 
+       /* Check for spoiler info */
+      	bool spoil = FALSE;
+ 
  		/* Access object */
  		o_ptr = &inventory[i];
  
+ #ifdef SPOIL_ARTIFACTS
+       /* Full knowledge for some artifacts */
+      	if (artifact_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
+ #ifdef SPOIL_EGO_ITEMS
+ /* Full knowledge for some ego-items */
+   	if (ego_item_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
  		/* Object kind */
  		k_idx = o_ptr->k_idx;
  
***************
*** 1345,1354 ****
  		/* Initialize color based of sign of pval. */
  		for (stat=0; stat<6; stat++)
  		{
! 			/* Default */
  			a = TERM_SLATE;
  			c = '.';
  
  			/* Boost */
  			if (f1 & 1<<stat)
  			{
--- 1392,1414 ----
  		/* Initialize color based of sign of pval. */
  		for (stat=0; stat<6; stat++)
  		{
! 			/* Default (unknown) */
  			a = TERM_SLATE;
+ 			c = ' ';
+ 
+          /* Fully known but no effect: */
+ 
+          /* Artifact/Ego item must be *Identified* */
+          if ((artifact_p(o_ptr) || ego_item_p(o_ptr)) && (o_ptr->ident & IDENT_MENTAL))
+             c = '.';
+ 
+          /* Normal items must be identified */
+          if (!(artifact_p(o_ptr) || ego_item_p(o_ptr)) && object_known_p(o_ptr))
              c = '.';
  
+          /* Spoilers enabled */
+          if (spoil) c = '.';
+ 
  			/* Boost */
  			if (f1 & 1<<stat)
  			{
***************
*** 1401,1407 ****
  	/* Check stats */
  	for (stat=0; stat<6; stat++)
  	{
! 		/* Default */
  		a = TERM_SLATE;
  		c = '.';
  
--- 1461,1467 ----
  	/* Check stats */
  	for (stat=0; stat<6; stat++)
  	{
! 		/* Default (no effect but fully known) */
  		a = TERM_SLATE;
  		c = '.';
  
***************
*** 1627,1632 ****
--- 1685,1692 ----
  
  	u16b b[13][6];
  
+    /* Check spoilers & known items */
+    bool o_know[13], spoil = FALSE;
  
  	/* Scan equipment */
  	for (i = INVEN_WIELD; i < INVEN_TOTAL; i++)
***************
*** 1637,1642 ****
--- 1697,1726 ----
  		/* Object */
  		o_ptr = &inventory[i];
  
+ #ifdef SPOIL_ARTIFACTS
+       /* Full knowledge for some artifacts */
+      	if (artifact_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
+ #ifdef SPOIL_EGO_ITEMS
+ /* Full knowledge for some ego-items */
+      	if (ego_item_p(o_ptr)) spoil = TRUE;
+ #endif
+ 
+       /* if it's fully known */
+       o_know[i]=FALSE;
+ 
+       /* Artifact/Ego item must be *Identified* */
+       if ((artifact_p(o_ptr) || ego_item_p(o_ptr)) && (o_ptr->ident & IDENT_MENTAL))
+          o_know[i] = TRUE;
+ 
+       /* Normal items must be identified */
+       if ((artifact_p(o_ptr) || ego_item_p(o_ptr)) && object_known_p(o_ptr))
+          o_know[i] = TRUE;
+ 
+       /* Spoilers enabled */
+       if (spoil) o_know[i] = TRUE;
+ 
  		/* Known object flags */
  		object_flags_known(o_ptr, &f1, &f2, &f3);
  
***************
*** 1691,1703 ****
  			/* Check flags */
  			for (n = 0; n < 13; n++)
  			{
  				byte a = TERM_SLATE;
! 				char c = '.';
  
  				/* Check flag */
  				if (b[n][3*mode+x] & (1<<y))
  				{
! 					a = TERM_WHITE;
  					c = '+';
  				}
  
--- 1775,1791 ----
  			/* Check flags */
  			for (n = 0; n < 13; n++)
  			{
+             /* Default (unknown) */
  				byte a = TERM_SLATE;
! 				char c = ' ';
! 
!             /* full knowledge but no effect*/
!             if(o_know[n]) c = '.';
  
  				/* Check flag */
  				if (b[n][3*mode+x] & (1<<y))
  				{
! 					a = TERM_SLATE;
  					c = '+';
  				}
  
***************
*** 1891,1897 ****
  	FILE_TYPE(FILE_TYPE_TEXT);
  
  	/* Check for existing file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Existing file */
  	if (fd >= 0)
--- 1979,1985 ----
  	FILE_TYPE(FILE_TYPE_TEXT);
  
  	/* Check for existing file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Existing file */
  	if (fd >= 0)
***************
*** 3707,3713 ****
  	path_build(buf, 1024, ANGBAND_DIR_APEX, "scores.raw");
  
  	/* Open the high score file, for reading/writing */
! 	highscore_fd = fd_open(buf, O_RDWR);
  
  
  	/* Handle death */
--- 3795,3801 ----
  	path_build(buf, 1024, ANGBAND_DIR_APEX, "scores.raw");
  
  	/* Open the high score file, for reading/writing */
! 	highscore_fd = fd_open(buf, O_RDWR | O_BINARY);
  
  
  	/* Handle death */
*** ..\src.original\init2.c	Tue Mar 04 03:23:38 1997
--- init2.c	Sat Apr 05 14:14:54 1997
***************
*** 350,356 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "f_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 350,356 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "f_info.raw");
  
  	/* Attempt to open the "raw" file */
!    fd = fd_open(buf, O_RDONLY | O_BINARY );
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 476,482 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "f_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'f_info.raw' file.");
--- 476,482 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "f_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'f_info.raw' file.");
***************
*** 603,609 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "k_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 603,609 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "k_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 729,735 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "k_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'k_info.raw' file.");
--- 729,735 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "k_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'k_info.raw' file.");
***************
*** 856,862 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "a_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 856,862 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "a_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 982,988 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "a_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot open 'a_info.raw' file.");
--- 982,988 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "a_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot open 'a_info.raw' file.");
***************
*** 1109,1115 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "e_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 1109,1115 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "e_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 1235,1241 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "e_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'e_info.raw' file.");
--- 1235,1241 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "e_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'e_info.raw' file.");
***************
*** 1362,1368 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 1362,1368 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 1488,1494 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'r_info.raw' file.");
--- 1488,1494 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'r_info.raw' file.");
***************
*** 1614,1620 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "v_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
--- 1614,1620 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "v_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd >= 0)
***************
*** 1740,1746 ****
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "v_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'v_info.raw' file.");
--- 1740,1746 ----
  	path_build(buf, 1024, ANGBAND_DIR_DATA, "v_info.raw");
  
  	/* Attempt to open the "raw" file */
! 	fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  	/* Process existing "raw" file */
  	if (fd < 0) quit("Cannot load 'v_info.raw' file.");
***************
*** 2640,2645 ****
--- 2641,2649 ----
  
  	/* Process that file */
  	process_pref_file(buf);
+ 
+    /* Intialize character window mode */
+    window_pw_mode=0;
  
  	/* Done */
  	note("[Initialization complete]");
*** ..\src.original\main-emx.c	Tue Mar 04 03:28:38 1997
--- main-emx.c	Tue Apr 01 22:00:52 1997
***************
*** 3,16 ****
  /* Purpose: Support for OS/2 EMX Angband */
  
  /* Author: ekraemer@pluto.camelot.de (Ekkehard Kraemer) */
  
  #ifdef USE_EMX
  
  /*
!  * === Instructions for using Angband 2.7.X with OS/2 ===
   *
!  * The patches (file "main-emx.c") to compile Angband 2.7.X under OS/2
!  * were written by ekraemer@pluto.camelot.de (Ekkehard Kraemer).
   *
   * TO COMPILE:
   *
--- 3,17 ----
  /* Purpose: Support for OS/2 EMX Angband */
  
  /* Author: ekraemer@pluto.camelot.de (Ekkehard Kraemer) */
+ /* Modified for Angband v2.8.1 by j.c.w.price@shef.ac.uk (James Denholm-Price) */
  
  #ifdef USE_EMX
  
  /*
!  * === Instructions for using Angband 2.8.1 with OS/2 ===
   *
!  * The patches (file "main-emx.c") to compile Angband 2.8.1 under OS/2
!  * were written mainly by ekraemer@pluto.camelot.de (Ekkehard Kraemer).
   *
   * TO COMPILE:
   *
***************
*** 74,81 ****
   *
   *   9.03.96   EK      2.7.9    Adjustable background color (PM)
   *                      v5      Added map window
   */
- 
  #include <signal.h>
  #include <stdio.h>
  #include <stdlib.h>
--- 75,84 ----
   *
   *   9.03.96   EK      2.7.9    Adjustable background color (PM)
   *                      v5      Added map window
+  *
+  *   1.04.97 JCWP    2.8.1    Added Ben's new multiple windows --
+  *                                just shows how good EKs stuff was :)
   */
  #include <signal.h>
  #include <stdio.h>
  #include <stdlib.h>
***************
*** 205,210 ****
--- 208,217 ----
  {
  	v_init();
  	v_getctype(&curs_start, &curs_end);
+ 
+    /* Hack cursor remove */
+    v_hidecursor();
+ 
  	v_clear();
  
  	signal(SIGHUP, SIG_IGN);
***************
*** 266,279 ****
   */
  errr init_emx(void);
  
! /*
!  * The screens
!  */
! 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()"
--- 273,281 ----
   */
  errr init_emx(void);
  
! #define MAX_TERM_DATA 8
! /* screen array -- pretty pointless?*/
! static termPipe angband_screen[MAX_TERM_DATA];
  
  /*
   * Check for events -- called by "Term_scan_emx()"
***************
*** 523,537 ****
  errr init_emx(void)
  {
  	term *t;
  
! 	/* Initialize the pipe windows */
! 	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);
  
  	/* Initialize the term -- big key buffer */
  	term_init(t, 80, 24, 1024);
--- 525,541 ----
  errr init_emx(void)
  {
  	term *t;
+    USHORT i;
  
! 	/* Initialize the windows */
! 	for (i = 0; i < MAX_TERM_DATA; i++)
! 	{
! 		cptr name = angband_term_name[i];
!       initPipeTerm(&angband_screen[i], name, &angband_term[i]);
! 	}
  
  	/* Initialize main window */
! 	t = (term*)(&angband_screen[0]);
  
  	/* Initialize the term -- big key buffer */
  	term_init(t, 80, 24, 1024);
***************
*** 583,589 ****
  	/* Check command line */
  	if (argc!=2 && argc!=3)
  	{
! 		printf("Usage: %s choice|recall|mirror [number of lines]\n"
  		       "Start this before angband.exe\n", argv[0]);
  		exit(1);
  	}
--- 587,593 ----
  	/* Check command line */
  	if (argc!=2 && argc!=3)
  	{
! 		printf("Usage: %s choice|recall|mirror|term[4-7] [number of lines]\n"
  		       "Start this before angband.exe\n", argv[0]);
  		exit(1);
  	}
***************
*** 897,903 ****
  	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);
--- 901,906 ----
***************
*** 941,951 ****
  	{
  		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)
  	{
--- 944,949 ----
*** ..\src.original\monster1.c	Tue Mar 04 03:33:16 1997
--- monster1.c	Mon Mar 17 19:29:38 1997
***************
*** 359,365 ****
  		path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  		/* Open the "raw" file */
! 		fd = fd_open(buf, O_RDONLY);
  
  		/* Use file */
  		if (fd >= 0)
--- 359,365 ----
  		path_build(buf, 1024, ANGBAND_DIR_DATA, "r_info.raw");
  
  		/* Open the "raw" file */
! 		fd = fd_open(buf, O_RDONLY | O_BINARY);
  
  		/* Use file */
  		if (fd >= 0)
*** ..\src.original\save.c	Tue Mar 04 03:35:22 1997
--- save.c	Sat Apr 05 18:02:54 1997
***************
*** 541,547 ****
  
  
  	/* Open the savefile */
! 	data_fd = fd_open(savefile, O_RDONLY);
  
  	/* No file */
  	if (data_fd < 0) return (1);
--- 541,548 ----
  
  
  	/* Open the savefile */
!    data_fd = fd_open(savefile, O_RDONLY | O_BINARY);
! 
  
  	/* No file */
  	if (data_fd < 0) return (1);
***************
*** 1748,1754 ****
  	if (!err)
  	{
  		/* Open the savefile */
! 		fd = fd_open(savefile, O_RDONLY);
  
  		/* No file */
  		if (fd < 0) err = -1;
--- 1754,1760 ----
  	if (!err)
  	{
  		/* Open the savefile */
!       fd = fd_open(savefile, O_RDONLY | O_BINARY);
  
  		/* No file */
  		if (fd < 0) err = -1;
*** ..\src.original\util.c	Fri Mar 07 20:31:14 1997
--- util.c	Mon Mar 17 19:24:22 1997
***************
*** 583,588 ****
--- 583,589 ----
  int fd_make(cptr file, int mode)
  {
  	char                buf[1024];
+    int                 fd;
  
  	/* Hack -- Try to parse the path */
  	if (path_parse(buf, 1024, file)) return (-1);
*** ..\src.original\variable.c	Tue Mar 04 03:39:08 1997
--- variable.c	Sat Apr 05 14:15:04 1997
***************
*** 470,475 ****
--- 470,477 ----
  u32b window_flag[8];
  u32b window_mask[8];
  
+ /* The player info window mode */
+ byte window_pw_mode;
  
  /*
   * The array of window pointers
*** ..\src.original\xtra1.c	Tue Mar 04 03:39:58 1997
--- xtra1.c	Sat Apr 05 14:39:28 1997
***************
*** 976,982 ****
  		Term_activate(angband_term[j]);
  
  		/* Display player */
! 		display_player(0);
  
  		/* Fresh */
  		Term_fresh();
--- 977,983 ----
  		Term_activate(angband_term[j]);
  
  		/* Display player */
! 		display_player(window_pw_mode);
  
  		/* Fresh */
  		Term_fresh();
*** ..\src.original\z-term.c	Fri Mar 07 01:18:42 1997
--- z-term.c	Sat Mar 29 11:35:18 1997
***************
*** 1201,1207 ****
  			(void)((*Term->curs_hook)(w - 1, scr->cy));
  
  			/* Make the cursor invisible */
! 			/* Term_xtra(TERM_XTRA_SHAPE, 0); */
  		}
  
  		/* The cursor is invisible, hide it */
--- 1201,1207 ----
  			(void)((*Term->curs_hook)(w - 1, scr->cy));
  
  			/* Make the cursor invisible */
! 			Term_xtra(TERM_XTRA_SHAPE, 0);
  		}
  
  		/* The cursor is invisible, hide it */
***************
*** 1211,1217 ****
  			(void)((*Term->curs_hook)(scr->cx, scr->cy));
  
  			/* Make the cursor invisible */
! 			/* Term_xtra(TERM_XTRA_SHAPE, 0); */
  		}
  
  		/* The cursor is visible, display it correctly */
--- 1211,1217 ----
  			(void)((*Term->curs_hook)(scr->cx, scr->cy));
  
  			/* Make the cursor invisible */
! 			Term_xtra(TERM_XTRA_SHAPE, 0);
  		}
  
  		/* The cursor is visible, display it correctly */
