are 8051 derivatives bit addressable on the ports like PICs are? if so how do you write this in c? if i waned to address P1.4 would i write P1=P1|0x10 or am i way off the mark?
"are 8051 derivatives bit addressable on the ports like PICs are?"
This is covered in the so-called "bible" for the 8051:
Chapter 1 - 80C51 Family Architecture: www.nxp.com/.../80C51_FAM_ARCH_1.pdf
Chapter 2 - 80C51 Family Programmer's Guide and Instruction Set: www.nxp.com/.../80C51_FAM_PROG_GUIDE_1.pdf
Chapter 3 - 80C51 Family Hardware Description: www.nxp.com/.../80C51_FAM_HARDWARE_1.pdf
"how do you write this in c?"
Only by means of implementation-specific extensions to the language - which must, of course, be covered in the compiler Manual. In this case, see: http://www.keil.com/support/man/docs/c51/c51_extensions.htm