Posted by on May 27, 2012

Over the years I’ve written dozens of articles for various publications. Over the next few weeks I’ll be republishing them here for a number of reasons: it’s an easy way for me to get some content on this new site and I want to make sure that the articles remain available regardless of the state of the original publication site. For example, this article was originally published on About This Particular Macintosh back in September 2006, but that magazine has ceased publication.

It seemed to be a popular article both at the time and since its original publication, so here it is again, and I hope there are a few people who find it useful. Given how old it is, perhaps I’ll do an update in the near future. As long as it remains up, the original (with comments by readers) is here.

Running Classic Software on an Intel Mac

I have now been using Macs for almost 18 years. My first hands-on experience with the Mac was in high school, during my junior year, which began in 1986. The school had purchased 25 Mac SEs and five ImageWriter printers and had them networked with LocalTalk. I spent hours in the computer lab, tinkering with them and learning how they ticked.

I’ve used every operating system Apple has released for the Mac since that time, and, in the process, collected hundreds of programs, including many games, for these older systems. Most of these are shareware games, but they include a few classic commercial releases such as Prince of Persia and the Carmen Sandiego series.

Now I have kids, aged four and six. In addition to my own MacBook Pro and my wife’s PowerBook G4, we bought a clamshell iBook for the kids to play games on and run some of the educational software we have. My son, the six-year-old, loves to play video games, finding some that he enjoys on the Web as well as a few CD-ROM games.

I’ve been meaning to get some of these up and running on the iBook for quite a while, but hadn’t gotten to it until recently. As I was doing so, I remembered how much joy I had experienced playing these games, and lamented the fact that I couldn’t play them on my MacBook Pro. Classic isn’t available for the Intel-based Macs. This actually became a real minor problem recently, as a client had some FileMaker 4 files that I needed to look at before converting them, and FileMaker 4 only runs in Classic.

But I’ve always been interested in hardware emulation, if for no other reason than I needed first Virtual PC and now Parallels in order to test software I’ve written with FileMaker and REALbasic on the Windows platform. I remembered a few programs out there that emulate old Mac processors, and decided to check them out.

What Is Emulation?

Every computer has a central processor. This is the brain of the computer, where all of the computation takes place. In order for a program to work, it sends instructions to this processor. The art of programming is the art of writing out instructions for the processor to perform. Actually, very few people actually write real instructions for the processor. Instead, what they do is write the instructions in a language that can be translated to something the processor understands. This is what it means to compile a program. When a programmer writes software, usually a computer language such as C is used. A compiler then translates the instructions written in C into instructions that the processor can actually understand.

In order for a compiler to do this correctly, it has to know what instructions the processor understands. Every processor understands a different set of instructions. This is why when you compile a program for the older PowerPC Macintosh computers; it won’t run, for instance, on Intel-based Windows machines. The instructions are meant for the PowerPC processors, and the Intel processors don’t understand those instructions.

The easiest way to think of an emulator is as a real-time translator of processor instructions. Take, for example, Virtual PC. This program allows Intel-based Windows software to run on PowerPC Macintosh computers. It does this by emulating the Intel processor, so that whenever an instruction for the Intel processor is received by the program, it translates that instruction into one or more equivalent PowerPC instructions.

Why Use Emulation?

Over the life of the Macintosh line of computers, three different families of processors have been used. First there was the 68K family from Motorola, which was used during the first 10 years of the Mac. Then, in 1994, Apple switched to the PowerPC family, designed jointly by Apple, Motorola, and IBM. Finally, most recently, Apple has again changed processors, this time to the Intel x86 line. If this trend continues, we should see another processor switch some time around 2015 or so.

Modern Intel-based Macs come with an emulation technology called Rosetta, which enables the new computers to run Mac OS X–based PowerPC software. However, Rosetta doesn’t enable the use of Classic software, just as Mac OS X on PowerPC didn’t allow the use of Intel-based software. In order to use an Intel Mac to run programs written for System 7 or a Mac Plus, you have to provide the computer with your own emulation.

Fortunately, the open source community has filled the void left by Apple. There are at least three open source projects out there that will allow you to run Classic software on an Intel Mac (as well as other solutions for running Apple ][ or even Atari software). Getting it working isn’t always easy, but I’ve spent the last few days working on it for myself, so I’ll share my experiences here.

Emulation Options

There are three primary programs I found for running old Mac software: SheepShaver, Basilisk II, and Mini vMac. I’m actually using all three for different reasons, so I’ll take you through the process of setting each of these up.

Although each of these programs allows the execution of older Mac programs, they each do so in different ways, but fortunately, all three have versions that work on Intel Macs.

