le minitel est de retour

Cette catégorie traite de développements récents destinés à 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
fneck
Site Admin
Messages : 17811
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: le minitel est de retour

Message par fneck »

Et avec ma méthode, même si un message était supprimé ou déplacé (y a pas de raison mais ça peut arriver) le lien reste correct.
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

J'adopte ta méthode sans aucune hésitation :D

Elle va nourrir un concept de publication que j'étudie depuis une semaine, c'est le "Sommaire de publication".

Constats :
- Quand des sujets (fils de discussion) possèdent une forte composante de publication (avec un auteur principal) et que leur taille devient importante, il devient difficile de retrouver des messages malgré la fonction de recherche du forum.
- Le forum possède des "Listes ordonnées".
- Les liens vers des pages et des messages sont simples.
- Les tableaux de synthèse sont faciles à créer.

Idée :
Construire un "Sommaire de publication" sur la 1ère page du sujet permettant de mieux comprendre son intégralité, sans en parcourir toutes les pages.
A la navigation chronologique viendrait s'ajouter cette navigation thématique.

Réalisation :
- je prépare une maquette de test .... pour le sujet Minitel.
- de temps en temps, un retour au sommaire peut être proposé dans les messages.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Maquette d'un "Sommaire de publication", avec 3 niveaux.
La numérotation est évidemment automatique ... :) donc permet des insertions aisées.
  1. Titre 1
    1. Titre 1.a
      1. Titre 1.a.i
        message1
        message2
      2. Titre 1.a.ii
    2. Titre 1.2
      1. Titre 1.b.i
      2. Titre 1.b.ii
  2. Titre 2
    1. Titre 2.a
      1. Titre 2.a.i
      2. Titre 2.a.ii
    2. Titre 2.b
      1. Titre 2.b.i
      2. Titre 2.b.ii

avec son BBcode "tabulé", pour être proche de son interprétation :

Code : Tout sélectionner

