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 - metrics - download

⟦2bdf80baa⟧ TextFile

    Length: 5977 (0x1759)
    Types: TextFile
    Notes: UNIX file
    Names: »icc.h«

Derivation

└─⟦a6ab2eb36⟧ Bits:30004042/kconfig3.imd SW95705I 386/ix Multi-user Release 1.2
└─⟦a6ab2eb36⟧ UNIX Filesystem
    └─⟦this⟧ »kc/new/usr/include/sys/icc.h« 

TextFile

/*
 * ICC Driver board interface definitions include file
 */

/*
 * Copyrighted as an unpublished work.
 * (c) Copyright 1986,1988 INTERACTIVE Systems Corporation
 * All rights reserved.
 *
 * RESTRICTED RIGHTS
 *
 * These programs are supplied under a license.  They may be used,
 * disclosed, and/or copied only as permitted under such license
 * agreement.  Any copy must contain the above copyright notice and
 * this restricted rights notice.  Use, copying, and/or disclosure
 * of the programs is strictly prohibited unless otherwise provided
 * in the license agreement.
 */

#ident "@(#)icc.h	1.2 - 88/02/02"
#ident "@(#) (c) Copyright INTERACTIVE Systems Corporation 1986,1988"

#if MPAT || AT386 || (SCO5 && M_I386)
#define far
#endif

#if MPAT
#include <sys/tty.h>
#include <sys/termio.h>
#elif AT386
#include <sys/tty.h>
#include <sys/termio.h>
#define	putq iccputq
#define getq iccgetq
#else /* IBM5 || SCO5 */
#ifndef faddr_t
#include <sys/types.h>
#endif
#include <sys/tty.h>
#endif /* IBM5 || SCO5 */
/*
 * board level includes for icc board
 */

/* registers */
#define ICCSTAT	0
#define ICCNTRL ICCSTAT
#define	SCC1	0x10
#define	SCC2	0x20
#define	SCC3	0x30
#define	ICCPAL	0x40
#define	ICCREF	0x50
#define	ATWIN	0x60

/* channel addresses */
#define	CH0	(SCC1+4)
#define	CH1	SCC1
#define	CH2	(SCC2+4)
#define	CH3	SCC2
#define	CH4	(SCC3+4)
#define	CH5	SCC3

#define	CMDP(base)	base
#define	DATAP(base)	(base+2)

/* status bits (ICCSTAT) */

#define	ICCINT1		0x01	/* SCC1 interrupt */
#define	ICCINT2		0x02	/* SCC2 interrupt */
#define	ICCINT3		0x04	/* SCC3 interrupt */
#define	ICCTOICC	0x08	/* interrupt from host */
#define	ICCINTREF	0x10	/* refresh timeout */
#define	ICCPERR		0x20	/* parity error	*/
#define	ICCTOHOST	0x40	/* interrupt to host */

/*
 * control bit addresses (ICCNTRL)
 *  memory mapped, 1 bit per address, only low order bit significant
 *  all bits cleared on reset
 */
#define	ICCROM		ICCNTRL		/* 1=ROM disabled in low 4K */
#define	ICCPAR		(ICCNTRL+4)	/* 1=parity enabled */
#define	ICCIHOST	(ICCNTRL+6)	/* 1=interrupt to host */
#define	ICCI186		(ICCNTRL+8)	/* 1=interrupt to 80186 (from host) */
#define ICCRESET	(ICCNTRL+10)	/* 1=board not reset */
#define	ICCRAMVIS	(ICCNTRL+14)	/* 1=RAM visible to host */
		/* hi memory control bits */
#define	ICCDMA		(ICCNTRL+2)	/* 1=DMA to host in hi memory */
					/* 0=ROM/RAM in hi memory */
#define	ICCNOROM	(ICCNTRL+12)	/* 1=RAM in hi memory */
					/* 0=ROM in hi memory */

#ifndef B9600
#define	B0	0
#define	B50	0000001
#define	B75	0000002
#define	B110	0000003
#define	B134	0000004
#define	B150	0000005
#define	B200	0000006
#define	B300	0000007
#define	B600	0000010
#define	B1200	0000011
#define	B1800	0000012
#define	B2400	0000013
#define	B4800	0000014
#define	B9600	0000015
#define	B19200	0000016
#define	B38400	0000017
#else
#ifndef	B19200
#define	B19200	EXTA
#define B38400	EXTB
#endif
#endif

