Structure des fichiers binaires
Modérateurs : Papy.G, fneck, Carl
Structure des fichiers binaires
Bonjour,
Je recherche de la doc sur la structure des fichiers binaires :
- Thomson MO / TO
- VG 5000
- Amstrad CPC
Pour le CPC ce sera juste une piqure de rappel (je sais qu'il y a un header spécifique a l'AMSDOS).
J'ai besoin de connaitre ces structures pour intégrer une fonction d'export depuis mon appli Java.
Merci.
Je recherche de la doc sur la structure des fichiers binaires :
- Thomson MO / TO
- VG 5000
- Amstrad CPC
Pour le CPC ce sera juste une piqure de rappel (je sais qu'il y a un header spécifique a l'AMSDOS).
J'ai besoin de connaitre ces structures pour intégrer une fonction d'export depuis mon appli Java.
Merci.
Rien ne sert de courir, en plus tu risques de tomber.
Re: Structure des fichiers binaires
Bonjour Baptiste,
Pour le VG5000, j'ai fait une petite doc sur mes expérimentations.
http://tj.gpa.free.fr/temp/Structure_fichier_K7.txt
Ca devrait t'aider. Sinon, notre bible vivante du VG5000, Daniel, devrait pouvoir t'éclairer .
Markerror
Pour le VG5000, j'ai fait une petite doc sur mes expérimentations.
http://tj.gpa.free.fr/temp/Structure_fichier_K7.txt
Ca devrait t'aider. Sinon, notre bible vivante du VG5000, Daniel, devrait pouvoir t'éclairer .
Markerror
Re: Structure des fichiers binaires
Pour Thomson, il n'y a rien dans la doc officielle.
Il y a peut-être des explications données par prehisto ou pulkomandy dans le forum logicielsmoto, il faudrait chercher.
De mon côté j'ai écrit quelques lignes dans l'ancien forum dcmoto : http://dcmoto.free.fr/forum/messages/591147_0.html
Pour le VG5000 je n'ai rien trouvé, mais s'il y a quelque chose Carl nous le dira, je lui fais confiance
Il y a peut-être des explications données par prehisto ou pulkomandy dans le forum logicielsmoto, il faudrait chercher.
De mon côté j'ai écrit quelques lignes dans l'ancien forum dcmoto : http://dcmoto.free.fr/forum/messages/591147_0.html
Pour le VG5000 je n'ai rien trouvé, mais s'il y a quelque chose Carl nous le dira, je lui fais confiance
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 2271
- Inscription : 06 avr. 2009 12:07
Re: Structure des fichiers binaires
Si, enfin plus exactement dans un livre : le manuel technique du Nanoreseau de Gilbert Cornillet, dans les annexes, p. 231, disponible ici : http://www.nanoreseau.net/lib/exe/fetch ... _chap5.pdf
Il est interessant de noter qu'avec le format binaire Thomson, il est possible d'ecrire partout dans la memoire et donc directement dans les I/Os pendant le chargement (ex d'utilisation: changer la couleur du bord d'ecran a chaque bloc de data ou patcher le BASIC pour faire un autorun a la fin du chargement).
Il est interessant de noter qu'avec le format binaire Thomson, il est possible d'ecrire partout dans la memoire et donc directement dans les I/Os pendant le chargement (ex d'utilisation: changer la couleur du bord d'ecran a chaque bloc de data ou patcher le BASIC pour faire un autorun a la fin du chargement).
- Carl
- Modérateur
- Messages : 13232
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Structure des fichiers binaires
je viens de regarder dans mes docs mais rien de rien sur la structure...
mais les infos d'Hervé devrait te permettre de générer des fichiers bin...
Dominique, aurais tu des infos sur le sujet ?
j'ai parcouru les 55 pages de la doc Philips VG5000 Departement Formation Technique mais rien sur la structure d'un fichier bin.
Carl
mais les infos d'Hervé devrait te permettre de générer des fichiers bin...
Dominique, aurais tu des infos sur le sujet ?
j'ai parcouru les 55 pages de la doc Philips VG5000 Departement Formation Technique mais rien sur la structure d'un fichier bin.
Carl
Re: Structure des fichiers binaires
Je viens de relire ma petite doc sur les headers de fichiers VG5000, il y a quelques améliorations à apporter (des exemples !).
Je vais retaper ça ce soir...
Je vais retaper ça ce soir...
-
- Messages : 7909
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Structure des fichiers binaires
Les binaires thomson sont structurés par blocs logiques qui se suivent les uns les autres. Attention à ne pas confondre les blocs logiques avec les blocs physiques sur K7. Les blocs logiques sont indépendant du support physique sur lequel les données résident. Ils sont lus après que les blocs physiques (K7 ou D7) aient étés décodés et convertis en octets.
Un bloc commence avec un octet qui est son type suivi de deux octets qui sont sa longueur suivi éventuellement de deux octets d'adresse, et enfin des données.La longeur <len> = <len-hi>*256 + <len-lo>. Un bloc fait donc entre 0 et 65535 octets et peut débuter à n'importe quelle adresse mémoire <adr> = <adr-hi>*256 + <adr-lo> (i.e. MSB-first). Les différents types de blocs que je connais sont:
Comme l'a dit fool, dans un binaire il est possible d'avoir des blocs qui ne font qu'un seul octet démarrant dans la zone d'I/O, et qui permettent donc de faire des trucs "sympa" (commutation fond/forme de l'écran, changement du tour ou du mode graphique, voire programmation de la palette de couleur). La difficulté est que les blocs I/O sont très différents entre les machines, même d'une même game (TO7 vs TO9 vs TO8), ce qui fait que le programme ainsi écrit ne marchera que sur un type exclusif de machine.
On peut les décoder avec le programme PERL suivant:
Un bloc commence avec un octet qui est son type suivi de deux octets qui sont sa longueur suivi éventuellement de deux octets d'adresse, et enfin des données.
Code : Tout sélectionner
<type> <len-hi> <len-lo> [<adr-hi> <adr-lo>] [<data> <data> ...]
<type> <len-hi> <len-lo> [<adr-hi> <adr-lo>] [<data> <data> ...]
...
- 255 : bloc de fin, auquel cas l'adresse est l'adresse d’exécution du binaire (0 si pas d'adresse)
- 0 : bloc de données. L'adresse est l'adresse de début de chargement du bloc
Comme l'a dit fool, dans un binaire il est possible d'avoir des blocs qui ne font qu'un seul octet démarrant dans la zone d'I/O, et qui permettent donc de faire des trucs "sympa" (commutation fond/forme de l'écran, changement du tour ou du mode graphique, voire programmation de la palette de couleur). La difficulté est que les blocs I/O sont très différents entre les machines, même d'une même game (TO7 vs TO9 vs TO8), ce qui fait que le programme ainsi écrit ne marchera que sur un type exclusif de machine.
On peut les décoder avec le programme PERL suivant:
Code : Tout sélectionner
#!/bin/perl
#
# decode un fichier binaire thomson
#
# Samuel DEVULDER, Novembre 2012.
#
for(my $c=&getb; $c>=0; $c=&getb) {
my($len) = &getw; last if $len<0;
if($c==255) {
printf "TYPE: FIN\nEXEC: 0x%04x\n\n", &getw;
} elsif($c==0) {
print "TYPE: DATA\nSIZE: $len\n";
my($adr) = &getw;
my($l) = "";
for(my $i=0; $i<$len; ++$i, ++$adr) {
printf "%04x:", $adr if ($i&15)==0;
my($b) = &getb; last if $b<0;
printf " %02x", $b;
$l .= $b>=32 && $b<=126 ? chr($b) : ".";
if(($i&15) == 15) {print " $l\n"; $l = "";}
}
print " $l", " " x (15-($len&15)), "\n" if $len & 15;
print "\n";
} else {
print "TYPE: $c\nSIZE: $len\n";
for(my $i=0; $i<$len; ++$i) {
my($b) = &getb; last if $b<0;
printf " %02x", $b;
print "\n" if ($i&15) == 15;
}
print "\n" if $len & 15;
}
}
# lit un word
sub getw {
my($b1) = &getb; return $b1 if $w<0;
my($b2) = &getb; return $b2 if $w<0;
return $b1*256 + $b2;
}
# lit un octet
sub getb {
$glb_line = <> unless length($glb_line)>0;
return defined $glb_line?ord(substr($glb_line, 0,1, "")):-1;
}
Dernière modification par __sam__ le 10 juil. 2013 11:52, modifié 2 fois.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 2271
- Inscription : 06 avr. 2009 12:07
Re: Structure des fichiers binaires
Les deux types de blocs mentionnés par Sam (0 et 255) sont ceux dans le format binaire simple, celui utilisé partout excepté dans le Nanoréseau. Le format étendu rajoute deux nouveaux types (1 et 2) permettant par exemple de charger l'extension 64K sur le MO5. On peut généralement ignorer cette extension toutefois.
Grâce à ce format, on peut faire un élégant chargeur automatique avec la simple commande LOADM sans paramètre en BASIC, le fichier binaire allant directement patcher l'interpréteur BASIC pour sauter au programme chargé. C'est ce qui a été fait par exemple dans le jeu Mandragore.
Grâce à ce format, on peut faire un élégant chargeur automatique avec la simple commande LOADM sans paramètre en BASIC, le fichier binaire allant directement patcher l'interpréteur BASIC pour sauter au programme chargé. C'est ce qui a été fait par exemple dans le jeu Mandragore.
Dernière modification par Fool-DupleX le 10 juil. 2013 09:26, modifié 1 fois.
-
- Messages : 7909
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: Structure des fichiers binaires
Merci pour la précision fool. Pas étonnant que sur TO je n'ai jamais rencontré de blocs de type 1 ou 2 en effet.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
Re: Structure des fichiers binaires
Je vais justement voir Jean François à 14 H, je lui demande.Carl a écrit :Dominique, aurais tu des infos sur le sujet ?
j'ai parcouru les 55 pages de la doc Philips VG5000 Departement Formation Technique mais rien sur la structure d'un fichier bin.
Re: Structure des fichiers binaires
Bonjour,
Merci pour vos réponses, je pense que je vais pouvoir m'en sortir.
Merci pour vos réponses, je pense que je vais pouvoir m'en sortir.
Rien ne sert de courir, en plus tu risques de tomber.
Re: Structure des fichiers binaires
Petite mise à jour de la doc sur les headers de fichiers VG5000.
http://tj.gpa.free.fr/temp/Structure%20fichier%20K7.txt [Edit] Lien corrigé
Ya pas mal de choses en plus dedans (surtout des exemples). On s'aperçoit au final que certaines
commandes Basic du VG5000 sont difficilement exploitables à l'usage (et comme par hasard, je n'ai
trouvé aucun exemple dans les bouquins traitant du VG5000.... ).
Je pensais que seul l'Exelvision avait des routines de sauvegarde de données merdiques, mais le VG5000
n'est pas mal non plus dans ce domaine .
Il y a encore des petites choses à valider (checksum dans le header par exemple, j'ai la
flemme ce soir de prendre ma calculette), on verra ça plus tard...
Markerror
http://tj.gpa.free.fr/temp/Structure%20fichier%20K7.txt [Edit] Lien corrigé
Ya pas mal de choses en plus dedans (surtout des exemples). On s'aperçoit au final que certaines
commandes Basic du VG5000 sont difficilement exploitables à l'usage (et comme par hasard, je n'ai
trouvé aucun exemple dans les bouquins traitant du VG5000.... ).
Je pensais que seul l'Exelvision avait des routines de sauvegarde de données merdiques, mais le VG5000
n'est pas mal non plus dans ce domaine .
Il y a encore des petites choses à valider (checksum dans le header par exemple, j'ai la
flemme ce soir de prendre ma calculette), on verra ça plus tard...
Markerror
Dernière modification par Markerror le 11 juil. 2013 22:02, modifié 2 fois.
- Carl
- Modérateur
- Messages : 13232
- Inscription : 08 avr. 2007 13:21
- Localisation : http://www.doledujura.fr
- Contact :
Re: Structure des fichiers binaires
Hervé, n'y a t-il pas un soucis avec ton lien ?
Carl
Carl
- fneck
- Site Admin
- Messages : 17389
- Inscription : 01 avr. 2007 12:03
- Localisation : Drôme Provençale (26)
- Contact :
Re: Structure des fichiers binaires
Le bon lien est ici : http://tj.gpa.free.fr/temp/Structure%20fichier%20K7.txt
Fabien https://www.system-cfg.com
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Les bonnes pratiques de l'utilisateur du forum viewtopic.php?f=14&t=3
Re: Structure des fichiers binaires
Aie, désolé, j'ai modifié le nom du fichier sans m'en rendre compte .