calculi wrote:
...and I really don't like the broken 'C51s from WDC...
Makes me wonder when/if WDC will get that problem fixed.
From the beginning, the 6551 was not a good design, both in hardware terms and the programming model. Long ago when this stuff was still relatively new, a lot of designers interfaced the Motorola 6850 into 6502 designs, as the 6850's programming model, as well as performance, was better. Of course, that is all old silicon.
Long ago, I got busy on finding a better UART that could be adapted to the 6502 bus and would support much higher data rates. I settled on the Philips/NXP SCC26xx series and have used them for more than 25 years. Oddly enough, although the 26xx series is designed around the Intel x86 style bus, they are readily attached to a 6502 with simple logic. My POC v1 unit currently uses an NXP 28L92, which is a dual channel part. In the past, I've run a 26C92 and 2692A, also dual channel devices. POC V2, which is under construction, will be using the NXP 28C94, which supports four independent TIA-232 ports.
For single channel use, NXP makes the 28L91, which is essentially one half of a 28L92, and would make an excellent alternative to the 65C51. Aside from the UART itself, there are programmable I/O pins and a high resolution counter/timer for use in various ways. In POC V1, I use the counter/timer to generate the jiffy IRQ that maintains the system clock, an uptime counter and a software timer used for generating accurate time delays. Unlike the timers in the 65C22, the UART timer runs at a constant speed that is ultimately determined by the 3.6864 MHz clock driving the device. This means the Ø2 clock rate can be arbitrarily changed with no effect on timekeeping accuracy.
All of the NXP UARTs support a wide range of data rates, up to 921 Kbps. Interfacing to the 65xx bus is not complicated.