uvmac/docs/change/v36.html
2020-03-14 15:28:01 -04:00

1 line
18 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Changes in Mini vMac 36 </title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="canonical" href="v36.html">
</head>
<body>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="../index.html">minivmac</a>/<a href="index.html">change</a>/v36
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac 36 <!-- *<i>Beta</i>* -->
</h3>
<h3 align=center>
Changes
</h3>
<hr>
<p> 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. </p>
<p> : </p>
<p>
default compile:
</p>
<blockquote>
<p>
<a href="v36.html#feature">New features</a>
</p><p>
<a href="v36.html#modified">Changed behavior</a>
</p><p>
<a href="v36.html#bugs">Bug fixes</a>
</p>
</blockquote>
<p>
not in default compile:
</p>
<blockquote>
<p>
<a href="v36.html#compile_feature">New features</a>
</p><p>
<a href="v36.html#compile_modified">Changed behavior</a>
</p><p>
<a href="v36.html#compile_bugs">Bug fixes</a>
</p>
</blockquote>
<p>
<a href="v36.html#build">Build System</a>
</p>
<p> : </p>
<p> <a name="feature"> <b> New features in default compile </b> </a> </p>
<!-- A new feature is something you would not notice if you used
Mini vMac as you used it previously. If using it as you would previously
would behave differently, that is "changed behavior". -->
<!--
<p> * None Yet. </p>
</p>
-->
<p> *
The new &lsquo;P&rsquo; command of the Mini vMac
<a href="../control.html#control_mode">Control Mode</a>
copies to the clipboard (of the real computer, not the emulated
computer) a string containing the options describing this
variation of Mini vMac.
</p>
<p> *
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.)
</p>
<p> *
The Cocoa version for OS X now looks for the ROM image in one
additional place,
&ldquo;/Library/Application Support/Gryphel/mnvm_rom/&rdquo;,
which can be read by a Sandboxed application. To change
&ldquo;/Library/&rdquo;, an administrative account is needed.
(Sandboxing is off by default, there is a new build system option
&ldquo;<a href="../options.html#option_sbx">-sbx 1</a>&rdquo;,
to enable Sandboxing.)
</p>
<p> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> *
The version numbering scheme has changed. Instead of
&ldquo;3.6.4&rdquo;, it is &ldquo;36.04&rdquo;. 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.
</p>
<p> *
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 &ldquo;<a href="../options.html#option_sgn">-sgn 0</a>&rdquo;
to disable code signing.
</p>
<p> *
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.
</p>
<p> *
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.
</p>
<p> *
Mini vMac will no longer display &ldquo;Abnormal Situation&rdquo;
reports, by default. There is a new build system
option &ldquo;<a href="../options.html#option_abr">-abr 1</a>&rdquo;
to enable them.
</p>
<p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> *
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&rsquo;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.
</p>
<!--
(This code has been disabled)
<p> *
The OS X Cocoa port now tries to work around Apple&rsquo;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&rsquo;t find the library
code. It can&rsquo;t find anything else in the application&rsquo;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&rsquo;t look for external library code,
so Path Randomization has no benefit.)
This is done
using some undocumented SecTranslocate calls as suggested by
&ldquo;<a href="https://objective-see.com/blog/blog_0x15.html">Objective-See</a>&rdquo;
and
<a href="https://lapcatsoftware.com/articles/detect-app-translocation.html">Jeff Johnson</a>.
</p>
-->
<p> *
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
<a href="https://www.gryphel.com/c/mail/v8.html#m86">this fix</a>.
</p>
<p> *
A memory leak is fixed in the Cocoa port for OS X, when exporting the
clipboard. This was found by the Xcode Analyze feature.
</p>
<p> *
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&rsquo;t fully explain the reported issue.)
</p>
<p> <a name="compile_feature"> <b> New features not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> *
A new build system option
&ldquo;<a href="../options.html#option_lang">-lang cat</a>&rdquo;
selects a Catalan translation of the user interface by
ArduinoXino.
</p>
<p> *
A new build system option
&ldquo;<a href="../options.html#option_lang">-lang cze</a>&rdquo;
selects a Czech translation of the user interface by
Anonymous.
</p>
<p> *
A new build system option
&ldquo;<a href="../options.html#option_lang">-lang srl</a>&rdquo;
selects a Serbian translation of the user interface by
SerbXenomorph.
</p>
<p> *
A new build system option
&ldquo;<a href="../options.html#option_sgn">-sgn 0</a>&rdquo;,
for the Cocoa version for OS X, to disable code signing.
</p>
<p> *
A new build system option
&ldquo;<a href="../options.html#option_sbx">-sbx 1</a>&rdquo;,
for the Cocoa version for OS X, to enable Sandboxing.
</p>
<p> *
A new build system option
&ldquo;<a href="../options.html#option_gse">-gse 1</a>&rdquo;,
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,
<a href="https://www.gryphel.com/c/mail/v8.html#m89">it is reported</a> 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.
&ldquo;-gse 1&rdquo; should probably become the default in the
future. But I don&rsquo;t have a MacBook pro to test it on, and
I have a few questions about it.
</p>
<p> * New build system options
&ldquo;<a href="../options.html#option_hc">-hcr, -hcg, and -hcb</a>&rdquo;
select the initial value of red, green, and blue components
of the highlight color in the Parameter RAM. The
&ldquo;<a href="../extras/getpram/index.html">GetPRAM</a>&rdquo;
tool can be used to get values for these options.
This was
<a href="https://www.gryphel.com/c/mail/v5.html#m38">requested</a>
by Karl.
</p>
<p> * New build system options
&ldquo;<a href="../options.html#option_alc">-alc, -lcy, and -lcx</a>&rdquo;
allow manually setting the location fields
in the Parameter RAM. The
&ldquo;<a href="../extras/getpram/index.html">GetPRAM</a>&rdquo;
tool can be used to get values for these options.
</p>
<p> * New build system options
&ldquo;<a href="../options.html#option_atz">-atz, -lcd, -lczs, and -lcz</a>&rdquo;
allow manually setting the time zone fields
in the Parameter RAM. The
&ldquo;<a href="../extras/getpram/index.html">GetPRAM</a>&rdquo;
tool can be used to get values for these options.
</p>
<p> *
The new build system option
&ldquo;<a href="../options.html#option_km">-km</a>&rdquo;
changes the mapping between keys on the real Keyboard and keys on
the emulated Keyboard, or the Mini vMac Control Mode.
</p>
<p> *
The new build system option
&ldquo;<a href="../options.html#option_ekt">-ekt &lt;dst&gt</a>&rdquo;
chooses which emulated key is toggled by
the &lsquo;K&rsquo; command of the Mini vMac
Control Mode.
</p>
<p> *
The new build system option
&ldquo;<a href="../options.html#option_svd">-svd 0</a>&rdquo;
disables the save dialog for OS X and Windows when exporting a
file (as used by the Mini vMac extra
<a href="../extras/exportfl/index.html">ExportFl</a>
and other tools). Instead the exported file is saved in a folder
named &ldquo;out&rdquo; 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.
</p>
<p> *
The new build system option
&ldquo;<a href="../options.html#option_iid">-iid 1</a>&rdquo;
enables an Insert Ith Disk Image feature.
When this feature is enabled, if the Control key is held down
and a number key from &lsquo;1&rsquo; to &lsquo;9&rsquo; 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.
</p>
<p>
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.
</p>
<p>
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.
</p>
<p> *
The new option
&ldquo;<a href="../options.html#option_eci">-eci 0</a>&rdquo;
disables the &lsquo;I&rsquo; 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
&ldquo;Programmer&rsquo;s Switch&rdquo; to use it.)
</p>
<p> *
The new option
&ldquo;<a href="../options.html#option_ecr">-ecr 0</a>&rdquo;
disables the &lsquo;R&rsquo; 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
&ldquo;Programmer&rsquo;s Switch&rdquo; to use it.)
</p>
<p> *
The new option
&ldquo;<a href="../options.html#option_eck">-eck 0</a>&rdquo;
disables the &lsquo;K&rsquo; 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.)
</p>
<p> <a name="compile_modified"> <b> Changed behavior not in default compile </b> </a> </p>
<!--
-->
<p> * None Yet. </p>
<p> <a name="compile_bugs"> <b> Bug fixes not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> *
The game PowerMonger was
<a href="https://www.gryphel.com/c/mail/v8.html#m109">reported</a>
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.
</p>
<p> *
If debug logging was turned on for the classic Macintosh port,
and the log already existed when Mini vMac started, the
log wasn&rsquo;t cleared.
</p>
<p> <a name="build"> <b> Build System </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<!--
<p> *
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.
</p>
-->
<p> *
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.
</p>
<p> *
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.
</p>
<p> *
Due to a compiler bug in Microsoft Visual Studio 2017,
optimizations are turned off for this development environment.
</p>
<p> *
The new option
&ldquo;<a href="../options.html#option_br">-br</a>&rdquo;
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 &lsquo;P&rsquo; command of the Mini vMac
<a href="../control.html#control_mode">Control Mode</a>
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.
</p>
<p>
The &lsquo;P&rsquo; command retrieves the options in a
canonical form. It always generates a &ldquo;-br&rdquo;
option for the current version, rather than copying
any &ldquo;-br&rdquo; option passed to the build system.
</p>
<p> *
If the new option
&ldquo;<a href="../develop.html#option_at">@</a>&rdquo;
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.
</p>
<!--
<p> *
The new option
&ldquo;<a href="../develop.html#option_no_src">-no-src 1</a>&rdquo;
causes the build system
to only generate the configuration files and not save the source
files.
When the options
&ldquo;<a href="../develop.html#option_cfg">-cfg 1</a>&rdquo;
and
&ldquo;<a href="../develop.html#option_all_src">-all-src 1</a>&rdquo;
are used together, the generated source folder is identical for
all variations. So it could save time to not generate it
for every variation.
</p>
-->
<!--
<p> *
The new option
&ldquo;<a href="../develop.html#option_ef">-ef 1</a>&rdquo;
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.
</p>
-->
<!--
<p> *
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.
</p>
-->
<p> *
If the new option
&ldquo;<a href="../options.html#option_xclm">!</a>&rdquo;
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 &lsquo;!&rsquo;.
</p>
<p> *
The new option
&ldquo;<a href="../options.html#option_cte">-cte 1</a>&rdquo;
causes the build system to generate source
code that causes the compiler to generate an error. This
is for testing the variation service.
</p>
<p> *
If the new option
&ldquo;<a href="../options.html#option_bte">-bte</a>&rdquo;
is used, the build system will treat it as
an error. This is for testing the variation service.
</p>
<p> : </p>
<p> If you find Mini vMac useful, please consider
<a href="https://www.gryphel.com/c/help/index.html">helping the Gryphel Project</A>,
of which it is a part. </p>
<a href="https://www.gryphel.com/index.html">
<img src="https://www.gryphel.com/d/gryphel-32.gif" width=32 height=32 border=0
alt="gryphel logo, 1K"
>
</a>
<p> Back up to - <b><a href="index.html">Changes in Mini vMac versions</a></b></p>
<hr>
<div>
<i> <a href="https://www.gryphel.com/index.html">www.gryphel.com</a>/c/<a href="../index.html">minivmac</a>/<a href="index.html">change</a>/v36
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2018 Paul C. Pratt - last update 10/17/2018
</div>
</body>
</html>