The main scenarios that have caused me issues with large hard disks in PCI era PowerPC Macs (Beige G3 through to G4 era) are…
Many IDE PowerPC Macs from the G3 to G4 era are limited to ~128GB disks.
The operating System on some early G3s needs to be in the first 8GB.
When partitioning a Terabyte scale disk in Classic Mac OS, Drive Setup fails to allow you to size partitions due to UI issues.
Lets look at each of these issue and solutions individually.
Dealing with the 128GB Limit
I believe this limitation impacts computers from the Beige G3 and original iMac through to some QuickSilver G4s. The issue is caused by the computers only supporting 28bit LBA, resulting in a 128GB limit. I usually aim for a little bit under 128GB as I believe there may be a little bit of margin needed for some reason.
The simplest solution, given disks less than 128GB are often more expensive due to so many vintage machines having the 28bit limit (not just Macs), is to get a larger disk such as a 250GB disk, and format it with a 120GB partition in a more modern computer that supports it. This has worked for me in the past, but whatever you do, do not mess with the partition table in your 28bit LBA machine.
The next easiest solution, but with a more significant cost, is to buy a PCI card that supports larger disks, such as an after market ATA card, or a SATA card. Note that most cards don’t support Macs, and even some of the ones that do, don’t support booting, only storage. A good option might be a SIL3112 based card as with the right firmware they have Classic Mac OS support (back to System 7.5) as well as some Mac OS X support.
Intech Software wrote a special hard disk driver that enabled the use of bigger disks with both Classic Mac OS and Mac OS X (10.2 and later) on the computer’s internal ATA bus. To use the driver with Classic Mac OS, format the drive using their Hard Disk SpeedTools product, but if you want to use the drive with Mac OS X, you will need to install a software driver called SpeedTools ATA Hi-Cap Driver in every OS X install. Note! There are still a number of limitations – it is likely that any computer that suffers from needing bootable OSes in the first 8GB will still need that, so create any bootable partitions you need within the first 8GB. On later machines using this disk driver to use larger disks, they will not be able to boot from beyond 128GB on the built in interface, so ensure that you put a partition divider around 120GB and only use partitions beyond 120GB for storage, and not bootable OSes. There are extensive warnings and guidance in the manuals for this software.
Please note that I’m not overly familiar with the limitations on older Performa 630 -> 6500 family IDE implementations. I have attempted to put a 120GB disk in a 630 but had odd, intermittent write errors. This is an ongoing project and I hope to find out what can and can’t be done with that family of machines.
Keeping the OS Within the First 8GB
Historic understanding of this is that the OS must be within the first 8GB of the hard disk on the Beige G3 and early iMacs, although this has been disputed at times. My personal experience of this is that I’ve had issues over time when I failed to partition a 40GB disk in a 233MHz beige G3 (with a Rev A ROM), but given this was back in something around 2003, I don’t have extensive notes! My thoughts are that more investigation is required with different hardware and ROM revisions to understand what is going on, but in the meanwhile, to be safe…
Partition your disk. I usually create a couple of small partitions and then a larger partition, using the larger if I want to run an early version of OSX. For example, I might create a 2GB partition and a 6GB partition for a Classic Mac OS install and a Mac OS X install. Alternatively, I might create two 1GB partitions, a 2GB and a 4GB if I’m experimenting with lots of OSes. I then usually create a single large partition with the remainder of the disk (assuming it is less than 128GB – see above) for applications and storage.
Use a PCI SATA or ATA card. Many cards make drives appear as SCSI drives meaning that the host’s ROM doesn’t use the code that prevents booting beyond 8GB (the bug is in the ATA code, and doesn’t apply to SCSI disks).
Using a helper partition – given the issue only exists very early in boot, it is possible to use a small helper partition and the software XPostFacto. XPostFacto is able to put a small number of files on a bootable partition, that then hooks into a larger OSX (I don’t think it supports OS9? I’m not sure, please correct me) installation on a large, unbootable partition. This trick can also be used to boot from FireWire drives on machines that don’t support booting from FireWire. Theoretically you could create 10 small partitions within the first 8GB of the hard disk and use each as a helper partition to boot huge partitions later into the disk.
Partitioning Multi-Terabyte Disks Under Classic Mac OS
Note – I believe that you are limited to 2TB disks in Classic Mac OS, but have not personally tested exceeding this limit.
When I installed a 1.5TB disk in my 9600 I found that I was able to format and use the disk using Apple’s Drive Setup, but that if I tried to partition the disk, I could not type in custom partition sizes (my usual trick with a big disk is to use the tab key to cycle through partitions that are visually too small to click on in Drive Setup). After some experimentation with various software, I found that I was able to easily set up partitions, once again using Hard Disk SpeedTools. As such, this is my recommendation for setting up a very large disk (I assume SATA) in a classic Mac OS system.
Try Compact Pro instead of Stuffit for sharing files with other users of vintage Macs – you might be surprised.
It is useful because you can create self extracting files protected from the ravages of the internet and you don’t need to worry about what compression software, or realistically, what hardware or OS version the recipient is using as the single format is extremely broadly compatible with Systems from 4.2 to Mac OS 9.2.2.
Macintosh Files
Classic Mac OS (System versions 9.2.2 and older) used a file format that is a bit different to what is used on most systems. Each file has two forks, a data fork, which contains binary data similar to any normal Windows / DOS / Linux / CP/M, and a second resource fork, that contains structured data called resources. Resources can be anything from pictures and sounds, to icons and even application code.
The Problem
A major issue with working with vintage Macs is that if you move a file with a resource fork onto a drive formatted as FAT or NTFS or most disk formats, including web servers, the resources are stripped from the file, an irrecoverable disaster as most files have all of the important information in resources.
The Solution
The common method to solve this issue is to process your files and convert them into a data fork only file, that can be later converted back to match the original files. Common formats that just do this are MacBinary (.bin), AppleSingle, and AppleDouble. BinHex (.hqx) is a format designed to allow the transmission of files through protocols that might otherwise corrupt, I think by misinterpreting parts of the file and making well meaning changes (Versions of Fetch and some web browsers cause this issue to files that aren’t converted to BinHex or MacBinary etc.). Additionally, it is possible to use compression formats such as the Stuffit (.sit / .sitx) compression format and Compact Pro format (.cpt) as these do not have any important data in the resource fork.
The Complication
Most vintage Macintosh users seem to have settled on using Stuffit Expander as their main decompression tool in recent past, and I assume Drop Stuff as their main compression utility. This is interesting as it wasn’t always the case with these tools becoming more popular in the late 90s and early 2000s, likely partly because older versions of Stuffit compatible software tended to be paid software.
My frustration with everyone using Stuffit, is that there are effectively three Stuffit formats – Versions 1 – 4 (.sit), Versions 5 – 6 (still .sit, but not fully compatible) and Version 7+ (.sitx). Version 3.5 is required to work on System 6 and Macs with a 68000 processor, but this version wont open “.sit” files made with Stuffit 5. Version 5.5 seems to be the last version to work on 68k Macs and opens most files, but requires System 7.0 or 7.1 (I forget which) and a 68020. I have had better luck opening some partially corrupted files using 5.5 over 5.0 – I suspect it does some simple repairs for common issues. “.sitx” files require Stuffit Expander 7 which does not run on 68k Macs. Further more, it is possible to set the level of compression, with higher levels of compression taking longer to expand, hugely so on older computers. Some files will crash some versions of Expander, but not others so you usually end up needing multiple versions (4.5 and 5.5 perhaps) installed.
The common mistake that people make is to compress a file, intended for use on an 8MHz computer from the 1980s and running System 6, using the high compression mode and saving in the later (requiring version 5 or later) format making the files inaccessible on original hardware.
My Preferred Solution
In my household growing up in the 90s, we tended to use the compression tool “Compact Pro”, which was ShareWare, but fully functional without registration. This worked well and let you save archives which can be moved between computers, even stored on servers and PCs, and later extracted on another Mac running Compact Pro. Compact Pro has minimum requirements of a Macintosh Plus running System 4.2 and will work just fine on a G4 running Mac OS 9.2.2.
The next huge advantage is that in the save dialogue box, there is a “Make Self Extracting” checkbox. If you check this, the saved file is an application. Running this application will extract the compressed files without even needing to have a copy of Compact Pro on the destination computer – the complication? An application needs resources… never fear – there is a menu option that allows you to convert any file, including these Self Extracting Archives (.sea) into a BinHex (.hqx) file, which is server, Windows, Linux, FTP, http etc. safe. Additionally, almost any archive software including StuffIt will convert the file back into the application from the BinHex so you’re not excluding StuffIt users (note that for many years Stuffit Expander came on Apple Mac OS installer CDs and was installed by default). An extra bonus is that some web browsers and FTP clients automatically convert BinHex files.
By processing a file like this, it will be possible for it to be worked with by the destination user, regardless of what OS they are running as long as it is newer than System 4.2, there are fewer format issues, fewer unexpected, Stuffit Expander just quitting when you drop the file on it, or throwing a mystery error, the files work on anything from a 68000 to a G4.
The only disadvantage is that there is a small overhead for the application / extraction code and so if a file barely compresses (such as sound or a JPEG image) the resulting file might end up being slightly larger than the original, or if you are trying to minimise size to the last few kB.
How To
First download Compact Pro 1.52 onto the computer running Mac OS (real or emulated) that you want to use to compress your files. It can be found here.
Compact Pro
Once installed, follow these steps to generate a self extracting archive stored as a BinHex.
Launch Compact Pro and it will open showing a new untitled archive. You can add files and folders here.
You can go to the “Archive” menu to either create new folders (“New Folder…”), or directly “Add Files…” and folders.
You can chose to add all files at the current location, or just what is selected. You can keep adding things until you have finished, and then click “Done”. You can also choose to “Add only if modified on or after” which is handy if you have a file full of many documents and, for example, want to add all the ones you’ve modified today.
Now that we have added our files, we can navigate and modify things if we like, but I’m going straight to “Save As…” in the File menu. I have selected the “Self-Extracting” checkbox and named the file “CW2.1.SEA”. I then click “Save” as usual, after navigating to where I want to save my Self Extracting Archive.
After saving, the archive window updates to show details of what filesize savings we made. In my case, I saved 45% of the original size of the files. Woo!
Keep in mind that at this point we can move the file between Macs on a Mac formatted disk, but, because we specifically saved as a self extracting archive, to retain that feature when moving via the internet or a PC, we need to convert the file to a BinHex. This is done with the “Convert to BinHex4…” option in the Misc menu. Select your file and click Open.
You will be asked where to save the file. I don’t tend to check “Include LFs” (Line Feeds) – Let me know if it is something that is needed in a specific situation using my contact form under the “About” menu on this page.
That’s it – you now have a .hqx file that is safe to move on to a PC floppy disk, transfer over FTP to a PC, upload to Macintosh Garden etc. The end user just needs to open the file with something that converts back from BinHex, which as mentioned could be one of many programs including Stuffit Expander, and then double click the resultant file and the contents will be extracted. One of the reasons I like this method is that the BinHex is just a plain text file but once converted back, the Self Extracting Archive retains all its file type and file creator characteristics.
NOTE – If you do make a mistake and forget to convert your Self Extracting Archive into a BinHex and the resources are removed during the transfer process, the resultant file will still be a valid Compact Pro archive! This means that at the destination, the damaged file can still be expanded by manually opening it in Compact Pro, or if I remember, a registered copy of Stuffit Expander / Stuffit Deluxe.
Looking for Performa / LC / Quadra 630 Technical Information
One of the Macs I’m most nostalgic about is the Performa 630 (and it’s many badge engineered siblings). It is a strange derivative of the LC 475, with many similarities, but with a large number of unusual and very specific expansion slots. As well as the LC 475’s LC PDS slot (the 32 bit version), it also adds… An AV slot, a UHF and FM module, a hardware MPEG decoder, a DOS card, a GIMO port and an IR port. It also has SCSI and IDE which can be useful, and a video chip that supports hardware scaling.
Some 630s were fitted with a very similar board also used in the Performa 580. The design is pretty similar, but helpfully provides a second RAM slot.
Technical Info Wanted
I like doing hardware and software projects with old macs but sadly, haven’t been able to find anything much beyond the Developer Note for the Performa 630.
In order of priority, if you happen to have…
An ERS for the F108 Memory Controller chip used in the 630 and similar machines…
An ERS for the Valkyrie video chip used in the 630…
A schematic for the 630 logic board…
Anything else similar, the general machine ERS, or technical documentation for other critical chips…
… I would be super interested in hearing. Please let me know. There is a contact form under “About” at the top of this page.
Or, how to bump your Centris 650, Quadra 650 or Quadra 800 to 40 MHz with minimal effort.
A 40 MHz Quadra 650 (“Current System”)
Traditionally, the way we have overclocked the Wombat family of Macs (the 650s and the 800) is to desolder the CPU clock “G3” and replace it with a faster part, or alternatively, use a commercial product that “clips” onto the clock, disables it, and injects its own clock signal. Through a mixture of experimentation and, let’s be honest, the sudden availability of the schematics, I made the most awesome discovery, I’ve found that 40 MHz is easy without messing with the clock. This is great news, because…
The clock is a surface mount part, meaning if you want to swap between speeds, you need to make a socket / adapter.
The clock is right up hard against a NuBus slot meaning you have to be very careful when desoldering and soldering in the area.
It actually turns out that the logic board in these machines has a built in function that lets you select the clock source, either from G3, or a clock derived from the NuBus clock. Selecting the NuBus clock as a source just straight up runs your computer’s bus at 40MHz without having to do any particularly fiddly mods.
There are a number of “levels” of effort you can put in, each with different advantages and disadvantages. You can either just hard set your computer to 40MHz and overclock in terms of the timings (because the ROM still runs with 25 or 33MHz timings), change the timings to the correct ones for 40MHz by swapping resistors, or by adding an extra resistor and two jumper headings, make it that by just removing or fitting two jumpers, you can select (independently) the RAM/ROM/VRAM timings and the CPU clock speed (between either 20 and 25 MHz, or between 33 and 40 MHz).
Basic 40 MHz Overclock
This is the simplest overclock with the minimal effort.
Advantages – This is effectively an overclock, so you’ll get super fast video performance as well as fast RAM and ROM.
Disadvantages – This uses whatever timings you already have, so almost certainly be unstable if you have a machine that shipped as 25 MHz, and possibly unstable if you have a 33 MHz machine.
How to do the Basic 40 MHz Overclock…
Remove the logic board from your computer and place it on a heat-proof and static safe surface suitable for soldering.
Find the pair of pads next to the CPU called “J29” on the silkscreen.
Bridge the two pads, either with a blob of solder, or a little length of wire soldered between them. Alternatively, fit a two pin male header (2.54mm pitch) for a jumper.
Reassemble your computer and test to see that everything works.
J29 on the Schematic
The modification works because U71 is wired to select between two clock sources depending on if J29 is fitted or not. As shipped, J29 is always open, ClkSel is always “high” and so the clock signal (half the bus speed) is always taken from G3. If you short J29, ClkSel goes low and the chip switches to using C20M – a 20MHz clock used by things like the SCSI and EtherNet chip, sourced from the NuBus circuit. Whichever clock is selected is doubled by the MC88916 chip before being fed into the CPU. Don’t worry that R235 isn’t fitted – it isn’t needed.
The Location of J29
I recommend leaving a CPU in the socket while soldering to protect the socket from slips. In the photo above I’ve used solder wick / braid and flux to remove the solder that was in the through holes. You only need to do this if you want to fit a jumper (so you can select between the stock speed and 40 MHz by removing and fitting a jumper. The following shows my setup.
J29 with a Header and Jumper Fitted
If you don’t already have a CPU heatsink, consider fitting one.
Adding 40 MHz Timings
This is a more stable solution that requires a little more soldering. This mod is required if your computer originally shipped as a 25 MHz machine.
Advantages – This reduces the overclock on systems such as RAM, ROM and VRAM, likely making the system more stable at 40 MHz. Doing this change will make a 25 MHz machine work at 40 MHz.
Disadvantages – Benchmarks will score a bit lower than using 33 MHz timings at 40 MHz (in line with a real 40MHz machine if Apple had ever released one). The machine ID (gestalt) will change to an unreleased Mac – 7.6.1 will boot OK (but might not install without tricking the installer), but 7.1 won’t boot unless you can find a hacked System Enabler. (Update – I believe I’ve managed to make the required changes and have the magic System Enabler working now. Drop me a message and I’ll send you a copy).
How to select 40MHz timings…
Remove the logic board from the case and place it somewhere suitable to do some soldering.
If there is a resistor fitted to R152, remove it.
If there is a resistor fitted to R151, remove it.
Save any resistors in case you want to put them back.
Reassemble your computer and test to see that everything works.
Setting 40 MHz Timings
The way I remove 0805 surface mount resistors is by putting a little flux on them, and then placing the iron on one end for about 3 seconds, before quickly moving the iron to the other pad and pushing the resistor off. Sometimes it takes a couple of tries, but it is easier than faffing with other methods and I usually already have my iron set up. It is especially helpful if there is plastic parts nearby on the board that hot air might damage.
The Ideal Setup
This last modification is closest (see the “Other Tweaks” section) to how I have my system configured as it gives the best flexibility. It lets you have jumpers to select CPU speed and timings. Removing both jumpers gives you the stock CPU speed (whatever it is on your machine), with (always) 33 MHz timings, while fitting both jumpers gives you 40 MHz and 40 MHz timings. You can also mix and match.
Advantages – Flexibility – you can change the CPU clock between stock (hopefully 33 MHz) and 40 MHz, and also the timings between 33 MHz and 40 MHz settings. All without even removing the logic board from the case (once the modification has been done).
Disadvantages – If you have a machine fitted with the original 12.5MHz clock for 25MHz, it will be slower than as shipped when you pick 25MHz by jumpers, because you will only be able to select timings designed for higher clocks.
If you have a 25MHz machine, I recommend just doing the first two mods above and basically hard wiring it to 40MHz. Make sure you have a heatsink fitted and consider finding a 33MHz grade CPU.
Dual Jumpers
To fit dual jumpers…
Remove the logic board to somewhere you can do soldering.
Make sure no resistor is fitted at location R151.
Fit a 1.2k 0805 resistor (usually labelled 122) at location R152.
Fit a 330 ohm 0805 resistor (usually labelled 331) at location R233.
Fit a header at location J28.
Fit a header at location J29 if you didn’t previously.
Reassemble your computer and test to see that everything works.
J28 in Situ – This Selects 40MHz Timings when Fitted
R151, R152 (I didn’t have a 1.2k Resistor so used a 1.5k) and R233
At this point, as described above and if you started with a 33MHz board, you will be able to select 33 MHz with 33 MHz timings by removing both jumpers (I store them by placing them so they are on only one pin of the header), or 40 MHz with 40 MHz timings by fitting both jumpers. If you fit J29 and not J28, you will get a 40 MHz bus / CPU speed, with 33 MHz timings. This is an overclock with regards to the timings, so you will have boosted video, RAM and ROM performance. Most noticeable in the video benchmarks like the following :
Video Benchmark Score at 40 MHz with 33 MHz Timings
Note that while 40 MHz timings are selected, you will have the machine ID (gestalt) of an unreleased Mac, and System 7.1 won’t boot as mentioned above. If you want to boot in 7.1, just remove jumper J28.
Other Tweaks
Fit a 40 MHz Grade CPU and a heatsink.
Fit a socket for trying other clock speeds.
Fit a 25MHz clock to aim for 50 MHz.
Spoof a Quadra 800 power LED by shorting the appropriate two pins on the LED connector location. This makes your computer think it is a Quadra 800, which shipped with faster RAM, so I believe the ROM sets up slightly faster RAM timings.
Install the Wish I Were control panel to override the machine ID gestalt and reduce (but not completely) the number of issues from running a machine with an unreleased ID.
Replace the MC88916DW55 with an MC88916DW80 as this makes 50 MHz more likely in combination with a faster clock at G3. Fitting J29 still selects 40MHz, but removing it selects the faster clock at G3. Remember G3 is half the bus speed.
Remove onboard RAM and fit a single stick of very fast RAM (50ns EDO).
Fit a PowerPC Upgrade Card. Some will run at 80 MHz using the modifications described on this page.
I have personally done all the mods listed above to my machine, although I can’t promise they’ll all work for you, or are worthwhile.
Further Research
I worked out how to modify the System Enabler so that 40MHz works with System 7.1! Drop me a message if you want a copy. I might have previously posted it on Tinker Different – I forget.
Additionally, if your board shipped from factory with J28 and or J29 fitted, and especially R233 fitted, I’d be interested to hear from you. It’s likely that such a board would be a prototype and it would be great to check some component values.
This page is making a record of information I originally posted on 68kmla.
Some G3 and G4 processor upgrades for beige macs from the 90s have dip switches for setting the processor and bus speed, as well as a special switch for when you install it in a PowerBase (a clone). With so much information falling off the internet and getting harder to find, I thought I’d post the settings for some cards here.
PowerLogix PowerForce G3 Speed Settings
This is what my PowerLogix card looks like, it is a 400MHz, 1MB Cache G3 (PFG3 400/200/1) upgrade for PCI macs with the processor slot, for example things like the 7500 to the 9600, and some clones.
Here are the settings :
XLR8 Mach Speed Settings
The following settings apply to a number of XLR8 cards, including Mach branded cards. The first 8 switches seem to control the host bus speed, the remainder set the CPU multiplier.
You can also additionally set the Backside Cache speed using XLR8s software.
Newer Technology MaxPowr
See the following site for experimental research regarding the four switches on the non-ZIF variant, or the manual extract for settings on the ZIF card.
Installing “Unsupported” Software on an Overclocked LC 475
(Or more generally, installing software on any unsupported classic Macintosh)
You might find that if you have overclocked your LC 475, Performa 475, Performa 476 or Quadra 605 by moving the speed selecting resistors on the underside of the board, you can no longer install some operating system versions, including Mac OS 8.1 for example.
The reason for this, is that the machine id gestalt, effectively the number representing the computer model from the operating system’s perspective, changes when you change the computer’s speed in this way. When you launch some System installers, they check the machine id gestalt, and some, but not all, don’t include the id for a 33MHz LC 475 type computer.
There are three easy solutions for this, depending on your exact needs…
Try Forcing it to Install
Some Apple Installers will ignore the machine check if you hold down the opting key while launching the software. Note this unfortunately doesn’t work with the Mac OS 8.1 installer, but it does work with some older Apple installers. To do this, you can hold it down prior to double clicking, but make sure you keep it held down through the dialogue boxes until you get to the one that lets you pick your install type. At this point, remembering that the installer doesn’t have an appropriate profile for what it thinks your computer is, select “Universal System for any Supported Computer” to make sure everything that is needing gets installed. Note this will be a bigger system install than you really need as it will include all sorts of machine specific extras and even probably PPC code, that your specific computer likely doesn’t need.
Override Your Machine ID
It is possible to set your Machine ID Gestalt in software and there are a couple of different tools for doing it. The most famous one is “Wish I Were”, but for this specific job, it isn’t actually the best choice. Wish I Were is great if you want to change your machine ID long term as it changes it fairly early in the boot process (not early enough if the OS doesn’t support the computer at all, but that isn’t an issue here).
On the other hand, the software “MachID Wannabe”, available here from Macintosh Garden : https://macintoshgarden.org/apps/wannabe-macintosh lets you instantly change your machine ID and it only stays changed until you change it again or shutdown / restart. This is great as without restarting you can change it, then run the installer, and get on with your life. You do still need to install MachID in the Control Panels folder and restart to be able to use it though!
If you’re trying to make an LC / Performa 475 or 476 appear stock, you’ll want to set it to 89. A Quadra 605 would be 94. It doesn’t really make a difference which of these two you pick.
Put the Resistors Back
The third and final option is to just put the resistors back to the default configuration, and instead, install my software overclock Control Strip Module. The module lets you change the speed between more configurations and on the fly. Because the resistors are in their default position, the computer retains its stock Machine ID Gestalt and all installers, software and OSes that check the machID get the expected value for an LC 475, maximising compatibility. I might be bias, but this really seems like the best solution to me!
For information about overclocking an LC 475 or related computer, or many other classic Macs, as well as useful information about the machine ID gestalt (commonly called just “gestalt”, although technically the machine ID / machID is one of many gestalts), please check out the amazing http://applefool.com, and specifically http://appplefool.com/clockchipping/.
How Registration Details are Stored in ClarisWorks 2.0 and 2.1
Where is the Registration Data Stored?
Older versions of Claris software store the registration details in the data fork. In the 68k only versions of software, it is the only information stored there and so deleting all data in the data fork resets the software to unregistered (only ever try this on a duplicate copy of the program) and you are prompted to enter new registration details when you next launch the software. This is how utilities such as Repersonalize clear the registered details in early Claris software, as well as Microsoft software.
PowerPC code in Mac applications is actually stored in the data fork, in both PPC and FAT applications. This means that running a program like Repersonalize on a PPC version will damage the application by removing all the PPC code. Looking at the data fork and comparing before and after registering a fresh copy, I found that the registration information is stored at the very end of the data fork and if you know which section it is, it can be still manually removed. I used the software Resorcerer which lets you view the data fork as well as the resource fork.
The first version of ClarisWorks to support PowerPC processors natively that I know of is version 2.1, and it is specifically 2.1CDv3 that I’ve been looking at. In this exact version, the data/code at the end of the PowerPC code in the data fork is “0012 24EC” and the first offset of the registration data is at offset 134448. This will likely vary between versions.
I might write an automated tool for this at some point if I can make sure it works with various versions.
How is the Registration Data Stored?
When you register ClarisWorks 2.1CDv3 (and some other Claris software), there are three fields, Name, Company and Serial Number. All three accept just about any text. The three strings are obfuscated, concatenated, and then appended to the data fork as three pascal strings. This means that the first byte of each string is the length of the string, and the three strings are joined together (each starting with their length).
The strings are not readable as stored because each character has been XOR’d with a number. Claris alternated between two numbers, 79 and 66 (at least in ClarisWorks 2.1CDv3). XOR means Exclusive OR, and is a binary operation. XORing a byte with another byte (which we’ll call Brian for clarity) effectively inverts (flips) any bits in the byte that match locations that are a ‘1’ in Brian, when viewed in binary notation.
For example, if our byte is 11110000, and Brian is 10101010, then XORing our byte with Brian will give the result “01011010” – we flipped every second bit. By applying Brian a second time, the bits are flipped back, and we get the original data.
You can work out what the XOR value is (i.e. Brian), if you have the input byte and the result, by XORing the original value and recorded result. So, because
Result = Byte XOR Brian
It is also true that…
Brian = Byte XOR Result
Remembering that in this case the byte is the ASCII value of a known letter in the registration details.
A Worked Example
Imagine we enter the following data into the three fields in ClarisWorks to register the software…
First, lets consider the easy bit. The first string is 8 characters long, the second is 7, and the third is 6. We now know that the three lengths that will be included will be those. I made a little spreadsheet to get the ASCII values of each letter, XOR it with 79 or 66, and then display the result in Hex.
Putting the lengths and three strings together in hex we would have…
So lets check if we got it right by loading the registered copy of ClarisWorks in Resorcerer…
Yay! It matches, so I’m not daft. The reverse is also possible, lets start with the data as stored in the datafork…
So our hex data is…
060C 2E2E 3026 3105 182D 3D29 3C03 7D6C 7E
We can see the first byte is a 6 (in hex remember, but in this instance it is 6 in hex and in decimal), so we count 6 bytes, then one more, to find the next length… which is 05, so we count 5 bytes, then one more, and find 03. So our three strings are 6, 5 and 3 characters long. Lets make another spreadsheet.
Oh look, it says “Claris”, “Works” and “2.1”! If you would like a play, you can download the spreadsheet (in OpenOffice format, compatible with Excel and LibreOffice) here :
When retro Macintosh computers such as the IIci, Performa 475 and even early (beige era) Power Macintoshes were current, RAM was extremely expensive. As a kid trying to push the capabilities of what I had, I sometimes would be in a situation where I just didn’t quite have enough RAM to run a program, for example because the software requires a specific, newer, version of the OS (with a larger footprint).
Today, RAM for these machines is effectively cheaper, but still expensive for some types, hard to find for others (such as the IIx) and lastly, some computers such as the SE or LC have fairly low hard limits.
Choose Your OS Carefully
The most obvious solution is to use an older OS as the further back you go, the less memory the Finder and System tend to use. System 7.1 tends to use around 1 to 1.5MB, while if you’re able to run System 6, requirements plumit into the low hundreds of kilobytes especially if you avoid using the MultiFinder.
If you’re short of memory on a PowerPC, try running a version of Mac OS 7 – the only beige PowerPC that won’t run Mac OS 7 in some form that I know of is the Beige G3. Some machines will even run slightly older versions than the official documentation suggests – for example the 9600 will boot 7.5.3. Note you might need a “System Enabler” for some combinations of computer and OS. These can be found on Macintosh Garden.
Setting up multiple disk partitions or disks, with older and newer supported systems, can be a great way of switching between more feature rich / compatible systems that consume more resources, and smaller, older, more lightweight systems to maximise available RAM.
Optimise
Sometimes you can gain some memory by uninstalling certain software installed in the System Folder. You might consider removing your screensaver, for example.
Suggested things to remove…
Always remove QuickDraw GX – it isn’t needed and uses a lot of RAM.
AfterDark or other ScreenSavers.
Printer Drivers you don’t need (and desktop printing).
Modem drivers.
Ensuring the hard disk cache size is sensible – if you’re short of memory on a sub 10MB machine, ensure the hard disk cache in the Memory Control Panel is set to 128k or 96k.
If you are using a Power Macintosh, you will often find that enabling 1MB of Virtual Memory in the Memory Control Panel will actually free significant amounts of RAM, especially in Mac OS 8.* and 9.*. Some software refuses to run if Virtual Memory is enabled, other software won’t run without it. Generally, avoid using greater amounts of Virtual Memory – if you really need more RAM, buy more RAM. Real RAM is many times faster than Virtual Memory.
So You Have a II or IIx, or Perhaps a IIfx?
Getting RAM for these machines can be a nightmare, because they need special RAM. “PAL” RAM in the case of the II and IIx (plus complications with respect to ROM versions and memory controllers on the II), and unique form factor RAM for the IIfx.
This is the one and only situation where I would recommend using virtual memory (perhaps also the LC II, Classic II and ColourClassic), but I would specifically recommend the software “RAMDoubler”. Ignore the jeering PC enthusiasts who dismiss this sort of software as snake oil – their platform has a history of scams in this area. The RAMDoubler product is an impressive piece of engineering that attempts to Ballance available RAM, CPU and hard disk. Default settings will give you 100% extra RAM, by compressing the contents of a portion of your RAM. This increases your CPU load, but means the most likely to be reused parts of memory are normal speed while the remaining is still faster than hard disk based virtual RAM. I’m writing from memory, but I believe that the software also performs more agressive memory tidying and may move less frequently used items to disk… But I suggest reading the manual.
At Boot-Time
Another simple solution would could be to boot with shift held down to disable Extensions, but this wouldn’t always work if your program or game required certain extensions to function. Starting up with Extensions disabled reduces the RAM your OS uses to the minimum.
When your software mandates some extensions, you can create and save a minimum extension set using the Extensions Manager. This can be easily accessed by holding space during boot on System 7.5 and later (when it is installed), but it can also be added to earlier versions of System 7, and older versions exists even for System 6.
Extensions Manager allows you to add and remove Extensions and Control Panels and then save “sets”. You can create several, for each of your favourite RAM hungry applications or games. It is also useful for troubleshooting crashes during boot, as it loads early (before most Extensions), loads the interface by holding spacebar, and allows you to remove everything to confirm the OS boots with a minimum config (otherwise the issue is likely the core OS, hard disk or other hardware) add then things back few at a time until you identify what is causing the issue.
Who Needs the Finder Anyway?
The last trick I used to use as a child was to write AppleScripts to quit the Finder and then launch the Application you want. This only works in marginal cases, but has got me out of a hole a few times, including when an Installer application would not launch any other way on a particular machine. Only minimal AppleScript support is required because all applications understand the “open” apple event, but best AppleScript compatibility is with Finder 7.1.2 (so a copy of System 7.1 with Finder 7.1.3 or 7.1.4 installed is a good configuration) or later as this will enable you to do more extensive scripts if you want. A basic script might be as follows :
tell application “Finder”
quit
end tell
tell application “MemoryHog Pro 3.0”
activate
end tell
Save the script as an Application.
To produce a more extensive “Launcher” type AppleScript, you might consider using FaceSpan, which allows you to produce AppleScript based Applets with fancy GUIs using a nice IDE.
Summary
Hope this page is useful to someone. I remember having difficulty getting Escape Velocity to run due to memory restrictions, as well as trying to maximise RAM available for Director 4 (to increase the available Cast size) and for recording sound to RAM.
If anyone has suggestions for what Extensions and Control Panels are memory hogs, or for any other memory saving tips, send me a message via my contact form (under the About drop-down).
I’ve been doing a huge amount of benchmarking over the last week and have been using my 6100/66 as the comparison machine. I though I’d post a couple of comments on how to get good performance while it is on my mind.
Processor Upgrades
If you are able to find one at a reasonable price, a G3 upgrade, for example from Sonnet or Newer, is the biggest performance boost you can get for a 6100. The performance boost is huge. A 266MHz G3 Sonnet in my 6100 increases Norton System Info CPU benchmark scores by about 560% for my 66MHz 6100.
Note when you fit a G3, you usually have to remove the L2 Cache SIMM from your logic board. Mine won’t even boot if I forget.
An advantage of many of these G3 upgrades is that they also act as a PDS raiser card, allowing you to fit an AV card. This gives you the ability to drive higher resolution monitors and/or more colours, as well as dual screen.
A Level 2 Cache
If you can’t get a G3 processor, make sure you have an L2 Cache fitted. This allegedly gives a performance improvement of 20%. I don’t have my benchmark scores on hand at the moment, but feel like 15% on CPU is more realistic. It also significantly improves built in video performance. Very worthwhile.
Use Built-In Graphics
Even if you have an AV card fitted, while the more conventional connector is nicer, and the 2MB of VRAM is good for higher resolutions and bit depths, the built-in video port gives faster video performance. If you have an AV card fitted and aren’t using it, it still appears as connected, so to save a small amount of CPU usage, set it to a low resolution and low bit depth. I think it supports Black and White.
To use the built-in video, you’ll likely need a HDI-45 to Apple RGB (15 pin DSub – not to be confused with VGA) adapter, and then perhaps an Apple RGB to VGA adapter as well. Don’t pay too much for one, certain sellers on eBay have been trying to produce artificial scarcity and drive up prices. They’re pretty common really.
Software Tweaks
If you’re planning on running older games on your 6100, even if not, you must install SpeedDoubler 8. It gives approximately a 500% improvement in emulated 68k benchmarks on my machine.
Additionally, consider installing MathLibMoto for a small improvement in floating point performance in some situations.
If your software is looking for a 68k FPU (a 68882), try installing PowerFPU.
System Software
I recommend running Mac OS 7.6.1 if you have 24MB of RAM, perhaps Mac OS 8.1 if you have 40MB or more and want HFS+ disks. This said, note that I’ve had some issues where the Sonnet upgrades will not work at all with a specific operating system version. I’m not certain, but I have a feeling that this was Mac OS 7.6.1.
Remember that dual booting, or even more, is pretty trivial on a vintage Mac. I usually install three OSes on my machines, if I have room, by partitioning the disk. I’ll install an early supported OS, a middle era OS and late OS. For the 6100 this might be 7.5.3, 8.1 and 8.6, or perhaps 7.1.2, 7.6.1 and 9.1, or whatever.
RAM
I recommend you have between 24 and 72MB of RAM. The 6100 will accept up to 264MB of 72pin FPM RAM, but more than 72MB isn’t really needed unless you’re capturing video or audio, or using a big RAM disk. Note if you fit 264MB, the screen will stay blank for about 37 seconds while your computer does the memory test at power on.
There is 8MB of RAM soldered to the logic board, and two SIMM slots which must be upgraded in matched pairs.
A Fast Hard Disk
A modern SD card to SCSI adapter is likely your best option as most old spinning SCSI disks are close to failure and expensive. Avoid the original BlueSCSI as they have a high failure rate and are slower. Newer options include the MacSD, ZuluSCSI, GBSCSI2 and BlueSCSI 2.
New Battery
Be warned that old batteries leak and destroy old Macs, so make sure you aren’t running a battery that is more than about 10 years old. Don’t leave the regular half length AA batteries in when the computer is stored.
Ideally, I recommend getting a coin cell battery adapter as they are less likely to leak.
Capacitors
Keep an eye on the electrolytic capacitors on your logic board. If you notice the solder on the pads loses its shine, you probably should recap the board. You shouldn’t need to do caps other than the electrolytic “tin cans”. The power supply might need doing too. I haven’t needed to recap my 6100 yet, but I keep a careful watch and am willing to do it myself. I probably should have done the logic board already.
While many Macs will run without a battery, the Power Macintosh 6100 needs the battery to properly power on. With a missing or flat battery, you won’t usually see a video output, although you can do a trick where after powering it on, you quickly turn it off and back on again. This isn’t advisable generally but can be useful to verify a machine works.
Software
Less relevant to the performance of your 6100, but the following is some suggested software for your Power Macintosh 6100…
UPDATE 31st July 2024 – This post has been updated to reflect more recent versions of QEMU m68k as I was notified that the instructions I had followed were out of date. The 68k specific patches have more recently been integrated into the main build and so it is no longer necessary to use the q800.upstream branch I originally used.
UPDATE 1st November 2024 – Last night I was able to build and run 68k QEMU on an 64bit ARM based PineBook Pro running Manjaro Linux. Manjaro uses yum instead of apt, so grabbing software was different, but all I needed to do was update installed software, then I installed the repository’s copy of qemu-system-m68k (a lazy way of getting most dependencies), then I had to install the build environment ninja. After that, everything worked exactly as described below, although compiling took quite a while. I haven’t benchmarked the system, but it feels like it runs pretty well. Mac OS 8 didn’t take too long to install. Given this, I would expect this software to be happy compiling on other ARM based Linux PCs and SBCs, such as the Raspberry Pi.
QEMU m68k Running Mac OS 8.1 on Manjaro-ARM (click to view)
Introduction
I recently installed the 68k version of QEMU on Linux (Pop! OS) and struggled to find detailed step-by-step instructions by googling, so thought I’d upload some notes to help others. I suspect that part of what tripped me up is that previously, it was necessary to build from a branch and not the central source, which led me down the wrong path to to get the m68k variant of QEMU to build, but in truth building the main branch source now gets you to a working emulator (although not the copy in the Debian software repository). This is slightly muddied by the out of date threads that are returned as the primary results when you search for instructions on building QEMU for 68k on Linux.
Building m68k QEMU
My primary source for building qemu-system-m68k for Linux was here but ultimately I needed some guidance from a contributor to the project who saw my post and got in touch to point me in the right direction. I’m very appreciative of the time they took to help me on my way. This assumes you plan to run Classic Mac OS (between 7.1 and 8.1), and not AUX or anything more exotic.
Navigate to your home folder
> sudo apt update
> sudo apt-get build-dep qemu-system-misc ninja
> git clone https://gitlab.com/qemu-project/qemu.git
> cd qemu
> ./configure --target-list=m68k-softmmu --enable-gtk --enable-sdl --enable-slirp
> make -j4
I then copied the executables qemu-system-m68k and qemu-img from the build folder, into the folder I wanted to run them from.
Creating / Getting the Required Files
To run, you will need to generate two disk images, and a copy of the Quadra 800 ROM. Place the ROM in the same folder as the executables, and name it Quadra800.rom. I next used some of the instructions from here to work out how to generate the needed image files as follows. Run these two commands in the location you placed qemu-system-m68k and qemu-img previously.
> qemu-img create -f raw -o size=1G mainDisk.img
> qemu-img create -f raw pram-macos.img 256b
On the first line, change “1G” to other values to change the image size from this example of 1 gigabyte.
Launching the Emulator for the First Time
The emulator “captures” the mouse (and keyboard) once you click in the window. To free the mouse, press Ctrl+Alt+g.
To initially format the disk image, you can use Drive Setup (Mac OS 8.x) or Apple HD SC Setup (7.6.1 and older) while booted from the OS installer CD. It is critical that the CD iso image you use has been properly created and includes the driver partitions and is bootable, otherwise you will just get a flashing question mark on a floppy disk icon. If you do not already have an image, you can grab one from the Macintosh Garden here (which is a direct link to download #6 (at time of writing) on this page), or from my own site here.
Rename the iso image as MacOS81.iso and place it in the same folder as qemu-system-m68k and qemu-img.
If you plan to run another version of Mac OS on the emulated computer, download a bootable iso image of that operating system, for example Mac OS 7.6.1, place it in the same folder and name it, for example, MacOS761.iso. In the following instructions I will assume that you are using a, 8.1 CD image to format the disk and install the operating system. If you plan to install another OS, use that disk image instead.
Boot the emulator from the Mac OS 8.1 CD image using the following command, all on one line :
When you press return, you should get a QEMU window, hear your emulated Mac chime and see the boot process. Once the emulated computer reaches the desktop, open the CD, open the Utilities folder and then launch the Drive Setup application. If you are formatting the emulated hard disk using Mac OS 7.6.1 or older, skip to the section titled “Apple HD SC Setup” and then return to the section titled “Here”.
In Drive Setup, select the unformatted hard disk from the list, click the Initialize button, and then in the Initialize dialog box, click the Custom Setup… button, select “1 Partition” from the Partitioning Scheme popup menu, ensure the other popup menu says “Mac OS Standard” and not “Mac OS Extended” (if you plan to use the hard disk image with Mac OS 7.x), click OK, and lastly click Initialize. Once this is done, you can quit out of Drive Setup, and rename the hard disk you just formatted if you haven’t already. “Macintosh HD” is traditional. Once you’re done, you can install your operating system.
Here
To install an OS, navigate to the desktop. If you have just booted you will be there by default, otherwise if you are following these instructions and have just formatted your “hard disk” you may need to quit out of the formatting utility and close some Finder windows. Once you get to the desktop, open the CD and run the main installer application. Follow on-screen instructions to complete the install. If you’re unfamiliar with the process, the default settings should be just fine. Selecting Restart (if offered in a dialog box, or from the Special menu at the desktop) should bring you back up in your installed copy of Mac OS.
You can shutdown the emulated computer by selecting Shutdown from the Special menu while at the desktop.
If you wish to start QEMU again, but from a different CD image, for example a Mac OS 7.6.1 iso image we downloaded and called MacOS761.iso, enter and execute the following command, which is identical to the previous command, except the CD Image filename has been updated.
Once you’re done, Shutdown and we’ll set up a simpler (less typing intensive) way of launching the emulator, as well as consider a couple of helpful customisations.
Create and edit a new bash script in the folder with qemu-syetem-m68k…
On the first line “-g 1152x870x8″ sets the display to 1152 by 870 pixels (Apple’s 21” monitor resolution) at 256 colours (8bit). If you want to run the display at 640 by 480, or 800 by 600 at 24bit colour, delete the “-g 1152x870x8” text (move the cursor with the cursor keys in nano. The default display mode allows you to switch between 640×480 and 800×600 from the Monitors control panel within the emulated computer.
If your host computer has an optical drive, the last two lines set up the emulator to directly access disks put in that drive. If you do not have an optical drive, you may need to delete these last two lines.
Press Ctrl-x and when prompted, press “y” to exit and save changes.
Now, when you want to launch the emulator, you can run the bash script launch68k.sh, for example by navigating in the terminal to the folder, and then typing ./launch68k.sh.
Apple HD SC Setup
If you format the emulated hard disk using a Mac OS 7.6.1 or older version of System 7, you will need to use the formatting utility Apple HD SC Setup. This is because older versions of Drive Setup were exclusively for PowerPCs and / or formatting IDE hard disks (and we’re emulating a SCSI disk). While the process is pretty simple, an quirk I noticed while setting up my emulator was that Apple HD SC Setup only created a very small data partition on the emulated hard disk. This is simple to fix though.
Step 1
Launch Apple HD SC Setup, likely in the Utilities folder on the top level of the CD you have booted from. Select the SCSI ID of the emulated hard disk you want to format by clicking the Drive button, you most likely want “SCSI Device: 0”. Do not get this wrong or you could erase the data on whatever hard disk image you have mounted in your emulator.
Step 2
Click the Initialize button and wait. This takes quite a while.
Step 3
Click the Partition button, then click on the Customize button if available.
Step 4
If the disk utilisation graphic shows partitions taking up most of the disk, you’re good to quit out of the utility, but if like me, the data partition is only using a small portion of the disk and the remainder is grey half tone, select the partition and click remove.
Click towards the bottom of the grey area. In the dialog box that appears, select the option “Mac Volume” on the left, and then in the text field on the right hand side, enter a value (in K) that is about 1000 less than the maximum value quoted below the text field. Click OK once you’re happy. You should now have a small amount of grey between the disk driver and the data partition. Click Done.
Step 5
Quit Apple HD SC Setup and return to the heading “Hear” above, to install the operating system.
Getting Software onto the Emulator
At this point, if you have an optical drive, you should be able to install any software you own on original CDs. This only gets you so far though. I’ve actually been moving files onto the disk image using another emulator. Basilisk II allows access to the host file system and while QEMU isn’t compatible with my Basilisk II disk images, the QEMU image works fine in Basilisk II. Other emulators might also work in this fashion, such as the Infinite Mac website, SheepShaver and others.
Make sure you don’t accidentally launch both emulators at the same time or you will possibly cause issues and corruption.
Limiting Processor Usage
On my fairly elderly laptop, when I run QEMU it consumes 100% of two cores (from the OSes perspective, as hyperthreading is on this isn’t strictly correct). This is enough to either cause the fan to ramp up to an annoying level, or if I am running from the battery, significantly reduce battery life.
The truth is, I don’t actually offer all of the speed this offers me, so I decided to look into how I might best throttle the performance of m68k QEMU to reduce the CPU time it consumes at the cost of emulator performance. Ultimately, I settled on using the program cputool which I had to install, but was available from the Debian repositories so a simple apt get install cputool sorted that.
This solution isn’t perfect as it makes the emulated graphics redraw stuttery, but it is OK if you’re mainly typing and not playing games or drawing.
After installing cputool, I was able to make a new script to launch QEMU, that just called my existing script. What I ended up with was a bash script containing…
cputool -c 50 -- ./startqemu.sh
Where “startqemu.sh” was my existing start script, “50” is the percent of each core’s total time I’m allowing. QEMU m68k uses two threads, so with this setup, I see the total CPU usage by the emulator halved and visible as 50% usage on two cores.
The above method should probably work with other emulators that consume all of an available core or core’s resources regardless of whether it is needed or not.
Advantages and Disadvantages
I’m pretty pleased with this emulator, with the only slight disadvantages I’ve seen so far (since installing an up to date version) are that it runs slower than some other emulators, it is harder to install and transferring files between the host and emulator isn’t as trivial as in emulators that mount the host file system on the desktop by default. This plays off against much better stability and compatibility when compared to Basilisk II for example, which I have been mainly using lately. One big compatibility improvement is sound. For example, SoundEdit 16 was not usable on Basilisk II due to constant crashes.
The driving factor for me trying QEMU was a bug that manifests in Basilisk II when writing software in REALbasic – if I convert an integer into a string in my REALbasic program, I get an incorrect result. This does not happen on real hardware such as my Centris 650 or my PowerBook G3, and also does not happen in QEMU.
Further Work
At this point, I should probably look into better ways of transferring files into the emulator. I believe that network filesharing, either using netatalk or possibly FTP, would be a fairly simple thing to setup. I’ve not looked into mounting the host system within the emulated Mac, I’m told this is possible, and will add instructions here when I look into it.
Obsolete Comments
This post was originally made with respect to an older, unofficial, build of QEMU with which I had a number of issues. I’ve moved the old list of issues here so that if someone is searching for terms they contain, they will still find this guide.
Issues (some minor) I experienced with the development branch and thread detailing how to build on Linux…
Build instructions don’t mention all dependencies.
Could not run configure due to permission issues if you try in a location outside your home folder, specifically on a secondary partition in my instance (I haven’t tried this again with the latest source).
The emulator is debouncing double clicks on my computer so they only count as a single click. It is not possible to double click in the normal manner. -fixed-
Disk image compatibility is very picky and the emulator does not seem to work with existing disk images.
After generating a disk image using QEMU’s own tool, it will not format, or even show on the emulated SCSI bus in Mac OS until you format it in Mac OS 8.1. -fixed-
The man pages are exclusively about x86 PCs even when called in relation to the m68k executable.
Resolution support is limited, more limited than real hardware.
The SDL mode does not work on my computer and just results in a blank screen.
Installing from the Debian repositories results in a non-working executable.
The most frustrating of these issues have been entirely fixed in the newer version of qemu-system-m68k, although some of the minor issues are still present (and others I haven’t re-checked for at this point). I have marked items I’ve tested and found solved as “-fixed-“.