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

Jeff_HxC2001
Messages : 376
Inscription : 20 mars 2011 14:24

Re: le minitel est de retour

Message par Jeff_HxC2001 »

Carl a écrit : 17 mars 2024 15:08IMG_4040-1.jpg
Impec ! Merci encore ! :D
Jeff_HxC2001
Messages : 376
Inscription : 20 mars 2011 14:24

Re: le minitel est de retour

Message par Jeff_HxC2001 »

Bricox a écrit : 17 mars 2024 15:23 J'ai trouvé ta correction du port série dans MAME :
https://github.com/jfdelnero/mame/commi ... 48b1a1ad14

Dois-je modifier ton driver Minitel2 ?
https://github.com/jfdelnero/mame/blob/ ... 2_rpic.cpp

Ta phrase d'entete est toujours d'actualité ?
What is implemented but not working :
- The rear serial port.(Prise péri-informatique)
(Internal 8051 serial port emulation missing).


Pourrais-je écrire "-periinfo -bitb socket.127.0.0.1:20000" ? :D

Voilà une bonne question ! : Je me souviens avoir testé l'interface série modem. Et il semble que la déclaration du port péri-info soit complète (ça j'avais oublié...) , avec les connexions aux pins du uC.

Il faut que je regarde le core 8051 pour voir si les choses ont bougées de ce coté.
Jeff_HxC2001
Messages : 376
Inscription : 20 mars 2011 14:24

Re: le minitel est de retour

Message par Jeff_HxC2001 »

Alors d'après ça :
https://github.com/mamedev/historic-mam ... 51/i8051.c

le support série du 8051 semble là. Donc sur un malentendu ça pourrait fonctionner ;)
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Merci @Jeff pour ton expertise.
La réponse est quelque peu laconique :o

Je n'ai pas le choix ... je fonçe !
https://www.facebook.com/cineseriecom/v ... 501593892/
:lol:
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Jeff_HxC2001
Messages : 376
Inscription : 20 mars 2011 14:24

Re: le minitel est de retour

Message par Jeff_HxC2001 »

Ah bah que voulez vous, de nos jours plus rien n'est garanti , il faut donc tester :wink: ...
Et si ça cela ne fonctionne pas -> ouverture d'une issue sur le projet mame, le problème pouvant se trouver sur un élément commun a plusieurs drivers.
https://github.com/mamedev/mame/issues
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Comme dirait quelqu'un de connu : "Ca va bien se passer !"
ZamZam et moi défrichons le processus ...
Les 1ers essais nous laissent percevoir une voie prometteuse à suivre :)
Nous partagerons bientôt nos futures avancées significatives
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Cela fait de nombreux jours que j'ai une multitude d'erreurs inattendues lors de la création du code pour étendre le programme de démonstration de @Jeff (décodage clavier, mode trace vers Putty, codage Uart en mode 7p, etc...)
Hier soir, ZamZam et moi avons enfin découvert le problème :

La taille de l'éxécutable (*.bin) dépasse la taille physique de la ROM !!! :o :o
La toolchain de SDCC ne génère ni erreur, ni alerte… ce qui semble normal, car elle n'a pas la taille de la ROM.
Par contre, le logiciel de gravage "xgpro" la connait surtout après un "blank check". Peut-être, a-t-il une option de contrôle...

Après analyse du fichier *.map, exploité dans Excel, et sachant que l'EPROM Minitel2 fait 32Ko, voici :

- Le mapping des constantes avec les tailles de chaque déclaration, le total faisant 15201 octets.

Code : Tout sélectionner

0xValue  Taille    Global

