DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T c

⟦809ea9142⟧ TextFile

    Length: 27579 (0x6bbb)
    Types: TextFile
    Names: »changes«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/X/Xwanderer/changes« 

TextFile

diff -c ORIG/old/Makefile ./Makefile
*** ORIG/old/Makefile	Tue Nov 15 14:10:41 1988
--- ./Makefile	Tue Nov 15 14:16:27 1988
***************
*** 4,11 ****
  #
  # GOALS: the programs you want to make
  #
! GOALS = wanderer xwanderer dev xdev erase
! #GOALS = xwanderer 
  # 
  # HEADERS: the header files 
  #
--- 4,11 ----
  #
  # GOALS: the programs you want to make
  #
! GOALS = wanderer xwanderer dev xdev erase icon_fonts
! #GOALS = xwanderer icon_fonts
  # 
  # HEADERS: the header files 
  #
***************
*** 14,20 ****
  # CUR_OBJS: the object files for the curses based wanderer
  # XWIN_OBJS: object files for the X based wanderer
  # DEV_OBJS: object files for the curses base dev. utility
- # COM_OBJS: object files common to the X based progams and the curses base ones
  # ERASE_OBJS: object files for the erase utility
  # 
  CUR_OBJS =  displayC.o fallC.o gameC.o iconC.o jumpC.o mC.o read.o scoresC.o \
--- 14,19 ----
***************
*** 23,29 ****
  	    helpscrX.o
  DEV_OBJS=   displayC.o iconC.o gameD.o mD.o fallC.o devread.o helpscrC.o
  XDEV_OBJS=  displayX.o iconX.o gameXD.o mXD.o fallX.o devread.o helpscrX.o
- COM_OBJS=   read.o
  ERASE_OBJS= erase.o
  SRCS=	    devread.c display.c erase.c fall.c game.c gamedev.c helpscr.c \
  	    icon.c jump.c m.c pixmapdecl.h read.c scores.c wand_head.h 
--- 22,27 ----
***************
*** 30,40 ****
  #
  # all of the object files
  #
! ALLOBJS = $(CUR_OBJS) $(XWIN_OBJS) $(DEV_OBJS) $(COM_OBJS) $(ERASE_OBJS)
  #
  # flags for the compiler
  #
! CFLAGS = -g 
  # 
  # libraries for an X based program
  #
--- 28,38 ----
  #
  # all of the object files
  #
! ALLOBJS = $(CUR_OBJS) $(XWIN_OBJS) $(DEV_OBJS) $(ERASE_OBJS)
  #
  # flags for the compiler
  #
! CFLAGS = -g -I/x11
  # 
  # libraries for an X based program
  #
***************
*** 51,67 ****
  # BINDIR:  where to put the executables
  # SCREENPATH: where to put the screens (see wand_head.h also)
  #
! BINDIR=/mnt/cuddy/bin
! SCREENPATH= /mnt/cuddy/lib/wanderer
  
  all:	$(GOALS)
  	@echo DONE
  
! wanderer:	$(CUR_OBJS) $(COM_OBJS)
! 	$(CC) $(CFLAGS) -o wanderer $(CUR_OBJS) $(COM_OBJS) $(CLIBS)
  
! xwanderer:	$(XWIN_OBJS) $(COM_OBJS)
! 	$(CC) $(CFLAGS) -o xwanderer $(XWIN_OBJS) $(COM_OBJS) $(XLIBS)
  
  erase:		$(ERASE_OBJS) 
  	$(CC) $(CFLAGS) -o erase $(ERASE_OBJS) 
--- 49,65 ----
  # BINDIR:  where to put the executables
  # SCREENPATH: where to put the screens (see wand_head.h also)
  #
! BINDIR=/usr/local/bin
! SCREENPATH= /usr/local/lib/wanderer/wanderer
  
  all:	$(GOALS)
  	@echo DONE
  
! wanderer:	$(CUR_OBJS)
! 	$(CC) $(CFLAGS) -o wanderer $(CUR_OBJS) $(CLIBS)
  
! xwanderer:	$(XWIN_OBJS)
! 	$(CC) $(CFLAGS) -o xwanderer $(XWIN_OBJS) $(XLIBS)
  
  erase:		$(ERASE_OBJS) 
  	$(CC) $(CFLAGS) -o erase $(ERASE_OBJS) 
