|
|
Power 6/32 Unix version 1.2b
#define V_CMDI 0 /* send command */
#define V_CMDRI 1 /* let vioc process next cmd */
#define V_URESP 2 /* response to unsolicited command */
#define V_RESET 1 /* cause a vioc reset */
#define V_TRP 2 /* cause a vioc trap */
#define V_INTR 4 /* cause a vioc interrupt */
#define V_ERR 0x80 /* generic error flag */
#define V_BSY 0x80 /* generic busy flag */
#define V_UNBSY 0x80 /* not busy for unsolicited interrupt */
#define V_RDY 0xa /* Vioc ready after reset */
#define V_ALLOK 0x0a55 /* VIOC passed internal diagnostic */
#define V_BAD 0x02 /* VIOC failed internal diagnostic */
#define V_P1BAD 0x03 /* Connector panel #1 is bad */
#define V_P2BAD 0x03 /* Connector panel #2 is bad */
#define VSPEED 7 /* standard speed is 300 baud */
#define VCVECT 64 ; /* base vioc vector */
#define NVXPORTS 8 /* Total nbr of viocx terminal ports */
#define VXLEN 05 /* essentially the nbr of pending "reads" */
#define VIDENT 0x3FE /* vioc ident displacement into vblok */
#define VREADY 0x55 /* denotes no err in vioc self-initializaton */
#define FAULT 0x400
#define FECPNBR 1
#define V_REVNBR 040
#define VRESPLEN 0100
#define VCMDLEN 16
#define VC_IQLEN 16 /* Interrupt circular queue length */
#define VIOCX 0xa /* identifies viocx in v_ident */
#define SSPEED 13 /* standard speed 9600 bps */
#define MDMCTL 0x1004 /* auto modem control */
#define V_MAN 0203 /* man + DTR + RTS */
#define V_AUTO 0002 /* auto + DTR */
#define V_RTS 0001 /* assert RTS */
#define V_DISAB 0200 /* manual + isable DTR and RTS */
#define BRK_CHR 040
#define DCD_ON 020
#define DCD_OFF 010
#define CTS_ON 004
#define SILOBAS 0x800+VIOCBAS
#define NVIOCXLIN 16 /* nbr lines per vioc-x */
#define VSILTIM 10 /* silo timount value,10=100msec */
#define NVCXBUFS 12 /* number of command buffers */
#define LIDENT 0x0008 /* load ident, set int vectors */
#define LSILOA 0x0104 /* set silos */
#define XMITDTA 0x0200 /* transmit */
#define FDTATOX 0x8304 /* flush data */
#define EXMODEX 0x0404 /* xon xoff mode */
#define DXMODEX 0x0504 /* disable xon,xoff */
#define LPARAX 0x060a /* load params */
#define RPARALX 0x0704 /* request params from viocx */
#define RPARADX 0x0804 /* request params dma */
#define AUTOLP 0x0900 /* auto loop back /local echo */
#define PERROR 0x40
#define FERROR 0x80
#define RCVOVRN 0xc0
/*
* Data Structures
*/
struct vblok { /* Common buffer seen by HOST */
char v_vioc; /* type of interrupt + voic bsy flg */
char v_hdwre; /* trap, reset, or hard interrupt */
char v_vcbsy; /* command busy (set by host) */
char v_vcid; /* command id. */
short v_vcp0; /* command address, high byte (sent by HOST) */
short v_vcp1; /* command address, low byte (sent by HOST) */
short not_used;
short v_rsp; /* Offset to VIOC_BASE (ffx000) */
/* Respond buff. addr = (VIOC_BASE + v_rsp) */
char v_ustat; /* Unsolicited status */
char v_uqual; /* qualifies of unsolicited interrupt */
char v_usdata[0x42] ; /* unsolicited interrupt data */
short v_ident ; /* VIOC identifier */
/* denotes fault or ready after reset */
short v_dcd ; /* f2 bit mask for carr detect by port */
short v_cts ; /* f4 bit mask for cts by port */
};
#define CMDMAXLEN 10
struct cmd_inp /* Command input block */
{
short opcode;
char byte[CMDMAXLEN];
};
#define RESMAXLEN 100
struct cmd_res /* Command respond block */
{
char stat; /* Respond status */
char id; /* Identification code */
struct cmd_inp; /* Command input block */
char byte[RESMAXLEN];
};
#define BUFLEN 100
#define NVIOC 1
struct vbuf {
long cnt;
long nxt_c;
long nxt_fill;
char buf[BUFLEN];
};
struct vbuf vi_buf[NVIOC*16];
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.