minivmac.sourceforge.net - feedback
copyright (c) 2008 Paul C. Pratt

Mini vMac

a miniature Macintosh emulator



Download

current stable version:
minivmac-3.0.4

Documentation

About, Start,
Credits, License, etc.

Feedback

Bug reports, suggestions, corrections, etc.

More

FAQ, Screenshots, Software, Extras, Books, Summary,
and other information
Help! - T-shirts, bounties, donations, and other ways to support Mini vMac

- News -

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. (See the Macintosh Classic bounty page.) 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 is 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. 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 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 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.

OLD NEWS - Previous release notes


minivmac.sourceforge.net - hosted by SourceForge.net