This adds support for the "framer" device, which is a USB-connected
device built around a Raspberry Pico that connects to a synchronous
line, either RS-232 or DEC "integral modem" coax connection. It
implements the framing portion of DDCMP: clock recovery for the
integral modem case, byte sync, and DDCMP frame handling including
CRC. The actual DDCMP protocol state machine, with its handling of
sequencing, timeout and retransmit, etc. is left to the host
software. All the design files for the framer may be found at
https://github.com/pkoning2/ddcmp .
This commit adds code to drive the framer from the TMXR library,
allowing it to be used either from simulated DMC-11 or simulated
DUP-11 devices. Both have been tested, using RSTS/E, RSX-11/M+, and
TOPS-20.
Fixed the one-digit limit on eth<n> device names, the limit is now 2.
This is all around the tmxr_set_get_modem_bits() API.
This change is non operational, but this clarification would avoid the
mistake made when someone uses or thinks about changing that
API in the future.
The prior change disabled returning DTR and RTS which the documented
interface was quite specific about actively returning.
The only user of this API which actually cared about DTR and RTS was
the in the pdp11_dmc module.
As reported in #951
As reported in #865
When instruction execution is stopped, forced mux output rate limiting
can't leverage instruction execution rate to time inter-character delays.
A direct sleep is used but that has a minimal granularity measured in
milliseconds. The prior default for a non speed controlled line was 10ms
sleep between character output. This has been changed to 1ms which
is reasonable for most situations. Meanwhile, since the remote console
facility uses TMXR, and it has the reasonable ability to generate output
when instructions are not being executed, this is better but not perfect.
Outbound connections are rare and most may have wanted explicit blocking
behavior, so no one noticed the missing non-blocking case.
Any place which did do outbound connects have explicitly added
SIM_SOCK_OPT_BLOCKING so that the prior behavior is preserved.
The SIM_SOCK_OPT_BLOCKING flag is no honored as it was originally
intended to be.
The effect here is to avoid clearing the UNIT_TM_POLL flag for devices which
call tmxr_set_line_unit or tmxr_set_line_output_unit on device reset.
As reported in #646
- Fix ineffective setting of RNG modem bit when line with DTR isn't available
- Fix logic clearing modem signal bits
- Add API to set/clear modem control behavior fo a specific line.
- return -2 status from tmxr_poll_conn when RNG has been enabled