• Updated 2023-07-12: Hello, Guest! Welcome back, and be sure to check out this follow-up post about our outage a week or so ago.

Patched 6.0.8L for more Macs

David Cook

Well-known member
System 6.0.8L is a limited release from Apple that was primarily intended for the Classic II and PowerBook 100, but also supported the Classic, LC, and LC II. The "L" stands for "limited".

I'm working on restoring a PowerBook 100. While I waited for parts to arrive, I wondered whether the "limited" set of computers was artificial. Booting 6.0.8L on a Macintosh IIci displays this message:
System-6.0.8L-Supports.jpg

Using Resourcerer, I found this text within the System file. Specifically, DSAT (Deep Shit Alert Table -- not my fault -- that is it's actual name) resource ID 0, definition ID -20103.

Resourcerer Find.PNG

Given that, and given that the appearance of the error message is similar to other crashes at startup, this means it is drawn by the SysError trap call.

I added MacsBug 6.2.2 into the System Folder. In the MacsBug preferences file, I added a new mxbm resource named "FirstTime" with the macro name "FirstTime" and the text "atb _SysErr". This causes MacsBug to break on the SysErr trap starting from when MacsBug is first loaded.

MacsBug-FirstTime-break-on-SysErr.PNG

Upon breaking, I used the IP command to see a listing of the nearby instructions which I then searched for using Resourcerer. As you can see below, the code checks global variable $0CB3 for values <= 50 ($32) and for individual values of 4, 11, 13, and 17. If any of those tests fail, it calls SysError with code 102 ($66). An educated guess is that values one hundred and higher are negated and added to -20001 which would equal -20103 which is the string we found earlier.

PTCH-0.PNG

The numbers 4, 11, 13, and 17 are not the gestalt values of the machines. Instead, the Apple engineers used a cruder method of checking the global BoxFlag ($0CB3). However, this still leaves some interesting mysteries. It isn't checking for boxPowerBook100 (18) which is supported, but is checking for boxPortable (4) which is not officially supported by 6.0.8L according to Apple. It appears that the PowerBook 100 is seen as the portable in System 6.0.8L, as it's base hardware is so similar. It isn't checking for an boxMacLCII (31) which is supported, but is checking for boxMacLC (which is supported). Again, because the hardware is so similar between these machines, it seems like the LC and LC II are sharing the same ID in the System 6.0.8L codebase. In fact, this bug continues in System 7.0.1, where the Finder displays "LC" for the "LC II".

Internal-Mac-IDs.PNG
Notice that the code first checks to see if the values were less than or equal to 50 ($32). Given that all of these additional machines were released or in development in 1992 (around when 6.0.8L was released) it seems that the System 6 team figured they might eventually need to support most or all of them.

Anyway, back to the patch. We simply replace the SysError calls with NOPs (no operation). This ignores the boot checks.

PTCH-0-Patched.PNG

And what do you know? System 6.0.8L on a Mac IIci! A quick test on the Mac SE shows it works as well.

System-6.0.8L-on-a-IIci.PNG

Cool. But why would you want this?

I used ResCompare to compare the basic install (no networking or printers) of 6.0.8 to 6.0.8L. Here's what I found:
Identical Except for Version Resource
Backgrounder
Easy Access
Keyboard
Mouse
Scrapbook
Sound
Startup Device

Spelling Change Only ("Colour", "Grey")
Color
Finder
General

Added
Caps Lock

Substantive Changes
Brightness
Portable
DA Handler
Key Layout
Monitors
MultiFinder
System

Maybe the changes to DA Handler, MultiFinder, and System fixed bugs or improved the system beyond just supporting 5 new devices. It would make sense that the System 6 team was plugging along for nine months after System 7.0 was released, given that most users and software were initially System 6 dependent.

The second reason why you might want this is because it likely supports the PowerBook 140/145/145B/170 computers. Rather than regressing to a hacked version of the Japanese System 6.0.7, you can get what essentially would have been 6.0.9. Maybe. I don't have those machines to try it on. But, the 140 and 170 names were included in the System file.

ResCompare-Macintosh-Model-Names.PNG

The third reason is that it might support additional machines, but I doubt it. No luck on my Quadra 700 (ha! System 6 on a 68040) or my LC III. But, maybe.

Attached is my patched boot disk image made with Disk Copy 6.1.2. I've also patched the General controls to support dates up to 2040 and added Desktop Mgr to avoid System 7 disk rebuilds. I'll be interested to hear if anyone else is able to get this working on some additional machines or discovers additional fixes.

- David
 

Attachments

  • 6.0.8L Patched Boot.img.Hqx
    1.7 MB · Views: 15

Snial

Well-known member
Spelling Change Only ("Colour", "Grey")
Color
Finder
General
Hmm, doesn't this imply a UK localisation? I did remember running 6.0.8L on my Performa 400 at one point, but I don't remember how I did that, because I don't remember having access to a 6.0.8L installer and my Mac came with 7.1.0p (or 7.1.1p, there was certainly a p). I never knew the LCII could do that. Perhaps it was supplied as a boot disk with my PowerCD.
 

Phipli

Well-known member
Oh look, ID 9 was a proposed IIci based SE/30. That would have been a nice machine.
There is a couple of errors in the list. The IIcx is described as never released, and the Wombats are mixed up. The Q800 is described as 20MHz.

Tricky to see what is going on. Need to check the box flags against a gestalts list. I'll stop being distracted now ;)
 
Last edited:

Phipli

Well-known member
No luck on my Quadra 700 (ha! System 6 on a 68040) or my LC III. But, maybe.
Shame, I was immediately going to suggest a Wombat of some kind :)
Hmm, doesn't this imply a UK localisation?
Yeah, the localisation was called "British English" at the time, but the spelling implies either the British or the International English version.

