At one point in the distant past, there was an unremembered
reason to prefer __libc_longjmp if it was available. It is no
longer needed, and has been removed from glibc in the most recent
versions.
Fixes#1088.
- removed a somwhat unlikely but possible division-by-zero
- in case the initial throttling calibration measures a slower cps rate than
the desired cps rate, check whether the measured rate is well below the
measured peak rate. If so, distrust the measured rate and instead use
half the peak rate as measured cps rate.
Otherwise (so measured cps is in the same ballpark as measured peak rate)
disable throttling
As initially reported in #815
The modem and host interface TX services should both be called from
the RTC device, but when the host interface was implemented the call
was not added.
This adds a new flag to the host interface UDP packages to indicate
the ready bit of the sender. The flag comes along all packets, but an
empty packet can be sent to change the ready status without
transmitting data.
The 1822 IMP-host interface carefully handshakes every bit
transferred. Thus the DMC facility can read messages piecewise. The
IMP uses this to read a 32-bit leader first, and process the rest or
the message in another round.
The IMP expects the 1822 end of message bit not to be set until after
the entire message has been read.
The host interface uses the UDP packet format from the modem
interface, with an additional flags word. Ensure the flags are
not included in the word count.
This is a trivial correction since if dependencies are missing at build
time what is missing is and how to fix it is properly described in
build time messages.
As reported in #1081
This commit fixes an issue that caused floppy diagnostics to fail if
the floppy drive unit was not attached. The 3B2 floppy controller has
a "force interrupt" command that should run whether or not the floppy
unit is attached to an image.
Historically on *nix platforms ifconfig was used to find the host system's
interface MAC address. This isn't always available on all systems since
it's being replaced by the ip command. We now only invoke commands
that exist.
- This change introduces a full refactor of the interrupt subsystem
for the system board (SBD) and the I/O bus (CIO). Interrupt decode
should now be significantly faster, and not require an expensive
calculation on every step.
- The TIMER device has been split into Rev 2 and Rev 3
implementations.
- The optional 3B2/400 Debug Monitor ROMs can now be booted by passing
the "DEMON" argument to the 3B2/400 simulator BOOT command. Any
of the following will cause the Debug Monitor ROM to be booted
instead of the standard 3B2/400 ROM:
sim> BOOT DEMON
sim> BOOT CPU DEMON
sim> BOOT DEMON CPU
The actual contents of the input ROM binary files and the contents of the
created arrays are unchanged.
Multiple ROM image include files can be included in the same source module
without the need for any #undef BOOT_CODE_SIZE, etc.
When multiple ROM images are included by the same source module,
#define variables with names BOOT_CODE_SIZE_n, BOOT_CODE_FILENAME_n
and BOOT_CODE_ARRAY_n will be defined.
- A prompt answer which exactly matches a topic name is given
preference over the potential ambiguity of other topics which start
with the same text.
- Prompt with the parent topic's prompt when a just displayed subtopic
has no subtopics.
- Allow either ^D or ^Z entered to act as EOF.
These changes reflect the behavior of the VMS help system which the
hierarchical help system is modeled on.
This change signficantly improves header hygiene in the 3B2 project by
moving global symbols out of 3b2_defs.h and into the appropriate
individual module header files.
Each compilation unit now includes:
- its appropriate matching .h file
- any other .h files necessary for linting and compilation
Each header file in turn includes 3b2_defs.h, which contains truly
global symbols, and which pulls in sim_defs.h and exports global
devices.