hehe, you're just close.... you just forget a GOTO after the SELECT CASE statement.

Code:
CMCON = 7 'disable comparators
TRISA = %11111111 'PortA inputs
TRISB = %00000000 'Portb outputs

'Declare and init vars

sw0 var porta.0
sw1 var porta.1
sw2 var porta.2
sw3 var porta.3

led0 var portb.0
led1 var portb.1
led2 var portb.2
led3 var portb.3

MaskSwitch var byte 

'Set all leds low
portb = %00000000 


Start:

MaskSwitch = porta & $0F 'Isolate PortA.0 thru PORTA.3
                                          ' & : Logical AND bitwise operation
                                          ' $0F : %00001111

Select Case Maskswitch
     case 1 'or PORTA = %00000001
         gosub sw0_proc
     case 2 'or PORTA = %00000010
          gosub sw1_proc
     case 4 'or PORTA = %00000100
          gosub sw2_proc
     case 8 'or PORTA = %00001000
          gosub sw3_proc
End select

Goto start




sw0_proc:
     While sw0    
           LED0 = 1
     Wend
     Led0=0
     Return

sw1_proc:
     While sw1
           LED1 = 1
     Wend
     Led1=0
     Return


sw2_proc:
     While sw2    
           LED2 = 1
     Wend
     Led2=0
     Return

sw3_proc:
     While sw3    
           LED3 = 1
     Wend
     Led3=0
     Return