TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Modérateurs : Papy.G, fneck, Carl
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Je doute que tu puisses avoir une réponse immédiate, car l'EF9345 est tellement imprévisible qu'on ne pourra pas savoir sans tester.
L'essai peut se faire par exemple, sur Alice32 ou VG5000. Le comportement des émulateurs dcalice et dcvg5k ne doit pas être pris comme référence, car j'ai programmé ce que supposais, et l'EF9345 fait rarement ce que l'on suppose. Test impératif sur les vraies machines.
L'essai peut se faire par exemple, sur Alice32 ou VG5000. Le comportement des émulateurs dcalice et dcvg5k ne doit pas être pris comme référence, car j'ai programmé ce que supposais, et l'EF9345 fait rarement ce que l'on suppose. Test impératif sur les vraies machines.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
L'idée est intéressante il faudrait faire un programme pour la vérifier
- Papy.G
- Modérateur
- Messages : 3051
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Bon, réponse à moi-même, il semble que le mode loupe (Mat b7) double vraiment toutes les lignes, contrairement au mode hauteur de caractère doublée. Reste à vérifier les interactions avec les bits d'activation de bloc supérieur/inférieur, il semble que la première ligne affichée soit la même qu'en mode normal (YOR, ROR B4~0).
J'y ai réfléchi plus avant, c'est intéressant pour un scrolling horizontal, mais lors d'un scrolling vertical, on a un pas qui devient double, ce qui pourrait nuire à la fluidité.
Par contre, j'ai besoin de l'aide de personnes ayant déjà désassemblé les Roms de VG5000 et/ou Alice32/90, le processeur attends-il un peu à froid avant de réinitialiser le 9345, dans la datasheet, ils ne parlent que d'envoyer un NOP avant toute info, mais ils ne disent pas combien de temps met le composant à être prêt à la mise sous tension.
J'arrive à rien avec mon programme sur Minitel, j'ai remis mon EEPROM dedans, et un quartz à 6Mhz sur le 8032, toujours rien ne marche, peut-être fais-je l'initialisation du VDP trop tôt.
Ou, connerie de débutant, le fait de mettre un quartz plus lent sur un µC ne baisse pas ses exigences en termes de temps de montée, pour la mémoire programme?
Peut-être des mauvais contacts, je parviens à voir des choses affichées parfois, mais pas les caractères que je voulais, et pas dans le bon mode, maintenant que j'ai un PC à peu près sur pieds, je vais me pencher sur le simulateur suggéré par Phil, pour contrôler que mon code est vraiment valide, toutefois, et essayer de décoder la Rom d'origine du minitel, notamment pour trouver en quel mode le 9345 est initialisé.
J'y ai réfléchi plus avant, c'est intéressant pour un scrolling horizontal, mais lors d'un scrolling vertical, on a un pas qui devient double, ce qui pourrait nuire à la fluidité.
Par contre, j'ai besoin de l'aide de personnes ayant déjà désassemblé les Roms de VG5000 et/ou Alice32/90, le processeur attends-il un peu à froid avant de réinitialiser le 9345, dans la datasheet, ils ne parlent que d'envoyer un NOP avant toute info, mais ils ne disent pas combien de temps met le composant à être prêt à la mise sous tension.
J'arrive à rien avec mon programme sur Minitel, j'ai remis mon EEPROM dedans, et un quartz à 6Mhz sur le 8032, toujours rien ne marche, peut-être fais-je l'initialisation du VDP trop tôt.
Ou, connerie de débutant, le fait de mettre un quartz plus lent sur un µC ne baisse pas ses exigences en termes de temps de montée, pour la mémoire programme?
Peut-être des mauvais contacts, je parviens à voir des choses affichées parfois, mais pas les caractères que je voulais, et pas dans le bon mode, maintenant que j'ai un PC à peu près sur pieds, je vais me pencher sur le simulateur suggéré par Phil, pour contrôler que mon code est vraiment valide, toutefois, et essayer de décoder la Rom d'origine du minitel, notamment pour trouver en quel mode le 9345 est initialisé.
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.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Bonjour,
Petite précision, le bit7 du registre MAT ne double pas toute les lignes, la ligne de service donc la première en haut de l'écran ne subit aucune modification, et les 24 prochaines sont effectivement en double largeur. Le fait que la ligne de service ne double pas de taille permet ensuite d'afficher correctement les 12 caractères suivant en double hauteur.
Non, il n'y a pas de temps d'attente au regard de la vitesse du micro que tu utilises, si tu n'as pas d'affichage ou des choses incohérentes, alors il est probable que soit tu as un problème d'interface électronique ou bien tes registres d'initialisations sont mauvais. Si cela peut te servir, tu trouveras ci-joint le désassemblage de l'init d'un ALICE90 que j'ai fais via IDA.
Puis le code de la routine d'initialisation du mode 32/40 de l'EF9345
Petite précision, le bit7 du registre MAT ne double pas toute les lignes, la ligne de service donc la première en haut de l'écran ne subit aucune modification, et les 24 prochaines sont effectivement en double largeur. Le fait que la ligne de service ne double pas de taille permet ensuite d'afficher correctement les 12 caractères suivant en double hauteur.
Non, il n'y a pas de temps d'attente au regard de la vitesse du micro que tu utilises, si tu n'as pas d'affichage ou des choses incohérentes, alors il est probable que soit tu as un problème d'interface électronique ou bien tes registres d'initialisations sont mauvais. Si cela peut te servir, tu trouveras ci-joint le désassemblage de l'init d'un ALICE90 que j'ai fais via IDA.
Code : Tout sélectionner
ROM:F72E Entry_Point: ; CODE XREF: sub_D724+21J
ROM:F72E ; sub_E21E-99CJ
ROM:F72E ldaa #$FF
ROM:F730 staa DDRA
ROM:F732 ldaa #1
ROM:F734 staa DDRB
ROM:F736 ldaa #1
ROM:F738 staa PORTB
ROM:F73A ldaa byte_EA
ROM:F73C cmpa #$55 ; 'U' ; Si l'accu A est à $55 alors un RESET à déja eu lieu, on saute
ROM:F73C ; donc les étapes d'initialisations
ROM:F73E bne loc_F74A
ROM:F740 ldx byte_3221
ROM:F743 ldaa 0,x
ROM:F745 deca
ROM:F746 bne loc_F74A
ROM:F748 jmp 0,x
ROM:F74A ; ---------------------------------------------------------------------------
ROM:F74A
ROM:F74A loc_F74A: ; CODE XREF: sub_E21E+1520j
ROM:F74A ; sub_E21E+1528j
ROM:F74A jmp loc_D748
ROM:F74D ; ---------------------------------------------------------------------------
ROM:F74D
ROM:F74D loc_F74D: ; CODE XREF: sub_E21E-ACDJ
ROM:F74D ; sub_E21E+1535j
ROM:F74D clr 0,x
ROM:F74F inx
ROM:F750 cpx #$100
ROM:F753 bne loc_F74D
ROM:F755 ldx #$31FD
ROM:F758
ROM:F758 CalculateUserRAMSize: ; CODE XREF: sub_E21E+1545j
ROM:F758 inx ; Calcul de la longueur de la RAM utilisateur
ROM:F759 ldaa 2,x
ROM:F75B com 2,x
ROM:F75D ldab 2,x
ROM:F75F clr 2,x
ROM:F761 coma
ROM:F762 cba
ROM:F763 beq CalculateUserRAMSize
ROM:F765 stx ENDMM ; Ecriture de la taille de la RAM utilisateur
ROM:F768 stx byte_A1
ROM:F76A stx byte_9D
ROM:F76C ldd byte_9D
ROM:F76E subd #$64 ; 'd'
ROM:F771 std byte_9B
ROM:F773 lds byte_9B
ROM:F775 ldx #$F7CF
ROM:F778 ldd #$EB ; 'Ù'
ROM:F77B bsr sub_F7AD
ROM:F77D ldx #$F7DE
ROM:F780 ldd #$3200
ROM:F783 bsr sub_F7AD
ROM:F785 ldaa #$39 ; '9'
ROM:F787 ldx #$3285
ROM:F78A
ROM:F78A loc_F78A: ; CODE XREF: sub_E21E+1572j
ROM:F78A staa 0,x
ROM:F78C inx
ROM:F78D cpx #$32AF
ROM:F790 bne loc_F78A
ROM:F792 com unk_32AF
ROM:F795 ldx #$3346
ROM:F798 stx TXTAB
ROM:F79A jsr sub_E3CF
ROM:F79D jsr InitMode32or40 ; Initialisation du mode 32 ou 40 colonnes
ROM:F7A0 ldx #$F80F ; Table des caractères de bienvenue à l'écran
ROM:F7A3 jsr OUTTX
ROM:F7A6 ldaa #$55 ; 'U'
ROM:F7A8 staa byte_EA ; Le RESET materiel est fini, la valeur $55 évitera lors du prochain reset de relancer toutes les phases d'initialisation
ROM:F7AA
ROM:F7AA loc_F7AA: ; CODE XREF: ROM:F7CDj
ROM:F7AA jmp loc_E271
ROM:F7AA ; END OF FUNCTION CHUNK FOR sub_E21E
Code : Tout sélectionner
ROM:D465 ; =============== S U B R O U T I N E =======================================
ROM:D465
ROM:D465
ROM:D465 Init_Register_Mode32: ; CODE XREF: j_Init_Register_Mode32J
ROM:D465 ldx #$D4A4 ; Adresse table register mode 32
ROM:D468 bsr Init_Register
ROM:D46A clra
ROM:D46B clrb
ROM:D46C staa R1
ROM:D46F staa R3
ROM:D472 std R6
ROM:D475 inca
ROM:D476 staa R2
ROM:D479 staa R0_EXEC
ROM:D47C
ROM:D47C loc_D47C: ; CODE XREF: Init_Register_Mode80+29J
ROM:D47C bsr BUSY
ROM:D47E clra
ROM:D47F std R6
ROM:D482 incb
ROM:D483 std R4
ROM:D486 ldaa #$F5 ; '§'
ROM:D488 staa R0_EXEC
ROM:D48B bsr BUSY
ROM:D48D ldd #$800
ROM:D490 std R6
ROM:D493 ldaa #$FA ; '·'
ROM:D495 staa R0_EXEC
ROM:D498 ldx #$A00
ROM:D49B
ROM:D49B Tempo: ; CODE XREF: Init_Register_Mode32+37j
ROM:D49B dex
ROM:D49C bne Tempo
ROM:D49C ; End of function Init_Register_Mode32
ROM:D4A3 ; ---------------------------------------------------------------------------
ROM:D4A4 fcb $10, $81 ; Initialisation du registre TGS
ROM:D4A6 fcb $28, $82 ; Initialisation du registre MAT
ROM:D4A8 fcb $67, $83 ; Initialisation du registre PAT
ROM:D4AA fcb $13, $84 ; Initialisation du registre DOR
ROM:D4AC fcb 8, $87 ; Initialisation du registre ROR
ROM:D4AE ; ---------------------------------------------------------------------------
- Papy.G
- Modérateur
- Messages : 3051
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Merci beaucoup, Je me suis repenché sur mon programme à l'aide de nouveaux outils, et si à la lumière de ces éclaircissements, rien ne marche encore, je me pencherais sur le code Z80 qui m'est totalement étranger actuellement.
Par ailleurs, ce mode 32 colonnes non documenté dans les datasheets m'intrigue, je suis assez curieux de voir de quoi il s'agit.
Par ailleurs, ce mode 32 colonnes non documenté dans les datasheets m'intrigue, je suis assez curieux de voir de quoi il s'agit.
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.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Tu ne trouveras pas le mode 32 colonnes dans la datasheet parce qu’il n'existe pas. En fait ce mode est propre au fonctionnement des alices, c'est tout simplement un bornage de l'affichage réalisé logiciellement et qui est de 32 caractères par 16. Cet affichage découle du mode 40, qui lui est constitué de 40 caractères par 25, et qui est documenté dans la datasheet, puis l'autre mode documenté est l'affichage en 80 caractères par 25.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
@6502man : Merci pour ce tutoriel EF-9345 Phil, je viens de terminer la partie 1 et j'ai réussi à afficher le e minuscule jaune sur fond bleu.
Je vais faire l'exercice que tu proposes en partie 1, je pense y arriver. J'ai pu afficher en mode 32/40 cols un caractère double hauteur, double largeur, vidéo inversée et souligné. Mais pas en mode 80 cols...
Est-il possible d'afficher un caractère texte en vidéo inversée en mode 80 colonnes sur Alice ?
Je n'y parviens pas. La lettre s'affiche bien en vidéo inversée mais il y a toujours un caractère parasite à droite.
J'arrive à afficher ABC, mais un caractère parasite se mets entre les lettres, toujours à droite.
Si la vidéo inversée est impossible en mode 80 colonnes, puis-redefinir la lettre A ? Comme ça, j'inverse les points sur la matrice et cela donne de la vidéo inversée.
C'est pour mon éditeur Hexa ASCII afin de faire ressortir les octets actifs. Merci Phil
Je vais faire l'exercice que tu proposes en partie 1, je pense y arriver. J'ai pu afficher en mode 32/40 cols un caractère double hauteur, double largeur, vidéo inversée et souligné. Mais pas en mode 80 cols...
Est-il possible d'afficher un caractère texte en vidéo inversée en mode 80 colonnes sur Alice ?
Je n'y parviens pas. La lettre s'affiche bien en vidéo inversée mais il y a toujours un caractère parasite à droite.
J'arrive à afficher ABC, mais un caractère parasite se mets entre les lettres, toujours à droite.
Si la vidéo inversée est impossible en mode 80 colonnes, puis-redefinir la lettre A ? Comme ça, j'inverse les points sur la matrice et cela donne de la vidéo inversée.
C'est pour mon éditeur Hexa ASCII afin de faire ressortir les octets actifs. Merci Phil
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Remarque : Il faut tester avec un vrai EF9345. L'émulation de l'EF9345 dans dcalice est très approximative.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Bonjour Daniel, je m'exprime mal en disant "parasite". C'est mon niveau qui est vraiment nul, je viens juste de commencer l'EF-9345 aujourd'hui.
Oui j'ai lu que tu disais que l'EF-9345 était très difficile à émuler. Bravo et merci pour ton émulateur en tous cas, je le trouve incroyable.
Je testerai sur la vraie machine autant que possible, d'accord. Je me demandais juste si on pouvais écrire en vidéo inversée (au lieu des minuscules
en mode 80 colonnes, CLS80 ou CLS81) et sinon comment redéfinir un caractère en mode 80 colonnes pour inverser les points de la matrice 8x10 du caractère.
Voici ce que j'obtiens : Je vois le caractère apparaître en vidéo inversée en mode 80 colonnes donc je me dis que c'est possible ?
- j'ai mis comme indiqué le bit 7 de $BF23 à 1 et ça fonctionne bien en mode 32 et 40 colonnes mais en mode 80 colonnes,
une petite lettre E accentuée se colle à droite. Ce que j'appelle "caractère parasite" faute de connaissance sur le sujet.
EDIT : je viens de me rendre compte que j'ai réussi à afficher 3 couleurs au lieu de 2 en mode 80 colonnes ! Du vert, du noir et du blanc.
Oui j'ai lu que tu disais que l'EF-9345 était très difficile à émuler. Bravo et merci pour ton émulateur en tous cas, je le trouve incroyable.
Je testerai sur la vraie machine autant que possible, d'accord. Je me demandais juste si on pouvais écrire en vidéo inversée (au lieu des minuscules
en mode 80 colonnes, CLS80 ou CLS81) et sinon comment redéfinir un caractère en mode 80 colonnes pour inverser les points de la matrice 8x10 du caractère.
Voici ce que j'obtiens : Je vois le caractère apparaître en vidéo inversée en mode 80 colonnes donc je me dis que c'est possible ?
- j'ai mis comme indiqué le bit 7 de $BF23 à 1 et ça fonctionne bien en mode 32 et 40 colonnes mais en mode 80 colonnes,
une petite lettre E accentuée se colle à droite. Ce que j'appelle "caractère parasite" faute de connaissance sur le sujet.
EDIT : je viens de me rendre compte que j'ai réussi à afficher 3 couleurs au lieu de 2 en mode 80 colonnes ! Du vert, du noir et du blanc.
Dernière modification par David.G le 04 avr. 2024 21:15, modifié 1 fois.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Salut
Si c'est possible en mode80 mais c'est pas les même commande que pour le mode40
Faut lire Les Astuces d'Alice à la page 105, c'est expliqué
Si c'est possible en mode80 mais c'est pas les même commande que pour le mode40
Faut lire Les Astuces d'Alice à la page 105, c'est expliqué
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
@Duruti : Je viens de relire le chapitre et j'ai réussi. Merci beaucoup. 3 couleurs au lieu de 2 en mode 80 colonnes, sympa.
Pas de la tarte cet EF-9345 ! Un peu alambiqué le truc, mais une fois qu'on a pigé le principe, ça va.
Tout du moins pour afficher les couleurs et les minuscules accentuées même en 40 colonnes, je suis bon.
La redef des cars on verra plus tard.
Pas de la tarte cet EF-9345 ! Un peu alambiqué le truc, mais une fois qu'on a pigé le principe, ça va.
Tout du moins pour afficher les couleurs et les minuscules accentuées même en 40 colonnes, je suis bon.
La redef des cars on verra plus tard.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
Oui en mode 80 colonnes il faut procéder autrement,
j'ai plus EN mémoire mais ca doit être dans le bouquin
les astuces d'alice comme l'indique Duruti.
j'ai plus EN mémoire mais ca doit être dans le bouquin
les astuces d'alice comme l'indique Duruti.
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
@6502man : Oui j'ai trouvé comment faire. C'est cocasse le mode 80 colonnes,
je suis content d'avoir compris le truc, hier soir ça me rendait fou.
Ton exemple de programme en assembleur m'a bien aidé, merci, car le livre est bien mais très technique, un peu abstrait.
Je vais pouvoir créer un joli mode d'affichage et de navigation intuitif au clavier pour mon éditeur de secteurs,
en jouant sur la vidéo inversée pour passer d'une option à l'autre.
je suis content d'avoir compris le truc, hier soir ça me rendait fou.
Ton exemple de programme en assembleur m'a bien aidé, merci, car le livre est bien mais très technique, un peu abstrait.
Je vais pouvoir créer un joli mode d'affichage et de navigation intuitif au clavier pour mon éditeur de secteurs,
en jouant sur la vidéo inversée pour passer d'une option à l'autre.
- Papy.G
- Modérateur
- Messages : 3051
- Inscription : 10 juin 2014 13:40
- Localisation : Haute-Garonne/Gers
Re: TUTO: programmation du [ EF-9345 ] ALICE/VG/MINITEL
C'est tout vu: en 80col, c'est mort.
Tu ne peux utiliser que le jeu de caractères de base, et un mode "bitmap" (mosaïque).
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.