fat95 readme file
$VER: fat95 magyar információk 3.13 (13-Feb-2004)


Bevezető
========

Lemezmeghajtók installálása AmigaOS alatt valóban egyszerű ;-)
Ehhez mindíg két program szükséges:

  1. egy driver (hardver meghajtóprogram), amely blokk mélységű
     hozzáférést tesz lehetővé az egész meghajtóegységen. Ez a
     program vagy a Kickstart ROM része, vagy egy külön fájl
     hasonló néven mint "DEVS:xxx.device".

  2. egy filesystem (fájlrendszer). Ez egyfajta tárkezelő amely
     a partíciókat, fiókokat és a fájlokat kezeli. A szabvány
     fájlrendszer a ROM-ban van. Más fájlrendszerek mint pl. a
     fat95, az L: fiókban található fájlok.

Nekünk szükségünk van mindkettőre. Ezért egy speciális
szövegfájlt fogunk írni, ami Mountlist néven ismert. Ez a fájl
fogja átadni a szükséges adatokat a driver-nek, és a
filesystem-nek:

Először a driver neve:

    Device = scsi.device

Ez a program felel az Amigák belső IDE vagy SCSI portjáért.
Általában több egység is csatolható egy portra. Ezért be kell
írnunk hogy melyik egységet akarjuk használni:

    Unit = 1

Ez az én "slave" (szolga - másodlagos) IDE egységem, egy 100Mb-os
ZIP meghajtó. A "master" (mester) merevlemez egységszáma 0.
Ha egyetlen meghajtónk van, akkor az is 0.

    Flags = 0

Néhány meghajtó megenged speciális beállításokat, mint pl. ez is.
Bővebb információkért olvasd el a meghajtódhoz mellékelt leírást.
A legtöbb esetben a 0 megfelelő.

    BufMemType = 1

A legtöbb esetben működik. Más értékek szintén meghajtófüggőek.

    MaxTransfer = 0x20000
    Mask = 0xfffffffe

Normál (nem patchelt) A1200 ROM scsi.device-hoz. Esetleg
ki is hagyhatod ha a meghajtónak nincs rá szüksége.


Most jön a fájlrendszer.

    Filesystem = l:fat95

Az AmigaOS-nek szüksége van a teljes útvonalra.

    StackSize = 4096

Az ideiglenes adatoknak lefoglalt bájtok száma. Túl kicsire
állítva "titokzatos" rendszerösszeomlások történhetnek...

    GlobVec = -1

Ez egy egész estés történet. Most: a fat95 assembly nyelven
íródott, ezért -1.

    Buffers = 200

Mennyi 512 bájtos blokk legyen egyszerre a memóriában.
Több buffer = nagyobb sebesség = kevesebb szabad memória.

    Control = "+s"

Ez viszont teljesen "opcionális" ;-)
A következő opciókat használhatod:

    +    Bekapcsolja az opciót.
    -    Kikapcsolja az opciót.
    s    Direkt SCSI írás/olvasás. Segíthet néhány 4Gb-nál
         nagyobb merevlemeznél. Alapbeállítás: KIKAPCSOLT.
    d    Különleges datestamp információk megjelenítése, mint pl. a
         megjegyzés. Alapbeáll.: BEKAPCSOLT.
    D    Rögzíti az "utolsó hozzáférés" dátumát. Alapb.: BEKAPCSOLT. 

Normál esetben az Amiga OS a fájlrendszert az első hivatkozáskor
tölti be. Ezzel memóriát spórol olyan meghajtóknál, amelyeket
csak esetenként használunk. Azonnali indításhoz ezt kell beírni:

    Activate = 1

A fájlrendszernek tudnia kell hogy pontosan hol található a kívánt
partíció. Ez a legtöbb rendszertől eltérően a fat95-nél kétféle módon
adható meg.

a) Automatikus partíció keresés:

    LowCyl = 0    /* "automatikus keresés: BE" */

    BlockSize = 512    /* A fat95 nem használja ezeket az adatokat, */
    HighCyl = 1        /* de a Mount parancs szereti látni őket ;^) */
    BlocksPerTrack = 1
    Surfaces = 1

    DosType = 0x46415400    /* Csak floppykhoz. Vagy más... */
    DosType = 0x46415401    /* első használható partíció. Majden mindíg működik. */
    DosType = 0x46415402    /* második "primary" partíció. Elég ritka. */
    DosType = 0x46415405    /* első "logical drive". */
    DosType = 0x46415406    /* második "logical drive", stb. */

    A fat95 automatikusan megkeresi ezeket a PC stílusú partíciótáblákat
    (ne keverd össze az RDB-vel)

