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

1 line
19 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Changes in Mini vMac 3.3.3 </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="v3.3.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>/v3.3
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac 3.3.3 <!-- *<i>Beta</i>* -->
</h3>
<h3 align=center>
Changes
</h3>
<hr>
<p> What has changed in Mini vMac 3.3.3, compared to Mini vMac 3.2.3.
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="v3.3.html#feature">New features</a>
</p><p>
<a href="v3.3.html#modified">Changed behavior</a>
</p><p>
<a href="v3.3.html#bugs">Bug fixes</a>
</p>
</blockquote>
<p>
not in default compile:
</p>
<blockquote>
<p>
<a href="v3.3.html#compile_feature">New features</a>
</p><p>
<a href="v3.3.html#compile_modified">Changed behavior</a>
</p><p>
<a href="v3.3.html#compile_bugs">Bug fixes</a>
</p>
</blockquote>
<p>
<a href="v3.3.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> * More operating systems are officially supported by Mini vMac: </p>
<blockquote>
<p> FreeBSD on x86-32 (Using &ldquo;<a href="../options.html#option_t">-t fbsd</a>&rdquo; in the build system)
<br> FreeBSD on x86-64 (&ldquo;-t fb64&rdquo;)
<br> OpenBSD on x86-32 (&ldquo;-t obsd&rdquo;)
<br> OpenBSD on x86-64 (&ldquo;-t ob64&rdquo;)
<br> NetBSD on x86-32 (&ldquo;-t nbsd&rdquo;)
<br> NetBSD on x86-64 (&ldquo;-t nb64&rdquo;)
<br> Dragonfly BSD on x86-32 (&ldquo;-t dbsd&rdquo;)
<br> Dragonfly BSD on x86-64 (&ldquo;-t db64&rdquo;)
<br> OpenIndiana on x86-32 (&ldquo;-t oind&rdquo;)
<br> OpenIndiana on x86-64 (&ldquo;-t oi64&rdquo;)
<br> Linux on ARM (&ldquo;-t larm&rdquo;)
<br> Linux on SPARC (&ldquo;-t lspr&rdquo;)
<br> Minix 3.2 ("-t minx")
</p>
</blockquote>
<p> These ports adapt the same X Window code as the Linux port,
and should have the same functionality, except currently not
sound for some. The x86-64 versions are currently slower, for lack
of assembly language tweaking, and should not be used
if the x86-32 versions will work. </p>
<p> * The X versions can now play sound using the
Open Sound System (OSS) API. (Usually using compatible implementations
on each operating system, rather than the official OSS itself.)
Sound is now enabled by default on FreeBSD and NetBSD. Sound
compiles without problems
(using &ldquo;<a href="../options.html#option_sound">-sound 1</a>&rdquo;)
on Dragonfly BSD and OpenIndiana,
but I have not been able to test on these yet. Getting
sound on Dragonfly BSD seems to require some manual
setting up. OpenIndiana doesn't seem to produce any
sound at all in VMware Fusion. Sound also compiles without
problems on OpenBSD, but it doesn't work - setting the
desired sample rate fails. Minix doesn't really seem to
support sound yet. It is also possible to use the
OSS API on Linux, using the new
&ldquo;<a href="../develop.html#option_snd_api">-snd-api</a>&rdquo;
build system option.
</p>
<p> * The X versions now will try to look in the folder
contain the application for the ROM image, like the
Macintosh and Windows version do.
(And also for disk1.dsk and so on files.)
If the application
directory can not be determined, the current directory is used
as before. This is implemented for Linux, FreeBSD, NetBSD,
Dragonfly BSD, and OpenIndiana, but not OpenBSD and Minix.
</p>
<p> * The X versions now have a new
<a href="../control.html#command_line">command line</a> option
&ldquo;-d [directory_path]&rdquo;, in which [directory_path] is used
instead of the application directory when looking for
the ROM image, and disk1.dsk and so on files.
</p>
<p> * The X versions now have a new
<a href="../control.html#command_line">command line</a> option
&ldquo;-n [app_name]&rdquo;, in which [app_name] is used
instead of the application name for the title of the
Mini vMac window.
</p>
<p> * The X versions now supports a central ROM folder like the
Macintosh and Windows versions have. If
&ldquo;~/.gryphel/mnvm_rom&rdquo; exists,
Mini vMac will look there for the ROM image.
If it isn't there, it will look in the application directory.
(And the -r command line option will override both.) </p>
<p> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Drawing the emulated screen to the real screen is more
efficient. When the color depth is 4 bits or less, rather
than converting each pixel, there is a table with 256 entries
for converting one byte at a time. It is also more careful
about only converting pixels in the rectangle bounding the
changed area, rather than the entire screen.
</p>
<p> * The Linux version dynamically loads the ALSA library to play sound,
so that Mini vMac will still run, without sound, even if ALSA is not
installed. (This technique was seen in SDL.)
So by default the Linux version is now compiled with sound,
matching the Mac and Windows versions. </p>
<p> * In the Linux version, when playing sound with ALSA,
snd_pcm_delay is no longer called. The delay until
a sample is played is not really relevant. What
Mini vMac needs to know is time to buffer underrun.
So Mini vMac now looks at buffer size minus the
available space in the buffer, which may be more useful,
for the purpose of preventing buffer underrun while
minimizing latency.
</p>
<p> * The X versions now use advisory locking to refuse to open
for writing a disk image that has been opened for writing by another
copy of Mini vMac. Previously, the X versions of Mini vMac could
open an already opened disk image, likely corrupting the image. If
Mini vMac can only open a disk image read only, such
as because the user has locked the file, then the
advisory lock is not used, and multiple copies of Mini vMac
can use it. </p>
<p> * The X versions now try to use the application name to
set the title of its window, like the Macintosh and Windows
versions have. (If the application name can not be determined,
&ldquo;Mini vMac&rdquo; is used as before.) This is found at the
same time as the application directory, and is implemented
for the same operating systems.
</p>
<p> * Command line arguments are now scanned before
looking for disk1.dsk and so on files. This is
necessary for the new &ldquo;-d&rdquo; option to
work, and has the side effect that if disk images
are specified on the command line, they will be
opened first. If there are images on the command
line, Mini vMac will now not bother to look for
disk1.dsk at all. </p>
<p> * The &ldquo;-l&rdquo; (or &ldquo;/l&rdquo; on Windows)
command line option is removed. The
&ldquo;<a href="../options.html#option_speed">-speed z</a>&rdquo;
option to the build system should be used instead.
The command line option was from before
the build system existed, and the decision made
to favor build time options over run time options.
</p>
<p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The Windows version now maps the Enter key on the numeric keypad
to the Macintosh Enter key. It can now distinguish that key from
the Enter key on the main keyboard, which is mapped to the Macintosh
Return Key. There was previously no way to type the Macintosh Enter key.
Thanks to &ldquo;Alex&rdquo; for pointing out this issue.
</p>
<p> * In the Windows version, in Full Screen Mode, the check
for whether a key down event is an autorepeated key is
incorrect. So potentially keys could have been ignored when
they shouldn't have been. I've removed the check, since it isn't
clear how to do so correctly (when using a "low level keyboard
hook"). This doesn't affect Macintosh emulation, since there is
an additional check for redundant events. It can affect the
Control mode, such as when holding down Control-M.
</p>
<p> * The Windows version now responds
to the WM_QUERYENDSESSION message, so that if you try
to shut down your computer with Mini vMac running
(with mounted disk images), then Mini vMac will complain
and stop the shut down. </p>
<p> * In the Linux version, using ALSA to play sound,
snd_pcm_start was called before putting any sound
samples in the ALSA buffer. This could cause stuttering
at the beginning, or according to one report, prevent
sound from working at all. Mini vMac now waits
until its private buffer is full, then transfers as much as
will fit into the ALSA buffer, and then starts sound playing.
</p>
<p> * When the Linux version is compiled for ARM,
it includes a check that the result of
snd_pcm_avail_update looks reasonable, and if
not calls snd_pcm_status_get_avail instead. This
works around what appears to be a bug in Raspbian
for the Raspberry Pi. </p>
<p> * The emulated clock was not properly initialized,
and was only correct after the first &ldquo;second&rdquo; interrupt. </p>
<p> * If the emulated screen is too big to fit on the real screen
(when autoscroll is available), if the area of the emulated screen
that has changed doesn't intersect the visible area of the emulated
screen, then an invalid rectangle was used for drawing.
I discovered this when trying out Vector Linux 7, which seems to
have some extra debugging checks. </p>
<p> * In unlikely circumstances, in Full Screen Mode, autoscroll
may not scroll to show the last row of pixels at the bottom
or the last column of pixels on the right. </p>
<p> * If the host computer is not fast enough for Mini vMac
to run at 1x speeds, then Mini vMac would not run smoothly,
pausing for a few seconds periodically. The test for this
situation was incorrect, and a one byte counter would overflow.
(Have such counters as small as possible makes it easier
to detect bugs like this.)
</p>
<p> * In X Window versions of Mini vMac, when using the Mini vMac
extension to create a file on the host system,
such as with <a href="../extras/exportfl/index.html">ExportFl</a>,
a save dialog is not implemented. Previously the file would simply be
created in the application directory with the asked for
name. This was not safe, at worst it allows a program
running in Mini vMac to replace the Mini vMac application.
So now files will instead be created in a folder
named "output" in the directory containing the application.
This folder will be created if it does not exist. </p>
<p> * In the Microsoft Windows version, if a path to a disk
image is passed to Mini vMac on the command line that is
longer than is legal for a path, a buffer overflow results.
</p>
<p> * The Windows CE version suffered bit rot. It now compiles
and at least works on the Microsoft Device Emulator with
Windows Mobile Version 5.0. I have no idea if it works on
real hardware. Does anyone care? (Windows Mobile was
discontinued and replaced by Windows Phone.)
This port was starting to interfere with maintaining the
main Windows version, and the choice was to remove it
entirely or make it maintainable.
</p>
<p> <a name="compile_feature"> <b> New features not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The new build system option
&ldquo;<a href="../options.html#option_lt">-lt</a>&rdquo;
enables
<a href="http://mfort.net/Mini_vMac_LT/Mini_vMac_LT.html">Mike Fort's</a>
LocalTalk emulation. The are currently some limitations.
It is only implemented for OS X. It requires running the command
&ldquo;sudo chmod ugo+rw /dev/bpf*&rdquo; to allow Mini vMac (and everyone else)
access to all network traffic. The &ldquo;-lt&rdquo; option also cause Mini vMac
to run in the background by default, because Mini vMac can't be a proper
LocalTalk node if it isn't running. And you need to manually turn on
AppleTalk in the chooser - I can set the PRAM flags to boot with
AppleTalk already on, but it doesn't work properly.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_lang">-lang pol</a>&rdquo;
selects a Polish translation of the user interface by
Przemys&#322;aw Buczkowski.
</p>
<p> * The X versions have initial support for color
(for Mac II emulation). The X Version so far only supports 24 bit &ldquo;TrueColor&rdquo;,
and has a few other limitations on format. I doubt that anything besides TrueColor
is used on modern machines, and so probably won't support the other options.
Other depths such as 15, 16, and 32 bits may be used, and so probably should
be supported, if I can find a way to test them.
</p>
<p> * A new build system option
&ldquo;<a href="../options.html#option_magnify">-mf</a>&rdquo;
allows changing magnification from the default 2.
For example, &ldquo;-mf 3&rdquo; sets the magnification to 3.
The option &ldquo;-mf 1&rdquo; disables
magnification (removing the Control-M command). The
magnification factor must be an integer. </p>
<p> <a name="compile_modified"> <b> Changed behavior not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The default color depth for Mac II emulation is
&ldquo;<a href="../options.html#option_depth">-depth 3</a>&rdquo;
instead of
&ldquo;-depth 0&rdquo;. </p>
<p> * For Macintosh II emulation, AutoSlow is now disabled by default
&ldquo;<a href="../options.html#option_speed">-as 0</a>&rdquo;.
AutoSlow may need some further tuning to work well with
Mac II emulation. </p>
<p> * In the X versions, the results of fwrite and fread on disk images
are now checked for errors, which stops compiler warnings in recent Ubuntu. </p>
<p> <a name="compile_bugs"> <b> Bug fixes not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Fixed a bug in the DIVS.L instruction reported by
&ldquo;AP&rdquo;.
(A 68020 instruction used in Mac II emulation.)
</p>
<p> * Fixed the BFFFO instruction, which was completely
broken, as reported by &ldquo;AP&rdquo;.
(Another 68020 instruction used in Mac II emulation.) </p>
<p> * Bit field operations on a register now use rotate
rather than shift. The selected bits can be non contiguous,
as pointed out by &ldquo;AP&rdquo;,
and confirmed by the documentation.
(Bit operations fields were added in the 68020.) </p>
<p> * Bit field operations on memory now try to only
operate on as many bytes as needed. Previously it
always operated on 5 bytes, which could have undesirable
effects if operating on a memory mapped device, as
pointed out by &ldquo;AP&rdquo;. </p>
<p> * The &ldquo;MoveP.L &lt;ea&gt;, Dn&rdquo; instruction mixed
up the order of shifting and masking, and so was
completely broken, as reported by &ldquo;AP&rdquo;.</p>
<p> * The hack that allows extra large amounts of Video RAM
in the Macintosh II emulation
wasn't working properly because an array used for address
space translation in the CPU emulation wasn't allocated
large enough. Now the build system chooses the allocation
size. (This problem was observed for 1024x768 with millions
of colors.) Further detail:
Each NuBus card gets only 1M of address space when the
computer is in 24 bit mode. And a Mac II seems to usually
draw in 24 bit mode. When more Video RAM is needed for the
requested compile time options, Mini vMac uses address
space from adjacent NuBus slots. </p>
<p> * Fixed
&ldquo;<a href="../options.html#option_min_extn">-min-extn</a>&rdquo;
build option in the Linux version. </p>
<!--
<p> * Improved FPU emulation, originally written for Mini vMac
by Ross Martin. This code was modified to
use SoftFloat, by John Hauser (as found used in the Bochs emulator),
plus some extensions to SoftFloat by Stanislav Shwartsman
(also found in Bochs).
Though using SoftFloat is slower than using native floating point,
it ensures consistent results on different computers,
and makes it easier to compile with different development environments.
There's still a lot of work to do on the FPU emulation, but it already
allows much more software for the Mac II to run without crashing.
</p>
-->
<p> <a name="build"> <b> Build System </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Added build system option
&ldquo;<a href="../develop.html#option_api">-api cco</a>&rdquo;
to use Apple's Cocoa API for OS X rather than the
deprecated Carbon API. But the Cocoa port of Mini vMac
is not yet considered quite ready to be officially supported,
and so the Carbon version is still used. </p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_api">-api sdl</a>&rdquo;
to use the
<a href="http://www.libsdl.org">Simple DirectMedia Layer</a>
1.2 API. This was added as a stepping stone to the Cocoa port - by
combining the source code for SDL with the source code for
an SDL port of Mini vMac, and then removing everything not
needed, and then a lot of cleaning up until an initial
native Cocoa port emerged. However the SDL port can
be used as is to port to other platforms supported by
SDL. But this is not (yet) officially supported. </p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_t">-t mx64</a>&rdquo;
for Apple's X11 implementation
on x86-64. (Previously x86-32 and PowerPC were supported.) </p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_e">-t cygw</a>&rdquo;
for Cygwin/X for Microsoft Windows.
Cygwin can also be used to compile the regular Microsoft Windows version
with &ldquo;-t wx86 -e cyg&rdquo;. </p>
<p> * Added build system option
&ldquo;<a href="../develop.html#option_t">-t irix</a>&rdquo;
for IRIX by Silicon Graphics, Inc., thanks
to <a href="http://www.ripserve.com/perkins/">John Perkins</a>. </p>
<p> * MinGW can be used to compile Mini vMac with build system
option
&ldquo;-t wx86 <a href="../develop.html#option_e">-e mgw</a>&rdquo;.
Since Bloodshed Dev-C++ is based on MinGW,
&ldquo;-t wx86 -e dvc -cl&rdquo; would previously give similar results.
</p>
<p> * Changed order of arguments to the link command when building
the Linux version. It turns out there is a conventional order for
how libraries should be specified, which I didn't know since I hadn't
come a across a linker that cared until Ubuntu 11.10. </p>
<p> * The build system should now work properly in other emulators
such as SheepShaver. It was anonymously reported that the build system
would crash emulators. The test for whether the build system was running
in Mini vMac (so that the resulting archive may be exported to the host)
was not good enough. </p>
<p> * The build system now suppresses warning messages
that were generated when compiling the Macintosh II emulation
with Microsoft Visual C++, thanks to a report from William Grana.
</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>/v3.3
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2013 Paul C. Pratt - last update 12/19/2013
</div>
</body>
</html>