pc100.h
上传用户:hepax88
上传日期:2007-01-03
资源大小:1101k
文件大小:3k
源码类别:

TCP/IP协议栈

开发平台:

Visual C++

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