0x454F   1000  _data_nolife_bmp
0x4937   1000  _data_bmpImage3_raw
0x4D1F   1000  _data_bmpImage4_raw
0x5107   1000  _data_bmpImage5_raw
0x54EF   1000  _data_bmpmac_raw
0x58D7   1000  _data_bmptheminiteldemo_200x40_r
0x5CBF   21    _txt_scroll
0x5CD4   202   _txt_start
0x5D9E   128   _Vertex_Box01
0x5E1E   4     _data3d_Box01
0x5E22   1840  _Vertex_Sphere01
0x6552   4     _data3d_Sphere01
0x6556   368   _Vertex_Cylinder01
0x66C6   4     _data3d_Cylinder01
0x66CA   176   _Vertex_Prism01
0x677A   4     _data3d_Prism01
0x677E   128   _Vertex_Piramid01
0x67FE   4     _data3d_Piramid01
0x6802   64    _Vertex_Hedra01
0x6842   4     _data3d_Hedra01
0x6846   5280  _nyan_cat
0x7CE6   25    _initstarstab
0x7CFF   10    _testpg
0x7D09   33    _txt
0x7D2A   257   _SinCos
0x7E2B   2     _Xoff
0x7E2D   2     _Yoff
0x7E2F   2     _Zoff
0x7E31   260   _div10tab
0x7F35   13    _multentab
0x7F42   13    _i8D
0x7F4F   15    _i8H
0x7F5E   13    _i16D
0x7F6B   15    _i16H
0x7F7A   9     _i16L
0x7F83   6     _i16C
0x7F89   7     _i16S
0x7F90   6     _i16T
0x7F96   6     _i16F
0x7F9C   12    _i16K
0x7FA8   12    _i16M
0x7FB4   11    _i16N
0x7FBF   8     _Debt
0x7FC7   18    _U_7p
0x7FD9   24    _U_8n
0x7FF1   6     _Ud7p
0x7FF7   6     _Ud8n
0x7FFD   16    _Acct
0x800D   10    _lstDebt
0x8017   9     _lstLgClavier
0x8020   72    _kbN
0x8068   72    _kbJ
0x80B0
         15201 octets
=> Le Nyan_cat est très gourmand en ressource (35% de la taille totale).

- Le mapping des fonctions avec les tailles de chaque déclaration, le total faisant 17582 octets

Code : Tout sélectionner

0xValue Taille   Global            Global Defined In Module
0x00A1  1     music_timer_isr            demo_minitel
0x00A2  133   _timer_isr                 demo_minitel
0x0127  19    _wait                      demo_minitel
0x013A  464   _nyan_cat_sc               demo_minitel
0x030A  1391  _start_screen              demo_minitel
0x0879  520   _starfield                 demo_minitel
0x0A81  1182  _mandel                    demo_minitel
0x0F1F  2351  _main                      demo_minitel
0x184E  425   _Show3DPoint               troisd_func
0x19F7  445   _rotateX                   troisd_func
0x1BB4  432   _rotateY                   troisd_func
0x1D64  432   _rotateZ                   troisd_func
0x1F14  848   _drawpolygone              troisd_func
0x2264  199   _drawobject                troisd_func
0x232B  173   _setpixel                  deuxd_func
0x23D8  131   _setpixelFast              deuxd_func
0x245B  746   _Ligne                     deuxd_func
0x2745  984   _LigneFast                 deuxd_func
0x2B1D  689   _cercle                    deuxd_func
0x2DCE  49    _UART_Init                 minitel_hw
0x2DFF  42    _UART_TxRetr               minitel_hw
0x2E29  202   _UART_Tx7pChar             minitel_hw
0x2EF3  204   _UART_TXC                  minitel_hw
0x2FBF  43    _UART_TxStr                minitel_hw
0x2FEA  246   _UART_TxI8H                minitel_hw
0x30E0  563   _UART_TxI8K                minitel_hw
0x3313  248   _UART_TxI8D                minitel_hw
0x340B  368   _UART_TxBd                 minitel_hw
0x357B  240   _UART_Test                 minitel_hw
0x366B  108   _clearscreen               minitel_hw
0x36D7  50    _setbank                   minitel_hw
0x3709  168   _init_ts9347               minitel_hw
0x37B1  54    _set_ptr                   minitel_hw
0x37E7  136   _fillmosaic                minitel_hw
0x386F  221   _setcharset1010            minitel_hw
0x394C  265   _setcharset                minitel_hw
0x3A55  274   _clearcharset              minitel_hw
0x3B67  142   _write_to_modem            minitel_hw
0x3BF5  147   _write_to_modem_dtmf       minitel_hw
0x3C88  57    _init_modem                minitel_hw
0x3CC1  951   _lit_clavier               minitel_hw
0x4078  11    ___fssub                   _fssub
0x4083  10    __divuint                  _divuint
0x408D  39    __divint                   _divuint
0x40B4  163   ___fsmul                   _fsmul
0x4157  46    fsgetargs                  _fsget2args
0x4185  51    fs_normalize_a             _fsnormalize
0x41B8  27    __gptrput                  _gptrput
0x41D3  48    ___fslt                    _fslt
0x4203  0     __mulint                   _mulint
0x4203  34    __mulint_dummy             _mulint
0x4225  3     ___fsadd                   _fsadd
0x4228  86    fsadd_direct_entry         _fsadd
0x427E  30    fs_compare_uint32          _fscmp
0x429C  43    fs_check_negative_zeros    _fscmp
0x42C7  86    __divslong                 _divslong
0x431D  13    ___sint2fs                 _sint2fs
0x432A  6     __divulong                 _divulong
0x4330  103   __divlong                  _divulong
0x4397  24    fs_round_and_return        _fsreturnval
0x43AF  9     fs_zerocheck_return        _fsreturnval
0x43B8  8     fs_return_zero             _fsreturnval
0x43C0  14    fs_direct_return           _fsreturnval
0x43CE  13    fs_return_inf              _fsreturnval
0x43DB  11    fs_return_nan              _fsreturnval
0x43E6  26    fs_swap_a_b                _fsswapargs
0x4400  28    __gptrget                  _gptrget
0x441C  61    __modsint                  _modsint
0x4459  9     ___slong2fs                _slong2fs
0x4462  36    slong2fs_doit              _slong2fs
0x4486  10    __moduint                  _moduint
0x4490  59    __modint                   _moduint
0x44CB  61    __divsint                  _divsint
0x4508  67    fs_rshift_a                _fsrshift
0x454B  4     ___sdcc_external_startup   _startup
0x454F        
         17582 octets   
 
