I had a similar problem with my G540 and a crap parallel port. I would not get motion on my Z motor during very slow moves. Typically I'd make a move with lots of movement in X and Y but very minimal Z movement, so it might move 0.25" while the X and Y both went 48" or something like that. And the Z would sometimes not move. I tracked it down to low voltage levels from my parallel port, just like Carveone. I used an oscilloscope to do this. You have to load the port with either the G540 or resistors that draw similar current when you do this or the voltages will look fine. I installed a breakout board parallel port and found that a few of the pins on that weren't up to snuff either. So I ended up using dual break out ports and custom wiring a cable that used pins from both ports to drive the G540. Works great now. I have some posts in the Gecko forum where I show scope shots of what the step pulses looked like. I don't know how it was working at all.
CNC mill build thread: http://www.cnczone.com/forums/vertical_mill_lathe_project_log/110305-gantry_mill.html