I think that's what he did. It should work over a pretty wide range,
100:1 or so, if the details are handled right.The integrator has to be kept from railing - you've gotta fix the drift and constant-of-integration problems - which implies some DC negative feedback, which limits the low-frequency accuracy. And the amplitide does drop with frequency, so the HF signal gets too small eventually and the comparator gets into trouble. You can do range switching and such to extend the range, if you can tolerate the gear-switching glitches.
You can do a form of hysteresis that adds no phase shift. Arrange for the comparator to always switch at zero, and push the positive-slope and negative-slope offsets away from that.
Another way to do this is to have three comparators: positive, zero, and negative, and do a little logic on them.
Hey, this should work with a single comparator: use the transitions of the square wave to arm a state machine - that will be at the triangle peaks - and fire it based on zero-crossing transitions of the comparator.
I guess one could use multiple integrators to span a wide range, and use a state machine to select the best one at any given frequency. That could be done glitchlessly.
Of course, it could be done digitally, PLL or some sort of DSP thing.
We had a similar thought a while back: one could, in an FPGA, make a huge-range DDS frequency synthesizer, microHertz to megaHertz. Then - the tricky part - close a servo loop to set the DDS to exactly track some external input, like the square wave in this case. Once it's sync'd up, you can synthesize any waveform at any frequency or phase.
I suppose the very exact definition of "90 degree phase shift" is debatable for a time-varying square wave. Sampling theorem and all that. Even an ideal integrator+comparator gets weird when the input frequency changes.
John