... and to wrap this up this is the bit of code I was (re)inventing to look for any button press and then transfer out which button.

Button_read:
BUTTON_PRESSED = 0 ' set no button pressed to start
WHILE BUTTON_PRESSED = 0
BUTTONS = PORTB & BUTTON_MASK 'READ PORTB and pick out the bits I want
IF BUTTONS <> BUTTON_MASK then BUTTON_PRESSED = 1 'if any selected pin has been pulled to 0 then button pressed
PAUSE 10
WEND
Menu_1 = BUTTONS.3
Menu_2 = BUTTONS.4
RETURN

It works just fine now, thanks for the pointers. I've no idea why the bit extraction did not work the first time, sods law.