Fine by me :p
 

zefrenchtoon

Well-known member
What a fantastic investigation ! 🤩

And this list of "box" ... o_O
I was thinking "Where is the 475/605 is the list ...?" :unsure:
 

joshc

Well-known member
Ooh this is very interesting, and something I was trying to dig into a few weeks back… I always assumed the 6.0.8L model support was arbitrary.

Does this mean we could boot into it on a 475 or are there other things to consider?

Edit: It would help if I could read properly. I see you mentioned no luck on the LC III or a Quadra 700. So I wonder what’s missing / different to cause that?

A Rocket used in a IIci can run System 6 - but a IIci already supports System 6 so maybe that’s why, and the 68040 element isn’t restrictive but something in the host machine is when it comes to later models.
 

Phipli

Well-known member
@David Cook et al

A good machine to test on would be the IIvx or IIvi - performance was a little underwhelming in System 7, but they don't boot System 6.

System 6 on one of these would be great!

I suspect that they are the "Brazil" machines in the list?

Note id 40? A tower? The IIvx/vi board actually has the same headers as the Wombat board for the LED used when it is installed in the Q800 case, suggesting the IIvx board was also designed to go in both desktop and tower.
 

Phipli

Well-known member
Stupid question time… can we fool the 475 to use slower ID? Or remove/fool the <50 check?
Doubt it would be enough. If 6.0.8L won't boot a Q700, it is unlikely to boot a newer 040, with an entirely newer Memory Controller. The 475 uses a derivative of the djMemC from the Wombats / WLCD architecture. Its basically a baby Wombat (which explains why they're such great machines - the wombat family are great, and poop cubes, which feels like a metaphor aimed at Jobs).
 

cheesestraws

Well-known member
Stupid question time… can we fool the 475 to use slower ID? Or remove/fool the <50 check?

Newer Macs have hardware that older software doesn't support. Fudging a box check or a gestalt check won't fix this. This keeps coming up every time someone talks about 6.0.8L - the machines it technically supports are the machines it technically supports. This is a different set of machines than the ones it was QAed with, or marketing wanted it to support, but it's not every 68k Mac. Not all "supported hardware" restrictions are artificial.
 

Phipli

Well-known member
Newer Macs have hardware that older software doesn't support
Or even where newer macs are just not known about, the OS doesn't know what hardware combination to bring up.

Some System Enablers seem to just be an instruction telling the OS to treat this new ID like another existing ID... Others are extensive patches with lots of code for new hardware.

I think. But then I'm extrapolating from half gleaned facts and that has been known to go badly for me :ROFLMAO:
 

cheesestraws

Well-known member
Some System Enablers seem to just be an instruction telling the OS to treat this new ID like another existing ID... Others are extensive patches with lots of code for new hardware.

You're right - some system enablers are decidedly non-trivial
 

joshc

Well-known member
Right. I guess I hadn’t appreciated / didn’t know about quite how much changed between the hardware architecture of the last of the II series vs the Quadras. So the only way of adding more support for System 6 would probably be a fairly hefty system enabler… which would be a heck of a lot of work for a mostly pointless exercise. 😅
 

Phipli

Well-known member
System 6 would probably be a fairly hefty system enabler… which would be a heck of a lot of work for a mostly pointless exercise.
Yeah, and they didn't do system Enablers in 6, which was the problem. Most of the various 6.0.* releases were just minor updates to support new hardware. With 7 they introduced enablers so they could just teach an existing release about new hardware.
 
Top