This is BSVC version 2.4.6
This is a maintenance release, fixing a typo in a Makefile.
BSVC 2.4 is the fourth major release since 1998, and is an update for
modern systems. This release fixes major bugs in the assembler and
makes it compile without warnings. -Wall and -Werror are now enabled
for C code as well as C++. This point release also fixes a bug deleting
non-dynamic member variables at exit, starts using C++11 smart pointers
and fixes permissions on installed data files so that they are not executable.
Specific changes since the 1998 release include:
- Relicensing under the GPL v2.1.
- Converting the assembler to ANSI C11, adding function prototypes,
and reformatting the source code. - Converting the rest of the system to ANSI C++ and starting to use
C++11 features (auto, lambdas, etc). - Replacing custom linked-list code with STL containers.
- Replacing most uses of C-style strings with std::string objects.
- Reformatting the C++ code with 'clang-format' and removing lots of
extraneous comments. Copyright information is now centralized in a
file in the distribution top-level. - Replaced the recursive Makefile build system with a single non-recursive
Makefile. The build system now does real dependency analysis. - Many code-cleanups throughout the system: it now builds C and C++
code with -Wall and -Werror. - Removing Makefiles for obsolete platforms (Ultrix, HP-UX, etc).
- The sim68000 and sim68360 code was reogranized under a single directory
tree and now share devices and the S-record loader. - Move the page up and page down buttons in the memory viewer closer to
left side of the window. - Fix an uncaught exception in updating listing code in the UI when
there is no listing. - Additionally, several serious bugs in the simulator were fixed:
- Updating for 64 bit host systems: Negative offsets in address register
indirect with displacement mode would cause bus errors on systems with
64-bit 'unsigned long', since the sign-extension code assumed 32-bit
longs on the host and the result did not overflow properly (thus
yielding an 'address' outside of the 32-bit address space). Fixed by
using a properly sized type for simulator addresses. - Events were being lost in the event handling code due to the
'myIterations' variable quickly growing so large that the number of
microseconds to use when searching for the next event to handle became
negative. Fixed by rewriting the event handler in terms of nano-seconds
and clamping the minimum time delta per Check() invocation to 1ns. - Interrupts received when masked by the processor were lost, as
the interrupt request handling member function would acknowledge the
interrupt immediately instead of marking it pending. Fixed by changing
the interrupt request routine to place the incoming interrupt onto a
priority queue of pending interrupts, and changing the service routine
to take the top entry off of the queue on each invocation. This matches
the 68000 specification. - The system is now working well enough that it can run the
distributed samples, as well as boot and reliably run a port of the
Xinu (http://www.xinu.cs.purdue.edu) operating system. Code compiled
with GCC and coverted to S-records using objdump runs trivially.
- Updating for 64 bit host systems: Negative offsets in address register
Administrivia
BSVC hosting has shifted to github and, as stated, the system has been
relicensed under the GPL v2.1. BSVC remains copyright Bradford Mott.
Additionally, the mailing list has moved and been split into separate
'users' and 'announce' lists:
- [email protected]: Announcements (low traffic)
- [email protected]: Questions and general discussion