HARDWAREPERIPHERIQUES - NON COMMERCIAL ★ Carte CPC-ISA par Siou v2.1 ★

Non Commercial - CPC - Isa Card - SiouHardware Peripheriques - Non Commercial


Note a l'attention des programmeurs de la carte CPCISA
------------

1.Introduction
--------------
Avant de presenter les caracteristiques techniques de la carte CPCISA,
je vais rappeler brievement la fonction de cette carte interface.
La carte CPCISA permet de connecter au CPC une ou plusieurs cartes PC
au standard ISA. Un PC est constitue d'une carte mere et de cartes
interfaces qui permettent toutes les fonctions principales d'entree/sorties.
Plusieurs standards existent mais, l'interet des cartes ISA est leur prix
(tres faible), leur grand nombre et leur grande diversite. On peut 
citer a titre d'exemple les cartes Sound Blaster, modems, video, disques
durs et disquettes, CD ROM, reseau, acquisitions diverses,...
Avec la carte CPCISA, il est desormais possible de connecter sur la carte 
elle meme jusqu'a 3 cartes ISA. 
 ----------------------------------
 | ___________________  3 cartes ISA verticales
 | ___________________            |
 | ___________________            |
 |                                |<- carte CPCISA
 |                                |
 |                                |
 ----------------------------------
                        |||||||||||<- connexion CPC
2.Fonctionnement global
-----------------------
Le Z80 (microprocesseur du CPC) opere sur 8 bits. Le bus ISA d'un PC 
operant sur 16 bits, la CPCISA a pour but principal de faire de multiples
conversions entre 8 et 16 bits.
D'autre part, la carte adapte les adresses de ports entre le CPC et 
les cartes ISA. La carte gere egalement entre autres les interuptions IRQs 
provenant de cartes ISA. Enfin, de multiples options programmables par 
logiciel ou par jumpers autorisent des performances interessantes.
La gestion des options est prise en charge par un registre de commande.
Tous les ports ISA compris entre 0 et 3FF sont accessibles soit 
directement soit apres une petite programmation de la CPCISA.
La carte CPCISA ne comporte pas d'element programmable (comme des EPROMs,
des microcontroleurs) afin de garantir un maximum de performances en vitesse
et en taux de transfert.
2.1.Branchements
----------------
Pour faire fonctionner correctement la CPCISA a l'arriere de votre CPC,
il faut connecter une alimentation de type PC (2 connecteurs, les masses
(noires) etant au milieu) et relier le CPC a la carte avec le connecteur
prevu. 
Dans le cas d'un montage en tour, il faut enficher la carte mere du CPC
dans le connecteur fixe de la CPCISA. Le cote composant de la carte mere
du CPC doit etre dirige vers les 3 connecteurs du bus ISA. Dans une tour,
toutes les cartes sont donc paralleles, composants vers le haut. Il faut
aussi relier le (+5v/gnd) de la CPCISA (en bas a gauche) a la carte mere
du CPC afin d'alimenter le CPC (ou CPC+) par la CPCISA.
Le connecteur en bas a droite correspond au reset general (connecteur
normalisé pour une tour PC). 
Les cavaliers sont indiqué au crayon.
En haut a droite, de gauche a droite, il y a:
ASIC (0/1), LSB (0/1), AEN.
AEN doit posseder le cavalier sauf fonctionnement special.
A14 se trouve a droite.
La LED verte indique l'alimentation de la CPCISA.
Il faut TOUJOURS allumer la CPCISA ** AVANT ** le CPC. Dans le cas
d'une tour, l'alimentation du CPC doit etre faite par le connecteur
en bas a gauche. La mise sous tension est alors simultanée.
Le branchement d'une extension derriere la CPCISA se connecte
A L'ENVERS (me consulter pour etre sur).
3.Programmation generale
------------------------
Le coeur de la carte regroupe 2 registres de 8 bits accessibles par le CPC.
Un registre (appelé REGLOW) est connecte aux data LOW (D0-D7) du bus ISA et 
l'autre (REGHIGH) aux 
data HIGH (D8-D15).
Suivant le type d'ecriture ou de lecture que l'on veut faire (8 bits ou
16 bits), l'operation diffère.
3.1.Cas d'une opération 8 bits
------------------------------
La lecture et l'ecriture se fait directement comme sur une extension
CPC normale en 8 bits. L'ecriture sur un port externe envoie 
le mot de 8 bits sur le bus ISA et la lecture d'un port renvoie la valeur 
lue sur le bus ISA.
3.2.Cas d'une opération 16 bits
-------------------------------
L'operation de transfert entre le CPC et une carte ISA comporte deux 
operations:
3.2.1.Ecriture
--------------
a.Ecriture dans REGHIGH
b.Ecriture dans REGLOW
L'operation b ecrit automatiquement les 16 bits sur le bus ISA. 
3.2.2.Lecture
-------------
a.Lecture de REGLOW 
b.Lecture de REGHIGH 
L'operation a inscrit automatiquement les 16 bits en provenance de la 
carte ISA dans les deux registres. 
4.Gestion des adresses.
-----------------------
Le CPC ne peut adresser autant qu'un PC est capable de le faire. Il
a ete necessaire de proceder a une petite astuce.
La carte CPCISA occupe la plage des ports CPC suivants:
FCxx, FDxx, FExx et FFxx (soit en binaire 1111 11xx xxxx xxxx)
Les adresses ISA a gerer comportent 10 bits (Ai0 a Ai9). Pour etre
compatible avec certaines normes (comme le Plug and Play par exemple),
la CPCISA peut egalement gerer Ai10 et Ai11.
Les bits de l'adressage CPC de la carte CPCISA se repartissent comme suit:
A15 A14 A13 A12 A11 A10  A9  A8  A7  A6  A5  A4  A3  A2  A1  A0
 1   1   1   1   1   1   RT  Ai8 Ai7 Ai6 Ai5 Ai4 Ai3 Ai2 Ai1 Ai0
