DataMuseum.dk

Presents historical artifacts from the history of:

Regnecentalen RC-900

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Regnecentalen RC-900

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download

⟦6511ba78c⟧ TextFile

    Length: 9900 (0x26ac)
    Types: TextFile
    Notes: UNIX file
    Names: »tci.h«

Derivation

└─⟦fdc69b24d⟧ Bits:30004152 SW95705I 386/ix Multi User Update 1
└─⟦fdc69b24d⟧ UNIX Filesystem
    └─ ⟦this⟧ »U1/new/usr/include/sys/tci.h« 

TextFile

/* 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			0x0040

#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		MS_DOSMODE		0x0400

#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;
};