--- xinu/sys/ttycntl.c 2018/04/24 17:39:04 1.1.1.1 +++ xinu/sys/ttycntl.c 2018/04/24 17:39:50 1.1.1.2 @@ -4,33 +4,46 @@ #include #include #include -#include + +/* set up macros for appropriate SLU as spec. by SLUCHIP: + if SLUCHIP==6850, #include slu6850.h, #define TTYCNTL ttycntl6850, etc. + if SLUCHIP==7201, #include slu7201.h, #define TTYCNTL ttycntl7201, etc. + if SLUCHIP undef.,#include slu.h, #define TTYCNTL ttycntl (orig. case) + similarly sluaccess.h, other TTY fns */ +#include /*------------------------------------------------------------------------ * ttycntl - control a tty device by setting modes *------------------------------------------------------------------------ */ -ttycntl(devptr, func) -struct devsw *devptr; -int func; +TTYCNTL(devptr, func, addr) + struct devsw *devptr; + int func; + char *addr; { register struct tty *ttyp; + register struct csr *cptr; char ch; - PStype ps; + +#ifdef DEBUG + dotrace("ttycntl", &devptr, 3); +#endif ttyp = &tty[devptr->dvminor]; + + cptr = (struct csr *)devptr->dvcsr; switch ( func ) { case TCSETBRK: - ttyp->ioaddr->ctstat |= SLUTBREAK; + slusetbrk(cptr); break; case TCRSTBRK: - ttyp->ioaddr->ctstat &= ~SLUTBREAK; + slurstbrk(cptr); break; case TCNEXTC: - disable(ps); + disable(); wait(ttyp->isem); ch = ttyp->ibuff[ttyp->itail]; - restore(ps); + restore(); signal(ttyp->isem); return(ch); case TCMODER: @@ -50,13 +63,6 @@ int func; break; case TCICHARS: return(scount(ttyp->isem)); - case TCINT: - ttyp->iintr = TRUE; - ttyp->iintpid = getpid(); - break; - case TCNOINT: - ttyp->iintr = FALSE; - break; default: return(SYSERR); }