
     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).  

     1mINSTALLATION 
          0mBelow is  given  a  Mountlist entry.  You can append this to
          your system's default Mountlist (DEVS:Mountlist), or to  any
          other  Mountlist  you  mention with the Mount command: Mount
          FROM SomeMountlist, as supported by Commodore  1.3  and  Arp
          1.3 Mount  commands.    You must put the messydisk.device in
          DEVS:, and the file MessyFileSystem in L:. You can put these
          files in other locations, provided you adapt the file  names
          in the Mountlist accordingly.  

     1mMOUNTLIST 
          0mA  sample Mountlist entry, that works with the Arp 1.3 Mount
          command: (It will also work with other versions of the Mount
          command, but may  need  minor  changes.    For  1.2,  change
          FileSystem to Handler.) 

          /*
           *  Messy file system on messy blocks:
           */
          MSH:    FileSystem = L:MessyFileSystem
                  Device = messydisk.device
                  Unit = 1
                  Flags = 0
          /*
           *  HighCyl is ignored, LowCyl, Surfaces, BlocksPerTrack
           *  and Reserved are used once to find the bootblock.
           *  Further parameters are found there.
           */
                  LowCyl = 0 ; HighCyl = 79
                  Reserved = 0
                  Surfaces = 2
                  BlocksPerTrack = 9
          /*
           *  Initially the disk cache will be 5 sectors.
           */
                  Buffers = 5




     Rhialto, KosmoSoft               -1-                 Version 34.8/1.30


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


          /*
           *  If DosType is set to 1, MSH: will wait for DFx: (where
           *  x depends on the Unit parameter above) to recognize
           *  inserted disks (or not).
           */
                  DosType = 1
          /*
           *  Use BufMemType = 3 [for MEMF_CHIP | MEMF_PUBLIC] if you
           *  use MSH: on the trackdisk.device.
           */
                  BufMemType = 1
                  BootPri = 0
                  Stacksize = 3072
                  Priority = 9
                  GlobVec  = -1
          /*
           *  Immediately load and start the MessyFileSystem
           *  when started.
           */
                  Mount = 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
          truly compatible with those messy machines, you  should  use
          the messydisk.device.    You  cannot  change  this name into
          something else.  It is also supposed  to  work  on  40-track
          drives, but this has not been tested by me.  

          The  Mountlist  entries LowCyl, Surfaces, BlocksPerTrack and
          Reserved are used once to  determine  the  location  of  the
          messydos bootblock.  Disk blocks of 512 bytes are assumed in
          this calculation.    The  block  number  of the bootblock is
          calculated  as  3m(LowCyl  *  Surfaces  *  BlocksPerTrack)   +
          Reserved.  0mFurther  information  is  then  obtained from the
          bootblock (see below).  

          The DosType parameter indicates whether MSH: should be  nice
          to  another file system which happens to use the same floppy
          drive.  More about this below.  Using floppies, you'll  want
          to set DosType to 1, for use with harddisks 0 is needed.  

     1mCOMPATIBILITY 
          0m-  Even  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
          may 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.  

          The  DosType parameter indicates whether MSH: should be nice
          to another file system which happens to use the same  floppy


     Rhialto, KosmoSoft               -2-                 Version 34.8/1.30


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


          drive.   Because  this can only be DF0:, DF1:, DF2: or DF3:,
          MSH: can derive the  name  from  the  Unit  parameter.    If
          DosType  is  set  to  1,  MSH:  will  wait for DFx: (where x
          depends on the Unit parameter) to recognize inserted  disks.
          If  it recognizes an inserted disk as an AmigaDOS disk, MSH:
          will conclude that it should not even attempt to access  the
          disk.  If DFx: only notices that some disk has been inserted
          but  does  not think it is an AmigaDOS disk, MSH: goes ahead
          and tries to identify it.  If  DFx:  has  not  reached  some
          conclusion  after  approximately  7.5 seconds, MSH: does not
          wait any longer, and attempts identification anyway.  

          If DosType is not set, both MSH: and DFx: will try to access
          the disk at the same time.  Only one of the two can succeed,
          but in the mean time they may have a violent fight about the
          control of the disk drive.  

          For harddisk(partition)s, there is probably  no  other  file
          system  that MSH: must wait for, so DosType should be set to
          0.  

          - 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.  3m(usage: die MSH:) 0mIf 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:.  Unfortunately,  one such program is the Workbench, so
          you should not kill MSH: if  you  also  have  the  Workbench
          running.  

          1mACTION0m_1mMORECACHE 

          0mMSH:  handles  the  packet  3mACTION_MORECACHE  0m(used  by  the
          AddBuffers command) and cache  buffers  more  intelligently.
          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  returned  to  the  free  memory
          pool.   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


     Rhialto, KosmoSoft               -3-                 Version 34.8/1.30


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


          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.  

          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.  



     Rhialto, KosmoSoft               -4-                 Version 34.8/1.30


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


          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
          of the disk.  (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.  


     Rhialto, KosmoSoft               -5-                 Version 34.8/1.30


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



          Atari  diskettes may have a different boot block, which does
          not contain the information that MSH: requires.  On  such  a
          disk,  you  can  rewrite  the  bootblock  using  the program
          Messyfmt (see below).  

          Some messydos computers have 80-track floppy drives, but the
          FORMAT command does  not  know  that.    If  you  format  an
          80-track  floppy  on such a system, it is possible that only
          40 tracks get formatted, and even the 'wrong' 40 tracks: the
          outer 40 tracks instead of every other track.  If you insert
          such a disk in an MSH: drive, then MSH: knows that the  disk
          uses  only  40  tracks,  but  wrongly  thinks it must use or
          simulate a 40 track drive.  The result is that the files  on
          that  disk seem to contain garbage, or parts of other files.
          To correct this situation, you can access the  special  file
          name  "MSH::F-" (the F must be in uppercase) each time after
          you insert that particular disk.  On  the  other  hand,  the
          name  "MSH::F+"  forces MSH: to use 40 track drive emulation
          mode.  

          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,  (and  all  disks  with  the  same  name)  will  look
          equivalent 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.  




     Rhialto, KosmoSoft               -6-                 Version 34.8/1.30


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


          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.
          AmigaDOS behaviour might change in the future, of course.) 

     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, and
          if not, if you want to write  only  the  bootblock,  or  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.  

          Hint: If you want to format a 40 track floppy in an 80 track
          drive,  it  is  probably  easiest to first format it with 80
          tracks, and then re-format just the bootblock.    Only  then
          you need to give the correct values for 40 tracks.  

          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  for
          normal use.  


     Rhialto, KosmoSoft               -7-                 Version 34.8/1.30


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


     1mSUGGESTIONS 
          0mThe   things   I   mention   here   are  merely  interesting
          suggestions.  They have not all been tried.   If  they  work
          for you, or if you think of some more, please let me know.  

          Since  you can use any disk-type device under MSH:, you need
          not necessarily use  messydisk.device,  but  you  could  use
          trackdisk.device  (the  normal Amiga disk driver), some kind
          of harddisk.device or jdisk.device (for  use  with  messydos
          partitions  on bridgeboards), or Matt Dillons fmsdisk.device
          (a file disguised as a disk device, if you have  a  messydos
          disk  in an AmigaDOS file for JLink). I have heard of a case
          where an  Amiga  drive  with  MSH:  was  accessed  from  the
          BridgeBoard though JLink.  

     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.  





































     Rhialto, KosmoSoft               -8-                 Version 34.8/1.30

