This change is not actually necessary on Linux, but a bug in Windows
Subsystem for Linux (WSL) doesn't honor tcsetattr() with ICANON disabled
and VMIN and VTIME set to 0 should return immediately when no input data
is available, but it doesn't. Setting the fd to non blocking produces
equivalent behavior.
The -F debug switch can now be used to avoid the repetitive message
summarization. This will trade off debug log file size vs CPU cost to
summarize the output.
When the console is connected to a serial port or telnet sessions enable
speed setting, the bits being output are now paced a the desired speed.
Multi-line mux I/O is also correctly rate limited on all lines.
This should address the problems described in #545
- Add sim_panel_mem_deposit_instruction API
- Properly shutdown debug activities when more than one panel is active
- Properly unwind socket facilities when more than one panel is active
- More rigorously unwind things when a panel is destroyed while its
simulator is running.
- Give explicit session request traffic priority over potentially pending
repeat command processing.
- EXPECT HALTAFTER=nnn
--> sets "nnn" as the global/default value
- EXPECT "some string"
--> uses the "nnn" global/default value
- EXPECT HALTAFTER=ttt "some string"
--> uses the "ttt" temporary value for this EXPECT only
and:
- SEND AFTER=nnn
--> sets "nnn" as the global/default value
- SEND "some string"
--> uses the "nnn" global/default value
- SEND AFTER=ttt "some string"
--> uses the "ttt" temporary value for this SEND only
(and similarly for the SEND DELAY value).
Make REM-CON units dynamically allocated and use symbolic names for the
respective different roles they play. This will make interpreting the existing
code easier and ease future extensions.
The original model started with two array variables each with one element
for each potential concurrent remote console. As functionality was added
the number of arrays grew to an unreasonable number. This change
merely gets rid of the separate arrays of per connection info and uses a
single array of REMOTE struct which contains all the per connection info.
This will make future functional extensions much cleaner.
Adds:
1) Simulator side execution of register update activities at an interval
specified in usecs. Rates in excess of 1000Hz should be achievable
for locally connected frontpanel applications.
2) New API for simulators to describe the register state available in
the simulator. If all of a the state which is potentially interesting
to front panel applications is always present in the variables
described by simh REG structures, then frontpanel API access to
that data can be more efficiently provided.