Thanks everyone for you suggestions. I have my lazarus service working now:
In/out queue size 4096/0
<20131121095051.702 SYS>
Set timeouts: ReadInterval=65535, ReadTotalTimeoutMultiplier=0, ReadTotalTimeoutConstant=0, WriteTotalTimeoutMultiplier=0, WriteTotalTimeoutConstant=0
<20131121095051.702 SYS>
RTS on
<20131121095051.702 SYS>
DTR on
<20131121095051.702 SYS>
Purge the serial port: RXABORT, RXCLEAR, TXABORT, TXCLEAR
<20131121095051.702 SYS>
Baud rate 9600
<20131121095051.702 SYS>
RTS on
<20131121095051.702 SYS>
DTR on
<20131121095051.702 SYS>
Data bits=8, Stop bits=1, Parity=None
<20131121095051.702 SYS>
Set chars: Eof=0x00, Error=0x00, Break=0x00, Event=0x00, Xon=0x0B, Xoff=0x0D
<20131121095051.702 SYS>
Handflow: ControlHandShake=(DTR_CONTROL, ERROR_ABORT), FlowReplace=(TRANSMIT_TOGGLE, RTS_CONTROL), XonLimit=1024, XoffLimit=1024
<20131121100133.271 RX>
The problem was my config was never getting used because I didn't know the config had to be called after the connect. doh :-(
so it was defaulting to the system default which was all correct except it did not do the handshake at all.
Let consider this thread closed now :-)