Correct, dave confirms 1KHz here
With refresh (0) I do a very naïve frame limiter: I manage the waiting in the update myself, just an empty while loop watching elapsed time since loop start, waiting for it to pass 16ms (I run at 60Hz).
Running higher than 50fps means you will need to do partial screen updates (easiest way is to use the Sprite system). 60Hz with ~175 rows changing, 200Hz with ~75 rows changing, and a ramp in between those.
I do not use the SDK wait function for many reasons, but mostly because it winds down the CPU to energy saving speed, and when code resumes the CPU ramps again, this takes multiple ms of time. An empty while loop keeps the CPU running at normal speeds so I get better performance with an empty while loop.
I agree with Nic it's better to use buttonIsPressed() and not InputHandler() for this.