Also provide a way to build so that the IPv6 fallback stubs can be tested on
systems with native IPv6 support when compiled with TEST_INFO_STUBS
defined.
Refactor in preparation for the addition of a Rev 3 simulator for the
3B2/1000 system.
This change also includes a full cleanup of the rat's-nest of includes
and externs that plagued the 3B2 simulator and made it difficult to
understand and maintain. Headers are now required in the following
order:
compilation unit -> "3b2_defs.h" -> {... dependencies ...}
Finally, HELP has been added to the CPU device.
Sequential devices (LPT, PTR , PTP, etc.) can be positioned to EOF.
Readable devices will encounter EOF on the next I/O operation.
Writable devices will append. Either APPEND or EOF produce
the same result independent of whether the device is opened for
oread or write.
Although these devices interpret a -A switch at attach time, they are not
sequential output devices and thus don't have an ambiguous interpretation
of the switch.
Incorrectly mentioned in #821
The -A attach time switch implicitly means to open files in append
mode.
Some devices used -A to indicate ASCII data or AUTOSIZE of disk or
fixed size tapes - DECtape. These devices are either read only devices
(Paper tape readers or card readers), so explicit forcing of the attach
to be -R avoids unexpected positioning errors. The random access
Disk and fixed sized tapes buffer the container contents in memory
so append mode isn't relevant, but care must be taken to assure that
the buffer reading starts at the beginning of the file without regard
to the explicit open mode.
As reported in #821
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.
This affects the output of some SCP commands (including help). The
results are cosmetic, but allows the simulator to provide correct descriptive
information.
Array REGister definitions have been made consistent by passing the
name of the array object. This allows proper sizing assessment
to occur in the register validation logic.
Some previously described array REGister initializers were not really
arrays. Some were structures and others were merely pointers to
someplace in memory that it was desirable to view as a scalar array.
Structures or other blob data should now use SAVEDATA. Virtual
arrays intended to be interpret some part of memory as scalar data
now use VBRDATA initializers.