[comp.sources.games] v12i001: reve - an othello game, Patch3a

billr@saab.CNA.TEK.COM (Bill Randle) (12/22/90)

Submitted-by: Rich Burridge <rburridge@sun.COM>
Posting-number: Volume 12, Issue 1
Archive-name: reve/Patch3a
Patch-To: reve: Volume 11, Issue 52-58
Environment: SunView, XView, X11R4, termcap

	[Also previously posted to comp.sources.games.bugs and
	reposted here to get in the official archive.  -br]


Just a couple of points before the patch:

  * Yves Galloty, the author of the computer strategy used in reve will be
    leaving his current job on 20th December, and going to a new job in
    France, which won't be so well connected to the net. We are going to
    get one more patch out before then. After that, any problems related to
    the computer strategy might take a lot longer to get fixed.

  * This patch is big. I've tried to test everything I've added, but with a
    patch of this size, I'm sure I've screwed something up. If it's not
    listed in the TODO file, could you please let me know, no matter how
    trivial you might think the problem is.


/*
 *  Official patch #3 for Reve v1.1.
 *
 *  Copyright (C) 1990 - Rich Burridge & Yves Gallot.
 *  All rights reserved.
 *
 *  Permission is granted to copy this patch, for redistribution
 *  in patch form only, provided the news headers in "substantially
 *  unaltered format" are retained, the introductory messages are not
 *  removed, and no monies are exchanged.
 *
 *  Permission is also granted to copy this patch, without the news
 *  headers, for the purposes of patching the Reve source and making
 *  an executable copy by means of compilation, provided that such
 *  copy will not be used for the purposes of competition in any othello
 *  tournaments, without prior permission from the authors.
 */

CONTENTS:

1. What is reve?
2/ Changes made in this patch.
3/ How to install this patch.
4/ How to get previous patches.

----------------

1/ What is reve?

Reve is an othello game. It works under SunView, XView, X11 (Xlib) and on
dumb tty terminals.

Reve has nine levels of difficulty. Levels 1-3 should be useful to beginners,
levels 4-6 would satisfy amateurs, and the higher levels will give experts a
good game. Level 8 (30 minutes) is the tournament level.
 
----------------

