Thanks for your replies!
LarryD - that was the phrase I couldn't think of thanks for helping me search!
CrossRoads - You've confirmed both what I thought would be the case and what I was reading....
So really as I'll be doing this multiple times I should have a little function for it, something like this?
int VirtualPortByte = 0;
for(i = 3; i < 9; i++)
VirtualPortByte = VirtualPortByte << 1;
if (digitalRead(i) == HIGH)
VirtualPortByte | 1;
As above will the fact that one of the I/O pins being set as an output cause the read to fail or be set to a default output?