Amstrad Plus Index du Forum

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

 FAQFAQ   RechercherRechercher   MembresMembres   GroupesGroupes   S’enregistrerS’enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Calcul Valeur Hcc

 
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation
Sujet précédent :: Sujet suivant  
Auteur Message
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Ven 13 Jan - 16:31 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
Publicité






MessagePosté le: Ven 13 Jan - 16:31 (2017)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
Revenir en haut
Lone


Hors ligne

Inscrit le: 17 Déc 2014
Messages: 29

MessagePosté le: Sam 14 Jan - 14:52 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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).


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Sam 14 Jan - 15:55 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Sam 14 Jan - 20:18 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
Lone


Hors ligne

Inscrit le: 17 Déc 2014
Messages: 29

MessagePosté le: Sam 14 Jan - 20:39 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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.


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Dim 15 Jan - 17:05 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
Lone


Hors ligne

Inscrit le: 17 Déc 2014
Messages: 29

MessagePosté le: Dim 15 Jan - 17:12 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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à...


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Dim 15 Jan - 17:16 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

Lone a écrit:
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...."


Revenir en haut
Lone


Hors ligne

Inscrit le: 17 Déc 2014
Messages: 29

MessagePosté le: Dim 15 Jan - 17:18 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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 !


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Dim 15 Jan - 17:21 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 118
Localisation: LYON

MessagePosté le: Lun 16 Jan - 19:31 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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!


Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Jeu 26 Jan - 21:48 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
roudoudou


Hors ligne

Inscrit le: 14 Juil 2016
Messages: 118
Localisation: LYON

MessagePosté le: Ven 27 Jan - 13:35 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

houla c'est bien complexe cette affaire!

Revenir en haut
Ast
Administrateur

Hors ligne

Inscrit le: 05 Sep 2014
Messages: 1 779

MessagePosté le: Ven 27 Jan - 13:50 (2017)    Sujet du message: Calcul Valeur Hcc Répondre en citant

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...."


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 13:51 (2017)    Sujet du message: Calcul Valeur Hcc

Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Amstrad Plus Index du Forum -> Bienvenue sur ce forum -> Programmation Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
Sauter vers:  

Index | Panneau d’administration | Creer un forum | Forum gratuit d’entraide | Annuaire des forums gratuits | Signaler une violation | Conditions générales d'utilisation
Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com