| Présentation | Hardware | Programmation | Links | Divers | Contact |

Il y a quoi dans un Atari STE ?

atariste.jpg

La Carte Mère :

atariste_motherboard.jpg
Principaux Chips:

1 : Le 68000 (Motorola) à 8Mhz (Le processeur)
2 : Le 68901 (Motorola): Gère principalement les interruptions, les Timers, le port série.
3 : Le Blitter (Atari): Composant graphique permettant l'affichage de sprite de façon câblé.
4 : La GST MCU (Glue +MMU) (Atari): C'est la logique interne du ST : Gestion de la DRAM, Horloges, décodage d'adresse, Joysticks évolués, etc.
5 : Le Shifter (Atari): Il s'agit du composant video proprement dit. Ce composant gère également le son DMA.
6 : La DRAM : Il y a ici 2 barrettes de 256Ko d'origine sur un 520STE
7 : Le YM2149 (Yamaha) : Composant son de la gamme ST.
8 : 6850 (Motorola / ST) : Contrôleurs séries gérant le MIDI et le clavier
9 : 256Ko de ROM contenant le TOS et le GEM.
10 : Contrôleur DMA (Atari) pour le disque dur / Lecteur de disquette.
11 : Le WD1772 (Western Digital) : Le contrôleur de disquette du ST.
12 : Le LMC1992 (Nationnal) : Un mixer de son. Ce composant permet le réglage du son (Balance / Grave / Aigue, etc)

 

Clavier/Souris:

clavieratarist.jpgsouris_atarist.jpg

1 : HD6301V1P (Hitachi) Microcontrôleur 8 bits comme contrôleur clavier / souris / joystick.
2 : LM339 : comparateur de tension

 

Un article sur le hardware du STE (ST Magazine N°44 11/1990)

ST Magazine N°44

L'apparition du STE a été suivie de bien des questions quant aux nouvelles performances de la machine. Nous avons déjà eu l'occasion de vous présenter les remarquables possibilités du STE au niveau logiciel et la programmation qui en résulte : mais jusqu'à présent, aucune étude hardware poussée n'a été faite pour présenter les changement par rapoort a la gamme STF. Ce qui suit est donc tout particulièrement destiné aux fous de la bidouille mais aussi à tous les programmeurs curieux désirant mieux comprendre leur machine...

Dans un souci de synthèse et de compréhension pour tous, en particulier ceux pour qui le STE est leur prmière machine, et constatant la pauvreté de la littérature sur le hardware des STF et STE. malgré certains titres prétentieux, j'ai tenté d'être le plus complet possible, en faisant de nombreuses références à la gamme précédente.

Les circuits des ST étant, en fonctionnement liés les uns aux autres, il n'est pas évident de découper le hardware en domaine distincts, tels que son ou video, même si les registres ont été groupés par les concepteurs dans des zones d'adresses correspondant chacune à un domaine bien précis, dans le but de faciliter la vie des programmeurs. Ainsi il est nécessaire de commencer par l'étude du brochage du circuit principal des STE qui touche à tous les domaines... C'est pour cela que vous devrez faire des sauts durant votre lecture.

 

A l'origine des premiers ST, la firme Atari a conçu deux circuits qui intégraient tous les circuits qui intégraient tous les circuits TTL que l'on trouvait sur les cinq grandes cartes du prototype de fin 84 (et oui, déjà!) - un ST à cinq étages en quelque sorte - qui sont connus sous les noms de MMU et GLUE.

 

Le shifter en portes TTL!

-> Le GLUE, comme son nom l'indique, assure la cohésion du système STF, en étant responsable des tâches suivante : décodage des adresses utilisées par le 68000 dans la zone des 16Mo pour la sélection des circuits utilisant les bus de données et/ou d'adresses et génération d'un signal d'erreur de bus (qui se traduit par les deux bombes tant connues), si vous adressez une zone interdite à tous (et toutes) ou une zone réservée au mod superviseur du 68000, alors que vous êtes en mode utilisateur. Le GLUE est aussi responsable de la délivrance des signaux de synchronisation vidéo, de la gestion des interruptions venant du 68901 (MFP), et de la gestion des priorités hardware sur le bus, ainsi que l'arbritage de ce dernier.

-> La MMU (Memory Management Unit : Unité de gestion mémoire) assure la gestion de la mémoire (RAM) et de son adressage. Mais la MMU est aussi le circuit principal pour la gestion de l'adressage de la RAM vidéo (tant utilisée pour les scrollings), ainsi que le suivi des transferts disques par le circuit DMA. Mais nous verrons cela en détail plus loin...

Le GST MCU

Un scrolling plus fin étant prévu, la MMU a été entièrement revue, et dans le but de gagner de la place sur la carte et réduire le nombre de pistes, on l'a fusionnée dans un même boîtier avec ce qui aurait dû être le successeur du GLUE. Ce nouveau circuit porte le nom de GST MCU (qui signifie sans doute Memory Controler Unit), il est impréssionnant avec ses 144 broches en boîtier CMS, ne laissant pas la moindre chance de réparation à quiconque n'a pas le matériel requis pour souder ce "monstre"... (encore faudrait-il qu'il soit disponible chez les revendeurs...). Voir son brochage en figure 1 (dans ce qui suit, tous les signaux précédés d'une étoile sont actifs au niveau bas.

Pour parler de l'ancienne gamme, j'utiliserai la référence STF qui inclut bien évidement les MEGA ST). Outre les fonctions des GLUE et MMU, le GST MCU assure la gestion de l'adressage du son stéréo 8 bits en DMA, ainsi que la gestion des deux nouveaux ports joysticks, paddles et stylo optique sur la gauche du STE.

Le bus d'adresses est de 23 bits, il permet donc les décodages d'adresses dans la zone des 16 Mo adressable par le 68000, et aurait donc pu gérer plus de 4 Mo de ram, limitation due jusque-là à la présence de seulement 21 bits d'adresses sur la MMU. Malheureusement, il n'y a toujours pas plus de broches d'adressage multiplexé des boitiers RAM (MAD0 à MAD9), ou de broches de sélection de banques supplémentaires de Rams, cequi permet d'affirmer que nous sommes toujours limités à 4 Mo de RAM.

 