b) Manuálisan:

    BlockSize = 512
    DosType = 0x46415401

    A következő egy kicsit bonyolult. Meg kell adnod négy számot,
    amit a következő képletekből számolhatsz ki:

    BlocksPerTrack * Surfaces * LowCyl = StartBlockNumber

    (Sávonkénti blokkok * Oldalak * Első cilinder = Startblokk)

    (az első blokk száma a partíción);

    BlocksPerTrack * Surfaces * (HighCyl + 1) = LastBlock + 1

    Sávonkénti blokkok * Oldalak * (Utolsó cilinder + 1) = Utolsó blokk + 1

    (A partíció utáni első blokk száma)
    Amint látod ez nem túl egyszerű. Esetleg állítsd a BlocksPerTrack és a
    Surfaces értékét 1-re, és nem kell túl sokat számolnod. ;-)
    Speciális esetekben szükséges lehet, pl. amikor sérült a partíciós
    tábla.


Nézz bele az english/examples-be is.

Nos.
Akkor mentsd ki a kívánt DOS néven, mint "ZIP1".
Íme néhány módszer a meghajtó "mountolására":

a) Írd be shell-ben:

    mount ZIP1

b) Adj a fájlhoz egy "project" tipusú ikont: ZIP1.info
    Írd be hogy "c:mount" a default tool-hoz.
    Aztán duplaklikkelj az ikonra.

c) olyan mint b), de a két fájlt másold a devs:DosDrivers fiókba.
    Ezután minden rendszerindításkor el fog indulni.

d) OS 1.3 alatt másképp kell megoldani.
   EGYETLEN fájlban van leírva az összes meghajtó. Ez a DEVS:MountList
   Töltsd be egy szerkesztőbe és fűzd hozzá a következő sorokat:


   ZIP1:    /* A kívánt DOS név, plusz egy kettőspont */
     Device = scsi.device
     /* és így tovább a fentebb írtak szerint */
   #    /* A kettőskereszt zárja a ZIP1: szekciót */

   Mentsd ki a változásokat és végül a mount:

   mount ZIP1:

   (Ebben az esetben kettősponttal).

Ha szeretnéd az Amigádat FAT partícióról indítani (boot):

e) Először a), b) vagy d), aztán:

    boot95 ZIP1:

Én így tudtam installálni az OS 3.9-et egy 4Gigás FAT32 partícóra.
Ez volt a legegyszerűbb mód a FAT32 kezelés tesztelésére...

Háttér:

A PC partíciós merevlemezek gyakran tartalmaznak egy kb. 30kb-os nem
használt területet a "master boot record" és az első partíció között. Ide
megpróbálhatsz bepréselni egy automount programocskát. A "boot95"-höz az L:
fiókban kell lennie a "fat95"-nek. Ha nincs ott, második paraméterként meg
kell adnod a helyét. Ha a fat95-öt frissíted, újra meg kell az előbbi
procedúrát ismételned!

Figyelmeztetés: a boot95 felülírja a létező Amigás partíció adatait (RDB)!
Újabb figyelmeztetés: egy FAT bootpartíciónak már a bootolás közben
elérhetőnek kell lennie, például a merevlemez első 4Gb-jának a ROM rezidens
scsi.device-szal.

Installáció
===========

* Írd át az "install_fat95" text fájlt a saját nyelvedre, ha szükséges.
  Lefordíthatod a saját verziódat, és/vagy hozzáadhatsz egy kódlap leírást
  is (nézd meg a "russian/install_fat95" fájlt példának).
* Kattints kettőt az "install_fat95" ikonra, hogy aktíváld a változtatásokat.
* Kattints kettőt az "MS0" (belső floppy) vagy az "MS1" ikonokra, hogy
  felmountolódjon.
* Másold őket a DEVS:DOSDrivers fiókba, hogy automatikusan induljanak.
* Írj saját mount szkriptet, ha szükséges.

OS 1.3 különbségek
==================

Az mfm.device nem működik a v1.3 trackdisk.device-val. A legmegfelelőbb
helyettesítő a messydisk.device melyet Olaf Seibert írt. Eredetileg a
"Time #10" PD lemezen jelent meg 9(!) évvel ezelőtt, ma már nehezen
beszerezhető. Ezért határoztam el, hogy mellékelem.

* másold a "messydisk.device" és "fat95mountlist" fájlokat a "DEVS:" fiókba,
  és Írd hozzá a következő sort az S:Startup-sequence fájlhoz:

mount ms0: from fat95mountlist

