Instead of printing X and Y, try printing CHR$(X) and CHR$(Y). That's how you convert a number into a character. If you want to know which character gives what number (or if you just want to do the opposite of CHR$), try ASC("[your character]").
I hope I helped!
Yes. You'd need to make an engine that places a character on the screen depending on the number read.
Something like:
DIM MAP[3,3]
FOR Y=0 to 2
FOR X=0 to 2
READ MAP[X,Y]
LOCATE X,Y,0
?CHR$(MAP[X,Y])
NEXT
NEXT
DATA 1,1,1
DATA 1,0,1
DATA 1,1,1
Of course, if you're doing this, the data for a filled block won't be 1, so get ready to test CHR$ a lot.