Carte Sons & voix AS-2518-61 décortiquée

Déposer ici vos travaux.
Répondre
Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:12

Article par Clive Jones - Juillet 1996
Traduit par Leveeger

Préface:

Vous aurez probablement besoin des schémas du jeu sur lequel vous intervenez afin de pouvoir suivre ce qui suit, sinon vous risquez d'être quelque peu perdu… Vous êtes prévenus. Cet article part du principe que connaissez au préalable le fonctionnement des microprocesseurs. Avec cet article nous allons littéralement décortiquer la CSV. Aussi attendez-vous à un jargon technique averti.

Avant de commencer, nous tenons à remercier "Pete Clare" pour nous avoir fourni les data-sheets des TMS5200, ROM du TMS6100 et PSG AY3-8912, ce qui nous a évité de nous arracher les cheveux.

Ça a été l'article technique le plus ardu que nous ayons dû écrire. Le plus gros problème étant que le code du jeu sur la carte-mère, ainsi que le code de la carte sons & voix changent d'un jeu à l'autre. Il y a aussi quelques points obscurs côté logiciel avec lesquels il faut composer. Sans pouvoir bidouiller les codes des jeux et mettre la main sur les différentes versions des cartes sons & voix, il est impossible de prétendre qu'un problème se produit sur l'ensemble des jeux ou non. Aussi nous avons essayé de construire les bases de cet article avec autant de rétro-engineering que possible. Remarquons que la CSV n'a jamais utilisé la ROM 6100 dédiée aux voix, bien que la conception de la carte fasse appel à elle… Toutes les données des voix sont encodées et stockées dans une EPROM.

Court lexique:

 Processeur (MPU): renvoie au processeur 680x de la carte-mère, pas à celui de la CSV.
 Processeur (CPU): renvoie au processeur 680x de la CSV.

Introduction:

