forum
LOAD d'un programme binaire: ou se met-il ?
Citation de fabricius le 19 mars 2020, 16 h 53 minHello,
je regarde les sources d'un jeu désassemblé, et dans le loader basic je vois que les trois LOAD (le programme principal, les sprites et les niveaux) sont exécutés juste avec le nom du fichier (par ex LOAD "PROG.bin"). Dans ce cas, où le CPC les met-il ?
En début du loader basic il y a juste une instuction MEMORY &3000. Est ce que ça va aller apres ? Et si oui, comment le CPC fait pour savoir ou il en est quand il va charger les 2 binaires suivants (les sprites puis les niveaux)?
Merci!
Hello,
je regarde les sources d'un jeu désassemblé, et dans le loader basic je vois que les trois LOAD (le programme principal, les sprites et les niveaux) sont exécutés juste avec le nom du fichier (par ex LOAD "PROG.bin"). Dans ce cas, où le CPC les met-il ?
En début du loader basic il y a juste une instuction MEMORY &3000. Est ce que ça va aller apres ? Et si oui, comment le CPC fait pour savoir ou il en est quand il va charger les 2 binaires suivants (les sprites puis les niveaux)?
Merci!
Citation de demoniak le 19 mars 2020, 20 h 18 minLes fichiers sont sauvegardés avec un "header", qui contient l'adresse de début et la longueur du fichier. (et aussi éventuellement le point d'entrée).
Par exemble si tu fais SAVE"Fichier",b,&C000,&4000 le fichier sera sauvegardé à partir de l'adresse &C000, et donc un simple LOAD"Fichier" lira le fichier à l'adresse où il a été sauvegardé, c'est à dire &C000
Les fichiers sont sauvegardés avec un "header", qui contient l'adresse de début et la longueur du fichier. (et aussi éventuellement le point d'entrée).
Par exemble si tu fais SAVE"Fichier",b,&C000,&4000 le fichier sera sauvegardé à partir de l'adresse &C000, et donc un simple LOAD"Fichier" lira le fichier à l'adresse où il a été sauvegardé, c'est à dire &C000
Citation de fabricius le 19 mars 2020, 23 h 50 minah super, merci Demoniak, je ne savais pas du tout pour les headers. Je vais les étudier pour voir. Et j'en profite, merci aussi pour les cours d'assembleur sur feu amstradeus, je les lisais sur le site puis sur archive.org, mais j'ai vu hier qu'ils sont aussi sur cpcrulez. Ils sont très bien, très pédagogiques!
ah super, merci Demoniak, je ne savais pas du tout pour les headers. Je vais les étudier pour voir. Et j'en profite, merci aussi pour les cours d'assembleur sur feu amstradeus, je les lisais sur le site puis sur archive.org, mais j'ai vu hier qu'ils sont aussi sur cpcrulez. Ils sont très bien, très pédagogiques!
Citation de RetroPoke le 20 mars 2020, 6 h 27 minHello, pour compléter ta demande, voici quelques explications supplémentaires.
La commande [SAVE] du basic Amstrad CPC peut prendre plusieurs paramètres et le dernier défini son point d'entrée.
EXEMPLE:
SAVE "fichier.bin", B, &A000, &100, &A020
Sauvegardera le fichier en mode Binaire commençant à l'adresse &A000 d'une longueur de &100 Octets dont le point d'entrée sera &A020
En tapant RUN"fichier.bin", le programme chargera automatiquement le ficher à l'adresse &A000 et le lancera depuis l'adresse &A010Un éditeur de secteur te sera utile pour connaitre les adresses du lancement automatique d'un programme.
Hello, pour compléter ta demande, voici quelques explications supplémentaires.
La commande [SAVE] du basic Amstrad CPC peut prendre plusieurs paramètres et le dernier défini son point d'entrée.
EXEMPLE:
SAVE "fichier.bin", B, &A000, &100, &A020
Sauvegardera le fichier en mode Binaire commençant à l'adresse &A000 d'une longueur de &100 Octets dont le point d'entrée sera &A020
En tapant RUN"fichier.bin", le programme chargera automatiquement le ficher à l'adresse &A000 et le lancera depuis l'adresse &A010
Un éditeur de secteur te sera utile pour connaitre les adresses du lancement automatique d'un programme.
Citation de fabricius le 20 mars 2020, 17 h 01 minok, merci. Je garde tout ça noté quelque part. J'ai essayé avec manageDsk et CPCDiskXP et j'ai retrouvé les mêmes valeurs de point d'entrée sur le jeu que j'étudie. Je ne suis pas du tout familier avec l'organisation d'une disquette du CPC, mais ça m'oblige à m'y plonger, c'est pas plus mal. Je pensais que pour trouver le point d'entrée il fallait regarder un certain offset du fichier. Mais c'est plus simple avec manageDsk ou CPCDiskXP (les deux sont complémentaires, je dirais).
Du coup pour travailler mon étude je dispose du source commenté, du DSK (Karl's Treasure Hunt) et de pas mal d'outils (les deux cités et un emulateur avec des facilités de debug). Je devrais bien avancer.
ok, merci. Je garde tout ça noté quelque part. J'ai essayé avec manageDsk et CPCDiskXP et j'ai retrouvé les mêmes valeurs de point d'entrée sur le jeu que j'étudie. Je ne suis pas du tout familier avec l'organisation d'une disquette du CPC, mais ça m'oblige à m'y plonger, c'est pas plus mal. Je pensais que pour trouver le point d'entrée il fallait regarder un certain offset du fichier. Mais c'est plus simple avec manageDsk ou CPCDiskXP (les deux sont complémentaires, je dirais).
Du coup pour travailler mon étude je dispose du source commenté, du DSK (Karl's Treasure Hunt) et de pas mal d'outils (les deux cités et un emulateur avec des facilités de debug). Je devrais bien avancer.