2/ Changes made in this patch.

       * Added a description of the -bestmove command line option to the
         manual pages.

       * If you were using the -last option, and the window was iconified,
         and there was only the initial four stones on the board, then
         opening Reve, would incorrectly show the "last" square.

       * If you were using the -number option, and the window was iconified,
         then when Reve was opened again, the number was not being displayed
         on the last stone.
 
       * The display of a single digit on a stone (with the -number option)
         was not centered correctly.
 
       * From Jonathan I. Kamens <jik@pit-manager.MIT.EDU>
         Problems with the Imakefile. The line that says
         "LIBDIR=$(USRLIBDIR)/reve" should be deleted, and both of the rules
         that say "$(LIBDIR)$(PATHSEP)reve" should actually say
         "$(USRLIBDIR)$(PATHSEP)reve".
 
         Also, the EDGENAMEFILE should be changed to
         $(USRLIBDIR)$(PATHSEP)reve$(PATHSEP)$(ETABLE)
 
       * Added in X resources support for the X11(Xlib) and XView versions.
         Currently, the resources read are:
  
           reve.animate:        (boolean) show animation.
           reve.bestmove:       (boolean) show computer best move so far.
           reve.difficulty:     (integer) computer difficulty level.
           reve.last:           (boolean) show last move (with a square).
           reve.log:            (boolean) write computer info to log file.
           reve.notes:          (boolean) show computer notes.
           reve.number:         (boolean) show last move (number on stone).
           reve.quick:          (boolean) play quick game (don't flip stones).

       * From Valerie Haecky <vmh@Eng.Sun.COM>
         Undo'ing is incorrect at the end game if the computer is playing
         black.

       *  Need to allow options like -scale through on the command line. This
          can be done by have an init_graphics() routine that gets called
          right at the start, which strips off graphics specific options.

       *  The hourglass/watch cursor is turned on, when the computer is
          suggesting a move.

       * If the bestmove option is on, and the computer suggested a move,
         the last bestmove square wasn't being removed.

       * From Valerie Haecky <vmh@Eng.Sun.COM>
         The show notes now also shows the current maximum depth for the
         computer move.

       * From Valerie Haecky <vmh@Eng.Sun.COM>
         Added to the README file, the address where people can get
         information about tournaments, Othello Quarterly, and "Othello
         Brief and Basic'

       * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
         Because the default is now set not to show the last square, and
         notes is initially set off, I think that a status message such as
         'Black has moved on square <c-5>' should be displayed, otherwise
         you've no idea where the computer moved.

       * Stones are numbered and the last square shown when a game is
         being loaded, if these settings are on.

       * From Valerie Haecky <vmh@Eng.Sun.COM>
         More work on the XView version. The control panel layout has been
         rearranged, and a property window added. The Help button has been
         removed from the control panel. Several options can now be set via
         the property sheet. A new difficulty value has been added; the
         ability to set a maximum computer search depth rather than the
         computer doing a timed move.

       * A new XView version has been created. This forks off a separate
         process to do the computer moves. This is to try to get around
         the server hanging problem. This still can happen, but not so
         frequently.

         Two new files have been created:

         common.c and reve_proc.c.

         The Makefile.dist, MANIFEST and FILES files have been updated.

       * From: robert@anucsd.anu.oz.au (Robert Cohen)
         It would be nice to have some idea of how far reve was looking ahead.
         So in the notes section for example you could report on the ply used
         to find the solution. If the bestmove option was set it could be shown
         dynamically as new solutions were found.

       * For the SunView and X11 versions the Done button has been replaced by
         a Props button. Clicking on this will toggle the display of a property
         window. The property window looks something like:

         Computer plays:  White | Black | Neither | Both
         Difficulty:      1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

         Options: [ ]    Animate Move
                  [ ]    Show Current Best Move
                  [ ]    Show Last Move
                  [ ]    Show Evaluation Info.
                  [ ]    Number Last Move
                  [ ]    Don't Show Flip

         This introduce two new type of "panel" item, the toggle item
         (P_TOGGLE) and the choice item (P_CHOICE). The cycle item has been
         removed.

         Selecting the Both field on the Computer plays: option, will display
         the message that this option is currently not implemented.

         The following changes have occured in the main reve window:

         The Black: and White: items are messages. The Difficulty: and
         Show Notes: items will disappear, freeing up a row.

         Setting the Computer plays: option, alters the Black: and White:
         options.

         The iteminfo structure will have five new fields:

           int lx ;              /* X position of the label. */
           int ly ;              /* Y position of the label. */
           char label[60] ;      /* Panel item label. */
           char *options ;       /* Pointer to list of string choices. */
           int nopts ;           /* Number of options in list. */

         Only certain fields are used with each type of panel "item". All
         items are initialised in main.c.

         Two new files have been added to the images directory:

         images/Sch_off.icon
         images/Sch_on.icon

         This solves the following problems:

       * From: robert@anucsd.anu.oz.au (Robert Cohen)
         It would be nice to be able to change all the program parameters from
         inside the game. For example being able to pull down a menu and turn
         the bestmove option on or off.

       * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
         I, and most of the users here, use a combination of X11R4, twm and
         1024 by 768 colour or mono displays. The new Reve window now exceeds
         the height of the screen minus the height of the twm title bar of the
         window! Hence the bottom of half of row 8 and the a to h labelling
         are no longer visible, even if the top of the twm title bar for the
         Reve window is at the top of the screen!

       * From Soren Hein <shein@ferdowsi.berkeley.edu>
         Why double switches for White, Black and Notes? Both halves of the
         switches do the same thing.

       * Incorporated a new version of the rev_eval.c evaluation fuction from
         Yves. There is also a complete new edge table to go with this. This
         should be faster on RISC systems.

       * XResourceManagerString, which is now used as part of the X resources
         support in the X11 and XView versions, appears to be an X11R4
         functions. If you are trying to get the X11 version working with
         X11R3, then there is a new definition in the Makefile[.dist] file
         that you'll have to uncomment. The README file has been updated to
         mention this.

       * From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
         Using the X11 interface, when I click on Suggest and get a cross
         marking the suggested square, then the cross does not disappear when
         I click on Undo (the position is different, so the suggested square
         is no longer valid). This gets a bit confusing when you do a Suggest,
         Undo and Suggest again sequence - you end up with 2 crosses on the
         board.

       *  From Richard K. Lloyd <RKL@anduin.compsci.liverpool.ac.uk>
          When compiling rev_ip.c on an HP-UX 9000 Series 300 machine (68020 or
          68030), the HP-UX 7.0 C compiler crashes out with the following error:
          C1 internal error in "tuplonges": invalid OREG in recognize_array()

          This problem has now been found, and the appropriate code is
          #ifdef'ed in rev_ip.c.

----------------
 
3/ How to install this patch.
 
To cut down on the size of this patch (yes really!!), the packing is not
so straight forward as it could have been.

This patch consists of nine parts. Save each one first. The first part
consists of this introductory message, followed by a shar file containing
the four new files:

          reve_proc.c
          common.c
          images/Sch_off.icon
          images/Sch_on.icon

You should strip off all the initial lines (down to and including the CUT
HERE line), and give to sh to unpack.

The second part consists of a new copy of reve.edge1, and the third part
contains a new copy of reve.edge2. You should strip off the initial mail
headers (down to and including the CUT HERE lines), and replace the existing
files.

You should then use Larry Wall's patch program to apply the changes in the
other six parts. Assuming the six files are called patch3-4, patch3-5, ...,
patch3-9 do the following:
 
cd reve_src        # directory where your reve source files are.
patch <patch3-4
patch <patch3-5
...
patch <patch3-9
 
Copy Makefile.dist to Makefile, and adjust for your site. See the README
file for things you might have to tweak in order to get Reve to work on
your machine.
 
You will then have to do the appropriate make, to generate the graphics
version you require. Do a "make help" to obtain more information on this.
          
Finally, you should do a "make install". You will probably have to be
super-user to do this.
          
If you have any problems with Reve after applying this patch, and your
problem is not listed in the TODO file, please let us know.
          
----------------

4/ How to get previous patches.
 
If you need to get patches 1 or 2, then they can be obtained from the automatic
mail archive server, by sending a message to rb-archive-server@Aus.Sun.COM
containing the line:
 
send reve patchn
 
where n is the patch number you require.
 
You can also include a path line in these requests to indicate the mail
path that the archive server should use to send the files to you. Such a
path line could be:
 
path uunet.uu.net!hostname!user
          
Note that this is uunet.uu.net and not just uunet. Sun.COM doesn't recognise
just uunet.
 
[NOTE: When unpacking the shars generated by the automatic mail service,
       it is possible you will get error messages for incorrect length.
       Please ignore; hopefully the files should still unpack correctly].
         
Rich Burridge           richb@Aus.Sun.COM
Yves Gallot             galloty@cernvax.cern.ch
 
------CUT HERE------patch 3 - part 1------CUT HERE------
#! /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 1 (of 9)."
# Contents:  common.c reve_proc.c images/Sch_off.icon
#   images/Sch_on.icon
# Wrapped by billr@saab on Fri Dec 21 11:24:19 1990
PATH=/bin:/usr/bin:/usr/ucb ; export PATH
echo shar: overwriting existing file \"'common.c'\"
echo shar: Extracting \"'common.c'\" \(2435 characters\)
sed "s/^X//" >'common.c' <<'END_OF_FILE'
X 
X/*  @(#)common.c 1.2 90/12/09
X *
X *  Common routine between reve and reve_proc.
X *
X *  Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X *  All rights reserved.
X *
X *  Permission is granted to copy this source, for redistribution
X *  in source form only, provided the news headers in "substantially
X *  unaltered format" are retained, the introductory messages are not
X *  removed, and no monies are exchanged.
X *
X *  Permission is also granted to copy this source, without the
X *  news headers, for the purposes of making an executable copy by
X *  means of compilation, provided that such copy will not be used
X *  for the purposes of competition in any othello tournaments, without
X *  prior permission from the authors.
X *
X *  No responsibility is taken for any errors on inaccuracies inherent
X *  either to the comments or the code of this program, but if reported
X *  (see README file), then an attempt will be made to fix them.
X */
X
X#include "reve.h"
X#include "extern.h"
X
Xvoid
Xinit_edge_table(edgefile)     /* Load reve edge table values. */
Xchar *edgefile ;
X{
X  char buf[MAXLINE], *getenv(), name[MAXLINE], *paths, *ptr ;
X  int i, line ;
X  FILE *fp = NULL ;
X
X  i = 0 ;
X  if ((fp = fopen(edgefile, "r")) == NULL)
X    {
X      paths = getenv("PATH") ;
X      if ((ptr = paths) && edgefile[0] != '/')
X        for (;;)
X          if (*ptr == ':' || *ptr == 0)
X            {
X              if (*ptr == 0) break ;
X              name[i++] = '/' ;
X              name[i] = 0 ;
X              STRCAT(name, edgefile) ;
X              if ((fp = fopen(name, "r")) != NULL) break ;
X              if (*ptr == '\0') break ;
X              ptr++ ;
X              i = 0 ;
X            }
X          else name[i++] = *ptr++ ;
X    }
X 
X  if (fp == NULL)
X    {
X      FPRINTF(stderr, "Cannot open Edge Stability Table file\n") ;
X      exit(1) ;
X    }
X  line = 0 ;
X  while (fgets(buf, MAXLINE, fp) != NULL)
X    {
X      line++ ;
X      if (buf[0] == '\n' || buf[0] == '#') continue ;
X      if ((ptr = index(buf, '[')) == NULL)
X        {
X          FPRINTF(stderr, "Cannot read edge table file at line %d\n", line) ;
X          exit(1) ;
X        }
X      SSCANF(ptr+1, "%d", &i) ;
X      if ((ptr = index(buf, '=')) == NULL)
X        {
X          FPRINTF(stderr, "Cannot read edge table file at line %d\n", line) ;
X          exit(1) ;
X        }
X      SSCANF(ptr+1, "%ld", &edges[i]) ;
X    }
X  FCLOSE(fp) ;
X  for (i = 0 ; i < 3281; i++) edges[6560 - i] = - edges[i] ;
X}
END_OF_FILE
if test 2435 -ne `wc -c <'common.c'`; then
    echo shar: \"'common.c'\" unpacked with wrong size!
fi
# end of 'common.c'
echo shar: overwriting  existing file \"'reve_proc.c'\"
echo shar: Extracting \"'reve_proc.c'\" \(2755 characters\)
sed "s/^X//" >'reve_proc.c' <<'END_OF_FILE'
X
X/*  @(#)reve_proc.c 1.2 90/12/09
X *
X *  Main routine for the separate play_reve program.
X *
X *  Copyright (C) 1990 - Rich Burridge & Yves Gallot.
X *  All rights reserved.
X *
X *  Permission is granted to copy this source, for redistribution
X *  in source form only, provided the news headers in "substantially
X *  unaltered format" are retained, the introductory messages are not
X *  removed, and no monies are exchanged.
X *
X *  Permission is also granted to copy this source, without the
X *  news headers, for the purposes of making an executable copy by
X *  means of compilation, provided that such copy will not be used
X *  for the purposes of competition in any othello tournaments, without
X *  prior permission from the authors.
X *
X *  No responsibility is taken for any errors on inaccuracies inherent
X *  either to the comments or the code of this program, but if reported
X *  (see README file), then an attempt will be made to fix them.
X */
X
X#include "reve.h"
X
Xstruct reve_in in ;          /* Input supplied on standard input. */
Xstruct reve_out out ;        /* Results written to standard output. */
X
Xint sin ;                    /* Size of the input buffer. */
X
Xint saveres = 0 ;            /* If set, save computer results to log file. */
X
X/* REVE global variables */
X
Xint damier[NIVEAUMAX][64] ;  /* Boards at different depth level */
Xint tacouleur, macouleur ;   /* Your and my colors during evaluation */
Xint mnb, profmax ;           /* Number of moves played, current max. depth */
Xint max_depth = 2 ;          /* Computer strategy - maximum depth. */
Xint vp0, vo0 ;               /* Current mobility components */
Xlong c1, c2, c3 ;            /* Constants used in evaluation function */
Xlong edges[6561] ;           /* Edges Stability Table */
Xlong note ;                  /* Note value for current computer move. */
Xtime_t timeleft ;            /* Amount of time left for computer moves. */
X
X
X/*ARGSUSED*/
Xmain(argc, argv)
Xint argc ;
Xchar *argv[] ;
X{
X  int reply ;
X
X  if (argv[1] != NULL) init_edge_table(argv[1]) ;
X  for (;;)
X    {
X      sin = sizeof(struct reve_in) ;
X      if ((reply = read(0, (char *) &in, sin)) > 0)
X        {
X               if (in.type == M_TIME)    timeleft  = in.timeleft ;
X          else if (in.type == M_PROFMAX) max_depth = in.level ;
X          else
X            {
X              play_reve(in.board, in.player, in.level, &out.move, &out.note) ;
X              out.type = in.type ;
X              WRITE(1, (char *) &out, sizeof(struct reve_out)) ;
X            }
X        }
X      else if (reply == 0) exit(1) ;
X    }
X}
X
X
Xvoid
Xshow_best(move, note)
Xint move ;
Xlong note ;
X{
X  out.type  = M_BEST ;
X  out.move  = move ;
X  out.note  = note ;
X  out.depth = profmax ;
X  WRITE(1, (char *) &out, sizeof(struct reve_out)) ;
X}
END_OF_FILE
if test 2755 -ne `wc -c <'reve_proc.c'`; then
    echo shar: \"'reve_proc.c'\" unpacked with wrong size!
fi
# end of 'reve_proc.c'
echo shar: overwriting existing file \"'images/Sch_off.icon'\"
echo shar: Extracting \"'images/Sch_off.icon'\" \(1933 characters\)
sed "s/^X//" >'images/Sch_off.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0xFFE0,0x0000,0x0000,0x0000,0x8020,0x0000,0x0000,0x0000,
X	0x8020,0x0000,0x0000,0x0000,0x8020,0x0000,0x0000,0x0000,
X	0x8020,0x0000,0x0000,0x0000,0x8020,0x0000,0x0000,0x0000,
X	0x8020,0x0000,0x0000,0x0000,0x8020,0x0000,0x0000,0x0000,
X	0x8020,0x0000,0x0000,0x0000,0xFFE0,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
END_OF_FILE
if test 1933 -ne `wc -c <'images/Sch_off.icon'`; then
    echo shar: \"'images/Sch_off.icon'\" unpacked with wrong size!
fi
# end of 'images/Sch_off.icon'
echo shar: overwriting existing file \"'images/Sch_on.icon'\"
echo shar: Extracting \"'images/Sch_on.icon'\" \(1933 characters\)
sed "s/^X//" >'images/Sch_on.icon' <<'END_OF_FILE'
X/* Format_version=1, Width=64, Height=64, Depth=1, Valid_bits_per_item=16
X */
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0002,0x0000,0x0000,0x0000,
X	0x0007,0x0000,0x0000,0x0000,0x000E,0x0000,0x0000,0x0000,
X	0xFFFC,0x0000,0x0000,0x0000,0x8038,0x0000,0x0000,0x0000,
X	0x8070,0x0000,0x0000,0x0000,0x80E0,0x0000,0x0000,0x0000,
X	0xB1E0,0x0000,0x0000,0x0000,0xBBA0,0x0000,0x0000,0x0000,
X	0x9F20,0x0000,0x0000,0x0000,0x8E20,0x0000,0x0000,0x0000,
X	0x8420,0x0000,0x0000,0x0000,0xFFE0,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
X	0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
END_OF_FILE
if test 1933 -ne `wc -c <'images/Sch_on.icon'`; then
    echo shar: \"'images/Sch_on.icon'\" unpacked with wrong size!
fi
# end of 'images/Sch_on.icon'
echo shar: End of archive 1 \(of 9\).
cp /dev/null ark1isdone
MISSING=""
for I in 1 2 3 4 5 6 7 8 9 ; do
    if test ! -f ark${I}isdone ; then
	MISSING="${MISSING} ${I}"
    fi
done
if test "${MISSING}" = "" ; then
    echo You have unpacked all 9 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