|
|
1.1 ! root 1: /* vcuinit.c - vcuinit */ ! 2: ! 3: #include <conf.h> ! 4: #include <kernel.h> ! 5: #include <proc.h> ! 6: #include <tty.h> ! 7: #include <io.h> ! 8: #include <vcu.h> ! 9: #include <procreg.h> ! 10: ! 11: /*------------------------------------------------------------------------ ! 12: * vcuinit - initialize buffers and modes for a vax console device ! 13: *------------------------------------------------------------------------ ! 14: */ ! 15: vcuinit(devptr) ! 16: struct devsw *devptr; ! 17: { ! 18: register struct tty *iptr; ! 19: int junk, isconsole; ! 20: ! 21: /* set up interrupt vector and interrupt dispatch table */ ! 22: ! 23: iptr = &tty[devptr->dvminor]; ! 24: iosetvec(devptr->dvnum, iptr, iptr); ! 25: ! 26: devptr->dvioblk = (char *)iptr; /* fill tty control blk */ ! 27: isconsole = (devptr->dvnum == CONSOLE); /* make console cooked */ ! 28: iptr->ioaddr=(struct csr *)devptr->dvcsr;/* not necessary */ ! 29: iptr->ihead = iptr->itail = 0; /* empty input queue */ ! 30: iptr->isem = screate(0); /* chars. read so far=0 */ ! 31: iptr->osem = screate(OBUFLEN); /* buffer available=all */ ! 32: iptr->odsend = 0; /* sends delayed so far */ ! 33: iptr->ohead = iptr->otail = 0; /* output queue empty */ ! 34: iptr->ehead = iptr->etail = 0; /* echo queue empty */ ! 35: iptr->imode = (isconsole ? IMCOOKED : IMRAW); ! 36: iptr->iecho = iptr->evis = isconsole; /* echo console input */ ! 37: iptr->ierase = iptr->ieback = isconsole;/* console honors erase */ ! 38: iptr->ierasec = BACKSP; /* using ^h */ ! 39: iptr->ecrlf = iptr->icrlf = isconsole; /* map RETURN on input */ ! 40: iptr->ocrlf = iptr->oflow = isconsole; /* map RETURN on output */ ! 41: iptr->ieof = iptr->ikill = isconsole; /* set line kill=KILLCH */ ! 42: iptr->iintr = FALSE; ! 43: iptr->iintrc = INTRCH; ! 44: iptr->iintpid = BADPID; ! 45: iptr->ikillc = KILLCH; ! 46: iptr->ieofc = EOFC; ! 47: iptr->oheld = FALSE; ! 48: iptr->ostart = STRTCH; ! 49: iptr->ostop = STOPCH; ! 50: iptr->icursor = 0; ! 51: iptr->ifullc = TFULLC; ! 52: junk = mfpr(RXDB); /* clear receiver */ ! 53: mtpr(VCURXCSENBL, RXCS); /* enable in intrpts*/ ! 54: mtpr(VCUTXCSDSBL, TXCS); /* disable out " */ ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.