DIP-48 · 5719 · dessin, pas une photo
Puces de l'AmigaCommodore (MOS / CSG)
1987
Gary
La colle de l'Amiga 500 : il décide à qui appartient chaque adresse et répond au processeur pour tous.
Gary est la puce de logique de liaison des A500, A2000 et CDTV. Il lit les adresses que le 68000 place sur le bus, sélectionne la mémoire, la ROM, les CIA ou les puces spécialisées, et donne au processeur la réponse dont il a besoin pour clore chaque cycle, même quand il n'y a rien à l'adresse. Il a remplacé une poignée de puces éparses de l'Amiga 1000.
Ce qui prenait vingt puces dans l'A1000
Gary signifie gate array : une matrice de portes logiques gravée sur mesure. Dans l'Amiga 1000, la logique qui relie le 68000 aux puces spécialisées était répartie sur des dizaines de circuits de la série 74 et de PAL. Pour l'A500 et l'A2000, Commodore l'a rassemblée dans une seule puce de 48 broches, et la spécification la décrit avec modestie : « circuits de contrôle divers assurant l'interface et le contrôle de systèmes utilisant le chipset Amiga et un 68000 ».
La puce a deux numéros. Le 5718 est allé dans l'A2000 et le 5719 dans l'A500 et l'A500+, tous deux sous la référence 318072-01. Les tout premiers A2000, de révision 4, embarquaient un gate array fabriqué par Toshiba, avec des défauts : les bulletins de service de Commodore demandaient de le remplacer par la version MOS, devenue la plus courante.
Dans les A3000 et A4000, en 32 bits, le rôle est passé au Fat Gary, un PLCC qui fait le même travail pour un 68030 ou un 68040. Et dans les A600 et A1200, Gary a été remplacé par Gayle, qui lui ajoute l'IDE et le PCMCIA.
Qui habite à chaque adresse
Le travail principal de Gary est de regarder les sept bits d'adresse les plus hauts du 68000, de A17 à A23, et de décider qui répond. Les 2 premiers Mo sont la Chip RAM ; de $200000 à $9FFFFF, c'est l'espace des cartes Zorro II ; en $BFxxxx se trouvent les deux CIA ; en $C00000, la mémoire d'extension de la trappe, qui n'existe que si la carte A501 tire sa broche EXP à zéro ; plus haut, l'horloge temps réel et les registres des puces spécialisées ; et tout en haut, la ROM Kickstart. La carte ci-dessous le montre.
Il y a une exception qui ne vit qu'au démarrage : tant qu'OVL est haut, Gary répond avec la ROM aux adresses les plus basses, pour que le 68000 y trouve son vecteur de reset. C'est le CIA-A qui abaisse OVL, et dès lors l'adresse zéro redevient de la RAM.
Pour chaque adresse, Gary produit les bons signaux de sélection : ROMEN pour la ROM, RAMEN pour la mémoire vidéo, RGAE pour les registres des puces spécialisées, VPA, qui dit au 68000 qu'il parle à un périphérique de type 6800 (les CIA), et les validations de lecture et d'écriture de l'horloge.
- $000000Chip RAM
- $200000Extension Zorro II
- $A00000CIA ($BFD000, $BFE001)
- $C00000Mémoire d'extension ($C00000)
- $C80000Sans usage dans la puce
- $D80000Horloge temps réel
- $DC0000Sans usage dans la puce
- $DF0000Registres des puces ($DFF000)
- $E00000ROM Kickstart
- $E80000Sans usage dans la puce
- $F80000ROM Kickstart
Rayures : ROM aux adresses basses au démarrage (OVL). Adresses sur 24 bits ; dans la barre, les petits blocs sont élargis pour rester visibles. Source : Commodore, A500/A2000 Gary Specification.
La réponse que le 68000 attend
Le 68000 ne termine pas un cycle mémoire tout seul : il attend que quelqu'un abaisse DTACK, l'avis que les données sont prêtes. Si DTACK ne vient jamais, le processeur s'arrête pour de bon. Gary le génère pour tous les périphériques de la carte et aussi pour l'espace d'extension, même s'il n'y a rien : un accès à une adresse vide renvoie ainsi des données sans valeur au lieu de bloquer la machine.
Deux entrées laissent l'extérieur modifier cela. XRDY, tiré par une carte d'extension, retarde DTACK et insère des états d'attente pour les périphériques lents. OVR coupe tout à fait le décodage interne et DTACK, pour qu'une carte prenne la place d'un périphérique de la carte mère, comme une ROM externe, et réponde elle-même. La spécification prévient que l'astuce ne sert pas à remplacer la Chip RAM ni les registres des puces : les temps ne sont pas fiables.
Gary s'interpose aussi quand les puces spécialisées font du DMA. Si le processeur tente d'atteindre le bus vidéo pendant qu'Agnus l'utilise, Gary retient DTACK et le 68000 attend son tour. Et quand le processeur est dans la zone $C00000, il active le signal qui ralentit le Blitter.
Amiga 500 · 1987Et aussi la disquette, le reset et les tampons
Au-delà des adresses, Gary a une série de petites fonctions qui ne tenaient nulle part ailleurs. Il commande les tampons entre le bus du processeur et le bus vidéo, les signaux CDR, CDW et C4 qui ouvrent les verrous au bon moment des horloges C1 et C3. Il reçoit le reset du clavier, et c'est lui qui tire les lignes de reset et de halt du 68000.
Et il s'occupe d'un morceau du lecteur de disquettes : il mémorise l'état du moteur quand le lecteur est sélectionné, et met en tampon les signaux d'écriture et de moteur qui vont au connecteur. C'est pourquoi un lecteur qui ne lance pas son moteur peut avoir Gary pour coupable, et pas seulement le CIA-B.
La puce fonctionne à partir des horloges d'Agnus : C1 et C3 à 3,58 MHz, décalées de 90 degrés, et CDAC à 7,14 MHz. Elle n'a ni horloge propre ni registres : c'est de la logique pure, donc elle ne se programme pas, elle se câble.
Le saviez-vous…
Sans Gary, un 68000 accédant à une adresse vide resterait bloqué à jamais à attendre DTACK. C'est Gary qui garantit que toutes les adresses, même sans rien derrière, répondent.
Les premiers A2000 embarquaient un Gary Toshiba défectueux. Commodore l'a fait remplacer par celui de MOS, et la spécification elle-même admet un cas où aucun des deux ne tient les temps.
La broche EXP est la façon dont Gary sait qu'il y a de la mémoire dans la trappe : la carte A501 la relie à la masse, et alors seulement Gary répond à l'adresse $C00000.
Il ne consomme que 25 mA au maximum. Pour une puce de 48 broches qui participe à chaque cycle du bus, c'est presque rien.
Fat Gary n'est pas un Gary plus gros : c'est un PLCC pour les A3000 et A4000, avec un bus de 32 bits à décoder, et deux références (4393 et 4791) pour le même travail.
Pannes où elle intervient
Guides de diagnostic de l'explorateur de cartes qui mesurent les signaux de cette puce, carte par carte.
Écran noir, ne démarre pas
Le voyant s’allume mais l’écran reste noir, sans aucune couleur. Mesurez dans l’ordre : chaque étape ne vaut que si la précédente est bonne.
Amiga 500 rev 8A →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
La disquette ne se lit pas
Le lecteur interne ne tourne pas, ne bouge pas la tête, ou tourne sans lire. La CIA-B commande le lecteur et Paula reçoit les données.
Amiga 500 rev 8A →Amiga 4000 rev 2 →Amiga 4000 rev B →Amiga 4000T rev 4 →
Où on la trouve
Sources
- [1]A500/A2000 Gary Specification · Commodore · arquivo de Dave Haynie (espelho devili.iki.fi)
- [2]Gary 5718/5719 e Fat Gary (números de peça, máquinas, nota sobre a Toshiba) · Big Book of Amiga Hardware
- [3]A500 Service Manual (PN-314981-04) · Commodore, 1990
- [4]Amiga custom chips · Wikipédia