There is, however, a caveat regarding each of these programs. The Mac OS doesn’t rely only on the processor to run. It also needs to have access to a piece of hardware called the ROM, which contains machine-specific instructions for each model of Macintosh. Fortunately, the information on these ROM chips can be stored as a file that the emulators can access. Unfortunately, finding these ROM files online is often difficult, as they are protected by copyright law. Fortunately, if you have an old Mac, there are programs which allow you to copy the ROM to a file that can be used by the emulators. Also, fortunately, I was able to find the ROM files I needed online or on CDs that I never threw away. But it was an interesting process, especially in the case of SheepShaver.

SheepShaver was the first program I checked out. This program emulates the PowerPC processor and versions of it are available for Windows, and Linux, as well as PowerPC and Intel Macs. Running SheepShaver to emulate a PowerPC on a PowerPC may make sense if you want to run an OS other than Mac OS 9 (it works with anything between 7.5.2 and 9.0.1).

I also installed Basilisk II, which emulates a 68K processor. This means it will run System 0.x through 8.1.

Finally, Mini vMac emulates a few of the early Macs, including the Mac 128K, 512K, 512Ke and SE, each of which should run System 0.x through 7.5.3.

Why have two emulators of the 68K Macs? Because Basilisk II will emulate either a classic Mac (the first compact Macs with 9-inch black-and-white built-in monitors) or what it calls the Mac II series (which includes Macs with the 68030 and 68040 processors, even though no Mac II ever had a 68040). The latter emulation will run System 7.6, which I wanted to do. But I also wanted to run System 6.0.8 (the last Mac OS before System 7), and it’s easier for me to have a separate program for each OS version.

To give you an idea of where our final destination will be, take a look at this screenshot, which shows all three of these programs running on my MacBook Pro, giving a single view of System 6.0.8, System 7.6, Mac OS 8.6, and Mac OS X 10.4.7 (with Windows XP running in Parallels thrown in for good measure).

Please note that this is more of a journal than a tutorial. This is what worked for me, and you may have to perform quite different steps to get things working for yourself. However, there are some good places to get help if you need it, and I’ll point these out as we go along.

SheepShaver

Although it took me a few days to get it up and running, in hindsight, SheepShaver was the easiest of the three to install and configure. This is due to the fact that, while it requires a ROM file like the others, this ROM file can be obtained from Apple installation CDs or update disk images available from their Web site.

Installing SheepShaver itself is a snap, simply download it from the Web site, unpack the archive, and drag it to where you want it. Two applications are included with the download: SheepShaver itself and an application for editing the settings file.

First, let me tell about the road to avoid. According to the SheepShaver Web site, the software can work with a number of ROM files available from Apple through installation CDs and updates. One listed as working is the ROM image on the installation CD for 8.5. Since I have the 8.5 installation CD, I tried this. After some helpful troubleshooting from a couple of people on the SheepShaver forums, it turns out that this particular ROM file won’t work on a MacBook Pro, and perhaps not on Intel Macs at all (although it may still work when running SheepShaver on other platforms).

The path I did take was to get the Mac OS ROM Update 1.0 from Apple’s Web site. Unfortunately, the ROM file is embedded within the installation package, which can’t be read on an Intel Mac. However, there is a classic program called TomeViewer (before Mac OS X installation packages, software was often placed in archives called tomes).

The downside here is a catch-22: You need to be able to run classic software in order to use TomeViewer, which you want to use so you can run classic software. In other words, you’re going to need another method in order to extract the ROM file. I have an old PowerBook 1400. This I connected to my Ethernet network by sharing the connection on my MacBook Pro. I copied the ROM Update and the TomeViewer software to the 1400, extracted the ROM file using TomeViewer, and copied the ROM file back to the MacBook Pro. Files were shared between the two by using Mac OS X’s built-in FTP server on the MacBook Pro and Fetch 4 on the 1400, which I also found an old copy of. For some reason, I couldn’t get AppleTalk file sharing to work between the two portables.

However you do it, you’re going to need to run TomeViewer under the classic OS and get the update package to the machine it’s running under. The update package is delivered in a self-mounting image, which when double-clicked will mount a disk image on the desktop. Once it’s mounted, launch TomeViewer and use it to open the Mac OS ROM Update Tome file on the disk image. The only file in the tome archive is Mac OS ROM, so click it and choose Archive ‣ Expand from the menu bar. Get the expanded file to your Intel Mac for use by SheepShaver.

classic-02

