Obligement - L'Amiga au maximum

Jeudi 28 mars 2024 - 21:40  

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 - misc.resource et potgo.resource
(Article écrit par Max et extrait d'Amiga News Tech - juin 1991)


Résumons-nous : la disk.resource et la cia.resource n'ont plus de secrets pour vous (ou si peu). Il est donc maintenant temps d'aller voir du côté des ports série, parallèle et manette ce qui s'y passe.

Quelques lecteurs assidus m'ont téléphoné pour se plaindre du passage un tantinet "rapide" sur la disk.resource, car ils auraient bien aimé apprendre à programmer efficacement les lecteurs de leur Amiga, histoire de faire des démos qui se chargent vite et bien.

Alors d'abord, je n'ai pas honte d'avouer que moi, je ne sais pas comment on les programme directement, les lecteurs. Désolé, mais je préfère et de loin utiliser ce fabuleux système que les gens de chez Commodore-Amiga nous ont pondu. Chacun son truc. De plus, au sein d'une démo, on n'a pas besoin des ressources : on attaque directement le matériel sans demander son avis à personne. De toute façon, vu que l'on rend rarement la main au système après, on se fout un peu de tout remettre en état. Sinon, il reste toujours la réinitialisation (le premier qui me saute directement en ROM, je te me le... Bref, j'en fais de la confiture pour routiers sentimentaux).

La misc.resource

Celle-ci est réservée à ceux qui ont besoin d'une vitesse élevée et constante pour leurs transmissions séries et/ou parallèles. Le "misc" dans "misc.resource" est l'abréviation de "miscellaneous", que nous traduirons approximativement par "accessoire". Après avoir ouvert cette ressource à l'aide de OpenResource() (Cf. mois dernier), deux routines sont mises la disposition du programmeur : MR_ALLOCMISCRESOURCE() et MR_FREEMISCRESOURCE(). Jeu : devinez à quoi elles servent...

Que peut-on donc faite avec cette ressource ? C'est très simple : on s'approprie l'usage des ports parallèle et série ainsi que de leurs différents bits de contrôle. Un petit rappel au passage, l'interface série RS-232 fait partie de Paula (registres personnalisés SERPER et SERDAT) et elle est contrôlée par le port A du CIA B (adresse $BFD000) ; l'interface Centronics parallèle est incluse dans le port B du CIA pour les bits de données et est également contrôlée par le port B du CIA B. Oui, je sais : c'est un véritable bordel. Mais avec un peu de patience et beaucoup de méthode. on y arrive.

La routine MR_ALLOCMISCRESOURCE attend pour paramètre dans d0, le code de la ressource à allouer. On trouve les différents codes possibles dans le fichier Include "ri:sources/misc.i" :

Assembleur

MR_SERIALPORT demande l'accès à SERPER et SERDAT, MR_SERIALBITS au CIA A, MR_PARALLELPORT et PARALLEL_BITS aux CIA A et B. Il est préférable, lorsque l'on désire utiliser l'interface série et/ou parallèle, de se réserver le port et les bits, par deux appels successifs à MR_ALLOCMISCRESOURCE, histoire qu'une autre tâche ne se trouve pas bien embêtée si d'aventure elle s'amusait à vouloir elle aussi accéder à la même ressource que vous.

Contrairement à ce qui se passait avec le trackdisk.device et la disk.resource, il n'existe pas forcément de conflit entre la misc.resource et le serial.device ou le parallel.device, ces derniers n'étant pas constamment en train de travailler. Il va quand même de soi que si vous essayez d'allouer la ressource parallèle, par exemple, alors qu'un traitement de texte est en train d'imprimer, vous vous venez refuser son accès.

Autre point à signaler, un bogue du serial.device fait que s'il a été sollicité ne serait-ce qu'une fois depuis l'initialisation de l'Amiga, la ressource série ne sera jamais libérée, même s'il a terminé son boulot depuis belle lurette et gai luron réunis. Pour régler ce problème, le RKM "Libraries & Devines" propose d'utiliser la routine FlushDevice() ci-dessous, avant toute tentative d'accès à la ressource série. La routine que je vous présente est la version assembleur de celle publiée dans le RKM, page 907.

Assembleur

Ainsi, avant que d'essayer d'ouvrir la misc.resource dans le but de vous approprier l'interface sérielle, il vous faudra faire :

Assembleur

Ce qui n'est tout de même pas grand-chose, non ?

La potgo.resource

Celle-là, elle se charge de gérer les... ports souris et manette ! En fait, on l'utilise lorsqu'un contrôleur proportionnel, par exemple une manette analogique, est connectée à l'un de ces ports. Là encore, vous ne m'en voudrez pas, mais le but de cet article n'est pas de faire un court complet sur les manettes analogiques.

Grâce à la potgo.resource, on peut accéder directement et sans danger aux registres matériels POT0DAT ($DFF012), POT1DAT ($DFF014), POTGO ($DFF034), POTGOR ($DFF016) et au port A du CIA A ($BFE001).

La potgo.resource dispose de trois fonctions pour s'approprier certains bits de ces registres. POTGOR pouvant contrôler à la fois le port gauche et le port droit, il en faut en effet préciser à la ressource quels bits nous intéressent.

Assembleur

Cette fonction tente donc de réserver les bits décrits dans le paramètre "mask". En retour, "bits" doit être égal à "mask", sinon c'est que quelque chose s'est mal passé.

Assembleur

Devinez quoi ? Cette fonction libère les bits alloués avec la précédente, oui. Le paramètre "bits" est évidemment celui renvoyé par AllocPotBits().

Assembleur

Enfin, voici la routine qui vous permettra une valeur quelconque dans le registre matériel POTGO. Le paramètre "data" contient le mot de 16 bits à y écrire, et le paramètre "bits" est celui renvoyé par AllocPotBits. La raison en est que cette valeur servira de masque au système, pour être sûr que nous n'attaquiez que les bits qui vous sont réservés.

C'est fini

Bon, on arrêtera là les dégâts. Pour être sincère, je n'ai abordé ces deux dernières ressources que par soucis d'exhaustivité... Il est clair, je pense, qu'en-dehors des deux CIA, il vaut mieux laisser les devises s'occuper du matériel. C'est nettement plus facile et au moins, sans danger !


[Retour en haut] / [Retour aux articles] [Article précédent]