Les broches 2 à 6 sont les entrées et sorties des horloges destinées aux différents circuits. Le 16 MHz provrient comme avant du circuit vidéo. Les fréquences de 0.5 2, 4 et 8 MHz sont disponibles en sortie. Pour leur utilisation, reportez vous à la figure 4 qui vous présente les horloges des STF et STE. Dans les ST, les AClAS (6850 gérant les liaisons séries clavier et MIDI) sont cadencés à 0.5 MHZ, le vieux circuit sonore (YM-2149) à 2 MHZ, le MFP (68901 pour les intérruptions et la RS232) à 4 MHz, les 68000, Blitter DMA, WD1772 (contrôleur de drives) et GLUE à 8 Mhz, la MMU à 16 MHz. Le GST MCU d"livre maintenant les fréquences des GLUE et MMU, alors que le nouveau shifter (GST SHIFTER voir figure 2) reçoit une horloge de 8MHz venant d'un oscillateur séparé : cette horloge appelée SCLK (Sound CLocK) permet, par l'intermédiaire de diviseurs internes au GST Shifter, de disposer d'une horloge de fréquence variable (FCLK) pour les filtres sonores que nous aborderons un peu plus loin. Le signal de cet oscillateur est aussi utilisé par le WD1772 et le YM-2149 pour lequel un diviseur par 4, réalisé avec 2 bascules 74 'en série', a été nécessaire afin d'obtenir une fréquence de 2 MHz.

 

 

 

Figure 1 : le GST MCU

 

 

Figure 4b : Horloges STE

Vous avez peut-êlre remarqué que la sortie 2 MHz du GST MCU n'est pas utilisée, quoique tout à fait fonctionnelle comme j'ai pu le vérifier en branchant le YM-2149 dessus... En fait, ce nouvel oscillateur est destiné à cadencer tous les circuits qui pourraient subir des problèmes de synchro, si l'horloge de base de 32 MHz venait à être modifiée dans le cas exclusif d'un passage en mode synchro externe de la machine, c'est-à-dire un arrêt de l'oscillateur embarqué de 32 MHz, et l'envoi depuis l'extérieur d'une fréquence proche (36 MHz par exemple) : ce procédé est nécessaire pour synchroniser la source video ST avec une autre externe, dans le but de les mixer, entendez par là une incrustation de l'une sur l'autre. C'est ce que réalise un genlock. Dans le cas d'une fréquence de 36 MHz, le GST MCU) ne fournirait plus une fréquence de 8 MHz mais de 9, ce qui pour le WD1772 poserait des problèmes extrêmes de non-reconnaissance des disques et formatages, illisibles pour un ST à 32 MHz. Il en est de même pour le son DMA géré par le Shifter comme nous le verrons. Quant au YM-2149, il recevrait alors une fréquence de non plus 2 MHz du GST MCU, mais de 2.25 MHz (9/4), ce qui le ferait jouer faux. J'ai pu d ailleur vérifier que cet oscillateur de 8 MHz n'avait aucune utilité dans le cas d'un ST en fonctionnement normal, en remplaçant ce dernier par l'horloge CLK8 du GST MCU. De plus, je puis affirmer que l'entrée SCLK du shifter n'est nécessaire que pour la gestion du son DMA puisque l'ayant coupée j'ai constaté que le STE fonctionnait très bien, à l'exception du son DMA disparu.

Sur la figure 1, viennent ensuite les broches *ROMx de sélection des ROMs du STE. Chaque signal est activé suivant l'adressage du processeur à une certaine zone mémoire (c'est ce que l'on appelle le décodage d'adresse) Dans mon étude, j'ai ainsi découvert des zones correspondant aux signaux *ROM0, *ROM1, *ROM5 et *ROM6, qui ne sont pas utilisés actuellement (voir la figure 13 pour les adresses exactes)
La découverte de zones d'adresses de 256 ko est très intéressante pour, par exemple, faire tourner des programmes en Eproms à ces adresses, ou encore simplement accéder à des données qui pourraient très bien être stockées dans des rams statiques (!)...
Les signaux *ROM4 et *ROM3, comme sur les STF, correspondent à l'utilisation du port cartouche selon respectivement les zones $FA0000 à $FAFFFF et $FB0000 à $FBFFFF.

Le signal *ROM2 est destiné à sélectionner les 2 roms 128 ko contenant le TOS 1.6. Sur les STF, ce signal était secondé des signaux *ROM0 et *ROM1 pour ainsi adresser trois zones de 64 ko correspondant à trois paires de roms 32 ko pour le TOS 1.0 (pouah !!), et par l'intermédiaire d'une porte AND à trois entrées, à une paire de Roms 128 ko pour le TOS 1.2 (blitter). Les deux supports accueillant le TOS 1.6 sont de 32 broches. Les premiers STE étaient pourvus de 2 Eproms 1 Mbits (32 broches), alors que maintenant ce sont des Roms (28 broches) qui sont installées dans les supports. Il y a donc sur la carte trois petits jumpers (straps) rétérencés W102, W103 et W104 qui permettent d'adapter les broches 2, 3 et 24 des deux supports. Vous trouverez toutes les configurations possibles sur la figure 16.

Figure 16

