Obligement - L'Amiga au maximum

Vendredi 09 mai 2025 - 10:10  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in English


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


En pratique : Recommandations officielles du CATS aux programmeurs
(Article écrit par CATS et extrait d'Amiga News Tech - avril 1991)


Depuis le temps qu'on vous le dit et le répète : l'Amiga n'est pas une machine comme les autres ; ne faîtes pas ceci, ne faîtes pas cela, au contraire faîtes comme ça... Voici une bonne fois pour toutes les recommandations officielles des gens qui ont fait l'Amiga (le CATS, Commodore Amiga Technical Support).

La première chose à faire lorsque l'on programme "système" est d'utiliser les includes officiels de Commodore-Amiga, et non des includes personnels, pouvant être source d'erreur dans certains cas, mais qui surtout limitent la maintenance du logiciel en cas de mise à jour du système. Et ceci quel que soit le langage utilisé : C, assembleur, Pascal, Fortran... Certaines sociétés proposent leurs propres includes, souvent avec l'aval de Commodore-Amiga. Ceux-ci sont également sains à utiliser.

Règles générales de développement

L'environnement de l'Amiga est très différent de celui d'autres ordinateurs plus anciens. L'Amiga est multitâche, ce qui signifie que plusieurs programmes doivent se partager la même machine sans interférer les uns avec les autres. Cela impose quelques règles à suivre.

1. Assurez-vous toujours de recevoir ce que vous demandez : allocations de mémoire, fenêtres, écrans, fichiers, bibliothèques, périphérique logique, ports, etc. Quand une fonction peut provoquer une erreur, prévoyez une porte de sortie beaucoup de programmes mal écrits semblent fonctionner correctement, jusqu'à ce que des conditions inhabituelles surviennent (manque de mémoire, disque corrompu...), qui le font travailler avec des pointeurs invalides ou se brancher sur des routines non testées.

2. Faites le ménage derrière vous ! Cela s'applique aussi bien à une fin normale de programme qu'à une sortie prématurée, à cause d'erreurs inattendues. Tout ce qui a été ouvert doit être fermé, tout ce qui a été alloué doit être désalloué. Il est généralement conseillé de fermer en sens inverse des ouvertures. Vérifiez dans le manuel de votre système de développement que les routines startup ne libèrent pas certaines ressources pour vous en cas de terminaison anormale, pour ne pas les libérer deux fois. Si vous programmez en C, faites en sorte que l'appui sur "Ctrl-C" provoque toujours une porte dé sortie de votre programme.

3. Rappelez-vous que la taille mémoire, les périphériques et même les ROM peuvent différer d'une machine à tuie autre. Ne supposez jamais comme valides certaines plages d'adresses ou certaines noms de volumes, spécialement de disques durs. Ne sautez jamais directement en ROM. Ne vous attendez pas à trouver certaines structures système à une adresse particulière. La seule adresse absolue dans le système est l'adresse 0x00000004, qui contient l'adresse de base d'exec.library.

4. Votre programme ne peut et ne doit jamais accéder au matériel directement. Le matériel est contrôlé par un système qui n'apprécie guère les ingérences. Partager du matériel entre plusieurs programmes requiert des protocoles stricts. Utiliser les interfaces définies pour vous assurera votre logiciel de tourner sur les prochaines version de l'Amiga.

5. N'accédez jamais à des structures publiques sans les avoir au préalable réservées ("lock, verrou") : d'autres programmes que le vôtre peuvent vouloir y accéder en même temps.

6. Le système ne gère pas la pile de ses tâches. Attention au débordement de pile. Des versions futures du système pourront réclamer plus d'espace libre sur la pile qu'actuellement. Prévoyez large.

7. Si votre programme doit attendre des évènements extérieurs, comme la sélection d'un menu ou l'appui sur une touche, n'entrez pas dans une boucle répétitive, qui ralentirait considérablement le système. Laissez plutôt votre programme "en sommeil" avec Wait() jusqu'à ce que l'évènement ait lieu. Assurez-vous de répondre avec ReplyMsg() à tous les messages que le système ou d'autres tâches peuvent vous envoyer.

8. Les tâches et les processus s'exécutent dans le mode utilisateur du 68000. Le mode superviseur est réservé pour les interruptions, les traps, et le partage du temps entre les tâches. Faites très attention si certaines de vos routines s'exécutent en mode superviseur : les exceptions en mode superviseur sont irréparables.

9. La plupart des fonctions du système requièrent certaines conditions particulières pour fonctionner. Toutes les fonctions du DOS et celles qui peuvent appeler le DOS indirectement (comme l'ouverture d'un périphérique logique, d'une bibliothèque...) ne peuvent le faire que depuis un processus. Une tâche n'est pas suffisante.

10. N'interdisez pas le multitâche (par Forbid()) ou les interruptions (par Disable()) pendant de trop longues périodes. Il faut également savoir que toutes les fonctions qui, à un moment ou à un autre, attendent (Wait()) brisent provisoirement l'interdiction du multitâche. Ceci inclut les fonctions DOS et les entrées-sorties standard, comme printf().

11. Toutes les données des circuits spécialisés doivent être logées en mémoire Chip : plans de bits, échantillons sonores, tampon mémoire pour le trackdisk, images, sprites, BOB... La fonètion AllocMem() dispose d'un drapeau qui spécifie la mémoire Chip.

12. N'utilisez pas de boucles de temporisation ! Dans un environnement multitâche, une même boucle peut s'exécuter deux à dix fois plus vite, selon le nombre de tâches actives et le processeur utilisé. La fonction Delay() d'AmigaDOS assure un moyen simple d'attendre quelques instants. Les deux 8520 disposent chacun de deux chronomètres que les programmeurs qui oublient le système n'en on sans doute entendu parlé.

13. Obéissez aux conventions :
  • Toute adresse accédant à un mot ou à un mot long doit être paire.
  • Tous les pointeurs sont 32 bits (non 24). Les 8 bits supplémentaires ne doivent pas être utilisés pour stocker des données.
  • Tout champ non défini ou réservé dans une structure doit être mis à NULL, pour compatibilité antérieure.
  • L'allocation dynamique de structures assure qu'elles seront alignées sur des adresses paires.
Notes aux programmeurs en assembleur

1. N'utilisez pas l'instruction "TAS", qui assume un cycle indivisible de lecture-modification-écriture. Le DMA système pourrait entrer en conflit avec ce cycle spécial.

2. Les fonctions du système sont appelées avec a6 pointant sur l'adresse de base de la bibliothèque ou du périphérique logique concerné.

3. Sauf quand indiqué, les fonctions système peuvent utiliser les registres a0, a1, d0 et d1. Les autres registres sont préservés.

4. Les fonctions qui retournent une valeur n'affectent pas obligatoirement les drapeaux du processeur. C'est au programmeur de s'assurer de la validité du retour (soit avec TST, soit avec MOVE).

5. Compatibilité 60000/68010/68020/68030 :
  • N'utilisez pas l'instruction "MOVE SR,...", privilégiée sur certaines catégories de 680x0. Utilisez à la place GetCC-) d'exec.library.
  • N'utilisez pas de code auto-modifiable.
Si vous suivez toutes ces recommandations, alors votre programme est assuré d'une longue vie sur l'Amiga. Le non-respect de l'une de ces règles peut empêcher votre application de fonctionner sur une machine particulière !


[Retour en haut] / [Retour aux articles]