home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Internet Tools 1995 April / Internet Tools.iso / osi / isode / vmsisode / vmsisode80_tar.Z / vmsisode80_tar / sockit / gccinclude / smgdef.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-24  |  44.5 KB  |  734 lines

  1. #ifndef SI_SMGDEF
  2. #define SI_SMGDEF 
  3. /*** MODULE $SMGDEF ***/
  4.  
  5. /* Include SMG status return code, for the convenience of the user only. */
  6. #pragma nostandard
  7. #include <smgmsg.h>
  8. #pragma standard
  9.  
  10. /* Definitions for RTL Screen Management Facility                           */
  11. /*                                                                          */
  12. /* Input terminator codes                                                   */
  13. /*                                                                          */
  14. /*                                                                          */
  15. /* Control characters                                                       */
  16. /*                                                                          */
  17. #define SMG$K_TRM_NULL_CHAR 0           /* NUL                              */
  18. #define SMG$K_TRM_CTRLA 1               /* SOH                              */
  19. #define SMG$K_TRM_CTRLB 2               /* STX                              */
  20. #define SMG$K_TRM_CTRLC 3               /* ETX                              */
  21. #define SMG$K_TRM_CTRLD 4               /* EOT                              */
  22. #define SMG$K_TRM_CTRLE 5               /* ENQ                              */
  23. #define SMG$K_TRM_CTRLF 6               /* ACK                              */
  24. #define SMG$K_TRM_CTRLG 7               /* BEL                              */
  25. #define SMG$K_TRM_CTRLH 8               /* BS                               */
  26. #define SMG$K_TRM_CTRLI 9               /* HT                               */
  27. #define SMG$K_TRM_CTRLJ 10              /* LF                               */
  28. #define SMG$K_TRM_CTRLK 11              /* VT                               */
  29. #define SMG$K_TRM_CTRLL 12              /* FF                               */
  30. #define SMG$K_TRM_CTRLM 13              /* CR                               */
  31. #define SMG$K_TRM_CTRLN 14              /* SO                               */
  32. #define SMG$K_TRM_CTRLO 15              /* SI                               */
  33. #define SMG$K_TRM_CTRLP 16              /* DLE                              */
  34. #define SMG$K_TRM_CTRLQ 17              /* DC1                              */
  35. #define SMG$K_TRM_CTRLR 18              /* DC2                              */
  36. #define SMG$K_TRM_CTRLS 19              /* DC3                              */
  37. #define SMG$K_TRM_CTRLT 20              /* DC4                              */
  38. #define SMG$K_TRM_CTRLU 21              /* NAK                              */
  39. #define SMG$K_TRM_CTRLV 22              /* SYN                              */
  40. #define SMG$K_TRM_CTRLW 23              /* ETB                              */
  41. #define SMG$K_TRM_CTRLX 24              /* CAN                              */
  42. #define SMG$K_TRM_CTRLY 25              /* EM                               */
  43. #define SMG$K_TRM_CTRLZ 26              /* SUB                              */
  44. #define SMG$K_TRM_ESCAPE 27             /* ESC                              */
  45. #define SMG$K_TRM_FS 28                 /* FS                               */
  46. #define SMG$K_TRM_GS 29                 /* GS                               */
  47. #define SMG$K_TRM_RS 30                 /* RS                               */
  48. #define SMG$K_TRM_US 31                 /* US                               */
  49. #define SMG$K_TRM_SPACE 32              /* SP                               */
  50. #define SMG$K_TRM_EXCLAMATION_POINT 33  /* !                                */
  51. #define SMG$K_TRM_DOUBLE_QUOTE 34       /* "                                */
  52. #define SMG$K_TRM_NUMBER_SIGN 35        /* #                                */
  53. #define SMG$K_TRM_DOLLAR_SIGN 36        /* $                                */
  54. #define SMG$K_TRM_PERCENT_SIGN 37       /* %                                */
  55. #define SMG$K_TRM_AMPERSAND 38          /* &                                */
  56. #define SMG$K_TRM_QUOTE 39              /* '                                */
  57. #define SMG$K_TRM_LEFT_PAREN 40         /* (                                */
  58. #define SMG$K_TRM_RIGHT_PAREN 41        /* )                                */
  59. #define SMG$K_TRM_ASTERISK 42           /* *                                */
  60. #define SMG$K_TRM_PLUS_SIGN 43          /* +                                */
  61. #define SMG$K_TRM_COMMA_CHAR 44         /* ,                                */
  62. #define SMG$K_TRM_DASH 45               /* -                                */
  63. #define SMG$K_TRM_DOT 46                /* .                                */
  64. #define SMG$K_TRM_SLASH 47              /* /                                */
  65. #define SMG$K_TRM_ZERO 48               /* 0                                */
  66. #define SMG$K_TRM_ONE 49                /* 1                                */
  67. #define SMG$K_TRM_TWO 50                /* 2                                */
  68. #define SMG$K_TRM_THREE 51              /* 3                                */
  69. #define SMG$K_TRM_FOUR 52               /* 4                                */
  70. #define SMG$K_TRM_FIVE 53               /* 5                                */
  71. #define SMG$K_TRM_SIX 54                /* 6                                */
  72. #define SMG$K_TRM_SEVEN 55              /* 7                                */
  73. #define SMG$K_TRM_EIGHT 56              /* 8                                */
  74. #define SMG$K_TRM_NINE 57               /* 9                                */
  75. #define SMG$K_TRM_COLON 58              /* :                                */
  76. #define SMG$K_TRM_SEMICOLON 59          /* ;                                */
  77. #define SMG$K_TRM_LESS_THAN 60          /* <                                */
  78. #define SMG$K_TRM_EQUAL 61              /* =                                */
  79. #define SMG$K_TRM_GREATER_THAN 62       /* >                                */
  80. #define SMG$K_TRM_QUESTION_MARK 63      /* ?                                */
  81. #define SMG$K_TRM_AT_SIGN 64            /* @                                */
  82. #define SMG$K_TRM_UPPERCASE_A 65        /* A                                */
  83. #define SMG$K_TRM_UPPERCASE_B 66        /* B                                */
  84. #define SMG$K_TRM_UPPERCASE_C 67        /* C                                */
  85. #define SMG$K_TRM_UPPERCASE_D 68        /* D                                */
  86. #define SMG$K_TRM_UPPERCASE_E 69        /* E                                */
  87. #define SMG$K_TRM_UPPERCASE_F 70        /* F                                */
  88. #define SMG$K_TRM_UPPERCASE_G 71        /* G                                */
  89. #define SMG$K_TRM_UPPERCASE_H 72        /* H                                */
  90. #define SMG$K_TRM_UPPERCASE_I 73        /* I                                */
  91. #define SMG$K_TRM_UPPERCASE_J 74        /* J                                */
  92. #define SMG$K_TRM_UPPERCASE_K 75        /* K                                */
  93. #define SMG$K_TRM_UPPERCASE_L 76        /* L                                */
  94. #define SMG$K_TRM_UPPERCASE_M 77        /* M                                */
  95. #define SMG$K_TRM_UPPERCASE_N 78        /* N                                */
  96. #define SMG$K_TRM_UPPERCASE_O 79        /* O                                */
  97. #define SMG$K_TRM_UPPERCASE_P 80        /* P                                */
  98. #define SMG$K_TRM_UPPERCASE_Q 81        /* Q                                */
  99. #define SMG$K_TRM_UPPERCASE_R 82        /* R                                */
  100. #define SMG$K_TRM_UPPERCASE_S 83        /* S                                */
  101. #define SMG$K_TRM_UPPERCASE_T 84        /* T                                */
  102. #define SMG$K_TRM_UPPERCASE_U 85        /* U                                */
  103. #define SMG$K_TRM_UPPERCASE_V 86        /* V                                */
  104. #define SMG$K_TRM_UPPERCASE_W 87        /* W                                */
  105. #define SMG$K_TRM_UPPERCASE_X 88        /* X                                */
  106. #define SMG$K_TRM_UPPERCASE_Y 89        /* Y                                */
  107. #define SMG$K_TRM_UPPERCASE_Z 90        /* Z                                */
  108. #define SMG$K_TRM_LEFT_BRACKET 91       /* [                                */
  109. #define SMG$K_TRM_BACKSLASH 92          /* \                                */
  110. #define SMG$K_TRM_RIGHT_BRACKET 93      /* ]                                */
  111. #define SMG$K_TRM_CARET 94              /* ^                                */
  112. #define SMG$K_TRM_UNDERLINE 95          /* _                                */
  113. #define SMG$K_TRM_GRAVE_ACCENT 96       /* `                                */
  114. #define SMG$K_TRM_LOWERCASE_A 97        /* a                                */
  115. #define SMG$K_TRM_LOWERCASE_B 98        /* b                                */
  116. #define SMG$K_TRM_LOWERCASE_C 99        /* c                                */
  117. #define SMG$K_TRM_LOWERCASE_D 100       /* d                                */
  118. #define SMG$K_TRM_LOWERCASE_E 101       /* e                                */
  119. #define SMG$K_TRM_LOWERCASE_F 102       /* f                                */
  120. #define SMG$K_TRM_LOWERCASE_G 103       /* g                                */
  121. #define SMG$K_TRM_LOWERCASE_H 104       /* h                                */
  122. #define SMG$K_TRM_LOWERCASE_I 105       /* i                                */
  123. #define SMG$K_TRM_LOWERCASE_J 106       /* j                                */
  124. #define SMG$K_TRM_LOWERCASE_K 107       /* k                                */
  125. #define SMG$K_TRM_LOWERCASE_L 108       /* l                                */
  126. #define SMG$K_TRM_LOWERCASE_M 109       /* m                                */
  127. #define SMG$K_TRM_LOWERCASE_N 110       /* n                                */
  128. #define SMG$K_TRM_LOWERCASE_O 111       /* o                                */
  129. #define SMG$K_TRM_LOWERCASE_P 112       /* p                                */
  130. #define SMG$K_TRM_LOWERCASE_Q 113       /* q                                */
  131. #define SMG$K_TRM_LOWERCASE_R 114       /* r                                */
  132. #define SMG$K_TRM_LOWERCASE_S 115       /* s                                */
  133. #define SMG$K_TRM_LOWERCASE_T 116       /* t                                */
  134. #define SMG$K_TRM_LOWERCASE_U 117       /* u                                */
  135. #define SMG$K_TRM_LOWERCASE_V 118       /* v                                */
  136. #define SMG$K_TRM_LOWERCASE_W 119       /* w                                */
  137. #define SMG$K_TRM_LOWERCASE_X 120       /* x                                */
  138. #define SMG$K_TRM_LOWERCASE_Y 121       /* y                                */
  139. #define SMG$K_TRM_LOWERCASE_Z 122       /* z                                */
  140. #define SMG$K_TRM_LEFT_BRACE 123        /* left curly brace                 */
  141. #define SMG$K_TRM_VERTICAL_LINE 124     /* |                                */
  142. #define SMG$K_TRM_RIGHT_BRACE 125       /* right curly brace                */
  143. #define SMG$K_TRM_TILDE 126             /* ~                                */
  144. #define SMG$K_TRM_DELETE 127            /* DEL                              */
  145. /*                                                                          */
  146. /* Synonyms for control characters                                          */
  147. /*                                                                          */
  148. #define SMG$K_TRM_BS 8
  149. #define SMG$K_TRM_HT 9
  150. #define SMG$K_TRM_LF 10
  151. #define SMG$K_TRM_VT 11
  152. #define SMG$K_TRM_FF 12
  153. #define SMG$K_TRM_CR 13
  154. /*                                                                          */
  155. /* Keypad keys                                                              */
  156. /*                                                                          */
  157. #define SMG$K_TRM_PF1 256
  158. #define SMG$K_TRM_PF2 257
  159. #define SMG$K_TRM_PF3 258
  160. #define SMG$K_TRM_PF4 259
  161. #define SMG$K_TRM_KP0 260
  162. #define SMG$K_TRM_KP1 261
  163. #define SMG$K_TRM_KP2 262
  164. #define SMG$K_TRM_KP3 263
  165. #define SMG$K_TRM_KP4 264
  166. #define SMG$K_TRM_KP5 265
  167. #define SMG$K_TRM_KP6 266
  168. #define SMG$K_TRM_KP7 267
  169. #define SMG$K_TRM_KP8 268
  170. #define SMG$K_TRM_KP9 269
  171. #define SMG$K_TRM_ENTER 270
  172. #define SMG$K_TRM_MINUS 271
  173. #define SMG$K_TRM_COMMA 272
  174. #define SMG$K_TRM_PERIOD 273
  175. /*                                                                          */
  176. /* Cursor positioning keys                                                  */
  177. /*                                                                          */
  178. #define SMG$K_TRM_UP 274
  179. #define SMG$K_TRM_DOWN 275
  180. #define SMG$K_TRM_LEFT 276
  181. #define SMG$K_TRM_RIGHT 277
  182. /*                                                                          */
  183. /* Function keys                                                            */
  184. /*                                                                          */
  185. #define SMG$K_TRM_F1 281
  186. #define SMG$K_TRM_F2 282
  187. #define SMG$K_TRM_F3 283
  188. #define SMG$K_TRM_F4 284
  189. #define SMG$K_TRM_F5 285
  190. #define SMG$K_TRM_F6 286
  191. #define SMG$K_TRM_F7 287
  192. #define SMG$K_TRM_F8 288
  193. #define SMG$K_TRM_F9 289
  194. #define SMG$K_TRM_F10 290
  195. #define SMG$K_TRM_F11 291
  196. #define SMG$K_TRM_F12 292
  197. #define SMG$K_TRM_F13 293
  198. #define SMG$K_TRM_F14 294
  199. #define SMG$K_TRM_F15 295
  200. #define SMG$K_TRM_F16 296
  201. #define SMG$K_TRM_F17 297
  202. #define SMG$K_TRM_F18 298
  203. #define SMG$K_TRM_F19 299
  204. #define SMG$K_TRM_F20 300
  205. /*                                                                          */
  206. /* Synonyms for function keys                                               */
  207. /*                                                                          */
  208. #define SMG$K_TRM_HELP 295
  209. #define SMG$K_TRM_DO 296
  210. /*                                                                          */
  211. /* Editing keys                                                             */
  212. /*                                                                          */
  213. #define SMG$K_TRM_E1 311                /* FIND                             */
  214. #define SMG$K_TRM_E2 312                /* INSERT_HERE                      */
  215. #define SMG$K_TRM_E3 313                /* REMOVE                           */
  216. #define SMG$K_TRM_E4 314                /* SELECT                           */
  217. #define SMG$K_TRM_E5 315                /* PREV_SCREEN                      */
  218. #define SMG$K_TRM_E6 316                /* NEXT_SCREEN                      */
  219. /*                                                                          */
  220. /* Synonyms for editing keys                                                */
  221. /*                                                                          */
  222. #define SMG$K_TRM_FIND 311              /* E1                               */
  223. #define SMG$K_TRM_INSERT_HERE 312       /* E2                               */
  224. #define SMG$K_TRM_REMOVE 313            /* E3                               */
  225. #define SMG$K_TRM_SELECT 314            /* E4                               */
  226. #define SMG$K_TRM_PREV_SCREEN 315       /* E5                               */
  227. #define SMG$K_TRM_NEXT_SCREEN 316       /* E6                               */
  228. /*                                                                          */
  229. /* Locator keys                                                             */
  230. /*                                                                          */
  231. #define SMG$K_TRM_FIRST_DOWN 321        /* Left button down                 */
  232. #define SMG$K_TRM_SECOND_DOWN 322       /* Middle button down               */
  233. #define SMG$K_TRM_THIRD_DOWN 323        /* Right button down                */
  234. #define SMG$K_TRM_FOURTH_DOWN 324       /* Fourth button down               */
  235. #define SMG$K_TRM_FIRST_UP 325          /* Left button up                   */
  236. #define SMG$K_TRM_SECOND_UP 326         /* Middle button up                 */
  237. #define SMG$K_TRM_THIRD_UP 327          /* Right button up                  */
  238. #define SMG$K_TRM_FOURTH_UP 328         /* Fourth button up                 */
  239. /*                                                                          */
  240. /* Conditions                                                               */
  241. /*                                                                          */
  242. #define SMG$K_TRM_CANCELLED 508         /* I/O cancelled by SMG$CANCEL_INPUT */
  243. #define SMG$K_TRM_TIMEOUT 509           /* Timeout period expired           */
  244. #define SMG$K_TRM_BUFFER_FULL 510       /* Buffer is full                   */
  245. #define SMG$K_TRM_UNKNOWN 511           /* Unknown terminator               */
  246. /*                                                                          */
  247. /* Screen Management request types - These constants are used internally    */
  248. /* by SMG$ and should not be used by users.                                 */
  249. /*                                                                          */
  250. #define SMG$C_CHANGE_RENDITION 10
  251. #define SMG$C_DELETE_CHARS 11
  252. #define SMG$C_ERASE_DISPLAY 12
  253. #define SMG$C_ERASE_LINE 13
  254. #define SMG$C_HOME_CURSOR 14
  255. #define SMG$C_INSERT_CHARS 15
  256. #define SMG$C_INSERT_LINE 16
  257. #define SMG$C_PUT_CHARS 17
  258. #define SMG$C_PUT_LINE 18
  259. #define SMG$C_PUT_DISPLAY_ENCODED 19
  260. #define SMG$C_RETURN_CURSOR_POS 20
  261. #define SMG$C_PUT_WITH_SCROLL 21
  262. #define SMG$C_SET_CURSOR_ABS 22
  263. #define SMG$C_SET_CURSOR_REL 23
  264. #define SMG$C_DELETE_LINE 24
  265. #define SMG$C_ERASE_CHARS 25
  266. #define SMG$C_SCROLL_DISPLAY_AREA 26
  267. #define SMG$C_CHANGE_VIRTUAL_DISPLAY 27
  268. #define SMG$C_LABEL_BORDER 28
  269. #define SMG$C_END_DISPLAY_UPDATE 29
  270. #define SMG$C_MOVE_TEXT 30
  271. /*                                                                          */
  272. /*     Character Set Codes                                                 */
  273. /*                                                                          */
  274. #define SMG$C_UNITED_KINGDOM 0          /* Unused                           */
  275. #define SMG$C_ASCII 1                   /* ASCII char set                   */
  276. #define SMG$C_SPEC_GRAPHICS 2           /* Line drawing set                 */
  277. #define SMG$C_ALT_CHAR 3                /* Unused                           */
  278. #define SMG$C_ALT_GRAPHICS 4            /* Unused                           */
  279. /*                                                                          */
  280. /*    The following constants define corner cursor positions used in      */
  281. /*    SMG$HOME_CURSOR.                                                    */
  282. /*                                                                          */
  283. #define SMG$C_UPPER_LEFT 0              /* Home cursor to upper left corner */
  284. #define SMG$C_LOWER_LEFT 1              /* Home cursor to lower left corner */
  285. #define SMG$C_UPPER_RIGHT 2             /* Home cursor to upper right corner */
  286. #define SMG$C_LOWER_RIGHT 3             /* Home cursor to lower right corner */
  287. /*                                                                          */
  288. /*    The following constants define label positions used in              */
  289. /*    SMG$LABEL_BORDER.                                                   */
  290. /*                                                                          */
  291. #define SMG$K_TOP 0                     /* Place label on top border        */
  292. #define SMG$K_BOTTOM 1                  /* Place label on bottom border     */
  293. #define SMG$K_LEFT 2                    /* Place label on left border       */
  294. #define SMG$K_RIGHT 3                   /* Place label on right border      */
  295. /*                                                                          */
  296. /*    The following constants define menu types used in                   */
  297. /*    SMG$CREATE_MENU.                                                    */
  298. /*                                                                          */
  299. #define SMG$K_BLOCK 0                   /* Matrix of menu items             */
  300. #define SMG$K_VERTICAL 1                /* Vertical vector of menu items    */
  301. #define SMG$K_HORIZONTAL 2              /* Horizontal vector of menu items  */
  302. /*                                                                          */
  303. /*    Master color wheel for screen background colors.                    */
  304. /*    Used with SMG$CHANGE_PBD_CHARACTERISTICS.                           */
  305. /*                                                                          */
  306. #define SMG$C_COLOR_UNKNOWN 0           /* Unknown background               */
  307. #define SMG$C_COLOR_WHITE 1             /* White background                 */
  308. #define SMG$C_COLOR_BLACK 2             /* Black background                 */
  309. #define SMG$C_COLOR_BLUE 3              /* Blue background                  */
  310. #define SMG$C_COLOR_CYAN 4              /* Cyan background                  */
  311. #define SMG$C_COLOR_GREEN 5             /* Green background                 */
  312. #define SMG$C_COLOR_MAGENTA 6           /* Magenta background               */
  313. #define SMG$C_COLOR_RED 7               /* Red background                   */
  314. #define SMG$C_COLOR_YELLOW 8            /* Yellow background                */
  315. #define SMG$C_COLOR_LIGHT 9             /* Light background                 */
  316. #define SMG$C_COLOR_DARK 10             /* Dark background                  */
  317. #define SMG$C_COLOR_USER1 11            /* User 1 background                */
  318. #define SMG$C_COLOR_USER2 12            /* User 2 background                */
  319. /*                                                                          */
  320. /* The following constants describe the type of terminal                    */
  321. /* and are used with SMG$GET_PASTEBOARD_ATTRIBUTES.                         */
  322. /*                                                                          */
  323. #define SMG$K_UNKNOWN 0                 /* Unknown type                     */
  324. #define SMG$K_VT05 1                    /* Unused                           */
  325. #define SMG$K_VT52 2                    /* Unused                           */
  326. #define SMG$K_VT100 3                   /* Unused                           */
  327. #define SMG$K_VTFOREIGN 4               /* Foreign terminal (ft1-8)         */
  328. #define SMG$K_HARDCOPY 5                /* Hardcopy device                  */
  329. #define SMG$K_VTTERMTABLE 6             /* Video terminal                   */
  330. #define SMG$K_FIRST_PRIV_TYPE 191       /* Used internally by SMG$          */
  331. /*                                                                          */
  332. /*    Define bits, masks, and fields for the control modes.               */
  333. /*                                                                          */
  334. #define SMG$K_BUF_ENABLED 0             /* Enable Buffering                 */
  335. #define SMG$K_MINUPD 1                  /* Enable minimal update            */
  336. #define SMG$K_CLEAR_SCREEN 2            /* Clear screen on exit             */
  337. #define SMG$K_NOTABS 3                  /* Don't use physical tabs          */
  338. #define SMG$K_PROTECT 4                 /* Protect against ASTs             */
  339. #define SMG$M_BUF_ENABLED 1
  340. #define SMG$M_MINUPD 2
  341. #define SMG$M_CLEAR_SCREEN 4
  342. #define SMG$M_NOTABS 8
  343. #define SMG$M_PROTECT 16
  344. #define SMG$m_spare15 -32
  345. struct SMGMODE_BITS {
  346.     unsigned SMG$V_BUF_ENABLED : 1;     /* Enable buffering                 */
  347.     unsigned SMG$V_MINUPD : 1;          /* Enable minimal update (default)  */
  348.     unsigned SMG$V_CLEAR_SCREEN : 1;    /* Clear screen on exit             */
  349.     unsigned SMG$V_NOTABS : 1;          /* Don't use physical tabs          */
  350.     unsigned SMG$V_PROTECT : 1;         /* Protect against ASTs             */
  351.     unsigned SMG$v_spare15 : 27;        /* extra bits                       */
  352.     } ;
  353. /*                                                                          */
  354. /*    Key definition attributes                                           */
  355. /*                                                                          */
  356. #define SMG$M_KEY_NOECHO 1
  357. #define SMG$M_KEY_TERMINATE 2
  358. #define SMG$M_KEY_LOCK 4
  359. #define SMG$M_KEY_PROTECTED 8
  360. #define SMG$M_KEY_SETSTATE 16
  361. #define SMG$m_spare18 -32
  362. struct SMG$R_KEY_DEF_ATTR {
  363.     unsigned SMG$V_KEY_NOECHO : 1;      /* Don't echo strings               */
  364.     unsigned SMG$V_KEY_TERMINATE : 1;   /* This key terminates read         */
  365.     unsigned SMG$V_KEY_LOCK : 1;        /* Lock new state                   */
  366.     unsigned SMG$V_KEY_PROTECTED : 1;   /* Definition is protected          */
  367.     unsigned SMG$V_KEY_SETSTATE : 1;    /* Definition sets a state (output only) */
  368.     unsigned SMG$v_spare18 : 27;        /* extra bits                       */
  369.     } ;
  370. /*                                                                          */
  371. /*        Define bit masks and values for display renditions.               */
  372. /*                                                                          */
  373. #define SMG$M_BOLD 1
  374. #define SMG$M_REVERSE 2
  375. #define SMG$M_BLINK 4
  376. #define SMG$M_UNDERLINE 8
  377. #define SMG$M_INVISIBLE 16
  378. #define SMG$M_USER1 256
  379. #define SMG$M_USER2 512
  380. #define SMG$M_USER3 1024
  381. #define SMG$M_USER4 2048
  382. #define SMG$M_USER5 4096
  383. #define SMG$M_USER6 8192
  384. #define SMG$M_USER7 16384
  385. #define SMG$M_USER8 32768
  386. #define SMG$m_spare14 -65536
  387. struct SMGDEF_BITS {
  388.     unsigned SMG$V_BOLD : 1;            /* Bold rendition                   */
  389.     unsigned SMG$V_REVERSE : 1;         /* Reverse video rendition          */
  390.     unsigned SMG$V_BLINK : 1;           /* Blink rendition                  */
  391.     unsigned SMG$V_UNDERLINE : 1;       /* Underline rendition              */
  392.     unsigned SMG$V_INVISIBLE : 1;       /* Invisible rendition              */
  393.     unsigned SMG$v_fill1 : 3;           /* internally used by SMG$          */
  394.     unsigned SMG$V_USER1 : 1;           /* User rendition 1                 */
  395.     unsigned SMG$V_USER2 : 1;           /* User rendition 2                 */
  396.     unsigned SMG$V_USER3 : 1;           /* User rendition 3                 */
  397.     unsigned SMG$V_USER4 : 1;           /* User rendition 4                 */
  398.     unsigned SMG$V_USER5 : 1;           /* User rendition 5                 */
  399.     unsigned SMG$V_USER6 : 1;           /* User rendition 6                 */
  400.     unsigned SMG$V_USER7 : 1;           /* User rendition 7                 */
  401.     unsigned SMG$V_USER8 : 1;           /* User rendition 8                 */
  402.     unsigned SMG$v_spare14 : 16;        /* extra bits                       */
  403.     } ;
  404. #define SMG$M_NORMAL 0                  /* no bits set                      */
  405. /*                                                                          */
  406. /*    The following masks define values to be used                        */
  407. /*    to specify a display attribute.  These may be added                 */
  408. /*    together to specify multiple attributes.                            */
  409. /*                                                                          */
  410. #define SMG$M_BORDER 1
  411. #define SMG$M_TRUNC_ICON 2
  412. #define SMG$M_DISPLAY_CONTROLS 4
  413. #define SMG$M_USER_DISPLAY 8
  414. #define SMG$M_BLOCK_BORDER 16
  415. #define SMG$m_spare12 -32
  416. struct DISPLAY_ATTRIBUTES {
  417.     unsigned SMG$V_BORDER : 1;          /* Display is bordered              */
  418.     unsigned SMG$V_TRUNC_ICON : 1;      /* Truncation icon enabled          */
  419.     unsigned SMG$V_DISPLAY_CONTROLS : 1; /* Display carriage controls       */
  420.     unsigned SMG$V_USER_DISPLAY : 1;    /* User display for DEBUG           */
  421.     unsigned SMG$V_BLOCK_BORDER : 1;    /* Display is block bordered        */
  422.     unsigned SMG$v_spare12 : 27;        /* extra bits                       */
  423.     } ;
  424. /*                                                                          */
  425. /*    The following defines bits used with subprocess manipulation.       */
  426. /*                                                                          */
  427. #define SMG$M_DATA_FOLLOWS 1
  428. #define SMG$M_SEND_EOF 2
  429. #define SMG$m_spare11 -4
  430. struct SMG$R_SUBPROCESS_FLAGS {
  431.     unsigned SMG$V_DATA_FOLLOWS : 1;    /* The next call specifies data.    */
  432.     unsigned SMG$V_SEND_EOF : 1;        /* Send an end-of-file to the subprocess */
  433.     unsigned SMG$v_spare11 : 30;        /* extra bits                       */
  434.     } ;
  435. /*                                                                          */
  436. /*    The following defines bits used with the FLAGS parameter for        */
  437. /*    SMG$DELETE_PASTEBOARD.                                              */
  438. /*                                                                          */
  439. #define SMG$M_ERASE_PBD 1
  440. #define SMG$m_spare10 -2
  441. struct SMG$R_DELETE_PBD_FLAGS {
  442.     unsigned SMG$V_ERASE_PBD : 1;       /* Erase the pasteboard             */
  443.     unsigned SMG$v_spare10 : 31;        /* extra bits                       */
  444.     } ;
  445. /*                                                                          */
  446. /*    The following defines bits used with the FLAGS parameter for        */
  447. /*    SMG$CREATE_PASTEBOARD.                                              */
  448. /*                                                                          */
  449. #define SMG$M_KEEP_CONTENTS 1
  450. #define SMG$m_spare9 -2
  451. struct SMG$R_CREATE_PBD_FLAGS {
  452.     unsigned SMG$V_KEEP_CONTENTS : 1;   /* Don't erase the pasteboard       */
  453.     unsigned SMG$v_spare9 : 31;         /* extra bits                       */
  454.     } ;
  455. /*                                                                          */
  456. /*    The following defines bits used with the FLAGS parameter for        */
  457. /*    SMG$READ_xxxx.                                                      */
  458. /*                                                                          */
  459. #define SMG$M_FUNC_KEYS 1
  460. #define SMG$M_NOKEEP 2
  461. #define SMG$M_NORECALL 4
  462. #define SMG$m_spare8 -8
  463. struct SMG$R_READ_FLAGS {
  464.     unsigned SMG$V_FUNC_KEYS : 1;       /* Disable line-editting.           */
  465.     unsigned SMG$V_NOKEEP : 1;          /* Don't save input in recall buffer */
  466.     unsigned SMG$V_NORECALL : 1;        /* Disable input recall for this call */
  467.     unsigned SMG$v_spare8 : 29;         /* extra bits                       */
  468.     } ;
  469. /*                                                                          */
  470. /*    The following defines bits used with the FLAGS parameter for        */
  471. /*    SMG$SET_CURSOR_MODE.                                                */
  472. /*                                                                          */
  473. #define SMG$M_CURSOR_OFF 1
  474. #define SMG$M_CURSOR_ON 2
  475. #define SMG$M_SCROLL_JUMP 4
  476. #define SMG$M_SCROLL_SMOOTH 8
  477. #define SMG$m_spare16 -16
  478. struct SMG$R_SET_CURSOR_FLAGS {
  479.     unsigned SMG$V_CURSOR_OFF : 1;      /* Turn the physical cursor off     */
  480.     unsigned SMG$V_CURSOR_ON : 1;       /* Turn the physical cursor on      */
  481.     unsigned SMG$V_SCROLL_JUMP : 1;     /* Set jump scroll                  */
  482.     unsigned SMG$V_SCROLL_SMOOTH : 1;   /* Set smooth scroll                */
  483.     unsigned SMG$v_spare16 : 28;        /* extra bits                       */
  484.     } ;
  485. /*                                                                          */
  486. /*    The following defines bits used with the FLAGS parameter for        */
  487. /*    SMG$GET_DISPLAY_ATTR.                                               */
  488. /*                                                                          */
  489. #define SMG$M_VIEWPORT 1
  490. #define SMG$M_SUBPROCESS 2
  491. #define SMG$M_MENU 4
  492. #define SMG$m_spare7 -8
  493. struct SMG$R_GET_DISPLAY_FLAGS {
  494.     unsigned SMG$V_VIEWPORT : 1;        /* Display contains a viewport      */
  495.     unsigned SMG$V_SUBPROCESS : 1;      /* Display contains a subprocess    */
  496.     unsigned SMG$V_MENU : 1;            /* Display contains a menu          */
  497.     unsigned SMG$v_spare7 : 29;         /* extra bits                       */
  498.     } ;
  499. /*                                                                          */
  500. /*    The following defines bits used with the FLAGS parameter for        */
  501. /*    SMG$PUT_CHARS.                                                      */
  502. /*                                                                          */
  503. #define SMG$M_ERASE_LINE 1
  504. #define SMG$M_ERASE_TO_EOL 2
  505. #define SMG$m_spare6 -4
  506. struct SMG$R_PUT_CHARS_FLAGS {
  507.     unsigned SMG$V_ERASE_LINE : 1;      /* Erase the entire line            */
  508.     unsigned SMG$V_ERASE_TO_EOL : 1;    /* Erase from cursor to end of line */
  509.     unsigned SMG$v_spare6 : 30;         /* extra bits                       */
  510.     } ;
  511. /*                                                                          */
  512. /*    The following defines bits used with the FLAGS parameter for        */
  513. /*    SMG$MOVE_TEXT.                                                      */
  514. /*                                                                          */
  515. #define SMG$M_TEXT_SAVE 1
  516. #define SMG$M_TEXT_ONLY 2
  517. #define SMG$m_spare17 -4
  518. struct SMG$R_MOVE_TEXT_FLAGS {
  519.     unsigned SMG$V_TEXT_SAVE : 1;       /* Don't erase text after moving it */
  520.     unsigned SMG$V_TEXT_ONLY : 1;       /* Don't move attributes            */
  521.     unsigned SMG$v_spare17 : 30;        /* extra bits                       */
  522.     } ;
  523. /*                                                                          */
  524. /*    The following defines bits used with the FLAGS parameter for        */
  525. /*    SMG$PUT_PASTEBOARD and SMG$SNAPSHOT.                                */
  526. /*                                                                          */
  527. #define SMG$M_FORM_FEED 1
  528. #define SMG$m_spare5 -2
  529. struct SMG$R_SNAPSHOT_FLAGS {
  530.     unsigned SMG$V_FORM_FEED : 1;       /* Output form feed before first row */
  531.     unsigned SMG$v_spare5 : 31;         /* extra bits                       */
  532.     } ;
  533. /*                                                                          */
  534. /*    The following defines bits used with the FLAGS parameter for        */
  535. /*    SMG$PUT_xxxx.                                                       */
  536. /*                                                                          */
  537. #define SMG$M_WRAP_CHAR 1
  538. #define SMG$M_WRAP_WORD 2
  539. #define SMG$m_spare4 -4
  540. struct SMG$R_PUT_LINE_FLAGS {
  541.     unsigned SMG$V_WRAP_CHAR : 1;       /* Do character wrapping at end of line */
  542.     unsigned SMG$V_WRAP_WORD : 1;       /* Do word wrapping at end of line  */
  543.     unsigned SMG$v_spare4 : 30;         /* extra bits                       */
  544.     } ;
  545. /*                                                                          */
  546. /*    The following defines bits used with the FLAGS parameter for        */
  547. /*    SMG$SET_KEYPAD_MODE.                                                */
  548. /*                                                                          */
  549. #define SMG$M_KEYPAD_APPLICATION 1
  550. #define SMG$M_KEYPAD_NUMERIC 2
  551. #define SMG$m_spare3 -4
  552. struct SMG$R_KEYPAD_MODES {
  553.     unsigned SMG$V_KEYPAD_APPLICATION : 1; /* Application keypad            */
  554.     unsigned SMG$V_KEYPAD_NUMERIC : 1;  /* Numeric keypad                   */
  555.     unsigned SMG$v_spare3 : 30;         /* extra bits                       */
  556.     } ;
  557. /*                                                                          */
  558. /*    The following defines bits used with the FLAGS parameter for        */
  559. /*    SMG$GET_PASTING_INFO.                                               */
  560. /*                                                                          */
  561. #define SMG$M_DISPLAY_PASTED 1
  562. #define SMG$m_spare19 -2
  563. struct SMG$R_PASTING_INFO_FLAGS {
  564.     unsigned SMG$V_DISPLAY_PASTED : 1;  /* Display is pasted                */
  565.     unsigned SMG$v_spare19 : 31;        /* extra bits                       */
  566.     } ;
  567. /*                                                                          */
  568. /*    The following defines bits used with menu manipulation.             */
  569. /*                                                                          */
  570. #define SMG$M_REMOVE_ITEM 1
  571. #define SMG$M_FIXED_FORMAT 2
  572. #define SMG$M_DOUBLE_SPACE 4
  573. #define SMG$M_RETURN_IMMED 8
  574. #define SMG$M_ERASE_MENU 16
  575. #define SMG$M_WIDE_MENU 32
  576. #define SMG$m_spare2 -64
  577. struct SMG$R_MENU_FLAGS {
  578.     unsigned SMG$V_REMOVE_ITEM : 1;     /* Only select item once            */
  579.     unsigned SMG$V_FIXED_FORMAT : 1;    /* Use fixed size cols              */
  580.     unsigned SMG$V_DOUBLE_SPACE : 1;    /* Double space menu rows           */
  581.     unsigned SMG$V_RETURN_IMMED : 1;    /* Ret on non-arrow key             */
  582.     unsigned SMG$V_ERASE_MENU : 1;      /* Erase menu when deleting         */
  583.     unsigned SMG$V_WIDE_MENU : 1;       /* Wide menu items                  */
  584.     unsigned SMG$v_spare2 : 26;         /* extra bits                       */
  585.     } ;
  586. /*                                                                          */
  587. /*    The following are used with SMG$PUT_LINE_xxxx,                      */
  588. /*    SMG$SCROLL_DISPLAY_AREA, and SMG$DRAW_CHAR.                         */
  589. /*                                                                          */
  590. #define SMG$M_UP 1
  591. #define SMG$M_DOWN 2
  592. #define SMG$M_RIGHT 4
  593. #define SMG$M_LEFT 8
  594. #define SMG$m_spare1 -16
  595. struct SCROLL_DIRS {
  596.     unsigned SMG$V_UP : 1;              /* Up                               */
  597.     unsigned SMG$V_DOWN : 1;            /* Down                             */
  598.     unsigned SMG$V_RIGHT : 1;           /* Right                            */
  599.     unsigned SMG$V_LEFT : 1;            /* Left                             */
  600.     unsigned SMG$v_spare1 : 28;         /* extra bits                       */
  601.     } ;
  602. /*                                                                          */
  603. /* Define data structures                                                   */
  604. /*                                                                          */
  605. #define SMG$C_BAND_INFORMATION_TABLE 12 /* Length of table in bytes         */
  606. /*                                                                          */
  607. #define SMG$C_PASTEBOARD_INFO_BLOCK 32  /* Length of table in bytes         */
  608. /*                                                                          */
  609. #define SMG$C_KEYBOARD_INFO_BLOCK 20    /* Length of table in bytes         */
  610. union SMGDEF {
  611. /*                                                                          */
  612. /*    When an out-of-band AST triggers, the user's AST routine            */
  613. /*    will get called.  The first argument passed to his                  */
  614. /*    routine is the address of a Band Information Table.                 */
  615. /*    The offsets into this table are described below.                    */
  616. /*    To make it easy to access from certain languages,                   */
  617. /*    the table is arranged so that it is convenient to                   */
  618. /*    reference it as a longword vector as well as a byte block.          */
  619. /*                                                                          */
  620.     struct  {
  621.         unsigned long int SMG$L_PASTEBOARD_ID; /* Pasteboard ID             */
  622.         unsigned long int SMG$L_ARG;    /* User's AST argument              */
  623.         union  {
  624.             unsigned char SMG$B_CHARACTER; /* The character typed           */
  625.             unsigned long int SMG$L_CHARACTER; /* The character and 3 spaces */
  626.             } SMG$R_CHARACTER_OVERLAY;
  627.         } SMG$R_BAND_INFORMATION_TABLE;
  628. /*    When SMG$GET_PASTEBOARD_ATTRIBUTES is called,                       */
  629. /*    it returns data in a pasteboard information block.                  */
  630. /*    The following structure is used to reference fields                 */
  631. /*    in this block.                                                      */
  632. /*    Items marked with a plus (+) will be 0 unless the                   */
  633. /*    device is a terminal (DEVCLASS=DC$_TERM).                           */
  634. /*                                                                          */
  635.     struct  {
  636.         unsigned long int SMG$L_DEVCHAR; /* Device characteristics          */
  637.         unsigned long int SMG$L_DEVDEPEND; /* Specific characteristics (1)  */
  638.         unsigned long int SMG$L_DEVDEPEND2; /* Specific characteristics (2) */
  639.         unsigned char SMG$B_DEVCLASS;   /* Device class (e.g. DC$_TERM)     */
  640.         unsigned char SMG$B_SMG_DEVTYPE; /* Internal SMG device type        */
  641.         unsigned char SMG$B_PHY_DEVTYPE; /* Physical device type (e.g. DT$_VT100) */
  642.         unsigned char SMG$B_ROWS;       /* Number of rows on device         */
  643.         unsigned short int SMG$W_WIDTH; /* Terminal width                   */
  644.         unsigned char SMG$B_COLOR;      /* PBD background color             */
  645.         unsigned char SMG$B_PARITY;     /* Parity attributes (+)            */
  646.         unsigned short int SMG$W_SPEED; /* Terminal Speed (+)               */
  647.         unsigned short int SMG$W_FILL;  /* Fill characteristics (+)         */
  648.         unsigned short int SMG$W_CURSOR_ROW; /* Row where physical cursor is */
  649. /* (1-origin)                                                               */
  650.         unsigned short int SMG$W_CURSOR_COL; /* Col where physical cursor is */
  651. /* (1-origin)                                                               */
  652.         unsigned long int SMG$L_CURSOR_DID; /* Display id of topmost        */
  653. /* display that cursor is in.                                               */
  654. /* 0 if cursor is not in a                                                  */
  655. /* virtual display                                                          */
  656.         } SMG$R_PASTEBOARD_INFO_BLOCK;
  657. /*    When SMG$GET_KEYBOARD_ATTRIBUTES is called,                         */
  658. /*    it returns data in a keyboard information block.                    */
  659. /*    The following structure is used to reference fields                 */
  660. /*    in this block.                                                      */
  661. /*    Items marked with a plus (+) will be 0 unless the                   */
  662. /*    device is a terminal (DEVCLASS=DC$_TERM).                           */
  663. /*                                                                          */
  664.     struct  {
  665.         unsigned long int SMG$l_fill1;  /* Device characteristics           */
  666.         unsigned long int SMG$l_fill2;  /* Specific characteristics (1)     */
  667.         unsigned long int SMG$l_fill3;  /* Specific characteristics (2)     */
  668.         unsigned char SMG$b_fill4;      /* Device class (e.g. DC$_TERM)     */
  669.         unsigned char SMG$B_RECALL_SIZE; /* Size of recall buffer (+)       */
  670.         unsigned char SMG$b_fill5;      /* Physical device type (e.g. DT$_VT100) */
  671.         unsigned char SMG$B_TYPEAHEAD_CHAR; /* First char in typeahead buffer (+) */
  672.         unsigned short int SMG$w_fill6; /* Terminal width                   */
  673.         unsigned short int SMG$W_TYPEAHEAD_COUNT; /* Number of chars in typeahead buffer (+) */
  674.         } SMG$R_KEYBOARD_INFO_BLOCK;
  675.     } ;
  676. /*                                                                          */
  677. /* Define the out-of-band information table used when an out-of-band        */
  678. /* AST routine is called as it's own record.                                */
  679. /*                                                                          */
  680. struct SMG$R_OUT_OF_BAND_TABLE {
  681.     unsigned long int SMG$L_PBD_ID;     /* Pasteboard ID                    */
  682.     unsigned long int SMG$L_USER_ARG;   /* User's AST argument              */
  683.     union  {
  684.         unsigned char SMG$B_CHAR;       /* The character typed              */
  685.         unsigned long int SMG$L_CHAR;   /* The character and 3 spaces       */
  686.         } SMG$R_CHAR_OVERLAY;
  687.     } ;
  688. #define SMG$C_OUT_OF_BAND_TABLE 12      /* Length of table in bytes         */
  689. /*                                                                          */
  690. /* Define the subprocess information table used when a subprocess           */
  691. /* AST routine is called as it's own record.                                */
  692. /*                                                                          */
  693. struct SMG$R_SUBPROCESS_INFO_TABLE {
  694.     unsigned long int SMG$L_DISP_ID;    /* Display ID                       */
  695.     unsigned long int SMG$L_USR_ARG;    /* User's AST argument              */
  696.     unsigned long int SMG$L_STATUS;     /* Status of executed command       */
  697.     } ;
  698. #define SMG$C_SUBPROCESS_INFO_TABLE 12  /* Length of table in bytes         */
  699. /*                                                                          */
  700. /* Define an information table that can be used by both                     */
  701. /* SMG$GET_PASTEBOARD_ATTRIBUTES and SMG$GET_KEYBOARD_ATTRIBUTES            */
  702. /* as it's own record.                                                      */
  703. /*                                                                          */
  704. struct SMG$R_ATTRIBUTE_INFO_BLOCK {
  705.     unsigned long int SMG$L_DEV_CHAR;   /* Device characteristics           */
  706.     unsigned long int SMG$L_DEV_DEPEND; /* Specific characteristics (1)     */
  707.     unsigned long int SMG$L_DEV_DEPEND2; /* Specific characteristics (2)    */
  708.     unsigned char SMG$B_DEV_CLASS;      /* Device class (e.g. DC$_TERM)     */
  709.     union  {
  710.         unsigned char SMG$B_PBD_TYPE;   /* Internal SMG device type         */
  711.         unsigned char SMG$B_RECALL_NUM; /* Size of recall buffer (+)        */
  712.         } SMG$R_DEV_OVERLAY;
  713.     unsigned char SMG$B_DEV_TYPE;       /* Physical device type (e.g. DT$_VT100) */
  714.     union  {
  715.         unsigned char SMG$B_NUM_ROWS;   /* Number of rows on device         */
  716.         unsigned char SMG$B_TYPEAHD_CHAR; /* First char in typeahead buffer (+) */
  717.         } SMG$R_ROW_OVERLAY;
  718.     unsigned short int SMG$W_NUM_COLUMNS; /* Terminal width                 */
  719.     union  {
  720.         unsigned short int SMG$W_TYPEAHD_CNT; /* Number of chars in typeahead buffer (+) */
  721.         struct  {
  722.             unsigned char SMG$B_PBD_COLOR; /* PBD background color          */
  723.             unsigned char SMG$B_DEV_PARITY; /* Parity attributes (+)        */
  724.             } SMG$R_COUNT_STRUCT;
  725.         } SMG$R_COUNT_OVERLAY;
  726.     unsigned short int SMG$W_DEV_SPEED; /* Terminal Speed (+)               */
  727.     unsigned short int SMG$W_DEV_FILL;  /* Fill characteristics (+)         */
  728.     unsigned short int SMG$W_PHYS_CURSOR_ROW; /* Row where physical cursor is */
  729.     unsigned short int SMG$W_PHYS_CURSOR_COL; /* Col where physical cursor is */
  730.     unsigned long int SMG$L_DISPLAY_ID; /* Display containing phy cursor    */
  731.     } ;
  732. #define SMG$C_ATTRIBUTE_INFO_BLOCK 32   /* Length of table in bytes         */
  733. #endif
  734.