uvmac/docs/change/v3.5.html

1 line
20 KiB
HTML
Raw Normal View History

2020-03-14 19:28:01 +00:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title> Changes in Mini vMac 3.5.8 </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.5.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.5 - <a href="https://www.gryphel.com/c/feedback.html">feedback</a> </i> </div> <hr> <h3 align=center> Mini vMac 3.5.8 <!-- *<i>Beta</i>* --> </h3> <h3 align=center> Changes </h3> <hr> <p> What has changed in Mini vMac 3.5.8, compared to Mini vMac 3.4.1. 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.5.html#feature">New features</a> </p><p> <a href="v3.5.html#modified">Changed behavior</a> </p><p> <a href="v3.5.html#bugs">Bug fixes</a> </p> </blockquote> <p> not in default compile: </p> <blockquote> <p> <a href="v3.5.html#compile_feature">New features</a> </p><p> <a href="v3.5.html#compile_modified">Changed behavior</a> </p><p> <a href="v3.5.html#compile_bugs">Bug fixes</a> </p> </blockquote> <p> <a href="v3.5.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> <a name="modified"> <b> Changed behavior in default compile </b> </a> </p> <!-- <p> * None Yet. </p> --> <p> * Mini vMac should be faster on machines that aren&rsquo;t PowerPC or x86-32. (And also Macintosh II emulation should be faster.) The C version of the 680x0 CPU emulation was optimized to be about as fast as the previous assembly code (that was only implemented for 68000 emulation on PowerPC and x86-32), and then the assembly code was removed. So Mini vMac should be much faster for variations where the old assembly code could not be used. Also, the x86-64 version is now faster than the old x86-32 assembly, and so is now preferred on machines that can run both x86-64 and x86-32. (On OS X, various bug fixes should make the Cocoa port now work as well as Carbon port, which wasn&rsquo;t available on x86-64.) The C code is tweaked for a specific version of the GCC compiler. While other compilers are still supported, they can result in significantly slower emulation. </p> <p> * If Mini vMac reports an &ldquo;Abnormal Situation&rdquo;, it now also displays a 4 digit hexadecimal number. The original idea was that if something unexpected happens, you should first figure out how to reproduce the problem. Then the same thing can be done on a copy of Mini vMac with debugging stuff enabled. But this idea doesn&rsquo;t work out so well if the problem can&rsquo;t be reproduced, and seems to happen randomly and rarely. So now the non debug version of Mini vMac will display a number, which doesn&rsquo;t take much code, so at least something can be learned. </p> <p> <a name="bugs"> <b> Bug fixes in default compile </b> </a> </p> <!-- <p> * None Yet. </p> --> <p> * A badly behaved program could cause Mini vMac to crash, attempting to fetch an emulated instruction from random memory, which memory protection on a modern computer prevents. Since this is only a bad read, I don&rsquo;t think any further harm was possible besides crashing Mini vMac. Most kinds of memory access emulated by Mini vMac have for a quite while been designed to always be accurate and safe. But for speed, fetching the next instruction would simply increment a pointer to where the instruction is in real memory, and relative branches would just offset this pointer. Only for certain long branches would Mini vMac work out from scratch where the instruction is in real memory. This is good enough for all