Conclusion : Je vais sacrifier temporairement le "nyan_cat" pour pouvoir continuer mon développement
Dernière modification par Bricox le 26 mars 2024 08:41, modifié 3 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Bricox a écrit : 17 mars 2024 10:36
Bricox a écrit : 05 mars 2024 22:02 Le 1er soft que nous avons l'intention de découvrir serait un moniteur : cmon51-1.2
CMON51 est écrit principalement en C et compilé à l'aide du compilateur SDCC, notre compilateur.
Dans un 1er temps, nous pouvons l'utiliser, en standard, avec sa gestion Uart pour l'entrée clavier et la sortie Terminal.
Puis, je pourrai intégrer mon décodage clavier Minitel, puis, rediriger la sortie sur l'écran Minitel via le EF9345 ou le TS9347.
Nous aurions ainsi un moniteur totalement autonome.
Hier, nous avons commencé à adapter le projet "cmon51" pour SDCC 4.4.0 released : https://sdcc.sourceforge.net/
Le code : http://sourceforge.net/projects/cmon51.
Le "Wiki" : https://cmon51.sourceforge.net/
Le code comporte de nombreuses fonctions "assembleur".

La création d'une carte d'extension mémoire semble être indispensable pour l'aboutissement de ce projet.

@Jeff, penses-tu qu'il est difficile d'intégrer l'UART dans "MAME" pour exécuter et tester "CMON51" ?
Genre, localhost :127.0.0.1 pour un loopback en local

Nous avons lancer "CMON51" dans "MAME" en mode débugueur et l'on voit un bouclage permanent sur RI (Receive Interrupt Flag),
il est en attente d'une réception UART... :lol:
Face aux difficultés de faire fonctionner correctement CMON51 dans MAME, ZamZam a décidé de le tester directement dans un Minitel2.

Le binaire de CMON51 fait 9Ko => 7Ko de code + 1.5Ko de constantes(par exemple : la liste "mnemtbl" des mnémoniques pour désassembler).

