Ok so I got it wrong!
It's actually camera output that gets targetted with negative numbers, however you could make a camera and image, then disable the backdrop and never sync this camera - so you might avoid any performance drain from the camera update, and you'd hijack the output for paste image etc... check this demo:
sync on : sync rate 0
set display mode desktop width(),desktop height(),32
create bitmap 1,screen width(),screen height()
set current bitmap 0
make camera 1
set camera to image 1,1,desktop width(),desktop height()
backdrop off 1
text 0,0,"*"
get image 100,0,0,16,16,1
cls
do
set current bitmap 0
cls 128
sync
off=0
while spacekey()=0
set current bitmap 1
paste image 100,rnd(screen width()),rnd(screen height())
get image 2,0,0,screen width(),screen height()
set current bitmap 0
paste image 2,0,0,0
text 0,0,str$(screen fps())+" : Using bitmap, press space to continue."
SYNC MASK 0x00000001
sync
endwhile
while spacekey()=1 : endwhile
set current bitmap 0
cls 255
sync
off=0
while spacekey()=0
set current bitmap -1
paste image 100,rnd(screen width()),rnd(screen height())
set current bitmap 0
paste image 1,0,0,0
text 0,0,str$(screen fps())+" : Using image, press space to continue."
SYNC MASK 0x00000001
sync
endwhile
loop
So it uses a bitmap and draws randomly to it, GET's the screen then pastes that to bitmap 0 - a ungodly ZERO frames per second on my PC. Hold space for ages until no more stars appear, then release, that'll take it to the next test.
Then it uses a camera to provide an image buffer instead of a bitmap, so no need for a GET image - I get over 1000fps with this.
Promising huh!