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"?
 


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:

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. :)