I also use a 2803 for relay control but use a PGA2320 for volume control. This is very much a work in progress but here is a snippett of code I use to change inputs and outputs. My switches however are a webpage done with a Siteplayer.
Code:
switches:
      INTCON.7 = 0
      SerOut2 PORTC.6,SPbaud, [$00, $C7, $1E]       
      SerIn2 PORTC.7,SPbaud, 100, mainloop, [power,ipod,computer,mute,bookshelf,subwoofer,volup,voldown]'
      INTCON.7 = 1
      checkswitches = 0
      if power = 1 then 
           high relay6
           high relay5
           INTCON.7 = 0
           write 1, power
           INTCON.7 = 1
           gosub dostuff
           else 
           low relay6
           low relay5
           INTCON.7 = 0
           write 1, power
           INTCON.7 = 1
           endif
    return    
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
         'subroutine 
    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

dostuff:
      mydata.0 = 0
      mydata.1 = ipod
      mydata.2 = computer
      mydata.3 = mute
      mydata.4 = bookshelf
      mydata.5 = subwoofer
      mydata.6 = volup
      mydata.7 = voldown
      select case mydata
            
            case 18
                 low relay1    'relays for speaker output
                 low relay2    'relays for speaker output
                 low relay7    'relays for Audio In
                 low relay8    'relays for Audio In
            
            case 20
                 low relay1   'relays for speaker output
                 low relay2   'relays for speaker output
                 high relay7    'relays for Audio In
                 high relay8    'relays for Audio In
                 
            
            case 34
                 high relay1    'relays for speaker output
                 high relay2    'relays for speaker output
                 low relay7   'relays for Audio In
                 low relay8   'relays for Audio In
            case 36
                 high relay1   'relays for speaker output
                 high relay2   'relays for speaker output
                 high relay7   'relays for Audio In
                 high relay8   'relays for Audio In
            case 82,84,98,100
                 volup = 0
                 INTCON.7 = 0
                 SerOut2 PORTC.6, 84, [$00,$81,$24,volup]
                 INTCON.7 = 1
                 gosub Increasegain
                 gosub Post_Gain
                 
            case 146,148,162,164         
                 voldown = 0
                 INTCON.7 = 0
                 SerOut2 PORTC.6, 84, [$00,$81,$25,voldown]
                 INTCON.7 = 1
                 gosub Decreasegain
                 gosub Post_Gain
                 
            end select
            INTCON.7 = 0
            write 2, ipod
            write 3, computer
            write 4, mute
            write 5, bookshelf
            write 6, subwoofer
            INTCON.7 = 1 
            return
Done somewhat like yours. Hope this helps..