| ★ CODING ★ Apprendre pas à pas la programmation en assembleur Z80 par Roudoudou ★ Premiers programmes (briques indispensables) ★ |
| Accéder au clavier |
Lire une ligne du clavierComment ça, lire UNE ligne du clavier? Le clavier du CPC est composé de 10 lignes sur 8 colonnes, ce qui donne la possibilité de gérer 80 touches. En pratique, le clavier du CPC en a 73 (si on ne compte pas le SHIFT deux fois, qui est branché en parallèle). Reste 6 'touches' pour le Joystick 1 (le deuxième joystick se trouve sur la 6è ligne et partage ses accès avec les lettres B, F, G, T, R, 5 et 6). On arrive à 79 sur 80, car le troisième bouton feu n'est pas câblé sur nos machines. Lire la matrice clavier se fait avec le PPI qui est le seul à pouvoir utiliser le 15è registre de la puce audio. Ce registre n'est pas du tout dédié à l'audio mais aux entrées/sorties d'un clavier (comment ça? on peut sortir des choses sur un clavier?). Ce registre trouve son origine dans l'utilisation qu'on pouvait faire de cette puce audio dans des petits jeux électroniques qui devaient gérer quelques boutons au passage. L'idée générale est de sélectionner la ligne du clavier et lire les 8 colonnes (en fait 8 bits) d'un coup avec un IN. Le code ne s'invente pas, on reprend les nombreux exemples disponibles. Voici le source pour lire une seule ligne (par exemple celle du joystick sur GX4000, inutile de scanner les autres). ; on assume qu'au moment où on rentre dans cette routine, le port A est en sortie |
| 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 |
| 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 |
| 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 |
| 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 |
Roudoudou
|
Page créée en 089 millisecondes et consultée 15 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. |