Toujours au sujet des ROMs, il taut que je vous annonce que le désassemblage du début des Roms nous a permis de voir que ce TOS teste ta présence d'un éventuel 68030 (!) en essayant le bit 9 du CACR (Cache Address Control Register) de ce dernier, le résultat étant mis dans une nouvelle variable du syteme Dans le cas de la présence du 68030. des routines utilisant les instructions plus rapides spécifiques au 68030 sont pointées De plus les deux grosses incompatibilités, qui empêchaient les 020 et 030 de fonctionner, à savoir l'utilisation de la Ligne F et de certaines instructions qui refusent de s'actionner en mode user' sur les 020 et 030, ont été corrigées. D'abord, la Ligne F ne semble plus du tout utilisée pour le 68000, elle est remplacée par des TRAP. Ensuite, une routine violation privilège' a été installée pour corriger l'erreur survenant lorsque le 030 traite en mode user' une instruction qui n'est plus utilisable qu'en mode superviseur. Mais, aussi incroyable que cela puisse paraître, cette routine est buggée, l'empêchant de fonctionner (merci les gars, sympa '). Nous aurons peut-être l'occasion de vous présenter des patches' pour ce TOS ainsi que des commentaires Toujours est-il, moyennant la correction du bug. que le 68030 devrait fonctionner (logiciellement parlant) sur un STE • En fait, ce TOS semble être une préversion du TOS 030 qui sera dans les TT sous TOS. Signalons que le 68020 sera reconnu comme un 68000 et ne profitera pas de routines spécifiques, te bit 9 du CACR n'existant pas dans le registre équivalent du 68020 (4 bits seulement).

*HDINT et FDINT sont respectivement les signaux d'interruption venant du disque dur (HD) et du contrôleur de drives (FD). Ces deux signaux ne vont pas à la MMU des STF, et c'est là une différence non négligeable. Pour mieux comprendre la grande amélioration logicielle qui en découle, il faut savoir que |usqu'à présent la broche I05 du MFP n'est pas activée (y compris sur STE ') pour une raison inconnue (cela aurait pourtant été bien plus simple avec le MFP). et que sur les STF un transfert DMA disque demande un suivi logiciel (routine DMA; tout au long de l'opération pour surveiller le compteur DMA. Car la MMU ne peut savoir d'elle-même quand doit s'arrêter l incrémentation de son compteur DMA. pour la simple raison qu'il n'y a pas de registre de fin de transfert DMA. comme c'est le cas pour les transferts DMA son des STE que nous verrons plus loin. Inutile de vous dire que cette routine prend du temps au système. Elle doit en effet comparer la valeur incrementee à celle représentant la quantité des données à transférer tout au long du transfert, puis lorsque les valeurs sont les mêmes, désactiver le mode DMA dans la MMU. Dans le STE, le GST MCU reçoit maintenant un signal d'interruption indiquant la fin d'un transfert DMA disque et sait donc qu'il doit stopper I incrémentation du compteur et l'adressage de la RAM La gestion du hardware se retrouve ainsi simplifiée et donc plus rapide.

Le signal *DISKINT est le signal résultant d une comparaison logique (nor) de *HDINT et FDINT qui est dirigé sur la broche d'interruption I05 du MFP. De même pour la broche 19 (SNDIR) qui permet de sélectionner les registres du YM-2149, alors que la broche SNDCS (SouND Chip Select), comme son nom l'indique, sélectionne le YM2149 suite à une adresse considérée par le GST MCU comme étant de celles utilisées pour le YM2149.
Les trois broches suivantes (20 à 22 *RTCWR = Real Time Clock WRite, *RTCRD = .. ReaD; *RTCCS = ...Chip Select) sont destinées à la gestion d'une horloge interne. Ces trois broches sont les mêmes que celles présentes sur les Mega ST pour l'horloge, où elles sont issues d'un PAL (circuit logique programmable) assurant le décodage des adresses relatives à la bonne gestion du circuit horloge RP5C15 (zone d'adresse de FFFC20 à FFFC3F). Il était donc normal de profiter de l'intégration du GST MCU pour y mettre aussi, le décodage de cette zone, mais pourquoi n'avoir pas mis cette horloge sur la carte ?! On pourrait assez justement penser que le Mega STE verra le jour... un jour !

