Obligement - L'Amiga au maximum

Vendredi 19 avril 2024 - 22:41  

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 : GFA Basic - trackdisk.device
(Article écrit par Pierre-Philippe Launay et extrait d'Amiga News Tech - février 1992)


Il existe plusieurs fonctions très agréables pour lire les fichiers, mais elles sont insuffisantes pour une véritable gestion des secteurs. Il faut alors utiliser les structures et les routines propres au système.

Vous savez que toutes les routines C ont été réécrites en GFA 3.52F, aussi nous ne serons pas vraiment dépaysés. La démarche est tout à fait identique, voire un peu plus simple en GFA : le trackdisk.device utilise bien sûr une structure d'entrée-sortie étendue (IOExtTD). Pour plus de détails, je vous conseille de lire le message des Thaïlandaises de Max dans l'ANT 24, ainsi que la Bible de l'Amiga pages 357, 543 et 687. Voici ce que cela donne pour notre programme :

GFA Basic

Ainsi, une structure Message est associée à un message ne devant pas dépasser 64 ko. Ce nombre est une limite qui peut avoir ses contraintes.

GFA et C, mon général !

Les bibliothèques et les périphériques logiques (devices) ont une logique de base assez semblable, ou tout au moins assez similaire (gasp, j'ai dû dire la même chose). Les structures d'unité sont également assez classiques et nous devons seulement savoir que nous disposons ici des unités DF0: à DF3: et que nous écrirons pour cela 0, 1, 2 ou 3 dans l'IO.
  • iodata contiendra l'adresse où débutent les données à lire. Attention, le système s'avère ici particulièrement ségrégationniste : tout d'abord, celles-ci doivent avoir une taille au minimum égale à 512 octets, ce qui élimine Super OctetoPhage. Le pauvre. Et ensuite on ne pourra les trouver qu'en mémoire Chip (MALLOC).

  • io_offset doit également toujours être un multiple de 512 octets. Il n'est donc pas possible de se positionner à cheval sur deux secteurs en écrivant par exemple 300.

  • iotd_count indique le nombre d'insertions et de retraits de disquettes dans le lecteur. Cette valeur augmente de 2 pour un simple échange de disquettes. Or, comme la valeur de référence correspond au dernier réamorçage du système, un nombre impair signalera immanquablement un lecteur vide et un nombre pair, la présence d'une disquette.

  • iotd seclabel doit avoir 16 octets d'un seul tenant et est soit réservé aux lettres du droit d'auteur, soit rempli avec des 0. SuperOctetoPhage y écrit d'ailleurs un 0 par lettre de son nom et comme il dit, personne ne pensera à les modifier.
Toujours du C, mon général !

Il reste à parler de la structure ReplyPort :

GFA Basic

Et enfin du GFA, mon général !

Tout cela nous permet de savoir où nous allons et grâce aux remarques, le codage se laissera ainsi déchiffrer très facilement.

On trouve d'abord l'adresse de notre propre tâche par la méthode "longue" : FindTask(0). Il existe en effet la possibilité de remplacer cette ligne par un appel direct plus rapide à la structure Exec à la position 276, appelé justement ThisTask, mais attention, ce procédé ne peut fonctionner qu'avec la recherche de notre propre tâche car ce pointeur n'indique que la tâche actuellement traitée et ne peut donc indiquer les autres tâches. Ouf, Super OctetoPhage peut reprendre sa respiration après cette longue tirade. Nous modifions ensuite le pointeur mp_sigtask et nous pouvons alors nous ajouter au système.

Et que le périphérique logique soit

L'ouverture du dispositif se fait bien entendu avec la fonction OpenDevice(). Voici les erreurs possibles :
  • 0 IOERR_NOERROR
  • -1 IOERR_OPENFAIL : l'a pas lu.
  • -2 IOERR_ABORTED : fin provoquée par l'action ABORTIO().
  • -3 IOERR_NOCMD : commande impossible.
  • -4 IOERR_BADLENGTH : longueur impossible.
  • 20 TDERR_NOTSPECIFIED : erreur du trackdisk non reconnue.
  • 21 TDERR_NOTSECHDR : absence d'en-tête de secteur.
  • 22 TDERR_BADSECPREAMBLE : mauvais préambule du secteur.
  • 23 TDERR_BASECID : mauvaise interruption disquette dans le secteur.
  • 24 TDERR_BADHDRSUM : mauvaise somme de contrôle du gestionnaire.
  • 25 TDERR_BADSECSUM : mauvaise somme de contrôle du secteur.
  • 26 TDERR_TOOFEWSECS : pas assez de secteurs sur la piste.
  • 27 TDERR_BASECHDR : en-tête de secteur illisible.
  • 28 TDERR_WRITEPROT : disquette protégée contre l'écriture.
  • 29 TDERR_DISKCHANGED : lecteur de disquette vide.
  • 30 TDERR_SEEKERROR : mauvaise position de la tête de lecture.
  • 31 TDERR_NOMEM : pas assez de mémoire.
  • 32 TDERR_BADUNITNUM : lecteur de disquette non connecté.
  • 33 TDERR_BADDRIVETYP : mauvais lecteur de disquette.
  • 34 TDERR_DRIVEINUSE : lecteur déjà en cours d'utilisation.
  • 35 TDERR_POSTRESET : pas d'accès autorisé après réinitialisation.
Voilà. Nous lirons les données grâce à Io et celui-ci modifiera la structure diskio% avant de se lancer avec ~DoIO(). L'affichage du secteur tient compte de quelques décalages spécifiques, puis nous libérons le système.

GFA Basic
GFA Basic
GFA Basic


[Retour en haut] / [Retour aux articles]