7900: /*
7901:  * A clist structure is the head
7902:  * of a linked list queue of characters.
7903:  * The characters are stored in 4-word
7904:  * blocks containing a link and 6 characters.
7905:  * The routines getc and putc (m45.s or m40.s)
7906:  * manipulate these structures.
7907:  */
7908: struct clist
7909: {
7910:         int     c_cc;           /* character count */
7911:         int     c_cf;           /* pointer to first block */
7912:         int     c_cl;           /* pointer to last block */
7913: };
7914: /* ---------------------------       */
7915: 
7916: /*
7917:  * A tty structure is needed for
7918:  * each UNIX character device that
7919:  * is used for normal terminal IO.
7920:  * The routines in tty.c handle the
7921:  * common code associated with
7922:  * these structures.
7923:  * The definition and device dependent
7924:  * code is in each driver. (kl.c dc.c dh.c)
7925:  */
7926: struct tty
7927: {
7928:         struct  clist t_rawq;   /* input chars right off device */
7929:         struct  clist t_canq;   /* input chars after erase and kill */
7930:         struct  clist t_outq;   /* output list to device */
7931:         int     t_flags;        /* mode, settable by stty call */
7932:         int     *t_addr;        /* device address (register or startup fcn) */
7933: 
7934:         char    t_delct;        /* number of delimiters in raw q */
7935:         char    t_col;          /* printing column of device */
7936:         char    t_erase;        /* erase character */
7937:         char    t_kill;         /* kill character */
7938:         char    t_state;        /* internal state, not visible externally */
7939: 
7940:         char    t_char;         /* character temporary */
7941:         int     t_speeds;       /* output+input line speed */
7942:         int     t_dev;          /* device name */
7943: };
7944: /* ---------------------------       */
7945: 
7946: 
7947: char partab[];                  /* ASCII table: parity, character class */
7948: 
7949: 
7950: 
7951: #define TTIPRI  10
7952: #define TTOPRI  20
7953: 
7954: #define CERASE  '#'             /* default special characters */
7955: #define CEOT    004
7956: #define CKILL   '@'
7957: #define CQUIT   034             /* FS, cntl shift L */
7958: #define CINTR   0177            /* DEL */
7959: 
7960: /* limits */
7961: #define TTHIWAT 50
7962: #define TTLOWAT 30
7963: #define TTYHOG  256
7964: 
7965: /* modes */
7966: #define HUPCL   01
7967: #define XTABS   02
7968: #define LCASE   04
7969: #define ECHO    010
7970: #define CRMOD   020
7971: #define RAW     040
7972: #define ODDP    0100
7973: #define EVENP   0200
7974: #define NLDELAY 001400
7975: #define TBDELAY 006000
7976: #define CRDELAY 030000
7977: #define VTDELAY 040000
7978: 
7979: /* Hardware bits */
7980: #define DONE    0200
7981: #define IENABLE 0100
7982: 
7983: /* Internal state bits */
7984: #define TIMEOUT 01              /* Delay timeout in progress */
7985: #define WOPEN   02              /* Waiting for open to complete */
7986: 
7987: #define ISOPEN  04              /* Device is open */
7988: #define SSTART  010             /* Has special start routine at addr */
7989: 
7990: #define CARR_ON 020             /* Software copy of carrier-present */
7991: 
7992: #define BUSY    040             /* Output in progress */
7993: #define ASLEEP  0100            /* Wakeup when output done */