Research V5 development
[unix-history] / usr / sys / dmr / vt.c
CommitLineData
b74a9dc6
DR
1#
2/*
3 * Copyright 1973 Bell Telephone Laboratories Inc
4 */
5
6/*
7 * VT01 driver via DR11C to 11/20
8 */
9
10#include "../param.h"
11#include "../user.h"
12
13int vtflag;
14
15struct vtreg {
16 int csr;
17 int buf;
18};
19
20#define VTADDR 0167770
21#define RQINT 01
22#define BIENABL 040
23#define SEOF 0100000
24#define VTPRI 8
25
26vtopen(dev, flag)
27{
28 if (!flag)
29 u.u_error = ENXIO;
30 else
31 VTADDR->csr = BIENABL;
32}
33
34vtclose()
35{
36 VTADDR->buf = SEOF;
37 VTADDR->csr =| RQINT;
38}
39
40vtwrite()
41{
42 register int c;
43 int register count;
44
45 while ((c=cpass()) >= 0) {
46 retry:
47 for (count=0; count<10; count++)
48 if ((VTADDR->csr&RQINT)==0) {
49 VTADDR->buf = c&0377;
50 VTADDR->csr =| RQINT;
51 goto contin;
52 }
53 spl5();
54 if (VTADDR->csr&RQINT) {
55 vtflag++;
56 sleep(VTADDR, VTPRI);
57 }
58 spl0();
59 goto retry;
60 contin:;
61 }
62}
63
64vtintr()
65{
66 VTADDR->csr =& ~RQINT;
67 if (vtflag) {
68 vtflag = 0;
69 wakeup(VTADDR);
70 }
71}