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