ESP8266 digitalRead on GPIO0 not working

Is what am I doing wrong or is it a bug?
I am not new to programming, but the simplest of tasks is driving me crazy.

I want to READ the Logic State of GPIO0 on an ESP8266.

I am using Arduino 1.6.5, ESP 2.0.0

pinMode(0, FUNCTION_0);
pinMode(0, INPUT_PULLUP);
while(1){
Serial.println(digitalRead(0));
yield();
}

The digitalRead just returns 0.
I have also tried a hard pullup up on GPIO0. (10K)
The pin working because I toggle it to reload code.
So what am I missing?
Help >:( >:( >:( please?

Many ESP8266 modules have a pulldown on GPIO0, since you need to pull it up to flash code. When I was just using it yesterday on a new ESP12F module, I measured 1.8v on GPIO0 with it pulled up to 3.3v with a 4.7k resistor - thus implying that there's a 4.7k pulldown on that pin inside the module.
With a 10k pullup, you''d only have 1.1v on the pin which is probably still 0.

Try a 2.2k pullup, or a 1k?

10k is not what I'd describe as a hard pullup (which itself is not a well defined term).

This is not what the ESP8266 Documentation defines or my experence with ESP8266-01 or -03's
The GPIO0 needs to be pulled LOW for UART Programming. HIGH for RUN Mode.
As I said, The device Runs fine and I can program it fine. the PIN is HIGH(3.3V).
10K should not conflict with any internal Pullups / PullDowns, these are usually in the order of 10-100uA.
If you are seeing 4.7K Pull Down, I am questing this is not internal to the ESP8266, but, on the Module.
I have a ESP8266-03 and the connection to direct to the PIN.

I think the issue is in the Code.

Oh, yeah, it's definitely in the module. I was pointing that out because the very popular ESP-12F module (and I think many of the others in the same package) have such a resistor - you hadn't specified that you were using the less common ESP-03 module.

I have no practice with ESP8266 on Arduino, but I figured i should mention this, since I just discovered that resistor to my surprise last night.