This commit introduces dozens of changes to make the 3B2-700 simulator
fully functional and ready for wider use. In addition to 3B2-700
availability, this commit includes a tremendous amount of refactoring
of the 3B2-400 and common code to make the project structure easier to
maintain and reason about.
Invoking make with BUILD_SEPARATE=1 on the make command line or
defined as an exported environment variable will cause simulator source
files to be compiled separately. This option avoids long simulator build
times when actively developing changes or new modules to a simulator.
The GCC documentation explicitly says not to use that option
when -flto is used, and since that is the only place where
the makefile was using it, remove it to conform to the
documented rules.
This change allows CI builds to fail without detailed viewing of build output
for gcc and clang builds (all modern compilers). Thus forcing PR submitters
to find these problems before PRs are merged. This is done by compiling
with -Werror for these compilers.
We don't know how to do this for other compilers which may be able to use
the makefile, so warnings there will still proceed to build successfully.
- When dependencies needed for the specified build target(s) are not
all available, display explicitly what is package(s) are missing for the
current platform's package manager. Ask if the build should proceed
or if the missing pieces should be installed first. If the user wants to
install the missing package(s) first, then show them precicely what
commands are needed for that package manager on that platform.
If the platform is macOS and the package manager is HomeBrew, then
automatically install missing packages and perform the initially desired
build. All other package managers require root access, so the commands
the user needs to enter to install the missing packages and to restart the
build are displayed the build exits.
- Explicit support provided for
1) HomeBrew and MacPorts on macOS,
2) apt AND yum on various Linux distributions
3) pkgin on NetBSD
for Debian and
Compiled in support is preferred over dlopen efforts with a fallback to
printf/fgets when neither is available at compile and runtime.
All platforms support file path expansion on command entry of tab characters
- Avoid explicit search for font file (which is now done at runtime
activation of the display panel)
- Retain ability for FONTFILE to be explicitly specified on the make command
- General cleanup of codebase
- Fixed condition codes m6800.c from Roberto Sancho Villa
- Add additional FDC lfd-400 from Roberto Sancho Villa
- Add additional OS's (FLEX 1.0, FDOS 1.0, DOS68, MiniDOS, and MiniDOS-MPX)
to software support
- Add additional disk formats to software support dc-4.c from Roberto
Sancho Villa
- Add CPU history
- Fix LOAD/DUMP to support binary and hex
- Fix fprintf_sym to disassemble 6800 code correctly
- Add EXAMINE/DEPOSIT to CPU Memory
- Fixed disasm to space the register
- Add SET_FLAG(IF) to IRQ – fixed error in handling IRQ from
Roberto Sancho Villa
These devices start disabled and will be that way in essentially all
working systems, but there apparently was a DECnet Phase V
support for this device, so it is added to all systems. The DPV
should now be readily testable.
As mentioned in #1152. That PR will fix the DUP device.
Some dependent packages on some platforms may also define HAVE_DLOPEN
and that definition may have different syntax or semantics. This change
avoids the potential symbol conflict.
As reported in #1098
For some strange reason, Ubuntu 21.10 delivers various libraries as
either direct link libraries (".a") or shared objects (".so") where
historically essentially everything was shared objects..
- 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