|
|
DataMuseum.dkPresents historical artifacts from the history of: Regnecentalen RC-900 |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Regnecentalen RC-900 Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T U t
Length: 9872 (0x2690)
Types: TextFile
Notes: UNIX file
Names: »tci.h«
└─⟦22cab2c1b⟧ Bits:30004042/kcaddon.imd SW95705I 386/ix Multi-user Release 1.2
└─⟦22cab2c1b⟧ UNIX Filesystem
└─⟦this⟧ »KC/new/usr/include/sys/tci.h«
/* File: tci.h, TCI header declarations
*
* Revision History:
*
* 87.10.14 JCO Started.
* 88.11.06 JCO Changed to TCI v.2
*
*/
#define minor(x) (int)(x&0xFF)
#define DEB_DEV 0x01
#define DEB_INIT 0x02
#define DEB_INTR 0x04
#define DEB_OUT 0x08
#define DEB_IN 0x10
#define DEB_CMD 0x20
#define DEB_USER 0x40
#define DEB_ALL 0xff
/*
#define TDEBUG (DEB_INTR + DEB_IN + DEB_CMD + DEB_DEV)
*/
/* termio extention */
#define IFIELD 0x4000
#define ICONV 0x8000
#define OCRCL 0x0000
#define TCI_INIT 2
#define TCI_MASTER 3
#define CSP 2
#define true 1
#define false 0
struct TCI_msg_t {
unsigned char msg_unit;
unsigned char msg_gate;
short msg_d0;
unsigned short msg_cmd;
unsigned short msg_paroff;
unsigned short msg_prioff;
unsigned short msg_size;
unsigned short msg_boff;
short msg_d1;
short msg_d2[8];
};
struct head {
unsigned short hd_first;
unsigned short hd_last;
};
struct TCI_unit_t {
struct head ut_chain;
struct x_buf ut_xb;
struct TCI_msg_t ut_mes;
struct TCI_cmd_descr *ut_attn;
struct TCI_cmd_descr *ut_st_err;
caddr_t ut_window;
unsigned short ut_unit;
unsigned short ut_status;
};
#define ut_resp ut_chain.hd_first
#define ut_last ut_chain.hd_last
#define UT_MISSING 0x0001
#define UT_RESERVED 0x0002
#define UT_DROP 0x0004
#define UT_OK 0x0008
#define PARSIZE 0x200
struct TCI_cmd_descr {
unsigned short c_next;
unsigned char c_oper;
unsigned char c_chnl;
unsigned char c_result;
unsigned char c_unit;
unsigned short c_bufadr;
unsigned short c_size;
unsigned short c_count;
unsigned char c_mode;
unsigned char c_unit_no;
unsigned char c_state;
unsigned char c_prstatus;
};
#define C_BOARD_STATUS 0x00
#define C_OPEN 0x01
#define C_CLOSE 0x02
#define C_ATTN 0x0f
#define R_OK 0x00
#define R_NL 0x00
#define R_EOL 0x01
#define R_EOF 0x02
#define R_TCHAR 0x03
#define R_BUF_FULL 0x20
#define R_TERMINATED 0x21
#define R_TIMEOUT 0x22
#define R_INTR 0x40
#define R_QUIT 0x41
#define R_OFFLINE 0x42
#define R_CLOSED 0x43
#define R_NOT_PROCESSED 0x44
#define R_ONLINE 0x45
#define R_REGRETTED 0x48
#define R_SUSP 0x49
#define R_CHOST 0x4a
#define E_ILL_CMD 0x81
#define E_ILL_CHNL 0x82
#define E_ILL_BOARD_STATUS 0x83
#define E_UNUSED 0x84
#define E_NOT_OPEN 0x85
#define E_BUZY 0x87
#define E_ILL_STATUS 0x8c
#define E_ILL_BUF 0x90
#define SPECIFIC_ATTN 0x01
#define NON_SPECIFIC_ATTN 0x00
struct mode_cntrl {
unsigned short mc_iflag;
unsigned short mc_oflag;
unsigned short mc_cflag;
unsigned short mc_lflag;
unsigned short mc_intr;
unsigned short mc_quit;
unsigned short mc_erase;
unsigned short mc_kill;
unsigned short mc_eof;
unsigned short mc_nl;
unsigned short mc_eol;
unsigned short mc_susp;
unsigned short mc_bslsh;
unsigned short mc_chost;
unsigned short mc_timeout;
unsigned short mc_min_count;
unsigned short mc_max_count;
};
struct open_buf {
unsigned short ob_size;
unsigned char ob_mode[sizeof(struct mode_cntrl)];
unsigned char ob_type[10];
unsigned char ob_name[10];
};
struct timer_rec {
struct timer_rec *tr_lnk;
struct TCI_dev_descr *tr_dev;
unsigned short tr_cnt;
};
struct fifo_descr {
unsigned char *fb_get;
unsigned char *fb_put;
unsigned char *fb_top;
unsigned char *fb_base;
unsigned char fb_size;
unsigned char fb_getcnt;
unsigned char fb_putcnt;
unsigned char fb_state;
};
#define FB_STOP 0x01
#define IFIFO_SIZE 64
#define I_HM 40
#define I_LM 10
#define OFIFO_SIZE 32
#define O_HM 24
#define O_LM 8
struct TCI_dev_descr {
unsigned short d_state; /* 00 */
unsigned char d_use; /* 02 */
unsigned char d_ustate; /* 03 */
unsigned short d_event_msk; /* 04 */
unsigned short d_wait_msk; /* 06 */
unsigned short d_pid; /* 08 */
unsigned short d_mode; /* 0A */
unsigned short d_iostate; /* 0C */
unsigned char d_unit; /* 0E */
unsigned char d_devno; /* 0F */
unsigned char d_err; /* 10 */
unsigned char d_res; /* 11 */
unsigned char d_sinchar; /* 12 */
unsigned char d_tabs; /* 13 */
struct TCI_unit_t * d_tci_unit; /* 14 */
int (**d_casetab)(); /* 18 */
int (*d_echop)(); /* 1C */
int (*d_outproc)(); /* 20 */
int (*d_lproc)(); /* 24 */
int (*d_sigproc)(); /* 28 */
int (*d_xproc)(); /* 2C */
struct head d_cmds; /* 30 */
struct head d_in; /* 34 */
struct head d_out; /* 38 */
struct TCI_cmd_descr * d_stat_cmd; /* 3C */
char * d_outadr; /* 40 */
unsigned short d_outcnt; /* 44 */
/* 46 */
char * d_inadr; /* 48 */
unsigned short d_incnt; /* 4C */
unsigned short d_insiz; /* 4E */
unsigned short d_iflag; /* 50 */
unsigned short d_oflag; /* 52 */
unsigned short d_cflag; /* 54 */
unsigned short d_lflag; /* 56 */
unsigned short d_intr; /* 58 */
unsigned short d_quit; /* 5A */
unsigned short d_erase; /* 5C */
unsigned short d_kill; /* 5E */
unsigned short d_eof; /* 60 */
unsigned short d_nl; /* 62 */
unsigned short d_eol; /* 64 */
unsigned short d_susp; /* 66 */
unsigned short d_bslsh; /* 68 */
unsigned short d_chost; /* 6A */
unsigned short d_timeout; /* 6C */
unsigned short d_min_count; /* 6E */
unsigned short d_max_count; /* 70 */
/* 72 */
struct timer_rec d_timer_rec; /* 74 */
unsigned short d_tmode; /* 7E */
struct tncon d_tncon; /* 80 */
char d_type[10]; /* 90 */
unsigned short d_in_min; /* 9A */
unsigned short d_tx_cnt; /* 9C */
/* 9E */
struct fifo_descr d_ififo; /* A0 */
unsigned char d_ibuf[IFIFO_SIZE]; /* B4 */
struct fifo_descr d_ofifo; /* F4 */
unsigned char d_obuf[OFIFO_SIZE]; /* 108 */
int (*d_start_xmt)(); /* 128 */
int (*d_start_rec)(); /* 12C */
int (*d_start)(); /* 130 */
int (*d_stop)(); /* 134 */
int (*d_iproc)(); /* 138 */
unsigned short d_chmask; /* 13C */
/* 13E */
}; /* 140 */
#define IO_XMT 0x01
#define IO_REC 0x02
#define d_attn_unit d_tncon.tn_unit
#define d_appl d_tncon.tn_appl
#define d_attn_name d_tncon.tn_name
#define d_tim_lnk d_timer_rec.tr_lnk
#define d_tim_dev d_timer_rec.tr_dev
#define d_delay d_timer_rec.tr_cnt
#define d_in_cmds d_in.hd_first
#define d_out_cmds d_out.hd_first
#define d_chain d_cmds.hd_first
#define d_window d_tci_unit->ut_window
#define NO_UNIT 0x0ff
#define S_OPEN 0x001
#define S_UNUSED 0x000
#define SU_OPEN 0x001
#define SU_WOPEN 0x002
#define SU_BUSY 0x004
#define SU_OSLP 0x010
#define SU_ISLP 0x020
#define READ_PRI 29
#define WRITE_PRI 28
#define MS_ESLP 0x0002
#define MS_DFLT 0x0004
#define MS_ATTN 0x0008
#define MS_CANON 0x0100
#define MS_TIMEOUT 0x0200
#define TS_ACTIVE 0x0001
#define TS_TIMEOUT 0x0002
#define TS_FORCED 0x0004
#define TS_CHARTIMER 0x0008
#define TS_IDLETIMER 0x0010
#define TS_TERMINATE 0x0020
#define TS_DELAYED 0x0040
#define TS_WAITESC 0x0080
#define TS_ESC 0x0100
#define TS_BSLSH 0x0200
#define TS_IN_TIME (TS_WAITESC | TS_TIMEOUT | TS_CHARTIMER)
#define ES_OFFLINE 0x01
#define ES_ONLINE 0x02
#define ES_DROP 0x80
#define ES_SIGNAL 0x10
#define DS_IN 0x0001
#define DS_OUT 0x0002
#define DS_CNTRL 0x0010
#define DS_INBUF 0x0100
#define DS_IFIFO 0x0200
#define DS_INCHAR 0x0400
#define DS_SICH 0x0800
#define DS_OUTBUF 0x1000
#define DS_OFIFO 0x2000
#define DS_NOSUSP 0x4000
#define DS_OUTCHAR 0x8000
#define DS_IN_ACTV (DS_INBUF + DS_INCHAR)
#define DS_OUT_ACTV (DS_OUTBUF + DS_NOSUSP + DS_OFIFO)
#define DS_ACTIVE (DS_IN | DS_OUT | DS_CNTRL)
#define E_CMD 0x0001
#define E_ACTIVE 0x0080
#define E_ATTENTION 0x0100
#define E_TIMEOUT 0x0200
#define E_ERROR 0x1000
#define CH_SLASH 0x5c
#define CH_ESC 0x1b
#define CH_BS 0x08
#define CH_SPACE 0x20
#define CH_CR 0x0d
#define CH_LF 0x0a
#define CH_FF 0x0c
#define CH_TAB 0x09
#define CH_XOFF 0x13
#define CH_XON 0x11
struct dev_cfg {
unsigned short cfg_cflags;
unsigned char cfg_use;
unsigned char cfg_tabsiz;
unsigned char cfg_xon_time;
unsigned char cfg_modem;
unsigned char cfg_chset;
unsigned char cfg_reserved;
};
#define U_UNUSED 0x00
#define U_NEUTRAL 0x01
#define U_LOGIN 0x02
#define U_PRINTER 0x04
#define U_MODEM 0x08
#define U_COPYDEV 0x10
struct cfg_descr {
unsigned char cfg_chr0;
unsigned char cfg_chr1;
unsigned char cfg_chr2;
unsigned char cfg_chr3;
unsigned char cfg_chr4;
unsigned char cfg_chr5;
unsigned char cfg_chr6;
unsigned char cfg_chr7;
unsigned char cfg_no_of_devs;
unsigned char cfg_chr9;
unsigned char cfg_chr10;
unsigned char cfg_chr11;
unsigned char cfg_chr12;
unsigned char cfg_chr13;
unsigned char cfg_chr14;
unsigned char cfg_chr15;
struct dev_cfg cfg_devs[48];
};
#define CMD_OFF(x, y) (unsigned short) \
((unsigned int) x - (unsigned int) y)
#define CMD_PTR(x, y) (struct TCI_cmd_descr *) \
((unsigned int) y + (unsigned short) x)
#define TCI_PTR(x, y) (char *) \
((unsigned int) y + (unsigned short) x)
#define OPEN_PTR(x, y) (struct open_buf *) \
((unsigned int) y + (unsigned short) x)
\f
/* Basic constants */
#define NIL_PTR 0
#define NULL 0
#define CMD_NULL (struct TCI_cmd_descr *)NULL
#define TCI_MAX_CHNL 16
#define TCI_MAX_CMD 16
struct TCI_timer_rec {
struct timer_rec * t_lnk;
struct TCI_dev_descr * tr_dev;
unsigned short t_cnt;
};