The previous implementation of sim_load was riddled with little errors.
This change fixes those errors, improves user feedback, and limits the
allowable flags to '-r' and '-o'.
- Change grouping of simulators built in each job to be in
alphabetical order so reviewing failed or active github actions
are more easily identified in the log information.
MASM generates REP CS:MOVSW as:
REP
CS:
MOVSW
The Seattle Computer Products 8086 assembler allows the segment override
as a discrete opcode. This means that:
CS:
REP
MOVSW
is also possible, and in fact used in the SCP Monitor v1.6.
The i86 emulator was clearing the override flags when REPE/REPNE,
is encountered, which causes the segment override to be lost.
Verifying the behavior of a real 80286 processor in an IBM PC/AT
(5170) using MS-DOS 6.22 DEBUG shows that both instruction sequences
yield the desired segment override.
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.
Partial reading is needed to properly read common archive images found
on bitsavers and elsewhere which were made from QIC devices which must
read multiples of 512 bytes at a time.
These changes were merged from the 3b2-700 commit into the SCSI code here
Comments thoughts from Mark Pizzolato:
- This logic will work only with some archived QIC tape images that
happen to contain only 512 byte records. According to the master
archiver (Al Kossow) QIC tapes have been archived with varying
record sizes which are multiples of 512 bytes. The logic in sim_scsi
should handle reading 512 byte chunks from logical tape records
which are multiples of that size. This logic does not do that.
- Produce reasonable SHOW output for each respective type
- Changing a device disk<->tape sets disk and tape format to default values
- Don't allow disk oriented modes to be set for tapes (autosize, autozap
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.
Also synchronize Window Event pump and command input thread startup
before counting on their use.
Previously the Windows GUI startup happened too early (in the power on
device reset of all DEVICES) and it didn't consistently stabilize before
proceeding. A quick exit after the RegisterSanityCheck activity would
sometimes hang and builds would never complete.
- Configure run on push and pull requests
- Use new macos and ubuntu OS images
- Add missing simulators from the build list
- Add potential LTO option for makefile builds
* AltairZ80: SS1: Fix disable after reset.
The CompuPro System Support 1 could not be disabled after enabled and
used due to timers causing it to be busy. Reset properly so that "set
ss1 disabled" works after reset.
* AltairZ80: wd179x: Properly reset 179x state.
* AltairZ80: M68K: Fix compile with VS2008.
* Musashi: Fix compilation with Visual Studio 2008.
* AltairZ80: M68K: Resolve warnings in softfloat.
* AltairZ80: Add headers to .vcproj
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.