mirror of
https://github.com/InvisibleUp/uvmac.git
synced 2024-11-21 15:34:08 +00:00
1 line
19 KiB
HTML
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 “<a href="../options.html#option_t">-t fbsd</a>” in the build system)
|
|
<br> FreeBSD on x86-64 (“-t fb64”)
|
|
<br> OpenBSD on x86-32 (“-t obsd”)
|
|
<br> OpenBSD on x86-64 (“-t ob64”)
|
|
<br> NetBSD on x86-32 (“-t nbsd”)
|
|
<br> NetBSD on x86-64 (“-t nb64”)
|
|
<br> Dragonfly BSD on x86-32 (“-t dbsd”)
|
|
<br> Dragonfly BSD on x86-64 (“-t db64”)
|
|
<br> OpenIndiana on x86-32 (“-t oind”)
|
|
<br> OpenIndiana on x86-64 (“-t oi64”)
|
|
<br> Linux on ARM (“-t larm”)
|
|
<br> Linux on SPARC (“-t lspr”)
|
|
<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 “<a href="../options.html#option_sound">-sound 1</a>”)
|
|
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
|
|
“<a href="../develop.html#option_snd_api">-snd-api</a>”
|
|
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
|
|
“-d [directory_path]”, 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
|
|
“-n [app_name]”, 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
|
|
“~/.gryphel/mnvm_rom” 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,
|
|
“Mini vMac” 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 “-d” 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 “-l” (or “/l” on Windows)
|
|
command line option is removed. The
|
|
“<a href="../options.html#option_speed">-speed z</a>”
|
|
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 “Alex” 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 “second” 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
|
|
“<a href="../options.html#option_lt">-lt</a>”
|
|
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
|
|
“sudo chmod ugo+rw /dev/bpf*” to allow Mini vMac (and everyone else)
|
|
access to all network traffic. The “-lt” 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
|
|
“<a href="../options.html#option_lang">-lang pol</a>”
|
|
selects a Polish translation of the user interface by
|
|
Przemysł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 “TrueColor”,
|
|
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
|
|
“<a href="../options.html#option_magnify">-mf</a>”
|
|
allows changing magnification from the default 2.
|
|
For example, “-mf 3” sets the magnification to 3.
|
|
The option “-mf 1” 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
|
|
“<a href="../options.html#option_depth">-depth 3</a>”
|
|
instead of
|
|
“-depth 0”. </p>
|
|
|
|
|
|
<p> * For Macintosh II emulation, AutoSlow is now disabled by default
|
|
“<a href="../options.html#option_speed">-as 0</a>”.
|
|
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
|
|
“AP”.
|
|
(A 68020 instruction used in Mac II emulation.)
|
|
</p>
|
|
|
|
<p> * Fixed the BFFFO instruction, which was completely
|
|
broken, as reported by “AP”.
|
|
(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 “AP”,
|
|
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 “AP”. </p>
|
|
|
|
<p> * The “MoveP.L <ea>, Dn” instruction mixed
|
|
up the order of shifting and masking, and so was
|
|
completely broken, as reported by “AP”.</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
|
|
“<a href="../options.html#option_min_extn">-min-extn</a>”
|
|
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
|
|
“<a href="../develop.html#option_api">-api cco</a>”
|
|
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
|
|
“<a href="../develop.html#option_api">-api sdl</a>”
|
|
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
|
|
“<a href="../develop.html#option_t">-t mx64</a>”
|
|
for Apple's X11 implementation
|
|
on x86-64. (Previously x86-32 and PowerPC were supported.) </p>
|
|
|
|
<p> * Added build system option
|
|
“<a href="../develop.html#option_e">-t cygw</a>”
|
|
for Cygwin/X for Microsoft Windows.
|
|
Cygwin can also be used to compile the regular Microsoft Windows version
|
|
with “-t wx86 -e cyg”. </p>
|
|
|
|
<p> * Added build system option
|
|
“<a href="../develop.html#option_t">-t irix</a>”
|
|
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
|
|
“-t wx86 <a href="../develop.html#option_e">-e mgw</a>”.
|
|
Since Bloodshed Dev-C++ is based on MinGW,
|
|
“-t wx86 -e dvc -cl” 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>
|