Code : Tout sélectionner

0xValue  Taille   Global
0x1C25   119   _sfrn    8052
0x1C9C   246   _bitn    8052
0x1D92   107   _cmdlst  cmon51
0x1DFD   17    _hexval  cmon51
0x1E0E   162   _maskbit cmon51
0x1EB0   32    _mnem    d51
0x1ED0   868   _mnemtbl d51
0x2234
         1551  octets   
J'ai calculé, à partir du code de CMON51 + son paramétrage Uart (Mode1 du Timer1) + quartz du M2, la fréquence en bauds.
Fréquence calculée : 74574 bauds (c'est la vitesse maxi de l'UART utilisant le Timer 0 ou 1, donc compatible MIB RTIC)
Protocole standard : 8 bits de données, 1 bit de stop, pas de parité.

Voici une capture de Putty suite à l'envoi des qques commandes de test.
cmon51_putty_mini.jpg
cmon51_putty_mini.jpg (28.11 Kio) Consulté 623 fois
Le prompt d'accueil...
"r" : affichage de tous les registres
"u 17FF 10" : désassemblage à partir de l'adresse 0x17FF pour 0x10 lignes d'assembleur.

Les essais semblent concluants :D
La création d'une carte d'extension mémoire semble rester indispensable pour permettre l'exécution de gros programmes et la possibilité d'effectuer du débogage hardware permis par CMON51.

Fichier .mem du CMON51 :

Code : Tout sélectionner

Internal RAM layout:
      0 1 2 3 4 5 6 7 8 9 A B C D E F
0x00:|0|0|0|0|0|0|0|0|b|b|b|A|A|A|c| |
0x10:| | | |A|A|A| | | | | | | | | | |
0x20:|B|T| |A|A|A| | | | | |A|A|A|a|a|
0x30:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|
0x40:|a|a|a|a|a|a|a|a|a|a|a|a|a|a|a|S|
0x50:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0x60:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0x70:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0x80:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0x90:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xa0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xb0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xc0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xd0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xe0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S|
0xf0:|S|S|S|S|S|S|S|S|S|S|S|S|S|S|S| |
0-3:Reg Banks, T:Bit regs, a-z:Data, B:Bits, Q:Overlay, I:iData, S:Stack, A:Absolute

Stack starts at: 0x4f (sp set to 0x4e) with 176 bytes available.
The largest spare internal RAM space starts at 0x16 with 10 bytes available.

Other memory:
   Name             Start    End      Size     Max     
   ---------------- -------- -------- -------- --------
   PAGED EXT. RAM                         0      256   
   EXTERNAL RAM     0x0001   0x00c1     193    65536   
   ROM/EPROM/FLASH  0x0000   0x2233    8756    65536   
Dernière modification par Bricox le 26 mars 2024 08:42, modifié 2 fois.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Mes derniers posts me semblent un peu trop sérieux... :wink:

Je vous partage un cadeau fantaisiste de mes collègues, le jour de mon départ à la retraite, que j'ai énormément apprécié.

minitelEnedis.jpg
minitelEnedis.jpg (39.72 Kio) Consulté 601 fois

Un M1B RTIC, Modèle "Enedis", version Linky !

C'est une référence, à un développement sur microcontrôleur STM32, de la mesure de puissance électrique instantanée par calcul de la durée entre 2 impulsions LED du Linky (équivalent à 1 Wh).

Always having fun !!!
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
fff
Messages : 9
Inscription : 27 oct. 2014 17:26

Re: le minitel est de retour

Message par fff »

Bonjour bonjour,

Je reviens trainer ici après plusieurs années d'absence, et quelle bonne surprise de voir qu'il y a toujours de l'activité autour du Minitel !
J'ai beaucoup, beaucoup à lire et rattraper !

Mais en attendant je me sens obligé de répondre à ce post :
kirion a écrit : 30 janv. 2024 22:19 @Papy.G tu n'es pas content qu'il ait eu son diplôme grâce au plagiat de ton travail ?
si ça se trouve il a même un pseudo ici et il a discuté avec toi durant toute la rédaction de son mémoire :mrgreen:

Parce que son "mémoire de projet personnel d'électronique", je n'y crois pas une seconde, c'est rédigé comme un mémoire d'ingénieur. Une fois son diplôme en poche il a changé le titre, enlevé les remerciements à ses professeurs et à diffusé ça comme un projet personnel.

Personne n'écrit tout un mémoire de cette façon (en postscript) juste pour un projet personnel 8) En plus il écrit aussi bien en français qu'en anglais sur son site. C'est sûrement pas un projet pour le diplôme du Bac :mrgreen:

Demandons l'avis de @sam...
Oh là là, si j'avais su que ça susciterait autant de controverse !
Le type de vtrm.net c'est moi, "fff" sur ce forum.
Papy.G et moi avions un peu correspondu par mail en 2020.
Je me permets de recopier un extrait d'un des mails que je lui ai envoyés.
Il pourra attester de son authenticité si certains pensent que j'invente.
J'avais suivi ton fil avec intérêt. Puis, la motivation me faisant défaut,
j'ai laissé tomber le projet pendant un long moment.
J'ai repris l'idée deux ans après. Si je n'ai pas posté sur le forum,
c'était parce que je faisais ce projet pour appuyer mon dossier de
candidature dans une école d'ingénieurs et que je tenais donc à le faire
sans info extérieure, par honnêteté. J'espère que tu comprendras.
Il est vrai que j'aurais pu poster le résultat fini sur le forum, mais je
n'ai pas osé déterrer le topic pour poster un message qui aurait pu être
interprété comme de la frime. Bon, ok, je me fais peut-être des idées...
Donc, cher kirion, bien vu pour le coup du mémoire d'ingénieur :D
Mais pour le reste, mollo sur les extrapolations s'il te plait ;)

C'était donc bien un projet personnel et je ne m'en suis certainement pas servi comme projet de fin d'études pour avoir mon diplôme. De toute façon, au cas où tu l'ignores, un projet de fin d'études ça se fait lors d'un stage en entreprise et sur un sujet "réel" et "sérieux", pas sur des expérimentations de hobbyiste sur une vieille curiosité technologique d'il y a 40 ans.

Ensuite, un tas de gens ont des sites web perso en anglais et en français.
Depuis quand avoir un site bilingue serait forcément la marque d'un travail fait dans un cadre académique ou professionnel ?
Il suffit de farfouiller trois secondes sur mon site pour voir que toutes les pages, y compris celles qui n'ont aucun rapport avec le Minitel ou l'électronique, sont écrites en anglais et en français.

Mais surtout, "plagiat", sérieusement ?
Si c'est de l'humour, alors je suis passé à côté. Dans ce cas toutes mes excuses pour ce post déjà trop long.
Si c'est sincère alors il va falloir que tu m'expliques un peu ce que j'ai bien pu plagier.
Sur le vieux sujet de 2014 que Papy.G a mentionné, nos discussions concernaient la matrice clavier et des réflexions générales sur la connexion du 8052 à une mémoire externe.
Il va falloir quelque chose de plus substantiel pour pouvoir parler de plagiat…
kirion a écrit : 30 janv. 2024 22:19 Personne n'écrit tout un mémoire de cette façon (en postscript) juste pour un projet personnel 8)
J'ai connu des étudiants qui prenaient leurs notes de cours en LaTeX :P



Pour répondre aux interrogations de Papy.G :
Papy.G a écrit : 03 févr. 2024 16:31 […] toutefois, le choix du matériel mis en œuvre me paraît curieux, il semble être guidé par une contrainte dont l'origine m'échappe. […]

Aussi, une expression attise ma curiosité: "mise en panneau", c'est couramment usité dans le milieu?

Bas de page 8 du mémoire, le mec ne connaît pas les PAL/GAL ou prend les lecteurs pour des jambons?

"Le CPLD permet de câbler un vrai contrôleur SPI comme sur les µC modernes", mais c'était juste prévu sur la carte-mère du minitel avec le 8052! :roll:

Seulement, je ne peux pas croire qu'il ne soit pas tombé sur certaines informations sur le sujet, qui étaient déjà sur internet, le travail de Jeff est certes génial et inspirant, mais ce n'est probablement pas la ressource la plus utile qu'il ait trouvé, du fait du modèle dont il disposait pour son projet.
Exemple, la photo de la nappe clavier de Mortal Kastor, le petit mémo du Pr Oumnad, les sujets ici sur le 9345, avant même de parler de mon sujet ou des infos que j'ai disséminées à gauche à droite.
Qu'est-ce qui te fait tiquer dans le choix du matériel ?
Le CPLD ?
Un PAL/GAL ne me permettait pas d'implémenter toutes les fonctionnalités que je voulais.
Le CPLD que j'ai utilisé est quasiment plein, plus aucune ressource logique de libre, alors c'est clair qu'un PAL/GAL n'aurait pas fait l'affaire.
Et une autre raison pour le CPLD, c'est que ça me faisait un bon prétexte pour expérimenter avec ce genre de chip et le Verilog.

Pour le coup du contrôleur SPI c'est vrai que ma phrase n'est pas très claire quant aux motivations.
Je voulais un contrôleur SPI notamment pour la connexion à une carte SD.
Le 8052, du moins celui du Minitel, n'a pas de contrôleur SPI, donc il aurait fallu soit faire du bit banging avec les GPIO (faisable), soit bidouiller une bricole avec l'UART (peut-être pas faisable — quid de l'horloge ?). À partir du moment où j'avais choisi d'utiliser un CPLD, il n'y avait aucune raison de faire ce genre de bidouilles plutôt que de mettre un contrôleur SPI dans le CPLD.

Tu as raison, j'ai sûrement dû trouver quelques ressources à l'époque.
Lesquelles, je ne me souviens plus. C'était il y a 10 ans…
La photo de la nappe clavier, je me rappelle de quelque chose comme ça, mais ça ne m'a été d'aucune utilité. À partir du moment où le matériel est réalisé et que tu arrives à faire tourner un programme de ton cru, c'est pas bien compliqué d'écrire un petit programme qui t'affiche le numéro de ligne et de colonne de la matrice dès que tu appuies sur une touche, comparé à prendre une photo du circuit du clavier en rayons X ou je ne sais trop quoi, ou à reverse-engineerer les fils de la nappe clavier avec un multimètre (ça c'est facile, mais à la fin il faudra de toute façon vérifier avec un programme que le mapping qu'on a déduit avec le multimètre ne comporte pas d'erreurs).

Le petit mémo du Pr Oumnad, connais pô (joli petit nom cependant).
Le 9345, j'ai vu qu'il y avait quelques exemples de code par-ci par-là mais je ne m'en suis jamais servi, parce que c'étaient souvent des "minimal working examples" et que je voulais comprendre et maitriser le 9345 à fond (ce qui m'a valu de nombreuses séances d'arrachage capillaire avec la doc du 9345 qui n'est vraiment pas une sinécure :P).

Concernant la "mise en panneau", j'en conviens, c'est moche :D
Mais c'est pourtant bien la traduction (consensuelle, à défaut d'être officielle) que j'ai trouvée pour l'anglais "panelization".
Si tu cherches "mise en panneau" sur Google tu trouveras des utilisations, par exemple ici chez Altium.
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Bienvenue @fff dans ce fil de création artisanale et de bienveillance.

Tes compétences techniques/rédactionnelle et tes expériences nous serons, à tous, très utiles... :D
"Good job" pour ton travail sur le M5... très inspirant !
("Nous", une forme littéraire ? ou multi-concepteurs ?)

ZamZam essaie ( :) ) d'assembler le programme "CamelForth" avec l'assembleur du SDCC.

La doc de l'assembleur que je viens juste de trouver,
("SDCC uses a modified version of ASXXXX & ASLINK, free open source retargetable assembler & linker.") :
http://svn.code.sf.net/p/sdcc/code/trun ... asmlnk.txt