Peu de personnes affirmeront que cette CSV soit la meilleure de sa génération (flippers Bally du début des années 80). Personnellement, nous pensons que c'est une sorte de chef d'œuvre issue d'une conception très propre. Cette CSV est dotée de 11 puces principales au sein de sa configuration mémoire (12 lorsqu'un 6810 est installé sur la carte en U6). En voici la liste:

 U1 – Microprocesseur 8 bits Motorola 6802 ou 6808.
 U2 – ROM.
 U3 – ROM.
 U4 – ROM.
 U5 – ROM.
 U6 – RAM 6810 (seulement si un 6808 est installé, sinon vide).
 U7 – PIA 6821 pour commander la puce vocale (TMS5200 VSP).
 U8 – TMS5200 VSP puce vocale (n'utilise pas d'espace d'adressage).
 U9 – Prévu pour la ROM de voix TMS6100 VSM qui n'a jamais été installée. Là encore, cela n'occupe pas d'espace d'adressage.
 U10 – DAC AD558 qui converti les données numérique de la ROM en audio.
 U11 – PIA 6821 qui commande la puce son AY3-8912 et la LED de test.
 U12 – Générateur de sons programmable (PSG) AY3-8912 PSG de General instruments, qui là encore n'utilise pas d'espace d'adressage.

Ce ne sont pas les seules puces sur le CSV, mais les plus notables… Nous parlerons des autres par la suite.

Remarque: Comme pour les flippers Williams de cette époque, une CSV Bally peut être équipée soit d'un 6802, soit d'un 6808 (microprocesseur). Le 6802 embarque 128 bits de RAM NMOS qui peuvent être sélectionnés lorsque la ligne RE (RAM enable) est tirée à l'état haut, sinon un 6808 est employé. La ligne RE est mise à la masse (via le cavalier "L"), et une puce RAM 6810 (128 bits) est placée sur la CSV en U6. Lorsqu'un 6802 est utilisé, un cavalier relie la ligne RE à la ligne de réinitialisation du processeur (cavalier "K"), qui est maintenue à l'état haut pendant tout le fonctionnement normal.
Accros aux vieilleries ~(:-)

Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:17

Configuration mémoire:

Les composants répertoriés qui utilisent l'espace d'adressage de 64 Ko sur la CSV sont les suivants:

 $0000-$007F – RAM page zéro: embarqué sur le microprocesseur (6802) ou déporté sur une RAM 6810 en U6 (lorsqu'un 6808 est installé).
 $0080-$0083 – PIA contrôlant le générateur de son programmable (PSG AY3-8912) et les communications du processeur (MPU) en U11.
 $0090-$0093 – PIA de commande des voix en U7 – TMS5200.
 $1000 – DAC en U10 (Convertisseur numérique à analogique.
 ROMS – Nous avons décodé ces adresses manuellement. On peut voir qu'elles n'utilisent qu'un maximum de 4 Ko sur la ROM (qui en fait 32) à l'inverse de ce que l'on peut voir sur les vieilles ROMs 2516/9316 (demi stockage de 2 Ko):

• $8000-$8FFF – ROM en U2 (2532/9332).
• $9000-$9FFF – ROM en U3 (2532/9332).
• $A000-$AFFF – ROM en U4 (2532/9332).
• $B000-$BFFF – ROM en U5 (2532/9332).

Alimentation:

Les tensions nécessaires à la CSV sont générées comme suit:

Le +5 volts nécessaire pour les circuits, positif et logique, du TMS5200/6100 est généré par le régulateur 5 volts LM323 en VR1 (coin inférieur droit de la carte – sur le plus gros des 2 radiateurs). Le courant alimentant VR1 provient du 12 volts non-redressé qui alimente également la LED de test. Le même 12 volts non-redressé est filtré par le condensateur 4700µF/25v en C14 afin de supprimer l'ondulation non-désiré du VAC et produire l'alimentation du TDA2002 (amplificateur simple puissance).
La puce 7905 en VR2 (le "9" indique un voltage négatif à l'opposé du 7805 qui est un régulateur de 5 Volts positif) produit du -5 volts pour la ligne parallèle vers les puces TMS5200/6100. Elle est alimentée par le 6,3 volts qui provient de l'alimentation de l'éclairage, doublée puis inversée afin de produire le -12,6 volts. Le 6.3 volts est trop faible pour alimenter directement le régulateur qui a besoin d'au moins 7.5 volts en entrée pour pouvoir sortir un -5 volts stable. Le régulateur du -5 volts n'a pas besoin de radiateur car les seuls composants qui tirent sa puissance sont les puces TMS5200/6100.

ROMS:

Les types et tailles des ROMs des codes pour les sons influent sur le nombre de supports – U2, U3, U4 et U5 – qui sont utilisés, sont spécifiques à chaque jeu et du coup, nécessitent de configurer correctement les cavaliers selon les indications données dans les manuels des jeux, afin qu'elles puissent être commandées correctement par le microprocesseur. Bally a conçu la carte de manière très ordonnée car les positions des cavaliers sont soigneusement positionnés les unes au-dessus des autres, à la différence des cartes-mères où il faut les chercher sur le circuit imprimé. La CSV accepte les ROM masquées (non-programmables/effaçables) et les EPROMs (programmables/effaçables) sur les 4 supports des ROMS (mais pas sur le support du 6100). Les ROMS pouvant être insérées sont:

 Des EPROMS 2716 (16 kbits) ou les ROMS masquées BALLY 9316.
 Des EPROMS 2532 (32 kbits) ou les ROMS masquées BALLY 9332.

C'est toujours une bonne pratique de transférer la donnée des ROMS masquées dans des EPROMS et de garder une sauvegarde de l'image de la ROM dans un fichier binaire quelque part (par exemple sur votre disque dur) si vous avez un programmateur d'EPROMS à disposition.

Génération des voix:

La CSV génère les voix via l'utilisation du synthétiseur vocal (VSP) TMS5200 de Texas Instruments qui est positionnée en U8. Les données des voix sont stockées dans une EPROM. Bien que la conception intègre une mémoire ROM de voix synthétisées (VSM) TMS6100 en U9, qui peut contenir jusqu'à 128 Kbits de données de voix, elle n'a jamais été utilisée. (Il faut noter que la ROM 6100 est un composant personnalisé, et qu'à notre connaissance, aucun équivalent n'est ou sera jamais disponible sur le marché). Cette ROM est adressée par 4 lignes de données et émets des données en série… Ce qui est une configuration quelque peu inhabituelle… C'est un point discutable, mais qu'il est important de remarquer pour ceux qui voudraient éventuellement tenter des expériences.

Le 5200 emploie une méthode de compression de données connue sous le nom pompeux de "Codage prédictif linéaire" (LPC). Le 5200 ne peut traiter de données compressées qu'au travers de cet algorithme. Les données voix stockées dans les EPROMs de la CSV sont compressées de cette manière. Bien que le 6100 VSM n'ait jamais été utilisé, nous ferons référence à son intégration car la carte a été conçue avec sa fonctionnalité. Ceci explique l'architecture et le transfert de données basés autour de l'utilisation des 5200 et 6100. La méthode de communication du 5200 vers les autres composants vis-à-vis du traitement des CSV est la même pour les EPROMs et le 6100 VSM.

Le 6100 est connecté directement au 5200, qui contrôle l'adressage et la récupération des données voix du 6100 pour traitement interne après avoir reçu tout d'abord les commandes du processeur de la CSV via le PIA (gestionnaire de périphérique) en U7.

Lorsque la CSV reçoit l'ordre de générer les voix sans utiliser le VSM 6100 en U9, la donnée voix encodée LPC est stockée dans une EPROM et rendue accessible au 5200 via le PIA. Par cette méthode de transfert de données, le 5200 reçoit l'instruction de fonctionner en mode de "communication externe". En d'autres mots, le processeur lui dit "oublie de demander les données à la ROM VSM 6100 (parce qu'elle n'est pas là), je vais te communiquer les données directement". Nous ferons référence à la génération de voix en utilisant le VSM 6100 à partir de ce point, car il est plus complexe et ennuyeux d'expliquer à chaque fois comment le processeur transfère les bits de données compressées via le PIA jusqu'au VSP 5200 (mais, la description du fonctionnement du 5200 reste la même quelle que soit la source des données).

Le processeur 680x de la CSV a accès au pointeur d'adresses embarqué du 5200 auquel il indique de pointer différemment pour obtenir de nouveaux paquets de données (autre ROM). Le microprocesseur (CPU) ordonne alors au 5200 de prendre la donnée à cette adresse et de la traiter pour produire des voix en sortie. La donnée voix de la ROM 6100 est reçue par le 5200 en série (c’est-à-dire un bit après l'autre sur la même ligne, à l'opposé d'une ligne par bit) ce qui implique une conversion de la série en parallèle avant de stocker la donnée dans la mémoire tampon interne (16 bits) au sein du 5200. Étonnamment, le 6100 est un composant à 28 broches mais seules 10 sont utilisées… Les 18 autres ne sont pas connectées en interne.

Le TMS5200 est une sorte de microprocesseur. Il gère la donnée et l'adresse au 6100 avec un minimum d'interaction vers le processeur de la CSV. Il produit aussi la temporisation (horloge) du BUS pour la synchronisation des transferts de données entre le 6100 et lui-même.

Le TMS5200 est trop lent pour placer les données sur le BUS du processeur 680x. Le 680x devrait attendre une réponse/confirmation (l'obligeant à rester en état d'attente) alors qu'il pourrait effectuer d'autres tâches. Par conséquent, un PIA 6821 est utilisé en U7 comme interface parallèle du 680x afin d'envoyer les commandes et données de voix. Comme le 5200 n'est pas directement connecté au BUS d'adressage du 680x, il n'utilise pas d'espace d'adressage, au lieu de ça, seul l'espace d'adressage pros par le PIA (4 bits) est visible par le processeur (CPU) car le PIA bloque la ligne entre le processeur (CPU) et le 5200. Lorsque le processeur (CPU) veut communiquer avec le 5200, il doit le faire via le PIA (même chose pour le PSG 8912, comme nous le verrons plus loin). Le 680x peut écrire en parallèle (8 bits) des commandes/données vocales sur le 5200 via le PIA qui alors commande la partie matérielle de l'interface avec le 5200, et par conséquent, n'a pas besoin d'attendre une réponse. Le 5200 s'interrompt via sa broche n°17, INT (interruption), au travers de la partie sensible de la ligne CB1 du PIA, lorsqu'il demande que les données soient transférées vers sa mémoire interne, qui à son tour interrompt le 680x via la ligne IRQ.

Le 5200 génère numériquement les voix encodées en utilisant un filtre numérique embarqué afin de simuler la voix humaine. La description exacte de l'encodage LPC n'est pas triviale en termes de vulgarisation si votre mode de pensée n'est pas orienté vers la technique. La procédure est complexe (comme pour la plupart des traitements vocaux), et cela donne quelque chose comme ça:

Le LPC synthétise la voix humaine en récupérant suffisamment de données à partir d'échantillonnage/enregistrements de voix afin de construire un filtre numérique avec un pitch fluctuant qui tente de modéliser la voix humaine. Ce filtre génère une représentation numérique des impulsions aériennes de la glotte ou des fluctuations d'air (pour les sons non-vocaux). Le modèle du filtre passe alors au travers d'un convertisseur numérique/analogique embarqué qui finalement produit l'ondulation vocale analogique finale.

Le VSP 5200 n'encode pas les données vocales sur la puce (contrairement aux puces vocales CVSD où nous avons l'habitude de voir un encodage/décodage). Un matériel/logiciel séparé est nécessaire pour produire l'encodage en analysant des échantillons vocaux.

Le programme d'analyse LPC part d'un échantillonnage de voix numérisées, qui sont généralement obtenues à partir de voix analogiques passant au travers d'un convertisseur analogique/numérique (ADC) calibré sur un taux de transfert de 8 à 10 KHz. Les échantillons consécutifs sont regroupés afin de former un référentiel de voix pour l'analyse… Quelque chose comme 50 à 400 échantillons pour un référentiel donné, mais en général environ 200 échantillons. Le programme d'analyse LPC prend chaque référentiel, puis calcule la tonalité (pitch), la puissance et le coefficient du spectre vocal en pré-accentuant les échantillons vocaux. Les échantillons sont alors stockés dans un dossier de données sérialisées au sein du 6100 VSM afin d'être appelés, ou sous forme de données vocales encodées dans une EPROM.

La méthode d'encodage vocal LPC compresse les données vocales d'un taux de 100.000 bits/seconde à un taux d'environ 4800 bits/seconde. Le programme d'analyse réduit encore ce chiffre à 2000 bits/seconde, voire moins, en prenant intelligemment ses propres paramétrages vocaux en 10 bits et en les compressant en codes de 3 à 6 bits (ce qui dépend si tous les paramètres sont utilisés, ou s'il s'agit de sons vocaux ou non-vocaux).

Les données vocales encodées reçues par le 5200 sont alors décompressées et testées en interne pour garantir leur validité avant de recevoir les données de puissance, de tonalité et de spectre associées à l'échantillon stocké en RAM pour que la compilation/conversion soit effectuée.

L'empilage des données 128 bits, de type 1er entré, 1er sorti (FIFO), aussi connu comme mémoire tampon ou buffer, est organisé en 16 paquets de 8 bits afin d'abriter les données vocales qui lui sont transférées/récupérées du 6100/EPROM de la CSV. Lorsque la donnée est tirée du tampon (ou de l'empilement), elle passe au travers du convertisseur numérique/analogique DAC embarqué pour une conversions en voix avant la production finale de phrases vocales poussées vers les circuits d'amplifications. Si le tampon du 5200 baisse à 8 paquets, voire moins, (à moitié plein), il fait passer un IRQ à l'état haut sur le processeur 680x de la CSV via le PIA pour demander l'extraction de données supplémentaires.

Le 5200 envoie aussi une interruption lorsqu'il a terminé le traitement des voix et demande plus de données à traiter à partir de la ROM du 6100/EPROM de la CSV.
Interruption du 5200: Le 5200 génère des interruptions (INT) à 3 occasions, mais il s'agit globalement de la même chose:

 Echange du statut (TS): Le 5200 a terminé le traitement des voix et le tampon est à présent vide.
 Le niveau du tampon est bas (BL): le tampon (empilement des données) est tombé en dessous de 8 bits, mais n'est pas vide.
 Le tampon est vide (BU): Le tampon est à présent complètement vide.

Les 3 états ci-dessus sont signalés comme jalons dans le registre interne des statuts du 5200 et peuvent être lus à n'importe quel moment par le 680x pour définir l'état actuel de la puce.

Cela signifie que le transfert de données du 5200 par le microprocesseur 680x de la CSV est commandé par des interruptions. Le 680x (CPU) lorsqu'il reçoit une demande d'IRQ du PIA en U7 sait que le 5200 a traité ses données (l'interruption est déclenchée après consultation des jalons internes d'interruptions des PIAs) et le (CPU) peut exécuter la prochaine commande ou modifier directement le pointeur d'adressage de la séquence vocale du 5200, et par conséquent, indirectement la donnée vocale qui lui est destinée.

La conversion de la donnée vocale par le 5200 introduit un cadeau parasite… un bruit de conversion numérique, qui est un problème courant lorsqu'une conversion numérique vers analogique est effectuée pour des données "sons" ou "vocales". Afin de venir à bout du "bruit" en haute fréquence sur-imprimé sur les séquences vocales, un filtre basse-fréquence (LPF) est utilisé afin d'atténuer les séquences vocales à un seuil de 12 DB par octave au-dessus de 5 KHz. 25% d'U13 (un AMP) – un ampli transducteur LM3900 – est utilisé comme LPF de 2ème niveau. Les voix sont ainsi nettoyées et gommées. Nous pensons que ceci équivaut à la bande passante vocale que Williams a développé du temps de la technologie CVSD (Modulation vocale par écart variable en continu), mais ne nous citez pas sur ce point-là… Les voix sont ensuite envoyées dans un amplificateur de tensions contrôlées (VCA) en U14 (un autre LM3900) avant d'être transférées l'ampli de puissance TDA2002 8 watts (en U18) pour une sortie dans le haut-parleur de 8 Ohms.

L'amplitude de la sortie du VCA peut être commandée directement par le contrôle du voltage (CV) en entrée, d'où son nom (VCA). Le contrôle du voltage du VCA est généré par l'autre ampli du LM3900 OTA sur U13 qui agit comme un DAC. L'amplitude de sortie des DACs est commandée en faisant varier son entrée via 4 résistances montées en série sur la sortie du port B du PIA en U7 (sur les broches PB4 à PB7, pour être exact). Le code 4 bits envoyé au DAC par le PIA permet 16 étapes d'amplification, ce qui se traduit par 16 niveaux de sortie de voix sur le VAC, et au final, sur la puissance d'amplification.
Accros aux vieilleries ~(:-)

Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:20

Génération sonore: La génération des sons et des effets audio spéciaux est traitée de 2 manières:

1. Une puce AY3-8912 PSG (générateur de sons programmable) de chez Texas Instruments est installée en U12, commandée par le PIA en U11 (qui lui-même est commandé par le 680x de la CSV), et génère des ondes sonores carrées basiques, les bruitages et paramétrages des sons qui commande l'amplitude de sortie des circuits d'amplification. Ces tonalités ont un champ d'application limité (combien pouvez obtenir d'ondes carrées différentes?).
2. La sélection des tonalités pour le PSG n'est pas effectuée par le 680x de la CSV – les lignes de sélections "bobines*/sons*" (signaux également utilisés pour sélectionner les bobines plateau à enclencher via la carte de commande) de la carte-mère sélectionnent les tonalités requises. La CSV écrit les données de commande sur le PSG lui indiquant ainsi quel son jouer (etc.) sur les 8 lignes du port A (PA0 à PA7) reliées aux lignes de BUS bidirectionnelles du PSG (D0-D7). Le 680x peut également écrire ou examiner les registres internes à tout moment du PSG afin de déterminer la vitesse de traitement de la puce. La sélection des sons lancés par la carte-mère parvient sur la carte sons & voix via le connecteur J.

Le PSG contient 3 canaux pour générer l'audio – A, B et C. En plus de ces canaux, le PSG comprend un système de mixage des ondes sonores, un générateur de bruit et une commande d'amplitude (basses) pour chaque canal, bien que chaque DAC puisse avoir une des 10 amplitudes. Celles-ci diffèrent toutes les unes des autres… Elles ne font qu'augmenter, maintenir ou baisser le volume du son, en répétant l'amplitude ou en ne la jouant qu'une fois. Le réglage de l'amplitude est également possible, en répétant et modifiant les ondes d'amplitudes sans affecter les tonalités: il est connu sous l'appellation "Modulation d'amplitude" (AM).

Les 3 canaux audio sont alors additionnés en reliant les 3 broches de sortie. La puce comprend aussi un port de données 8 bits bidirectionnel, utilisé sur la carte sons & voix pour transférer les sélections d'adressage des sons entrants sur ses broches I/O (entrées/sorties) vers le 680x de la CSV via le PIA. (Le AY3-8910 employé sur les précédentes cartes-sons Bally possède exactement la même architecture interne, concernant la génération des sons, que le 8912, à l'exception que 8910 est un composant 40 broches et qu'il contient 2 ports I/O 8 bits).

Les 16 registres internes du 8912 et les valeurs permises sont:

 00 Canal A – Fréquence fine (0-255)
 01 Canal A – Fréquence (0-15)
 02 Canal B – Fréquence fine (0-255)
 03 Canal B – Fréquence (0-255)
 04 Canal C – Fréquence fine (0-255)
 05 Canal C – Fréquence (0-15)
 06 Période de bruitage (0-31)
 07 Mixage (0=active, 1=désactivé)
o Bit 0 Activation tonalité canal A
o Bit 1 Activation tonalité canal B
o Bit 2 Activation tonalité canal C
o Bit 3 Activation bruitage canal A
o Bit 4 Activation bruitage canal B
o Bit 5 Activation bruitage canal C
o Bit 6 Mode I/O port A (0=entrée, =sortie)
o Bit 7 Mode I/O port B (0=entrée, 1=sortie)

(Vous remarquerez 2 bits d'activation de port – Comme précédemment mentionné, le 8910 possède la même architecture que le 8910 à double port).

 08 Volume du canal A (0-15 ou 16=Commande d'enveloppe)
 09 Volume du canal B (0-15 ou 16=Commande d'enveloppe)
 10 Volume du canal C (0-15 ou 16=Commande d'enveloppe)
 11 Enveloppe de fréquence fine (0-255)
 12 Enveloppe de fréquence (0-255)
 13 Format d'enveloppe (0, 4, 8-15 sélectionne l'enveloppe
Souhaitée)
 14 Port A (statuts des broches en entrée, valeur des bits par
Statut de broche en sortie)
 15 Port B (statuts des broches en entrée, valeur des bits par
Statut de broche en sortie)

Le PIA U11 sur la carte-mère du jeu, émet les signaux de sélection des tonalités (et des bobines). Tous les signaux en entrée sont inversés sur la carte sons & voix (CSV) par un CMOS Hex inverseur 4049, en U16, avant de terminer en code binaire de 4 (ou 5) bits sur les broches IO0-IO4 du port I/O du AY3-8912. (Il y a 8 lignes I/O, mais les lignes IO5-IO7 ne sont pas utilisée car mises à la masse). La CSV sait qu'une requête de tonalité arrive, car le PIA en U11 fait une interruption sur la ligne IRQ du 680x, après avoir reçu une interruption sur sa propre ligne CB1. La ligne de sélection "Son/Bobine" de la carte-mère du jeu (J1/10) qui est connectée à la broche CB1 du PIA en U11 est forcée à l'état haut par la carte-mère – ce qui pousse à l'état bas l'IRQ du 680x de la CSV, via l'un des inverseurs en U16 (broche 2 – sortie inversée de la ligne de sélection "sons/bobines" de la carte-mère). L'interruption force la CSV à regarder l'entrée du port du registre I/O (14) sur le PSG (via le port A du PIA) et lire le code envoyé par la carte-mère. Ce code est alors transféré par le 680x de la CSV pour décodage.

Bally déclare: "Le numéro du code "son/voix" requis est envoyé à une vitesse de 2,5 bits sur les lignes de sélections "Bobines" qui sont les lignes de sélection des tonalités en entrée de la CSV. Ainsi, lorsqu'une bobine reçoit l'ordre de s'activer en regard de la détection de la fermeture d'un contact sur le plateau ou dans la caisse, le code du jeu transfère un code-son associé à la bobine vers la carte CSV au format binaire.

Techniquement (pour la prise de tête): Le transfert de données des 2 codes 4 bits vers la CSV est fait en synchro avec le retour "d'absence de données" indiquant qu'il a reçu les données. L'interruption de sélection de tonalité qui est produite sur la broche CB1 du PIA en U11 fait que la broche reste à l'état bas pendant 40 microsecondes, avant de repasser à l'état haut. Après une temporisation de 22 microsecondes (probablement engendrée par le temps nécessaire au processeur de la CSV pour traiter la routine d'interruption) le 1er code est présenté au port A par la carte-mère, que la CSV doit prendre dans les 145 microsecondes. Le second code est envoyé immédiatement après mais ne dure que 78 microsecondes. Si la CSV ne traite pas la donnée dans le temps spécifié (disons qu'il ne reçoit pas le premier code parce que le BUS de la CSV fonctionne lentement à cause d'une erreur), la CSV peut lancer un mauvais son. (Fin de la prise de tête).

Remarque: Les mêmes 4/5 lignes de transfert entre la carte-mère et le PSG sont également utilisées pour sélectionner les voix.

Bizarrement, les schémas que nous utilisons pour vérification indiquent une 5ème ligne de sélection de bobine reliée à PA4 (si les cavaliers EE sont installés, mais nous y reviendrons rapidement) ou IO4 du PSG. Peut-être que Bally s'est laissé des possibilités en réserve en rendant la 5ème ligne de sélection/bobine disponible pour la CSV?

Plus probablement: Le bit 5 de cette ligne est présent afin de transférer les données de commande du 680x de la carte-mère du jeu au 680x de la CSV. Au démarrage, la carte-mère envoie un code basique à la CSV afin de l'activer pour initialiser les VCAs embarqués à un niveau d'amplification prédéfini. Ce niveau est paramétrable par l'utilisateur (ou l'exploitant) via le menu des audits accessibles par le bouton de test de la porte/monnayeurs. Consultez votre manuel de jeu afin de connaitre les paramètres exacts de l'audit concerné. Toutefois, ceci mène à la question (pour nous en tout cas): Quels autres codes de commandes sont envoyés par la carte-mère à la CSV? 256 codes de commande sont possibles en utilisant les 2 demi-octets de 4 bits en conjonction avec la 5ème ligne (enfin… Les signaux de codes de commande de la 5ème ligne plutôt que des codes sons/voix). Le nombre total de codes possibles est de 512: 256 Sons/voix et 256 commandes. Bien sûr ceci est une pure spéculation de notre part, et seul un bidouillage du code du jeu ou une discussion avec les ingénieurs qui ont travaillés sur le composant/logiciel de la CSV pourrait permettre une véritable réponse.

Lorsque la CSV reçoit un code de sélection Son/voix, il modifie l'état du port A des PIAs d'entrée (lecture du code son/voix) à sortie, de telle sorte qu'ils puissent écrire la donnée de commande sur le PSG qui a son tour génèrera les tonalités/voix (bien sûr cela ne peut être fait s'il est seulement demandé à la CSV de produire les voix). Le PSG est doté d'un système de verrouillage afin de contraindre le taux de transfert des données sons qu'il génère et ainsi maintenir le débit du son sans que le 680x de la CSV n'ait à rafraichir les données de commande de tonalités qui lui sont envoyées afin de maintenir la continuité du son joué. La CSV continuera de cette façon jusqu'à ce que la routine son se termine ou qu'elle soit interrompue et forcée à jouer un autre son. A l'inverse des jeux modernes, la CSV (autant que nous puissions dire) ne gère pas de priorité parmi les tonalités. Tous les sons sont de niveau égal… Ainsi, le son précédent sera coupé et le nouveau son joué à la réception d'une interruption pour un nouveau son.

La sortie analogique du AY3-8912 est filtrée par un autre LFP (le dernier quart – un ampli LM3900 en U13) qui a un seuil de fréquence de 3,5 KHz et une réduction de 12DB/octave, tout comme la conception du filtre des voix. Le filtre n'est pas là pour supprimer les parasites de la conversion (ceci est fait de manière embarquée), mais arrondir/assouplir la rudesse des ondes carrées qui sont produites, afin de les rendre plus agréable à l'écoute. La réduction de fréquence des filtres est établie à 3,5 KHz, mais le PIA en U11 est capable d'enclencher le transistor NPN 2N3904 (Q2) qui fait chuter la fréquence à un faible niveau de 200 Hz pour des effets audio spéciaux.
Accros aux vieilleries ~(:-)

Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:22

Il est dommage que les concepteurs Bally de la CSV n'aient pas ajouté de commande de résonance programmable ou de logiciel de modulation de basse fréquence dans les filtres. Les doter d'une modulation de 2 à 4 pôles avec une réduction de 12/24 DB par octave aurait pu améliorer les capacités sonores bien au-delà de ce qu'elles sont à aujourd'hui et porter la technologie audio du flipper à un niveau inégalé.

 Comme le PSG est limité à la génération d'ondes carrées ou bruiter les ROMs de sons qui contiennent des données d'ondes supplémentaires et des algorithmes de génération d'ondes que le 680x peut envoyer au convertisseur numérique/analogique (DAC) pour un traitement audio sans qu'un autre PIA n'ait à interagir. Le 680x peut faire cela car le DAC en question (U10 – AS558) s'interface directement avec le BUS du 680x (il a sa propre broche de sélection d'IC et 3 lignes de données d'état) et est positionné sur le BUS de données. Cette méthode de lecture des données d'onde sur la ROM et de leur transfert vers un DAC est similaire à celle de Williams à la même époque… A la différence que Williams utilisait un PIA entre la donnée d'onde et leur DAC 1408. Remarquons que la sortie du DAC AD558 est suffisamment "claire" pour ne pas avoir besoin d'être filtrée et entre directement dans le circuit d'amplification sur l'entrée du VCA en U14 (entre la sortie du AY3-8912 LPF et le VCA).
 Les 5 cavaliers "EE" sont utilisés pour relier les sélections d'adressages des Sons/Voix directement au port A du PIA lorsque l'AY-8912 PSG n'est pas installé sur la CSV. Avec cette configuration, les sons ne sont générés que par le logiciel de génération d'ondes et effets via le DAC. Le PIA en U11 interrompt le 680x après avoir reçu une requête de la carte-mère du jeu comme précédemment expliqué. Cela oblige le 680x à lire directement les lignes du port A du PIA et de prendre le code présent de 4 (ou 5?) bits sur les broches dédiées aux 2 demi-octets.

Commandes d'optimisation:

Trois possibilités existent pour ajuster les commandes d'amplification – Les VCAs sous le contrôle du 680x: R69 et R70 sur la carte pour un ajustement local ou des potards d'1 KOhms déportés (se substituant à R69 et R70).

Bally laisse la possibilité de déconnecter le potentiomètre local des voix (R69) et des sons (R70) ou les VCAs (s'ils sont connectés) grâce aux cavaliers, de telle sorte que des potards déportés puissent faire varier les sons et les voix. Retirez le cavalier "M" et mettez en place le cavalier "N" pour la commande déportée des voix, et, retirez le cavalier "CC" et mettez en place le cavalier "DD" pour la commande déportée des sons. Ainsi, si vous le souhaitez, vous pouvez déconnecter R69/R70 ainsi que les potards déportés afin de commander les sons et voix à partir du menu des audits (commande des VCAs).

Comme pour les cartes-mères AS2518-xx, les PIAs de la CSV sont câblés en série. Les interruptions internes des PIAs en U7 et en U11 doivent être examinées par le 680x afin qu'il puisse déterminer quel PIA a émis la requête.

Les autres circuits:

Le circuit de réinitialisation au démarrage (POR) comprend un condensateur de temporisation (C1), une résistance de charge (R1) et une diode de déchargement rapide (CR1), alimentés par 2 inverseurs montés en série en U15 (74LS14) et reliés à la broche de réinitialisation du 680x. Le LS14 est un inverseur à bascule Schmitt, ce qui signifie qu'il ne quittera pas l'état de "sortie" tant que le seuil du voltage de l'entrée (environ 3,15 volts) ne soit pas atteint ou dépassé. Ce qui bloque la croissance linéaire de la sortie, qui pourrait déclencher le 680x avant qu'il est le temps de se stabiliser (le temps de réinitialisation devant être égal ou supérieur à 8 cycles d'horloge). Cela évite également les bugs générés par les changements rapides sur l'entrée de l'inverseur. La diode décharge rapidement le condensateur au cas où le 5 volts logique s'effondre – S'il n'était pas présent, une charge positive peut maintenir les entrées des inverseurs actives et éviter que le 680x ne se réinitialise. Cela peut faire chuter les lignes de données et d'adressages à un niveau dangereusement bas, compte tenu que l'alimentation s'effondre et que les composants du BUS ne sont plus capables d'identifier correctement les états "haut" et "bas". En ce qui concerne le 680x, cela peut se traduire par le décodage d'une mauvaise instruction et entrainer une écriture (un stockage de données) plutôt qu'une lecture (chargement de données), débouchant sur une réécriture de la mémoire.

Deux inverseurs sont utilisés en série et un verrouillage est fait à la sortie du premier inverseur (broche 2) et les données sont poussées vers le circuit séquenceur de puissance, c’est-à-dire vers les synthétiseurs de voix TMS5200/TMS6100. Le circuit génère un courant de +/-5 Volts au 5200/6100 via les 3 transistors PNP (Q3-Q5). Le circuit ne fournit pas d'alimentation aux composants vocaux tant qu'une temporisation correcte de réinitialisation se soit produite. Le second inverseur monté en série est utilisé pour corriger l'état du signal de réinitialisation sur la broche de réinitialisation du 680x. (La ligne de réinitialisation est à l'état haut en temps normal, mais entre dans le circuit de séquençage de puissance des voix à l'état bas afin d'enclencher les transistors PNP).

Heureusement, Bally n'a pas intégré les générateurs d'horloge double phase, ni les tampons d'horloge, qui employaient des multi-vibreurs sur les cartes à base de 680x, au bénéfice d'un cristal oscillant de 3,58 Mhz, placé entre les broches 38 et 39 du 6802/8. Cela permet de repérer les défauts de signaux d'horloge plus facilement (vérification de l'horloge directement aux broches du 680x).

Un 74LS155 – un décodeur double 2/4 démultiplexeur – en U17, est utilisé afin de générer les signaux de sélection des IC dédiés à tous les composants mémoires répertoriés (ROMs, PIAs, DACs, etc.), sur le BUS en décodant les lignes d'adressages A11-A15 en conjonction avec le signal en sortie de la VMA (Valid Memory Adress = Adresse de mémoire valide) sur le 680x (broche 5), pour tous les cycles de lecture/écriture. La RAM 6810 en U6 ($00-$7F) utilise également ce décodeur d'adressage. Il est automatiquement désélectionné lorsque A7 passe à l'état haut ($xx8x) et que l'adressage sur le BUS excède la valeur $0FFF (le 1er paquet de 4 kilobits – début de l'espace d'adressage du DAC). Le 680x n'a pas besoin d'émettre d'adressage vers le BUS lorsque la RAM interne est sélectionnée lorsqu'un 6802 est employé, par conséquent, le décodeur d'adressage n'est pas sollicité. Aucun BUS de commande n'est utilisé sur la CSV car un seul composant est actif sur le BUS, et le 680x possède suffisamment de puissance pour tirer un TTL à la fois (le composant pouvant être concerné est le "tri-state" qui est en veille).
Accros aux vieilleries ~(:-)

Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:23

Condensateurs:

Les problèmes relatifs aux condensateurs embarqués ont été déjà abordés. En fait, ces condensateurs sèchent et se dépolarisent avec le temps, fait encore aggravé lorsque les condensateurs sont proches de radiateurs (dissipateurs thermiques). La CSV n'est plus de première jeunesse… Elle commence vraiment à dater et il est préférable de changer tous les condensateurs avant que ceux-ci ne tombent en panne. Ils sont utilisés pour lisser ou coupler les sons dans les circuits d'amplifications.

Certains revendeurs de pièces détachées proposent des kits de remplacement (mais nous ne sommes pas sûr qu'ils comprennent tous les condensateurs que nous allons lister ci-dessous). Les condensateurs en questions sont:

 C1 = 47 µF/16V
 C14 = 4700 µF/25V
 C15 = 10 µF/16V
 C19/C24/C25/C28/C32/C34/C42 = 1 µF/25V
 C27 = 1000 µF/16V
 C29 = 470 µF/6V
 C36/C43 = 2 µF/25V
 C37/C38 = 330 µF/50V
Petit avertissement: Presque tous les nouveaux condensateurs ont leur patte négative indiquée par une flèche noire sur le corps du condensateur. Sur la CSV, c'est l'inverse. Nous avons examiné 2 cartes, et les anciens condensateurs sont marqués sur côté de la patte positive… Le circuit imprimé de la carte est également marquée du côté du positif… Aussi, assurez-vous de respecter la polarité.
Si jamais vous assemblez le condensateur à l'envers, et que vous mettez la carte sous tension (c’est-à-dire en inversant la tension), le diélectrique sera ôté de l'anode et un puissant courant circulera au fur et à mesure que les oxydes s'accumuleront sur la cathode. Cela provoquera la génération d'un gaz, ce qui fera exploser le corps du condensateur.
Auto-test:
Comme pour les autres cartes Ball embarquant des 680x, la CSV utilise une seule LED pour indiquer son statut une fois mise sous tension. Le test embarqué est automatiquement lancé une fois la routine de démarrage effectuée, afin de tenter de vérifier que les composants fonctionnent correctement.
Pour une raison donnée (mieux connue par Bally) les ROMs semblent ne pas être testées. Elles ne sont pas prévues dans le programme du test. Pourquoi elles sont testées par le "checksum", mais que ce test ne soit pas affiché est un mystère. Si elles sont défaillantes, il est probable que la carte passe le test, mais qu'il y ait de mauvaises sorties audio ou que le code d'exploitation soit corrompu. Cela pourrait même lancer une routine de test corrompue…
Scintillement initial: Après le démarrage et une remise à zéro de l'horloge/régulation du voltage correcte, la LED scintille brièvement – environ 300 millisecondes (brève remarque: Le PIA 6820/1 se configure après la réinitialisation système. Cette configuration ne convient pas pour un fonctionnement d'encours de jeu. Le processeur de la CSV doit donc reconfigurer le PIA, le reprogrammer, afin qu'il puisse effectuer les fonctions nécessaires au système. La LED scintille brièvement pendant temps-là).
1er Clignotement: Le programme de test tente de valider l'état de la RAM NMOS 128 bits placé sur la page zéro sur les adresses de $0000 à $007F. Remarquez que nous n'avons pas dit que le programme tente de tester la RAM en U6… Pourquoi? Parce Bally a fait une omission dans la documentation du test.
Si vous avez un processeur 6802 installé sur votre CSV, alors ce sont les 128 bits de mémoire embarquée qui sont testées et non U6, compte tenu que la ligne d'activation de la RAM du 680x (broche 36) est configurée à l'état haut (sur la ligne de réinitialisation) par le cavalier "K". Il importe peu au logiciel de savoir où est située la RAM physiquement, tant que celle-ci est indexée à la page zéro (transparent au logiciel). Le programme de test essaie d'écrire un format de données sur l'adresse $0000, commençant par $00 jusqu'à $FF. Si le programme parvient à écrire et à relire cette donnée, il valide cette étape du test et passe au bit suivant $0001, jusqu'à ce que les 128 bits aient été vérifiés. 256 x 128 font 32.768 cycles de validation. Si le test est positif, la LED clignote pour la 1ère fois (le scintillement initial ne comptant pas pour un clignotement).
Si vous utilisez un 6802 et que le test de la RAM échoue (vous n'obtenez pas le 1er clignotement) vous pouvez avoir de la chance. Retirez le cavalier "K" (qui active la RAM interne du 6802) et placez le en "L", puis installez une RAM 6810 en U6 et relancez le test… Si ça ne marche pas, il faudra changer le processeur 680x (car l'architecture interne est endommagée).
Point intéressant, "Pinball Lizard" a répertorié un problème dans leur astuce technique n°34 relative au bouton de test de la CSV qui n'est pas stabilisé, ce qui parfois entraine un plantage de la carte après l'exécution du test. Comme le contact du bouton n'est pas stable, il se commutera et se dé-commutera un certain nombre de fois, ce qui est interprété comme une requête NMI valide vers le 680x. L'espace de stockage de la RAM sur la CSV n'est que de 128 bits (la page zéro, de $0000 à $007F, la longueur d'empilage nous étant inconnue). Le 680x doit sauvegarder son contenu sur ses registres embarqués dans la mémoire RAM lorsqu'il reçoit une interruption NMI (ou IRQ). Un nombre donné d'interruptions reçues de cette manière provoque un encombrement (les interruptions sont placées en file d'attente afin d'être traitées en LIFO – dernier arrivé premier traité). La cause la plus probable de plantage est la saturation de la capacité mémoire, un enroulement des paquets et une réécriture sur les paquets présents, écrasant les données préalablement enregistrées. La conclusion? Le processeur plante parce qu'il retire des paquets de données qui ne correspondent pas aux données initialement sauvegardées. La mise hors tension est la seule solution pour remédier au problème (il n'y a pas de bouton de redémarrage sur la CSV). Le problème est amplifié par le fait que le transfert des données voix nécessite une interruption IRQ. Une plus grande utilisation de la RAM pour traduire les IRQ et NMI en collision provoquée par les réécritures entraine un plantage du 680x encore plus rapidement.
2ème Clignotement: Le 680x tente l'écriture d'un paquet de données sur les registres du PIA en U7 (le PIA de commande des voix) de la même manière que pour la RAM. Si la LED clignote le test est réussi. Dans le cas contraire, vérifiez les supports des PIA ou inversez les PIA.
3ème Clignotement: C'est exactement le même teste que pour le PIA en U7 sauf qu'il est effectué en U11 (commande des sons). La LED clignote si le test est réussi. En cas d'échec, procédé comme pour U7.
4ème Clignotement: Le 680x tente d'écrire sur les registres internes de l'AY3-8912 PSG, puis de lire les données écrites en utilisant le PIA U11 comme interface parallèle. La LED clignote si le test est réussi. En cas d'échec, changez le PIA en U11 (le test du PIA U11 ne peut tester l'état des entrées/sorties du PIA car il n'y pas de bouche de rétroaction sur les données… Il ne peut qu'écrire sur les registres internes I/O du PIA, et alors que le PIA peut passer le test, le tampon en sortie peut être défaillant). Si le défaut persiste, déposez le PSG et vérifier les supports du PIA et du PSG.
5ème Clignotement: Le 680x tente à présent un transfert de données 9 bits vers le synthétiseur TMS5200. Comme la mémoire du 5200 est vide au démarrage, il enverra une interruption pour indiquer "Mémoire/tampon basse" pour chaque bit transféré jusqu'à ce qu'il ait reçu 9 bits (puis n'envoie une interruption que lorsque la mémoire passe sous la moitié de sa capacité, soit 8 bits ou moins). Le 680x écrit un seul bit à la fois et attend l'interruption "Mémoire/tampon basse" jusqu'à ce que 9 bits aient été reçus. A la réception du 9ème bit, le 5200 indique que la mémoire tampon n'est plus "basse" en n'envoyant plus d'interruption. Lorsque cela se produit, la CSV présume que l'IC est bonne.
(Bally a stipulé: Chaque fois qu'une écriture sur la puce vocale est effectuée, celle-ci répond par un accusé réception).
Remarquons que la documentation sur les tests chez Bally est trompeuse car elle est trop vague. Le 5200 n'envoie pas d'accusé réception pour chaque bit qui lui est envoyé, à l'exception du cas décrit ci-dessus. Ceci étant, si la mémoire tampon contient plus de 8 bits, le 5200 n'enverra pas d'interruption et donc ne fera pas d'accusé réception. Si la mémoire tampon est pleine (16 bits), cela changera l'état de la ligne "ready" (broche 18) reliée au PIA afin de dire au 680x de ne plus envoyer de données avant que le 5200 n'en réclame (passe en "not ready").
Si le test est réussi la LED clignote pour la 5ème et dernière fois et les PIAs sont initialisés au bon état de configuration pour que le jeu fonctionne (en attente d'une interruption de sélection de son de la part de la carte-mère). Si le test échoue alors retirez le PIA pour les raisons indiquées au 4ème clignotement, sinon retirez le 5200 et/ou vérifier les supports. Vérifiez les tensions sur les broches d'alimentation du 5200 (+5V sur la broche 4 et -5V sur la broche 5) car le circuit de séquençage d'alimentation peut lui-aussi être défaillant.
Accros aux vieilleries ~(:-)

Avatar du membre
Leveeger
Dept: 13
Collec Perso: 17 flips
Rech/Achete: 0 flip
Messages : 3496
Enregistré le : 17/06/2013
Niveau : Confirmé
Pro / revendeur : non
Localisation : Marseille
Contact :

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par Leveeger » lun. 11 04, 2022 17:27

Condensateurs:

Les problèmes relatifs aux condensateurs embarqués ont été déjà abordés. En fait, ces condensateurs sèchent et se dépolarisent avec le temps, fait encore aggravé lorsque les condensateurs sont proches de radiateurs (dissipateurs thermiques). La CSV n'est plus de première jeunesse… Elle commence vraiment à dater et il est préférable de changer tous les condensateurs avant que ceux-ci ne tombent en panne. Ils sont utilisés pour lisser ou coupler les sons dans les circuits d'amplifications.

Certains revendeurs de pièces détachées proposent des kits de remplacement (mais nous ne sommes pas sûr qu'ils comprennent tous les condensateurs que nous allons lister ci-dessous). Les condensateurs en questions sont:

 C1 = 47 µF/16V
 C14 = 4700 µF/25V
 C15 = 10 µF/16V
 C19/C24/C25/C28/C32/C34/C42 = 1 µF/25V
 C27 = 1000 µF/16V
 C29 = 470 µF/6V
 C36/C43 = 2 µF/25V
 C37/C38 = 330 µF/50V

Petit avertissement: Presque tous les nouveaux condensateurs ont leur patte négative indiquée par une flèche noire sur le corps du condensateur. Sur la CSV, c'est l'inverse. Nous avons examiné 2 cartes, et les anciens condensateurs sont marqués sur côté de la patte positive… Le circuit imprimé de la carte est également marquée du côté du positif… Aussi, assurez-vous de respecter la polarité.

Si jamais vous assemblez le condensateur à l'envers, et que vous mettez la carte sous tension (c’est-à-dire en inversant la tension), le diélectrique sera ôté de l'anode et un puissant courant circulera au fur et à mesure que les oxydes s'accumuleront sur la cathode. Cela provoquera la génération d'un gaz, ce qui fera exploser le corps du condensateur.

Auto-test:

Comme pour les autres cartes Ball embarquant des 680x, la CSV utilise une seule LED pour indiquer son statut une fois mise sous tension. Le test embarqué est automatiquement lancé une fois la routine de démarrage effectuée, afin de tenter de vérifier que les composants fonctionnent correctement.

Pour une raison donnée (mieux connue par Bally) les ROMs semblent ne pas être testées. Elles ne sont pas prévues dans le programme du test. Pourquoi elles sont testées par le "checksum", mais que ce test ne soit pas affiché est un mystère. Si elles sont défaillantes, il est probable que la carte passe le test, mais qu'il y ait de mauvaises sorties audio ou que le code d'exploitation soit corrompu. Cela pourrait même lancer une routine de test corrompue…

Scintillement initial: Après le démarrage et une remise à zéro de l'horloge/régulation du voltage correcte, la LED scintille brièvement – environ 300 millisecondes (brève remarque: Le PIA 6820/1 se configure après la réinitialisation système. Cette configuration ne convient pas pour un fonctionnement d'encours de jeu. Le processeur de la CSV doit donc reconfigurer le PIA, le reprogrammer, afin qu'il puisse effectuer les fonctions nécessaires au système. La LED scintille brièvement pendant temps-là).

1er Clignotement: Le programme de test tente de valider l'état de la RAM NMOS 128 bits placé sur la page zéro sur les adresses de $0000 à $007F. Remarquez que nous n'avons pas dit que le programme tente de tester la RAM en U6… Pourquoi? Parce Bally a fait une omission dans la documentation du test.

Si vous avez un processeur 6802 installé sur votre CSV, alors ce sont les 128 bits de mémoire embarquée qui sont testées et non U6, compte tenu que la ligne d'activation de la RAM du 680x (broche 36) est configurée à l'état haut (sur la ligne de réinitialisation) par le cavalier "K". Il importe peu au logiciel de savoir où est située la RAM physiquement, tant que celle-ci est indexée à la page zéro (transparent au logiciel). Le programme de test essaie d'écrire un format de données sur l'adresse $0000, commençant par $00 jusqu'à $FF. Si le programme parvient à écrire et à relire cette donnée, il valide cette étape du test et passe au bit suivant $0001, jusqu'à ce que les 128 bits aient été vérifiés. 256 x 128 font 32.768 cycles de validation. Si le test est positif, la LED clignote pour la 1ère fois (le scintillement initial ne comptant pas pour un clignotement).

Si vous utilisez un 6802 et que le test de la RAM échoue (vous n'obtenez pas le 1er clignotement) vous pouvez avoir de la chance. Retirez le cavalier "K" (qui active la RAM interne du 6802) et placez le en "L", puis installez une RAM 6810 en U6 et relancez le test… Si ça ne marche pas, il faudra changer le processeur 680x (car l'architecture interne est endommagée).

Point intéressant, "Pinball Lizard" a répertorié un problème dans leur astuce technique n°34 relative au bouton de test de la CSV qui n'est pas stabilisé, ce qui parfois entraine un plantage de la carte après l'exécution du test. Comme le contact du bouton n'est pas stable, il se commutera et se dé-commutera un certain nombre de fois, ce qui est interprété comme une requête NMI valide vers le 680x. L'espace de stockage de la RAM sur la CSV n'est que de 128 bits (la page zéro, de $0000 à $007F, la longueur d'empilage nous étant inconnue). Le 680x doit sauvegarder son contenu sur ses registres embarqués dans la mémoire RAM lorsqu'il reçoit une interruption NMI (ou IRQ). Un nombre donné d'interruptions reçues de cette manière provoque un encombrement (les interruptions sont placées en file d'attente afin d'être traitées en LIFO – dernier arrivé premier traité). La cause la plus probable de plantage est la saturation de la capacité mémoire, un enroulement des paquets et une réécriture sur les paquets présents, écrasant les données préalablement enregistrées. La conclusion? Le processeur plante parce qu'il retire des paquets de données qui ne correspondent pas aux données initialement sauvegardées. La mise hors tension est la seule solution pour remédier au problème (il n'y a pas de bouton de redémarrage sur la CSV). Le problème est amplifié par le fait que le transfert des données voix nécessite une interruption IRQ. Une plus grande utilisation de la RAM pour traduire les IRQ et NMI en collision provoquée par les réécritures entraine un plantage du 680x encore plus rapidement.

2ème Clignotement: Le 680x tente l'écriture d'un paquet de données sur les registres du PIA en U7 (le PIA de commande des voix) de la même manière que pour la RAM. Si la LED clignote le test est réussi. Dans le cas contraire, vérifiez les supports des PIA ou inversez les PIA.

3ème Clignotement: C'est exactement le même teste que pour le PIA en U7 sauf qu'il est effectué en U11 (commande des sons). La LED clignote si le test est réussi. En cas d'échec, procédé comme pour U7.

4ème Clignotement: Le 680x tente d'écrire sur les registres internes de l'AY3-8912 PSG, puis de lire les données écrites en utilisant le PIA U11 comme interface parallèle. La LED clignote si le test est réussi. En cas d'échec, changez le PIA en U11 (le test du PIA U11 ne peut tester l'état des entrées/sorties du PIA car il n'y pas de bouche de rétroaction sur les données… Il ne peut qu'écrire sur les registres internes I/O du PIA, et alors que le PIA peut passer le test, le tampon en sortie peut être défaillant). Si le défaut persiste, déposez le PSG et vérifier les supports du PIA et du PSG.

5ème Clignotement: Le 680x tente à présent un transfert de données 9 bits vers le synthétiseur TMS5200. Comme la mémoire du 5200 est vide au démarrage, il enverra une interruption pour indiquer "Mémoire/tampon basse" pour chaque bit transféré jusqu'à ce qu'il ait reçu 9 bits (puis n'envoie une interruption que lorsque la mémoire passe sous la moitié de sa capacité, soit 8 bits ou moins). Le 680x écrit un seul bit à la fois et attend l'interruption "Mémoire/tampon basse" jusqu'à ce que 9 bits aient été reçus. A la réception du 9ème bit, le 5200 indique que la mémoire tampon n'est plus "basse" en n'envoyant plus d'interruption. Lorsque cela se produit, la CSV présume que l'IC est bonne.

(Bally a stipulé: Chaque fois qu'une écriture sur la puce vocale est effectuée, celle-ci répond par un accusé réception).

Remarquons que la documentation sur les tests chez Bally est trompeuse car elle est trop vague. Le 5200 n'envoie pas d'accusé réception pour chaque bit qui lui est envoyé, à l'exception du cas décrit ci-dessus. Ceci étant, si la mémoire tampon contient plus de 8 bits, le 5200 n'enverra pas d'interruption et donc ne fera pas d'accusé réception. Si la mémoire tampon est pleine (16 bits), cela changera l'état de la ligne "ready" (broche 18) reliée au PIA afin de dire au 680x de ne plus envoyer de données avant que le 5200 n'en réclame (passe en "not ready").

Si le test est réussi la LED clignote pour la 5ème et dernière fois et les PIAs sont initialisés au bon état de configuration pour que le jeu fonctionne (en attente d'une interruption de sélection de son de la part de la carte-mère). Si le test échoue alors retirez le PIA pour les raisons indiquées au 4ème clignotement, sinon retirez le 5200 et/ou vérifier les supports. Vérifiez les tensions sur les broches d'alimentation du 5200 (+5V sur la broche 4 et -5V sur la broche 5) car le circuit de séquençage d'alimentation peut lui-aussi être défaillant.

Fin d'article :u~:
Accros aux vieilleries ~(:-)

Avatar du membre
saturnzzz
Dept: 62
Rech/Achete: 0 flip
Messages : 119
Enregistré le : 02/12/2008
Niveau : Initié
Pro / revendeur : non
Localisation : Hénin-Beaumont

Re: Carte Sons & voix AS-2518-61 décortiquée

Message par saturnzzz » lun. 11 04, 2022 19:45

Super Leveeger

Je consulte régulièrement l'article de Clives Jones pour la réparation des AS 2518-61

Mais en français c'est encore Mieux

Merci :x26: :x26: :x26:

Répondre