IFND DEVICES_SERIAL_I DEVICES_SERIAL_I SET 1 ** ** $Filename: devices/serial.i $ ** $Release: 2.04 Includes, V37.4 $ ** $Revision: 33.6 $ ** $Date: 90/11/06 $ ** ** external declarations for the serial device ** ** (C) Copyright 1985-1999 Amiga, Inc. ** All Rights Reserved ** IFND EXEC_IO_I include "exec/io.i" ENDC !EXEC_IO_I *-------------------------------------------------------------------- * * Useful constants * *-------------------------------------------------------------------- * SER_DEFAULT_CTLCHAR EQU $11130000 ; default chars for xON,xOFF ; You may change these via SETPARAMS. At this time, parity is not ; calculated for xON/xOFF characters. You must supply them with the ; desired parity. * *-------------------------------------------------------------------- * * Driver Specific Commands SDCMD_QUERY EQU CMD_NONSTD ;$09 SDCMD_BREAK EQU CMD_NONSTD+1 ;$0A SDCMD_SETPARAMS EQU CMD_NONSTD+2 ;$0B SER_DEVFINISH EQU CMD_NONSTD+2 ; number of device comands *-------------------------------------------------------------------- SERIALNAME: MACRO dc.b 'serial.device',0 dc.w 0 ENDM BITDEF SER,XDISABLED,7 ; SERFLAGS xOn-xOff feature disabled bit BITDEF SER,EOFMODE,6 ; " EOF mode enabled bit BITDEF SER,SHARED,5 ; " non-exclusive access BITDEF SER,RAD_BOOGIE,4 ; " high-speed mode active BITDEF SER,QUEUEDBRK,3 ; " queue this Break ioRqst BITDEF SER,7WIRE,2 ; " RS232 7-wire protocol BITDEF SER,PARTY_ODD,1 ; " use-odd-parity bit BITDEF SER,PARTY_ON,0 ; " parity-enabled bit ; ;WARNING: The next series of BITDEFs refer to the HIGH order BYTE of ;IO_STATUS. Example usage: "BTST.B #IOST_XOFFWRITE,IO_STATUS+1(AX)" ; BITDEF IOST,XOFFREAD,4 ; IOST_HOB receive currently xOFF'ed BITDEF IOST,XOFFWRITE,3 ; " transmit currently xOFF'ed BITDEF IOST,READBREAK,2 ; " break was latest input BITDEF IOST,WROTEBREAK,1 ; " break was latest output BITDEF IOST,OVERRUN,0 ; " status word RBF overrun ; ; BITDEF's in a longword field) ; Example usage: BSET.B #SEXTB_MSPON,IO_EXTFLAGS+3(AX) ;IO_EXTFLAGS (extended flag longword) BITDEF SEXT,MSPON,1 ; " use mark-space parity,not odd-even BITDEF SEXT,MARK,0 ; " if mark-space, use mark * ****************************************************************************** STRUCTURE TERMARRAY,0 ULONG TERMARRAY_0 ULONG TERMARRAY_1 LABEL TERMARRAY_SIZE ***************************************************************** * CAUTION !! IF YOU ACCESS the serial.device, you MUST (!!!!) use an * IOEXTSER-sized structure or you may overlay innocent memory, okay ?! ***************************************************************** STRUCTURE IOEXTSER,IOSTD_SIZE * 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_CTLCHAR ; control char's (order = xON,xOFF,rsvd,rsvd) ULONG IO_RBUFLEN ; length in bytes of serial port's read buffer ULONG IO_EXTFLAGS ; additional serial flags (see bitdefs above) ULONG IO_BAUD ; baud rate requested (true baud) ULONG IO_BRKTIME ; duration of break signal in MICROseconds STRUCT IO_TERMARRAY,TERMARRAY_SIZE ; termination character array UBYTE IO_READLEN ; bits per read char (bit count) UBYTE IO_WRITELEN ; bits per write char (bit count) UBYTE IO_STOPBITS ; stopbits for read (count) UBYTE IO_SERFLAGS ; see SERFLAGS bit definitions above UWORD IO_STATUS ; status of serial port, as follows: * * BIT ACTIVE FUNCTION * 0 --- reserved * 1 --- reserved * 2 high Connected to parallel "select" on the A1000. * Connected to both the parallel "select" and * serial "ring indicator" pins on the A500 * & A2000. Take care when making cables. * 3 low Data Set Ready * 4 low Clear To Send * 5 low Carrier Detect * 6 low Ready To Send * 7 low Data Terminal Ready * 8 high read overrun * 9 high break sent * 10 high break received * 11 high transmit x-OFF'ed * 12 high receive x-OFF'ed * 13-15 reserved * LABEL IOEXTSER_SIZE ****************************************************************************** *-------------------------------------------------------------------- * * Driver error definitions * *-------------------------------------------------------------------- SerErr_DevBusy EQU 1 SerErr_BaudMismatch EQU 2 ;baud rate not supported by hardware SerErr_BufErr EQU 4 ;Failed to allocate new read buffer SerErr_InvParam EQU 5 SerErr_LineErr EQU 6 SerErr_ParityErr EQU 9 SerErr_TimerErr EQU 11 ;(See the serial/OpenDevice autodoc) SerErr_BufOverflow EQU 12 SerErr_NoDSR EQU 13 SerErr_DetectedBreak EQU 15 IFD DEVICES_SERIAL_I_OBSOLETE SER_DBAUD EQU 9600 ;unused SerErr_InvBaud EQU 3 ;unused SerErr_NotOpen EQU 7 ;unused SerErr_PortReset EQU 8 ;unused SerErr_InitErr EQU 10 ;unused SerErr_NoCTS EQU 14 ;unused BITDEF IOSER,QUEUED,6 ; IO_FLAGS rqst-queued bit BITDEF IOSER,ABORT,5 ; " rqst-aborted bit BITDEF IOSER,ACTIVE,4 ; " rqst-qued-or-current bit ENDC ENDC !DEVICES_SERIAL_I