This PR should be self-explanatory. You can just point the emu to the
kernel bin file and the config generated by `make menuconfig` and it
should run. It can also be fed with a file containing test commands, to
show if the kernel sucessfully runs the shell and executes commands.
You can merge this into an extra branch if you want because this PR is
based on the `quick-fix-for-m68k-ext-instruction` branch.
I sucessfully tested it on the `mc68010` as a target, both with a minix
ramfs and a minix partition. It did not work with a ext2 ramdisk,
leading to a segfault, but I think it would be better if you look into
that because I don't know if the problem lies inside gloworm or inside
the emulator.
Before doing any more work on gloworm on my side it would be cool to add
this emulator as a test so that it would be just a `make` target or a
shellscript to test the kernel with different configurations. I would
like to have your input on that how it could be integrated into the
existing tests.
I am also looking into a ext2 image generator `make` target based on
`genext2fs` which does not require root rights, with the option to
generate images both for floppy or ATA partitions (without partition
table) and for tests (with a partition table).
---------
Co-authored-by: transistor <trans@jabberwocky.ca>
Co-authored-by: flox <flox@z-labor.space>
Fixed doc-deploy workflow by updated the deployment action versions, and
also renamed the integration tests and modified them to run the newer
[SingleStepTests ](https://github.com/SingleStepTests) testsuites
I had this WIP from over a year ago that found and fixed an issue with
instruction decoding for the 68k's EXT instruction. It's a hackish fix
for now, leaving the old code that doesn't get reached in place while
adding some early return decodes. I was able to boot gloworm with these
changes.
Included in this are changes to the github actions to update the rustc
version to 1.90 in order to fix some failures, as well as updating some
cargo packages for the same reason.
* Converted Z80 to use emulator-hal traits
* Updated emulator-hal
* Added a hacky Signalable trait to replace the Z80 signals
* Minor fixes
* Fixed timing tests and added no io tests option
* Fixed genesis Z80 bus issue
* Fixed addressing for BusAccess impl of Z80
* Fixed tests and clippy lints
* Added github actions for PRs
* Added some rustfmt::skip attributes
* Applied formatting
* Added rustfmt component in action
* Configured to use rustfmt version 2 which fixes some comment formatting
* Removed ready_for_review condition for github actions
Since it has the synchronize condition, it will update after each
commit, whether in draft or not, so I think this should be alright
I'm trying to extract the memory/bus interface, and pass it in at
the start of each cycle instead of having the BusPort permanently
embedded, which will allow migrating to emulator-hal.
The functional way would be argument drilling; passing an extra argument
to each function in the entire execution core. The problem is that it's
messy, so a solution that is still functional is to implement all of the
execution logic on a newtype that contains a reference to the mutable
state and the owned cycle data, and at the end of the cycle, decompose
the M68kCycleGuard that holds the reference, and keep the cycle data for
debugging purposes.
The debug loop that reads a command and does something is part of the
frontend's main loop, so that it can potentially update, even though
it doesn't actually work for minifb because the command input is a
blocking call. It's also not implemented in the pixels frontend.
At some point I'll make a web frontend.