Preserving data on RAM Disks via Macsbug
By Marek Hajek, Incline Village, Nevada
About the author
Marek Hajek has been programming the Macintosh since 1989. He programmed two and a half years for Sierra Software Innovations where he wrote several inhouse MacApp applications, participated in the development of SuperTEView, and the relational database engine - Inside Out II. Currently he is working on his bachelors degree in Computer Science and supports his education with contract programming. Your comments on this article are appreciated and can be sent to P.O. Box 7542, Incline Village, NV 89450.
This article is based on my experience with the product Maxima made by Connectix Corporation. I use Maxima to set up a RAM Disk on my Mac IIsi. If you are using a different RAM Disk software, consult its documentation to find out whether the RAM Disk is nonvolatile. This following information applies only to nonvolatile RAM Disks. Whats a nonvolatile RAM Disk?
Nonvolatile RAM Disks, Maxima included, have a peculiar characteristic about them. As long as power to the computer is not interrupted, the data on the RAM Disk is preserved. Restarts, shutdowns, and system crashes do not interrupt power to the RAM Disk and as a result the RAM Disk contents are preserved. On the other hand, if power is interrupted to the RAM Disk, its contents may become corrupted or wiped off. A power interrupt occurs when you reach in the back of your computer and press the power switch or someone trips over the power cord to your computer and pulls it out of the socket.
When a severe crash occurs because of a software bug, the goal is to restart your computer without having to use the power switch. This will preserve the integrity of your data. What is a safe way to restart your computer in the midst of a crash? The reset switch, that little two button box attached to the side of your computer, does a good job restarting a computer and does not interrupt power to the RAM Disk. Your RAM Disk data will be preserved every time you use the reset switch. Since the reset switch restarts a computer 99% of the time (Ive seen bugs that disabled the reset switch), this article is mainly for those of you who either didnt or cant install one on your Mac. So, what are other safe ways to restart your computer when a crash takes place?
MACSBUGS RS/RB - UNSAFE RESTARTING
Your Mac can be restarted with the Macsbug debugger (I assume you have Macsbug on your Mac). In the course of programming youve probably encountered the Macsbug display more than once. It usually shows up when a nasty bug occurs in your program. The usual way to restart your computer from Macsbug is to type in rs or rb followed by a return. Alas, sometimes the bug has done so much damage the Macsbug command rs or rb wont work. This is the time when your probably reach in the back of the computer for the power switch. This definitely is not a safe way to restart the computer.
MACSBUG - RESTARTING the SAFE WAY
There is a safer way to restart your Mac from Macsbug. The step is simple. Set the PC (program counter) to point to the restart mechanism in ROM. The program counter keeps track the memory address of the next instruction that will be executed. How do you set the program counter? On my Mac IIsi the line I enter into Macsbug looks like this:
The g means go to instruction and 4080008C is the address of the instruction that will be executed next. The 4080008C is the IIsis ROM address where the code for the restart mechanism is located. Since it is in ROM, the code cannot be affected by software bugs and is safe to execute. Because your computer may have the restart mechanism at a different location in ROM than my IIsi, you need to find its address. This can be done by following the next 4 steps:
1) Save every open document and quit all running applications. After step number 4 you will have to restart your computer.
2) Enter Macsbug. I enter Macsbug using the key combination Cmd-Option-Power On Key. The Power On key has a little triangle pointing to the left and is usually located toward the top of the keyboard. If your keyboard doesnt have the Power On Key, find another way to drop into Macsbug. There may be a different way to drop into Macsbug on your computer.
3) In Macsbug type in the next two lines, each line followed by a return. Dont forget the ^ character (shift-6) after the closing parentheses on the first line!
PC = (Rombase)^ + 0A
4) Toward the bottom of the Macsbug window you should see something similar to the next two lines:
"No procedure name"
4080008C *MOVE #$2700,SR
The first number (4080008C on my Mac) under the line No procedure name is the address of the restart mechanism. Write it down somewhere safe. From now on, anytime a bug drops you into Macsbug and you want to safely restart your computer to save your RAM Disk data, enter the line g 4080008C into Macsbug, where 4080008C is the number you wrote down. To test whether this is the address of the restart mechanism, type g followed by a return into Macsbug. This should restart your computer. Next to the reset switch, using the Macsbug procedure outlined above is probably the safest way to restart your computer and safeguard the data on your RAM Disk.