Serial chips, I
get post-traumatic-stress just thinking about
them.
I'll remember that one. Though compared to serial chips many disk
controllers and their associated stuff that wraps around them
programtically are pretty horrid too.
The 8255 parallel interface chip was bad enough. It has an amazing
mis-feature : Any write to the mode control register sets all output
lines to 0's.
After a reset, all lines are inputs (which was sensible, it avoids
possible contentions). If you drive TTL devices from them, it's
conventional to pull them high (or the TTL inputs will float high). You
then write to the mode control register, configuring some lines as
outputs, at which point they all go low. You then write to the output
registers setting the lines to the states you want. You have to design
your hardware to deal with this.
Of course you also can't reverse the direction of a port under software
control without clearing all the outputs.
Sensible parallel chips (6821, 6522) don't do this. The output bits are
not affected by writes to any other register. And those chips let you
define the direction of each port line.
I want to insert an 8255 up the rear end of its designer...
-tony