Miracle #03
16 июля 1999

kodit Who's there? - Working with MS-DOS: Ms-Dos floppy disk - a description of the structure of Ms-Dos disk.

<b>kodit Who's there?</b> - Working with MS-DOS: Ms-Dos floppy disk - a description of the structure of Ms-Dos disk.
    (C) Steelzer / Triumph

    --------------------

      The structure of MS-DOS floppies


    At SPECTRUM'e can safely read discs following
Format:


    -------------------------------------------------- ---------
    s name. hand ident.bayt capacity lanes sec.

        in a cluster on the track

    -------------------------------------------------- ---------
    D-August 22 # FF 320K 408

    S-Aug. 11 # FE 160K 408

    D-September 22 # FD 360K 409

    S-September 1911 # FC 180K 409

    QD-September 22 # F9 720K 809

    -------------------------------------------------- ---------

    Now make no mistake: the name, symbol, where the letter 
S-single, D-double (side) the numbers 8 or 9-number sektorov on 
the track, and Q-quality (High density recording,

refers to 80 tracks).
You can add that there are
More formats and D-10 and S-10, but
they are so rare that
write about their structure is not
meaning; sectors in the cluster -
- If SPECTRUM'e unit -
- The sector is on pisyuke cluster, the cluster size depends
the number of parties floppy
- If the disk is double-sided, then
cluster size is 2 sectors;
Identification byte-first entry in FAT'e that I can
identify with what we drive
dealing with.


    So, when working with
MS-DOS floppy disk, when moving
various files profitable high capacity floppy disks, then 
further will be discussed only two formats: D-9 and QD-9. 
Forgot to mention about the format of QD-15, but it already 
unreadable density on normal drive.



      The structure of the 0th track


    If we say that
disk format, D9-9 sectors,
then we should mean by
those that TR-DOS understands them
as sector 0 .. 8, but as for them there
understands iBM - this we must
interested in the least. And here's what to
know: Sector iBM - at 512
bytes, so read them
need only "1! Ie if
we need to read the 0th
track to do something like this does not
should not in any way, as:


                            LD HL, BUFFER

                            LD DE, 0

                            LD BC, # 0905

                            CALL # 3D13

Need to read and write
only sector-wise! Because
Only in this way can
record and / or read
sector, non-standard length. 0
sector contains the boot
record, but the interest is the following information is given 
in the table below: 


    -------------------------------------------------- ---------
    offset length description

    -------------------------------------------------- ---------
      March 8 byte system ID (word)

      January 11th floor of the sector size (512 bytes)

      January 13 byte cluster size

      January 14 word number of reserved sectors

      January 16 bytes of the number of copies of the FAT 
(D9-2, QD9-3) 

      January 17 word number of files in a directory

      January 19 words total, sec. on the disc (D9-720)

      January 21 byte code format (see below)

      January 22 word number of copies of FAT (QD9-3)

      January 24 word number of sectors per track

      January 26th floor of the parties floppy

      January 28th floor of spices. sectors (???)

    -------------------------------------------------- ---------

    3.1 Sector (1 and 2 for D9) FAT.

    4.6 Sector (3 and 4 for D9) copy FAT'a.

    7.8 Sector (5-8 D9) directory.

1 track:


    Sector 0-4 (0-2 for D9) extension directory.

    8.5 Sector (3-8 for D9) beginning of the data.


    -------------------------------------------------- ---------
                              Directory.

         Each entry in the catalog has a 32-byte length.

    -------------------------------------------------- ---------
    Displacement OpisanieRazmer (B) Recording Format

    -------------------------------------------------- ---------
       00 File name 8 bytes ASCII characters

       08 Name of file type ASCII characters 3 bytes

       11 File attributes 1 byte bits (see below)

       12 Utility field 10 bytes Not used

       22 Time a 2 byte word (see below)

       24 Date sozdaniya2 bayta word (see below)

       26 The initial cluster of 2-byte word (see below)

       28 Size (bytes) 4-byte word (integer).

    -------------------------------------------------- ---------

      1.Imya file.


    Unused items
