CPC Rulez
https://cpcrulez.fr/forum/

Redéfinition des caractères en assembleur
https://cpcrulez.fr/forum/viewtopic.php?f=4&t=6304
Page 1 sur 1

Auteur :  secmast [ 10 Jan 2020, 12:25 ]
Sujet du message :  Redéfinition des caractères en assembleur

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

Auteur :  hERMOL [ 10 Jan 2020, 17:42 ]
Sujet du message :  Re: Redéfinition des caractères en assembleur

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

Auteur :  secmast [ 10 Jan 2020, 21:42 ]
Sujet du message :  Re: Redéfinition des caractères en assembleur

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

Auteur :  hERMOL [ 11 Jan 2020, 08:27 ]
Sujet du message :  Re: Redéfinition des caractères en assembleur

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

Auteur :  secmast [ 11 Jan 2020, 11:31 ]
Sujet du message :  Re: Redéfinition des caractères en assembleur

Merci d'avoir pris le temps pour un réponse bien complète.
Je ferai ça ce soir et je te tiens au courant.

Auteur :  secmast [ 11 Jan 2020, 21:51 ]
Sujet du message :  Re: Redéfinition des caractères en assembleur

Merci Hermol

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

Page 1 sur 1 Le fuseau horaire est UTC+1 heure
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/