PRINT did not work very well for Greedy Mouse due that way its scaling its graphics. But giving you idea, here some code:
FUNCTION PaintText$: txt$, color#, x, y, xspot=-1, yspot=-1, alpha=1, zoom#=-1
STATIC font$="ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890:/-._?@,ÀÁÂÃÄÅÆÈÉÊËÌÍÎÏŸÑŠŽÐÒÓÔÕÖØÙÚÛÜÞߌÝÇ"
STATIC aceii[] AS ExtCol
STATIC created=0
LOCAL fontsize=46
LOCAL txt2$=txt$
LOCAL notstranslate=0
IF zoom#<0.05 THEN RETURN
alpha=1
LOCAL txt2$=""
IF LEFT$(txt$, 1)<>"&"
IF LEFT$(txt$, 2)="**"
txt$=UCASE$(RIGHT$(txt$, LEN(txt$)-2))
txt2$=txt$
ELSEIF LEFT$(txt$, 1)<>"*"
txt$=LEFT$(txt$, 3)
txt$=GetStr$(txt$, "lan")
IF txt$="" THEN txt$=txt2$
txt$=UCASE$(txt$)
ELSE
txt$=RIGHT$(txt$, LEN(txt$)-1)
ENDIF
IF txt2$="" THEN txt2$=StringField$(txt$, 2, "|")
IF txt2$<>"" THEN txt$=StringField$(txt$, 1, "|")
ELSE
txt$=UCASE$(RIGHT$(txt$, LEN(txt$)-1))
txt2$=txt$
notstranslate=1
ENDIF
IF PLATFORMINFO$("")="IPHONE" OR SETTING_DETAILS<2
IF S_Status$="Play" AND SHOWTEXT=0 THEN color#=RGB(255, 255, 255)
ENDIF
IF created=0
created=1
fontid=imageGet("font")
DIM aceii[256]
LOCAL x=0, y=0
FOR i=0 TO LEN(font$)
LOCAL b=ASC(MID$(font$, i, 1))
aceii[b].l=i
aceii[b].x=x
aceii[b].y=y
x=x+46;
IF x>46*11-5
x=0
y=y+fontsize
ENDIF
NEXT
ENDIF
LOCAL i,XX, YY, WW, HH
// some alpha code in that way I prefer. Not a issue in the real alphamode, its just me :-D
LOCAL h#=50 //*zoom#
LOCAL w#=LEN(txt$)*50 //*zoom#
// math placement for hotspots
IF xspot=-1 THEN PX=x#
IF xspot=0 THEN PX=ScreenWidth/2.0-(w#*zoom#/2.0)+x#
IF xspot=1 THEN PX=ScreenWidth-w#*zoom#-x#
IF yspot=-1 THEN PY=y#
IF yspot=0 THEN PY=ScreenHeight/2.0-(h*zoom#/2.0)+y#
IF yspot=1 THEN PY=ScreenHeight-h#*zoom#-y#
PW=w
PH=h
IF txt2$<>"" AND notstranslate=0 THEN PY=PY-50*zoom#
IF device$<>"ipad" AND SETTING_DETAILS=2
SetAlphaMode(alpha)
ELSE
SetAlphaMode(1)
ENDIF
LOCAL size=INTEGER(50*zoom)
LOCAL fsize=50
LOCAL tasc=0
//txt$=txt$
SMOOTHSHADING TRUE
IF fontsize<30 THEN SMOOTHSHADING FALSE
FOR i=0 TO LEN(txt$)-1
tasc=ASC(MID$(txt$, i, 1))
IF tasc<>32
IF i>0 THEN POLYNEWSTRIP
POLYVECTOR PX+size, PY, aceii[tasc].x+fontsize, aceii[tasc].y, color
POLYVECTOR PX, PY, aceii[tasc].x, aceii[tasc].y, color
POLYVECTOR PX+size, PY+size, aceii[tasc].x+fontsize, aceii[tasc].y+fontsize, color
POLYVECTOR PX, PY+size, aceii[tasc].x, aceii[tasc].y+fontsize, color
ENDIF
IF S_Status$<>"Help"
PX=PX+size
ELSE
PX=PX+size/1.2
ENDIF
NEXT
SMOOTHSHADING TRUE
IF txt2$<>"" THEN RETURN txt2$
RETURN ""
ENDFUNCTION
STARTPOLY fontid, 2
PaitText$("stars:", RGB(255, 255, 255), score1.x, score1.y, score1.alignx, score1.aligny, 0.8, SCALING#); //POLYNEWSTRIP
ENDPOLY
The above code is as used in Greedy Mouse, its of course not perfect (due its uses some features that is not there), but its should give you ideas to create your own PRINT function.
PS. but this this can been a bug, so its nice to move its to the bug forum :-D, but I still recommered to write your own really.