En examinant les codes binaires, je me suis rendu compte que mes codes générés par spasm ou z80asm ne correspondent pas du tout...
Sur les 2 programmes
qui s'éxecutent (on peut voir que l'un d'eux est compilé avec chaos assembler) :
Un magic number tout d'abord : **TI83**
(rajouté par bin2var, bin8x ou binto83p)
Des octets libres pour l'ajout éventuel d'un commentaire.
(bin2var et chaos assembler ne s'en privent pas)
Ensuite au 60 ème octet le nom du programme.
8 octet lui sont apparemment reservé...Ou alors sa taille est spécifiée juste avant (il y a des octet initialisés)
Mais je penche pour la taille fixe de 8 char.
(Je crois d'ailleurs qu'il ne faut pas dépasser cette taille pour un nom de programme)
D'abord 4 octet pour le début du programme.
L'adresse de départ semble y être stockée.
Ensuite le code à proprement parler :
43 44 35 35 34 37 : CD 5547 pour _ClrLcdFull
43 44 39 35 34 37 :CD 9547 pour runindicoff
etc...
Puis la chaine de fin :
Le fameux end:000:end si je ne me trompe pas...
30 3F D4 3F 30 30 3F D4 + 2 octet qui trainent.
Qui donne en chaine de char interpreté par hexedit : 0?.?0000?.
Sur ce que je compile, il n'y a rien de commun a part le magic number et les romcall qui apparaissent "CD 5547" donc comme il faut.
Voila dites moi si je me trompe...?


(hex.png)
Edit : En fait j'ai trouvé un document là dessus :
I) Normal files such as Program file (*.82p)
--------------------------------------------
The following is a table of the bytes that make up the header of the *.82p
file:
Byte(s) What It Contains
---------------------------------------------------------------
0x00-0x10 0-10 **TI82** 0x1A 0x0A 0x00
0x0B-0x34 11-52 Comment
0x35-0x36 53-54 (68-69)+4+3+[strlen(Name)=8]
begin of var header ----------
0x37-0x38 55-56 0x0B 0x00
0x39-0x3A 57-58 Repeats 68-69
0x3B 59 0x05 unprotected
0x06 protected
0x3C-0x43 60-67 Name of program (8 chars)
end of var header ----------
begin of data part ----------
0x44-0x45 68-69 (70-71)+2
0x46-0x47 70-71 Length of file (n) to end minus Checksum
0x48-(n-2) 72-(n-2) Actual program
(n-1)-(n) Checksum
end of data part ----------
The checkum is the sum of all bytes starting at the var header (0x0B).
(EDIT : au fait merci à Romain Lievins pour cette doc)
Apparement le format de fichier est le même pour 82 et 83...?