***************
*** 77,101 ****
  	cp screens/* $(SCREENPATH)
  	cp wanderer.help $(SCREENPATH)
  
  dclean:	
! 	$(RM) $(DEV_OBJS) $(COM_OBJS)
  xdclean:	
! 	$(RM) $(XDEV_OBJS) $(COM_OBJS)
  wclean:	
! 	$(RM) $(CUR_OBJS) $(COM_OBJS)
  xclean:	
! 	$(RM) $(XWIN_OBJS) $(COM_OBJS)
  
  tags:		$(SRCS)
  	ctags $(SRCS) 
  
! clean:		dclean wclean xclean xdclean
  	$(RM) core make.out lint.out tags .#*
  
  clobber:	clean
  	$(RM) dev xdev wanderer xwanderer erase
  
- $(COM_OBJS):	$(HEADERS)
  #
  # special multiple compile targets
  #
--- 75,104 ----
  	cp screens/* $(SCREENPATH)
  	cp wanderer.help $(SCREENPATH)
  
+ icon_fonts:
+ 	cd icons; make
+ 
+ icon_clean:
+ 	cd icons; make clean
+ 
  dclean:	
! 	$(RM) $(DEV_OBJS)
  xdclean:	
! 	$(RM) $(XDEV_OBJS)
  wclean:	
! 	$(RM) $(CUR_OBJS)
  xclean:	
! 	$(RM) $(XWIN_OBJS)
  
  tags:		$(SRCS)
  	ctags $(SRCS) 
  
! clean:		dclean wclean xclean xdclean icon_clean
  	$(RM) core make.out lint.out tags .#*
  
  clobber:	clean
  	$(RM) dev xdev wanderer xwanderer erase
  
  #
  # special multiple compile targets
  #
Only in .: ORIG
Only in .: RCS
Only in .: changes
diff -c ORIG/old/display.c ./display.c
*** ORIG/old/display.c	Tue Nov 15 14:10:44 1988
--- ./display.c	Tue Nov 15 14:16:42 1988
***************
*** 75,81 ****
         /* erase the magnified map */
         XClearArea(dpy, win, 5, 5, ICON_WIDE * 11, ICON_HIGH * 7, 0);
     }
!    for (x= -1; x <= ROWLEN+1; x++)
         paint_small_square(x ,-1, '=');
  
      for(y = 0;y < NOOFROWS; y++)
--- 75,82 ----
         /* erase the magnified map */
         XClearArea(dpy, win, 5, 5, ICON_WIDE * 11, ICON_HIGH * 7, 0);
     }
!    do_repaint = 1;
!    for (x= -1; x < ROWLEN+1; x++)
         paint_small_square(x ,-1, '=');
  
      for(y = 0;y < NOOFROWS; y++)
***************
*** 88,99 ****
  		ch = ' ';
  	    paint_small_square(x,y,ch);
  	}
- 	paint_small_square(x,y,'=');
  	row_ptr++;
      }
!     for (x= -1; x <= ROWLEN+1; x++)
  	paint_small_square(x, y, '=');
-     do_repaint = 1;
      XDrawLine(dpy,win,linegc,2,2,2,ICON_HIGH*7+6);
      XDrawLine(dpy,win,linegc,2,ICON_HIGH*7+6,ICON_WIDE*11+6,ICON_HIGH*7+6);
      XDrawLine(dpy,win,linegc,ICON_WIDE*11+6,ICON_HIGH*7+6,ICON_WIDE*11+6,2);
--- 89,98 ----
  		ch = ' ';
  	    paint_small_square(x,y,ch);
  	}
  	row_ptr++;
      }
!     for (x= -1; x <= ROWLEN; x++)
  	paint_small_square(x, y, '=');
      XDrawLine(dpy,win,linegc,2,2,2,ICON_HIGH*7+6);
      XDrawLine(dpy,win,linegc,2,ICON_HIGH*7+6,ICON_WIDE*11+6,ICON_HIGH*7+6);
      XDrawLine(dpy,win,linegc,ICON_WIDE*11+6,ICON_HIGH*7+6,ICON_WIDE*11+6,2);
diff -c ORIG/old/fall.c ./fall.c
*** ORIG/old/fall.c	Tue Nov 15 14:10:18 1988
--- ./fall.c	Tue Nov 15 14:16:44 1988
***************
*** 94,99 ****
--- 94,100 ----
  #else
      if((y<(sy+4)) && (y>(sy-4)) && (nx>(sx-6)) && (nx<(sx+6)) || tinymode)
          draw_symbol((nx-sx+5),(y-sy+3),'O');
+     update_symbols ();
  #endif
      retval+=fall(mx,my,nx ,y+1,sx,sy,screen,howdead);
      retval+=fall(mx,my,nx ,y+1,sx,sy,screen,howdead);
***************
*** 144,149 ****
--- 145,151 ----
  #else
      if((nyr<(sy+4)) && (nyr>(sy-4)) && (x<(sx+7)) && (x>(sx-5))||tinymode)
          draw_symbol((x-sx+5),(nyr-sy+3),'<');
+     update_symbols ();
  #endif
      retval+=fall(mx,my,x-1,nyr,sx,sy,screen,howdead);
      retval+=fall(mx,my,x+1,y-1,sx,sy,screen,howdead);
***************
*** 194,199 ****
--- 196,202 ----
  #else
      if((nyl<(sy+4)) && (nyl>(sy-4)) && (x<(sx+5)) && (x>(sx-7))||tinymode)
          draw_symbol((x-sx+5),(nyl-sy+3),'>');
+     update_symbols ();
  #endif
      retval+=fall(mx,my,x+1,nyl,sx,sy,screen,howdead);
  	retval+=fall(mx,my,x+1,y-1,sx,sy,screen,howdead);
