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 ?
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.
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.
Inscription : 28 Août 2008, 23:41 Message(s) : 257
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).
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.
Inscription : 20 Août 2007, 18:21 Message(s) : 4988
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.
Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 12 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