Sur la base de mon précédent tuto (voir ici), je vous présente sa version pour Windows.

    La structure de votre dossier « projet » est identique à quelques détails près que j’expliquerai au fur et à mesure de cet article.

    Commençons par les prérequis indispensables à votre dossier « projet ».
Il vous faudra :
    – ManageDSK => ManageDsk_v0.20h
    – Amspirit => Amspirit_x64 / Amspirit_x86
    – CapriceForever => Caprice_Forever_23.11_x64 / Caprice_Forever_23.11_x86
    – Caprice32 => Caprice32_x64 / Caprice32_x86
(Aucune importance quand au choix de la version x64 ou x86 de l’émulateur, ça fonctionnera pareil).
Décompressez tous ces programmes à la racine du projet, chacun dans leur dossier respectif.

    Notez que rien n’est installé en dur, tout est portable et peut se mettre sur une simple clé usb.

   Dans notre exemple, mon dossier projet s’appelle « empty ». Voici à quoi il ressemble une fois ouvert dans vscode :

(à la création du dossier, le fichier « empty.dsk » n’existe pas encore, n’y prêtez pas attention)
Comme vous pouvez le voir, c’est très légèrement différent, si peu, par rapport à mon dernier article.

    Les petits nouveaux (fichiers « .bat ») vont vous servir en fonction du choix de l’émulateur utiliser pour monter votre .dsk.
   
    Dans le dossier « .vscode », seul le fichier « tasks.json » sera utilisé comme lanceur de tâche par défaut.
Par exemple, si vous souhaitez utiliser Caprice32 comme émulateur, sélectionnez « tasks.caprice32.json » dans la partie explorateur de vscode, faites [SHIFT]+[CTRL]+[s] (soit « enregistrer sous ») et sélectionnez « tasks.json ». A partir de maintenant, en faisant [SHIFT]+[CTRL]+[b] pour lancer un tâche, c’est Caprice32 qui sera choisi comme émulateur et le fichier « .bat » qui va avec (« cap32.bat » dans notre exemple).

    Voici à le fichier « tasks.caprice32.json » en détail :

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make dsk with all .bas files",
            "command": "ManageDsk\\Managedsk.exe",
            "args": [
                "-C",
                "-S${workspaceFolderBasename}.dsk",
                "-L${workspaceFolderBasename}.dsk",
                "-A*.bas",
                "-S${workspaceFolderBasename}.dsk"
            ]
        },
        {
            "label": "run caprice32",
            "command": "cap32.bat",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "${fileBasename}"
            ]
        },
        {
            "label": "build",
            "dependsOn": [
                "make dsk with all .bas files",
                "run caprice32"
            ]
        }
    ]
}

    La première partie concerne ManageDSK et est commune au trois émulateur que vous pouvez choisir d’utiliser.

{
            "label": "make dsk with all .bas files",
            "command": "ManageDsk\\Managedsk.exe",
            "args": [
                "-C",
                "-S${workspaceFolderBasename}.dsk",
                "-L${workspaceFolderBasename}.dsk",
                "-A*.bas",
                "-S${workspaceFolderBasename}.dsk"
            ]
        },

    La partie « args » est issue de la doc de ManageDSK pour les exécutions en lignes de commandes :
      – « -C » : on crée une disquette vierge
      – « -S » : on sauve la disquette sous un nom de son choix (ici variable d’environnement dossier projet)
      – « -L » : on lit la disquette
      – « -A » : on envoie tous les fichiers Basic dans la disquette (ASCII pour rappel)
      – « -S »: on sauve la disquette
ATTENTION : pour « -S », « -L » et « -A » pas d’espace après ces lettres, sinon ça marche pas.

    La seconde partie concerne l’émulateur. Elle se contente de lancer le fichier « cap32.bat » avec deux arguments :
      – le nom de la disquette
      – le nom du fichier à exécuter une fois l’émulateur ouvert.

    Et voilà le fichier « cap32.bat » :

cap32-win64\cap32.exe -c cap32-win64\cap32.cfg %1 -a "run""%2"

      – « -c » : indique le chemin du fichier de config de caprice32, il en  a besoin pour s’exécuter proprement
      – « %1 » : récupère le premier argument passé à « cap32.bat » => le nom de la disquette
      – « %2 » : récupère le deuxième argument passé à « cap32.bat » => le nom du fichier Basic à lancer

    Voilà, vous savez tout.
A quelques détails près, tout le monde fonctionne de la même façon.

    Mais comme vous savez que je suis un gars sympa, je vous colle les fichiers des deux autres émulateurs (abondance de biens ne nuit pas).
      – CapriceForever :

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make dsk with all .bas files",
            "command": "ManageDsk\\Managedsk.exe",
            "args": [
                "-C",
                "-S${workspaceFolderBasename}.dsk",
                "-L${workspaceFolderBasename}.dsk",
                "-A*.bas",
                "-S${workspaceFolderBasename}.dsk"
            ]
        },
        {
            "label": "run capriceforever",
            "command": "capforever.bat",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "${fileBasename}"
            ]
        },
        {
            "label": "build",
            "dependsOn": [
                "make dsk with all .bas files",
                "run capriceforever"
            ]
        }
    ]
}
"Caprice_Forever_x64\Caprice64.exe" /DriveA=%1 /Command="run""%2"

      – Amspirit :

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "make dsk with all .bas files",
            "command": "ManageDsk\\Managedsk.exe",
            "args": [
                "-C",
                "-S${workspaceFolderBasename}.dsk",
                "-L${workspaceFolderBasename}.dsk",
                "-A*.bas",
                "-S${workspaceFolderBasename}.dsk"
            ]
        },
        {
            "label": "run amspirit",
            "command": "amspirit.bat",
            "args": [
                "${workspaceFolderBasename}.dsk",
                "${fileBasename}"
            ]
        },
        {
            "label": "build",
            "dependsOn": [
                "make dsk with all .bas files",
                "run amspirit"
            ]
        }
    ]
}
cd CPC_AMSpiriT
"Amspirit v0.967_beta_x64.exe" --dsk ..\%1 --run %2
cd ..

Amspirit doit s’exécuter dans son répertoire de travail, donc « cd CPC_AMSpiriT » et à la fin « cd.. » pour retourner dans le dossier du projet.


    Maintenant, vous savez vraiment tout et vous voyer aussi que c’est facilement personnalisable.

    BASIC is not dead 🙂

A vos clavier les gueux, faites moi pétez vos neurones de crocos