Changes

Jump to: navigation, search

CTC-AY SDK libCTC fr

1,447 bytes added, 21:36, 11 July 2013
/* Connexions des lignes du CTC sur le CTC-AY */
===Bibliotheque Bibliothèque de prise en charge du CTC===
Localisation : lib/ctc.asm
*string chaîne de caractères
===Description brève du CTC===
 
Le CTC est composé de 4 canaux possédant chacun 1 compteur interne et 1 registre contenant une constante. Chaque canal est configurable en mode 'counter' ou en mode 'timer'.
 
En mode counter, le compteur interne est décrémenté à chaque signal sur sa ligne d'entrée. Quand ce compteur atteint zéro, un signal est envoyé sur sa ligne de sortie et une interruption est déclenchée si l'utilisateur l'a configurée. Le compteur interne est rechargé avec la constante et le décompte reprend.
 
En mode timer, le compteur interne est décrémenté toutes les 64 ou 256 impulsions d'horloge selon la configuration soit 16µs ou 64µs pour une fréquence de 4Mhz. Quand ce compteur atteint zéro, un signal est envoyé sur sa ligne de sortie et une interruption est déclenchée si l'utilisateur l'a configurée. Le compteur interne est rechargé avec la constante et le décompte reprend.
 
Pour plus d'informations sur le fonctionnement exact du CTC, se référer à la documentation Zilog : [[File:Z80ctc.pdf]]
 
===Connexions des lignes du CTC sur le CTC-AY===
{| class="wikitable"
|-
! Canal || signal en entrée || signal en sortie || utilisation typique
|-
| 0 || Horloge 4Mhz || YM || Fréquence des YM
|-
| 1 || Curseur CRTC || Z80 NMI || NMI localisée
|-
| 2 || Horloge 4Mhz || Canal 3 || Compteur 8/16bits
|-
| 3 || Canal 2 || - || Compteur 8/16bits
|}
===Macros===
Si le paramètre est omis, c'est la fréquence du CPC qui est choisie par défaut.
Valeurs définies :
*CTC.freq_CPC
*CTC.freq_ZX
Démarre un des canaux du CTC.
Le premier paramètre correspond au canal choisi, le deuxième aux drapeaux affectant ce canal et le troisième à une constante de temps qui sera chargée dans le compteur du canalinterne immédiatementcanal interne, puis à chaque fois que ce compteur arrivera à zéro.
Les canaux sont définis par les valeurs suivantes :
*CTC_StartNMI
Sans paramètre , le CTC est configuré pour produire l'interruption non masquable à l'adresse indiquée par les registres 14 et 15 du CRTC. Les registres de début et de fin de curseur (registres 10 et 11 du CRTC) doivent être correctement configurés avant l'usage de CTC_StartNMI.
*CTC_StartNMI d/r/(rr)/(ii),d/r/(rr)/(ii)
***'''CTC_CreateIntTable***'''
Crée une table de vecteurs et crée une fonction d'initialisation pour cette table en mode IM2. Néanmoins cette fonction ne change ni l'état des interruptions , ni le mode de gestion des interruptions du Z80. C'est à la charge de l'utilisateur de la bibliothèque d'exécuter les instructions "EI" et "IM2" ensuite.
Usage :
*CTC_CreateIntTable string,b,bb,bb,bb,bb
Le premier paramètre est le nom qui sera donné à la table crée.Deux étiquettes sont crées lors du processus, nom_de_la_table.table est l'adresse de la table elle même , nom_de_la_table.set est la fonction qui configure le Z80 et le CTC pour utiliser cette table.
Le deuxième paramètre est la partie haute de l'adresse de la table sachant que celle ci s'étend de (partie_haute*256)-10.La mémoire sera remplie de la valeur 0 entre l'adresse d'assemblage actuelle et l'adresse de la table.
Les quatre derniers paramètres correspondent respectivement aux vecteurs d'interruption des canaux 0,1,2 et 3 du CTC et à celui du Gate Array.
Example : CTC CTC_CreateIntTable matable,#10,#1000,#2000,#3000,#4000,#5000
Crée deux étiquettes nommées "matable.table" et "matable.set".A l'adresse #00F6 se trouve la table qui se décompose de la façon suivante :
*0x00F6:0x00 - Adresse basse du vecteur d'interruption du canal 0
Le premier paramètre indique la constante à charger dans le compteur interne des canaux 2 (partie haute) et 3 (partie basse) du CTC. La valeur 0 dans la partie haut ou basse correspond à 256 (0x100) pour la partie correspondante. Le temps écoulé en fonction de ce paramètre est le suivant : (partie_haute(dd)-1)*(partie_basse(dd)-1)*64µs
Le second paramètre est un drapeaux drapeau qui indique si une interruption doit être générée quand le compteur interne du canal 3 arrive à zéro. Les valeurs acceptées sont :
*CTC.int : une interruption est générée quand le compteur interne du canal 3 est à zéro
*CTC_noint : aucune interruption générée
213
edits