megar a écrit:
En gros que tu modifies
"|| (bin.size == 0x0080)"
par
"|| (bin.size == 0xffff)"
Parce que je vois pas bien l'intérêt de splitter tout en blocs de 128 octets. (mais il y a peut-etre une raison que j'ignore...)
C'est juste une question de place mémoire.
Lorsqu'Assembler sauvegarde la compilation d'un source, il remplit, octet par octet, le buffer de 128 octets (et c'est déjà beaucoup) qui lui est alloué pour l'occasion, en conservant l'adresse d'implantation du bloc et en comptant les octets. Une fois que ce bloc est plein (ou une fois que l'on est au dernier bloc), le programme sauve le header (flag, taille, adresse) puis le bloc de données.
Pour sauver des fichiers binaires "linéaires" par compilation, il y a deux options :
- Soit on a effectivement un buffer de 65535 octets (sur un TO7 sans extension, ça va être difficile à trouver);
- Soit on réserve de la place pour le header de bloc sur le périphérique, on écrit les données, puis on retourne à l'endroit du header de bloc pour ajuster la taille dans le header, pour revenir ensuite à la fin des données et recommencer l'opération. Mais je vois difficilement quelqu'un arriver à ce résultat avec un LEP, par exemple.
Et tu as raison, c'est pourtant le résultat qu'il faudrait obtenir, bien que ce que j'appelle un binaire linéaire, c'est un binaire en un seul bloc (obtenu par SAVEM sous Basic), donc avec des adressages consécutifs du début à la fin.
Nous allons assister à la naissance d'un format hybride de fichier binaire (déjà en vigueur sur le cross-compiler?) qui n'est pas censé exister sur Thomson, qui non seulement autorisera les blocs de plus de 128 octets, mais qui gèrera aussi les changements d'origine
