Command -- replacement for the User Agent

Norman Yarvin ins_anmy at jhunix
Sat Jul 1 09:50:21 AEST 1989


This is version 1.0 of command.  "Command" is my replacement for the
functionality I use in the ua.  That is, it sits up at the top of the screen
and starts up new shells (actually, any program you want) in any size/any
position window.  You invoke it when you log in, just as you would the ua.

Command is small (the shared-library object is 6K as opposed to 85K for ua)
and fast (starting shells used to take me 5 seconds; now it's about 1.5
seconds).

The disadvantages?  Well, this is not a program for those who like
user-friendliness.  It's a bit rough around the edges.  And it probably has
a bug or two left.  The error messages are somewhat cryptic, where they
exist.  It (by default) makes all windows borderless; three borderless
windows with shells running in each can be a bit unsettling until you get
used to them.  And the warning at the head of command.c is only half in
jest.  But for those who don't like the ua, it's the way to go.  I deleted
about a meg of ua files after installing command.

I have included a modified version of the 36x102 font.  I like this version
better than the one that was posted about a year ago.  It is much more
readable than either the 28x120 or the 36x144 fonts, and I use it regularly.

					Norman Yarvin
	yarvin at cs.jhu.edu, (seismo!umcp-cs | allegra!hopkins) !jhunix!ins_anmy

  Disclaimer: Johns Hopkins is massively responsible for everything I say. :-)


#--------------------------------CUT HERE-------------------------------------
#! /bin/sh
#
# This is a shell archive.  Save this into a file, edit it
# and delete all lines above this comment.  Then give this
# file to sh by executing the command "sh file".  The files
# will be extracted into the current directory owned by
# you with default permissions.
#
# The files contained herein are:
#
# -rw-r--r--  1 norman  people     2220 Jun 29 05:07 README 
# -rw-r--r--  1 norman  people     5421 Jun 30 18:57 command.doc 
# -rw-r--r--  1 norman  people      287 Jun 30 18:53 makefile 
# -rw-r--r--  1 norman  people     1578 Jun 29 03:10 alias.c 
# -rw-r--r--  1 norman  people     2053 Jun 29 03:10 command.c 
# -rw-r--r--  1 norman  people     2223 Jun 29 03:10 edit.c 
# -rw-r--r--  1 norman  people      670 Jun 29 03:10 internal.c 
# -rw-r--r--  1 norman  people     1192 Jun 29 03:10 mouse.c 
# -rw-r--r--  1 norman  people     2347 Jun 29 03:10 parse.c 
# -rw-r--r--  1 norman  people     4150 Jun 29 03:10 window.c 
# -rw-r--r--  1 norman  people     1513 Jun 29 14:24 config.h 
# -rw-r--r--  1 norman  people     1310 Jun 29 03:10 mouse.h 
# -rw-r--r--  1 norman  people      657 Jun 29 14:07 .cmdrc 
# -rw-r--r--  1 norman  people      690 Jun 29 14:07 .cmdrc2 
# -rw-r--r--  1 norman  people      123 Jun 29 03:16 mice/fighter.m 
# -rw-r--r--  1 norman  people      590 Jun 29 03:16 mice/moron.m 
# -rw-r--r--  1 norman  people      146 Jun 29 03:16 mice/mouse.m 
# -rw-r--r--  1 norman  people     1061 Jun 29 03:16 mice/series.m 
# -rw-r--r--  1 norman  people      214 Jun 29 03:16 mice/small.m 
# -rw-r--r--  1 norman  people      480 Jun 29 03:16 mice/target.m 
# -rw-r--r--  1 norman  people     1056 Jun 29 03:16 mice/target2.m 
# -rw-r--r--  1 norman  people      659 Jun 29 03:16 mice/unix.m 
# -rw-r--r--  1 norman  people    19563 Jun 29 03:18 36x102.font 
#
echo 'x - README'
if test -f README; then echo 'shar: not overwriting README'; else
sed 's/^X//' << '________This_Is_The_END________' > README
XThis is version 1.0 of "command", a command interpreter for the Unix PC.
XNote that the Unix PC is a specific 68000-based unix machine made by AT&T,
Xnot a PC-compatible running Unix.  Command contains much Unix PC specific
Xcode.
X
XCommand works in the following manner: it continually reads command lines
Xfrom the current window, and executes them.  Command lines usually tell
Xcommand to make another window, and execute a program in the new window.
XCommand has a limited alias feature.
X
XOn initialization, command reads in the file $HOME/.cmdrc, and processes it
Xas if it had been typed in on the command line.
X
XCommand was written by me, Norman Yarvin, for my own use.  It has very
Xlittle error checking, and probably a few bugs.  It reflects my own
Xidiosyncrasies both in programming style and in its operation.  However, it
Xis very flexible, and should, with a little effort, suit most people just
Xfine.  I am releasing it into the public domain; if anybody tries to make a
Xbuck off selling public domain software for the Unix PC, they will go out of
Xbusiness anyway.
X
XTo set up command, you should modify config.h as you desire, then run make.
XDocumentation is in command.doc.
X
XIf you want to modify command, be warned: the statement at the head of
Xcommand.c is only half in jest.  Clarity has been sacrificed at the altar of
Xefficiency.
X
XI have included the 36x102 font in this posting.  I got this font over the
Xnet, and have made some modifications.  I have also included two sample
X.cmdrc files: the first is the one I use, and is intended for the 36x102
Xfont; the other is for the standard 24x80 font.
X
XIf you want to use the 36x102 font, do it as follows.  Convert the
X36x102 font to binary form, and install it in /usr/lib/wfont:
X
X# cfont 36x102.font >36x102.ft
X# mv 36x102.ft /usr/lib/wfont
X
XThen, either (1) add the statement
X
X	sfont -s /usr/lib/wfont/36x102.ft 0
X
Xin /etc/.fontload (this makes it the default system font), or (2) define the
Xshell function
X
X	$ setfont() { setf 6; setf $1 6; setf 0; setf $1 0; }
X
Xand then run
X
X	$ setfont /usr/lib/wfont/36x102.ft
X
Xin each new window you create.  The latter won't work properly with
Xcommand's line-and-column automatic setup, though.  Maybe in version 1.1.
X
________This_Is_The_END________
if test `wc -l < README` -ne 55; then
	echo 'shar: README was damaged during transit (should have been 55 bytes)'
