/********************************************************************************************************************************/ /* Created: 9-Mar-2021 22:28:04 by OpenVMS SDL EV3-3 */ /* Source: 09-MAR-2021 22:28:01 $1$DGA8085:[STARLET_H.SRC]SMGDEF.SDI;1 */ /********************************************************************************************************************************/ /*** MODULE $SMGDEF ***/ #ifndef __SMGDEF_LOADED #define __SMGDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMGMODE_BITS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_KEY_DEF_ATTR; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMGDEF_BITS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ #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 #ifdef __NEW_STARLET typedef 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 */ } DISPLAY_ATTRIBUTES; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_CREATE_SUBPROCESS_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_SUBPROCESS_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_DELETE_PBD_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_CREATE_PBD_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_READ_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_SET_CURSOR_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_GET_DISPLAY_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_PUT_CHARS_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_MOVE_TEXT_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef struct _smg$r_snapshot_flags { unsigned smg$v_form_feed : 1; /* Output form feed before first row */ unsigned smg$v_spare5 : 31; /* extra bits */ } SMG$R_SNAPSHOT_FLAGS; #else /* __OLD_STARLET */ struct smg$r_snapshot_flags { unsigned smg$v_form_feed : 1; /* Output form feed before first row */ unsigned smg$v_spare5 : 31; /* extra bits */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_PUT_LINE_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_KEYPAD_MODES; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef struct _smg$r_pasting_info_flags { unsigned smg$v_display_pasted : 1; /* Display is pasted */ unsigned smg$v_spare19 : 31; /* extra bits */ } SMG$R_PASTING_INFO_FLAGS; #else /* __OLD_STARLET */ struct smg$r_pasting_info_flags { unsigned smg$v_display_pasted : 1; /* Display is pasted */ unsigned smg$v_spare19 : 31; /* extra bits */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SMG$R_MENU_FLAGS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 #ifdef __NEW_STARLET typedef 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 */ } SCROLL_DIRS; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ /* */ /* 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 */ #ifdef __NEW_STARLET typedef 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; } SMGDEF; #if !defined(__VAXC) #define smg$l_pasteboard_id smg$r_band_information_table.smg$l_pasteboard_id #define smg$l_arg smg$r_band_information_table.smg$l_arg #define smg$r_character_overlay smg$r_band_information_table.smg$r_character_overlay #define smg$b_character smg$r_character_overlay.smg$b_character #define smg$l_character smg$r_character_overlay.smg$l_character #define smg$l_devchar smg$r_pasteboard_info_block.smg$l_devchar #define smg$l_devdepend smg$r_pasteboard_info_block.smg$l_devdepend #define smg$l_devdepend2 smg$r_pasteboard_info_block.smg$l_devdepend2 #define smg$b_devclass smg$r_pasteboard_info_block.smg$b_devclass #define smg$b_smg_devtype smg$r_pasteboard_info_block.smg$b_smg_devtype #define smg$b_phy_devtype smg$r_pasteboard_info_block.smg$b_phy_devtype #define smg$b_rows smg$r_pasteboard_info_block.smg$b_rows #define smg$w_width smg$r_pasteboard_info_block.smg$w_width #define smg$b_color smg$r_pasteboard_info_block.smg$b_color #define smg$b_parity smg$r_pasteboard_info_block.smg$b_parity #define smg$w_speed smg$r_pasteboard_info_block.smg$w_speed #define smg$w_fill smg$r_pasteboard_info_block.smg$w_fill #define smg$w_cursor_row smg$r_pasteboard_info_block.smg$w_cursor_row #define smg$w_cursor_col smg$r_pasteboard_info_block.smg$w_cursor_col #define smg$l_cursor_did smg$r_pasteboard_info_block.smg$l_cursor_did #define smg$l_devdepend3 smg$r_pasteboard_info_block.smg$l_devdepend3 #define smg$b_recall_size smg$r_keyboard_info_block.smg$b_recall_size #define smg$b_typeahead_char smg$r_keyboard_info_block.smg$b_typeahead_char #define smg$w_typeahead_count smg$r_keyboard_info_block.smg$w_typeahead_count #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ 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; } ; #if !defined(__VAXC) #define smg$l_pasteboard_id smg$r_band_information_table.smg$l_pasteboard_id #define smg$l_arg smg$r_band_information_table.smg$l_arg #define smg$b_character smg$r_band_information_table.smg$r_character_overlay.smg$b_character #define smg$l_character smg$r_band_information_table.smg$r_character_overlay.smg$l_character #define smg$l_devchar smg$r_pasteboard_info_block.smg$l_devchar #define smg$l_devdepend smg$r_pasteboard_info_block.smg$l_devdepend #define smg$l_devdepend2 smg$r_pasteboard_info_block.smg$l_devdepend2 #define smg$b_devclass smg$r_pasteboard_info_block.smg$b_devclass #define smg$b_smg_devtype smg$r_pasteboard_info_block.smg$b_smg_devtype #define smg$b_phy_devtype smg$r_pasteboard_info_block.smg$b_phy_devtype #define smg$b_rows smg$r_pasteboard_info_block.smg$b_rows #define smg$w_width smg$r_pasteboard_info_block.smg$w_width #define smg$b_color smg$r_pasteboard_info_block.smg$b_color #define smg$b_parity smg$r_pasteboard_info_block.smg$b_parity #define smg$w_speed smg$r_pasteboard_info_block.smg$w_speed #define smg$w_fill smg$r_pasteboard_info_block.smg$w_fill #define smg$w_cursor_row smg$r_pasteboard_info_block.smg$w_cursor_row #define smg$w_cursor_col smg$r_pasteboard_info_block.smg$w_cursor_col #define smg$l_cursor_did smg$r_pasteboard_info_block.smg$l_cursor_did #define smg$l_devdepend3 smg$r_pasteboard_info_block.smg$l_devdepend3 #define smg$b_recall_size smg$r_keyboard_info_block.smg$b_recall_size #define smg$b_typeahead_char smg$r_keyboard_info_block.smg$b_typeahead_char #define smg$w_typeahead_count smg$r_keyboard_info_block.smg$w_typeahead_count #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ /* */ /* Define the out-of-band information table used when an out-of-band */ /* AST routine is called as it's own record. */ /* */ #ifdef __NEW_STARLET typedef 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; } SMG$R_OUT_OF_BAND_TABLE; #if !defined(__VAXC) #define smg$b_char smg$r_char_overlay.smg$b_char #define smg$l_char smg$r_char_overlay.smg$l_char #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ 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; } ; #if !defined(__VAXC) #define smg$b_char smg$r_char_overlay.smg$b_char #define smg$l_char smg$r_char_overlay.smg$l_char #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #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. */ /* */ #ifdef __NEW_STARLET typedef 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 */ } SMG$R_SUBPROCESS_INFO_TABLE; #else /* __OLD_STARLET */ 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 */ } ; #endif /* #ifdef __NEW_STARLET */ #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. */ /* */ #ifdef __NEW_STARLET typedef 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) */ } SMG$R_ATTRIBUTE_INFO_BLOCK; #if !defined(__VAXC) #define smg$b_pbd_type smg$r_dev_overlay.smg$b_pbd_type #define smg$b_recall_num smg$r_dev_overlay.smg$b_recall_num #define smg$b_num_rows smg$r_row_overlay.smg$b_num_rows #define smg$b_typeahd_char smg$r_row_overlay.smg$b_typeahd_char #define smg$w_typeahd_cnt smg$r_count_overlay.smg$w_typeahd_cnt #define smg$r_count_struct smg$r_count_overlay.smg$r_count_struct #define smg$b_pbd_color smg$r_count_struct.smg$b_pbd_color #define smg$b_dev_parity smg$r_count_struct.smg$b_dev_parity #endif /* #if !defined(__VAXC) */ #else /* __OLD_STARLET */ 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) */ } ; #if !defined(__VAXC) #define smg$b_pbd_type smg$r_dev_overlay.smg$b_pbd_type #define smg$b_recall_num smg$r_dev_overlay.smg$b_recall_num #define smg$b_num_rows smg$r_row_overlay.smg$b_num_rows #define smg$b_typeahd_char smg$r_row_overlay.smg$b_typeahd_char #define smg$w_typeahd_cnt smg$r_count_overlay.smg$w_typeahd_cnt #define smg$b_pbd_color smg$r_count_overlay.smg$r_count_struct.smg$b_pbd_color #define smg$b_dev_parity smg$r_count_overlay.smg$r_count_struct.smg$b_dev_parity #endif /* #if !defined(__VAXC) */ #endif /* #ifdef __NEW_STARLET */ #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 #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __SMGDEF_LOADED */