home *** CD-ROM | disk | FTP | other *** search
/ High Voltage Shareware / high1.zip / high1 / DIR3 / KA9Q212.ZIP / EAGLE.H < prev    next >
C/C++ Source or Header  |  1993-07-16  |  4KB  |  134 lines

  1. /****************************************************************************
  2. *    $Id: eagle.h 1.2 93/07/16 11:44:21 ROOT_DOS Exp $
  3. *    15 Jul 93    1.2        GT    Fix warnings.                                    *
  4. ****************************************************************************/
  5. #ifndef    _EAGLE_H
  6. #define    _EAGLE_H
  7.  
  8. #ifndef    _GLOBAL_H
  9. #include "global.h"
  10. #endif
  11.  
  12. #ifndef    _MBUF_H
  13. #include "mbuf.h"
  14. #endif
  15.  
  16. #ifndef    _IFACE_H
  17. #include "iface.h"
  18. #endif
  19.  
  20. /* Hardware-dependent routines for the EAGLE card for the PC
  21.  * This card contains a Zilog 8530 only - no modem!
  22.  */
  23. #define EGMAX    1        /* One card max */
  24. #define AX_MTU    512
  25. #define INTMASK 0x21        /* Intel 8259 interrupt controller mask */
  26.  
  27. struct EGTAB {
  28.     INTERRUPT (*oldvec) __ARGS((void));    /* Original interrupt vector contents */
  29.     int16 addr;        /* Base I/O address */
  30.     unsigned vec;        /* Vector */
  31.     long ints;        /* Interrupt count */
  32. };
  33. extern struct EGTAB Eagle[];
  34.  
  35. /* Register offset info, specific to the EAGLE
  36.  * E.g., to read the data port on channel A, use
  37.  *    inportb(egchan[dev].base + CHANA + DATA)
  38.  */
  39. #define CHANB        0    /* Base of channel B regs */
  40. #define CHANA        2    /* Base of channel A regs */
  41.  
  42. /* 8530 ports on each channel */
  43. #define CTL    0
  44. #define DATA    1
  45. #define DMACTRL     4    /* Base of channel + 4 */
  46.  
  47. /* EAGLE DMA/INTERRUPT CONTROL REGISTER */
  48. #define DMAPORT     0    /* 0 = Data Port */
  49. #define INTPORT     1    /* 1 = Interrupt Port */
  50. #define DMACHANA    0    /* 0 = DMA on CHANNEL A */
  51. #define DMACHANB    2    /* 1 = DMA on Channel B */
  52. #define DMADISABLE    0    /* 0 = DMA disabled */
  53. #define DMAENABLE    4    /* 1 = DMA enabled */
  54. #define INTDISABLE    0    /* 0 = Interrupts disabled */
  55. #define INTENABLE    8    /* 1 = Interrupts enabled */
  56. #define INTACKTOG    10    /* 1 = INT ACK TOGGLE */
  57.  
  58.  
  59. struct egchan {
  60.     long rxints;        /* Receiver interrupts */
  61.     long txints;        /* Transmitter interrupts */
  62.     long exints;        /* External/status interrupts */
  63.     long spints;        /* Special receiver interrupts */
  64.  
  65.     int enqueued;        /* Packets actually forwarded */
  66.     int rxframes;        /* Number of Frames Actally Received */
  67.     int toobig;        /* Giant receiver packets */
  68.     int crcerr;        /* CRC Errors */
  69.     int aborts;        /* Receiver aborts */
  70.     int rovers;        /* Receiver Overruns */
  71.  
  72.     char status;        /* Copy of R0 at last external interrupt */
  73.     struct mbuf *rcvbuf;    /* Buffer for current rx packet */
  74.     int16 bufsiz;        /* Size of rcvbuf */
  75.     char *rcp;        /* Pointer into rcvbuf */
  76.  
  77.     struct mbuf *sndq;    /* Packets awaiting transmission */
  78.     int16 sndcnt;        /* Number of packets on sndq */
  79.     struct mbuf *sndbuf;    /* Current buffer being transmitted */
  80.     char tstate;        /* Tranmsitter state */
  81. #define IDLE    0        /* Transmitter off, no data pending */
  82. #define ACTIVE    1        /* Transmitter on, sending data */
  83. #define UNDERRUN 2        /* Transmitter on, flushing CRC */
  84. #define FLAGOUT 3        /* CRC sent - attempt to start next frame */
  85. #define DEFER 4         /* Receive Active - DEFER Transmit */
  86.     char rstate;        /* Set when !DCD goes to 0 (TRUE) */
  87. /* Normal state is ACTIVE if Receive enabled */
  88. #define RXERROR 2        /* Error -- Aborting current Frame */
  89. #define RXABORT 3        /* ABORT sequence detected */
  90. #define TOOBIG 4        /* too large a frame to store */
  91.     int dev;        /* Device number */
  92.     int16 base;        /* Base of I/O registers */
  93.     int16 stata;        /* address of Channel A status regs */
  94.     int16 statb;        /* address of Channel B status regs */
  95.     int16 dmactrl;        /* address of DMA/INTERRUPT reg on card */
  96.     int16 speed;        /* Line speed, bps */
  97.     char txdelay;        /* Transmit Delay 10 ms/cnt */
  98.     char persist;        /* Persistence (0-255) as a % */
  99.     char slotime;        /* Delay to wait on persistence hit */
  100.     char squeldelay;    /* Delay after XMTR OFF for squelch tail */
  101.     struct iface *iface;    /* Associated interface */
  102. };
  103. extern struct egchan Egchan[];
  104.  
  105.  
  106. #define OFF    0
  107. #define ON    1
  108. #define INIT    2
  109.  
  110. /* 8530 clock speed */
  111.  
  112. #define XTAL    ((long) 3686400L/2L)     /* 32X clock constant */
  113.  
  114. /*************************************************************/
  115. /* TEMP FOR DEBUG ONLY - eliminates Divide by zero interrupt */
  116. /*               - preset for 1200 BAUD !!!!!!!!!!!!!! */
  117. /*************************************************************/
  118. #define TXCONST 1534             /* (XTAL/1200L)-2 */
  119. #define RXCONST 46             /* ((XTAL/32)/1200L)-2 */
  120.  
  121. /* Baud rate generator definitions */
  122. struct baudrate {
  123.     int16 speed;
  124.     char val;
  125. };
  126.  
  127. /* In eagle.c: */
  128. void egint __ARGS((int dev));
  129.  
  130. /* In eaglevec.asm: */
  131. INTERRUPT eg0vec __ARGS((void));
  132.  
  133. #endif    /* _EAGLE_H */
  134.