THOMSON MO6 BASIC->ASM
Modérateurs : Papy.G, fneck, Carl
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
THOMSON MO6 BASIC->ASM
bonsoir tout le monde, quelqu'un peut-il me montrer comment acquérir les paramètres de l'instruction exec à partir d'une routine d'assembleur?
Re: THOMSON MO6 BASIC->ASM
La question est difficile à comprendre sans plus de précisions sur le contexte et sur l'objectif recherché.
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
Je fais un exemple: exec & h5a00, x%, y% Je veux transmettre le contenu des variables à la routine asm qui commence à & h5a00. Merci.
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
jsr $21c0
beq exit
jsr $eff8
ldx ,x
stx $2a5f
jsr $21c0
beq exit
jsr $eff8
ldx ,x
stx $2a66
exit
rts
avec cette routine, je peux récupérer les paramètres de la ligne de commande de base, mais pas à l'intérieur d'un programme, où à la place cela me donne une erreur de syntaxe.
beq exit
jsr $eff8
ldx ,x
stx $2a5f
jsr $21c0
beq exit
jsr $eff8
ldx ,x
stx $2a66
exit
rts
avec cette routine, je peux récupérer les paramètres de la ligne de commande de base, mais pas à l'intérieur d'un programme, où à la place cela me donne une erreur de syntaxe.
Re: THOMSON MO6 BASIC->ASM
Quand un programme BASIC appelle une routine en langage machine, cette routine peut revenir au BASIC par RTS, mais il y a une condition très importante : il faut que les registres utilisés par le BASIC ne soient pas modifiés. Sinon le BASIC plante.
De mémoire je ne sais pas dire quels registres doivent être préservés, mais dans le doute il suffit de les sauver tous :
De mémoire je ne sais pas dire quels registres doivent être préservés, mais dans le doute il suffit de les sauver tous :
Code : Tout sélectionner
PSHS U,Y,X,DP,B,A,CC ;empilage des registres
jsr $21c0
beq exit
jsr $eff8
ldx ,x
stx $2a5f
jsr $21c0
beq exit
jsr $eff8
ldx ,x
stx $2a66
exit
PULS CC,A,B,DP,X,Y,U,PC ;retour
Daniel
L'obstacle augmente mon ardeur.
L'obstacle augmente mon ardeur.
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
merci Daniel, mais malheureusement ça ne semble pas être le problème !!!! J'attache une capture d'écran
- Pièces jointes
-
- Screenshot_20200202-093206.png (72.28 Kio) Consulté 3472 fois
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
peut-il s'agir d'un discours de banque de mémoire?
-
- Messages : 7971
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: THOMSON MO6 BASIC->ASM
Sur MO6 je sais pas, mais j'ai souvenir quand dans la manuel du basic fournit avec mon TO9 il était indiqué les points d'entrée en ROM (basique) pour effectivement récupérer les paramètres de EXEC. D'expérience c'était bien trop compliqué pour mon usage car grosso-modo tout dépend tu type des paramètres (entiers, flottants, string et peut être tableaux) et passe par les registres EXTRAMON en page 2. EXTRAMON qu'il faut appeler quand le paramètre n'est pas du bon type (pour convertir les float -- type par défaut du basic-- en entier 16bits par exemple tout en faisant gaffe aux débordements etc). Bref, je suis vite passé par la technique de POKEr les valeurs que je veux directement dans les zones donnée de mon programme asm. C'est plus simple et ca va beaucoup plus vite en plus.dinoprodest a écrit : ↑02 févr. 2020 07:39 Je fais un exemple: exec & h5a00, x%, y% Je veux transmettre le contenu des variables à la routine asm qui commence à & h5a00. Merci.
Le SYNTAX-ERROR me fait remarquer un truc: tu ne réserve pas la zone mémoire de ton programme binaire nulle part (voir instruction CLEAR). Or il est fort possible que l’exécution du programme avec les numéros de ligne vienne allègrement écrire dans ton programme assembleur qui ne sera plus ce qu'il devrait être. C'est un coup de chance que tu ne te retrouve avec un simple SYNTAX-ERROR car tu pourrais tout aussi bien partir dans un plantage complet de la machine.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
pourquoi ça marche en mode direct?
-
- Messages : 7971
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: THOMSON MO6 BASIC->ASM
L’exécution en mode direct n'utilise pas les mêmes ressources qu'en mode programme en mémoire. Donc ca marche un peu par accident. L'emplacement de tout programme binaire se doit d'être réservé par la commande CLEAR, sinon le résultat est indéterminé. C'est ce que tu observes: ca marche en ligne de commande et pas dans le programme basic, mais l'inverse pourrait tout aussi bien se produire.
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
le problème semble systématique. Cependant, je passe également les paramètres avec poke ou peut-être en utilisant le pointeur vers une variable, mais j'aime avoir toutes les possibilités disponibles.
-
- Messages : 7971
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: THOMSON MO6 BASIC->ASM
As tu mis un clear avant le loadm dans ton programme basic ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
même chose
- Pièces jointes
-
- Screenshot_20200202-195743.png (83.95 Kio) Consulté 3419 fois
-
- Messages : 7971
- Inscription : 18 sept. 2010 12:08
- Localisation : Brest et parfois les Flandres
Re: THOMSON MO6 BASIC->ASM
Tu fais le clear après le LOADM... A tous les coups le LOADM est trashé! Le bon ordre dans le programme basic, c'est: CLEAR au tout début, puis loadm et là ca roule le loadm est dans une zone protégée. Tout ce que tu charges avant le clear n'est pas garanti. Ensuite, il faudrait voir les points d'entrées pour lire les arguments que tu utilises dans ton programme ASM car ca me semble bien trop simple par rapport à ce dont j'ai souvenir sur TO9. Ils sortent d'où ces $21C0 et $EFF8 ?
Samuel.
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
A500 Vampire V2+ ^8^, A1200 (030@50mhz/fpu/64mb/cf 8go),
A500 GVP530(MMU/FPU) h.s., R-Pi, TO9, TO8D, TO8.Démos
-
- Messages : 312
- Inscription : 01 févr. 2020 20:31
- Localisation : Rome - Italy
Re: THOMSON MO6 BASIC->ASM
jsr $eff8 Je l'ai vu dans le manuel ci-joint.
jsr $21c0 J'ai vu dans un code du programme SUONA3VOCI dans lequel, cependant, il crée des instructions de base.
jsr $21c0 J'ai vu dans un code du programme SUONA3VOCI dans lequel, cependant, il crée des instructions de base.
- Pièces jointes
-
- Screenshot_20200202-210058.png (620.09 Kio) Consulté 3405 fois