void JTAG_TCLK( LOGIC state )
{
if( state == HIGH ) JTAG_DOValue |=   JTAG_EZ_TCK;
else                    JTAG_DOValue &= (~JTAG_EZ_TCK);
        
JTAG_prnout();
}

tck,tdo,tdi.tms모두 이런 식으로 프로그램 되어있던데요. 여기서 JTAG_DOValue 와 JTAG_EZ_TCK처럼 왜 이런 연산을 하는지 잘 모르겠네요 그리고 밑에 &연산하는것두요...

값만을 본다면 JTAG_DOValue는 0x10이고 JTAG_EZ_TCK는 0X02니깐 0X12가 되는것 같은데 이값이 어떻게 쓰이는 지 모르겠습니다. 그리고 이런 값을 써야 되는 이유나 REFERENCE문서가 있으면 가르쳐 주시면 고맙겠습나..^^

그리고
unsigned char JTAG_prnin( void )
{
        return inb( STANDARD_LPT1 + 1 );
}
여기서 STANDARD_LPT1+1에서 +1은 왜 해주는 건가요?