et son code source :
https://github.com/pfalcon-mirrors/sdcc ... as/linksrc

Je vais calculer la vitesse de l'UART, pour un essai sur le Minitel 2 avec Putty en interface d'échange.
Si la config. est identique à CMON51 :
"Fréquence calculée : 74574 bauds (c'est la vitesse maxi de l'UART utilisant le Timer 0 ou 1, donc compatible MIB RTIC)"
Cependant pour le M1B RTIC, la vitesse serait de ; 74574 x 12MHz / 14.32 MHZ = 62492 Bauds.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

ZamZam et moi avons testé CamelForth52 avec une vitesse d'uart de 12430 bauds, pour commencer.
Nous avons utilisé 3 modes pour réaliser une opération "(5 + 2) * 2 = 14" :

1) Avec Putty => OK :
puttyCamelForth52.jpg
puttyCamelForth52.jpg (4.5 Kio) Consulté 423 fois

2) Sous DOS, avec plink (putty en ligne de commande) => OK
plinkDosCamelForth52.jpg
plinkDosCamelForth52.jpg (19.91 Kio) Consulté 423 fois

3) Sous Notepad++, avec nppExec et plink => le prompt de CamelForth est OK mais les commandes ne s'exécutent pas
plinkNppExecCamelForth52.jpg
plinkNppExecCamelForth52.jpg (10.93 Kio) Consulté 423 fois
La commande est retournée à l'identique si le minitel est sous tension, sinon il n'y a aucun retour de texte (juste un "saut de ligne").

Paramétrage de la npe_console de nppExec :

Code : Tout sélectionner

NPE_CONSOLE
Console mode: a- d- e0 h- m+ p+ q+ v- f- r- k3 o0 i0
; append: off, cd_curdir: off, esc_seq: raw
; cmd_history: off, int_msgs: on, print_ready: on
; cmd_aliases: on, output_var: off
; filter: off, replace_filter: off
; shortcut_keys: std+usr
; out_enc: ANSI, in_enc: ANSI
Si vous avez des idées sur ce dysfonctionnement, je suis preneur... :)
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Ce matin, nouvelle idée...
Pourquoi ne pas analyser l'uart avec un oscillo !

1) En mode Putty et DOS :
- chacun des caractères est envoyé à chaque frappe
- Enter => CR (\r)

2) En mode nppExec + plink :
- La chaine est envoyée en une seul fois
- avec un "NewLine", LF (\n) à la fin
oscilloPlinkNppExecBugCamelForth52.png
oscilloPlinkNppExecBugCamelForth52.png (7.67 Kio) Consulté 391 fois

3) Par défaut, nppExec génère un LF (\n) à la fin
pour remplacer ce caractère, il faut ajouter "Key_Enter=\r" comme indiqué dans le fichier :
C:\Program Files\Notepad++\plugins\NppExec\doc\NppExec\NppExec_TechInfo.txt

Code : Tout sélectionner

