|
|
1.1 ! root 1: #define VIOC_X 1 ! 2: #define VIOC_B 2 ! 3: ! 4: #define V_CMDI 0 /* send command */ ! 5: #define V_CMDRI 1 /* let vioc process next cmd */ ! 6: #define V_URESP 2 /* response to unsolicited command */ ! 7: #define V_RESET 1 /* cause a vioc reset */ ! 8: #define V_TRP 2 /* cause a vioc trap */ ! 9: #define V_INTR 4 /* cause a vioc interrupt */ ! 10: #define V_ERR 0x80 /* generic error flag */ ! 11: #define C_ERR 0xf000 /* Command error mask */ ! 12: #define V_BSY 0x80 /* generic busy flag */ ! 13: #define V_UNBSY 0x80 /* not busy for unsolicited interrupt */ ! 14: ! 15: #define V_RDY 0xa /* Vioc ready after reset */ ! 16: #define V_ALLOK 0x55 /* VIOC passed internal diagnostic */ ! 17: #define V_BAD 0x02 /* VIOC failed internal diagnostic */ ! 18: #define V_P1BAD 0x03 /* Connector panel #1 is bad */ ! 19: #define V_P2BAD 0x03 /* Connector panel #2 is bad */ ! 20: ! 21: #define VSPEED 7 /* standard speed is 300 baud */ ! 22: #define VCVECT 64 ; /* base vioc vector */ ! 23: ! 24: #define NVXPORTS 8 /* Total nbr of viocx terminal ports */ ! 25: #define VXLEN 05 /* essentially the nbr of pending "reads" */ ! 26: #define VIDENT 0x3FE /* vioc ident displacement into vblok */ ! 27: #define VREADY 0x55 /* denotes no err in vioc self-initializaton */ ! 28: #define FAULT 0x400 ! 29: #define FECPNBR 1 ! 30: #define V_REVNBR 040 ! 31: ! 32: #define VRESPLEN 0100 ! 33: #define VCMDLEN 16 ! 34: #define VC_IQLEN 16 /* Interrupt circular queue length */ ! 35: ! 36: #define VIOCX 0xa /* identifies viocx in v_ident */ ! 37: #define SSPEED 13 /* standard speed 9600 bps */ ! 38: #define MDMCTL 0x1000 /* modem control for port */ ! 39: #define V_MAN 0x83 /* man + DTR + RTS */ ! 40: #define V_AUTO 0x02 /* auto + DTR */ ! 41: #define V_RTS 0x01 /* assert RTS */ ! 42: #define V_DISAB 0x80 /* manual + disable DTR and RTS */ ! 43: ! 44: #define BRK_CHR 040 ! 45: #define DCD_ON 020 ! 46: #define DCD_OFF 010 ! 47: #define CTS_ON 004 ! 48: ! 49: #define SILOBAS 0x800+VIOCBAS ! 50: #define NVIOCXLIN 16 /* nbr lines per vioc-x */ ! 51: #define VSILTIM 10 /* silo timount value,10=100msec */ ! 52: #define NVCXBUFS 16 /* number of command buffers */ ! 53: #define LIDENT 0x0000 /* load ident, set int vectors */ ! 54: #define LSILOA 0x0100 /* set silos */ ! 55: #define XMITDTA 0x0200 /* transmit */ ! 56: #define FDTATOX 0x0300 /* flush data */ ! 57: #define XMITIMM 0x0400 /* Transmit immediate */ ! 58: #define LPAR_N 0x0500 /* Load new parameter */ ! 59: #define DXMODEX 0x0504 /* disable xon,xoff */ ! 60: #define LPARAX 0x0600 /* load params */ ! 61: #define RPARALX 0x0700 /* request params from viocx */ ! 62: #define AUTOLP 0x0900 /* auto loop back /local echo */ ! 63: #define SNDBRKX 0x0c00 /* send a break command to vioc */ ! 64: #define PERROR 0x40 ! 65: #define FERROR 0x80 ! 66: #define RCVOVRN 0xc0 ! 67: #define BUFLEN 100 ! 68: #define NVIOC 16 /* max no of VIOC being tested */ ! 69: #define RESMAXLEN 100 ! 70: #define CMDMAXLEN 10 ! 71: ! 72: /* ! 73: * Data Structures ! 74: */ ! 75: ! 76: struct vblok { /* Common buffer seen by HOST */ ! 77: char v_vioc; /* type of interrupt + voic bsy flg */ ! 78: char v_hdwre; /* trap, reset, or hard interrupt */ ! 79: ! 80: char v_vcbsy; /* command busy (set by host) */ ! 81: char v_vcid; /* command id. */ ! 82: ! 83: short v_vcp0; /* command address, high byte (sent by HOST) */ ! 84: short v_vcp1; /* command address, low byte (sent by HOST) */ ! 85: ! 86: short not_used; ! 87: short v_rsp; /* Offset to VIOC_BASE (ffx000) */ ! 88: /* Respond buff. addr = (VIOC_BASE + v_rsp) */ ! 89: ! 90: char v_ustat; /* Unsolicited status */ ! 91: char v_uqual; /* qualifies of unsolicited interrupt */ ! 92: ! 93: char v_usdata[0x3E] ; /* unsolicited interrupt data */ ! 94: ! 95: short xmtsiz; /* Max. Xmit block size; 0 = 1 byte */ ! 96: short rcvsilo; /* Max rcv silo char no. (1 = 1 byte */ ! 97: ! 98: char v_ident; /* VIOC identifier */ ! 99: char v_fault; /* denotes fault or ready after reset */ ! 100: ! 101: short v_dcd; /* f2 bit mask for carr detect by port */ ! 102: short v_cts; /* f4 bit mask for cts by port */ ! 103: }; ! 104: ! 105: struct cmd_inp /* Command input block */ ! 106: { ! 107: short opcode; ! 108: char byte[CMDMAXLEN]; ! 109: }; ! 110: ! 111: struct cmd_res /* Command respond block */ ! 112: { ! 113: char stat; /* Respond status */ ! 114: char id; /* Identification code */ ! 115: struct cmd_inp; /* Command input block */ ! 116: char byte[RESMAXLEN]; ! 117: }; ! 118: ! 119: struct vbuf { ! 120: long cnt; /* no. of chars in buffer */ ! 121: long nxt_c; /* reader's pointer */ ! 122: long nxt_fill; /* writer's pointer */ ! 123: char buf[BUFLEN];/* and the buffer itself */ ! 124: }; ! 125: ! 126: 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.