LocoPad, un éditeur de code basé sur le Web pour les développeurs CPC

Salut tout le monde,

Voici quelque chose sur lequel je travaille, à la suite de la discussion sur les survol cartes BASIC.

Je suis ravi de vous partager LocoPad, un éditeur de code Web, bloc-notes et outil de référence interactif pour firmware, conçu spécifiquement pour écrire du Locomotive BASIC et développer pour l’Amstrad CPC directement dans votre navigateur.

Ceci a été mis au point après que le plus gros du travail a été réalisé sur les commandes du firmware et du BASIC à intégrer dans le forum.

  • Exécution en un clic dans l’émulateur CPC : Cliquez sur Exécuter dans le CPC (►) et LocoPad compile immédiatement les fichiers de votre projet actif dans une image .DSK AMSDOS de 40 pistes, puis démarre directement dans un Amstrad CPC 6128 émulé (RVMPlayer, exactement comme sur le forum et le Wiki) qui lance votre programme.
  • Exportation instantanée AMSDOS .DSK & .BAS : Exportez des fichiers .BAS standard ou des images disque .DSK multifichiers complètes, prêtes à l’emploi.
  • Aide intégrée & référence complète du CPC (498 symboles) :
    • Inspecteur BASIC & Firmware : Survolez ou recherchez l’une des 187 commandes Locomotive BASIC ou l’un des 311 vecteurs de Jumpblock du firmware CPC (&BB00–&BD5D) pour afficher en temps réel la syntaxe, les registres d’entrée/sortie requis, les registres altérés et des modèles de code.
    • Palette matérielle CPC de 27 couleurs : Sélecteur interactif d’échantillons de couleurs avec générateur de snippets de code PEN, PAPER et INK en 1 clic (juste parce que j’aime bien l’étiquette sur le lecteur du 6128).
  • Gestion de projets multifichiers : Organisez des programmes BASIC en plusieurs parties, des tables de données et des documents texte avec sauvegarde automatique locale dans le navigateur et barres latérales redimensionnables (Ctrl+B).
  • Double moteur d’édition : Choisissez entre un moteur CodeMirror 6 léger et ultra-réactif (par défaut) ou le Monaco Editor (le moteur de VS Code).
  • Local uniquement. Votre travail est sauvegardé automatiquement en local dans le stockage de votre navigateur. Rien n’est envoyé nulle part.

LocoPad est entièrement exécuté côté client, léger et ne nécessite aucun compte :

https://www.cpcwiki.eu/locopad/

Dites-moi comment ça fonctionne pour vous, si vous aimeriez voir d’autres fonctionnalités, s’il y a des bugs ou si c’est de la merde intégrale.

Oh, c’est génial. J’ai toujours voulu avoir un truc comme ça !

Une petite chose : les icônes de téléchargement/téléversement semblent être inversées. Ce à quoi je m’attendais pour le téléchargement est en fait le téléversement, et inversement.

Merci pour ton retour :slight_smile: Honnêtement, je ne savais pas si ça serait utile à quelqu’un. BASin semble populaire dans la communauté Speccy et, bien que ce soit évidemment un programme beaucoup plus avancé, il lui manque quelques petits plus et un flux de travail simple.

Concernant les boutons : ce ne sont pas « téléverser/télécharger », mais plutôt « importer/exporter », donc la logique est correcte. Cependant, si les gens préfèrent l’inverse, c’est réglé en 10 secondes :smiley:

Compris… Tout dépend donc de ce qu’on considère comme la cible et comme la source. Je peux faire avec :wink: Pas de soucis.

Je ne sais pas à quelle fréquence je vais l’utiliser, mais c’est sûr que ça me servira de temps en temps. Ça a l’air super pour tester rapidement des trucs et pouvoir faire du copier/coller ou sauvegarder.

Et quand j’ai développé mon jeu Cameronne, ça m’aurait bien aidé pour le refactoriing que je devais faire de temps à autre..

Salut ! Bref, si tu l’utilises vraiment, n’hésite pas à me dire si tu as des demandes de fonctionnalités et j’essaierai de les ajouter (sans garantie, quand même) !

Excellent !

Et le projet de bienvenue pour le tester rapidement.

Le projet d’exemple a l’air de tourner tellement vite. L’émulation est-elle accélérée ?

Un petit détail : puisqu’il faut cliquer sur le bouton « Jouer », ce serait mieux si l’émulateur se lançait directement sans afficher la pub « RVM » et sans demander le clic habituel.

(Et, en y réfléchissant, la même chose se produit sur d’autres pages web où l’émulateur est présent.)

Petit bug : si vous lancez l’émulateur puis que vous cliquez sur la croix pour le fermer, l’émulateur continue de tourner et conserve le focus clavier. Vous pouvez par exemple taper des lettres, puis appuyer sur la flèche du haut ou du bas et entendre le bip du CPC.

De plus, si vous appuyez à nouveau sur le bouton « play », on dirait qu’un autre émulateur est lancé, car la charge du système hôte augmente encore plus.

Oh, c’est vraiment une super fonctionnalité !

Et tu aurais dû voir ma tête quand j’ai découvert que le bouton d’exécution compile ton code et lance l’émulateur… :joy:

