I had so much trouble with making signals work, I made a passthrough centronics device that would let me monitor the status:

[Linked Image from i.imgur.com]



It's pretty simple, just watching the signals flowing forward and backwards, but useful to help see what's happening.
Code
	virtual DECLARE_WRITE_LINE_MEMBER( input_strobe ) override { m_ctx->write_strobe(state); m_input_strobe = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data0 ) override { if (state) m_data |= 0x01; else m_data &= ~0x01; m_ctx->write_data0(state);m_input_data0 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data1 ) override { if (state) m_data |= 0x02; else m_data &= ~0x02; m_ctx->write_data1(state);m_input_data1 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data2 ) override { if (state) m_data |= 0x04; else m_data &= ~0x04; m_ctx->write_data2(state);m_input_data2 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data3 ) override { if (state) m_data |= 0x08; else m_data &= ~0x08; m_ctx->write_data3(state);m_input_data3 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data4 ) override { if (state) m_data |= 0x10; else m_data &= ~0x10; m_ctx->write_data4(state);m_input_data4 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data5 ) override { if (state) m_data |= 0x20; else m_data &= ~0x20; m_ctx->write_data5(state);m_input_data5 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data6 ) override { if (state) m_data |= 0x40; else m_data &= ~0x40; m_ctx->write_data6(state);m_input_data6 = state;}
	virtual DECLARE_WRITE_LINE_MEMBER( input_data7 ) override { if (state) m_data |= 0x80; else m_data &= ~0x80; m_ctx->write_data7(state);m_input_data7 = state;}

	DECLARE_WRITE_LINE_MEMBER( busy_w ) { output_busy(state); m_busy = state;}   // centronics output busy
	DECLARE_WRITE_LINE_MEMBER( ack_w )  { output_ack(state); m_ack = state;} ;    // centronics output ack
	DECLARE_WRITE_LINE_MEMBER( perror_w ) { output_perror(state); m_perror = state;}; // centronics perror
	DECLARE_WRITE_LINE_MEMBER( select_w ) { output_select(state); m_select = state;}; // centronics select out
	DECLARE_WRITE_LINE_MEMBER( fault_w ) { output_fault(state); m_fault = state;};  // centronics fault