directory have an initial byte
00. It should be noted that the DOS
stops the output directory when
meeting 00. If the first byte
entry is # E5, it is
means that the file is erased. This
means that all the clusters
assigned to this file
marked as free, and
if you need a new DOS'u
directory entry, it
overwrite any information about
erased files, and then his
recovery will be virtually impossible.


    And if, as a first
byte code appears # 2E (.)
it means to us
subdirectory. But if the second
B # 2E, then this element
corresponds to the parent directory of the current and the 
initial cluster number indicates the parent directory location. 


      2.Atributy file.

    -------------------------------------------------- ---------
    RazryadZnachenie Note

    -------------------------------------------------- ---------
       0 is allowed read-only

       1 Invisible

       2 System

       3 Volume Label

       4 Sub-Identifies the subdirectory

       5 History floppy useless

       07.06 Not used pure

    -------------------------------------------------- ---------

      3.Vremya creation or last modified
      cation.


    Time itself is viewed as an unsigned
unit, consisting of hours,
minutes and seconds to the next
formula:

Hours * 2048 + Minutes * 32 + Seconds 2

Hours are based on a 24-
hour cycle and can vary from 0 to 23. Because two-byte field 
used recording time for one

bit shorter than necessary
to store the full value
the number of seconds per day, while
stored in units equal to
two seconds, and the number of such
units varies from 0 to 29.


      4.Data creation or last modified
      cation.


    By themselves, these 2 bytes
can be regarded as
unsigned word
consisting of the year, month and
day using the following
Claims:

 (Year-1980) * 512 + Month * 32 + Day


    While this system may
work until 2108,
maximum year supported DOS'om equals 2099.


      5.Nomer initial cluster.


    This is 2 bytes, which give
number of the initial cluster. He
acts as an entry point into the
a chain of occupied space
files in FAT'e.
For files that are not in
data area of ​​the initial cluster number is 0.


      6.Razmer file.


    This is 4 bytes giving us
length of the file in bytes. After
reading this information, all
seems to be understood
even neprodvinutomu useru and
the only thing that has not yet been
described, so it is FAT. And so,
what it is, and what it
eat?


  FAT (File Allocated Table).


    All files and subdirectories
(Which are very similar
data files) are stored in
the latest and most
a large part of any disk.
File is given as much space
how much they need one
cluster at a time. In many
cases, the file occupies a contiguous block of disk space. 
However, the file can be scattered across the disk, and

not necessarily that the end of your text file, for example
located after the start. Such
The situation is manifested in those
Where information
added to the existing
file, or when it becomes
file in place, the remaining
after the removal of another file.
Such a division is, of course, slows down access to the file, 
but only in the case When files are fragmented.



    To monitor the location of the file on disk is a special 
