1*26284Skarels /* @(#)if_hdhreg.h 6.3 (Berkeley) 02/20/86 */ 224434Skarels 324434Skarels 424434Skarels /* $Header$ */ 524434Skarels 624434Skarels /* 724434Skarels * ACC IF-11/HDH interface 824434Skarels */ 924434Skarels 1024434Skarels struct hdhregs { /* device registers */ 1124434Skarels u_short csr; /* control and status register */ 1224434Skarels u_char iochn; /* logical channel */ 1324434Skarels u_char ioadx; /* address extension (A16,A17) */ 1424434Skarels u_short ioadl; /* buffer address (A0-A15) */ 1524434Skarels u_short iocnt; /* byte count */ 1624434Skarels u_char iofcn; /* UMC funciton code */ 1724434Skarels u_char iosbf; /* UMC subfunction code */ 1824434Skarels u_char ioini; /* comm regs valid flag */ 1924434Skarels u_char staack; /* interrupt acknowledge flag */ 2024434Skarels u_char ionmi; /* NMI routine active flag */ 2124434Skarels u_char ioxfrg; /* UMR transfer grant flag */ 2224434Skarels u_char stachn; /* interrupt channel number */ 2324434Skarels u_char statyp; /* interrupt type code */ 2424434Skarels u_char stacc; /* completion function code */ 2524434Skarels u_char stacs; /* completion subfunction code */ 2624434Skarels u_short stacnt; /* completion byte count */ 2724434Skarels }; 2824434Skarels 2924434Skarels /* defines for CSR */ 3024434Skarels 3124434Skarels #define HDH_UER 0100000 /* UMC error condition */ 3224434Skarels #define HDH_NXM 0040000 /* non-existent memory error */ 3324434Skarels #define HDH_PER 0020000 /* UNIBUS parity error */ 3424434Skarels #define HDH_ZRUN 0010000 /* Z80 running */ 3524434Skarels #define HDH_ZGO 0004000 /* Z80 not in wait state */ 3624434Skarels #define HDH_MBLK 0000200 /* memory swap state (0=main, 1=srv) */ 3724434Skarels #define HDH_SRV 0000100 /* select UMC service memory */ 3824434Skarels #define HDH_MAIN 0000040 /* select UMC main memory */ 3924434Skarels #define HDH_DMA 0000020 /* DMA enable */ 4024434Skarels #define HDH_WRT 0000010 /* DMA write enable */ 4124434Skarels #define HDH_IEN 0000004 /* interrupt enable */ 4224434Skarels #define HDH_RST 0000002 /* reset */ 4324434Skarels #define HDH_NMI 0000001 /* cause NMI */ 4424434Skarels 4524434Skarels #define HDH_BITS \ 4624434Skarels "\10\20UER\17NXM\16PER\15ZRUN\14ZGO\10MBLK\7SRV\6MAIN\5DMA\4WRT\3IEN\2RST\1NMI" 4724434Skarels 4824434Skarels /* start i/o function code definitions */ 4924434Skarels 5024434Skarels #define HDHWRT 0 /* write to if-11 */ 5124434Skarels #define HDHRDB 1 /* read from if-11 */ 5224434Skarels #define HDHSTR 2 /* stream flag */ 5324434Skarels #define HDHEOS 6 /* end of stream flag */ 5424434Skarels #define HDHABT 8 /* abort flag */ 5524434Skarels #define HDHUMR 16 /* UMR protocol flag */ 5624434Skarels 5724434Skarels /* interrupt type definitions */ 5824434Skarels 5924434Skarels #define HDHSACK 0 /* start i/o ack */ 6024434Skarels #define HDHDONE 1 /* i/o completion */ 6124434Skarels #define HDHXREQ 2 /* UMR protocol transfer request */ 6224434Skarels 6324434Skarels /* i/o completion codes */ 6424434Skarels 6524434Skarels #define HDHIOCOK 0001 /* successful completion */ 6624434Skarels #define HDHIOCOKP 0002 /* successful completion, more data pending */ 6724434Skarels #define HDHIOCABT 0361 /* i/o aborted */ 6824434Skarels #define HDHIOCERR 0321 /* program error */ 6924434Skarels #define HDHIOCOVR 0363 /* overrun error */ 7024434Skarels #define HDHIOCUBE 0374 /* non-existant memory or unibus error */ 7124434Skarels 7224434Skarels /* UMR protocol transfer grant code definitions */ 7324434Skarels 7424434Skarels #define HDHXEVN 1 /* start with even address */ 7524434Skarels #define HDHXODD 2 /* start with odd address */ 7624434Skarels #define HDHNUMR 4 /* non-UMR transfer */ 7724434Skarels #define HDHXABT 8 /* abort transfer */ 7824434Skarels 7924434Skarels /* HDH supervisor request code definitions */ 8024434Skarels #define HDHINIT 0x42 /* SYSINIT opcode */ 8124434Skarels 8224434Skarels #define HDHSUP 0xf0 /* supervisor HDH status/line control prefix */ 8324434Skarels #define HDHIMP 0x400 /* IMP line up modifier */ 8424434Skarels #define HDHREFL 0x800 /* reflect mode modifier */ 8524434Skarels #define HDHINLB 0x1000 /* internal loopback modifier */ 8624434Skarels #define HDHEXLP 0x2000 /* external loopback modifier */ 87*26284Skarels #define HDHRQST (HDHSUP+0x0000) /* line status request */ 88*26284Skarels #define HDHRQUP (HDHSUP+0x0100) /* line up request */ 89*26284Skarels #define HDHRQDN (HDHSUP+0x0200) /* line down request */ 9024434Skarels 9124434Skarels /* HDH supervisor reply code definitions */ 9224434Skarels 93*26284Skarels #define HDHIACK (HDHSUP+0x4200) /* line init ack */ 94*26284Skarels #define HDHLNUP (HDHSUP+0x0100) /* line up reply */ 95*26284Skarels #define HDHLNDN (HDHSUP+0x0200) /* line down reply */ 96*26284Skarels #define HDHLNACK (HDHSUP+0x0300) /* ack line up request (but line is down now) */ 97*26284Skarels #define HDHTIMO (HDHSUP+0x0400) /* line timeout */ 98*26284Skarels #define HDHLOOP (HDHSUP+0x0500) /* loopback message */ 99*26284Skarels #define HDHDTERR (HDHSUP+0x0600) /* host data error detected */ 100*26284Skarels #define HDHSQRCV (HDHSUP+0x0700) /* HDLC sequence error detected by IMP */ 101*26284Skarels #define HDHSQERR (HDHSUP+0x0800) /* HDLC sequence error detected by if-11 */ 102