Systèmes de gestion de fichiers

Le SGF du DOS 3.3 des APPLE II

La disquette

Une disquette possède 35 pistes numérotées de 00 à 22, chacune est constituée de 16 secteurs numérotés de 0 à F. Un secteur contient 256 octets. Le contenu d'une disquette est ainsi réparti:

    Pistes
    00 01 02 03 04 ... 0F 10 11 12 13 ... 22
  0 B   K           V        
  1     e                    
  2     r                    
  3 R   n                    
S 4 W                        
e 5 T K I           C        
c 6 S e n           a        
t 7   r u           t        
e 8   n t           a        
u 9   e i           l        
r A R l l           o        
s B e   i           g        
  C K   s                    
  D e   é                    
  E r   s                    
  F n                        
B
: désigne le <<boot-sector>> c'est-à-dire le secteur d'amorçage. Son contenu est simplement un minuscule programme permettant de charger le reste du système d'exploitation.
RWTS
: (Read-Write Track Sector) désigne le programme permettant de lire ou écrire sur la disquette.
Re
: désigne le programme destiné à replacer (reloger) le système dans la mémoire principale.
Kernel
: Kernel désigne le système d'exploitation (noyau).
V
: désigne la V.T.O.C. (Volume Table Of Contents)
Catalog
: désigne l'emplacement standard des secteurs de <<catalog>>.
La procédure de démarrage se séquence comme suit:
1.
Chargement du <<boot-sector>> à une adresse fixe, puis lancement du programme,
2.
qui normallement charge la <<RWTS>> (jusqu'ici tout est standard, c'est le point faible des disquettes!!!),
3.
ensuite il y a chargement du <<Kernel>> à une adresse fixe en utilisant la <<RWTS>> chargée précédemment,
4.
l'étape suivante est celle du chargement du code de relogement (<<Re>>), puis éxécution de celui-ci si il y a lieu,
5.
éxécution du <<Kernel>> chargé et relogé...

Attention Sauf pour les noyaux modifiés à des fins de protection, la V.T.O.C se situe toujours en secteur 0 de la piste 11, et le catalogue est un chaînage de 15 secteurs: piste 11 secteur F, piste 11 secteur E, etc. (sauf pour des noyaux modifiés).

La V.T.O.C.

Position Valeur Définition
00 00 Octet inutilisé
01 11 Numéro de la piste du premier secteur
    du catalogue des fichiers (valeur par défaut)
02 0F Numéro du premier secteur du catalogue (valeur par défaut)
03 03 Numéro de version du DOS (3=DOS 3.3)
04/05 00 Inutilisés
06   Numéro de volume
07/26 00 Inutilisés
27 7A Nombre maximal de paires T/S dans un secteur de TSL
28/2F 00 Inutilisés
30   Dernière piste où des secteurs ont été alloués
31   Sens d'allocation
32/33 00 Inutilisés
34 23 Nombre maximal de pistes + 1 par disquette
35 10 Nombre maximal de secteurs + 1 par piste
36/37 00/01 Nombre maximal d'octets + 1 par secteur
38/3B   Bitmap des secteurs de la piste 0
3C/3F   Bitmap des secteurs de la piste 1
40/43   Bitmap des secteurs de la piste 2
     
C0/C4   Bitmap des secteurs de la piste 22
C5/FF 00 Inutilisés mais prévus pour des disquettes avec
    plus de 22 pistes
Dans les <<bitmaps>> un bit positionné à 1 correspond à un secteur libre, et un bit à 0 correspond à un secteur occupé. D'autre part seuls les deux premiers octets (sur les quatre disponibles) sont utilisés. Les deux autres permettront de supporter des disquettes avec plus de 16 secteurs par piste.

Description des deux premiers octets de <<bitmap>>:

Numéro du bit: 7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Secteur: F E D C B A 9 8 7 6 5 4 3 2 1 0

Un secteur de catalogue

Position Valeur Définition
00 00 Inutilisé
01 11 Piste du secteur de catalogue suivant (valeur par défaut)
02   Secteur suivant
03 00 Inutilisé
04/27   description d'un fichier
28/4B   description d'un fichier
4C/6F   description d'un fichier
70/93   description d'un fichier
94/B7   description d'un fichier
B8/DB   description d'un fichier
DC/FF   description d'un fichier

Description d'un fichier

Position Valeur Définition
00   Numéro de la piste de la première TSL
01   Numéro de secteur de la première TSL
02   Type de fichier (si le bit 7 est à 1 le fichier est vérrouillé LOCK)
03/21   Nom du fichier
22/23   Taille du fichier

Différents types de fichiers:

00
: fichier texte,
01
: fichier Basic Integer,
02
: fichier Applesoft,
04
: fichier binaire,
08
: fichier type S,
10
: fichier relogeable,
20
: fichier supprimé

La TSL (Track Sector List)

Position Valeur Définition
00 00 Inutilisé
01   Numéro de piste de la TSL suivante pour le fichier
02   Numéro de secteur de la TSL suivante pour le fichier
03/04   Inutilisés
05/06   Inutilisés
07/0B   Inutilisés
0C/0D   Couple piste/secteur (Track/Sector)
     
0E/0F   Couple piste/secteur (Track/Sector)
FE/FF   Couple piste/secteur (Track/Sector)

La suppression d'un fichier

On considère qu'une entrée de catalogue est libre si le premier octet du nom du fichier a pour valeur 0. Ainsi la suppression d'un fichier n'est que <<logique>>, il suffit de libérer les blocs de la TSL et mettre à zéro le nom de fichier.

Appels systèmes à implémenter



Jean-Baptiste Yunès
1999-01-29