ROAM FAQ
ROAM Frequently Asked Questions
The current version of ROAM at the time of writting this document is v1.6.1.
The ROAM homepage is at http://www.stg.com/employees/sbytnar/projects/rom_accelerator.html
This document can be found at http://www.stg.com/employees/sbytnar/projects/roam_faq.html
ROAM can be downloaded from
http://www.stg.com/employees/sbytnar/projects/rom_accelerator.html#DOWNLOAD
ROAM is can be described as a ROM accelerator, not a RAM accelerator.
ROAM is compatible with System 7.x, MacOS 8.x, and newer.
Table of Contents:
Table of Contents
What is ROAM?
What is the ROAM Extension for?
What does it mean if a plus sign shows
up on the ROAM Extension's icon at bootup?
What does it mean if a blue "S" appears
in the ROAM Extension's icon at bootup?
What is "sleep mode"?
What does it mean if the ROAM Extension's
icon has a big red X through it at bootup?
When will the ROAM Extension get
out of "sleep mode"?
Why does the ROAM Extension never
leave sleep mode under MacOS 8.1?
What is a "preferred memory allocator"?
How long does it take for ROAM to load
on bootup?
How can I tell if ROAM caused my Mac to
freeze?
What is the ROAM Control control panel for?
ROAM never saves the settings in
the Control Panel!
ROAM never lets me change any of
the settings in the Control Panel!
ROAM Control freezes when I click
"Activate"!
What is the ROAM Startup applet for?
Supported Platforms
Problems
Contacting me: (sbytnar at kagi.com)
Crashes
No performance gain
Negative performance gain
The ROAM extension crashes on startup,
how do I disable it?
DriverServicesLib could not be found?
I get an "Unimplemented trap" error on
boot! Or: My machine just freezes with a white dialog on the screen that's
unreadable!
Why do I get wierd memory excluded, or
memory read-only exceptions?
Why does the System Memory have a big
gray area after deallocating the buffer?
Why isn't ROAM faster?
LMGetROMBase() != where the ROM
memory is actually accessed from!
Conflicts
Do not use this program under
these conditions
Some conditions I have not fully
verified as causing problems
PowerPC Upgrade cards
Tests
RAM Doubler
NuBus PowerMacs
Virtual Memory Thrashing conditions
Advanced ROM hacking tutorial
The Future
FAQ Revision History
What is ROAM?
ROAM is short for ROM in RAM.
This program will copy your ROM into RAM. Your Macintosh will be running
faster after you run this program. Performance varies. Do not expect major
increases in speed. This program speeds up any function that previously
executed from the ROM memory area.
A few older NuBus based PowerMacintoshes will see negative speed increases,
or no increases at all.
Older NuBus 680x0 Macintoshes upgraded to PowerPC might might see negative
speed increases. This is because the ROM is stored on your PowerPC accelerator
card.
ROAM dramatically increases the data throughput of ROM on many Macs.
Data throughput to the ROM area increases by 42% in 68K code memory accesses
and 49% in PowerPC native memory accesses on my own G3/266. This is not
a very useful statistic, but proves that the ROM is actually being accessed
from the RAM-based ROM Image. Instruction throughput has yet to be determined.
But since data throughput is being increased, instruction throughput to
any functions accessed from ROM should be increased as well. ROAM will
not increase the raw speed of your CPU or FPU. These percentages are NOT
representative of "real world" speed increases.
ROAM will speed up any program that calls functions that are in the
ROM. Basically, the whole toolbox and the 68K emulator code may even see
a speed increase since I remap that area also.
ROAM will not give your Macintosh "NewWorld" ROM-in-RAM characteristics.
Definitions:
RAT - ROM Allocation Table. This is what the machine uses to describe
where the ROM is at.
ROM Image - the term I use to refer to the ROM-in-RAM buffer that ROAM
allocates.
ROM DIMM - the term I use to refer to the ROM memory itself.
Relocation - the term I once used to refer to an aggressive algorithm
that patches parts of the OS to attempt to make the machine perform even
better with the RAT pointing at the ROM Image. Relocation will not ever
become a ROAM feature as long as the hardware internals are kept private.
What is the ROAM Extension for?
Power users like to have the knowledge that they are squeezing the
most power out of their software as possible. The ROAM Extension executes
the ROAM patching code at Script ("scri") loading time. This is very early
in the bootup process. The functionality inside the extension is equivalent
to pressing "Activate" in the ROAM Control application.
What does it mean if a red
+ sign shows up on the ROAM Extension's icon at bootup?
If the ROAM Extension shows a "+" in the upper corner of the icon,
this means that ROAM successfully activated when it loaded at bootup.
What does it mean if a blue
S appears in the ROAM Extension's icon at bootup?
What is "sleep mode"?
If the ROAM Extension shows a blue "S" in the upper corner of the
icon, this means that ROAM failed to load at extension loading time. It
has put itself into sleep mode. Sleep mode can be disabled by changing
the "ROAM Extension is asleep" checkbox state to being unchecked.
What does it mean if the ROAM Extension's
icon has a big red X through it at bootup?
A red X across the icon means one of three things. Here are the names
of my error codes and their explanations.
1) roamCouldntAllocateGestalt - That's pretty bad if ROAM cant even
allocate 4KB of memory.
2) roamCouldntAllocateBuffer - ROAM couldn't allocate the ROM Image
buffer.
3) roamDisabled - You held the option key down at bootup, which causes
ROAM to not load.
When will the ROAM Extension
get out of "sleep mode"?
ROAM will "wakeup" and try all of the memory allocators at bootup time
once again if:
-
You uncheck the "ROAM Extension is asleep" checkbox in the ROAM Control
control panel.
-
ROAM Extension detects that you are booting a new version of MacOS.
Why does the ROAM Extension
never leave sleep mode under MacOS 8.1?
Say you had MacOS 8.1 installed, and ROAM went into sleep mode. (The
ROAM Extension almost never is able to allocate a memory block under 8.1.
Use the ROAM Control application & ROAM Startup script combination
instead.)
Later, you decide to upgrade to MacOS 8.5. When ROAM loads under MacOS
8.5, it will decide once again whether it should go back into "sleep mode",
or if it is safe to attempt to execute the memory allocators every boot
up.
What is a "preferred memory
allocator"?
ROAM has 5 memory allocators as of ROAM v1.6. It has a default order
to execute the allocators in. If any of the allocators SUCCEED, that allocator
is saved to the preferences file as being "preferred". Next time ROAM loads,
the preferred allocator is attempted before the others. This features saves
people time during the boot process since it is likely an allocator that
failed at extension loading time once before will fail again the next time
the system is rebooted.
How long does it take for ROAM
to load on bootup?
How can I tell if ROAM caused my Mac to freeze?
ROAM shows two icons. One without a symbol in the upper right corner
immediately after it starts executing. Another icon is shown after ROAM
loads that either has a "+" or "S" in the upper right corner. Your Mac
froze if you don't see a "+" or "S" after a moderate time period. ROAM
does some extensive memory re-mapping, so be patient as it might have to
cause the system to reorder memory pages in order to get a buffer with
the charactoristics ROAM needs to place a ROM Image in RAM.
What is the ROAM Control control panel
for?
ROAM Control has three major reasons for existing: 1) to view and
change ROAM's preferences 2) to allow the user to Activate the ROAM patches
at application-launching time, 3) provides a place to give benchmark results.
Read about ROAM Startup for more information.
ROAM never saves the settings
in the Control Panel!
ROAM never lets me change any of the settings in the Control Panel!
If ROAM cannot save its preferences to disk, you cannot change the
preferences from the default values.
ROAM Control freezes when I click
"Activate".
No one has reported this problem for many months now.
What is the ROAM Startup applet for?
This applet is written in AppleScript. It basically launches ROAM
when the Finder loads. Why? Example: under MacOS 8.1, the ROAM Extension
usually fails to allocate the memory needed to activate ROAM. However,
the ROAM Control Panel is able to Activate ROAM! By using AppleEvents,
the ROAM Startup applet bascially acts as if you clicked on "Activate"
in the ROAM Control control panel.
What parts of ROAM have
to be installed to get the ROM in RAM functionality?
Do I need to have the ROAM Extension and ROAM Control control panel
installed at the same time for ROAM to work?
No, you don't need to have both the control panel and extension installed
at the same time. They both do the same thing. Think of it like this:
-
ROAM Control - contains the ROM-in-RAM patching code and lets you change
the preferences.
-
ROAM Extension - contains the ROM-in-RAM patching code.
-
ROAM Startup - automates activating ROAM at application-launching time
by using AppleEvents.
Supported Platforms:
Any NuBus or PCI-Power Macintosh made before the NewWorld motherboard
architecture (ie. iMac, new fruit-colored PowerMacintosh G3's and later).
ROAM is compatible with RAM Doubler.
ROAM will load and possibly work on a NewWorld Macintosh. This is a
unsupported and untested feature. If you want to hack the NewWorld ROM,
then you can always use the Unwriteprotect/Load/Save features of ROAM to
modify the ROM. ROAM Control will complain that you should not be using
it on a NewWorld Macintosh when it detects it is running on a NewWorld
Macintosh.
ROAM is not compatible with the MacOS 10 Blue Box. The MacOS 10 Blue
Box does not need the speed up that ROAM provides.
Problems?
Contacting me: (sbytnar at kagi.com)
Please include machine configuration as described below. Include a
descriptive email subject prefixed with "ROAM" to help me sort it better.
Problems that occur immediately after installing
ROAM
If you are adept with ResEdit, set the STR 10000 string to not be "0" in
ROAM Control or the ROAM Extension. ROAM will then generate debug information
in a file called "ROAM Debug Log" stored in your boot disks' System Folder.
Mail me the most recent contents of the "ROAM Debug Log" file, not the
whole thing since it can get large.
Mail me your machine configuration. Machine Type, (ie. PowerBook G3) any
hardware upgrades (ie. accelerator cards, cache speed enhancements, tweaks),
processor cache settings (1:1, 1:2, disabled), cache sizes (256K, 512K,
1MB), any PCI cards, RAM installed (ie. 192), VM on/off & how much
extra swap space you have (1MB), how much RAM is free when you try running
ROAM.
If you have Macsbug installed and ROAM caused the crash into Macsbug, mail
me the output of the "stdlog" command.
No performance gain
Your ROM memory may not be much slower than your RAM memory, in which
you may not see any appreciable speed increase. Your cache configuration
may also effect performance gains also.
Negative performance gain
Some machines, such as the 7200, are very strange in that some show
decreases in data throughput to the ROM! Again, your milage may vary.
The ROAM extension crashes on startup,
how do I disable it?
Before ROAM v1.2, you had to shift-boot and drag it out of
your extensions folder.
ROAM v1.2b1 and newer allow you to hold down the option-key to disable
ROAM when it loads.
DriverServicesLib could not be found?
You are using an older version of ROAM. This error message
only appears on non-PCI PowerMacs.
I get an "Unimplemented trap" error on
boot! Or: My machine just freezes with a white dialog on the screen that's
unreadable!
Install Macsbug. That might give you more information. ROAM
v1.5 generates a "ROAM Debug Log" that contains very useful information
about what ROAM was doing.
Why do I get wierd memory excluded, or
memory read-only exceptions?
Before ROAM v1.2 final, ROAM leaves the ROM Image un-write
protected. If you are using very poorly written programs that write into
random parts of memory, the ROM Image might become corrupted. When these
poorly written programs write to the ROM Image, your Mac may freeze or
give memory read-only exceptions.
Why does the System Memory have a big
gray area after deallocating the buffer?
Unpatching the system and deallocating the ROM Image memory
causes the System heap zone to become slightly fragmented. The Multiprocessing
Library allocator does not have this problem.
Why isn't ROAM faster?
ROAM is effective for all functions that are called from userland
and the nanokernel priviledged instruction emulator. However, the MacOS
"nanokernel" itself is protecting the chip so much that at the lowest levels,
your processor still thinks that ROM is mapped in ROM address space. You
don't need to worry about this. I'm looking to work around this in the
future.
LMGetROMBase() != where the ROM
memory is actually accessed from!
You must be an Apple engineer or driver developer to know this.
Well, you are out-of-luck currently. This bug can be fixed, but doesn't
cause any problems. The MPC106 (Grackle) chip maps the ROM area such that
PCI devices DO NOT see the changes that ROAM makes. I am looking into a
fix for this---the earlier at startup that I can load my patched ROM, the
more likely I can fix this.
Conflicts:
Do not use this program under
these conditions:
Tests:
RAM Doubler 8, RAM Doubler 9:
Compatibile.
NuBus PowerMac's
Full support for NuBus PowerMacs is in v1.6. G3 upgraded NuBus PowerMacs
can also use ROAM!
Virtual Memory Thrashing conditions
Successful. ROAM will not cause crashes in high-thrashing situations.
Testimonials:
Wallstreet PB G3's and some PowerBook G3 Series are greatly
accelerated.
7200's are decelerated? (Is the ROM DIMM faster than the RAM in these
machines?) Try it for yourself.
My 8500's GUI performs some tasks faster.
Advanced ROM Hacking tutorial
ROAM Advanced Functions WARNING:
Don't do this:
Click Activate to activate ROAM.
Unprotect the ROM Image.
In Macsbug, do "sw (ROMBase^)+8 ((ROMBase^)+8)^.w+1".
This change increments the
major version of your ROM by 1.
Save the ROM Image to disk.
Tell ROAM to Load that ROM file.
Reboot.
After the Sound Manager loads, you'll get a System
Error! The Sound Manager is using the ROM version to detect the sound chip
that is installed in your Mac. Changing this number makes the sound manager
think your sound chip is accessed in a different way than it actually is!
Yes, you can hack your ROM in other ways, but changing the versioning
is not recommended! :-)
If you have some hacks you've found to be generally useful, feel free
to mail them to me and I might post them here. No, you should NOT email
me your ROM Image files. Yes, you should give me as much information about
your hardware & ROM as possible.
The Future:
It is not possible to load and execute the NewWorld ROM on older PowerMacintoshes.
The NewWorld ROM does not contain all the necessary code to support older
Macintosh hardware.
FAQ Revision History:
1.6.1 2000-10-01: ROAM is not compatible with MacOS 10. Reworded places
describing the Install/Uninstall buttons to be Activate/Deactivate.
1.6 2000-02-14: v1.6 release.
1.6b9 2000-01-15: Cleaned up for planned v1.6 release.
1.6b6 1999-12-01: Updated for v1.6b6.
1.5a 1999-08-06: Added some info at the top of the document to correct
some misinformation being spread about ROAM in public forums.
1.5 1999-07-21: Updated for v1.5.
1.2.1 1999-03-04: Norton Disk Light might be incompatible.
1.2 1999-03-02: Updated for v1.2a1.
1.1 1999-02-25: Problem: Norton CrashGuard will start randomly killing
all of your applications. I would suggest not using it if you want to use
ROAM. Possible solution: Make an extension version that loads before Norton
CrashGuard. Comments: PowerBase and PowerWave computers are probably not
at fault for this. ROAM will not run on MacOS earlier than System 7.5.
(Conflicts section reworked)
1.0 1999-02-24: I would like to thank my brother
Mike
for taking the time to create this document. :)