So far, all I've found that might help is an article about the 8251 used with the Z-80 CPU. It mentions an initialization bug.
If anyone else can offer up any help, please do. I was able to get the pinout and register description from the "chip directory" but could not find any other technical data.
Here's the article:
In article
copeland@metronet.com (Charles Copeland) writes:
I used a 8251 about ten years ago. There is/was a bug about initializing the chip. The data book I had at the time didn't mention it.
Yes, they've eliminated the references to this problem, which is why I've kept my '82 _Component Data Catalog_ all these years.
I vaguely remember something about writing 0 out twice to some
port to get to kick in.
Here what has always worked for me, in Z80 assembler:
CON_REG EQU ???? ; CONTROL REGISTER I/O PORT ADDRESS
RST_CMD EQU 40H ; 8251 RESET COMMAND
MODE EQU 5EH ; 8251 MODE CONSTANT (CLK X 16, 8 DATA BITS,
; ODD PARITY ENABLED, 1 STOP BIT)
RST_ERR EQU 15H ; 8251 RESET ERROR FLAG COMMAND
INIT_UART:
XOR A ; LOAD NULL
OUT (CON_REG),A ; SEND NULL TO 8251
NOP ; DELAY
OUT (CON_REG),A ; SEND ANOTHER NULL
NOP ; DELAY
OUT (CON_REG),A ; SEND ANOTHER NULL
NOP ; 8251 NOW IN COMMAND MODE
LD A,RST_CMD ; LOAD RESET COMMAND
OUT (CON_REG),A ; RESET 8251
NOP ; DELAY
LD A,MODE ; LOAD 8251 MODE CONSTANT
OUT (CON_REG),A ; SET 8251 MODES
NOP ; DELAY
LD A,RST_ERR ; LOAD RESET ERROR FLAGS COMMAND
OUT (CON_REG),A ; RESET AND ENABLE 8251
--
=====================================================================
Michael Kesti | "And like, one and one don't make
Grass Valley Group | two, one and one make one."
mrk@gvgdsd.GVG.TEK.COM | - The Who, Bargain
Hope this helps!
Daryl (
65c02@altavista.com)