Que ce soit avec TASM ou AS, c'est pas important. Meme si TASM n'est dispo que 30 jours, ça ira largement
Si tu préfères utiliser TASM, pas de souci, de toute façon le code final devrait énormément se ressembler
Le programme pourrait se résumer ainsi :
- Inits nécessaires, et copie de sa propre suite dans la RAM, débranchement vers celle-ci (c'est peut-être là que les différences entre assembleurs pourraient se faire sentir, ça dépend aussi des modes d'adressage, bref, je vous laisse regarder
).
- La suite se déroule donc en RAM. Le prog pourrait par exemple déclencher la bascule du mode "Microprocessor" au mode "Full Expansion" en allant lire une 1ere adresse mémoire paticulière.
- Le prog ensuite lit en boucle une 2eme adresse mémoire particulière, et teste si la valeur stockée à cette adresse vaut disons $55 (c'est la carte FPGA qui positionnera cette valeur à cette adresse quand la bascule sera faite). S'il y a un peu "d'instabilité" lors du changement de mode, cette astuce devrait être suffisante pour s'en sortir, du moins je l'espère.
- Ensuite le prog fait une copie mémoire de la zone de $F000 à $FFFF vers la zone de $2000 à $2FFF.
- (Optionnel) Il signale qu'il a terminé en lisant une 3eme adresse particulière et part en boucle d'attente infinie.
Je comprends ta remarque sur le changement d'état, mais comment veux-tu le tester ?
Ici avec cette routine on réalise à la fois ce test, et le dump si on a de la chance
Hormis cette inconnue, je vois une autre petite difficulté : soit on considère que le registre IOCNT0 reste inchangé durant le changement de mode, et tout va bien, on prépare la bascule en mode "Full Expansion" et le prog expliqué plus haut marche direct. Soit on prévoit qu'il soit réinitialisé pendant le changement de mode, et qu'on peut se retrouver en mode "Single Chip". Auquel cas, soit on utilise des I/O pour savoir si la bascule a été réalisée par la carte FPGA, soit (solution que je préconiserai) on se passe de ce signal, et on code juste une boucle d'attente (et on fait l'init de IOCNT0 avant de passer à la suite, bien entendu).