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

1 line
13 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title> Changes in Mini vMac 3.2.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.2.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.2
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
</div>
<hr>
<h3 align=center>
Mini vMac 3.2.3 <!-- *<i>Beta</i>* -->
</h3>
<h3 align=center>
Changes
</h3>
<hr>
<p> What has changed in Mini vMac 3.2.3, compared to Mini vMac 3.1.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.2.html#feature">New features</a>
</p><p>
<a href="v3.2.html#modified">Changed behavior</a>
</p><p>
<a href="v3.2.html#bugs">Bug fixes</a>
</p>
</blockquote>
<p>
not in default compile:
</p>
<blockquote>
<p>
<a href="v3.2.html#compile_feature">New features</a>
</p><p>
<a href="v3.2.html#compile_modified">Changed behavior</a>
</p><p>
<a href="v3.2.html#compile_bugs">Bug fixes</a>
</p>
</blockquote>
<p>
<a href="v3.2.html#build">Build System</a>
</p>
<p> : </p>
<p> <a name="feature"> <b> New features in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Auto scrolling: If the emulated screen is larger than the real screen
while in full screen mode, the emulated screen will be scrolled to keep the
mouse pointer in view.
(Previously only the top left corner would ever be displayed, and even
that didn't work quite right.)
</p>
<p> * "AutoSlow": Mini vMac will automatically shift down to 1x speed
if there is no activity for a while. This helps to preserve the battery
on portable computers. </p>
<p> If the user types, or clicks or moves the mouse, or the emulated
computer draws to the screen, or reads or writes to an emulated disk,
that counts as activity that prevents AutoSlow. </p>
<p> AutoSlow takes effect after either 0.5 seconds of emulated computer
time, or 16 seconds worth of emulated instructions executed (usually about 2
seconds at the default 8x speed), which ever is longer. </p>
<p> It is possible that some software will not draw anything to the screen
for longer than that while doing real work, so the AutoSlow feature
can be disabled with Control-S-W. Also, the compile time option '-as 0'
causes Mini vMac to start with AutoSlow disabled. </p>
<p> A blinking insertion point will not prevent AutoSlow. This required
improving the code for detecting how much of the emulated screen was changed.
This makes Mini vMac more efficient in general, since transfering
images to the real screen tends to be expensive.
Previously it would detect that areas at the top and bottom of the emulated
screen hadn't changed, to limit the amount of drawing to the real screen.
Now it can detect that areas at the left and right of the emulated screen
haven't changed. If the remaining area that has changed is only a single
pixel wide and less than 32 pixels tall, it is assumed to be only a blinking
insertion point, that doesn't prevent AutoSlow. </p>
<p> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * Have begun making tweaked assembly version of 68000 emulation
for Intel x86 computers (starting from assembly language generated by gcc).
This makes Mini vMac faster, as well as giving
more consistent results when Mini vMac is compiled with different
development environments. (Had previously only made tweaked assembly
language for PowerPC computers.)
</p>
<p> * Improved accuracy of timing. Mini vMac now measures time in cycles
rather than instructions executed. In the simplest form, all instructions
are assumed to take the same number of cycles, and this closely matches
the results of previous versions of Mini vMac. (Mini vMac actually counts
sixty fourth cycles, not just integer number of cycles, so that average
times of instructions can be more accurate.) But by default, Mini vMac
now assigns an average number of cycles for each of the 65536 primary opcodes.
<p> As a compile time option, in addition to using the table, Mini vMac can
try to compute more accurate cycles for certain instructions, depending
on the current data. This is slower, and only implemented in the C version
of the 68000 emulation, making it slower still. </p>
<p> The build system option "-ta 0" selects the least accurate of these three methods,
the default is "-ta 1", and "-ta 2" selects the most accurate. </p>
<p> The most accurate option is still not completely accurate. Completely accurate
timing would be exceedingly difficult. For example, the CPU and video output
conflict for accesses to RAM, and that would seem very complex to model. </p>
<p> The greater accuracy is so far mostly theoretical. The timings were
entered from Motorola documentation. It needs to be tested and calibrated
by comparing to real hardware. Currently 68000 timings are used even in
the 68020 emulation. More accurate timing for 68020 should be added in a
future version. Truly accurate timing for 68020 would be much more difficult
than for the 68000 because of pipelining and caching, probably to the point
of being unfeasible for Mini vMac. But more accurate averages should be possible.
</p>
<p> * Mini vMac will now by default mount disk images in Disk Copy 4.2 format
as read only. This is because by default Mini vMac ignores the checksum and
tags of this format, so writing to the image makes it invalid. Mini vMac can
be compiled with full support for this format, in which case the images will
be writable. </p>
<p> The new utility
<a href="../extras/cnvtdc42/index.html">CnvtDC42</a>
converts Disk Copy 4.2 format images to a new
image without the tags and checksums, that the default version of Mini vMac
can write to.
</p>
<p> * The Windows and Linux versions now match a previous feature of the
Macintosh versions. When switching from full screen to normal mode,
or toggling magnification in normal mode, it will preserve the emulated
cursor position, by moving the host computer's cursor.
</p>
<p> * As an additional safety feature, the control mode confirmation for
the reset, interrupt, and quit commands will now treat anything other than
'y' as meaning no, rather than ignoring it. (With exception that a repeated
key is ignored - so 'q' is ignored for quit, 'r' for reset, and 'i' for
interrupt.) This is because I once managed to accidentally reset Mini vMac
by typing unintentionally into control mode.
</p>
<p> * The power button can now be used in the OS X version when in full
screen mode, to put the (real) computer to sleep.
</p>
<p> * I've rearranged the Mini vMac about page (Control-A) a bit to make
room for another idea I have for the variations. It no longer displays
which computer is being emulated. That can be inferred from the
variation number.
</p>
<p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * In OS X, changing the screen configuration, such as switching
between using the internal screen of a MacBook Air and an external screen,
would tend to make Mini vMac stop drawing.
</p>
<p> * In OS X, if the screen configuration changes when in full screen mode,
Mini vMac will turn off full screen mode, instead of just leaving the emulator
window at a size that is now wrong.
</p>
<p> * In OS X, may now have a viable work around for
misbehavior of the operating system calls to hide and show the
cursor. The most easily reproducible such situation was when the
computer went to sleep and then wakes up, the real cursor
would end up visible.
</p>
<p> * In OS X, the operating system can sometimes bring up a dialog, such
as for force quit (upon command-option-escape), and Mini vMac wouldn't
notice, leaving the real cursor hidden, making the dialog hard
to use. </p>
<p> <a name="compile_feature"> <b> New features not in default compile </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The build system option, "-emm 0", disables the more accurate mouse emulation
normally used in full screen mode. This allows Mini vMac to work somewhat better on
tablet computers without a mouse. But such computers are still not really supported.
</p>
<p> * The build system option, "-var-fullscreen 0", makes the full screen mode option
a constant rather than a variable. So "-var-fullscreen 0 -fullscreen 1" will make
Mini vMac always run in full screen mode, and "-var-fullscreen 0 -fullscreen 0" will
make Mini vMac never run in full screen mode. The "F" control mode command disappears.
</p>
<p> * The build system option "-log" enables improved logging infrastructure for
debugging in Mini vMac. It can now write out megabytes of information per second to
a log file without bogging down the emulation too much. (On a modern machine.)
But nothing much will happen without further enabling or creating code to log
various events that you are currently interested in. This is for developers only.
</p>
<p> * The build system option "-dis" enables a disassembler built into the emulator.
Besides disassembling a number of instructions executed after an event of interest,
it can disassemble instructions prior to the event, as the emulator can save
the addresses of instruction executed to a circular buffer.
Requires the "-log" option. Nothing much will happen without further enabling
or creating code to log various events that you are currently interested in.
This is for developers only. </p>
<p> * The build system option "-intl" forces Mini vMac to support
international characters in the user interface, even when using the
default English. This is useful if the maintainer name needs
the extra characters. (It would be nicer for the build system
to figure out for itself what character set is needed. But
this will do for now.) </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> * 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> * In many cases the Macintosh II emulation can now emit sound that is
recognizably related to how it is supposed to. It's not perfect yet,
and due to the nature of sound that means it not really yet usable at all.
But it is significant progress. </p>
<p> * The Macintosh II emulation supports more than 1M of video ram in
24 bit addressing. (One noticable effect is that allows identify
displays button in monitors control panel to work.)
</p>
<p> <a name="build"> <b> Build System </b> </a> </p>
<!--
<p> * None Yet. </p>
-->
<p> * The build system and the extras are easier to compile with different
Macintosh 680x0 C compilers.
</p>
<p> * The build system now supports the Digital Mars Compiler (with "-t wx86 -e dmc")
and the Pelles C Compiler (with "-t wx86 -e plc" and "-t wx86 -e plc -cl").
</p>
<p> * The build system now supports XCode 4.0.2 (with "-ev 4000"). </p>
<p> * There is better support in general for different versions of Microsoft
Visual Studio. Specifically, support has been added for
Visual Studio 2010 (with "-ev 10000"), Visual Studio .NET 2003
(with "-ev 7100"), and Visual Studio .NET 2002 (with "-ev 7000").
</p>
<p> * There is a new build system option, "-t lx64", to target for 64 bit Linux.
And there is a new option, "-t wx64", to target for 64 bit Windows.
Both would currently be slower than the 32 bit versions, because those versions
now have some assembly language tweaking.
</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.2
- <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i>
<br>
copyright (c) 2011 Paul C. Pratt - last update 11/13/2011
</div>
</body>
</html>