From:	CSBVAX::CSBVAX::MRGATE::"SMTP::CRVAX.SRI.COM::RELAY-INFO-VAX"  8-NOV-1988 22:30
To:	MRGATE::"ARISIA::EVERHART"
Subj:	VAXCIO (VAXCIO.SHAR5_OF_5) Source.


Received: From KL.SRI.COM by CRVAX.SRI.COM with TCP; Tue,  8 NOV 88 18:56:24 PDT
Received: from ucbvax.Berkeley.EDU by KL.SRI.COM with TCP; Tue, 8 Nov 88 18:37:37 PST
Received: by ucbvax.Berkeley.EDU (5.59/1.31)
	id AA07738; Mon, 7 Nov 88 23:46:27 PST
Received: from USENET by ucbvax.Berkeley.EDU with netnews
	for info-vax@kl.sri.com (info-vax@kl.sri.com)
	(contact usenet@ucbvax.Berkeley.EDU if you have questions)
Date: 7 Nov 88 19:58:52 GMT
From: tektronix!gvgpsa!gvgpvd!tony@ucbvax.Berkeley.EDU  (Tony Ivanov)
Organization: Grass Valley Group, Inc., Grass Valley, CA
Subject: VAXCIO (VAXCIO.SHAR5_OF_5) Source.
Message-Id: <892@gvgpvd.GVG.TEK.COM>
Sender: info-vax-request@kl.sri.com
To: info-vax@kl.sri.com


