MSX Village forum

La Place des Développeurs Atelier de développement assembleur MSX développeurs assembleur MSX, votre avis m'intéresse!

Sondage: Etes-vous intéressé par un plug-in de développement ASMSX pour Eclipse?
oui, pour plateforme Linux 25.0% - [3 Vote]
25.0%
oui, pour plateforme Windows 66.7% - [8 Vote]
66.7%
oui, autre plateforme que Linux ou Windows 8.3% - [1 Vote]
8.3%
oui, mais pas pour ASMSX 0.0% - [0 Vote]
0.0%
non, je ne touche pas à l'assembleur! 0.0% - [0 Vote]
0.0%
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 23/03/2018 à 08h29
Bonjour à tous,

Je suis en train de mettre au point un plug-in pour Eclipse permettant de développer en assembleur spécialement pour la syntaxe de ASMSX.
Les fonctionnalités à partir d'Eclipse étant la colorisation syntaxique du code, l'appel au compilateur ASMSX, et le dialogue avec openMSX via commandes TCL (fonctionnalité "control" de openMSX).

Mon environnement est Linux Ubuntu, ASMSX modifié et recompilé suite à de petites corrections et l'ajout d'étiquettes absentes dans la dernière version, Eclipse Oxygen, openMSX, debugger openMSX, catapult pour openMSX.

Le plug-in fonctionne également sous d'autres plateformes comme Windows, mais je n'ai pas réussi à communiquer avec openMSX comme indiqué dans le documentation via un "pipe", en revanche sous Linux cela fonctionne bien à travers le principe de "socket" (voir lien).

J'ouvre donc un sondage pour savoir si des personnes sont intéressées et une demande d'aide pour savoir si quelqu'un a réussi à contrôler openMSX sous Windows.

D'avance, merci pour vos réponses. Edité par Visiteur Le 23/03/2018 à 08h30
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 23/03/2018 à 12h58
Tu as oublié dans ton sondage : "Je ne connais pas du tout Eclipse" ... :)


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 23/03/2018 à 16h18
Alors... pour ceux qui ne connaissent pas, Eclipse est un environnement de développement, initialement conçu pour Java je pense, mais qui est maintenant utilisé pour la réalisation de projets dans d'autres langages comme C et C++ entre autres.

Cet environnement facilite la programmation par l'apport de nombreux outils d'aide, complétion, vérification syntaxique, lancement de programmes externes de compilation, debug mais également documentation et travail d'équipe et gestion configuration avec git, svn ou autres gestionnaires de version.

Eclipse est gratuit et disponible sur la plupart des plateformes. Une présentation / documentation en français est disponible ici.

Voici ce que cela peut donner pour ASMSX :

Edité par Visiteur Le 23/03/2018 à 16h21
   
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1503

Le 23/03/2018 à 16h52
Pas mal ... Pas mal du tout, même !

Depuis plusieurs années, moi j'utilisais ConText, qui permet uniquement la colorisation syntaxique mais qui peut apparemment aussi lancer une commande extérieure, bien que je n'ai jamais réussi à utiliser cette fonctionnalité.


MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 24/03/2018 à 08h31
Les fonctionnalités disponibles actuellement à partir d'Eclipse avec ce plugin et openMSX sont les suivantes :
- colorations syntaxique (en cours d'amélioration)
- détection des directives de compilation (liste dans la fenêtre de droite et positionnement dans le source sur la directive par clic dans cette liste)
- détection des étiquettes (liste dans la fenêtre de droite et positionnement sur l'étiquette par clic)
- compilation du source assembleur par ASMSX et retour du résultat dans la console
- chargement du binaire compilé (.rom ou .bin) dans la session d'émulation openMSX par commande TCL : uniquement sur Linux actuellement car je ne suis pas arrivé à faire fonctionner la communication. Comme indiqué dans mon premier post, je cherche de l'aide pour expérimenter la fonction "command" de openMSX avec Windows. :fou

Comme il est possible de programmer des fonctionnalités dans ce plugin Eclipse, ou d'appeler des programmes externes, si vous avez des idées sur les fonctionnalités qui vous seraient utiles n'hésitez pas à en parler dans ce sujet.

Si cela intéresse suffisamment de développeurs je continuerai le développement de ce plugin. Si vous voulez participer à la phase de mise au point, envoyez-moi un MP et je vous enverrai le plugin en l'état et un peu d'informations pour l'installation. Cela permettra de m'aider à réaliser un wiki.
:tea
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 24/03/2018 à 13h07
Un nouveau projet fait toujours plaisir à voir sur Msx même si je me contente de "Basicoter" :p


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 24/03/2018 à 15h34
Oui Igal j'aimerai bien pouvoir mener à terme ce projet pour qu'un plus grand nombre de développeurs puisse réaliser des développements MSX. Tes expérimentations en Basic MSX sont extrêmement intéressants mais peut-être qu'un jour tu te mettras à l'assembleur. L'un et l'autre ne sont pas incompatibles d'ailleurs, mais l'interpréteur Basic prend de la place mémoire. Ce qui est intéressant c'est d'expérimenter et de mettre au point des techniques en Basic pour les transposer en assembleur.

Je viens de trouver un script TCL pour openMSX qui s'appelle basictorom :
[font= courier new]### basictorom.tcl ###
#
# This script was developed together with Daniel Vik to have an automated tool
# to convert BASIC programs to ROM files. See this forum thread for more
# details:
#
# http://www.msx.org/forumtopic9249.html
#
# To use it, put a file 'prog.bas' in the current directory (can be either in
# ascii format or an already tokenized basic file). Then execute this script by
# using the openMSX commandline. And after a few seconds the ROM image
# 'prog.rom' will be generated.
#
# input: prog.bas
# output prog.rom
# start with: openmsx -script basictorom.tcl
#
# Note: This script only works on MSX machines that have a disk drive and have
# MSX-BASIC built-in. So for example it won't work on the default C-bios
# based machines. So either select a different MSX machine as your
# default machine, or pass the '-machine <machine-config>' as extra
# option when starting openMSX.
#[/font]
Edité par Visiteur Le 24/03/2018 à 17h28
   
RibbSayan Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 19/08/2010 à 22h47

Messages: 154

Le 24/03/2018 à 22h08
Salut,
J'ai un programme de test en C# permettant de communiquer avec OpenMsx. Je n'ai pas réussi à communiqué via un "pipe" non plus. Par contre, la méthode de communication de process fonctionne (StandardInput, StandardOutput et StandardError)

En gros, c'est comme taper les commandes OpenMsx dans une invites de commandes.

Il suffit d'appeler OpenMsx avec les arguments suivants
openmsx.exe -control stdio

Après, il suffit d'envoyer les commandes OpenMsx au format XML.
   
igal Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 29/07/2010 à 17h19

Messages: 5492

Le 25/03/2018 à 14h55
Open MSX semble très performant et surtout, il gère la superimpose mieux que BlueMSX.
Il y a quelques années, j'avais essayé de lancer l'émulateur OpenMsx mais j'y suis pas arrivé, il semblait rébarbatif par rapport à BlueMsx.

Pour ce qui est de BasicToRom, il me semble avoir entendu Jipe dire qu'il était possible d'injecter le Basic en ROM mais que cela restait du Basic.... Donc à priori, l'étape interpréteur resterait encore nécessaire! (j'ai peut être mal compris :p )

Concernant les expérimentations, je retrouve quelques fois sur la toile, des applications qui semblent être inspirés de petites "ces" petites trouvailles et cela me fait bien plaisir :top

Peut être qu'un jour, j'aurais la patience de me pencher sur un "tuto" assembleur mais pour le moment ça me semble bien au dessus de mes capacités :oups
A mon niveau, je serai capable de suivre avec un tuto du genre:
1) Ouvrir tel logiciel
2) Ecrire ceci et cela. (ceci sert à ca et va de x à y, Cela sert à ca et va de x à y)
3) Sauvegarder sous machin chouette.
4) Aller sous Basic
5) Ecrire la commande Ceci et cela. (ceci sert à ca et va de x à y, et cela va de x à y)
6) faire RUN

Voila le genre de choses que je pense pouvoir suivre...
Une fois les bases comprises (et surtout acceptés dans mon esprit), pour le reste, l'empirisme, la patience et l'envie me permettront de faire mumuse :)


Tiens... voila du boudin, voila du boudin, voila du boudin... :siffle
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 25/03/2018 à 19h51
RibbSayan :

Il suffit d'appeler OpenMsx avec les arguments suivants openmsx.exe -control stdio

