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 X4133hurf@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. 14853ken@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);
}