	!**********************************************************************
	!			MODIFICATION HISTORY
	!**********************************************************************
	!  <??????>	Previous mod history not recorded
	!  92.11.04	Keith Walker	E102ISD_0_30
	!**********************************************************************

	!**********************************************************************
	!			CONSTANTS
	!**********************************************************************

	DECLARE WORD CONSTANT &
		TRUE = -1%, &
		FALSE = 0%, &
		L_MENU = 100,		!number of menu items &
		MAX_MBX_SIZE = 128%,	!size of mailbox buffer &
		BRDCST_BUF_SIZE = MAX_MBX_SIZE - 22%, &
		MAX_BUF_CNT = 9%, 	!(number - 1) of input buffers &
		MAX_BUF_SIZE = 79%,	!(size - 1) of input buffers &
		MAX_LOG_SIZE = 511%,	!(size - 1) of log file buffer &
		MAX_LOG_SSIZE = MAX_LOG_SIZE + 1%,	!size of log file buf &
		IOSB_STATUS = 0%,	!IOSB offset for status word &
		IOSB_BUF_LEN = 1%,	!IOSB offset for buffer length &
		IOSB_TERM = 2%,		!IOSB offset for terminator &
		IOSB_TERM_SIZE = 3%	!IOSB offset for terminator size

	DECLARE LONG CONSTANT &
		READ_PORT_TIMER = 1%,	!timer ID for EXT_READ_PORT_AST &
		MBX_KICKER_TIMER = 2%,	!timer ID for EXT_MBX_KICKER_AST &
		LOG_FILE = 1%, 		!file # for log file &
		MENU_FILE = 2%,		!file # for menu file &
		PORTS_FILE = 3%,	!file # for ports file &
		RECORD_FILE = 4%,	!file # for record file &
		SCRIPT_FILE = 5%	!file # for script files (must be
					!highest #)

	!**********************************************************************
	!			RECORDS
	!**********************************************************************

	RECORD QUAD
	       	VARIANT
			CASE
				LONG	LOW_LONGWORD
				LONG	HIGH_LONGWORD
			CASE
				WORD	FIRST_WORD
				WORD	SECOND_WORD
				WORD	THIRD_WORD
				WORD	FOURTH_WORD
			CASE
				BYTE	SINGLE_BYTE(7)
		END VARIANT
	END RECORD

	RECORD PORT_INP_REC	!layout of a port input buffer...
		BYTE	BUF_FER(MAX_BUF_SIZE)	!input buffer itself
		WORD	BUF_IN_USE		!true if buffer in use
		WORD	BUF_PTR			!pointer to byte in buffer
		WORD	BUF_CNT			!number of bytes in buffer
		WORD	IOSB(3)			!IO status block
	END RECORD

	RECORD MBX_REC		!layout for mailbox input buffer...
		WORD	MBX_TYPE		!message type
		WORD	MBX_UNIT		!unit number
		BYTE	MBX_CTRL_LEN		!controller name length
		STRING	MBX_CTRL = 15		!controller name
		WORD	MBX_MSG_LEN		!broadcast message length
		STRING	MBX_MSG = BRDCST_BUF_SIZE !broadcast message
	END RECORD

	!**********************************************************************
	!			COMMONS
	!**********************************************************************

	COMMON (DEVICE_MODE_COM) &
		LONG	OLD_PORT_MODE(2),	!port mode on entry &
		LONG	OLD_TERM_MODE(2),	!terminal mode on entry &
		LONG	PORT_MODE(2),		!new port mode &
		LONG	TERM_MODE(2)		!new terminal mode 

	COMMON (MENU_SELECTION_COM) &
		STRING	FACILITY_CODE = 20,	!code for facility &
		STRING	FACILITY_NAME = 80,	!display name of facility &
		STRING	NODE_NAME = 20,		!name of node &
		STRING	PORT_NAME = 10,		!name of selected port &
		STRING	SERVED_PORT = 1,	!"Y" if port is on a server &
		STRING	MODEM_CLASS = 20,	!class of modem &
		STRING	MODEM_TYPE = 20		!type of modem

	COMMON (PORT_READ_COM) &
		WORD	TERM_CHAN,	!channel for terminal &
		WORD	PORT_CHAN,	!channel for modem port &
		WORD	MBX_CHAN,	!channel for mailbox &
		MBX_REC	MBX_BUF,	!mailbox buffer &
		WORD	MBX_IOSB(3),	!IOSB for mailbox &
		WORD	MBX_ACTIVE,	!TRUE if waiting for mbx &
		PORT_INP_REC	PORT_BUF(MAX_BUF_CNT),	!input buffers &
		LONG	CURRENT_BUF,	!current input buffer &
		WORD	BUFS_USED,	!# of buffers in use &
		WORD	BUF_ATTEMPTS,	!# attempts to get a buffer &
		WORD	VIEW_FLAG,	!T to copy input to terminal &
		WORD	ECHO_FLAG,	!T to copy output to terminal &
		WORD	CONT_FLAG,	!T to continue &
		WORD	SEVENBIT_FLAG	!T if seven databits

	COMMON (DEBUG_COM) &
		LONG	DBG_READ_CNT,	!total number of port reads done &
		LONG	DBG_DATA_CNT,	!number of reads with data present &
		LONG	DBG_BYTE_CNT,	!number of bytes read &
		LONG	DBG_DELAY_CNT,	!# of times read queued with delay &
		LONG	DBG_NODELAY_CNT,!# of times read queued without delay &
		LONG	DBG_UNSOL_CNT,	!# of times unsol mbx routine called &
		STRING	DEBUG_FLAG = 10	!debug symbol from DCL &
					!0: no debugging &
					!1: print script parsing info &
					!2: print scripts & labels &
					!3: print interpreted lines &
					!4: print INPUT parameters &
					!5: print condition flags &
					!6: print I/O stats on completion &
					!7: print connection status

	COMMON (LOGFILE_COM) &
		WORD	LOG_FLAG,	!T to log the received text &
		WORD	CENSOR_FLAG,	!T to censor control chars &
		WORD	LOG_PTR	 	!pointer into log buffer

	COMMON (PARITY_COM) &
                WORD    PARITY_SELECT,	!0: not applicable (8 bit) &
                                        !1: odd   &
                                        !2: even  &
                                        !3: mark  &
                                        !4: space &
		BYTE	ODD_PARITY(127),	!conversions for odd parity &
		BYTE	EVEN_PARITY(127)	!conversions for even parity

	COMMON (SMG_COM) &
		LONG	KB_ID, &
		LONG	PB_ID, &
		LONG	MENU_DISP, &
		LONG	HELP_DISP, &
		LONG	MSG_DISP, &
		LONG	ACTION_DISP, &
		LONG	HDR_DISP, &
		LONG	EXIT_DISP, &
		LONG	CONN_DISP

	COMMON (MENU_COM) &
		LONG	MENU_COUNT,		!number of items in menu &
		LONG	MENU_INDEX,		!pointer to menu item &
		LONG	TOP_LINE, &
		LONG	BOT_LINE, &
		LONG	MAX_ROW, &
		STRING	HELP_LINE = 80,		!short help &
		STRING	MENU(L_MENU, 2%) = 30	!holds menu text &
				      		!0: code, 1: name, 2: class

	COMMON (TIME_COM) &
		QUAD	CUR_TIME, &
		QUAD	TIME_ON, &
		QUAD	TIME_OFF, &
		QUAD	ONE_SEC

	!**********************************************************************
	!			MAPS
	!**********************************************************************

	MAP (LOG_BUF_MAP) &
		BYTE	LOG_BUF(MAX_LOG_SIZE)	!log file buffer

	MAP (LOG_BUF_MAP) &
		STRING	LOG_BUF_S = MAX_LOG_SSIZE
	MAP (USER_INPUT_MAP) &
		STRING	USER_INPUT_BUF = MAX_BUF_SIZE
