home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Crawly Crypt Collection 1
/
crawlyvol1.bin
/
utility
/
disk
/
zorg_134
/
docs
/
boot.doc
next >
Wrap
Text File
|
1994-02-03
|
7KB
|
151 lines
ZORG, Copyright Ludovic Rousseau 1993, 1994
BOOT
Chaque disquette ou partition possède ce que l'on appelle un boot sector. Ce
secteur renferme les caractéristiques de la disquette ou de la partition
(nombre de faces, de pistes...) et peut renfermer un petit programme le cas
échéant (un virus, un anti-virus, un chargeur de jeu ou autre).
Le boot sector contient les champs suivants :
Octet Taille Label
$00 2 BRA.S branch to boot code
$02 6 OEM
$08 3 SERIAL numéro de série
$0B 2 BPS nombre d'octets par secteur
$0D 2 SPC nombre de secteurs par bloc
$0E 2 RES nombre de secteurs réservés
$10 1 NFATS nombre de FATs
$11 2 NDIRS nombre d'entrées à la racine
$13 2 NSECTS nombre de secteurs
$15 1 MEDIA descripteur de MEDIA
$16 2 SPF nombre de secteurs par FAT
$18 2 SPT nombre de secteurs par piste
$1A 2 NSIDES nombre de faces
$1C 1 NHID nombre de secteurs cachés
$1D 1 ???
$1E 2 EXECFLG
$20 2 LDMODE
$22 2 SSECT
$24 2 SECTCNT
$26 4 LDADDR
$2A 4 FATBUF
$2E 11 FNAME
$39 1 réservé
$3A 1C4 code assembleur le cas échéant
$1FE 2 CheckSum
Si le mot de poids faible de la somme des 256 mots du secteur est égal à
$1234 alors le secteur est exécutable. Lors du démarrage de l'ordinateur
(boot), le système charge le secteur et effectue un JSR sur le premier octet du
secteur. Pour cette raison la première instruction du boot sector est une
instruction de branchement inconditionnel sur le code effectif qui se trouve un
peu plus loin dans le secteur (BRA.S $3A(PC) en général). Le secteur n'est pas
chargé à une adresse fixe en mémoire, pour cette raison le code exécuté ne doit
pas utiliser l'adressage absolu mais seulement l'adressage relatif au compteur
de programme (PC).
L'OEM (Other Enterprise Manufactoring) n'est pas utilisé par le système. Il
sert simplement de signature. Par exemple il indique le nom du programme qui a
formaté le disque.
Le numéro de série (SERIAL) est très important. Il permet au système de
différencier les disques. Si deux disquettes ont le même numéro de série, le
système ne se rendra compte de rien lors d'un changement de disquette et ne
remettra pas sa copie de la FAT à jour. Il utilisera l'ancienne FAT avec le
nouveau disque croyant que c'est encore l'ancien. Ce n'est pas trop grave si on
ne fait que lire le disque mais c'est catastrophique si on écrit dessus, le
système écrivant l'ancienne FAT sur le nouveau disque. J'ai perdu beaucoup de
disques à cause de cela en utilisant un formateur qui mettait toujours le même
numéro de série.
BPS (Bytes Per Sector) donne le nombre d'octets par secteur. Normallement il y
a 512 octets par secteur. ZORG ne sait pas gérer des secteurs ayant une taille
différente de 512 octets.
SPC (Sectors Per Cluster) donne le nombre de secteurs que contient un bloc. La
gestion du disque se fait par blocs (voir FAT.TXT). Un bloc occupe en général 2
secteurs.
RES (REServed) donne le nombre de secteurs réservés. Ce nombre est égal à 1
généralement. Peut-être prend-t-il en compte le boot sector.
NFATS (Number of FATs) vaut 2. La deuxième FAT sert à pouvoir quand même
récupérer le disque si la première FAT a un problème de lisibilité.
NDIRS (Number of DIRectoryS). Contrairement à un dossier, la taille du
répertoire principal est fixe (voir DISK.TXT). NDIRS donne le nombre de
fichiers ou dossiers que la disquette peut supporter à la racine. Ce champ vaut
112 sur une disquette 'normale' ce qui est souvent largement suffisant.
NSECTS (Number of SECTorS) donne le nombre total de secteurs sur la disquette.
Il vaut Sects * Pistes * Faces si Sects est le nombre de secteurs par piste,
Pistes le nombre de pistes et Faces le nombre de faces.
MEDIA n'est pas utilisé par le système.
SPF (Sectors Per FAT) est la taille de la FAT en secteur. Cette taille dépend
du nombre de blocs donc de secteurs sur la disquette. Chaque bloc occupe 1.5
octet dans la FAT (2 pour un disque dur). Il faut que la FAT ait une taille en
rapport avec le nombre de blocs pour pouvoir tous les contenir.
SPT (Sectors Per Track) est le nombre de secteurs par piste. Il vaut 9 pour une
disquette 'normale'. On peut facilement et sans aucun problème utiliser des
disquettes avec 10 secteurs par pistes. L'appel système XBIOS de formatage
(Flopfmt) supporte 10 secteurs par piste. Certains programmes permettent de
monter jusqu'à 11 secteurs par piste (comme sur Amiga) mais à ce niveau de
densité les secteurs se suivent de très près et la lecture de la disquette est
fortement ralentie. Je ne vous conseille pas d'utiliser des disquettes de plus
de 10 secteurs. Les nouvelles machines Atari ont des lecteurs haute densité qui
permettent de doubler le nombre de secteurs par piste. 18 secteurs par piste
est alors la valeur 'normale'.
NSIDES (Number of SIDES) donne le nombre de faces de la disquette. Il peut
théoriquement y avoir un maximum de 65535 faces car le champ est sur 16 bits. 8
bits auraient largement suffit à mon avis, surtout que ce champ n'est pas
utilisé pour une partition de disque dur et donc n'ira jamais au-delà de 2 (il
existe des disquettes à 3 faces ?).
NHID (Number of HIDden sectors) n'est pas utilisé par le système.
Quelquefois, le boot sector est 'Loader', ce qui veut dire qu'il contient des
informations permettant au système de charger un fichier ou des secteurs à
partir de la disquette. Cette possibilité est, entre autres, utilisée par les
disquettes contenant un système utilisé aux débuts du ST lorsque le système
n'était pas encore en ROM et qu'il fallait le charger à partir d'une disquette.
Dans ce cas le boot sector contenait des informations pour charger le fichier
TOS.IMG. Pour qu'un boot sector ait ces propriétés, il faut que l'OEM soit égal
à la chaîne ASCII 'Loader'.
EXECFLG (EXEC FLaG) est copié dans la variable système _cmdload en $482.
LDMODE (LoaD MODE) indique le mode de chargement. Si LDMODE est nul le fichier
FNAME est recherché sinon les secteurs indiqués sont chargés.
SSECT (Start SECTor) indique le secteur de départ.
SECTCNT (SECTor CouNT) donne le nombre de secteurs à charger.
LDADDR (LoaD ADDRess) est l'adresse où sont chargés les secteurs.
FATBUF (FAT BUFfer) est l'adresse à utiliser pour la FAT.
FNAME (File NAME) est le nom du fichier à charger. Ce nom est composé de 8
caractères plus une extension de 3 caractères.
Vient ensuite, s'il existe, le code assembleur du boot sector.