|
|
1.1 ! root 1: #include <jerq.h> ! 2: #include <queue.h> ! 3: #include <setup.h> ! 4: /*static*/ int dtr; ! 5: aciainit(speed) ! 6: char speed; ! 7: { ! 8: /* init the host side */ ! 9: int i; ! 10: ! 11: DUART->a_cmnd=RESET_RECV|DIS_TX|DIS_RX; ! 12: DUART->a_cmnd=RESET_TRANS; ! 13: DUART->a_cmnd=RESET_ERR; ! 14: DUART->a_cmnd=RESET_MR; ! 15: DUART->mr1_2a=CHAR_ERR|NO_PAR | CBITS8; ! 16: DUART->mr1_2a=NRML_MOD|ONEP000SB; ! 17: DUART->a_sr_csr=speed; ! 18: DUART->a_cmnd=ENB_TX|ENB_RX; /* enable TX and RX last */ ! 19: /* configure the output port */ ! 20: DUART->ip_opcr=0x70; ! 21: DUART->scc_ropbc=0xff; /* make sure the port is reset first */ ! 22: DUART->scc_sopbc=0x01; /* make sure DTR is on */ ! 23: if(VALSCREENCOLOR) ! 24: BonW(); ! 25: else ! 26: WonB(); ! 27: for(i=0; i<255; i++) ! 28: ; /*delay for stupid device */ ! 29: dtr=1; ! 30: } ! 31: rcvchar(){ ! 32: register c=qgetc(&RCVQUEUE); ! 33: if(c!=-1) ! 34: c&=0xFF; ! 35: return c; ! 36: } ! 37: sendchar(c){ ! 38: qputc(&OUTQUEUE, c); ! 39: aciatrint(); ! 40: } ! 41: aciatrint(){ ! 42: register sr, c; ! 43: sr=spl5(); ! 44: /* should check here for carrier fail */ ! 45: DUART->a_cmnd=ENB_TX; /* done here so flags are right */ ! 46: if(DUART->a_sr_csr&(XMT_EMT|XMT_RDY)){ ! 47: if((c=qgetc(&OUTQUEUE))==-1 || dtr==0) ! 48: DUART->a_cmnd=DIS_TX; /* forget it */ ! 49: else ! 50: DUART->a_data=c; /* send the char */ ! 51: } ! 52: splx(sr); ! 53: } ! 54: sendbreak(){ ! 55: register int sr,i; ! 56: sr=spl5(); ! 57: DUART->a_cmnd=(STRT_BRK|ENB_TX); ! 58: i= 0x27106; ! 59: while(--i>0) ! 60: ; ! 61: DUART->a_cmnd=(STOP_BRK|DIS_TX); ! 62: kbdinit(); ! 63: splx(sr); ! 64: } ! 65: dtrctl(flg) { ! 66: dtr=flg; ! 67: aciatrint(); ! 68: } ! 69: tstdcd() { ! 70: return((DUART->ip_opcr & 0x40) != 0); ! 71: } ! 72: aciapaws() ! 73: { ! 74: int i; ! 75: for(i=0 ; i<16; i++); ! 76: } ! 77: /* ! 78: * disconnect will drop the DTR line for approx. 1/2 second. ! 79: */ ! 80: disconnect() { ! 81: register long i, sr; ! 82: ! 83: if(dtr==0) ! 84: return; /* already being disconnected */ ! 85: sr=spl5(); ! 86: dtr=0; ! 87: DUART->scc_ropbc=0x01; /* disable DTR */ ! 88: i=0x30d48; ! 89: while(--i>0) ! 90: ; ! 91: DUART->scc_sopbc=0x01; /* Turn back on DTR */ ! 92: dtr=1; /* allow disconnects again */ ! 93: kbdinit(); ! 94: splx(sr); ! 95: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.