This now works if we do not split up the location of the control block between X and Y, and give the whole block address, ie. the memory array variable "oscli" in this case, to the X register.
In fact, I'm told this is recommended behaviour; even though on an 8-bit machine, the X register can only hold an 8-bit value, for compatibility with other processors, X should point to full address of the block.