home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 024 / psi110g.zip / PC100.H < prev    next >
C/C++ Source or Header  |  1994-04-17  |  4KB  |  109 lines

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