Használd az "ms1:"-et az "ms1:" helyett, ha a külső floppy meghajtót akarod
MS-DOS/Win lemezekhez használni.


Speciális dolgok
================

Ha a fat95 lemez főkönyvtárába írsz, előfordulhat hogy ilyen hibajelzést
kapsz: 232 "no more entries in directory" (a könyvtárba nem fér több
bejegyzés). Ez a következők miatt van: Az MS-DOS/Win egy nem bővíthető, fix
méretű főkönyvtár táblázatot használ, amely korlátozott számú fájl és
alkönyvtár bejegyzést enged meg akkor is, ha a lemezen még van elég hely.
Ebben az esetben a következőket teheted:

* tároláshoz használj inkább alkönyvtárakat a főkönyvtár helyett.
* mozgass át néhány fájlt egy alkönyvtárba, aztán próbáld folytatni.
* töröl egy vagy több fájlt/könyvtárt a főkönyvtárból.
* Válassz másik lemezt.


Sajnos, nem tudom a messydisk.device használatát javasolni. Egy nagyon
bosszantó tény hogy a MOUNT taszk ki fog akadni amikor az első lemezcsere a
kiválasztott meghajtóban végrehajtásra kerül. Ez talán egy versenyhelyzet a
trackdisk.device-szal, mivel minden működik az egylépéses hibakereső módban
(single step debugging mode).

A fat95 már képes azonosítani az NSD (new style device) információkat, és
képes használni Trackdisk64 és/vagy SCSI közvetlen parancsait a 4 Gbájtnál
nagyobb médiák esetében is.

A nem engedélyezett "FAT" workbench ikonról szóló reklamációknak
köszönhetően, elhatároztam hogy beszámolok a lemezek szándékosan hibás
"DOS\0"-ként történő azonosításáról. Ez az oka az ikon eltűnésének. Remélem
ez nem engedi a programoknak az engedély nélküli direkt hozzáférést...


FAT32 megjegyzések
==================

A legnagyobb különbség a régebbi FAT16-tal összehasonlítva, a jól ismert
Fájl Allokációs Tábla, vagy FAT. Ez általában 1024-ed része a teljes
partíció méretének. Például ez 8 Mbájt egy 8 Gbájtos partíción. Ezért a
fat95 nem tárolja a teljes 32bites FAT-ot. A töredezett fájlokhoz történő
hozzáférés egy kicsit lassabb lesz, viszont értékes memóriát lehet így
megtakarítani.


Egy változó, amely az éppen elérhető szabad terület méretét tárolja; egy
másik jó ötlet...  Nos, elméletben.  A valóságban nem mindíg sikerülne
frissíteni.  A fat95 inkább a régi módon, a FAT-ból számolja ki a szabad
területet. Ez a mountolás után egy rövid ideig tart, amíg csak olvasni lehet
a lemezről ("A lemez rendezés alatt").


xxxscsi.device ötletek
======================

A legtöbb tároló eszköz a scsi.device, vagy a vezérlőkártyád hasonló nevű
program modulja segítségével van irányítva.
Jelenleg én egy NEC ZIP100-as meghajtót használok az A1200-esem belső IDE
portján.  Sajnos az eredeti ROM-ban lévő scsi.device egyáltalán nem szereti
az ATAPI hardwereket. Csak IDE merevlemezekkel működik.
Ezért javaslom, hogy installálj fel egy megfelelő programot, mint pl. az
IDE_scsidisk vagy IDEfix. Az OS3.9 (és talán a 3.5) már tartalmaz ilyent.

A "konzol"
==========

A fat95 nem igazán támogatja a fájl kommenteket. Beolvassa őket a
kiegészített dátummal, és írja ezek nélkül. Legtöbbször.
Csak válassz ki egy fájlt a fat lemezről és rendeld hozzá a következő
megjegyzést:

    !scandisk

és nézd meg, hogy mi történik...
Ez a kis trükkös kód még nem teljes... Azonban, már most visszaadja azokat
a fránya "elveszett" fájlokat.

Szintén megváltoztathatod a konfigurációs beállításokat a következő
megjegyzéssel:

    !control <opciók>

További információkért lásd a Bevezetőben a Mountlist "Control =" mezőt).
Például, az extra dátum kezelés kikapcsolása a ZIP1: meghajtó esetében:

    filenote ZIP1: "!control -dD"

És itt van a "biztonságos törlés":

    !erase

Ez a parancs nem a fájlokat törli, hanem az előzőleg törölt fájlokat
felülírja nullákkal. Ezek után már senki nem tudja visszaállítani az
eredeti tartalmat :)

