1*35321Sbostic /* 2*35321Sbostic * Copyright (c) 1988 Regents of the University of California. 3*35321Sbostic * All rights reserved. 4*35321Sbostic * 5*35321Sbostic * This code is derived from software contributed to Berkeley by 6*35321Sbostic * Advanced Computer Communications. 7*35321Sbostic * 8*35321Sbostic * Redistribution and use in source and binary forms are permitted 9*35321Sbostic * provided that the above copyright notice and this paragraph are 10*35321Sbostic * duplicated in all such forms and that any documentation, 11*35321Sbostic * advertising materials, and other materials related to such 12*35321Sbostic * distribution and use acknowledge that the software was developed 13*35321Sbostic * by the University of California, Berkeley. The name of the 14*35321Sbostic * University may not be used to endorse or promote products derived 15*35321Sbostic * from this software without specific prior written permission. 16*35321Sbostic * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR 17*35321Sbostic * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED 18*35321Sbostic * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. 19*35321Sbostic * 20*35321Sbostic * @(#)if_hdhreg.h 7.2 (Berkeley) 08/04/88 21*35321Sbostic */ 2224434Skarels 2324434Skarels /* 2424434Skarels * ACC IF-11/HDH interface 2524434Skarels */ 2624434Skarels 2724434Skarels struct hdhregs { /* device registers */ 2824434Skarels u_short csr; /* control and status register */ 2924434Skarels u_char iochn; /* logical channel */ 3024434Skarels u_char ioadx; /* address extension (A16,A17) */ 3124434Skarels u_short ioadl; /* buffer address (A0-A15) */ 3224434Skarels u_short iocnt; /* byte count */ 3324434Skarels u_char iofcn; /* UMC funciton code */ 3424434Skarels u_char iosbf; /* UMC subfunction code */ 3524434Skarels u_char ioini; /* comm regs valid flag */ 3624434Skarels u_char staack; /* interrupt acknowledge flag */ 3724434Skarels u_char ionmi; /* NMI routine active flag */ 3824434Skarels u_char ioxfrg; /* UMR transfer grant flag */ 3924434Skarels u_char stachn; /* interrupt channel number */ 4024434Skarels u_char statyp; /* interrupt type code */ 4124434Skarels u_char stacc; /* completion function code */ 4224434Skarels u_char stacs; /* completion subfunction code */ 4324434Skarels u_short stacnt; /* completion byte count */ 4424434Skarels }; 4524434Skarels 4624434Skarels /* defines for CSR */ 4724434Skarels 4824434Skarels #define HDH_UER 0100000 /* UMC error condition */ 4924434Skarels #define HDH_NXM 0040000 /* non-existent memory error */ 5024434Skarels #define HDH_PER 0020000 /* UNIBUS parity error */ 5124434Skarels #define HDH_ZRUN 0010000 /* Z80 running */ 5224434Skarels #define HDH_ZGO 0004000 /* Z80 not in wait state */ 5324434Skarels #define HDH_MBLK 0000200 /* memory swap state (0=main, 1=srv) */ 5424434Skarels #define HDH_SRV 0000100 /* select UMC service memory */ 5524434Skarels #define HDH_MAIN 0000040 /* select UMC main memory */ 5624434Skarels #define HDH_DMA 0000020 /* DMA enable */ 5724434Skarels #define HDH_WRT 0000010 /* DMA write enable */ 5824434Skarels #define HDH_IEN 0000004 /* interrupt enable */ 5924434Skarels #define HDH_RST 0000002 /* reset */ 6024434Skarels #define HDH_NMI 0000001 /* cause NMI */ 6124434Skarels 6224434Skarels #define HDH_BITS \ 6324434Skarels "\10\20UER\17NXM\16PER\15ZRUN\14ZGO\10MBLK\7SRV\6MAIN\5DMA\4WRT\3IEN\2RST\1NMI" 6424434Skarels 6524434Skarels /* start i/o function code definitions */ 6624434Skarels 6724434Skarels #define HDHWRT 0 /* write to if-11 */ 6824434Skarels #define HDHRDB 1 /* read from if-11 */ 6924434Skarels #define HDHSTR 2 /* stream flag */ 7024434Skarels #define HDHEOS 6 /* end of stream flag */ 7124434Skarels #define HDHABT 8 /* abort flag */ 7224434Skarels #define HDHUMR 16 /* UMR protocol flag */ 7324434Skarels 7424434Skarels /* interrupt type definitions */ 7524434Skarels 7624434Skarels #define HDHSACK 0 /* start i/o ack */ 7724434Skarels #define HDHDONE 1 /* i/o completion */ 7824434Skarels #define HDHXREQ 2 /* UMR protocol transfer request */ 7924434Skarels 8024434Skarels /* i/o completion codes */ 8124434Skarels 8224434Skarels #define HDHIOCOK 0001 /* successful completion */ 8324434Skarels #define HDHIOCOKP 0002 /* successful completion, more data pending */ 8424434Skarels #define HDHIOCABT 0361 /* i/o aborted */ 8524434Skarels #define HDHIOCERR 0321 /* program error */ 8624434Skarels #define HDHIOCOVR 0363 /* overrun error */ 8724434Skarels #define HDHIOCUBE 0374 /* non-existant memory or unibus error */ 8824434Skarels 8924434Skarels /* UMR protocol transfer grant code definitions */ 9024434Skarels 9124434Skarels #define HDHXEVN 1 /* start with even address */ 9224434Skarels #define HDHXODD 2 /* start with odd address */ 9324434Skarels #define HDHNUMR 4 /* non-UMR transfer */ 9424434Skarels #define HDHXABT 8 /* abort transfer */ 9524434Skarels 9624434Skarels /* HDH supervisor request code definitions */ 9724434Skarels #define HDHINIT 0x42 /* SYSINIT opcode */ 9824434Skarels 9924434Skarels #define HDHSUP 0xf0 /* supervisor HDH status/line control prefix */ 10024434Skarels #define HDHIMP 0x400 /* IMP line up modifier */ 10124434Skarels #define HDHREFL 0x800 /* reflect mode modifier */ 10224434Skarels #define HDHINLB 0x1000 /* internal loopback modifier */ 10324434Skarels #define HDHEXLP 0x2000 /* external loopback modifier */ 10426284Skarels #define HDHRQST (HDHSUP+0x0000) /* line status request */ 10526284Skarels #define HDHRQUP (HDHSUP+0x0100) /* line up request */ 10626284Skarels #define HDHRQDN (HDHSUP+0x0200) /* line down request */ 10724434Skarels 10824434Skarels /* HDH supervisor reply code definitions */ 10924434Skarels 11026284Skarels #define HDHIACK (HDHSUP+0x4200) /* line init ack */ 11126284Skarels #define HDHLNUP (HDHSUP+0x0100) /* line up reply */ 11226284Skarels #define HDHLNDN (HDHSUP+0x0200) /* line down reply */ 11326284Skarels #define HDHLNACK (HDHSUP+0x0300) /* ack line up request (but line is down now) */ 11426284Skarels #define HDHTIMO (HDHSUP+0x0400) /* line timeout */ 11526284Skarels #define HDHLOOP (HDHSUP+0x0500) /* loopback message */ 11626284Skarels #define HDHDTERR (HDHSUP+0x0600) /* host data error detected */ 11726284Skarels #define HDHSQRCV (HDHSUP+0x0700) /* HDLC sequence error detected by IMP */ 11826284Skarels #define HDHSQERR (HDHSUP+0x0800) /* HDLC sequence error detected by if-11 */ 119