Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 26 Mai 2022, 14:24

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Codage sous interruption - IM1 RST 38H



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 4 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
glaby
 Sujet du message : Codage sous interruption - IM1 RST 38H
Message Publié : 31 Juil 2020, 18:14 
Hors-ligne

Inscription : 30 Avr 2020, 15:32
Message(s) : 9
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 !


Haut
 Profil  
 
demoniakparadox
 Sujet du message : Re: Codage sous interruption - IM1 RST 38H
Message Publié : 31 Juil 2020, 20:25 
Hors-ligne
Rulez
Rulez

Inscription : 26 Août 2013, 11:55
Message(s) : 53
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.


Haut
 Profil  
 
glaby
 Sujet du message : Re: Codage sous interruption - IM1 RST 38H
Message Publié : 31 Juil 2020, 21:22 
Hors-ligne

Inscription : 30 Avr 2020, 15:32
Message(s) : 9
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 ?


Haut
 Profil  
 
demoniakparadox
 Sujet du message : Re: Codage sous interruption - IM1 RST 38H
Message Publié : 01 Août 2020, 05:22 
Hors-ligne
Rulez
Rulez

Inscription : 26 Août 2013, 11:55
Message(s) : 53
Oui c'est bien ça


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 4 message(s) ] 

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 2 invité(s)


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.