Obligement - L'Amiga au maximum

Jeudi 23 novembre 2017 - 10:06  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

 · Accueil
 · A Propos
 · Articles
 · Galeries
 · Glossaire
 · Hit Parade
 · Liens
 · Liste jeux Amiga
 · Quizz
 · Téléchargements
 · Trucs et astuces


Articles

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

 · Articles in english
 · Articles in other languages


Twitter

Suivez-nous sur Twitter




Liens

 · Sites de téléchargements
 · Associations
 · Pages Personnelles
 · Moteurs de recherche
 · Pages de liens
 · Constructeurs matériels
 · Matériel
 · Autres sites de matériel
 · Réparateurs
 · Revendeurs
 · Presse et médias
 · Programmation
 · Développeurs logiciels
 · Logiciels
 · Développeurs de jeux
 · Jeux
 · Autres sites de jeux
 · Scène démo
 · Divers
 · Informatique générale


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


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


Partenaires

Annuaire Amiga

Amedia Computer

Relec

Hit Parade


Contact

David Brunet

Courriel

 


Programmation : Assembleur - programmation structurée du Copper
(Article écrit par Roméo Rapido et extrait d'A-News (Amiga News) - juillet 1989)


Bon, maintenant que l'on a vu la théorie de la programmation du Copper, il est temps de passer à la pratique, mais pas n'importe quelle pratique. Nous attaquons donc la programmation dite "propre" car comme vous l'avez peut-être constaté le programme du n°13 fonctionne très bien mais on a souvent du mal à exécuter des instructions CLI après l'avoir utilisé.

Nous allons donc nous lancer dans une programmation plus structurée, c'est-à-dire avec des fonctions comme dans un langage de haut niveau tel que le C en essayant de restituer le contexte exact en sortie de programme. J'entends déjà les hordes de protestations : "Si c'est pour programmer comme en C autant faire du C". A ceux-là je ne dirai qu'un mot, Ouaaatatlaa (c'est le juron préféré du Chorizo. Ça ne veut rien dire mais ça soulage). Quand vous aurez manipulé des listes Copper en C vous comprendrez pourquoi on le fait plutôt en assembleur (ceci dit, il est tout à fait possible de le faire en C).

La fonction debut: (qui est le point d'entrée du programme) contient les appels aux fonctions d'initialisations (elle devra toujours être la première du listing), puis à votre programme et enfin elle restaure le contexte pour pouvoir sortir sans planter la machine et sans être obligé de faire un redémarrage. Il est à remarquer que si vous lancez ce programme depuis le Workbench avec une icône vous aurez droit à un plantage à cause de la fonction "Open" du DOS qui, dans ce cas précis, ne marche pas. Pourquoi marche-t-elle sous CLI et pas sous Workbench ? Mystère.

Vous trouverez de plus une fonction "delay" synchronisée sur le balayage écran, qui permet de programmer des temporisations au 50e de seconde, en utilisant une interruption IRQ. Cette routine présente, entre autres, l'avantage d'être totalement indépendante du processeur utilisé (68000, 68010, 68020 et 68030). Très utile, par exemple pour faire des accès disque qui nécessitent des temporisations assez pointues, puisque le balayage écran se fait à 50 Hz quel que soit le coeur de la machine. Cette fonction nous servira également plus tard pour nous synchroniser sur le balayage écran en utilisant le Blitter. Sinon le programme affiche une image sauvée en format RAW (j'utilise Pixmate mais il existe des DP qui font cela très bien, en particulier Deluxe IFF Converter qui est en téléchargement sur DEEP), attend une seconde et enfin attend que vous cliquiez sur le bouton gauche de la souris pour sortir et revenir au CLI. De plus, il y a un exemple (mauvais soit, mais c'est un exemple et vous n'êtes pas obligé d'en faire autant et donc vous pouvez faire mieux) de changement de la couleur 0 en liste Copper.

Voici les adresses des registres fondamentaux. Le "r" indique qu'il s'agit d'un registre accessible en lecture, sinon ils sont accessibles uniquement en écriture.

Assembleur
Assembleur
Assembleur
Assembleur
Assembleur
Assembleur
Assembleur
Assembleur

Ouf, c'est fini ! Surtout gardez bien ces routines au chaud car elles serviront dans les prochains numéros (surtout les routines d'initialisations) où il sera question du Blitter (entre autres). Je donnerai alors juste le bsr et à vous de repêcher la routine dans notre bibliothèque. Si il y a des modifications à faire sur une fonction, elle repassera entièrement.

Encore un dernier détail, pour compiler avec Aztec, utilisez les options suivantes "as -C -D asm.a" et "In +Cdb asm". Bien qu'ayant été écrit en Aztec la transposition dans un autre assembleur ne devrait pas poser trop de problèmes. Par exemple, si vous utilisez asm68k (assembleur du DP), il semble qu'il ne reconnaisse pas les instructions du type "move.l #etiquette,Reg". Remplacez-les donc par des "lea etiquette,Reg". Si vous utilisez cet assembleur, liez avec le drapeau "Chip" si vous avez une extention mémoire (conseil valable également pour ceux qui utilisent le Lattice ou le MetaComCo qui utilisent aussi Blink). Pour Seka, il faut changer tous les "equ" en "=", et en général il faut remplacer les étiquettes temporaires (1$, 2$, etc.) par de vraies étiquettes (a1:, a2:, etc.).

Bon courage pour taper tout cela. Et pour les flémards pensez au 3615 code DEEP et au téléchargement. Mais surtout ayez une pensée zémue pour moi, pauvre mercenaire de l'informatique (Frédéric Autechaud : y va m'faire chialer).


[Retour en haut] / [Retour aux articles]