⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dn.c

📁 UNIX v6 源代码
💻 C
字号:
#/* *//* * DN-11 ACU interface */#include "../param.h"#include "../conf.h"#include "../user.h"struct dn {	struct {		char	dn_stat;		char	dn_reg;	} dn11[3];}#define	DNADDR	0175200#define	PWI	00200#define	ACR	00100#define	DLO	0020#define	DONE	0200#define	IENABLE	0100#define	DSS	040#define	PND	020#define	MENABLE	04#define	DPR	02#define	CRQ	01#define	DNPRI	5dnopen(dev, flag){	register struct dn *dp;	register int rdev;	rdev = dev.d_minor;	dp = &DNADDR->dn11[rdev];	if (dp->dn_reg&(PWI|DLO))		u.u_error = ENXIO;	else {		DNADDR->dn11[0].dn_stat =| MENABLE;		dp->dn_stat = IENABLE|MENABLE|CRQ;	}}dnclose(dev){	DNADDR->dn11[dev.d_minor].dn_stat =& MENABLE;}dnwrite(dev){	register struct dn *dp;	register c;	extern lbolt;	dp = &DNADDR->dn11[dev.d_minor];	for(;;) {		while ((dp->dn_stat&DONE)==0)			sleep(DNADDR, DNPRI);		dp->dn_stat =& ~DONE;	    contin:		if (dp->dn_reg&(PWI|ACR)) {			u.u_error = EIO;			return;		}		if (dp->dn_stat&DSS)			return;		c = 0;		if (u.u_count==0 || (dp->dn_stat&PND)==0 || (c=cpass())<0)			continue;		if (c=='-') {			sleep(&lbolt, DNPRI);			sleep(&lbolt, DNPRI);			goto contin;		}		dp->dn_reg = c-'0';		dp->dn_stat =| DPR;	}}dnint(dev){	wakeup(DNADDR);}

⌨️ 快捷键说明

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