Hi everyone,
For anyone who is interested in this we've finally got a solution. We're using the .svf file format that can be generated from QuartusII. The .svf describes the programming procedure at a very low level in terms of JTAG states and data transfer.
The .svf file generated is quite large (it is an ASCII file). We've written an interpreter that converts it into a proprietary binary format and then stream that down to our micro. The micro then interprets each command and toggles the JTAG lines accordingly. I think that the programming time is slower than would be for a design which used JRunner (order of minutes for MaxII 240) but it has a minimal ram usage which is essential for our platform.
Jim