	= sys$qiow(0, tt_chan, function,
				&iosb, NULL, 0,
				charbuf, nchar, 0,
				&termin_mask, NULL, 0);

	if (status == SS$_TIMEOUT || iosb.status == SS$_TIMEOUT)
		return(SS$_TIMEOUT);
	else if (status != SS$_NORMAL || iosb.status != SS$_NORMAL)
		error("RAW_READ:  read QIO error return.\n", TRUE);

	return((int)*charbuf);
	}

raw_write(c)
char	c;
	{
/*
 *	Writes a character to the terminal without echoing or
 *	interpretation.
 */
	int			status;
	struct	tt_io_iosb	iosb;

	if (tt_chan == -1)
		assign_channel();

	status	= sys$qiow(0, tt_chan,
			IO$_WRITEVBLK | IO$M_CANCTRLO | IO$M_NOFORMAT,
			&iosb, NULL, 0,
			&c, 1, 0, 0, 0, 0);

	if (status != SS$_NORMAL || iosb.status != SS$_NORMAL)
		error("RAW_WRITE:  write QIO error return.\n", TRUE);

	return;
	}

stty(tt_characteristics)
struct	tt_info	*tt_characteristics;
	{
/*
 *	Sets terminal information from VMS.
 */
	short			*f_ptr, *p_ptr, *s_ptr;
	int			status;
	struct	tt_mode_iosb	iosb;

	if (tt_chan == -1)
