Well...
Set Graphics Card is discontinued so I'd remove that.
I have no clue what you doing at the beginning with the display that gets set twice.
Here are the main issues with your code, the bit your talking about. I edited it so it works:
gosub cubito
cls
gosub cubote
cls
gosub cubito
end
cubito:
sync rate 120 // this is high
sync on
backdrop on // my add
make object cube 4,2
position object 4, 20, 40, 30
color backdrop 0, 0
position camera 20, 20, -54
do
xrotate object 4,wrapvalue(y)
zrotate object 4,wrapvalue(y)
inc y
// y will be far higher second time round because its not reset
// so it will never exit
if y = 794 then exit
sync
loop
delete object 4
backdrop off //<<<<< you turn it off, but no on again
autocam off
sync off
cls
return
cubote:
sync rate 170 // this is even higher
sync on
backdrop on // my add
make object cube 7,10
position object 7, 30, 40, 40
color backdrop 0, 0
position camera 20, 20, -54
do
xrotate object 7,wrapvalue(y)
zrotate object 7,wrapvalue(y)
inc y
// y will start from 794 because its not reset
if y = 3900 then exit
sync
loop
delete object 7
backdrop off
autocam off
sync off
return
So to answer your question, turning
Backdrop Off but not on again was your issue.