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 30 Nov 2025, 02:20

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Question sur l'instruction IN

Modérateur: poulette73



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 12 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
Demoniak
 Sujet du message : Question sur l'instruction IN
Message Publié : 19 Fév 2011, 21:59 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Comme le titre l'indique, j'ai une question assez "pointue" sur l'instruction IN du Z80.

Dans les docs sur le Z80 que j'ai pu lire, il est indiqué que l'instruction IN r,(C) remet à zéro le flag N, et n'affecte pas le flag C.
Or, en testant avec WinApe, il semble que le flag N soit positionné à 1 et le flag C remis à zéro.

Comme j'ai pas de vrai cpc disponnible pour tester, qui peux me dire qui a raison ?

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 19 Fév 2011, 22:17 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
bon je test sur un vrai CPC .... ce petit code nous donne la valeur du registre flag apres un "in a,(c)"

Code :
xor a  ; AF
in a,(c)   ; ED 78
push af  ; F5
pop bc  ; C1
ld a,c   ; 79
call &BB5A  ; CD 5A BB
ret   ; C9


qui me donne la lettre "D" -> 68 -> &x1000100


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 19 Fév 2011, 22:39 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
hERMOL a écrit :
bon je test sur un vrai CPC .... ce petit code nous donne la valeur du registre flag apres un "in a,(c)"

Code :
xor a  ; AF
in a,(c)   ; ED 78
push af  ; F5
pop bc  ; C1
ld a,c   ; 79
call &BB5A  ; CD 5A BB
ret   ; C9


qui me donne la lettre "D" -> 68 -> &x1000100


Hum oui mais qu'est ce que tu as mis dans le registre B ?
ça dépend sur quel port on va lire (par exemple le port #F400 ou le port #F500)

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 19 Fév 2011, 22:44 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
ca une incidence sur le reg "A" pas sur le registre "F" ???

- tout les flags a 0 avant j'obtiens "D" -> 68 -> &x1000100
- tout les flags a 1 avant , j'obtiens -> 173 -> &x10101101

Code :
  SZ-H-VNC
&x01000100 avec avant &00
&x10101101 avec avant &FF


S=pas touche
Z=inversement d'état ?
H=0
V=1
N=0
C= pas touche


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 19 Fév 2011, 22:51 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
En Fait, les flags S, Z et P/V sont positionnés en fonction de la valeur du registre A.

Par exemple si tu lis le port #F400, ça te retourne zéro dans A, donc S=0, P=1 et Z=1

si tu lis un autre port (#FF00 par ex), ça retourne #FF dans A, donc S=1, P=1 et Z=0

Sinon d'après ton test, on voit que le flag C n'est pas affecté par l'instruction IN, et que le flag N est mis à zéro.
C'est ce que je voulais savoir ;-)

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
Fredouille
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 20 Fév 2011, 09:55 
Hors-ligne
Rulezz
Rulezz
Avatar de l’utilisateur

Inscription : 26 Nov 2008, 10:04
Message(s) : 174
Localisation : Saint Ouen l'Aumône
Quand j'ai un doute sur le positionnement des flags, je compile vite fait un petit programme sous Oshon Z80 simulator et je regarde comment il se comporte.


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 20 Fév 2011, 13:36 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
Fredouille a écrit :
Quand j'ai un doute sur le positionnement des flags, je compile vite fait un petit programme sous Oshon Z80 simulator et je regarde comment il se comporte.


Ok merci du conseil, je testerai.

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
Longshot
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 22 Fév 2011, 13:38 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 28 Août 2008, 23:41
Message(s) : 270
Le comportement de certains bits de F dans winape est très mal géré.
Je m'en étais rendu compte en essayant de faire tourner la protection de revolog sous winape.
(Elle ne peut actuellement pas être émulée correctement à cause de ce problème et un autre de mauvais calcul d'interruption du code (l'interruption tombe au mauvais endroit))

Ce problème n'apparait que très rarement car très peu de programmes se servent du contenu complet de F, à part pour des protections (comme celle de hercule:latis, qui utilise F comme une instruction Z80A).


Haut
 Profil  
 
Megachur
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 22 Fév 2011, 20:07 
Hors-ligne
VIP
VIP
Avatar de l’utilisateur

Inscription : 12 Juin 2008, 20:29
Message(s) : 1726
Espérons que PC-CPC sera bien mieux de ce côté là !!!


Allez Démoniak !!! Allez Démoniak !!! Allez Démoniak !!! ;-)


Haut
 Profil  
 
Demoniak
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 08 Mars 2011, 17:18 
Hors-ligne
VIP
VIP

Inscription : 15 Oct 2009, 18:07
Message(s) : 236
Localisation : Dunkerque
C'est bon, j'émule pour pratiquement toutes les instructions les bits 3 et 5 des Flags.

Je dis pratiquement, car il me reste à terminer l'instruction BIT n,(HL), qui utilise le registre MEMPTR pour déterminer la valeur de ces bits.
Sinon tous les autres cas sont fait.

_________________
http://demoniak-contrib.forumactif.com/


Haut
 Profil  
 
TotO
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 08 Mars 2011, 19:12 
Hors-ligne
VIP
VIP

Inscription : 13 Jan 2010, 14:25
Message(s) : 2282
Accurate ! :wink:

_________________
Cent Pour Cent


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Question sur l'instruction IN
Message Publié : 08 Mars 2011, 21:21 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 5103
Demoniak a écrit :
Je dis pratiquement, car il me reste à terminer l'instruction BIT n,(HL), qui utilise le registre MEMPTR pour déterminer la valeur de ces bits.

ah vi ce fameux MEMPTR, je voulais lancer un topic la dessus , apres la new (2006) sur RAWW.ORG

Citer :
As it is known, after the instruction BIT n,(HL) execution, bits 3 and 5 of the flag register become containing values that is not documented in the official documentation at all. Actually these bits are copied from the bits 11 and 13 of the internal register pair of Z80 CPU, which is used for 16-bit operations, and in most cases to handle addresses. This is usual practice for processors having 8-bits data bus working with 16-bits data.


Vous n’êtes pas autorisé(e) à consulter les fichiers insérés à ce message.


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

Index du forum » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 41 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 :  
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.