You are here, vous êtes ici:
Atari Pages/Support and FAQ/Technical documentation page

Philippe PVBest's Atari 8bit Web Site

Atari 8bit Technical Documentation
Documentation Technique Atari 8bit

 

Disque BOOT
Disques Boot Atari

1. Qu'est qu'un programme Boot et un disque Boot?

Un programmes 'Boot' d'Atari est sur disquette ou sur cassette, et il est automatiquement chargé et exécuté par le système d'exploitation (OS) (l'OS est une partie de la ROM Atari résidente), ceci dès que l'unité centrale ordinateur Atari est mise sous tension.

Il permet donc le chargement et l'exécution automatique d'un programme Atari à la mise sous tension de l'ordinateur Atari.

Remarques sur les touches Atari au démarrage/mise sous tension:

Les touches START ou OPTION de l'Atari XL/XE doivent parfois être maintenues enfoncées à l'allumage de l'ordinateur... Pourquoi?

Sur un Atari XL/XE, la pression de la touche OPTION lors de sa mise sous tension déconnecte la ROM BASIC, ce qui est normalement nécessaire pour tout programme Boot non Basic.

Par défaut, aucune autre touche n'a besoin d'être enfoncée, la lecture sur le lecteur de disquette Atari, la recherche et le chargement d'un programme Boot est completement automatique.

Sur Atari XL/XE, la pression de la touche START lors de mise sous tension permet de lancer la lecture d'une cassette BOOT sur l'unité de cassette (si le lecteur de cassette est connecté sur le port série), au lieu de lancer le lecteur de disquette.

Si OPTION n'est pas pressé et qu'il n'y a pas de lecteur de casette (ou disquette) prêt et connecté, la ROM BASIC est lancée et son interface est affichée avec le célèbre écran bleu et le message ''READY''.

Si OPTION est pressé et qu'il n'y a pas de lecteur de casette (ou disquette) prêt et connecté, le programme de test résident en mémoire ROM est lancé.

Si un lecteur est présent mais qu'aucun programme BOOT valide n'est trouvé, l'écran affichera une succession de message 'BOOT ERROR'.

2. Le premier secteur du disque:

Exemple de secteur BOOT (exemple arbitraire):

BYT#>00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
CHAR>
0123456789ABCDEF
00 : 00 03 00 3E 10 3E 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 00 00 00
  ..>..>..........
................
................
................
................
................
................
................
Checksum = $8F, Next sector = $000, Bytes per sector = $00

NOTA: Les valeurs Next sector et Bytes per sector ne sont pas utilisées par les programmes Boot.

Les 6 premiers octets du premier secteur du disque contiennent les informations nécessaires au chargement et à l'execution du programme boot:

00 : Le premier octet est copié dans l'addresse de contrôle DFLAGS, il n'est pas utilisé lors du chargement du programme, et il n'a généralement pas d'utilité.

03 : le deuxième octet indique le nombre de secteur à charger dans la mémoire de l'Atari. Cet octet est copié dans l'addresse de contrôle DBSECT. Dans notre cas d'exemple, 3 secteurs sont à charger.
Le nombre maximal de secteur qui peuvent être chargé sur un disque boot est $FF, soit 255 secteurs.

00 3E : les 3eme et 4eme octets indiquent l'adresse de stockage mémoire des secteurs à lire (en RAM) (ces 6 premiers octets sont aussi stockés en mémoire à cette adresse). Ces 2 octets constitue le vecteur BOOTAD. Dans notre cas exemple, les 3 secteurs sont à stocker à partir de l'adresse $3E00.

10 3E : les 5eme et 6eme octets sont copiés dans le vecteur mémoire Atari DOSINI. Dans notre cas exemple, l'adresse $3E10 est stockée dans ce vecteur.

3. Exécution du programme boot:

Une fois que le nombre de secteur DBSECT est chargé en mémoire, le système d'exploitation (OS) exécute la première instruction du programme chargé. Cette instruction est à l'adresse: valeur de stockage + 6, soit (BOOTAD) + 6. Donc cette adresse est $3E06 dans notre exemple. Ce lancement de l'exécution du programme se fait avec une instruction JSR, donc dans notre exempleun JSR $3E06 est exécuté.

Si une instruction RTS est rencontrée lors de l'execution du code, alors le système d'exploitation teste le flag de retenue (carry) du processeur 6502. Si la retenue est à 1, alors le message ''BOOT ERROR'' est affiché à l'écran. Si la retenue est à 0, alors le système d'exploitation lance l'instruction JSR (DOSINI), soit un JSR $3E10 dans notre cas.

Si une instruction RTS est de nouveau rencontrée lors de l'execution du code, alors le système d'exploitation (OS) lance l'instruction JMP (DOSVEC). Le vecteur mémoire Atari DOSVEC doit donc être initialisé au préalable par le programme boot Atari.

L'instruction JMP (DOSVEC) termine le rôle du système d'exploitation et laisse définitivement la main au programme Boot. Le pointeur de pile est alors remis au sommet, i.e. réinitialisé à $FF.

 

[Page Top]

To contact me:/Pour me contacter: M'envoyer un EMail

[ Retour Sommaire Documentation Technique/Back to the Technical Issues Index]

[ Back to My Atari Site Index/Retour vers Mon Index Site Atari]

[Site Philippe Index Principal]

PVBest's Atari 8bit website

This page © PVBest 2002
Atari is a registered trademark / Atari est une marque déposée.
MS-DOS and Windows are registered trademarks of Microsoft Corp / MS-DOS et Windows sont des marques déposées de Microsoft Corp.
All Software names are registered by their owner / Les noms de logiciel appartiennent à leur auteur
.
If you have any comments or anything to tell me about the content of this page please contact me Webmaster [PVBest@free.fr]
Pour tous commentaires ou suggestions sur le contenu de cette page contactez-moi Webmaster [PVBest@free.fr]