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 

***** L'instruction OUTi

 
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

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Ven 11 Déc - 16:02 (2015)    Sujet du message: ***** L'instruction OUTi Répondre en citant

Voici pour ceux qui l'ignorent comment utiliser l'instruction OutI qui comme chacun le sait déjà (?) n 'affecte pas le port C du Cpc mais bel est bien le B. Alors, problème de câblage ou encore une économie de la part d'Amstrad ?

Mais, quelle est la fonction de cette instruction ?
Lors d'un OUTI, le registre b est décrémenté, le Z80 fait un out (c),(hl) <- [Cette instruction n'existe pas!!!], puis le registre hl est incrémenté.

Donc, résumons :

b=b-1
out (c),(hl)
hl=hl+1

Pour rappel, cette instruction n'utilise que 5us. Ce qui est intéressant c'est l'incrémentation du registre HL, qui permet de faire pointer celui-ci sur une table
et de ne plus s'en occuper. Ce qui l'est moins, c'est la décrémentation du registre B mais celle-ci peut-être facilement contournée.

Voyons maintenant un exemple concret en changeant les valeurs des reg 1 et 2 du Crtc par exemple.

Code:
...
          ld bc,#bdbe    
          ld hl,tbcrtc      ; hl pointe sur la table des valeurs crtc
;
          outi                ; b=#bc - Changement du reg 1
          ld b,c              ; b=#be
          outi                ; b=#bdxx
;
          outi                ; b=#bc - Changement du reg 2
          ld b,c              ; b=#be
          outi                ; b=#bdxx

;
... etc...
...
;
; - table des registres crtc -
; r1=#30 ! r2=#32
;
tbcrtc
          byte #01,#30,#02,#32,....etc


















 

L'astuce réside ici pour sélectionner le port #bc du Crtc à charger le registre b avec la valeur #bd vu que le OUTI fait un dec b avant de faire le Out. C'est bien clair tout cela ?
Bien évidement, nous pouvons utiliser cette instruction avec le Fdc, le PPi et le Gate array.



_________________
Ast/iMP4CT

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


Dernière édition par Ast le Lun 14 Déc - 13:25 (2015); édité 1 fois
Revenir en haut
Publicité






MessagePosté le: Ven 11 Déc - 16:02 (2015)    Sujet du message: Publicité

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


Hors ligne

Inscrit le: 21 Nov 2015
Messages: 66

MessagePosté le: Lun 14 Déc - 01:24 (2015)    Sujet du message: ***** L'instruction OUTi Répondre en citant

La première fois que j'ai vu un OUTI utilisé avec le CRTC, c'était avec l'ami Overflow.
En effet, tu écris

 
Citation:
 b=b-1
out (c),(hl)
hl=hl+1
Mais tout bon datasheet du Z80A te dira que B est décrémenté APRES le OUT.
Donc de prime abord, on pouvait penser que cette instruction ne fonctionnait pas.


Revenir en haut
Ast
Administrateur

En ligne

Inscrit le: 05 Sep 2014
Messages: 2 321

MessagePosté le: Lun 14 Déc - 08:48 (2015)    Sujet du message: ***** L'instruction OUTi Répondre en citant

Pour ma part, c'etait avec chany qui m'avait expliqué comment faire des ruptures 'propres' grace à la méthode de duncan.
Je l'avais déjà utilisée auparavant pour des routines utilisant le gate array mais en laissant tout le temps la valeur du port à #7f.
Je pensais tout comme toi que la decrémentation du port arrivait après le out. 
Il parait aujourd'hui évident que l'on peut adresser le gate array avec les port allant de #78 à #7f mais ce n'était si évident non plus.
Ram7 utilise ses ports pour gérer son extension mémoire, et Hicks pour ses splitrasters :-)
_________________
Ast/iMP4CT

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


Revenir en haut
Contenu Sponsorisé






MessagePosté le: Aujourd’hui à 15:45 (2017)    Sujet du message: ***** L'instruction OUTi

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