Metropoli BBS
VIEWER: cctdef.h MODE: TEXT (ASCII)
/*
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

[ RETURN TO DIRECTORY ]