Okay, now hardware IS sorted out, made a small loop to toggle RTS, and it does that splendidly, so the chip works and is initialized correctly.
Here's my cleaned assembly routine, I still can't get it to behave. Does anyone have an idea what I might have missed?
;SIMPLE TEST ROUTINE TO PUNCH OUT CHARACTERS TO A SERIAL PORT
;BASED LOOSELY ON THE ALTAIR 8800 TURNKEY MONITOR CODE, ADAPTED FOR THE INTEL 8251
;VERSION 1.1
UARTDR .EQU 10H ; 8251 UART DATA REGISTER
UARTCR .EQU UARTDR+1 ; 8251 UART STATUS AND COMMAND REGISTER
UARTRST .EQU 40H ; UART RESET
UARTINIT .EQU 01001101B ;[S2][S1][EP][PEN][L2][L1][B2][B1] /1 STOP, NO PARITY, 8 BIT, X1 CLOCK
TXEN .EQU 00100011B ;[EH][RST][RTS][ER][SBRK][RXE][DTR][TXEN]
LEADCH .EQU 0DH ; PUNCH LEADER CHAR
LEADCNT .EQU 3CH ; PUNCH LEADER COUNT
SOFB .EQU 3CH ; PUNCH "START OF BLOCK" CHAR
PROMPT .EQU '.' ; COMMAND PROMPT
;STACK EQU 0FC00H
STACK .EQU 02FFFH ;START OF STACK IS THE TOP!! - 4K OF RAM ENDING AT 2FFFH
.ORG 00H ;START OF MONITOR ( BOTTOM OF ROM)
MON:
MVI A, UARTRST ;RESET UART
OUT UARTCR
MVI A,UARTINIT
OUT UARTCR ;SET UART /1, 8 BITS, NO PARITY, 1 STOP, NO INTS
MVI A, TXEN ;SET MODE /RTS LO, /DTR LO, TX ENABLE
OUT UARTCR ;ENABLE TX
ENTER:
LXI SP,STACK ; LOAD STACK
;CALL CRLF ; FORMAT OUTPUT
MVI A, ' '
CALL OUTCHK
MVI A, ' '
CALL OUTCHK
MVI A, '8'
CALL OUTCHK
MVI A, '2'
CALL OUTCHK
MVI A, '5'
CALL OUTCHK
MVI A, '1'
CALL OUTCHK
MVI A, ' '
CALL OUTCHK
MVI A, 'O'
CALL OUTCHK
MVI A, 'K'
CALL OUTCHK
CALL CRLF ; FORMAT OUTPUT
MVI A, PROMPT ; HELLO MONITOR
CALL OUTCHK
LOP: NOP
NOP
NOP
JNZ ENTER ; JUST LOOPING SERIAL FOREVER
CRLF: MVI A,0DH ; DO A CRLF AND RETURN TO MONITOR
CALL OUTCHK
MVI A,0AH
JMP OUTCHK
OUTCHK: PUSH PSW ; SAVE CHARACTER
ADD C ; ADD IN CHECKSUM
MOV C,A ; UPDATE CHECKSUM
LOOP:
IN UARTCR ; READ STATUS
RRC ; ROTATE TxREADY TO CARRY
JNC LOOP ; READY ?
POP PSW ; YES, GET CHAR
OUT UARTDR ; PRINT CHARACTER
RET ; FROM WHENCE YE CAME
.END