tty.h

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 */ 7994 7995 7996 7997 7998 7999