diff -c ORIG/old/game.c ./game.c
*** ORIG/old/game.c	Tue Nov 15 14:10:26 1988
--- ./game.c	Tue Nov 15 14:16:48 1988
***************
*** 248,254 ****
  	move(16,0);
          refresh();
  #else
! 	*bell = 1;
   	score_message(12,"Bell OFF");
  #endif
  	}
--- 248,254 ----
  	move(16,0);
          refresh();
  #else
! 	*bell = 0;
   	score_message(12,"Bell OFF");
  #endif
  	}
***************
*** 824,828 ****
--- 824,831 ----
      }
  
  }
+ #ifdef XWANDER
+ update_symbols ();
+ #endif
  return(howdead);
  }
diff -c ORIG/old/helpscr.c ./helpscr.c
*** ORIG/old/helpscr.c	Tue Nov 15 14:10:52 1988
--- ./helpscr.c	Tue Nov 15 14:16:52 1988
***************
*** 385,403 ****
  #endif
  }
  
- xydrawsymbol(x,y,ch)
- {
- #ifdef XWANDER
-     Pixmap p = (Pixmap) symbol_pixmap(ch);
-     GC g = (GC) symbol_gc(ch);
- 
-     XCopyArea(dpy, p, win, g, 0, 0, ICON_WIDE, ICON_HIGH, 
- 	x * tablefontwide + 10, y * tablefonthigh + 10);
- #else
-     draw_symbol(x, y, ch);
- #endif
- }
- 
  static char make_filenamebuf[1024];
  char *make_filename(path,file)	/* make a filepath from 'path' and 'file' */
  char *path, *file;
--- 385,390 ----
diff -c ORIG/old/icon.c ./icon.c
*** ORIG/old/icon.c	Tue Nov 15 14:10:33 1988
--- ./icon.c	Tue Nov 15 14:16:57 1988
***************
*** 3,8 ****
--- 3,19 ----
  
  #ifdef XWANDER
  
+ #include "icons/font.h"
+ 
+ int use_icons;
+ 
+ Font regular_icon_font;
+ Font tiny_icon_font;
+ GC regular_icon_gc;
+ GC tiny_icon_gc;
+ 
+ unsigned long	fg, bg;
+ 
  void paint_small_square();
  extern playerfacing;
  extern tinymode;
***************
*** 120,155 ****
      move(y+2,x+1);
      addstr(*iconrow);
  }
  #else
  
  Pixmap tiny_symbol_pixmap(), symbol_pixmap();
  GC symbol_gc();
  
  void draw_symbol(x,y,ch)
  int  x,y;
  char ch;
  {
!     Pixmap p = symbol_pixmap(ch);
!     GC g = symbol_gc(ch);
!     static int drawn[ROWLEN+1][NOOFROWS+1];
  
!     if (tinymode) { paint_small_square(x,y,ch); return; }
!     if (do_repaint) {
  	int i, j;
! 	for (i = 0; i < ROWLEN; i++)
! 	    for (j = 0; j < NOOFROWS+1; j++) 
! 		drawn[i][j] = -1;
  	do_repaint = 0;
      }
  
      /* only paint area if we have to */
!     if (drawn[x][y] != ch) {
! 	XCopyArea(dpy, p, win, g, 0, 0, ICON_WIDE, ICON_HIGH, 
! 	    x * ICON_WIDE + 5, y * ICON_HIGH + 5);
! 	drawn[x][y] = ch;
      }
  }
  
  Pixmap symbol_pixmap(ch)
  int ch;
  {
--- 131,328 ----
      move(y+2,x+1);
      addstr(*iconrow);
  }
+ 
+ xydrawsymbol(x,y,ch)
+ {
+     draw_symbol(x, y, ch);
+ }
+ 
  #else
  
  Pixmap tiny_symbol_pixmap(), symbol_pixmap();
  GC symbol_gc();
  
+ static int drawn_data[ROWLEN+1+1][NOOFROWS+1+1];
+ static int onscreen_data[ROWLEN+1+1][NOOFROWS+1+1];
+ #define check_x(x)  (((x) < -1 || (x) > ROWLEN+1) ? abort() : 0)
+ #define check_y(y)  (((y) < -1 || (y) > NOOFROWS+1) ? abort() : 0)
+ #define range_check(x,y) (check_x(x), check_y(y))
+ #define drawn(x,y)  (range_check(x,y),drawn_data[(x)+1][(y)+1])
+ #define onscreen(x,y)  (range_check(x,y),onscreen_data[x+1][y+1])
+ #define set_drawn(x,y,c)  (range_check(x,y),(drawn_data[(x)+1][(y)+1] = (c)))
+ #define set_onscreen(x,y,c)  (range_check(x,y),(onscreen_data[x+1][y+1] = (c)))
+ 
+ static int screenmode = -1;
+ 
  void draw_symbol(x,y,ch)
  int  x,y;
  char ch;
  {
!     int	xp, yp, width, height;
  
!     if (do_repaint || screenmode != tinymode) {
  	int i, j;
! 	for (i = -1; i < ROWLEN+1; i++)
! 	    for (j = -1; j < NOOFROWS+1; j++) {
! 		set_drawn(i,j, -1);
! 		set_onscreen(i,j, -1);
! 	    }
  	do_repaint = 0;
+ 	screenmode = tinymode;
      }
  
      /* only paint area if we have to */
!     if (drawn(x,y) != ch) {
!     	if (use_icons) {
!     	    Pixmap p;
!     	    GC g = symbol_gc(ch);
!     	
! 	    if (tinymode) {
! 		p = tiny_symbol_pixmap(ch);
! 		xp = x * SMALL_WIDE + 13;
! 		yp = SMALL_HIGH + 83;
! 		width = SMALL_WIDE;
! 		height = SMALL_HIGH;
! 	    } else { 
! 		p = symbol_pixmap (ch);
! 		xp = x * ICON_WIDE + 5;
! 		yp = y * ICON_HIGH + 5;
! 		width = ICON_WIDE;
! 		height = ICON_HIGH;
! 	    }
! 	    XCopyArea(dpy, p, win, g, 0, 0, width, height, xp, yp);
!     	}
!     	set_drawn(x,y, ch);
      }
  }
  
