/*
Copyright (C) Magna Carta Software, Inc. 1988-1991. All Rights Reserved.
C COMMUNICATIONS TOOLKIT
CDEFS.H -- Manifest constant definitions (#included by COMM.H)
*/
#if !defined(CCTDEF_H_INCLUDED)
#define CCTDEF_H_INCLUDED
/* GENERAL MANIFEST CONSTANTS */
#define FALSE 0
#define TRUE 1
#define OPEN 1
#define CLOSED 0
#define ON 1
#define OFF 0
#define HIGH 1 /* setting for RS-232 lines */
#define LOW 0 /* setting for RS-232 lines */
#define EOINT 0X20 /* end of interrupt */
#define RX 0X0F /* set databits for RX */
#define TX 0XF0 /* set databits for TX */
#define _KEYBRD_READ 0
#define _KEYBRD_READY 1
#define _KEYBRD_SHIFTSTATUS 2
#define XLAT_SIZE 44 /* size of XLAT region of COMM_PORT */
#define NO_RAM (-5) /* no RAM available */
#define NO_FILE (-6) /* returned in file xfers */
#define CCT_DYNAMIC 1 /* memory allocated dynamically */
#define CCT_INIT_OK 2 /* object initialized OK */
/* FILE TRANSFER PARAMETERS */
#define DISK 50
#define RAM 51
#define HEADROOM 0X100 /* memory not allocated to RX buffer */
#define MAX_RETRIES 10 /* max. # times to retry an operation */
/* ERROR MESSAGES FROM (DE)INITIALIZATION */
#define PORT_OPEN (-100)
#define NO_PORT (-101)
#define PORT_CLOSED (-102)
/* COMMUNICATIONS MANIFEST CONSTANTS AND MACROS */
#define COM1 ((WORD) 0X3F8) /* address of COM1 on IBM PC */
#define COM2 ((WORD) 0X2F8) /* address of COM2 on IBM PC */
#define COM3 ((WORD) 0X3220) /* address of COM3. (PS/2 value) */
#define COM4 ((WORD) 0X3228) /* address of COM4. (PS/2 value) */
#define COM5 ((WORD) 0X4220) /* address of COM5. (Phoenix ABIOS) */
#define COM6 ((WORD) 0X4228) /* address of COM6. (Phoenix ABIOS) */
#define COM7 ((WORD) 0X5220) /* address of COM7. (Phoenix ABIOS) */
#define COM8 ((WORD) 0X5228) /* address of COM8. (Phoenix ABIOS) */
#define IRQ2_VECTOR 0XA /* IRQ2 vector */
#define IRQ3_VECTOR 0XB /* IRQ3 vector (COM2) */
#define IRQ4_VECTOR 0XC /* IRQ4 vector (COM1) */
#define IRQ5_VECTOR 0XD /* IRQ5 vector */
#define IRQ6_VECTOR 0XE /* IRQ6 vector */
#define IRQ7_VECTOR 0XF /* IRQ7 vector */
#define IRQ8_VECTOR 0X70 /* IRQ8 vector (AT, real-time clock) */
#define IRQ9_VECTOR 0X71 /* IRQ9 vector (AT, slaved to IRQ2) */
#define IRQ10_VECTOR 0X72 /* IRQ10 vector */
#define IRQ11_VECTOR 0X73 /* IRQ11 vector */
#define IRQ12_VECTOR 0X74 /* IRQ12 vector */
#define IRQ13_VECTOR 0X75 /* IRQ13 vector (AT, 80287 coprocessor) */
#define IRQ14_VECTOR 0X76 /* IRQ14 vector (AT, hard disk) */
#define IRQ15_VECTOR 0X77 /* IRQ15 vector */
/* THE TYPES OF DATA TRANSLATION AVAILABLE */
#define LOCAL_ECHO 1 /* echo output to local console */
#define REMOTE_ECHO 2 /* echo input to remote or wait for echo*/
#define PRINTER_ECHO 4 /* echo serial I and/or O to printer? */
#define CAPTURE_BUFFER_ECHO 8 /* echo serial I and/or O to buffer? */
#define XLAT 81 /* format serial I/O? */
#define EOL 82 /* end-of-line mode */
#define CASE 83 /* convert to upper, lower, or mixed */
#define ASCII_ONLY 84 /* remove high bit => 0,...,127 */
#define INTERBYTE_DELAY 85 /* interbyte delay time (ms.) */
#define INTERLINE_DELAY 86 /* interline delay (output only) */
#define INTERLINE_DELAY_CHAR 87 /* character that causes interline delay*/
#define ECHO_WAIT 88 /* wait-for-echo flag (output only) */
#define FLOWCTL 89 /* use flow control */
#define TX_DELAY 90 /* delay time in transmission */
#define TX_DELAYCHAR 91 /* literal character that causes delay */
#define XONCHAR 92 /* character defined as XON */
#define XOFFCHAR 93 /* character defined as XOFF */
#define ABORT_KEY 94 /* file transfer abort key */
#define FLOWHIGH 95
#define TRAILINGBYTE_DELAY 96 /* delay after last byte of string */
#define RX_BUFFER_HWM 97
#define RX_BUFFER_LWM 98
#define TX_BUFFER_LWM 98
/* XON-XOFF CONTROL */
#define XON_ALL 0X0 /* if this is XONCHAR, accept any for XON */
/* TYPES OF FLOW CONTROL */
#define XONXOFF 0X10 /* XONXOFF */
#define RTS_CTS 0X20 /* RTS/CTS */
#define DTR_DSR 0X40 /* DTR/DSR */
#define DICTATE 0X80 /* do not accept rx chars. in rx hold */
/* FLOW CONTROL TYPES FOR EACH DIRECTION */
#define RXONXOFF 0X01 /* accept XON-XOFF */
#define RRTS_CTS 0X02 /* accept RTS/CTS */
#define RDTR_DSR 0X04 /* accept DTR/DSR */
#define TXONXOFF 0X10 /* assert XON-XOFF */
#define TRTS_CTS 0X20 /* assert RTS/CTS */
#define TDTR_DSR 0X40 /* assert DTR/DSR */
/* NEW LINE TRANSLATION MODES */
#define CR2LF 1 /* translate CR to LF */
#define CR2CRLF 2 /* convert CR to CRLF */
#define CRLF2LF 3 /* convert CRLF to LF */
#define CRLF2CR 4 /* convert CR to CR */
#define LF2CR 5 /* translate LF to CR */
#define LF2CRLF 6 /* convert LF to CRLF */
#define EOL2SP 7 /* translate CR&LF to spaces */
#define STRIPEOL 8 /* remove all CR and LF */
/* CASE MODES */
#define UPPER 21 /* lower case -> upper case */
#define LOWER 22 /* upper case -> lower case */
/* DATA FORMATS VALUES */
#define PARITY_NONE 0
#define PARITY_ODD 1
#define PARITY_EVEN 3
#define PARITY_MARK 5
#define PARITY_SPACE 7
#define STOPBITS0 0
#define STOPBITS1 1
#define STOPBITS15 15
#define STOPBITS2 2
#define DATABITS5 5
#define DATABITS6 6
#define DATABITS7 7
#define DATABITS8 8
/* INTERRUPT TYPES */
#define RECEIVE 1001
#define TRANSMIT 1002
#define LINE_STATUS 1004
#define MODEM_STATUS 1008
/* TRANSMIT INTERRUPT FLAGS */
#define TX_BUSY 1 /* transmit interrupts going */
#define TX_WAIT 2 /* tell TX to wait for full buffer */
#define istxinwait(a) ((a)->f_txbusy & TX_WAIT)
#define istxbusy(a) ((a)->f_txbusy & TX_BUSY)
#define istxrts(a) ((a)->f_txbusy == 0) /* TX ints. ready to send */
/* UART FUNCTION SELECTION PARAMETERS */
#define DATABITS 100
#define PARITY 101
#define SPEED 102
#define STOPBITS 103
#define BREAK 104
#define DTR 105
#define RTS 106
#define OUT1 107
#define OUT2 108
#define CTS 109
#define DCD 110
#define DSR 111
#define RI 112
#define LOOPBACK 113
/*PROTOCOLS */
/* Rule:
XMODEM derived: Bit8 = 1.
Sends file name: Bit7 = 1.
Streaming capability: Bit6 = 1.
*/
#define XDERIVED 0X80
#define XFERNAME 0X40
#define CANSTREAM 0X20
#define XMODEM XDERIVED /* 0X80 */
#define XMODEM_CRC XDERIVED+1 /* 0X81 */
#define XMODEM_1K XDERIVED+2 /* 0X82 */
#define YMODEM (XDERIVED | XFERNAME) /* 0XC0 */
#define YMODEM_G (XDERIVED | XFERNAME | CANSTREAM) /* 0XE0 */
#define KERMIT XFERNAME+1 /* 0X41 */
#define FAST XFERNAME+2 /* 0X42 */
#define ASCII CANSTREAM+1 /* 0X21 */
#define ZMODEM (XFERNAME | CANSTREAM) /* 0X60 */
/* DATA TRANSFER ERRORS */
#define MAX_XFER_ERROR_TYPES 0X15 /* number of errors in this array */
#define XERROR_OFFSET 0X30 /* offset of error msgs. from 0 */
#define UNSPECIFIED (-0X30) /* unspecified reason for abort */
#define USER_CANCELLED (-0X31) /* user cancelled */
#define TX_CANCELLED (-0X32) /* transmitter cancelled (RX acknowledgement) */
#define DISK_FULL (-0X33) /* insufficient disk space on RX disk */
#define CRC_ERROR (-0X34) /* CRC error detected by receiver */
#define FILE_LENGTH_ERROR (-0X35) /* FS not where expected */
#define RX_TIMEOUT (-0X36) /* receiver timed-out */
#define RX_DATA_ERROR (-0X37) /* parity error, overrun, break */
#define BAD_HEADER_FORMAT (-0X38) /* incorrect length, etc. */
#define NO_TX_START (-0X39) /* no response to ENQs */
#define ABORT_WITH_MSG (-0X3A) /* */
#define SKIP_FILE (-0X3B) /* send next file header or EOT */
#define RX_CANCELLED (-0X3C) /* transmitter acknowledgement */
#define NO_RX_START (-0X3D) /* TIM3 expired at transmitter */
#define HEADER_NOT_ACKNOWLEDGED (-0X3E) /* sender abort after TIM4 */
#define FILE_NOT_ACKNOWLEDGED (-0X3F) /* TIM4 expired at transmitter */
#define GARBAGE_RECEIVED (-0X40) /* send next file header or EOT */
#define BAD_PACKET_NUMBER (-0X41) /* packet number out of sequence */
#define MAX_ERRORS_REACHED (-0X42) /* max. error count reached */
#define FILE_INFO_RECEIVED (-0X43) /* max. error count reached */
#define CONNECTION_LOST (-0X44) /* DCD (or equivalent) lost */
#define USING_CHECKSUM 0X4001
#define USING_CRC 0X4002
#define XFER_POSITION 0X4003
#define FILE_SOURCE 0X4004
/* FILE TRANSFER STATUS FLAG MASKS */
#define F_SENT 1
#define F_KEEP 2
/* MACROS THAT TEST THE DATA TRANSLATION ECHO FLAG */
#define isrxecholocal(a) ((a)->echo & LOCAL_ECHO)
#define isrxechoremote(a) ((a)->echo & REMOTE_ECHO)
#define isrxechoprn(a) ((a)->echo & PRINTER_ECHO)
#define isrxechobuf(a) ((a)->echo & CAPTURE_BUFFER_ECHO)
#define istxecholocal(a) ((a)->echo & 0X10)
#define istxechoremote(a) ((a)->echo & 0X20)
#define istxechoprn(a) ((a)->echo & 0X40)
#define istxechobuf(a) ((a)->echo & 0X80)
/* m->flags bit 0 set if dynamically allocated */
#define isdynamic(a) ((a)->flags & CCT_DYNAMIC)
/* Compatibility */
#define c_flush(a, b) c_rxflush((a), (b))
#define clear_rxbuf(a, b) c_rxflush((a), (b))
#define get_key(a) bios_key(a)
#define init_port(a, b, c, d, e, f) u8250_init((a), (b), (c), (d), (e), (f))
#define modem_assign(a, b) modem_assign_((a), (b))
#define modem_icmd(a, b) modem_cmd((a), (b))
#define rest_xlat(a, b) memcpy((&a->rx_xlat), (b), XLAT_SIZE)
#endif