mirror of
https://github.com/InvisibleUp/uvmac.git
synced 2024-11-26 18:50:49 +00:00
1 line
18 KiB
HTML
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 ‘P’ 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,
|
|
“/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
|
|
“<a href="../options.html#option_sbx">-sbx 1</a>”,
|
|
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
|
|
“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.
|
|
</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 “<a href="../options.html#option_sgn">-sgn 0</a>”
|
|
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 “Abnormal Situation”
|
|
reports, by default. There is a new build system
|
|
option “<a href="../options.html#option_abr">-abr 1</a>”
|
|
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’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’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
|
|
“<a href="https://objective-see.com/blog/blog_0x15.html">Objective-See</a>”
|
|
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’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
|
|
“<a href="../options.html#option_lang">-lang cat</a>”
|
|
selects a Catalan translation of the user interface by
|
|
ArduinoXino.
|
|
</p>
|
|
|
|
<p> *
|
|
A new build system option
|
|
“<a href="../options.html#option_lang">-lang cze</a>”
|
|
selects a Czech translation of the user interface by
|
|
Anonymous.
|
|
</p>
|
|
|
|
<p> *
|
|
A new build system option
|
|
“<a href="../options.html#option_lang">-lang srl</a>”
|
|
selects a Serbian translation of the user interface by
|
|
SerbXenomorph.
|
|
</p>
|
|
|
|
<p> *
|
|
A new build system option
|
|
“<a href="../options.html#option_sgn">-sgn 0</a>”,
|
|
for the Cocoa version for OS X, to disable code signing.
|
|
</p>
|
|
|
|
<p> *
|
|
A new build system option
|
|
“<a href="../options.html#option_sbx">-sbx 1</a>”,
|
|
for the Cocoa version for OS X, to enable Sandboxing.
|
|
</p>
|
|
|
|
<p> *
|
|
A new build system option
|
|
“<a href="../options.html#option_gse">-gse 1</a>”,
|
|
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.
|
|
“-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.
|
|
</p>
|
|
|
|
<p> * New build system options
|
|
“<a href="../options.html#option_hc">-hcr, -hcg, and -hcb</a>”
|
|
select the initial value of red, green, and blue components
|
|
of the highlight color in the Parameter RAM. The
|
|
“<a href="../extras/getpram/index.html">GetPRAM</a>”
|
|
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
|
|
“<a href="../options.html#option_alc">-alc, -lcy, and -lcx</a>”
|
|
allow manually setting the location fields
|
|
in the Parameter RAM. The
|
|
“<a href="../extras/getpram/index.html">GetPRAM</a>”
|
|
tool can be used to get values for these options.
|
|
</p>
|
|
|
|
<p> * New build system options
|
|
“<a href="../options.html#option_atz">-atz, -lcd, -lczs, and -lcz</a>”
|
|
allow manually setting the time zone fields
|
|
in the Parameter RAM. The
|
|
“<a href="../extras/getpram/index.html">GetPRAM</a>”
|
|
tool can be used to get values for these options.
|
|
</p>
|
|
|
|
<p> *
|
|
The new build system option
|
|
“<a href="../options.html#option_km">-km</a>”
|
|
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
|
|
“<a href="../options.html#option_ekt">-ekt <dst></a>”
|
|
chooses which emulated key is toggled by
|
|
the ‘K’ command of the Mini vMac
|
|
Control Mode.
|
|
</p>
|
|
|
|
<p> *
|
|
The new build system option
|
|
“<a href="../options.html#option_svd">-svd 0</a>”
|
|
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 “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.
|
|
</p>
|
|
|
|
<p> *
|
|
The new build system option
|
|
“<a href="../options.html#option_iid">-iid 1</a>”
|
|
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.
|
|
</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
|
|
“<a href="../options.html#option_eci">-eci 0</a>”
|
|
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.)
|
|
</p>
|
|
|
|
<p> *
|
|
The new option
|
|
“<a href="../options.html#option_ecr">-ecr 0</a>”
|
|
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.)
|
|
</p>
|
|
|
|
<p> *
|
|
The new option
|
|
“<a href="../options.html#option_eck">-eck 0</a>”
|
|
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.)
|
|
</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’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
|
|
“<a href="../options.html#option_br">-br</a>”
|
|
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
|
|
<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 ‘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.
|
|
</p>
|
|
|
|
<p> *
|
|
If the new option
|
|
“<a href="../develop.html#option_at">@</a>”
|
|
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
|
|
“<a href="../develop.html#option_no_src">-no-src 1</a>”
|
|
causes the build system
|
|
to only generate the configuration files and not save the source
|
|
files.
|
|
When the options
|
|
“<a href="../develop.html#option_cfg">-cfg 1</a>”
|
|
and
|
|
“<a href="../develop.html#option_all_src">-all-src 1</a>”
|
|
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
|
|
“<a href="../develop.html#option_ef">-ef 1</a>”
|
|
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
|
|
“<a href="../options.html#option_xclm">!</a>”
|
|
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 ‘!’.
|
|
</p>
|
|
|
|
<p> *
|
|
The new option
|
|
“<a href="../options.html#option_cte">-cte 1</a>”
|
|
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
|
|
“<a href="../options.html#option_bte">-bte</a>”
|
|
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>
|