Debugging 1
Volume Number: 10
Issue Number: 1
Column Tag: Debugging
Ram Disks
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 bachelor’s
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. What’s 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 (I’ve seen bugs that disabled the reset
switch), this article is mainly for those of you who either didn’t or can’t install one on
your Mac. So, what are other “safe” ways to restart your computer when a crash takes
place?
MACSBUG’S 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 you’ve 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 won’t 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:
g 4080008C
The g means ‘go to instruction’ and 4080008C is the address of the instruction
that will be executed next. The 4080008C is the IIsi’s 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 doesn’t 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. Don’t forget
the ^ character (shift-6) after the closing parentheses on the first line!
PC = (Rombase)^ + 0A
S
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.