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 OUTd

 
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 829

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

Après avoir joué avec l'instruction OUTI, je me suis dit, pourquoi ne pas expliquer l'instruction OUTD qui, à peu de choses près est la même chose.
Alors que fait exactement cette instruction ?

OutD :
b=b-1
out (c),(hl) <- Cette instruction Z80 n'existe pas !!!
dec hl
....
La routine proposée plus bas utilise donc cette nouvelle instruction. Comment charger les 16 couleurs en utilisant cette instruction ?
OutD décrémentant le registre HL, il suffit de le positionner à la fin de la table. Pour résumer, la table est lue à l'envers.
Il y a également un truc lié au Gate Array utilisé dans cette routine, puisque, j'en avais parlé vaguement dans un autre article, le Gate
Array peut être adressé via les ports allant de #78 à #7f, alors, pourquoi ne pas les utiliser ?  

Code:
 org #1000
;
; Chargement de la palette hardware de couleur (16 couleurs)
;       en utilisant l'instruction OutD 
;
 ld hl,finpal-1 ; hl pointe sur la fin de la palette
 ld bc,#7f7f
 xor a ; a=numero de pen
;
  out (c),a ; select pen 0
 inc a
 outd ; b=#7e
 out (c),a ; select pen 1
 inc a 
 outd ; b=#7d
 out (c),a ; select pen 2
 inc a
 outd ; b=#7c
 out (c),a ; select pen 3
 inc a
 outd ; b=#7b
 out (c),a ; select pen 4
 inc a 
 outd ; b=#7a
 out (c),a ; select pen 5
 inc a
 outd  ; b=#79
 out (c),a ; select pen 6
 inc a
 outd ; b=#78
 out (c),a ; select pen 7
 inc a
 outd ; b=#77
;
  ld b,c ; b=#7f - On réinitialise la valeur de b qui était à #77
;
 out (c),a ; select pen 8
 inc a 
 outd ; b=#7e
 out (c),a ; select pen 9
 inc a
 outd ; b=#7d
 out (c),a ; select pen 10
 inc a 
 outd ; b=#7c
 out (c),a ; select pen 11
 inc a
 outd ; b=#7b
 out (c),a ; select pen 12
 inc a
 outd ; b=#7a
 out (c),a ; select pen 13
 inc a 
 outd ; b=#79
 out (c),a ; select pen 14
 inc a
 outd  ; b=#78
 out (c),a ; select pen 15
 inc a
 outd ; b=#77
;
 ret



_________________
Ast/iMP4CT

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


Revenir en haut
Publicité






MessagePosté le: Lun 14 Déc - 14:10 (2015)    Sujet du message: Publicité

PublicitéSupprimer les publicités ?
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