Sur la broche 23. se trouve le signal BERR (Bus ERRor) émis vers le 68000 pour lui signaler qu'une tentative de lecture ou d'écriture dans une zone protégée ou interdite a lieu. Mais le BERR peut aussi être envoyé lorsque se produit une erreur de bus et que le signal DTACK (accusé de transmission des données) ne sera pas émis par le périphérique, pour la raison évidente que les données ne sont pas arrivées ou n'ont pas été présentées au 68000. Dans ces cas-la, le GST MCU joue ce que l'on appelle le rôle de "chien de garde" en attendant une certaine période, avant d'estimer s'il faut renoncer et signaler le problème au processeur. Sachez que tant que le 68000 n'a pas reçu de signal DTACK ou BERR, il se met en waitstate' (cycle d'attente). Ce procédé est souvent utilisé sur des machines où le processeur doit accéder lentement à de la Ram par exemple, comme c'est souvent le cas pour les PC bas de gamme, mais aussi, ce qui ne manquera pas de faire sourire certains, l'Amiga pour ses 512 premiers ko....

Les deux signaux suivants sont utilisés pour la communication bus synchrone entre le processeur et des circuits périphériques lents de la famille 6800 tels que les ACIAS 6850 Pour cette communication, un signal d'horloge de synchronisation est émis par le 68000 : il s'agit de E (Enable ou 02 dans le jargon des processeurs 8 bits). Il est cadencé à un dixième de la fréquence du processeur, soit ici 800 KHz. Le signal VPA (Valid Penpheral Address) est envoyé par le GST MCU au 68000, pour l'informer que l'adresse que ce dernier vient de placer sur le bus est une adresse de circuit de la famille 6800 (décodage d'adresse du GST MCU). A ce moment-là, le processeur attend éventuellement que le signal E soit au niveau bas, puis envoie le signal *VMA (Valid Memory Address), pour informer le GST MCU qu'il est synchronisé sur le signal E et que l'adresse présente est valide Le signal *VMA peut être considéré comme un signal de sélection des circuits périphériques même si, dans le cas des ST un signal de sélection des ACIAs (6850CS broche 49) est généré a partir du *VMA. Le signal VPA est aussi utilisé pour indiquer au processeur une auto-interruption (autovecteurs n° 25 à 31).

Les broches 26 à 29 sont les signaux d'arbitrage du bus ; on trouve les classiques BR BG et BGACK présents sur le processeur (voir figure 3 pour le brochage 68000) "BR est émis vers le 68000 pour lui indiquer qu'un circuit demande à devenir 'busmaster (possesseur du bus). Un tel circuit peut être le blitter ou le GST MCU (pour le DMA). En fait, le blitter possède aussi ces signaux et n'a donc pas besoin du GST MCU pour faire la demande au 68000 (voir ST Mag n° 26 sur le Hard du blitter), mais le GST MCU a aussi pour rôle d'arbitrer et d'éviter les "embouteillages'' sur le bus. Le circuit DMA est obligé d'envoyer un signal de demande de bus (*RDY) au GST MCU. A ce moment-là, ce dernier envoie un *BR (Bus Request) au processeur qui finit son cycle de bus en cours avant d'envoyer un signal *BG (Bus Grant) pour informer le GST MCU que le bus lui est attribue. Ce dernier envoie alors un *BGACK (Bus Grant ACKnowledge) au processeur pour l'informer qu'il prend le bus à sa charge, et ceci jusqu'à ce que ce signal soit remis au niveau haut, moment où le processeur reprend le bus pour lui. Lorsque le bus est utilisé par le blitter ou le DMA, les broches du processeur sont pratiquement toutes en état de haute impédance.

La broche *BGO est une sortie du signal *BG, à l'origine à destination des connecteurs bus des Mega ST ; elle n'est donc pas utilisée dans les STE. De même pour les broches d'entrée d'interruption INT3. INT5 et INT7. A ces broches, vous devez associer les INT6. INT4 et INT2 utilisées sur tous les sytèmes ST. Sur les Mega ST, un circuit d'encodage et de priorité (74LS148) reçoit les broches INTx et envoie un signal codé sur 3 bits aux trois broches *IPL (Interrupt Priority Level) du 68000, pour lui indiquer le niveau de l'INT reçue (voir l'article "Bus stop" ST Mag n° 30). Bien entendu, les broches INT2. 4 et 6 n'ont jamais été visibles puisque c'est le GST MCU qui les gère pour indiquer respectivement les interruptions HBL, VBL et MFP. Le circuit 74LS148 a lui aussi été intégré au GST MCU et ses trois broches de sortie 'IPL0. *IPL1 et 'IPL2 sont reliées aux signaux correspondants du 68000 (voir fig. 3).

 

Les trois broches FC (Fonction Code) sont reliées aux broches correspondantes du 68000 Ce dernier peut ainsi indiquer au GST MCU dans quel mode il travaille (utilisateur, superviseur ou détection d'interruption qui peut être causée par certains opcodes comme ceux de la ligne F), afin d'aider à déceler un adressage illégal.
La broche 60 *BINT est l'interruption envoyée par le blitter, ce qui est nouveau, puisque jusqu'à présent seul le MFP recevait ce signal qui n'était pas pris en compte par le système. Il m'a été impossible de déterminer le rôle de ce signal pour le GST MCU, car contrairement à un accès DMA disque, pour lequel le GST MCU prend en charge le bus et doit donc savoir quand le rendre (signaux *HDINT et FDINT), le blitter ne passe pas par le GST MCU pour prendre et rendre le bus. De plus, d après la configuration du MFP, il semble que ce signal ne soit toujours pas pris en compte sur I03.

Figure 3 : Le 68000

Le signal *RESET est nécessaire au GST MCU pour réinitialiser ses compteurs internes (video, DMA, etc.). Les cinq signaux suivants sont les traditionnels signaux d'échange de bus asynchrone. Les quatre premiers sont émis par le 68000. R/*W indique au périphérique si le processeur désire lire ou écrire une donnée, *UDS (Upper Data Strobe) et *LDS (Lower Data Strobe) indiquent respectivement si le 68000 travaille sur les 8 bits de poids fort ou faible du bus. mais si le processeur travaille avec des mots (16 bits) ou des mots longs (32 bits), alors les deux signaux sont activés.
Le signal *AS (Address Strobe) est activé, juste après que l'adresse ait été placée sur le bus d'adresse par le 68000, pour informer le périphérique que l'adresse présente est valide.
Quant au signal *DTACK (vu plus haut), il est envoyé par le périphérique pour signaler au 68000, soit que les données sur le bus sont valides en cas de lecture du 68000, soit que les données ont bien été reçues en cas d'écriture de ce dernier. Dans les deux cas. il indique au 68000 la fin d'un cycle de transfert sur le bus.

Les broches 83, 92 et 93 sont utilisées pour la gestion du MFP. Sur la broche *MFPINT, le MFP avertit le GST MCU qu'une des seize interruptions vient d être déclenchée, soit en interne au MFP, soit sur un des huit bits de son port.
Le GST MCU, une fois que le 68000 est averti et que ce dernier signale qu'il est en mode interruption par ses trois broches FC, envoi un accusé d'interruption (*IACK = Interrupt ACKnowledge) au MFP pour lui signaler qu'il peut envoyer le code de l'interruption sur les 8 bits de poids faible du bus de données à destination du processeur.
La broche *MFPCS permet de sélectionner le circuit lorsqu'une adresse lui correspondant est émise par le 68000, pour lire ou écrire les registres.

Le groupe des broches 94 à 103 assure la gestion des deux nouveaux ports joysticks/paddles stylo optique que nous verrons vers la fin. De même pour les broches SREQ, *SLOAD et *SINT qui sont reliées au shifter pour la gestion du nouveau son DMA.

Des broches 110 à 127, on trouve les signaux du bus d'adresse multiplexe et ceux de sélection des deux banques de RAM de 2 Mo maxi chacune. L'intérêt du STE étant que l'on peut monter à 4 Mo sans aucune soudure, puisque la carte mère est équipée de quatre supports destinés à recevoir des barrettes SIMMs (Single Inline Memory Modules) ou SIP (Single Inline Package) de 256 ko ou 1 Mo chacune, dont vous trouverez le brochage en figure 14.
Il est à noter que la gestion de la mémoire par le sytème a été modifiée semble-t-il, puisque la configuration de 2.5 Mo n'est plus reconnue par ce dernier lorsque vous installez deux barrettes 1 Mo avec deux barrettes 256 ko. A noter aussi que les cartouches de test du système (cartouches de diagnostic) affichent 2 Mo de RAM sur des machines de 512 ko. Tout ceci est d'autant plus étrange, qu'une inspection du registre de configuration de la MMU m'a permis de vérifier que les valeurs attribuées aux différentes configurations RAM étaient toujours les mêmes. Il m'est donc impossible de donner une explication, mais le temps d'attente de 3 secondes du STE a l'allumage serait certainement dû aussi à une gestion tordue de la RAM. On peut penser qu'une routine de test de la Ram lors du "power on" est lancée par le TOS 1.6 et qu'elle ne saurait pas reconnaître la configuration de 2 5 Mo. Quoi qu'il en soit, les recherches continuent. et n'hésitez pas à nous faire part de vos découvertes.

Figure 14 : Une barrette simm

On trouve ensuite trois signaux qui étaient auparavant émis par la MMU pour piloter quatre circuits TTL (LS244 et LS373) chargés d'effectuer la liaison entre le bus de données du Shifter et des Rams avec le bus de données du 68000 et du reste de la machine. Les quatre TTL ont été intégrés dans le shifter.

Les signaux *DMA, *RAM et *DEV sont inutilisés à l'extérieur du GST MCU, mais sont, sur les STF, émis par le GLUE pour la MMU. *DMA permet de sélectionner les registres des compteurs DMA de la MMU pour un transfert DMA depuis un disque, et *RAM indique qu'un accès à la RAM est détecté suite à un décodage d'adresse du GLUE (zone de $000008 a $3FFFFF = 4 Mo). A la suite de la réception de ce signal, la MMU active les circuits TTL 244 ou 373 suivant le sens de transfert des données indiqué par le signal R*W. Quant à *DEV, il permettrait de sélectionner les registres des compteurs vidéo (VBASE et VCOUNT) pour l'adressage de la RAM vidéo à destination du shifter et peut-être aussi les registres internes du shifter (couleurs et résolutions par l'intermédiaire du signal CMPCS, si ce dernier n'est pas décodé dans la MMU. Le signal *FCS est émis vers le DMA pour sélectionner les registres de ce dernier (accès au WD1772 et état du DMA).

Si le circuit a besoin du bus de données pour envoyer ou recevoir un mot, il envoie le signal *RDY au GST MCU afin de lui demander de prendre les dispositions pour faire libérer le bus (envoi d'un *BR au 68000). Il faut signaler que le bus de données du connecteur DMA a été bufferisé avec un 74LS245, dont la sélection du sens des données est assurée par le signal CR/*W émis par le circuit DMA. La validation des buffers de ce circuit est réalisée par le signal *FDCS (Floppy Disk Chip Select) émis par le circuit DMA vers le WD1772 par l'intermédiaire d'une bascule (74LS74) cadencée avec l'horloge CLK8. Ainsi, lorsque le WD1772 est sélectionné, le bus DMA est isolé du périphérique branché. Cette bufférisation évitera l'endommagement du circuit DMA lors d'un branchement sous tension. Les signaux de contrôle, à savoir R/*W, A0 *HDACK (HardDiskACK-nowledge) et RESET, sont bufférisés par un 74LS244. C'est un des buffers de ce circuit qui conduit le signal *DSO (Drive Select 0) à destination de la led orange.

Le signal *PEN (137) est utilisé par le stylo optique branché sur le nouveau port 0 (DB15).
Les quatre signaux suivants sont émis vers le GST Shifter pour le synchroniser avec le transfert des données de la Ram vidéo ainsi que les signaux VSYNC et HSYNC qui sont générés par le GLUE des STF:
*DCYC (Data CYCIe) indique au Shifter que les données sont disponibles depuis les RAMs (c'est-à-dire que le GST MCU vient de sélectionner l'adresse RAM des prochaines données à charger dans le GST Shifter ; cet adressage est effectué 16000 fois par image en rapport avec les compteurs VCOUNT du GST MCU ou de la MMU des STF).
DE (Display Enable: actif au niveau haut) indique au circuit vidéo qu'il doit envoyer la ligne vidéo au moniteur. Ce signal est actif pendant l'envoi de chaque ligne en relation directe avec les signaux VSYNC HSYNC, il est pour cette raison émis par le GLUE des STF vers le Shifter, mais aussi la MMU des STF.
Enfin, DE est aussi reçu par le MFP sur l'entrée de son timer B (reconnu sur le front descendant, c'est-à-dire à la fin du tracé de la ligne) tant utilisé pour les effets vidéo.
*BLANK (vide) est émis à chaque fin d'image pour éviter un envoi de signal vidéo en dehors de la zone d'affichage de l'écran, le temps que le canon vidéo remonte en haut à gauche du tube. De même pour DE, il est en relation avec les signaux VSYNC HSYNC. il est donc émis par le GLUE des STF.
Le signal *CMPCS sélectionne le Shifter pour l'accès à ses registres a propos desquels la suite va alors vous sembler évidente : le registre de configuration de synchro (50/60 Hz et synchro int./ext.) est dans le GST MCU (et GLUE des STF) et non dans le Shifter, comme pouvait le laisser penser la localisation de l'adresse de ce registre (voir figure 10). C'est d'ailleurs pour ce registre que le GLUE des STF est muni de deux broches de données reliées aux bits 8 et 9 du bus, qui correspondent bien aux 2 bits modifiables du registre. Mais si cela explique comment le GLUE sait s'il doit envoyer des synchros 50 ou 60 Hz, comment sait-il que l'on passe en 71 Hz (haute résolution) ?

Figure 10 : registres video

En fait, si vous regardez les adresses vidéo (figure 10), vous remarquerez qu'un autre registre est aussi sur les bits 8 et 9 VIDEOMOD qui permet d'indiquer la résolution au shifter, mais aussi au GLUE (GST MCU sur STE). Ainsi à l'adresse FF8260 correspondent deux registres un dans le shifter et un dans le GLUE. Les seuls registres vidéo qui sont dans le shifter des STF sont les COLORS et VIDEOMOD. En effet, ce shifter ne possède que 5 bits d'adresse. Le GST SHIFTER est pourvu d un sixième bit d'adresse pour le registre supplémentaire HSCROLL et certains registres du son DMA, mais tous les autres registres video de la figure 10 sont dans le GST MCU.

 

Le nouveau circuit vidéo du STE (voir figure 2) est plus puissant que celui des STF et. outre ses possibilités graphiques étendues, il assure aussi la gestion du son DMA, la grande innovation de la machine. Avant tout, deux remarques : je n'ai pu trouver la fonction de la broche 73 (LOWP) qui n'est pas utilisée.
Ensuite, la broche 51 (COLOR) n'est pas, contrairement à ce que vous pourriez croire, une sortie vidéo composite (dommage !), mais un signal d'horloge vidéo couleur NTSC pour l'étage de vidéo composite et de modulation mis en place uniquement pour les modèles PAL/NTSC avec sortie antenne HF.
Il est tout à fait possible d'obtenir une vidéo composite (pour envoyer sur un magnétoscope) à condition de rajouter les composants du premier étage, mais aussi ceux de la partie chargée de créer une fréquence horloge couleur ensuite exploitée par l'étage vidéo composite construit avec un encodeur RVB PAL NTSC.Le GST Shifter est pourvu de deux bus de données de 16 bits l'un est branché sur le bus de données de la machine (68000), alors que l'autre est connecté directement à la Ram (1 bit par Ram de chaque banc) Sur les précédents modèles, la liaison entre les deux bus se faisait par quatre circuits TTL qui étaient pilotés, comme nous l'avons dit plus haut, par les signaux LATCH. *RDAT et *WDAT émis par la MMU. En fait rien n'a changé, mais les circuits sont dans le Shifter.

L'isolation des deux bus est l'un des points forts des ST. En effet, lorsque le Shifter a besoin d accéder a la RAM, l'isolation est effective, et pendant ce temps le 68000 dispose touiours de son bus de données et peut travailler avec des circuits périphériques. En cas de nécessite pour ce dernier d'accéder à de la RAM les deux bus sont relies entre eux par la MMU qui évite cette liaison pendant un cycle de lecture de la RAM par le Shifter (400000 fois par seconde !).

Figure 2 : le Shifter

Figure 11 : Registres son DMA

En fait, le Shifter accède à la RAM comme un circuit DMA sans passer par le processeur. C'est sur ce principe que le nouveau son est géré. Pour cela, le Shifter dispose d'un troisième bus de données mais sur 8 bits (SDO à SD7), qui transporte les données du Shifter vers les deux convertisseurs digitaux/analogiques 8 bits comme vous pouvez le voir sur la figure 5. Mais avant de commenter cette circuiterie sonore, revenons au principe du son DMA géré par le Shifter.
Comme pour le DMA disque, les compteurs du son DMA (voir adresses figure 11) sont dans le GST MCU, et le shifter dispose donc de signaux de gestion qui sont SREQ (Sound REQuest) et *SLOAD (Sound LOAD). Ce dernier est la réplique de *LOAD utilisé pour la vidéo. Il est émis par le GST MCU pour indiquer au shifter que adressage d'une donnée (16 bits) en RAM est en cours, et que les données à cette adresse sont disponibles sur le bus des RAMs. A ce moment-là, le shifter récupère le mot pour ensuite l'envoyer en une suite de deux octets sur le bus son à destination des deux convertisseurs. Mais pour que chaque convertisseur reçoive le bon octet, ces derniers sont précédés chacun d'un 74F374 (octuple flip-flop) qui transmet ses 8 bits a la réception d'un signal (*LD et *RDI émis évidemment par le Shifter (broches 19 et 20). Le signal SREQ est envoyé par le Shifter au GST MCU pour lui demander d'adresser en RAM un mot. Ce signal précède le *SLOAD. Les fréquences d'adressage (fréquences d'envoi d'un mot vers les convertisseurs) sont 6258 Hz. 12517 Hz. 25033 Hz ou 50066 Hz. Lorsque l'adressage de l'échantillon se termine (compteurs son), le GST MCU envoie un signal d interruption *SINT sur la broche I07 du MFP (interruption de niveau 7, égale à celle de la détection monochrome), mais aussi sur la broche TAI du MFP (Timer A Input) qui était reliée sur les STF à la broche 10 (arrivé du signal busy de l'imprimante) sans grand intérêt.

En fait, il faut savoir que si la première série des cartes STE a bien été gravée d'après le branchement ci-dessus, un composant, comme ceux qui ont ouvert la machine ont dû le remarquer, a été rajouté avec quelques bouts de fils. Il s'agit d'un 74LS164, un compteur 8 bits qui intercepte le signal *SINT qui allait sur l'entrée du timer A pour le retarder avant d'envoyer le résultat sur ce même timer (voir figure 15). Par les tests logiciels réalisés, la fonction de ce compteur n'est pas évidente. D'après la fréquence d'horloge reçue de 2 MHz et la sortie du bit 8, on peut estimer que le délai, entre l'arrivé d'un signal sur A et B et la sortie sur le bit 8 est de 8x( 1 / 2000000) = 4 microsecondes.Si le signal *SINT n'est pas actif (niveau haut) le compteur a sa broche *CLR au niveau bas, tout comme alors les bits de sortie. A la fin d'un échantillon, le GST MCU place *SINT au niveau bas et les broches A. B et *CLR sont au niveau haut, ce qui signifie que le compteur est actif et avance d un bit à chaque impulsion de l'horloge 4 microsecondes plus tard, la sortie 8 du compteur est au niveau haut, et le passage de l'état bas à l'état haut de l'entrée du MFP (TAI) incréments le compteur de ce dernier.Bien entendu, il faut que le signal *SINT dure plus de 4 microsecondes, sinon le compteur sera remis à 0 avant d'avoir atteint sa sortie bit 8 et le MFP ne recevra aucun changement d'état. Donc le rôle du circuit rajoute ne semble être que de retarder l'arrivée au timer A du signal d'interruption.

 

Figure 15 :

 

Mais l'interruption de fin d'échantillon est aussi envoyée sur la broche d'interruption la plus élevée (I07) par une porte XOR (OU exclusif) avec celle de la détection monochrome. Deux cas peuvent alors se présenter le mode couleur et donc le signal *MONOON au niveau haut. S'il n'y a pas d'interruption, il y a un 1 sur I07, mais en cas d'arrivée d'une interruption, la sortie de la porte XOR passe à 0. et ce passage a l'état bas signale au MFP une interruption. Le résultat est le même dans le cas du branchement d'un écran monochrome avec le passage au niveau bas de *MONOON. Vous remarquerez que pour le hard, il est impossible de savoir si le monochrome vient d'être branché ou si c'est la fin d'un échantillon. Dans le second cas, nous sommes en mode monochrome, et donc l'entrée I07 est à 0 comme sur les STF dans ce cas Si alors une interruption son arrive, une des deux entrées de la porte passe à 1 et la broche I07 repasse à 1, ce qui pourrait être considéré comme le débranchement de l'écran mono chrome (aie !). Heureusement, la routine de détection monochrome des STF a été entièrement revue et adaptée à la situation plus complexe en testant à chaque VBL, en plus de I07, le registre de contrôle de son DMA ($FF8901).
D'après les 2 bits faibles (voir figure 11), le sytème sait si l'interruption qui est sur la broche I07 est celle venant d'un changement de moniteur ou celle de la fin d'un échantillon en cours (bits de FF8901 ). Si aucune activité ne semble provenir du DMA son, la routine continue sur l'initialisation du système pour la nouvelle résolution.
On peut se demander pourquoi avoir mis un goulot d'étranglement entre le shifter et les deux convertisseurs avec un bus de 8 bits, obligeant a une perte de temps pour envoyer les deux octets à la suite l'un de l'autre. En fait, il ne pourrait s'agir que d'une limitation du nombre de broches sur le Shifter (boîtier standard quad pack 84 broches) ; un nombre supérieur de broches obligeant la fabrication du circuit vidéo dans un type de boîtier non standard ou en CMS.

Le GST Shifter assure aussi la communication avec le circuit LMC1992 (contrôleur hi-fi de volume et tonalité) grâce aux signaux *MWE MWD et MWK. selon le standard Microwire. Ces signaux permettent la configuration des registres du LMC1992. Les données sont émises sériellement par MWD (MicroWire Data) en synchronisation avec le signal MWK (MicroWire clocK) à condition que le signal *MWE (MicroWire Enable) soit actit (voir figure 7). Le message est sur 11 bits , les 2 bits de poids fort sont toujours 1 et 0 pour sélectionner le circuit les 3 bits suivants sont le numéro du registre du circuit qui-correspond à une commande et les 6 bits de poids faible sont les données pour le registre sélectionné.

Figure 7 : Chronogramme Microwire

Figure 6 : Le Mixer Audio

Sur la figure 6, se trouve le brochage du LMC1992 dans le contexte du STE. La répartition des signaux relatifs aux canaux gauche et droit se fait de part et d'autre du boîtier. Les trois premières broches constituent l'interface Microwire et sont reliées aux trois signaux correspondants du Shifter. Le circuit permet la sélection par logiciel de quatre sources stereo (input x). mais seule la première entrée est utilisée pour le YM-2149 (voir figure 5). Cette entrée est sélectionnée par le système à l'allumage du STE et si vous sélectionnez une autre entrée (voir registres en figure 8), aucun son du YM-2149 ne passera plus.Officiellement c'est l'entrée 2 qui doit être sélectionnée pour couper le YM-2149, alors que l'entrée 3 est réservée (la 4 n'est même pas mentionnée !).

Au passage, remarquez que l'entrée audio du connecteur vidéo est toujours là, alors qu'elle ne sert vraiment a rien. Le LMC est prévu pour des installations (auto) avec quatre haut parleurs, et c'est pour cela qu'il possède quatre sorties (front et rear) dont seules deux sont utilisées (front) pour aller directement sur les fiches RCA. De plus, les deux sorties sont réduites, mixées et amplifiées pour obtenir un son mono disponible sur le connecteur vidéo comme sur les STF. Sur les broches SELECT OUT se trouve le signal de l'entrée sélectionnée (YM-2149). Ce dernier est mixé avec la sortie des filtres MF004, le résultat étant amplifié, puis réinjecté par les broches SELECT IN. C'est à partir de là que les autres registres (volume et tonalité) agissent sur le signal sonore. Enfin les filtres effectuent un anti-aliasmg (suppression des escaliers sur la courbe sonore) avec l'aide d un filtre passe bas dont la fréquence est 40 % de celle de l'échantillonnage soit 2503, 5007. 10013 et 20026 Hz.

Figure 5 : Branchement audio STE

La réponse en tonalité du LMC est déterminée par les condensateurs aux broches TONE IN et TONE OUT. Mais la bande passante varie aussi en fonction de ces composants avec la valeur par défaut de 0 0047 uF. On a une bande passante de 50 à 15 000 Hz . Si on diminue la valeur(0 0033 uF), on obtient 70 à 20.000 Hz. Pour le STE. c'est la valeur de 0.0068 uF qui est utilisée, donnant une bande passante de 35 à 10.000 Hz. Ajoutez à cela la qualité remarquable du traitement sonore (amplis/filtres) supérieur à celui de l'Amiga (limité à 28 kHz) et vous pouvez alors entendre les imperfections des samples qui paraissent pourtant irréprochables sur un STF (ex : Quar-tet), preuve de la bien meilleure bande passante.
Toutes les registres relatifs au son DMA se trouvent sur la figure 11. Comme pour la vidéo, certains ne sont pas dans le shifter mais dans le GST MCU, à savoir FBASE, FCOUNT, FEND et PLAYMOD (sous réserve). Seuls SAMPMOD (sous réserve) LMCDATA et LMCMASK sont dans le shifter.

Figure 9 : Interfaces joystick avancés

 

Figure 12 : Registres joystick

La troisième innovation du STE est le rajout sur la gauche de deux connecteurs DB15 permettant de brancher jusqu'à 4 joysticks, 2 paddles ou 1 stylo optique, mais aussi le pilotage de montages externes, car il est possible d'écrire sur ces deux ports. Sur la figure 9 se trouve le schéma de branchement au système de ces deux prises. Par simplicité, les reseaux de résistances pull-up n'ont pas été représentés. Sur la droite, on retrouve tous les signaux de pilotage que nous avions entrevu lors de la description du GST MCU. Puisque c'est dans ce dernier que se trouvent tous les registres relatifs aux deux ports (figure 12). Les 4 bits de direction des joysticks 0 et 1 sont dirigés sur les 8 bits de poids faible du bus de données par un 74LS244 (octuple buffer 3 états) piloté par le signal *JOYRL (JOYsticks Read Low). De même, les 4 bits des joysticks 2 et 3 sont dirigés sur les 8 bits de poids fort du bus grâce au signal *JOYRH (JOYsticks Read High). Ainsi, un seul registre de 16 bits contient les quatre directions des quatre joysticks (SFF9202). Un troisième 74LS244. activé par le signal *BUTTON, est utilisé pour les 4 bits FIREx, les 4 bits de poids fort étant toujours à 1. Enfin, un 74LS373 (octuple latch) permet d'envoyer sur les quatre broches de direction des joysticks 0 et 1. respectivement, les 4 bits de poids faible et de poids fort d'un octet de poids faible du bus de données. La capture de I octet (latch) se fait à la réception du signal *JOYWL (JOYstick Write Low). alors que la sortie du circuit à destination des deux ports est validée par le signal *JOYWE (JOYstick Write Enable).

Sur chaque port, un paddle peut être branche. Ce dernier informe de sa position le GST MCU par l'intermédiaire d'un NE556 qui contient deux convertisseurs de tension en impulsions de fréquence variable. C'est le GST MCU qui analyse la largeur de ces impulsions transmises par les lignes *PADxX et *PADxY et en déduit les valeurs (0 a 255).

Enfin, il est possible de brancher un stylo optique, mais je ne suis pas certain de la manière de le brancher. Deux registres sur 10 bits devraient permettre de lire la position du stylo sur récran (10 bits pour coder 640 points maximum en haute résolution) en X et Y *PEN serait le signal émis au GST MCU lorsque l'on appuie sur le bouton du stylo Mais il m'est impossible de vous dire comment le stylo envoie sa position, si ce n'est de supposer que ce dernier utilise les signaux *PAD0X et *PAD0Y du port 0.
Dernière remarque l'adresse $FF9200 du registre contenant les 4 bits faibles des boutons fire a une autre fonction. En effet, le TOS 1.6 teste le bit 15 de cette adresse. Si vous regardez sur la carte du STE, près des ROMs, vous verrez alors huit pastilles de cuivre qui sont des switches fermables avec un point de soudure Ils sont reliés d'un côté à la masse et de l'autre aux 8 bits de poids fort du bus de données par l'intermédiaire d'un 74LS244 valide par le signal *BUTTON appliqué lors d'un accès en $FF9200. Lorsqu'il n'y a pas de points de soudure, comme c'est le cas actuellement, le 74LS244 livre 8 bits a 1 grâce à un réseau de résistances pull-up (+5v). Vous serez bien surpris d'apprendre que dans les TT, l'adresse $FF9200 existe aussi et correspond à 8 bits de configuration du système (!), ce qui prouve bien que le TOS 1.6 est prévu pour les TT.

Figure 8 : Registres LMC1992

Figure 13 : STE Memory map

Pour finir, la figure 13 représente la cartographie mémoire d'un STE, mais du point de vue hardware. Les accès aux zones référencées "interdit" oblige le GST MCU à signaler une erreur d'adressage (deux bombes), mais il existe des zones d'adresses libres que je conseillerai tout particulièrement aux concepteurs de cartes.
Quant aux zones "interdit réserve", il s'agit de spécifications d'Atari ; ainsi la zone FF8400-FF85FF accueille les 256 registres de couleur sur les TT, alors que la zone FFFA40/FFFBFF est utilisée par la carte coprocesseur 68881 référencée SFP004 pour les Mega ST.

Cette étude du hardware du STE (et STF) est maintenant terminée, puisque les grands points ont, me semble-t-il, été traités avec le plus de détails possible sans entrer dans des considérations trop techniques, ce qui vous a, je l'espère permis de mieux comprendre cette machine qui n'a pas fini de dévoiler ses fantastiques possibilités. Bien entendu, nous attendons vos découvertes, remarques et questions sur le serveur en rubrique HARD Enfin, je tiens à remercier sincèrement SIRIUS de l'ABCS85 (will you become a Codemaster like FlotsaM ?) pour les recherches dans les ROMs et les tests assembleur du système pendant le mois de juillet . OTARI pour les documents relatifs au STE, BADMAN (will be the force with you in Japan) pour le STE (je garde) troqué contre un Amiga (ah que oui !), ma mère pour les croque-monsieur au congélateur, Doudou pour la confiance qu'il m'a porté au départ de ce projet et mon Méga ST qui a tenu bon sous la chaleur toride.


HardmaSTer

ST Magazine N°44
Septembre 1990

Documents / Liens :

Liens Descriptions
Schéma Atari STE Schéma de l'ATARI STE .
Memory Map détaillée de la gamme ST  
The Atari Hardware Hack Page by Vezz Documentations sur le Hard du ST.
CENTEK Documentations sur le Hard du ST.

(C) HxC2001 / Jean-François DEL NERO