#ifndef DEVICES_PARALLEL_H #define DEVICES_PARALLEL_H /* ** $Filename: devices/parallel.h $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 36.1 $ ** $Date: 90/05/10 $ ** ** parallel.device I/O request structure information ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All rights reserved. */ #ifndef EXEC_IO_H #include "exec/io.h" #endif /* !EXEC_IO_H */ struct IOPArray { ULONG PTermArray0; ULONG PTermArray1; }; /******************************************************************/ /* CAUTION !! IF YOU ACCESS the parallel.device, you MUST (!!!!) use an IOExtPar-sized structure or you may overlay innocent memory !! */ /******************************************************************/ struct IOExtPar { struct IOStdReq IOPar; /* STRUCT MsgNode * 0 APTR Succ * 4 APTR Pred * 8 UBYTE Type * 9 UBYTE Pri * A APTR Name * E APTR ReplyPort * 12 UWORD MNLength * STRUCT IOExt * 14 APTR io_Device * 18 APTR io_Unit * 1C UWORD io_Command * 1E UBYTE io_Flags * 1F UBYTE io_Error * STRUCT IOStdExt * 20 ULONG io_Actual * 24 ULONG io_Length * 28 APTR io_Data * 2C ULONG io_Offset * 30 */ ULONG io_PExtFlags; /* (not used) flag extension area */ UBYTE io_Status; /* status of parallel port and registers */ UBYTE io_ParFlags; /* see PARFLAGS bit definitions below */ struct IOPArray io_PTermArray; /* termination character array */ }; #define PARB_SHARED 5 /* ParFlags non-exclusive access bit */ #define PARF_SHARED (1<<5) /* " non-exclusive access mask */ #define PARB_SLOWMODE 4 /* " slow printer bit */ #define PARF_SLOWMODE (1<<4) /* " slow printer mask */ #define PARB_FASTMODE 3 /* " fast I/O mode selected bit */ #define PARF_FASTMODE (1<<3) /* " fast I/O mode selected mask */ #define PARB_RAD_BOOGIE 3 /* " for backward compatibility */ #define PARF_RAD_BOOGIE (1<<3) /* " for backward compatibility */ #define PARB_ACKMODE 2 /* " ACK interrupt handshake bit */ #define PARF_ACKMODE (1<<2) /* " ACK interrupt handshake mask */ #define PARB_EOFMODE 1 /* " EOF mode enabled bit */ #define PARF_EOFMODE (1<<1) /* " EOF mode enabled mask */ #define IOPARB_QUEUED 6 /* IO_FLAGS rqst-queued bit */ #define IOPARF_QUEUED (1<<6) /* " rqst-queued mask */ #define IOPARB_ABORT 5 /* " rqst-aborted bit */ #define IOPARF_ABORT (1<<5) /* " rqst-aborted mask */ #define IOPARB_ACTIVE 4 /* " rqst-qued-or-current bit */ #define IOPARF_ACTIVE (1<<4) /* " rqst-qued-or-current mask */ #define IOPTB_RWDIR 3 /* IO_STATUS read=0,write=1 bit */ #define IOPTF_RWDIR (1<<3) /* " read=0,write=1 mask */ #define IOPTB_PARSEL 2 /* " printer selected on the A1000 */ #define IOPTF_PARSEL (1<<2) /* printer selected & serial "Ring Indicator" on the A500 & A2000. Be careful when making cables */ #define IOPTB_PAPEROUT 1 /* " paper out bit */ #define IOPTF_PAPEROUT (1<<1) /* " paper out mask */ #define IOPTB_PARBUSY 0 /* " printer in busy toggle bit */ #define IOPTF_PARBUSY (1<<0) /* " printer in busy toggle mask */ /* Note: previous versions of this include files had bits 0 and 2 swapped */ #define PARALLELNAME "parallel.device" #define PDCMD_QUERY (CMD_NONSTD) #define PDCMD_SETPARAMS (CMD_NONSTD+1) #define ParErr_DevBusy 1 #define ParErr_BufTooBig 2 #define ParErr_InvParam 3 #define ParErr_LineErr 4 #define ParErr_NotOpen 5 #define ParErr_PortReset 6 #define ParErr_InitErr 7 #endif /* DEVICES_PARALLEL_H */