I got it to work eventually. The problem is the latest camera created always overlays any previous ones. You can't do a 'bring-to-front' type thing. I got around it by reducing the view from the unwanted camera to a one pixel screen at top left.
Why isn't there a 'hide camera' function.
You can't move a camera view off screen either as it simply fills whole screen instead.
sync on
make camera 1
color backdrop 1,rgb(255,0,0)
position camera 1,-100,0,0
set camera range 1,2000
make camera 2
color backdrop 2,rgb(0,255,0)
position camera 2,0,0,-200
set camera view 2,0,0,0,0
set camera range 2,2000
i=1
set current camera i
make object sphere 1,100
make object cube 2,100
position object 2,-100,0,-100
do
if inkey$()="1" then i=1 : set camera view 2,0,0,0,0 : set camera view 1,-1,-1,-1,-1 : set current camera 1
if inkey$()="2" then i=2 : set camera view 1,0,0,0,0 : set camera view 2,-1,-1,-1,-1 : set current camera 2
control camera using arrowkeys i,1,1
text 0,0,str$(i)+" Pos :"+str$(camera position x(i))+","+str$(camera position y(i))+","+str$(camera position z(i))
sync
loop