Skip to content

BSVC version 2.2.1

Compare
Choose a tag to compare
@dancrossnyc dancrossnyc released this 15 Jun 18:00
· 15 commits to master since this release

This is BSVC version 2.2.1

BSVC 2.2.1 is the second major release since 1998, and is an update for modern
systems. This is a minor bug-fix update to 2.2, which was a "first pass"
release to get BSVC running on modern host machines. Specific changes 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++ 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.

The system is now working well enough that it can run the distributed samples,
as well as boot 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.

Administrivia

BSVC hosting has shifted to github and, as stated, the system has been
relicensed under the GPL v2.1.

Additionally, the mailing list has moved and been split into separate 'users'
and 'announce' lists: