Thanks for that Ron Marcus. Yep the data comes in when the clock does a high to low transition, is least signicant bit first, and is 11 bits long (1 start bit, 8 data bits, 1 parity bit and 1 stop bit).

So, hopefully something like this will work:

FOR A = 1 to 11
loop1: IF clock = 1 THEN GOTO loop1
IF A=1 OR A=10 or A=11 THEN GOTO loop2 'No need to store start, stop or partiy bits
Key_data.7 = dataline
Key_data = Key_data/2 'Shift once to the right
loop2: IF clock = 0 THEN GOTO loop2
NEXT A