	IFND	DEVICES_SERIAL_I
DEVICES_SERIAL_I	SET	1
**
**	$Filename: devices/serial.i $
**	$Release: 1.3 $
**	$Revision$
**	$Date$
**
**	external declarations for Serial Port Driver 
**
**	(C) Copyright 1985,1986,1987,1988 Commodore-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.
SER_DBAUD     EQU     9600	;unused

*
*--------------------------------------------------------------------
*
* Driver Specific Commands

SDCMD_QUERY     EQU     CMD_NONSTD
SDCMD_BREAK     EQU     CMD_NONSTD+1
SDCMD_SETPARAMS EQU     CMD_NONSTD+2

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 
        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
        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 (longword field) ; 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    low	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	;unused
SerErr_InvBaud		EQU	3	;unused
SerErr_BufErr       	EQU	4	;Failed to allocate new read buffer
SerErr_InvParam        	EQU	5
SerErr_LineErr       	EQU	6
SerErr_NotOpen          EQU     7	;unused    
SerErr_PortReset        EQU     8   	;unused
SerErr_ParityErr        EQU     9
SerErr_InitErr          EQU    10	;unused
SerErr_TimerErr       	EQU    11	;(See the serial/OpenDevice autodoc)
SerErr_BufOverflow     	EQU    12
SerErr_NoDSR            EQU    13
SerErr_NoCTS            EQU    14	;unused
SerErr_DetectedBreak    EQU    15

	ENDC	; DEVICES_SERIAL_I
