You hit it in the face thor. I had already tested that the input (albeit without missing my earlier lack of chomping them down) was right but it was my not calling reset() that was my problem I think. Either way, switching to the slightly depressing non-OO mode got it working instantly. Now I'll have to test out those bits of the OO interface that I haven't used before.
Thanks for your help guys.