home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
HAM Radio 1
/
HamRadio.cdr
/
misc
/
tcpipsrc
/
pc100.h
< prev
next >
Wrap
Text File
|
1990-11-10
|
3KB
|
108 lines
#ifndef _PC100_H
#define _PC100_H
/* UNFINISHED! */
/* Hardware-dependent routines for the PACCOMM PC-100 card for the PC
* This card contains a Zilog 8530 plus two modems, one of which is an
* AMD 7910, and one of which is a TCM3105.
*
* Originally written by Phil Karn KA9Q for an early rev of the board which
* did interrupt acks wrong. Hacked by Bdale Garbee N3EUA to work with beta
* copies of the second major revision of the card.
*/
#ifndef _GLOBAL_H
#include "global.h"
#endif
#ifndef _MBUF_H
#include "mbuf.h"
#endif
#define NPC 1 /* One card max */
#define AX_MTU 512
#define INTMASK 0x21 /* Intel 8259 interrupt controller mask */
struct pc100 {
INTERRUPT (*oldvec) __ARGS((void));/* Original interrupt vector contents */
int16 addr; /* Base I/O address */
unsigned vec; /* Vector */
long ints; /* Interrupt count */
};
extern struct pc100 Pc100[];
/* Register offset info, specific to the PC-100
* E.g., to read the data port on channel A, use
* inportb(hdlc[dev].base + CHANA + DATA)
*/
#define MODEM_CTL 0 /* modem control port, write only */
/* #define CHANB 4 /* Base of channel B regs */
/* #define CHANA 6 /* Base of channel A regs */
#define CHANB 6 /* Base of channel B regs */
#define CHANA 4 /* Base of channel A regs */
#define INTACK 8 /* access this to wang 8530's INTA.L */
/* 8530 ports on each channel */
/* #define CTL 0 */
/* #define DATA 1 */
#define CTL 1
#define DATA 0
struct hdlc {
long rxints; /* Receiver interrupts */
long txints; /* Transmitter interrupts */
long exints; /* External/status interrupts */
long spints; /* Special receiver interrupts */
int nomem; /* Buffer allocate failures */
int toobig; /* Giant receiver packets */
int crcerr; /* CRC Errors */
int aborts; /* Receiver aborts */
char status; /* Copy of R0 at last external interrupt */
struct mbuf *rcvq; /* Receive queue */
int16 rcvcnt; /* Number of packets on rcvq */
struct mbuf *rcvbuf; /* Buffer for current rx packet */
int16 bufsiz; /* Size of rcvbuf */
char *rcp; /* Pointer into rcvbuf */
struct mbuf *sndq; /* Packets awaiting transmission */
int16 sndcnt; /* Number of packets on sndq */
struct mbuf *sndbuf; /* Current buffer being transmitted */
int tstate; /* Tranmsitter state */
#define IDLE 0 /* Transmitter off, no data pending */
#define DEFER 1 /* Transmitter off, waiting for channel clear*/
#define KEYUP 2 /* Transmitter on, waiting for CTS */
#define ACTIVE 3 /* Transmitter on, sending data */
#define FLUSH 4 /* Transmitter on, flushing tx buffers */
#define FIN2 5 /* Ditto, second char */
int mode; /* Transmitter mode */
#define CSMA 0 /* Carrier-sense multiple access */
#define FULLDUP 1 /* Full duplex */
int dev; /* Device number */
int16 base; /* Base of I/O registers */
int16 speed; /* Line speed, bps */
};
#define OFF 0
#define ON 1
/* 8530 clock speed */
/* #define XTAL ((unsigned)38400) /* 2.4576 Mhz / (2*32) */
#define XTAL ((unsigned)76797) /* 4.915 Mhz / (2*32) */
/* Baud rate generator definitions */
struct baudrate {
int16 speed;
char val;
};
/* In pc100.c: */
void pcint __ARGS((int dev));
/* In pc100vec.asm: */
INTERRUPT pc0vec __ARGS((void));
#endif /* _PC100_H */