Je sors de ma flemme pour vous donnez, enfin, un peu plus de détails sur ma façon de faire du Basic en dehors d’un Amstrad CPC avec vscode (ou vscodium dans mon cas).
Avant toutes choses, vous devez d’abord suivre les instructions de ce premier article avant de poursuivre : Faire du Basic dehors .
Les explications qui vont suivre sont données sur la base de mon installation, à savoir Linux mais pour Windows ou Mac ça ne devrait pas être bien différent je crois.

Création du projet en Basic :

  • à l’endroit de votre choix, créez un dossier pour votre futur projet.
  • à la racine de ce dossier, créez un nouveau dossier « .vscode » (on y reviendra après).
  • faites un [clic droit] sur votre dossier projet et choisissez « ouvrir avec vscode » (moi sous linux je peux faire comme ça).
  • créez un nouveau fichier du nom que vous souhaitez MAIS en respectant bien 8 caractères max pour le nom et avec l’extension « .bas » : exemples.bas … par exemple 😉
    • il faut changer une petite chose en bas à droite dans vscode : cliquez sur [LF] et changer en [CRLF]

voilà, vous êtes prêt à coder en Basic

Le codage est très oldschool, j’entend par là, qu’il n’y a pas de numérotation AUTO des lignes, vous devez rentrer comme jadis les numéro de lignes à la main.

Un petit exemple rapide.
Copier/coller ce qui suit :

10 cls
20 PRINT "Je suis le meilleur... enfin presque ;)"
30 goto 20
  • IMPORTANT : toujours laisser la dernière ligne vide (après la ligne « 30 » dans l’exemple)
  • appuyez sur [F1], tapez « amstrad basic » et cliquez sur « Amstard Basic Run »
  • miracle… ou pas…

 

Les bases sont posées mais c’est encore insuffisant n’est-ce pas.

Maintenant, nous allons voir comment mettre notre fichier dans sa disquette virtuelle « .dsk ».

Rappelez-vous, je vous ai fait créer un dossier « .vscode » à la racine de votre dossier projet.
Toujours dans vscode, créez dans votre dossier un nouveau fichier « tasks.json ».
Ouvrez ce nouveau fichier et coller dedans ce qui suit :

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make dsk",
            "type": "process",
            "command": "idsk",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-n"
            ],
        },
        {
            "label": "insert basic file",
            "command": "idsk",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-t",
                "0",
                "-i",
                "${fileBasename}",
                "-f"
            ],
        },
        {
            "label": "run caprice32",
            "command": "cap32",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-a",
                "run\"${fileBasename}"
            ]
        },
        {
            "label": "build",
            "dependsOn": [
                "make dsk",
                "insert basic file",
                "run caprice32"
            ]
        }
    ]
}

C’est dans cette partie que vous devrez adapter mes explication avec les logiciels que vous allez utiliser suivant que vous êtes sous Windows ou Mac.

Comme je suis sympa, je vous explique un peu quand même.
Le fichier « tastks.json » est un fichier de type « json » qui va dire à vscode ce qu’il doit faire quand quand vous allez tapez simultanément [SHIFT]+[CTRL]+[b] (vous devez IMPARATIVEMENT être dans l’onglet du fichier Basic pour que ça fonctionne). Plus clairement, cette combinaison de touches dit à vscode de lancer une tâche ou un « build » si vous préférez.

{
    "version": "2.0.0",
    "tasks": [
  • initialisations des tâches
        {
            "label": "make dsk",
            "type": "process",
            "command": "idsk",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-n"
            ],
        },
  • cette partie créée le dsk avec le nom du dossier projet comme nom par défaut (${workspaceFolderBasename} est une variable d’environnement dans vscode, c’est bien pratique)
    • label : nom de la tâche
    • command : commande à exécuter (à adapter suivant votre environnement)
    • args : argument à passer à votre commande
      • « ${workspaceFolderBasename}.dsk » => nom du dsk
      • « -n » => nouveau dsk (écrasera l’ancien du même nom)
        • il faut une ligne par argument
        • si votre commande est « votreCommand -n nomDuDsk nomDuFichierBasic.bas, ça donnera « args »:[ « -n », «  nomDuDsk », «  nomDuFichierBasic.bas », … ainsi de suite
        {
            "label": "insert basic file",
            "command": "idsk",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-t",
                "0",
                "-i",
                "${fileBasename}",
                "-f"
            ],
        },
  • cette partie envoie le fichier Basic dans le dsk précédemment créé (${workspaceFolderBasename} est aussi une variable d’environnement dans vscode et c’est aussi bien pratique)
    • label : nom de la tâche
    • command : commande à exécuter (à adapter suivant votre environnement)
    • args : argument à passer à votre commande
      • « ${workspaceFolderBasename}.dsk » => fichier dsk cible
      • « -t » => argument pour le type de fichier à envoyer dans le dsk
      • « -0″ => paramètre du type « 0 » pour ASCII dans notre cas
      • « -i » => argument pour importer un fichier dans le dsk
      • « ${fileBasename} » => nom du fichier à importer
      • « -f » => argument pour FORCER, dès fois que…
        {
            "label": "run caprice32",
            "command": "cap32",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "-a",
                "run\"${fileBasename}"
            ]
        },
  • cette partie exécute Caprice32
    • label : nom de la tâche
    • command : commande à exécuter (à adapter suivant votre environnement)
    • args : argument à passer à votre commande
      • « ${workspaceFolderBasename}.dsk » => fichier dsk cible
      • « -a » => argument pour l’éxecution d’une commande une fois Caprice32 lancé
      • « run\ »${fileBasename} »=> commande qui lance le fichier Basic importé dans le dsk
        {
            "label": "build",
            "dependsOn": [
                "make dsk",
                "insert basic file",
                "run caprice32"
            ]
        }
    ]
}
  • cette partie donne l’ordre d’exécution des tâches
    • label : nom de la tâche => « build » est obligatoire pour fonctionner avec [SHIFT]+[CTRL]+[b]
    • dependsOn : indique le nom des tâches à exécuter, toutes erreurs sur une des tâches stoppe le « build »


        Voilà mon « tuto » qui touche à sa fin.

        Les plus aguerris auront remarqué que le fichier Basic créé est au format ASCII : je ne sais, hélas, pas faire mieux que ça mais vous avez une belle coloration syntaxique ainsi que des marqueurs d’erreurs dans votre saisie en cours.


J’avoue que c’est loin d’être parfait : pas de gestion des accents, pour les caractères de contrôle (inférieur à 32) vous devez saisir le chr$(x) qui va bien, obligé de saisir le numéro de ligne,… et surement d’autres choses sur lesquelles je ne suis pas encore tombées.

Malgré tout ça, je suis assez satisfait de la simplification qu’apporte cette façon de faire.

Au plaisir de vous écrire à nouveau un de ces cat.