V4/nsys/dmr/kl.c

Compare this file to the similar file:
Show the results in this format:

#
/*
 *   KL-11 driver
 */
#include "/sys/nsys/param.h"
#include "/sys/nsys/conf.h"
#include "/sys/nsys/user.h"
#include "/sys/nsys/tty.h"
#include "/sys/nsys/proc.h"

/* base address */
#define	KLADDR	0177560
#define	RDRENB	01

/* For now, only 1 KL allowed */
struct	tty kl11;

struct klregs {
	int klrcsr;
	int klrbuf;
	int kltcsr;
	int kltbuf;
}

klopen(dev, flag)
{

	kl11.t_quit = 0175;		/* DEC's "altmode" */
	kl11.t_intrup = 0177;		/* DEL */
	if (u.u_procp->p_ttyp == 0)
		u.u_procp->p_ttyp = &kl11;
	kl11.t_addr = KLADDR;
	kl11.t_flags = XTABS|LCASE|ECHO|CRMOD;
	KLADDR->klrcsr =| IENABLE|RDRENB;
	KLADDR->kltcsr =| IENABLE;
}

klclose(dev)
{
	wflushtty(&kl11);
}

klread(dev)
{
	ttread(&kl11);
}

klwrite(dev)
{
	ttwrite(&kl11);
}

klxint(dev)
{
	ttstart(&kl11);
	if (kl11.t_outq.c_cc <= TTLOWAT)
		wakeup(&kl11.t_outq);
}

klrint(dev)
{
	register int c;

	c = KLADDR->klrbuf;
	KLADDR->klrcsr =| RDRENB;
	ttyinput(c, &kl11);
}

klsgtty(dev, v)
int *v;
{
	if (v)
		v[2] = kl11.t_flags;
	else {
		wflushtty(&kl11);
		kl11.t_flags = u.u_arg[2];
	}
}