Sharing the EPP port won't work. Because the Pico Systems devices have a register address counter that increments for every data transfer cycle, sharing would get the counter out of sync. Anyway, it sounds pretty wierd to have a printer or scanner on the same port as a CNC control that could cause injury if something went wrong. NOT a good idea.
Also, it is not clear if this driver permits the level of throughput required for fast back and forth transfers. It is doing very short bursts each way and does it at about 600 ns/byte on a PCI parallel port.
Well, of course, we had to do it RIGHT. Latching the count so it could be safely read later by the CPU was obvious. Dealing with zeroing the counter while searching for the home index pulse at the same time the servo loop is running was not so easy, but it handles that, too.
Both rtlinux and RTAI work approximately that way.
Some X-86 systems have been running step pulse generation tasks as fast as every 10 us! So, the task switching doesn't take very long.
Jon