First impression
1) Clock suspended while RUN=0:
Set up your clock. In Assembly when I want an alternating high/low you can test a pin, and if high make low and vice versa. I usually just XOR (exclusive OR). Let's say, GPIO,0 is the pin you want to toggle. If GPIO,0 = 0 and GPIO is XOR'd with 0x01, none of the other pins on GPIO will change, except GPIO,0 --> high. Now, if that is repeated, then GPIO,0 --> low and so forth.
Now assume the "RUN" signal is on a pin with interrupt on change ("IOC"). Set that up to happen on a falling edge. When that interrupt fires, stop the clock, be sure to preserve its state, and make GPIO,0 low. Change the IOC to "rising edge". Now on the next interrupt restore the stored clock state on GPIO,0. The clock's previous state is preserved. Most PIC's (all of the ones with interrupts that I know of) can alternate falling edge and rising edge for IOC pins. If you set that up, you will not need to change the edge polarity during an interrupt.
How you preserve the clock's state depends on how that clock is generated. It may not be necessary to do anything while operation is suspended. TMR1 acts like that. Or, you can simply copy GPIO to a register on the falling interrupt. That will preserve the clock state at the moment of interrupt. You cannot simply restore that state by moving the register to GPIO, as some of the other pins/bits may have changed. You can bit test bit <0> of that register (as given in the example above) and if high, set clock/GPIO,0 high, otherwise, set clock/GPIO,0 low. (In Assembly, there are ways to do such saves without adding a new register, but in C, they do not work because you do not know everything that happens between the two state changes.)
2) If clock is not actually suspended, but simply not expressed while RUN is low, then a slightly different solution is needed.