VX/SMG is an implementation of DEC's VMS Screen Management Service for Linux and Windows. Written entirely in C, it provides VMS / OpenVMS SMG functionality for Linux-based platforms.
VX/SMG is an implementation of DEC's VMS Screen Management Service for Linux and Windows. Written entirely in C, it provides VMS / OpenVMS SMG functionality for Linux-based platforms. All VMS / OpenVMS SMG functionality is provided in a call compatible interface that can be called from all 3GL languages.
Like SMG routines under VMS, VX/SMG provides user programs that are independent from the physical devices that actually perform the input and output functions. VX/SMG provides the Linux-based user with three essential services: support for existing run-time routines, preservation of terminal independence and retained ease of composition.
Supported features include, but are not limited to:
VX/SMG has been ported to all the popular Linux computers. Implemented on top of a C-based Windows package that is universally portable, VX/SMG provides users with a complete set of utility functions for handling terminal I/O.
VX/SMG is designed to provide multiple windows or views on a terminal screen. A window is represented by a logical entity called a virtual display. A terminal screen is represented by a logical entity called a pasteboard. Operations to create, input, paste, view, etc. are all handled with full compatibility.
Screens developed with SMG were intended to run only on VAX/ALPHA and ITANIUM COMPUTERS with the VMS / OpenVMS operating system. The complexity of SMG, VMS specific run-time dependencies and platform-specific programming language interface constructions, effectively prohibited (until now) the porting of SMG created screens.
In addition to being fully integrated with Sector7's VMS Support Libraries (VX/RT), VX/SMG includes a complete set of language interface utilities that facilitate the necessary changes to complete the linking process. VX/SMG interface utilities are available for all VMS-supported programming languages.
Utility procedures provide system-independent routines that complete (as required) "INCLUDE" statement changes, integration of VMS descriptors, call name changes and argument list completion
.VX/SMG provides support for many of SMG's unique features. A virtual display can be removed from the pasteboard without being deleted. This allows the user additional flexibility for manipulating the terminal screen. Bordered windows can be pasted in such a way as to be partially off the screen. The same is true for viewports.
Users can directly access the terminal database. This feature permits a user to by-pass all the normal VX/SMG functions and perform direct terminal and keyboard I/O.
(TOLAS screen kindly donated by GSI Transcomm)
Windows version of above screen. WINSMG is now obsolete and will only be resurrected under pain of torture, imminent death or cash.
VX/SMG does not use the facilities provided by Linux such as curses, termcap or terminfo. All terminal drivers are C-based routines that have been built into the VX/SMG system to provide for high speed and efficient portability.
VX/SMG uses the same internal structure as VAX/VMS SMG to store its terminal control strings. This allows programs that directly access the SMG terminal tables to function correctly under Linux. VX/SMG supports VT100, and upward compatible VTxxx ANSI, AT386 terminals, and will use advanced terminal features such as hardware-scrolling where available.
Screens using VX/SMG allow the programmer to use existing SMG features, including multiple window capability and independent terminal functionality. Pasteboards may be associated with a file instead of a terminal screen. Support for internal menu functions provides complete "create and make" selection capabilities.
VX/SMG provides extensive support for both output and input operations. Composition operations (output) are fully supported and behave as their VMS counterparts. Output operations that occur through virtual displays are also supported.
Screen management composition operations include:
Output screen management operations through virtual displays include:
Like SMG under VMS, VX/SMG provides a user with two routines capable of supporting the writing of text to a virtual display, character-oriented output and line-oriented output. With VX/SMG, a user is also able to change the rendition of a virtual display, draw and/or remove drawn lines and characters.
VX/SMG applications use the run-time system to display forms and their associated data fields and to control the I/O stream. The entire terminal I/O is passed through ASCII strings.
SMG$ALLOW_ESCAPE |
SMG$BEGIN_DISPLAY_UPDATE |
SMG$BEGIN_PASTEBOARD_UPDATE |
SMG$CANCEL_INPUT |
SMG$CHANGE_PBD_CHARACTERISTICS |
SMG$CHANGE_RENDITION |
SMG$CHANGE_VIEWPORT |
SMG$CHANGE_VIRTUAL_DISPLAY |
SMG$CHANGE_VIRTUAL_KEYBOARD |
SMG$CHECK_FOR_OCCLUSION |
SMG$CONTROL_MODE |
SMG$COPY_VIRTUAL_DISPLAY |
SMG$CREATE_MENU |
SMG$CREATE_PASTEBOARD |
SMG$CREATE_VIEWPORT |
SMG$CREATE_VIRTUAL_DISPLAY |
SMG$CREATE_VIRTUAL_KEYBOARD |
SMG$CURSOR_COLUMN |
SMG$CURSOR_ROW |
SMG$DEFINE_KEY |
SMG$DELETE_CHARS |
SMG$DELETE_LINE |
SMG$DELETE_MENU |
SMG$DELETE_PASTEBOARD |
SMG$DELETE_VIEWPORT |
SMG$DELETE_VIRTUAL_DISPLAY |
SMG$DELETE_VIRTUAL_KEYBOARD |
SMG$DISABLE_BROADCAST_TRAPPING |
SMG$DRAW_CHAR |
SMG$DRAW_CHARACTER |
SMG$DRAW_LINE |
SMG$DRAW_RECTANGLE |
SMG$END_DISPLAY_UPDATE |
SMG$END_PASTEBOARD_UPDATE |
SMG$ERASE_CHARS |
SMG$ERASE_COLUMN |
SMG$ERASE_DISPLAY |
SMG$ERASE_LINE |
SMG$ERASE_PASTEBOARD |
SMG$FIND_CURSOR_DISPLAY |
SMG$FLUSH_BUFFER |
SMG$GET_BROADCAST_MESSAGE |
SMG$GET_CHAR_AT_PHYSICAL_CURSOR |
SMG$GET_DISPLAY_ATTR |
SMG$GET_KEYBOATD_ATTRIBUTES |
SMG$GET_PASTEBOARD_ATTRIBUTES |
SMG$GET_PASTING_INFO |
SMG$GET_TERM_DATA |
SMG$GET_VIEWPORT_CHAR |
SMG$HOME_CURSOR |
SMG$INIT_TERM_TABLE |
SMG$INIT_TERM_TABLE_BY_TYPE |
SMG$INSERT_CHARS |
SMG$INSERT_LINE |
SMG$INVALIDATE_DISPLAY |
SMG$KEYCODE_TO_NAME |
SMG$KEYPAD_MODE |
SMG$LABEL_BORDER |
SMG$LIST_PASTING_ORDER |
SMG$LOAD_VIRTUAL_DISPLAY |
SMG$MOVE_TEXT |
SMG$MOVE_VIRTUAL_DISPLAY |
SMG$NAME_TO_KEYCODE |
SMG$PASTE_VIRTUAL_DISPLAY |
SMG$POP_VIRTUAL_DISPLAY |
SMG$PRINT_PASTEBOARD |
SMG$PUT_CHARS |
SMG$PUT_CHARS_HIGHWIDE |
SMG$PUT_CHARS_MULTI |
SMG$PUT_CHARS_WIDE |
SMG$PUT_LINE |
SMG$PUT_LINE_HIGHWIDE |
SMG$PUT_LINE_WIDE |
SMG$PUT_PASTEBOARD |
SMG$PUT_WITH_SCROLL |
SMG$READ_FROM_DISPLAY |
SMG$READ_KEYSTROKE |
SMG$READ_STRING |
SMG$REPAINT_LINE |
SMG$REPAINT_SCREEN |
SMG$REPASTE_VIRTUAL_DISPLAY |
SMG$RESTORE_PHYSICAL_SCREEN |
SMG$RETURN_CURSOR_POS |
SMG$RING_BELL |
SMG$SAVE_PHYSICAL_SCREEN |
SMG$SAVE_VIRTUAL_DISPLAY |
SMG$SCROLL_DISPLAY_AREA |
SMG$SCROLL_VIEWPORT |
SMG$SELECT_FROM_MENU |
SMG$SET_BROADCAST_TRAPPING |
SMG$SET_CURSOR_ABS |
SMG$SET_CURSOR_MODE |
SMG$SET_CURSOR_REL |
SMG$SET_DISPLAY_SCROLL_REGION |
SMG$SET_KEYPAD_MODE |
SMG$SET_PHYSICAL_CURSOR |
SMG$SET_TERM_CHARACTERISTICS |
SMG$UNPASTE_VIRTUAL_DISPLAY |