Merci RibbSayan, je vais essayer de voir si je peux faire quelque chose par cette méthode, mais cela m'embête un peu de passer par stdio pour envoyer les commandes, cela veut dire qu'il faut lancer openmsx depuis eclipse. Mon autre problème c'est que je dispose de Windows seulement au travail, pour expérimenter c'est pas facile...

@Igal; Je suis sûr qu'avec une bonne documentation, des tutos, des exemples et un outil de développement sympa tu pourrais nous concevoir des codes de folie. Il y a beaucoup de choses à expérimenter en assembleur avec ce côté "informatique de base" imposé par les composants Z80 et périphériques!
   
RibbSayan Membre non connecté

Touriste

Rang

Avatar

Inscrit le : 19/08/2010 à 22h47

Messages: 154

Le 26/03/2018 à 19h48
D'après la documentation openmsx, sous windows, tu dois lancer l'exe avec l'argument "-control stdio" ou "-control pipe". Dans les 2 cas, il faut lancer OpenMsx (où alors j'ai mal lu un truc, c'est possible aussi)
J'ai fait un test avec "pipe", j'ai bien trouvé le fichier dont l'extension indique le socket mais je n'arrive pas encore à communiquer avec.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 27/03/2018 à 09h40
Voici un petit état des lieux concernant le contrôle d'openMSX depuis une application externe :

J'aimerai faire fonctionner la communication entre openMSX et le plugin de la même façon quelque soit le système pour éviter à gérer un code spécifique pour chacun d'eux.

Sous Linux je passe par la commande nc pour communiquer avec openMSX mais je n'ai pas trouvé l'équivalent Windows, je voudrais écrire un code Java qui fonctionne sur Windows, Linux et Mac si possible.

Quand on lance openMSX sans l'option -control, sur Windows et Linux, on peut ouvrir une communication avec un programme externe par socket (test avec openmsx-debugger ok). Le numéro du port se trouve dans un fichier créé au lancement d'openMSX qui est placé dans le répertoire temporaire et se nomme "socket.<pid>" (pid étant le numéro de processus d'openMSX), le serveur est "localhost" ou IP 127.0.0.1.

J'ai codé un programme de test Java (essayé sur Windows), l'ouverture de communication de la socket fonctionne mais dès que j'écris plus de 2 caractères pour envoyer <openmsx-control> la communication est réinitialisée (socket connection reset). Je pense également que je devrais recevoir <openmsx-output> à la connexion, ce qui n'est pas le cas.

OpenMSX debugger communique aussi bien sur Linux que sur Windows de cette façon (sans option -control stdio/pipe), donc il doit être possible de communiquer en Java aussi (les plugins Eclipse sont écrits en Java).
Dans le code d'openMSX debugger en C++ je vois que pour Windows la connexion socket et suivi de "SspiNegotiateClient" qui permet de traverser une couche de sécurité spécifique à Windows. C'est sans doute ce qui me manque.

La documentation indique que l'option "-control pipe" est pour Windows et "-control stdio" pour les autres systèmes.
Lorsqu'on utilise "-control pipe" sous Windows, openMSX ne lance pas la fenêtre graphique et affiche dans le terminal, à la suite de la commande, "<openmsx-output>". Que fait-on après ? On ne peut pas saisir de commande... Je m'attendais à pouvoir saisir "<openmsx-control>" pour débuter la communication.
D'après la doc, que l'affichage graphique ne se lance pas est normal. Il faut envoyer <command>set renderer SDL</command>.

J'ai essayé également avec Putty en mode raw ou telnet mais sans succès.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 28/03/2018 à 09h00
Contrairement à ce que j'avais cru comprendre dans la documentation l'option "-control stdio" fonctionne sur Windows. Je m'en suis aperçu en regardant le code python du plugin OpenMSXControl pour Gedit.
Une solution pour Windows, car je vois d'après le sondage que plus de développeurs sur Win sont intéressés, serait de lancer openMSX depuis Eclipse et d'envoyer les commandes dans la session. Je ferai un essai prochainement en Java.
   
Visiteur

Vagabond

Rang

Avatar

Message : 0

Le 12/07/2018 à 09h10
J'ai avancé sur le sujet, j'ai codé le lancement de openmsx avec paramètres en Java. Il faut que j'intègre le code dans le plugin.
Cependant j'ai trouvé un autre atelier de développement qui semble intéressant, je vais ouvrir un sujet à ce propos.
   
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie