/***************************************************************************/ /** **/ /** HP CONFIDENTIAL. This software is confidential proprietary software **/ /** licensed by Hewlett-Packard Development Company, L.P., and is not **/ /** authorized to be used, duplicated OR disclosed to anyone without the **/ /** prior written permission of HP. **/ /** © 2021 Copyright Hewlett-Packard Development Company, L.P. **/ /** **/ /** VMS SOFTWARE, INC. CONFIDENTIAL. This software is confidential **/ /** proprietary software licensed by VMS Software, Inc., and is not **/ /** authorized to be used, duplicated or disclosed to anyone without **/ /** the prior written permission of VMS Software, Inc. **/ /** © 2021 Copyright VMS Software, Inc. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 9-Mar-2021 22:28:09 by OpenVMS SDL EV3-3 */ /* Source: 30-DEC-1996 15:42:00 $1$DGA8085:[STARLET.LIS]SMGDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE $SMGDEF ***/ #pragma __member_alignment __save #pragma __nomember_alignment /* Definitions for RTL Screen Management Facility */ /* */ /* Input terminator codes */ /* */ #define SMG$K_TRM_NULL_CHAR 0 /* NUL */ #define SMG$K_TRM_CTRLA 1 /* SOH */ #define SMG$K_TRM_CTRLB 2 /* STX */ #define SMG$K_TRM_CTRLC 3 /* ETX */ #define SMG$K_TRM_CTRLD 4 /* EOT */ #define SMG$K_TRM_CTRLE 5 /* ENQ */ #define SMG$K_TRM_CTRLF 6 /* ACK */ #define SMG$K_TRM_CTRLG 7 /* BEL */ #define SMG$K_TRM_CTRLH 8 /* BS */ #define SMG$K_TRM_CTRLI 9 /* HT */ #define SMG$K_TRM_CTRLJ 10 /* LF */ #define SMG$K_TRM_CTRLK 11 /* VT */ #define SMG$K_TRM_CTRLL 12 /* FF */ #define SMG$K_TRM_CTRLM 13 /* CR */ #define SMG$K_TRM_CTRLN 14 /* SO */ #define SMG$K_TRM_CTRLO 15 /* SI */ #define SMG$K_TRM_CTRLP 16 /* DLE */ #define SMG$K_TRM_CTRLQ 17 /* DC1 */ #define SMG$K_TRM_CTRLR 18 /* DC2 */ #define SMG$K_TRM_CTRLS 19 /* DC3 */ #define SMG$K_TRM_CTRLT 20 /* DC4 */ #define SMG$K_TRM_CTRLU 21 /* NAK */ #define SMG$K_TRM_CTRLV 22 /* SYN */ #define SMG$K_TRM_CTRLW 23 /* ETB */ #define SMG$K_TRM_CTRLX 24 /* CAN */ #define SMG$K_TRM_CTRLY 25 /* EM */ #define SMG$K_TRM_CTRLZ 26 /* SUB */ #define SMG$K_TRM_ESCAPE 27 /* ESC */ #define SMG$K_TRM_FS 28 /* FS */ #define SMG$K_TRM_GS 29 /* GS */ #define SMG$K_TRM_RS 30 /* RS */ #define SMG$K_TRM_US 31 /* US */ #define SMG$K_TRM_SPACE 32 /* SP */ #define SMG$K_TRM_EXCLAMATION_POINT 33 /* ! */ #define SMG$K_TRM_DOUBLE_QUOTE 34 /* " */ #define SMG$K_TRM_NUMBER_SIGN 35 /* # */ #define SMG$K_TRM_DOLLAR_SIGN 36 /* $ */ #define SMG$K_TRM_PERCENT_SIGN 37 /* % */ #define SMG$K_TRM_AMPERSAND 38 /* & */ #define SMG$K_TRM_QUOTE 39 /* ' */ #define SMG$K_TRM_LEFT_PAREN 40 /* ( */ #define SMG$K_TRM_RIGHT_PAREN 41 /* ) */ #define SMG$K_TRM_ASTERISK 42 /* * */ #define SMG$K_TRM_PLUS_SIGN 43 /* + */ #define SMG$K_TRM_COMMA_CHAR 44 /* , */ #define SMG$K_TRM_DASH 45 /* - */ #define SMG$K_TRM_DOT 46 /* . */ #define SMG$K_TRM_SLASH 47 /* / */ #define SMG$K_TRM_ZERO 48 /* 0 */ #define SMG$K_TRM_ONE 49 /* 1 */ #define SMG$K_TRM_TWO 50 /* 2 */ #define SMG$K_TRM_THREE 51 /* 3 */ #define SMG$K_TRM_FOUR 52 /* 4 */ #define SMG$K_TRM_FIVE 53 /* 5 */ #define SMG$K_TRM_SIX 54 /* 6 */ #define SMG$K_TRM_SEVEN 55 /* 7 */ #define SMG$K_TRM_EIGHT 56 /* 8 */ #define SMG$K_TRM_NINE 57 /* 9 */ #define SMG$K_TRM_COLON 58 /* : */ #define SMG$K_TRM_SEMICOLON 59 /* ; */ #define SMG$K_TRM_LESS_THAN 60 /* < */ #define SMG$K_TRM_EQUAL 61 /* = */ #define SMG$K_TRM_GREATER_THAN 62 /* > */ #define SMG$K_TRM_QUESTION_MARK 63 /* ? */ #define SMG$K_TRM_AT_SIGN 64 /* @ */ #define SMG$K_TRM_UPPERCASE_A 65 /* A */ #define SMG$K_TRM_UPPERCASE_B 66 /* B */ #define SMG$K_TRM_UPPERCASE_C 67 /* C */ #define SMG$K_TRM_UPPERCASE_D 68 /* D */ #define SMG$K_TRM_UPPERCASE_E 69 /* E */ #define SMG$K_TRM_UPPERCASE_F 70 /* F */ #define SMG$K_TRM_UPPERCASE_G 71 /* G */ #define SMG$K_TRM_UPPERCASE_H 72 /* H */ #define SMG$K_TRM_UPPERCASE_I 73 /* I */ #define SMG$K_TRM_UPPERCASE_J 74 /* J */ #define SMG$K_TRM_UPPERCASE_K 75 /* K */ #define SMG$K_TRM_UPPERCASE_L 76 /* L */ #define SMG$K_TRM_UPPERCASE_M 77 /* M */ #define SMG$K_TRM_UPPERCASE_N 78 /* N */ #define SMG$K_TRM_UPPERCASE_O 79 /* O */ #define SMG$K_TRM_UPPERCASE_P 80 /* P */ #define SMG$K_TRM_UPPERCASE_Q 81 /* Q */ #define SMG$K_TRM_UPPERCASE_R 82 /* R */ #define SMG$K_TRM_UPPERCASE_S 83 /* S */ #define SMG$K_TRM_UPPERCASE_T 84 /* T */ #define SMG$K_TRM_UPPERCASE_U 85 /* U */ #define SMG$K_TRM_UPPERCASE_V 86 /* V */ #define SMG$K_TRM_UPPERCASE_W 87 /* W */ #define SMG$K_TRM_UPPERCASE_X 88 /* X */ #define SMG$K_TRM_UPPERCASE_Y 89 /* Y */ #define SMG$K_TRM_UPPERCASE_Z 90 /* Z */ #define SMG$K_TRM_LEFT_BRACKET 91 /* [ */ #define SMG$K_TRM_BACKSLASH 92 /* \ */ #define SMG$K_TRM_RIGHT_BRACKET 93 /* ] */ #define SMG$K_TRM_CARET 94 /* ^ */ #define SMG$K_TRM_UNDERLINE 95 /* _ */ #define SMG$K_TRM_GRAVE_ACCENT 96 /* ` */ #define SMG$K_TRM_LOWERCASE_A 97 /* a */ #define SMG$K_TRM_LOWERCASE_B 98 /* b */ #define SMG$K_TRM_LOWERCASE_C 99 /* c */ #define SMG$K_TRM_LOWERCASE_D 100 /* d */ #define SMG$K_TRM_LOWERCASE_E 101 /* e */ #define SMG$K_TRM_LOWERCASE_F 102 /* f */ #define SMG$K_TRM_LOWERCASE_G 103 /* g */ #define SMG$K_TRM_LOWERCASE_H 104 /* h */ #define SMG$K_TRM_LOWERCASE_I 105 /* i */ #define SMG$K_TRM_LOWERCASE_J 106 /* j */ #define SMG$K_TRM_LOWERCASE_K 107 /* k */ #define SMG$K_TRM_LOWERCASE_L 108 /* l */ #define SMG$K_TRM_LOWERCASE_M 109 /* m */ #define SMG$K_TRM_LOWERCASE_N 110 /* n */ #define SMG$K_TRM_LOWERCASE_O 111 /* o */ #define SMG$K_TRM_LOWERCASE_P 112 /* p */ #define SMG$K_TRM_LOWERCASE_Q 113 /* q */ #define SMG$K_TRM_LOWERCASE_R 114 /* r */ #define SMG$K_TRM_LOWERCASE_S 115 /* s */ #define SMG$K_TRM_LOWERCASE_T 116 /* t */ #define SMG$K_TRM_LOWERCASE_U 117 /* u */ #define SMG$K_TRM_LOWERCASE_V 118 /* v */ #define SMG$K_TRM_LOWERCASE_W 119 /* w */ #define SMG$K_TRM_LOWERCASE_X 120 /* x */ #define SMG$K_TRM_LOWERCASE_Y 121 /* y */ #define SMG$K_TRM_LOWERCASE_Z 122 /* z */ #define SMG$K_TRM_LEFT_BRACE 123 /* left curly brace */ #define SMG$K_TRM_VERTICAL_LINE 124 /* | */ #define SMG$K_TRM_RIGHT_BRACE 125 /* right curly brace */ #define SMG$K_TRM_TILDE 126 /* ~ */ #define SMG$K_TRM_DELETE 127 /* DEL */ /* */ /* Synonyms for control characters */ /* */ #define SMG$K_TRM_BS 8 #define SMG$K_TRM_HT 9 #define SMG$K_TRM_LF 10 #define SMG$K_TRM_VT 11 #define SMG$K_TRM_FF 12 #define SMG$K_TRM_CR 13 /* */ /* Keypad keys */ /* */ #define SMG$K_TRM_PF1 256 #define SMG$K_TRM_PF2 257 #define SMG$K_TRM_PF3 258 #define SMG$K_TRM_PF4 259 #define SMG$K_TRM_KP0 260 #define SMG$K_TRM_KP1 261 #define SMG$K_TRM_KP2 262 #define SMG$K_TRM_KP3 263 #define SMG$K_TRM_KP4 264 #define SMG$K_TRM_KP5 265 #define SMG$K_TRM_KP6 266 #define SMG$K_TRM_KP7 267 #define SMG$K_TRM_KP8 268 #define SMG$K_TRM_KP9 269 #define SMG$K_TRM_ENTER 270 #define SMG$K_TRM_MINUS 271 #define SMG$K_TRM_COMMA 272 #define SMG$K_TRM_PERIOD 273 /* */ /* Cursor positioning keys */ /* */ #define SMG$K_TRM_UP 274 #define SMG$K_TRM_DOWN 275 #define SMG$K_TRM_LEFT 276 #define SMG$K_TRM_RIGHT 277 /* */ /* Function keys */ /* */ #define SMG$K_TRM_F1 281 #define SMG$K_TRM_F2 282 #define SMG$K_TRM_F3 283 #define SMG$K_TRM_F4 284 #define SMG$K_TRM_F5 285 #define SMG$K_TRM_F6 286 #define SMG$K_TRM_F7 287 #define SMG$K_TRM_F8 288 #define SMG$K_TRM_F9 289 #define SMG$K_TRM_F10 290 #define SMG$K_TRM_F11 291 #define SMG$K_TRM_F12 292 #define SMG$K_TRM_F13 293 #define SMG$K_TRM_F14 294 #define SMG$K_TRM_F15 295 #define SMG$K_TRM_F16 296 #define SMG$K_TRM_F17 297 #define SMG$K_TRM_F18 298 #define SMG$K_TRM_F19 299 #define SMG$K_TRM_F20 300 /* */ /* Synonyms for function keys */ /* */ #define SMG$K_TRM_HELP 295 #define SMG$K_TRM_DO 296 /* */ /* Editing keys */ /* */ #define SMG$K_TRM_E1 311 /* FIND */ #define SMG$K_TRM_E2 312 /* INSERT_HERE */ #define SMG$K_TRM_E3 313 /* REMOVE */ #define SMG$K_TRM_E4 314 /* SELECT */ #define SMG$K_TRM_E5 315 /* PREV_SCREEN */ #define SMG$K_TRM_E6 316 /* NEXT_SCREEN */ /* */ /* Synonyms for editing keys */ /* */ #define SMG$K_TRM_FIND 311 /* E1 */ #define SMG$K_TRM_INSERT_HERE 312 /* E2 */ #define SMG$K_TRM_REMOVE 313 /* E3 */ #define SMG$K_TRM_SELECT 314 /* E4 */ #define SMG$K_TRM_PREV_SCREEN 315 /* E5 */ #define SMG$K_TRM_NEXT_SCREEN 316 /* E6 */ /* */ /* Locator keys */ /* */ #define SMG$K_TRM_FIRST_DOWN 321 /* Left button down */ #define SMG$K_TRM_SECOND_DOWN 322 /* Middle button down */ #define SMG$K_TRM_THIRD_DOWN 323 /* Right button down */ #define SMG$K_TRM_FOURTH_DOWN 324 /* Fourth button down */ #define SMG$K_TRM_FIRST_UP 325 /* Left button up */ #define SMG$K_TRM_SECOND_UP 326 /* Middle button up */ #define SMG$K_TRM_THIRD_UP 327 /* Right button up */ #define SMG$K_TRM_FOURTH_UP 328 /* Fourth button up */ /* */ /* Conditions */ /* */ #define SMG$K_TRM_CANCELLED 508 /* I/O cancelled by SMG$CANCEL_INPUT */ #define SMG$K_TRM_TIMEOUT 509 /* Timeout period expired */ #define SMG$K_TRM_BUFFER_FULL 510 /* Buffer is full */ #define SMG$K_TRM_UNKNOWN 511 /* Unknown terminator */ /* */ /* Screen Management request types - These constants are used internally */ /* by SMG$ and should not be used by users. */ /* */ #define SMG$C_CHANGE_RENDITION 10 #define SMG$C_DELETE_CHARS 11 #define SMG$C_ERASE_DISPLAY 12 #define SMG$C_ERASE_LINE 13 #define SMG$C_HOME_CURSOR 14 #define SMG$C_INSERT_CHARS 15 #define SMG$C_INSERT_LINE 16 #define SMG$C_PUT_CHARS 17 #define SMG$C_PUT_LINE 18 #define SMG$C_PUT_DISPLAY_ENCODED 19 #define SMG$C_RETURN_CURSOR_POS 20 #define SMG$C_PUT_WITH_SCROLL 21 #define SMG$C_SET_CURSOR_ABS 22 #define SMG$C_SET_CURSOR_REL 23 #define SMG$C_DELETE_LINE 24 #define SMG$C_ERASE_CHARS 25 #define SMG$C_SCROLL_DISPLAY_AREA 26 #define SMG$C_CHANGE_VIRTUAL_DISPLAY 27 #define SMG$C_LABEL_BORDER 28 #define SMG$C_END_DISPLAY_UPDATE 29 #define SMG$C_MOVE_TEXT 30 /* */ /* Character Set Codes */ /* */ #define SMG$C_UNITED_KINGDOM 0 /* Unused */ #define SMG$C_ASCII 1 /* ASCII char set */ #define SMG$C_SPEC_GRAPHICS 2 /* Line drawing set */ #define SMG$C_ALT_CHAR 3 /* Unused */ #define SMG$C_ALT_GRAPHICS 4 /* Unused */ #define SMG$C_UNKNOWN 5 #define SMG$C_SUPPLEMENTAL 6 #define SMG$C_JIS_ROMAN 7 #define SMG$C_JIS_KANA 8 #define SMG$C_KANJI 9 #define SMG$C_HANZI 10 #define SMG$C_HANYU 11 #define SMG$C_HANGUL 12 #define SMG$C_KS_ROMAN 13 /* */ /* The following constants define corner cursor positions used in */ /* SMG$HOME_CURSOR. */ /* */ #define SMG$C_UPPER_LEFT 0 /* Home cursor to upper left corner */ #define SMG$C_LOWER_LEFT 1 /* Home cursor to lower left corner */ #define SMG$C_UPPER_RIGHT 2 /* Home cursor to upper right corner */ #define SMG$C_LOWER_RIGHT 3 /* Home cursor to lower right corner */ /* */ /* The following constants define label positions used in */ /* SMG$LABEL_BORDER. */ /* */ #define SMG$K_TOP 0 /* Place label on top border */ #define SMG$K_BOTTOM 1 /* Place label on bottom border */ #define SMG$K_LEFT 2 /* Place label on left border */ #define SMG$K_RIGHT 3 /* Place label on right border */ /* */ /* The following constants define menu types used in */ /* SMG$CREATE_MENU. */ /* */ #define SMG$K_BLOCK 0 /* Matrix of menu items */ #define SMG$K_VERTICAL 1 /* Vertical vector of menu items */ #define SMG$K_HORIZONTAL 2 /* Horizontal vector of menu items */ /* */ /* Master color wheel for screen background colors. */ /* Used with SMG$CHANGE_PBD_CHARACTERISTICS. */ /* */ #define SMG$C_COLOR_UNKNOWN 0 /* Unknown background */ #define SMG$C_COLOR_WHITE 1 /* White background */ #define SMG$C_COLOR_BLACK 2 /* Black background */ #define SMG$C_COLOR_BLUE 3 /* Blue background */ #define SMG$C_COLOR_CYAN 4 /* Cyan background */ #define SMG$C_COLOR_GREEN 5 /* Green background */ #define SMG$C_COLOR_MAGENTA 6 /* Magenta background */ #define SMG$C_COLOR_RED 7 /* Red background */ #define SMG$C_COLOR_YELLOW 8 /* Yellow background */ #define SMG$C_COLOR_LIGHT 9 /* Light background */ #define SMG$C_COLOR_DARK 10 /* Dark background */ #define SMG$C_COLOR_USER1 11 /* User 1 background */ #define SMG$C_COLOR_USER2 12 /* User 2 background */ #define SMG$C_COLOR_USER3 13 /* User 3 background */ #define SMG$C_COLOR_USER4 14 /* User 4 background */ #define SMG$C_COLOR_USER5 15 /* User 5 background */ #define SMG$C_COLOR_USER6 16 /* User 6 background */ #define SMG$C_COLOR_USER7 17 /* User 7 background */ #define SMG$C_COLOR_USER8 18 /* User 8 background */ /* */ /* The following constants describe the type of terminal */ /* and are used with SMG$GET_PASTEBOARD_ATTRIBUTES. */ /* */ #define SMG$K_UNKNOWN 0 /* Unknown type */ #define SMG$K_VT05 1 /* Unused */ #define SMG$K_VT52 2 /* Unused */ #define SMG$K_VT100 3 /* Unused */ #define SMG$K_VTFOREIGN 4 /* Foreign terminal (ft1-8) */ #define SMG$K_HARDCOPY 5 /* Hardcopy device */ #define SMG$K_VTTERMTABLE 6 /* Video terminal */ #define SMG$K_FIRST_PRIV_TYPE 191 /* Used internally by SMG$ */ /* */ /* Define bits, masks, and fields for the control modes. */ /* */ #define SMG$K_BUF_ENABLED 0 /* Enable Buffering */ #define SMG$K_MINUPD 1 /* Enable minimal update */ #define SMG$K_CLEAR_SCREEN 2 /* Clear screen on exit */ #define SMG$K_NOTABS 3 /* Don't use physical tabs */ #define SMG$K_PROTECT 4 /* Protect against ASTs */ #define SMG$K_IGNORE 5 /* Don't output PBD if batched */ #define SMG$K_RELEASE_PBD 6 /* Don't touch users part of PBD */ #define SMG$M_BUF_ENABLED 0x1 #define SMG$M_MINUPD 0x2 #define SMG$M_CLEAR_SCREEN 0x4 #define SMG$M_NOTABS 0x8 #define SMG$M_PROTECT 0x10 #define SMG$M_IGNORE 0x20 #define SMG$M_RELEASE_PBD 0x40 #define SMG$m_spare15 0xFFFFFF80 struct SMGMODE_BITS { unsigned SMG$V_BUF_ENABLED : 1; /* Enable buffering */ unsigned SMG$V_MINUPD : 1; /* Enable minimal update (default) */ unsigned SMG$V_CLEAR_SCREEN : 1; /* Clear screen on exit */ unsigned SMG$V_NOTABS : 1; /* Don't use physical tabs */ unsigned SMG$V_PROTECT : 1; /* Protect against ASTs */ unsigned SMG$V_IGNORE : 1; /* Don't output PBD if batched */ unsigned SMG$V_RELEASE_PBD : 1; /* Don't touch users part of PBD */ unsigned SMG$v_spare15 : 25; /* extra bits */ } ; /* */ /* Key definition attributes */ /* */ #define SMG$M_KEY_NOECHO 0x1 #define SMG$M_KEY_TERMINATE 0x2 #define SMG$M_KEY_LOCK 0x4 #define SMG$M_KEY_PROTECTED 0x8 #define SMG$M_KEY_SETSTATE 0x10 #define SMG$m_spare18 0xFFFFFFE0 struct SMG$R_KEY_DEF_ATTR { unsigned SMG$V_KEY_NOECHO : 1; /* Don't echo strings */ unsigned SMG$V_KEY_TERMINATE : 1; /* This key terminates read */ unsigned SMG$V_KEY_LOCK : 1; /* Lock new state */ unsigned SMG$V_KEY_PROTECTED : 1; /* Definition is protected */ unsigned SMG$V_KEY_SETSTATE : 1; /* Definition sets a state (output only) */ unsigned SMG$v_spare18 : 27; /* extra bits */ } ; /* */ /* Define bit masks and values for display renditions. */ /* */ #define SMG$M_BOLD 0x1 #define SMG$M_REVERSE 0x2 #define SMG$M_BLINK 0x4 #define SMG$M_UNDERLINE 0x8 #define SMG$M_INVISIBLE 0x10 #define SMG$M_USER1 0x100 #define SMG$M_USER2 0x200 #define SMG$M_USER3 0x400 #define SMG$M_USER4 0x800 #define SMG$M_USER5 0x1000 #define SMG$M_USER6 0x2000 #define SMG$M_USER7 0x4000 #define SMG$M_USER8 0x8000 #define SMG$m_spare14 0xFFFF0000 struct SMGDEF_BITS { unsigned SMG$V_BOLD : 1; /* Bold rendition */ unsigned SMG$V_REVERSE : 1; /* Reverse video rendition */ unsigned SMG$V_BLINK : 1; /* Blink rendition */ unsigned SMG$V_UNDERLINE : 1; /* Underline rendition */ unsigned SMG$V_INVISIBLE : 1; /* Invisible rendition */ unsigned SMG$v_fill1 : 3; /* internally used by SMG$ */ unsigned SMG$V_USER1 : 1; /* User rendition 1 */ unsigned SMG$V_USER2 : 1; /* User rendition 2 */ unsigned SMG$V_USER3 : 1; /* User rendition 3 */ unsigned SMG$V_USER4 : 1; /* User rendition 4 */ unsigned SMG$V_USER5 : 1; /* User rendition 5 */ unsigned SMG$V_USER6 : 1; /* User rendition 6 */ unsigned SMG$V_USER7 : 1; /* User rendition 7 */ unsigned SMG$V_USER8 : 1; /* User rendition 8 */ unsigned SMG$v_spare14 : 16; /* extra bits */ } ; #define SMG$M_NORMAL 0 /* no bits set */ /* */ /* The following masks define values to be used */ /* to specify a display attribute. These may be added */ /* together to specify multiple attributes. */ /* */ #define SMG$M_BORDER 0x1 #define SMG$M_TRUNC_ICON 0x2 #define SMG$M_DISPLAY_CONTROLS 0x4 #define SMG$M_USER_DISPLAY 0x8 #define SMG$M_BLOCK_BORDER 0x10 #define SMG$M_PROTECT_DISPLAY 0x20 #define SMG$m_spare12 0xFFFFFFC0 struct DISPLAY_ATTRIBUTES { unsigned SMG$V_BORDER : 1; /* Display is bordered */ unsigned SMG$V_TRUNC_ICON : 1; /* Truncation icon enabled */ unsigned SMG$V_DISPLAY_CONTROLS : 1; /* Display carriage controls */ unsigned SMG$V_USER_DISPLAY : 1; /* User display for DEBUG */ unsigned SMG$V_BLOCK_BORDER : 1; /* Display is block bordered */ unsigned SMG$V_PROTECT_DISPLAY : 1; /* Protect display against ASTs */ unsigned SMG$v_spare12 : 26; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$CREATE_SUBPROCESS. */ /* */ #define SMG$M_TRUSTED 0x1 #define SMG$M_AUTHPRIV 0x2 #define SMG$M_SUBSYSTEM 0x4 #define SMG$m_spare20 0xFFFFFFF8 struct SMG$R_CREATE_SUBPROCESS_FLAGS { unsigned SMG$V_TRUSTED : 1; /* Set TRUSTED flag for LIB$SPAWN */ unsigned SMG$V_AUTHPRIV : 1; /* Set AUTHPRIV flag for LIB$SPAWN */ unsigned SMG$V_SUBSYSTEM : 1; /* Set SUBSYSTEM flag for LIB$SPAWN */ unsigned SMG$v_spare20 : 29; /* extra bits */ } ; /* */ /* The following defines bits used with subprocess manipulation. */ /* */ #define SMG$M_DATA_FOLLOWS 0x1 #define SMG$M_SEND_EOF 0x2 #define SMG$M_NO_PRINT 0x4 #define SMG$m_spare11 0xFFFFFFF8 struct SMG$R_SUBPROCESS_FLAGS { unsigned SMG$V_DATA_FOLLOWS : 1; /* The next call specifies data. */ unsigned SMG$V_SEND_EOF : 1; /* Send an end-of-file to the subprocess */ unsigned SMG$V_NO_PRINT : 1; /* Do not output command to the display */ unsigned SMG$v_spare11 : 29; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$DELETE_PASTEBOARD. */ /* */ #define SMG$M_ERASE_PBD 0x1 #define SMG$M_IGNORE_BATCHED 0x2 #define SMG$m_spare10 0xFFFFFFFC struct SMG$R_DELETE_PBD_FLAGS { unsigned SMG$V_ERASE_PBD : 1; /* Erase the pasteboard */ unsigned SMG$V_IGNORE_BATCHED : 1; /* Delete even if pbd is batched */ unsigned SMG$v_spare10 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$CREATE_PASTEBOARD. */ /* */ #define SMG$M_KEEP_CONTENTS 0x1 #define SMG$M_WORKSTATION 0x2 #define SMG$m_spare9 0xFFFFFFFC struct SMG$R_CREATE_PBD_FLAGS { unsigned SMG$V_KEEP_CONTENTS : 1; /* Don't erase the pasteboard */ unsigned SMG$V_WORKSTATION : 1; /* Pasteboard is DECwindows terminal */ unsigned SMG$v_spare9 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$READ_xxxx. */ /* */ #define SMG$M_FUNC_KEYS 0x1 #define SMG$M_NOKEEP 0x2 #define SMG$M_NORECALL 0x4 #define SMG$m_spare8 0xFFFFFFF8 struct SMG$R_READ_FLAGS { unsigned SMG$V_FUNC_KEYS : 1; /* Disable line-editting. */ unsigned SMG$V_NOKEEP : 1; /* Don't save input in recall buffer */ unsigned SMG$V_NORECALL : 1; /* Disable input recall for this call */ unsigned SMG$v_spare8 : 29; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$SET_CURSOR_MODE. */ /* */ #define SMG$M_CURSOR_OFF 0x1 #define SMG$M_CURSOR_ON 0x2 #define SMG$M_SCROLL_JUMP 0x4 #define SMG$M_SCROLL_SMOOTH 0x8 #define SMG$m_spare16 0xFFFFFFF0 struct SMG$R_SET_CURSOR_FLAGS { unsigned SMG$V_CURSOR_OFF : 1; /* Turn the physical cursor off */ unsigned SMG$V_CURSOR_ON : 1; /* Turn the physical cursor on */ unsigned SMG$V_SCROLL_JUMP : 1; /* Set jump scroll */ unsigned SMG$V_SCROLL_SMOOTH : 1; /* Set smooth scroll */ unsigned SMG$v_spare16 : 28; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$GET_DISPLAY_ATTR. */ /* */ #define SMG$M_VIEWPORT 0x1 #define SMG$M_SUBPROCESS 0x2 #define SMG$M_MENU 0x4 #define SMG$m_spare7 0xFFFFFFF8 struct SMG$R_GET_DISPLAY_FLAGS { unsigned SMG$V_VIEWPORT : 1; /* Display contains a viewport */ unsigned SMG$V_SUBPROCESS : 1; /* Display contains a subprocess */ unsigned SMG$V_MENU : 1; /* Display contains a menu */ unsigned SMG$v_spare7 : 29; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$PUT_CHARS. */ /* */ #define SMG$M_ERASE_LINE 0x1 #define SMG$M_ERASE_TO_EOL 0x2 #define SMG$m_spare6 0xFFFFFFFC struct SMG$R_PUT_CHARS_FLAGS { unsigned SMG$V_ERASE_LINE : 1; /* Erase the entire line */ unsigned SMG$V_ERASE_TO_EOL : 1; /* Erase from cursor to end of line */ unsigned SMG$v_spare6 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$MOVE_TEXT. */ /* */ #define SMG$M_TEXT_SAVE 0x1 #define SMG$M_TEXT_ONLY 0x2 #define SMG$m_spare17 0xFFFFFFFC struct SMG$R_MOVE_TEXT_FLAGS { unsigned SMG$V_TEXT_SAVE : 1; /* Don't erase text after moving it */ unsigned SMG$V_TEXT_ONLY : 1; /* Don't move attributes */ unsigned SMG$v_spare17 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$PUT_PASTEBOARD and SMG$SNAPSHOT. */ /* */ #define SMG$M_FORM_FEED 0x1 #define SMG$m_spare5 0xFFFFFFFE struct SMG$R_SNAPSHOT_FLAGS { unsigned SMG$V_FORM_FEED : 1; /* Output form feed before first row */ unsigned SMG$v_spare5 : 31; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$PUT_xxxx. */ /* */ #define SMG$M_WRAP_CHAR 0x1 #define SMG$M_WRAP_WORD 0x2 #define SMG$m_spare4 0xFFFFFFFC struct SMG$R_PUT_LINE_FLAGS { unsigned SMG$V_WRAP_CHAR : 1; /* Do character wrapping at end of line */ unsigned SMG$V_WRAP_WORD : 1; /* Do word wrapping at end of line */ unsigned SMG$v_spare4 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$SET_KEYPAD_MODE. */ /* */ #define SMG$M_KEYPAD_APPLICATION 0x1 #define SMG$M_KEYPAD_NUMERIC 0x2 #define SMG$m_spare3 0xFFFFFFFC struct SMG$R_KEYPAD_MODES { unsigned SMG$V_KEYPAD_APPLICATION : 1; /* Application keypad */ unsigned SMG$V_KEYPAD_NUMERIC : 1; /* Numeric keypad */ unsigned SMG$v_spare3 : 30; /* extra bits */ } ; /* */ /* The following defines bits used with the FLAGS parameter for */ /* SMG$GET_PASTING_INFO. */ /* */ #define SMG$M_DISPLAY_PASTED 0x1 #define SMG$m_spare19 0xFFFFFFFE struct SMG$R_PASTING_INFO_FLAGS { unsigned SMG$V_DISPLAY_PASTED : 1; /* Display is pasted */ unsigned SMG$v_spare19 : 31; /* extra bits */ } ; /* */ /* The following defines bits used with menu manipulation. */ /* */ #define SMG$M_REMOVE_ITEM 0x1 #define SMG$M_FIXED_FORMAT 0x2 #define SMG$M_DOUBLE_SPACE 0x4 #define SMG$M_RETURN_IMMED 0x8 #define SMG$M_ERASE_MENU 0x10 #define SMG$M_WIDE_MENU 0x20 #define SMG$M_WRAP_MENU 0x40 #define SMG$M_FULL_FIELD 0x80 #define SMG$m_spare2 0xFFFFFF00 struct SMG$R_MENU_FLAGS { unsigned SMG$V_REMOVE_ITEM : 1; /* Only select item once */ unsigned SMG$V_FIXED_FORMAT : 1; /* Use fixed size cols */ unsigned SMG$V_DOUBLE_SPACE : 1; /* Double space menu rows */ unsigned SMG$V_RETURN_IMMED : 1; /* Ret on non-arrow key */ unsigned SMG$V_ERASE_MENU : 1; /* Erase menu when deleting */ unsigned SMG$V_WIDE_MENU : 1; /* Wide menu items */ unsigned SMG$V_WRAP_MENU : 1; /* Wrap menu items top to bottom */ unsigned SMG$V_FULL_FIELD : 1; /* Highlight entire field */ /* SCROLL_BARS bitfield mask; /* Use scroll bar indicators */ /* MARK_ITEM bitfield mask; /* Use def rend for chosen items */ unsigned SMG$v_spare2 : 24; /* extra bits */ } ; /* */ /* The following are used with SMG$PUT_LINE_xxxx, */ /* SMG$SCROLL_DISPLAY_AREA, and SMG$DRAW_CHAR. */ /* */ #define SMG$M_UP 0x1 #define SMG$M_DOWN 0x2 #define SMG$M_RIGHT 0x4 #define SMG$M_LEFT 0x8 #define SMG$m_spare1 0xFFFFFFF0 struct SCROLL_DIRS { unsigned SMG$V_UP : 1; /* Up */ unsigned SMG$V_DOWN : 1; /* Down */ unsigned SMG$V_RIGHT : 1; /* Right */ unsigned SMG$V_LEFT : 1; /* Left */ unsigned SMG$v_spare1 : 28; /* extra bits */ } ; /* */ /* Define data structures */ /* */ #define SMG$C_BAND_INFORMATION_TABLE 12 /* Length of table in bytes */ /* */ #define SMG$C_PASTEBOARD_INFO_BLOCK 36 /* Length of table in bytes */ /* */ #define SMG$C_KEYBOARD_INFO_BLOCK 36 /* Length of table in bytes */ union SMGDEF { /* */ /* When an out-of-band AST triggers, the user's AST routine */ /* will get called. The first argument passed to his */ /* routine is the address of a Band Information Table. */ /* The offsets into this table are described below. */ /* To make it easy to access from certain languages, */ /* the table is arranged so that it is convenient to */ /* reference it as a longword vector as well as a byte block. */ /* */ struct { unsigned int SMG$L_PASTEBOARD_ID; /* Pasteboard ID */ unsigned int SMG$L_ARG; /* User's AST argument */ union { unsigned char SMG$B_CHARACTER; /* The character typed */ unsigned int SMG$L_CHARACTER; /* The character and 3 spaces */ } SMG$R_CHARACTER_OVERLAY; } SMG$R_BAND_INFORMATION_TABLE; /* When SMG$GET_PASTEBOARD_ATTRIBUTES is called, */ /* it returns data in a pasteboard information block. */ /* The following structure is used to reference fields */ /* in this block. */ /* Items marked with a plus (+) will be 0 unless the */ /* device is a terminal (DEVCLASS=DC$_TERM). */ /* */ struct { unsigned int SMG$L_DEVCHAR; /* Device characteristics */ unsigned int SMG$L_DEVDEPEND; /* Specific characteristics (1) */ unsigned int SMG$L_DEVDEPEND2; /* Specific characteristics (2) */ unsigned char SMG$B_DEVCLASS; /* Device class (e.g. DC$_TERM) */ unsigned char SMG$B_SMG_DEVTYPE; /* Internal SMG device type */ unsigned char SMG$B_PHY_DEVTYPE; /* Physical device type (e.g. DT$_VT100) */ unsigned char SMG$B_ROWS; /* Number of rows on device */ unsigned short int SMG$W_WIDTH; /* Terminal width */ unsigned char SMG$B_COLOR; /* PBD background color */ unsigned char SMG$B_PARITY; /* Parity attributes (+) */ unsigned short int SMG$W_SPEED; /* Terminal Speed (+) */ unsigned short int SMG$W_FILL; /* Fill characteristics (+) */ unsigned short int SMG$W_CURSOR_ROW; /* Row where physical cursor is */ /* (1-origin) */ unsigned short int SMG$W_CURSOR_COL; /* Col where physical cursor is */ /* (1-origin) */ unsigned int SMG$L_CURSOR_DID; /* Display id of topmost */ /* display that cursor is in. */ /* 0 if cursor is not in a */ /* virtual display */ unsigned int SMG$L_DEVDEPEND3; /* Specific characteristics (3) */ } SMG$R_PASTEBOARD_INFO_BLOCK; /* When SMG$GET_KEYBOARD_ATTRIBUTES is called, */ /* it returns data in a keyboard information block. */ /* The following structure is used to reference fields */ /* in this block. */ /* Items marked with a plus (+) will be 0 unless the */ /* device is a terminal (DEVCLASS=DC$_TERM). */ /* */ struct { unsigned int SMG$l_fill1; /* Device characteristics */ unsigned int SMG$l_fill2; /* Specific characteristics (1) */ unsigned int SMG$l_fill3; /* Specific characteristics (2) */ unsigned char SMG$b_fill4; /* Device class (e.g. DC$_TERM) */ unsigned char SMG$B_RECALL_SIZE; /* Size of recall buffer (+) */ unsigned char SMG$b_fill5; /* Physical device type (e.g. DT$_VT100) */ unsigned char SMG$B_TYPEAHEAD_CHAR; /* First char in typeahead buffer (+) */ unsigned short int SMG$w_fill6; /* Terminal width */ unsigned short int SMG$W_TYPEAHEAD_COUNT; /* Number of chars in typeahead buffer (+) */ unsigned int SMG$l_fill7; unsigned int SMG$l_fill8; unsigned int SMG$l_fill9; unsigned int SMG$l_fill10; /* Device characteristics 3 */ } SMG$R_KEYBOARD_INFO_BLOCK; } ; /* */ /* Define the out-of-band information table used when an out-of-band */ /* AST routine is called as it's own record. */ /* */ struct SMG$R_OUT_OF_BAND_TABLE { unsigned int SMG$L_PBD_ID; /* Pasteboard ID */ unsigned int SMG$L_USER_ARG; /* User's AST argument */ union { unsigned char SMG$B_CHAR; /* The character typed */ unsigned int SMG$L_CHAR; /* The character and 3 spaces */ } SMG$R_CHAR_OVERLAY; } ; #define SMG$C_OUT_OF_BAND_TABLE 12 /* Length of table in bytes */ /* */ /* Define the subprocess information table used when a subprocess */ /* AST routine is called as it's own record. */ /* */ struct SMG$R_SUBPROCESS_INFO_TABLE { unsigned int SMG$L_DISP_ID; /* Display ID */ unsigned int SMG$L_USR_ARG; /* User's AST argument */ unsigned int SMG$L_STATUS; /* Status of executed command */ } ; #define SMG$C_SUBPROCESS_INFO_TABLE 12 /* Length of table in bytes */ /* */ /* Define an information table that can be used by both */ /* SMG$GET_PASTEBOARD_ATTRIBUTES and SMG$GET_KEYBOARD_ATTRIBUTES */ /* as it's own record. */ /* */ struct SMG$R_ATTRIBUTE_INFO_BLOCK { unsigned int SMG$L_DEV_CHAR; /* Device characteristics */ unsigned int SMG$L_DEV_DEPEND; /* Specific characteristics (1) */ unsigned int SMG$L_DEV_DEPEND2; /* Specific characteristics (2) */ unsigned char SMG$B_DEV_CLASS; /* Device class (e.g. DC$_TERM) */ union { unsigned char SMG$B_PBD_TYPE; /* Internal SMG device type */ unsigned char SMG$B_RECALL_NUM; /* Size of recall buffer (+) */ } SMG$R_DEV_OVERLAY; unsigned char SMG$B_DEV_TYPE; /* Physical device type (e.g. DT$_VT100) */ union { unsigned char SMG$B_NUM_ROWS; /* Number of rows on device */ unsigned char SMG$B_TYPEAHD_CHAR; /* First char in typeahead buffer (+) */ } SMG$R_ROW_OVERLAY; unsigned short int SMG$W_NUM_COLUMNS; /* Terminal width */ union { unsigned short int SMG$W_TYPEAHD_CNT; /* Number of chars in typeahead buffer (+) */ struct { unsigned char SMG$B_PBD_COLOR; /* PBD background color */ unsigned char SMG$B_DEV_PARITY; /* Parity attributes (+) */ } SMG$R_COUNT_STRUCT; } SMG$R_COUNT_OVERLAY; unsigned short int SMG$W_DEV_SPEED; /* Terminal Speed (+) */ unsigned short int SMG$W_DEV_FILL; /* Fill characteristics (+) */ unsigned short int SMG$W_PHYS_CURSOR_ROW; /* Row where physical cursor is */ unsigned short int SMG$W_PHYS_CURSOR_COL; /* Col where physical cursor is */ unsigned int SMG$L_DISPLAY_ID; /* Display containing phy cursor */ unsigned int SMG$L_DEV_DEPEND3; /* Specific characteristics (3) */ } ; #define SMG$C_ATTRIBUTE_INFO_BLOCK 36 /* Length of table in bytes */ #ifndef __SMGDEF_UPCASE_LOADED #define __SMGDEF_UPCASE_LOADED 1 #ifndef __cplusplus #pragma member_alignment __restore #pragma standard #include #pragma member_alignment __save #pragma nomember_alignment #pragma nostandard #endif /* __cplusplus */ #include #endif /* __SMGDEF_UPCASE_LOADED */ #pragma __member_alignment __restore