Mini_vMac.txt Mini vMac emulation tests - valid as of v3.2.3 I had to see it for myself: MnvM_bld uses the -DABEEF addr to save files on the native system! It generates an uncompressed StuffIt archive. === Mini vMac Pros (implemented with correct considerations): RESET sends does virtual reset signal to devices -- correct timing needs to be 520+ cyc. NEGX (zero flag) and DIV (neg. set with overflow) are correct. Trace and NMI emulation appear normal (required for debugging). Supports DiskCopy, runs HyperCard 2.4.1 (till you get to '020+ ops with some externals). === Cons (pains in the butt): You have to reload disk images after restarting. You cannot load ISO/CD/Partitioned disk images--something most Mac emulators today offer, even SoftMac. Even with earlier versions of Basilisk II you can do a 'cdrom' (read-only) line in the _prefs. There's no PRAM file stored (easily implemented by a programmer). This is Mini vMac, not the full-blown vMac, which did this. I keep expecting it to carry Clipboard text <-> win32--B2 feature. The emulator sets the clock on load, but the timer doesn't independently maintain it (as it should with _Microseconds)--the time, displayed on the menubar, lost 20 minutes just by using MacsBug for a while...it automatically got fixed moments later (delayed usage of _ReadXParam, I think). --- Bugs Mini_vMac Keypad '*' and kp-'+' are not emulated correctly, KP-Enter does CR. MINEM68K.c is named after MINemum Emulator for a reason: Bad dest. addr. in exception frame for unimplemented instructions. BSR.L generates 'illegal' exception with odd address (correct-1). Extended complex modes stop four bytes into the instruction. DoCodeCallMorRtm does not have the Use68020 condition around it. The 'module' instructions are 68020-only, and are unimplemented on 68030-60. A Use68020_Only, or preferably a bit mask macro (for all supported CPU types to be compiled) should be defined. CD Match With exception to some functions that require 32bqd, this system identifier app runs on 68000...until the #25 error. === Further Mac emulation The 68020 has a minor code cache (only good for tiny instruction loops). This should be taken into mind for Use68020+. See sysinfo/macemu.txt for further reading...as if I have any credibility. === Missing code In compiling the newer code for Mini_vMac, a number of things were missing in the includes: ui6b/si6b/ui6r/si6r, #if EmADB check to make sure header is #include'd, abd I can't find VIA2_ORA_CanIn. === Optimization notes Thick code, unnecessary: either Zero or Carry/AuXiliary are set with NEG (X flag on non-zero), overflow only in largest negative. Multiple tables and functions are used to assess both instruction opcodes and cycle counts (accurate enough for most/all programs). Since most instruction codes on the 68000 are only 2-6 bytes, a single, pre-calc'd table can be used for the 16-bit opcode; extensions (adding cycles) would be handled in the process. FCE Ultra does the first (2A03) opcode byte all-out in one switch, with one table for all initial timings. The DivL instruction only uses the slow subtraction method. While this is close enough to the microcode found in the equivalent processor(s), the subtraction process only has to be done for the top 32 bits (use the 32 bit divide afterward). Most or all of the supported compilers support long-long division anyway.