data area called FAT'om. FAT is 12ti and 16ti bit. The 
following discussion focuses only on a 12-bit format, because 
16 bit is used only on disks where kolichichestvo clusters 
exceeds 4095 (# FFF). FAT is organized as a table, which can 
contain up to 4096 numbers range 0 to 4095, which

are records for each
cluster the data space.
The number in each entry indicates the status and use of the 
cluster, the corresponding this entry FAT. Range

numbers in the record may not exceed three HEX digits. If the 
entry contains a 0, it means that the cluster is free and it 
can be used. If record contains a # FF7 (4087) and

is not part of any
distribution chain file
then this cluster is marked
not in use due to an error in formatting.


    Clusters consistently
numbered from 2 to numbers on
one greater than the total
number of clusters on the disk.
Entries FAT'a contain the number of
2 to 4080 (# FF0), indicating
that the corresponding
cluster using a file.
Value # FFF means that
This cluster contains
the last part of the file. For that
same purpose can be used
the number of # FF8 to # FFE.


    Entry for a file in the directory contains the number of 
primary cluster, and record FAT'a

point to the next
used file clusters.
When a file is washed, then all
recording FAT'e falling into
file labeled 0, ie as
free, but the actual file data in the field
data do not change as
remains unchanged big
part of the information on file in
directory.


    Although it seems that
FAT-simple table of numbers
stored it in a rather tricky
form. One entry requires 12
bits, or 1.5 bytes, ie for
two records used 3
bytes, while the 16-bit
FAT'e 4 bytes. The first byte in
FAT'e is a code format
(See below table), the following 2
bytes are equal to # FF and
used. Next come a pair of
by 3 bytes. If you
going to recode FAT
over pairs of records, the better it is
done by the following formula:


          read AB CD EF>>> perekodiruem in DAB and EFC


    But if you do not want
encode a FAT 16-bit
a more convenient format, and
prefer to read individual
recording directly from FAT'a, here
algorithm: setting any number
cluster, we can find the value of FAT, multiplying the cluster 
number by 3, then divide the result by 2, and use this number as

offset within FAT'a. Taking on
obtained at the word, we
have 3 HEX digits and write FAT
another unnecessary HEX digit.
Now discard older
number if the cluster number
even, and the youngest, if the number
odd. As a result, all
these operations, we have room
next cluster file for
excluding the value # FFF,
which means that this
cluster contains the latest
part of the file.


    In general, if we need to
read the file, we look at
field recording catalog number
primary cluster for this
file, read this cluster,
Then, look at the table FAT'a
next cluster
file, read it again and so
repeat this procedure until
has not yet vsetretim in FAT'e
# FFF-hence the cluster for the last FAT.


      To illustrate an example:

At first read, for example
only the first sector FAT'a:


                            LD BC, # 0105

                            LD HL, BUFFER

                            LD DE, # 0101

                            CALL # 3D13

                            ...

Then, look memory dump
Address BUFFER:


     FD FF FF 03 40 00 05 60 00 07 80 00 09 00 A0 FF FF FF

     ______/ ______/ ______/ ______/ ______/ ______/

    unnecessary clusters ... ... ... .....

    title 2-3 4-5 6-7 8-9 10-11

Now look at the title
file (before that we should
read it): for example file
begins with a 2-second cluster;
take 3 bytes, which is
info on the 2 cluster and perekodiruem him on a previously 
unknown formula:



       AB CD EF = DAB EFC: 03 40 00 = 003 004

From this it follows that the next cluster of the file 003 read
2 cluster, then read the third
and look into the FAT ...


      Table ID byte:

    -------------------------------------------------- ---------
    ID byte: Format:

    -------------------------------------------------- ---------
               # FF D-8

               # FE S-8

               # FD D-9

               # FC S-9

               # F9 QD-9

    -------------------------------------------------- ---------

    Unfortunately I have to
There are currently no required
information on the format S-10,
D-10, QD-10, but if anyone is interested please contact
address MIRACLE marked
'FOR STEELZER', I will answer you and
I'll send all the information in their documentation with 
examples of working procedures ...


    -------------------------------------------------- 
--------- Note: as previously said MS-DOS diskette contains 2 
copies FAT'a, but should know that if you changed

catalog (write to a file or
erased) should be amended as
and a copy of FAT'a because some
bend to reconcile their pisyukah FAT'y
and if they are not equal, then the issue
unpleasant messages in your
address and refuse to work
the floppy ...





Other articles:

From the Editor - Preface: For what purpose we are releasing the magazine?

From the Editor - shell: a description of a new obolchka to the magazine.

From the Editor - a letter to the journal: Dr.Sioux / Phantom Family, Fistsoft, Mr.Z / HardWave, Kurov N., Eagle / Computer Ratz Group, Rom Corp / Virtual Vision Group.

From the Editor - in this issue: Content.

Project of the Year - presentation version of the game of Robo KT-soft/ETC.

Project of the Year - a presentation of the game from a group of Spark: Townships.

Project of the Year - a presentation of the game "12 secret book."

Project of the Year - a few words about the upcoming game, Chip & Dale.

Project of the Year - an amazing story to the game "Navigator".

Project of the Year - World of Darkness: a description of a new real-time strategy.

Rattles - Fresh or not, but savory cheats.

Rattles - Crematorium: STALKER game - a description of all items.

Rattles - Crematorium: Country Myths - Tips specials.

SWAP'A Basics - information for beginners as well as a few sly misrepresent, which You can crank the mail.

kodit Who's there? - Quick graphics: a few recipes from Zetter'a (print sprites, update the screen).

kodit Who's there? - Packer'y and Depacker'y: the truth about the packer or the ranting of Sir Kot'a.

kodit Who's there? - Working with MS-DOS: All about the mod files - a full description of the structure of mod-file, as well as a description of all effects.

kodit Who's there? - Working with MS-DOS: Ms-Dos floppy disk - a description of the structure of Ms-Dos disk.

kodit Who's there? - Chanky flame: a description of the algorithm chankovogo fire.

kodit Who's there? - Attribute bump mapping: bump mapping for those who have not entered.

kodit Who's there? - Guru meditates: optimization programs for execution time and size.

kodit Who's there? - An approximate search for a given sequence of bytes!

kodit Who's there? - Fast 42 print: fast how to print 42 characters in a row.

Party zone - KidSoft'98: a report from the Voronezh Festival of Computer Art.

Party zone - EarthQuake'99: a report from the Chelyabinsk festival of computer art.

Myself - 128 colors on the Spectrum: Revised scheme of up to 128 colors from the Donetsk group Spark.

Myself - Kettle: Connection General Sound to Profi through the system connector.

Myself - Uninterruptible Power Supplies: UPS-information technology.

Myself - General Sound Filter: story of the new gadgets to the GS.

Myself - Modems: Diagrams, charts! Scheme G. Shepeleva Kondratiev and M. Hayes modem connection.

Myself - Modems: Command - Command terminal.

Myself - Modems: Total modemizatsiya - a call to connect momedov.

System Software - FastCopy 3.0: a complete description of tricked out turbo-copyist.

System Software - Pro Tracker bugs! Several glyuchkov in ProTracker'ah.

System Software - Pro Tracker 3.4 final presentation remix Pro Tracker from Samara.

News - Chelyabinsk: X-Raizor returned to the Spectrum, Wocen wrote boot, Blade otdahyet, Steelzer joined Triumph, Crite completed the alpha version of the "World of Darkness", Bytic bought GS, Edison makes the site, Ironman wants to buy Spectrum.

News - Omsk: full staff and are expected products from a group of U98.

News - Kaliningrad: The loud death or Spectrum quiet life in Kaliningrad.

Techno-nature - Electronic music: Dj.Ironman talks about technology (Part 1).

Techno-nature - Electronic music: Dj.Ironman talks about technology (part 2).

Techno-nature - Internet music-sites: a lot of addresses where you can learn new about electronic music.

Techno-nature - Addiction XX: bike from Dj.Ironman 'as well.

a quarter to four - the story of everyday life from the X-Raizor'a.

Room with laughter - smells in and around: funny story from the magazine PTUCH.

Room with laughter - Perdmen: damning story of all of the same PTYuCh'a.

Room with laughter - Wick: nekolko scenarios from the film chronicles the wick.

Room with laughter - Halo: The end of the story published in the second room.

Proclamation - advertisements and announcements about finding friends on the Spectrum.

Proclamation - advertisements and announcements about finding friends on the Spectrum.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Similar articles:
about everything about everything - "The path before dawn."
Room with laughter - smells in and around: funny story from the magazine PTUCH.
Programming - when the calculator is contraindicated in BASIC.

В этот день...   21 November