--------------- cut here ---------------
$Part5:
$ File_is="WRITE.C"
$ Check_Sum_is=2082154319
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
V/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
X~~~~~~~~~~~
X *`009This file holds the entry points for:
X *`009`009write and fwrite.
X */
X
X# include`009"vmstermio.h"
X
Vextern struct vms_term_data`009*gvg$special_read(), *gvg$special_write();`009/*
X Functions. */
Vextern struct vms_term_data`009*gvg$special_fread(), *gvg$special_fwrite();`009
X/* Functions. */
X
Xwrite (fildes, buff, nbytes)
X`009int`009fildes, nbytes;
X`009char`009*buff;
X{
V`009struct vms_term_data`009*index;`009`009/* Index into vms termio database. *
X/
X`009int`009`009`009bytes_written;`009/* # bytes written to file. */
X`009char`009`009`009*ptr;`009`009/* Pointer into output buffer. */
X`009int`009`009`009och;
X
X`009`009/* See if we can issue regular C read. */
V`009if (!(index = gvg$special_write(fildes)))`009`009/* If no special processin
Xg is needed...*/
V`009`009return (___write (fildes, buff, nbytes));`009/* ...call the standard wr
Xite function. */
X
X`009`009/* Write the information to the file. */
X`009bytes_written = gvg$do_qio_write (index, buff, nbytes);
X
X`009`009/* Return the actual number of bytes written. */
X`009return (bytes_written);
X}
X
X
Xfwrite (buff, size, nitems, filptr)
X`009char`009*buff;
X`009int`009size, nitems;
X`009FILE`009*filptr;
X{
V`009struct vms_term_data`009*index;`009`009/* Index into vms termio database. *
X/
X`009int`009`009`009items_written;`009/* # Items written to file. */
X`009char`009`009`009*ptr;`009`009/* Pointer into output buffer. */
X`009int`009`009`009och;
X
X`009`009/* See if we can issue regular C read. */
V`009if (!(index = gvg$special_fwrite(filptr)))`009`009`009/* If no special proc
Xessing is needed...*/
V`009`009return (___fwrite (buff, size, nitems, filptr));`009/* ...call the stan
Xdard write function. */
X
X`009`009/* Write the information to the file. */
X`009if (size > 0  &&  nitems > 0)
X`009`009items_written = gvg$do_qio_write (index, buff, size*nitems) / size;
X`009else
X`009`009items_written = 0;
X
X`009`009/* Return the actual number of items written. */
X`009return (items_written);
X}
$ GoSub Convert_File
$ File_is="SYS$LIBRARY_TERMIO.H"
$ Check_Sum_is=527898362
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*
V*******************************************************************************
X*
V*                         Copyright (c) 1985 AT&T                              
X*
V*                           All Rights Reserved                                
X*
V*                                                                              
X*
V*                                                                              
X*
V*          THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T                 
X*
V*        The copyright notice above does not evidence any actual               
X*
V*        or intended publication of such source code.                          
X*
V*******************************************************************************
X*
X*/
X/*#ident "@(#)termio.h  6.3  1.1 (Intergraph) 8/8/86"*/
X#define`009NCC`0098
X
X/* control characters */
X#define`009VINTR`0090
X#define`009VQUIT`0091
X#define`009VERASE`0092
X#define`009VKILL`0093
X#define`009VEOF`0094
X#define`009VEOL`0095
X#define`009VEOL2`0096
X#define`009VMIN`0094
X#define`009VTIME`0095
X#define`009VSWTCH`0097
X
X#define`009CNUL`0090
X#define`009CDEL`0090377
X/* default control chars */
X#define`009CESC`009'\\'
X#define`009CINTR`0090177`009/* DEL */
X#define`009CQUIT`009034`009/* FS, cntl | */
X#define`009CERASE`009010`009/* BS */
X#define`009CKILL`009025`009/* cntl u */
X#define`009CEOF`00904`009/* cntl d */
X#define`009CSTART`009021`009/* cntl q */
X#define`009CSTOP`009023`009/* cntl s */
X#define`009CSWTCH`009032`009/* cntl z */
X#define`009CNSWTCH`0090
X
X
X/* input modes */
X#define`009IGNBRK`0090000001
X#define`009BRKINT`0090000002
X#define`009IGNPAR`0090000004
X#define`009PARMRK`0090000010
X#define`009INPCK`0090000020
X#define`009ISTRIP`0090000040
X#define`009INLCR`0090000100
X#define`009IGNCR`0090000200
X#define`009ICRNL`0090000400
X#define`009IUCLC`0090001000
X#define`009IXON`0090002000
X#define`009IXANY`0090004000
X#define`009IXOFF`0090010000
X
X/* output modes */
X#define`009OPOST`0090000001
X#define`009OLCUC`0090000002
X#define`009ONLCR`0090000004
X#define`009OCRNL`0090000010
X#define`009ONOCR`0090000020
X#define`009ONLRET`0090000040
X#define`009OFILL`0090000100
X#define`009OFDEL`0090000200
X#define`009NLDLY`0090000400
X#define`009NL0`0090
X#define`009NL1`0090000400
X#define`009CRDLY`0090003000
X#define`009CR0`0090
X#define`009CR1`0090001000
X#define`009CR2`0090002000
X#define`009CR3`0090003000
X#define`009TABDLY`0090014000
X#define`009TAB0`0090
X#define`009TAB1`0090004000
X#define`009TAB2`0090010000
X#define`009TAB3`0090014000
X#define`009BSDLY`0090020000
X#define`009BS0`0090
X#define`009BS1`0090020000
X#define`009VTDLY`0090040000
X#define`009VT0`0090
X#define`009VT1`0090040000
X#define`009FFDLY`0090100000
X#define`009FF0`0090
X#define`009FF1`0090100000
X
X/* control modes */
X#define`009CBAUD`0090000017
X#define`009B0`0090
X#define`009B50`0090000001
X#define`009B75`0090000002
X#define`009B110`0090000003
X#define`009B134`0090000004
X#define`009B150`0090000005
X#define`009B200`0090000006
X#define`009B300`0090000007
X#define`009B600`0090000010
X#define`009B1200`0090000011
X#define`009B1800`0090000012
X#define`009B2400`0090000013
X#define`009B4800`0090000014
X#define`009B9600`0090000015
X#define`009B19200`0090000016
X#define`009B38400`0090000017
X`009`009`009/* EXTA and EXTB should be deleted when cleaned */
X`009`009`009/* out of the source */
X#define`009EXTA`0090000016
X#define`009EXTB`0090000017
X`009`009`009/* they are aliases for b19200 and B38400 */
X#define`009CSIZE`0090000060
X#define`009CS5`0090
X#define`009CS6`0090000020
X#define`009CS7`0090000040
X#define`009CS8`0090000060
X#define`009CSTOPB`0090000100
X#define`009CREAD`0090000200
X#define`009PARENB`0090000400
X#define`009PARODD`0090001000
X#define`009HUPCL`0090002000
X#define`009CLOCAL`0090004000
X#define`009LOBLK`0090010000
X
X/* line discipline 0 modes */
X#define`009ISIG`0090000001
X#define`009ICANON`0090000002
X#define`009XCASE`0090000004
X#define`009ECHO`0090000010
X#define`009ECHOE`0090000020
X#define`009ECHOK`0090000040
X#define`009ECHONL`0090000100
X#define`009NOFLSH`0090000200
X
X#define`009SSPEED`0097`009/* default speed: 300 baud */
X
X/*
X * Ioctl control packet
X */
Xstruct termio {
X`009unsigned short`009c_iflag;`009/* input modes */
X`009unsigned short`009c_oflag;`009/* output modes */
X`009unsigned short`009c_cflag;`009/* control modes */
X`009unsigned short`009c_lflag;`009/* line discipline modes */
X`009char`009c_line;`009`009/* line discipline */
X`009unsigned char`009c_cc[NCC];`009/* control chars */
X};
X#define`009IOCTYPE`0090xff00
X
X#define`009TIOC`009('T'<<8)
X#define`009TCGETA`009(TIOC|1)
X#define`009TCSETA`009(TIOC|2)
X#define`009TCSETAW`009(TIOC|3)
X#define`009TCSETAF`009(TIOC|4)
X#define`009TCSBRK`009(TIOC|5)
X#define`009TCXONC`009(TIOC|6)
X#define`009TCFLSH`009(TIOC|7)
X#define`009TCDSET`009(TIOC|32)
X
X#define`009LDIOC`009('D'<<8)
X#define`009LDOPEN`009(LDIOC|0)
X#define`009LDCLOSE`009(LDIOC|1)
X#define`009LDCHG`009(LDIOC|2)
X#define`009LDGETT`009(LDIOC|8)
X#define`009LDSETT`009(LDIOC|9)
X
X/*
X * Terminal types
X */
X#define`009TERM_NONE`0090`009/* tty */
X#define`009TERM_TEC`0091`009/* TEC Scope */
X#define`009TERM_V61`0092`009/* DEC VT61 */
X#define`009TERM_V10`0093`009/* DEC VT100 */
X#define`009TERM_TEX`0094`009/* Tektronix 4023 */
X#define`009TERM_D40`0095`009/* TTY Mod 40/1 */
X#define`009TERM_H45`0096`009/* Hewlitt-Packard 45 */
X#define`009TERM_D42`0097`009/* TTY Mod 40/2B */
X
X/*
X * Terminal flags
X */
X#define TM_NONE`009`0090000`009/* use default flags */
X#define TM_SNL`009`0090001`009/* special newline flag */
X#define TM_ANL`009`0090002`009/* auto newline on column 80 */
X#define TM_LCF`009`0090004`009/* last col of last row special */
X#define TM_CECHO`0090010`009/* echo terminal cursor control */
X#define TM_CINVIS`0090020`009/* do not send esc seq to user */
X#define TM_SET`009`0090200`009/* must be on to set/res flags */
X
X/*
X * structure of ioctl arg for LDGETT and LDSETT
X */
Xstruct`009termcb`009{
X`009char`009st_flgs;`009/* term flags */
X`009char`009st_termt;`009/* term type */
X`009char`009st_crow;`009/* gtty only - current row */
X`009char`009st_ccol;`009/* gtty only - current col */
X`009char`009st_vrow;`009/* variable row */
X`009char`009st_lrow;`009/* last row */
X};
$ GoSub Convert_File
$ File_is="SYS$LIBRARY_VMSTERMIO.H"
$ Check_Sum_is=206133816
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*#ident "@(#)vmstermio.h  1.2 (Grass Valley Group) 6/19/87"*/
X#ifndef VMSTERMIO_INCLUDED
X
X#ifndef NCC
X#include`009<termio.h>
X#endif
X
X#ifndef TT$M_C_BAUD_110
X#include`009<ttdef.h>
X#endif
X
X#ifndef TT2$M_LOCALECHO
X#include`009<tt2def.h>
X#endif
X
X/*
X *`009The following is the default termio data structure to be used if the
X *`009the programmer isn't trying to do fancy stuff.
X */
Vglobalref struct termio `009_tty;`009`009/* Default terminal setting structure.
X */
Xglobalref int`009`009`009_tty_ch;`009/* Channel being used for above. */
Vglobalref struct termio`009`009_res_tty;`009/* Used to save terminal settings f
Xor restoration. */
X
Xextern int`009ioctl(), vms_dup012();`009`009/* Terminal I/O functions. */
X
X/*
V *`009Note that the definition for gtty also does a vms_dup012.  This is done t
Xo
V *`009duplicate the ioctl information between file descriptors 0, 1 and 2 (stdi
Xn,
V *`009stdout, and stderr).  This is necessary since if one of them is changed, 
Xthey
V *`009all need to be changed together.  The only time this bombs is if one of t
Xhe
X *`009standard I/O channels is explicitly closed then re-opened.  In this case,
V *`009if the terminal is opened again into the same file descriptor, another ca
Xll
V *`009to gtty will fix things.  If the re-opened file is NOT the terminal, don'
Xt
V *`009worry about.  The data structure will go away and VMS termio will no long
Xer be
V *`009in effect for that file descriptor (be sure never again to call gtty!).  
XIf the
V *`009re-opened file is a DIFFERENT terminal, you just make an explicit call to
X ioctl
X *`009to set up the VMS termio handlers.
X *
V *`009I recommend you re-define ALL the following definitions if you wish to pl
Xay
V *`009around with opening and closing the standard I/O streams!  At least chang
Xe
V *`009gtty() to NOT do a vms_dup012.  Before you think about doing this, rememb
Xer
V *`009that getchar and putchar write to different file descriptors, so some thi
Xngs may
X *`009not behave properly if vms_dup012 is not called!
X */
X
X`009/* general definitions */
V# define`009gtty(ch,ptr)`009( (ptr)->c_iflag |= ICRNL, (ptr)->c_oflag |= ONLCR,
X \
X`009`009`009`009  ioctl (ch, TCGETA, ptr), vms_dup012(ch) )
X# define`009stty(ch,ptr)`009( ioctl (ch, TCSETA, ptr) )
V# define`009nl()`009`009( _tty.c_iflag |= ICRNL, _tty.c_oflag |= ONLCR, stty(_t
Xty_ch,&_tty) )
V# define`009nonl()`009`009( _tty.c_iflag &= ~ICRNL, _tty.c_oflag &= ~ONLCR, stt
Xy(_tty_ch,&_tty) )
X# define`009raw()`009`009( _tty.c_oflag &= ~OPOST, stty(_tty_ch,&_tty) )
X# define`009noraw()`009`009( _tty.c_oflag |= OPOST, stty(_tty_ch,&_tty) )
V# define`009lcase()`009`009( _tty.c_iflag |= IUCLC, _tty.c_oflag |= OLCUC, stty
X(_tty_ch,&_tty) )
V# define`009nolcase()`009( _tty.c_iflag &= ~IUCLC, _tty.c_oflag &= ~OLCUC, stty
X(_tty_ch,&_tty) )
X
X# define`009savetty()`009((void) gtty(_tty_ch, &_tty), _res_tty = _tty)
X# define`009resetty()`009(_tty = _res_tty, (void) stty(_tty_ch, &_tty))
X
X# define`009erasechar()`009(_tty.c_cc[VERASE])
X# define`009killchar()`009(_tty.c_cc[VKILL])
X# define`009baudrate()`009(_tty.c_cflag & CBAUD)
X
X# ifdef VMS
X`009/* These are VMS specific terminal characteristics.  You must make
X`009   a call to gtty (ioctl) before these macros will work. */
X# define`009wrap()`009`009(vms_set_tt_char (_tty_ch, TT$M_WRAP, FALSE));
X# define`009nowrap()`009(vms_reset_tt_char (_tty_ch, TT$M_WRAP, FALSE));
X# define`009brdcst()`009(vms_reset_tt_char (_tty_ch, TT$M_NOBRDCST, FALSE));
X# define`009nobrdcst()`009(vms_set_tt_char (_tty_ch, TT$M_NOBRDCST, FALSE));
X# define`009altypeahd()`009(vms_set_tt_char (_tty_ch, TT2$M_ALTYPAHD, TRUE));
V# define`009noaltypeahd()`009(vms_reset_tt_char (_tty_ch, TT2$M_ALTYPAHD, TRUE)
X);
X# endif VMS
X
X`009/* control modes */
X# define`009hupcl()`009`009( _tty.c_cflag |= HUPCL, stty(_tty_ch,&_tty) )
X# define`009nohupcl()`009( _tty.c_cflag &= ~HUPCL, stty(_tty_ch,&_tty) )
X# define`009hup()`009`009hupcl()
X# define`009nohup()`009`009nohupcl()
X# define`009clocal()`009( _tty.c_cflag |= CLOCAL, stty(_tty_ch,&_tty) )
X# define`009noclocal()`009( _tty.c_cflag &= ~CLOCAL, stty(_tty_ch,&_tty) )
V# define`009b50()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B50, stty(_
Xtty_ch,&_tty) )
V# define`009b75()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B75, stty(_
Xtty_ch,&_tty) )
V# define`009b110()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B110, stty
X(_tty_ch,&_tty) )
V# define`009b134()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B134, stty
X(_tty_ch,&_tty) )
V# define`009b150()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B150, stty
X(_tty_ch,&_tty) )
V# define`009b300()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B300, stty
X(_tty_ch,&_tty) )
V# define`009b600()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B600, stty
X(_tty_ch,&_tty) )
V# define`009b1200()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B1200, st
Xty(_tty_ch,&_tty) )
V# define`009b1800()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B1800, st
Xty(_tty_ch,&_tty) )
V# define`009b2400()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B2400, st
Xty(_tty_ch,&_tty) )
V# define`009b4800()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B4800, st
Xty(_tty_ch,&_tty) )
V# define`009b9600()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B9600, st
Xty(_tty_ch,&_tty) )
V# define`009bexta()`009`009( _tty.c_cflag &= ~CBAUD,  _tty.c_cflag |= B19200, s
Xtty(_tty_ch,&_tty) )
X
X`009/* input modes */
X# define`009cbreak()`009( _tty.c_iflag |= BRKINT, stty(_tty_ch,&_tty) )
X# define`009nocbreak()`009( _tty.c_iflag &= ~BRKINT, stty(_tty_ch,&_tty) )
X# define`009istrip()`009( _tty.c_iflag |= ISTRIP, stty(_tty_ch,&_tty) )
X# define`009noistrip()`009( _tty.c_iflag &= ~ISTRIP, stty(_tty_ch,&_tty) )
X# define`009ixon()`009`009( _tty.c_iflag |= IXON, stty(_tty_ch,&_tty) )
X# define`009noixon()`009( _tty.c_iflag &= ~IXON, stty(_tty_ch,&_tty) )
X# define`009ixoff()`009`009( _tty.c_iflag |= IXOFF, stty(_tty_ch,&_tty) )
X# define`009noixoff()`009( _tty.c_iflag &= ~IXOFF, stty(_tty_ch,&_tty) )
X# define`009inlcr()`009`009( _tty.c_iflag |= INLCR, stty(_tty_ch,&_tty) )
X# define`009noinlcr()`009( _tty.c_iflag &= ~INLCR, stty(_tty_ch,&_tty) )
X# define`009iuclc()`009`009( _tty.c_iflag |= IUCLC, stty(_tty_ch,&_tty) )
X# define`009noiuclc()`009( _tty.c_iflag &= ~IUCLC, stty(_tty_ch,&_tty) )
X/* nl() and nonl() take care of the other Ixxx flags. */
X
X`009/* output modes */
X# define`009olcuc()`009`009( _tty.c_oflag |= OLCUC, stty(_tty_ch,&_tty) )
X# define`009noolcuc()`009( _tty.c_oflag &= ~OLCUC, stty(_tty_ch,&_tty) )
X# define`009ocrnl()`009`009( _tty.c_oflag |= OCRNL, stty(_tty_ch,&_tty) )
X# define`009noocrnl()`009( _tty.c_oflag &= ~OCRNL, stty(_tty_ch,&_tty) )
X/* raw(), noraw(), nl() and nonl() take care of the other Oxxx flags. */
X
X`009/* local (line-discipline) modes */
X# define`009echo()`009`009( _tty.c_lflag |= ECHO, stty(_tty_ch,&_tty) )
X# define`009noecho()`009( _tty.c_lflag &= ~ECHO, stty(_tty_ch,&_tty) )
X
X#define VMSTERMIO_INCLUDED
X#endif
$ GoSub Convert_File
$ File_is="SYS_STRUCT.H"
$ Check_Sum_is=460077550
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X# ifndef SYS_STRUCT
X/*
X *`009Miscellaneous system structures.
X */
X
Vstruct item_list_struct`009`009`009`009`009/* Data structure for an item_list. 
X*/
X{`009short`009`009`009buff_len;
X`009short`009`009`009item_code;
X`009unsigned int`009`009buff_addr;
X`009unsigned int`009`009ret_len_addr;
X};
X
Xstruct iosb_struct`009`009`009`009`009/* Data structure for an iosb. */
X{`009short`009`009`009cond;
X`009union
X`009{   struct
X`009    {`009unsigned short`009count;
X`009`009unsigned int`009dev_dep;
X`009    } generic;
X`009    struct
X`009    {`009unsigned char`009t_speed;`009`009/* Transmit speed. */
X`009`009unsigned char`009r_speed;`009`009/* Receive speed. */
X`009`009unsigned char`009cr_fill;`009`009/* # of CR fill characters. */
X`009`009unsigned char`009lf_fill;`009`009/* # of LF fill characters. */
X`009`009unsigned char`009par_flags;`009`009/* Parity flags. */
X`009    } sense_mode;
X`009    struct
V`009    {`009unsigned short`009offset;`009`009`009/* Number of bytes up to term
Xinator. */
X`009`009unsigned short`009term;`009`009`009/* First character of terminator. */
X`009`009unsigned short`009term_size;`009`009/* Size of terminator. */
X`009    } read;
X`009    struct
X`009    {`009unsigned short`009count;`009`009`009/* Number of bytes written. */
X`009    } write;
X`009} variant;
X};
X
X# define`009SYS_STRUCT
X# endif
$ GoSub Convert_File
$ File_is="VMSTERMIO.H"
$ Check_Sum_is=1213670025
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X/*#ident "@(#)vmstermio.h  1.1 (Grass Valley Group) 6/3/87"*/
X#ifndef VMSTERMIO_INCLUDED
X
X#ifndef NCC
X#include`009<termio.h>
X#endif
X
X#ifndef __FILE
X#include`009<stdio.h>
X#endif
X
V`009/* Linked list of terminals controlled by this stuff and pointers to actual
X data areas. */
Xstruct vms_term_data
V{`009int`009`009`009fildes;`009`009/* File descriptor of terminal controlled by
X VMS termio. */
X`009FILE`009`009`009_iobuf;`009`009/* I/O buffer for file. */
V`009char`009`009`009active;`009`009/* This VMS data block is active (file hasn'
Xt been "close"d yet). */
V`009struct vmstermio`009*vmstermio;`009/* VMS termio settings for current termi
Xnal characteristics. */
V`009struct termio`009`009*termio;`009/* Termio settings for current terminal ch
Xaracteristics. */
V`009struct vms_term_data`009*next;`009`009/* Pointer to next terminal being con
Xtrolled. */
X};
X
X`009/* VMS termio data area. */
Xstruct vmstermio
X{`009unsigned short`009`009chan;`009`009/* Channel number for terminal. */
V`009struct char_buff_struct`009`009`009/* Sense/set mode characterstics buffer 
Xfor terminal. */
X`009{`009char`009`009`009class;`009`009/* Device class. */
X`009`009char`009`009`009type;`009`009/* Device type. */
X`009`009short`009`009`009page_width;`009/* Page width. */
V`009`009int`009`009`009term_char;`009/* Device dependent terminal characteristi
Xcs. (3 Bytes) */
X`009`009int`009`009`009term_char2;`009/* Additional dev. dep. term. char. */
X`009}`009`009`009char_buff;
V`009unsigned char`009`009baud;`009`009/* Input & output baud rate (must be the 
Xsame for unix ioctl). */
X};
X
X#define VMSTERMIO_INCLUDED
X#endif
$ GoSub Convert_File
$ File_is="GVG$MACRO_SUPPORT.MAR"
$ Check_Sum_is=1262094779
$ Copy SYS$Input VMS_SHAR_DUMMY.DUMMY
X`009.TITLE`009GVG$MACRO_SUPPORT
X;
X;`009`009This file holds entry points for routines that had to be
X;`009written in MACRO-11.  Wherever possible MACRO routines were avoided.
X;
X
X`009.entry`009va_call,`009^m<R2,R3,R4,R5,R6,R7,R8,R9,R10,R11>
X;
X;`009`009AP`009-> 2
X;`009`009AP+4`009-> Address of entry mask of routine to jump to.
X;`009`009AP+8`009-> Address of argument pointer for the routine.
X;
X`009movl`0094(AP), R0`009; Get the address of routine's entry mask.
X`009movl`0098(AP), R1`009; Get the address for the new argument pointer.
X`009movl`009R1, AP`009`009; Re-define the AP for the routine to be called.
X`009jmp`0092(R0)`009`009; Call the routine (account for the entry mask).
X`009.end
$ GoSub Convert_File
$ Exit
--------------- cut here ---------------
-- 
/* My opinions...               *	Tony Ivanov   MS-4B		*/
/* shared by my company?!...    *	Grass Valley Group, Inc.	*/
/* you've got to be kidding!    *	P.O. Box 1114			*/
/* "tony@gvgpvd.GVG.TEK.COM"    *	Grass Valley, CA  95945		*/