Concernant les boutons d’import/export, je pense qu’ils sont vraiment inversés et j’ajouterais qu’on peut voir que l’icône pour « Télécharger le fichier .BAS ASCII standard » a la flèche pointée vers le haut, alors que la même icône est utilisée ici sur le forum avec la fonction inverse (le bouton Partager).

Donc partager et importer, c’est la même chose, tu envoies des éléments depuis ton ordinateur vers d’autres programmes, tandis qu’exporter/télécharger, eh bien… TÉLÉcharge les fichiers sur ton ordinateur et devrait avoir l’icône avec la flèche pointée vers le bas.

Saluons,

Rob

Non, ça tourne comme ça par défaut !

C’est comme ça que RVM Player fonctionne, je n’ai pas d’option pour passer ça (…je crois ?)

C’est intéressant, je n’ai pas eu ce comportement. Quel navigateur ?

Ouais, la première fois que j’ai réussi à le faire fonctionner, ça m’a fait tellement plaisir à moi aussi !

Ouais ouais d’accord, d’accord. Je vais inverser les boutons et reformuler tout ça :joy:

Génial.

PS : Tu ne penses pas que ce serait mieux que les numéros de ligne sur la gauche soient d’une couleur légèrement différente du texte principal ? On a l’impression qu’ils se confondent parce qu’ils sont juste à côté des numéros de ligne de base.

  • Correction du problème à la fermeture de l’émulateur (c’était vraiment bête de ma part ; j’ai vidé la <div>, mais je n’ai pas vérifié si l’émulateur continuait de tourner en arrière-plan…)

  • Inversion des boutons d’importation et d’exportation (voilà, c’est réglé)

  • Ajustement du numérotage des lignes de marge (et j’en ai profité pour appliquer un code couleur aux numéros de ligne du BASIC) :

Continuez à m’envoyer vos suggestions :slight_smile:

Sympa, le panneau de préférences avec des options pertinentes.

Je ne me rappelle plus quelle était la police par défaut

Retro CRT Monitor Effects :

C’est bien de permettre un rendu de pixels tout simple et de base.

Une émulation de moniteur très fidèle est utile pour les travaux graphiques vraiment avancés, comme Sylvestre Amstrad CPC - Technique graphique (7-épaisseur & luminosité des pixels). Mais pour la plupart des autres tâches, y compris le développement en BASIC, je trouve les effets de moniteur totalement inutiles et gênants.

Mais… ça a l’air d’être ignoré ? L’émulateur démarre toujours avec les effets activés.

Ce site web ne cesse de s’améliorer.

Quelle plateforme fantastique !

J’ai essayé de faire au plus simple ; je trouve que l’implémentation actuelle est agréable à l’œil, jusssste ce qu’il faut.

En effet, l’émulateur démarre avec les effets activés. Si ça dérange du monde, je peux les désactiver, si je me souviens bien.

Un grand merci :slight_smile:

Merci beaucoup pour cet outil. C’est un vrai plaisir à utiliser !

Merci et bienvenue !

Beau travail @Gryzor ! :+1:
D’après ce que j’ai pu voir, c’est déjà un projet très abouti !
AMHA, il manque peut-être une distinction importante : BASIC 1.0 par rapport à BASIC 1.1.
Cela pourrait être utile d’identifier quelles instructions ne sont pas disponibles sur l’Amstrad CPC 464. Remarque bien que je ne te demande pas d’ajouter la prise en charge du BASIC 1.0 ; j’aimerais juste que les utilisateurs soient informés des prérequis spécifiques au BASIC 1.1. :stuck_out_tongue:
Encore une fois, super boulot, félicitations !

Aaaaargh !!! Et j’étais prêt à publier la version suivante ! :grinning_face_with_smiling_eyes:

C’est une suggestion très pertinente, et oui, je pense que je peux le faire facilement car l’info est déjà là.

Du coup, en filtrant mes fichiers json, j’ai ces commandes marquées en 1.1 :

FRAME, FILL, SWAP, ROUND, MASK, GRAPHICS PEN, GRAPHICS PAPER, DEC$, COPYCHR$, CURSOR, REMAIN, DERR, WINDOW SWAP, ainsi que les trois instructions ON BREAK (CONT, GOSUB, STOP). J’espère que je n’oublie rien ?

On peut essayer d’ajouter la prise en compte de cette compatibilité dans LocoPad :

  1. Conseils du Linter CPC 464 : Si tu utilises l’une de ces 16 instructions, le linter signale un conseil de compatibilité avec une alternative pour le 464 d’origine (par exemple, en suggérant CALL &BD19 pour FRAME, ou un échange de variables pour SWAP).
  2. Badges de l’Inspecteur : L’inspecteur de symboles et le dock peuvent mettre en évidence un message du type [BASIC 1.1 uniquement (CPC 664/6128)] et fournir la syntaxe équivalente pour le 464 le cas échéant.

Ça ne fait que deux conditions de plus à ajouter — non, en fait une seule. Je dois aussi créer un tableau d’équivalence, bien sûr. Tu as une source pour ça ?

Merci pour tes mots gentils, ça compte énormément venant de toi !