Annotation of cci/d/ioex/udc.h, revision 1.1.1.1

1.1       root        1: 
                      2: /*
                      3:  *     Definitions for UDC CONTROLLER operations
                      4:  *
                      5: */
                      6: 
                      7: #define RETRY          200
                      8: #define DELAY(n)       { register N = 3*(n); while (--N > 0 ); }
                      9: 
                     10: /*     *****************
                     11:        Device parameters
                     12:        *****************
                     13: */
                     14: 
                     15: #define UDC_BLKLEN     256     /* Block length on UDC */
                     16: #define SECTSIZ        256     /* sector size */
                     17: #define BLKSIZ         1024    /* Logical block size */
                     18: 
                     19: /* Last block no on floppy <300k> */
                     20: #define F_MXBLK                (long)(300)     
                     21: 
                     22: /* Last block no on SMD <300Meg>   */
                     23: #define S_MXBLK                (long)(300000)  
                     24: 
                     25: /* Last block no on CMD, fixed <16meg> */
                     26: #define CF_MXBLK       (long)16000     
                     27: 
                     28: /* Last block no on CMD, removable <16meg>  */
                     29: #define CR_MXBLK       (long)16000     
                     30: 
                     31: /*     ******************
                     32:        IPC command macros
                     33:        ******************
                     34: */
                     35: #define IPC_RESET      *(char *)(IObase+0xf) = (char)0x00
                     36: #define IPC_INT                *(char *)(IObase+0xd) = (char)0x00
                     37: #define RD_MCSENT      (*(char *)(IObase+0x101))
                     38: #define WR_MCSENT(x)   (*(char *)(IObase+0x101))=(char)x
                     39: #define WR_IPCACK(x)   (*(char *)(IObase+0x183))=(char)x
                     40: #define RD_IPCACK      (*(char *)(IObase+0x183))
                     41: #define RD_IPCSENT     (*(char *)(IObase+0x181))
                     42: #define WR_IPCSENT(x)  (*(char *)(IObase+0x181))=(char)x
                     43: #define WR_MCACK(x)    (*(char *)(IObase+0x103))=(char)x
                     44: 
                     45: /*     *********************
                     46:        UDC packet structures
                     47:        *********************
                     48: */
                     49: 
                     50: struct UDPAC {         /* UDC command packet : 21 bytes */
                     51:        char stx  ;
                     52:        char pkid ;
                     53:        char pksiz ;    /* 21  bytes */
                     54:        char pkdev ;    /* device # */  
                     55:        char pkcmd ;    /* Command type */
                     56:        char pkfnc ;    /* Function type */
                     57:        short pkcnt ;   /* # of data blocks (1/4K each) */
                     58:        short pbsiz ;   /* Block length size (0x100 = 1/4K) */
                     59:        short pkmem[2]; /* Starting memory address  */
                     60:        short pcksm ;   /* Checksum (unused) */
                     61:        short psecno[2];        /* Starting sector # */
                     62:        char etx ;
                     63: };
                     64: 
                     65: struct UDTPAC {                /* UDC test packet : 15 bytes */
                     66:        char stx  ;
                     67:        char pkid ;
                     68:        char pksiz ;    /* 15 bytes */
                     69:        char pkdev ;    /* device # */  
                     70:        char pkcmd ;    /* Command type */
                     71:        char pkfnc ;    /* Function type */
                     72:        short pkcnt ;   /* # of data blocks (1/4K each) */
                     73:        short pbsiz ;   /* Block length size (0x100 = 1/4K) */
                     74:        long psno ;     /* Starting sector # */
                     75:        char endt ;
                     76: };
                     77:  
                     78: struct UDSPAC {                /* UDC status packet : 9_byte format */
                     79:        char stx;
                     80:        char id;
                     81:        char siz;       /* 9 bytes */
                     82:        char dev;       /* device # */  
                     83:        char scmd;      /* Command type */
                     84:        char stype ;    /* Status type */
                     85:        short stat ;    /* Status code */
                     86:        char etxt ;
                     87: }; 
                     88: 
                     89: 
                     90: #define IPC_PCK                (IObase+0x185)  /* Base address of IPC packet */
                     91: #define MC_PCK         (IObase+0x105)  /* Base address of CPU2 packet */
                     92: 
                     93: #define READY  0
                     94: #define NUNIT  8               /* number of units per controller */
                     95: #define NUDDRV 5               /* number of drive types supported */
                     96: #define        DK_N    1               /* Monitoring device bit */
                     97: 
                     98: #define        PKID  0x187             /* packet id */
                     99: #define        PKLEN 0x189             /* packet length */
                    100: #define        PKDEV 0x18b             /* device # */
                    101: #define        PKCMD 0x18d             /* command type */
                    102: #define        PKSTT 0x18f             /* status type */
                    103: #define STAT1 0x191            /* i/o status result offset */
                    104: #define STAT2 0x193
                    105: #define DEVSTAT1 0x195
                    106: #define DEVSTAT2 0x197
                    107: 
                    108: #define UDREAD                 (char)0x10
                    109: #define UDWTRY                 (char)0x01      /* read with retry */
                    110: 
                    111: #define UDWRITE        (char)0x20
                    112: #define UDWCRC         (char)0x01      /* write sectors and check CRC */
                    113: #define UDWSECT        (char)0x02      /* write sectors */
                    114: #define UDWCMP         (char)0x03      /* write with compare */
                    115: 
                    116: #define UDCTL          (char)0x40      /* UDC Control command */
                    117: #define        FORMAT          (char)0x07      /* Format with retry */
                    118: 
                    119: #define UDTEST         (char)0x30
                    120: #define UDSTAT         (char)0x02      /* Test status */
                    121: #define UDSTST         (char)0xff      /* self test  */
                    122: 
                    123: #define DEVRDY 0x80    /* device ready bit in status byte */
                    124: 
                    125: #define RETRANS                (char)0x15      /* Retransmit packet */
                    126: #define PCK_OK         (char)0x6       /* Packet O.K   */
                    127: 
                    128: struct dev_parblk {
                    129:        char devno;
                    130:        short secsiz;
                    131:        long maxblk;
                    132:        short from;
                    133:        short to;
                    134:        };
                    135: 
                    136: #define CACHE_SZ       8
                    137: struct cache {
                    138:        short hdr;
                    139:        short s_blk;
                    140:        short e_blk;
                    141:        char buf[1024*CACHE_SZ];
                    142:        };
                    143: 
                    144: 
                    145: /*
                    146:        *************************
                    147:        UDC CONTROLLER PARAMETERS
                    148:        *************************
                    149: */
                    150: #define IOBASE         0xff000000
                    151: #define UBASE          0x00ff0000      /* Base of share memory */
                    152: #define UDCVEC         0xff            /* Vector no. of UDC */
                    153: 
                    154: #define SMD            7
                    155: #define CMD_F          0               /* Fixed head portion */
                    156: #define CMD_R          1               /* Cartrige portion */
                    157: #define FLOPPY0                4               /* Just guess !! */
                    158: #define FLOPPY1                5               /* Just guess !! */
                    159: 
                    160: #define        INVL_CMD        writes("\ninvalid command\n")
                    161: #define NO_DRIVES      5
                    162: #define READ           1
                    163: #define WRITE          2
                    164: 

unix.superglobalmegacorp.com

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