The serial port is a buffered, 8-bit synchronous shift register system.
A control bit selects input or output mode. In input mode, data on the SP
pin is shifted into the shift register on the rising edge of the signal
applied to the CNT pin. After 8 CNT pulses, the data in the shift
register is dumped into the Serial Data Register and an interrupt is
generated. In the output mode, TIMER A is used for the baud rate
generator. Data is shifted out on the SP pin at 1/2 the underflow rate of
TIMER A. The maximum baud rate possible is divided by
4, but the maximum useable baud rate will be determined by line loading and
the speed at which the receiver responds to input data. Transmission will
start following a write to the Serial Data Register (provided TIMER A is
running and in continuous mode). The clock signal derived from TIMER A
appears as an output on the CNT pin. The data in the Serial Data Register
will be loaded into the shift register then shift out to the SP pin when
a CNT pulse occurs. Data shifted out becomes valid on the falling edge of
CNT and remains valid until the next falling edge. After 8 CNT pulses, an
interrupt is generated to indicate more data can be sent. If the Serial
Data Register was loaded with new information prior to this interrupt,
the new data will automatically be loaded into the shift register and
transmission will continue. If the microprocessor stays one byte ahead of
the shift register, transmission will be continuous. If no further data
is to be transmitted, after the 8th CNT pulse, CNT will return high and
SP will remain at the level of the last data bit transmitted. SDR data is
shifted out MSB first and serial input data should also appear in this
format.
The bidirectional capability of the Serial Port and CNT clock allows many 6526 devices to be connected to a common serial communication bus on which one 6526 acts as a master, sourcing data and shift clock, while all other 6526 chips act as slaves. Both CNT and SP outputs are open drain to allow such a common bus. Protocol for master/slave selection can be transmitted over the serial bus, or via dedicated handshaking lines.
REG | NAME | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 |
---|---|---|---|---|---|---|---|---|---|
C | SDR | S7 | S6 | S5 | S4 | S3 | S2 | S1 | S0 |