Description
VX/SMG is a full implementation of DEC’s VMS/OpenVMS Screen Management Service (SMG$) for Linux and Windows. It provides a call-compatible interface for all 3GL languages, allowing applications that use SMG$ routines on VMS to function identically on modern platforms.
VX/SMG ensures that user programs remain independent of the physical display devices, offering virtual displays, pasteboards, viewports, and advanced terminal rendering features.
Key Features
• Full SMG$ API Compatibility – Implements all VMS SMG$ calls without modification.
• Terminal Independence – Works with VT100, VT220, VTxxx ANSI, AT386, and DECterm.
• Advanced Window Management – Supports pasteboards, multiple windows, overlapping views.
• Extended Rendering Features – Includes double-wide characters, scrolling regions, and cursor control.
• Seamless Migration – Works without modifying original VMS SMG applications.
• Performance Optimized – Implements a native C-based terminal driver, bypassing curses, termcap, and terminfo for high-speed execution.
VX/SMG Features and Compatibility
VX/SMG retains all core functionalities of VMS/OpenVMS SMG while enabling enhanced flexibility in modern environments.
VX/SMG enables seamless execution of legacy VMS SMG applications while enhancing performance and portability.
VX/SMG Functionality & Terminal Support
Multiple Screen Regions
VX/SMG allows applications to create multiple independent windows using virtual displays, each of which can be dynamically moved, updated, or hidden.
• Pasteboards – Act as logical containers for multiple screen areas.
• Viewports – Provide zoomed-in windows into larger virtual displays.
• Occlusion Checking – Ensures correct layering of overlapping windows.
Direct Terminal Access
VX/SMG does not rely on curses, termcap, or terminfo, instead using a native C-based driver for:
• Faster rendering
• Hardware scrolling support
• More efficient screen updates
Supported terminals include:
✅ VT100, VT220, VTxxx ANSI
✅ AT386 and DECterm

Windows version of above screen. WINSMG is now obsolete and will only be resurrected under pain of torture, imminent death or cash.

Example: Using Virtual Displays in VX/SMG
#include "vxsmg.h"
int main() {
SMG$CREATE_VIRTUAL_DISPLAY(24, 80, &display_id);
SMG$PASTE_VIRTUAL_DISPLAY(display_id, pasteboard_id, 1, 1, 0);
SMG$PUT_LINE(display_id, "Welcome to VX/SMG!");
SMG$DELETE_VIRTUAL_DISPLAY(display_id);
return 0;
}VX/SMG API Reference (SMG$ Functions)
VX/SMG fully implements the VMS SMG$ API, ensuring compatibility with existing applications.
VX/SMG retains all SMG$ APIs required for seamless execution of legacy VMS applications.
Conclusion
✅ 100% SMG$ API compatibility on Linux & Windows
✅ Full terminal control – pasteboards, virtual displays, viewports
✅ No changes needed – identical execution to OpenVMS SMG
✅ Seamless migration with Sector7’s VX/RT
✅ Supports VT-terminals, DECterm, and ANSI-emulation
✅ Optimized for performance – No reliance on termcap/curses
VX/SMG ensures that OpenVMS SMG-based applications function identically on Linux and Windows while enhancing performance and usability.
