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

Gate Array et remise à zéro du compteur d'interuuptions
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=5985
Page 1 sur 1

Auteur :  GurneyH [ 12 Sep 2017, 21:11 ]
Sujet du message :  Gate Array et remise à zéro du compteur d'interuuptions

Bonsoir à tous,

Ça fait maintenant quelques années, que je parcours régulièrement les différentes pages, ressources fournis par ce superbe site. C'est la première fois que je poste sur ce forum.

J'ai assez l'habitude de recoder des effets démos old school sur pc via des librairies soft.
https://openclassrooms.com/forum/sujet/ ... ound-68737

Mais je suis actuellement bien incapable de réaliser ce genre de truc sur cpc. Mais j'essaye de me soigner.

Je m'y remet assez sérieusement actuellement, et je viens de tomber sur un truc qui m'étonne un peu, en parcourant un article paru dans ACPC.
Dans cet article sur le Gate Array, Fred Crazy écrivait, pour expliquer le rôle des bits 6 et 7 ceci:

Citer :
Et si le bit 7 est à 1 et le 6 à 0, que se passe+il ? Eh bien, nous sommes tout simplement dans le cas de la commutation des Roms et du contrôle vidéo...
Eclaircissons le problème. Le bit 4, s'il est à 1, remettra à 0 le diviseur qui génère les interruptions.


et plus loin dans le code, on trouvait
Code :
LD BC, #7F9D                 ; DIVISEUR D'INTERRUPT A 1
OUT (C),C                       ; NOUVELLE SEQUENCE D'INTERRUPTS


Après une sync vbl.
Après test, je ne vois pas trop l'utilité. J'ai l'impression que c'est comme si on attendait le halt suivant.
J'avoue qu'après quelques recherches(probablement mauvaise) je n'ai pas trouvé d'autres code, utilisant cet agencement de bits.

Si quelqu'un pouvait éclairer ma lanterne. :)

Merci d'avance

Auteur :  Longshot [ 14 Sep 2017, 18:37 ]
Sujet du message :  Re: Gate Array et remise à zéro du compteur d'interuuptions

Salut
Lorsque tu mets le bit 4 du reg MF du Gate Array à 1, tu remets le compteur de hbl pour les interruptions à 0
Cela permet de "retarder" l'interruption.
De manière simplifiée, les interruptions se produisent toutes les 52 hbl.
HALT attend qu'une interruption se produise.
Par exemple, si tu mets le bit 4=1 alors qu'il y a eu 10 hbl après un HALT, la prochaine interruption se produira 62 hbl après le HALT précité. Si tu mettais le bit 4=1 à chaque hbl, il n'y aurait plus jamais d'interruption.

Auteur :  marcel [ 14 Sep 2017, 19:36 ]
Sujet du message :  Re: Gate Array et remise à zéro du compteur d'interuuptions

t'aurais pas utilisé ça pour la revolog par hasard? :P

Auteur :  GurneyH [ 15 Sep 2017, 06:43 ]
Sujet du message :  Re: Gate Array et remise à zéro du compteur d'interuuptions

Bonjour, et merci pour la réponse Longshot (fan inside :D ).

Donc si je résume, ça sert à décaler toutes les prochaines interruptions se produisant lors d'une même vbl.

Pas quelques chose dont je dois me préoccuper à l'heure actuelle, j'ai plus de boulot à essayer de faire du code z80 correct déjà.

Une dernière question presque en rapport:
Après une synchronisation avec la VBL on voit parfois une petite tempo(j'ai vu boucle sur 32 ou 255 nops). En commentaire il est chaque fois expliqué que c'est pour assurer une compatibilité avec les différents types de crtc.
Après avoir testé les différents types de crtc à l'aide de Winape, je ne vois pas de différence(hormis un décalage de 2 nops je crois sur plus).

Vous avez une idée du contexte dans lequel cette tempo est utile ? Ou alors on ne se pose pas de questions et on rajoute cette tempo après chaque synchronisation ?

Merci d'avance

Auteur :  Longshot [ 17 Sep 2017, 17:35 ]
Sujet du message :  Re: Gate Array et remise à zéro du compteur d'interuuptions

@marcel: c'est exact. :?

@GurneyH: merci pour la réponse Longshot (fan inside :D ).
Avec plaisir.
Pour la seconde question, je ne vois pas trop la raison d'attendre 32 nops (ou 255 nops)
* La durée du signal Vsync est de 16 lignes sur un crtc 1 ou 2 et est plus courte sur un crtc 0 ou 4. C'est la période pendant laquelle le bit 0 du port B du PPI reste à 1.
* La première interruption commence à la 2ème hbl après le début du Vsync. Dis autrement, l'interruption survient alors que le CRTC a déjà passé 2 hbl.

Concernant la compatibilité entre CRTC, de manière générale, il faut faire attention à ne changer l'offset (R12 et/ou R13) que
sur la dernière ligne d'un caractère lorsqu'on est sur un écran de 1 caractère (R4=0) et sur le 2ème caractère si on est un un écran plus grand (R4>0). Veiller aussi à ne pas diminuer la valeur d'un registre si son compteur interne a déjà dépassé l'ancienne valeur (par exemple R9). Il existe d'autres restrictions plus pénibles sur le CRTC 2, dont la plus connue est R4=R9=0= :bomb:

Auteur :  GurneyH [ 17 Sep 2017, 19:11 ]
Sujet du message :  Re: Gate Array et remise à zéro du compteur d'interuuptions

Bonsoir,

Concernant la tempo après le vsync, j'ai à priori mal compris les codes que j'ai vu. Je ne retrouve pas les codes dans lesquels j'ai vu cette tempo. :twisted:

Merci pour les différentes infos sur les timings, je pense et j'espère que ça me sera utile.

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