Dominique a écrit : ↑20 oct. 2020 10:17Ce qu'on voit sur ma photo est le résultat de KRF Repeat avec 5 dans R0+exec (ligne) 0B dans R6 et (colonne) 0 dans R7. Mais je n'ai pas fait de loop lui demandant de parcourir toute les lignes.
Pas besoin de Loop, cette commande prévoit le loop par défaut et en interne, au bout de la ligne, le numéro de colonne est remis à 0, et le numéro de ligne est incrémenté.
Dominique a écrit :- Comme on le voit il n'a pas touché à la ligne 0 mais a touché à ligne 8 et, ÉTRANGE, ne s'est pas arrêté à la fin de la ligne, il a continué jusqu'à la fin de l'écran.
Normal, regarde le schéma Fig.9 P11/38 de la doc du 9345, l'incrémentation du numéro de ligne se fait de 8 à 31 et en boucle, la(les) ligne(s) d'état sont laissées de côté.
Je pense qu'en fait, il reboucle et re-remplis l'écran à l'infini. Ce qui serait intéressant, c'est de changer R1 pendant le remplissage, pour voir si à un moment, le VDP réactualise cette valeur depuis la BAL. (je pense que non, tant qu'on n'envoie pas de nouvelle commande, mais on n'est pas à l'abri d'une bonne surprise)
Dominique a écrit :- J'ai tenté en mettant 04 dans R0+exec afin de ne pas mettre l'incrément (bit i de la p115 de Alice), il a bien écrit la lettre E sur fond cyan mais l'ordi était figé.
Le code opérande est le même pour KRF, KRG, CLF, et CLG, c'est le bit 2 de paramètre qui différencie les instructions de remplissage d'écran de celles de remplissage de "fenêtre" caractère, et le bit 1 pour indiquer si l'on est en 24 ou 16 bits.
Si tu ne mets pas l'incrément dans R0, il doit répéter à l'infini l'écriture du caractère là où le pointeur indique.
Dominique a écrit :Je me pose la question : Cette commande est-elle officiellement valide pour le EF ? car le livre parle de repeat mais sauf erreur de ma part ne donne pas d'exemples. Si je lis bien le listing efface écran de la page 116 c'est un KRF avec incrément et pas de repeat puisqu'il met $01 dans R0 ligne 57 du listing.
La Datasheet du EF 9345 est évasive sur certains points, et par-dessus ça, les docs des ordinateurs sont incomplètes…
La preuve: aucun jeu commercial n'utilise le CLF et CLG si bien que l'absence d'implémentation dans l'émulateur n'a choqué personne jusqu'à présent.
Du coup, je me damande, KRC, KRL, KRV n'ont pas de pendant remplissage de page entier, suffit-il qu'on mette le bit 2 de paramètre à 1 pour obtenir le même effet qu'avec KRF et KRG?
Daniel a écrit : ↑20 oct. 2020 11:07- Il se termine en fin d'écran, ou par l'envoi d'une autre commande avant la fin du remplissage.
Je pense qu'il se reboucle en début de page-écran, et à l'infini, (Sinon, la doc n'indiquerait pas d'envoyer un NOP, mais jsute d'attendre le temps nécessaire au remplissage), mais c'est un point à vérifier.
The execution of any command (except VRM, VSM) is suspended during the last and first TV line of an active row. This because the memory bus cannot be allocated for microprocessor access during this 104 µs period.
Il y a encore un doute, car "suspended" veut dire "interrompu" mais pas "terminé". Si l'exécution reprend à la trame suivante, le numéro de ligne est-il remis à zéro ou reste-t-il celui de la dernière ligne ?
Fig.10, P12/38 Il s'agit probablement d'un "hang", le processeur met de côté ce qu'il fait en mémoire pour s'occuper de charger les infos à afficher au balayage, puis les affiche, il ne reprend que pendant le temps disponible hors balayage, mais aussi pendant les moments disponibles entrelacés avec le balayage des huit autres lignes.
L'étude de la doc du EF9340/41 est très instructive et permet mieux d'appréhender les suivants (45, 47…), en commençant par intégrer le fait que c'est bien un couple de processeurs qui partagent la même mémoire, l'un fait les opérations mémoire, la communication avec le CPU de la machine, et l'autre, prioritaire en accès à la mémoire partagée, génère les caractères et produit le balayage.
J'attends confirmation par d'autres essais pour publier une nouvelle version de dcvg5k.
A ma connaissance les deux commandes CLF et CLG ne sont pas utilisées par la logithèque du VG5000, ni par celle de l'Alice 32, c'est pourquoi je ne m'en était pas beaucoup préoccupé. Mais grâce à ce fil de discussion il va y avoir un progrès. Merci à z80 d'avoir lancé le sujet !
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.