L'école Affichage de texte en screen 8 à partir d'un fichier
Quelqu'un aurait-il une idée de la méthode employée pour afficher un texte qui se situe dans un fichier texte (forcément ), vers un écran en screen 8, un peu comme c'est fait dans l'affaire, avec une police d'écriture différente ?
MSX un jour, MSX toujours !
Il n'y a pas 36 solutions : soit tu utilises le PRINT#1,"" du BASIC, soit tu passes par une lecture lettre à lettre, où chaque lettre est affichée par copie d'un bloc graphique correspondant.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
il y a une méthode qui permet d'avoir un autre jeu de caractéres avec le PRINT#1
ce nouveau jeu est utilisable dans tous les mode de screen
il faut redéfinir le tables des caractéres en RAM au lieu de pointer vers la ROM
mais attention on perd la place allouée par ce nouveau jeu caractéres
je donne le mode d'emploi demain car ce soir je travaille
ce nouveau jeu est utilisable dans tous les mode de screen
il faut redéfinir le tables des caractéres en RAM au lieu de pointer vers la ROM
mais attention on perd la place allouée par ce nouveau jeu caractéres
je donne le mode d'emploi demain car ce soir je travaille
Walter
Membre non connecté
Conseiller Municipal
Bon courage Jipe !
En attendant ce suspens insoutenable, j'en profite pour lancer quelques idées. N'hésitez pas à me corriger sur ce post, hein les gars ?
Ok. Merci.
Comme l'a indiqué Metalion, le texte s'affiche directement en Basic dans le mode écran 8 avec un PRINT#1:
- OPEN"GRP:" FOR OUTPUT AS #1
- PRINT#1,"bonjour"
- CLOSE #1
Pour récupérer un fichier séquentiel, on utilise l'instruction INPUT:
- OPEN"nomdufichier.extension" FOR INPUT AS #1
- INPUT#1,X$:PRINTX$
- CLOSE#1
Pour changer la police, tu peux définir un tableau avec l'instruction DIM, et placer tes caractères un par un, que tu appelleras en lisant la chaîne de texte. On définit les caractères au moyen de DATA:
Ce qui correspond à la lettre "A" {chr$(65)} classique du MSX. Ben si.., quoi... regardez les "1".
Tu peux aussi appeller ces DATA en mémoire vidéo par un VPOKE. Il suffit de les écrire par un VPEEK.
Tu peux réaliser ta police avec un logiciel de dessin (plus rapide), et la sauvegarder dans un fichier, et appeller ce dernier dans l'unique page mémoire dont tu disposes dans ce mode écran, par la fonction SET PAGE.
Les caractères seront reproduits au moyen de l'instruction COPY à la lecture de la chaîne, comme pour le tableau réalisé avec l'instruction DIM.
Le mieux, est de faire des tests, pas à pas, pour obtenir le résultat visuel désiré.
C'est l'avantage et la joie du MSX Basic : si vous vous heurtez à un problème, il y a toujours moyen de le contourner bien sûr, mais surtout de progresser dans vos programmes.
En attendant ce suspens insoutenable, j'en profite pour lancer quelques idées. N'hésitez pas à me corriger sur ce post, hein les gars ?
Ok. Merci.
Comme l'a indiqué Metalion, le texte s'affiche directement en Basic dans le mode écran 8 avec un PRINT#1:
- OPEN"GRP:" FOR OUTPUT AS #1
- PRINT#1,"bonjour"
- CLOSE #1
Pour récupérer un fichier séquentiel, on utilise l'instruction INPUT:
- OPEN"nomdufichier.extension" FOR INPUT AS #1
- INPUT#1,X$:PRINTX$
- CLOSE#1
Pour changer la police, tu peux définir un tableau avec l'instruction DIM, et placer tes caractères un par un, que tu appelleras en lisant la chaîne de texte. On définit les caractères au moyen de DATA:
00100000
01010000
10001000
10001000
11111000
10001000
10001000
00000000
Ce qui correspond à la lettre "A" {chr$(65)} classique du MSX. Ben si.., quoi... regardez les "1".
Tu peux aussi appeller ces DATA en mémoire vidéo par un VPOKE. Il suffit de les écrire par un VPEEK.
Tu peux réaliser ta police avec un logiciel de dessin (plus rapide), et la sauvegarder dans un fichier, et appeller ce dernier dans l'unique page mémoire dont tu disposes dans ce mode écran, par la fonction SET PAGE.
Les caractères seront reproduits au moyen de l'instruction COPY à la lecture de la chaîne, comme pour le tableau réalisé avec l'instruction DIM.
Le mieux, est de faire des tests, pas à pas, pour obtenir le résultat visuel désiré.
C'est l'avantage et la joie du MSX Basic : si vous vous heurtez à un problème, il y a toujours moyen de le contourner bien sûr, mais surtout de progresser dans vos programmes.
bon on commence :
en &HF91f , &HF920 , &HF921 se trouvent l'adresse du jeu de caractéres en ROM
il faut un fichier de 1024 octets contenant le nouveau jeu de caractéres
( dans mon exemple il est tronqué a 1000 car les derniers caractéres ne sont pas utilisés )
il faut charger
reserver l'espace mémoire clear 200,&hD000
&HF91F avec le contenu du port A8 and 48 / 16 pour pointer en RAM
&HF920 avec l'octet bas de l'adresse a pointer en RAM &H0
&HF921 avec l'octet haut de l'adresse a pointer en RAM &HD7
initialiser en changeant de screen
et voila maintenant même les screen graphiques utilisent ce jeu de caractéres avec un PRINT#1
l'exemple est ici il faut lancer REDEF.BAS
redef.zip
en &HF91f , &HF920 , &HF921 se trouvent l'adresse du jeu de caractéres en ROM
il faut un fichier de 1024 octets contenant le nouveau jeu de caractéres
( dans mon exemple il est tronqué a 1000 car les derniers caractéres ne sont pas utilisés )
il faut charger
reserver l'espace mémoire clear 200,&hD000
&HF91F avec le contenu du port A8 and 48 / 16 pour pointer en RAM
&HF920 avec l'octet bas de l'adresse a pointer en RAM &H0
&HF921 avec l'octet haut de l'adresse a pointer en RAM &HD7
initialiser en changeant de screen
et voila maintenant même les screen graphiques utilisent ce jeu de caractéres avec un PRINT#1
l'exemple est ici il faut lancer REDEF.BAS
redef.zip
Si c'est pour afficher du texte sans programmer (pour faire un livre )
Il existe le 'navigateur' msxdos fudebrowser 1.8 en screen 2.
Tu peux convertir du html simple avec lien et image lisible à partir du msx 1.
Pour les graphiques, il me semble que c'est du PCX 16 couleurs.
Assez excellent comme utilitaire.
Il existe le 'navigateur' msxdos fudebrowser 1.8 en screen 2.
Tu peux convertir du html simple avec lien et image lisible à partir du msx 1.
Pour les graphiques, il me semble que c'est du PCX 16 couleurs.
Assez excellent comme utilitaire.
Jipe :
en &HF91f , &HF920 , &HF921 se trouvent l'adresse du jeu de caractéres en ROM
...
et voila maintenant même les screen graphiques utilisent ce jeu de caractéres avec un PRINT#1
en &HF91f , &HF920 , &HF921 se trouvent l'adresse du jeu de caractéres en ROM
...
et voila maintenant même les screen graphiques utilisent ce jeu de caractéres avec un PRINT#1
On apprend tous les jours !!! Je ne connaissais pas cette astuce ...
Moi pour redéfinir le jeu de caractère, je charge l'image en VRAM en écrasant celle copiée à partir de la ROM.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Merci pour vos réponses, mais j'ai été imprécis dans ma question, vu que je tente d'aborder le problème côté assembleur (oui je sais je pars dans des trucs pas possibles ).
Je m'imagine que la police de caractères puisse être dans la 2ème page de VRAM, placée en gros comme en SCREEN 1 (en comptant en blocs de 8x8, le A serait au bloc 65, correspondant à son code ASCII). Après, lors de la lecture des caractères constituant les mots de la phrase, il suffit de faire afficher le bloc correspondant à l'endroit voulu par une commande VDP d'après moi.
Dans l'affaire (puisque j'essaie de comprendre comment fonctionne le système du jeu), les textes sont dans le fichier PHR.TEX, je ne sais pas si le programme charge quelque part en RAM la totalité des phrases, ou si le programme fait un accès à ce fichier à la demande (ce qui doit économiser de la RAM) pour afficher la phrase au moment voulu. Comment se réalise l'import du texte en assembleur ?
Je m'imagine que la police de caractères puisse être dans la 2ème page de VRAM, placée en gros comme en SCREEN 1 (en comptant en blocs de 8x8, le A serait au bloc 65, correspondant à son code ASCII). Après, lors de la lecture des caractères constituant les mots de la phrase, il suffit de faire afficher le bloc correspondant à l'endroit voulu par une commande VDP d'après moi.
Dans l'affaire (puisque j'essaie de comprendre comment fonctionne le système du jeu), les textes sont dans le fichier PHR.TEX, je ne sais pas si le programme charge quelque part en RAM la totalité des phrases, ou si le programme fait un accès à ce fichier à la demande (ce qui doit économiser de la RAM) pour afficher la phrase au moment voulu. Comment se réalise l'import du texte en assembleur ?
MSX un jour, MSX toujours !
Les fichiers textes ne sont jamais bien grands, comparés aux données graphiques ou musicales.
La meilleure solution reste donc de les charger en RAM.
Ceci dit, pour répondre à ta question, il existe des routines dans le BIOS pour initialiser/lire/écrire des données dans un fichier, de manière très similaire aux commandes OPEN, READ, PRINT du Basic.
La meilleure solution reste donc de les charger en RAM.
Ceci dit, pour répondre à ta question, il existe des routines dans le BIOS pour initialiser/lire/écrire des données dans un fichier, de manière très similaire aux commandes OPEN, READ, PRINT du Basic.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
pour ton probléme il faut se limiter aux caracteres affichable pour prendre moins de place
ensuite décomposer la phrase en lettres avec MID$ (en basic)
puis L=ASC("X") ou X est la lettre lue
ensuite faire un COPY(L*8,0)-(L*8+8,8),1 TO (x,y),0
puis incrémenter x de 8 pour la prochaine lettre
en machine lire directement l'octet de la phrase et déterminer un caractére de fin de phrase
ensuite décomposer la phrase en lettres avec MID$ (en basic)
puis L=ASC("X") ou X est la lettre lue
ensuite faire un COPY(L*8,0)-(L*8+8,8),1 TO (x,y),0
puis incrémenter x de 8 pour la prochaine lettre
en machine lire directement l'octet de la phrase et déterminer un caractére de fin de phrase
Oui, c'est ce que je m'étais imaginé pour l'affichage. C'est plus l'import du texte qui me gêne aux entournures... J'ai pas de doc sur la gestion de disque en assembleur, si ce n'est quelques routines BIOS (BLTMD pour ne citer que celle-là) qui m'ont l'air de nécessiter plusieurs opérations de fichiers au préalable (comme en Basic avec OPEN, MAXFILES, etc).
MSX un jour, MSX toujours !
il faut avoir le livre du disque MSX de Manu Devos de chez BCM
on y explique les routines basic et dos spécifiques au disques
si tu travaille a partir du basic avec des bload c'est plus simple a gérer
on y explique les routines basic et dos spécifiques au disques
si tu travaille a partir du basic avec des bload c'est plus simple a gérer
Ben non, justement, Jipe ... Granced il veut travailler en accès disque à partir de l'assembleur.
MSX1: Daewoo DPC-200 / Yamaha CX5M
MSX2: Sony HB-F9P
MSXVR
Vidéo: V9990 (GFX-9)
Audio: MSX-Music (FM-PAC) / MSX-Audio (Audiowave) / OPL4 (Monster Sound FM Blaster) / OPNB (Neotron)
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie