- handle mmap access and port io directly in rust
- call handle_irqs after port/memory writes, rather than from the
interrupt hw directly; this makes it more obvious that handle_irqs is
dangerous as it can change control flow
state images produced by this version are not backwards-compatible (older stage images will still be working)
- reduced clutter and made control flow more comprehensible
- moved initial delay of 100ms to expect(), needed for keyboard buffer "cooldown" in between commands
- changed return value of V86.wait_until_vga_screen_contains() to boolean with true:success and false:timeout
- removed "throw" and "finally" statements in V86.wait_until_vga_screen_contains()
- removed "finally" statements in exec_test() to simplify cleanup code
- removed "export" statements (forgotten leftovers from a silly experiment)
- simplified parsing of options.timeout_msec in V86.wait_until_vga_screen_contains()
- changed line-matching function to string.startsWith()
- switched from Element.innerHTML to Element.textContent in html assignments
- relaxed rules for handling of command in expected[] in expect()
- removed unused argument "fdc" from FloppyDrive constructor
- renamed variable "tm_end" to "end"
Moved tests using optional image files
/images/freedos-fds/freedos.boot.disk.160K.img
/images/freedos-fds/freedos.boot.disk.180K.img
/images/freedos-fds/freedos.boot.disk.320K.img
/images/freedos-fds/freedos.boot.disk.360K.img
/images/freedos-fds/freedos.boot.disk.640K.img
/images/freedos-fds/freedos.boot.disk.1200K.img
from tests/api/floppy.js to tests/full/run.js.
Dropped redundant 720K and 1440K FreeDOS boot floppies, these formats are already covered in tests/full/run.js.
If the command string passed to expect() is non-empty it is also used as the first expected response line, but it must be matched against the screen line using .endsWith() because any text preceding the command (usually the shell prompt) is unknown. All other response lines must now match exactly their respective screen lines.