Here's a tip erico.
Create a virtual screen the size of the caanoo screen. Use that screen to draw everything to. Then use the normal screen and either use POLYVECTOR to scale or STRETCHSPRITE or ZOOMSPRITE to display the image.
Here's a simple demo to show how to scale (even 10 all round). To scale to rectangular screens you might need to use SCALE_X and SCALE_Y variables.
SETSCREEN 640,640,0
CREATESCREEN 1,999,64,64
GLOBAL scale%=10 // Scales the virtual screen by factor of 10
WHILE TRUE
// Use virtual screen to draw on
USESCREEN 1
// Draw rects randomly by pressing SPACE
IF KEY(57)
FOR n=0 TO 300
DRAWRECT RND(64),RND(64),RND(16),RND(16),RGB(RND(255),RND(255),RND(255))
NEXT
ENDIF
PRINT "PRESS",10,10
PRINT "SPACE",10,20
// Draw the scale virtual screen on the actual screen
scale_screen()
// Draw original screen sprite, so you can see the scaling
DRAWSPRITE 999,0,0
SHOWSCREEN
WEND
// Scale virtual screen scene
FUNCTION scale_screen:
USESCREEN -1
SMOOTHSHADING FALSE
// Render whole scene in scaled screen
STARTPOLY 999
POLYVECTOR 64*scale,0,64,0
POLYVECTOR 0,0,0,0
POLYVECTOR 0,64*scale,0,64
POLYVECTOR 64*scale,64*scale,64,64
ENDPOLY
ENDFUNCTION
Hope that helps make it a bit clearer.
[EDIT] Or you can use the PRESCALER function from the latest versions of GLB. Call it at the start of the code and then just draw everything as normal. Supposedly. I've not used it and I don't know what impact it has on gamespeed. USESCREEN can also affect FPS, so be forewarned.