Le bit A9 est le bit RT correspondant a la selection du registre REGLOW ou
REGHIGH. Les operations de lecture/ecriture dependent de ce bit RT.
Les bits Ai9 a Ai11 doivent etre ecrits dans le registre de commande 
prealablement.
Toutes les operations 8 bits se font avec RT=1 (selection de REGLOW).
Les operations 16 bits doivent se faire en coordination avec RT.
4.1.Ecriture (16 bits)
----------------------
a.Ecriture sur REGHIGH: RT=0
b.Ecriture sur REGLOW: RT=1
4.2.Lecture (16bits)
--------------------
a.Lecture de REGLOW: RT=1
b.lecture de REGHIGH: RT=0
4.3.Schema de transfert
-----------------------
                 CPC 6128          carte CPCISA      carte ISA
                 ----------            -----          -------
                           |       -->| REG |<------>| ISA   |
                          |      |   | HIGH|        | H     |
                BUS 8 BITS |<-----|    -----         |       |
                           |      |    -----         |       |
                           |      |   | REG |<------>| ISA   |
                           |       -->| LOW |        | L     |
                 ----------            -----          -------
5.Gestion des options
---------------------
La carte CPCISA possede de nombreuses options. Elles sont gerees par 
le registre de commande. Il n'est pas accessible en lecture.
Deux LEDs sur la CPCISA indiquent l'etat du bit 7 et du bit 6 (allumée=0).
Adresse du registre de commande: &X1111 100x 111x xxxx (ex:&F8FF)
Structure du registre de commande:
REGc7  REGc6  REGc5  REGc4  REGc3  REGc2  REGc1  REGc0
  I      D      S      O      M2    Ai11   Ai10   Ai9
  |      |      |      |      |      |      |      |
  |      |      |      |      |      |      |      +-----> Lignes 
  |      |      |      |      |      |      |              d'adresses
  |      |      |      |      |      |      +------------> du
  |      |      |      |      |      |                     bus
  |      |      |      |      |      +-------------------> ISA
  |      |      |      |      | 
  |      |      |      |      +-----> Mode vectorisé: 1: inactif
  |      |      |      |                              0: autorisé
  |      |      |      |
  |      |      |      +-----> Controle de mode: 1:IN/OUT
  |      |      |                                0:LD
  |      |      +-----> SBHE: 1:transfert 8 bits 
  |      |                    0:transfert 16 bits
  |      +-----> Controle des interruptions: 1: pas d'interruption
  |                                          0: Les interruptions sont autorisées
  +-----> Isolation: 1: isole (seul le registre de commande repond)
                     0: la CPCISA est active