[list=1][*]Titre 1		
	[list=a][*]Titre 1.a	
		[list=i][*]Titre 1.a.i 
			[url=https://forum.system-cfg.com/viewtopic.php?p=253593#p253593]message1[/url] 
			[url=https://forum.system-cfg.com/viewtopic.php?p=253593#p253593]message2[/url]
			[*]Titre 1.a.ii
	[/list][*]Titre 1.2
		[list=i][*]Titre 1.b.i
			[*]Titre 1.b.ii
[/list][/list][*]Titre 2		
	[list=a][*]Titre 2.a	
		[list=i][*]Titre 2.a.i
			[*]Titre 2.a.ii
	[/list][*]Titre 2.b
		[list=i][*]Titre 2.b.i
			[*]Titre 2.b.ii
[/list][/list][/list]
Dernière modification par Bricox le 11 juil. 2024 10:24, modifié 2 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Bricox a écrit : 08 juil. 2024 22:19 Je vais me créer un pseudo Log sur les 10 premières adresses, non contigues :
- Création d'un tableau de 10 adresses
- Mémo de l'adresse à chaque boucle, en espérant ne pas interférer avec l'émulation
- si cpt=10 alors envoi du Log, en mode "Trace"
Code avec le mode pseudo Log :

Code : Tout sélectionner

void __not_in_flash_func(emulate_minitel_64k)(void) {
    uint32_t pins, last;
    uint16_t addr,lstAddr[10];
    uint8_t data,cpt=0;
    gpio_put(PICO_DEFAULT_LED_PIN, 1);
    while (1)
    {
#ifdef LATCH_SOFT
//      while (!((pins = gpio_get_all()) & 0b10000000));                    // Attendre tant que ALE est à 0, bit 7
        while ( ((pins = gpio_get_all()) & 0b10000000));                    // Attendre tant que ALE est à 1, bit 7
        addr=(uint16_t)(((pins & 0x00FF0000)>>16)+(pins & 0x0000FF00));     // Adresses b8 à b23 du port 32bits
//      data=rominitel[addr];
#endif
        while (((pins = gpio_get_all()) & PSEN_GPIO_MASK));                 // Attendre tant que PSEN est à 1
//      { printf("gpio all =%08X, psen=%08X\n",pins,pins & PSEN_GPIO_MASK);sleep_ms(300);}
        SET_DATA_MODE_OUT;                                                  // Bus de data en sortie
#ifdef LATCH_SOFT
        gpio_put_masked(DATA_GPIO_MASK,((uint32_t)(rominitel[addr]))<<16);  // Data     b16 à b23 du port 32bits
//      gpio_put_masked(DATA_GPIO_MASK,((uint32_t)(data))<<16);             // Data     b16 à b23 du port 32bits
#else
        addr = pins & ADDR_GPIO_MASK;                                       // Adresses b0 à b15 du port 32bits
        gpio_put_masked(DATA_GPIO_MASK,((uint32_t)(rominitel[addr]))<<16);  // Data     b16 à b23 du port 32bits
#endif      
//      printf("rominitel[%04X]=%02X\n",addr,rominitel[addr]);sleep_ms(1000);
        SET_DATA_MODE_IN;                                                   // Permet de libérer le bus pour la future adresse basse
//      if (addr==2 && cpt==2/*rominitel[addr]==0x21*/) gpio_put(PICO_DEFAULT_LED_PIN, 0);
        lstAddr[cpt]=addr;
        cpt++;
        if(cpt==10) 
            for(cpt=0;cpt<10;cpt++)
                printf("lstAddr[%02d]=0x%04X\n",cpt,lstAddr[cpt]);
    }
}
Détermination des 10 premières adresses :
timing80C52MinitelPlusPicoLatch4.png
timing80C52MinitelPlusPicoLatch4.png (155 Kio) Consulté 482 fois

0x0000, 0x0001, 0x0002, 0x0021, 0x0022, 0x0023, 0x0024, 0x0025, 0x0026, 0x2FD0
Dernière modification par Bricox le 11 juil. 2024 10:36, modifié 1 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Je suis repassé en Latch hardware, pour confirmer la séquence de début, quand l'émulateur fonctionne correctement.

Voici le pseudo Log ou Log différé pour l'exécution de 30 boucles :
lstAddr[0]=0x0000
lstAddr[1]=0x0000
lstAddr[2]=0x0001
lstAddr[3]=0x0001
lstAddr[4]=0x0002
lstAddr[5]=0x0002
lstAddr[6]=0x0002
lstAddr[7]=0x0002
lstAddr[8]=0x0021
lstAddr[9]=0x0021
lstAddr[10]=0x0022
lstAddr[11]=0x0022
lstAddr[12]=0x0023
lstAddr[13]=0x0023
lstAddr[14]=0x0024
lstAddr[15]=0x0024
lstAddr[16]=0x0025
lstAddr[17]=0x0025
lstAddr[18]=0x0026
lstAddr[19]=0x0026
lstAddr[20]=0x0026
lstAddr[21]=0x0026
lstAddr[22]=0x0027
lstAddr[23]=0x0027
lstAddr[24]=0x0027
lstAddr[25]=0x0027
lstAddr[26]=0x0027
lstAddr[27]=0x0027
lstAddr[28]=0x0028
lstAddr[29]=0x0028

Remarque : la boucle va plus vite que le bus du 80C52.
Bizarrement, après l'adresse 0x0026, je n'ai pas l'adresse 0x2FD0 du "lcall" mais 0x0027 comme si le "lcall" n'était pas exécuté.

Je ne suis pas très expérimenté en assembleur ... :?
Dernière modification par Bricox le 11 juil. 2024 10:38, modifié 1 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

J'ai trouvé une parade, après de nombreux essais.
J'ai augmenté la fréquence de l'émulateur Pi Pico de 250 MHz à 280 MHz ... :?

200MHz 250MHz 280MHz
lstAddr[0]=0x0000 lstAddr[0]=0x0000 lstAddr[00]=0x0000
lstAddr[1]=0x0000 lstAddr[1]=0x0000 lstAddr[01]=0x0000
lstAddr[2]=0x0001 lstAddr[2]=0x0001 lstAddr[02]=0x0001
lstAddr[3]=0x0001 lstAddr[3]=0x0001 lstAddr[03]=0x0001
lstAddr[4]=0x0002 lstAddr[4]=0x0002 lstAddr[04]=0x0002
lstAddr[5]=0x0002 lstAddr[5]=0x0002 lstAddr[05]=0x0002
lstAddr[6]=0x0002 lstAddr[6]=0x0002 lstAddr[06]=0x0002
lstAddr[7]=0x0002 lstAddr[7]=0x0002 lstAddr[07]=0x0002
lstAddr[8]=0x0021 lstAddr[8]=0x0021 lstAddr[08]=0x0021
lstAddr[9]=0x0021 lstAddr[9]=0x0021 lstAddr[09]=0x0021
lstAddr[10]=0x0022 lstAddr[10]=0x0022 lstAddr[10]=0x0022
lstAddr[11]=0x0022 lstAddr[11]=0x0022 lstAddr[11]=0x0022
lstAddr[12]=0x0023 lstAddr[12]=0x0023 lstAddr[12]=0x0023
lstAddr[13]=0x0023 lstAddr[13]=0x0023 lstAddr[13]=0x0023
lstAddr[14]=0x0024 lstAddr[14]=0x0024 lstAddr[14]=0x0023
lstAddr[15]=0x0024 lstAddr[15]=0x0024 lstAddr[15]=0x0023
lstAddr[16]=0x0025 lstAddr[16]=0x0025 lstAddr[16]=0x0024
lstAddr[17]=0x0025 lstAddr[17]=0x0025 lstAddr[17]=0x0024
lstAddr[18]=0x0026 lstAddr[18]=0x0026 lstAddr[18]=0x0025
lstAddr[19]=0x0026 lstAddr[19]=0x0026 lstAddr[19]=0x0025
lstAddr[20]=0x0026 lstAddr[20]=0x0026 lstAddr[20]=0x0026
lstAddr[21]=0x0026 lstAddr[21]=0x0026 lstAddr[21]=0x0026
lstAddr[22]=0x0027 lstAddr[22]=0x0027 lstAddr[22]=0x0027
lstAddr[23]=0x0027 lstAddr[23]=0x0027 lstAddr[23]=0x0027
lstAddr[24]=0x0027 lstAddr[24]=0x0027 lstAddr[24]=0x2FD0
lstAddr[25]=0x0027 lstAddr[25]=0x0027 lstAddr[25]=0x2FD0
lstAddr[26]=0x0027 lstAddr[26]=0x0027 lstAddr[26]=0x2FD1
lstAddr[27]=0x0027 lstAddr[27]=0x0027 lstAddr[27]=0x2FD1
lstAddr[28]=0x0028 lstAddr[28]=0x0028 lstAddr[28]=0x2FD2
lstAddr[29]=0x0028 lstAddr[29]=0x0028 lstAddr[29]=0x2FD2
Timing OK Timing OK Timing+Ordre OK


Je ne comprends pas pourquoi j'ai 0x0027 avant 0x2FD0 ... :o
Dernière modification par Bricox le 11 juil. 2024 15:11, modifié 1 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Avatar de l’utilisateur
fneck
Site Admin
Messages : 17811
Inscription : 01 avr. 2007 12:03
Localisation : Drôme Provençale (26)
Contact :

Re: le minitel est de retour

Message par fneck »

Bricox a écrit : 10 juil. 2024 09:52 Elle va nourrir un concept de publication que j'étudie depuis une semaine, c'est le "Sommaire de publication".
(...)
Tout ceci pourrait enfin alimenter une rubrique jusque là très peu utilisée viewforum.php?f=28
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Merci Fabien de m'avoir fait découvrir ce sujet : Infos nouvelle rubrique
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Voici le bilan de mes essais, dans le mode Latch Hardware, en fonction de la fréquence du Pi Pico :

Fréquence Pi Pico Emulation ROM Mode Log
150 MHz Non Non
200 MHz Oui Partiel
250 MHz Oui Partiel
280 MHz Oui Oui
300 MHz Non Non


La fréquence 280 MHz semble être optimum ... :) pour passer à la mise au point du mode Latch Software

Il va, sans dire, qu'à ces très hautes fréquences, le mode "Log" avec sa phase d'émission par l'uart est totalement incompatible avec le mode émulation.
Il faut donc supprimer cette émission pour vérifier le fonctionnement du mode émulation.
Dernière modification par Bricox le 12 juil. 2024 09:47, modifié 2 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Voici le bilan de mes essais, dans le mode Latch Software, avec 4 options de code :

ALE latch2 ¯\_ ALE latch2 _/¯\_ ALE latch1 ¯\_ ALE latch1 _/¯\_
lstAddr[00]=0x0000 lstAddr[00]=0x0000 lstAddr[00]=0x0000 lstAddr[00]=0x0000
lstAddr[01]=0x0002 lstAddr[01]=0x0001 lstAddr[01]=0x0002 lstAddr[01]=0x0001
lstAddr[02]=0x0001 lstAddr[02]=0x0002 lstAddr[02]=0x0001 lstAddr[02]=0x0002
lstAddr[03]=0x0000 lstAddr[03]=0x0002 lstAddr[03]=0x0000 lstAddr[03]=0x0002
lstAddr[04]=0x0002 lstAddr[04]=0x0021 lstAddr[04]=0x0002 lstAddr[04]=0x0021
lstAddr[05]=0x0021 lstAddr[05]=0x0022 lstAddr[05]=0x0021 lstAddr[05]=0x0022
lstAddr[06]=0x0002 lstAddr[06]=0x0023 lstAddr[06]=0x0002 lstAddr[06]=0x0023
lstAddr[07]=0x0021 lstAddr[07]=0x0023 lstAddr[07]=0x0021 lstAddr[07]=0x0024
lstAddr[08]=0x0021 lstAddr[08]=0x0024 lstAddr[08]=0x0021 lstAddr[08]=0x0025
lstAddr[09]=0x0075 lstAddr[09]=0x0025 lstAddr[09]=0x0075 lstAddr[09]=0x0026
lstAddr[10]=0x0022 lstAddr[10]=0x0026 lstAddr[10]=0x0022 lstAddr[10]=0x0026
lstAddr[11]=0x0081 lstAddr[11]=0x0027 lstAddr[11]=0x0081 lstAddr[11]=0x0027
lstAddr[12]=0x0023 lstAddr[12]=0x2FD0 lstAddr[12]=0x0023 lstAddr[12]=0x0027
lstAddr[13]=0x007D lstAddr[13]=0x2FD1 lstAddr[13]=0x007D lstAddr[13]=0x0027
lstAddr[14]=0x0023 lstAddr[14]=0x2FD2 lstAddr[14]=0x0023 lstAddr[14]=0x0028
lstAddr[15]=0x007D lstAddr[15]=0x2FD2 lstAddr[15]=0x007D lstAddr[15]=0x0029
lstAddr[16]=0x0024 lstAddr[16]=0x2FD3 lstAddr[16]=0x0024 lstAddr[16]=0x0029
lstAddr[17]=0x0012 lstAddr[17]=0x2FD4 lstAddr[17]=0x0012 lstAddr[17]=0x0029
lstAddr[18]=0x0025 lstAddr[18]=0x2FD4 lstAddr[18]=0x0025 lstAddr[18]=0x002A
lstAddr[19]=0x002F lstAddr[19]=0x2FD4 lstAddr[19]=0x002F lstAddr[19]=0x002B
lstAddr[20]=0x0026 lstAddr[20]=0x0027 lstAddr[20]=0x0026 lstAddr[20]=0x002B
lstAddr[21]=0x00D0 lstAddr[21]=0x0028 lstAddr[21]=0x00D0 lstAddr[21]=0x002C
lstAddr[22]=0x0027 lstAddr[22]=0x0028 lstAddr[22]=0x0027 lstAddr[22]=0x002D
lstAddr[23]=0x00E5 lstAddr[23]=0x0029 lstAddr[23]=0x00E5 lstAddr[23]=0x002D
lstAddr[24]=0x2FF0 lstAddr[24]=0x0029 lstAddr[24]=0x2FD0 lstAddr[24]=0x001E
lstAddr[25]=0x2F00 lstAddr[25]=0x0029 lstAddr[25]=0x2F75 lstAddr[25]=0x001F
lstAddr[26]=0x2FF1 lstAddr[26]=0x002A lstAddr[26]=0x2FD1 lstAddr[26]=0x0020
lstAddr[27]=0x2F1E lstAddr[27]=0x002B lstAddr[27]=0x2F82 lstAddr[27]=0x0020
lstAddr[28]=0x2FF1 lstAddr[28]=0x002B lstAddr[28]=0x2FD2 lstAddr[28]=0x0C64
lstAddr[29]=0x2F1E lstAddr[29]=0x002C lstAddr[29]=0x2F00 lstAddr[29]=0x0C65
Timing OK Ordre OK Timing+Ordre OK Mauvais


Fond vert clair pour ce qui me parait correct.

La 3 ème colonne "ALE latch1 ¯\_" sera mon point de départ car, 1 ligne sur 2, l'adresse est correcte et le timing semble OK.

Je ne prendrai les adresses que des lignes paires.
L'instruction correspondante pourra être envoyée soit :
- les lignes paires
- les lignes impaires
- toutes les lignes
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Avatar de l’utilisateur
6502man
Messages : 12494
Inscription : 12 avr. 2007 22:46
Localisation : VAR
Contact :

Re: le minitel est de retour

Message par 6502man »

Merci pour le détails technique, j'adore :D

Sinon tu à besoin des interruptions sur le Pipico, parceque tu pourrais les désactiver au cas ou pour gagner en fluidité ?
Phil.

www.6502man.com

To bit or not to bit.
1 or 0.
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Merci pour ce questionnement, Phil.

Je publie des détails car je suis un peu frustré de ne voir sur le web que des projets aboutis, sans jamais connaître les coulisses mais aussi les déconvenues qui sont tout aussi instructives.
"Le but du chemin est le chemin lui-même, un déplacement sans fin qui devrait nous conduire non quelque part mais ailleurs.", Confucius.

Je ne connais pas encore assez le fonctionnement du Pi Pico, pour juger des éventuelles désactivations et de leurs effets.

Notre projet ne semble pas comporter d'interruptions, uniquement du polling....

J'ai réalisé beaucoup de tests cette aprem, mais sans succès .... :o
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Avatar de l’utilisateur
hlide
Messages : 3637
Inscription : 29 nov. 2017 10:23
Localisation : Yvelines

Re: le minitel est de retour

Message par hlide »

Si le pico a des fonctions pour donner les millisecondes ou microsecondes (comme pour l'Arduino) alors il y a certainement une interruption pour les gérer. Je suppose que tu exécutes sur le core 0 ? et si tu essayais sur le core 1 pour voir si tu as le même problème.
Bricox
Messages : 230
Inscription : 25 janv. 2024 10:28
Localisation : Grand-Est

Re: le minitel est de retour

Message par Bricox »

Merci hlide pour cette hypothèse à vérifier.

Je ne connais pas encore assez le fonctionnement du Pi Pico, pour basculer sur le core 1.

Il me reste encore de nombreux tests, sur le core 0, pour le moment.

Je n'ai pas encore explorer le cas de la colonne 2 qui montre un ordre d'exécution Minitel correct pour lequel je pourrais faire varier la fréquence du Pico.

Mon hypothèse d'approcher la fréquence Pico du Latch Software par rapport au Latch Hardware est, peut-être, fausse.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Avatar de l’utilisateur
Papy.G
Modérateur
Messages : 3092
Inscription : 10 juin 2014 13:40
Localisation : Haute-Garonne/Gers

Re: le minitel est de retour

Message par Papy.G »

Je ne comprends rien à ce que tu essaies de faire, mais si tu connais les timings des instructions exécutées sur le Pi lors de tes appels depuis le mC, tu pourrais établir de façon sûre la fréquence idéale.
Soyez exigeants, ne vous contentez pas de ce que l'on vous vend.
Demandez-en plus, ou faites-le vous-même.
Répondre