macintosh 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. #------------------------------------------------------------------------------
  2. # macintosh description
  3. #
  4. # BinHex is the Macintosh ASCII-encoded file format (see also "apple")
  5. # Daniel Quinlan, quinlan@yggdrasil.com
  6. 11 string must\ be\ converted\ with\ BinHex BinHex binary text
  7. >41 string x \b, version %.3s
  8. # Stuffit archives are the de facto standard of compression for Macintosh
  9. # files obtained from most archives. (franklsm@tuns.ca)
  10. 0 string SIT! StuffIt Archive (data)
  11. >2 string x : %s
  12. 0 string SITD StuffIt Deluxe (data)
  13. >2 string x : %s
  14. 0 string Seg StuffIt Deluxe Segment (data)
  15. >2 string x : %s
  16. # Macintosh Applications and Installation binaries (franklsm@tuns.ca)
  17. 0 string APPL Macintosh Application (data)
  18. >2 string x \b: %s
  19. # Macintosh System files (franklsm@tuns.ca)
  20. 0 string zsys Macintosh System File (data)
  21. 0 string FNDR Macintosh Finder (data)
  22. 0 string libr Macintosh Library (data)
  23. >2 string x : %s
  24. 0 string shlb Macintosh Shared Library (data)
  25. >2 string x : %s
  26. 0 string cdev Macintosh Control Panel (data)
  27. >2 string x : %s
  28. 0 string INIT Macintosh Extension (data)
  29. >2 string x : %s
  30. 0 string FFIL Macintosh Truetype Font (data)
  31. >2 string x : %s
  32. 0 string LWFN Macintosh Postscript Font (data)
  33. >2 string x : %s
  34. # Additional Macintosh Files (franklsm@tuns.ca)
  35. 0 string PACT Macintosh Compact Pro Archive (data)
  36. >2 string x : %s
  37. 0 string ttro Macintosh TeachText File (data)
  38. >2 string x : %s
  39. 0 string TEXT Macintosh TeachText File (data)
  40. >2 string x : %s
  41. 0 string PDF Macintosh PDF File (data)
  42. >2 string x : %s
  43. # MacBinary format (Eric Fischer, enf@pobox.com)
  44. #
  45. # Unfortunately MacBinary doesn't really have a magic number prior
  46. # to the MacBinary III format. The checksum is really the way to
  47. # do it, but the magic file format isn't up to the challenge.
  48. #
  49. # 0 byte 0
  50. # 1 byte # filename length
  51. # 2 string # filename
  52. # 65 string # file type
  53. # 69 string # file creator
  54. # 73 byte # Finder flags
  55. # 74 byte 0
  56. # 75 beshort # vertical posn in window
  57. # 77 beshort # horiz posn in window
  58. # 79 beshort # window or folder ID
  59. # 81 byte # protected?
  60. # 82 byte 0
  61. # 83 belong # length of data segment
  62. # 87 belong # length of resource segment
  63. # 91 belong # file creation date
  64. # 95 belong # file modification date
  65. # 99 beshort # length of comment after resource
  66. # 101 byte # new Finder flags
  67. # 102 string mBIN # (only in MacBinary III)
  68. # 106 byte # char. code of file name
  69. # 107 byte # still more Finder flags
  70. # 116 belong # total file length
  71. # 120 beshort # length of add'l header
  72. # 122 byte 129 # for MacBinary II
  73. # 122 byte 130 # for MacBinary III
  74. # 123 byte 129 # minimum version that can read fmt
  75. # 124 beshort # checksum
  76. #
  77. # This attempts to use the version numbers as a magic number, requiring
  78. # that the first one be 0x80, 0x81, 0x82, or 0x83, and that the second
  79. # be 0x81. This works for the files I have, but maybe not for everyone's.
  80. 122 beshort&0xFCFF 0x8081 Macintosh MacBinary data
  81. # MacBinary I doesn't have the version number field at all, but MacBinary II
  82. # has been in use since 1987 so I hope there aren't many really old files
  83. # floating around that this will miss. The original spec calls for using
  84. # the nulls in 0, 74, and 82 as the magic number.
  85. #
  86. # Another possibility, that would also work for MacBinary I, is to use
  87. # the assumption that 65-72 will all be ASCII (0x20-0x7F), that 73 will
  88. # have bits 1 (changed), 2 (busy), 3 (bozo), and 6 (invisible) unset,
  89. # and that 74 will be 0. So something like
  90. #
  91. # 71 belong&0x80804EFF 0x00000000 Macintosh MacBinary data
  92. #
  93. # >73 byte&0x01 0x01 \b, inited
  94. # >73 byte&0x02 0x02 \b, changed
  95. # >73 byte&0x04 0x04 \b, busy
  96. # >73 byte&0x08 0x08 \b, bozo
  97. # >73 byte&0x10 0x10 \b, system
  98. # >73 byte&0x10 0x20 \b, bundle
  99. # >73 byte&0x10 0x40 \b, invisible
  100. # >73 byte&0x10 0x80 \b, locked
  101. >65 string x \b, type "%4.4s"
  102. >65 string 8BIM (PhotoShop)
  103. >65 string ALB3 (PageMaker 3)
  104. >65 string ALB4 (PageMaker 4)
  105. >65 string ALT3 (PageMaker 3)
  106. >65 string APPL (application)
  107. >65 string AWWP (AppleWorks word processor)
  108. >65 string CIRC (simulated circuit)
  109. >65 string DRWG (MacDraw)
  110. >65 string EPSF (Encapsulated PostScript)
  111. >65 string FFIL (font suitcase)
  112. >65 string FKEY (function key)
  113. >65 string FNDR (Macintosh Finder)
  114. >65 string GIFf (GIF image)
  115. >65 string Gzip (GNU gzip)
  116. >65 string INIT (system extension)
  117. >65 string LIB\ (library)
  118. >65 string LWFN (PostScript font)
  119. >65 string MSBC (Microsoft BASIC)
  120. >65 string PACT (Compact Pro archive)
  121. >65 string PDF\ (Portable Document Format)
  122. >65 string PICT (picture)
  123. >65 string PNTG (MacPaint picture)
  124. >65 string PREF (preferences)
  125. >65 string PROJ (Think C project)
  126. >65 string QPRJ (Think Pascal project)
  127. >65 string SCFL (Defender scores)
  128. >65 string SCRN (startup screen)
  129. >65 string SITD (StuffIt Deluxe)
  130. >65 string SPn3 (SuperPaint)
  131. >65 string STAK (HyperCard stack)
  132. >65 string Seg\ (StuffIt segment)
  133. >65 string TARF (Unix tar archive)
  134. >65 string TEXT (ASCII)
  135. >65 string TIFF (TIFF image)
  136. >65 string TOVF (Eudora table of contents)
  137. >65 string WDBN (Microsoft Word word processor)
  138. >65 string WORD (MacWrite word processor)
  139. >65 string XLS\ (Microsoft Excel)
  140. >65 string ZIVM (compress (.Z))
  141. >65 string ZSYS (Pre-System 7 system file)
  142. >65 string acf3 (Aldus FreeHand)
  143. >65 string cdev (control panel)
  144. >65 string dfil (Desk Acessory suitcase)
  145. >65 string libr (library)
  146. >65 string nX^d (WriteNow word processor)
  147. >65 string nX^w (WriteNow dictionary)
  148. >65 string rsrc (resource)
  149. >65 string scbk (Scrapbook)
  150. >65 string shlb (shared library)
  151. >65 string ttro (SimpleText read-only)
  152. >65 string zsys (system file)
  153. >69 string x \b, creator "%4.4s"
  154. # Somewhere, Apple has a repository of registered Creator IDs. These are
  155. # just the ones that I happened to have files from and was able to identify.
  156. >69 string 8BIM (Adobe Photoshop)
  157. >69 string ALD3 (PageMaker 3)
  158. >69 string ALD4 (PageMaker 4)
  159. >69 string ALFA (Alpha editor)
  160. >69 string APLS (Apple Scanner)
  161. >69 string APSC (Apple Scanner)
  162. >69 string BRKL (Brickles)
  163. >69 string BTFT (BitFont)
  164. >69 string CCL2 (Common Lisp 2)
  165. >69 string CCL\ (Common Lisp)
  166. >69 string CDmo (The Talking Moose)
  167. >69 string CPCT (Compact Pro)
  168. >69 string CSOm (Eudora)
  169. >69 string DMOV (Font/DA Mover)
  170. >69 string DSIM (DigSim)
  171. >69 string EDIT (Macintosh Edit)
  172. >69 string ERIK (Macintosh Finder)
  173. >69 string EXTR (self-extracting archive)
  174. >69 string Gzip (GNU gzip)
  175. >69 string KAHL (Think C)
  176. >69 string LWFU (LaserWriter Utility)
  177. >69 string LZIV (compress)
  178. >69 string MACA (MacWrite)
  179. >69 string MACS (Macintosh operating system)
  180. >69 string MAcK (MacKnowledge terminal emulator)
  181. >69 string MLND (Defender)
  182. >69 string MPNT (MacPaint)
  183. >69 string MSBB (Microsoft BASIC (binary))
  184. >69 string MSWD (Microsoft Word)
  185. >69 string NCSA (NCSA Telnet)
  186. >69 string PJMM (Think Pascal)
  187. >69 string PSAL (Hunt the Wumpus)
  188. >69 string PSI2 (Apple File Exchange)
  189. >69 string R*ch (BBEdit)
  190. >69 string RMKR (Resource Maker)
  191. >69 string RSED (Resource Editor)
  192. >69 string Rich (BBEdit)
  193. >69 string SIT! (StuffIt)
  194. >69 string SPNT (SuperPaint)
  195. >69 string Unix (NeXT Mac filesystem)
  196. >69 string VIM! (Vim editor)
  197. >69 string WILD (HyperCard)
  198. >69 string XCEL (Microsoft Excel)
  199. >69 string aCa2 (Fontographer)
  200. >69 string aca3 (Aldus FreeHand)
  201. >69 string dosa (Macintosh MS-DOS file system)
  202. >69 string movr (Font/DA Mover)
  203. >69 string nX^n (WriteNow)
  204. >69 string pdos (Apple ProDOS file system)
  205. >69 string scbk (Scrapbook)
  206. >69 string ttxt (SimpleText)
  207. >69 string ufox (Foreign File Access)
  208. # Just in case...
  209. 102 string mBIN MacBinary III data with surprising version number
  210. # sas magic from Bruce Foster (bef@nwu.edu)
  211. #
  212. #0 string SAS SAS
  213. #>8 string x %s
  214. 0 string SAS SAS
  215. >24 string DATA data file
  216. >24 string CATALOG catalog
  217. >24 string INDEX data file index
  218. >24 string VIEW data view
  219. # spss magic for SPSS system and portable files,
  220. # from Bruce Foster (bef@nwu.edu).
  221. 0 long 0xc1e2c3c9 SPSS Portable File
  222. >40 string x %s
  223. 0 string $FL2 SPSS System File
  224. >24 string x %s
  225. # Macintosh filesystem data
  226. # From "Tom N Harris" <telliamed@mac.com>
  227. # The MacOS epoch begins on 1 Jan 1904 instead of 1 Jan 1970, so these
  228. # entries depend on the data arithmetic added after v.35
  229. # There's also some Pascal strings in here, ditto...
  230. # The boot block signature, according to IM:Files, is
  231. # "for HFS volumes, this field always contains the value 0x4C4B."
  232. # But if this is true for MFS or HFS+ volumes, I don't know.
  233. # Alternatively, the boot block is supposed to be zeroed if it's
  234. # unused, so a simply >0 should suffice.
  235. 0x400 beshort 0xD2D7 Macintosh MFS data
  236. >0 beshort 0x4C4B (bootable)
  237. >0x40a beshort &0x8000 (locked)
  238. >0x402 beldate-0x7C25B080 x created: %s,
  239. >0x406 beldate-0x7C25B080 >0 last backup: %s,
  240. >0x414 belong x block size: %d,
  241. >0x412 beshort x number of blocks: %d,
  242. >0x424 pstring x volume name: %s
  243. 0x400 beshort 0x4244 Macintosh HFS data
  244. >0 beshort 0x4C4B (bootable)
  245. >0x40a beshort &0x8000 (locked)
  246. >0x40a beshort ^0x0100 (mounted)
  247. >0x40a beshort &0x0800 (unclean)
  248. >0x402 beldate-0x7C25B080 x created: %s,
  249. >0x406 beldate-0x7C25B080 x last modified: %s,
  250. >0x440 beldate-0x7C25B080 >0 last backup: %s,
  251. >0x414 belong x block size: %d,
  252. >0x412 beshort x number of blocks: %d,
  253. >0x424 pstring x volume name: %s
  254. #>0x480 beshort =0x482B Embedded HFS+ Volume:
  255. #>>((0x482*(0x414))+(0x41c*512)) x \b
  256. # Well, this is (theoretically) how we could do this. But it occurs to
  257. # me that we likely don't read in a large enough chunk. I don't have any
  258. # HFS+ volumes to see what a typical offset would be.
  259. 0x400 beshort 0x482B Macintosh HFS Extended
  260. >&2 beshort x version %d data
  261. >0 beshort 0x4C4B (bootable)
  262. >&4 belong ^0x00000100 (mounted)
  263. >&4 belong &0x00000800 (unclean)
  264. >&4 belong &0x00008000 (locked)
  265. >&8 string x last mounted by: '%.4s',
  266. # really, that should be treated as a belong and we print a string
  267. # based on the value. TN1150 only mentions '8.10' for "MacOS 8.1"
  268. >&16 beldate-0x7C25B080 x created: %s,
  269. >&20 beldate-0x7C25B080 x last modified: %s,
  270. >&24 beldate-0x7C25B080 >0 last backup: %s,
  271. >&28 beldate-0x7C25B080 >0 last checked: %s,
  272. >&40 belong x block size: %d,
  273. >&44 belong x number of blocks: %d,
  274. >&48 belong x free blocks: %d
  275. # I don't think this is really necessary since it doesn't do much and
  276. # anything with a valid driver descriptor will also have a valid
  277. # partition map
  278. #0 beshort 0x4552 Apple Device Driver data
  279. #>&24 beshort =1 \b, MacOS
  280. # Is that the partition type a cstring or a pstring? Well, IM says "strings
  281. # shorter than 32 bytes must be terminated with NULL" so I'll treat it as a
  282. # cstring. Of course, partitions can contain more than four entries, but
  283. # what're you gonna do?
  284. 0x200 beshort 0x504D Apple Partition data
  285. >&2 beshort x block size: %d
  286. >&48 string x first type: %s,
  287. >&12 belong x number of blocks: %d,
  288. >(&0x2.S) beshort 0x504D
  289. >>&48 string x second type: %s
  290. >>&12 belong x number of blocks: %d,
  291. >>(&0x2.S) beshort 0x504D
  292. >>>&48 string x third type: %s
  293. >>>&12 belong x number of blocks: %d,
  294. >>>(&0x2.S) beshort 0x504D
  295. >>>>&48 string x fourth type: %s
  296. >>>>&12 belong x number of blocks: %d,
  297. # AFAIK, only the signature is different
  298. 0x200 beshort 0x5453 Apple Old Partition data
  299. >&2 beshort x block size: %d
  300. >&48 string x first type: %s,
  301. >&12 belong x number of blocks: %d,
  302. >(&0x2.S) beshort 0x504D
  303. >>&48 string x second type: %s
  304. >>&12 belong x number of blocks: %d,
  305. >>(&0x2.S) beshort 0x504D
  306. >>>&48 string x third type: %s
  307. >>>&12 belong x number of blocks: %d,
  308. >>>(&0x2.S) beshort 0x504D
  309. >>>>&48 string x fourth type: %s
  310. >>>>&12 belong x number of blocks: %d,