[comp.unix.xenix] Microp Mailing List #32

microp@b-tech.UUCP (08/23/87)

Subject: Microp mailing list #32 (22-Aug-87)

This message is being mailed to you as part of a mailing list.

This list is targeted towards technical discussions of Microport's Sys 
V/AT Unix for the IBM PC-AT.  It not officially related to Microport 
Systems Inc.  

Any input you have should be sent to: 

 seismo!umix!b-tech!microp  
 microp%b-tech.uucp@umix.cc.umich.edu

To be added to this list, contact one of the following sites:

seismo!scubed!sdcsvax!amos.ling.LOCAL!sdeggo!dave (southern CA area)
tektronix!reed!percival!nerd
rutgers!umnd-cs!umn-cs!rosevax!herman!k0jfv!alan (Minneapolis/St. Paul area)
seismo!mcvax!trevan!trevor 
nessus!info-uport
genrad!mrst!sdti!mjy 
gargoyle.uchicago.edu!vijit!madsen

-------------------------------------------------------------------------
From: b-tech!zeeff
Subject: uusub -u

It appears that "uusub -u24" incorrectly collects statistics for all 
the data in SYSLOG instead of just the last 24 hours.  Has anyone
had it work correctly?
----------------------------------------------------------------------------
From: umix!seismo!hplabs!bnrmtv!mdc!blob (Brian Bechtel)
Subject: Performance under 2.2 U

We're running 2.2 U (unlimited users, version 2.2 L otherwise) on a
Compaq 386 with 10Mb of memory, but it doesn't *feel* like we're
using up all that memory.  Compiles still seem to do a lot of disk
i/o, our Unify database doesn't run as fast as it seems it ought,
etc.  Anybody have any ideas what might be wrong?  Anybody have any
ideas how we can even measure if we *are* doing anything wrong?  Our
results on the IOCALL benchmark recently posted to comp.arch were in
the 50 second range.

Thanks for any suggestions.

			{hplabs,amdahl}!bnrmtv!\
--Brian Bechtel					mdc!blob
			  {sun,oliveb}!3comvax!/

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

From: itivax!umix!seismo!xios!dont (Don Taylor)
Subject: MicroPort Sys V/AT Mailing List

	We have been spending QUITE a lot of time trying to resolve a 
problem that results in a "double panic: TSS fault".  I believe that a 
number of sites have reported this problem.  It occurs for us when we use
telnet on our own implementation of TCP/IP SLIP links.  Other people have
reported the problem with uucp and cat.  In all cases that we know of, the 
problem manifests itself on 9600 baud lines.  We feel that the problem 
derives from the fact that V/AT uses 1kb. of the u-area for the kernel
stack, and that simply is not big enough to handle nested interrupts of any 
number.  We have a kludge that seems to get around the problem - we switch
stacks to a dedicated interrupt service stack on the first interrupt.
Unfortunately, the 286 prevents us from doing this atomically with respect
to 287 co-processor interrupts (and NMI and bus errors), so the solution
only works reliably if you do not have a co-processor.  The correct solution
appears to be the use of another 286 priviledge level by the kernel, 
unfortunately that would require changes throughout the kernel, which is
something that we do not want to do.  

	Has anybody else experienced this problem?  MicroPort say that they
