Your method written correctly (by the book):
Make Object Cube 1, 100.0
Do
If Upkey() = 1 Then Move Object 1,1.0
If Rightkey() = 1 Then Yrotate Object 1, WrapValue(Object Angle Y(1)+1.0)
IF Leftkey() = 1 Then Yrotate Object 1, WrapValue(Object Angle Y(1)-1.0)
Loop
Rotating in different directions is simply a case of adding or subtracting the amount of rotation you require. As Digger412 said, if the object's angle value goes below 0 or above 359 then you get an error - hence the use of WrapValue().
Your Wait Key and End are redundant as your main Do..Loop code will never be exited (though many people, like me, do leave the End in through habit).
Speed is also an issue - like Muriako says - but you also have the option to decrease the amount of rotation too.
Angles and 3D distances are floats - not integers like you have used. As such, you can also use something like:
Yrotate Object 1, WrapValue(Object Angle Y(1)+0.01)
If you want to follow the rules
exactly, then you should also use floats even when you are using whole number values - eg: 1.0 and 2.0 instead of 1 and 2. It does work fine with integers, the command just
expects a float.
TDK