[mod.computers.vax] Fixed version of $SMGDEF module in FORSYSDEF.TLB

nagy%bsndbg.hepnet@LBL.ARPA.UUCP (02/27/87)

C+ $SMGDEF
C Definitions for RTL Screen Management
C For VMS V4.4, made by converting entries in STARLET.REQ and editting due to
C problems with STARLETSD.TLB distributed with V4.4 - Frank J. Nagy
C
C ********************************************************************************************************************************
C Created 22-MAR-1986 11:58:59 by VAX-11 SDL T2.9-5      Source: 16-DEC-1985 10:15:26 _$254$DUA172:[SMGRTL.SRC]SMGDEF.SDL;1
C ********************************************************************************************************************************
C
C Input terminator codes
C 
C Control characters
C
	PARAMETER SMG$K_TRM_CTRLA = 1			!soh
	PARAMETER SMG$K_TRM_CTRLB = 2			!stx
	PARAMETER SMG$K_TRM_CTRLC = 3			!etx
	PARAMETER SMG$K_TRM_CTRLD = 4			!eot
	PARAMETER SMG$K_TRM_CTRLE = 5		        !enq
	PARAMETER SMG$K_TRM_CTRLF = 6			!ack
	PARAMETER SMG$K_TRM_CTRLG = 7			!bel
	PARAMETER SMG$K_TRM_CTRLH = 8			!bs
	PARAMETER SMG$K_TRM_CTRLI = 9			!ht
	PARAMETER SMG$K_TRM_CTRLJ = 10			!lf
	PARAMETER SMG$K_TRM_CTRLK = 11			!vt
	PARAMETER SMG$K_TRM_CTRLL = 12			!ff
	PARAMETER SMG$K_TRM_CTRLM = 13			!cr
	PARAMETER SMG$K_TRM_CTRLN = 14			!so
	PARAMETER SMG$K_TRM_CTRLO = 15			!si
	PARAMETER SMG$K_TRM_CTRLP = 16			!dle
	PARAMETER SMG$K_TRM_CTRLQ = 17			!dc1
	PARAMETER SMG$K_TRM_CTRLR = 18			!dc2
	PARAMETER SMG$K_TRM_CTRLS = 19			!dc3
	PARAMETER SMG$K_TRM_CTRLT = 20			!dc4
	PARAMETER SMG$K_TRM_CTRLU = 21			!nak
	PARAMETER SMG$K_TRM_CTRLV = 22			!syn
	PARAMETER SMG$K_TRM_CTRLW = 23			!etb
	PARAMETER SMG$K_TRM_CTRLX = 24			!can
	PARAMETER SMG$K_TRM_CTRLY = 25			!em
	PARAMETER SMG$K_TRM_CTRLZ = 26			!sub
	PARAMETER SMG$K_TRM_ESCAPE = 27			!esc
							! FS
							! GS
							! RS
							! US
	PARAMETER SMG$K_TRM_SPACE = 32			!sp
	PARAMETER SMG$K_TRM_EXCLAMATION_POINT = 33	!!
	PARAMETER SMG$K_TRM_DOUBLE_QUOTE = 34		!"
	PARAMETER SMG$K_TRM_NUMBER_SIGN = 35		!#
	PARAMETER SMG$K_TRM_DOLLAR_SIGN = 36		!$
	PARAMETER SMG$K_TRM_PERCENT_SIGN = 37		!%
	PARAMETER SMG$K_TRM_AMPERSAND = 38		!&
	PARAMETER SMG$K_TRM_QUOTE = 39			!'
	PARAMETER SMG$K_TRM_LEFT_PAREN = 40		!(
	PARAMETER SMG$K_TRM_RIGHT_PAREN = 41		!)
	PARAMETER SMG$K_TRM_ASTERISK = 42		!*
	PARAMETER SMG$K_TRM_PLUS_SIGN = 43		!+
							!,
	PARAMETER SMG$K_TRM_DASH = 45			!-
	PARAMETER SMG$K_TRM_DOT = 46			!.
	PARAMETER SMG$K_TRM_SLASH = 47			!/
	PARAMETER SMG$K_TRM_ZERO = 48			!0
	PARAMETER SMG$K_TRM_ONE = 49			!1
	PARAMETER SMG$K_TRM_TWO = 50			!2
	PARAMETER SMG$K_TRM_THREE = 51			!3
	PARAMETER SMG$K_TRM_FOUR = 52			!4
	PARAMETER SMG$K_TRM_FIVE = 53			!5
	PARAMETER SMG$K_TRM_SIX = 54			!6
	PARAMETER SMG$K_TRM_SEVEN = 55			!7
	PARAMETER SMG$K_TRM_EIGHT = 56			!8
	PARAMETER SMG$K_TRM_NINE = 57			!9
	PARAMETER SMG$K_TRM_COLON = 58			!:
	PARAMETER SMG$K_TRM_SEMICOLON = 59		!;
	PARAMETER SMG$K_TRM_LESS_THAN = 60		!<
	PARAMETER SMG$K_TRM_EQUAL = 61			!=
	PARAMETER SMG$K_TRM_GREATER_THAN = 62		!>
	PARAMETER SMG$K_TRM_QUESTION_MARK = 63		!?
	PARAMETER SMG$K_TRM_AT_SIGN = 64		!@
	PARAMETER SMG$K_TRM_UPPERCASE_A = 65		!a
	PARAMETER SMG$K_TRM_UPPERCASE_B = 66		!b
	PARAMETER SMG$K_TRM_UPPERCASE_C = 67		!c
	PARAMETER SMG$K_TRM_UPPERCASE_D = 68		!d
	PARAMETER SMG$K_TRM_UPPERCASE_E = 69		!e
	PARAMETER SMG$K_TRM_UPPERCASE_F = 70		!f
	PARAMETER SMG$K_TRM_UPPERCASE_G = 71		!g
	PARAMETER SMG$K_TRM_UPPERCASE_H = 72		!h
	PARAMETER SMG$K_TRM_UPPERCASE_I = 73		!i
	PARAMETER SMG$K_TRM_UPPERCASE_J = 74		!j
	PARAMETER SMG$K_TRM_UPPERCASE_K = 75		!k
	PARAMETER SMG$K_TRM_UPPERCASE_L = 76		!l
	PARAMETER SMG$K_TRM_UPPERCASE_M = 77		!m
	PARAMETER SMG$K_TRM_UPPERCASE_N = 78		!n
	PARAMETER SMG$K_TRM_UPPERCASE_O = 79		!o
	PARAMETER SMG$K_TRM_UPPERCASE_P = 80		!p
	PARAMETER SMG$K_TRM_UPPERCASE_Q = 81		!q
	PARAMETER SMG$K_TRM_UPPERCASE_R = 82		!r
	PARAMETER SMG$K_TRM_UPPERCASE_S = 83		!s
	PARAMETER SMG$K_TRM_UPPERCASE_T = 84		!t
	PARAMETER SMG$K_TRM_UPPERCASE_U = 85		!u
	PARAMETER SMG$K_TRM_UPPERCASE_V = 86		!v
	PARAMETER SMG$K_TRM_UPPERCASE_W = 87		!w
	PARAMETER SMG$K_TRM_UPPERCASE_X = 88		!x
	PARAMETER SMG$K_TRM_UPPERCASE_Y = 89		!y
	PARAMETER SMG$K_TRM_UPPERCASE_Z = 90		!z
	PARAMETER SMG$K_TRM_LEFT_BRACKET = 91		![
	PARAMETER SMG$K_TRM_BACKSLASH = 92		!\
	PARAMETER SMG$K_TRM_RIGHT_BRACKET = 93		!]
	PARAMETER SMG$K_TRM_CARET = 94			!^
	PARAMETER SMG$K_TRM_UNDERLINE = 95		!_
	PARAMETER SMG$K_TRM_GRAVE_ACCENT = 96		!`
	PARAMETER SMG$K_TRM_LOWERCASE_A = 97		!a
	PARAMETER SMG$K_TRM_LOWERCASE_B = 98		!b
	PARAMETER SMG$K_TRM_LOWERCASE_C = 99		!c
	PARAMETER SMG$K_TRM_LOWERCASE_D = 100		!d
	PARAMETER SMG$K_TRM_LOWERCASE_E = 101		!e
	PARAMETER SMG$K_TRM_LOWERCASE_F = 102		!f
	PARAMETER SMG$K_TRM_LOWERCASE_G = 103		!g
	PARAMETER SMG$K_TRM_LOWERCASE_H = 104		!h
	PARAMETER SMG$K_TRM_LOWERCASE_I = 105		!i
	PARAMETER SMG$K_TRM_LOWERCASE_J = 106		!j
	PARAMETER SMG$K_TRM_LOWERCASE_K = 107		!k
	PARAMETER SMG$K_TRM_LOWERCASE_L = 108		!l
	PARAMETER SMG$K_TRM_LOWERCASE_M = 109		!m
	PARAMETER SMG$K_TRM_LOWERCASE_N = 110		!n
	PARAMETER SMG$K_TRM_LOWERCASE_O = 111		!o
	PARAMETER SMG$K_TRM_LOWERCASE_P = 112		!p
	PARAMETER SMG$K_TRM_LOWERCASE_Q = 113		!q
	PARAMETER SMG$K_TRM_LOWERCASE_R = 114		!r
	PARAMETER SMG$K_TRM_LOWERCASE_S = 115		!s
	PARAMETER SMG$K_TRM_LOWERCASE_T = 116		!t
	PARAMETER SMG$K_TRM_LOWERCASE_U = 117		!u
	PARAMETER SMG$K_TRM_LOWERCASE_V = 118		!v
	PARAMETER SMG$K_TRM_LOWERCASE_W = 119		!w
	PARAMETER SMG$K_TRM_LOWERCASE_X = 120		!x
	PARAMETER SMG$K_TRM_LOWERCASE_Y = 121		!y
	PARAMETER SMG$K_TRM_LOWERCASE_Z = 122		!z
	PARAMETER SMG$K_TRM_LEFT_BRACE = 123		!left curly brace
	PARAMETER SMG$K_TRM_VERTICAL_LINE = 124		!|
	PARAMETER SMG$K_TRM_RIGHT_BRACE = 125		!right curly brace
	PARAMETER SMG$K_TRM_TILDE = 126			!~
	PARAMETER SMG$K_TRM_DELETE = 127		!del
C
C Synonyms for control characters
C
	PARAMETER SMG$K_TRM_BS = 8	
	PARAMETER SMG$K_TRM_HT = 9	
	PARAMETER SMG$K_TRM_LF = 10	
	PARAMETER SMG$K_TRM_CR = 13	
C
C Keypad keys
C
	PARAMETER SMG$K_TRM_PF1 = 256	
	PARAMETER SMG$K_TRM_PF2 = 257	
	PARAMETER SMG$K_TRM_PF3 = 258	
	PARAMETER SMG$K_TRM_PF4 = 259	
	PARAMETER SMG$K_TRM_KP0 = 260	
	PARAMETER SMG$K_TRM_KP1 = 261	
	PARAMETER SMG$K_TRM_KP2 = 262	
	PARAMETER SMG$K_TRM_KP3 = 263	
	PARAMETER SMG$K_TRM_KP4 = 264	
	PARAMETER SMG$K_TRM_KP5 = 265	
	PARAMETER SMG$K_TRM_KP6 = 266	
	PARAMETER SMG$K_TRM_KP7 = 267	
	PARAMETER SMG$K_TRM_KP8 = 268	
	PARAMETER SMG$K_TRM_KP9 = 269	
	PARAMETER SMG$K_TRM_ENTER = 270	
	PARAMETER SMG$K_TRM_MINUS = 271	
	PARAMETER SMG$K_TRM_COMMA = 272	
	PARAMETER SMG$K_TRM_PERIOD = 273		!cursor positioning keys
	PARAMETER SMG$K_TRM_UP = 274	
	PARAMETER SMG$K_TRM_DOWN = 275	
	PARAMETER SMG$K_TRM_LEFT = 276	
	PARAMETER SMG$K_TRM_RIGHT = 277	
C
C Function keys
C
	PARAMETER SMG$K_TRM_F1 = 281	
	PARAMETER SMG$K_TRM_F2 = 282	
	PARAMETER SMG$K_TRM_F3 = 283	
	PARAMETER SMG$K_TRM_F4 = 284	
	PARAMETER SMG$K_TRM_F5 = 285	
	PARAMETER SMG$K_TRM_F6 = 286	
	PARAMETER SMG$K_TRM_F7 = 287	
	PARAMETER SMG$K_TRM_F8 = 288	
	PARAMETER SMG$K_TRM_F9 = 289	
	PARAMETER SMG$K_TRM_F10 = 290	
	PARAMETER SMG$K_TRM_F11 = 291	
	PARAMETER SMG$K_TRM_F12 = 292	
	PARAMETER SMG$K_TRM_F13 = 293	
	PARAMETER SMG$K_TRM_F14 = 294	
	PARAMETER SMG$K_TRM_HELP = 295			!f15
	PARAMETER SMG$K_TRM_DO = 296			!f16
	PARAMETER SMG$K_TRM_F17 = 297	
	PARAMETER SMG$K_TRM_F18 = 298	
	PARAMETER SMG$K_TRM_F19 = 299	
	PARAMETER SMG$K_TRM_F20 = 300	
C
C Synonyms for function keys
C
	PARAMETER SMG$K_TRM_F15 = 295	
	PARAMETER SMG$K_TRM_F16 = 296	
C
C Editing keys
C
	PARAMETER SMG$K_TRM_FIND = 311			!e1
	PARAMETER SMG$K_TRM_INSERT_HERE = 312		!e2
	PARAMETER SMG$K_TRM_REMOVE = 313		!e3
	PARAMETER SMG$K_TRM_SELECT = 314		!e4
	PARAMETER SMG$K_TRM_PREV_SCREEN = 315		!e5
	PARAMETER SMG$K_TRM_NEXT_SCREEN = 316		!e6
C
C Synonyms for editing keys
C
	PARAMETER SMG$K_TRM_E1 = 311			!find
	PARAMETER SMG$K_TRM_E2 = 312			!insert_here
	PARAMETER SMG$K_TRM_E3 = 313			!remove
	PARAMETER SMG$K_TRM_E4 = 314			!select
	PARAMETER SMG$K_TRM_E5 = 315			!prev_screen
	PARAMETER SMG$K_TRM_E6 = 316			!next_screen
C
C Conditions
C
	PARAMETER SMG$K_TRM_CANCELLED = 508	!i/o cancelled by smg$cancel_input
	PARAMETER SMG$K_TRM_TIMEOUT = 509	!timeout period expired
	PARAMETER SMG$K_TRM_BUFFER_FULL = 510	!buffer is full
	PARAMETER SMG$K_TRM_UNKNOWN = 511	!unknown terminator
C 
C Key definition attributes
C
	PARAMETER SMG$M_KEY_NOECHO = '1'X	
	PARAMETER SMG$M_KEY_TERMINATE = '2'X	
	PARAMETER SMG$M_KEY_LOCK = '4'X	
	PARAMETER SMG$M_KEY_PROTECTED = '8'X	
	PARAMETER SMG$M_KEY_SETSTATE = '10'X	
	PARAMETER SMG$S_KEY_DEF_ATTR = 4	
	PARAMETER SMG$V_KEY_NOECHO = 0		!don't echo strings
	PARAMETER SMG$V_KEY_TERMINATE = 1	!this key terminates read
	PARAMETER SMG$V_KEY_LOCK = 2		!lock new state
	PARAMETER SMG$V_KEY_PROTECTED = 3	!definition is protected
	PARAMETER SMG$V_KEY_SETSTATE = 4	!definition sets a state (output only)
C
C Screen management request types
C
	PARAMETER SMG$C_CHANGE_RENDITION = 10	!smg$change_rendition
	PARAMETER SMG$C_DELETE_CHARS = 11	!smg$delete_chars
	PARAMETER SMG$C_ERASE_DISPLAY = 12	!smg$erase_display
	PARAMETER SMG$C_ERASE_LINE = 13		!smg$erase_line
	PARAMETER SMG$C_HOME_CURSOR = 14	!smg$home_cursor
	PARAMETER SMG$C_INSERT_CHARS = 15	!smg$insert_chars
	PARAMETER SMG$C_INSERT_LINE = 16	!smg$insert_line
	PARAMETER SMG$C_PUT_CHARS = 17		!smg$put_chars
	PARAMETER SMG$C_PUT_LINE = 18		!smg$put_line
	PARAMETER SMG$C_PUT_DISPLAY_ENCODED = 19    !smg$put_virtual_display_encoded
	PARAMETER SMG$C_RETURN_CURSOR_POS = 20	!smg$return_cursor_pos
	PARAMETER SMG$C_PUT_WITH_SCROLL = 21	!smg$put_with_scroll
	PARAMETER SMG$C_SET_CURSOR_ABS = 22	!smg$set_cursor_abs
	PARAMETER SMG$C_SET_CURSOR_REL = 23	!smg$set_cursor_rel
	PARAMETER SMG$C_DELETE_LINE = 24	!smg$delete_line
	PARAMETER SMG$C_ERASE_CHARS = 25	!smg$erase_chars
	PARAMETER SMG$C_SCROLL_DISPLAY_AREA = 26    !smg$scroll_display_area
	PARAMETER SMG$C_CHANGE_VIRTUAL_DISPLAY = 27 !smg$change_virtual_display
	PARAMETER SMG$C_LABEL_BORDER = 28	!smg$label_border
	PARAMETER SMG$C_END_DISPLAY_UPDATE = 29	!smg$end_display_update
C
C Character Set Codes
C
	PARAMETER SMG$C_UNITED_KINGDOM = 0	
	PARAMETER SMG$C_ASCII = 1	
	PARAMETER SMG$C_SPEC_GRAPHICS = 2	!special graphics
	PARAMETER SMG$C_ALT_CHAR = 3		!alternate - standard char.
	PARAMETER SMG$C_ALT_GRAPHICS = 4	!alternate - special graphics
C 
C The following constants define corner cursor positions used in
C SMG$HOME_CURSOR.
C
	PARAMETER SMG$C_UPPER_LEFT = 0	
	PARAMETER SMG$C_LOWER_LEFT = 1	
	PARAMETER SMG$C_UPPER_RIGHT = 2	
	PARAMETER SMG$C_LOWER_RIGHT = 3	
C 
C The following constants define label positions used in
C SMG$LABEL_BORDER.
C
	PARAMETER SMG$K_TOP = 0	
	PARAMETER SMG$K_BOTTOM = 1	
	PARAMETER SMG$K_LEFT = 2	
	PARAMETER SMG$K_RIGHT = 3	
C 
C Define bit masks and values for screen attributes
C 
	PARAMETER SMG$M_BOLD = '1'X	
	PARAMETER SMG$M_REVERSE = '2'X	
	PARAMETER SMG$M_BLINK = '4'X	
	PARAMETER SMG$M_UNDERLINE = '8'X	
	PARAMETER SMG$M_NORMAL = '0'X		!no bits set
	PARAMETER SMG$V_BOLD = 0		!bold rendition
	PARAMETER SMG$V_REVERSE = 1		!reverse video rendition
	PARAMETER SMG$V_BLINK = 2		!blink rendition
	PARAMETER SMG$V_UNDERLINE = 3		!underline rendition
C
C Define bits, masks, and fields for the control modes.
C
	PARAMETER SMG$M_BUF_ENABLED = '1'X	
	PARAMETER SMG$M_MINUPD = '2'X	
	PARAMETER SMG$M_CLEAR_SCREEN = '4'X	
	PARAMETER SMG$M_NOTABS = '8'X	
	PARAMETER SMG$V_BUF_ENABLED = 0		!enable buffering
	PARAMETER SMG$V_MINUPD = 1		!enable minimal update (default)
	PARAMETER SMG$V_CLEAR_SCREEN = 2	!clear screen on exit
	PARAMETER SMG$V_NOTABS = 3		!don't use physical tabs
	PARAMETER SMG$K_BUF_ENABLED = 0		!enable buffering bitvector index
	PARAMETER SMG$K_MINUPD = 1		!enable minimal update bitvector index
	PARAMETER SMG$K_CLEAR_SCREEN = 2	!clear screen on exit
	PARAMETER SMG$K_NOTABS = 3		!don't use physical tabs
C
C Master color wheel for screen background colors.
C 
	PARAMETER SMG$C_COLOR_UNKNOWN = 0	
	PARAMETER SMG$C_COLOR_WHITE = 1	
	PARAMETER SMG$C_COLOR_BLACK = 2	
C
C The following constants correspond to the internal types defined
C in SMGTERM.REQ.  These names used to be for public use - the SMGTERM names
C used to be needed for compatibility with SCR$ and SMG$ code.
C Use of these names is now very highly discouraged.
C
	PARAMETER SMG$K_UNKNOWN = 0		!non-graphics or unknown type
	PARAMETER SMG$K_VT05 = 1		!vt05 series terminal
	PARAMETER SMG$K_VT52 = 2		!vt52 series terminal
	PARAMETER SMG$K_VT100 = 3		!vt100 series terminal
	PARAMETER SMG$K_VTFOREIGN = 4		!foreign terminal (ft1-8)
	PARAMETER SMG$K_HARDCOPY = 5		!hardcopy device
	PARAMETER SMG$K_VTTERMTABLE = 6		!video terminal
C
	PARAMETER SMG$M_BORDER = '1'X	
	PARAMETER SMG$M_TRUNC_ICON = '2'X	
	PARAMETER SMG$M_DISPLAY_CONTROLS = '4'X	
	PARAMETER SMG$M_USER_DISPLAY = '8'X	
	PARAMETER SMG$M_UP = '1'X	
	PARAMETER SMG$M_DOWN = '2'X	
	PARAMETER SMG$M_RIGHT = '4'X	
	PARAMETER SMG$M_LEFT = '8'X	
	PARAMETER SMG$K_FIRST_PRIV_TYPE = 191	
	PARAMETER SMG$S_SMGDEF = 32	
C 
C The following masks define values to be used
C to specify a display attribute.  These may be added
C together to specify multiple attributes.
C
	PARAMETER SMG$S_DISPLAY_ATTRIBUTES = 1	
	PARAMETER SMG$V_BORDER = 0		!display is bordered
	PARAMETER SMG$V_TRUNC_ICON = 1		!truncation icon enabled if set
	PARAMETER SMG$V_DISPLAY_CONTROLS = 2	!display carriage controls if set
	PARAMETER SMG$V_USER_DISPLAY = 3	!user display for debug if set
C
	STRUCTURE /SMGDEF/
	    UNION
C
C When an out-of-band AST triggers, the user's AST routine
C will get called.  The first argument passed to his
C routine is the address of a Band Information Table.
C The offsets into this table are described below.
C To make it easy to access from certain languages,
C the table is arranged so that it is convenient to
C reference it as a longword vector as well as a byte block.
C 
	PARAMETER SMG$S_BAND_INFORMATION_TABLE = 12	
		MAP			    !smg$r_band_information_table
		INTEGER*4 smg$l_pasteboard_id		!pasteboard id
		INTEGER*4 smg$l_arg			!user's ast argument
		    UNION
			MAP
			BYTE smg$r_character_overlay(4)	
			END MAP
			MAP
			BYTE smg$b_character		!the character typed
			END MAP
			MAP
			INTEGER*4 smg$l_character	!the character and 3 spaces
			END MAP
		    END UNION
		END MAP
C
C When SMG$GET_PASTEBOARD_ATTRIBUTES is called,
C it returns data in a pasteboard information block.
C The following structure is used to reference fields
C in this block.
C Items marked with a plus (+) will be 0 unless the
C device is a terminal (DEVCLASS=DC$_TERM).
C
	PARAMETER SMG$S_PASTEBOARD_INFO_BLOCK = 32	
		MAP			!smg$r_pasteboard_info_block	
		INTEGER*4 smg$l_devchar		!device characteristics
		INTEGER*4 smg$l_devdepend	!specific characteristics (1)
		INTEGER*4 smg$l_devdepend2	!specific characteristics (2)
		BYTE smg$b_devclass		!device class (e.g. dc$_term)
		BYTE smg$b_smg_devtype		!internal smg device type
		BYTE smg$b_phy_devtype		!physical device type (e.g. dt$_vt100)
		BYTE smg$b_rows			!number of rows on device
		INTEGER*2 smg$w_width		!terminal width
		BYTE smg$b_color		!reserved for future use
		BYTE smg$b_parity		!parity attributes (+)
		INTEGER*2 smg$w_speed		!terminal speed (+)
		INTEGER*2 smg$w_fill		!fill characteristics (+)
		INTEGER*2 smg$w_cursor_row	!row where physical cursor is (org=1)
		INTEGER*2 smg$w_cursor_col	!col where physical cursor is (org=1)
		INTEGER*4 smg$l_cursor_did	!display id of topmost display
						!cursor is in, 0 if cursor is not
						!in a virtual display.
		END MAP
C
C When SMG$GET_KEYBOARD_ATTRIBUTES is called,
C it returns data in a keyboard information block.
C The following structure is used to reference fields in this block
C Items marked with a plus (+) will be 0 unless the
C device is a terminal (DEVCLASS=DC$_TERM).
C
	PARAMETER SMG$S_KEYBOARD_INFO_BLOCK = 20	
		MAP			!smg$r_keyboard_info_block	
		BYTE %FILL(13)			!  devchar..devclass
		BYTE smg$b_recall_size		!size of recall buffer (+)
		BYTE %FILL			!  devtype
		BYTE smg$b_typeahead_char	!first char in typeahead buffer (+)
		BYTE %FILL(2)			!  width
		INTEGER*2 smg$w_typeahead_count	!number of chars in typeahead buffer (+)
		END MAP
C 
C Directions are set up as a structure, assuming that directions
C may be combined in the future (ie. diagonal movement).
C 
	PARAMETER SMG$S_SCROLL_DIRS = 1	
	PARAMETER SMG$V_UP = 0			!scroll up
	PARAMETER SMG$V_DOWN = 1		!scroll down
	PARAMETER SMG$V_RIGHT = 2		!scroll right
	PARAMETER SMG$V_LEFT = 3		!scroll left
C
	    END UNION
	END STRUCTURE