www.gryphel.com/c/minivmac/change/v36 - feedback

Mini vMac 36

Changes


What has changed in Mini vMac 36.04, compared to Mini vMac 3.5.8. This only lists changes that affect behavior, and so doesn't include cleanups of the source code.

:

default compile:

New features

Changed behavior

Bug fixes

not in default compile:

New features

Changed behavior

Bug fixes

Build System

:

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.

* If the ROM image is not found in any of the locations that Mini vMac looks, the error can now be recovered from. You can drag the ROM image onto Mini vMac, and booting will resume. (Any of the methods that would normally mount a disk image will work to get the ROM, such as the Open dialog.)

* The Cocoa version for OS X now looks for the ROM image in one additional place, “/Library/Application Support/Gryphel/mnvm_rom/”, which can be read by a Sandboxed application. To change “/Library/”, an administrative account is needed. (Sandboxing is off by default, there is a new build system option “-sbx 1”, to enable Sandboxing.)

Changed behavior in default compile

* The version numbering scheme has changed. Instead of “3.6.4”, it is “36.04”. The distinction between major and minor version numbers has not been useful. Instead there is now a single branch number. This allows more bug fix releases (up to 99 instead of up to 9) without taking more space in the version string.

* The Cocoa version for OS X is now normally signed with a certificate from Apple, so that the Gatekeeper feature of OS X will permit it to run by default. This was not done before because of some issues, and because those issues are still there, there is a new build system option “-sgn 0” to disable code signing.

* 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.

* In the help screen (Control-H), and also the speed control screen (Control-S), there is now a single space after the letters on the left instead of two.

* Mini vMac will no longer display “Abnormal Situation” reports, by default. There is a new build system option “-abr 1” to enable them.

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.

* 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.

* A memory leak is fixed in the Cocoa port for OS X, when exporting the clipboard. This was found by the Xcode Analyze feature.

* On Windows, if Num Lock is on, the operating passes virtual key codes like VK_NUMPAD0 through VK_NUMPAD9, but if Num Lock is off, it passes virtual key codes like VK_LEFT, VK_RIGHT, VK_UP, and VK_DOWN. A flag bit indicates whether VK_LEFT means the left arrow key or the 4 key on the keypad. So now Mini vMac will check that flag, and map the keys on the keypad to the emulated Macintosh keypad, regardless of whether Num Lock is on. (But this doesn’t fully explain the reported issue.)

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 “-lang srl” selects a Serbian translation of the user interface by SerbXenomorph.

* A new build system option “-sgn 0”, for the Cocoa version for OS X, to disable code signing.

* A new build system option “-sbx 1”, for the Cocoa version for OS X, to enable Sandboxing.

* 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 “-ekt <dst>” chooses which emulated key is toggled by the ‘K’ command of 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

* The game PowerMonger was reported not to work in Mini vMac 3.5.8, though it worked in 3.4.1. This was due to a bug in emulating the TRAPcc instruction in the Macintosh II emulation.

* If debug logging was turned on for the classic Macintosh port, and the log already existed when Mini vMac started, the log wasn’t cleared.

Build System

* The build system is now a cross platform standard C command line tool to generate a script to write configuration files, as was done prior to Mini vMac 3, instead of a 68k Macintosh program to generate files to compile. This should allow the Variations Service to be more efficient, and is also more convenient for experienced programmers. The trade off is in making it harder for others to compile their own variations.

* The default version of XCode chosen by the build system is now 9.4.1, the latest version supported. Since XCode is no longer used for official Mini vMac builds, there is no reason to default to the specific antique version previously used. Similarly, Microsoft Visual Studio 2017 is now the default version chosen for that development environment.

* Due to a compiler bug in Microsoft Visual Studio 2017, optimizations are turned off for this development environment.

* 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.

* 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.

gryphel logo, 1K

Back up to - Changes in Mini vMac versions


www.gryphel.com/c/minivmac/change/v36 - feedback
copyright (c) 2018 Paul C. Pratt - last update 10/17/2018