Xref: utzoo comp.sys.mac.hypercard:2554 comp.sys.mac.programmer:9453
Path: utzoo!utgpu!jarvis.csri.toronto.edu!mailrus!wuarchive!gem.mps.ohio-state.edu!apple!dan
From: dan@Apple.COM (Dan Allen)
Newsgroups: comp.sys.mac.hypercard,comp.sys.mac.programmer
Subject: Re: Hypercard stack structure? Corrupted Stack.
Keywords: hypercard, corrupt stack, structure
Message-ID: <35236@apple.Apple.COM>
Date: 3 Oct 89 19:39:50 GMT
References: <144cs-sunb@massey.ac.nz>
Organization: Apple Computer Inc, Cupertino, CA
Lines: 51

In article <144cs-sunb@massey.ac.nz> A.Stenhouse@massey.ac.nz writes:
>Unfortunately, this stack has become corrupted:
>It comes up with an error message of:
>"Can't read card or background ID 44289 at location 5112".
>It is preceded by PAGE within the stack structure.
>Also, can anyone give me the structure of Hypercard stacks - i.e. the

The number one cause of stack corruption, according to the best results
that we can gather, is due to shutdown XCMDs and other ways of turning
the computer off while HyperCard is updating the disk.  HyperCard will
normally write everything to disk while idling so that this occurs
rarely, but shutdown XCMDs often corrupt stacks anyway.

When you get an error message like the one mentioned, you are
temporarily out of luck.  That's the bad news.  The good news is that we
are working on a utility that we hope to release someday that will fix
corrupted stacks.  In the meantime, you can use FEdit or some other disk
editor to see the actual text stored in fields.

The PAGE object in a HyperCard stack is used internally by HyperCard and
does not contain any user data on it.  User data is stored on CARDs and
graphics are stored in BMAPs.  The full structure of HyperCard stacks is
not available to the public at this time.  If you are really interested
in obtaining the file format to HyperCard stacks, contact Apple's Legal
department which will, in special circumstances, license the file format
at its discretion.

Here are ways to prevent getting corrupted stacks:

* Do not use ShutDown XCMDs
* Backup up stacks often, preferably to hard disks, as floppies wear out
  quickly when used with HyperCard stacks, since HyperCard is so disk
  intensive.  (Floppies that are used often--several times a day--only
  last a few months at a time anyway)
* Quit HyperCard normally, i.e., without pulling the plug, turning off
  the Mac while still in HyperCard, etc.
* Do not use just any XCMD, as improperly written XCMDs can trash things
  quite easily.  Make sure the XCMDs you use (or write!) are robust.

* Use the latest version of HyperCard, which is currently 1.2.2 for most
  of the older Macs and 1.2.5 for the Portable and IIci.  If you are
  using 1.2.2 on a Plus, SE, SE/30, II, or IIcx, you do not need
  to upgrade to 1.2.5 unless you have huge stacks (8 MB or larger in
  size and more than 8000 cards).  Remember that 1.2.5 requires System
  6.0.4 as well.

Hope this helps.

Dan Allen
HyperCard Team
Apple Computer