I've tried that too. If I run this script:
from hub import display
from utime import sleep
display.clear()
sleep(1)
display.pixel(0,0,100)
sleep(1)
display.rotation(90)
sleep(1)
display.pixel(0,0,100)
sleep(1)
display.rotation(90)
sleep(1)
display.pixel(0,0,100)
sleep(1)
display.rotation(90)
sleep(1)
display.pixel(0,0,100)
sleep(1)
display.rotation(90)
sleep(1)
I get this result:
I'm at a loss.
Ah, and if I run it twice in a row without doing a soft reset in between it does this...
---
Edit: Ah the reason for the first result being super weird (jumping 180) seems to be some internal state that only gets applied after the first rotate call, if I do a hard reset then run the script it only jumps 90 and otherwise follows the same pattern as the final gif.