diff --git a/library/nufx-addendum.htm b/library/nufx-addendum.htm index 6c4e0c3..b925cdd 100644 --- a/library/nufx-addendum.htm +++ b/library/nufx-addendum.htm @@ -24,12 +24,13 @@ -
NuFX Addendum - By Andy McFadden - Last revised 2015/01/09
+
NuFX Addendum - By Andy McFadden - Last revised 2022/05/25

This addendum clarifies and extends certain aspects of the NuFX specification.  This is not an "official" modification of the original document - it has not been reviewed and approved by the original author - but anyone developing NuFX utilities would do well to follow these recommendations.

+

Purpose

The NuFX specification defines a very loose structure, and leaves much to the imagination of the implementer.  For example, "If a @@ -428,20 +429,27 @@ or CRLF, and convert as needed for display.  GS/ShrinkIt used a proportional font, so there is no need to worry about formatting to preserve "ASCII art" in comments.

 

+

GS/OS option lists

Files archived from HFS AppleShare volumes come with "option lists", a GS/OS feature that provides a way for non-ProDOS -filesystem information to be preserved.  GS/ShrinkIt tries to save this -information, but it doesn't seem to do a very good job.  It appears to drop -a big chunk of the data without altering the size (e.g. the size field says 36 -bytes, but there's only space for 18 bytes in the record header).

+filesystem information to be preserved (e.g. the HFS FInfo and FXInfo data). +GS/ShrinkIt tries to save this information, but it doesn't seem to do a very good job. +Sometimes it appears to drop some of the data without altering the size, e.g. the +size field says 36 bytes, but there's only space for 18 bytes in the record header. +(ProDOS technote #25 suggests this could relate to the ProDOS FSM on +a Macintosh with a //e card.)

GS/ShrinkIt seems to work correctly whether the option list size is correct or not, so other applications should do the same.

+

Side note: the NuFX specification reversed the values of MFS and HFS +in the file_sys_id definition. In practice, GS/ShrinkIt correctly uses the +GS/OS FST definitions: MFS=5, HFS=6.

Opening: Assume the option_size field is correct unless it exceeds attrib_count-2.  If it's too large, clip it down to size.

Updating: Always use the actual size.  Do not propagate incorrect values.  Discarding existing option lists is discouraged but allowed.

+

 

Master EOF

For the most part, ShrinkIt correctly sets the MasterEOF field