Incompéhension EF9345

Cette catégorie traite de développements récents pour nos vieilles machines, applications, jeux ou démos... Amis programmeurs, c'est ici que vous pourrez enfin devenir célèbres!

Modérateurs : Papy.G, fneck, Carl

Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

Salut, merci de ce retour.
Je ne peux lire ton code juste comme ça, mais j'ai une idée d'une source de conflit probable:
Tu ne peux utiliser tous les caractères en mode Quadrichrome pour une raison simple: tu n'as que 8ko de Vram, et si tu utilises tous les sets, il ne te reste plus de place pour la page-écran!
Si tu es en mode 24 bits fixe, ta page-écran fera 3ko, soit trois "blocs", si elle est positionnée en début de mémoire, ce qui doit être le choix par défaut, à priori, tu ne peux te servir que des sets Q3 à Q7. Si tu essaies d'afficher les caractères des sets Q0 à Q2, tu risques d'afficher des lignes actives, et les données censées représenter des caractères avec leurs options d'affichage serviront à définir les pixels des caractères des sets en conflit.

Exemple: Si tu mets ton début de page écran en bloc 0, et tes Q en 0 aussi (tu n'as pas le choix, pour eux, n'ayant que 8ko), le premier caractère de la première ligne d'affichage (hors ligne détat), la ligne 8, donc, va donner son premier octet à la définition de la première ligne du caractère 32 de Q0, son deuxième à la première du 32 de Q1, et son troisième à la première encore du 32 de Q2
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Papy.G a écrit : 14 avr. 2018 10:54
Merci papy G. Mais pourquoi le basic du vg5000 y arrive lui en mode bis chromatique ? Mais sinon tu a raison dans ta logique. L’écran sur lequel s'affiche les caractères sont sur les lignes active de redéfinition de caractères comme j'ai pu le constater avec R2 à $C8 mais pas avec $d8 en R2. Comment on peut faire autrement ? R4 R5 peut être la ? :?
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

Je crois avoir lu quelque part que le basic n'utilise que le mode 16bits, ce qui expliquerait l'absence de documentation du mode quadrichrome dans les manuels (on ne peut afficher les quadrichromes en mode 16 bits fixe), mais il doit stocker soit sa page-écran, et ses différents sets à des endroits différents, vu les sets utilisés et le mode d'affichage, il a même trop de place dans 8ko! :P

Oui, avec $C8, t'es dans le deuxième bloc, et si ta page-écran est en début de mémoire, c'est mal. :?
En $D8 et au-delà, t'es dans le quatrième bloc et supérieur, tu es sûr de ne pas tomber dans la page-écran. :wink:

Les registres auxiliaires ne te seront d'aucune aide.
Pour être sûr de bien visualiser où tu écris en mémoire vidéo, il faudrait presque que tu utilises exclusivement l'instruction OCT dans tes routines, au moins dans un premier temps, ça t'éviterais ce genre de conflits.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
Mokona
Messages : 1040
Inscription : 17 déc. 2016 22:01
Localisation : Nord Est des Yvelines
Contact :

Re: Incompéhension EF9345

Message par Mokona »

Je confirme que la ROM BASIC du VG5000 n'utilise que le mode 16 bits.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Je vais devoir lire activement le datasheet et de l'aide car je me demande comment on fait pour utiliser oct car je ne suis qu'un utilisateur pas un expert comme toi papy G et joaopa voir Daniel:? Je m'excuse encore de mon attitude j'avais pas compris ce qu'est le partage j'était resté dans de vieux shémats.
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

Il est heureux que tu te sois rendu compte de ça, car les échanges ouverts font avancer tout le monde, et même, peut-être des lecteurs futurs, qui liront avec intérêt avant d'eux-même venir poser d'autres questions. :wink:

En fait, C'est pour écrire un octet de façon arbitraire où tu veux dans la Vram, tu mets ton octet en R1, puis en R6 et 7, l'adresse où tu veux le mettre.
Si tu veux écrire plusieurs octets dans des emplacements à suivre (écriture séquencielle), il suffit de mettre le bit d'incrémentation actif, ainsi, tu n'as qu'à envoyer R1 et demander une exécution pour chaque octet suivant, c'est un gain de temps conséquent.
Plus tard, tu pourras faire du remplissage avec les instructions d'écriture multiple pour gagner du temps processeur côté EF9345.

Je n'ai fait à ce jour, que potasser la datasheet pour entrevoir les possibilités envisageables (et parfois inexploitées jusque-là), mais n'ai rien réalisé de concret, contrairement à toi. :oops:
D'autres, dont ceux que tu as cités, ont, eux, de l'expérience sur le matériel. 8)
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Merci du compliment mais tu sais je ne fais que recopier les instruction qu'on me donne ici sans vraiment comprendre comment ça fonctionne. Il me faudrait du code à explorer. Comment accède t'on à OCT ??? :cry:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

Il n'est pas question de l'adressage, mais d'un mode d'affichage, en 40 lignes, il existe un mode où l'on a un octet pour le code caractère (ASCII), A' placé en R1, et un pour les attributs (limités), B' placé en R2, on l'appelle donc 16 bits.
Il ne faut pas confondre les registres internes de fonctionnement du processeur (dor, mat, pat...) , et ceux de communication avec l'extérieur (Rx).
Regarde dans le manuel comment se composent les pointeurs R6 et R7 figure 9 page 11.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Quand je met R2 à $C8 ça ne marche pas comme avec $D8. Je ne sais pas comment on sélectionne les bloc mémoires avec ror ? dor ?

Code : Tout sélectionner

          push hl
          ld hl,_ef9345
          call $00AD
          pop hl
          ret
          
          push hl
          ld hl,_ef9345suite
          call $00AD
          pop hl
          ret


_ef9345:
        db 16                   ;nombre de données à envoyer avec call $00AD

        db $21,$00,$28,$81    ;tgs
        db $21,$06,$28,$82   ;mat
        db $21,$67,$28,$83  ;pat
        db $21,$13,$28,$84 ;dor
        ;db $21,$08,$28,$87;ror
_ef9345suite:
        db 12
_R1:
        db $21,65
_R2:
        db $22,$d8
_R3:
        db $23,135
_R6:
        db $26,19
_R7:
        db $27,19
_R0+8:
        db $28
_krf:
        db $0
Pièces jointes
krf.zip
(12.28 Kio) Téléchargé 109 fois
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3047
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: Incompéhension EF9345

Message par Papy.G »

La sélection des blocs mémoire pour la page-écran se fait avec ROR 5,6 et7, qui représentent Z2, Z1, et Z3 (attention, l'ordre est mélangé), Z0 est implicite, car le début de page est toujours en bloc impair, comme on n'a que 8ko de VRAM, Z3 (ROR7) sera toujours à 0.
Dans ton code, tu veux mettre la page-écran à commencer en bloc 0.

Pour la taille de ta page-écran, c'est le mode d'affichage demandé qui la détermine, grâce à PAT7 (1 pour le mode 16 bit, 0 pour tous les autres) et à TGS 6 et 7.
Dans ton code, toujours, tu mets en mode 40 colonnes, 24 bits, ce qui te fait utiliser trois blocs, Z0, Z1 et Z2.

Dans ton code, tu mets DOR Q (b7) à 0, ce qui est normal, on n'a que 8ko.

Tu veux afficher le caractère 65 du jeu Quadrichrome (R2 b6 et 7 à 1) Q2 (R2 b4, 3 et 5) (biscornu, voir figure 22 page 23 du manuel), ce n'est pas possible, les attributs de la page sont à cet endroit! Si tu mets une page-écran en début de mémoire et qu'elle fait trois blocs, tu ne peux utiliser les sets Q0, Q1 et Q2.
Papy.G a écrit : 17 avr. 2018 14:12Oui, avec $C8, t'es dans le deuxième bloc, et si ta page-écran est en début de mémoire, c'est mal. :?
En $D8 et au-delà, t'es dans le quatrième bloc et supérieur, tu es sûr de ne pas tomber dans la page-écran. :wink:
Tu as pourtant répondu oui, mais as-tu réfléchi à cette réponse que je t'avais donné, et es-tu allé regarder la datasheet? :roll:
Déjà, as-tu imprimé la datasheet du EF 9345?
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

Merci Pappy G j'ai le datasheet mais c'est pas si simple a comprendre ! :mrgreen:
Je vais tacher de comprendre ce que tu m'enseignes. :roll:
Je ne suis qu'un utilisateur pas un pro
Avatar de l’utilisateur
rendomizer
Messages : 413
Inscription : 17 juin 2016 21:00
Contact :

Re: Incompéhension EF9345

Message par rendomizer »

J'ai fait une batterie de test mais rien, j'en viens à me demander si l'émulateur a ces limites !
Je ne suis qu'un utilisateur pas un pro
Daniel
Messages : 17316
Inscription : 01 mai 2007 18:30
Localisation : Vaucluse
Contact :

Re: Incompéhension EF9345

Message par Daniel »

L'émulateur dcvg5k émule très partiellement l'EF9345, il ne faut pas lui faire confiance, j'ai déjà évoqué ce point dans le forum.

Normalement, il permet de faire fonctionner les logiciels du commerce. Mais toutes les fonctions de l'EF9345 ne sont pas programmées, en particulier les codes variables. Les séquences de commandes jamais utilisées par les logiciels existants pour VG5000 et Alice 32/90 n'ont pas été testées.

Si vous décelez des différences de comportement entre l'émulateur et la vraie machine, n'hésitez pas à les signaler, je corrigerai.
Daniel
L'obstacle augmente mon ardeur.
Répondre