CPC Rulez
https://cpcrulez.fr/forum/

Codage sous interruption - IM1 RST 38H
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6374
Page 1 sur 1

Auteur :  glaby [ 31 Juil 2020, 18:14 ]
Sujet du message :  Codage sous interruption - IM1 RST 38H

Bonjour ,

Lors d'une interruption en mode IM1 le code est executé en 38H et lors de démo on vient modifier les 2 lignes en EI et RET.

Ma question est de savoir ou es stocké l'adresse de retour et comment cela fonctionne.
Comme il est possible de faire plusieurs appel par un CALL par exemple , je pense que les adresses de retour sont empilés en ram mais ou ???

L'idée étant de créer un ou des programmes "multithread" en utilisant les interruptions comme on peut le voir dans des démos. Meme si cela est lent pour moi ce n'est pas un problème, la gestion des thread devant être transparent par le thread (à part son initialisation). En empilant les valeurs des registres et en les restaurant avant appel du thread cela devrait pouvoir fonctionner.


En 38H je compte gérer une table qui aura les adresses de retour pour chaque thread avec possibilité d'affinité selon un codage dans le thread.


Merci pour votre retour !

Auteur :  demoniakparadox [ 31 Juil 2020, 20:25 ]
Sujet du message :  Re: Codage sous interruption - IM1 RST 38H

L'adresse de retour lors d'une interruption est stockée sur la pile, comme un call.
Si par exemple SP vaut #C000 juste avant une interruption, lors de cette interruption juste avant le saut en #38, SP sera décrémenté de 2 (taille d'une adresse 16 bits) et on stockera à l'adresse #BFFE (#C000 - 2) l'adresse de retour.

De ce fait, le RET récupère l'adresse stockée dans la PILE, et incrémente SP de 2.

Auteur :  glaby [ 31 Juil 2020, 21:22 ]
Sujet du message :  Re: Codage sous interruption - IM1 RST 38H

Merci pour ton retour.

Par exemple si je fais ça :

org #9000
LD a,100
call moins
ret

moins:
dec A
Push AF
ret

Comme je pousse AF sur la pile alors le RET ne pourra pas revenir après le CALL , c'est la valeur de AF qui va servir d'adresse retour ? C'est bien une pile de type LIFO ?

Auteur :  demoniakparadox [ 01 Août 2020, 05:22 ]
Sujet du message :  Re: Codage sous interruption - IM1 RST 38H

Oui c'est bien ça

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/