/
fdd000537.xml
361 lines (361 loc) · 35 KB
/
fdd000537.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
<?xml version="1.0" encoding="UTF-8"?>
<fdd:FDD id="fdd000537" titleName="HyperCard Stack File Format" shortName="HyperCard_Stack" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fdd="http://www.loc.gov/preservation/digital/formats/schemas/fdd/v1" xsi:schemaLocation="http://www.loc.gov/preservation/digital/formats/schemas/fdd/v1 http://www.loc.gov/preservation/digital/formats/schemas/fdd/v1/fdd-v1-1.xsd">
<fdd:properties>
<fdd:gdfrGenreSelection>
<fdd:gdfrGenreAndSubgenres>
<fdd:gdfrGenre>database</fdd:gdfrGenre>
<fdd:gdfrSubgenres>
<fdd:gdfrSubgenre>dataset</fdd:gdfrSubgenre>
</fdd:gdfrSubgenres>
</fdd:gdfrGenreAndSubgenres>
</fdd:gdfrGenreSelection>
<fdd:formatCategories>
<fdd:category>file-format</fdd:category>
</fdd:formatCategories>
<fdd:gdfrComposition>unitary</fdd:gdfrComposition>
<fdd:gdfrForm>binary</fdd:gdfrForm>
<fdd:gdfrConstraint>structured</fdd:gdfrConstraint>
<fdd:gdfrBasis>symbolic</fdd:gdfrBasis>
<fdd:updates>
<fdd:date>2021-09-27</fdd:date>
</fdd:updates>
<fdd:draftStatus>Preliminary</fdd:draftStatus>
</fdd:properties>
<fdd:identificationAndDescription>
<fdd:fullName>HyperCard Stack File Format</fdd:fullName>
<fdd:description>
<p>HyperCard Stack file is a legacy file format used with the HyperCard application software. HyperCard was developed by <a href="https://en.wikipedia.org/wiki/Bill_Atkinson">Bill Atkinson</a> for use on Apple Macintosh and Apple IIGS computers and was first released by Apple in 1987. Atkinson created HyperCard as a tool that non-programmers could use to write their own computer applications, and he likened it to an <a href="https://archive.org/details/Hyper_Card_Power/page/n11/mode/2up">erector set for software</a> (available through the Internet Archive). In her 1988 user guide, <a href="https://archive.org/details/Hyper_Card_Power/page/n39/mode/2up">HyperCard Power</a> (available through the Internet Archive), Carol Kaehler explains how the program was used to store information in documents referred to as <i>stacks</i>. Each HyperCard stack consisted of related <i>cards</i>, which could contain text, images, interactive elements, and sound. Kaehler provides a few examples of applications that could be constructed using HyperCard stacks, such as “an appointment calendar with cards for the various days, weeks, or months; a photo collection; an atlas; or even a library card catalog.” Mathew Laser in <a href="https://arstechnica.com/gadgets/2019/05/25-years-of-hypercard-the-missing-link-to-the-web/">Arstechnica</a> described his experience in this way: "I opened the app and read the instructions. HyperCard allowed you to create stacks of cards, which were visual pages on a Macintosh screen. You could insert fields into these cards that showed text, tables, or even images. You could install "buttons" that linked individual cards within the stack to each other and that played various sounds as the user clicked them, mostly notably a "boing" clip ... You could also turn your own pictures into buttons. Not only that, but HyperCard included a scripting language called "Hyper Talk" that a non-programmer like myself could easily learn. It allowed developers to insert commands like "go to" or "play sound" or "dissolve" into the components of a HyperCard array." The structure of HyperCard was based conceptually on physical card-filing systems, like Rolodex, or a flat-file database that used hyperlinks as navigation. This interlinked nature of HyperCard objects is often credited as a principal inspiration of the World Wide Web. <a href="https://eshop.macsales.com/blog/64930-hypercard-one-stack-at-a-time/">Steve Sande</a> describes the popularity of the HyperCard application: "Why was HyperCard so incredible? It made it possible for just about anyone to create their own Mac programs... Apple really wanted everybody to be able to create their own programs, so everything about HyperCard was as non-threatening as possible." See <a href="#notes">Notes</a> for more information about the history of the HyperCard application.</p>
<p>There is no definitive specification for HyperCard stacks from Apple although a variety of reverse engineered and ad hoc documentation exists, some compiled with Bill Atkinson's participation. See <a href="#sustainability">Documentation</a> for more information. Structurally, each HyperCard Stack file is composed of a sequence of blocks. Each block is identified by a four-character type code and a unique 4-byte block ID number in the block header. <a href="https://github.com/PierreLorenzi/HyperCardPreview/blob/master/StackFormat.md">Pierre Lorenzi</a> details the block structure but notes that while “this description covers nearly all the data of a stack[,]... it is not complete enough to update stacks and create new ones.” Each block follows the same basic layout: Block size including size, type and ID; Block type; Block ID number; Block data.</p>
<ul>
<li>Stack Block (STAK): contains the parameters of the stack</li>
<li>Master Block (MAST): contains an index of all the blocks present in the file (excluding Stack Block, Master Block, Free Blocks, and Tail Block).</li>
<li>List Block (LIST): contains the ordered list of the cards in the stack</li>
<li>Page Block (PAGE)</li>
<li>Card Block (CARD)</li>
<li>Background Block (BKGD)</li>
<li>Bitmap Block (BMAP)</li>
<li>Style Block (STBL)</li>
<li>Font Block (FTBL)</li>
<li>Print Setting Block (PRNT)</li>
<li>Page Set-Up Block (PRST)</li>
<li>Report Template Block (PRFT)</li>
<li>Free Block (FREE)</li>
<li>Tail Block (TAIL): marks the end of the file with the words <i>Nu är det slut</i>, a Swedish saying meaning <i>this is the end</i> taken from a 1970's children's television show called <a href="https://en.wikipedia.org/wiki/Fem_myror_%C3%A4r_fler_%C3%A4n_fyra_elefanter">Five Ants Are More Than Four Elephants</a>. In HyperCard 1.x it used to be "That's all folks...", the closing line of Looney Tunes cartoons.</li>
</ul>
<p>There remains some discrepancy over what blocks are required in a HyperCard stack file and what order these blocks must follow although sources agree that the stack must begin with STAK, then MAST and end with TAIL. In the <a href="http://www.kreativekorp.com/swdownload/wildfire/HC FILE FORMAT 2010.TXT">The Definitive Guide to the HyperCard Stack File Format for HyperCard 2.0 to 2.4.1</a>, Rebecca Bettencourt states: “The STAK, MAST, LIST, and PAGE blocks must appear first, in that order. The TAIL block must appear last. All other blocks may appear in any order. The order of the blocks is insignificant.” Pierre Lorenzi’s <a href="https://github.com/PierreLorenzi/HyperCardPreview/blob/master/StackFormat.md">format description</a> also agrees that all stacks must begin with STAK and MAST and end with TAIL but then states that all other blocks (including LIST and PAGE) can appear in any order. <a href="../contact_format.shtml">Comments welcome</a>. Bettencourt also states that the STAK, MAST, LIST, STBL, FTBL, PRNT, PRST, and TAIL blocks are all non-repeatable, whereas the PAGE, BKGD, CARD, BMAP, FREE, and PRFT blocks can be repeated multiple times. </p>
<p>Hypercard stack files have no file extension (such as .tif or .pdf for TIFF or PDF files respectively) because file extensions were not used to associate a file to a Mac application until Mac OS X (released in 2001). Instead the type of a Macintosh file was identified by the 4-character code, such as ICON for an icon or PICT for a picture stored in the standard Macintosh image format. Mac applications, including HyperCard, used a resource file comprising a <a href="https://en.wikipedia.org/wiki/Resource_fork">resource fork</a> and data fork to determine how to open the file and its contents, among other actions. Chad Conrady gives a nice explanation of this in his 2020 blog post <a href="https://blogs.loc.gov/thesignal/2020/11/an-archivists-perspective-on-legacy-files/">An Archivist’s Perspective on Legacy Files</a>. </p>
</fdd:description>
<fdd:shortDescription>HyperCard Stack file is a highly influential legacy file format used with the HyperCard application software for use on early Apple Macintosh and Apple IIGS computers from the late 1980s. </fdd:shortDescription>
<fdd:productionPhase>Thanks to its flexibility and low barrier to learn and implement, HyperCard stack files were used at multiple production stages. According to <a href="https://en.wikipedia.org/wiki/HyperCard">Wikipedia</a>, it was used "for prototyping applications and sometimes even for version 1.0 implementations. Inside Apple, the QuickTime team was one of HyperCard's biggest customers" (initial state), as a demo platform for computer games (middle state) and a final deliverable for early electronic non-internet based publications including the Whole Earth Catalog and A Hard Day's Night by the Beatles, both published on CD-ROM (final state). </fdd:productionPhase>
</fdd:identificationAndDescription>
<fdd:localUse>
<fdd:experience>
<p>HyperCard stack files appear in several legacy Library of Congress collections including the Nina V. Fedoroff Papers in the Manuscript Division (mss85579_042_021). The Fedoroff Papers include HyperCard files that detail corn genetics, dubbed “Hypermaize cards”. For more information, see <a href="https://blogs.loc.gov/thesignal/2020/11/an-archivists-perspective-on-legacy-files/">An Archivist’s Perspective on Legacy Files</a> by Chad Conrady on The Signal blog, November 16, 2020.</p>
<p>The <a href="https://blogs.loc.gov/thesignal/2011/12/its-dead-jim-resurrecting-an-obsolete-file-part-2/">American Memory archive</a> was originally created in HyperCard on CD-ROM between 1990 and 1994 before its migration to the internet.</p>
</fdd:experience>
<fdd:preference>HyperCard stack is an obsolete format and is not included in the Recommended Formats Statement.</fdd:preference>
</fdd:localUse>
<fdd:sustainabilityFactors>
<fdd:disclosure>No official documentation. Proprietary format designed by Bill Atkinson for Apple.</fdd:disclosure>
<fdd:documentation>According to <a href="https://hypercard.org/">hypercard.org</a>, the HyperCard file format specifications were never officially published. In fact, in <a href="https://archive.org/details/macintosh-technical-notes-1987/MacintoshTechnicalNotes1987/page/n249/mode/2up?q=HyperCard+file+formats">Macintosh Technical Notes 1987</a> (available through the Internet Archive), Chris Knepper wrote that “[t]he file format of a HyperCard stack is proprietary and will not be documented.” However, several resources have technical information about HyperCard's structure and format including <a href="https://hypercard.org/">hypercard.org</a>; Rebecca Bettencourt's <a href="http://www.kreativekorp.com/swdownload/wildfire/HC FILE FORMAT 2010.TXT">Definitive Guide to the HyperCard Stack File Format</a>, which gives special thanks to HyperCard creator, Bill Atkinson; and <a href="https://github.com/PierreLorenzi/HyperCardPreview/blob/master/StackFormat.md">HyperCard File Format</a> from Pierre Lorenzi.
</fdd:documentation>
<fdd:adoption>
<p>HyperCard is now a legacy format, but it was extremely popular for creating interactive “hypermedia” databases and applications in the late 1980s and 1990s.</p>
<p>In Danny Goodman’s book, <a href="https://archive.org/details/mac_Danny_Goodmans_HyperCard_Developers_Guide_1988">HyperCard Developer’s Guide</a> published in 1988 and available through the Internet Archive, four categories of HyperCard stacks are described: (1) Information Publishing; (2) Information Management; (3) External Device Control; and (4) Utility Stack (p.3 - 15).</p>
<p>HyperCard was used to create a wide variety of software products, such as scientific databases, educational resources, video games, and interactive magazines. Some examples of published applications built using HyperCard stacks:</p>
<ul>
<li>In 1998, the U.S. Geologic Survey released an interactive educational resource, “Teaching Earth Science,” on CD-ROM. The CD-ROM contained 16 HyperCard stacks that covered geologic processes and mapping.</li>
<li>In 1989, the counterculture magazine, the Whole Earth Catalog, was published as <a href="http://blog.archive.org/2020/07/08/the-whole-earth-on-cd-rom-in-hypercard-in-your-browser/">The Electronic Whole Earth Catalog</a> on CD-ROM. The Catalog consisted of over 9,000 pages on a HyperCard stack.</li>
<li>The original Myst video game (1993) was developed on HyperCard. Although the game was developed as a “stack,” several websites note that the Myst stacks were heavily dependent on external commands: <a href="https://retrocomputing.stackexchange.com/questions/18063/what-hypercard-extensions-did-myst-use">https://retrocomputing.stackexchange.com/questions/18063/what-hypercard-extensions-did-myst-use</a> AND <a href="http://myst.patchallel.com/myst_fs.html">http://myst.patchallel.com/myst_fs.html/</a>
</li>
</ul>
<p>Though discontinued by Apple in 2004, the emulation of HyperCard has attracted a significant following, and a number of open source and commercial HyperCard clones are available for download or purchase.</p>
<p>The Internet Archive includes a large collection of historic <a href="https://archive.org/details/hypercardstacks">HyperCard stacks</a> demonstrating its popularity across a wide range of applications over the years.</p>
</fdd:adoption>
<fdd:licensingAndPatents>According to <a href="http://mirror.informatimago.com/next/developer.apple.com/technotes/pt/pdf/pt_15.pdf">Technical Note PT15: HyperCard and You: Economy Edition (1987, retired)</a>: “The HyperCard file format is available for licensing on a case-by-case basis. Since HyperCard has moved to Claris, developers should contact Claris for more information if you feel that your product is a substantial and important addition to HyperCard and the Macintosh”. <a href="../contact_format.shtml">Comments welcome</a>.</fdd:licensingAndPatents>
<fdd:transparency>A text-based format that is very transparent, being both human-readable with text editing tools such as a Hex editor and easily machine-processable. According to <a href="https://hypercard.org/hypercard_file_format/">hypercard.org</a>, “[a]ll text is encoded in the <a href="https://en.wikipedia.org/wiki/Mac_OS_Roman">MacRoman text encoding</a>, and many flags and data types are from the <a href="https://en.wikipedia.org/wiki/QuickDraw">QuickDraw</a> headers (QuickDraw was also initially written by HyperCard creator Bill Atkinson), or based on them. All data is stored in Big-Endian format." </fdd:transparency>
<fdd:selfDocumentation>
<p>HyperCard stack files follow a block structure with a limited amount of embedded structural metadata such as the number of tables, backgrounds and cards in the stack as well as a stored checksum value of stack block. There are no descriptive metadata options.</p>
<p>File format version information is stored at offset 0x10 from the beginning of the STAK block: 0 - not a HyperCard stack; 1-7 - pre-release HyperCard 1.x; 8 - HyperCard 1.x; 9 - pre-release HyperCard 2.x; 10 - HyperCard 2.x. Further into the Stack block starting offset 0x60, the version of the HyperCard program used to create, last edit or compact the stack is stored. <a href="https://hypercard.org/">Hypercard.org</a> explains the formatting of the version number: “Version Format: xx yy zz rr, xx: major, yy: minor, zz: state (80 final, 60 beta, 40 alpha, 20 development), rr: non-release.” So for example, “01 22 80 00” would represent version 1.2.2 final, and “02 20 60 44” is version 2.2 beta release 44.<a href="../contact_format.shtml">Comments welcome</a>.</p>
</fdd:selfDocumentation>
<fdd:externalDependencies>
<p>HyperCard stack files are intended to be used only on HyperCard in Mac Classic Environment (versus Mac OS X), System 6, System 7, Mac OS 8, Mac OS 9, Apple IIGS: GS/OS 5 and 6. Outside of the original classic Mac environment, HyperCard requires an emulator, such as <a href="https://www.gryphel.com/c/minivmac/">Mini vMa</a>c or <a href="https://sheepshaver.cebix.net/">Sheepshaver</a> to run. </p>
<p>HyperCard stacks can also be uploaded to the site, <a href="http://hypercardonline.com/">HyperCard Online</a>, which publishes the stacks to the Internet Archive’s <a href="https://archive.org/details/hypercardstacks">HyperCard Stacks collection</a>, where they become usable through emulation. HyperCard Online currently accepts raw HyperCard stacks, Stuffit-Expander compatible files, and Macintosh disk images.</p>
</fdd:externalDependencies>
<fdd:techProtection>According to <a href="https://github.com/PierreLorenzi/HyperCardPreview/blob/master/StackFormat.md">Pierre Lorenzi</a>, encryption is possible. "When a stack is Private Access, a part of the Stack Block is encrypted (from offset 0x18 to 0x4A). To decrypt it, you must ask the user for a password." The hash or fixity value of the password is stored at offset 0x44 and is zero if there is no password. "If a stack has a password hash different from zero, the password must (theoretically) be asked to the user. A stack can have a password without being Private Access, that is, without being encrypted. The password given by the user is hashed, and if the result hash not equal to the hash in the stack, the stack can't be opened." </fdd:techProtection>
</fdd:sustainabilityFactors>
<fdd:qualityAndFunctionalityFactors>
<fdd:datasetQF>
<fdd:beyondDataset>HyperCard is similar to database management software (DBMS) because they have similar functionalities. There were differences, however, in terms of the capacities. Danny Goodman describes some characteristics in <a href="https://archive.org/details/The_Complete_HyperCard_Handbook/page/n43/mode/2up">The Complete HyperCard Handbook</a> (1988 and available through the Internet Archive). While HyperCard, like other data management software, allows users to design input forms, insert information on screen, and perform sorting or searching functions, it further allows users to “have total control over the appearance of your forms” (p.10). Forms in HyperCard can be many things, like “a rolodex-type file card, a calendar page, a weekly appointment book” (p.10). HyperCard is also compared with relational databases, because “information stored in one stack of HyperCard forms can be retrieved by forms in other stacks” (p.10). HyperCard is different from other relational databases and in Goodman’s opinion it “takes quite a large additional step”, because it “lets you zip over to other stacks to view the full context of related information” (p.10). Another big distinction between HyperCard and DBMS is that HyperCard does not generate tabular reports and perform basic analysis like most DBMS (p.11)</fdd:beyondDataset>
</fdd:datasetQF>
</fdd:qualityAndFunctionalityFactors>
<fdd:fileTypeSignifiers>
<fdd:signifiersGroup>
<fdd:other>
<fdd:tag>Mac OS file type</fdd:tag>
<fdd:values>
<fdd:sigValues>
<fdd:sigValue>ASCII: STAK</fdd:sigValue>
<fdd:sigValue>Hex: 53 54 41 4B </fdd:sigValue>
</fdd:sigValues>
<fdd:note>At offset 0x04 in the STAK block header. From <a href="https://hypercard.org/hypercard_file_format/">hypercard.org</a>.</fdd:note>
</fdd:values>
</fdd:other>
<fdd:other>
<fdd:tag>Indicator for profile, level, version, etc.</fdd:tag>
<fdd:values>
<fdd:sigValueNA>See note.</fdd:sigValueNA>
<fdd:note>File format version information is stored at offset 0x10 from the beginning of the STAK block: 0 - not a HyperCard stack; 1-7 - pre-release HyperCard 1.x; 8 - HyperCard 1.x; 9 - pre-release HyperCard 2.x; 10 - HyperCard 2.x.<a href="../contact_format.shtml"/>.</fdd:note>
</fdd:values>
</fdd:other>
<fdd:other>
<fdd:tag>Pronom PUID</fdd:tag>
<fdd:values>
<fdd:sigValues>
<fdd:sigValue>fmt/1490</fdd:sigValue>
</fdd:sigValues>
<fdd:note>See <a href="http://www.nationalarchives.gov.uk/PRONOM/fmt/1490">http://www.nationalarchives.gov.uk/PRONOM/fmt/1490</a>
</fdd:note>
</fdd:values>
</fdd:other>
<fdd:other>
<fdd:tag>Wikidata Title ID</fdd:tag>
<fdd:values>
<fdd:sigValues>
<fdd:sigValue>Q27996244</fdd:sigValue>
</fdd:sigValues>
<fdd:note>See <a href="https://www.wikidata.org/wiki/Q27996244">https://www.wikidata.org/wiki/Q27996244</a>
</fdd:note>
</fdd:values>
</fdd:other>
</fdd:signifiersGroup>
</fdd:fileTypeSignifiers>
<fdd:notes>
<fdd:general>
<p>HyperCard application software contained a built-in programming language, <a href="https://collection.sciencemuseumgroup.org.uk/objects/co8399490/apple-hypercard-software-1987-software">HyperTalk</a>, that beginner programmers could use to design their own hypermedia software applications, including interactive books and games. A HyperCard stack file is made interactive by using HyperTalk script. </p>
<p>The creator of HyperCard talked about the language ancestors of HyperTalk with Danny Goodman in the book, <a href="https://openlibrary.org/books/OL2266950M/The_complete_HyperCard_handbook">The Complete HyperCard Handbook</a> (1988) “...I really tried to make it English-like...It also borrows some concepts from SmallTalk - the inheritance concepts. If you send a message to the card and the card doesn’t understand it. It falls through the background of it. If the background doesn’t understand it, it falls through to the stack, and if the stack doesn’t understand it, it falls through to HyperCard….. HyperTalk has some background in Pascal just because that’s what I speak a lot of. HyperCard itself is about 80 percent Pascal and 20 percent Assembly language” (p.xxix). The Object Hierarchy is mentioned in Goodman’s other book, <a href="https://archive.org/details/mac_Danny_Goodmans_HyperCard_Developers_Guide_1988">HyperCard Developer’s Guide</a> (published in 1988 and also available through the Internet Archive). Figure 13-1 on page 210 includes a helpful diagram of the HyperTalk Object Hierarchy with HyperTalk at the top.</p>
<p>In HyperCard, each element functions as an object. The <a href="https://cancel.fm/stuff/share/HyperCard_Script_Language_Guide_1.pdf">HyperCard Script Language Guide</a> defines a HyperCard object as “An element of the HyperCard environment that has a script associated with it and that can send and receive messages. There are five kinds of HyperCard objects: buttons, fields, cards, backgrounds, and stacks.”</p>
<p>The functionality of HyperCard stacks could be extended through the use of External Commands (XCMDs) and External Functions (XFCNs). These commands were used in the creation of special advanced features. The <a href="http://www.apple-iigs.info/doc/fichiers/HypertalkScriptLanguageGuide2.pdf">HyperTalk Scripting Guide</a> explains that "XCMDs or XFCNs can be used for serial port Input and output routines, custom search-and-replace routines, color graphics display routines, file input and output routines, and so on. A typical use for an XCMD would be as an interface for a driver, allowing HyperCard to control an external device such as a videodisc player." In the <a href="https://archive.org/details/mac_Danny_Goodmans_HyperCard_Developers_Guide_1988/page/n457/mode/2up">HyperCard Developer’s Guide</a>, Danny Goodman mentions that “the XCMD or XFCN is not written in HyperTalk. Instead, it is written in Pascal, C, or Assembler and, after being processed through a compiler or assembler, attached to a stack as a resource” (p.456). They can communicate with the HyperCard stack, and are similar to a small program with machine language. They enable HyperCard to perform more efficiently, compared to using HyperTalk for complex commands. Goodman mentions that “an XCMD that starts out as thousands of lines of Pascal or C statements can execute faster than 20 lines of HyperTalk code (depending, of course, on the nature of the XCMD and HyperTalk code)” (p.456). A HyperTalk script calls the XCMD to execute the commands and functions, after which it gives the control back to HyperCard software (Goodman, 1988, p,456).</p>
</fdd:general>
<fdd:history>
<p>The impacts of HyperCard and HyperTalk on modern applications and hypermedia is significant and lasting. <a href="https://eshop.macsales.com/blog/64930-hypercard-one-stack-at-a-time/">Steve Sande</a> notes that "it’s fascinating to consider that the creator of the World Wide Web, Tim Berners-Lee, and the person behind hypertext transfer protocol (HTTP), Robert Cailliau, were both influenced by HyperCard. The creator of JavaScript, Brendan Eich, found the HyperTalk scripting language to be his inspiration. Even the Wiki concept (i.e., Wikipedia) found its roots in a HyperCard stack created by Wiki inventor Ward Cunningham. Are you familiar with AppleScript, the automation scripting language on the Mac? It is also based on HyperTalk." </p>
<p>In the book, <a href="https://hci.stanford.edu/publications/bds/10p-prototype.html">Bringing Design to Software</a>, Terry Winograd reports that, after its release, HyperCard was included free with all Macintosh computer systems, and it quickly became a “widespread standard” for software design. The final release of HyperCard (version 2.4.1) was published in 1998, and Apple discontinued sales of the products in 2004. Interim releases include HyperCard 2.0 in 1990 and 3.0 in 1998. </p>
</fdd:history>
</fdd:notes>
<fdd:formatSpecifications>
<fdd:urls>
<fdd:url>
<fdd:urlGroup>
<fdd:intro>There is no official HyperCard specification or documentation from Apple. These resources listed below provide technical information about the HyperCard Stack format to varying degrees of completeness and were created through reverse-engineering and examining existing stack files.</fdd:intro>
<fdd:urlList>
<fdd:urlReference>
<link>https://github.com/PierreLorenzi/HyperCardPreview/blob/master/StackFormat.md</link>
<tag>HyperCard File Format format description by Pierre Lorenzi.
</tag>
<comment>As of this writing in 2021, the resource was last updated in 2019 and provides the most complete and thorough HyperCard format information.</comment>
</fdd:urlReference>
<fdd:urlReference>
<link>https://hypercard.org/hypercard_file_format/</link>
<tag>HyperCard file format by hypercard.org</tag>
<comment>Part of a larger resource set about HyperCard. Some gaps in technical information.</comment>
</fdd:urlReference>
<fdd:urlReference>
<link>http://www.kreativekorp.com/swdownload/wildfire/HC%20FILE%20FORMAT%202010.TXT</link>
<tag>The Definitive Guide to the HyperCard Stack File Format for HyperCard 2.0 to 2.4.1 by Rebecca Bettencourt (with thanks to Tyler Vano, Michael Nichols, and Bill Atkinson)</tag>
<comment>Last updated 2011. </comment>
</fdd:urlReference>
</fdd:urlList>
</fdd:urlGroup>
</fdd:url>
</fdd:urls>
</fdd:formatSpecifications>
<fdd:usefulReferences>
<fdd:urls>
<fdd:url>
<fdd:urlReference>
<link>https://hypercard.org/</link>
<tag>hypercard.org</tag>
<comment>Overall resource for HyperCard including articles, open source and clone options</comment>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/mac_Danny_Goodmans_HyperCard_Developers_Guide_1988</link>
<tag>Danny Goodman's HyperCard Developers Guide 1988, available through Internet Archive</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/The_Complete_HyperCard_Handbook/</link>
<tag>Danny Goodman’s The Complete HyperCard Handbook (1988) for HyperCard 1.2, available through Internet Archive</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://web.archive.org/web/19970211093533/http://www.dannyg.com/hypercardTOC.html</link>
<tag>Danny Goodman's The Complete HyperCard 2.2 Handbook, available through Internet Archive</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/Hyper_Card_Power/</link>
<tag>HyperCard Power: Techniques and Scripts by Carol Kaehler (1988), available through Internet Archive</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/hypercardstacks</link>
<tag>Internet Archive's collection of HyperCard Stacks</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://blogs.loc.gov/thesignal/2020/11/an-archivists-perspective-on-legacy-files/</link>
<tag>An Archivist’s Perspective on Legacy Files blog post on The Signal. Guest post by Chad Conrady. November 16, 2020</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://arstechnica.com/gadgets/2019/05/25-years-of-hypercard-the-missing-link-to-the-web/</link>
<tag>30-plus years of HyperCard, the missing link to the Web by Matthew Laser in Arstechnica, May 25, 2019</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://en.wikipedia.org/wiki/HyperCard</link>
<tag>Wikipedia entry on HyperCard</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://en.wikipedia.org/wiki/Bill_Atkinson</link>
<tag>Wikipedia entry on HyperCard creator Bill Atkinson</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://en.wikipedia.org/wiki/Mac_OS_Roman</link>
<tag>Wikipedia entry on MacRoman text encoding</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://en.wikipedia.org/wiki/QuickDraw</link>
<tag>Wikipedia entry on QuickDraw</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/Hyper_Card_Power/2up</link>
<tag>HyperCard Power: Techniques and Scripts by Carol Kaehler, available through Internet Archive</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://eshop.macsales.com/blog/64930-hypercard-one-stack-at-a-time/</link>
<tag>Retro Apple: How Hypercard Changed the World One Stack At A Time. By Steve Sande on Rocket Yard blog, Aug 26, 2020</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://collections.museumsvictoria.com.au/articles/1487</link>
<tag>Hypercard Overview from Museums Victoria </tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://collection.sciencemuseumgroup.org.uk/objects/co8399490/apple-hypercard-software-1987-software</link>
<tag>“Apple 'Hypercard' software, 1987” object page from Science Museum Group </tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/macintosh-technical-notes-1987/MacintoshTechnicalNotes1987/page/n249/mode/2up?q=HyperCard+file+formats </link>
<tag>Macintosh Technical Notes 1987, available through Internet Archive</tag>
<comment>This technical note also includes sections about MacDraw</comment>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://due-diligence.typepad.com/blog/2004/03/a_eulogy_for_hy.html</link>
<tag>A “Eulogy on HyperCard,” from Tim Oren, who worked on HyperCard at Apple in the 1980s </tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://blog.archive.org/2017/08/11/hypercard-on-the-archive-celebrating-30-years-of-hypercard/</link>
<tag>“HyperCard On The Archive (Celebrating 30 Years of HyperCard)” from the Internet Archive blog</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://www.wired.com/2002/08/hypercard-forgotten-but-not-gone/</link>
<tag>From Wired.com: HyperCard Forgotten, but Not Gone by Leander Kahney Aug 14, 2002</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://www.bbc.com/future/article/20190722-the-apple-software-that-inspired-the-internet</link>
<tag>The forgotten software that inspired our modern world, BBC, By Samuel Arbesman
July 23, 2019</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/1988-01-compute-magazine/</link>
<tag>Computers and Society: The Power of HyperCard, Part 1” by David D. Thornburg, available through Internet Archive. Compute! Magazine Issue 092 (January 1988)</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/1988-02-compute-magazine/</link>
<tag>Computers and Society: The Power of HyperCard, Part 2” by David D. Thornburg, available through Internet Archive. Compute! Magazine Issue 093 (February 1988)</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://archive.org/details/1988-02-compute-magazine/</link>
<tag>“The World Inside the Computer: Skiing Down the HyperCard Iceberg” by Fred D'Ignazio , available through Internet Archive. Compute! Magazine Issue 093 (February 1988)</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://www.atarimagazines.com/startv4n8/hypercard.html</link>
<tag>“Mac and PC On The ST: HYPERCARD,” By David Plotkin, Start Contributing Editor. STart Magazine Issue 31 (March 1990)</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://www.atarimagazines.com/startv4n9/hypercard.html</link>
<tag>“More on Apple's HYPERCARD,” By David Plotkin, Start Contributing Editor. STart Magazine Issue 32 (April 1990)</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>http://myst.patchallel.com/myst_fs.html</link>
<tag>Discussion of HyperCard from http://patchallel.com/</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://retrocomputing.stackexchange.com/questions/18063/what-hypercard-extensions-did-myst-use</link>
<tag>What HyperCard extensions did Myst use? in StackExchange Retrocomputing Beta</tag>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>http://www.nationalarchives.gov.uk/pronom/fmt/1490</link>
<tag>PRONOM entry for fmt/1490</tag>
<comment>Information in PRONOM from UK National Archives about HyperCard Stack files. PUID: fmt/1490.</comment>
</fdd:urlReference>
</fdd:url>
<fdd:url>
<fdd:urlReference>
<link>https://www.wikidata.org/wiki/Q27996244</link>
<tag>Wikidata entry for Q27996244</tag>
<comment>Information in Wikidata about Hypercard Stack files. Wikidata Title ID: Q27996244.</comment>
</fdd:urlReference>
</fdd:url>
</fdd:urls>
</fdd:usefulReferences>
</fdd:FDD>