Executing code at diferent speeds, using one timer, and no extra RAM
The PIC10F222 has no interrupts, only 2 levels of call stack, and very little memory. Techniques that are appropriate for more powerful chips may be inefficient or not work at all. To avoid 'wasting' cycles while waiting for a bit toggle you can inline code to do other things while you wait (eg. do high speed stuff while for waiting for low speed bit toggle).        

To detect when a bit changes you need to wait until the bit is in one state, then wait again for it to change to the other state. The following code executes high speed stuff whenever TMR0 bit 1 changes from low to high, and executes low speed stuff whenever bit 6 changes from low to high. No RAM is used. 

If all your 'stuff' completes within the current high speed time slot then it will be perfectly synchronized with the timer, with no wasted cycles. If it takes too long and the bit change is missed then it will have to wait for the next one. If some 'Stuff' is taking too long then you may be able to split it up into two or more parts, and do each part in a different time slot.  

// Microchip PIC10F222
#include &lt;pic.h&gt;

main ()
{
   while (1) {  
      while (TMR0 &amp; 64) {   // wait until bit 6 goes low. 
         while (TMR0 &amp; 2) { // wait until bit 1 goes low 
         }
         while (!(TMR0 &amp; 2)){ // wait until bit 1 goes high
         }
         // while waiting for bit 6, do high speed stuff
      }
      while (!(TMR0 &amp; 64)){ // wait until bit 6 goes high
         while (TMR0 &amp; 2) { // wait until bit 1 goes low
         }
         while (!(TMR0 &amp; 2)){ // wait until bit 1 goes high
         }
         // while waiting for bit 6, do high speed stuff again
      }
      // do low speed stuff
   }
}