hcj@lzaz.ATT.COM (HC Johnson) (01/05/89)
This shar file fixes speed setting in the previously posted rs232 files for minix/st. ============================================================ echo extracting 'rs232_fix.cdif' sed -e 's/^X//' >rs232_fix.cdif <<'SHAR_EOF' X*** ../kernel/rstty.c Mon Jan 2 15:17:52 1989 X--- rstty.c Wed Jan 4 03:12:30 1989 X*************** X*** 549,564 **** X r = OK; X flags = 0; X erki = 0; X switch(m_ptr->TTY_REQUEST) { X case TIOCSETP: X /* Set erase, kill, and flags. */ X- baud = (char) ((m_ptr->TTY_SPEK >> 16) & BYTE); /* ispeed */ X tp->tty_baud = (char) ((m_ptr->TTY_SPEK >> 16) & BYTE); /* ispeed */ X tp->tty_erase = (char) ((m_ptr->TTY_SPEK >> 8) & BYTE); /* erase */ X tp->tty_kill = (char) ((m_ptr->TTY_SPEK >> 0) & BYTE); /* kill */ X tp->tty_mode = (int) m_ptr->TTY_FLAGS; /* mode word */ X- if(baud != tp->tty_baud) X- r = (*tp->tty_ioctl)(tp, m_ptr); X break; X X case TIOCSETC: X--- 549,562 ---- X r = OK; X flags = 0; X erki = 0; X+ baud = tp->tty_baud; /* save old */ X switch(m_ptr->TTY_REQUEST) { X case TIOCSETP: X /* Set erase, kill, and flags. */ X tp->tty_baud = (char) ((m_ptr->TTY_SPEK >> 16) & BYTE); /* ispeed */ X tp->tty_erase = (char) ((m_ptr->TTY_SPEK >> 8) & BYTE); /* erase */ X tp->tty_kill = (char) ((m_ptr->TTY_SPEK >> 0) & BYTE); /* kill */ X tp->tty_mode = (int) m_ptr->TTY_FLAGS; /* mode word */ X break; X X case TIOCSETC: X*************** X*** 613,629 **** X tp->tty_mode = (int) m_ptr->TTY_FLAGS; /* mode word */ X break; X case TCSBRK: /* drain output, send a break */ X- r = (*tp->tty_ioctl)(tp, m_ptr); X- break; X case TCXONC: /* start/stop output arg ==0 stop, ==1 start */ X- r = (*tp->tty_ioctl)(tp, m_ptr); X- break; X case TCFLSH: /* flush: 0==input 1==output 2=both */ X r = (*tp->tty_ioctl)(tp, m_ptr); X break; X X default: X r = EINVAL; X } X X /* Send the reply. */ X--- 611,634 ---- X tp->tty_mode = (int) m_ptr->TTY_FLAGS; /* mode word */ X break; X case TCSBRK: /* drain output, send a break */ X case TCXONC: /* start/stop output arg ==0 stop, ==1 start */ X case TCFLSH: /* flush: 0==input 1==output 2=both */ X+ case TCFLOW: /* set TOS flow to arg 0 = off, 1=xon/off 2=rts/cts */ X+ case TCFLOWON: /* set TOS flow XON to char == arg*/ X+ case TCFLOWOFF: /* set TOS flow XOFFto char == arg*/ X r = (*tp->tty_ioctl)(tp, m_ptr); X break; X+ case TCBAUD: /* set the baud; really reserved for internal use */ X+ r = (*tp->tty_ioctl)(tp, m_ptr); X+ tp->tty_baud = baud; X+ break; X X default: X r = EINVAL; X+ } X+ if(baud != tp->tty_baud) { X+ m_ptr->TTY_REQUEST = TCBAUD; X+ r = (*tp->tty_ioctl)(tp, m_ptr); X } X X /* Send the reply. */ X*** ../kernel/rs232.c Fri Dec 30 07:03:19 1988 X--- rs232.c Wed Jan 4 03:22:25 1989 X*************** X*** 140,153 **** X break; X } X return(OK); X } X } X X PUBLIC rs232charint() X { X /* Build and send the interrupt message. */ X- if(dbg_flag) X- printf("sia_rrdy charint msg n=%d\n\r",rs232ring.i_head - rs232ring.i_tail); X commes.m_type = TTY_CHAR_INT; X commes.ADDRESS = (char *)0 ; X interrupt(RS232, &commes); /* send message to tty task */ X--- 140,164 ---- X break; X } X return(OK); X+ case TCBAUD: /* change the baud */ X+ set_timer(tp->tty_baud); X+ break; X+ return(OK); X+ case TCFLOW: /* set TOS flow to arg 0 = off, 1=xon/off 2=rts/cts */ X+ rs232ring.rtscts = (int)m_ptr->TTY_SPEK; X+ return(OK); X+ case TCFLOWON: /* set TOS flow XON to char == arg*/ X+ rs232ring.xon_char = (int)m_ptr->TTY_SPEK; X+ return(OK); X+ case TCFLOWOFF: /* set TOS flow XOFFto char == arg*/ X+ rs232ring.xoff_char = (int)m_ptr->TTY_SPEK; X+ return(OK); X } X } X X PUBLIC rs232charint() X { X /* Build and send the interrupt message. */ X commes.m_type = TTY_CHAR_INT; X commes.ADDRESS = (char *)0 ; X interrupt(RS232, &commes); /* send message to tty task */ X*************** X*** 176,183 **** X X if (tp->tty_outleft == 0) X return(1); X- if(dbg_flag) X- printf("Start left=%d\n\r",tp->tty_outleft); X do { X if((r = rs232put( *(char*)tp->tty_phys)) == 0) X break; X--- 187,192 ---- X*** ../h/sgtty.h Wed Dec 28 05:06:36 1988 X--- sgtty.h Wed Jan 4 03:14:44 1989 X*************** X*** 73,77 **** X--- 73,81 ---- X #define TCXONC (TC_RS232|6) X #define TCFLSH (TC_RS232|7) X #define TCDSET (TC_RS232|32) X+ #define TCFLOW (TC_RS232|33) X+ #define TCFLOWON (TC_RS232|34) X+ #define TCFLOWOFF (TC_RS232|35) X+ #define TCBAUD (TC_RS232|99) /* used by rstty.c internally */ X #endif SHAR_EOF =============================================== Howard Johnson ATT-BL lzaz!hcj