Index du forum




Un petit coup de main... Vous pouvez nous aider à mettre ce site à jour: n'hésitez pas à me contacter !!!

* Connexion   * Inscription

* FAQ
Nous sommes actuellement le 25 Mai 2022, 16:27

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Redéfinition des caractères en assembleur



Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 6 message(s) ] 
  Aperçu avant impression Sujet précédent | Sujet suivant 
Auteur Message
secmast
 Sujet du message : Redéfinition des caractères en assembleur
Message Publié : 10 Jan 2020, 12:25 
Hors-ligne
Rulez
Rulez

Inscription : 20 Oct 2019, 22:28
Message(s) : 10
Bonjour à tous, et bonne année :D

Je bosse sur un programme "terminal" en VT100 et j'ai besoins de redéfinir mes caractères en ANSI.
J'ai fait la définition complète:
ANSICAR:
DEFB &00,&7E,&7E,&6C,&10,&38,&10,&00,&FF,&00,&FF,&0F,&3C,&3F,&7F,&99
DEFB &80,&02,&18,&66,&7F,&3E,&00,&18,&18,&18,&00,&00,&00,&00,&00,&00
DEFB &00,&10,&28,&28,&10,&C2,&30,&40,&10,&10,&92,&00,&00,&00,&00,&02
DEFB &7C,&10,&7C,&7C,&0C,&FE,&38,&FE,&7C,&7C,&00,&00,&08,&00,&20,&7C
DEFB &7C,&38,&FC,&7C,&FC,&FE,&FE,&3C,&82,&7C,&3E,&82,&80,&82,&82,&38 etc etc etc
Chaque entrée DEFB comprend deux caractères

Tous les caractères sont fait mais je ne comprends pas la mise en oeuvre les firmware.
TXT GET MATRIX
TXT SET MATRIX
TXT SET M TABLE
TXT GET M TABLE

Sachant que la totalité des caractères seront redéfini et qu'ils sont en ordre adjacent dans la "table" comment faire en assembleur ?

Merci d'avance


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Redéfinition des caractères en assembleur
Message Publié : 10 Jan 2020, 17:42 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 4827
Voilà comment j’utilise le vecteur system &BBAB

Code :
BuffChar equ &A000

        ld de,"A"       ; 1er caractere
        ld hl,BuffChar
        call #bbab    ;BBAB TXT SET M TABLE fixer adresse de départ et premier caractère d'une matrice de points définie par l'utilisateur.

   ld hl,ANSICAR   ; copie ta redéfinition de caractères
   ld de,BuffChar   
   ld bc,8*char
   ldir
ret

ANSICAR:
db %11111111
db %11000011
db %11000011
db %11000011
db %11000011
db %11000011
db %11000011
db %11111111


src/url: https://cpcrulez.fr/codingBOOK_weka_0509.htm


Haut
 Profil  
 
secmast
 Sujet du message : Re: Redéfinition des caractères en assembleur
Message Publié : 10 Jan 2020, 21:42 
Hors-ligne
Rulez
Rulez

Inscription : 20 Oct 2019, 22:28
Message(s) : 10
Heuuuuuu..... :oops:
Mais encore ?

Pour être honnête j'y comprend pas grand chose.
J'aurais bien voulu un peu plus d'explication.
Déjà j'ai 254 caractères a faire, donc j'imagine que je dois boucler.
Genre après le ret je fais un INC DE et je rappel la routine avec les push/pop qui vont bien.
Mais pour le reste....

pourquoi HL, buffchar
C'est quoi BC,8*char


Haut
 Profil  
 
hERMOL
 Sujet du message : Re: Redéfinition des caractères en assembleur
Message Publié : 11 Jan 2020, 08:27 
Hors-ligne
Site Admin
Avatar de l’utilisateur

Inscription : 20 Août 2007, 18:21
Message(s) : 4827
secmast a écrit :
Heuuuuuu..... :oops:
Mais encore ?

Pour être honnête j'y comprend pas grand chose.
J'aurais bien voulu un peu plus d'explication.
Déjà j'ai 254 caractères a faire, donc j'imagine que je dois boucler.
Genre après le ret je fais un INC DE et je rappel la routine avec les push/pop qui vont bien.
Mais pour le reste....

Ce bout de code est vraiment très simple , pas besoin de boucle .

secmast a écrit :
pourquoi HL, buffchar

buffchar ==> est l'emplacement ou va ce retrouver tes caractères contenu dans la rom (en basic équivalent à "symbol after") ;
ld de,"A" ==> est le 1er caractère a modifier:

Code :
        ld de,"A"       ; 1er caractère
        ld hl,BuffChar
        call #bbab    ;BBAB TXT SET M TABLE fixer adresse de départ et premier caractère d'une matrice de points définie par l'utilisateur.


Une fois qu'ils ce trouvent en RAM, tu les modifies avec un ldir (dans cet exemple équivalent à la commande basic "symbol") ;
ld hl,ANSICAR ==> source données caractères
ld de,BuffChar ==> destination (init par le vecteur #BBAB)
ld bc,8*char ==> longueur données
ldir ==> copie les données

Code :
   ld hl,ANSICAR   ; copie ta redéfinition de caractères
   ld de,BuffChar   
   ld bc,8*char
   ldir


secmast a écrit :
C'est quoi BC,8*char

8 ==> données par caractère
char ==> nombre caractères à redéfinir (dans ton cas 254)
/!\ je suis pas sur que les caractères avant 32 soit modifiable!

pour l'encodage des caractères, ici j'ai le dessin d'un "A":
Code :
ANSICHAR:
db %11111111
db %11000011
db %11000011
db %11111111
db %11000011
db %11000011
db %11000011
db %11000011


Haut
 Profil  
 
secmast
 Sujet du message : Re: Redéfinition des caractères en assembleur
Message Publié : 11 Jan 2020, 11:31 
Hors-ligne
Rulez
Rulez

Inscription : 20 Oct 2019, 22:28
Message(s) : 10
Merci d'avoir pris le temps pour un réponse bien complète.
Je ferai ça ce soir et je te tiens au courant.


Haut
 Profil  
 
secmast
 Sujet du message : Re: Redéfinition des caractères en assembleur
Message Publié : 11 Jan 2020, 21:51 
Hors-ligne
Rulez
Rulez

Inscription : 20 Oct 2019, 22:28
Message(s) : 10
Merci Hermol

Non seulement ça marche comme un charme, mais en plus je sais ce que je fais.


Haut
 Profil  
 
Afficher les messages publiés depuis :  Trier par  
Publier un nouveau sujet Répondre au sujet  Page 1 sur 1
 [ 6 message(s) ] 

Index du forum » CPC Rulez » Z80 Coding

Le fuseau horaire est UTC+1 heure


Qui est en ligne ?

Utilisateur(s) parcourant ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Aller vers :  
cron
Powered by phpBB® Forum Software © phpBB Group
Traduit en français par Maël Soucaze.