- Previous changes made to support 32V's 60HZ clock tick introduced changes
which didn't properly handle increments and interrupt generation while single
stepping the timer.
- The icr_rd routine returned an incorrect value when interpolation was
necessary due to a missing cast when converting from double to uint32.
- Properly start the timer from the current state of the interval count register
when the timer was previously stopped.
Reworked all priority adjustment code to leverage a new
sim_os_set_thread_priority API which is coded to use pthreads or OS
priority adjustment APIs as necessary.
The new RUN/GO command syntax supports a stop criteria.
There are two forms of stop criteria:
1) A normal breakpoint (which exists only until it is encountered)
2) A user specified output string is emitted by the simulated system.
Command syntax is:
RUN|GO {START-PC-VALUE} {UNTIL breakpoint|"output-string"}
Multiple rules with the same match string are processed in the order the EXPECT
commands are entered. NOEXPECT will remove all pending EXPECT rules which
have the match string provided on the NOEXPECT line.
These changes facilitate more robust parameter type checking and helps
to identify unexpected coding errors.
Most simulators can now also be compiled with a C++ compiler without
warnings.
Additionally, these changes have also been configured to facilitate easier
backporting of simulator and device simulation modules to run under the
simh v3.9+ SCP framework.
The SHOW FEATURES will enumerate all devices in a simulator and for each of
them display the device specific description if one is available.
This change allows the description to be optionally visible for a single device
displayed with SHOW DEVICE.
The previous change in handling or SCPE_EXPECT transformed it to SCPE_OK
to avoid unexpected exiting or condition trapping. This didn't allow the
SCPE_EXPECT reason to be display if verbose mode was on.
The exploit purpose of an EXPECT command is to return control to the SCP
interpreter when data output matches the expect condition; This will then
allow either related action commands specified on the EXCEPT command to
be performed or subsequent commands in the running command file.
Prior logic attempted to load the desired file from the current default directory and if that failed wrote the in memory boot code image to the desired file and then retried the desired load..
A user can still explicitly load a ROM image with a "LOAD -R romfile.bin" command prior to a BOOT attempt if they want to test or otherwise run with a different ROM.
Altered the calling sequences to fprint_sym and parse_sym in ex_reg and dep_reg to merge user-defined register flags with the radix in the addr parameter. This allows the print and parse routines to identify the register or determine how it is to be handled. These are called in lieu of the standard print and parse routines if a register has REG_VMIO or at least one user-defined flag set.
Problem was the console storage output buffer was masked with a WMASK instead of a BMASK (it is only a 8 bit register).
Also, the input interrupt processing cleared the output interrupt state instead of the input interrupt state. This would only be a problem when interrupts are actually used instead of polled I/O.
This reverts commit 7c7b44e409.
The prior commit didn't work for static initializers. There are other ASCII dependencies in simh. They should all be solved together or not at all.