Annotation of cci/sys/bsc/vioc.h, revision 1.1.1.1

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        VCVECT  0x40            /* base vioc vector */
                     13: 
                     14: #define        VBAS(x)  ( (struct vblok *)(VIOCBAS[x]) )
                     15: 
                     16: #define        NVIOCX NVX              /* nbr of viocx's - defined by config in vx.h */
                     17: #define NVXPORTS 16*NVIOCX     /* Total nbr of viocx terminal ports */
                     18: #define NVCXBUFS 16*3          /* 3 bufs per port per viocx */
                     19: #define        VREADY 0x55             /* denotes no err in vioc self-initializaton */
                     20: #define PVIOCX 0x0A            /* old connector panel vioc-x */
                     21: #define VIOCX  0x0B            /* new (modular) connector panel vioc-x */
                     22: #define        NPVIOCX 0x1A            /* new pviocx */
                     23: #define        NWVIOCX 0x1B            /* new viocx */
                     24: 
                     25: #include "vbsc.h"
                     26: #if NVBSC > 0
                     27: #define VIOCB  0x0C            /* bi-sync panel */
                     28: #define NWVIOCB 0x1C           /* new vioc-b */
                     29: #define BISYNC 0x1              /* flag for BISYNC port */
                     30: #endif
                     31: 
                     32: #define        V_NEW   1               /* NPVIOCX | NVIOCX */
                     33: #define        V_OLD   0               /* PVIOCX | VIOCX */
                     34: /* Modem Control flags */
                     35: #define VMOD_ON 1
                     36: #define VMOD_OFF 0
                     37: 
                     38: #define VRESPLEN 12
                     39: #define VCMDLEN 64
                     40: #define VC_IQLEN 16                    /* Interrupt circular queue length */
                     41: #define VC_CMDBUFL NVCXBUFS            /* circular cmd (to exec) queue len*/
                     42: 
                     43: #define SSPEED 13              /* standard speed 9600 bps */
                     44: 
                     45: #define V_ENAB 0002    /* auto + DTR */
                     46: #define V_DISAB        0000    /* auto + disable DTR */
                     47: 
                     48: #define BRK_CHR        040
                     49: #define DCD_ON 020
                     50: #define DCD_OFF        010
                     51: #define        CTS_ON  004
                     52: #define DSR_ON 0200    /* modem signal states for bisync */
                     53: #define DSR_OFF 0100
                     54: #define DSR_CHG        (DSR_ON | DSR_OFF)
                     55: 
                     56: #define SILOBAS 0x800
                     57: /* Command Operation Codes */
                     58: #define LIDENT 0x0000          /* load ident, set int vectors */
                     59: #define XMITDTA        0x0200          /* transmit */
                     60: #define XMITIMM        0x0400          /* xmit immediate */
                     61: #define FDTATOX        0x0300          /* flush data */
                     62: #define        LPARAX  0x0600          /* load params */
                     63: #define SNDBRKX        0x0C00          /* send break to port */
                     64: #define MDMCTL 0x1000          /* auto modem control */
                     65: 
                     66: #define PERROR 0x40
                     67: #define FERROR 0x80
                     68: #define RCVOVRN        0xc0
                     69: 
                     70: /*
                     71:  * Data Structures
                     72:  */
                     73: 
                     74: struct vblok   {               /* command sent to vioc  */
                     75:        char    v_vioc;         /*  0 type of interrupt + voic bsy flg */
                     76:        char    v_hdwre;        /*  1 trap, reset, or hard interrupt */
                     77:        char    v_vcbsy;        /*  2 command busy (set by host) */
                     78:        char    v_vcid;         /*  3 command id. */
                     79:        short   v_vcp[2];       /*  4 command pointer (sent by host) */
                     80:        short   v_unused;       /*  8 unused */
                     81:        short   v_rspoff;       /*  a offset into vblock for response buf */
                     82:        char    v_ustat;        /*  c status */
                     83:        char    v_uqual;        /*  d qualifies the interrupt */
                     84:        char    v_usdata[0x3E]; /*  e unsolicited interrupt data */
                     85:        short   v_maxxmt ;      /* 4C max xmit block size */
                     86:        short   v_maxsilo ;     /* 4E max silo size */
                     87:        char    v_ident ;       /* 50 identifies type of vioc */
                     88:        char    v_fault ;       /* 51 denotes fault or ready after reset */
                     89:        short   v_dcd ;         /* 52 bit mask for carr detect by port */
                     90:        short   v_cts ;         /* 54 bit mask for cts by port */
                     91:        short   v_dsr;          /* 56 bit mask for dsr by port */
                     92:        short   v_secrec;       /* 58 bit mask for secondary receive */
                     93:        short   v_badport;      /* 5a bit mask of failed ports */
                     94:        char    v_portyp[16];   /* 5c type of each port */
                     95: } ;
                     96: 
                     97: struct vcmds   {
                     98:        caddr_t v_curcmd[VCMDLEN] ;     /* cmds being executed */
                     99:        int     v_fill ;                /* circular fill index */
                    100:        int     v_empty ;               /* circular empty index */
                    101:        caddr_t cmdbuf[VC_CMDBUFL] ;    /* circular cmd (to exec) queue */
                    102:        int     v_itrfill ;             /* circular intr issue queue fill */
                    103:        int     v_itrempt ;             /* circular intr issue queue empty */
                    104:        short   v_itrqueu[VC_IQLEN] ;   /* circular intr issue queue */
                    105: } ;
                    106: 
                    107: struct vxcmd   {
                    108:        struct  vxcmd   *c_fwd ;
                    109:        short   cmd ;
                    110:        char    par[58] ;
                    111: } ;
                    112: 
                    113: struct vxmit   {
                    114:        char    line ;
                    115:        char    bcount ;
                    116:        char    ostream[4] ;/* *********** */
                    117: } ;
                    118: /* should be sizeof(struct vxmit), but has alignment problems */
                    119: #define sizvxmit 6
                    120: 
                    121: struct vcx     {
                    122:        char    v_loport ;      /* low port nbr */
                    123:        char    v_hiport ;      /* high port nbr */
                    124:        short   v_nbr ;         /* viocx number */
                    125:        short   v_silosiz ;     /* silo size */
                    126:        short   v_vers ;        /* vioc/pvioc version */
                    127:        char    v_actflg ;      /* active command */
                    128:        char    v_xmtcnt ;      /* xmit commands pending */
                    129:        char    v_actport[16] ; /* act flag per port per port */
                    130:        short   v_brkreq ;      /* send break requests pending */
                    131:        struct  vxcmd   *vx_avail ;
                    132:        struct  vxcmd   *vx_build ;
                    133:        struct  vxcmd   vx_lst[NVCXBUFS] ;
                    134: };
                    135: 
                    136: #ifdef KERNEL
                    137: caddr_t VIOCBAS[NVIOCX];       /* base I/O addr */
                    138: #define vpanic(x) printf("%s\n", x)
                    139: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.