BSVC version 2.2.1
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: