Incompéhension EF9345
Modérateurs : Papy.G, fneck, Carl
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Incompéhension EF9345
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
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.
Demandez-en plus, ou faites-le vous-même.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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 ?
![Confused :?](./images/smilies/icon_confused.gif)
Je ne suis qu'un utilisateur pas un pro
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Incompéhension EF9345
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! ![Razz :P](./images/smilies/icon_razz.gif)
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.![Confused :?](./images/smilies/icon_confused.gif)
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 :wink:](./images/smilies/icon_wink.gif)
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.
![Razz :P](./images/smilies/icon_razz.gif)
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.
![Confused :?](./images/smilies/icon_confused.gif)
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 :wink:](./images/smilies/icon_wink.gif)
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.
Demandez-en plus, ou faites-le vous-même.
- Mokona
- Messages : 1042
- Inscription : 17 déc. 2016 22:01
- Localisation : Nord Est des Yvelines
- Contact :
Re: Incompéhension EF9345
Je confirme que la ROM BASIC du VG5000 n'utilise que le mode 16 bits.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Incompéhension EF9345
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 :wink:](./images/smilies/icon_wink.gif)
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.![Embarassed :oops:](./images/smilies/icon_redface.gif)
D'autres, dont ceux que tu as cités, ont, eux, de l'expérience sur le matériel.![Cool 8)](./images/smilies/icon_cool.gif)
![Wink :wink:](./images/smilies/icon_wink.gif)
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.
![Embarassed :oops:](./images/smilies/icon_redface.gif)
D'autres, dont ceux que tu as cités, ont, eux, de l'expérience sur le matériel.
![Cool 8)](./images/smilies/icon_cool.gif)
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Demandez-en plus, ou faites-le vous-même.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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 ??? ![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
![Crying or Very sad :cry:](./images/smilies/icon_cry.gif)
Je ne suis qu'un utilisateur pas un pro
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Incompéhension EF9345
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.
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.
Demandez-en plus, ou faites-le vous-même.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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é 112 fois
Je ne suis qu'un utilisateur pas un pro
- Papy.G
- Modérateur
- Messages : 3054
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: Incompéhension EF9345
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.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
Déjà, as-tu imprimé la datasheet du EF 9345?
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.
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?
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
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.
Demandez-en plus, ou faites-le vous-même.
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
Merci Pappy G j'ai le datasheet mais c'est pas si simple a comprendre !
Je vais tacher de comprendre ce que tu m'enseignes.![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
![Mr. Green :mrgreen:](./images/smilies/icon_mrgreen.gif)
Je vais tacher de comprendre ce que tu m'enseignes.
![Rolling Eyes :roll:](./images/smilies/icon_rolleyes.gif)
Je ne suis qu'un utilisateur pas un pro
- rendomizer
- Messages : 413
- Inscription : 17 juin 2016 21:00
- Contact :
Re: Incompéhension EF9345
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
Re: Incompéhension EF9345
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.
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.
L'obstacle augmente mon ardeur.