forum

Navigation du forum
Vous devez vous identifier pour créer des messages et des sujets.

LOAD d'un programme binaire: ou se met-il ?

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!

 

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

 

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! 

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.

 

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.