Here's the code that I'm working with.
Code:
@ Device PIC10F222, IOFSCS_8MHZ, MCPU_OFF, WDT_OFF, PROTECT_OFF, MCLR_OFF


OPTION_REG = %11010010 'GPWU_OFF, GPPU_OFF, TOCS_OFF, TOSC_HIGH>LOW, PSA_TMR0, PS_1:8

ADCON0 = 0
TRISIO = 0
GPIO = 0

Time var byte

pause 100

Main:
    OSCCAL = 2
    GOSUB FADE1A
    PAUSE 1000
    OSCCAL = 2
    GOSUB FADE2A
    PAUSE 1000
    OSCCAL = 2
    GOSUB FADE3A
    PAUSE 100
    
GOTO MAIN




Fade1A:
    FOR TIME = 0 TO 250
    IF TIME < OSCCAL THEN
        IF TIME < 80 THEN
            GPIO = 7
        ELSE
            GPIO = 6
        ENDIF
    ELSE
        GPIO = 7
    ENDIF
    NEXT TIME
    OSCCAL = OSCCAL + 2
    IF OSCCAL = 250 THEN
        OSCCAL = 2
        GOSUB FADE1B
        RETURN
    ENDIF
    GOTO FADE1A
Fade1B:
    FOR TIME = 0 TO 250
    IF TIME < OSCCAL THEN
        GPIO = 7
    ELSE
        IF TIME > 170 THEN
            GPIO = 7
        ELSE
            GPIO = 6
        ENDIF
    ENDIF
    NEXT TIME
    OSCCAL = OSCCAL + 2
    IF OSCCAL = 250 THEN        
        RETURN
    ENDIF
    GOTO FADE1B
 
'the other two subroutine blocks are the same as above 
'with GPIO = 5 and GPIO = 3

It looks like it might be possible to use POKE and PEEK to access the RAM area that is restricted... I'm going to play around abit, I could get away with 1 more byte var, but I would love to have 2 more!