forum

Navigation du forum
Vous devez vous identifier pour créer des messages et des sujets.

Comment lire les caractères sur l'écran en BASIC (sans Assembleur)?

Salut tout le monde!
Comment pet-on lire les caractères sur l'écran en Locomotive BASIC (sans aucun Assembleur) avec au plus avec des routine dans la ROM?
J'ai vu des petites routines Assembleur qui font cela mais je dois le faire en BASIC.
Moi, je n'ai trouvé aucune solution. Donc j'ai créé un buffer pour me souvenir des caractères mais je cherche toujours une solution meilleure.

Hello, je n'ai pas compris si tu veux mémoriser un caractère dans un buffet ou si tu désires savoir quel caractères est situé sur un endroit de l'écran.
Dans le cas ou tu veux mémoriser un caractère affiché à l'écran dans une matrice sans passer pas l'assembleur, il n'y à pas beaucoup de solution.
En voici une:

10 MODE 2
20 LOCATE 1,3:PRINT "Tapez la lettre @ mémoriser: ";
30 a$=INKEY$:IF a$="" THEN 30
40 LOCATE 1,1:PRINT a$
50 adr=&C000
60 FOR a=0 TO 7
70 matrice(a)=PEEK(adr+a*&800)
80 NEXT
100 MODE 2
110 FOR a=0 TO 7
120 POKE (adr+a*&800),matrice(a)
130 NEXT
140 LOCATE 1,10  

Le programme te demande la lettre à mémoriser, puis une boucle permet de placer les valeurs dans une matrice (buffet) 
Ensuite il affiche la matrice pour montrer que le caractère est bien mémorisé

Pour savoir quel est le caractère à un emplacement précis de l'écran, sur CPC 6128 il existe la commande COPYCHR$

5 CLS
10 LOCATE 1,1:PRINT CHR$(230)
20 LOCATE 1,1:a$=COPYCHR$(#0)
30 LOCATE 1,9:PRINT a$

Sur 464 il faut passer par l'assembleur et appeler le vercteur &BB60. Je ne connais pas d'autres méthodes mais le code source serait petit à faire!

Je remonte ce vieux topic.  Pour mon prochain deuligne j’utilise la commande COPYCHR$ qui fonctionne bien mais qu’est-ce que c’est lent! Pour accélérer et quand c’est possible mieux veut finalement tester un pixel ou un octet. Ça peut parfois suffire et c’est bien plus rapide.