Ces fichiers
se rencontrent parfois sur des disques DOS. On peut les identifier comme
des fichiers DOS contenant les octets d'information de chainage de secteur
(Byte per Sector et Next Sector), ils ne possèdent
cependant pas de blocs ou segment de données et ils ne possèdent
pas d'entête classique débutant par $FF $FF, mais ils ont
un entête de programme BOOT.
Dans le
premier secteur nous retrouvons la structure du premier secteur de BOOT
avec les octets de chainage de secteurs.
BYT#>00
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F |
CHAR>
|
0123456789ABCDEF |
00
: 00 54 00 3E 70 3F 00 00 00 00 00
00 00 00 00 00
10 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
20 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
30 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
40 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
50 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
60 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
70 : 00 00 00 00 00 00 00 00 00 00 00 00 00 04
93 7D
|
|
................
................
................
................
................
................
................
...............}
|
Checksum
= $22, Next sector = $093, Bytes per sector = $7D |
Les 6
premiers octets du secteurs donne les informations suivantes:
00
54 : 2 octets qui indique que ce n'est pas un fichier DOS
Atari, car différent de $FF $FF. C'est donc un programme
boot converti en fichier. La procédure de lecture est la suivante.
Toutes
les données seront stockées à partir de l'adresse
mémoire $3E00 (octets #2 et #3), comme pour un fichier
boot. Les 3 derniers octets ne sont pas considéré comme
des données à stocker en mémoire, car il correspondent
aux données de chainage de secteurs: prochain secteur et nombre
d'octets par secteur. Mais les 6 premiers octets sont à
stocker, et donc doivent être mis en mémoire à
l'adresse de chargement.
Les 2 premiers
octets sont ignorés, ils ne servent pas pour le programme de
chargement de fichier (octet #0 et #1).
Les octets
#4 et #5, soit $3F70 dans notre exemple, initialisent les vecteurs
mémoires DOSINI et CASINI de l'Atari.
Une fois
chargé en mémoire, le programme de chargement de fichier
lance l'exécution par un JSR (valeur de l'adresse de stockage
+ 6) soit JSR $3E06 dans notre cas d'exemple.
Si un RTS
est rencontré, alors le programme de chargement de fichier lance
un JSR (DOSINI), soit un JSR $3F70 dans notre cas.
Si un RTS
est rencontré de nouveau, alors le programme de chargement de
fichier lance un JMP (DOSVEC). Le vecteur mémoire Atari
DOSVEC doit donc être initialisé par le programme
du fichier Atari exécuté (cela est réalisé
dans le code du fichier exécutable, dans les instructions qui
suivent $3E06 en général).