[net.micro.hp] Response to <547@batcompu>

ken@hpcvlo (07/02/86)

Yes there is a VT100 terminal emulator sold for the IPC by P2i.
I hope I have this address correct,  I talked with John Palley often
during the development of this product,  but have had no recent
contact.  The address on on our data sheet says:

	P2/i Incorporated
	8205 Spain NE, Suite 111
	Albuquerque, NM 87109
	(505) 245-6585

However the address on an old demo copy of the software says:
	P2/i Incorporated
	1704 Moon N.E. Suite #3
	Albuquerque, NM 87112
******

Datacomm unusable??  Heck I use it all the time as do many people
around here.  Do you have any specific questions?  I'll be more than
glad to help.
******

Other alternatives,  we can supply a version of kermit.  kermit's big
advantage is that it runs on almost all machines and is thus very
useful for file xfer.

We also have a tiny (~100 lines of code) terminal emulator that is so
simple that I could be convinced to supply source and then you could
have complete control.
******

By the way this response is in no way an advertisement or endorsement
for these products.  I am merely providing information at the request
of the initial note.


					-Ken Bronstein
					 {hplabs,hpfcla}!hp-pcd!ken
					 (503) 757-2000 X4133

hurf@batcomputer.TN.CORNELL.EDU (Hurf Sheldon) (07/09/86)

 
 Ken, 
	Thanks for the info - my complaint about datacom was with
regard to the specific characteristics of the emulator (what terminal
does it look like, what character string does what, etc). I am willing
to be humble but the documentation is bad , especially for HP.

	We would very much like to coerce your emulator from you just
for kicks. The more we can do to make the IPC productive for us the 
better. We would like to be able to run emacs (from the host) , vi &
some other terminal dependent routines with it. (we are looking for
system compatibility) .I enjoy seeing many different types of computers
able to access our system effectively. To that end we hope to find a 4010
emulator for it as well. 


     Hurf Sheldon			Arpa.css: Hurf@ionvax.tn.cornell.edu
     Lab of Plasma Studies	
     369 Upson Hall			phone: 607 255 7267
     Cornell University
     Ithaca, N.Y. 14853

ken@hp-pcd.UUCP (07/15/86)

The Datacomm package uses a standard terminal window type on the IPC,
which emulates an HP2622 terminal.  The specific implementation of the
HP2622 terminal is called term0.  It is documented in the Integral
Personal Computer Programmer's Guide; HP part #82865J.  The
programmer's guide is very valuable if you plan to do any programming
of the IPC.  The chapter's cover:
	General Programming info (alot of good stuff with real examples)
	Window Manager Reference
	Term0 Reference
	HP-GL Reference (for graphics windows that emulate HP plotters)
	Alpha/Graphics Windows (for high speed Graphics with Alpha capability)

You will find that HP terminals tend to share a fair number of
features.  Thus if you have a description of any HP terminal (HP2648,
HP2622, etc.)  then you have at least a close description of what
Term0 is about.

The minimal terminal emulator code that I mentioned really does
nothing more than read characters coming into the serial card, and
write keys typed out to the serial card.  There are many versions of
this program running around here.  Some are quite nice.  But if you
want it to do anything fancy, like graphics, or VT100, then you will
probably need the help from the Programmmer's guide.

Note that the default window created on the IPC is a Term0 window.
You can create a Term0 window by typing 'echo' into PAM.  You could
then type in escape sequences (laborious) and the Term0 driver in ROM
will interpret those sequences for you.  Thus the dumb terminal
emultor  which I will also post does NO work to also implement Term0,
and thus by default looks like an HP terminal.  Note also if you want
to 'see' escape sequences being parsed by the Term0 driver then use
the 'alpha' function key to turn on 'Display Functions' mode.

I hope I am being helpful.  We really do not want information about
our machine to be a secret.  I  must also share with you that a number
of people here (HP-Corvallis, OR.) got a kick out of your description
of our machine as running a UN*X like OS.  The OS is SYS V, of course
with HP enhancements 8-).

I will gladly try to help you with any further questions.

				Regards,
					Ken Bronstein
					hp-pcd!ken
					(503) 757-2000 X4133

ken@hp-pcd.UUCP (07/15/86)

/*
 * Minimal Terminal Emulator for the IPC
 *
 * This code is NOT a supported HP program.
 * We make no warranty of any kind with regard to this material.
 */
#include	<stdio.h>
#include	<fcntl.h>
#include	<termio.h>
#include	<signal.h>
#include	<extty.h>

#define		ENQ	'\005'
#define		ACK	"\006"

/*******************************************************************

	Quick terminal program

*******************************************************************/

int	done();

char	conbuf[100], fdbuf[100];
int	fd, tty, i, j, sig_rec, child;
struct	ocio	o;
struct	termio	t, con, old_con;


h_break()
{
	signal(SIGINT, SIG_IGN);

	sig_rec = 1;
}


send_break()
{

	ioctl(fd, TCSBRK, 0);
	for(i = 0; i < 25000; i++)
		;
	while( signal(SIGINT, h_break) < 0)
		;
	return;
}


main(argc, argv)

int	argc;
char	*argv[];

{
	if(argc == 1)
		fd = open("/dev/cul00", O_RDWR | O_NDELAY);
	else
		fd = open(argv[1], O_RDWR | O_NDELAY);
	
	if(fd < 0) {
		puts("Unable to open device, bye...");
		exit(1);
	}

	ioctl(fd, TCGETA, &t);
	t.c_lflag &= ~ICANON;
	t.c_cc[VMIN] = 1;
	t.c_cc[VTIME] = 0;
	t.c_iflag = IXON | IXOFF | ISTRIP;
	t.c_oflag = OPOST | ONLCR;
	t.c_cflag = B9600 | CS8 | CREAD | CLOCAL;
	ioctl(fd, TCSETA, &t);
	/*
	 * hey this looks like real UN*X to me!
	 */

	ioctl(fd, GETCTLBITS, &o);
	o.cntl_bits |= ENQACKON;
	ioctl(fd, SETCTLBITS, &o);

	fcntl(fd, F_SETFL, O_RDWR);

	tty = open("/dev/tty", O_RDWR);
	ioctl(tty, TCGETA, &con);
	old_con = con;
	con.c_iflag |= INLCR;
	con.c_iflag &= ~ICRNL;
	con.c_lflag &= ~ICANON & ~ECHO;
	con.c_cc[VMIN] = 1;
	con.c_cc[VTIME] = 0;
	ioctl(tty, TCSETA, &con);


	puts("Ready...");

	if(child = fork()) {    /* read console and write to serial */
		signal(SIGINT, h_break);
		signal(SIGQUIT, done);
		while(1) {
			i = read(tty, conbuf, 100);
			if(sig_rec) {
				sig_rec = 0;

				ioctl(tty, TCGETA, &con);
				con.c_cc[VMIN] = 0;
				con.c_cc[VTIME] = 0;
				ioctl(tty, TCSETA, &con);

				send_break();
				ioctl(tty, TCGETA, &con);
				con.c_cc[VMIN] = 1;
				con.c_cc[VTIME] = 0;
				ioctl(tty, TCSETA, &con);

				continue;
			}
			write(fd, conbuf, i);
		}
	} else {        /* read serial and write to console */
		signal(SIGINT, SIG_IGN);
		while(1) {
			i = read(fd, fdbuf, 100);
			write(tty, fdbuf, i);
		}
	}
}

done()
{

	ioctl(tty, TCSETA, &old_con);
	kill(child, 9);
	write(tty, "\nBye...\n", 8);
	exit(0);
}