CODING ★ GESTION DE LA MATRICE DE CARACTERE ★

Bidouilles ACPC n°37 - Gestion de la matrice de caractere
Pour trouver la matrice de huit octets définissant un caractère, le vecteur #BBA5 est tout indiqué. Deux cas sont possibles au retour : soit le caractère a été redéfini par l'instruction SYMBOL, et HL pointe sur une adresse en Ram, sort c'est un caractère du jeu standard du CPC, et HL pointe sur une adresse en ROM Basse (à partir de #3800). C'est le bit C (carry) du registre F qui te dit dans quel cas tu te trouves : s'il est mis ( 1 ), l'adresse est en RAM , s'il est effacé (0), l'adresse est en ROM.

Voici donc la routine complète pour obtenir l'adresse de la matrice d'un caractère. En entrée, A contient le caractère, en sortie HL pointe sa matrice, qu'elle soit en Ram ou en ROM (voir doc 1 ). Tu remarqueras que DE et BC peuvent être modifiés, au cas où le caractère se trouverait en ROM. Mais le mieux est encore de recopier toute la matrice en Ram, si tu disposes de 2 Ko libres voir doc 2) :

Et finalement, pour trouver chaque caractère (voir doc 3) : Et hop, miracle, HL pointe la matrice. DE est modifié, mais rien ne t'empêche de la sauvegarder par PUSH pour le récupérer ensuite par POP

;DOC1
GETMAT CALL #BBA5     ; Cherche l'adresse
   RET C      ; Fin si en RAM
   CALL #B906     ; Connecte la ROM Inférieure
   LD DE,CHMAT
   LDIR
   JP #B90C     ; Restaure l'état de la HOM
CHMAT  DEFS 8      ; Contiendra la matrice copiée

; DOC 2
COPYMAT XOR A      ; Cherche l'adresse du chr$(0)
   CALL #BBA5     ; qui est TOUJOURS en ROM et
   CALL #B906     ; le premier caractère de la matrice
   LD DE,MATRICE   ; par la même occasion
   LDIR       ; copie exactement 2048 octets
   JP #B90C
MATRICE DEFS 256*8

; DOC 3
FINDCH LD HL,MATRICE  ; HL pointe la matrice
   LD E,A    ; DE=A
   XOR A
   LD D,A
   SLA E     ; DE=DE»8
   RL D
   SLA E
   RL D
   SLA E
   RL D
   ADD HL,DE
   RET

Franck Einstein , A100% n°37

Page précédente : Bidouilles ACPC n°37 - FDC en mode direct

★ AMSTRAD CPC ★ A voir aussi sur CPCrulez , les sujets suivants pourront vous intéresser...

Lien(s):
» Coding » Assembleur ACPC n°16: Organisation des pixels à l'écran
» Coding » Bidouilles ACPC n°43 - Les vecteurs system (1/6 : Clavier, mode texte , les sons)
» Coding » Assembleur ACPC n°28 - Les rotations & divisions
» Coding » Assembleur ACPC n°11
» Coding » Bidouilles ACPC n°46 - Les vecteurs system (4/6)
» Coding » Bidouilles ACPC n°29 - Le secret des disquettes
Je participe au site:

» Vous avez remarqué une erreur dans ce texte ?
» Aidez-nous à améliorer cette page : en nous contactant via le forum ou par email.

CPCrulez[Content Management System] v8.732-desktop/c
Page créée en 227 millisecondes et consultée 2019 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.