Thanks Tetra, I've just been trying some things with banks too. Using them for image/texture buffers but blitz is way too slow, my solution before was using lots of global arrays, even a large number of local variables in a function could cause noticable slowdown from what I remember so in functions that were called a lot (triangle drawing mainly I think) I found it faster to make all the variables global. Not a nice solution but it's how I got the speed up.
Having a look at your rotation, it's still suffering from gimbal lock, replacing the call to rotate the turtle with:
If ii<90 Then
Rotate_Frame_By( turtle, 0.0, 1.0, 0.0 )
Else
;change this to rotate around the x axis by 1.0 instead of the z axis
Rotate_Frame_By( turtle, 0.0, 0.0, 1.0 )
End If
ii=ii+1
with the second rotate to rotate around x axis instead ends up with the same result as rotating around the z axis.