home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NeXTSTEP 3.0
/
NeXTSTEP3.0.iso
/
NextDeveloper
/
Headers
/
architecture
/
zs85C30.h
< prev
Wrap
Text File
|
1992-07-21
|
9KB
|
222 lines
/* Copyright (c) 1992 NeXT Computer, Inc. All rights reserved.
*
* Zilog Z85C30 Serial Controller Chip definitions
*
* The 85C30 contains the following registers:
* Read Register: Function:
* RR0 Transmit/Receive buffer and external status
* RR1 Special receive condition status
* RR2 Interrupt vector.
* RR3 Interrupt pending bits.
* RR8 Receive buffer.
* RR10 Miscellaneous status
* RR12 Lower byte of baud rate generator time constant
* RR13 Upper byte of baud rate generator time constant
* RR15 External/Status interrupt information
*
* Write register: Function:
* WR0 Initialization commands.
* WR1 Transmit/Receive interrupt and data transfer mode
* WR2 Interrupt vector
* WR3 Receive parameters and control
* WR4 Transmit/Receive miscellaneous parameters and modes
* WR5 Transmit parameters and controls
* WR6 Sync characters or SDLC address field
* WR7 Sync character or SDLC flag
* WR8 Transmit buffer
* WR9 Master interrupt control and reset
* WR10 Miscellaneous transmitter/receiver control bits
* WR11 Clock mode control
* WR12 Lower byte of baud rate generator time constant
* WR13 Upper byte of baud rate generator time constant
* WR14 Miscellaneous control bits
* WR15 External/Status interrupt control
*/
/* Read register 0 */
#define RR0_RXAVAIL 0x01 /* Rx Character Available */
#define RR0_ZERO_COUNT 0x02 /* Zero count (timer) *&Caefine RR0_TXEMPTY 0x04 /* Tx Buffer Empty */
#define RR0_DCD 0x08 /* DCD status */
#define RR0_SYNC_HUNT 0x10 /* Sync hunt mode */
/*
* NOTE: the sense of CTS is dependent on the cpu board rev
*/
#define RR0_CTS 0x20 /* CTS status */
#define RR0_TXUNDER 0x40 /* Tx Underrun/EOM */
#define RR0_BREAK 0x80 /* Break/Abort */
/* Read register 1 */
#define RR1_ALLSENT 0x01 /* All Sent */
#define RR1_RESCODE2 0x02 /* Residue Code 2 */
#define RR1_RESCODE1 0x04 /* Residue Code 1 */
#define RR1_RESCODE0 0x08 /* Residue Code 0 */
#define RR1_PARITY 0x10 /* Parity Error */
#define RR1_RXOVER 0x20 /* Rx Overrun Error */
#define RR1_FRAME 0x40 /* CRC/Framing Error */
#define RR1_EOF 0x80 /* End of Frame (SDLC) */
/*
* Read/Write Register 2: 8 bits of interrupt vector
* Channel A unmodified, channel B is modified by current UART status
*/
/* Read register 3 -- ONLY CHANNEL A */
#define RR3_B_STATIP 0x01 /* Chanel B Ext/Status intr pending */
#define RR3_B_TXIP 0x02 /* Chanel B Tx interrupt pending */
#define RR3_B_RXIP 0x04 /* Chanel B Rx interrupt pending */
#define RR3_A_STATIP 0x08 /* Chanel A Ext/Status intr pending */
#define RR3_A_TXIP 0x10 /* Chanel A Tx interrupt pending */
#define RR3_A_RXIP 0x20 /* Chanel A Rx interrupt pending */
#define RR3_A_IP (RR3_A_STATIP|RR3_A_TXIP|RR3_A_RXIP)
#define RR3_B_IP (RR3_B_STATIP|RR3_B_TXIP|RR3_B_RXIP)
/*
* Read Register 8: same as data port (receive buffer)
*/
/* Read Register 10 */
#define RR10_ONLOOP 0x02 /* On Loop */
#define RR10_LOOPSEND 0x10 /* Loop Sending */
#define RR10_MISS2 0x40 /* Two Clocks Missing */
#define RR10_MISS1 0x80 /* One Clock Missing */
/*
* Read/Write Register 12/13 16 bits of time constant
*/
/* Read/Write Register 15 */
#define RW15_ZEROCNTIE 0x02 /* Enable interrupt on timer zero */
#define RW15_DCDIE 0x08 /* Enable interrupt on DCD change */
#define RW15_SYNCIE 0x10 /* Enable interrupt on Sync Hunt */
#define RW15_CTSIE 0x20 /* Enable interrupt on CTS change */
#define RW15_TXUNDERIE 0x40 /* Enable interrupt on Tx Underrun/EOM*/
#define RW15_BREAKIE 0x80 /* Enable interrupt on Bread/Abort */
/* Write register 0 */
#define WR0_REGMASK 0x0F /* Mask for register select */
#define WR0_RESET_STAT 0x10 /* Reset Ext/Status Interrupts */
#define WR0_ABORT 0x18 /* Send abort */
#define WR0_NEXTRXIE 0x&Cb/* Enable interrupt on next char Rx */
#define WR0_RESETTXPEND 0x28 /* Reset Pending Tx Interrupt */
#define WR0_RESET 0x30 /* Error Reset */
#define WR0_RESETIUS 0x38 /* Reset Interrupt Under Service */
#define WR0_RESETRXCRC 0x40 /* Reset Rx CRC Checker */
#define WR0_RESETTXCRC 0x80 /* Reset Rx CRC Generator */
#define WR0_RESETEOM 0xC0 /* Reset Underrun/EOM latch */
/* Write register 1 */
#define WR1_EXTIE 0x01 /* External Interrupt Enable */
#define WR1_TXIE 0x02 /* Transmit Interrupt Enable */
#define WR1_PARSPEC 0x04 /* Parity is Special Condition */
#define WR1_RXFIRSTIE 0x08 /* Interrupt Enable on First Rx */
#define WR1_RXALLIE 0x10 /* Interrupt Enable on ALL Rx */
#define WR1_SPECIE 0x18 /* Interrupt on Special only */
#define WR1_REQRX 0x20 /* Request on Rx (else Tx) */
#define WR1_REQFUNC 0x40 /* DMA Request (else cpu wait) */
#define WR1_REQENABLE 0x80 /* Request/Wait enable */
/* Read/Write register 2, interrupt vector */
/* Write register 3 */
#define WR3_RXENABLE 0x01 /* Rx Enable */
#define WR3_SYNCINHIB 0x02 /* Sync Character Load Inhibit */
#define WR3_ADDRSRCH 0x04 /* Address search mode (SDLC) */
#define WR3_RXCRCENABLE 0x08 /* Rx CRC enable */
#define WR3_ENTERHUNT 0x10 /* Enter Hunt Mode */
#define WR3_AUTOENABLES 0x20 /* Auto Enables */
#define WR3_RX5 0x00 /* Rx 5 bit characters */
#define WR3_RX7 0x40 /* Rx 7 bit characters */
#define WR3_RX6 0x80 /* Rx 6 bit characters */
#define WR3_RX8 0xC0 /* Rx 8 bit characters */
/* Write register 4 */
#define WR4_PARENABLE 0x01 /* Parity enable */
#define WR4_PAREVEN 0x02 /* Even parity */
#define WR4_STOP1 0x04 /* 1 stop bit */
#define WR4_STOP15 0x08 /* 1.5 stop bits */
#define WR4_STOP2 0x0C /* 2 stop bits */
#define WR4_SYNC8 0x00 /* 8 bit sync character */
#define WR4_SYNC16 0x10 /* 16 bit sync character */
#define WR4_SDLC 0x10 /* SDLC mode */
#define WR4_EXTSYNC 0x30 /* External sync */
#define WR4_X1CLOCK 0x00 /* x1 clock mode */
#define WR4_X16CLOCK 0x40 /* x16 clock mode */
#define WR4_X32CLOCK 0x80 /* x32 clock mode */
#define WR4_X64CLOCK 0xC0 /* x64 clock mode */
/* Write register 5 */
#define WR5_TXCRCENABLE 0x01 /* Enable CRC on Rx */
#define WR5_RTS 0x02 /* RTS */
#define WR5_CRC16 0x04 /* SDLC/CRC-16 */
#define WR5_TXENABLE 0x08 /* Enable transmitter */
#define WR5_BREAK 0&Cc /* Send a break */
#define WR5_TX5 0x00 /* Tx 5 bit characters */
#define WR5_TX7 0x20 /* Tx 7 bit characters */
#define WR5_TX6 0x40 /* Tx 6 bit characters */
#define WR5_TX8 0x60 /* Tx 8 bit characters */
#define WR5_DTR 0x80 /* DTR */
/* Write register 6 (Sync characters or SDLC address) */
/* Write register 7 more sync/SDLC */
/* Write register 8, same as data port, (Tx buffer) */
/* Write register 9 -- ONLY 1, SHARED BETWEEN CHANNELS, ACCESSABLE FROM BOTH */
#define WR9_VIS 0x01 /* Vector Includes Status */
#define WR9_NV 0x02 /* No Vector (don't respond to IACK) */
#define WR9_DLC 0x04 /* Disable Lower Chain */
#define WR9_MIE 0x08 /* Master Interrupt Enable */
#define WR9_STATHIGH 0x10 /* Status high */
#define WR9_RESETB 0x40 /* Reset channel B */
#define WR9_RESETA 0x80 /* Reset channel A */
#define WR9_RESETHARD 0xC0 /* Hardware reset */
/* Write register 10 */
#define WR10_SYNC6 0x01 /* 6 bit sync */
#define WR10_LOOP 0x02 /* Loop mode */
#define WR10_ABORTUNDER 0x04 /* Abort on Underrun */
#define WR10_MARKIDLE 0x08 /* Mark Idle */
#define WR10_POLLACT 0x10 /* Go active on poll */
#define WR10_NRZ 0x00 /* NRZ */
#define WR10_NRZI 0x20 /* NRZI */
#define WR10_FM1 0x40 /* FM (Transition = 1) */
#define WR10_FM0 0x60 /* FM (Transition = 0) */
#define WR10_PRESET1 0x80 /* CRC Preset 1 */
/* Write register 11 */
#define WR11_XTAL 0x00 /* TRxC Out = XTAL Output */
#define WR11_TXCLOCK 0x01 /* TRxC Out = Transmit clock */
#define WR11_BRGEN 0x02 /* TRxC Out = BR Generator Output */
#define WR11_DPLL 0x03 /* TRxC Out = DPLL Output */
#define WR11_TRXCOUTEN 0x04 /* Enable TRxC as output */
#define WR11_TXCLKRTXC 0x00 /* Tx clock = RTxC pin */
#define WR11_TXCLKTRXC 0x08 /* Tx clock = TRxC pin */
#define WR11_TXCLKBRGEN 0x10 /* Tx clock = BR Generator Output */
#define WR11_TXCLKDPLL 0x18 /* Tx clock = DPLL Output */
#define WR11_RXCLKRTXC 0x00 /* Rx clock = RTxC pin */
#define WR11_RXCLKTRXC 0x20 /* Rx clock = TRxC pin */
#define WR11_RXCLKBRGEN 0x40 /* Rx clock = BR Generator Output */
#define WR11_RXCLKDPLL 0x60 /* Rx clock = DPLL Output */
#define WR11_RTXCXTAL 0x80 /* Crystal RTxC in (else TTL) */
/* Read/Write register 12/13 Time constant */
/* Write register 14 */
#define WR14_BRENABLE 0x01 /* BR Generator Enable */
#define WR14_BRPCLK 0x02 /&Cd Generator CLK from PCLK */
#define WR14_DTSREQ 0x04 /* DTR low is DMA request */
#define WR14_AUTOECHO 0x08 /* Auto echo */
#define WR14_LOOPBACK 0x10 /* Local loopback */
#define WR14_SEARCH 0x20 /* Enter Search mode */
#define WR14_RESET 0x40 /* Reset Missing Clock */
#define WR14_DPLLDISABLE 0x60 /* Disable DPLL */
#define WR14_SRCBR 0x80 /* Set DPLL CLK Src = BR Generator */
#define WR14_SRCRTXC 0xA0 /* Set DPLL CLK Src = RTxC */
#define WR14_FM 0xC0 /* Set FM mode */
#define WR14_NRZI 0xE0 /* Set NRZI mode */