You query the parallel device by passing an ioextpar to the device with pdcmd_query set in io_command. the parallel device will respond with the status of the parallel port lines and registers. UWORD Parallel_Status; ParallelIO->IOPar.io_Command = PDCMD_QUERY; /* indicate query */ DoIO((struct IORequest *)ParallelIO); Parallel_Status = ParallelIO->io_Status; /* store returned status */ The 8 status bits of the parallel device are returned in io_Status. PARALLEL DEVICE STATUS BITS Bit Active Function --- ------ -------- 0 high Printer busy toggle (offline) 1 high Paper out 2 high Printer Select on the A1000. On theA500 and A2000, select is also connected to to the parallel port's Ring Indicator. Be cautious when making cables. 3 - read=0; write=1 4-7 - (reserved) The parallel device also returns error codes whenever an operation is attempted. struct IOPArray Terminators = { 0x51454141, /* Q E A A */ 0x41414141 /* fill to end with lowest value,must be in desc. order */ }; ParallellIO->io_ParFlags != PARF_EOFMODE; /* Set EOF mode flag */ ParallelIO->io_PTermArray = Terminators;/* Set termination characters */ ParallellIO->IOPar.io_Command = PDCMD_SETPARAMS; /* Set parameters */ if (DoIO((struct IORequest *)ParallelIO)) printf("Set Params failed. Error: %ld ",ParallelIO->IOPar.io_Error); The error is returned in the io_Error field of the ioextpar structure. PARALLEL DEVICE ERROR CODES Error Value Explanation ----- ----- ----------- ParErr_DevBusy 1 Device in use ParErr_BufToBig 2 Out of memory ParErr_InvParam 3 Invalid parameter ParErr_LineErr 4 Parallel line error ParErr_NotOpen 5 Device not open ParErr_PortReset 6 Port Reset ParErr_InitErr 7 Initialization Error parallel.c