minivmac.sourceforge.net/oldnews - feedback
copyright (c) 2010 Paul C. Pratt - last update 10/24/2010

Mini vMac

Old News


February 15, 2010

Luc Pauwels has compiled and packaged Mini vMac 3.1.3 for Solaris 10 on SPARC and x86.

January 28, 2010

The latest Development source snapshot contains the preceding week's work on Macintosh II sound emulation. John Knoll sponsored food for the week, and Manuel Alfayate sponsored gas.

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.

Emulation of the ASC (Apple Sound Chip) is difficult, because unlike previous hardware emulated by Mini vMac, I have no real documentation of its operation. (I had a few clues from the Mac II section of Apple's "Macintosh Family Hardware Reference", from mac 68k bsd ports, and from the December 15th version of the MESS emulator source code, where early work has been done on ASC emulation.) Furthermore, unlike other hardware that has been emulated in Mini vMac so far, the ASC is not usually controlled by software in ROM, so my ROM disassembly is of less help.

So most of the work in the last week was not directly on the sound emulation, but improving the logging infrastructure in Mini vMac, to make it easier to figure out what is going on. 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.) Also, expanding upon code in Ross Martin's FPU emulation work, I've been putting in a disassembler directly 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.

Logging code is enabled by a new build system option '-log', and the disassembler by the option '-dis'. 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.

January 20, 2010

I've updated the blank disk images archive. Surprisingly, this has been one of the most popular downloads. The new version provides many more sizes. It also includes a few images in Disk Copy 4.2 format, with file tags and checksums, which are useful with the compile time options “-sony-tag 1” and “-sony-sum 1”. These options are enabled in Mini vMac variation 155, and in the new variation 2010.

Selected variations (including 155 and 2010) are now available from a new Mini vMac Variations page, this time with no activation required. The evidence so far is that simply accepting donations is more effective than the shareware like scheme. Also, it seems a better match for the goals of the Mini vMac project. And also, SourceForge has recently made it much less of a pain to release files, so including more than just the default compile is less of a problem.

Thanks to a donation from Andrew Johnstone, along with income from the former variations activation scheme, I now have a copy of Microsoft Windows 7 for testing Mini vMac on. The first use of it was in updating the Screenshots page. Beside a new image for Windows, I also added new images for OS X and Linux, and put previous images on another page (which also includes new screenshots of Mini vMac running on Windows 98 and Mac OS 7.5.5).

I run Windows and Linux in VMware Fusion. Thanks to donations from Andrew Johnstone, Steve Waddell, Evan Appelman, Stephen Kluskens, Jonathan Ploudre, and Zheng Yang, I now have a 1 TB hard drive for holding all my current VMware Fusion images, with room to create more.

Thanks to John Knoll for sponsoring food for my next period of working only on Mini vMac without internet access. This starts later today, and will last about a week. And thanks to Leon Buijs for sponsoring one day of work on Mini vMac (I haven't picked which day yet).

I haven't found as much time lately to work on Mini vMac with internet access. Sorry for not keeping up with email. This may change later this year, or else I'll just try getting better at making do.

Some news from Mini vMac development is that I've tried out a new scheme for caching the translation of emulated to real addresses. Mostly it has shown just how good the current scheme is, which was one of the first things I worked on in Mini vMac almost a decade ago. But I expect the new scheme will still be useful eventually for emulating later Macintosh computers that spend most of their time using 32 bit addressing.

December 7, 2009

Mini vMac 3.1.3 is now officially released (with no change from the final beta, as usual). Mini vMac 3.1.3 is rather old news by now, which is how it should be. There should be no surprises in the stable version. The Changes file lists what has changed since Mini vMac 3.0.4. To summarize, the main work has been on Macintosh II emulation, which is not yet complete, but also the default Macintosh Plus emulation is a bit faster and smoother. One fun new feature is a compile time option to emulate a hacked Macintosh Plus with larger screen sizes.

There is also today a Mini vMac 3.2.0 alpha. It is early in the development of the 3.2.x branch, but since Macintosh II emulation is so much improved since 3.1.3, I've decided to make some official binaries. (There isn't too much change from the previous development source snapshot, except for more accurate timing.)

Thanks to a donation from Jonathan Ploudre, I now have new headphones for use in working on Mini vMac sound emulation. My previous headphones were failing.

November 8, 2009

I've rearranged the website a bit in preparation for the upcoming official release of Mini vMac 3.1.3. (If you know of any bugs, tell me now.)

Thanks to donations from Pedro Maciel, Greg Lee, and ClockWise, I now have VMware Fusion 3. It is supposed to work better with OS X Snow Leopard, and should eventually allow better support for Windows 7 and 64 bit versions of Mini vMac. I use VMware Fusion for all Windows and Linux development.

I've received a couple reports that Mini vMac 3.1.3 works fine in Windows 7, so that doesn't seem to be reason to delay the official release.

November 2, 2009

Jesús A. Álvarez (Zydeco), has announced the start of a port of Mini vMac to Android. He previously ported Mini vMac to the jailbroken iPhone.

October 25, 2009

Thanks to a donation from ClockWise of E-Maculation, I now have Snow Leopard (Mac OS X 10.6). I haven't seen any problems with Mini vMac in Snow Leopard yet. I didn't really expect to, or I probably would have heard about it from someone else already. None the less, I will be much comfortable about officially releasing Mini vMac 3.1.3 after trying it on Snow Leopard myself. (It would also be nice to try it on Windows 7.)

I've made a few refinements to the recently reinstated donations program. I now explicitly state that donations made with the donate button on the main Help Mini vMac page will be used for items on the Mini vMac Wish List. People may now specify a web page address that they would like their name to be linked to in the list of sponsors. And I have made a new Wishes Granted page, for items in the Wish List that have been obtained, starting with Snow Leopard.

Having Snow Leopard also makes it possible to better support Xcode 3.2. Ryan Schmidt had already clarified his earlier report to say there is only a problem if no '-ev' argument is used, so that the build system generates a project for Xcode 2.4.1. Also he was using the command line tools ('-cl'). If '-ev 3100' is used, then a project is created for Xcode 3.1, which Xcode 3.2 works fine with. I'll look into adding a '-ev 3200' option, though so far it doesn't look like that much is different.

There is one problem with Snow Leopard that many people have reported. It does not supported writing to HFS disks, or disk images. (It can still read them.) So the method described on the Disk Images page no longer works in OS X. The ImportFl utility can be used instead, but it doesn't transfer resource forks. An eventual solution would be to create a utility for OS X that can archive files in a format that can be extracted in the emulated mac. Or else a utility for the emulated mac that can extract zip files created by OS X. For now, you can use an older version of OS X to transfer files that have resource forks.

October 14, 2009

Today's Development source snapshot is the first in the 3.2.x series. This snapshot includes a first draft of merging in Ross Martin's FPU emulation code. There's still a lot of work to do, but it already allows much more software for the Mac II to run without crashing.

One thing I changed is that it was originally using the native floating pointing abilities of the computer it ran on, which I'm not enthusiastic about, because this could cause the emulation to give different results on different computers, and because of the even worse problem of getting it compile on various compilers that provide different ways of accessing obscure floating point features. Instead, I've made it use SoftFloat (by John Hauser), which I found being used in the Bochs emulator, plus some extensions to SoftFloat in Bochs by Stanislav Shwartsman. Though it's slower, it should give consistent results with minimum trouble. (The native floating point option is still available in the code for anyone who wants to fiddle with it, but I don't intend to support it.) SoftFloat does require the compiler to support 64 bit integers, and I haven't updated the build system yet to adjust this for different compilers (It is currently hard wired to use "long long").

One fun thing the improved FPU emulation makes possible is that the final MPW development tools from Apple now run well enough within Mini vMac to successfully compile the 68000 version of Mini vMac. (Mini vMac doesn't actually run inside the Mac II emulation unless it is compiled without sound. The incomplete sound emulation now seems to be the main reason programs don't work in the Mac II emulation.)

October 8, 2009

There is now a Mini vMac 3.1.3 beta, with a few small bug fixes. (The Variations service is also updated.) Thanks to an anonymous bug report and patch, 16 and 32 bit color will now work in Intel OS X (to the extent that the incomplete Mac II emulation works at all).

I've noticed that if Mini vMac is in Stopped Mode, mouse and keyboard events are no longer discarded, but saved in the Mini vMac event queue and played back upon leaving Stopped Mode. This might not be quite what is expected, but I've not changed this, since it turns out to be a good way to test that the new event queue code works as expected. Which it didn't. I've fixed several bugs in it. (The new event queue code is supposed to ensure that mouse and key events are handled accurately, even if emulation is not getting time to run regularly.) Also fixed is a bug where if Mini vMac for OS X was in Stopped Mode, error messages such as for failing to open a disk image would not be displayed.

I've updated the copyright year for the build system. Thanks to Ryan Schmidt for pointing this out. Also fixed is a bug where the build system would fail silently if the argument to "-n" is too long. (The maximum allowed by the HFS file system is 31.)

Since several people have asked about it, I have recently enabled donations for Mini vMac again. Asking for donations has not been very effective in the past, but I'm in no position to turn them down. I'm also trying something new, creating a "wish list", so that people can sponsor specific items that would aid the Mini vMac project. For example, Mac OS X Snow Leopard. Donations can be made from the Help Mini vMac page. This page also lists many other ways to help the Mini vMac project, financially and otherwise. My thanks to the one person who has already noticed this page and made a donation.

September 19, 2009

Ross Martin has implemented FPU emulation for Mini vMac, for x86 linux. This is a major step towards a more complete Mac II emulation. He also implemented 32 bit color for the gtk port. I've uploaded his source code here.

I'll merge this into the Mini vMac 3.2.0 branch I've begun. This branch so far has mostly source code clean ups. This seemed a good a time as any for cleaning. I find it a good way to turn up for bugs. A few minor issues turned up, but not enough to warrant making a 3.1.3 beta. Then I received an anonymous report of 16 and 32 bit color not working (in the Mac II emulation) for Mac OS X on Intel, and patch to fix it. That is enough, along with the other issues, so I think I'll make a new beta.

Ryan Schmidt reports that the Mini vMac build system doesn't support XCode 3.2. I may need to obtain Snow Leopard after all before 3.1.x can be final.

Another anonymous contributor sent versions of David Sibley's Mini vMac OS X icons converted for Windows. I've uploaded the files here and here. I'm not very familiar with how custom icons are used in Windows. I'll need to investigate further, and then add them to the Mini vMac Extras.

August 1, 2009

There is now a Mini vMac 3.1.2 beta. The Mini vMac Variations service has been updated. As usual for Mini vMac, "beta" also means "release candidate". I don't know of any problems with it, and if no problems are found in a reasonable time, it becomes the official release version. (But it is more likely that there will be another beta or two.)

The Macintosh and Windows versions now match the X version in not initially filling the sound buffer with silence, but instead waiting to accumulate real sound samples before starting to play sound. This may reduce the tendency to stutter as the program starts, mostly by giving the emulation more time to get settled into a regular rhythm before attempting sound. I also changed the X version to match the Macintosh and Windows version in only skipping a single sound block on underrun, rather than stop playing sound until the buffer is refilled.

There is also much more work done on sound, but it is disabled for the time being. A Mac Plus plays sound samples ranging from 0 to 255, but when not playing sound it often doesn't leave the level at the midpoint 128, but at some other value like 0. This can causes clicks when the emulation is paused. To reduce clicks, Mini vMac currently contains a deliberate inaccuracy in setting the sound to level 128 when sound is disabled instead of 0. I'd thought I'd try a different approach and instead have Mini vMac notice when the emulated computer is outputting a constant sound level, and then gradually shift real sound output to the midpoint. When the emulated computer begins outputting sound again, the real output is first gradually shifted back to where it was. Unfortunately this approach didn't seem to work, at least on a Mac OS X 10.5 on Intel. The shift was clearly audible. No matter how gradually Mini vMac shifted the sound level, the operating system seems to think, there's sound here, but it's really faint, let's amplify it so you can hear it clearly. Eventually I found that converting to 16 bit sound avoided this "feature". But this is starting to get too major a change for too subtle a benefit, so soon before release, so I've disabled this code for now.

