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

  1. /****************************************************************************
  2. *    $Id: pc100.h 1.2 93/07/16 11:48:33 ROOT_DOS Exp $
  3. *    15 Jul 93    1.3        GT    Fix warnings.                                    *
  4. ****************************************************************************/
  5.  
  6. #ifndef    _PC100_H
  7. #define    _PC100_H
  8.  
  9. /* UNFINISHED! */
  10. /* Hardware-dependent routines for the PACCOMM PC-100 card for the PC
  11.  * This card contains a Zilog 8530 plus two modems, one of which is an
  12.  * AMD 7910, and one of which is a TCM3105.
  13.  *
  14.  * Originally written by Phil Karn KA9Q for an early rev of the board which
  15.  * did interrupt acks wrong.  Hacked by Bdale Garbee N3EUA to work with beta
  16.  * copies of the second major revision of the card.
  17.  */
  18. #ifndef    _GLOBAL_H
  19. #include "global.h"
  20. #endif
  21.  
  22. #ifndef    _MBUF_H
  23. #include "mbuf.h"
  24. #endif
  25.  
  26. #define    NPC    1        /* One card max */
  27. #define    AX_MTU    512
  28. #define    INTMASK    0x21        /* Intel 8259 interrupt controller mask */
  29.  
  30. struct pc100 {
  31.     INTERRUPT (*oldvec) __ARGS((void));/* Original interrupt vector contents */
  32.     int16 addr;    /* Base I/O address */
  33.     unsigned vec;    /* Vector */
  34.     long ints;    /* Interrupt count */
  35. };
  36. extern struct pc100 Pc100[];
  37.  
  38. /* Register offset info, specific to the PC-100
  39.  * E.g., to read the data port on channel A, use
  40.  *      inportb(hdlc[dev].base + CHANA + DATA)
  41.  */
  42. #define    MODEM_CTL    0    /* modem control port, write only */
  43. /* #define    CHANB        4    /* Base of channel B regs */
  44. /* #define    CHANA        6    /* Base of channel A regs */
  45. #define    CHANB        6    /* Base of channel B regs */
  46. #define    CHANA        4    /* Base of channel A regs */
  47. #define INTACK        8    /* access this to wang 8530's INTA.L */
  48.  
  49. /* 8530 ports on each channel */
  50. /* #define    CTL    0 */
  51. /* #define    DATA    1 */
  52. #define    CTL    1
  53. #define    DATA    0
  54.  
  55. struct hdlc {
  56.     long rxints;        /* Receiver interrupts */
  57.     long txints;        /* Transmitter interrupts */
  58.     long exints;        /* External/status interrupts */
  59.     long spints;        /* Special receiver interrupts */
  60.  
  61.     int nomem;        /* Buffer allocate failures */
  62.     int toobig;        /* Giant receiver packets */
  63.     int crcerr;        /* CRC Errors */
  64.     int aborts;        /* Receiver aborts */
  65.  
  66.     char status;        /* Copy of R0 at last external interrupt */
  67.     struct mbuf *rcvq;    /* Receive queue */
  68.     int16 rcvcnt;        /* Number of packets on rcvq */
  69.     struct mbuf *rcvbuf;    /* Buffer for current rx packet */
  70.     int16 bufsiz;        /* Size of rcvbuf */
  71.     char *rcp;        /* Pointer into rcvbuf */
  72.  
  73.     struct mbuf *sndq;    /* Packets awaiting transmission */
  74.     int16 sndcnt;        /* Number of packets on sndq */
  75.     struct mbuf *sndbuf;    /* Current buffer being transmitted */
  76.     int tstate;        /* Tranmsitter state */
  77. #define    IDLE    0        /* Transmitter off, no data pending */
  78. #define    DEFER    1        /* Transmitter off, waiting for channel clear*/
  79. #define    KEYUP    2        /* Transmitter on, waiting for CTS */
  80. #define    ACTIVE    3        /* Transmitter on, sending data */
  81. #define    FLUSH    4        /* Transmitter on, flushing tx buffers */
  82. #define    FIN2    5        /* Ditto, second char */
  83.  
  84.     int mode;        /* Transmitter mode */
  85. #define    CSMA    0        /* Carrier-sense multiple access */
  86. #define    FULLDUP    1        /* Full duplex */
  87.  
  88.     int dev;        /* Device number */
  89.     int16 base;        /* Base of I/O registers */
  90.     int16 speed;        /* Line speed, bps */
  91. };
  92.  
  93. #define    OFF    0
  94. #define    ON    1
  95.  
  96. /* 8530 clock speed */
  97. /* #define    XTAL    ((unsigned)38400)    /* 2.4576 Mhz / (2*32) */
  98. #define    XTAL    ((unsigned)76797L)    /* 4.915 Mhz / (2*32) */
  99.  
  100. /* Baud rate generator definitions */
  101. struct baudrate {
  102.     int16 speed;
  103.     char val;
  104. };
  105.  
  106. /* In pc100.c: */
  107. void pcint __ARGS((int dev));
  108.  
  109. /* In pc100vec.asm: */
  110. INTERRUPT pc0vec __ARGS((void));
  111.  
  112. #endif    /* _PC100_H */
  113.