Amstrad Plus Forum Index

Amstrad Plus
Découverte de la gamme Old et Plus des Cpc d'Amstrad.

 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Calcul Valeur Hcc

 
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> CRTC
Previous topic :: Next topic  
Author Message
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 13 Jan - 17:31 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Hello,

Encore en plein coding, je me pose une question métaphysique à laquelle certain d'entre vous pourront sans doute répondre.
A votre avis, quelle est la valeur de HCC après un Halt ?

Pour ceux qui l'ignoreraient encore, HCC=Horizontal Char Counter (Compteur de caractères Horizontal). C'est le compteur interne du Registre 0 du Crtc. Pour information, je trouve la valeur de 5 après chaque HALT.

1. Est-ce réellement le cas ?
2. Est-ce que celle-ci est toujours la même ?
3. De quoi cette valeur dépends elle ? 


Sachez que cette valeur s'incrémente après chaque instructions.
Ainsi, si HCC=5 après un halt, si l'instruction suivante est un nop, HCC sera alors égal à 6, et ainsi de suite jusqu'au seuil fixé par le Registre 0 du crtc, 63 en valeur de base soit 64 itérations par ligne.

Merci pour vos réponses éventuelles.

Mon programme de test :

Code:
          org  #a000
          ent $
;
          di
          ld hl,#c9fb ; on vire les ints
          ld (#38),hl
;
main   ld b,#f5 ; test vbl
vsync  in a,(c)
          rra
          jr nc,vsync
;
          ei
          halt
                            ; Que vaut Hcc après l'execution du halt ? Ici Hcc=5 ?
.....







_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Publicité






PostPosted: Fri 13 Jan - 17:31 (2017)    Post subject: Publicité

PublicitéSupprimer les publicités ?
Back to top
Lone


Offline

Joined: 17 Dec 2014
Posts: 139
Masculin
Point(s): 5
Moyenne de points: 0.04

PostPosted: Sat 14 Jan - 15:52 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Hello Ast, 


J'ai vu ton message sur le forum de cpc-rulez, sur lequel j'ai proposé une explication théorique.
Je le copie/colle ici, des fois que tu consultes plus les messages de ton forum :


Dans ton cas précis, tu as une sortie de boucle quand VSync est on. Soit, lorsque HCC = 0.
Ensuite:
- RRA : 1 NOP
- JR NC : 2 NOP
- EI : 1 NOP
- HALT : 1NOP (l'interruption est (sans doute) là depuis des lustres, vu que tu les a DI avant d'attendre VSync)

Total = 5 NOP, soit 5 us, soit... HCC = 5.

Est-ce variable ? 

Je pense que si tu lance ta routine au bon moment (c'est à dire juste après la dernière interruption avant VSync), tu peux avoir des résultats différents. Dans ce cas, tu aurais un comportement où l'interruption (qui pop sur la fin de HSYNC, soit, HCC = R2+R3 soit 46+14 = 60 dans un cas standard) arriverait 4 us plus tôt (pour R0 = 64).

Ce qui signifie que tout dépend sans doute de tes valeurs de registre R0, R2, R3 dans le cas ou tu places ton halt au bon moment (soit sans interruption en attente).


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sat 14 Jan - 16:55 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Merci pour tes explications. C'est donc bien ce que je pensais.
Pour info, j'ai vu ta réponse hors connexion sur Cpc rulez.  Okay
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sat 14 Jan - 21:18 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Il reste néanmoins une question en suspens :


Après un halt, HCC=5 à chaque fois ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Lone


Offline

Joined: 17 Dec 2014
Posts: 139
Masculin
Point(s): 5
Moyenne de points: 0.04

PostPosted: Sat 14 Jan - 21:39 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Si ton interruption est pending au moment du 'ei', oui (vu que VSync apparait lorsque HCC = 0)




Sinon, ça dépend de R0, R2, R3. D'après un calcul rapide je dirais que :


Grosso modo, on aura : 
- fin du HSYNC a R2 + R3.
- L'interruption arrive à ce moment là. Si l'on ajoute un NOP pour le halt, on aura donc HCC = (R2+R3+1) modulo (R0+1).


Ajouter éventuellement le temps de traitement de l'interruption.


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 15 Jan - 18:05 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Je me doutais que ma question allait "titiller" un codeur d'emulateur Smile A ce propos, à quand un version de sugar Cpc+ ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Lone


Offline

Joined: 17 Dec 2014
Posts: 139
Masculin
Point(s): 5
Moyenne de points: 0.04

PostPosted: Sun 15 Jan - 18:12 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

J'y pense depuis un moment ! C'est sans doute la prochaine grosse évolution (une fois les travaux en cours terminés)


Et je poserais sans doute bien des questions à ce moment là...


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 15 Jan - 18:16 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Lone wrote:
J'y pense depuis un moment ! C'est sans doute la prochaine grosse évolution (une fois les travaux en cours terminés)


Et je poserais sans doute bien des questions à ce moment là...


Avec grand plaisir...
Est-ce que l'émulation crtc1 est parfaite pour l'instant ?
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Lone


Offline

Joined: 17 Dec 2014
Posts: 139
Masculin
Point(s): 5
Moyenne de points: 0.04

PostPosted: Sun 15 Jan - 18:18 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Non, j'ai pas mal de problème.
Du coup, j'ai repris à zéro l'émulation z80 (pour avoir des timings d'IO au poil)... Du coup, c'est un gros boulot tout ça !


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Sun 15 Jan - 18:21 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Si t'as besoin pour les timings hyper précis, tu peux toujours voir avec OffseT, l'auteur d'Ace Wink
Il est assez accessible.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Mon 16 Jan - 20:31 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Avec l'Asic, on s'amuse pas mal car selon l'instruction responsable de l'écriture dans les registres, la prise en compte n'est pas la même (pour les rasters, par exemple)


Et pour les autres registres, c'est fait pendant la HBL dans un certain ordre, avec des délais qui dépendent de l'instruction DMA en cours (ou non). Du bonheur!


Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Thu 26 Jan - 22:48 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Hicks m'a expliqué ceci, il y a quelques jours :


La valeur de HCC après un Halt dépends de trois paramètres, la valeur du registre 2 du crtc (position de la hbl), celle du registre 3 (largeur de la hbl), mais aussi du mode d'interruption utilisé (iM2, iM1, iM0?)


Dans l'exemple cité plus haut, HCC serait donc égal à 8 et non à 5.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
roudoudou


Offline

Joined: 14 Jul 2016
Posts: 427
Localisation: LYON
Masculin
Point(s): 46
Moyenne de points: 0.11

PostPosted: Fri 27 Jan - 14:35 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

houla c'est bien complexe cette affaire!

Back to top
Ast
Administrateur

Online

Joined: 05 Sep 2014
Posts: 2,977
Masculin
Point(s): 390
Moyenne de points: 0.13

PostPosted: Fri 27 Jan - 14:50 (2017)    Post subject: Calcul Valeur Hcc Reply with quote

Pas si compliqué que ca en fait... C'est le compteur interne du registre 0 du crtc.
Quand tu veux modifier le registre 0 du crtc, tu as besoin de savoir où se trouve son compteur interne, et ainsi éviter les overflow de ce registre.
_________________
Ast/iMP4CT

"Par le pouvoir du crâne ancestral...."


Back to top
Display posts from previous:   
Post new topic   Reply to topic    Amstrad Plus Forum Index -> Programmation Cpc -> CRTC All times are GMT + 2 Hours
Page 1 of 1

 
Jump to:  

Index | Administration Panel | Create a forum | Free support forum | Free forums directory | Report a violation | Cookies | Charte | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group