for graphics mode to detect text i use something like this in my games
dim screen$(22) = eg y=height
store my date in a varable to width (such as 40)
so above is a 40 wide by 24 height....
i use mid$(screen$(height),width,1) to either store or retrieve my data screenmem=screen(x,y)
this way i can use a loop to update then display
for height=1 to 22: for width=1 to 40:locate height,width:print mid$(screen$(height),width,1)next width:next height:_display
this way I can read my ascii characters and write them. then display one entire frame
example:
DIM SCREENMEM$(22)
DISPLAYDATA: FOR K% = 1 TO 22: FOR L% = 1 TO 40: LOCATE K%, L%: B$ = MID$(SCREENMEM$(K%), L%, 1)
IF B$ = "W" THEN B$ = "Û": COLOR COLDATA%(1)
IF B$ = "w" THEN B$ = "±": COLOR COLDATA%(2)
IF B$ = "." THEN B$ = "°": COLOR COLDATA%(3)
IF B$ = "r" THEN B$ = "O": COLOR COLDATA%(4)
IF B$ = "d" THEN B$ = "": COLOR COLDATA%(5)
IF B$ = "X" THEN B$ = "": COLOR COLDATA%(6): MX% = K%: MY% = L%
PRINT B$;: NEXT L%: NEXT K%: LOCATE 23, 15: COLOR 15: PRINT "TIME ¯"; LEVTIM%; " ";: RETURN
I use on timer to make my screen automatically update and when ever i change data all i do is
MID$(SCREENMEM$(K%), L% - 1, 1) = "r"
you can make a simple print string by b$="hello world": mid$(screenmem$(y),x,1)=b$
not sure if this will do what you wanted... all characters will be located on a 8x8 or 8x16 matrix using my method and will detect the character...