Az aminet/disk/misc/cfd.lha v1.21+ programmal együtt használva,
ez a funkció a CompactFlash memóriakártyák beépített törlő funkcióját
fogja használni. Ezeken a kártyákon gyorsulhatnak az írási műveletek is.
(csak nem a digitális kamerád belsejében :))

Erről jut eszembe: a "scandisk" és az "erase" művelet mostmár
megszakítható az <ESC> gomb megnyomásával, vagy a művelet ablakának
becsukásával is.


Hibaelhárítás
=============

?: Mit jelent az "object not found" üzenet, amikor megpróbálok mountolni
   egy fat95-ös meghajtót?

!: Ellenőrizd a "Device =", "Unit =" és "Flags =" MountList mezőket.

Ha ez nem segít, csinálhatsz egy mentést a belső fat95 változókból, a
mellékelt "debug95" program segítségével.
Például írd be shellből

    debug95 ms0: ram:ms0.log

ha a belső MS0: floppy meghajtó nem akar működni.
Küldd el a keletkezett bináris fájlt (kb. fél kilobájt) emailben.
Megnyugtatlak nincs benne jelszó, vagy más titkos dolog.


DiskDump
========

Egy öreg, de hasznos UNIX bringa most újjáalakult Amigán (nem csak
fat95-höz).
Adott lemez blokkok másolása egy fájlba:

dd <név>.device <egység> <cél fájl> <kezdő-blokk száma> <blokkok meny.>

Peldául, az én ATAPI ZIP meghajtóm első 64 kbájtjának kimentése:

    dd scsi.device 1 ram:zipdump 0 128

Vissza is írhatsz dolgokat:

dd <forrás fájl> <név>.device <egység> kezdő-blokk száma> <blokkok meny.>

Más disk editor programoktól eltérően ez működik még hibás partíciókon is.
Ezért a fat95 legközelebb "megeszi" az új lemezeket is, vess rá egy
pillantást hogy ez mit jelent ;)


Specialistáknak...
==================

...itt egy lista a támogatott DOS packettekről:

0005    ACTION_DIE
0007    ACTION_CURRENT_VOLUME
0008    ACTION_LOCATE_OBJECT
0009    ACTION_RENAME_DISK
0015    ACTION_FREE_LOCK
0016    ACTION_DELETE_OBJECT
0017    ACTION_RENAME_OBJECT
0018    ACTION_MORE_CACHE
0019    ACTION_COPY_DIR
0021    ACTION_SET_PROTECT
0022    ACTION_CREATE_DIR
0023    ACTION_EXAMINE_OBJECT
0024    ACTION_EXAMINE_NEXT
0025    ACTION_DISK_INFO
0026    ACTION_INFO
0027    ACTION_FLUSH
0028    ACTION_SET_COMMENT
0029    ACTION_PARENT
0031    ACTION_INHIBIT
0034    ACTION_SET_DATE
0082    ACTION_READ
0087    ACTION_WRITE
1004    ACTION_FINDUPDATE
1005    ACTION_FINDINPUT
1006    ACTION_FINDOUTPUT
1007    ACTION_END
1008    ACTION_SEEK
1020    ACTION_FORMAT
1022    ACTION_SET_FILE_SIZE
1023    ACTION_WRITE_PROTECT
1026    ACTION_FH_FROM_LOCK
1027    ACTION_IS_FILESYSTEM
1028    ACTION_CHANGE_MODE
1030    ACTION_COPY_DIR_FH
1031    ACTION_PARENT_FH
1033    ACTION_EXAMINE_ALL
1034    ACTION_EXAMINE_FH
1035    ACTION_EXAMINE_ALL_END
4200    ACTION_SERIALIZE_DISK
4201    ACTION_GET_DISK_FSSM
4202    ACTION_FREE_DISK_FSSM


Előzmények
==========

v1.5    11/1999    first published version

v1.6    12/1999    fixed large partition addressing bug
                   added workaround for SID2
                   added volume serial number recognition
                   added directory optimization

v1.7    01/2000    fixed minor formatting bug
                   fixed crash on double-mounted volumes
                   made error requesters more informative
                   made code reentrant for multi-device use

v1.8    01/2000    added workaround for certain devices who keep
                   trashing forbidden 68k registers

v1.11   01/2000    new workarounds for "difficult" devices
                   made drawer operations a bit faster

v1.12   01/2000    added on/off feature for ETD_xxx device commands
                   added ACTION_SERIALIZE_DISK packet (used by DiskCopy)
                   made FAT16 mode writeback faster
                   improved disk format recognition

v1.13   02/2000    fixed SERIALIZE_DISK bug

v1.14   02/2000    fixed bug in updating all FAT copies
                   alternative english version

v1.15   02/2000    code optimizations

v1.17   02/2000    second published version
                   improved FORMAT command support

v1.18   03/2000    first try to implement partition support

v1.19   03/2000    fixed partition selection bug

v1.20   03/2000    introduced separate directory and file caches
                   added dummy workbench icon suppression

v1.21   03/2000    made file access cluster-wise
                   added diskchange messsages to system (IDCMP_DISKINSERTED...)

v1.22   03/2000    fixed "large sectors" bug (> 512 bytes)

v2.0    04/2000    first try on FAT32
                   fixed another "large sectors" bug

v2.1    04/2000    added NSD and TD64 support
                   fixed bug on 28bit entries for FAT32
                   changed intl character handling for short filenames
                   fixed "file creation" timestamp

v2.2    06/2000    new restart validator routines
                   longer filenames (65 chars)
                   added FAT32 formatting routines
                   small write access optimizations
                   changed AddBuffers support (like FFS)
                   reworked documentation

v2.3    07/2000    added native ExAll() and ExAllEnd()
                   added ChangeMode()
                   bugfixes:
                     ExamineFH()
                     OpenFromLock()
                     Rename()
                     very long path names
                     Workbench support

v2.4    07/2000    bugfixes:
                     exclusive locks
                     double MSDOS 8.3 names

v2.5    07/2000    new buffering scheme (track-wise)
                   bugfix:
                     free storage space recognition on FAT32

v2.6    07/2000    bugfixes:
                     crash when disk is full
                     access to inconsistent files

v2.7    08/2000    fixed logigal drive recognition #07+

v2.8    08/2000    added software write protection "Lock"
                   added diagnosis tool "fat95debug"

v2.9    09/2000    fixed AddBuffers bug
                   ACTION_CURRENT_VOLUME now safer
                   made all access trackwise

v2.10   10/2000    now recognizes some more "exotic" partition tables
                   added error requester "TD64 needed but missing"

v2.11   12/2000    better FDA compatibility

v2.12   02/2001    added "SCSI direct" command support

v2.13   02/2001    new buffering system

v2.14   03/2001    fixed nasty FAT32 mode bug

v2.15   05/2001    bugfixes:
                     crash on filenames >65 chars
                     shutdown sequence (ACTION_DIE)
                     short name generation
                   new:
                     "pure" attribute
                     error check functions
                     boot95

v2.16   08/2001    bugfix: files larger than MaxTransfer
                   new: code sharing via FileSystem.resource

v2.17   09/2001    new:
                     FAT32 mode now faster
                     Amiga reformatted ZIPs now recognized

v2.18   12/2002    new:
                     SetFileSize() support
                     user defined language support for both dialog and filenames

v2.19   01/2002    new: filenames up to 104 characters long

v3.00   02/2002    added user character set for 8.3 filenames
                     FAT32 formatting now uses official cluster sizes

v3.01   02/2002    fixed minor short name bug

v3.02   03/2002    fixed directory creation bug.
                     added "large" FAT12 formatting support, i.e. for CF memory cards.
                     added extended SCSI error checking.
                     new languages.

v3.03   05/2002    removed annoying DiskUpdate error message

v3.04   07/2002    removed "no disk" message when starting up
                     wihthout removable media.
                     fixed scandisk mode lockup bug.
                     new "dd" version with more useful error messages.

v3.05   07/2002    added new configuration options.
                     reworked documentation.

v3.06   08/2002    made access to small files faster.

v3.07   09/2002    Fixed file writing bug.
                     SCSI direct mode now auto-selected if necessary.
                     Added Hungarian localization.

v3.08   10/2002    Oops, skipped a version number??

v3.09   04/2003    Added security erase feature.
                     Scandisk now abortable.

v3.10   07/2003    Fixed bugs that
                     - sometimes trashed newly created directories;
                     - altered int`l characters in filenames if no OEM
                        codepage has been defined.
                     Updated dd tool.

v3.11   08/2003    Optimized internal short name generator.
                     Directory contents is now updated during file writes.
                     True "last changed" datestamp for root directory, too.

v3.12   11/2003    Added alternative disk recognition via direct SCSI commands.
                     Made TD_UPDATE use optional.
                     Accelerated small writes a bit.
                     Unused directory clusters are now freed again.

v3.13   02/2004    Added support for memory cards formatted by PalmOS.
(EOF)