Apres la mise sous tension, la registre de commande contient &FF.
5.1.Lignes d'adresses
---------------------
Mettre dans le registre de controle, Ai9 a Ai11 correspondant au port
ISA desiré. Souvent Ai10 et Ai11 valent 0. Seul Ai9 change (0 si le port
est inferieur a 1FF, 1 s'il est superieur).
5.2.Mode vectorisé (M2)
-----------------------
Ce bit ne doit etre activé QUE si l'on desire faire fonctionner la CPCISA
avec un CPC en mode vectorisé (im3).
Dans ce cas, la CPCISA presentera en temps voulu, la partie basse de 
l'adresse de saut sur le bus. Le mot de 8 bits indiquera alors quelle
ligne d'interruption du bus ISA a ete activée selon l'ordre ci-dessous:
REGv7   REGv6   REGv5   REGv4   REGv3   REGv2   REGv1   REGv0
IRQ15   IRQ14   IRQ3    IRQ4    ASIC    IRQ5    IRQ6    LSB
ASIC est selectionnable sur la CPCISA par le cavalier ASIC et permet
la compatibilite avec le CPC+. LSB est selectionnable sur la CPCISA par
le cavalier LSB et permet la compatibilite avec les differents CPC.
Les autres IRQ ne sont pas signalées par ce registre (REGv). Cependant,
IRQ12, IRQ10 et IRQ7 sont signalées (en plus des 6 ci-dessus) par 
l'interruption externe generale.
5.3.Controle de mode (O)
------------------------
Comme vu precedemment, la plage d'adresses CPC occupee par la carte CPCISA
s'etend de FC00 a FFFF et est geree par les instructions de port entrees /
sorties du Z80 (IN et OUT). Ces instructions dedies aux ports exterieurs
sont dans le cas du CPC tres lentes dues a la frequence d'horloge faible...
L'option proposee sur la carte CPCISA permet de commander les cartes ISA
par les instructions LD du Z80 beaucoup plus rapides. Le bit O selectionne
le mode d'adressage. Dans le cas d'une gestion par LD, les transferts se font
vers et a partir d'emplacements memoire de la meme facon qu'avec IN et OUT.
Deux plages memoire peuvent etre selectionnées par cavalier sur la CPCISA:
* 9800-9BFF
* D800-DBFF
Le cavalier se nomme A14. 
exemple:
Ecriture du registre DE de 16 bits sur le port ISA 330 
(carte Sound Blaster) avec une adresse de base de 9800:
LD A,#49
LD BC,#F8FF
OUT (C),A
LD HL,#9930
LD (HL),D
LD HL,&9B30
LD (HL),E
5.4.SBHE (S)
--------
Pour distinguer un tranfert 8 bits d'un transfert 16 bits, mettre le bit
correspondant. Certaines cartes ignorent ce bit.
5.5.Controle des interruptions (D)
----------------------------------
9 IRQs du bus ISA sont regroupees sur l'entree /INT du bus CPC. Les 6 du
mode vectorisé et IRQ12, IRQ10 et IRQ7. Pour savoir quelle 
IRQ a ete declenchee et par quelle carte, il faut venir lire les donnees 
de l'etat des differentes cartes pour trouver celle qui demande une attention
ou bien programmer en mode vectorisé. Il n'y a pas de conflit d'IRQ visible. 
Il faut etre cependant prudent lors de la configuration de chaque carte ISA 
(Bien differencier les IRQ). 
Le bit D inhibe ou non l'entree /INT du Z80 du CPC et donc les interruptions
provenant de la CPCISA, y compris celles du mode vectorisé. 
5.6.Isolation (I)
-----------------
Il peut etre utile d'isoler la carte CPCISA des autres cartes connectees
au bus exterieur du CPC. Le bit I du registre de controle s'occupe de 
cette fonction. Si la CPCISA est isolée, seul le registre de commande
est actif.
6.Exemples 
---------- 
Ecriture du registre HL de 16 bits sur le port ISA 330 
(carte Sound Blaster):
LD A,#59
LD BC,#F8FF
OUT (C),A
LD BC,#FD30
OUT (C),H
LD BC,#FF30
OUT (C),L
Si on reecrit une nouvelle fois:
DEC B
DEC B
OUT (C),H
INC B
INC B 
OUT (C),L
Si H est identique:
OUT (C),L (car l'octet dans REGHIGH est memorisé dans la CPCISA)
Lecture vers le registre DE de 16 bits depuis le port ISA 2F8:
LD A,#59
LD BC,#F8FF
OUT (C),A
LD BC,#FEF8
IN E,(C) 
LD BC,#FCF8
IN D,(C) 
Ecriture du registre H de 8 bits sur le port ISA 278 (LPT2): 
LD A,#79
LD BC,#F8FF
OUT (C),A
LD BC,#FE78
OUT (C),H 
Lecture du port ISA 320 vers le registre H (XT hard disk): 
LD A,#79
LD BC,#F8FF
OUT (C),A
LD BC,FF20 
IN H,(C)
7.Conclusion
------------
Cette carte CPCISA offre de nombreuses options. Il peut etre difficile
de maitriser toutes les techniques facilement (particulierement le mode
vectorisé) mais toutes ont ete testees en profondeur avec succes. 
Je conseille dans un premier temps de se limiter 
aux fonctions de base.
Pour toute demande d'information, ne pas hesiter
 a me contacter. 

SIOU

★ GROUPE: FUTURS
★ ANNÉE: ???
★ AUTEUR: MASSICOT LAURENT (SIOU)

CPCrulez[Content Management System] v8.75-desktop/c
Page créée en 055 millisecondes et consultée 1023 fois

L'Amstrad CPC est une machine 8 bits à base d'un Z80 à 4MHz. Le premier de la gamme fut le CPC 464 en 1984, équipé d'un lecteur de cassettes intégré il se plaçait en concurrent  du Commodore C64 beaucoup plus compliqué à utiliser et plus cher. Ce fut un réel succès et sorti cette même années le CPC 664 équipé d'un lecteur de disquettes trois pouces intégré. Sa vie fut de courte durée puisqu'en 1985 il fut remplacé par le CPC 6128 qui était plus compact, plus soigné et surtout qui avait 128Ko de RAM au lieu de 64Ko.