Oh I feel like such an idiot - Note to self, double check the label in 'serin' if you change your code substantially...

Code:
' Configure the pic
@     device pic12F675, INTRC_OSC_NOCLKOUT, WDT_ON, PWRT_ON, MCLR_OFF, BOD_ON, CPD_OFF, PROTECT_OFF

N9600   con     6

CMCON        = 7
ANSEL        = 0

Relay1       VAR GPIO.5
Relay2       VAR GPIO.4

SlavePower   VAR GPIO.2
SlaveRelay1  VAR GPIO.0
SlaveRelay2  VAR GPIO.1

Serial       VAR GPIO.3

B0           var BYTE
SlaveState   VAR BYTE
WhichRelay   VAR BYTE

INPUT SlaveRelay1
INPUT SlaveRelay2
INPUT Serial

OUTPUT Relay1
OUTPUT Relay2
OUTPUT SlavePower

restart:
SlaveState = 0
PAUSEUS 1000
HIGH SlavePower

main:
    B0 = 0
    SERIN Serial, N9600, 15, testSlave, [1], B0
    LOW SlavePower
    SELECT CASE B0
        CASE 2
            GOSUB subUp
        CASE 3
            GOSUB subDown
        CASE 4
            GOSUB subStop
    END SELECT
    GOTO restart

testSlave:    
    WhichRelay = GPIO & 3
    IF SlaveState <> WhichRelay THEN
        SlaveState = WhichRelay
        SELECT CASE WhichRelay
            CASE 0
                GOSUB subStop
            CASE 1
                GOSUB SubUp
            Case 2
                GOSUB subDown
        END SELECT
    ENDIF   
goto main

subUp:
    LOW Relay2
    HIGH Relay1
    RETURN 
subDown:
    LOW RELAY1
    HIGH Relay2
    RETURN
subStop:
    LOW Relay1
    LOW Relay2
    RETURN