Emulation d'Assdesass sur To9 - l'histoire du 6846 clone

Couvre tous les domaines de l'émulation ou de la virtualisation ainsi que les discussions sur les divers outils associés.

Modérateurs : Papy.G, fneck, Carl

Répondre
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Emulation d'Assdesass sur To9

Message par __sam__ »

Oui tu as raison. L'horloge E arrive sur l'entrée E (pin 20) du 6848.
nicolho a écrit :... /CTG est toujours abaissé (car "pulled-down" sur la carte mère)
En effet si je suis la pin 17 sur http://dcmoto.free.fr/documentation/schemas/to9.html, je tombe sur R22, puis sur la pinoche 1, qui est Vss sur le 6848.

Mais si c'est à la masse, comment peut-on on avoir un front descendant dessus ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Emulation d'Assdesass sur To9

Message par nicolho »

__sam__ a écrit :Si c'est relié à Vss, comment on peut avoir un front descendant dessus ?
Voici la (séduisante mais discutable) supposition que j'avais faite à la base cet après-midi :
nicolho a écrit :Comme /CTG est toujours abaissé (car "pulled-down" sur la carte mère), il est fort probable qu'il soit simplement "samplé" au bout de 4 cycles (sans besoin de transition descendante) au niveau bas donc,
Effectivement, c'est quand même sujet à caution... d'où l'emploi de "probable", "je crois", "ça expliquerait bien.." et tutti quanti :)
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

Alors là moi je sèche.
Est-ce que vous pouvez me réexpliquer autrement à quoi sert CTG?
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Emulation d'Assdesass sur To9

Message par nicolho »

/CTG ...
nicolho a écrit :ça signifie (très probablement) "Counter/Timer Gate", et son rôle est expliqué en toute lettre dans la description de /CTG postée également ci-dessus (tirée de la doc) : "/CTG .. is used as a trigger or a clock gating function to the Timer".

Donc d'après ce qui est écrit, il ne s'agit pas seulement du "déclencheur" des initialisations du compteur, mais aussi d'une porte (gate) pour son horloge, qui laisse passer cette dernière ou pas (je dis ça d'après mes rudiments encore frais de circuits logiques : en principe, ça permet de bloquer ou pas l'arrivée du signal d'horloge sur un compteur, et donc de le mettre en pause)
Stp, éventuellement, dis-moi ce qui n'est pas clair ci-dessus.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Emulation d'Assdesass sur To9

Message par __sam__ »

Personne n'a le code source VHDL ou verilog d'un 6848 par hasard? Le mieux que j'arrive à trouver c'est https://github.com/mamedev/mame/blob/ma ... mc6846.cpp, mais c'est pas forcément fidèle.

@Tomix: ben je dirais que vu qu'il est forcé à la masse tout le temps, et qu'il n'est utilisé que sur front descendant, en pratique il n'a pas l'air de servir des masses (jeux de mot! ;) )
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Emulation d'Assdesass sur To9

Message par nicolho »

__sam__ a écrit : je dirais que vu qu'il est forcé à la masse tout le temps, et qu'il n'est utilisé que sur front descendant, en pratique il n'a pas l'air de servir des masses (jeux de mot! ;) )
:D donc à la poubelle mon hypothèse (comme quoi y'aurait pas forcément de transition nécessaire) et retour à la case départ ! :mrgreen:
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

@nicolho
Non non, ce que tu disais était clair. Mais compte tenu du schéma posté par sam, je ne comprenais pas du tout l'usage de ce CTG. Et du coup, comment cela pouvait valider ton hypothèse initiale. J'ai pensé qu'il y avait une feinte.
Toutefois, peut-être qu'il y a corrélation quelque part. Ces 4 cycles de délai de la doc me turlupine.

@__sam__
Je vais essayer de te mailer un truc ce soir.
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Emulation d'Assdesass sur To9

Message par nicolho »

Tomix a écrit :@nicolho
Non non, ce que tu disais était clair. Mais compte tenu du schéma posté par sam, je ne comprenais pas du tout l'usage de ce CTG.
je sais pas :?: le seul schéma de Samuel que j'ai vu, c'était celui posté il y a déjà quelques jours concernant le détail des cycles d'instructions du 6809 :? donc je vois vraiment pas trop le rapport avec /CTG , mais bon...
Personnellement, je ne dirais pas qu'il ne sert pas, mais plutôt qu'il est en permanence abaissé, donc activé, porte ouverte :)

Edit: D'ailleurs, pour savoir une fois pour toute ce qu'il en est, je vous propose de le "désactiver" ("pulled up", tiré au 5v avec une résistance de quelques kilo-ohms), et je parie que vous verrez que ça sert carrément à quelque chose ! :P

PS: au feeling, je persiste à croire à ma théorie (et il n'y en a pas de moins mauvaise pour l'instant), vous avez raison, ça contredit la doc qui ne parle que de transitions sur /CTG, mais il doit y avoir un rapport avec sa reconnaissance au début d'un 4ème cycle... et je dis pas ça pour avoir raison, je m'en fous pas mal.. : c'était juste pour faire avancer le chimili, chimili mili,... 8)
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

Mais si! Le schéma du To9 en haut de cette page! On voit CTG relié à la masse. ici: http://dcmoto.free.fr/documentation/schemas/to9.html

Bon sinon, je me demande quand même si tu n'aurais pas raison (je change d'avis tout le temps). Le coup des 4 cycles, c'est un peu trop gros pour que ce soit une coïncidence.
Le montage du To9 doit faire en sorte que les 4 cycles soient toujours consommés.

Reste à comprendre la différence avec mon To8D.

@__sam__
Déjà, tu peux faire un test avec Assdesass en mode debug. Tu déroules sur E803 et après on verra.
Je vais te faire une disquette avec un test de synchro à $9BF. Ce sera un effet copper stable sur To9. Si ca bouge, c'est que c'est pas comme sur To9.
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

@__sam__
Surprise dans ta boite mail.
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Emulation d'Assdesass sur To9

Message par __sam__ »

Bien reçu.

Bon j'ai lancé les deux progs, et n'ai les barres stables qu'avec $9C0. Donc ton TO8D est semblable au miens. Par contre sur mon TO8D, en plus des RASTERs j'ai 3 barres verticales noires (avec un liseret rouge et bleu sur la droite) qui sont aussi stables (enfin toutes les 5 secs elles défilent un poil horizontalement avant de reprendre leur place). Avec la valeur $9BF, ces 3 barres verticales défilent très très vite horizontalement sans jamais revenir à leur place et les rasters défilent peu à peu vers le haut.

Ce qui est dommage c'est qu'en début de semaine j'avais mon TO9 (+mon amiga) à coté de moi et j'aurais pu tester sur mon TO9. Tant pis.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

Pour les bavures graphiques, c'est normal. Ce test était conçu pour To9 à la base. Et sur To8, la routine d'interruption timer en rom prend plus de cycles, d'où le décalage.
Pour les sursauts, je pense que c'est normal. il doit y avoir une interruption qui doit intervenir de temps en temps. Peut-être le clavier?
En tout cas, pendant le test, tu peux afficher des caractères au clavier. Il doit y avoir un scroll en plein milieu aussi.
Tu peux t'amuser avec les sources. Ils sont dans la disquette, et assdesass boot dessus également.

Sinon, ce qui me rassure c'est que mon To8D fonctionne bien, comme le tien.
En revanche, Daniel semblait décrire un comportement identique au To9 depuis un To8 tout court.

Mais pour en revenir au sujet, ces différences de comportements entre le To8D et le To9 sont étranges. Pour rappel:
- sur assdesass, le timeout du timer intervient trop tôt avec un To8D, alors que nicholo aurait trouvé l'explication logique au phénomène
- il faut spécifier la valeur $9c0 pour avoir le cycle d'une VBL sur To8D, soit 8 cycles de plus que la normale.

A voir maintenant avec un To8 tout court...
nicolho
Messages : 409
Inscription : 10 nov. 2016 16:53

Re: Emulation d'Assdesass sur To9

Message par nicolho »

Du côté de Motorola, j'ai cherché d'autres puces similaires, et le plus connu est le 6840 qui a 3 compteurs, mais un seul divisible par 8, très similaire dans sa description (et à priori dans son fonctionnement) à celui du 6846.

Pour vous faire des vacances, je vous épargne pas mal de détails (ma bonne résolution pour cette année :)) et ceux qui souhaiteraient approfondir trouveront facilement ces documents en lignes, il y en a essentiellement 3 qui apportent chacun des détails complémentaires : la doc de Motorola MC6840, celle d'un clone d'Hitachi HD63B40P, et surtout le brevet des années 70 (https://patentimages.storage.googleapis ... 161787.pdf).. avec le circuit logique ! 8), malheureusement incomplet et très cryptique, mais je l'ai reconstitué comme j'ai pu en une seule image, en pièce jointe à ce message).

Déjà quelques corrections ou confirmations sur ce qui avait été dit précédemment :
- l'interprétation de Tomix est confirmée quand il parlait de réinitialisation avec soit /CTG, soit Write Timer Latch, soit RESET (pour le mode continu)
- le Clock Input (CTC) et le Clock Gate (CTG) ne sont effectivement pas impliqués dans les opérations des TEO (évidemment... mea culpa), et à priori quelque soit leur état.
- on avait vu l'histoire du quatrième "pulse" pour /CTG, la doc du 6846 parle d'ailleurs exactement du même délai pour /CTC mais a omis de dire que.. ce délai concerne aussi le "diviseur par 8" (prescaler), qui lui nous intéresse !
- :!: on a encore mal compté : la doc parle bien du 4ème "pulse", mais entre le 1er et le 4ème, il a seulement 3 cycles bien sûr

Maintenant, le schéma du circuit logique est assez difficile à comprendre pour moi qui connait pas bien, mais on voit facilement, en plusieurs endroits, les éléments qui génèrent ce délai, et voici maintenant l'explication qui me semble la plus tangible le concernant (même si ça reste une hypothèse) :
On voit en effet dans le circuit que (les équivalents de) /CTC et /CTG sont systématiquement retardés de 3 cycles par une série de flip-flops, par exemple visibles sur la partie haute de ce dessin, pour l'entrée horloge CT3 du 6840 :
détail Timer MC6840.png
détail Timer MC6840.png (93.72 Kio) Consulté 4900 fois
Mais pourquoi :?: retarder ainsi toutes les horloges en entrée (sauf l'horloge système /E, pour laquelle rien n'est précisé de ce point de vue là) ? Et bien probablement à cause des 3 autres flip flops utilisés par le "diviseur par 8" :idea:, et qu'on voit sur la partie basse du précédent dessin (ci-dessus).
On retrouve peu ou prou :mrgreen: le même circuit sur cette illustration (un exemple trouvé sur le net) d'un compteur à 3 bits :
mod8-counter.png
mod8-counter.png (19.67 Kio) Consulté 4900 fois
Dans cette exemple, Q0, Q1 et Q2 sont les 3 bits en sortie d'un petit compteur du même genre, aussi appelé "modulo 8", et on retrouve bien l'horloge CLK divisée par 8 sur Q2.
Mais si j'ai ajouté cette partie verte qui "surligne" la période qui sépare le premier "front montant" de l'horloge CLK de celui de Q2, c'est qu'elle correspond à ces fameux 3 cycles de retards, systématiquement appliqués à tous les signaux d'horloge (sauf E) en entrée du 6840.

En conclusion, je pense que ce délai est ajouté pour synchroniser les horloges avec la première transition du diviseur, qui apparaît en sortie de la chaîne des flips flops au bout de 3 cycles (soit 1 cycle par flip flop).

Quelques remarques pour terminer :
- pour le cycle qui manque pour retrouver nos "+4", il est possiblement causé par le latch en bas du grand schéma, qui doit correspondre à la sortie du compteur (pour le signal d'interruption)
- la doc du 6846 parle du jitter qui peut apparaître et influer sur les délais à cause de /E et /CTC qui sont asynchrones, mais en principe cela ne devrait pas concerner les TOx, qui utilisent uniquement /E
- malheureusement rien n'est précisé dans la doc concernant ce qui se passe (niveau délai) quand on utilise /E comme horloge pour le compteur (peut-être dans le schéma, où E est noté un peu partout "02" ("zéro barré" 2), mais j'ai pas trouvé). Donc, à voir si on a aussi le délai des 3 cycles appliqué ou pas à /E quand le "diviseur par 8" est désactivé...

Bon, à vous de faire vos propres conclusions, ce sera tout pour moi pour la partie théorique et documentation. Bonne recherche !
edit : désolé pour cet affichage de la grande image en pièce jointe ci-dessous, c'est pas fait exprès :oops:
Pièces jointes
Timer MC6840 - schémas assemblés du brevet US4161787.png
Timer MC6840 - schémas assemblés du brevet US4161787.png (295.9 Kio) Consulté 4900 fois
__sam__
Messages : 7923
Inscription : 18 sept. 2010 12:08
Localisation : Brest et parfois les Flandres

Re: Emulation d'Assdesass sur To9

Message par __sam__ »

Whaou, ca c'est de la recherche bibliographique. Bravo nicolho! :D

Pour info, dans les datasheets, E est aussi appellée signal "Enable" ou encore horloge système "phi-2" (phi ressemble à un O barré avec certaines typographies: voir 2e ligne, 3e colonne sur cette image).
Dernière modification par __sam__ le 07 janv. 2017 21:58, modifié 1 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Tomix
Messages : 91
Inscription : 16 sept. 2012 15:20

Re: Emulation d'Assdesass sur To9

Message par Tomix »

Il me plait bien ce nicholo. Faut le garder.
Répondre