Thanks Jerson. I made the mistake of already having the board made so I would like to try to see if I can do it with just one 485 transceiver. The J1708 looks like it is still being used and if I cannot get a modified J1708 protocol to work with a 485 connected the normal way, then my next try would be to try an actual J1708 transceiver. Maxxim makes one and it look as if it would be a drop-in replacement so I would have the expense of re-doing the board design.
I think I have base code working but for some reason the 485 enable line sits high - even after the packet should have been delivered..... which tells me the program thinks there is still stuff to transmit...... looking into it now....
Regards,
Steve

Code below:
Code:
Node_ErrChk:'-------------------------------------------------------------------
'Checks the received node packet for data integrity and sends an ACK if good or a NAK if bad
                  NodeWord=Node_Addr+Node_Cmd_Resp+Node_Bd+Node_Port_Dev
                  Node_Sum_temp=NodeWord.byte0 ^ $FF                            'Creates a local temp sumcheck used for comparison
                  if Node_Sum_Temp <> Node_Sum then                             'If the received checksum and the local checksum don't match, then.... 
                     error=1                                                    'Turns ON error LED
                     Node_Cmd_Resp=$03                                          'Form our NAK response
                     Node_Addr=Address                                          'What our local address is
                     Node_Bd=0                                                  'Doesn't matter, we are asking for a retransmit
                     Node_Port_Dev=0                                            'Same as above
                     NodeWord=Node_Addr+Node_Cmd_Resp+Node_Bd+Node_Port_Dev     'Create our checksum
                     Node_Sum=NodeWord.BYTE0 ^ $FF                              'ditto
                     ncts=1                                                     'Enable transmission of 485 interface
NodeLineBusy2:       if BAUDCON1.6=1 then pauseus (Address*10)                  'Checks to see if the receive operation is idle(1), if it is, pause for address*10 uS for random
                     if BAUDCON1.6=0 then NodeLineBusy2                         'Receive operation is still busy, if not, send packet
                     hserout [sync,Node_Addr,Node_Cmd_Resp,Node_Bd,Node_Port_Dev,Node_Sum]   'Send command
                     while not TXSTA1.1 : wend                                  'Wait for USART to finish xmitting
                     ncts=0                                                     'Places 485 interface back into receive mode
                  else                                                          'OR....... 
                     Status1=1                                                  'Turns ON LED
                     NodePktResp=Node_Cmd_Resp & $0F                            'Strips off high order nibble to check for a NAK, put in local temp var - keeps packet integrity
                     if NodePktResp=$03 then goto Node_ReXmit                   'Got a NAK from the Control Computer so send it again
                     if NodePktResp=$02 then Node_ErrChk_Exit                   'We were ACKd, so just leave it alone
'Now we have received a node packet, believed to be good, so we will ADD $02 to 
'the Node_Cmd_Resp byte we received and transmit back to Control PC so the PC 
'knows everything is OK in our world....... and figure a new Checksum......
                     Node_Cmd_Resp=Node_Cmd_Resp + $02                          'Adds the ACK to the byte for our response
                     NodeWord=Node_Addr+Node_Cmd_Resp+Node_Bd+Node_Port_Dev     'Build our new checksum
                     Node_Sum=NodeWord.BYTE0 ^ $FF                              'ditto
                     ncts=1                                                     'Enable transmission of 485 interface
NodeLineBusy3:       if BAUDCON1.6=1 then pauseus (Address*10)                  'Checks to see if the receive operation is idle(1), if it is, pause for address*10 uS for random
                     if BAUDCON1.6=0 then NodeLineBusy3                         'Receive operation is still busy, if not, send packet
                     hserout [sync,Node_Addr,Node_Cmd_Resp,Node_Bd,Node_Port_Dev,Node_Sum]   'Send command
                     while not TXSTA1.1 : wend                                  'Wait for USART to finish xmitting
                     ncts=0                                                     'Places 485 interface back into receive mode
                  endif
Node_ErrChk_Exit:
                  Status1=0                                                     'Turns OFF LED
                  Error=0                                                       'Turns OFF LED if it was ON
                  node_PacketRcvd=0                                             'Zero the switch so we don't send other bytes
                  return