/* host/slave mutual definitions */
#define QSIZE 1024

struct q {
	unsigned short get;
	unsigned short put;
	unsigned char buf[QSIZE];
	unsigned char stat[QSIZE];
};

struct aux {
	unsigned short addr;
	unsigned short flags;
	unsigned short local;
	unsigned short state;
	unsigned short hstate;
	unsigned short t_iflag;	/* copies of tty struct fields */
	unsigned short t_oflag;
	unsigned short t_cflag;
	unsigned short t_lflag;
	unsigned char t_cc[NCC];
	struct q inq;
	struct q outq;
#ifdef VPIX
#ifdef I186                             /* FOR COMPILING BOARD LEVEL CODE */
	struct ss {
		char ss_start;
		char ss_stop;
	} iccss;
#else
	struct termss iccss;	/* VPIX start & stop characters */
#endif
#else
	short pad;
#endif
	long iovflo;
};

/* state bit re-definitions */
#ifdef SCO5
#define AXON	EXTDLY
#else
#define AXON	EXTPROC
#endif
#define	AXOFF	TACT
#define	ABLOCK	CLESC
/* hstate bit re-definitions */
#define	OLOCK	TTIOW

/* flags bits */
#define	BNEXT	0x1000
#define	WPARAM	0x100
#define MODOPEN  0x80
#define	OUTOPEN  0x40
#define	PRTOPEN  0x20
#define NORMOPEN 0x10
#define WCLOSE	 0x01

#define	RQSIZE	32

struct req { unsigned short dev, code, val; };	/* request structure */

struct rq {				/* request q */
	unsigned short get;
	unsigned short put;
	struct req reqs[RQSIZE];
};

#define	NEXT(x,size)	((x < (size-1)) ? (x + 1) : 0)
#define QNEXT(x)	NEXT(x, QSIZE)
#define	RQNEXT(x)	NEXT(x, RQSIZE)
#ifdef M_KERNEL
typedef struct aux far *AUXP;
typedef struct q far *QP;
#define ME	0
#define OTHER	1
#define CLI()
#define STI()
#else
typedef struct aux *AUXP;
typedef	struct q *QP;
#define	ME	1
#define	OTHER	0
#if	MPAT || AT386
#define	CLI()	asm("	cli")
#define	STI()	asm("	sti")
#else	/* MPAT */
#define	CLI()	cli()
#define STI()	sti()
#endif	/* MPAT */
#endif

/* driver parameters */
#define CTRLDEV 255		/* special control device minor # */

/* minor device defines */
#ifdef ISMODEM
#undef ISMODEM
#endif
#define UNIT(d)		(d & 0x1f)
#define	MODES(d)	(d & 0xe0)
#define ISMODEM(d)	(d & MODOPEN)
#define	ISOUT(d)	(d & OUTOPEN)
#define	ISPRT(d)	(d & PRTOPEN)

/* request codes */
/* host-to-slave */
/*  from tty.h
/* #define	T_SUSPEND	2
/* #define	T_RESUME	3
/* #define	T_BLOCK		4
/* #define	T_UNBLOCK	5
/* #define	T_RFLUSH	6
/* #define	T_WFLUSH	7
/* #define	T_BREAK		8
/* #define	T_PARM		11
 */
#define OPEN	16
#define	MOPEN	17
#define	OOPEN	18
#define	CLOSE	19
			/* special debugging requests */
#define STATE	60	/* print port state */
#define	SLEEP	61	/* sleep timing test */
#define	SETICK	62	/* set tick length */
#define	DEBCPY	63	/* debug copy of 8000:0 to 7000:0 */

#define	NOWAIT	0x80	/* code bit indicating no wait or reply */

/* slave-to-host */
#define	INIT	64
#define DCDROP	65

#define	REPLY	NOWAIT	/* code bit indicating reply req */

/* slave exchange */
#define SLAVE_BASE 0x2000

struct	slave {
	short start;		/* general stuff */
	short heartbeat;
	char reset;
	char intflg;
	char prflg;
	char monflg;
	struct rq toslave;
	struct rq tohost;
	short aoff;		/* tty specific stuff */
	short aseg;
	long phystty;
	char pbuf[1];		/* off the end */
};