[comp.sys.apollo] obtaining raw input from a telnet connection

nielson@dhw68k.cts.com (Mike Nielson) (07/24/88)

I have an application that likes to take input from the keyboard one character
at a time without waiting for a carriage return.  This can be accomplished 
easily for a pad using the pad_$ calls and for and sio line using the sio_$
calls to place the input stream in raw mode.  I would also like to be able to
run the program over a TCP/IP connection using telnet but have not yet been
able to do so.

According to the Domain System Call Reference, the only way to access this
type of connection is to use the ios_$ calls, but I can find no documented
way to invoke raw mode using ios.  (ios_$inq_type_uid reports that the stream
type is pseudo-tty slave.)  I realize that I could probably accomplish this
in the UNIX environment using the appropriate ioctl, but unfortunately my
program was developed in the Aegis environment and I'm not quite ready
to change it to UNIX (at least not until SR10 hits the streets.)

Does anyone know how to place a stream in raw mode using ios?  If not, has 
anyone figured out a way to access pseudo-tty streams using something other
than ios?

Thanks in advance.


Mike Nielson, PDA Engineering
hplabs!felix!ccicpg!pdaeng!nielson
hplabs!felix!dhw68k!nielson

rees@A.CC.UMICH.EDU (Jim Rees) (07/26/88)

    I have an application that likes to take input from the keyboard one character
    at a time without waiting for a carriage return...

    I realize that I could probably accomplish this
    in the UNIX environment using the appropriate ioctl, but unfortunately my
    program was developed in the Aegis environment and I'm not quite ready
    to change it to UNIX (at least not until SR10 hits the streets.)

You would really like to do this in a device-independent manner, so that
your program doesn't have to find out what kind of a tty it has.  The only
supported way I know of to do this is with ioctl().

You don't have to "change it to Unix" to take advantage of ioctl().
Just make the ioctl call, passing in the ios stream id as the file
descriptor.

There isn't really an internal distinction between "aegis" programs and
"unix" programs.  (Well, except for case distinctions in file names).
I often mix "aegis" system calls with "unix" system calls within the
same program.

If your program is written in pascal, you may find it easiest to write a
little one-line C program to call ioctl(), and bind it in with your program.
-------