Annotation of xinu/h/sluaccess6850.h, revision 1.1.1.1

1.1       root        1: /* sluaccess6850.h */
                      2: /* access macros for the MECB Serial Line Unit */
                      3: /* The specific chip is the MC6850, by Motorola */
                      4: 
                      5: /* get/set_control_reg6850 and slu_init6850 are in the SA and Xinu
                      6:    libraries to provide an effectively-readable UART control register
                      7:    even though the hardware SLU (Motorola 6850 "ACIA")
                      8:    has a write-only control reg.  They simply maintain a copy of the bits
                      9:    put into the control reg in a private memory location and supply them
                     10:    via get_control_reg.  Naturally, this system only works if all accesses
                     11:    to the hardware control reg. go through this package, incl. init. */
                     12: /* The transmitter control macros assume that the system is running
                     13:    SLUTRANSDE0 in SLUTRANSBITS when SLU trans ints are disabled,
                     14:    SLUTRANSIE when trans ints are enabled.  Since no Xinu system
                     15:    call allows the user to switch the port to SLUTRANSDE1 (RTS*=1,
                     16:    not 0), this works fine */
                     17: 
                     18: #define sluinitcsr(ioaddr)      slu_init6850(ioaddr)
                     19: #define slutransready(ioaddr)   ((ioaddr->cstat)&SLUTRANSREADY)
                     20: #define slurecvready(ioaddr)    ((ioaddr->cstat)&SLURECVREADY)
                     21: #define slugetch(ioaddr)       ((ioaddr)->cbuf)
                     22: #define sluputch(ioaddr, ch)   ((ioaddr)->cbuf = (ch))
                     23: #define slurenable(ioaddr)   set_control_reg6850(ioaddr,get_control_reg6850(ioaddr)|SLURECVIE)
                     24: #define slurdisable(ioaddr)  set_control_reg6850(ioaddr,get_control_reg6850(ioaddr)&~SLURECVIE)
                     25: /* avoid turning on interrupts if they are already on--may lose output */
                     26: #define slutenable(ioaddr)  if ((get_control_reg6850(ioaddr)&SLUTRANSIE)==0) \
                     27:    set_control_reg6850(ioaddr,get_control_reg6850(ioaddr)|SLUTRANSIE)
                     28: #define slutdisable(ioaddr)  set_control_reg6850(ioaddr,(get_control_reg6850(ioaddr)&~SLUTRANSIE))
                     29: /* {slusetbrk, slurstbrk} have side effect of disabling trans ints--
                     30:    caller should disable trans ints first, reinstate later */
                     31: #define slusetbrk(ioaddr)       set_control_reg6850(ioaddr,((get_control_reg6850(ioaddr)&~SLUTRANSBITS)|SLUBREAK))
                     32: #define slurstbrk(ioaddr)       set_control_reg6850(ioaddr,((get_control_reg6850(ioaddr)&~SLUTRANSBITS)|SLUTRANSDE0))
                     33: #define slugetintstate(ioaddr) get_control_reg6850(ioaddr)&SLUINTBITS
                     34: #define slusetintstate(ioaddr,oldstate) set_control_reg6850(ioaddr,oldstate| \
                     35:    (get_control_reg6850(ioaddr)&~SLUINTBITS))
                     36: 
                     37: 
                     38: 

unix.superglobalmegacorp.com

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