Releases: Thraetaona/EXACT
Patch (fixes bug with AAM & AAD; reduces redundancy)
Because both AAM and AAD are two-byte instructions, hardcoding the second "operand" as 10 meant that the second byte was never accounted for. Additionally, real Intel 8086 CPUs had an undocumented behavior that was not implemented in EXACT: the second byte in AAM and AAD (which was normally 0x0A
) was actually the "operand" and could be something other than 10, too.
By reading the next code byte and stepping through the instruction pointer once, we can replicate the undocumented behavior and also fix the emulator's own length mismatch bug.
I also noticed that this "reading over byte/word and stepping the IP register" functionality was repeated quite often across the codebase, so I placed them under the $fetch_byte
and $fetch_word
boilerplate functions, reducing redundancy in lots of cases.
Patch (Fixes loading issues)
Firefox has recently had issues with script tags created before the body tag, as a fix simply putting the script tag at the bottom of the html file before (So that the body elements are created before being accessed) solves these issues.
Other than the trivial fix to index.html, everything else is identical to the 1.0.0 Stable release.
First stable release
First stable release of EXACT; supports all OpCodes, Including illegal ones (However, Interrupts and Instructions that require physical hardware access are not available).
To test and run locally simply execute the python script ("serve.py") and navigate to "http://localhost:8086/".
A few (very simple) pre-built examples have also been packaged with this release
Edit 2/1/2021: Firefox recently had issues with script tags created before the body tag. Patch Release