+ xydrawsymbol(x,y,ch)
+ {
+     if (use_icons) {
+         Pixmap p = (Pixmap) symbol_pixmap(ch);
+         GC g = (GC) symbol_gc(ch);
+ 	
+         XCopyArea(dpy, p, win, g, 0, 0, ICON_WIDE, ICON_HIGH, 
+     	x * tablefontwide + 10, y * tablefonthigh + 10);
+     } else {
+ 	char	c;
+ 	int	xp, yp;
+ 	GC	g = regular_icon_gc;
+ 
+ 	xp = x * tablefontwide + 10;
+ 	yp = y * tablefonthigh + 10 + ICON_HIGH;
+ 	c = symbol_fontchar (ch);
+ 	XDrawImageString (dpy, win, g, xp, yp, &c, 1);
+     }
+ }
+ 
+ update_symbols ()
+ {
+     char    line[ROWLEN+1+1];
+     int	    start;
+     int	    i, j, xp, yp;
+     GC	    g;
+     
+     if (!use_icons) {
+         start = -2;
+ 	for (j = -1; j < NOOFROWS+1; j++) {
+ 	    for (i = -1; i <= ROWLEN+1; i++) {
+ 		if (i != ROWLEN+1 && drawn(i,j) != onscreen(i,j)) {
+ 		    if (start == -2)
+ 			start = i;
+ 		    line[i+1] = symbol_fontchar(drawn(i,j));
+ 		    set_onscreen(i,j, drawn(i,j));
+ 		} else if (start != -2) {
+ 		    if (tinymode) {
+ 			g = tiny_icon_gc;
+ 			xp = start * SMALL_WIDE + 13;
+ 			yp = (j + 1) * SMALL_HIGH + 83;
+ 		    } else {
+ 			g = regular_icon_gc;
+ 	    	    	xp = start * ICON_WIDE + 5;
+ 	    	    	yp = (j + 1) * ICON_HIGH + 5;
+ 		    }
+ 	    	    XDrawImageString (dpy, win, g, xp, yp, &line[start+1],
+ 				       i - start);
+ 		    start = -2;
+ 		}
+ 	    }
+ 	}
+     }
+     XFlush (dpy);
+ }
+ 
+ int
+ symbol_fontchar(ch)
+ int ch;
+ {
+     int	picture;
+ 
+     switch(ch) {
+     case ' ':
+ 	picture = W_space;
+         break;
+     case '#':
+ 	picture = W_wall;
+         break;
+     case '<':
+ 	picture = W_larrow;
+         break;
+     case '>':
+ 	picture = W_rarrow;
+         break;
+     case 'O':
+ 	picture = W_rock;
+         break;
+     case ':':
+ 	picture = W_dirt;
+         break;
+     case '/':
+ 	picture = W_fwdslide;
+         break;
+     case '\\':
+ 	picture = W_backslide;
+         break;
+     case '*':
+ 	picture = W_diamond;
+         break;
+     case '=':
+ 	picture = W_brick;
+         break;
+     case '@':
+ 	if (playerfacing == 1)
+ 	    picture = W_playerl;
+ 	else
+ 	    picture = W_playerr;
+         break;
+     case 'T':
+ 	picture = W_teleport;
+         break;
+     case 'X':
+ 	picture = W_wayout;
+         break;
+     case '!':
+ 	picture = W_landmine;
+         break;
+     case 'M':
+ 	picture = W_monster;
+         break;
+     case 'S':
+ 	picture = W_sprite;
+         break;
+     case 'C':
+ 	picture = W_timecapsule;
+         break;
+     case '+':
+ 	picture = W_cage;
+         break;
+     default:
+ 	picture = W_brick;
+         break;
+     }
+     return(picture);
+ }
+ 
  Pixmap symbol_pixmap(ch)
  int ch;
  {
***************
*** 224,237 ****
  int  x,y;
  char ch;
  {
!     Pixmap p = tiny_symbol_pixmap(ch);
!     GC g = symbol_gc(ch);
  
!     x++;
!     y++;
!     if (ch == ' ' && !tinymode) return;
!     XCopyArea(dpy, p, win, g, 0, 0, SMALL_WIDE, SMALL_HIGH,
! 	x * SMALL_WIDE + 13, y * SMALL_HIGH + 83);
  }
  
  Pixmap tiny_symbol_pixmap(ch)
--- 397,406 ----
  int  x,y;
  char ch;
  {
!     if (ch == ' ' && !tinymode)
! 	return;
  
!     draw_symbol (x, y, ch);
  }
  
  Pixmap tiny_symbol_pixmap(ch)
***************
*** 323,330 ****
      pid = XCreatePixmap(dpy,root,width,height,
  		DefaultDepth(dpy,DefaultScreen(dpy)));
      
!     gcv.foreground = BlackPixel(dpy,DefaultScreen(dpy));
!     gcv.background = WhitePixel(dpy,DefaultScreen(dpy));
  
      pgc = XCreateGC(dpy, pid, GCForeground | GCBackground, &gcv);
      ximage.height = height;
--- 492,499 ----
      pid = XCreatePixmap(dpy,root,width,height,
  		DefaultDepth(dpy,DefaultScreen(dpy)));
      
!     gcv.foreground = fg;
!     gcv.background = bg;
  
      pgc = XCreateGC(dpy, pid, GCForeground | GCBackground, &gcv);
      ximage.height = height;
***************
*** 391,449 ****
  build_pixmaps() 
  {
      char *cp;
  
!     space_pm = MakePixmap(dpy, win, space_bm_bits, 64, 64);
!     wall_pm = MakePixmap(dpy, win, wall_bm_bits, 64, 64);
!     larrow_pm = MakePixmap(dpy, win, larrow_bm_bits, 64, 64);
!     rarrow_pm = MakePixmap(dpy, win, rarrow_bm_bits, 64, 64);
!     rock_pm = MakePixmap(dpy, win, rock_bm_bits, 64, 64);
!     dirt_pm = MakePixmap(dpy, win, dirt_bm_bits, 64, 64);
!     fwdslide_pm = MakePixmap(dpy, win, fwdslide_bm_bits, 64, 64);
!     backslide_pm = MakePixmap(dpy, win, backslide_bm_bits, 64, 64);
!     diamond_pm = MakePixmap(dpy, win, diamond_bm_bits, 64, 64);
!     brick_pm = MakePixmap(dpy, win, brick_bm_bits, 64, 64);
!     playerl_pm = MakePixmap(dpy, win, playerl_bm_bits, 64, 64);
!     playerr_pm = MakePixmap(dpy, win, playerr_bm_bits, 64, 64);
!     wayout_pm = MakePixmap(dpy, win, wayout_bm_bits, 64, 64);
!     landmine_pm = MakePixmap(dpy, win, landmine_bm_bits, 64, 64);
!     monster_pm = MakePixmap(dpy, win, monster_bm_bits, 64, 64);
!     sprite_pm = MakePixmap(dpy, win, sprite_bm_bits, 64, 64);
!     timecapsule_pm = MakePixmap(dpy, win, timecapsule_bm_bits, 64, 64);
!     cage_pm = MakePixmap(dpy, win, cage_bm_bits, 64, 64);
!     teleport_pm = MakePixmap(dpy, win, teleport_bm_bits, 64, 64);
!     whoops_pm = MakePixmap(dpy, win, whoops_bm_bits, 64, 64);
! 
!     space_tpm = MakePixmap(dpy, win, space_tbm_bits, 16, 16);
!     wall_tpm = MakePixmap(dpy, win, wall_tbm_bits, 16, 16);
!     larrow_tpm = MakePixmap(dpy, win, larrow_tbm_bits, 16, 16);
!     rarrow_tpm = MakePixmap(dpy, win, rarrow_tbm_bits, 16, 16);
!     rock_tpm = MakePixmap(dpy, win, rock_tbm_bits, 16, 16);
!     dirt_tpm = MakePixmap(dpy, win, dirt_tbm_bits, 16, 16);
!     fwdslide_tpm = MakePixmap(dpy, win, fwdslide_tbm_bits, 16, 16);
!     backslide_tpm = MakePixmap(dpy, win, backslide_tbm_bits, 16, 16);
!     diamond_tpm = MakePixmap(dpy, win, diamond_tbm_bits, 16, 16);
!     brick_tpm = MakePixmap(dpy, win, brick_tbm_bits, 16, 16);
!     player_tpm = MakePixmap(dpy, win, player_tbm_bits, 16, 16);
!     wayout_tpm = MakePixmap(dpy, win, wayout_tbm_bits, 16, 16);
!     landmine_tpm = MakePixmap(dpy, win, landmine_tbm_bits, 16, 16);
!     monster_tpm = MakePixmap(dpy, win, monster_tbm_bits, 16, 16);
!     sprite_tpm = MakePixmap(dpy, win, sprite_tbm_bits, 16, 16);
!     timecapsule_tpm = MakePixmap(dpy, win, timecapsule_tbm_bits, 16, 16);
!     cage_tpm = MakePixmap(dpy, win, cage_tbm_bits, 16, 16);
!     teleport_tpm = MakePixmap(dpy, win, teleport_tbm_bits, 16, 16);
!     whoops_tpm = MakePixmap(dpy, win, whoops_tbm_bits, 16, 16);
      /* build all of the GC's here too! */
!     globgc = XCreateGC(dpy, win, 0, 0);
!     XSetFunction(dpy, globgc, GXcopyInverted); 
  
  	/* create the message font gc and load the message font */
!     msgfontgc = XCreateGC(dpy, win, 0, 0);
!     XSetFunction(dpy, msgfontgc, GXcopyInverted);
!     linegc = XCreateGC(dpy, win, 0, 0);
!     XSetFunction(dpy, linegc, GXcopy);
      XSetLineAttributes(dpy,linegc, 2, LineSolid, CapButt, JoinMiter);
      cp = (char *)getenv("MSGFONT");
!     if (!cp) cp = "vr-20";
      msgfont = XLoadQueryFont(dpy, cp);
      if (msgfont == 0) {
  	fprintf(stderr,"Can't load (msgfont) %s.  Bye!\n",cp);
--- 560,637 ----
  build_pixmaps() 
  {
      char *cp;
+     XFontStruct	*regular_info;
+     XFontStruct *tiny_info;
+     XGCValues	gcv;
+     int		mask = GCForeground|GCBackground;
  
!     regular_info = XLoadQueryFont (dpy, NORMAL_NAME);
!     tiny_info = XLoadQueryFont (dpy, TINY_NAME);
!     fg = WhitePixel (dpy, DefaultScreen (dpy));
!     bg = BlackPixel (dpy, DefaultScreen (dpy));
!     gcv.foreground = fg;
!     gcv.background = bg;
!     if (!regular_info || !tiny_info)
! 	use_icons = 1;
!     else {
! 	regular_icon_font = regular_info->fid;
! 	gcv.font = regular_icon_font;
! 	regular_icon_gc = XCreateGC (dpy, win, GCForeground|GCBackground|GCFont, &gcv);
! 	tiny_icon_font = tiny_info->fid;
! 	gcv.font = tiny_icon_font;
! 	tiny_icon_gc = XCreateGC (dpy, win, GCForeground|GCBackground|GCFont, &gcv);
!     }
!     if (use_icons) {
!     	space_pm = MakePixmap(dpy, win, space_bm_bits, 64, 64);
!     	wall_pm = MakePixmap(dpy, win, wall_bm_bits, 64, 64);
!     	larrow_pm = MakePixmap(dpy, win, larrow_bm_bits, 64, 64);
!     	rarrow_pm = MakePixmap(dpy, win, rarrow_bm_bits, 64, 64);
!     	rock_pm = MakePixmap(dpy, win, rock_bm_bits, 64, 64);
!     	dirt_pm = MakePixmap(dpy, win, dirt_bm_bits, 64, 64);
!     	fwdslide_pm = MakePixmap(dpy, win, fwdslide_bm_bits, 64, 64);
!     	backslide_pm = MakePixmap(dpy, win, backslide_bm_bits, 64, 64);
!     	diamond_pm = MakePixmap(dpy, win, diamond_bm_bits, 64, 64);
!     	brick_pm = MakePixmap(dpy, win, brick_bm_bits, 64, 64);
!     	playerl_pm = MakePixmap(dpy, win, playerl_bm_bits, 64, 64);
!     	playerr_pm = MakePixmap(dpy, win, playerr_bm_bits, 64, 64);
!     	wayout_pm = MakePixmap(dpy, win, wayout_bm_bits, 64, 64);
!     	landmine_pm = MakePixmap(dpy, win, landmine_bm_bits, 64, 64);
!     	monster_pm = MakePixmap(dpy, win, monster_bm_bits, 64, 64);
!     	sprite_pm = MakePixmap(dpy, win, sprite_bm_bits, 64, 64);
!     	timecapsule_pm = MakePixmap(dpy, win, timecapsule_bm_bits, 64, 64);
!     	cage_pm = MakePixmap(dpy, win, cage_bm_bits, 64, 64);
!     	teleport_pm = MakePixmap(dpy, win, teleport_bm_bits, 64, 64);
!     	whoops_pm = MakePixmap(dpy, win, whoops_bm_bits, 64, 64);
!     
!     	space_tpm = MakePixmap(dpy, win, space_tbm_bits, 16, 16);
!     	wall_tpm = MakePixmap(dpy, win, wall_tbm_bits, 16, 16);
!     	larrow_tpm = MakePixmap(dpy, win, larrow_tbm_bits, 16, 16);
!     	rarrow_tpm = MakePixmap(dpy, win, rarrow_tbm_bits, 16, 16);
!     	rock_tpm = MakePixmap(dpy, win, rock_tbm_bits, 16, 16);
!     	dirt_tpm = MakePixmap(dpy, win, dirt_tbm_bits, 16, 16);
!     	fwdslide_tpm = MakePixmap(dpy, win, fwdslide_tbm_bits, 16, 16);
!     	backslide_tpm = MakePixmap(dpy, win, backslide_tbm_bits, 16, 16);
!     	diamond_tpm = MakePixmap(dpy, win, diamond_tbm_bits, 16, 16);
!     	brick_tpm = MakePixmap(dpy, win, brick_tbm_bits, 16, 16);
!     	player_tpm = MakePixmap(dpy, win, player_tbm_bits, 16, 16);
!     	wayout_tpm = MakePixmap(dpy, win, wayout_tbm_bits, 16, 16);
!     	landmine_tpm = MakePixmap(dpy, win, landmine_tbm_bits, 16, 16);
!     	monster_tpm = MakePixmap(dpy, win, monster_tbm_bits, 16, 16);
!     	sprite_tpm = MakePixmap(dpy, win, sprite_tbm_bits, 16, 16);
!     	timecapsule_tpm = MakePixmap(dpy, win, timecapsule_tbm_bits, 16, 16);
!     	cage_tpm = MakePixmap(dpy, win, cage_tbm_bits, 16, 16);
!     	teleport_tpm = MakePixmap(dpy, win, teleport_tbm_bits, 16, 16);
!     	whoops_tpm = MakePixmap(dpy, win, whoops_tbm_bits, 16, 16);
!     }
      /* build all of the GC's here too! */
!     globgc = XCreateGC(dpy, win, mask, &gcv);
  
  	/* create the message font gc and load the message font */
!     msgfontgc = XCreateGC(dpy, win, mask, &gcv);
!     linegc = XCreateGC(dpy, win, mask, &gcv);
      XSetLineAttributes(dpy,linegc, 2, LineSolid, CapButt, JoinMiter);
      cp = (char *)getenv("MSGFONT");
!     if (!cp) cp = "fixed";
      msgfont = XLoadQueryFont(dpy, cp);
      if (msgfont == 0) {
  	fprintf(stderr,"Can't load (msgfont) %s.  Bye!\n",cp);
***************
*** 454,462 ****
      XSetFont(dpy, msgfontgc, msgfont->fid);
  
      	/* create the highscore table gc and load the font */
!     tablegc = XCreateGC(dpy, win, 0, 0);
      cp =(char *) getenv("TABLEFONT");
!     if (!cp) cp = "8x13bold";
      tablefont = XLoadQueryFont(dpy, cp);
      if (tablefont == 0) {
  	fprintf(stderr,"Can't load (tablefont) %s.  Bye!\n",cp);
--- 642,650 ----
      XSetFont(dpy, msgfontgc, msgfont->fid);
  
      	/* create the highscore table gc and load the font */
!     tablegc = XCreateGC(dpy, win, mask, &gcv);
      cp =(char *) getenv("TABLEFONT");
!     if (!cp) cp = "fixed";
      tablefont = XLoadQueryFont(dpy, cp);
      if (tablefont == 0) {
  	fprintf(stderr,"Can't load (tablefont) %s.  Bye!\n",cp);
***************
*** 468,477 ****
      XSetFont(dpy, tablegc, tablefont->fid);
  
  	/* create the score font gc and load the score font */
!     scorefontgc = XCreateGC(dpy, win, 0, 0);
!     XSetFunction(dpy, scorefontgc, GXcopyInverted);
      cp = (char*)getenv("SCOREFONT");
!     if (!cp) cp = "fcor-20";
      scorefont = XLoadQueryFont(dpy,cp);
      if (scorefont == 0) {
  	fprintf(stderr,"Can't load (scorefont).  Bye!\n");
--- 656,664 ----
      XSetFont(dpy, tablegc, tablefont->fid);
  
  	/* create the score font gc and load the score font */
!     scorefontgc = XCreateGC(dpy, win, mask, &gcv);
      cp = (char*)getenv("SCOREFONT");
!     if (!cp) cp = "fixed";
      scorefont = XLoadQueryFont(dpy,cp);
      if (scorefont == 0) {
  	fprintf(stderr,"Can't load (scorefont).  Bye!\n");
***************
*** 484,491 ****
--- 671,680 ----
  
  display_monster(mx)
  {
+ /*
      Pixmap m = symbol_pixmap((mx != (-1) ? 'M' : ' ')); 
      GC mgc = symbol_gc((mx != (-1) ? 'M' : ' ')); 
+ */
      int x1 = ICON_WIDE * 12 + 54;
      int x2 = x1 + (ICON_WIDE) + 6;
      int y1 = scorefonthigh * 10 + 10;
***************
*** 496,503 ****
--- 685,695 ----
      XDrawLine(dpy, win, linegc, x2, y2, x1, y2);
      XDrawLine(dpy, win, linegc, x1, y2, x1, y1);
  
+     xydrawsymbol(x1 + 3, y1 + 3, mx != (-1) ? 'M' : ' ');
+ /*
      XCopyArea(dpy, m, win, mgc, 0, 0, ICON_WIDE, ICON_HIGH,
  	x1 + 3, y1 + 3);
+ */
      /* score_message(9,"   Monster Detector"); */
  }
  
***************
*** 561,567 ****
       /* printf("In getchar\n"); */
  
      while (1) {
!     XNextEvent(dpy, &(event));
  	switch(event.type) {
  	case Expose:		
  	    if (event.xexpose.count != 0) {
--- 753,760 ----
       /* printf("In getchar\n"); */
  
      while (1) {
! 	update_symbols ();
!         XNextEvent(dpy, &(event));
  	switch(event.type) {
  	case Expose:		
  	    if (event.xexpose.count != 0) {
Common subdirectories: ORIG/old/icons and ./icons
Only in .: lib
diff -c ORIG/old/m.c ./m.c
*** ORIG/old/m.c	Tue Nov 15 14:11:02 1988
--- ./m.c	Tue Nov 15 14:17:01 1988
***************
*** 253,259 ****
  	    if (ch == 'Y' || ch == 'N') 
  		break;
  	    erase_message(1);
! 	    message(1,"You dolt, type `Y' or `N':          ");
  	    dobeep();
  	}
  	if (ch == 'N') break; else {
--- 253,259 ----
  	    if (ch == 'Y' || ch == 'N') 
  		break;
  	    erase_message(1);
! 	    message(1,"Please type `Y' or `N':          ");
  	    dobeep();
  	}
  	if (ch == 'N') break; else {
Only in ORIG/old: make.out
diff -c ORIG/old/read.c ./read.c
*** ORIG/old/read.c	Tue Nov 15 14:13:24 1988
--- ./read.c	Tue Nov 15 14:17:04 1988
***************
*** 22,28 ****
  	printf("no maxmoves specified: assuming infinite movement.\n");
  	*maxmoves= (-1);
  	}
      };
- fclose(fp);
  return (fp == NULL);
  }
--- 22,28 ----
  	printf("no maxmoves specified: assuming infinite movement.\n");
  	*maxmoves= (-1);
  	}
+     fclose(fp);
      };
  return (fp == NULL);
  }
diff -c ORIG/old/scores.c ./scores.c
*** ORIG/old/scores.c	Tue Nov 15 14:11:05 1988
--- ./scores.c	Tue Nov 15 14:17:19 1988
***************
*** 63,68 ****
--- 63,69 ----
  {
  FILE *fp;
  int  numread;
+ char line[1024];
  if((fp = fopen(HISCOREPATH,"r")) == NULL)
      {
      numread = 0;
***************
*** 69,75 ****
      }
  else
      {
!     numread = fread(table_ptr, sizeof(score_entry), ENTRIES, fp);
      fclose(fp);
      }
  return numread;
--- 70,84 ----
      }
  else
      {
!     numread = 0;
!     while (fgets (line, sizeof (line), fp) != NULL) {
! 	sscanf (line, "%[^\t]\t%[^\t]\t%d %d\n",
! 		table_ptr[numread].howdead,
! 		table_ptr[numread].name,
! 		&table_ptr[numread].score,
! 		&table_ptr[numread].level);
! 	numread++;
!     }
      fclose(fp);
      }
  return numread;
***************
*** 159,165 ****
  numread = ( (numread > ENTRIES) ? ENTRIES : numread );
  fp = fopen(HISCOREPATH,"w");
  table_ptr = table;
! numsaved = fwrite(table_ptr, sizeof(score_entry), numread, fp);
  chmod(HISCOREPATH,0666);
  if(numsaved < numread)
      {
--- 168,180 ----
  numread = ( (numread > ENTRIES) ? ENTRIES : numread );
  fp = fopen(HISCOREPATH,"w");
  table_ptr = table;
! for (numsaved = 0; numsaved < numread; numsaved++) {
!     fprintf (fp, "%s\t%s\t%d %d\n",
! 		table_ptr[numsaved].howdead,
! 		table_ptr[numsaved].name,
! 		table_ptr[numsaved].score,
! 		table_ptr[numsaved].level);
! }
  chmod(HISCOREPATH,0666);
  if(numsaved < numread)
      {
Common subdirectories: ORIG/old/screens and ./screens
diff -c ORIG/old/wand_head.h ./wand_head.h
*** ORIG/old/wand_head.h	Tue Nov 15 14:12:48 1988
--- ./wand_head.h	Tue Nov 15 14:17:21 1988
***************
*** 4,11 ****
  #define ROWLEN 40
  #define NOOFROWS 16
  
! #define SCREENPATH "/mnt/cuddy/lib/wanderer"
! #define HISCOREPATH "/mnt/cuddy/lib/hiscores"
  #define LOCKPATH "/tmp/wanderer.lock"
  
  #define MASTERPASSWORD "zaphod"
--- 4,11 ----
  #define ROWLEN 40
  #define NOOFROWS 16
  
! #define SCREENPATH "/usr/local/lib/wanderer"
! #define HISCOREPATH "/usr/local/lib/wanderer/hiscore"
  #define LOCKPATH "/tmp/wanderer.lock"
  
  #define MASTERPASSWORD "zaphod"