More Recent News (Index)
December 3, 2017 - permanent link
After two weeks studying MacPGP source, digital signing looks relatively simple. I now have a much smaller amount of code that given a signed message and a public key in ascii armored format, will check the signature. I just have to clean it up to make a Macintosh program that can be used to check all the many signed checksums on this website.
(I think that these days it would actually be legal to distribute MacPGP here, but it would be necessary to fill out a form to notify the government, which I’d rather not deal with. Making a utility that only deals with digital signatures, rather than general encryption, I think avoids this issue. Also, a simple utility ought to be easier to use.)
November 26, 2017 - permanent link
I’ve increased the limit to 25 for the maximum number of requests per day to the Mini vMac Variations Service. This is just to make sure that no one who is using the service reasonably needs to worry about the limit.
The download page for a sponsored variation now displays the number of remaining requests available for the day. This limit is actually per build server, but this distinction doesn’t usually matter, since usually only a single build server is active, except for brief maintenance periods.
Mostly this week I have been looking at the source code for MacPGP. The Gryphel Project website has lots of signed checksums, but doesn’t provide a way to check the signatures. So I’m looking into whether it is possible to create a simple utility to do this kind of check.
Thanks to Johan Klassen and Chris Hanson for sponsoring over a month of web hosting for the Gryphel project.
November 19, 2017 - permanent link
With yet more optimizations, the turnaround time for the Mini vMac Variations Service is now usually down to 30 seconds (from one minute last week).
Thanks to Gianluca Abbiati, Malte Meyer, and Luis Hernandez for sponsoring over 3 months of web hosting for the Gryphel project.
November 12, 2017 - permanent link
With assorted optimizations, the turnaround time for the Mini vMac Variations Service is now usually down to one minute (from two minutes last week, and hours before last week).
November 5, 2017 - permanent link
I have set up an old Macintosh (Intel) to be dedicated to compiling variations for the Mini vMac Variations Service. This speeds up turnaround from hours to minutes. (At least when it is running. The scripts are designed to halt on first error, so that when I check on the machine later, it is easier to tell what happened, and try to make sure it doesn't happen again. So reliability should increase over time.)
The Variations Service has been reworked to allow more than one machine to do compiles. Eventually this might be useful in meeting larger demands than one machine can handle. But the much more immediate use is to make maintenance simpler. I can set my main computer to compiling variations while doing maintenance on the old Macintosh, so there is no interruption in service.
Supporting more than one machine doing compiles at the same time has consequences. Both machines trying to update a single list of the latest compiled variations would be messy, so that list has gone away. Instead, when a variation is requested, a new web page is made for it (which says that the variation is being compiled), and when the variation is compiled, the web page is replaced with a new version that has a download link and md5 checksum. Both machines can write such pages at the same time, since they are writing to different pages.
October 29, 2017 - permanent link
I’m back from travel. After considering feedback, I have implemented a new way to use the Mini vMac Variations Service. With the increased automation in the build system to reduce the cost of making variations, I can now offer as many variations as you can reasonably want for a year for a single donation of ten dollars or more. Where reasonable is defined as up to ten per day, every day. I personally regularly use about five variations total, so hopefully this should be much more than enough.
When you make a donation, you will receive a Sponsor Code to use in the form for the Variations Service.
With a Sponsor Code, you can skip the Demo version, so this is faster than the previous method of sponsoring a single variation. And not having to making a donation for each variation of course speeds and simplifies things. (Sponsoring a single variation will likely go away in the near future.)
I will retroactively send out Sponsor Codes to at least the people who have donated ten dollars or more in the last year.
Speaking of which, thanks to Chris Hanson for sponsoring over a month of web hosting for the Gryphel project.
October 22, 2017 - permanent link
I’ve been doing some travelling this week. But before that, I figured out a few ways to further automate the Variations Service, which could eventually allow more frequent batches, and consequently faster turn around.
October 15, 2017 - permanent link
Today’s Development source snapshot adds the Czech translation by Anonymous. (This required adding support for 11 new characters.)
I’ve updated the program strings on the localization pages to more exactly match the Mini vMac source code, which included work on scripts that convert between HTML and Mini vMac’s representation of international characters. I also created a primitive script to automatically convert received feedback from the web form with international characters into plain ascii HTML format, which led to finding a few mistakes I had made processing the Czech translation previously.
October 8, 2017 - permanent link
Today’s Development source snapshot is the start of the 3.6 branch. It has the Catalan translation by ArduinoXino. (This required adding support for a new character, ‘·’. The new Czech translation requires more new characters, and so will come later.) The one other change is to make the URL in the Mini vMac about message be 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.
The page hosting the game Glider by John Calhoun now includes the source code.
Thanks to W Brian Barnes for sponsoring a week of web hosting, and two variations, for the Gryphel project.
October 1, 2017 - permanent link
A Czech translation for the Mini vMac user interface has been anonymously contributed.
Thanks to G.S. Brenac for sponsoring over 3 days of web hosting, and a variation, for the Gryphel project.
September 24, 2017 - permanent link
ArduinoXino has contributed a Catalan translation for the Mini vMac user interface.
A page has been added to the software for Mini vMac collection with a link to Apple’s Thread Manager, which is needed by other software like MacBalsa.
September 17, 2017 - permanent link
Some more software is now hosted by the Gryphel Project: BinHex and Unpit.
September 10, 2017 - permanent link
Some more software is now hosted by the Gryphel Project: 3D-Edit (by request), MockPackage, and PackIt.
August 20, 2017 - permanent link
Today’s Mini vMac 3.5.8 updates the stable version to fix a problem on PowerPC OS X, and also fixes an issue affecting the Variation Service. Mini vMac 3.5.8 on platforms other than PowerPC OS X (‘mach’), and x86-32 OS X (‘imch’), should be identical to Mini vMac 3.5.7, except for the version string and modification date.
It was reported that “Mini vMac 3.5.7 wont run on PPC G3 systems”. It turns out that the GCC flag “-mmacosx-version-min” should be specified for all files compiled, not just the platform dependent code. It affects things like the required CPU. Making this change happens to have no effect on Mini vMac for x86-64 OS X, there is some effect for x86-32 OS X, and the largest effect is for PowerPC.
August 13, 2017 - permanent link
Mini vMac 3.5.7 is now officially released. That is, it is now declared to be the stable version, with no change made to the source code or compiled applications. It is available from the main Mini vMac Download page. The Changes file lists what has changed since Mini vMac 3.4.1. The 3.5 branch began June 27, 2016, entered beta April 2, 2017, and 3.5.7 was created July 9, 2017.
August 6, 2017 - permanent link
The Mini vMac 3.5.7 beta download page now offers Macintosh 128K emulation (the original Macintosh), in addition to the Macintosh Plus standard variation and a Macintosh II variation.
July 30, 2017 - permanent link
There are new pages for links to software for Mini vMac, using a format more consistent with hosted software, for: DYOH Architecture, DYOH Landscape, Sprout!, and MacMinix.
So now finally every program has its own page in the Software pages. (This has been a long project.) Most of these pages host a copy of the program, so in the index pages the “(hosted)” has been removed, it can be assumed a program is hosted if not marked with “(link)”. The about section in the main page has been updated to reflect that most programs are now hosted.
Thanks to Andrew Y. for sponsoring over 3 days of web hosting, and a variation, for the Gryphel project.
July 23, 2017 - permanent link
There are new pages for links to software for Mini vMac, using a format more consistent with hosted software, for: DateView, Eudora, UserLand Frontier, MacFlow, and Apple DocViewer. Some more software is now hosted by the Gryphel Project instead of only linked to: XLISP-STAT.
July 16, 2017 - permanent link
The Mini vMac 3.5.7 beta download page now offers Macintosh II emulation, in addition to the Macintosh Plus standard variation. This page and the download Mini vMac 3.4.1 page have been reorganized a bit.
I’ve added notes for using Mini vMac in recent versions of OS X.
There are new pages for links to software for Mini vMac, using a format more consistent with hosted software, for: Hypercard Player, Dali Clock, and InTouch.
Thanks to Brian Stevens for sponsoring over a week of web hosting for the Gryphel project.
July 9, 2017 - permanent link
Today’s Mini vMac 3.5.7 beta has a few bug fixes.
In the Cocoa port, when importing the text clipboard, if there were any characters that could not be translated (because they are not in MacRoman), nothing would be translated. Now, such characters will translate to “?”.
After an “Abnormal Situation” is dismissed, it neglected to clear the 4 digit code, with the result that the code could be displayed when other messages are displayed, such as for the “About Mini vMac” command. The code is now cleared.
In the Macintosh II emulation, an “Abnormal Situation” report seen when using the Restart command of the Finder has been removed, since this actually seems to work fine now.
In the Cocoa port, some more problems are fixed in the fix in Mini vMac 3.5.5, for incorrect cursor position while dragging the Mini vMac window. After the a dialog window, such as for open disk image, the mouse position would not be updated until the mouse moved. So Mini vMac now checks the mouse position after dialogs. A harder problem is the mouse position would not be updated after using the menubar, or window controls such as the close box (clicking and dragging off the control, so the window isn’t closed, and the mouse is moved). Mini vMac isn’t notified about these clicks. So instead now whenever Mini vMac notices that it hasn’t been given time to run for long enough, it will check the mouse position, which usually will take care of these cases. Perhaps it would have been simpler to find some way of getting the correct mouse position while dragging the Mini vMac window. But it is nicer, and ought to be more efficient, to rely on events for mouse position when possible, rather than constantly asking the OS where the mouse is.
The recent report about odd behavior on a Windows 10 tablet may now be understood, with no fix needed.
There are new pages for links to software for Mini vMac, using a format more consistent with hosted software, for: The Fool’s Errand, At the Carnival, 3 in Three, Disk First Aid, Disk Copy, TrueType™, Compact Pro, Acta, and MORE.
Thanks to Shitara Zenya for sponsoring over 3 days of web hosting, and a variation, for the Gryphel project. (Which also led to finding the Cocoa clipboard import issue.)
July 2, 2017 - permanent link
The Beta Variations Service now allows arbitrary screen sizes. Besides the menu choices, there is also a text field where you can instead type whatever size you like. (When the form is submitted, if this field is not empty, it is checked whether it is valid).
One of the two Abnormal Situation reports I mentioned last week turns out to be more or less reproducible. It is also reproducible in Mini vMac 3.4.1. It may be that all that is going on is that some Mac software can be a little buggy, and access address space it isn’t supposed to. So I’ve been thinking that there is no evidence of any situation where Mini vMac 3.5.6 is worse than Mini vMac 3.4.1, after months of testing, and it is time to leave beta.
But now there is odd report from a Windows 10 tablet user to look into first.
Some more software is now hosted by the Gryphel Project instead of only linked to: SgInfo.
June 25, 2017 - permanent link
Some more software is now hosted by the Gryphel Project instead of only linked to: LEE and Glider Design!. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: CRLF.
Three weeks of using Mini vMac 3.5.6, with the new enhanced Abnormal Situation reports, have yielded two reports. These two reports suggest the problem is not a new call to report an Abnormal Situation for what is actually a normal situation, but instead that something is randomly accessing memory. So I think the next step is to write (optional) debugging code to catch unusual accesses to memory, to greatly increase the percent of the address space that generates an abnormal situation report, hopefully making the reports much more frequent.
Thanks to William Winter for sponsoring over 2 weeks of web hosting for the Gryphel project.
June 18, 2017 - permanent link
Some more software is now hosted by the Gryphel Project instead of only linked to: MacShell, MicroArchitecture Simulator, and PDP-8/E Simulator.
I’ve finally obtained OS X 10.12 (Sierra), and verified the reported (twice) problem with the new Path Randomization “feature”. The operating system can copy the application somewhere else before executing it. So Mini vMac won’t see files that are placed in the same folder, like the ROM image. One workaround I’ve seen mentioned doesn’t seem to work, at least in 10.12.5 - moving Mini vMac to a different folder doesn’t turn off Path Randomization. One workaround that does seem to work is to run the command “xattr -c <path to archive>” in the Terminal to clear extended attributes on the downloaded Mini vMac archive before expanding it.
June 11, 2017 - permanent link
The Mini vMac Variations Service has changed again. A donation of two dollars or more to the Gryphel Project is now required. Perhaps this might encourage some people to use it, who previously didn't want to impose. For other people, the Beta Variations Service is still free. Actually, the main reason for the change is to encourage more people to test the Beta.
For the stable Variations Service, a Demonstration version is free. A Demo version is identical to the regular version, except that the word “Demo” floats across the emulated screen. (Code for this has been in Mini vMac for a while now.) If the Demo looks suitable, you can then sponsor that variation, with a donation of two dollors or more, and I'll produce the non Demo version. (A donation of exactly two dollars is fine and appreciated. The marginal cost of producing an additional variation is small.) Once sponsored, that variation is available to everyone, under the GPL license.
Some more software is now hosted by the Gryphel Project instead of only linked to: Sparrowhawk, Crossword Solver, Snow, and Markov. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: Cruciverbalist, PlayFreeLotto, and CuliDataBase.
June 4, 2017 - permanent link
Today’s Mini vMac 3.5.6 beta fixes an issue in the Cocoa port and fixes a design flaw in “Abnormal Situation” reports.
Also, in other recent news, Tara Keeling has updated her Nintendo 3DS port of Mini vMac. It is announced in this GBAtemp.net post. It now supports Macintosh II emulation, with color.
The fix in Mini vMac 3.5.5, Cocoa port, for incorrect cursor position while dragging the Mini vMac window caused another problem. If you switched to Mini vMac using command-tab, the mouse position wasn’t updated until the mouse is moved. This is fixed by fetching the current mouse position when Mini vMac is activated, rather than only rely on mouse movement events. (Before 3.5.5, the Cocoa port would frequently fetch the mouse position, which was giving incorrect results during dragging the Mini vMac window.)
If Mini vMac reports an “Abnormal Situation”, 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’t work out so well if the problem can’t be reproduced, and seems to happen randomly and rarely. Which is what has happened. Over a few weeks I saw a couple Abnormal Situation reports in the beta that I couldn’t reproduce. Mini vMac worked fine afterwards, so I suspect that the report was not needed, it is just a situation that is rare but valid. I just need to find out which report, out of couple hundred, to remove. So I enabled debug logging and continued to use Mini vMac for weeks. And so far it has worked perfectly, unfortunately. Maybe I just haven’t used it enough.
So now in today’s version the regular non debug Mini vMac will display a number when reporting an Abnormal Situation, which doesn’t take much additional code. So if anyone runs across this issue, you can tell me this 4 digit hexadecimal number, and I will know exactly which report to remove.
(By the way, an explanation for all these “Abnormal Situation” reports: When trying to emulate some aspect of Macintosh hardware, my current strategy is not to try to figure it all out and then implement the entire emulation as best I can. Because if I did that, inevitably there would be a mistake somewhere, and when that causes some software to malfunction, I won’t have any clue of where to look for the mistake. Instead I would start with a place holder Abnormal Situation report. Then I find some Macintosh software that reaches that report, and look at that area of its code, and try to figure out what it is trying to do. Then I try to implement just enough emulation for it to work correctly, and give an Abnormal Situation report for code that does something else. If the Macintosh software still doesn't work, the problem is probably in the code I just wrote. If it does work, then I next try find some other Macintosh software that hits one of the new Abnormal Situation reports. And iterate. The result is code that is usually correct for what it does, and will tell you exactly where to look when it reaches something that hasn’t been implemented yet.)
Some more software is now hosted by the Gryphel Project instead of only linked to: SndConverter Pro, SndCataloguer, SndCollector, Simple Card, and Gene. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: FIT2EPS and EZIndex.
May 28, 2017 - permanent link
Testing proceeds on the Mini vMac 3.5.5 beta.
Some more software is now hosted by the Gryphel Project instead of only linked to: SignatureQuote, Swapper, kb8to7 and kb7to8, ChunkJoiner, Encryptinator, and Checksum. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: Find In Files, TextToMac, Alex’s Encrypt, and Verifile.
May 21, 2017 - permanent link
Some more software is now hosted by the Gryphel Project instead of only linked to: MacBALSA.
Testing proceeds on the Mini vMac 3.5.5 beta. But actually, this week I have been traveling. There should be more work on Mini vMac next week.
May 14, 2017 - permanent link
Testing proceeds on the Mini vMac 3.5.5 beta.
Some more software is now hosted by the Gryphel Project instead of only linked to: LOANCALC, HTML Pro, MacSOUP, xLogicCircuits, xComputer, xTuringMachine, xModels 2D and 3D, and xSortLab. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: EveryHour and TextToHTML.
(Adding hosted software is a way for me test Mini vMac.)
I have noticed an issue in the Cocoa version that I haven’t found a fix for. Unlike in the Carbon version, the window bottom corners are rounded. Which slightly messed up the screenshots I’ve been making. It seems there used to be an undocumented way in Cocoa to make the bottom corners square “[window setBottomCornerRounded: NO]”, but it doesn't work anymore. For my purposes, a work around is to make screenshots in full screen mode, which actually works better.
May 7, 2017 - permanent link
Today’s Mini vMac 3.5.5 beta has three bug fixes.
After emulating an ADD instruction, if the value of the X flag was needed later, but in between there was another instruction that set the other flags not including the X flag, the lazy evaluation of the X flag was incorrect. This broke signing with MacPGP. While fixing this, I put in some debugging code to allow disabling lazy flag evaluation, so one can see if this code is responsible for an observed bug.
In the Cocoa port, when dragging the Mini vMac window around by its title bar, the emulated cursor position was incorrect. (The emulation continues running during the drag in this port.)
In the Cocoa port, if the mouse is moved over the dock, the cursor is made visible by the operating system, but if the mouse was then moved directly back into the Mini vMac window (and there was nothing in between), the system cursor was not made invisible again, so the system cursor and the cursor of the emulated Macintosh were drawn on top of each other.
Some more software is now hosted by the Gryphel Project instead of only linked to: Glk Hugo, Billionth Birthday, The TimeKeeper, iTime, and NETime. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: Coffee Timer.
April 30, 2017 - permanent link
Today’s Mini vMac 3.5.4 beta has two bug fixes.
The emulation of the CMPI instruction was considering pc relative addressing to be illegal, when it is actually fine (though odd). As reported by Adam, this broke Dynamix adventure games. This was in Macintosh II emulation, but the bug was also present in the default Macintosh Plus emulation.
In the Cocoa port, when import and exporting the text clipboard, Mini vMac was not translating the end of line format.
Some more software is now hosted by the Gryphel Project instead of only linked to: Inform, MaxZip, MaxTADS, Glulxe, and IFDropFile.
Thanks to Are Hansen for sponsoring over 2 weeks of web hosting for the Gryphel project.
April 23, 2017 - permanent link
Today’s Mini vMac 3.5.3 beta may fix a bug in the Windows version where the Mini vMac window is resizable. This bug was added in 3.4 when fixing a call to CreateWindowEx to stop using an invalid window style. The fix is now fixed by not including WS_THICKFRAME in the style.
Also, two calls to display “Abnormal Situation” are removed after discovering they were called in normal situations.
Some more software is now hosted by the Gryphel Project instead of only linked to: Zippy-Type, Big Al FileLock, and GameMaker. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: TextChanger and Drop•BB.
Thanks to Chris Paterson for sponsoring almost 2 months of web hosting for the Gryphel project.
April 16, 2017 - permanent link
Today’s Mini vMac 3.5.2 beta may fix a bug found by Tara Keeling in the Macintosh II emulation, where if the emulation was running slow enough (such as 1x speed), and there is a “disk1.disk” and “disk2.disk”, then the second disk image won’t get mounted. There is code to delay mounting the second disk one second after the first disk, which is good enough for Macintosh Plus emulation, but apparently not for the Macintosh II. So I’ve increased the delay to four seconds, but also now when a kDriveStatus call is made to the replacement disk driver, the delay is reduced (to about a fifteenth second). The emulated computer appears to be ready for a new disk after this call. (Not reducing the delay to zero is just being conservative.)
So even for the default Macintosh Plus emulation, when inserting multiple disks there is now usually much less delay.
This version also fixes an issue with the Cocoa port, when Mini vMac is launched by dragging a disk onto the application icon, but there is also a disk1.dsk image, it now matches the behavior of other ports in mounting the dragged image after disk1.dsk instead of before.
It also fixes an issue in the build system where “SCRNHACK.h” could be included in the generated source code when it isn't needed.
Debug information logging (“-log 1”) is now implemented in the classic Mac port. And logging code has been added to the replacement disk driver in “SONYEMDV.c”.
Some more software is now hosted by the Gryphel Project instead of only linked to: QuickLearner and Soundex. And some software is now hosted by the Gryphel Project where the original web pages have disappeared: Mini App Pack.
April 9, 2017 - permanent link
Another game is now hosted by the Gryphel Project: Dungeon of Doom.
Testing proceeds on the Mini vMac 3.5.1 beta.
April 2, 2017 - permanent link
Today’s Mini vMac 3.5.1 is the first beta of the 3.5.x branch. The Changes page lists differences from current stable 3.4.1 version. (The only change in the source code from the last Development snapshot is the version number.)
March 26, 2017 - permanent link
The latest Mini vMac Development source snapshot has a few minor fixes, mostly of compiler warnings. In preparation for moving to beta, this week I tested it with more development environments, then tested production compiles with each option individually, then recompiled the last couple hundred variation requests.
March 19, 2017 - permanent link
The latest Mini vMac Development source snapshot fixes one final known issue with the Cocoa port, and has a number of minor fixes for various development environments.
When Mini vMac becomes the active application, all emulated key are usually considered to be up, even if the actual keys are still being held down. But there is an exception for modifier keys held down on drag and drop (after which Mini vMac makes itself the active application), so that holding down command and option can be used to rebuild the desktop files of emulated disks. This exception worked in Carbon, but not previously in Cocoa. I’ve now figured out how to get the modifier keys, by using [NSEvent modifierFlags]. This only work in OS X 10.6 and later, so Mini vMac checks that this method is available before using it. With this fix, as far as I know the Cocoa port is now as good as the Carbon port. So I can use the somewhat faster 64 bit version, which only is possible with Cocoa.
I’ve been testing with various development environments supported by Mini vMac, and made minor fixes for them. There is still more testing I want to do before moving the 3.5 development branch to beta. But no changes other than bug fixes are expected to be made.
March 12, 2017 - permanent link
The latest Mini vMac Development source snapshot adds support for Visual Studio 2017 (with “-ev 15000”) and has been tested with Apple Xcode 7.3.1 (“-ev 7310”) and 8.2.1 (“-ev 8210”). Basically only version information seems to have changed in the file formats.
The emulation of the Move to SR instruction now checks for Privilege Violation, and emulation of the Move from SR instruction now checks for Privilege Violation on 68020 (it is not a Privilege Violation on 68000). The build system should now correctly include all icon files with the “-all-src 1” option. And compiling the Windows CE version with “-e mvc” should work again.
Various compiler warnings and other small issues were also fixed. I expect to move the 3.5 development branch to beta soon, after further testing.
Thanks to Christopher Tar for sponsoring over a half month of web hosting for the Gryphel project.
March 5, 2017 - permanent link
In the latest Mini vMac Development source snapshot, for x86-32 versions, Mac II emulation is now even closer in performance to the Macintosh Plus emulation. Previously Mini vMac 3.5 used a non-standard stack alignment for Macintosh Plus emulation on x86-32, when compiled with GCC 4.7.4 (with the “-e mvc” option), which results in smaller and faster code. However, for OS X, any calls to external libraries could crash, and such calls can be generated by the compiler itself. For Macintosh II emulation, such a call is generated for 64 bit division, so previously the non standard alignment was not used. Now instead Mini vMac contains its own (not particularly good) implementation of 64 bit division, used for CPU architectures which don't directly provide it and the compiler would generate a library call. So the non-standard stack alignment can be used. To make it easy to detect if the compiler generates any other problematic calls, on OS X Mini vMac is now linked without the compiler libraries (for GCC 4.7.4).
Compiling with GCC 4.7.4 previously generated warning messages about “aliasing”. A C compiler is allowed to assume that two pointers of different types don't point to the same memory location. But this assumption could break Mini vMac. So now for GCC 4.7.4 the option “-fno-strict-aliasing” is used to prevent this assumption, which appears to make no significant difference in speed. But for other compilers, Mini vMac will now try to work correctly even with this assumption (basically by taking out optimizations for big/little endian), which will slow it down a bit.
Also in this version, a bug is fixed in the Cocoa port, where it would draw incorrectly in full screen mode if the emulated screen is larger than real screen.
Also fixed is a bug in lazy evaluation of condition flags for the Tst instruction and similar.
February 26, 2017 - permanent link
In the latest Mini vMac Development source snapshot, the emulation of the coprocessor instructions (F line instructions) is reworked to not use the opcode, but instead only use the entry for the opcode in the OpDispatch table. So now the main emulation loop doesn’t need to save the opcode for Mac II emulation, helping to make it perform exactly as fast as Macintosh Plus emulation.
February 19, 2017 - permanent link
In the latest Mini vMac Development source snapshot, the emulation of the 68020 instructions is updated to not use the opcode, but instead only use the entry for the opcode in the OpDispatch table (as the 68000 instructions already do). The next step will be to do the same for F line instructions such as FPU calls. Then the only use of the opcode will be for that lookup, and so the opcode won’t need to be saved, in the most speed critical part of the program. This will help make the Mac II emulation perform exactly as fast as the Macintosh Plus emulation (where the opcode is already not saved).
Thanks to ClockWise for sponsoring over a day of health insurance costs for time I spend on the Gryphel project.
February 12, 2017 - permanent link
The latest Mini vMac Development source snapshot uses the “global register variable” feature of GCC 4.7.4 for the PowerPC and ARM versions (in addition to the x86-64 version added last week). Besides the 3 registers used for x86-64, the PowerPC and ARM versions also use a register to point to the 680x0 emulation variable record (as was done in the old PowerPC assembly language in Mini vMac 3.4.1).
The make file generated by the build system for GCC 4.7.4 (with the “-e mvc” option) now splits compiling C files into two parts, from C to assembly, and then from assembly to object file. Previously the assembly would be generated and then deleted by the single gcc compile command. So now the assembly is left around, making it easier to keep a close eye on what the compiler is doing.
Which helped to notice a major inefficiency in the ARM version, due to an alignment issue in the most speed critical part of the emulation. Fixing this doubled the speed. This problem didn't affect 3.4.1, but all the other optimizations make 3.5 about fify percent faster than 3.4.1 on ARM.
February 5, 2017 - permanent link
In the latest Mini vMac Development source snapshot I've experimented with the “global register variable” feature of GCC 4.7.4, in the x86-64 version of Mini vMac, to make better use of the 8 extra registers (as compared to x86-32). The compiler doesn't seem to generate very good code for this feature, but the result is still faster then when not using it. The x86-64 version of Mini vMac 3.5 is now 10 to 20 percent faster than the assembly language of Mini vMac 3.4.1 for x86-32 (there was no x86-64 assembly language).
January 29, 2017 - permanent link
The latest Mini vMac Development source snapshot has further work on the CPU emulation. The result of the ‘>>’ operator in the C language on signed values is implementation defined, so it can not always be directly used for the 680x0 ASR instruction. But in GCC 4.7.4, it is defined to do sign extension, so it can be used, and so now will be used for “-e mvc”. Also in today’s version, for both ASR and ASL, lazy evaluation of the condition code register is used.
And a bug is fixed in the built in disassembler (“-dis” option). For the shift instructions L and R were reversed (such as for ASR and ASL).
January 22, 2017 - permanent link
The latest Mini vMac Development source snapshot merges in a Brazilian Portuguese translation of the user interface by Mauricio.
This week I mostly have been looking into whether the Retro68 cross compiler could be used for the classic Mac ports of Mini vMac, but concluded probably not.
January 15, 2017 - permanent link
The latest Mini vMac Development source snapshot adds support for 3 more GCC 4.7.4 cross compilers I’ve built, targeting OpenIndiana on x86-32 and x86-64, and also Windows CE for ARM (using the CeGCC project). Also, the Mini vMac 3.5 Alpha Variations Service is updated to use them.
GCC 4.7.4 does not seem to support OpenBSD or Dragonfly BSD. And some random hacking on both didn't succeed in making a working Mini vMac. I may stop producing official Mini vMac binaries for these two for now. There has been little demand for them.
January 8, 2017 - permanent link
The latest Mini vMac Development source snapshot adds support for 5 more GCC 4.7.4 cross compilers I’ve built, targeting FreeBSD and NetBSD on x86-32 and x86-64, and also OS X for PowerPC. Also, the Mini vMac 3.5 Alpha Variations Service is updated to use them.
Code in the build system for using assembly language has been removed. (So options “-no-asm” and “-a” are gone.) Some other code in the build system, also not used now for Mini vMac, has been removed also. The icon files have been moved to the main source directory, and the “platform” directories are gone. There is a new build system option “-cfg 1”, only supported for “-e mvc”, that puts generated configuration files into a separate directory.
January 1, 2017 - permanent link
The latest Mini vMac Development source snapshot adds support for 5 more GCC 4.7.4 cross compilers I’ve built, targeting Linux on x86-32, x86-64, ARM, PowerPC, and Sparc. Also, the Mini vMac 3.5 Alpha Variations Service is updated to use them. Next I'll look at cross compilers for BSDs.
A problem in the Macintosh II emulation reported by Stephen Barbieri may be fixed in the development version. I think it was caused by the FPU emulation not coping with invalid inputs.
December 25, 2016 - permanent link
This week I have updated my scripts for the Mini vMac 3.5 Alpha Variations Service to use my new GCC 4.7.4 compilers for the OS X and Windows versions, for x86-32 and x86-64.
Mini vMac 3.5 uses C language only, and is a bit faster than the x86-32 assembly code of 3.4.1. It is much faster (like double) for variations where the assembly language code wasn’t used, like for Macintosh II emulation.
Also, the Alpha Variations Service now supports the x86-64 version for OS X (which uses the Cocoa API instead of Carbon). It is already a bit faster than the x86-32 version, and I think further improvement is possible.
Thanks to Stephen Barbieri and Anonymous for Christmas presents for the Gryphel project, sponsoring about 9 months of web hosting.
December 18, 2016 - permanent link
In the latest Mini vMac Development source snapshot, the build system has a new Development Environment option, Mini vMac C (“-e mvc”), which is really just a particular version of GCC and supporting projects, compiled into a set of cross compilers, that will eventually be used for official binaries. The advantage of using a single compiler version is in getting consistent performance across different operating systems. Also it easier to tweak C code to get good performance for a single compiler, than to try to make code that is optimum for all C compilers. The C code for the CPU emulation on x86-32 using GCC 4.7.4 is now about as fast as the old hard to maintain and limited hand tweaked assembly language code.
Previously I had compiled from GCC 4.7.4 native compilers for OS X (x86-32 and x86-64). This week I followed the instructions for MinGW-w64, which worked perfectly to build cross compilers and supporting files for Window (x86-32 and x86-64). Next I can look into building cross compilers targeting Linux.
Some more software is now hosted by the Gryphel Project instead of only linked to: Manual Maker.
December 11, 2016 - permanent link
In the latest Mini vMac Development source snapshot, the build system is updated to produce more optimized compiles for Windows x86-32, Linux x86-32 and Linux x86-64, for the specific compiler versions I use. (As was previously done for OS X x86-32.) There is also some further fixes and tweaks to the CPU emulation code.
But it is unsatisfactory for Mini vMac to operate at different speeds on different operating systems because of using different C compilers (unlike in Mini vMac 3.4.1, where the same assembly language code is used). A possible solution is to use the same compiler, by making gcc cross-compilers. This may be easier said than done.
Some more software is now hosted by the Gryphel Project instead of only linked to: Manual Maker.
Older News (Index)