Heh, never even thought about SELECT CASE

So something more like this then.

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
    pauseus 1
    SERIN Serial, N9600, 10, main, [1], B0
    IF B0 > 1 THEN LOW SlavePower
    if B0 == 2 THEN GOSUB subUp
    IF B0 == 3 THEN GOSUB subDown
    IF B0 == 4 THEN GOSUB subStop
    IF B0 > 1 THEN GOTO restart
    
    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