fi
fi		; : end of overwriting check
echo 'x - command.doc'
if test -f command.doc; then echo 'shar: not overwriting command.doc'; else
sed 's/^X//' << '________This_Is_The_END________' > command.doc
XThis is documentation for version 1.0 of "command", a command interpreter
Xfor the Unix PC.  Note that the Unix PC is a specific 68000-based unix
Xmachine made by AT&T, not a PC-compatible running Unix.  Command is for the
XUnix PC only.
X
XOPERATION
X
X	Command works in the following manner: it continually reads command
X	lines from the current window, and executes them.  Command lines
X	usually tell command to make another window, and execute a program
X	in the new window.
X
X	On initialization, command reads in the file $HOME/.cmdrc, and
X	processes it as if it had been typed in on the command line.
X
XEDITING
X
X	When it is being typed in, the command line is displayed on the
X	bottom of the screen.  Text typed in will be inserted at the cursor
X	position; in addition, the following emacs style editing keys are
X	recognized:
X
X		^a		go to beginning of line
X		^b		go backward a character
X		^d		delete next character
X		^e		go to end of line
X		^f		fo forward a character
X		^h or delete	delete previous character
X		^k		kill to end of line
X		^z <Msg>	copy shell alias, execute command line
X		^m <Return>	execute command line
X
X	Command designates itsself the "system manager window", unless
X	compiled without that option (see config.h).  This just means that
X	whenever <Msg> is pressed, command gets it, even if command is not
X	the currently active window.  When command reads the Msg key, it
X	immediately executes a special alias called the shell alias (see the
X	description of the alias internal command.).
X
X	If ^d is pressed when there is no text on the command line, then
X	command exits.  This is meant to log you out, so the window is left
X	in raw mode.
X
XTHE COMMAND LINE
X
X	A command line consists of the following:
X
X		a set of window parameters, enclosed in brackets (optional)
X
X		a program name, followed by a list of blank-separated
X		parameters to be passed to the program. (also optional)
X
X	Any text after a hash mark (#) is a comment, and is ignored.
X
XWINDOW PARAMETERS
X
X	Command keeps a set of current window parameters.  This set is used
X	to make all new windows.  Each time window parameters are included on
X	the command line, each command line window parameter overwrittes
X	the corresponding current window parameter.
X
X	Window parameters are any of the following:
X
X		x<integer>	set x coordinate of the upper left hand
X				window corner to <integer>
X		y<integer>	set y coordinate of the upper left hand
X				window corner to <integer>
X		w<integer>	set width of the upper left hand
X				window corner to <integer>
X		h<integer>	set height of the upper left hand
X				window corner to <integer>
X		b		toggle window border flag
X		v		toggle window variable character spacing flag
X		u		toggle window vertical scroll icon flag
X		s		toggle window horizontal scroll icon flag
X		e		toggle window help icon flag
X		c		toggle window cancel icon flag
X		r		toggle window resize icon flag
X		m		toggle window border move flag
X
X	Any other characters are ignored.
X
XINTERNAL COMMANDS
X
X	A program name is either the name of an internal command, or a full
X	path name of an executable file (not a shell script).  There are
X	three internal commands in command v1.0: they are as follows:
X
X	mouse mfile
X		Command keeps a current mouse icon, used in the same way as
X		the current window parameters.  The "mouse" internal command
X		reads in a new mouse from mfile.  Mfile must be organized in
X		the following fashion: a set of mouse parameters, then the
X		word "data" (actually, just a "d" will do) followed by a
X		newline, then a character bitmap.  Mouse parameters are one
X		of
X
X			"hs"	horizontal size
X			"vs"	vertical size
X			"ha"	horizontal adjust
X			"va"	vertical adjust
X
X		followed by a single space, then an integer.  A character
X		bitmap is up to 32 lines of up to 32 characters each: for
X		every non-blank character, the corresponding pixel is turned
X		on.
X
X	self
X		Self resets the command window to the current window
X		parameters and the current mouse.
X
X	alias aname atext
X		This command sets the alias aname to the value atext.
X		Thereafter, if aname is used as a program name, aname will
X		be replaced with atext on the command line.  If aname is
X		"sh", then the alias is also designated the "shell alias",
X		and is executed immediately whenever <Msg> is pressed (see
X		EDITING)
X
XEXECUTION
X
X	If a program name is not one of the three internal commands, then it
X	is executed in its own window.  The window that is created has the
X	following attributes:
X
X		-- its size and shape are given by the current window
X		   parameters.
X
X		-- its mouse is the current mouse.
X
X		-- if this option is compiled in (see config.h), interrupt
X		   is set to ^c, kill is set to ^u, and 8'th bit stripping is
X		   turned off (so the meta-key can be used if you are using
X		   CAPCTL).
X
X		-- The environment variables LINES, COLUMNS, and TERMCAP are
X		   set to the appropriate values for the new window's size.
X
X	Note that path searching has not been implemented; a full path name
X	(e.g /bin/ksh or /usr/local/bin/jove) must be given, or the program
X	will not be found.
X
XIT WOULD BE NICE IF...
X
X	Full path names were not required for all programs that command runs.
X
X	Command history were implemented.
X
XBUGS
X
X	For an unknown reason, jove does not work if executed directly from
X	command.  However, running "/bin/ksh -c /usr/local/bin/jove" does
X	work.  Yech.
X
XSEE ALSO
X
X	The source code
X	./README
X	./.cmdrc, ./mice/*	sample command rc / mouse icon files
________This_Is_The_END________
if test `wc -l < command.doc` -ne 159; then
	echo 'shar: command.doc was damaged during transit (should have been 159 bytes)'
fi
fi		; : end of overwriting check
echo 'x - makefile'
if test -f makefile; then echo 'shar: not overwriting makefile'; else
sed 's/^X//' << '________This_Is_The_END________' > makefile
XCC=/bin/ccc
XCFLAGS=-g
XDEST=/usr/local/bin
XOBJS=edit.o command.o alias.o window.o parse.o internal.o mouse.o
X
Xcommand: $(OBJS)
X	$(CC) $(CCFLAGS) -o command ${OBJS}
X
Xmouse.o: mouse.h config.h
X
Xalias.o window.o: config.h
X
Xinstall:
X	su root -c "chown root.root command ; mv command $(DEST)"
________This_Is_The_END________
if test `wc -l < makefile` -ne 14; then
	echo 'shar: makefile was damaged during transit (should have been 14 bytes)'
fi
fi		; : end of overwriting check
echo 'x - alias.c'
if test -f alias.c; then echo 'shar: not overwriting alias.c'; else
sed 's/^X//' << '________This_Is_The_END________' > alias.c
X/*
X* alias.c -- for "command", a Unix PC command interpreter
X*/
X
X#include <sys/pte.h>
X#include <stdio.h>
X#include "config.h"
X
Xstruct alias {							/* a binary tree of aliases */
X	struct alias *gt, *lt;
X	char *alias, *text;
X};
X
Xchar *alloc();
Xchar shmac[80]=SHMAC;
X
Xstruct alias **afind(s)				/* find an alias, or a place to put a new alias */
Xchar *s;
X{
X	static struct alias *head=NULL;	
X	struct alias **al;
X	int i;
X
X	for(al=&head; *al; ) {
X		if(!(i=strcmp(s,(*al)->alias)))
X			break;
X		al = i<0 ? &(*al)->lt : &(*al)->gt;
X	}
X	return al;
X}
X
Xchar *alias(s)								/* find text given alias */
Xchar *s;
X{
X	char *strcpy();
X	struct alias *a;
X	static char abuf[256];
X
X	return (a=*afind(s)) ? strcpy(abuf,a->text) : NULL;
X}
X
Xchar *mkalias(alias,text)							/* make an alias */
Xchar *alias,*text;
X{
X	struct alias **a;
X
X	if(strcmp(alias,"sh"))						/* is it for shell macro? */
X		strcpy(shmac,text);
X	a=afind(alias);
X	if(!*a) {							/* does it exist already? */
X		*a=(struct alias *)alloc(sizeof(struct alias));
X		(*a)->alias=alloc(strlen(alias)+1);
X		strcpy((*a)->alias,alias);
X	}
X	(*a)->text=alloc(strlen(text)+1);
X	strcpy((*a)->text,text);
X}
X
Xchar *alloc(n)				/* fast allocator for objects not to be unallocated */
X{
X	static char *brk=0, *ubrk;		/* brk is actual breakpoint, ubrk is simulated */
X	register char *oldubrk;
X	register int size;
X	char *sbrk();
X
X	n+=1;									/* word align */
X	n&=0xfffffffe;
X	size=(n/BYTES_PER_PAGE+1)*BYTES_PER_PAGE;
X	if(!brk)
X		brk=(ubrk=sbrk(size))+size;
X	if(ubrk+n >= brk){
X		brk+=size;
X		sbrk(size);
X	}
X	oldubrk=ubrk;
X	ubrk+=n;
X	return oldubrk;
X}
________This_Is_The_END________
if test `wc -l < alias.c` -ne 78; then
	echo 'shar: alias.c was damaged during transit (should have been 78 bytes)'
fi
fi		; : end of overwriting check
echo 'x - command.c'
if test -f command.c; then echo 'shar: not overwriting command.c'; else
sed 's/^X//' << '________This_Is_The_END________' > command.c
X/*******
X*      *
X*   /  *  WARNING: DO NOT ATTEMPT TO ALTER THIS PROGRAM.  EXPOSED HIGH VOLTAGE.  NO
X*  /__ *  USER-SERVICEABLE PARTS INSIDE.  THIS PROGRAM IS TO BE SERVICED ONLY BY
X*    / *  PROPERLY QUALIFIED SERVICE PERSONNEL.  CONSULT THE SERVICE MANUAL FOR
X*   /  *  PROPER SERVICE PROCEDURES TO ASSURE CONTINUED COMPLIANCE WITH FEDERAL
X*      *  PERFOMANCE STANDARDS.
X********
X*
X* command.c -- main routine of Unix PC command interpreter
X*
X* Written by Norman Yarvin.  Send bug fixes to yarvin at cs.jhu.edu.
X* No copyright.
X*
X*/
X
X#include <fcntl.h>
X#include <signal.h>
X#include <stdio.h>
X
Xint initfd;								/* .cmdrc file descriptor */
Xchar **envp1;									/* copy of envp */
X
Xmain(argc,argv,envp)
Xint argc;
Xchar **argv;
Xchar **envp;
X{
X	char *strcpy(), *strcat(), *envinit(), *getcmd(), *initgetcmd(), initfile[128], *home;
X
X	signal(SIGCLD,SIG_IGN);							/* no zombies */
X	home=envinit(envp);			/* get $HOME, set envp up for passing screen size */
X	wsetup();							/* set up command window */
X	strcpy(initfile, home);							/* open .cmdrc */
X	strcat(initfile, "/.cmdrc");
X	if((initfd=open(initfile,O_RDONLY))!=-1) {
X		process(initgetcmd);				/* initgetcmd reads .cmdrc */
X		close(initfd);
X	}
X	process(getcmd);					/* getcmd reads from keyboard */
X}
X
Xprocess(getcmd)									/* the main loop */
Xchar *(*getcmd)();
X{
X	char *cmd, **argv;
X	char **parse();
X
X	while(cmd=(*getcmd)()) {
X		if((argv=parse(cmd)) && *argv && !internal(argv))
X			switch(fork()){
X				case -1:
X					error("fork failed");		/* we could check errno */
X				default:
X					break;
X				case 0:
X					wmake(*argv);
X					execve(*argv, argv, envp1);
X					perror(*argv);			/* exec shouldn't return */
X					sleep(2);
X					_exit(0);
X			}
X	}
X}
X
Xchar *initgetcmd()
X{
X	static char buf[BUFSIZ], cmd[256];
X	static int size, bp=BUFSIZ;
X	register char c, *cmdp;
X
X	cmdp=cmd;
X	while((size = bp==BUFSIZ ? (bp=0,read(initfd,buf,BUFSIZ)) : size) != bp) {
X		c=buf[bp++];
X		*cmdp++ = c=='\t' ? ' ' : c;		/* tab -> space */
X		if(c=='\n' || cmdp-cmd>254) {
X			cmdp[-1]=0;
X			return cmd;
X		}
X	}
X	return 0;
X}
________This_Is_The_END________
if test `wc -l < command.c` -ne 82; then
	echo 'shar: command.c was damaged during transit (should have been 82 bytes)'
fi
fi		; : end of overwriting check
echo 'x - edit.c'
if test -f edit.c; then echo 'shar: not overwriting edit.c'; else
sed 's/^X//' << '________This_Is_The_END________' > edit.c
X/*
X* edit.c -- for "command", a Unix PC command interpreter
X*/
X
X#include <sys/window.h>
X
Xextern struct utdata utdata;
Xextern char *cmd, shmac[];
X
Xchar *getcmd()
X{
X	char c;
X	int offset, first=1;
X	register char *cmdp,*cp1,*cp2;
X
X	for(*(cmdp=cmd)=0; ; ){
X		if(*cmdp) {
X			*cmdp|=0x80;				/* highlight current position */
X			ioctl(0,WIOCSETTEXT,&utdata);
X			*cmdp&=0x7f;				/* remove highlight */
X		} else {
X			*cmdp=' '|0x80;
X			cmdp[1]=0;
X			ioctl(0,WIOCSETTEXT,&utdata);
X			*cmdp=0;
X		}
X		read(0, &c, 1);
X		if(first) {
X			first=0;
X			error("");
X		}
X		c&=0x7f;					/* strip 8th bit */
X		switch(c) {
X			case 0x01:				/* ^a: to beginning of line */
X				cmdp=cmd;
X				break;
X			case 0x02:				/* ^b: non-destructive backspace */
X				if(cmdp<=cmd)
X					break;
X				cmdp--;
X				break;
X			case 0x04:				/* ^d: delete next character */
X				if(!*cmdp) {
X					if(cmdp==cmd)
X						return 0;
X					break;
X				}
X				cp2=cmdp;
X				for(cp1=cp2++; *cp1++=*cp2++; );
X				break;
X			case 0x05:				/* ^e: end of line */
X				while(*cmdp)
X					cmdp++;
X				break;
X			case 0x06:				/* ^f: forward a character */
X				if(!*cmdp)
X					break;
X				cmdp++;
X				break;
X			case 0x08:				/* ^h: backspace */
X			case 0x7f:				/* delete */
X				if(cmdp<=cmd)
X					break;
X				cp2=cmdp--;
X				for(cp1=cmdp; *cp1++=*cp2++; );
X				break;
X			case 0x0b:				/* ^k: kill to end of line */
X				*cmdp=0;
X				break;
X			case 0x1a:				/* ^z (Msg): copy macro, return */
X				for(cp1=shmac,cmdp=cmd; *cmdp++=*cp1++; );
X			case 0x0d:				/* ^m: return */
X				return cmd;
X			case 0x00:				/* ^~ */
X			case 0x03:				/* ^c */
X			case 0x07:				/* ^g */
X			case 0x0a:				/* ^j */
X			case 0x0c:				/* ^l: redraw */
X			case 0x0e:				/* ^n */
X			case 0x0f:				/* ^o */
X			case 0x10:				/* ^p */
X			case 0x11:				/* ^q */
X			case 0x12:				/* ^r */
X			case 0x13:				/* ^s */
X			case 0x14:				/* ^t */
X			case 0x16:				/* ^v */
X			case 0x17:				/* ^w */
X			case 0x18:				/* ^x */
X			case 0x19:				/* ^y */
X				break;
X			case 0x09:				/* ^i: tab inserted as space */
X				c=' ';
X			default:				/* insert it */
X				for(cp1=cmdp; *cp1; cp1++);
X				if(cp1>=cmd+(WTXTLEN-2))	/* parenthesized for efficiency */
X					break;
X				cp2=cp1++;
X				for(; cp1>cmdp; *cp1--=*cp2--);
X				*cmdp++=c;
X		}
X	}
X}
________This_Is_The_END________
if test `wc -l < edit.c` -ne 102; then
	echo 'shar: edit.c was damaged during transit (should have been 102 bytes)'
fi
fi		; : end of overwriting check
echo 'x - internal.c'
if test -f internal.c; then echo 'shar: not overwriting internal.c'; else
sed 's/^X//' << '________This_Is_The_END________' > internal.c
X/*
X* internal.c -- for "command", a Unix PC command interpreter
X*/
X
Xint self(), readmouse();
X
Xstruct internal{
X	char *name;
X	int (*func)();
X} internals[] = {
X	{ "mouse", readmouse },					/* add functions in sorted order */
X	{ "self", self }						/* and change INTERNALS */
X};
X
X#define INTERNALS	2
X
Xinternal(argv)
Xchar **argv;
X{
X	struct internal *top, *bot, *mid;
X	int i;
X
X	top=internals;					/* binary search */
X	bot=internals+(INTERNALS-1);
X	while(top<bot) {
X		mid=top+((bot-top)>>1);
X		if(!(i=strcmp(*argv,mid->name))) {
X			top=mid;
X			break;
X		}
X		if(i<0)
X			bot=mid;
X		else
X			top=mid+1;
X	}
X	if(strcmp(*argv,top->name))
X		return 0;
X	(*top->func)(argv);
X	return 1;
X}
________This_Is_The_END________
if test `wc -l < internal.c` -ne 40; then
	echo 'shar: internal.c was damaged during transit (should have been 40 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mouse.c'
if test -f mouse.c; then echo 'shar: not overwriting mouse.c'; else
sed 's/^X//' << '________This_Is_The_END________' > mouse.c
X/*
X* mouse.c -- for "command", a Unix PC command interpreter
X*/
X
X#include "mouse.h"
X
Xreadmouse(argv)
Xchar **argv;
X{
X	int fd;
X	char buf[1500];
X	register char *bp=buf, *end;
X	register int i;
X	unsigned short *data, *dend;
X
X	if(!argv[1]) {
X		error("Usage: mouse file");
X		return;
X	}
X	if((fd=open(argv[1],0)) == -1){
X		error("Can't open mouse data file");
X		return;
X	}
X	bp[read(fd,bp,1500)]=0;
X	close(fd);
X	m_icon.ic_fc.fc_hs=32;							/* clear icon */
X	m_icon.ic_fc.fc_vs=32;
X	m_icon.ic_fc.fc_ha=0;
X	m_icon.ic_fc.fc_va=0;
X	for(dend=(data=m_icon.ic_raster)+64; data<dend; data++)
X		*data=0;
X	for(; *bp; bp++) {						/* get icon parameters */
X		if(*bp=='h') {
X			if(*++bp=='s')
X				m_icon.ic_fc.fc_hs=getint(bp+1);
X			else
X				m_icon.ic_fc.fc_ha=getint(bp+1);
X		} else if(*bp=='v') {
X			if(*++bp=='s')
X				m_icon.ic_fc.fc_vs=getint(bp+1);
X			else
X				m_icon.ic_fc.fc_va=getint(bp+1);
X		}
X		if(*bp=='d') {
X			while(*bp++ != '\n');
X			break;
X		}
X	}
X	for(data=m_icon.ic_raster, i=1; data<dend&&*bp;){
X		if(*bp=='\n') {
X			data += (dend-data)%2 || m_icon.ic_fc.fc_hs<=16 ? 1 : 2;
X			i=1;
X			bp++;
X			continue;
X		}
X		if(i >= 1<<16) {
X			i=1;
X			data++;
X		}
X		if(*bp++ != ' ')
X			*data|=i;
X		i<<=1;
X	}
X}
________This_Is_The_END________
if test `wc -l < mouse.c` -ne 64; then
	echo 'shar: mouse.c was damaged during transit (should have been 64 bytes)'
fi
fi		; : end of overwriting check
echo 'x - parse.c'
if test -f parse.c; then echo 'shar: not overwriting parse.c'; else
sed 's/^X//' << '________This_Is_The_END________' > parse.c
X/*
X* parse.c -- for "command", a Unix PC command interpreter
X*/
X
X#include <sys/window.h>
X#include <stdio.h>
X
Xextern struct uwdata uwdata;					/* set here, used in window.h */
X
X#define BEGIN	0x00						/* states of command line parser */
X#define BLANK	0x01
X#define PARAM	0x02
X#define WPARAM	0x03
X
Xchar *argv[40];
X
Xchar **parse(cmd)
Xchar *cmd;
X{
X	register char **argvp=argv, *cmdp, c;
X	register int state=BEGIN;
X	int first=1;
X	char *alias(), *cmdp2=NULL;
X	char *temp;
X
X	for(cmdp=cmd; *cmdp && *cmdp!='#'; cmdp++);		/* end cmd line with a blank */
X	*cmdp=' ';							/* # designates a comment */
X	cmdp[1]=0;
X	for(cmdp=cmd; (c=*cmdp) || cmdp2 && (c=*(cmdp=cmdp2)) && !(cmdp2=0); cmdp++) {
X		switch(state) {
X			case BEGIN:				/* we start here */
X				if(c=='[') {
X					state=WPARAM;
X					break;
X				}
X			case BLANK:				/* we're processing blanks */
X				if(c==' ')
X					break;
X				state=PARAM;
X				*argvp++=cmdp;
X				break;
X			case PARAM:				/* we're processing a parameter */
X				if(c!=' ')
X					break;
X				*cmdp=0;
X				if(first) {
X					first=0;
X					if(temp=alias(*argv)) {
X						*(cmdp2=cmdp)=' ';
X						cmdp=temp-1;
X						argvp=argv;
X						state=BEGIN;
X						break;
X					}
X				}
X				else if(argvp==argv+2 && !strcmp(*argv,"alias")) {
X					mkalias(argv[1], ++cmdp);
X					return NULL;
X				}
X				state=BLANK;
X				break;
X			case WPARAM:			/* we're processing window parameters */
X				switch(c) {	
X					case 'x' : uwdata.uw_x      = getint(cmdp); break;
X					case 'y' : uwdata.uw_y      = getint(cmdp); break;
X					case 'w' : uwdata.uw_width  = getint(cmdp); break;
X					case 'h' : uwdata.uw_height = getint(cmdp); break;
X					case 'b' : uwdata.uw_uflags ^= NBORDER;	break;
X					case 'v' : uwdata.uw_uflags ^= VCWIDTH; break;
X					case 'u' : uwdata.uw_uflags ^= BORDVSCROLL; break;
X					case 's' : uwdata.uw_uflags ^= BORDHSCROLL; break;
X					case 'e' : uwdata.uw_uflags ^= BORDHELP; break;
X					case 'c' : uwdata.uw_uflags ^= BORDCANCEL; break;
X					case 'r' : uwdata.uw_uflags ^= BORDRESIZE; break;
X					case 'm' : uwdata.uw_uflags ^= NBORDMOVE; break;
X					case ']' : state=BLANK;
X				}
X				break;
X		}
X	}
X	*argvp=NULL;
X	return argv;
X}
X
Xgetint(s)					/* find whatever integer there is in s+1 */
Xchar *s;
X{
X	register int i=0;
X	int neg=0;
X
X	if(s[1] == '-'){
X		neg=1;
X		s++;
X	}
X	while(*++s>='0' && *s<='9') {
X		i*=10;
X		i+=*s-'0';
X	}
X	return neg ? -i : i;
X}
________This_Is_The_END________
if test `wc -l < parse.c` -ne 100; then
	echo 'shar: parse.c was damaged during transit (should have been 100 bytes)'
fi
fi		; : end of overwriting check
echo 'x - window.c'
if test -f window.c; then echo 'shar: not overwriting window.c'; else
sed 's/^X//' << '________This_Is_The_END________' > window.c
X/*
X* window.c -- for "command", a Unix PC command interpreter
X*/
X
X#include <sys/window.h>							/* all comments in here */
X#include <fcntl.h>
X#include <termio.h>
X#include "config.h"
X
Xextern struct umdata umdata;					/* mouse icon -- see mouse.[ch] */
X
Xstruct utdata utdata = {
X	WTXTLABEL,
X	"Command"
X};
X
Xstruct uwdata uwdata = {
X	288,					/* upper-left-corner x (pixels)	*/
X	0,					/* upper-left-corner y (pixels)	*/
X	378,					/* width (pixels)		*/
X	12,					/* height (pixels)		*/
X	NBORDER					/* various flags		*/
X};
X
Xchar termcapd[9][40]={	"TERMCAP=:al=\\E[1L:am:bs:cd=\\E[0J:ce=\\E[0",
X			"K:cl=\\E[2J\\E[H:cm=\\E[%i%2;%2H:dc=\\E[1P:d",
X			"l=\\E[1M:do=\\E[B:ei=:ho=\\E[H:ic=\\E[1@:im=",
X			":kb=\\10:kd=\\E[B:kl=\\E[D:kr=\\E[C:ku=\\E[A:",
X			"k1=\\EOc:k2=\\EOd:k3=\\EOe:k4=\\EOf:k5=\\EOg:",
X			"k6=\\EOh:k7=\\EOi:k8=\\EOj:nd=\\E[C:se=\\E[m:",
X			"so=\\E[7m:ue=\\E[m:up=\\E[A:us=\\E[4m:EE=\\E[",
X			"m:DS=\\E[2m:CV=\\E[=C:CI=\\E[=1C:KM=/usr/li",
X			"b/ua/kmap.s4:li#000:co#000:"
X};
Xchar *termcap=*termcapd;			/* if you change these, change the #defines below */
Xchar lines[]="LINES=000";
Xchar columns[]="COLUMNS=000";
X
X#define TERMCAP_XPOS	343					/* locations in the strings */
X#define TERMCAP_YPOS	336
X#define LINES_YPOS	6
X#define COLUMNS_XPOS	8
X
Xchar *cmd=utdata.ut_text;							/* command line */
Xchar **envp1;
Xstruct termio termio;
X
Xchar *envinit(envp)
Xchar **envp;
X{
X	char *home;									/* $HOME */
X
X	envp1=envp;
X	for(;*envp;envp++){
X		if(!strncmp(*envp,lines,5))
X			*envp=lines;
X		if(!strncmp(*envp,columns,7))
X			*envp=columns;
X		if(!strncmp(*envp,termcap,7))
X			*envp=termcap;
X		if(!strncmp(*envp,"HOME=",5))
X			home=*envp+5;
X	}
X	return home;						/* after a long day's work */
X}
X
Xwsetup()						/* command window initialization routine */
X{
X	ioctl(0, WIOCSETMOUSE, &umdata);				/* see mouse.h for umdata */
X	ioctl(0, WIOCSETTEXT, &utdata);					/* name window "Command" */
X	utdata.ut_num = WTXTCMD;					/* set up for getcmd() */
X#ifdef SMGR
X	ioctl(0, WIOCSYS, SYSSMGR);	/* make the system manager (smgr is dead, long live smgr) */
X#endif
X
X	ioctl(0, TCGETA, &termio);
X 	termio.c_lflag = 0;						/* raw mode */
X 	termio.c_iflag = 0;						/* don't fuck with input */
X 	termio.c_oflag = 0;						/* don't fuck with output */
X	termio.c_cc[4] = 1;						/* one character read */
X	termio.c_cc[5] = 0;						/* no timeout */
X	ioctl(0, TCSETA, &termio);
X	write(1, "\33[2J\33[H\33[=1C", 12);			/* clear screen, turn off cursor */
X}
X
Xself()							/* command window position setup/reset */
X{
X	write(1, "\33[2J\33[H\33[=1C", 12);			/* clear screen, turn off cursor */
X	ioctl(0, WIOCSETMOUSE, &umdata);				/* see mouse.h for umdata */
X	ioctl(0, WIOCSETD, &uwdata);
X}
X
Xerror(s)					/* put s in "prompt" line -- clobbers cmd/argv */
Xchar *s;
X{
X	register char *cmdp;
X
X	for(cmdp=cmd; *cmdp++=*s++;);
X	utdata.ut_num=WTXTPROMPT;
X	ioctl(0,WIOCSETTEXT,&utdata);
X	utdata.ut_num=WTXTCMD;
X}
X
Xwmake(s)							/* make a new window */
Xchar *s;
X{
X	register int i,wd;
X
X	close(0);
X	close(1);
X	close(2);
X	setpgrp();					/* child will not die when parent does */
X	wd = open("/dev/window", O_RDWR);
X	dup(wd);
X	dup(wd);
X	ioctl(wd, WIOCSETD, &uwdata);
X	ioctl(wd, WIOCGETD, &uwdata);
X	i = uwdata.uw_height/uwdata.uw_vs;					/* get #lines */
X	termcap[TERMCAP_YPOS] = lines[LINES_YPOS] = i/100 + '0';
X	termcap[TERMCAP_YPOS+1] = lines[LINES_YPOS+1] = (i/10)%10 + '0';
X	termcap[TERMCAP_YPOS+2] = lines[LINES_YPOS+2] = i%10 + '0';
X	i = uwdata.uw_width/uwdata.uw_hs;					/* get #columns */
X	termcap[TERMCAP_XPOS] = columns[COLUMNS_XPOS] = i/100 + '0';
X	termcap[TERMCAP_XPOS+1] = columns[COLUMNS_XPOS+1] = (i/10)%10 + '0';
X	termcap[TERMCAP_XPOS+2] = columns[COLUMNS_XPOS+2] = i%10 + '0';
X	utdata.ut_num=WTXTLABEL;					/* tell wmgr window name */
X	if(!strcmp(CMDDESC, utdata.ut_text))
X		strcpy(utdata.ut_text, s);
X	ioctl(wd, WIOCSETTEXT, &utdata);			/* command is window description */
X	ioctl(wd, WIOCSETMOUSE, &umdata);				/* see mouse.h for umdata */
X	ioctl(wd, TCGETA, &termio);
X#ifdef NOSTRIP
X	termio.c_iflag &= ~ISTRIP;					/* don't strip 8th bit */
X#endif
X	termio.c_cc[0] = INTR;						/* interrupt = ^c */
X	termio.c_cc[3] = KILL;						/* kill = ^u */
X	ioctl(wd, TCSETA, &termio);
X}
________This_Is_The_END________
if test `wc -l < window.c` -ne 138; then
	echo 'shar: window.c was damaged during transit (should have been 138 bytes)'
fi
fi		; : end of overwriting check
echo 'x - config.h'
if test -f config.h; then echo 'shar: not overwriting config.h'; else
sed 's/^X//' << '________This_Is_The_END________' > config.h
X/*
X* config.h -- configuration file for "command", a Unix PC command interpreter
X*/
X
X/*
X * The defines in this file select options that (I think) improve the
X * functionality of command.  However, some people may not like them, or they
X * might be incompatible with other software (nothing serious, though).
X */
X
X/*
X * If SMGR is defined, command will designate itsself the "screen manager"
X * (smgr).  All this means is that when the <Msg> key is pressed, it goes to
X * command no matter what window is active.  When command receives <Msg>, it
X * runs a special alias.  The initial text of that alias is whatever is
X * defined as SHMAC.
X */
X
X#define SMGR
X#define SHMAC	"/bin/ksh"		/* invoked when <Msg> is pressed */
X
X/*
X * This is the description of the window in which command runs.
X */
X
X#define CMDDESC	"Command"		
X
X/*
X * If CTLC is defined, then in windows command makes, interrupt is set to ^c.
X * If CTLU is defined, kill is set to ^u.
X * If NOSTRIP is defined 8'th bit stripping is turned off (so that the
X * meta-key works, if you are using CAPCTL (the new keyboard driver)).
X */
X
X#define INTR	3		/* ^c */
X#define KILL	21		/* ^u */
X#define NOSTRIP
X
X/*
X * Command starts out with a default mouse.  Here you have a choice between a
X * default mouse which is small and better shaped than than the system mouse,
X * or a default mouse which is a gunsight-like crosshair.  Pick one or the
X * other, but not both!
X */
X
X#define M_SMALL				/* small mouse */
X					/* --OR-- */
X/*#define M_TARGET			/* crosshair */
________This_Is_The_END________
if test `wc -l < config.h` -ne 48; then
	echo 'shar: config.h was damaged during transit (should have been 48 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mouse.h'
if test -f mouse.h; then echo 'shar: not overwriting mouse.h'; else
sed 's/^X//' << '________This_Is_The_END________' > mouse.h
X/*
X* mouse.h -- for "command", a Unix PC command interpreter
X*/
X
X#include <sys/window.h>
X#include <sys/font.h>
X#include "config.h"
X
Xstruct icon m_icon = {
X	0,					/* flags (unused)		*/
X	{					/* font def			*/
X#ifdef M_SMALL
X		16,				/* horizontal size in bits	*/
X		13,				/* vertical size		*/
X		0,				/* horizontal adjust (signed)	*/
X		0,				/* vertical adjust (signed)	*/
X#endif
X#ifdef M_TARGET
X		32, 21, -15, -10,
X#endif
X		0,				/* horizontal increment		*/
X		0,				/* vertical increment (optional)*/
X		0				/* relative mini-raster pointer	(not for icons) */
X	},
X	{					/* raster data			*/
X#ifdef M_SMALL
X		0x1,0x2,0xc,0x3c,0xf8,0x3f8,0xff8,0x1f0,0x330,0x610,0xc00,0x1800,0x3000
X#endif
X#ifdef M_TARGET
X		0x000f,	0x7800,	0x0001,	0x4000,	0x0001,	0x4000,	0x0001,	0x4000,	
X		0x0000,	0x0000,	0x0000,	0x0000,	0x8000,	0x0000,	0x8000,	0x0000,	
X		0x8000,	0x0000,	0x8000,	0x0000,	0x7e00,	0x003f,	0x8000,	0x0000,	
X		0x8000,	0x0000,	0x8000,	0x0000,	0x8000,	0x0000,	0x0000,	0x0000,	
X		0x0000,	0x0000,	0x0001,	0x4000,	0x0001,	0x4000,	0x0001,	0x4000,	
X		0x000f,	0x7800
X#endif
X	}
X};
X
Xstruct umdata umdata = {
X	MSICON,					/* wakeup flags			*/
X	0,					/* motion rectangle x		*/
X	0,					/* motion rectangle y		*/
X	0,					/* motion rectangle w		*/
X	0,					/* motion rectangle h		*/
X	&m_icon					/* ptr to icon if MSICON=1	*/
X};
________This_Is_The_END________
if test `wc -l < mouse.h` -ne 47; then
	echo 'shar: mouse.h was damaged during transit (should have been 47 bytes)'
fi
fi		; : end of overwriting check
echo 'x - .cmdrc'
if test -f .cmdrc; then echo 'shar: not overwriting .cmdrc'; else
sed 's/^X//' << '________This_Is_The_END________' > .cmdrc
X# .cmdrc -- command initialization file
X#
X[x300 y0 w350 h12]self			# relocate command window
Xalias s0 [x300 y0 w350 h12]self		# make that an alias
Xalias w80 [x160 w560 y16 h192]/bin/ksh	# if using the 36x102 font, this is a 24x80 window
Xalias w10 [x6 y210 w714 h80]/bin/ksh	# and this is a 10x102 window
Xalias w0 [x0 y4 w714 h296]/bin/ksh	# and this is a 37x102 window
Xalias w1 [x0 y12 w714 h288]/bin/ksh	# and this is a 36x102 window
Xalias wa [x0 y16 w150 h192]/bin/ksh	# and this is a tiny window
Xalias jove /bin/ksh -c /usr/local/jove	# jove doesn't work plain
Xalias ksh /bin/ksh			# useful
Xw80					# make two not completely overlapping
Xw0					# windows
________This_Is_The_END________
if test `wc -l < .cmdrc` -ne 13; then
	echo 'shar: .cmdrc was damaged during transit (should have been 13 bytes)'
fi
fi		; : end of overwriting check
echo 'x - .cmdrc2'
if test -f .cmdrc2; then echo 'shar: not overwriting .cmdrc2'; else
sed 's/^X//' << '________This_Is_The_END________' > .cmdrc2
X# .cmdrc2 -- command initialization file for normal font
X#
X[x288 y0 w40 h12]self			# relocate command window
Xalias s0 [x300 y0 w350 h12]self		# make that an alias
Xalias w60 [x180 w540 y8 h180]/bin/ksh	# if using the standard font, this is a
X					# 15x60 window
Xalias w8 [x0 y200 w720 h96]/bin/ksh	# and this is a 8x80 window
Xalias w0 [x0 y0 w720 h300]/bin/ksh	# and this is a 25x80 window
Xalias w1 [x0 y12 w708 h288]/bin/ksh	# and this is a 24x79 window
Xalias w2 [x0 y12 w720 h288]/bin/ksh	# and this is a standard 24x80 window
Xalias jove /bin/ksh -c /usr/local/bin/jove # jove doesn't work plain
Xalias ksh /bin/ksh			# useful
Xw60					# make two not completely overlapping
Xw1					# windows
________This_Is_The_END________
if test `wc -l < .cmdrc2` -ne 14; then
	echo 'shar: .cmdrc2 was damaged during transit (should have been 14 bytes)'
fi
fi		; : end of overwriting check
echo mkdir mice
mkdir mice
echo 'x - mice/fighter.m'
if test -f mice/fighter.m; then echo 'shar: not overwriting mice/fighter.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/fighter.m
Xvs 14
Xdata
X#
X ##
X  ###
X   ######
X   ##########
X   ########
X    ######
X    #######
X    ##  ####
X    #    #####
X         ##
X
________This_Is_The_END________
if test `wc -l < mice/fighter.m` -ne 14; then
	echo 'shar: mice/fighter.m was damaged during transit (should have been 14 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/moron.m'
if test -f mice/moron.m; then echo 'shar: not overwriting mice/moron.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/moron.m
Xdata
XH  H EEEE L   L    OO
XH  H E    L   L   O  O
XHHHH EEE  L   L   O  O
XH  H E    L   L   O  O
XH  H EEEE LLL LLL  OO
X
XM   M  OO  RRR   OO  N  N
XMM MM O  O R  R O  O NN N
XM M M O  O RRR  O  O N NN
XM   M O  O R R  O  O N  N
XM   M  OO  R  R  OO  N  N
X
X GGG  OO    FFFF U  U  CC K  K
XG    O  O   F    U  U C   K K
XG GG O  O   FFF  U  U C   KK
XG  G O  O   F    U  U C   K K
X GG   OO    F     UU   CC K  K
X
XY   Y  OO  U  U RRR
X Y Y  O  O U  U R  R
X  Y   O  O U  U RRR
X  Y   O  O U  U R R
X  Y    OO   UU  R  R
X
X SSS EEEE L   FFFF
XS    E    L   F
X SS  EEE  L   FFF
X   S E    L   F
XSSS  EEEE LLL F
________This_Is_The_END________
if test `wc -l < mice/moron.m` -ne 30; then
	echo 'shar: mice/moron.m was damaged during transit (should have been 30 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/mouse.m'
if test -f mice/mouse.m; then echo 'shar: not overwriting mice/mouse.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/mouse.m
Xdata
X ##########
X#          #
X# ## ## ## #
X# ## ## ## #
X# ## ## ## #
X# ## ## ## #
X#          #
X#          #
X#          #
X#          #
X ##########
________This_Is_The_END________
if test `wc -l < mice/mouse.m` -ne 12; then
	echo 'shar: mice/mouse.m was damaged during transit (should have been 12 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/series.m'
if test -f mice/series.m; then echo 'shar: not overwriting mice/series.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/series.m
Xdata
X#                               
X #                              
X  ##                            
X  ##                            
X    ##                          
X    ##                          
X      ###                       
X      ###                       
X      ###                       
X         ####                   
X         ####                   
X         ####                   
X         ####                   
X             ######             
X             ######             
X             ######             
X             ######             
X             ######             
X             ######             
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
X                   #############
________This_Is_The_END________
if test `wc -l < mice/series.m` -ne 33; then
	echo 'shar: mice/series.m was damaged during transit (should have been 33 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/small.m'
if test -f mice/small.m; then echo 'shar: not overwriting mice/small.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/small.m
Xdata
X#               
X #             
X  ##           
X  ####         
X   #####        
X   #######      
X   #########
X    #####       
X    ##  ##      
X    #    ##     
X          ##    
X           ##
X            ##
________This_Is_The_END________
if test `wc -l < mice/small.m` -ne 14; then
	echo 'shar: mice/small.m was damaged during transit (should have been 14 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/target.m'
if test -f mice/target.m; then echo 'shar: not overwriting mice/target.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/target.m
Xvs 19
Xvi -9
Xhi -15
Xdata
X               #
X               #
X           #########
X         ##         ##
X       ##             ##
X      #                 #
X     #         #         #
X    #          #          #
X    #          #          #
X#####     ###########     #####
X    #          #          #
X    #          #          #
X     #         #         #
X      #                 #
X       ##             ##
X         ##         ##
X           #########
X               #
X               #
________This_Is_The_END________
if test `wc -l < mice/target.m` -ne 23; then
	echo 'shar: mice/target.m was damaged during transit (should have been 23 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/target2.m'
if test -f mice/target2.m; then echo 'shar: not overwriting mice/target2.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/target2.m
X####                       #### 
X#                             # 
X#                             # 
X#                             # 
X                                
X                                
X               #                
X               #                
X               #                
X               #                
X         ###### ######          
X               #                
X               #                
X               #                
X               #                
X                                
X                                
X#                             # 
X#                             # 
X#                             # 
X####                       #### 
X                                
X                                
X                                
X                                
X                                
X                                
X                                
X                                
X                                
X                                
X                                
________This_Is_The_END________
if test `wc -l < mice/target2.m` -ne 32; then
	echo 'shar: mice/target2.m was damaged during transit (should have been 32 bytes)'
fi
fi		; : end of overwriting check
echo 'x - mice/unix.m'
if test -f mice/unix.m; then echo 'shar: not overwriting mice/unix.m'; else
sed 's/^X//' << '________This_Is_The_END________' > mice/unix.m
Xdata
X#
X ##
X  ####
X   #####
X    ## ###
X    ###  ###
X     ###  ####
X     ###    ####
X     ###  #  #####
X     ###      ######
X     ###   #   ######
X    ####        #######
X   ####     #    #######
X  ########################
X ##########################
X                          ##
X #   #  #    #  #  #    # ###
X #   #  ##   #  #   #  #  ####
X #   #  # #  #  #    ##   ####
X #   #  #  # #  #    ##   #####
X #   #  #   ##  #   #  #  #####
X  ###   #    #  #  #    # ######
X
X ####   #   #  #     ####   ###
X #   #  #   #  #     #     #
X #   #  #   #  #     ###    ###
X ####   #   #  #     #         #
X #  #   #   #  #     #     #   #
X #   #   ###   ####  ####   ###
________This_Is_The_END________
if test `wc -l < mice/unix.m` -ne 30; then
	echo 'shar: mice/unix.m was damaged during transit (should have been 30 bytes)'
fi
fi		; : end of overwriting check
echo 'x - 36x102.font'
if test -f 36x102.font; then echo 'shar: not overwriting 36x102.font'; else
sed 's/^X//' << '________This_Is_The_END________' > 36x102.font
X# magic 0x18e
X# flags 0x0
Xhs    7
Xvs    8
Xbasel 7
X
X############### Character 0x20, 040, 32                      
Xchar 32
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x21, 041, 33   ! ! ! ! ! ! ! ! ! !
Xchar 33
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits      
Xbits   *  
Xbits      
X
X############### Character 0x22, 042, 34   " " " " " " " " " "
Xchar 34
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  * * 
Xbits  * * 
Xbits  * * 
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x23, 043, 35   # # # # # # # # # #
Xchar 35
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  * * 
Xbits  * * 
Xbits *****
Xbits  * * 
Xbits *****
Xbits  * * 
Xbits  * * 
Xbits      
X
X############### Character 0x24, 044, 36   $ $ $ $ $ $ $ $ $ $
Xchar 36
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits  ****
Xbits * *  
Xbits  *** 
Xbits   * *
Xbits **** 
Xbits   *  
Xbits      
X
X############### Character 0x25, 045, 37   % % % % % % % % % %
Xchar 37
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **  *
Xbits **  *
Xbits    * 
Xbits   *  
Xbits  *   
Xbits *  **
Xbits *  **
Xbits      
X
X############### Character 0x26, 046, 38   & & & & & & & & & &
Xchar 38
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *   
Xbits * *  
Xbits * *  
Xbits  *   
Xbits * * *
Xbits *  * 
Xbits  ** *
Xbits      
X
X############### Character 0x27, 047, 39   ' ' ' ' ' ' ' ' ' '
Xchar 39
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  **  
Xbits   *  
Xbits  *   
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x28, 050, 40   ( ( ( ( ( ( ( ( ( (
Xchar 40
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits  *   
Xbits *    
Xbits *    
Xbits *    
Xbits  *   
Xbits   *  
Xbits      
X
X############### Character 0x29, 051, 41   ) ) ) ) ) ) ) ) ) )
Xchar 41
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits    * 
Xbits     *
Xbits     *
Xbits     *
Xbits    * 
Xbits   *  
Xbits      
X
X############### Character 0x2a, 052, 42   * * * * * * * * * *
Xchar 42
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits   *  
Xbits * * *
Xbits  *** 
Xbits  *** 
Xbits * * *
Xbits   *  
Xbits      
X
X############### Character 0x2b, 053, 43   + + + + + + + + + +
Xchar 43
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits   *  
Xbits   *  
Xbits *****
Xbits   *  
Xbits   *  
Xbits      
Xbits      
X
X############### Character 0x2c, 054, 44   , , , , , , , , , ,
Xchar 44
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits  **  
Xbits   *  
Xbits  *   
X
X############### Character 0x2d, 055, 45   - - - - - - - - - -
Xchar 45
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits      
Xbits *****
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x2e, 056, 46   . . . . . . . . . .
Xchar 46
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x2f, 057, 47   / / / / / / / / / /
Xchar 47
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits     *
Xbits     *
Xbits    * 
Xbits   *  
Xbits  *   
Xbits *    
Xbits *    
Xbits      
X
X############### Character 0x30, 060, 48   0 0 0 0 0 0 0 0 0 0
Xchar 48
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *  **
Xbits * * *
Xbits **  *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x31, 061, 49   1 1 1 1 1 1 1 1 1 1
Xchar 49
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits  **  
Xbits * *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits *****
Xbits      
X
X############### Character 0x32, 062, 50   2 2 2 2 2 2 2 2 2 2
Xchar 50
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits     *
Xbits  *** 
Xbits *    
Xbits *    
Xbits *****
Xbits      
X
X############### Character 0x33, 063, 51   3 3 3 3 3 3 3 3 3 3
Xchar 51
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits     *
Xbits    * 
Xbits   ** 
Xbits     *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x34, 064, 52   4 4 4 4 4 4 4 4 4 4
Xchar 52
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    * 
Xbits   ** 
Xbits  * * 
Xbits *  * 
Xbits *****
Xbits    * 
Xbits    * 
Xbits      
X
X############### Character 0x35, 065, 53   5 5 5 5 5 5 5 5 5 5
Xchar 53
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits *    
Xbits *    
Xbits **** 
Xbits     *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x36, 066, 54   6 6 6 6 6 6 6 6 6 6
Xchar 54
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *    
Xbits **** 
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x37, 067, 55   7 7 7 7 7 7 7 7 7 7
Xchar 55
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits     *
Xbits    * 
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x38, 070, 56   8 8 8 8 8 8 8 8 8 8
Xchar 56
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x39, 071, 57   9 9 9 9 9 9 9 9 9 9
Xchar 57
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits  ****
Xbits     *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x3a, 072, 58   : : : : : : : : : :
Xchar 58
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits   *  
Xbits   *  
Xbits      
Xbits      
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x3b, 073, 59   ; ; ; ; ; ; ; ; ; ;
Xchar 59
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits   *  
Xbits   *  
Xbits      
Xbits      
Xbits   *  
Xbits   *  
Xbits  *   
X
X############### Character 0x3c, 074, 60   < < < < < < < < < <
Xchar 60
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    * 
Xbits   *  
Xbits  *   
Xbits *    
Xbits  *   
Xbits   *  
Xbits    * 
Xbits      
X
X############### Character 0x3d, 075, 61   = = = = = = = = = =
Xchar 61
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *****
Xbits      
Xbits *****
Xbits      
Xbits      
Xbits      
X
X############### Character 0x3e, 076, 62   > > > > > > > > > >
Xchar 62
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *   
Xbits   *  
Xbits    * 
Xbits     *
Xbits    * 
Xbits   *  
Xbits  *   
Xbits      
X
X############### Character 0x3f, 077, 63   ? ? ? ? ? ? ? ? ? ?
Xchar 63
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits     *
Xbits   ** 
Xbits   *  
Xbits      
Xbits   *  
Xbits      
X
X############### Character 0x40, 0100, 64   @ @ @ @ @ @ @ @ @ @
Xchar 64
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits * * *
Xbits * ***
Xbits * ** 
Xbits *    
Xbits  ****
Xbits      
X
X############### Character 0x41, 0101, 65   A A A A A A A A A A
Xchar 65
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits  * * 
Xbits *   *
Xbits *   *
Xbits *****
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x42, 0102, 66   B B B B B B B B B B
Xchar 66
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **** 
Xbits *   *
Xbits *   *
Xbits **** 
Xbits *   *
Xbits *   *
Xbits **** 
Xbits      
X
X############### Character 0x43, 0103, 67   C C C C C C C C C C
Xchar 67
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *    
Xbits *    
Xbits *    
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x44, 0104, 68   D D D D D D D D D D
Xchar 68
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **** 
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits **** 
Xbits      
X
X############### Character 0x45, 0105, 69   E E E E E E E E E E
Xchar 69
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits *    
Xbits *    
Xbits **** 
Xbits *    
Xbits *    
Xbits *****
Xbits      
X
X############### Character 0x46, 0106, 70   F F F F F F F F F F
Xchar 70
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits *    
Xbits *    
Xbits **** 
Xbits *    
Xbits *    
Xbits *    
Xbits      
X
X############### Character 0x47, 0107, 71   G G G G G G G G G G
Xchar 71
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *    
Xbits *    
Xbits *  **
Xbits *   *
Xbits  ****
Xbits      
X
X############### Character 0x48, 0110, 72   H H H H H H H H H H
Xchar 72
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *****
Xbits *   *
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x49, 0111, 73   I I I I I I I I I I
Xchar 73
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits  *** 
Xbits      
X
X############### Character 0x4a, 0112, 74   J J J J J J J J J J
Xchar 74
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    **
Xbits     *
Xbits     *
Xbits     *
Xbits     *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x4b, 0113, 75   K K K K K K K K K K
Xchar 75
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *  * 
Xbits * *  
Xbits **   
Xbits * *  
Xbits *  * 
Xbits *   *
Xbits      
X
X############### Character 0x4c, 0114, 76   L L L L L L L L L L
Xchar 76
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *    
Xbits *    
Xbits *    
Xbits *    
Xbits *    
Xbits *    
Xbits *****
Xbits      
X
X############### Character 0x4d, 0115, 77   M M M M M M M M M M
Xchar 77
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits ** **
Xbits * * *
Xbits * * *
Xbits * * *
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x4e, 0116, 78   N N N N N N N N N N
Xchar 78
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits **  *
Xbits * * *
Xbits *  **
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x4f, 0117, 79   O O O O O O O O O O
Xchar 79
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x50, 0120, 80   P P P P P P P P P P
Xchar 80
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **** 
Xbits *   *
Xbits *   *
Xbits **** 
Xbits *    
Xbits *    
Xbits *    
Xbits      
X
X############### Character 0x51, 0121, 81   Q Q Q Q Q Q Q Q Q Q
Xchar 81
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits *   *
Xbits * * *
Xbits *  * 
Xbits  ** *
Xbits      
X
X############### Character 0x52, 0122, 82   R R R R R R R R R R
Xchar 82
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **** 
Xbits *   *
Xbits *   *
Xbits **** 
Xbits * *  
Xbits *  * 
Xbits *   *
Xbits      
X
X############### Character 0x53, 0123, 83   S S S S S S S S S S
Xchar 83
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *** 
Xbits *   *
Xbits *    
Xbits  *** 
Xbits     *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x54, 0124, 84   T T T T T T T T T T
Xchar 84
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits * * *
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x55, 0125, 85   U U U U U U U U U U
Xchar 85
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x56, 0126, 86   V V V V V V V V V V
Xchar 86
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits *   *
Xbits  * * 
Xbits  * * 
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x57, 0127, 87   W W W W W W W W W W
Xchar 87
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits *   *
Xbits * * *
Xbits * * *
Xbits * * *
Xbits  * * 
Xbits      
X
X############### Character 0x58, 0130, 88   X X X X X X X X X X
Xchar 88
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits  * * 
Xbits   *  
Xbits  * * 
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x59, 0131, 89   Y Y Y Y Y Y Y Y Y Y
Xchar 89
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *   *
Xbits *   *
Xbits *   *
Xbits  * * 
Xbits   *  
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x5a, 0132, 90   Z Z Z Z Z Z Z Z Z Z
Xchar 90
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits     *
Xbits    * 
Xbits   *  
Xbits  *   
Xbits *    
Xbits *****
Xbits      
X
X############### Character 0x5b, 0133, 91   [ [ [ [ [ [ [ [ [ [
Xchar 91
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits **** 
Xbits *    
Xbits *    
Xbits *    
Xbits *    
Xbits *    
Xbits **** 
Xbits      
X
X############### Character 0x5c, 0134, 92   \ \ \ \ \ \ \ \ \ \
Xchar 92
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *    
Xbits *    
Xbits  *   
Xbits   *  
Xbits    * 
Xbits     *
Xbits     *
Xbits      
X
X############### Character 0x5d, 0135, 93   ] ] ] ] ] ] ] ] ] ]
Xchar 93
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  ****
Xbits     *
Xbits     *
Xbits     *
Xbits     *
Xbits     *
Xbits  ****
Xbits      
X
X############### Character 0x5e, 0136, 94   ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
Xchar 94
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits  * * 
Xbits *   *
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x5f, 0137, 95   _ _ _ _ _ _ _ _ _ _
Xchar 95
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
Xbits *****
Xbits      
X
X############### Character 0x60, 0140, 96   ` ` ` ` ` ` ` ` ` `
Xchar 96
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits   *  
Xbits    * 
Xbits      
Xbits      
Xbits      
Xbits      
Xbits      
X
X############### Character 0x61, 0141, 97   a a a a a a a a a a
Xchar 97
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  ** *
Xbits *  **
Xbits *   *
Xbits *  **
Xbits  ** *
Xbits      
X
X############### Character 0x62, 0142, 98   b b b b b b b b b b
Xchar 98
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *    
Xbits *    
Xbits * ** 
Xbits **  *
Xbits *   *
Xbits **  *
Xbits * ** 
Xbits      
X
X############### Character 0x63, 0143, 99   c c c c c c c c c c
Xchar 99
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  *** 
Xbits *    
Xbits *    
Xbits *    
Xbits  *** 
Xbits      
X
X############### Character 0x64, 0144, 100   d d d d d d d d d d
Xchar 100
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits     *
Xbits     *
Xbits  ** *
Xbits *  **
Xbits *   *
Xbits *  **
Xbits  ** *
Xbits      
X
X############### Character 0x65, 0145, 101   e e e e e e e e e e
Xchar 101
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  *** 
Xbits *   *
Xbits *****
Xbits *    
Xbits  ****
Xbits      
X
X############### Character 0x66, 0146, 102   f f f f f f f f f f
Xchar 102
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    * 
Xbits   * *
Xbits   *  
Xbits  *** 
Xbits   *  
Xbits   *  
Xbits   *  
Xbits      
X
X############### Character 0x67, 0147, 103   g g g g g g g g g g
Xchar 103
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  ** *
Xbits *  **
Xbits *   *
Xbits  ** *
Xbits     *
Xbits  *** 
X
X############### Character 0x68, 0150, 104   h h h h h h h h h h
Xchar 104
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *    
Xbits *    
Xbits * ** 
Xbits **  *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x69, 0151, 105   i i i i i i i i i i
Xchar 105
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits      
Xbits  **  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits  *** 
Xbits      
X
X############### Character 0x6a, 0152, 106   j j j j j j j j j j
Xchar 106
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    * 
Xbits      
Xbits   ** 
Xbits    * 
Xbits    * 
Xbits    * 
Xbits *  * 
Xbits  **  
X
X############### Character 0x6b, 0153, 107   k k k k k k k k k k
Xchar 107
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *    
Xbits *    
Xbits *   *
Xbits *  * 
Xbits ***  
Xbits *  * 
Xbits *   *
Xbits      
X
X############### Character 0x6c, 0154, 108   l l l l l l l l l l
Xchar 108
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  **  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits  *** 
Xbits      
X
X############### Character 0x6d, 0155, 109   m m m m m m m m m m
Xchar 109
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits ** * 
Xbits * * *
Xbits * * *
Xbits * * *
Xbits *   *
Xbits      
X
X############### Character 0x6e, 0156, 110   n n n n n n n n n n
Xchar 110
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits * ** 
Xbits **  *
Xbits *   *
Xbits *   *
Xbits *   *
Xbits      
X
X############### Character 0x6f, 0157, 111   o o o o o o o o o o
Xchar 111
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  *** 
Xbits *   *
Xbits *   *
Xbits *   *
Xbits  *** 
Xbits      
X
X############### Character 0x70, 0160, 112   p p p p p p p p p p
Xchar 112
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits * ** 
Xbits **  *
Xbits **  *
Xbits * ** 
Xbits *    
Xbits *    
X
X############### Character 0x71, 0161, 113   q q q q q q q q q q
Xchar 113
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  ** *
Xbits *  **
Xbits *   *
Xbits  ** *
Xbits     *
Xbits     *
X
X############### Character 0x72, 0162, 114   r r r r r r r r r r
Xchar 114
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits * ** 
Xbits **  *
Xbits *    
Xbits *    
Xbits *    
Xbits      
X
X############### Character 0x73, 0163, 115   s s s s s s s s s s
Xchar 115
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  ****
Xbits *    
Xbits  *** 
Xbits     *
Xbits **** 
Xbits      
X
X############### Character 0x74, 0164, 116   t t t t t t t t t t
Xchar 116
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits   *  
Xbits  *** 
Xbits   *  
Xbits   *  
Xbits   * *
Xbits    * 
Xbits      
X
X############### Character 0x75, 0165, 117   u u u u u u u u u u
Xchar 117
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *   *
Xbits *   *
Xbits *   *
Xbits *  **
Xbits  ** *
Xbits      
X
X############### Character 0x76, 0166, 118   v v v v v v v v v v
Xchar 118
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *   *
Xbits *   *
Xbits  * * 
Xbits  * * 
Xbits   *  
Xbits      
X
X############### Character 0x77, 0167, 119   w w w w w w w w w w
Xchar 119
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *   *
Xbits * * *
Xbits * * *
Xbits * * *
Xbits  * * 
Xbits      
X
X############### Character 0x78, 0170, 120   x x x x x x x x x x
Xchar 120
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *   *
Xbits  * * 
Xbits   *  
Xbits  * * 
Xbits *   *
Xbits      
X
X############### Character 0x79, 0171, 121   y y y y y y y y y y
Xchar 121
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *   *
Xbits *   *
Xbits *  **
Xbits  ** *
Xbits     *
Xbits  *** 
X
X############### Character 0x7a, 0172, 122   z z z z z z z z z z
Xchar 122
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits *****
Xbits    * 
Xbits   *  
Xbits  *   
Xbits *****
Xbits      
X
X############### Character 0x7b, 0173, 123   { { { { { { { { { {
Xchar 123
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits    * 
Xbits   *  
Xbits   *  
Xbits **   
Xbits   *  
Xbits   *  
Xbits    * 
Xbits      
X
X############### Character 0x7c, 0174, 124   | | | | | | | | | |
Xchar 124
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
Xbits   *  
X
X############### Character 0x7d, 0175, 125   } } } } } } } } } }
Xchar 125
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits  *   
Xbits   *  
Xbits   *  
Xbits    **
Xbits   *  
Xbits   *  
Xbits  *   
Xbits      
X
X############### Character 0x7e, 0176, 126   ~ ~ ~ ~ ~ ~ ~ ~ ~ ~
Xchar 126
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits      
Xbits      
Xbits  *   
Xbits * * *
Xbits    * 
Xbits      
Xbits      
Xbits      
X
X############### Character 0x7f, 0177, 127   DEL DEL DEL DEL DEL
Xchar 127
Xhs   5
Xvs   8
Xha   1
Xva   -7
Xhi   7
Xvi   0
Xbits *****
Xbits *****
Xbits *****
Xbits *****
Xbits *****
Xbits *****
Xbits *****
Xbits *****
X
________This_Is_The_END________
if test `wc -l < 36x102.font` -ne 1638; then
	echo 'shar: 36x102.font was damaged during transit (should have been 1638 bytes)'
fi
fi		; : end of overwriting check
exit 0



More information about the Unix-pc.sources mailing list