srowe wrote:
BigDumbDinosaur wrote:
One little suggestion for the future. Take a look at the NXP UARTs, specifically the 26C92 and 28L92. They are easier to interface to 65xx hardware, plus they offer two channels for the price of one chip. The 16550 and derivatives are old, old technology.
Thanks for the pointer. The 16550 may well be old but it's positively bleeding edge compared with the VIC.
Well, not really. The 16550 is a descendant of the old 8250 UART, which dates back to the days of the Intel 8088. That was around the time of the VIC-20's release. The 16550 could be thought of as an 8250 with more lockwashers and thicker paint, to use an automotive analogy. In fact, other than the availability of FIFOs, it is an 8250 for all intents and purposes.
The NXP (Philips) UARTs are "clean sheet" designs that addressed issues with the 8250 and derivatives. NXP retained the Intel bus interface but everything inside was new. The NXP 28L92 I am currently using in POC V1.1 can be configured for either an Intel or Motorola bus interface. Ironically, the Intel interface proved to be less a hassle to adapt to the 65C816. POC V2 will be using the NXP 28C94, which has four independent channels. It helps that NXP decided to use an active-low interrupt output, which can directly drive IRQB on the 65C816.
Quote:
Quote:
Also in the future, consider using a TTL can oscillator instead of a roll-you-own oscillator circuit. The cost difference is trivial and you don't have to use extra components.
I was (and still am) rather ignorant about clocks. I used a plain oscillator when I built an Atmega board so assumed the same setup was good in this case.
I quit using discrete crystals in clock circuits many years ago. Can oscillators are far more convenient and as Garth noted, dependable under a wide variety of operating conditions.
Quote:
OK, so I'm liable to end up with a clock that's unstable and may be off from the expected frequency. I think this isn't too much of an issue in this circuit?
Actually, it would be an issue, as the whole TIA-232 model depends on strict timing between bits (or more correctly, marks and spaces). If the transmitter clock is too fast or too slow relative to the receiver clock, the arrival of marks and spaces at the receiver will not coincide with receiver timing, causing intractable errors. In the case of the 16550 you are using, your baud rate clock should be either 1.8432 MHz or 18.432 MHz. The former is what I would recommend, as it will give you all of the standard speeds up to and including 38,400.