* Add WebSocket console transport (WSCNSLPORT) alongside the existing telnet console
* Added documentation and fix for vs2008
* Added IronTerm as a webterminal reference
* Fix MOD_RULES2.msvc to include wscnsl
* chore: run codespell on source/header files
Fixes most reported typos discovered by codespell (while trying to be
unopinionated about American vs. British English).
* chore: run codespell on build/readme files
The root cause of the bug was in my incorrect #define of MAX_TOD_UPDATE_USECS in featall.h, which was #defined to 1000000 (one million) instead of 999999, thereby causing the TXF rubato_thread to do a usleep for 1000000 (one million) microseconds, which, being invalid, was causing it to not sleep at all and instead return immediately with an error, causing it to loop continuously without sleeping, consuming all available host CPU due to the timer threads being the highest priority thread in Hercules.
comm3705.c also had a similar bug wherein it was using "min(1000000,delay)" for one of its usleep().
In addition to fixing the previously mentioned bug, I have also introduced a new USLEEP() macro which calls a new "herc_usleep()" function that will report any usleep() error that might occur. (I purposely did not code it to fix (hide) the problem but rather to just report it so that the caller can thus be fixed to not make invalid usleep calls.)
This should close GitHub Issue #589 "Auxiliary threads eating up CPU time" as well as the long running "CPU utilization on Raspberry Pi" thread that took place in the main Hercules group recently.
New 'tf' command to direct all instruction and I/O tracing to a disk file instead of immediately formatting and displaying on the console (which slows down Hercules execution to a CRAWL). Only the raw data is written to the trace file and a new 'tfprint' utility is provided to produce the actual trace report (identical to what would normally be displayed on the Hercules console).
Closes issue #33
Closes#536.
Note: also added support for "ctc debug" command by itself (i.e. without any other operands) to LIST the current CTC debugging state for all CTC devices.
When debugging a given problem, it is oftentimes very handy to sprinkle PTT tracing statements throughout the code being debugged. Having an existing PTT tracing class already defined for you (rather than having to manually define it yourself each time) makes doing so faster and easier.
[skip travis]
DON'T automatically convert specified value to uppercase (as doing so tends to hide errors). Instead, only accept values containing 0-9 and/or uppercase A-Z, just as the Principles of Operation says.