Just a heads up – the serial transmit routines that I have posted with the 8008 applications have serious issues. Though it was working for me, other were using serial ports that weren’t so forgiving and had problems with transmit. Finally Corey Cohen tracked down problems with start and stops bits used with the transmited data. As soon as I get a chance to check out the fixed routines, I’ll be updating all the applications on my 8008 application and BASIC pages. For those of you that can’t wait here is the code for a version that I think will probably work. This version is timed for 2400 baud.
My OS/X emulator was also broken and needs an update, as well.
OUTCHAR:
NDI 177 ; mask MSbit
CAL BITOUT ; STARTBIT
CAL BITOUT ; LSB
CAL BITOUT ; 1
CAL BITOUT ; 2
CAL BITOUT ; 3
CAL BITOUT ; 4
CAL BITOUT ; 5
CAL BITOUT ; 6
CAL BITOUT ; MSB
LDA ; timing delay
LAI 200
OUT OUTPORT ; stop bit
LDI 100 ; and extra for inter character spacing
JMP MORE2
BITOUT:
OUT OUTPORT
RRC ; shift to get next bit
LDI 3
MORE2:
LAA ; nop to delay 5 states to make timing work
DCD
JFZ MORE2
LDI 0 ; delay 8 states
RET