This is pretty old, but should work if you have a standard 12-bit type Sony IR transmitter. It's one of the simplest routines I have for decoding Sony IR.

Code:
DEFINE OSC 4

IR_PULSE VAR BYTE(12) ' IR data received
INDEX VAR BYTE        ' Index pointer
DBYTE VAR BYTE        ' IR data received

Main:
   PULSIN PORTC.3,0,IR_PULSE         '// Read-in start pulse
   IF (IR_PULSE < 200) OR (IR_PULSE = 0) THEN Main

Verify:                              '// Read, Decode, then verify data
   FOR Index = 0 TO 11               '// Setup to read-in 12 pulses
    PULSIN PORTC.3,0,IR_PULSE[Index] '// Read 12 low-going pulses on C3
   NEXT Index                        '// Loop x times
   
   DBYTE = $7F                       '// Start with all 1's and find each 0
   
   FOR Index = 0 TO 6                '// Get 7 "data" bits
    IF IR_PULSE[Index] < 100 THEN DBYTE.0[Index]=0 '// Less than 1mS = 0
   NEXT Index
   
   DBYTE = DBYTE + 1                 '// Button code #1 = 0, Button #2 = 1, so add 1
                                     '// for actual button pressed for display
  
   HSEROUT ["Button #",#DBYTE," was pressed",13,10]
   GOTO Main
   
   END
It's easy to change to pretty much any I/O-pin you want.