Obligement - L'Amiga au maximum

Vendredi 19 avril 2024 - 22:08  

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

 


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 extension 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]