There is now a build system option "-vsync 1" for OS X only, which turns on OpenGL double buffering and sets AGL_SWAP_INTERVAL to 1. This eliminates the "tearing" issues noted Manuel Alfayate. Unfortunately it isn't yet a real solution. Beside using much more memory, it also reduces the maximum speed of emulation unpredictably and erratically, because it makes aglSwapBuffers block until the vertical retrace, when Mini vMac is expecting to give the emulation extra time, for above "1x" speed. Anyway it helps to illustrate the issue. Now that I've seen what it looks like with vsync, I can see the difference in certain games. [update: I've added variation 159 to demonstrate this option.]

Control-P now gives some visual feedback, displaying the message "Registration String copied".

A bug is fixed in alternate keyboard mode that could result in the emulated ';' key being left stuck down.

Entering full screen mode immediately after launch in OS X 10.5 wasn't working properly. The title bar would show at the top of the screen. This seems to have broken because I tried avoiding the deprecated call aglSetDrawable. There actually seem to be two bugs of Apple here. aglSetWindowRef didn't work quite right on a window without a title bar, so I had changed it to use a normal window, but now this problem turned up. So I've reverted back to the Mini vMac 3.0.4 method of using aglSetDrawable on a window without a title bar. It's probably not worth verifying that these actually are Apple bugs, instead I should be moving Mini vMac to the Cocoa API, and then it might be worth reporting bugs.

July 26, 2009

I've created a first draft of updated documentation for Mini vMac 3.1.1. This includes the Changes page.

July 24, 2009

I have moved and revised the feedback page. This page now offers a form, rather than linking to a page with a form, and doesn't offer the SourceForge trackers and forums, which I think I'll phase out as too much trouble.

I've also started a Mini vMac mail archive, to contain the mail I've received and my responses. I'm still working out exactly what it looks like. This might become the primary way for me to respond to mail, since email is less than completely reliable. Partly because of spam filters, also sometimes people just enter the wrong email address on the feedback form. (Such as Vince, most recently.)

July 22, 2009

I have set up a registration scheme for the Mini vMac Variations service. It allows people who have purchased an activation code to in effect vote for which variations are important and where I should be spending my time.

Thank you to everyone who has already bought an activation code, even though Mini vMac 3.1.x is still in alpha. There have been no reports of problems with Kagi so far. Earlier, the first of my own two test purchases didn't go smoothly, when things hadn't been quite set up properly, but Kagi took care of that extremely quickly. So I'm pleased with them so far.

July 13, 2009

TestSync is a small program that demonstrates a problem reported by Manuel Alfayate with the video emulation of Mini vMac. Without TestSync I couldn't see the problem, even when I was looking for it. In fact, I wrote TestSync to prove the problem didn't exist, but it didn't work out that way. Either Manuel has very good eyes, or the problem is more obvious on his hardware.

Anyway, now that I can reproduce the problem, I can think about what to do about it.

June 28, 2009

There is now a Mini vMac 3.1.1 alpha. The Mini vMac Variations service has been updated to use the new version. The new version corrects some minor problems found in the previous alpha.

I've removed a warning message about "read verify" mode that I recently put in to see whether this mode is used. It turns out that it is, such as when using the Finder to copy files to an 800K disk. So sometime I should implement this mode correctly in the replacement disk driver used by Mini vMac. For now it just continues to treat it as a normal read, which isn't correct, but doesn't cause problems.

The Windows call SHGetSpecialFolderPath doesn't seem to be supported in some development environments, so I've made Mini vMac dynamically load the routine instead. Mini vMac is using this routine to support finding ROM images from a central location, and to support activation of Mini vMac Variations.

As reported by "macgeek417", the "-m pb100" option wouldn't compile. It will now compile, but still not do much. Making sure it compiles may help prevent bit rot until I get back to Powerbook 100 emulation.

The "-min-ext" option also wouldn't compile. I've fixed this, so Mini vMac Variation number 157 is now available.

The build system will now work properly from a locked disk when exporting an archive, if there is an output folder preference. (The archive is placed in the output folder, rather than in the folder containing the application.)

The build system can now resolve aliases of folders, such as the output preference folder. So the output can be directed anywhere, such as to another disk.

I previously incorrectly documented the output preference folder. The build system looks for "System Folder:Preferences:Gryphel:Build:output", not "System Folder:Preferences:Gryphel:output".

The build system can now handle multiple sets of options at once, separated by ";". I use this in the process of compiling the set of Mini vMac Variations. To allow this to work, the build system no longer replaces the entire output folder on each run, but just replaces folders within the output folder.

I've removed the "-pk" option of the build system to restrict the program to a more manageable scope. And anyway I find it more convenient to handle post processing in external scripts.

The build system now has an "-an" option, for changing the programs abbreviated name, from the default "minivmac". So the Mini vMac variations are compiled with say "-an mnvm0001", instead of "-n mnvm0001-3.1.0-umch". The abbreviated name must be 8 characters or less, and should only include lowercase letters, numbers, and underscores.

The Mini vMac Variations that require an activation code now have a new command: Control-P. This copies a string to the clipboard of the real computer that contains version information and an encoding of the activation code. This could be used for a scheme to allow people to "register" the variations they use, and in effect allow them to vote for what variations they think are important.

June 5, 2009

I've added some more variations to the Mini vMac Variations service.

Also, "macgeek417" points out that I haven't previously announced the addition of the build system option '-m SEFDHD', for emulating a Macintosh SE FDHD. It is currently identical to the Macintosh SE emulation, except for expecting a different ROM (which should be named 'SEFDHD.ROM'). This was added last year in May, thanks to reports from Steve Secker and David Sibley.

June 3, 2009

The Mini vMac Variations service, which I described last week, is now live.

May 27, 2009

There is now a Mini vMac 3.1.0 alpha. I've decided to make a new stable version soon, without waiting to complete the Macintosh II emulation. Since that is where most work has been done, this will be a fairly minor update. Still, the current stable version is getting old - I'd prefer any possible future derivative projects to be based on more recent code.

Also, I'd like to experiment with offering a new service. A lot of the power of Mini vMac comes from the variations that can be compiled, such as emulation of different Macintosh models. However, no matter how easy I try to make it to compile variations from the source code, it has become clear that most people aren't going to do this. So I've decided to try offering some compiled variations as shareware, which people can download, try out, and purchase if they find them useful. I'm currently thinking maybe $5 for the set all of available variations (until the 3.2.0 release), perhaps using the Kagi payment processing company. If this is successful enough, it will motivate me to do it again - compiling, packaging, testing, uploading, and verifying variations of the 3.2.0 release of Mini vMac.

This will be just an additional service - the default compile remains free, the source remains free (and by the GPL license must always remain available), and anyone can compile variations themselves, if they spend a little time to figure out how. Also, people can of course still make publicly available versions that they compile, and I'm pleased when they do so.

To demonstrate how this might work, the alpha download page includes an "activation demo". This is a variation of Mini vMac with the larger screen hack (not all software is compatible with this, but much is), support for file tags when using disk copy 4.2 format, and allowing up to 16 mounted disks. So far it is available for Mac OS X and Windows. (Linux users are presumed to be more comfortable with compiling from source.) When first launched it prompts for an "activation code". A temporary code is provided right on this prompt - "281 953 822 340". If you type in this sequence of digits, the prompt goes away, but comes back again on the next launch. It is expecting you to type digits (0-9). You can type the spaces, but they are ignored. You can correct mistakes with the backspace (delete) key. The only penalty to using the temporary code is having to enter it on every launch - the program otherwise works as normal, and there is no time limit. If you instead type the sequence "275 227 140 839", it saves this in a preference file, and should not ask again. (I'd be interested in hearing if this doesn't work, especially on Windows Vista, where I haven't tested.)

I think it is ok to have this activation demo on SourceForge, since the activation code is provided. I'll put the rest of the variations elsewhere. The source code dealing with activation is also provided, and it's not especially sophisticated. It is only intended to be a little harder to get around than it is to figure out how to compile Mini vMac from source.

Beside the activation code stuff, there are also a few other new things since the last source snapshot. If Mini vMac, on Mac OS X or Windows, doesn't find the ROM file in the folder containing the application, it will now also look in a specific central location. In OS X it checks in "/Users/[your_UserName]/Library/Preferences/Gryphel/mnvm_rom/". In Windows XP, "C:\Documents and Settings\[your_UserName]\Application Data\Gryphel\mnvm_rom\". Windows 98, "C:\WINDOWS\Application Data\Gryphel\mnvm_rom\". And in Vista, I think "C:\Users\[your_UserName]\AppData\Roaming\Gryphel\mnvm_rom\". Usually "mnvm_rom" would be an alias (on OS X, on Windows this is called a short cut) to where ever you keep your ROM collection. This avoids having to create an alias to the ROM image for each emulated Mac you use.

There are also some assorted clean up of the emulated video and disk drivers. Also, thanks to an anonymous tip, I cleaned up some code that may cause compiler warnings about security dangers. (I believe it was ok as actually used, but poor style.)

"macgeek417" pointed out that the Mac Plus emulation will work with 128K memory, so the build system now allows "-m Plus -mem 128K".

The alternate keyboard mode option now gives a visual indication of the current keyboard mode, intended to be easy to see in peripheral vision, without covering up where text is normally typed.

The build system will now check if the folder "System Folder:Preferences:Gryphel:output" exists, and if so direct output there, instead of "minivmac:output:". This is useful if you keep the minivmac source disk image on a flash drive, avoiding excessive wear.

April 2, 2009

Todays Development source snapshot merges in code sent by "zydeco" from his iPhone/iPod Touch port that improves support for the Disk Copy 4.2 disk image format, using information found in the Lisa Emulator Project by Ray A. Arachelian. I've also tried adding support for file tags to Mini vMac.

There has been no further progress in Macintosh II emulation since the last snapshot. And I haven't been keeping up with correspondence. But the good news is that I think I'm gradually getting my health back.

The code from zydeco means that Mini vMac will now get the correct size of the data in a Disk Copy 4.2 disk image, and will identify such an image even if it is not in HFS or MFS format.

Also, with the build system option "-sony-sum 1", Mini vMac will update the checksum in a Disk Copy 4.2 disk image when it is unmounted. This prevents other programs that deal with such images from complaining about an invalid checksum. (I didn't include this by default, because it makes Mini vMac slightly bigger and slower.)

With the build system option "-sony-tag 1", Mini vMac tries to support file tags. There are an additional 12 bytes for each 512 byte block on a 400K or 800K floppy disk, containing some additional information that was supposed to aid in recovering damaged disks, but was never actually used much. The Disk Copy 4.2 disk image format can support these tags. (The more usual raw format, such as found in Blanks, does not.)

The build system also now has the option "-sony-dc42 0" to completely disable support for disk images in disk copy 4.2 format. This could be useful when trying to compile the smallest and simplest version of Mini vMac possible for some specific purpose. It should not be used when compiling a version of Mini vMac for general distribution, because a primary goal of Mini vMac is that disk images that work with any past version of the program should also work with the current and any future version (at least when default compile options are used).

To make it easier to support file tags, and also easier to make (and debug) other changes, I've moved most of the logic of the replacement disk driver out of the 68k code and into the main Mini vMac program. This actually is moving back closer to how vMac works. But it still avoids having the main program try to call back into the 68k code, which I never got to work reliably.

I've made a number of small changes to the replacement disk driver that I think make it act closer to original Apple versions. (But which don't make any known observable difference.)

One more change in this snapshot is that it supports Microsoft Visual Studio 2008 Express, using "-t wx86 -ev 9000" in the build system.

January 24, 2009

For the 25th anniversary of the Macintosh, I've greatly expanded the "Books about Macintosh 680x0" section, by a factor of 10, to over 600 books. I've also put back in the Amazon links to make it easier to acquire them. The hope is to encourage preservation of these books by helping to encourage a market for them. Also, buying books through the Amazon links will help support the maintainence and further development of Mini vMac.

December 19, 2008

I am travelling for about a month mostly without internet access.

December 6, 2008

The latest Development source snapshot supports color in the Windows version for the Mac II emulation. (Previously color only worked in OS X.)

It currently uses StretchDIBits for all color drawing in Windows. I'm not sure if this will give adequate performance on all versions of Windows on all hardware. It seems to work ok in Windows 98 running in VMware Fusion, which is all I've tried so far.

As a reminder, these development snapshots are not betas, or even alphas, they are just work in progress. I'll accept bug reports, but I'm not particularly interested in having people test the snapshots. Most people should stick with the stable version. The reason for the snapshots is to conduct development more openly, since Mini vMac is open source. The main practical uses for the snapshots are to assure people that Mini vMac is actively developed, and for backup.

There have been complaints about the rarity of the Macintosh II. So this snapshot also supports emulation with the Macintosh IIx ROM, using '-m IIx' in the build system. The ROM image should be named 'MacIIx.ROM'. (The ROMs in the IIcx, II FDHD, and the SE/30 are supposed to be identical to the one in IIx. Actually I don't own a IIx, I have a IIcx, donated by Lil and Sherm Sundet.) This doesn't really emulate a Macintosh IIx yet, it just accepts the IIx ROM and emulates the Macintosh II hardware, which seems to work ok. I haven't looked closely yet at what the differences should be. (One main difference is that a IIx should have a 68030 instead of 68020 CPU.)

There is a new memory allocation scheme in this snapshot, so the platform dependent code doesn't need to know about each allocation made by the platform independent code. This made it simpler to fix a problem with compiling the CPU emulation code for Macintosh 680x0.

The build system now supports Xcode 3.1, using the option "-ev 3100". Mini vMac compiles without warnings, which wasn't possible with the SDK that comes with Xcode 2.4.1.

The build system can now be compiled with the final version of MPW, still available from Apple, rather than only with MPW 3. Unfortunately, the final MPW doesn't quite work yet in Mini vMac, but I hope to make this work in the not too distant future (by implementing the FPU in the Macintosh II emulation). I also went further, as far as porting the build system to the Xcode tools on Intel OS X, but I'm not sure that I'll keep this.

In unrelated news, thanks to ClockWise of Emaculation, for pointing out that Gemulator is now open source. Or at least the source is available. Looking at it so far, I can't tell under what license. The copyright notices seem to just say "All Rights Reserved." Also, the interesting (to me) bits seem to be missing. The "mac.vm" folder, which I would guess should implement the Macintosh emulation, just contains empty files. Anyway, Gemulator is supposed to be able to emulate a Macintosh Plus in addition to Atari computers, and in this release also emulate later models such as the Macintosh II. But so far I didn't get it to work in Windows 98 in VMware Fusion (specifying a disk image seems to be broken), I might try later using a later version of Windows.

November 20, 2008

"zydeco" has made "an iPhone/iPod Touch port of Mini vMac, for jailbroken iPhone OS 2.x devices". Thanks to David Sibley for pointing out this news.

I have been ignoring the iPhone myself, since my understanding is that Apple's restrictions on non hacked iPhones mean that emulators (and perhaps also GPL licensed software) are not welcome, and I have no interest in going against the wishes of Apple. But even I find this port interesting and useful, since it may make it much easier to port Mini vMac to the Cocoa API for OS X, as may eventually be necessary (Apple is ever more strongly discouraging use of the Carbon API that the current OS X port is based on).

October 17, 2008

Thanks to "Gord" for pointing out to me the news that the source code for Executor has been released. I think that an interesting use of it could be to create an open source ROM replacement for Mini vMac. Unfortunately, I can't work on this myself since I have looked a lot at Apple's ROMs. (Executor is a "clean room" emulator.)

October 13, 2008

Today's Development source snapshot adds color to the Mac II emulation. So far this only works in OS X, with other platforms to be implemented later.

The desired color depth is chosen at compile time, with the "-depth" option in the build system. "-depth 0" is black and white (the default for now), "-depth 1" is 2 bit color (4 colors), "-depth 2" is 4 bit color (16 colors), "-depth 3" is 8 bit color (256 colors), "-depth 4" is 16 bit color (thousands), and "-depth 5" is 32 bit color (millions). These options only work with the Macintosh II emulation ('-m II'). Color depth is a compile time option, instead of run time option, to help keep Mini vMac simple and small. However, regardless of the chosen color depth, Black and White is also available, and can be selected from the "Monitors" control panel. (In fact, you may not see color until selecting it from the "Monitors" control panel.)

The FPU and ASC are still not implemented, which sharply limits what programs will work without crashing (which I may not have made clear enough before). Two programs that will work nicely, in color, are "Slime Invaders 2.0.7" by Ingemar Ragnemalm and "Glider 4.10" by John Calhoun, which are both listed in the Arcade Games page.

Besides adding color, this snapshot also patches out the RAM checking at start up code from the Macintosh II ROM (as is already done for other models), and initializes the PRAM more suitably for a Macintosh II. Together, these allow the Macintosh II emulation to start up much faster.

September 6, 2008

The next Development source snapshot fixes the cursor display issue in the Mac II emulation (by implementing the VBL interrupt in the emulated video card). So now this emulation can be perfectly useable for long stretches of time, until it attempts to play sound or do any floating point arithmetic. The FPU and ASC emulation need to be worked on. It is still black and white only for now. (The build option for Macintosh II emulation is '-m II'.)

Besides the documentation from Apple (such as "Designing Cards and Drivers for Macintosh II and Macintosh SE"), the source code for the Basilisk II emulator has been a useful reference. Thanks.

Also thanks to Jonathan and Shelly Pratt, for making possible this work.

There are a number of other changes besides the cursor display fix. The Mac II emulation can now support other screen sizes, at compile time with the -hres and -vres options. The default is 640x480, but 800x600 for example can be selected with '-hres 800 -vres 600'. The MacsBug debugging software operates correctly, unlike when using the larger screen hack implemented for other Macintosh models. (The video card ROM, which lists the available modes, is now created dynamically at startup. Only the driver code is precompiled. The source to this driver is now included in the snapshot. I forgot to include it in the previous snapshot.)

The Mac II emulation can now use 8M of memory, twice the 4M limit on all previous versions of Mini vMac. The build option is '-mem 8M'. It can also use '-mem 5M', '-mem 4M', '-mem 2M', and '-mem 1M'. The '-m' option now checks that its argument is valid for the machine being emulated. So the Mac II for example has two banks of memory, each of which can contain 1M or 4M or none (or higher on the real machine, but that isn't useful with 24 bit memory addressing).

By the way, the Mac II emulation in Mini vMac does implement 32 bit addressing, as it is required to even boot, but the emulation is optimized for 24 bit addressing. The 32 bit addressing mode is significantly slower.

The Mac II emulation now implements the automatic power off at shutdown. That is, Mini vMac will quit automatically.

Besides all the Mac II emulation work, this snapshot also has an initial port to Gtk. This will allow the Linux version to better match the other ports, with menus and an open file dialog. It also will make possible a port to Maemo, which is based on Gtk. The build option is '-t lx86 -api gtk'. (The build system now optionally allows you to choose what API to use, instead of automatically setting it from the selected target.)

August 3, 2008

Emaculation.com, which years ago was the first to announce the existence of Mini vMac, now has an illustrated guide to "Setting up System 6.0.8 on Mini vMac for Windows", written by ClockWise. He has also updated the vMac page on Emaculation with information about Mini vMac.

June 10, 2008 The latest Development source snapshot has the Mac II emulation getting close to useable. The video now works, but there is still an issue with cursor display. I have an idea of what to fix next, as time permits. My year of mostly working full time on Mini vMac has ended. I intend to continue development of Mini vMac, but it is likely to be slower.

April 25, 2008 Thanks to prompting from Steve Secker, I've revised the AutoQuit documentation to try to make it clearer. I also have repackaged the AutoQuit archive (and also the EjctQuit, DAOpener, DAFKEY, and Gryversi archives) to conform to my currently preferred format (zipped hfs disk image with checksum). There is no change to the software.

April 22, 2008 Today's Development source snapshot can now emulate a Macintosh II, sort of. It doesn't emulate a video card yet, so it is not too useful. But it does successfully boot System 6.0.8, run an application, and then run AutoQuit. Mostly it demonstrates that progress is being made. (The build option is '-m II'.)

The snapshot also contains the work done so far on PowerBook 100 emulation. (The build option is '-m PB100'.) It gets as far as waiting for an ADB interrupt. I may get back to this some day (after getting the Mac II emulation fully working).

March 27, 2008 PowerBook 100 formatting information for FDisasm is now available. (Also, the original Macintosh Portable ROM is said to be identical.) In some ways it is half way between the Macintosh SE and the Macintosh II, so it may, or may not, be a useful stepping stone. It has already been useful in identifying some more bugs in the emulation of the VIA chip (that don't seem to affect the computers emulated previously.) But the emulation of the Power Management Unit protocol, while it looks doable, might be too much to bother with just right now.

March 16, 2008 The latest Development source snapshot can now use a Macintosh Classic ROM, thanks to assistance from David Sibley and "Gord". The build option is '-m Classic'. Though it runs, it is not necessarily an accurate emulation of a Mac Classic. A Mac Classic is supposed to be nearly identical to a Mac SE, but there are a few minor differences. There may be more differences that I don't know about. I can't really work on this much further until I own a Mac Classic. Getting the Mac Classic emulation to work to this extent involved fixing some issues in the emulation of the VIA chip, which could save time in emulating later Macintosh computers, which was my motivation for working on this now.

One thing to be aware of is that the Mac Classic ROM should be 512K. Apparently some ROM acquisition programs only save the first 256K. The CopyRoms program should save the correct size.

Another change in this snapshot is that the build system now has a separate argument for the memory size of the emulated machine ('-mem'), instead of including this in the model ('-m'). Possible values are: '-mem 128K', '-mem 512K', '-mem 1M', '-mem 2M', '-mem 2.5M', and '-mem 4M'.

Thanks to a tip from William Nolan, Mini vMac now has, when accessing the emulated computer's memory, a special case for little endian processors that allow unaligned access (such Intel), similar to the existing special case for big endian (such as PowerPC). This makes it a bit faster.

When Mini vMac is in full screen mode, it tries to send all key events to the emulated computer, instead of any normal meanings they would have in the host operating system. But I've decided that it went too far with this. So now in OS X, in full screen mode, it will no longer disable force quit (command-option-escape). This was just too dangerous, especially during development of Mini vMac. You can still send command-option-escape to the emulated computer, using the F1 and F2 keys, which are mapped to 'option' and 'command'.

After using the “Alternate Keyboard Mode” for a while, I've made some refinements to make it better suit how I use MPW (which is what Mini vMac is really for). I don't expect anyone else is using the Alternate Keyboard Mode, and anyway I warned that changes were likely. Typing ';' now locks the mode on, there is no temporary state. (I found holding ';' while typing other keys too much strain.) Typing 'm' now leaves the mode. (I find 'm' slightly easier to hit than 'u', and it is no longer needed for entering the mode.) The 'shift' and 'option' keys now override the mode like the 'command' key does. (So anything except lowercase letters can be typed without leaving the mode.) When compiled with the Alternate Keyboard Mode, Mini vMac now starts up with the mode on rather than off. (I think I've reinvented what I've read about the vi editor. You are normally in command mode, and only use insert mode temporarily.) A number of the mappings are changed: 'a' - semicolon, 'b' - backslash, 'e' - backspace, 'h' - equal, 'n' - minus, 'o' - ], 'r' - return, 't' - tab, 'u' - [, and 'p' and 'w' are now not used.

February 29, 2008

Macintosh II ROM formatting information for FDisasm is now available. (Which is what all the work on disassembly the last couple months has been leading to.) The disassembly tools and the formatting information for the other ROMs have also been updated. The disassembler now better supports 68020 code, but it still has no support for FPU or MMU instructions. There are only a few uses of the MMU in the Macintosh II ROM, and the FPU is used only in PACK 4 and PACK 5.

February 16, 2008

The Mini vMac bounties page has a new simple and informal system. [This has been suspended.] I have decided to transition away from using microPledge, because, after working with it a while, I feel that what it offers doesn't really match what I wanted to use it for. On the positive side, they have just fixed a bug I had noted with removing pledges from a developer started project.

February 9, 2008

Macintosh Plus ROM formatting information for FDisasm is now available. Also FDisasm and FindCode have been updated. (One notable change is that they now consistently use hexadecimal notation instead of decimal.) And also there is a new tool FindRes to get information about Macintosh resources such as are found in the Macintosh Plus ROM.

In other news, John-Robert La Porta has created a guide (pdf) to using Mini vMac to play Dark Castle and Beyond Dark Castle.

January 28, 2008

FDisasm 0.2.0 is the second public development release of the formatting disassembler. The Macintosh SE ROM formatting information is now in a separate disk image, and there is also now formatting information available for the Macintosh 128/512 ROM. (The Macintosh Plus information is still to come.)

FindCode is a new tool to help create some of the formatting information used by FDisasm.

January 18, 2008

Lazyone” has released the third version of his port of Mini vMac to the Nintendo DS.

January 17, 2008

FDisasm is a formatting disassembler for Motorola 680x0 code. It makes it possible to distribute the means to create an annotated disassembly of copyrighted code (such as Macintosh ROM images), without distributing that code or files derived from it.

FDisasm 0.1.0 is an initial public development release, and so not yet of too much interest. For that matter, I don't expect very many people to be interested in it even when it's done.

January 8, 2008

"interrobang" reports (with pictures) that the default Linux Intel version of Mini vMac works on the XO-1 laptop from OLPC. I've made a microPledge project for people to express interest in an improved port, better integrated into the Sugar user interface.

December 30, 2007

John-Robert La Porta just sent me a link to the Dark Castle Forum, about the game Dark Castle and sequels. Dark Castle and Beyond Dark Castle are among the most popular reasons why people use Mini vMac.

December 22, 2007

Today's Development source snapshot has more accurate mouse and keyboard event handling, by using an event queue to communicate between the platform dependent code and the platform independent code. Previously, the platform dependent code would tell the platform independent code every emulated sixtieth of a second the current mouse position and up/down state of the mouse button and keys. If the host computer was very busy, or just slow, then a down and up pair could end up being processed in the same emulated sixtieth, and they would cancel each other out and be lost entirely. Also a mouse button state change might not be processed until well after it happened, and the mouse position might be different by then. (Though if Mini vMac is not getting time every sixtieth of a second, so that these problems can be observed, then sound emulation isn't likely to work either, emitting horrible noises. But it is possible to compile Mini vMac without sound.) And also if the host computer is a device without a keyboard, such as using handwriting recognition, then there might not be separate key down and key up.

The X version now uses mouse motion events when possible instead of XQueryPointer, which is alleged to be inefficient. (Especially if the program is using the display on another computer, so that XQueryPointer requires a round trip over the network. I've never tried this. I don't know if anyone has.)

The Macintosh SE emulation, in full screen mode, will now emulate the ADB protocol for mouse movement, instead of just poking the changes into emulated low memory. This turned up a bug where apparently emulated ADB devices were responding to commands too quickly, before the emulated Mac was ready. I increased the constant that specifies the delay.

December 10, 2007

You can now increase the priority of features that you want added to Mini vMac, and support their development, by pledging bounties. [This has been suspended.] This is done through microPledge, which looks to be the most suitable bounty system I've found on the web. "zorzal" has already pledged towards the Maemo port, and also offers to contribute a Nokia 800.

December 8, 2007

This week's Development source snapshot has two fixes to the 68020 emulation (In distinguishing between long DIV and MUL, and in bit field operations with width of 32.) Not too big a change, but it involved a major project to identify the bugs. The 68020 emulation is probably now accurate enough to emulate a Mac II. But this isn't too useful yet, as Mini vMac doesn't emulate a Mac II, and almost no software that requires a 68020 doesn't also a require color quickdraw.

December 1, 2007

I've decided to try to make development of Mini vMac 3.1 a bit more open than in previous versions. The Development page has source code snapshots of the work in progress. There is no promise that it works correctly. Most people should wait for the first alpha, at least.

The main feature of today's snapshot is a hack to support larger screen sizes, with the build system options '-hres' and '-vres'. For example '-hres 640 -vres 512' makes the emulated screen take a quarter of my lcd monitor, so it uses the entire monitor in full screen magnify mode. Be warned this is very much a hack, involving numerous ROM patches (and somewhat different patches on the Mac Plus, the Mac SE, and the Mac 128/512). It emulates a computer that never existed, so there will definitely be compatibility issues with some software. Also keep in mind that most games that will work on the Mac Plus are designed for 512x342, and don't benefit from a larger screen. (The original vMac supported larger screen sizes also, with related method that doesn't directly work in Mini vMac.)

You can also set the emulated screen smaller than 512x342, which could be useful on portable devices, but that will really cause compatibility issues.

Another change is that the alternate CPU emulation of Mini vMac 3.0.4 is now the main and only emulation. More testing is needed to become confident about it. The PowerPC assembly code version has been revised to match the new emulation. Also the build system now generates this assembly code for the selected development environment, instead of keeping separate copies of this source for the two previously supported environments. This made it possible to also support using assembly code in PowerPC linux, with a new build system target, '-t lppc'. (Which about doubles the speed.) This so far has only been tested in Ubuntu 6.06.

In response to this patch, I've tried to start cleaning up type definitions so as to be better able to work on non 32 bit CPUs.

I've merged in changes from Fabio Concas's Pocket PC port version 2.8.2, and used a suggestion by Yuhong Bao to use _tWinMain instead of WinMain in the Windows version.

The build system now supports using the command line tools of the LCC compiler ('-e lcc -cl'), supports the Sun c compiler ('-e snc'), and supports compiling the Pocket PC version with Microsoft Embedded Visual C++ 4 for ARM and the emulator ('-t wcar' and '-t wc86').

November 15, 2007

Mini vMac 3.0.4 is now officially released (with no change from the final beta, as usual). New since the previous official release, 2.8.2, is support for importing and exporting the clipboard and files, a new build system, localized versions for Dutch and Spanish, and more. Also there are some bug fixes, such as that the PowerPC version now works in Mac OS X 10.5. The Changes file in the documentation gives a more complete list.

November 9, 2007

There is now a Mini vMac 3.0.4 beta, which fixes a bug in the PowerPC Macintosh OS X version that made previous versions incompatible with Leopard. It changes only 10 bytes of code from 3.0.3, so I'm optimistic it won't introduce further problems. The same fix is in the PowerPC version for Macintosh OS 9 and earlier. There is no change in the Intel Macintosh OS X version from 3.0.3, or the versions for other operating systems, other than to change the version number.

I've also updated to 3.0.4 the '-im 1' version of Mini vMac with David Sibley's icons installed.

Besides the icons, David Sibley has now also contributed a t-shirt design for Mini vMac. Buying a T-shirt or other item with this design is one way to help support the maintenance of Mini vMac. [This is no longer available.]

November 7, 2007

Mini vMac for PowerPC Macintosh OS X is not compatible with Leopard, as pointed out in this bug report. I've figured out the problem, and will make a new beta soon. The version for Intel is not affected, and as far as I know works fine.

October 24, 2007

I've added a universal binary for Mac OS X to the download area for the Mini vMac 3.0.3 beta, as requested by Jason Townsend. (Actually he requested replacing the separate PowerPC and Intel versions, which I haven't done.) The universal version is useful for people who use both PowerPC and Intel Macintosh computers, and for people who don't know which they have. It is made by simply gluing together the separate versions with the 'lipo' tool. The executable code is not changed, which I why I'm willing to do this at the last minute before official release.

I've also made an '-im 1' version of this universal binary, and installed David Sibley's icons into it. This is available for download from the icons for Mini vMac page. (For Macintosh OS X, the '-im 1' option doesn't change the executable code, so again, this should reasonably safe to include at the last minute.)

October 23, 2007

David Sibley has created a very nice set of true Mac OS X style icons for Mini vMac.

October 3, 2007

AutQuit7 version 1.1.0 can now open a document as it launches an application. And if either the application or the document is on a disk that hasn’t mounted yet, it will now wait up to 15 seconds for it to mount.

September 27, 2007

I've updated the software for Macintosh Plus list. I added the 4 Ray's Maze adventure games, thanks to “Martin” for pointing them out. The recent HappyPlusClock is also added.

September 20, 2007

TestMnvM is the start of a utility for testing Mini vMac.

September 6, 2007

There is now a Mini vMac 3.0.3 beta. Beta means no new features will be added before the official release, which will hopefully be soon. Many more features could be added, but it has been too long since the last official release.

There aren’t too many changes in the default compile since the last alpha. The main one being that by default, the Macintosh versions of Mini vMac will not claim ownership to disk image and ROM image files. So double clicking on disk images will not launch Mini vMac. This is because when you have lots of copies of Mini vMac around, all of which claim ownership of disk images, it is unpredictable what happens when you double click on one, making the feature useless. Instead there is a compile time option, -im 1, to make Mini vMac claim ownership as has been done previously. You can then make sure to have only one copy of Mini vMac compiled this way on your computer.

The Windows version also will now claim to own disk image and ROM image files when compiled with '-im 1'. This feature had been removed from Mini vMac as of version 1.0, to avoid potential conflicts with other programs.

The Windows and Linux version will now attempt to do character set translation when importing and exporting the clipboard, and for the names of imported and exported files. The Windows version will now removed illegal characters from the default name for exported files (the Linux version already did this).

Most of what is new in Mini vMac 3.0.3 are compile time options, such as -bg, -speed, -no-asm, and -min-extn.

As previously mentioned, the optional sound in the Linux version may now be more reliable.

August 23, 2007

AutQuit7 assists in “wrapping” an application for the Mac Plus that requires System 7.0 or later, so that you can use it with Mini vMac more as you would a native application for your machine.

August 17, 2007

DoLaunch is a trivial application that makes it possible to “wrap” programs that will not work as the Start Up application in System 6 or earlier.

August 14, 2007

I’ve revised the code for sound in the Linux version (originally by Stephan Kochen), in response to a patch from Anonymous, with the help of what little documentation I could find on the web, and referring to the SDL code.

This new code seems to work reliably in Ubuntu 7.04 in Parallels, and will be included in the next Mini vMac release (alpha or first beta). If anyone would be interested in testing it before then, let me know.

August 11, 2007

ClockFix is a utility to keep the emulated clock accurate in System 7 or later. (It should work in any version of Mini vMac, not just the current alpha.)

I have updated ClipIn and ClipOut to provide the desk accessories in a second format, packaged as a system 7 style desk accessory, with icon and version resources. The desk accessory code itself is identical, and hasn’t changed since the previous version.

My original intention was to repackage ClipIn and ClipOut as applications for system 7, so as to better handle memory management, and since desk accessories are only supported in system 7 for backward compatibility. But it turns out that due to some quirks of how the scrap manager works and how desk accessories are handled in system 7, a desk accessory works better than an application can for the purposes of ClipIn and ClipOut.

August 4, 2007

There are new archives for ImportFl, ClipIn, and ClipOut, to fix mistakes in the README files. There are no other changes. Thanks to Anonymous for reporting the problem in ImportFl on the Proofreading tracker.

August 2, 2007

There is now a Mini vMac 3.0.2 alpha, with an assortment of bug fixes, new compile time options, and few changes to behavior.

The main change to the behavior of the default compile is that the stopped mode toggle is now Control-S-D instead of Control-S-S. Before I had wanted to make it quick to type, but now I think it is more important to prevent hitting it accidentally.

Another change is that the variation name displayed in the about message, and used for file names, no longer includes the development environment used to compile it or the debug status, but only has the program name abbreviation, the version number, and the target. Such as minivmac-3.0.2-imch, for the Intel Macintosh version of Mini vMac 3.0.2.

When switching back to the Mini vMac application, previous versions would always ignore keys that were already held down. There is now a special case such that immediately after a drag and drop on Mini vMac, it will not ignore keys already held down. This makes it easier to rebuild the desktop of disk images by holding down command and option. However, the keys that map to command and option can have special meanings in other operating systems. (For example, in OS X, clicking on the window of another application with command and option down will hide all other applications.) So it usually works better to press command-option right before dropping, instead of before dragging. (Thanks to a complaint by David Sibley for this feature.)

An obscure change is that when entering the control mode, or the open dialog, or switching to another application, all the emulated keys (except for caps lock) are released immediately, instead of waiting until normal emulation resumes. An even more obscure change is that in the control mode, changes to the caps lock key take effect immediately, instead of waiting until leaving the control mode.

There is now a compile time option, “-ccs”, to swap the emulated Control and Command keys. And there is an experimental option, “-akm”, for making some keys more convenient to use.

The build system now supports more versions of Xcode. (Thanks to complaints from David Mullin.)

The build system now includes targets for Solaris, for use by Luc Pauwels port. So far the only change to the generated source from the linux target is to include the 'posix4' library. (And also the different target means the variation name, used in the about message, is different.)

The build system now has an option, “-pk”, to package the compiled application in a format suitable for distribution.

The biggest bug fixed in this version is that in OS X the clock could be off by some hours because the time zone wasn’t taken into account correctly. This happened because I was recently updating the OS X specific code to remove deprecated calls, which now seems to have been a waste, since now it seems the entire carbon API is basically deprecated.

Another bug fixed in OS X, and also earlier Mac OS, is that dragging and dropping onto the open file dialog would also immediately try to mount that file in Mini vMac.

A call to XFlush was missing in the X version (such as the linux port), and the most noticeable effect was the lack of drawing when Mini vMac was in the background with the run in background option on.

The Windows and X versions now support the PageUp, PageDown, Home, End, Help/Ins, and ForwardDelete keys.

An obscure bug fixed is that the mouse position could shift slightly when leaving full screen mode (or entering the open dialog in full screen mode). A more obscure bug fixed in the Macintosh versions is that {mouse down, control-o, mouse up, type escape key} would leave the emulated mouse stuck down.

July 26, 2007

I’m back from traveling and have released new versions of ExportFl, ImportFl, and binUnpk.

ExportFl and ImportFl will now quit when told to on shutdown, and now check that the needed Mini vMac extensions are available. The common source used in all 3 programs have been synchronized, along with a few additional minor cleanups.

I’ve moved the news from the alpha page to the Mini vMac main page. All Mini vMac related news will now go here. I’ve also moved the downloads to a separate page.

(Update: a few minutes after releasing binunpk-1.0.1.zip, I noticed that the disk image was missing the desktop file. This is fixed in binunpk-1.0.1b.zip)

July 12, 2007

I have minor updates to ImportFl and ExportFl about ready to release. (They don’t quit when told to on shutdown.) But I’m leaving in an hour to travel two weeks, so this will have to wait until I get back.

July 8, 2007

binUnpk is a utility to unpack MacBinary files. The ImportFl application is mostly useful for importing archives, since it will lose the Macintosh specific information of other kinds of files. Then you need a program such as Stuffit Expander 4.0.1 to unpack the archives. But Stuffit Expander itself comes as an MacBinary archive. binUnpk allows you to get started, since it doesn’t need to be imported into a disk image, it comes already in a disk image.

July 2, 2007

ImportFl is an application to use in Mini vMac (version 3.0.0 or later) to import files into the emulated computer from the real computer.

June 29, 2007

ExportFl is an application to use in Mini vMac (version 3.0.0 or later) to export files from the emulated computer to the real computer.

June 23, 2007

There is now a Mini vMac 3.0.1 alpha. Mini vMac 3.0.1 has basically no changes to the default compile, so only source code is provided. The main change is in the system for building the program from the source code.

To keep Mini vMac small, simple, and reliable, the design has been to have no run time preferences, only compile time options. The new build system is designed to make this more practical, to make it easier for people to compile a custom version.

The build system is now a Macintosh program that runs in Mini vMac (it would also work on a real 680x0 Macintosh). After you specify the options, the program generates an archive containing all the files needed to compile Mini vMac with those options in the selected development environment. If the build system is running in Mini vMac 3.0.0 (or later), then this archive will then automatically be exported to the real computer, where you can extract the files and compile the program.

For the documentation (so far) of the build system, see here.

Beside the build system, the other main change in Mini vMac 3.0.1 is the inclusion of a Dutch translation from Luc Pauwels (option “-lang dut”), and a Spanish translation by “Chir” (option “-lang spa”).

Also, thanks to “Lazyone” complaining that Mini vMac’s simple emulation of the 68000 processor was too slow for his Nintendo DS port, I’ve tried out a slightly different approach, which makes it around 5 to 20 percent faster. Which might not be enough to matter. But this approach also made it possible to be more accurate about illegal instructions without speed penalty, and it also makes the code a bit cleaner. However, this code is too new for me to trust it yet, so it is not used by default. Using it is a compile time option. (“-alt-cpu”)

December 25, 2006 I’ll be travelling and out of touch for a few weeks. My current location the last month or so didn’t work out so well for working on Mini vMac, with so much else going on. Maybe next year.

November 29, 2006

Luc Pauwels has now compiled and packaged Mini vMac 3.0.0 for Solaris 10 on SPARC and x86.

After traveling and other events the past couple weeks, I’ll now get back to Mini vMac, once I catch up a bit on sleep.

November 19, 2006

Sorry for the delay as I’ve started travelling again. I hope to regain some momentum in a week or so.

November 12, 2006

DAFKEY is a set of simple FKEYs to open items in the Apple menu. They provide a quicker way to use ClipOut and ClipIn.

November 11, 2006

ClipIn is a Desk Accessory that imports the clipboard of the real computer into the clipboard of the emulated computer (in Mini vMac 3.0.0).

November 10, 2006

ClipOut is the first software to go with Mini vMac 3.0.0. It is a Desk Accessory that exports the clipboard of the emulated computer to the real computer.

November 9, 2006 There is now a Mini vMac 3.0.0 alpha. It has no immediately obvious new features over version 2.8.2. Instead it provides certain capabilities for software running within the emulated machine.

I hope to provide some such software over the next few weeks.

October 17, 2006 Luc Pauwels has now also compiled and packaged Mini vMac for Solaris 10 on x86.

October 6, 2006 Luc Pauwels has compiled and packaged Mini vMac for Solaris 10 on Sun SPARC.

September 20, 2006 Mini vMac 2.8.2 is now officially released, with no change from the June beta. It includes localized versions for French, Italian, and German, and has a native Intel Macintosh version. More minor changes include an improved stopped mode, and some better error reporting.

The overlong beta period was mainly due to delay in writing up documentation for the new build system. But lately, on getting back to looking at this, I feel the current form isn't appropriate for Mini vMac. It may be powerful and easy to use, but it fails to be simple and maintainable. And I think I have a better idea, which can be based of the current code. But this will need to wait for a future version, and so I'm releasing Mini vMac 2.8.2 now.

Pierre Lemieux provided the French translation of the program strings. Gaël Coupé assisted by proofreading (an earlier version). Pierre Lemieux has also translated much of the Mini vMac documentation, available on his website at http://pages.videotron.com/plemieux/minivmac/.

Fabio Concas and Gianluca Abbiati provided the Italian translation. (Fabio Concas has previously ported Mini vMac to Pocket PC, available on his website at http://digilander.libero.it/jpdefault/mvm_index.html.)

Detlef Kahner provided the German translation. (He maintains the website Classics For X.)

The localizations are a compile time option. Now that the work has been done on Mini vMac to support French, Italian, and German, it wouldn't be too hard to support other languages, that use a similar character set, if anyone wants to volunteer to provide translations. See the Localization Page and the Localization Forum.

Mini vMac now has a 'Stopped' mode as an on/off toggle, instead of stopped being one of the set of speeds. So you can stop the emulation and then resume it, without having to remember what speed you were running. The implementation of Stopped mode is improved; the emulation is truly stopped, which fixes a potential issue with spurious sounds. The native cursor of the real machine is now shown while in stopped mode.

The ROM not found message now tells the name of the file it is looking for. There were many reports that indicated this was needed. It also gives a web page address for further information.

This message, and other error messages and informational messages are now displayed using platform independent code similar to the control mode. This improves the X version, which previously would just write messages to stderr or stdout, which could easily be missed, or be lost entirely depending on how the program was launched. It also means the non ascii characters (such as accented characters used in the French and Italian translations) are displayed more reliably across all versions.

If the ROM isn't found the program now doesn't immediately quit, but enters the stopped mode. This allows the error message to be seen using the new display method.

A number of other error messages have been added or improved. If the ROM file is too short, Mini vMac gives an error saying so, and a different error if there was a some other problem reading the ROM. In the X and Windows versions, if it doesn't recognize a command line argument, it will give a warning.

There are numerous refinements to the user interface strings, many of which were suggested by Pierre Lemieux.

The Windows version should now work better when the real computer isn't fast enough to emulate at 1x speed, allowing other programs and the computer as a whole to remain responsive.

In the Windows version the function keys F3 through F12 are now passed through to the emulated machine, to match the Mac and Linux versions. (F1 and F2 are used for the option and command keys.)

In the X version, the open command has been removed, instead of having a command that just gives a message saying not implemented (because an 'open a file' dialog isn't part of basic X). This is possible because of the more flexible way of displaying the help screen which was needed for the French and Italian localizations.

In the X version, switching between normal mode and Magnify mode and Full Screen Mode may now work more reliably on more operating systems, though it may sometimes flicker a bit more.

July 26, 2006 Lazyone” has released a Test/Alpha version of his port of Mini vMac to the Nintendo DS.

July 22, 2006 “Lazyone” is making progress porting Mini vMac to the Nintendo DS. For details and pictures see the Lazyone DS Development page.

June 9, 2006 Natalia Portillo has contributed versions of Mini vMac compiled for Microsoft Windows XP x64. They are available from the download area on this page. (I don't have an x64 machine, so I've not tried these myself.)

May 25, 2006 The public beta of version 2.8.2 is available.

March 1, 2006 The public beta of version 2.8.1 is available.

January 31, 2006 The first public beta of version 2.8.0 is available.

January 13, 2006

I've started a FAQ (Frequently Asked Questions) page.

January 12, 2006 "Daniel" has volunteered to do the Spanish translation. I've started a Localization Forum to coordinate translation work.

January 11, 2006 The new Localization page shows the current French and English strings to be used in the next version of Mini vMac. If anyone wants to volunteer a translation to another language (that uses a similar character set) in the next couple weeks, I'll include it in next version, which I intend to release a beta for by early February. The plan is to include a version compiled for Intel Macintosh, which is why the hurry. (I expect to get access to an Intel iMac within two weeks, and I believe the port should be trivial.)

January 10, 2006 Pierre Lemieux recently volunteered to translate the user interface strings of Mini vMac into French. He also went much further than that and has started to translate the documentation. The current version of the French documentation may be found on his website at http://pages.videotron.com/plemieux/minivmac/. Gaël Coupé has assisted Pierre Lemieux in this work by proof reading.

In other news, I have recently become aware of Xmac by "Darcelf", a port of Mini vMac to the Microsoft Xbox. I'm not providing a link to it here, because as far as I can tell after some hasty research, downloading the compiled program would not be strictly legal in most countries. (The Xbox is sold below cost, with Microsoft trying to profit from licensing developers, and therefore Microsoft tries to prevent unlicensed software, I think.) It should be completely legal to download the source code, and legal to compile it if one happens to be a registered Xbox developer.

January 2, 2006 I seem to be receiving email as normal at my regular account, so I've revised the Feedback page to say that sending email is fine, since it is clear that many people prefer it, but using the SourceForge Trackers and Forums is still preferable.

I'm now using Gmail to send email while travelling, thanks to an invitation from Dmitri Popov. And also thank you to one other person who sent an invitation (identified only by email address, which I won't list here).

December 6, 2005 I'm travelling again, and so again using Yahoo to send email. Unfortunately it seems that some ISPs blacklist Yahoo, so I can't reply to some people. (Hi John!) Also I seem to be having problems receiving email at my regular account. A few days ago their status page mentioned being "under a continuing DDOS attack". Because of this, and past problems with email, I now want to recommend that people use the SourceForge Trackers and Forums if at all possible. I've tried to revise the Feedback page to make this easier.

I've added a new Glitches Forum for reporting irreproducible problems that might, or might not, have been due to bugs in Mini vMac. It's listed on the Feedback page.

November 22, 2005 version 2.7.1 officially released. (There is no change from the beta.) Mini vMac now has more advanced control of speed, superseding the previous 'limit speed' option. Other highlights are an experimental compile time option for sound in the Linux version (thanks to Stephan Kochen), and that the Windows version is up to 40 percent faster by simply using a better c compiler.

Here are the rest of the release notes, copied from the beta page:

I've lately had the opportunity to test Mini vMac on a 2.7GHz Power Mac G5. (While doing other work for the company Scientific Imaging. The use of this machine and other help made Mini vMac 2.7.0 possible.) Mini vMac 2.6.1 was not really usable on the G5, the moment it ran the fans would go wild. I've had previous reports of such problems (such as from Ryan Schmidt), but I couldn't fix it without a machine to test solutions on.

The first change is that when 'limit speed' is on, Mini vMac will no longer try to monopolize the processor. I hadn't done this before because Mini vMac needs time each and every 60th of a second for smooth emulation, especially of sound, and I wasn't sure that operating systems could slice up time that fine. But after a bit of experimentation it now seems to work adequately in Mac OS X, Windows, Linux, and even Mac OS 9. It can actually be smoother because some operating systems will penalize programs for trying to take all the processor time.

The next change is to replace the simple 'limit speed' toggle with a bigger range of choices: 1x, 2x, 4x, 8x, 16x, 32x, and "All out". The 'L' command of the Control Mode is replaced with an 'S' command, that leads to another screen with more options. (The 'Limit Speed' toggle is also removed from the menu bar, in Macintosh and Windows.) So you can choose how fast you want the emulated machine to run, and thereby what percentage of the processor to take. I had previously thought that perhaps Mini vMac could automatically try to detect when the emulated machine is idle and slow down if it is. But there is no right way of doing this, there could only be guesses that would often be wrong. And it turns out that even if this could be done correctly, I still wouldn't like the result on a Power Mac G5 (running OS X 10.4.2). Within less than a second of the processor usage reaching 100 percent, the fans speed up. I can't think of any way to automatically guess that the emulated machine is idle much faster than that. By making the speed control manual, the fans stay constant no matter what the emulated machine is doing. This isn't just a problem for Mini vMac, it is a problem for any software not carefully written with the issue in mind. (For example, dragging a scroll bar in Mozilla 1.7.8 turns on the fans.) Hopefully, future versions of Mac OS X will improve the fan control. I think running the fans a bit louder always would be preferable than to having them always changing.

Since Mini vMac no longer needs to monopolize the processor there is now an option to allow it keep running even when it is not the active window. This is toggled by the 'B' command of the Speed Control screen. So you can set some computation going in Mini vMac and then use other programs on your machine. You can even have two copies of Mini vMac running at once. (Note that this is probably not legal unless you own a real Macintosh for each virtual machine running at once.) You can set Mini vMac to run in the background with the speed set to "All out", but this isn't recommended, except on a dual processor machine (Mini vMac can only use one processor).

There is now a command to stop Mini vMac (when it's the active application), the 'S' command of the Speed Control screen. This can be convenient, such as to pause a game. The implementation isn't yet satisfactory. The emulation needs to keep partially running so the Control Mode will work, which can result in some spurious sound output. I'll try to fix this in a later version.

Mini vMac will by default start at 8x speed, fast enough to feel reasonably snappy, but not so fast as to stress modern machines (which can go up to 20x to 50x). The '/l' command line option of the Windows version, and the '-l' command line option of the X version, will still work, causing Mini vMac to start at 1x speed.

The minimum emulation speed is now 1x instead of 0.5x, to reduce possible compatibility issues and to simplify the code. If the real machine isn't fast enough to do 1x, the emulated machine will still think it is running at the normal number of instructions per time, but its sense of time will not match the real time.

The Control Mode help screen will now display the current speed setting, and in addition will also display the Full Screen, Magnify, and emulated Control Key option settings.

The implementation of limiting speed is different for each operating system, and the behavior may vary a bit between them. In OS X, the emulation will now continue running (but only at 1x) while dragging the Mini vMac window, selecting from a menu, or while a dialog is up. In OS 9, the emulation will stop at all of these times. In other operating systems, the emulation may stop at some these times. In Mac OS 9, which uses cooperative multitasking, Mini vMac will only run smoothly if all other running programs are very cooperative.

I had thought that modern compilers couldn't cope very well with an emulation loop. But it turns out that the compiler in the free "Microsoft Visual C++ Toolkit 2003" does pretty well, better than the very old Microsoft compiler that I previously used. This speeds up the Windows version by up to 40 percent. (The OS X version uses hand tweaked PPC assembly, originally based from the output of the MrC compiler.)

Mini vMac now includes the patch from Stephan Kochen that adds support for sound in the Linux version using ALSA. Unfortunately I haven't been able to test the merged version, since I haven't gotten sound to work at all in any version of Linux running in virtual PC. I did try installing one version of Linux (Ubuntu) on a real PC, where sound worked, but the very first call in Mini vMac that opens the audio device fails saying busy. Perhaps I didn't get the ALSA development files installed correctly. I made a number changes from the original patch to match Mini vMac formatting and error handling conventions, and to try to make it use non blocking, so I'm not sure if the current source would actually work at all on any machine. So I've not enabled it by default, it is a compile time option. [update: Stephan Kochen reports that it works for him. There was also one report of it not working.]

However, compiling with sound enabled in the Linux version involves more than just adding a line to the CNFGGLOB.h file. It needs an additional file header and library file. To deal with options like this I have added to the build system. There is now a collection of simple scripts, for various scripting languages, that take optional command line arguments and compile "setup.c" and use the result to compile Mini vMac. Unfortunately this isn't documented yet, so for 2.7.0 I've still generated the "projects" folder, which can be used as in the previous version. But for now I can say that to compile the Linux version with sound, open a terminal window and change the current directory to the 'source' folder. Then type 'bash build/bash MySoundEnabled' (and press return). When it finishes, there should now be a program called 'minivmac' in the 'output' folder, created within the 'source' folder. (Or you can use 'bash build/bash MySoundEnabled -keepmake', which will keep the make file, so that you can make changes and recompile.)

In the Mac OS X version, if you create a folder called "mnvm_dat" inside the "Contents" folder within the application bundle (control click on the application and choose "Show Package Contents"), then Mini vMac will look for the "vMac.ROM" file, and the disk1.dsk, disk2.dsk, etc files within the "mnvm_dat" folder. This allows you to make a self contained Mac OS X application that runs an application for the Mac Plus (especially when used with the AutoQuit software.)

In the Mac and Windows versions, the name of the Mini vMac window will be taken from the name of the application file, instead of just being "Mini vMac". So you can change the application name to change the window name, which also affects things like the Dock (OS X) or the Taskbar (Windows).

Mini vMac can now when launched automatically mount more than just three disks. It can also mount "disk4.dsk", "disk5.dsk", up to "disk9.dsk" (If Mini vMac is recompiled to support that many disk images. The default is 6, the maximum is 32).

The Windows version now supports "Shortcut" files (The Windows equivalent to Macintosh "Aliases".) The "vMac.ROM" and the "disk1.dsk", "disk2.dsk", etc files may be Shortcuts. It must be "vMac.ROM", not "Shortcut to vMac.ROM". Actually, the file is really named "vMac.ROM.lnk", but what you see is "vMac.ROM".

The Macintosh version now supports drag and drop of aliases. It is simply a bug that it didn't previously work.

The Macintosh OS X version now uses the recommended SetSystemUIMode to enter Full Screen mode when it is available (10.2 or later). The main noticeable difference is that Command-Tab is no longer intercepted by the operating system, but passed to the emulated machine. (The intended only way to exit Full Screen mode is to type "Control-F".)

The "About" command of the Control Mode ("A") no longer displays copyright holders, since the complete list is too long to fit here. It now only displays the maintainer name, immediately followed by the web page, where the complete list can be found (on the Credits page). Anyone maintaining a fork of Mini vMac (such as Fabio Concas) can change kMaintainerName and kStrHomePage in "setup.h".

Mini vMac now has some code for 68020 emulation as a compile time option. (The Mac Plus ROM supports the 68020, and vMac for Macintosh emulates a 68020 instead of a 68000.) Much of the implementation is adapted from the "UAE Amiga Emulator", mostly as found in the vMac source. The Mini vMac 68020 emulation works well enough to boot up with the emulated machine thinking it has a 68020, with the operating system and MacsBug working correctly, and most software that doesn't require a 68020 working normally. It is hard to test the 68020 emulation because most software that requires the 68020 also requires color quickdraw. The little software I've found that seems like it ought to work all crashes, so I'm pretty sure there are bugs in this 68020 emulation. The main reason for emulating a Mac Plus 68020 is as a stepping stone to emulating the Mac II. Having the Mac Plus 68020 working as well as it does so far will make it easier to write testing software to make a correct 68020 implementation.

This were some bugs in the VIA timer 1 emulation and the delayed task mechanism. Fixing these allows Mini vMac to pass the tests of Apple's MacCheck program when running faster than 1x (2.6.1 would pass only if 'Limit Speed' was on).

There was a bug in the PPC asm version of the 68000 emulator, where a routine wasn't preserving all registers it should. This doesn't seem to affect previous versions of Mini vMac, but it definitely affected the current version.

The 680x0 emulator emulated the Fline trap incorrectly. This doesn't previously seem to have had any effect, but it prevented MacsBug from working with the 68020 emulation.

The MoveS instruction has been removed from 68000 emulation, since it isn't a legal 68000 instruction. Also the implementation wasn't correct anyway. A possibly correct version is now in the 68020 emulation.

Mini vMac for OS 9 and earlier (PPC) will now work back to OS 8.1. It should work in earlier versions of Mac OS, but I haven't tested this yet. (Mini vMac for Macintosh 680x0 seems to work back to System 2, though it's not too thoroughly tested.)

October 10, 2005 The public beta of version 2.7.1 is available.

August 1, 2005 The first public beta of version 2.7.0 is available.

May 25, 2005 I'm getting back to Mini vMac development, after some weeks of travelling. Meanwhile, Stephan Kochen has implemented sound in the Linux version, using ALSA. His patch is available from the Patch Tracker. At his request, and also prompted by Michael Juneau, I've turned back on the SourceForge Trackers for Mini vMac. See the new Feedback page. Every other page on this web site now has a link to the Feedback page at the top.

I'd like to thank "gianluca69" for donating to Mini vMac development.

April 15, 2005 I've created PAD (Portable Application Description) files for the convenience of software news sites.

April 13, 2005 version 2.6.1 officially released. (There is no change from the beta.) Mini vMac now has a variation that emulates the Macintosh SE. Another highlight is that the window position is restored when leaving Full Screen mode.

The main benefit of emulating the Macintosh SE is that people who own a Macintosh SE can now use Mini vMac legally. (They can use "CopyRoms" to acquire a ROM image.) There is little observable difference from the emulation of the Macintosh Plus. The other motivation was to figure out the emulation of ADB for keyboard and mouse, since that will also be needed to emulate any later machine. There are a number of things that still need to be looked into for the Macintosh SE emulation, but it seems to work as is. Future versions may improve the accuracy of the emulation, as is usual for Mini vMac.

The Macintosh Plus emulation now has a more accurate emulation of the keyboard and of VIA timers, using a new mechanism for delayed tasks. There is little observable difference, except that Mini vMac can now pass the tests of Apple's MacCheck program, if 'Limit Speed' is turned on for the 'Clock/Interrupts' test.

When leaving Full Screen mode, Mini vMac now returns to previous window position and magnify state. And when Full Screen mode is re-entered, it remembers the magnify state from last time. This works on Macintosh, Windows, and X. However the last was probably a bad idea, as X window managers seem to think that window positions are none of the application's business. I was able to wrestle X into submission, but it will probably take revenge later with obscure compatibility problems.

The source code for the Pocket PC port by Fabio Concas is now merged in. The intent is to make it easier for him to update his port when there is a new version of Mini vMac. I cannot offer any support for this port myself, as I don't own a Pocket PC, and don't know how to program it.

The version for Macintosh OS X now uses native Carbon Events, and no longer uses GetKeys, which might not work reliably in some versions of OS X. I received one report of such trouble from John Siracusa. With that, and figuring out to remove default command key equivalents from the Mini vMac menu, the ugly 'Command-Q' and 'Command-H' menu item kludge is no longer needed.

The Caps Lock key now works in Windows XP in full screen mode. This was broken in 2.5.0.

The documentation now has a page for compile time options, such as which machine is emulated.

This version was intended to have faster drawing in OS X for Full Screen mode. However, at the last minute I discovered that on an older machine (a PowerMac G3), when combined with Magnify mode, it was much, much slower. So I've disabled the feature, though it is still available as a compile time option. The idea is to use OpenGL, which seems to be the only way to avoid the double buffering done by OS X. This made drawing much faster on my development machine (though still nowhere near the speed of the OS 9 version). Unfortunately, on the older G3, the magnify by 2 operation doesn't seem to have been optimized, making it unusably slow.

I'd like to thank Lil and Sherm Sundet for recently donating a Macintosh IIcx to Mini vMac development. Yes, I intend to extend Mini vMac to emulate some later machines with color, though this will take some time. I've added a page listing 680x0 Macintosh models, sorted by date, which is also roughly the order I might try to emulate them. I've also expanded the page listing places to buy a Macintosh Plus.

March 29, 2005 The public beta of version 2.6.1 is available, with 2 minor bug fixes.

March 16, 2005 The first public beta of version 2.6.0 is available.

January 14, 2005 I just got back a few hours ago, and found some neat news in my accumulated email. Fabio Concas has ported Mini vMac to Pocket PC - see "http://web.tiscali.it/moustar/ppc_index.html". I don't have a Pocket PC to try it with, but I can look at the screenshots.

December 23, 2004 A few more programs have been added to the list of Macintosh Plus software. The online documentation has a correction from Ryan Schmidt - the 'v' disk icon (for disk images that aren't 400K or 800K) shows up not just in System 7, but also in earlier systems. (I think this didn't work in some early development version of Mini vMac.)

I will be disconnected from the internet for about 3 weeks. I'll respond to any emails when I get back.

December 10, 2004 I've started a page to list places to buy a Macintosh Plus. (Mini vMac requires a ROM image file to run, and so can be legally used only by those who own a Macintosh Plus.) I've added a tip from Orion Sky Lawlor on how to transfer files into a Macintosh disk image in Linux to the Disk Images page.

December 2, 2004 Added a page with MD5 checksums. I've put back in the alternate download page [no longer available], please only use this if the main SourceForge downloads don't work. I've also added a little more detail to the Disk Images page.

December 1, 2004 Some refinements to the documentation and the rest of the web site. I've started a new page about working with Disk Images, thanks to a question from Chuck Iverson, and many previous indications that it's needed. It needs more work, especially needing more detail for Windows and Linux. I've tried to clarify what to do with '.sea' files in the Start page, thanks to a question from Roger Kenyon. I've put in a "What Next?" section at the end of that page. And there is now a separate page for each of the Mini vMac Extras.

November 24, 2004 version 2.5.0 officially released. (There is no change from the beta.) Some highlights are emulation of the extended Parameter RAM, assorted fixes, and more speed in the Macintosh version.

Mini vMac now emulates the extended Parameter RAM of the Mac Plus, thanks to code contributed by Philip Cummins. Previously only the 20 byte PRAM of the original Macintosh 128 was emulated. The larger 256 byte PRAM stores additional information such as the time zone, latitude, longitude, and the alert sound. So now the Map and Sound control panels will work. This information is not saved on quit. The Macintosh version will initialize the time zone, latitude, and longitude from the real machine's information. The Windows version only initializes the time zone. I have some code that can find the time zone for the X version, but I'm not sure how portable it is, so it is disabled.

The emulation of the SCC chip is improved a bit, so that booting with AppleTalk turned on won't hang, and printing to the imagewriter will successfully do nothing. The SCC code from the Windows version of vMac was used as a starting point, with permission from Weston Pawlowski. (But unlike vMac for Windows, Mini vMac only tries to emulate serial ports that aren't connected to anything.) Also, thanks to Philip Cummins for pointing out the Zilog documentation for the SCC chip.

A small change to the VIA timer 2 code seems to stop the tendency to hang playing sounds in System 7. It seems to work ok, even though it doesn't fix what is probably the real problem, that Mini vMac only resolves time to about a millisecond, while the real VIA timer has much higher resolution.

I've added a number of programs that now work because of this change to the currently available Software page, along with many other additions. Over 40 have been added, bringing the total to over 200.

The PowerPC assembly language is tweaked a bit more, making the Macintosh version about 20 to 40 percent faster.

The Restart command will now work in all system versions. It seems that, contrary to the impression given by the documentation, executing the 68000 RESET instruction doesn't change the memory overlay state. Or at least, empirically, that seems to work better.

Some subtle bugs involving word access to address registers have been fixed. The main known effect is that the game BachMan sounds different.

Bad accesses to disk images could previously cause data to be written past the end of the memory allocated for the emulated RAM, which in theory could cause Mini vMac to crash or worse. This has been fixed.

In the Macintosh version, the F1 and F2 keys are now mapped to emulated option and command keys, to match the Windows and X versions. This provides a way to type some key combinations that are intercepted by the OS of the real machine. For example F2-Shift-3 will take a screen shot in the emulated machine, whereas Command-Shift-3 takes a screen shot of the real Macintosh at the same time.

The interrupt button emulation is now more realistic. One consequence is that the interrupt button can be masked, if the processor's priority level is high enough.

Previously, in the Windows version, double clicking on a disk image in the open dialog would tend not to work, because the mouse button would still be down upon returning to Mini vMac, which prevents mounting. Mouse clicks are now handled differently, which solves this problem.

Previously, in the X version, quitting Mini vMac could be delayed if the window manager moves the window to the back when it is being closed (such as in Red Hat Linux 9). This is fixed.

Mini vMac now has a mechanism for reporting reaching a part of the emulation that hasn't been implemented, or at least never tested.

A version compiled for Macintosh 680x0 is now included. So that it can run inside Mini vMac, this version emulates a Macintosh Plus with only 2M of memory instead of 4M. This is more amusing than useful. Since it is so very slow, I've not tested it much.

November 15, 2004 The first public beta of version 2.5.0 is available.

September 18, 2004 The Mini vMac web pages are moving from "http://www.gryphel.com/c/minivmac" to "http://minivmac.sourceforge.net". For a short transition period, the same information is in both places, except for a new Screenshots page.

September 12, 2004 A few more programs have been added to the list of Macintosh Plus software. A new page makes it easy to find what's been added. Thanks to Simone Bettini for making his games available, along with a mini review of Mini vMac, and telling me about it.

For Macintosh OS 9 users, Sebastian Soyka reports that StuffIt Expander 7.0.3 will not unstuff "minivmac-2.4.1-mpwmppcs.bin.sit". (It can be unstuffed with the StuffIt Expander 6.0 that came with System 9.2.2; it was created with the version of DropStuff that came with System 9.2.2) I've repackaged it into "minivmac-2.4.1-mpwmppcs.bin.sit.zip", which should work with all versions of StuffIt Expander.

I forgot to mention earlier that the lower level mouse emulation in full screen mode of version 2.4.1 allows the game Apache Strike to work, according to Charles Srstka, Tom Slankard, and Gael Coupe. It's surprising how popular this game is.

September 8, 2004 version 2.4.1 released. Some highlights are a first attempt at supporting sound in the Windows version, a better square wave sound approximation, a somewhat lower level mouse emulation, and a few fixes for the X version.

Version 2.4.0 was released only to the beta testers: Charles Srstka, Eric Lundquist, Tom Slankard, Jonathan Pratt, and Malik Jayawardena. This was the first official beta test, and quite succesful in showing that my idea of restricting sound to the Full Screen mode was a bad one. Thank you, testers. If you would like to volunteer to beta test, contact me. This and other ways of aiding the development of Mini vMac are described on the Help page. Speaking of which, I'd like to thank John DAgostini for his donation.

The sound emulation in the Windows version will so far only work on machines that can play sound at 22255 samples per second, instead of a more standard value like 22050. This works fine on the few machines I've tried it on, but I don't have any sense of what percentage of machines support this, so I would be interested in hearing about this. As far as I can tell vMac for Windows just plays sound at 22050 samples per second, meaning all pitches are off, as well as the emulated machines sense of time. I could perhaps make Mini vMac do the same, if it detects that the machine doesn't support 22255 sample per second.

Square wave sounds are improved. They are still forced into the same 22255 samples per second as other sounds, but now a better approximation is used. This makes games like Lode Runner sound quite different.

The new version will now use a somewhat lower level mouse emulation, when in Full Screen mode. Instead of poking in the current mouse position into the emulated machines low memory, it pokes the mouse velocity into a different location. This allows programs such as Microsoft Flight Simulator (version 1.00) and the utility "Stepping Out" to work. The mouse hardware is still not emulated, but I think this would be slower, and I don't know of any programs that require it, so I may not plan to do this.

This new mouse emulation requires the ability to set the mouse location of the real machine. It has code that attempts to detect when this doesn't work, and then switches to the absolute position mouse emulation. However it can't detect the problem when running in Virtual PC with Pointer Integration turned on, where as far as Mini vMac can tell, setting the mouse position succeeds, but the next time the user moves the mouse Virtual PC ignores the set position. So to run Mini vMac in Virtual PC, you need to turn off Pointer Integration. It also can't detect the problem when using the Mac OS 9 version in the classic environment of OS X, where setting the mouse position causes the mouse to freeze for a moment. This was also a problem in the OS X version, until I found the trick to use in "SDL_QuartzWM.m" of the "Simple DirectMedia Layer", Copyright (C) 1997-2003 Sam Lantinga. (This problem affected previous versions of Mini vMac, and was especially noticeable in the game HeartQuest.)

Full Screen mode is now more different from the regular "in a window" mode. The new design idea is that when in the regular mode, Mini vMac should try to behave as much like a normal cooperative application as possible, while in Full Screen mode it will try to take over the entire machine as much as possible.

So now the Windows version will only try to take over the keyboard in Full Screen mode (preventing the os from intercepting the windows key and alt-tab). (This now works in Windows 95/98, in addition to Windows XP where it previously worked). The X version will now also try to grab the keyboard in Full Screen mode. I don't know how to grab the keyboard on the Macintosh.

The Mac OS 9 version will now only try to hog the machines time when in Full Screen mode. So in regular mode the menu bar clock will update properly. The Windows version will now set the programs priority to high when in full screen mode. I don't know yet how to increase the programs priority in Mac OS X or in X.

There is not supposed to be any way to leave Full Screen mode except for the 'F' command of the control Mode. However, sometimes there is no way to prevent the operating system from bringing up some other program (such as by using command-tab in Mac OS X). Mini vMac will now detect if it is no longer the active application, and turn off Full Screen mode.

The X version has some assorted fixes. The Caps Lock key now works. When toggling Full Screen mode, the control mode should no longer get stuck on (key events were being lost, such as the key up event for the control key). In Mandrake Linux 9.2, the Windows key can now be used as the emulated option key. The not quite hidden cursor problem may be solved with code adapted from X11_CreateNullCursor in context.x11.c in quakeforge 0.5.5, copyright Id Software, Inc. Zephaniah E. Hull, and Jeff Teunissen.

August 13, 2004 The online documentation has been updated to match the current development branch, or what can now just be called the current version. The "stable branch" is not useful at this time, since it is way behind on features, and there haven't been many problems with the development branch. So I've removed the stable branch from the download area. Instead, if you have problems with the current version, any previous version can be downloaded from SourceForge.

July 23, 2004 The Software for Macintosh Plus listing is much expanded.

July 11, 2004 version 2.3.1 released. It contains assorted fixes.

I'm back home, but I still can't do much work on Mini vMac yet, because there is other (paying) work that needs to be done. But anyway, I want to get these fixes out now:

Previous versions for Mac OS X would tend to lose the first keystroke. The operating system apparently pauses a while when getting the first key event, so that the key is already up after events are checked, when Mini vMac would check the keyboard state. The work around used in the new version is to check the keyboard state before checking for events.

Also in previous Mac OS X versions, full screen mode would not work quite right when the computer has multiple screens. It would only cover the main screen, so that you could accidentally move the mouse off the main screen, and a click would deactivate Mini vMac. It now covers all screens.

In previous versions for all operating systems, you could drag a disk image to the Mini vMac window, but if that window wasn't active, nothing at all would happen until the window was made active. This was especially bad because of a quirk of Macintosh Plus, that when it is first booted, if the mouse button is down, any disk inserted is immediately ejected. So if you launched Mini vMac, dragged a bootable disk image to the window, and then clicked on the window content to activate it again, the disk image would be ejected. In the new version, when a disk image is dragged on to the Mini vMac window, then Mini vMac is automatically activated.

The Mac OS X version is now more native, in that is using the macho format instead of the older CFM format. This might eventually allow a smoother and more efficient program, by allowing access to lower level abilities of Mac OS X. (But currently it is little if any faster, and somewhat larger.) The main work done to make this possible was to figure out a script to automatically translate the powerpc assembly language code into something that the gnu assembler understands.

(This one is really obscure.) In Mac OS X, as well as many window managers for X, it is possible to click on the close box of an inactive window, which can close the window without first activating it. In previous versions of Mini vMac, (when no disk image is mounted), nothing would happen when clicking on the close box of inactive window, but the window would immediately close when reactivated again. Now the window will close immediately. (If a disk image is mounted, when Mini vMac is in the back ground, a click in the close box will be ignored.)

The Windows version will now try to prevent the operating system from intercepting any key events, at least when running in Windows XP. (This doesn't work yet in Windows 95 or Windows 98.) So, for example, the key with the Windows symbol on it can be used as an 'option' key, instead of popping up the 'Start' menu.

The magnify mode in the Windows version may now be faster. Though it might depend on the exact hardware and operating system used.

The full screen mode and drag and drop features added in the last X version were developed and tested only in Red Hat Linux 7.1. I recently downloaded a number of different linux distributions (Thanks to the company Scientific Imaging for access to a T1 line), and there were serious problems with most of them. The biggest one was that Mini vMac could lose the focus when entering full screen mode, and stop responding to keyboard and mouse, with no way to leave full screen mode. The new X version is much improved (But not perfect. See the bug list).

Since nobody reported these bugs, I assume that there are not many users of the X version. To encourage people to use it, I am now providing a precompiled application for Linux (x86), not just the source code. It was compiled with Red Hat Linux 7.1, and seems to work on all the distributions I've tried.

To keep the number of files released manageable, I'm no longer providing compiled versions of the Mac 128k emulator. This option now requires you to compile it yourself. (The compile time options are not yet documented; this is on the to do list.)

For anyone who wants to compile from source, the 'source' directory should now be placed in the same directory as the 'project' directory, rather than within 'project'. The version of the source code formatted for old Mac OS (not OS X), is now a zip file containing an (uncompressed) stuffit archive (so I've used the file extension '.szp'). This is not standard, but I can create this format with automatic tools (which I don't have software to do for a normal stuffit archive).

April 12, 2004 I will be travelling, so there will be no updates to Mini vMac until late summer. I will still respond to email.

March 25, 2004 Added MnvMreg to the 'Extras' section of the Downloads. MnvMreg is a utility to install Mini vMac into the Microsoft Windows registry, so that double clicking on a disk image file with the extension '.dsk' will open it with Mini vMac, and so that such disk image files and also '.rom' files will be displayed with custom icons. Prior to version 1.0.0 of Mini vMac, every launch of the Mini vMac application would reinstall it in the registry. But since this could conflict with other applications that want to use the '.dsk' and '.rom' extensions, this feature was removed. MnvMreg brings this back as a 'use at your own risk' optional feature.

I haven't received any bug reports for 2.3.0, after a few hundred downloads and nearly a month, so there probably isn't anything horribly wrong with the major changes in the Windows and X versions.

February 28, 2004 version 2.3.0 released. It features improvements to the Windows and X versions, bringing them closer to the Macintosh version.

The Windows and X versions now implements Magnify mode, Full Screen mode, and Drag and Drop of disk images. As in the Macintosh version, Full Screen mode is entered by typing 'Control-F', and exitted by typing 'Control-F' again. Magnify mode is automatically activated if the screen is big enough. Magnify mode can also be separately toggled using 'Control-M'. Drag and Drop support means that dragging the icon of a disk image file onto the Mini vMac window causes the disk image to be mounted by Mini vMac. (But note that the emulation is paused when Mini vMac isn't active, so nothing will happen until you reactivate Mini vMac.)

Drag and Drop support in the X version means that you can now mount more disk images after the program has started running. This wasn't possible before in the X version. Thanks to Lars Kellogg-Stedman who pointed out to me a specification for a drag and drop protocol (at "http://www.newplanetsoftware.com/xdnd/").

For Macintosh users there is one new feature (which is also implemented in the Windows and X versions). Mini vMac will detect when the emulated program has tried to move the emulated mouse position, and adjust the real mouse position to match. (But only when in Full Screen mode). This makes games like Crystal Quest more playable. Other games that I know it affects are: HeartQuest, Slime Invaders, Arkenoid, and MacLanding. It turns out that this isn't enough to get games like Apache Strike to work, but maybe now I know enough to be able to implement lower level emulation of the mouse hardware in a future version.

To implement the above feature, I found out the official ways for a program to set the mouse position on a Macintosh. I've modified Mini vMac to use the official method for the Macintosh Plus to set the position of the emulated mouse. I don't observe any difference, but it possibly might affect some obscure software.

In the Windows version the right mouse button is now equivalent to the left mouse button. In the X version buttons 2 and 3 are now equivalent to button 1.

This version fixes a slight mistake in code that recognizes old disk copy 4.2 style disk images. It previously might have incorrectly decided an image was the old style, though I've never observed this to happen.

The Windows version fixes a bug where Mini vMac wouldn't work if its window was partly off the left edge of the screen.

Be warned that I wouldn't consider the Windows and X versions very well tested, since I've only used them in Virtual PC on my iBook. Please let me know if you find problems. Those who are less adventurous might want to wait a week or two before downloading it and then check the Bugs page. I'm not sending out announcements about this version, in an attempt to delay when most people will download it.

February 13, 2004 Added a page listing ways you can help the Mini vMac project.

February 8, 2004 Added a To Do page, listing possible future improvements, and some of the issues involved in implementing them.

February 5, 2004 Added SetFType to the 'Extras' section of the Downloads. It is a pair of utilities for Mac OS X and OS 9 that set the file type and creator of a disk image. "SetFType.dimg" makes the file belong to Disk Copy, which makes it possible to mount the disk image on the real machine (such as by double clicking on it). Mounting a disk image on the real machine allows you to transfer files to and from the emulated machine. "SetFType.MvIm" makes the file belong to Mini vMac, so that double clicking on the file will mount the disk image within the emulator.

January 28, 2004 I've begun a page with links to software that will run on a Macintosh Plus, and therefore will work within Mini vMac.

January 25, 2004 After looking at web access logs, I've changed this page to try to increase the chance that people, especially those who don't know english, will find what they're looking for.

January 24, 2004 version 2.2.0 released. To celebrate the 20th anniversary of the Macintosh, Mini vMac now has a variation that emulates the original Macintosh 128K. The Macintosh Plus emulation of Mini vMac can run almost all of the oldest Macintosh software, but some of the very earliest systems versions and applications won't work with it. Most of these will now work in the Macintosh 128K emulation.

The choice of emulating the Macintosh 128K or the Macintosh Plus (with 4M of memory) is made at compile time. Additional choices available at compile time are the Macintosh 512K, the Macintosh 512Ke, and the Macintosh Plus with 1M, 2M, or 2.5M of memory.

The Macintosh 128K has a different ROM than the Macintosh Plus, and so needs a different ROM image file to be emulated. Mini vMac expects a ROM image file called 'Mac128K.ROM'. Some programs to acquire the ROM image of the Macintosh Plus, such as CopyROM for vMac, won't work on the Macintosh 128K. So I've made a new program, 'CopyRoms', that works on the Macintosh 128K, 512K, 512Ke, Plus, and maybe some other machines. See the 'Extras' section of the Download area.

A Macintosh 512K has the same ROM as the 128K, and the Macintosh 512Ke has the same ROM as the Macintosh Plus. So you can, for example, get the ROM from the 512K and use it to emulate the 128K. Which is what I've done, since I don't have a Macintosh 128K. What the 128K emulation of Mini vMac is actually emulating is a Macintosh 512K with less memory, which as far as I know is exactly what the 128K is.

Be warned that it is tricky to acquire a ROM image from a Macintosh 128K, because it is difficult to transfer files between it and a modern machine, more difficult even than it is with the Macintosh Plus, because it doesn't support SCSI, and because it doesn't support hfs format disks, only mfs, which isn't supported by modern machines at all. It helps to have another old Macintosh, somewhat less old, which can use 400K mfs floppies, and also has hardware, such as ethernet, which can communicate with more modern machines.

The lack of hfs support also makes it more difficult to uses the emulation, since disk images useable by the Macintosh 128K are not mountable by modern systems. It helps to also have the Macintosh Plus emulation, which can work with the mfs disk images, and also with hfs disk images that can be mounted with modern systems.

The Macintosh 128K emulation by default only supports mounting 2 disk images instead of 6. This is because the replacement disk driver is trying to match the size of a data structure used by the real disk driver, and on the Macintosh 128K this structure is smaller than on the Macintosh Plus. You can at compile time choose to support more disk images, which makes this data structure larger, at some slight decrease in authenticity.

I'd like to thank Philip Cummins for advice on the Macintosh 128K emulation and CopyRoms.

There are a few changes in this version of Mini vMac that also affect the normal Mac Plus emulation. The erase disk command of the Finder will now work on any size disk image, not just the 400K and 800K sizes supported by the previous version. This makes it easy to create disk images - you can mount any random file of the desired size in Mini vMac, getting the unreadable disk message, and choose to initialize it.

The cursor is no longer hidden when the Mini vMac window is collapsed in OS 9, or minimized in OS X. But this won't solve the problem with expose in Panther reported by Simone Manganelli. A fix will probably have to wait until I have the chance to use Panther myself.

The 'A' command of the Mini vMac control mode will now display, along with the other version information, what machine is being emulated.

Mini vMac will now verify the checksum of the ROM on startup. There is code in the ROM to check this on boot, but since Mini vMac patches the ROM to replace the disk driver, it also patches the ROM to disable the checksum verification. Now Mini vMac does the check itself, before patching the ROM, and gives a warning message if the checksum is incorrect. Since no harm can be done no matter what is in the ROM, this is only a warning, and Mini vMac will keep running.

Besides CopyRoms, there are some other new or updated extras in the Download area.

blanks-0.2.0.zip includes additional blank disk images - a 400K hfs image, and 800K and 1400K mfs images.

There is new version of AutoQuit. It should now be safe to use in other emulators, and on real machines. It will shut down the machine, and won't try to quit the Mini vMac program if it figures out that it isn't running in Mini vMac. It also won't try to quit Mini vMac if the shift key is held down. The previous version only worked back to system 2, the new version should work on all earlier systems. It will work but is not recommended for system 7 or later, or when using MultiFinder, because it doesn't give other running applications the chance to quit properly. The source code for AutoQuit has been moved out of the Mini vMac source code, and is instead included in the AutoQuit archive.

There is a new program, 'DAOpener', that just opens the first Desk Accessory. It is intended to be used with AutoQuit. AutoQuit is used to assist in 'wrapping' an application so that you can use it much as would a native application for your machine. DAOpener allows you to wrap a Desk Accessory within an application, which can then be wrapped using AutoQuit, so that you can use it much as you would a native application.

December 19, 2003 version 2.1.1 released. Has a few bug fixes.

Fixes a bug so that the Time Manager will work, which allows programs such as Macman and later versions of Hypercard to work. In all previous versions, something in the hardware called the 'Timer 2 interrupt' was not emulated, because it would result in crashes on startup of some system versions, such as 6.0.8. This appears to be due to a bug in these system versions when there is no timer task installed. So the fix is to make the replacement disk driver create a timer task like the real disk driver does, and then the Timer 2 interrupt can be emulated. The Timer 2 interrupt is needed for the Time Manager.

Also fixes a bug in the Macintosh versions (since 2.0.0), in checking for interrupts while setting the status register. I had made a mistake tweaking the PowerPC assembly language. One reproducible problem which this fixes was that Lunar Phantom would tend to hang while playing sounds if Limit Speed was on.

This version doesn't begin playing sound until after the other initializations have finished, which should help prevent choppiness of the Mac Plus startup sound (in the Macintosh versions).

December 6, 2003 version 2.1.0 released. Some highlights are sound emulation in the Macintosh version, better time keeping, and visual feedback for control key shortcuts.

At the request of Richard Bannister (and many other people), the sound code from the Macintosh version of vMac has been adapted to Macintosh version of Mini vMac. Getting sound to work properly in Mini vMac on all machines and system versions is a bit of a problem, but the current version seems to work on a number of people's machines (thank you to everyone who tested it). If it doesn't work on your Macintosh, email me, and include details about what machine you are using (including MHz) and what operating system. Sound emulation is always on in the current version. Since it slows down the emulation a little, in a future version I may provide a way to disable it.

Time keeping has been improved in a number of ways. It turns out the TickCount of a Macintosh increments about 60.15 times a second, not 60 like I always had thought. So code that generated the one second interrupt every sixty ticks was incorrect, and in previous Macintosh versions the clock would drift a bit over time. In previous Windows and X versions, it incremented the TickCount 60 times a second, which was slightly inaccurate, but probably made no noticeable difference (so long as sound emulation isn't implemented). In the new version TickCount is incremented about 60.15 times per second for Windows and X. In all versions now, the second interrupt is generated by looking at the clock of the real machine, and the emulated hardware clock is updated from the real machine's clock. A consequence of that last item is that the emulated clock is now correct even after resuming emulation, where previous versions would lose time when paused, such as by switching to another program.

A fix to the emulation of the real time clock makes it possible now to set the current time of the emulated machine (such as by using the control panel or the alarm clock desk accessory). This doesn't change the time of the real machine.

The new version is more careful about trying to maintain the tick interrupt at the correct frequency on average, so that sound will play smoothly. It enforces a minimum number of instruction executed per tick, and if it notices that the emulation is lagging, it will try to sacrifice the smoothness of video. This applies to all versions, even though sound is only implemented in the Macintosh version for now. It generally makes the emulation more useable on slow machines, or operating systems with lousy video performance (such as OS X).

There is now visual feedback for control key shortcuts. Whenever the control key is pressed, information is displayed on top of the emulated screen. All the functions of the emulator can be controlled by control key shortcuts, which are platform independent, and have the advantage of being available in full screen mode when menus are hidden. Only the most basic commands have been left in the menus. Commands like Interrupt and Reset have been removed from the menu, because they are dangerous and not normally used, and so it is better to hide them a little. Instead of platform specific dialogs, the confirmation messages for interrupt and reset are displayed on the emulated screen, and you need to type 'y' or 'n' (while continuing to hold down the control key). This is a bit more convenient than a dialog to operate for advanced users, and other users shouldn't need these commands.

The X version now implements control key shortcuts (in 2.0.0 they were only implemented for Macintosh and Windows). Together with the control key visual feedback, this makes the X version much more useable (since it lacks the menus and dialogs of the other versions). The old function key shortcuts have been removed. The X version now implements a way to find the size of disk image files that hopefully is reasonably portable. This allows programs like Disk First Aid to work. The X version now supports a command line option '-l' that turns on the 'Limit Speed' option, matching the Windows version.

November 6, 2003 version 2.0.0 released, the first public release of the unstable branch. Some highlights are support of locked disk images, keyboard shortcuts to control the emulator, and full screen mode.

Previous version of Mini vMac couldn't use a locked disk image. Now if you lock a disk image, you can mount it in Mini vMac and it shows up as a locked disk. This allows you to use a disk image and be certain the image file won't be modified. You can also share a single locked image file among multiple running copies of the emulator.

Previously Mini vMac always pretended to be using 800k disks, which caused some incompatibilities when the disk images weren't 800k. Now Mini vMac will only pretend to have an 800k disk if the disk image is exactly 800k. If it is exactly 400k, it will pretend to have a single sided disk (in a double sided drive). If it is any other size, it will pretend to have something more like a hard disk, though not exactly. This allows programs such as Disk First Aid to work correctly. Erase disk now works on 400k and 800k disks. [Note: These improvements don't quite work yet in the X version, because I'm not sure of a portable way to get the size of the image file].

The new Mini vMac disk driver also defines a disk icon, for disks that aren't 400k or 800k, which shows up in System 7, rather than a generic document icon as was seen before. And it supports up to 6 disk images instead of 3. (It can support to 32 disk images with a simple change and recompile, with some slight memory and time overhead. I'm not exactly sure what the overhead is, so I set the limit conservatively to 6). And finally the test for whether a disk image is of the old disk copy 4.2 style is hopefully more accurate, allowing some images to mount that wouldn't before.

The Macintosh and Windows versions of the emulator can now be controlled with with control key short cuts. For example, 'Control-O' to open a disk image file. The available shortcuts are displayed in the menus. (The original Mac Plus keyboard didn't have a control key. However, the Mac Plus could cope correctly with a control key if the keyboard had one. So I've provided a way to press the control key of the emulated machine. 'Control-K' presses the emulated control key, and 'Control-K' again releases it. One weird application is to allow using a 68k version of the emulator running nested inside Mini vMac).

Since the control key is now otherwise used, in the Windows version the alt key is used for the emulated command key, and the application key is used for the emulated option key. In addition the F1 key can also be used for the emulated option key, and the F2 key can also be used for the emulated command key.

The Macintosh version now has a Magnify option, which double the size of the emulated screen. The can be easier to read, since modern screens often have smaller pixels than in the original Mac Plus.

Also in the Macintosh version is a Full Screen mode. This mode is entered by typing 'Control-F', and exitted by typing 'Control-F' again. In full screen mode, the menubar and other programs are hidden. Also, you can't click outside of the emulated screen, which is useful for games such as Dark Castle. The Magnify option is turned on automatically if your screen has high enough resolution (1024 pixels across or greater).

The Macintosh version now includes an assembly language version of the core emulation of the 68k processor. I started from the best compiler output, and then started tweaking. This mainly proves the hard way that hand optimization of PowerPC assembly isn't really worth it. However it is about 50% faster than the best compiler version, and further improvements are possible, so I guess I'll keep it. And also most compilers do rather worse than the best. So a more significant benefit is that putting the critical code in assembly language should allow anyone to compile the code and get similar performance. Another issue is that the best compiler seems to optimize almost randomly. Minor cosmetic changes could drastically reduce performance when the compiler changed its mind about something for no comprehensible reason. This tended to inhibit changing the code at all.

The Windows version now supports a command line switch '/l' that turns on the 'Limit Speed' option, at the request of Stephen Wenzler.

October 2, 2003 version 1.0.0 released. This is 1.0 not because there is any great change from 0.1.7, but because there isn't. It indicates this is now a stable branch, with no further changes except for bug fixes. I might some time fork off an unstable branch, to try out a few ideas, but the 1.0.x branch will continue to be maintained.

This release adds a small kludge to the carbon version for Mac OS X, so that Commmand-Q and Command-H will be passed on to the emulator, rather than intercepted by the operating system. This is accomplished by adding fake menu items. I'd be interested if any one knows of a cleaner way to do this.

The Windows version no longer registers itself in the Windows registry, to avoid the possibility of causing problems for other programs that want to use the '.dsk' and '.rom' extensions. The versions for the X Window System and for Mac OS 9 and earlier are nearly unchanged.

This biggest change is to adopt the build method from Gryphel, which might make it easier to build Mini vMac from the source code. It also supports more development environments. (By the way, people who are interested in Mini vMac as an example of how to write an emulator might also be interested in Gryphel as an illustration of how to implement a graphical user interface. Though it might be more interesting when it is more finished.)

July 17, 2002 version 0.1.7 released. It fixes a bug noticed when a program doing floating point computations gave wrong answers. The problem was more general though. (Specifically, that moving to and from the status register shouldn't set the condition codes like most other move operations. It happened because the CPU emulation of Mini vMac descended from a disassembler, where the distinction doesn't matter.)

This version has a new feature where disk image files named 'disk1.dsk', 'disk2.dsk', and 'disk3.dsk' will, if present in the folder containing Mini vMac, be opened when Mini vMac is launched. In the Mac versions, these files can be aliases to the real image disk image files. Also the 'vMac.ROM' file can now be an alias file in the Mac version.

The big new feature is an 'autoquit' capability. It assists in 'wrapping' an application for the Mac Plus, so that you can use it more as you would an ordinary application for your machine. Actually this was already in Mini vMac, but it wasn't publicly accessible.

The format of the documentation has changed slightly, and the 'About' page now starts with a nice quote.

January 19, 2002 version 0.1.6 released. It has a lower level emulation of the keyboard. This provides better compatibility (allowing debuggers such as Macsbug and TMON to work), and allows all the Mac special characters to be typed in the Windows and X versions.

The 'Share Time' command is gone. It had only applied to the Mac classic version, and was mainly provided in case the default 'hog time' caused problems. Since there hasn't been any problems that I know of, there is no need for the option.

The Mac version now supports 'drag and drop', that is, dragging a disk image file from the Finder onto the Mini vMac window causes the disk image to be opened. (Note that if you switch to the Finder the emulation will pause, and not resume until you switch back to Mini vMac.)

There are now somewhat more detailed instructions for building the Windows version, at the request of Dan FitzGerald.

August 10, 2001 version 0.1.5 released for Macintosh. A small change in 0.1.4 caused problems on an iBook running OS 9.1 (but not on the G3 running OS 8.6 that I developed it on), so I've changed it again. There are no changes in the Windows or X versions.

August 2, 2001 version 0.1.4 released. There is now an initial port for the X Window System. (Thanks to Allan Egleston, for asking when there'd be a port. (And of course thanks to Michael Hanni for the X port of vMac, upon which it's based.)) So far, it's only been used on SuSE Linux 7.0 for PowerPC, and will likely take a bit of fiddling to compile on any particular machine. Please let me know the details of what is needed.

The keyboard support is improved in the Windows version. I had made a couple mistakes in code for the low memory keyboard map. This had broken shift clicking, the key caps desk accessory, and my favorite game, Continuum. Another change in the Windows version is that the Control key is now used to emulate the Command Key, and the Alt key is used to emulate the Option Key.

Mini vMac no longer saves a preference file. It wasn't saving anything too useful, and removing it makes the code a bit simpler. And it is the simplest fix for the problem where a corrupted parameter ram setting could prevent the emulated mac from booting.

(Other than not saving a preference file, the Macintosh version hasn't changed much.)

May 29, 2001 version 0.1.3 released. Fixes MPW build script. Also the default sound level is now set to zero, since Mini vMac doesn't emulate sound. The main effect is that the menu bar will flash when a program calls SysBeep, instead of nothing happening at all.

There is a now an initial Carbon version for Mac OS X, but I wouldn't recommend using it yet. The non Carbon version works faster and better both in OS 9 and in Mac OS X.

March 27, 2001 version 0.1.2 released. Fixes problem where emulated machine would hang if key pressed at startup before any disk was inserted. The same fix (checking the event mask before posting keyboard events) also improves compatibility with some programs.

Mini vMac can now read old style disk image files (which have an 84 bytes header), by using some code from the Windows version of vMac. It also uses some code from Windows vMac for an emulation of SCSI (with no SCSI devices attached), so that system software will think its running on a Mac Plus, instead of a 512ke.

Also new is a bigger and more informative 'about' box, and numerous source code cleanups.

March 14, 2001 version 0.1.1 released. Now runs on Microsoft Windows in addition to Mac OS. Also fixes a problem in posting keyboard events to the emulated machine.

February 28, 2001 version 0.1.0 released, the first public release of Mini vMac.


minivmac.sourceforge.net/oldnews - hosted by Get Mini vMac at SourceForge.net. Fast, secure and Free Open Source software downloads