I modified your prog. a bit, if you look up slowly in the prog., until you are more than looking straight up, the rotation of the "room" will look like the way when you tilt your head back real far.
ps#=0
sync on
sync rate 0
make object sphere 1,3000
set object 1,0,0,0
make matrix 1,1000,1000,10,10
position matrix 1,0-500,0,0-500
position object 1,0,0,0
position camera 0,200,0
do
if upkey()=1 then xa#=wrapvalue(xa#+2.0)
if downkey()=1 then xa#=wrapvalue(xa#-2.0)
if leftkey()=1 then ya#=wrapvalue(ya#-2.0)
if rightkey()=1 then ya#=wrapvalue(ya#+2.0)
if Inkey$()="=" then ps#=ps#+1
if Inkey$()="-" then ps#=ps#-1
cy#=wrapvalue(curveangle(ya#,cy#,12.0))
cx#=wrapvalue(curveangle(xa#,cx#,12.0))
yrotate camera wrapvalue(cy#)
xrotate camera wrapvalue(cx#)
move camera ps#
sync
loop
www.CyberLuke.com