| CPC Rulez https://cpcrulez.fr/forum/ |
|
| comportement IM2/IM1 https://cpcrulez.fr/forum/viewtopic.php?f=4&t=3813 |
Page 1 sur 2 |
| Auteur : | fano [ 05 Août 2009, 12:05 ] |
| Sujet du message : | comportement IM2/IM1 |
Salut ! Je suis en train de patcher un jeu pour y ajouter des features +.Ca roulait sur du velour mais au moment d'ajouter le gestionnaire de son DMA, j'ai passé les interruptions en IM2 dans les formes en utilisant une table et en laissant la validation automatique des interruptions (bit 0 de IVR à 0) et j'ai constaté quelque chose de bizarre, qui n'arrive pas sous WinApe mais sur un vrai CPC+. En fait, les interruptions arrivent bien mais le CPC a tendance à en sauter, alors qu'elles marchent parfaitement en IM1 (que ce soit en int par défaut ou avec PRI).J'ai fait un raster pour essayer de visualiser le problème et j'ai constaté que, contrairement à IM1 où les int peuvent être exécutées un peu après, en IM2 l'interruption a toujours lieu au même moment ou n'arrive pas du tout. J'ai essayé de reproduire le problème avec mon propre code, en vain.J'ai essayé aussi de chercher dans la doc du Z80 mais je n'ai rien trouvé qui puisse me mettre sur la piste. Est ce que quelqu'un à déjà eu ce genre de problème ou sait si certaines instructions ou séries d'instructions (autres que les classiques DI/EI/IM/RETI/RETN) sont susceptibles d'influer sur le comportement des interruptions et de les perturber à ce point (en modifiant la longueur du signal par ex.) , ou encore l'accès à certains ports (à ma connaissance le code ciblé n'accède qu'au PPI pour le clavier) Enfin si quelqu'un a des infos pouvant me permettre de comprendre cette différence de comportement entre IM1 et IM2, merci d'avance. |
|
| Auteur : | Longshot [ 05 Août 2009, 13:11 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
Ton prb est sans doute un lié à ce que offset a découvert assez tôt (début années 90) sur le plus, à savoir qu'en mode vectorisé, le plus se plante et confond interruption raster et dma0. Je t'invite à voir ça ici : http://quasar.cpcscene.com/doku.php?id=dossier:plus Vu qu'on ne sait pas exactement dans quel contexte il y a confusion, normal que l'émulateur ne puisse pas encore reproduire ce bug. |
|
| Auteur : | fano [ 05 Août 2009, 17:56 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
Merci Longshot ! Super ! c'était bien ça, c'est pas génant dans le sens où j'ai besoin que d'un canal DMA. Par contre, sacrément buggué l'ASIC En tous cas , je m'en vais continuer à essayer d'implémenter ça et encore merci pour ta réponse et pour le lien vers l'article ! |
|
| Auteur : | MacDeath26 [ 05 Août 2009, 19:55 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
C'est le problème de l'Asic... Si y'avais pas un mode "émulation de CPCold" bin ça aurait bien simplifié, lol... Après bin il me semble que c'est quand même supérieur en bien des points au old... Faut juste pas trop lui en demander quoi. |
|
| Auteur : | Longshot [ 05 Août 2009, 21:57 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
C'est pas une question qu'il soit ou non supérieur au old, ni même une question de compatibilité. La c'est quand même un bug assez grave. Appeler la routine de dma0 lorsqu'on a une interruption raster ou l'inverse, ça fait vraiment très désordre. |
|
| Auteur : | fano [ 06 Août 2009, 18:05 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
Effectivement, on peut le qualifier de sévère , la page de quazar net est assez édifiante d'ailleurs à ce propos... |
|
| Auteur : | hERMOL [ 06 Août 2009, 19:08 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
C'est quoi la technique pour contouner ce bug alors ? n'utiliser que le DMA0 ??? ou alors ne pas utiliser le mode IM2 ??? |
|
| Auteur : | fano [ 06 Août 2009, 19:28 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
A ce que j'ai compris c'est ne pas utiliser la validation automatique (si elle est pas buggué elle aussi ou effectivement ne pas utiliser DMA0 et mettre le meme vecteur raster et DMA0, ou encore utiliser IM1 mais de toute façon, on en revient à ne pas utiliser la validation automatique et devoir detecter le type d'interruption
|
|
| Auteur : | hERMOL [ 06 Août 2009, 20:21 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
Quesque tu appelle "la validation automatique" ?? En début de la proc tu lis le contenu du registre DCSR (&6C0F) pour connaitre l'origine du jump au code de ll'int ?? |
|
| Auteur : | fano [ 06 Août 2009, 21:01 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
L'acquittement automatique, c'est le bit 0 de IVR (#6805), un simple EI acquitte l'interruption.D'après le tuto d'Ast sur IM2, l'acquittement manuel est buggué. J'ai lu trop vite, il semble que ce n'est qu'en mode IM1 que les bits de DSCR ne sont pas mis à jour en cas de validation automatique donc effectivement, il doit être possible de distinguer DMA0 de RASTER par DSCR en mode 2 avec acquittement automatique. |
|
| Auteur : | AsT [ 06 Août 2009, 21:10 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
pour contourner ce bug, plusieurs possibilites... utiliser seulement les dma1 et 2, utiliser im1 au lieu d'im2, dediriger les interruption a bon port en utilisant les bits du dcsr... voila, voila... j'espere ne pas en avoir trop dit. |
|
| Auteur : | fano [ 07 Août 2009, 22:18 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
Je vais encore vérifier mon code mais bizarement après avoir fait un branchement sauvage de DMA0 sur RASTER j'ai constaté un problème de synchro du programme qui utilise justement les interruptions pour caler sa vitesse quand je joue un sample sur DMA1 (il accélère!).Je vais vérifier encore mon code pour être sur, et je vais quand même me donner la peine de vérifier qui appelle l'interruption. @AST Sinon, maintenant je comprend bien pourquoi tu préfères coder sur un vrai CPC+. Quand tout marche nickel sur WinApe et foire (ou est différent) sur CPC+, c'est quand même méchamment chiant (euphémisme!). |
|
| Auteur : | AsT [ 08 Août 2009, 06:40 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
pour la petite histoire, quand j'ai commence la synergy, j'avais commence le code sur winape. quand le travail fut bien entamme, je me decidais, enfin, a lancer la demo sur mon plus et, plus rien ne concordait... donc recherche de bugs eventuels, tout ca pour m'apercevoir que le pb venait bien de winape... donc, j'ai tout repris de a a z directement sur mon plus, et j'ai continue... |
|
| Auteur : | fano [ 08 Août 2009, 08:59 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
J'ai eu le même genre d'expérience mais faut tout de même avouer qu'il y a un certain confort à developer sous WinApe qu'il est difficile de retrouver sur un vrai CPC+ (bah oui, à croire que je deviens vieux, j'aime bien mon confort ).Tu utilise quoi sur un vrai CPC+ comme outils ?
|
|
| Auteur : | hERMOL [ 08 Août 2009, 10:38 ] |
| Sujet du message : | Re: comportement IM2/IM1 |
j'ai pu le constater à la CC4, David est un vrai warrior , il code avec le duo de choc CPC+/DAMS
|
|
| Page 1 sur 2 | Le fuseau horaire est UTC+1 heure |
| Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |
|