****************************************************************************
 * NppExec plugin ver. 0.7 for Notepad++
 * by DV <dvv81 @ ukr.net>, December 2006 - July 2021
 ****************************************************************************


 ***************************
 *  Technical Information  *
 ***************************

 NppExec has advanced "hidden" settings which can be set manually.
 You need to edit NppExec's ini-file: "\Plugins\Config\NppExec.ini".

  -----------------------------------------------------------------------------
 |  KEY                             |  DEFAULT VALUE                  |  TYPE  |
 |-----------------------------------------------------------------------------|
 |                                  |                                 |        |
 |  [Console]                       |                                 |        |
 |  ChildProcess_StartupTimeout_ms  |  240                            |  int   |
 |  ChildProcess_CycleTimeout_ms    |  120                            |  int   |
 |  ChildProcess_ExitTimeout_ms     |  2000                           |  int   |
 |  ChildProcess_KillTimeout_ms     |  500                            |  int   |
 |  ChildProcess_RunPolicy          |  0                              |  int   |
 |  ChildProcess_ComSpecSwitches    |  /C                             | string |
 |  ChildScript_SyncTimeout_ms      |  200                            |  int   |
 |  ExitScript_Timeout_ms           |  4000                           |  int   |
 |  Path_AutoDblQuotes              |  0                     (FALSE)  |  BOOL  |
 |  CmdHistory_MaxItems             |  256                            |  int   |
 |  Exec_MaxCount                   |  100                            |  int   |
 |  GoTo_MaxCount                   |  10000                          |  int   |
 |  RichEdit_MaxTextLength          |  4194304               (4 MB)   |  int   |
 |  SendMsg_MaxBufLength            |  4194304               (4 MB)   |  int   |
 |  Calc_Precision                  |  0.000001                       | float  |
 |  CommentDelimiter                |  //                             | string |
 |  Visible                         |  0                     (FALSE)  |  BOOL  |
 |  ShowHelp                        |  0                     (FALSE)  |  BOOL  |
 |  PrintMsgReady                   |  1                     (TRUE)   |  BOOL  |
 |  CustomMsgReady                  |  ========== READY ==========\r  | string |
 |  NoEmptyVars                     |  1                     (TRUE)   |  BOOL  |
 |  SaveCmdHistory                  |  1                     (TRUE)   |  BOOL  |
 |  TextColorNormal                 |  00 00 00                       |  HEX   |
 |  TextColorError                  |  A0 10 10                       |  HEX   |
 |  TextColorMessage                |  20 80 20                       |  HEX   |
 |  BackgroundColor                 |  0                              |  HEX   |
 |  Alias_Cmd_NppExec               |  \                              | string |
 |  Key_Enter                       |  \n                             | string |

Code : Tout sélectionner

 Key_Enter
 ---------
   Specifies the character(s) sent to stdin of the running process
   when the Enter key is pressed.
   Available values are: \n, \r, \r\n, \n\r and so on.
   In case of empty value, the default value of \n is used.
dans le fichier : C:\Users\nomUser\AppData\Roaming\Notepad++\plugins\config\NppExec.ini, dans la section [console]
plinkNppExecIniCamelForth52.png
plinkNppExecIniCamelForth52.png (63.81 Kio) Consulté 368 fois

Oscillogramme après modif...
oscilloPlinkNppExecOkCamelForth52.png
oscilloPlinkNppExecOkCamelForth52.png (8.21 Kio) Consulté 368 fois

Résultat dans "nppExec Console" :
plinkNppExecOkCamelForth52.png
plinkNppExecOkCamelForth52.png (44.72 Kio) Consulté 368 fois

Remarque pour ce mode : Aprés la frappe de Enter => Saut de ligne + répétition de la commande + résultat de l'opération
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Comme le "CMON51" fonctionne sur le même principe que "CamelForth52", je l'ai intégré dans :
Notepad++, NppExec, Plink à 74574 Bauds :

plinkNppExecOkMonitor.png
plinkNppExecOkMonitor.png (144.64 Kio) Consulté 347 fois

Remarque : Ma colorisation automatique par détection du point '.', adaptée au Forth, devra devenir paramétrable suivant l'application lancée dans le Minitel.
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Bricox
Messages : 88
Inscription : 25 janv. 2024 10:28

Re: le minitel est de retour

Message par Bricox »

Un paramétrage global de "NppExec Console Filters", "HighLight", peut s'avérer suffisant :
plinkNppExecFiltersHighLight.png
plinkNppExecFiltersHighLight.png (148.5 Kio) Consulté 330 fois

Ligne 1 : "> " : noir gras => prompt de CMON51 puis la commande, étant sur la même ligne
Ligne 2 : "* ." : magenta gras => écho d'une commande FORTH
Ligne 3 : "u ???? *" : bleu gras => écho d'une commande de désassemblage de CMON51
Ligne 4 : "*" : bleu => retour normal du minitel vers "NppExec Console"

plinkNppExecColorOkMonitor.png
plinkNppExecColorOkMonitor.png (129.1 Kio) Consulté 330 fois
Le monde a plus besoin d'artisans, d'entrepreneurs, de créateurs que de prédicateurs et de procureurs
Répondre