; on assume qu'au moment où on rentre dans cette routine, le port A est en sortie
; comme c'est ce qu'on configure à la fin de cette routine, c'est ce qui se passe
; dès le deuxième appel à cette routine, si ce n'était pas le cas
ld a,#49 ; ligne 9 de la matrice, c'est le joystick!
ld bc,#F40E
out (c),c ; sélectionner le registre 14 sur le port A
ld bc,#F6C0
out (c),c ; la valeur qu'on va envoyer est un registre
out (c),0 ; validation obligatoire sur Plus sinon bug!
ld bc,#F792
out (c),c ; mettre le port A en lecture
dec b ; B=#F6
out (c),a ; envoyer la ligne clavier (nous c'est #49)
ld b,#F4 ; adresse de lecture du port A
in a,(c) ; lecture de la ligne!
ld bc,#F782 ; PPI configuré port A en sortie
out (c),c
dec b
out (c),0
ret
|
Lire toutes les lignes du clavier ne prendra qu'environ 200 nops
lectureMatriceClavier
di ; Vous n'avez pas besoin de couper les interruptions
; si il n'y a pas de routine sonore sous interruption
ld hl,matriceClavier
ld bc,#f782
out (c),c
ld bc,#f40e
ld e,b
out (c),c
ld bc,#f6c0
ld d,b
out (c),c
out (c),0
ld bc,#f792
out (c),c
ld a,#40
ld c,d
.loop ld b,d
out (c),a ; sélectionner la ligne
ld b,e
ini ; lire et stocker dans notre tableau
inc a
inc c
jr nz,.loop
ld bc,#f782
out (c),c
ei ; pas besoin d'activer les interruptions si on ne les a pas coupées
ret
matriceClavier defs 10,#FF
|
Schéma d'interface du PPI dans le CPC avec ses différents port
Si vous souhaitez encore plus de détails sur le PPI, [cliquez ici] pour consultez l'article technique de Quasar CPC dont ce schéma est gracieusement extrait.
Matrice du clavier AZERTY Français de France
Bit: Ligne | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| #40 | F Dot | Entrée | F3 | F6 | F9 | Curseur Bas | Curseur Droite | Curseur Haut |
| #41 | F0 | F2 | F1 | F5 | F8 | F7 | Copie | Curseur Gauche |
| #42 | Contrôle | $ @\ | Shift | F4 | # > | Retourne | * < | CLR |
| #43 | : / | = + | M | ù % | P | ^ ¦ | ) [ | - _ |
| #44 | ; . | , ? | K | L | I | O | ç 9 | à 0 |
| #45 | Espace | N | J | H | Y | U | è 7 | ! 8 |
| #46 | V | B (Joy2 fire3) | F (Joy2 fire2) | G (Joy2 fire1) | T (Joy2 right) | R (Joy2 left) | ( 5 (Joy2 down) | ] 6 (Joy2 up) |
| #47 | X | C | D | S | Z | E | " 3 | ' 4 |
| #48 | W | CAPS-LOCK | Q | TAB | A | Échappe | é 2 | & 1 |
| #49 | DEL | Joy1 fire3 | Joy1 fire2 | Joy1 fire1 | Joy1 right | Joy1 left | Joy1 down | Joy1 up |
Matrice du clavier QWERTY britannique
Bit: Ligne | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| #40 | F. | ENTER | F3 | F6 | F9 | Curseur Bas | Curseur Droite | Curseur Haut |
| #41 | F0 | F2 | F1 | F5 | F8 | F7 | COPY | Curseur Gauche |
| #42 | Contrôle | \ ` | SHIFT | F4 | ] } | RETURN | [ { | CLR |
| #43 | . > | / ? | : * | ; + | P | @ ¦ | - = | ^ £ |
| #44 | , < | M | K | L | I | O | 9 ) | 0 _ |
| #45 | Espace | N | J | H | Y | U | 7 ' | 8 ( |
| #46 | V | B (Joy2 fire3) | F (Joy2 fire2) | G (Joy2 fire1) | T (Joy2 right) | R (Joy2 left) | 5 % (Joy2 down) | 6 & (Joy2 up) |
| #47 | X | C | D | S | W | E | 3 # | 4 $ |
| #48 | Z | CAPSLOCK | A | TAB | Q | ESC | 2 " | 1 ! |
| #49 | DEL | Joy1 fire3 | Joy1 fire2 | Joy1 fire1 | Joy1 right | Joy1 left | Joy1 down | Joy1 up |
Matrice du clavier Danois
Bit: Ligne | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| #40 | F Dot | ENTER | F3 | F6 | F9 | Curseur Bas | Curseur Droite | Curseur Haut |
| #41 | F0 | F2 | F1 | F5 | F8 | F7 | COPY | Curseur Gauche |
| #42 | Contrôle | ; + | SHIFT | F4 | : * | RETURN | @ \ | CLR |
| #43 | . > | / ? | Æ | Ø | P | Å | - = | ^ £ |
| #44 | , < | M | K | L | I | O | 9 ) | 0 _ |
| #45 | Espace | N | J | H | Y | U | 7 ' | 8 ( |
| #46 | V | B (Joy2 fire3) | F (Joy2 fire2) | G (Joy2 fire1) | T (Joy2 right) | R (Joy2 left) | 5 % (Joy2 down) | 6 & (Joy2 up) |
| #47 | X | C | D | S | W | E | 3 # | 4 $ |
| #48 | Z | CAPSLOCK | A | TAB | Q | ESC | 2 " | 1 ! |
| #49 | DEL | Joy1 fire3 | Joy1 fire2 | Joy1 fire1 | Joy1 right | Joy1 left | Joy1 down | Joy1 up |
Matrice du clavier Espagnol
Bit: Ligne | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
| #40 | F Dot | INTRO | F3 | F6 | F9 | Curseur Bas | Curseur Droite | Curseur Haut |
| #41 | F0 | F2 | F1 | F5 | F8 | F7 | COPIA | Curseur Gauche |
| #42 | Contrôle | \ ` | MAYS | F4 | ] + | RETURN | [ * | CLR |
| #43 | . > | / ? | Ñ | ; : | P | @ ¦ | - = | ^ ₧ |
| #44 | , < | M | K | L | I | O | 9 ) | 0 _ |
| #45 | Espace | N | J | H | Y | U | 7 ' | 8 ( |
| #46 | V | B (Joy2 fire3) | F (Joy2 fire2) | G (Joy2 fire1) | T (Joy2 right) | R (Joy2 left) | 5 % (Joy2 down) | 6 & (Joy2 up) |
| #47 | X | C | D | S | W | E | 3 # | 4 $ |
| #48 | Z | FIJA MAYS | A | TAB | Q | ESC | 2 " | 1 ! |
| #49 | BORR | Joy1 fire3 | Joy1 fire2 | Joy1 fire1 | Joy1 right | Joy1 left | Joy1 down | Joy1 up |
CPCrulez[Content Management System] v8.732-desktop/c Page créée en 444 millisecondes et consultée 9 foisL'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. |
|