VX/SMG
VX/SMG is an implementation of DEC's VMS Screen Management Service for Linux and UNIX. Written entirely in C, it provides OpenVMS SMG functionality for UNIX-based platforms.
Features
Introduction
Interface
Screen Manipulation
Viewports
Terminal Support
Functionality
Supported SMG$ Calls
Features
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 UNIX-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:
- Pasteboards
- Virtual displays
- Viewports
- Double-wide and double-high characters
- Virtual keyboards
- Terminal interface routines
Introduction
VX/SMG has been ported to all the popular UNIX 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.
Interface
Screens developed with SMG were intended to run only on VAX computers with the VMS operating system. The complexity of SMG, VAX/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.
Screen Manipulation
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.
Viewports
An additional feature of VX/SMG is viewports. A viewport is a subset of the area defined by a virtual display. A virtual display may be larger than the physical terminal. Normally, this would require the virtual display to be re-pasted to see all of it. A viewport provides a window into the virtual display. Different areas of the display can then be viewed by using the scroll and move operations allowed for viewports.
Terminal Support
VX/SMG does not use the facilities provided by UNIX 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 UNIX. VX/SMG supports VT100, and upward compatible VTxxx ANSI, AT386 terminals, and will use advanced terminal features such as hardware-scrolling where available.
Functionality
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:
- Paste/unpaste/repaste
- Move
- Delete and pop
- Occlusion check (overlap)
Output screen management operations through virtual displays include:
- Cursor positioning
- Deletion
- Erasure
- Insertion
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.


