Annotation of xinu/h/slu6850.h, revision 1.1

1.1     ! root        1: /* slu6850.h--register defs for Motorola 6850 SLU chip */
        !             2: /* MC6850 Serial Line Unit (also known as UART, or ACIA) */
        !             3: /* MECB has two of these for console and hostline, each with jumpered
        !             4:    baudrate up to 9600 baud */
        !             5: /* ATT7300 has one for serial keyboard interface, baudrate hardwired
        !             6:    for 1200 baud, so not used as console */
        !             7: 
        !             8: /* control register bits-- */
        !             9: #define SLURESET       3               /* write to cntrl reg to reset dev */
        !            10: #define SLUDIV16       1               /* division ratio of 16--normal op */
        !            11: #define SLUFMTBITS      (7<<2)         /* 3 bits--8 formats, 2 def'd here--*/
        !            12: #define SLU8NP1         (5<<2)         /* dataformat of 8 bits, no parity,
        !            13:                                           one stop bit (most common) */
        !            14: #define SLU7EP1                (2<<2)          /* dataformat of 7 bits, even parity,
        !            15:                                           one stop bit (second most common)*/
        !            16: #define SLUTRANSBITS    (3<<5)         /* 2 bits--following 4 cases-- */
        !            17: #define SLUTRANSDE0    (0<<5)          /* no transmitter interrupt, RTS*=0 */
        !            18: #define SLUTRANSDE1    (2<<5)          /* no transmitter int, RTS*=1 */
        !            19: #define SLUTRANSIE     (1<<5)          /* transmit int ena:bit5 on,bit6 off*/
        !            20: #define SLUBREAK       (3<<5)          /* no trans int, send break signal 
        !            21:                                           (continuous space logic level) */
        !            22: #define SLURECVDE      (0<<7)          /* no receiver int */
        !            23: #define SLURECVIE      (1<<7)          /* receiver int enabled */
        !            24: #define SLUINTBITS      (7<<5)          /* all off for no ints, RTS*=0 */
        !            25: #define SLUDEFAULT     (SLURECVDE|SLUTRANSDE0|SLU8NP1|SLUDIV16)
        !            26:                                        /* counter divide 16, dataformat of
        !            27:                                           8 bits, no parity, 1 stop bit,
        !            28:                                           RTS*=0, no interrupts */
        !            29: /* status register bits-- */
        !            30: #define SLURECVREADY   (1<<0)          /* receiver ready bit */
        !            31: #define        SLUTRANSREADY   (1<<1)          /* transmitter ready bit */
        !            32: #define SLUDCD         (1<<2)          /* data carrier detect bit (always 0
        !            33:                                           on mecb--DCD pin is wired to gnd)*/
        !            34: #define SLUCTS         (1<<3)          /* clear to send bit--reports logic
        !            35:                                           level on CTS pin, wired to DTR on
        !            36:                                           console, CTS on hostline port */
        !            37: #define SLUFE          (1<<4)          /* framing error (bad stop bit) */
        !            38: #define SLUOVRN                (1<<5)          /* overrun err--input char was lost */
        !            39: #define SLUPE          (1<<6)          /* parity err--can't happen in 8NP1 */
        !            40: #define SLUIRQ         (1<<7)          /* 6850 signaling trans or recv int */
        !            41: #define        SLUERMASK       (SLUPE|SLUOVRN|SLUFE) /* mask for error flags */
        !            42: 
        !            43: /* for receive register-- */
        !            44: #define        SLUCHMASK       0xff            /* mask for input character     */
        !            45: #define SLUASCII7BITS   0x7f           /* mask for 7 bits of ASCII char,
        !            46:                                          to mask off parity bit */
        !            47: 
        !            48: /* MC6850 device register layout       */
        !            49: /* The 6850 uses 2 memory-mapped byte register locations, at addr n,n+2 */
        !            50: /* for example, on MECB-- */
        !            51: /* 10040: port 1 csr (control and status register) */
        !            52: /* 10041: port 2 csr */
        !            53: /* 10042: port 1 data buf */
        !            54: /* 10043: port 2 data buf */
        !            55: /* so look at it as port 1-- csr, dummy, data buf starting at 10040 */
        !            56: /*        and       port 2-- csr, dummy, data buf starting at 10041 */
        !            57: /* Further, each address accesses 2 different hardware registers */
        !            58: /*  in the chip, one on read and another on write. */
        !            59: /* 10040, 10041-- status register on read, control register on write */
        !            60: /* 10042, 10043-- read buffer on read, write buffer on write */
        !            61: 
        !            62: struct csr     {
        !            63:        unsigned char cstat;    /* read for status, write for control reg */
        !            64:        char dummy;       /* skip a byte--only uses even, or odd, addrs */
        !            65:        unsigned char cbuf;     /* write for transmit, read for input */
        !            66: };
        !            67: 

unix.superglobalmegacorp.com

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