- The previous fix for STRCPY introduced a new bug. STRCPY must always
copy the final NULL terminator of the string, but must NOT increment
the source or destination pointers for the NULL terminator.
- The CTC simulation did not correctly support streaming mode, which
can in some cases request reads that are not on 512-byte block
boundaries.
- To begin to support System V Release 4 UNIX, the NI card (called EMD
under SVR4) needed to support several more CRC codes for pump code.
This change adds support for the WE32106 Math Acceleration Unit (MAU).
The WE32106 is an IEEE-754 1985 compatible floating point math
acceleration unit that was an optional component on the 3B2/310 and
3B2/400.
The MAU is implemented using software floating point routines. As
always, there may be bugs, but the MAU currently passes extensive
floating point tests with exactly the same results as a real 3B2/400
equipped with a physical MAU, so I hope these are few.
Adds a skeleton framework for CIO ("Common I/O") feature cards. The
first feature card to be implemented will be the "PORTS" serial MUX.
Part of this support involved reworking IRQ handling in the CPU. It
now respects both IRQ Vector and IPL.
This change also removes all 'assert(0)' calls from the simulator and
replaces them with generic "Simulator Error" halts. These should only
happen if there's a genuine logic error lurking somewhere.
Clock reset was not being handled gracefully at all, leading some
diagnostic tests not to pass, or not to pass consistently.
This change will "kick" the system clock whenever the timer divider is
reset, so the new divider is picked up immediately.