It could be me, but I'd kinda expect to see something like:
Code
data &= (((cassette_input(state->cassette) < +0.0 ? 0 : 1) << 7) | 0x7f);

or

Code
data &= (((cassette_input(state->cassette) < +0.0 ? 1 : 0) << 7) | 0x7f);