Yes - you have to set the GPIO pin direction using the IODIR0 register. If you take a look at
http://www.surveyor.com/srvdownload/srv-053007.zip in utils.c, you will see example code in bits_dir() on how to set the i/o bit directory. I am fairly certain that setting the respective bit to 0 makes it input, 1 makes it output. I believe you need to clear the output values as well.
So, for p0.05,
PINSEL0 &= 0xFFFFF3FF; // should program p0.05 for GPIO
IOSET0 = 0x00000020; // should clear p0.05
IODIR0 &= 0xFFFFFFDF; // should set p0.05 to input
Then you read IOPIN0 & 0x00000020