What has changed in Mini vMac 36.00, compared to Mini vMac 3.5.8. This only lists changes that affect behavior, and so doesn't include cleanups of the source code.
not in default compile:
New features in default compile
* The new ‘P’ command of the Mini vMac Control Mode copies to the clipboard (of the real computer, not the emulated computer) a string containing the options describing this variation of Mini vMac.
Changed behavior in default compile
* The URL in the Mini vMac about message is now the main Gryphel Project page, rather than the Mini vMac page, mostly since it is shorter, in case anyone tries to type it in from here.
Bug fixes in default compile
* Using Macsbug to step through code (with Command-S or Command-T) did not work properly in Mini vMac 3.5.x. An optimization to the main cpu emulation loop was not valid when the trace flag gets set, so the interrupt could happen one instruction later. I found a way to fix it which doesn’t change the optimized main loop, but just the code before and after. But it can change the timing of other kinds of interrupts by one instruction, potentially causing subtle differences in behavior anywhere.
* The OS X Cocoa port now tries to work around Apple’s Path Randomization misfeature added in macOS Sierra (10.12). If an application that Apple thinks is trustworthy is bundled together with malicious library code in the same folder, the malicious code may be run by the application. The silly way that Apple has chosen to prevent this is to in effect move the application somewhere else before running it, so it can’t find the library code. It can’t find anything else in the application’s folder either, which is a problem for Mini vMac, which looks for things in its folder, such as the ROM image file. So now the Cocoa port of Mini vMac will try to find the original location of the application, and use that instead of the location it is running from, when looking for the ROM image and other things. (Mini vMac doesn’t look for external library code, so Path Randomization has no benefit.) This is done using some undocumented SecTranslocate calls as suggested by “Objective-See” and Jeff Johnson.
* On a Retina screen in OS X, the window frame of Mini vMac would be drawn in low resolution. The Cocoa port now adds the key NSHighResolutionCapable to the Info.plist file, which seems to fix this. Thanks to Ryan for this fix.
New features not in default compile
* A new build system option “-lang cat” selects a Catalan translation of the user interface by ArduinoXino.
* A new build system option “-lang cze” selects a Czech translation of the user interface by Anonymous.
* A new build system option “-gse 1”, for the Cocoa version for OS X, which on computers with more than one GPU allows the operating system to change which one is used. Otherwise on a MacBook pro, it is reported that the higher power discrete GPU is always used instead of the lower power integrated GPU, and that besides wasting power for no noticable benefit, it also takes time to switch on the discrete GPU when Mini vMac starts. “-gse 1” should probably become the default in the future. But I don’t have a MacBook pro to test it on, and I have a few questions about it.
* New build system options “-hcr, -hcg, and -hcb” select the initial value of red, green, and blue components of the highlight color in the Parameter RAM. The “GetPRAM” tool can be used to get values for these options. This was requested by Karl.
* New build system options “-alc, -lcy, and -lcx” allow manually setting the location fields in the Parameter RAM. The “GetPRAM” tool can be used to get values for these options.
* New build system options “-atz, -lcd, -lczs, and -lcz” allow manually setting the time zone fields in the Parameter RAM. The “GetPRAM” tool can be used to get values for these options.
* The new build system option “-km” changes the mapping between keys on the real Keyboard and keys on the emulated Keyboard, or the Mini vMac Control Mode.
* The new build system option “-svd 0” disables the save dialog for OS X and Windows when exporting a file (as used by the Mini vMac extra ExportFl and other tools). Instead the exported file is saved in a folder named “out” without a dialog, as was previously done in the Linux version. This makes it easier to run Mini vMac in an automated script and get results out.
* The new build system option “-iid 1” enables an Insert Ith Disk Image feature. When this feature is enabled, if the Control key is held down and a number key from ‘1’ to ‘9’ is pressed, then Mini vMac will try to mount a disk image named from "disk1.dsk" to "disk9.dsk" in the folder containing the application.
This is the same series of disk image names that are automatically mounted when Mini vMac is launched. But it stops at the first image not found. So if you leave a name unused, then you can use a control-number key to mount disks after launch. Or, you can use a control-number key to remount a disk that was automatically mounted at launch and then later ejected.
One example use is if you have one copy of Mini vMac running a development environment (such as MPW) that is used to compile a program to a disk image. The disk image is then unmounted and mounted on another copy of Mini vMac running a testing environment. If the compiled program crashes badly, the development environment is not disturbed. The control-number key feature makes it easier to move the disk image back and forth between the two copies of Mini vMac.
* The new option “-eci 0” disables the ‘I’ command of the Mini vMac Control Mode, which presses the emulated Interrupt Button. In a future version, it may be disabled by default. (In the original Macintosh, the Interrupt Button was disabled by default. You needed to install the “Programmer’s Switch” to use it.)
* The new option “-ecr 0” disables the ‘R’ command of the Mini vMac Control Mode, which presses the emulated Reset Button. In a future version, it may be disabled by default. (In the original Macintosh, the Reset Button was disabled by default. You needed to install the “Programmer’s Switch” to use it.)
* The new option “-eck 0” disables the ‘K’ command of the Mini vMac Control Mode, which toggles the emulated control key. In a future version, it may be disabled by default. (The original Macintosh did not have a control key. And, using this command accidently would be confusing.)
Changed behavior not in default compile
* None Yet.
Bug fixes not in default compile
* None Yet.
* The user interface of the build system is updated. It now implements Undo. There are commands to Cut/Copy/Paste using the Host Clipboard. It fixes an issue with autoscroll. A blinking busy indicator is implemented.
* The new option “-br” is for future use and currently has no effect. It tells the build system that the requested options were from a specific branch (version) of Mini vMac. The new ‘P’ command of the Mini vMac Control Mode gets the options from an existing variation, and includes this Branch setting. If the default settings have changed from since that older version, then the build system will use defaults of the old version, rather than the current defaults. So the newly generated variation behaves as close as possible to the earlier variation.
The ‘P’ command retrieves the options in a canonical form. It always generates a “-br” option for the current version, rather than copying any “-br” option passed to the build system.
* If the new option “@” is used, no developer options are permitted to the right of it. This will allow the Variations Service to allow the user to specify options as text without the chance of breaking the service.
* The new option “-no-src 1” causes the build system to only generate the configuration files and not save the source files. When the options “-cfg 1” and “-all-src 1” are used together, the generated source folder is identical for all variations. So it could save time to not generate it for every variation.
* The new option “-ef 1” causes the build system to write error messages to a text file, instead of displaying an alert dialog. This will allow the Variations Service to allow the user to specify options as text, and get any error messages, such as about bad syntax, back to the web page shown to the user, rather than breaking the service.
* When the build system is told to write error messages to a file and quit when finished, there is no chance to select the text of where the error was found. So error messages have been changed to always include the name of the option with the problem. This allows the Advanced Variations Service to give more useful errors.
* If the new option “!” is used, options to the right of it will override options to the left of it. Normally it would be an error for the same option to be used twice. It is still an error for an option to be used twice on the same side of ‘!’.
* The new option “-cte 1” causes the build system to generate source code that causes the compiler to generate an error. This is for testing the variation service.
* If the new option “-bte” is used, the build system will treat it as an error. This is for testing the variation service.
If you find Mini vMac useful, please consider helping the Gryphel Project, of which it is a part.
Back up to - Changes in Mini vMac versions