adnz a écrit:
1 - Y'a moyen de lancer en faisant un loadm"pro.bas",,R ?
faut le coder dans le code assembleur ça ?
LOADM un programme BASIC, non ca ne marchera pas. En revanche tu peux parfaitement te faire un lanceur en basic qui va faire le CLEAR approprié, effacer l'écran et le curseur, passer en mode graphique BM16, puis LOADM le programme binaire et le lancer. Si tu sauve ce lanceur basic sous le nom "AUTO.BAT", il sera lancé automatiquement par appui sur le "B" du menu.
Citation:
2 - j'ai pas besoin de revenir au basic donc la ligne
PSHS A,B,X,Y,U,DP,CC <----- je le vire ?
Oui si tu veux, a condition de ne jamais sortir du programme autrement que par un "JMP [$FFFE]" (reset).
Citation:
3 - mon prog commence en $8000 mais dedans je fais ça
Code:
sprx EQU $7000 * position sprite x
spry EQU $7001 * position sprite y
sprw EQU $7002 * sprite width
sprh EQU $7003 * sprite height
sprnum EQU $7004 * num sprite
tpm_swap_2000 EQU $7005 * current value = $2000 ou ECRAN
Ce n'est pas comme cela qu'il faut réserver des variables. Typiquement en les mettant "en dessous" de ton programme elles risquent d'être écrasées par la pile. En effet, etant donné que tu n'initialise probablement pas la pile dans ton programme, tu hérites de celle de l'appelant (le basic). Or si tu réserves $8000-$DFFF, le basic va positionner la pile en dessous, donc potentiellement à l'endroit que tu utilises pour tes variables, et quand dans ton programme tu va appeler une routine, ou qu'une interruption matérielle se produit et que le moniteur appelle les routines de services, des valeurs sont mises sur la pile, donc potentiellement à la place des valeurs de tes variables. Pour éviter ce soucis, il te faut remonter ces variables au dessus de $8000, cad dans la zone que tu as réservée pour ton programme.
Ok quelle adresse me dira tu? N'en choisis aucune de particulière, mais laisse l'assembleur faire le travail en utilisant les commades RMB n'importe où dans ton code (mais dans un endroit facilement accessible pour les modifications, par exemple vers la fin de ton programme. Il n'y aura pas de pb, tu peux référencer les labels avant leur déclaration comme tu le fais avec les étiquettes des routines)
Code:
sprx RMB 1 * position sprite x
spry RMB 1 * position sprite y
sprw RMB 1 * sprite width
sprh RMB 1 * sprite height
sprnum RMB 1 * num sprite
tpm_swap_2000 RMB 1 * current value = $2000 ou ECRAN