vt.c

来自「UNIX版本6的源代码」· C语言 代码 · 共 71 行

C
71
字号
#/* *//* * VT01 driver via DR11C to 11/20 */#include "../param.h"#include "../user.h"int	vtflag;struct vtreg {	int	csr;	int	buf;};#define	VTADDR	0167770#define	RQINT	01#define	BIENABL	040#define	SEOF	0100000#define	VTPRI	8vtopen(dev, flag){	if (!flag)		u.u_error = ENXIO;	else		VTADDR->csr = BIENABL;}vtclose(){	VTADDR->buf = SEOF;	VTADDR->csr =| RQINT;}vtwrite(){	register int c;	int register count;	while ((c=cpass()) >= 0) {	    retry:		for (count=0; count<10; count++)			if ((VTADDR->csr&RQINT)==0) {				VTADDR->buf = c&0377;				VTADDR->csr =| RQINT;				goto contin;			}		spl5();		if (VTADDR->csr&RQINT) {			vtflag++;			sleep(VTADDR, VTPRI);		}		spl0();		goto retry;    contin:;	}}vtintr(){	VTADDR->csr =& ~RQINT;	if (vtflag) {		vtflag = 0;		wakeup(VTADDR);	}}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?