MSX Village forum

L'école Affichage de texte en screen 8 à partir d'un fichier

granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1500

Le 14/01/2010 à 12h34
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 :D ), 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 ! :D
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 14/01/2010 à 14h45
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)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 14/01/2010 à 19h17
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


:noel
Site web    
Walter Membre non connecté

Conseiller Municipal

Rang

Avatar

Groupe : compte ++

Inscrit le : 02/10/2009 à 19h33

Messages: 1883

Le 14/01/2010 à 20h01
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:

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". :gne

Tu peux aussi appeller ces DATA en mémoire vidéo par un VPOKE. Il suffit de les écrire par un VPEEK. :D

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.
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 15/01/2010 à 14h21
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


:noel
Site web    
BibiZen Membre non connecté

Maire-adjoint

Rang

Avatar

Inscrit le : 03/10/2009 à 18h34

Messages: 1455

Le 15/01/2010 à 18h17
Si c'est pour afficher du texte sans programmer (pour faire un livre :heink )
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.
E-mail    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 15/01/2010 à 19h51
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


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)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 16/01/2010 à 12h51
je connais aussi cette solution surtout utilisée en screen 1 mais si on change de mode de screen on perd tout le jeu de caractéres


:noel
Site web    
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1500

Le 19/01/2010 à 10h11
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 :D ).

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 ? :hum


MSX un jour, MSX toujours ! :D
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 19/01/2010 à 11h15
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.


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)
   
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 19/01/2010 à 13h53
dans l'affaire le jeu de caractéres est juste "doublé" ,une pratique courante sur MSX

sous basic ça donne:

preset(0,0):print #1,"phrase"
preset(1,0):print #1,"phrase"


:noel
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 19/01/2010 à 14h04
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


:noel
Site web    
granced Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 09/10/2009 à 09h18

Messages: 1500

Le 19/01/2010 à 14h15
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 ! :D
Site web    
Jipe Membre non connecté

Maire-adjoint

Rang

Avatar

Association

Inscrit le : 02/10/2009 à 19h41

Messages: 10328

Le 19/01/2010 à 14h23
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


:noel
Site web    
Metalion Membre non connecté

Conseiller Municipal

Rang

Avatar

Inscrit le : 23/12/2009 à 15h32

Messages: 1484

Le 19/01/2010 à 15h53
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