Charger un programme machine via le basic
Si vous développez en code machine, il y a beaucoup de chance pour que vous utilisiez quelques instructions Basic pour vous simplifiez la vie. Le problème est alors de faire cohabiter le Basic et ce code machine:
Il faut pour cela se définir une adresse mémoire où stocker le code machine sans risquer d'effacer des lignes de codes Basic.
Vous pourrez par exemple stocker le code à l'adresse 1536. Cette adresse est effectivement réservée au code machine utilisateur (pour vous en résumé). Mais attention, il n'y a pas beaucoup de place: la plage utilisable est comprise entre 1536 ($600) et 1791 ($6FF).
Ou encore se réserver de la place: On peut utiliser la valeur contenue dans l'adresse 106. Cette adresse indique le nombre maximum de page disponible (donc PEEK(106) * 256 = taille totale de la mémoire vive adresse 106 encore appelé RAMTOP et donc situé en page zéro). Si vous n'occupez pas toute la mémoire avec du code basic, vous pouvez vous définir une adresse PMBASE = (PEEK(106) - nb. Pages utilisées pour votre code machine.
Ou encore via une variable alphanumérique et en utilisant ensuite l'adresse de cette variable pour stocker le code...
Il faut ensuite charger le code machine en mémoire
Il y a deux solutions:
La première solution consiste à avoir un code basic qui va ensuite charger un fichier contenant le code binaire en mémoire. Cette solution est la solution à utiliser si vous utilisez un assembleur sous session dos (cf. assembleur 6502).
Exemple de code Basic sur l'émulateur Atari800Win Plus:
10 OPEN #1,4,0,"H0:nomfichier"
20 FOR I=1 TO taille du fichier:GET #1,A:POKE adresse+I,A:NEXT I
30 CLOSE #1
Pour lire sur une cassette:
10 OPEN #1,4,0,"C:"
La deuxième solution consistera à saisir le code sous forme de DATA.
Ce n'est pas la plus économique des solutions en terme de mémoire, puisque le code sera charger sous forme de DATA pour que le Basic l'interprète et le stocke à son tour dans une autre zone mémoire pour pouvoir l'exécuter...
Vous pourrez éventuellement saisir le code en décimal ou en héxadécimal. Dans le dernier cas, il faut faire un programme de conversion hexadécimal vers le décimal avant de poker les valeurs dans une adresse.
Vous imaginez bien que l'opération sera en plus très longue...
Enfin, il faut lancer le code machine grâce à la commande USR.