ANAIIS, est un acronyme pompeux qui signifirait en mauvais anglais "Another
Native Amiga IO Interface Stack", soit une autre pile native interfaçant
l'USB à quelques fonctions du système AmigaOS.
Another parce qu'il en existe d'autres comme Poseidon ou Sirion.
Native parce que elle a été réalisée en C, c'est du spécifique exec, pas du pompage Linux.
Amiga parce cette machine méritait bien ce genre de programme.
Input/output input parce que c'est pour une souris ou un clavier, output pour une imprimante.
Interface parce que j'avais besoin d'un autre I.
Stack parce que ce genre de programme s'appelle ainsi.
Anaiis est une autre écriture du prénom Anaïs, dérivé du prénom féminin Anne,
et qui signifie "la grâce" en hébreu. Il y avait déjà Paula, Denise, Agnès (qui est devenu par la suite Agnus,
Fat Lady, Fat Agnus, SuperFat Agnus) pour tenir compagnie au 68000, alors pourquoi pas
une de plus...
USB, un port série universel
Depuis 1997, les ports série, parallèle et scsi sont devenus obsolètes face
au standard USB. USB acronyme d'Universal Serial Bus, est un bus
de liaison entre périphériques (devices) et ordinateur (host). L'objectif
est de remplacer les interfaces série et parallèle de l'ordinateur et de concurrencer les interfaces disques.
USB et Amiga
Sur Amiga, Chris Hodges a eu la fantastique initiative de créer une pile USB fonctionnelle sous le nom de Poseidon.
Grâce à sa conception modulaire, Poseidon et son interface Trident sont utilisable sur AmigaOS et MorphOS, avec les contrôleurs
suivant: Highway (bus Zorro II), Subway (port horloge A1200), Pegasos (morphOS), UHCI PCI de DCE sur platine G-Rex, Thylacine
USB (bus Zorro II) et bien d'autres.
Malheureusement, il est impossible de faire fonctionner Poseidon et Highway sur un Amiga de base avec un 68000 à 7.14 MHz.
Ceci est dû à l'utilisation de structures non cadrées sur des adresses paires (le 68000 est incapable de lire ou d'écrire
un mot de 16 ou 32 bits à une adresse impaire) et d'interruptions ajustées à la milliseconde (le 68000 de base est trop
lent).
La carte Highway
C'est une carte Zorro II compacte et très propre, sur laquelle sont connectés 4 ports USB à travers un hub intégré.
Les 4 ports sont répartis sur 2 connecteurs de fond d'ordinateur (attention différents des PC!!).
Cette carte est très ouverte: un module Norway peut s'insérer pour avoir une carte réseau, un module de rom
flash permet d'accueillir une image de rom ou des programmes à charger pendant la phase de démarrage, un clockport
est aussi présent, pour une interface série rapide ou tout simplement brancher une carte Subway pour le développement.
L'installation matérielle ne pose aucun problème.
La carte Subway
C'est une petite plaque entourée de plastique isolant sur laquelle sont connectés d'un coté 4 ports USB à
travers un hub intégré et de l'autre un connecteur pour clockport. La puce qui gère le hub est un uhc124,
comme dans la carte Highway, mais gérée d'une autre façon.
L'installation matérielle ne pose aucun problème, il suffit de connecter calmement les câbles et de suivre
les conseils du site du constructeur www.e3b.de .
La programmation de l'uhc124
La carte Highway et Subway sont équipés d'une puce uhc124 de Transdimension.
La façon dont sont implémentés les registres sont secrets et appartiennent à E3B.
La puce uhc124 permet de gérer 16 requêtes USB par transaction.
Dans Highway, la puce est configurée pour effectuer des accès à partir d'une adresse de base (8 bits
random access) Dans Subway, elle effectue des accès en séquence à partir de registres (8 bits sequential access).
Dans un premier temps, le programme détecte la carte Highway à partir de la bibliothèque expansion.library, ensuite Subway
qui doit résider 0x00d80001 (clockport standard du A1200) ou à une addresse fournie par l'utilisateur sur une carte
tierce (manufacturer, product, offset) ou a une adresse fixe (address).
La pile ANAIIS
Une fois la liste de cartes établie, on détermine les périphériques connectés sur le
concentrateur racine (root hub) de façon récursive, en allumant les ports un à un et en
interrogeant le périphérique connecté.
Ensuite une une boucle infinie scrute toutes les 10 millisecondes, l'état des portes (end point) IN connectées.
Si un changement intervient sur un noeud (hub), en débranchement, le périphérique en question est retiré des
listes, en branchement, un pilote (9,0,0) hub, (3,1,2) souris et (3,1,1) clavier prend en compte immédiatement
(sans chargement) le périphérique.
Pour une souris, ou un clavier, les requêtes sont traduites en évènements Intuition (intuition events).
Les jeux qui utilisent directement le matériel ne fonctionneront pas.
Une interface ieee1284.device utilisera la porte OUT pour les imprimantes usb ou une imprimante classique connectée à
un émulateur (usb to ieee1284).
C'est peu mais c'est déjà pas mal. N'oublions pas que l'on s'adresse à des machines de plus de vingt ans, dont les
concepteurs n'avaient même pas à l'idée de les faire durer autant.
Installation de la pile ANAIIS
Dans un premier temps, il faut s'assurer d'avoir au moins:
Etape 1
Télécharger ANAIIS et copier les fichiers.
http://aminet.net/package/driver/other/anaiis
WB 1.1 (Kickstart version 31) et WB 1.2 (Kickstart version 33)
L'interface graphique ne fonctionne pas, il faudra utiliser la commande en ligne usbprefs à la place.
Faire un peu de place sur la disquette en enlevant les fontes par exemple...
copier usbprefs où l'on veut (si possible à coté de Preferences).
copier usbstart et son icône dans sys:system
copier usbstop et son icône dans sys:system
copier usbreset et son icône dans sys:system
WB 1.3 (Kickstart 34 et plus)
copier anaiis où l'on veut (si possible à coté de Preferences dans sys:prefs).
copier usbstart et son icône dans sys:system
copier usbstop et son icône dans sys:system
copier usbreset et son icône dans sys:system
AmigaOS4.0 (version 50 et plus)
!!Attention!! certains fichiers ont les mêmes noms.
Effectuer une copie du système avant d'installer ANAIIS.
Pour un utilisateur basique, seuls usbstart et s:anaiis.prefs sont important.
usbstop et usbreset ne devraient jamais être activés.
Etape 2
Démarrer la pile en cliquant sur usbstart.
Brancher les périphériques. S'ils fonctionnent, tant mieux! sinon certains points sont à
paramétrer. L'interface d'ANAIIS utilise pleinement intuition, en allant un peu au delà de ses limites,
mais suffisante pour mettre en place quelques réglages. Pour les plus téméraires, il y a usbprefs en
ligne de commande.
Si rien ne fonctionne, ouvrir l'icône anaiis et vérifier l'onglet "Hardware".
Si c'est noté "dummy1" c'est mal parti (ze ugly). Si "Highway" ou "Subway" est écrit c'est bien (ze good), si
rien n'est écrit ce n'est pas bien (ze bad).
Pour une Highway, vérifier que l'item "auto detection" est en place dans l'onglet "Preferences" sous-onglet "System".
Pour une Subway, si l'adresse du "clockport" n'est pas 0x00d80001, il faut savoir où on l'a branché, en connaissant
l'adresse de base de la carte et son offset.
adresse de base : 0x00e90000 offset : 0x00004000 adresse clockport : 0x00e94000Dans l'onglet "Preferences", sous-onglet "System", sélectionner l'item "Subway" avec le pseudo bouton cyclique (on clique pour avancer, shift-click pour reculer) et saisir 0x00e94000 dans la zone "Param1". Ensuite retourner à l'onglet "Hardware", cliquer sur "Close Stack" et fermer. Les paramètres sont sauvés dans s:anaiis.prefs, comme font la plupart des vieux programmes. Recommencer avec usbstart. !!ATTENTION!! si l'adresse est farfelue, le gourou peut très bien venir vous rendre une petite visite.
Param1 manufacturer 0x00000861 Param2 product 0x000000c8 Param3 offset 0x00004000!!ATTENTION!! si l'adresse est farfelue, le gourou peut très bien venir vous rendre une petite visite.
Etape 3
Si la pile fonctionne, il est recommandé de modifier la séquence de démarrage s:startup-sequence
en ajoutant la commande suivante, si possible au début.
run >NIL: sys:system/usbstart >NIL:
Imprimante
Là aussi, pas de mystère, une seule imprimante est gérée pour l'instant.
Cette limitation est surtout due au printer.device, pas à ANAIIS.
copier ieee1284.device dans devs:
copier usbprint où l'on veut ( c: ... )
Ne pas oublier de cocher l'option "parallel device patch" dans l'onglet "Preferences", sous-onglet "Printer".
La face visible d'ANAIIS
Un fichier de localisation anaiis.catalog existe. Il faut le copier dans un répertoire catalog/français
au même niveau que le programme anaiis en 1.3 et en dessous ou alors dans le système lui-même au dessus.
Mais c'est tellement mieux de conserver tous les textes en anglais!
Onglet "Hardware"
Montre les cartes gérant l'usb visibles dans le système.
Quantum
Un truc pas important qui peut perturber pas mal de choses
Bouton "Reset"
Même chose que l'outil "usbreset".
Bouton "Close Stack"
Même chose que l'outil "usbstop".
Onglet "Devices"
usbstat est mieux équipé que cet onglet.
Onglet "Preferences/System"
Param1,
Param2,
Param3 regarder "Installation de la pile ANAIIS", étape 2.
Quantum: pas toucher!
8:
9:
10: nominal
11:
12:
Spoof like usbsys.device:
Si coché, usbsys.device et usbresource.library sont utilisés, sinon anaiis.device et anaiisresource.library sont présents.
Disable internal drivers:
Si coché, seuls les noeuds (hubs) sont gérés, sinon ANAIIS gère les souris, claviers.
Preferences/Mouse
Goofy mode: Comme pour les snowboarders :),
Si coché, la souris pour les gauchers, sinon c'est pour les droitiers.
Middle button:
Si coché, les évènements pour le bouton du milieu sont générés, aucun sinon.
Wheel:
Si coché, les codes 0x7a pour haut, 0x7b pour bas, 0x7c pour gauche, 0x7d pour droite sont générés comme
évènements claviers (et oui!), sinon rien.
Wheel OS4:
Si coché, les évènements roulette spécifiques à OS4.x sont générés.
Aucun effet sur les autres versions du système.
Preferences/Keyboard
ColdReboot on ctrl winl winr
Si coché, il est possible de redémarrer le système avec la combinaison ctrl+winl+winr sur le
clavier usb, comme ctrl+lamiga+ramiga. (Les doubleurs de ROM ne fonctionnent pas...)
Key repeat delay
Délai de répétition du clavier
Le délai en secondes avant répétition est affiché à droite, ce qui est rare sur Amiga...
Key repeat speed
Vitesse de répétition du clavier
Le délai en secondes entre deux émissions de caractères est affiché à droite.
Preferences/HID
Cet onglet concerne la lowlevel.library.
Deux colonnes à droite de chaque port indique son état.
La présence d'une seule colonne indique l'absence de la lowlevel.library (ce qui est le cas ici avec le WB1.3).
Pour plus de détails consulter la documentation sur les fonctions GetKey() et ReadJoyPort().
L'utilisateur peut influer sur le comportement de ces deux fonctions en sélectionnant
le mode à l'aide du bouton cyclique.
-- Laisser faire la lowlevel.library.
USB Le périphérique usb est pris en compte.
Merge Le périphérique usb et l'existant sont pris en compte.
Keyboard clavier
Port 0 port 0 (souris)
Port 1 port 1 (souris ou joystick)
Port 2 port 2 (souris ou joystick)
Port 3 port 3 (souris ou joystick)
Le programme playHID prend en compte un joypad Thrustmaster et rend ses données dans le port 3. Jamais pu le tester dans un jeu, vu
que la plupart tuent le système, or ANAIIS a un besoin vital d'exec.
Preferences/Printer
Parallel device patch
Si coché, la fonction exec OpenDevice() est modifiée pour détourner tous les appels au "parallel.device" en "ieee1284.device".
Dans Preferences (ou Prefs) vérifier que l'imprimante est bien de type parallèle, et que son pilote est compatible.
About
Devinez!?
Debug
Pour l'utilisateur de base, merci de laisser Trace et Audit à 0, sinon le système risque d'être très perturbé.
Le programme USBTrace est nécessaire pour générer des traces ou des fichiers d'audit en RAM:.
La face cachée d'ANAIIS
L'interface API est compatible avec Sirion. Consulter les documentations usbsys.doc inclues dans le sdk OS4.x disponible sur le site d'Hyperion.
Attention toutefois, certaines fonctions ne réagissent certainement pas de la même manière que sur l'original Sirion, car le code et l'architecture sont vraiment différents.
Dans le palais des horreurs logicielles, on peut citer:
usblist (liste des interfaces) http://aminet.net/package/dev/c/usblist
anaiis_print (imprimante) http://aminet.net/package/dev/c/anaiis_print
X-Mass (masstorage, en cours de dev)
Donkey'shoot (ptp + massstorage, en cours de dev, encore une histoire d'ânes)
et certainement d'autres comme
pl2303 (connecteur série) http://thylacine.boing.net/updates.html
ANAIIS, tout comme l'Amiga ou la vraie Anaïs est caractérielle, imprévisible, mais tellement attachante et passionnante à développer ;) Maintenant, arrêtez de vous plaindre si vous n'arrivez toujours pas à dessiner avec un ordinateur. Les souris bas de gamme actuelles sont bien meilleures que le haut de gamme d'il y a 20 ans, et les souris optiques ne s'encrasent jamais!. L'USB existe bel et bien sur Amiga.