Happy New Year!
NQD dirty boxes, generic code + while we are at it, also rename a few NQD related NativeOps.
Add patches for native GetNamedResource() and Get1NamedResource(). This will be useful to fix a bug in the AppleShare extension (see DRVR .AFPTranslator in Basilisk II) Unrelated improvement: call sheepshaver_cpu::get_resource() directly, don't get it through another global function.
Minor tweaks to support compilation of ether.cpp within MacOS. i.e. mostly migrate the Ethernet driver to the MacOS side. This is enabled for DIRECT_ADDRESSING cases. I didn't want to alter much of ether.cpp (as it would have required to support that mode). Of course, in REAL_ADDRESSING mode (the default) and for debugging purposes, the old driver is still available.
Use BUILD_SHEEPSHAVER_PROCEDURE to allocate static procedures into the SheepShaver globals. Fix build of sheepshaver_glue.cpp without JIT.
Try to explain the SheepShaver globals
new SheepShaver globals layout
Implement Direct Addressing mode similarly to Basilisk II. This is to get SheepShaver working on OSes that don't support maipping of Low Memory globals at 0x00000000, e.g. Windows.
Don't handle XLM_IRQ_NEST atomically in emulated mode. That's useless since this variable is modified only within a single thread and interrupts are not handled asynchronously.
Basic fillrect/invrect NQD. Code may need to be factored out somehow. Verify that bitblt NQD transfer modes are really CopyBits() ones [MB5].
Start Native QuickDraw acceleration
Make SheepShaver work with OS 8.6 out-of-the-box with no extra patch for the time being. i.e. ignore writes to the zero page when faking SCSIGlobals
Generate PowerPC code wrapping GetResource() replacements. That way, it's a normal PPC function invocation that can be JIT compiled to native code instead of nesting execute() calls which may lead to use the interpreter (this took around 11% of total execution time on boot, downto 3%). Also, optimize some SheepShaver EmulOps and actually report non-CTI.
Also cache native routine descriptor instead of recreating them at each invokation to ExecuteNative().
Add XLM_ZERO_PAGE globals which points to a read-only page with all bits set to zero.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.