:
January 28, 2010 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
I've created a first draft of updated documentation for Mini vMac 3.1.1. This includes the Changes page.
July 24, 2009 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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.
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.
The Mini vMac Variations service, which I described last week, is now live.
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 - permanent link
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 - permanent link
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 - permanent link
I am travelling for about a month mostly without internet access.
December 6, 2008 - permanent link
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 - permanent link
"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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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 - permanent link
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.