
     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)



     1mSYNOPSYS 
          0mMount MSH: 

          MSH:<any valid file specification>, or just 
          <any  valid file specification> if your current directory is
          somewhere on MSH:.  

     1mUSAGE 
          0mMSH: is a real Amiga-style File System handler that  handles
          messydos formatted  diskettes.    You  can use files on such
          messydos disks in almost exactly the same  way  as  you  use
          files on normal Amiga disks.  

          Supported  are  40  or  80  tracks,  double-sided 8, 9 or 10
          sector floppy disks, and harddisks with a 12 or  16-bit  FAT
          of any   dimension   the  FAT  allows.    (Due  to  lack  of
          availability, I have not been able  to  test  MSH:  on  hard
          disks; proceed with extreme caution).  

     1mMOUNTLIST 
          0mA  sample Mountlist entry, that works with the Arp 1.3 Mount
          command: 

          /*
           *  Messy file system on messy blocks:
           */
          MSH:    FileSystem = MessyFileSystem
                  Device = messydisk.device
                  Unit = 1
                  Flags = 0
          /*
           *  HighCyl is ignored, LowCyl, Surfaces and BlocksPerTrack
           *  are used once to find the bootblock. Further parameters
           *  are found there.
           */
                  LowCyl = 0 ; HighCyl = 79
                  Surfaces = 2
                  BlocksPerTrack = 9
                  Buffers = 5
          /*
           *  Use BufMemType = 3 [for MEMF_CHIP | MEMF_PUBLIC] if you
           *  use MSH: on the trackdisk.device.
           */
                  BufMemType = 1
                  BootPri = 0
                  Stacksize = 4096
                  Priority = 5
                  GlobVec  = -1
          #

          This Mountlist entry instructs MSH: to use  floppy  unit  1,
          i.e.  DF1:  and  the  messydisk.device.   You may choose any
          name instead of MSH: that you like.   For  this  case,  MS1:
          would also  be a sensible choice.  You can read the separate
          manual page about messydisk.device.  It is  supposed  to  be
          possible  to  use MSH: on a harddisk by supplying the proper
          device name and unit number.  If you wish  to  use  floppies


     KosmoSoft                        -1-                      Version 34.4


     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)


          truly  compatible  with those messy machines, you should use
          the messydisk.device.  You  cannot  change  this  name  into
          something else.  

          The  Mountlist  entries LowCyl, Surfaces, and BlocksPerTrack
          are used once to determine  the  location  of  the  messydos
          bootblock.   Disk  blocks  of  512 bytes are assumed in this
          calculation.  Further information is then obtained from  the
          bootblock (see below).  

     1mCOMPATIBILITY 
          0mEven  though  MSH:  uses  one of your floppy drives, you may
          still use that drive for  normal  Amiga  disks.    You  will
          notice  that  when  you  insert  a disk in the drive used by
          MSH:, both MSH: and the regular Amiga  file  system  handler
          will attempt  to identify the disk.  The result will be that
          one of the two will be unable to read it, and then leave  it
          alone so that the other may use it.  

          This  is  what happens when you insert a messydos disk: Both
          file systems will try to read the boot block  of  the  disk.
          The regular Amiga file system gets a read error, and retries
          a few  times,  while recalibrating the disk read head.  This
          is the short noise you may hear from the drive.    At  about
          the  same  time, MSH: will seize control over the disk unit,
          read the disk, and see  that  all  is  well.    It  is  then
          prepared to actually use the disk.  

          This  is  what happens when you insert an Amiga disk: Again,
          both file systems will try to read the  boot  block  of  the
          disk.  But this time MSH: will desperately try to understand
          the  disk, but it will give up when it is convinced that the
          disk is really not meant for it.  

          It is recommended that you don't attempt to  refer  to  MSH:
          while other filesystems are trying to read the disk.  

          In  some  situations  where there are multiple errors at the
          same time (such as trying to delete a non-existent file from
          a write-protected disk), the error reported may be different
          than the regular file system.  

     1mEXTENSIONS 
          ACTION0m_1mDIE 

          0mThe packet 3mACTION_DIE 0mis supported, and even has the  result
          of stopping  MSH:  and unloading the file system code.  This
          is convenient when you don't need to use MSH:  for  a  while
          and helps  you  to conserve memory.  A program called 3mdie 0mis
          supplied that sends the ACTION_DIE packet to any handler you
          wish.  If there is any program running that expects MSH:  to
          remain  present even while there are no open or locked files
          on MSH:, it may be dangerous to remove MSH:.  

          1mACTION0m_1mMORECACHE 

          0mMSH:  handles  the  packet  3mACTION_MORECACHE  0m(used  by  the
          AddBuffers  command)  and  cache buffers more intelligently.


     KosmoSoft                        -2-                      Version 34.4


     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)


          When you add buffers, the required memory is  not  allocated
          immediately,  but  gradually  as there becomes a use for it.
          When you remove a disk its buffers are no longer of use  and
          therefore are  all  freed.  And, what is more important, you
          can decrease the maximum number of buffers.  By specifying a
          negative number you reduce the number of buffers.   If  your
          AddBuffers  does not like negative buffer counts, simply add
          65536 to the (negative) number you  actually  intend.    So,
          instead  of  -1 you can also specify 65535, -2 is 65534. You
          wouldn't want  to  add  more  than  32767  buffers  at  once
          anyway.  

     1mLIMITATIONS 
          0mDue  to  the  difference  between messydos and AmigaDOS file
          systems, not all operations that  are  available  for  Amiga
          files can be applied to messydos files.  

          1mFile names 

          0mThe   most  eye-catching  difference  are  the  file  names:
          messydos file names can be at most "8 + 3" characters  long.
          This  means  that  the  "base"  part of the file name may be
          eight characters long, maybe followed by  a  three-character
          "extension",  which  is  separated from the base name with a
          period ('.'). Also, you cannot use  all  characters  in  the
          file  names  you  wish, but the charater choice is basically
          limited to the uppercase letters A-Z, digits 0-9,  and  most
          "punctuation" characters  except  space * ?  . < > / = | , :
          and \.  

          MSH: will try to map  file  names  that  you  or  a  program
          attempts to use to names that are actually allowed.  But for
          utmost  flexibility,  only  the  most  basic limitations are
          enforced:  the  length  of   the   name   (8+3),   uppercase
          alphabetics,  and  the  presence  of  only one period in the
          name.  This means that you might create file  names  that  a
          messydos  computer  does  not  correctly know how to handle.
          But care has been taken that in no case it would be possible
          to create a file name that, once created, cannot be  handled
          anymore  by MSH:. You can always refer to that file with the
          same name you used before, even if MSH: changed it for you.  

          1mSpecial directories 0m. 1mand 0m.. 

          On messydos floppies, every  subdirectory  has  two  special
          entries called  "."    and "..". They refer to the directory
          itself and its "parent" directory, respectively.    Programs
          that  traverse directory trees on messydos systems take care
          to skip these "subdirectories", since they  really  are  not
          "sub" direcories and recursively entering them would lead to
          nothing but  trouble.    (Their  presence  prevents the file
          system from have a tree structure.) But  with  AmigaDOS  1.3
          and  before,  no  such  "hard  links"  exist,  and directory
          traversing  programs  would  not  hesitate  to  enter  them.
          Therefore, they  are  3mcompletely  0mhidden  from  sight.   You
          cannot see them in directory listings nor refer to  them  by
          any name.  



     KosmoSoft                        -3-                      Version 34.4


     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)


          But  even  while  it  is hidden, the ".." entry is of course
          still updated to reflect the new  parent  directory  when  a
          directory is  renamed  and  moved.    Note, by the way, that
          moving directories is an operation that is not supported  by
          messydos itself.  

          Of  course,  the  usual  methods  of  accessing  the current
          directory (the empty name "") and the parent directory ("/")
          do work.  

          It may be  that  in  the  future,  when  softlinks  will  be
          included in AmigaDOS, these "." and ".." directories will be
          made visible  again, but in the disguise of a soft link.  In
          that case, programs which don't  know  how  to  handle  them
          should   either  not  exist  anymore  or  ignore  the  links
          themselves.  

          1mFilenotes 

          0mMessydos has no provision for file notes and therefore  they
          cannot be supported.  

          1mFile protection bits vs0m.  1mfile attributes 

          0mCurrently,  the  following  interpretation  of messydos file
          attributes is performed.    The  Directory  and  Volumelabel
          attributes  are  honored  to  make  these  directory entries
          different from plain files.  
          The HIDDEN and SYSTEM attributes are mapped to the  H(idden)
          bit.   The  H  bit  is  mapped  to the HIDDEN attribute; the
          SYSTEM attribute cannot be changed.  
          The  READ-ONLY  attribute  is  mapped  to  the  W(rite)  and
          D(elete) bits.   Inversely, if a file is set to either Write
          or Delete protected, the READ-ONLY attribute is set.  
          The ARCHIVE bit, when clear, sets the A(rchived)  bit.    On
          messydos  the  ARCHIVE  attribute  means (when set) that the
          file MUST be backed up (by a backup program).  A write to  a
          file sets  the  ARCHIVE attribute.  On AmigaDOS the Archived
          bit means  (when  set)  that  the  file  has  been  archived
          already.   A  write to a file clears the Archived protection
          bit.  

          1mBoot block format 

          0mMSH: relies on the information in the boot  block  regarding
          the  number of bytes per block, blocks per track, tracks per
          cylinder, blocks per cluster, etc.  The physical information
          is not actually used to access  the  disk,  except  for  the
          number  of  tracks  which is derived from other information.
          It is used to decide if a 40 track disk is inserted in a  80
          track drive.   Single  sided  disks  are not supported.  The
          number of sectors may  be  whatever  the  underlying  device
          driver supports.  (With messydisk.device this is 8, 9 or 10;
          with  trackdisk.device  it  is  11). Only the logical layout
          information is used: Size of a  block,  number  of  reserved
          blocks,  number of FATs, number of blocks per FAT, number of
          root directory entries, number of blocks per cluster.    The
          total  number of blocks is used to determine the usable part


     KosmoSoft                        -4-                      Version 34.4


     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)


          of the disk.  But if the FAT says "use a  block  beyond  the
          limit", this error is not detected.  

          If  you format a disk on a messydos computer and wish to use
          it with MSH:, be sure to use a messydos version  new  enough
          to write  this  information in the boot block.  (Version 3.2
          works nicely for me.) If you wish to format such a  disk  on
          your  Amiga,  you  can  use  PCF720  by  Werner Gόnther with
          pcFormat on the Extras disk, or use  the  supplied  messyfmt
          program.  

          1mFAT 

          0mThe   FAT   is  currently  not  checked  for  integrity  and
          consistency.  The FAT is assumed to have 12-bit  entries  if
          the disk  has at most 4086 ($FF6) clusters.  If the disk has
          more clusters than that, 16 bit  FAT  entries  are  assumed.
          This is the method that seems to be used by messy dos 3.0.  

          1mWorkbench 

          0mThe  Workbench wants to use filenames that are impossible on
          messydos floppies.  (.info extension) It  is  therefore  not
          very effective to try to use Workbench on MSH:.  

          1mVolume label 

          0mNormal  AmigaDOS  floppies  have a part of the disk reserved
          for their name.  With messydos floppies a name is  optional,
          and  should be in the directory in an entry with the special
          flag  (attribute)  Volumelabel.  MSH:  looks  in  the  first
          directory block  only  to  locate  such  a volume label.  If
          found, it decides the name of the disk; if  not  found,  the
          name will become "Unnamed" and the creation date will become
          1-Jan-80.  Note that AmigaDOS (and MSH:) keep disks apart by
          their name and creation date.  As a  result,  all  unlabeled
          disks will look the same and cannot be distinguished.  It is
          therefore  strongly  recommended that you provide every disk
          with a unique volume label; the  standard  AmigaDOS  command
          Relabel can  be used for this.  If you label a disk that had
          no label (in the first directory sector) before,  MSH:  will
          try  to  move  a  file  from  the  first  directory block to
          somewhere else in the  root  directory.    If  this  is  not
          possible,  for  instance because the root directory is full,
          then the labeling will fail as well.  

          1mMultiple file systems 

          0mThe MessyFileSystem  is  unfortunately  not  ``pure''.  This
          means that if you wish to mount multiple messy file systems,
          you  must  make a copy of MessyFileSystem for each of these,
          and mount each one from one of the separate copies.  Running
          two file systems from the same disk file  will  cause  great
          troubles.   (Oh  well, maybe AmigaDOS is not so smart to see
          that two file systems share the same FileSystem name in  the
          Mountlist,  so  maybe you don't need to have multiple copies
          of MessyFileSystem on your disk.  Try at your own risk.) 



     KosmoSoft                        -5-                      Version 34.4


     MSH:(FileSystems)     Amiga Programmer's Manual      MSH:(FileSystems)


     1mUTILITIES 
          0mA program called 3mmessyfmt 0mallows  you  to  format  disks  in
          messydos format.  

          Usage: Messyfmt <unitnr> <device> 

          The    <device>   name   is   optional   and   defaults   to
          "messydisk.device". The program asks for all  parameters  to
          put in the bootblock, like 

          Bytes per sector?  [512] 

          If  you  just  hit  return  you  accept  the  default value,
          otherwise you can enter a new value in the  usual  notation:
          0x  =  hexadecimal,  0  =  octal,  and  everything  else  is
          decimal.  A  few  suffixes  are  allowed  as  multiplication
          factor:  m  =  mega  (1048576), k = kilo (1024), s = sectors
          (512) and b = byte (1). (Not all terms make sense  with  all
          questions.)  You  may  create  8,  9  or  10 sector disks by
          answering the question "Sectors per track" appropriately.  
          You are also asked if you wish to format the whole  disk  or
          only  the  first part with the bootblock, FAT and directory.
          Finally, to see if you are still awake, you must enter 42 if
          you are sure to do it.  
          After formatting has completed, you  must  remove  the  disk
          from  the  drive,  in  order to let all involved filesystems
          know that the disk just died and reincarnated.  

          3mDiskCopy 0mcan be used to copy messydos  disks,  provided  you
          have one  or more file systems mounted.  Note, however, that
          DiskCopy looks at the disk size information as it is present
          in the Mountlist.  Therefore  DiskCopy  will  not  copy  the
          entire disk if it is 10-sector while the Mountlist claims it
          is  9-sector. In the opposite situation, it will try to copy
          too much which will result in read errors, which  may  cause
          the last  track not to be copied.  You can construct special
          Mountlist entries for 8 or 10 sector disks if  you  plan  to
          DiskCopy them; there is no need to really mount these.  

     1mTRADEMARKS 
          0mAmiga,     AmigaDOS,    Workbench    are    trademarks    of
          Commodore-Amiga, Inc. Messydos is presumably a trademark  of
          MessySoft, Inc.  

     1mAUTHOR 
          0mThe  messy  file system handler is written by 3mSourcerer 0mOlaf
          3mRhialto 0mSeibert.  













     KosmoSoft                        -6-                      Version 34.4

