<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=utf-8">
  </head>
  <body text="#000000" bgcolor="#FFFFFF">
    <p><font size="+1">Ahoj,</font></p>
    <p><font size="+1">na teto adrese si muzete stahnout FSTOOL ver. 1.0
        - <a class="moz-txt-link-freetext" href="http://ordoz.com/sharp/fstool/ver_1.0/fstool.exe">http://ordoz.com/sharp/fstool/ver_1.0/fstool.exe</a></font></p>
    <p><font size="+1">Jedna se o nastroj, ktery umi vytvaret,
        analyzovat a upravovat DSK. Dale je v nem plna podpora prace s
        MZ filesystemem. Avast pri pokusu o stazeni souboru hlasi ze je
        tam infekce DRep., coz znamena, ze se pokousite stahnout doposud
        neznamy exe z nezname domeny.</font></p>
    <p><font size="+1">Program jsem prubezne testoval jen v Linuxu, ale
        neocekavam nejake vyznamne rozdily ve Win32 verzi. Zdrojak zatim
        jeste nikam nedavam, protoze tam chci pridat dalsi filesystemy a
        udelat par kosmetickych zmen. Pak to dam asi na SF. Kdyby jste
        si nekdo chtel nakompilovat vlastni, napr. Linux verzi, tak mi
        napiste a poslu vam aktualni kod.</font></p>
    <p><font size="+1">Pri praci s DSK jsem zjistil, ze mnoho mych FSMZ
        disket je ponekud rozmrvenych, coz ma zrejme na svedomi
        pouzivani ipldisk vs. BASIC. Vetsinou z nich lze bez potizi cist
        i do nich psat, ale nemusi sedet info o obsazenem miste. Prikazy
        repairdinfo a defrag mohou mit na takovych disketach
        destruktivni ucinky. S takovyma disketama bych asi doporucil
        udelat "fstool --fsmz_ipldisk mzgetall ./adresar/", coz ulozi
        veskery obsah diskety do jednotlivych MZF - ovsem bez konverze
        ftype(!), takze napr. BASIC program bude mit ftype 0x02, misto
        0x05.<br>
      </font></p>
    <p><font size="+1">Alespon pro zacatek, nez si praci s programem
        osvojite, tak doporucuji vytvorit si kopie DSK - samozrejme jen
        pro pripad DSK WRITE operaci.</font></p>
    <p><font size="+1"><br>
      </font></p>
    <p><font size="+1">Nejake priklady:<br>
        =============</font></p>
    <p><font size="+1">Vyrob FSMZ disk s 80 stopama.<br>
      </font></p>
    <p><font size="+1">a) jednoduse:</font></p>
    <p><font size="+1">$ fstool new_basic_disk.dsk dskbasic 160
        --createdsk</font></p>
    <p><font size="+1">b) slozite:<br>
      </font></p>
    <p><font size="+1">$ fstool new_basic_disk.dsk dskmake 160 16 256
        0xff normal --createdsk<br>
      </font></p>
    <p><font size="+1">Naformatuj:<br>
      </font></p>
    <p><font size="+1">$ </font><font size="+1"><font size="+1">fstool
          new_basic_disk.dsk mzfastformat</font></font></p>
    <p><font size="+1"><font size="+1">Specialni low-level rormat:<br>
          ======================<br>
        </font></font></p>
    <p><font size="+1"><font size="+1">Vyrob disk typu Lemmings
          (nepamatuju si presnou lokalizaci a umisteni "tajneho" sektoru
          - treba 14. stopa a sectorID 0x27 ):</font></font></p>
    <p><font size="+1"><font size="+1">$ </font></font><font size="+1"><font
          size="+1"><font size="+1"><font size="+1">fstool --createdsk
              new_lemmings.dsk dskcpm 160</font></font></font></font><br>
      <font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1">$ </font></font><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">fstool new_lemmings.dsk dskchange 14 10
                      512 0x00 "1, 2, 3, 4, 5, 6, 7, 8, 9, 0x27"</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">Overit (analyzovat disk):</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">$ fstool new_lemmings.dsk info<br>
                      DSK and filesystem utility for Sharp MZ-800 disks,
                      version 1.0<br>
                      <br>
                      Checking DSK format ... Result: DSK is OK!<br>
                      <br>
                      Disk total tracks: 160<br>
                      Disk sides: 2<br>
                      <br>
                      Track rules:<br>
                      From 0, count 1, sectors 9, size 512 B<br>
                      From 1, count 1, sectors 16, size 256 B<br>
                      From 2, count 12, sectors 9, size 512 B<br>
                      From 14, count 1, sectors 10, size 512 B<br>
                      From 15, count 145, sectors 9, size 512 B<br>
                      <br>
                      Format test result: This disk has only FSMZ
                      bootstrap track<br>
                      <br>
                      Prace s boot stopou:<br>
                      =================</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">Kazdy disk se kterym je FSTOOL v ramci
                      FSMZ prikazu ochoten pracovat musi mit alespon
                      Sharp boot stopu. Vymyslel jsem 3 druhy umisteni
                      Sharp boot zavadece:<br>
                      <br>
                      a) MINIBOOT - je maly, umisten v Sharp BOOT stope
                      - napr. cp/m, nebo MRS</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">b) MZBOOT - klasicky BASIC, ci ipldisk
                      zavadec, ktery ma v boot stope jen IPLPRO header a
                      samotny program se nachazi ve FSMZ filearea, cimz
                      ubira misto ostatnim souborum</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">c) MZOVERBOOT - souborovy system FSMZ
                      umi v diskinfo bitmape na standardne rozvrzene
                      diskete popsat pouze 128 stop a zbyvajici cast
                      diskety zustava nevyuzita presto, ze FSMZ si na
                      tyto alokacni bloky umi bez problemu sahnout.
                      Overboot program se tedy ulozi za oblasti filearea
                      a tim padem zustava na disku vice mista pro
                      standardni FSMZ soubory</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1"><br>
                    </font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">Prace s bloky:<br>
                      ===========<br>
                    </font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">Prikazy trsec, gettrsec, puttrsec,
                      mzblock, mzgetblock a mzputblock umi podle
                      lowlevel formatu aktualni stopy nastavit auto
                      invert a pripadne konvertovat ASCII podle toho zda
                      se nachazi nad FSMZ stopou, ci nikoliv. Toto
                      chovani lze pomoci options v pripade potreby
                      ovlivnit.</font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1"><br>
                    </font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">Prikladam kompletni help k programu:<br>
                    </font></font></font></font></font></font></font></font></p>
    <p><font size="+1"><font size="+1"><font size="+1"><font size="+1"><font
                size="+1"><font size="+1"><font size="+1"><font
                      size="+1">DSK and filesystem utility for Sharp
                      MZ-800 disks, version 1.0<br>
                      <br>
                      Usage: fstool [options] &lt;dsk_file&gt;
                      &lt;command&gt; [&lt;command_params&gt;]<br>
                      <br>
                       Options:<br>
                       ========<br>
                      <br>
                           --help: print this help message<br>
                           --version: print version<br>
                      <br>
                           --createdsk: create a new double-sided DSK
                      file<br>
                           --createonsidedsk: create a new one-sided DSK
                      file<br>
                           --overwrite: force overwrite file when new
                      DSK is created<br>
                      <br>
                           --ro: forced read-only mode<br>
                           --fixdsk: auto bugfix DSK (only in R/W mode)<br>
                      <br>
                           --cnv: force enable Sharp ASCII conversion in
                      hexdump output<br>
                           --nocnv: force disable Sharp ASCII conversion
                      in hexdump output<br>
                                * output from FSMZ tracks is naturaly
                      auto ASCII converted<br>
                                  This option disable FSMZ auto ASCII
                      conversion.<br>
                      <br>
                           --inv: force enable data inversion for
                      hexdump and put/get data from sector or block<br>
                           --noinv: force disable data inversion for
                      hexdump and put/get data from sector or block<br>
                                * operations on FSMZ and FSMRS tracks
                      are data auto inverted<br>
                                  This option disable FSMZ auto
                      inversion.<br>
                      <br>
                           --fsmz_ipldisk: switch FSMZ to IPLDISK
                      extended directory mode<br>
                                IPLDISK FSMZ directory is alocated in
                      16. - 31. block.<br>
                                Normal FSMZ directory is alocated in 16.
                      - 23. block and<br>
                                blocks 24. - 31. are filled with zeros.<br>
                      <br>
                                * Be carefull! Use this option on each
                      disk that has in<br>
                                  any block from 24. to 31. some non
                      zero values.<br>
                      <br>
                           --forcefsmz: forced FSMZ format<br>
                                Good choice for exotic format discs.<br>
                      <br>
                      <br>
                       DSK low-level format commands:<br>
                       ==============================<br>
                      <br>
                           dskmake &lt;total_tracks&gt;
                      &lt;sectors_per_track&gt; &lt;sector_size&gt;
                      &lt;filler&gt; [&lt;sector_order&gt; or
                      &lt;sector_map&gt;]<br>
                      <br>
                                Use this command for customized DSK low
                      level format. You can use --createdsk or<br>
                                --createonesidedsk option and
                      --overwrite option, if DSK already exist.<br>
                                All numeric values can be decimal, or
                      hexadecimal with '0x' prefix.<br>
                      <br>
                                total_tracks - recomended value is 160
                      or 80 tracks.<br>
                                     * the maximum number of tracks on
                      the disc is 204<br>
                                     * total number tracks of the
                      double-sided disk must always be even<br>
                      <br>
                                sectors_per_track - value in interval
                      &lt;1 - 29&gt;<br>
                                filler - value of the byte to fill a new
                      sectors &lt;0 - 255&gt;<br>
                                sector_size - sector size in bytes 128,
                      256, 512, 1024<br>
                                sector_order - determines way how to
                      assign sectors ID. Value may be:<br>
                      <br>
                                     normal - sectors are numbered in
                      ascending order<br>
                                     lec - interlaced with interval 2<br>
                                     lechd - interlaced with interval 3<br>
                      <br>
                                sector_map - list of a unique numeric
                      sector IDs separated by a comma.<br>
                      <br>
                           dskchange &lt;track&gt;
                      &lt;sectors_per_track&gt; &lt;sector_size&gt;
                      &lt;filler&gt; [&lt;sector_order&gt; or
                      &lt;sector_map&gt;]<br>
                      <br>
                                Use this command for change any existing
                      track in DSK file.<br>
                                The parameters are similar as on the
                      'dskmake' command.<br>
                      <br>
                                track - value in interval &lt;0 -
                      203&gt;<br>
                      <br>
                           dskappend &lt;count_tracks&gt;
                      &lt;sectors_per_track&gt; &lt;sector_size&gt;
                      &lt;filler&gt; [&lt;sector_order&gt; or
                      &lt;sector_map&gt;]<br>
                      <br>
                                Add anoter tracks to the end of DSK
                      file.<br>
                                The parameters are similar as on the
                      'dskmake' command.<br>
                      <br>
                           dskshrink &lt;total_tracks&gt;<br>
                      <br>
                                Reduce total number of tracks.<br>
                                Overlapping tracks at the end of DSK
                      image will be discarded.<br>
                      <br>
                           dskbasic &lt;total_tracks&gt;<br>
                                Create new DSK with FSMZ low level
                      format (16 sectors by 256 B).<br>
                                total_tracks - recommended value is 80
                      or 160 (must be divisible by 2)<br>
                                * this command may be used only with
                      --createdsk option<br>
                      <br>
                           dskcpm &lt;total_tracks&gt;<br>
                                Create new DSK with cp/m low level
                      format (9 sectors by 512 B) and<br>
                                with FSMZ boot track.<br>
                                total_tracks - recommended value is 160
                      (must be divisible by 2)<br>
                                * this command may be used only with
                      --createdsk option<br>
                      <br>
                           dskcpmhd &lt;total_tracks&gt;<br>
                                Create new DSK with cp/m low level
                      format (18 sectors by 512 B) and<br>
                                with FSMZ boot track.<br>
                                total_tracks - recommended value is 160
                      (must be divisible by 2)<br>
                                * this command may be used only with
                      --createdsk option<br>
                      <br>
                      <br>
                       FS general commands:<br>
                       ====================<br>
                      <br>
                           info<br>
                                Print info about disc low level and
                      about logical format.<br>
                      <br>
                           discmap<br>
                                Print disc map from the recognizable
                      area.<br>
                      <br>
                           trsec &lt;tt&gt; &lt;ss&gt;<br>
                                Print hex dump of the sector on absolute
                      track.<br>
                                tt - abs. track &lt;0 - 203&gt; (decimal
                      or 0xNN for hex)<br>
                                ss - sector &lt;1 - 29&gt; (decimal or
                      0xNN for hex)<br>
                      <br>
                           gettrsec &lt;file&gt; &lt;tt&gt; &lt;ss&gt;
                      [size]<br>
                                Save data from sector into local file.<br>
                                tt - abs. track &lt;0 - 203&gt; (decimal
                      or 0xNN for hex)<br>
                                ss - sector &lt;1 - 29&gt; (decimal or
                      0xNN for hex)<br>
                                * default size is the same as sector
                      size<br>
                      <br>
                           puttrsec &lt;file&gt; &lt;tt&gt; &lt;ss&gt;
                      [size] [file_offset]<br>
                                Load data from local file into sector.<br>
                                tt - abs. track &lt;0 - 203&gt; (decimal
                      or 0xNN for hex)<br>
                                ss - sector &lt;1 - 29&gt; (decimal or
                      0xNN for hex)<br>
                                * If size is 0 or is not set, than
                      default size = file_size - offset.<br>
                      <br>
                           boot<br>
                                Print info about IPLPRO bootstrap.<br>
                      <br>
                           clrboot<br>
                                Clear IPLPRO block (track:0, sector:1).<br>
                                * Intended for non FSMZ disks with
                      MINIBOOT on FSMZ boot track,<br>
                                  or full FSMZ disk with OVERBOOT.<br>
                      <br>
                           miniboot &lt;mzf&gt;<br>
                                Load MZF and install into boot track as
                      MINIBOOT ( max: 0x0f00 bytes ).<br>
                                * For non FSMZ disks with FSMZ bootstrap
                      track.<br>
                      <br>
                           getboot &lt;mzf&gt;<br>
                                Save boootstrap loader (any type) into
                      MZF file.<br>
                      <br>
                      <br>
                       FS-MZ commands:<br>
                       ===============<br>
                      <br>
                       * you can set/reset FSMZ lock atribute for
                      individual directory items,<br>
                       but this attribute is not taken account in FSTOOL<br>
                      <br>
                       * FSTOOL do not make any conversion of the file
                      type parameter when is<br>
                       loading or saving the MZF file.<br>
                       E.g. the correct filetype for the BASIC program
                      in the MZF is 0x05,<br>
                       but in FSMZ is the same file identified as
                      filetype 0x03.<br>
                      <br>
                           mzdir<br>
                                Print all FSMZ dir items with ftype &gt;
                      0x00 (not deleted).<br>
                      <br>
                           mzdirtype &lt;nn&gt;<br>
                                Print all FSMZ dir items with ftype = nn
                      (decimal or 0xNN for hex).<br>
                      <br>
                           mzfile &lt;name&gt;<br>
                                Print FSMZ dir item by name.<br>
                                * filename in FSMZ is case sensitive!<br>
                      <br>
                           mzid &lt;id&gt;<br>
                                Print FSMZ dir item by ID.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                      <br>
                           mzren &lt;name&gt; &lt;newname&gt;<br>
                                Rename FSMZ file by name to newname.<br>
                                * filename in FSMZ is case sensitive!<br>
                      <br>
                           mzrenid &lt;id&gt; &lt;newname&gt;<br>
                                Rename FSMZ file by ID to newname.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                      <br>
                           mzera &lt;name&gt;<br>
                                Erase FSMZ file by name.<br>
                                * filename in FSMZ is case sensitive!<br>
                      <br>
                           mzeraid &lt;id&gt;<br>
                                Erase FSMZ file by ID.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                      <br>
                           mzlock &lt;name&gt; &lt;lck_state&gt;<br>
                                Set or reset FSMZ lock file attribute by
                      name.<br>
                                lck_state - &lt;0,1&gt; (0 = unlocked, 1
                      = locked)<br>
                                * filename in FSMZ is case sensitive!<br>
                      <br>
                           mzlockid &lt;id&gt; &lt;lck_state&gt;<br>
                                Set or reset FSMZ lock file attribute by
                      ID.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                                lck_state - &lt;0,1&gt; (0 = unlocked, 1
                      = locked)<br>
                      <br>
                           mzchftype &lt;id&gt; &lt;file_type&gt;<br>
                                Change FSMZ file type by ID.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                                file_type - &lt;0 - 0xff&gt; (decimal or
                      0xNN for hex)<br>
                                     Known item types in K&amp;P Basic V
                      1.5A:<br>
                                     0x00 - deleted file (unused file
                      item)<br>
                                     0x01 - OBJ (machine code)<br>
                                     0x02 - BTX (basic program)<br>
                                     0x03 - BSD (basic sequential data)<br>
                                     0x04 - BRD<br>
                                     0x05 - RB<br>
                                     0x06 - ASC<br>
                                     0x07 - LIB<br>
                                     0x08 - PTX<br>
                                     0x09 - PSD<br>
                                     0x0A - SYS<br>
                                     0x0B - GR<br>
                                     0x0C - LOG<br>
                                     0x0D - PIC<br>
                                * file type value with 7. bit set as 1
                      (0x80 and higher) has probably some any<br>
                                special importance, but I do not know
                      what the meaning :)<br>
                      <br>
                           mzrmboot<br>
                                Remove FSMZ bootstrap loader, update
                      FSMZ disc map and<br>
                                clear IPLPRO block<br>
                                * Intended only for full FSMZ disks
                      (NORMALBOOT and OVERBOOT)!<br>
                      <br>
                           mzputboot &lt;mzf&gt;<br>
                                Load MZF and install into FSMZ bootstrap
                      as NORMALBOOT.<br>
                                * This is default boot type for full
                      FSMZ disks.<br>
                      <br>
                           mzputoverboot &lt;mzf&gt;<br>
                                Load MZF and install into FSMZ bootstrap
                      as OVERBOOT.<br>
                                * This is experimental bootstrap
                      location intended only for<br>
                                  full FSMZ disks width more than 128
                      tracks.<br>
                                  This option saves space in the
                      standard FSMZ file area.<br>
                      <br>
                           mzgetfile &lt;name&gt; &lt;mzf&gt;<br>
                                Save FSMZ file by name into MZF file.<br>
                                * filename in FSMZ is case sensitive!<br>
                      <br>
                           mzgetid &lt;id&gt; &lt;mzf&gt;<br>
                                Save FSMZ file by ID into MZF file.<br>
                                FSMZ ID = &lt;0; 62&gt; (decimal or 0xNN
                      for hex)<br>
                                FSMZ IPLDISK ID = &lt;0; 126&gt;
                      (decimal or 0xNN for hex)<br>
                      <br>
                           mzgetall &lt;directory&gt;<br>
                                Save all files from FSMZ filearea into
                      local directory.<br>
                      <br>
                           mzputfile &lt;mzf&gt;<br>
                                Load MZF file into FSMZ.<br>
                      <br>
                           mzblock nn<br>
                                Print hex dump from FSMZ block nn
                      (decimal or 0xNN for hex).<br>
                      <br>
                           mzgetblock &lt;file&gt; &lt;block&gt; [size]<br>
                                Save data from FSMZ block into local
                      file.<br>
                                * Default size is 256 bytes (FSMZ block
                      size).<br>
                      <br>
                           mzputblock &lt;file&gt; &lt;block&gt; [size]
                      [file_offset]<br>
                                Load data from local file into FSMZ
                      block.<br>
                                * If size is 0 or is not set, than
                      default size = file_size - offset.<br>
                      <br>
                           mzfastformat<br>
                                Fast FSMZ format.<br>
                                * rewrite IPLPRO, FSMZ disc map and
                      directory blocks.<br>
                      <br>
                           mzrepairdinfo<br>
                                Repair FSMZ disc map and block usage
                      info from directory items.<br>
                      <br>
                           mzdefrag<br>
                                Defragmentation of FSMZ disc.<br>
                      <br>
                      <br>
                    </font></font></font></font></font></font></font></font></p>
  </body>
</html>