Annotation of previous/src/includes/scc.h, revision 1.1

1.1     ! root        1: /* SCC Z8530 Registers and Values */
        !             2: 
        !             3: /* Read Registers */
        !             4: #define R_STATUS    0   // Transmit/Receive buffer status and External status
        !             5: #define R_SPECSTAT  1   // Special receive condition status
        !             6: #define R_INTVEC    2   // Interrupt vector
        !             7: #define R_INTBITS   3   // Interrupt pending bits
        !             8: #define R_RECBUF    8   // Receive buffer
        !             9: #define R_MISCSTAT  10  // Miscellaneous status
        !            10: #define R_BRG_LOW   12  // Lower byte of baud rate generator time constant
        !            11: #define R_BRG_HIGH  13  // Upper byte of baud rate generator time constant
        !            12: #define R_EXTSTAT   15  // External/Status interrupt information
        !            13: 
        !            14: /* Write Registers */
        !            15: #define W_INIT      0   // Initialization commands
        !            16: #define W_MODE      1   // Transmit/Receive interrupt and data transfer mode
        !            17: #define W_INTVEC    2   // Interrupt vector
        !            18: #define W_RECCONT   3   // Receive parameters and control
        !            19: #define W_MISCMODE  4   // Transmit/Receive miscellaneous parameters and modes
        !            20: #define W_TRANSCONT 5   // Transmit parameters and controls
        !            21: #define W_SYNCCHARA 6   // Sync characters or SDLC address field
        !            22: #define W_SYNCCHARF 7   // Sync character or SDLC flag
        !            23: #define W_TRANSBUF  8   // Transmit buffer
        !            24: #define W_MASTERINT 9   // Master interrupt control and reset
        !            25: #define W_MISCCONT  10  // Miscellaneous transmitter/receiver control bits
        !            26: #define W_CLOCK     11  // Clock mode control
        !            27: #define W_BRG_LOW   12  // Lower byte of baud rate generator time constant
        !            28: #define W_BRG_HIGH  13  // Upper byte of baud rate generator time constant
        !            29: #define W_MISC      14  // Miscellaneous control bits
        !            30: #define W_EXTSTAT   15  // External/Status interrupt control
        !            31: 
        !            32: 
        !            33: /* SCC clock select register (0x02018004) */
        !            34: #define        PCLK_ESCLK      0x00000010
        !            35: #define        PCLK_3684_MHZ   0x00000000
        !            36: #define        SCLKB_4_MHZ     0x00000008
        !            37: #define        SCLKB_ESCLK     0x00000004
        !            38: #define        SCLKB_3684_MHZ  0x00000000
        !            39: #define        SCLKA_4_MHZ     0x00000002
        !            40: #define        SCLKA_ESCLK     0x00000001
        !            41: #define        SCLKA_3684_MHZ  0x00000000
        !            42: 
        !            43: /* Read register 0 */
        !            44: #define RR0_RXAVAIL     0x01           /* Rx Character Available */
        !            45: #define RR0_ZERO_COUNT 0x02            /* Zero count (timer) */
        !            46: #define RR0_TXEMPTY     0x04           /* Tx Buffer Empty */
        !            47: #define RR0_DCD         0x08           /* DCD changed */
        !            48: #define RR0_SYNC_HUNT  0x10            /* Sync hunt mode */
        !            49: #define RR0_CTS         0x20           /* CTS changed */
        !            50: #define RR0_TXUNDER     0x40           /* Tx Underrun/EOM */
        !            51: #define RR0_BREAK       0x80           /* Break/Abort */
        !            52: 
        !            53: /* Read register 1 */
        !            54: #define RR1_ALLSENT     0x01           /* All Sent */
        !            55: #define RR1_RESCODE2   0x02            /* Residue Code 2 */
        !            56: #define RR1_RESCODE1   0x04            /* Residue Code 1 */
        !            57: #define RR1_RESCODE0   0x08            /* Residue Code 0 */
        !            58: #define RR1_PARITY      0x10           /* Parity Error */
        !            59: #define RR1_RXOVER      0x20           /* Rx Overrun Error */
        !            60: #define RR1_FRAME       0x40           /* CRC/Framing Error */
        !            61: #define RR1_EOF         0x80           /* End of Frame (SDLC) */
        !            62: 
        !            63: /* Read/Write Register 2: 8 bits of interrupt vector
        !            64:  * Channel A unmodified, channel B is modified by current UART status */
        !            65: 
        !            66: /* Read Register 3 -- ONLY CHANNEL A */
        !            67: #define RR3_B_STATIP   0x01            /* Chanel B Ext/Status intr pending */
        !            68: #define RR3_B_TXIP      0x02           /* Chanel B Tx interrupt pending */
        !            69: #define RR3_B_RXIP      0x04           /* Chanel B Rx interrupt pending */
        !            70: #define RR3_A_STATIP   0x08            /* Chanel A Ext/Status intr pending */
        !            71: #define RR3_A_TXIP      0x10           /* Chanel A Tx interrupt pending */
        !            72: #define RR3_A_RXIP      0x20           /* Chanel A Rx interrupt pending */
        !            73: 
        !            74: #define        RR3_A_IP        (RR3_A_STATIP|RR3_A_TXIP|RR3_A_RXIP)
        !            75: #define        RR3_B_IP        (RR3_B_STATIP|RR3_B_TXIP|RR3_B_RXIP)
        !            76: 
        !            77: /* Read Register 8: same as data port (receive buffer) */
        !            78: 
        !            79: /* Read Register 10 */
        !            80: #define RR10_ONLOOP     0x02           /* On Loop */
        !            81: #define RR10_LOOPSEND  0x10            /* Loop Sending */
        !            82: #define RR10_MISS2      0x40           /* Two Clocks Missing */
        !            83: #define RR10_MISS1      0x80           /* One Clock Missing */
        !            84: 
        !            85: /* Read/Write Register 12/13 16 bits of time constant */
        !            86: 
        !            87: /* Read/Write Register 15 */
        !            88: #define RW15_ZEROCNTIE 0x02            /* Enable interrupt on timer zero */
        !            89: #define RW15_DCDIE      0x08           /* Enable interrupt on DCD change */
        !            90: #define RW15_SYNCIE     0x10           /* Enable interrupt on Sync Hunt */
        !            91: #define RW15_CTSIE      0x20           /* Enable interrupt on CTS change */
        !            92: #define RW15_TXUNDERIE 0x40            /* Enable interrupt on Tx Underrun/EOM*/
        !            93: #define RW15_BREAKIE   0x80            /* Enable interrupt on Bread/Abort */
        !            94: 
        !            95: /* Write register 0 */
        !            96: #define WR0_REGMASK     0x0F           /* Mask for register select */
        !            97: #define WR0_RESET_STAT 0x10            /* Reset Ext/Status Interrupts */
        !            98: #define WR0_ABORT       0x18           /* Send abort */
        !            99: #define WR0_NEXTRXIE   0x20            /* Enable interrupt on next char Rx */
        !           100: #define WR0_RESETTXPEND        0x28            /* Reset Pending Tx Interrupt */
        !           101: #define WR0_RESET       0x30           /* Error Reset */
        !           102: #define WR0_RESETIUS   0x38            /* Reset Interrupt Under Service */
        !           103: #define WR0_RESETRXCRC 0x40            /* Reset Rx CRC Checker */
        !           104: #define WR0_RESETTXCRC 0x80            /* Reset Rx CRC Generator */
        !           105: #define WR0_RESETEOM   0xC0            /* Reset Underrun/EOM latch */
        !           106: 
        !           107: /* Write register 1 */
        !           108: #define WR1_EXTIE       0x01           /* External Interrupt Enable */
        !           109: #define WR1_TXIE        0x02           /* Transmit Interrupt Enable */
        !           110: #define WR1_PARSPEC     0x04           /* Parity is Special Condition */
        !           111: #define WR1_RXFIRSTIE  0x08            /* Interrupt Enable on First Rx */
        !           112: #define WR1_RXALLIE     0x10           /* Interrupt Enable on ALL Rx */
        !           113: #define WR1_SPECIE      0x18           /* Interrupt on Special only */
        !           114: #define WR1_REQRX       0x20           /* Request on Rx (else Tx) */
        !           115: #define WR1_REQFUNC     0x40           /* DMA Request (else cpu wait) */
        !           116: #define WR1_REQENABLE  0x80            /* Request/Wait enable */
        !           117: 
        !           118: /* Read/Write register 2, interrupt vector */
        !           119: 
        !           120: /* Write register 3 */
        !           121: #define WR3_RXENABLE    0x01           /* Rx Enable */
        !           122: #define WR3_SYNCINHIB  0x02            /* Sync Character Load Inhibit */
        !           123: #define WR3_ADDRSRCH   0x04            /* Address search mode (SDLC) */
        !           124: #define WR3_RXCRCENABLE        0x08            /* Rx CRC enable */
        !           125: #define WR3_ENTERHUNT  0x10            /* Enter Hunt Mode */
        !           126: #define WR3_AUTOENABLES        0x20            /* Auto Enables */
        !           127: #define WR3_RX5         0x00           /* Rx 5 bit characters */
        !           128: #define WR3_RX7         0x40           /* Rx 7 bit characters */
        !           129: #define WR3_RX6         0x80           /* Rx 6 bit characters */
        !           130: #define WR3_RX8         0xC0           /* Rx 8 bit characters */
        !           131: 
        !           132: /* Write register 4 */
        !           133: #define WR4_PARENABLE  0x01            /* Parity enable */
        !           134: #define WR4_PAREVEN     0x02           /* Even parity */
        !           135: #define WR4_STOP1       0x04           /* 1 stop bit */
        !           136: #define WR4_STOP15      0x08           /* 1.5 stop bits */
        !           137: #define WR4_STOP2       0x0C           /* 2 stop bits */
        !           138: #define WR4_SYNC8       0x00           /* 8 bit sync character */
        !           139: #define WR4_SYNC16      0x10           /* 16 bit sync character */
        !           140: #define WR4_SDLC        0x10           /* SDLC mode */
        !           141: #define WR4_EXTSYNC     0x30           /* External sync */
        !           142: #define WR4_X1CLOCK     0x00           /* x1 clock mode */
        !           143: #define WR4_X16CLOCK   0x40            /* x16 clock mode */
        !           144: #define WR4_X32CLOCK   0x80            /* x32 clock mode */
        !           145: #define WR4_X64CLOCK   0xC0            /* x64 clock mode */
        !           146: 
        !           147: /* Write register 5 */
        !           148: #define WR5_TXCRCENABLE        0x01            /* Enable CRC on Rx */
        !           149: #define WR5_RTS         0x02           /* RTS */
        !           150: #define WR5_CRC16       0x04           /* SDLC/CRC-16 */
        !           151: #define WR5_TXENABLE   0x08            /* Enable transmitter */
        !           152: #define WR5_BREAK       0x10           /* Send a break */
        !           153: #define WR5_TX5         0x00           /* Tx 5 bit characters */
        !           154: #define WR5_TX7         0x20           /* Tx 7 bit characters */
        !           155: #define WR5_TX6         0x40           /* Tx 6 bit characters */
        !           156: #define WR5_TX8         0x60           /* Tx 8 bit characters */
        !           157: #define WR5_DTR         0x80           /* DTR */
        !           158: 
        !           159: /* Write register 6 (Sync characters or SDLC address) */
        !           160: 
        !           161: /* Write register 7 more sync/SDLC */
        !           162: 
        !           163: /* Write register 8, same as data port, (Tx buffer) */
        !           164: 
        !           165: /* Write register 9 -- ONLY 1, SHARED BETWEEN CHANNELS, ACCESSABLE FROM BOTH */
        !           166: #define WR9_VIS         0x01           /* Vector Includes Status */
        !           167: #define WR9_NV          0x02           /* No Vector (don't respond to IACK) */
        !           168: #define WR9_DLC         0x04           /* Disable Lower Chain */
        !           169: #define WR9_MIE         0x08           /* Master Interrupt Enable */
        !           170: #define WR9_STATHIGH   0x10            /* Status high */
        !           171: #define WR9_RESETB      0x40           /* Reset channel B */
        !           172: #define WR9_RESETA      0x80           /* Reset channel A */
        !           173: #define WR9_RESETHARD  0xC0            /* Hardware reset */
        !           174: 
        !           175: /* Write register 10 */
        !           176: #define WR10_SYNC6      0x01           /* 6 bit sync */
        !           177: #define WR10_LOOP       0x02           /* Loop mode */
        !           178: #define WR10_ABORTUNDER        0x04            /* Abort on Underrun */
        !           179: #define WR10_MARKIDLE  0x08            /* Mark Idle */
        !           180: #define WR10_POLLACT   0x10            /* Go active on poll */
        !           181: #define WR10_NRZ        0x00           /* NRZ */
        !           182: #define WR10_NRZI       0x20           /* NRZI */
        !           183: #define WR10_FM1        0x40           /* FM (Transition = 1) */
        !           184: #define WR10_FM0        0x60           /* FM (Transition = 0) */
        !           185: #define WR10_PRESET1   0x80            /* CRC Preset 1 */
        !           186: 
        !           187: /* Write register 11 */
        !           188: #define WR11_XTAL       0x00           /* TRxC Out = XTAL Output */
        !           189: #define WR11_TXCLOCK   0x01            /* TRxC Out = Transmit clock */
        !           190: #define WR11_BRGEN      0x02           /* TRxC Out = BR Generator Output */
        !           191: #define WR11_DPLL       0x03           /* TRxC Out = DPLL Output */
        !           192: #define WR11_TRXCOUTEN 0x04            /* Enable TRxC as output */
        !           193: #define WR11_TXCLKRTXC 0x00            /* Tx clock = RTxC pin */
        !           194: #define WR11_TXCLKTRXC 0x08            /* Tx clock = TRxC pin */
        !           195: #define WR11_TXCLKBRGEN        0x10            /* Tx clock = BR Generator Output */
        !           196: #define WR11_TXCLKDPLL 0x18            /* Tx clock = DPLL Output */
        !           197: #define WR11_RXCLKRTXC 0x00            /* Rx clock = RTxC pin */
        !           198: #define WR11_RXCLKTRXC 0x20            /* Rx clock = TRxC pin */
        !           199: #define WR11_RXCLKBRGEN        0x40            /* Rx clock = BR Generator Output */
        !           200: #define WR11_RXCLKDPLL 0x60            /* Rx clock = DPLL Output */
        !           201: #define WR11_RTXCXTAL  0x80            /* Crystal RTxC in (else TTL) */
        !           202: 
        !           203: /* Read/Write register 12/13 Time constant */
        !           204: 
        !           205: /* Write register 14 */
        !           206: #define WR14_BRENABLE  0x01            /* BR Generator Enable */
        !           207: #define WR14_BRPCLK     0x02           /* BR Generator CLK from PCLK */
        !           208: #define WR14_DTSREQ     0x04           /* DTR low is DMA request */
        !           209: #define WR14_AUTOECHO  0x08            /* Auto echo */
        !           210: #define WR14_LOOPBACK  0x10            /* Local loopback */
        !           211: #define WR14_SEARCH     0x20           /* Enter Search mode */
        !           212: #define WR14_RESET      0x40           /* Reset Missing Clock */
        !           213: #define WR14_DPLLDISABLE 0x60          /* Disable DPLL */
        !           214: #define WR14_SRCBR      0x80           /* Set DPLL CLK Src = BR Generator */
        !           215: #define WR14_SRCRTXC   0xA0            /* Set DPLL CLK Src = RTxC */
        !           216: #define WR14_FM         0xC0           /* Set FM mode */
        !           217: #define WR14_NRZI       0xE0           /* Set NRZI mode */
        !           218: 
        !           219: /* Clocks available to SCC */
        !           220: #define        PCLK_HZ 3684000
        !           221: #define        RTXC_HZ 4000000
        !           222: 
        !           223: 
        !           224: /* Functions */
        !           225: void SCC_Read(void);
        !           226: void SCC_Write(void);
        !           227: 
        !           228: void SCC_Reset(void);
        !           229: void SCC_Interrupt(void);
        !           230: void SCC_ResetChannel(int ch);
        !           231: void SCC_InitChannel(int ch);

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.