Ethan Dicks wrote:
There are no implementations of sync serial devices in Simh. That
would have to be written in any case. The DU11 and DUV11 are very
simple PIO serial lines with, IIRC, a COM5025 USART. It would not be
a huge undertaking to write up a module to emulate one and attach it
to the virtual bus and have it also just open up a TCP socket.
One could use 'netcat' or something similar to open up and talk to
both the PDP-11 socket and the Hercules socket to make the connection.
This is (more or less, not exactly) what the orginal 2703/bisync emulation
in Hercules does but it is not really sufficient for RJE, for a number of
reasons.
The bisync/RJE protocol is a great fit for being generated by hardware and
being sent over a dedicated line. It is a poor fit for being generated
by software and being sent over a shared TCP/IP network. There is lots
of bandwidth wasting chatter and lots of CPU is consumed in mostly achieving
nothing useful.
The bisync/RJE protocol needs a close to real-time response and is not a
good fit for a network which can produce variable delays. Buffers in
applications tend to be organised on a just-in-time basis. The flow control
needs to be able to tell the far end to stop sending data immediately and
dribble in shortly as network buffers get cleared or unexpectedly delayed
packets arrive. One end also expects that once data is successfully sent
out, it is practically sure to arrive almost immediately at the far end,
not get piled into buffers and suffer random delays. (I have tried assuming
that if sufficient TCP/IP network bandwidth is provided, the flow control
will not get triggered. This didn't work. In practice, if one end has data
to send, it will keep blasting it out until the far end tells it to stop and
then it expects it to stop near instantly.) Applications tend to be coded
with fixed, short timeout values.
Interesting stuff happens if the TCP/IP socket is not connected when attempts
are made to send data. Applications tend to assume that any errors are fatal
and they just give up.
The link I included describes how to avoid these difficulties for NJE
by using a very different protocol which is specifically designed for sending
NJE over TCP/IP networks. I believe a similar approach is needed to do RJE
successfully, especially if it is to end up working across the internet rather
than just across a lab under ideal conditions.
Regards,
Peter Coghlan.