I use 75N176 as the driver (though I shojuld have used LTC1482 since it has carrier detect).
The protocol that I use is extremely simple:
<heared><length><source address><destination address><message><CRC>.
Messages require different types of replies (OK, not OK, status reply etc.) using the same packet format.
Nodes first listen to the network. When a period of inactivity is found, a node that wishes to talk to the network starts preudo-random wait cycle (related to the node address) and then if the line is still free - send the packet and waits for a reply. If no reply received, the transmit routine repeats 3 times before giving up.
SNAP has a better implementation but heavier (as far as the code is concerned).
trace