<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] <dsk_file>
<command> [<command_params>]<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 <total_tracks>
<sectors_per_track> <sector_size>
<filler> [<sector_order> or
<sector_map>]<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
<1 - 29><br>
filler - value of the byte to fill a new
sectors <0 - 255><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 <track>
<sectors_per_track> <sector_size>
<filler> [<sector_order> or
<sector_map>]<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 <0 -
203><br>
<br>
dskappend <count_tracks>
<sectors_per_track> <sector_size>
<filler> [<sector_order> or
<sector_map>]<br>
<br>
Add anoter tracks to the end of DSK
file.<br>
The parameters are similar as on the
'dskmake' command.<br>
<br>
dskshrink <total_tracks><br>
<br>
Reduce total number of tracks.<br>
Overlapping tracks at the end of DSK
image will be discarded.<br>
<br>
dskbasic <total_tracks><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 <total_tracks><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 <total_tracks><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 <tt> <ss><br>
Print hex dump of the sector on absolute
track.<br>
tt - abs. track <0 - 203> (decimal
or 0xNN for hex)<br>
ss - sector <1 - 29> (decimal or
0xNN for hex)<br>
<br>
gettrsec <file> <tt> <ss>
[size]<br>
Save data from sector into local file.<br>
tt - abs. track <0 - 203> (decimal
or 0xNN for hex)<br>
ss - sector <1 - 29> (decimal or
0xNN for hex)<br>
* default size is the same as sector
size<br>
<br>
puttrsec <file> <tt> <ss>
[size] [file_offset]<br>
Load data from local file into sector.<br>
tt - abs. track <0 - 203> (decimal
or 0xNN for hex)<br>
ss - sector <1 - 29> (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 <mzf><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 <mzf><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 >
0x00 (not deleted).<br>
<br>
mzdirtype <nn><br>
Print all FSMZ dir items with ftype = nn
(decimal or 0xNN for hex).<br>
<br>
mzfile <name><br>
Print FSMZ dir item by name.<br>
* filename in FSMZ is case sensitive!<br>
<br>
mzid <id><br>
Print FSMZ dir item by ID.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
<br>
mzren <name> <newname><br>
Rename FSMZ file by name to newname.<br>
* filename in FSMZ is case sensitive!<br>
<br>
mzrenid <id> <newname><br>
Rename FSMZ file by ID to newname.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
<br>
mzera <name><br>
Erase FSMZ file by name.<br>
* filename in FSMZ is case sensitive!<br>
<br>
mzeraid <id><br>
Erase FSMZ file by ID.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
<br>
mzlock <name> <lck_state><br>
Set or reset FSMZ lock file attribute by
name.<br>
lck_state - <0,1> (0 = unlocked, 1
= locked)<br>
* filename in FSMZ is case sensitive!<br>
<br>
mzlockid <id> <lck_state><br>
Set or reset FSMZ lock file attribute by
ID.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
lck_state - <0,1> (0 = unlocked, 1
= locked)<br>
<br>
mzchftype <id> <file_type><br>
Change FSMZ file type by ID.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
file_type - <0 - 0xff> (decimal or
0xNN for hex)<br>
Known item types in K&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 <mzf><br>
Load MZF and install into FSMZ bootstrap
as NORMALBOOT.<br>
* This is default boot type for full
FSMZ disks.<br>
<br>
mzputoverboot <mzf><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 <name> <mzf><br>
Save FSMZ file by name into MZF file.<br>
* filename in FSMZ is case sensitive!<br>
<br>
mzgetid <id> <mzf><br>
Save FSMZ file by ID into MZF file.<br>
FSMZ ID = <0; 62> (decimal or 0xNN
for hex)<br>
FSMZ IPLDISK ID = <0; 126>
(decimal or 0xNN for hex)<br>
<br>
mzgetall <directory><br>
Save all files from FSMZ filearea into
local directory.<br>
<br>
mzputfile <mzf><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 <file> <block> [size]<br>
Save data from FSMZ block into local
file.<br>
* Default size is 256 bytes (FSMZ block
size).<br>
<br>
mzputblock <file> <block> [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>