cannot reproduce it.  (We have been unable to reproduce other sites version
of the problem, and I do not want to ship all of our software to MicroPort
so that they can try to reproduce the problem).  Has anybody managed to find
a sure-fire way to reproduce this problem on several different flavours of AT
using readily available software? (preferably MicroPort's own software). If
so, then please let me know how you do it and I will try to reproduce it
here, and test it against our 'fixed' kernel.  

	Thx.  Don 

Don Taylor,                          
XIOS Systems Corporation,             ...seismo!mnetor!dciem!nrcaer!xios!dont
1600 Carling Avenue, Suite 150,             
Ottawa, Ontario.                                    
K1Z 8R8				      613-725-5411	                
Canada.                                      

---------------------------------------------------------------------------
From: umix!seismo!cmcl2!manhat!samperi
Subject: talk & Microport floppy backups


Here is another write-like talk for System V, with immediate character
echo/send, and with shell escapes for which the ouput of a shelled command
goes to both parties. This program is not Microport-specific. I was going
to send along a Microport-specific floppy backup program that users on this
mailing list might find useful, but it is about 1000 lines long, and I
don't know what length limits you impose on submissions. The latter program
essentially provides a more user friendly interface to cpio, permitting
backups to multi-floppy sets, without those "errno: 6" cpio messages
appearing. (Actually, the program is quite short, but there is much
documentation.) BTW, would somebody on the list please add me to the
list? My UUCP address is shown below.

Thanks.

If 1000 lines is not too long, I'll send the backup program along. 

	Dominick Samperi
	Dept. of Math. & Computer Science
	Manhattan College
	Riverdale, NY 10471

	UUCP:	...{ihnp4|seismo|rutgers|philabs}!cmcl2!manhat!samperi


[ed: source for this is a available from the author]

----------------------------------------------------------------------------
From: umix!seismo!cmcl2!manhat!samperi
Subject: vi tags bug?


	I keep getting the vi error message "no such tag in tags file" with
	the version of vi that is shipped with System V/AT, while the same
	tags file works fine with a Berkeley vi that I tested. Sometimes if
	I rearrange the lines in the tags file vi is able to find the tag,
	but the results are unpredictable in general (as far as I can tell).
	Does anyone have a fix for this problem?

	I also tested by using PC/VI with the same tags file, and there were
	no problems.

	Dominick Samperi
	Manhattan College

	{seismo|ihnp4|rutgers|philabs}!cmcl2!manhat!samperi
-----------------------------------------------------------------------------

From: umix!seismo!ce.okstate.edu!walters


First off, let me thank all of you who responded to my plea for help
about EGA graphics and Microport UNIX.  Almost all replys were helpfull. 
Following are two sets of routines, one for doing graphics on the EGA
under Microport System V/AT and the other to save the text screen. 
There are several prerequisites to using these routines.  Some obvious
and some not so obvious. 

An EGA card and a version of Microport that supports shared memory
(for most people thats > 2.2.0).

Shared memory segments are created are bootup with a file in /etc/rc.d
like /etc/rc.d/shm.rc with the following lines.

	/etc/shmcreate 0xa0000 a0000 65535		# ega high res
	/etc/shmcreate 0xb8000 b8000 32768		# cga

A working version of /etc/shmcreate.  The version that came with
2.2.0L didn't work but there was a patch posted in the microp newsletter.

Write access to /dev/mem.  A potential security hole.

The routines are pretty obvious and are commented.  They must be compiled
with the large memory model.  A small demo is given below.  Compile
with
	cc -Ml mtest.c mega.c mcgasr.c -o mtest

Now I understand why most people don't submit code they have written,
it takes forever to make it presentable.  The *best* way to do all of
this non-sense would be to put it in a device driver to make 'em fast.
Oh well, a project for the future.  Please send bug reports to
me and flames to /dev/null.  Enjoy.

--
Harold G. Walters                 Internet: walters@ce.okstate.edu
School of Civil Engineering       Uucp: {cbosgd, ihnp4, rutgers, ?seismo?,
Oklahoma State University               uiucdcs}!okstate!osubem!walters
Stillwater, OK  74078

[ed: source for this is available from the author]

-----------------------------------------------------------------------------
From: umix!seismo!scubed!sdcsvax!ucrmath!soft21!root
Subject: Line printer graphics routines


Enclosed find the shar file which allows Microport to print graphics 
(lines, dots, text) on an Epson/Epson Like printer (960x792 dots).
True, it's not stunning, but someone might enjoy it.  I did learn how
certain MP problems.  For example, we can't seem to create a 96k malloc,
even 64k causes trouble.  I page a 32k array in 3 sections from disk.
Table.c is a program which converts hercules 8x8 fonts (see Byte) to
fonts for Epson.  Hanve fun and give away freely -- it might improve.

[ed: source for this is available from the author]

-----------------------------------------------------------------------------
From: umix!seismo!scubed!sdcsvax!ucrmath!soft21!root
Subject: ELM?


Aren't you running the ELM mailer?  How much memory/disk do I need for this?
I finally have the sources and Iam considering compiling it.

-----------------------------------------------------------------------------
From: b-tech!zeeff
Subject: ELM?

I run the Elm mailer here and I know some other sites do also.  It 
took alot of work to get it running on Microport and still has a few 
bugs.  The author (Dave Taylor) is supposed to be working on a new 
version, hopefully he will try this on 16 bit systems before he 
releases it.  It takes about 200K for elm itself + some utilities that 
I don't use here.  

-----------------------------------------------------------------------------
Subject: serial mouse routines

Enclosed is a shell archive containing my modifications to the serial mouse
routines written by John Chapman (john@bby-bc.UUCP) 

I added error checking along with some modularization and efficiency
changes. Also included is a small program called "track" to test these
routines.

These routines were tested with a Microsoft compatible PC mouse and
Microport UNIX 2.2. 

-----
Anthony J. Starks		...{ihnp4 | seismo}!iuvax!hpuinda!mdri!ajs
Merrell Dow Research Institute
P.O. Box 68470 
Indianapolis, IN 46268



#------------------cut here------------------------------------------------
#! /bin/sh
# This is a shell archive, meaning:
# 1. Remove everything above the #! /bin/sh line.
# 2. Save the resulting text in a file.
# 3. Execute the file with /bin/sh (not csh) to create the files:
#	Makefile
#	smouse.h
#	smouse.c
#	track.c
# This archive created: Fri Aug  7 13:13:33 1987
export PATH; PATH=/bin:$PATH
if test -f 'Makefile'
then
	echo shar: will not over-write existing file "'Makefile'"
else
cat << \SHAR_EOF > 'Makefile'
#
#  Makefile for smouse routines
#
track:		track.o smouse.o
		cc $(CFLAGS) track.o smouse.o -o track

track.o:	track.c smouse.h
		cc $(CFLAGS) -c track.c

smouse.o:	smouse.c smouse.h
		cc $(CFLAGS) -c smouse.c

shar:		
		shar Makefile smouse.h smouse.c track.c >smouse.shar
clean:		
		rm -f track.o
SHAR_EOF
fi # end of overwriting check
if test -f 'smouse.h'
then
	echo shar: will not over-write existing file "'smouse.h'"
else
cat << \SHAR_EOF > 'smouse.h'
/*
 *  Constants and definitions for the Microsoft serial mouse routines
 */

#define MOUSE_DEV	"/dev/tty1"
#define NCOORD		4
#define NBUTTON		3
#define SYSERR		(-1)
#define SUCCESS		(0)

typedef struct {
	int dx;
	int dy;
	int button[NBUTTON];
} Mouse;


SHAR_EOF
fi # end of overwriting check
if test -f 'smouse.c'
then
	echo shar: will not over-write existing file "'smouse.c'"
else
cat << \SHAR_EOF > 'smouse.c'
/*
 *  Mouse routines for the Microsoft serial mouse and compatibles.
 *
 *  Adapted from routines posted by john@bby-bc.UUCP in <146@bby-bc.UUCP>.
 *
 *  Anthony J. Starks (ajs@mdri)
 */
#include	<fcntl.h>
#include	<errno.h>
#include	<termio.h>
#include	"smouse.h"

static int mfd;

MouseInit()
{
	struct termio t;
	
	errno = 0;
	if ((mfd = open(MOUSE_DEV, O_RDONLY)) < 0) 
	{
		perror("mouse open");
		return SYSERR;
	}

	if (ioctl(mfd,TCGETA, &t) < 0)
	{
		perror("mouse get parameter");
		return SYSERR;
	}
		
	t.c_iflag &= ~(IXON|IXOFF|ISTRIP|INLCR|IGNCR|ICRNL|IUCLC|INPCK);
	t.c_cflag = B1200 | CS8 | CLOCAL | CREAD ;
	t.c_lflag = 0;

	if (ioctl(mfd,TCSETA, &t) < 0)
	{
		perror("mouse set parameter");
		return SYSERR;
	}
	
	return SUCCESS;
}

MouseRead(m)
Mouse *m;
{
	unsigned char	b;
	char		coord[NCOORD];

	/*
	 *  Synchronize on a button byte
	 */
	for (b=0; (b&0370) != 0200 ; ) 
		if (read(mfd, &b, 1) < 0) return SYSERR;
	
	/*
	 *  Read the coordinates
	 */
	if (read(mfd, coord, NCOORD) < 0) return SYSERR;
	
	/*
	 *  Read button bits
	 */

	m->button[2] = (~b)  & 1;
	m->button[1] = (~(b>>1)) & 1;
	m->button[0] = (~(b>>2)) & 1;
	
	/*
	 *  Pack up the coordinate half-words
	 */
	m->dx  =  (int)(coord[0] + coord[2]);
	m->dy  =  (int)(coord[1] + coord[3]);
	
	return SUCCESS;

}

MouseClose()
{
	close(mfd);
}
SHAR_EOF
fi # end of overwriting check
if test -f 'track.c'
then
	echo shar: will not over-write existing file "'track.c'"
else
cat << \SHAR_EOF > 'track.c'
/*
 *  track -- track the mouse using the serial mouse routines.
 */

#include "smouse.h"

main()
{
	Mouse m;
	
	if (MouseInit() < 0) exit(1);
	while (!m.button[2])
	{
		if (MouseRead(&m) < 0) break;

		printf("dx = %4d dy = %4d b1 = %1d b2 = %1d b3 = %1d\n",
			m.dx, m.dy, m.button[0], m.button[1], m.button[2]);
		
	}
	MouseClose();
}
SHAR_EOF
fi # end of overwriting check
#	End of shell archive
exit 0
--------------------------------------------------------------------------