bin2exl : utilitaire d'encapsulation d'un fichier binaire générique (a priori non exécutable mais cela reste possible pour un usage adhoc dans une application) dans divers containeurs sur support exelvision

Cette commande est l'outil idéal pour récupérer des données sur support Exelvision et les exploiter au sein d'un programma. Les données sous forme binaire produites par différents outils (image JIF par exemple) doivent être formatées de différentes manières pour être récupérées dans une plateforme exelvision (DcExel ou machine exelvision). bin2exl permet de générer un fichier pour disquette ou un bloc K7. Les paramètres de cette commande autorisent de stocker les données soit dans un bloc monolithique binaire, soit dans un ensemble d'enregistrements pour charger ces données par partie (et donc économiser de la mémoire).
Cette commande est utilisée étroitement avec tout processus de développement:
PCX2JIF -> BIN2EXL -> test sur DcExel via programme -> DcExelToolBox/DcExelDisk -> validation sur machine Exelvision
La suite de ce document décrit les nombreuses options de cette commande.

usage : bin2exl sourceFile targetFile [-t:DOS|K7|TASM] [-H:0xHeaderSize] [-r:0xRecordSize] [-n:4LettersK7Filename]] 
sourceFile = fichier binaire source contenant des données (ou même un code binaire)
targetFile = fichier binaire dans le format cible
-t:DOS = génération d'un fichier ExelDos qui peut être facilement intégré à une image de disquette à l'aide de l'outil DcExelDisk ou DIR2FD.
-t:K7 = génération d'un bloc K7 qui peut être chargé à l'aide de la fonction TRAP 14 de la ROM Exelvision.
-t:ASM = génération d'une zone de données dans un fichier texte à intégrer dans un fichier source TASM (données placer dans le code assemblé).
-H:0xHeaderSize = cette option permet d'expliciter un header dans les données du fichier binaire source. HeaderSize est la taille du header exprimée en hexadécimal, c'est-à-dire le nombre d'octets en début de fichier à considérer comme entête. Dans le cas d'un fichier cible ExelDos, un enregistrement est créé avec les données du header. Dans le cas d'un fichier cible k7, un bloc K7 est créé avec les données du header. Le format cible ASM n'est pas concerné par cette option.
-r:0xRecordSize = cette option permet de découper les données du fichier source en un ensemble d'enregistrements de taille RecordSize octets (exprimée en hexadécimal). Dans le cas d'un fichier cible ExelDos, les enregistrements sont codés sous forme d'enregistrements ExelDos tout simplement. Dans le cas d'un fichier cible k7, chaque enregistrement est placé dans un bloc K7 (ce qui peut augmenter considérablement la taille des données).
-n:WXYZ = permet de spécifier les 4 lettres du nom du bloc K7 lors de la génération d'un fichier k7 dans ce containeur. Par défaut le nom est composé de 4 espaces.

exemple:
bin2exl 1942.jif 1942.k7 –t:K7 –H:0x0A –n:IMG1
génère deux blocs K7 à partir du binaire de l'image 1942.jif, en considérant un header  construit avec les 10 premiers octets des données placé dans le premier bloc K7 et un second bloc K7 avec le reste des données . Les blocs K7 porte le nom IMG1.

binexl 1942.jif 1942.JIF –t:DOS –H:0x0A –r:0xFE
génère un fichier pour ExelDos à partir du binaire de l'image 1942.jif. Le fichier cible porte le nom 1942.JIF, il est composé d'un enregistrement pour le header construit avec les 10 premiers octets des données, et d'un ensemble d'enregistrements de taille 254 octets pour le reste des données. Ce découpage des données dans des enregistrements permet, par exemple, de charger ces données par partie dans un buffer de 254 octets.

Comment ajouter très simplement des blocs K7 à un fichier k7 ?
En concaténant les blocs au fichier (ou en copiant-collant)… simple !