There’s one more file that you need to download before actually using SheepShaver: a keycodes file. Apparently this is used so that modern keyboards can be used with the older operating systems. The easiest way to get the keycodes file is with the Basilisk II download. In the archive is a file called BasiliskII_keycodes. You can store this file anywhere you like, although the most useful place would probably be in the same folder you have SheepShaver in.

Now that you have all the files necessary from the Internet, you need to create one for yourself. This is the disk image that will be used as the startup drive for SheepShaver. For this you can use Disk Utility. Make sure the disk image you create has enough room for the OS and any applications you want to include. I made mine 500 MB in size, which seems more than sufficient. After installing Mac OS 8.6 on the image, I still had over 300 MB available, which leaves enough room for the few applications I wanted to have. Make sure the disk image is not encrypted and that the format allows reads and writes. You can’t use a sparse image for this. Again, a handy place to keep this file is in the same folder as SheepShaver. If the disk image gets mounted after being created, be sure to unmount it before launching SheepShaver. You don’t want to have two operating systems attempting to access the drive image at the same time.

classic-03

Everything is now ready to begin configuring SheepShaver. Launch the SheepShaverGUI application. Most of the settings you see in it can be left as their defaults, but you will want to point the software to the ROM file, the keycodes file, and the disk image file. The GUI application was written in Java, so the interface is far from the OS X Aqua look and feel, but at least you can edit SheepShaver’s settings without using a text editor.

In the Volumes tab, click the Add button and navigate to the folder your disk image is in, select it, and click OK. You’ll also want to change the Unix Root. This is the path to a folder on your computer that SheepShaver will grant access to within the emulated OS. It is not recommended that this path be to the root level of your hard drive nor to your home folder. I anticipate using a single folder for transferring files to all of the emulated OSes, so I created folder called EmulatorTransfer in my home directory and set this as the Unix Root.

classic-04

I should note, however, that I was never successful in transferring files with the shared folder. Instead, I ended up mounting Puzzle8 while the emulator was shut down, copying files to the disk image, unmounting it, and then launching SheepShaver. This was a simple enough workaround for me to not even troubleshoot why the shared folder didn’t work.

Click the Keyboard/Mouse tab and select Use Raw Keycodes, and then click the Browse button to select the BasiliskII_keycodes file.

classic-05

Go to the Memory/Misc tab and click Browse to select your ROM file. You can also use this tab to set the memory available to the emulated OS. I set mine to 64 MB.

classic-06

If you want the emulated OS to have network access, select “slirp” for Ethernet Interface in the Serial/Network tab. Finally, you can set the refresh rate and resolution of the window in the Graphics/Sound tab. I found that 15 Hz for the refresh rate and 1024×768 worked well on my MacBook Pro. Oddly, the resolution width and height are set separately, but another common resolution is 800×600.

You now need to install a classic Mac OS onto the disk image. I used a Mac OS 8 install CD. Although on some platforms SheepShaver can run any OS from 7.5.2 through 9.0.4, under Mac OS X, the earliest supported OS is 8.5. Note that if you have a 9.1 installation CD included with some computers that run OS X will not work. Hopefully someday the more modern OSes will be supported, perhaps even OS X versions, which may prove handy for software testing.

To launch SheepShaver, you can either click Start within SheepShaverGUI or quit the GUI application and double-click SheepShaver itself. Since the disk image assigned is blank, SheepShaver automatically starts up off of the CD. Double-clicking the Mac OS Install program on the CD begins the installation process.

classic-07

During installation you are given the opportunity to customize the process. Before clicking the Start button to begin the installation, click Customize. I deselected everything except for Mac OS 8.5, Internet Access, and Mac OS Runtime for Java. For each of these, I kept the recommended installation.

classic-08

(For those of you wondering why the drive image is named Puzzle, it’s a Narnia reference: my main hard drive is Aslan, and Puzzle the donkey in The Last Battle, pretending to be Aslan. It’s Puzzle8 because this particular image will have Mac OS 8 on it.)

Once the installation has finished, restart the emulation and SheepShaver will boot with the installed OS. There are two things I did right away. Included in the 8.5 installation is Internet Explorer 4, which doesn’t seem to work at all with most modern Web sites. I used the 9.1 CD I had to get Internet Explorer 5 onto the virtual machine so that I could browse Web sites with it. It isn’t something I would commonly do, but it would often be easier to get some of the public domain software available onto the system.

Once IE 5 was installed, I used it to visit Apple’s Web site and get the 8.6 update and installed it. From there I was able to install some of my favorite old games.

Basilisk II

Whereas SheepShaver emulates the PowerPC processor, Basilisk II emulates the 68K processor. Because Basilisk II is open source (as is SheepShaver), there are a number of binary builds for Mac OS X. I used the version hosted in the same place I got SheepShaver from, which is officially known as Basilisk II JIT. The “JIT” is short for “just in time,” and it attempts to increase the performance of Basilisk II by using dynamic recompilation techniques to translate the 68K machine code into that understood by Intel processors. If that doesn’t make much sense to you, don’t worry, as you don’t need to understand it to use the software.

Just like SheepShaver, Basilisk II needs, in addition to the binary executable, a ROM image, a disk image to boot from, and a source from which to install the operating system.

In Basilisk II, the ROM image must be an image from an actual computer. Again, these are difficult to find online because of copyright issues. If you have an old 68K Mac, you can use CopyROM to extract the ROM information to a file that you can then transfer to the emulating computer. I don’t know if it will be available long, but I did find a Quadra 650 ROM image available for download from one site. A careful Google search may turn up other locations.

Once you have the application and the ROM image, you can create a disk image just like with SheepShaver by using Disk Utility. Again, for me a 500 MB image seemed sufficient. After you have all of these files, you launch the GUI application, which is very similar to SheepShaver’s. Set the disk image, Unix root, ROM image, and keycodes file, as well as any other settings, such as the RAM and the Ethernet interface. I used a 7.6 installation CD in this case, so I inserted it into the drive slot and launched Basilisk II by clicking Start in the GUI application. If you don’t have an installation CD for System 7 through 8.1, you can access System 7.5.3 from Apple for free.

classic-09

Since the disk image was new and therefore blank, Basilisk II booted from the CD-ROM. Unlike SheepShaver, although Basilisk II did see the disk image, it needed to format it, probably because it was formatted as HFS+ rather than System 7’s older HFS format. After this was done, it was simply a matter of running the installer. As with SheepShaver, I disabled most of the options for the installation, keeping only Mac OS 7.6, MacLinkPlus 8.1, and Open Transport PPP 1.0. That last one may not have been necessary, but I wanted to make sure that Open Transport was installed, and not remembering if it was by default, I do know that the PPP control panel (which I later disabled with Extensions Manager) requires the TCP/IP control panel rather than the older MacTCP control panel.

classic-10

The installation took only a few minutes, and once it was finished, a restart booted off of the OS on the disk image.

classic-11

Mini vMac

Since we’re moving backwards in Mac OS history, beginning with Mac OS 8.6, then installing 7.6, our final emulator will let us work with System 6.0.8. The first version of System 6 was released in 1988, so we’ll be going back in time 18 years in running it on the latest Mac hardware. We could actually go back to System 1 from 1984, but System 6 is probably the best combination of running software built for the Mac Plus/SE lines while retaining stability and features as much as possible.

Just like the other emulators covered, we need the executable, a ROM image, a disk image, and the installation software. Mini vMac has been compiled to emulate either the Mac 128K, Mac Plus or the Mac SE, and I used the SE version.

You can use CopyROM to extract the ROM image from your own SE if you have one (although unless it has an Ethernet card, I don’t even want to think about how to get such a file to your Intel Mac). I did find one for download, although I can’t seem to find it again. I’m afraid on this one, you’ll just need to check around with Google. Once you find one, you need to name it “vMac.ROM” and place it in the same directory as the Mini vMac application.

The disk image format used by Mini vMac isn’t one that can be created with Disk Utility. However, the developer has made available an archive of blank disk images that you can use in sizes ranging from 400 KB to 24 MB. Just like the ROM image, the disk image should be placed in the same folder as the application.

Like System 7.5.3, Apple offers 6.0.8 as a free download. Once you have the system software disk images (the two 1.4 MB images should work fine, but you can also use the 800 KB sized images), a duplicated blank disk image, and have placed all three in the Mini vMac folder, you can launch Mini vMac. It will automatically mount any images it finds in the same folder it is in. The duplicated blank image should be named “disk1.dsk.” The installation disks can be mounted by dragging them to the Mini vMac window after you’ve launched the program.

classic-12

Conclusion

Know that there are many options and roads that you could take to get classic software on your Intel Mac. What I’ve covered here is simply the path that I took. I find emulation very interesting and perhaps down the road I’ll look into emulating an Apple ][ and an Atari 800 (the two other early computers I used). There are hundreds of educational programs and games available for these older platforms, and many of them are available for free, having been released by the owners. If nothing else, using such emulation brings back a nice feeling of nostalgia.

Posted in: Articles

Comments

Be the first to comment.

Leave a Reply


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*