Copyright 1995-2016 by Kevin G. Barkes All rights reserved. This article may be duplicated or redistributed provided no alterations of any kind are made to this file. This edition of DCL Dialogue is sponsored by Networking Dynamics, developers and marketers of productivity software for OpenVMS systems. Contact our website www.networkingdynamics.com to download free demos of our software and see how you will save time, money and raise productivity! Be sure to mention DCL Dialogue! DCL DIALOGUE VMS, Unix, NT, or... TSX? Originally published March, 1995 By Kevin G. Barkes I was thumbing through Boardwatch, a magazine for bulletin board system operators, and noticed an ad for a multi-user BBS system called TSX that ran on Intel machines. I dialed into their demo system, downloaded a bunch of files, and started perusing the documentation. You could imagine my surprise when I started reading things like: "Symbols and logical names are both types of shorthand notation. Symbols are used to define your own commands. They are also used for control purposes within command files. Logical names are used to give shorthand names to devices and files." and "Lexical functions may be used in commands to perform a variety of operations." Egads! Had I wandered into a parallel universe, where DEC had ported VMS to the Intel platform? Nope. I had stumbled across TSX-32, a full 32-bit, multi-user, multi-tasking operating system for 386, 486, and Pentium computers. A few caveats. It's not a DEC product. TSX-32 is not OpenVMS. It can't run OpenVMS programs. It uses the same file format as MS-DOS, so you can install it on a DOS-based system without partitioning or reformatting your disk. It also means you're limited to 8+3 filenames. It's not compatible with DOS disk compression software. It only supports the standard Windows VGA driver and can only run Windows as a task in standard mode. It doesn't work with Pathworks, but does have its own networking software which runs TCP/IP. But if you're looking for a system that runs a lot like VMS, can do a lot of the things VMS can do, can live on an inexpensive Intel platform, and where a lot of your VMS experience is applicable, TSX-32 may be for you. TSX-32 was developed and is marketed by S&H Computer Systems of Nashville, TN, a firm that's been around for about 20 years. One of the company's principals, Harry Sanders, had purchased an early PDP-11 model 20 running the single-user RT-11 operating system. Spending $25K on a computer that could only support one user bugged Sanders, so in '76 and '77 he wrote TSX for the PDP-11. The original version supported four users. Further enhancements were made, and in 1980 S&H released TSX-Plus, which could run 20 concurrent users. The company sold over 20,000 licenses for the operating system, and heaven knows how many bootleg copies are in circulation as well. S&H's Phil Sherrod reported getting a support call from Russia for an unlicensed copy of TSX-Plus 6.1 with something called "The Potempkin Patch." When the IBM PC was introduced in 1983, S&H looked at the platform, but the 8088 wasn't powerful enough for a true multi-user/multi-tasking OS. With the arrival of Intel's 32-bit 386, however, development could begin. TSX-32 was not a port of the PDP-11 TSX-Plus. "We started with a clean sheet of paper," Sherrod said. TSX-32 was completely new, but heavily influenced by its authors' DEC background. Despite its "VMSness", TSX-32 is a unique operating system, and S&H even has a patent on its scheduling algorithm. The software was released around 1991, and about 2,000 licenses have been sold. It's been embraced by vertical market software developers who are from a DOS background, don't like Unix or Windows, or who want a solid VMS-like multi-tasking/multi-user OS that can run on cheap hardware. It can execute most DOS 16-bit programs and also provides an advanced 32 bit program environment with integral EMS, XMS and DPMI support. This means modern 32-bit applications aren't constrained by the 640K DOS memory limit. TSX is a virtual memory system, with support for demand paging that allows execution of programs larger than the amount of physical memory installed on the computer... sound familiar? "Native" TSX programs can be written in C and in DBL, formerly known as DIBOL and still widely used in the DEC environment. DBL code can ported from other platforms, including VMS. The company offers a "shareware" version of its BBS software and a user-limited cut of its operating system (dubbed TSX-Lite) so prospective purchasers can evaluate it in their own environment. You can download the software from S&H's website: www.sandh.com. They also have a full-blown evaluation package, including full documentation, which you can get for less than the cost of a full-featured Windows word processor. For additional information, you can contact the firm directly: S&H Computer Systems, Inc. 1027 17th Avenue South Nashville, TN 37212 Voice: 615-327-3670 FAX: 615-321-5959 Email: info@sandh.com If you're being forced to look at Intel boxes instead of VAXes and AXPs, you ought to give TSX a shot. ***** APRIL IN DECEMBER. In my December column, I published a piece of code by Ehud Gavron that allowed readers to "fully experience the wonders and utility of the Unix operating system." If you properly compiled and executed the code, you saw: Core dumped %SYSTEM-F-OPCDEC, opcode reserved to DIGITAL fault at PC=0000027C, PSL=03C00000 %TRACE-F-TRACEBACK, symbolic stack dump follows I was hoping readers would recognize this as a sarcastic comment by a VMS bigot on the reliability of Unix. This position was supported by my certainty that absolutely no one would actually believe that a 500 byte Macro-32 program could emulate an entire operating system. Boy, was I wrong. I received nearly 300 Internet messages from readers who thought there had been a typo in the code, thought they had compiled the program incorrectly, or wanted to let me know the .exe didn't work. I dutifully replied to senders that the code was a joke. Most didn't respond, which I found strange, until one person wrote "I've used a lot of things from your columns over the years, and they've always helped me out. This time I thought the program could activate some code DEC hid in VMS somewhere. I take what you write seriously, even though you kid around a lot. I didn't think you'd play a joke on your readers." Mea culpa. It certainly wasn't my intention to embarass DEC Pro's readers, and you can be certain I won't do anything like this again. I just honestly assumed everyone would immediately be able to figure out the joke. Wow. I never realized the power you can wield in a position like this. I wonder what would happen if I asked everyone to mail me a dollar... ****** "Most people have the attention span of a ferret on double espresso". Cute saying, no? Only problem is the above phrase was contained in the "From:" field of an Internet message to me, making a response impossible. If you've been sending email to people and wondering why you haven't been getting any responses, check your mailer software. Better yet, send a message to someone outside your organization on the net and see if they can send you a reply. It's also a good idea to include your email address in your sig file, or, if your software doesn't support one, to manually enter your valid email address after your name: Kevin G. Barkes kgbarkes@gmail.com I generally respond to email within a day or so. If you don't hear from me, I either didn't get your message or my reply was bounced due to an invalid return address. ******* Code of the month. No jokes this time; Curtis O'Connell's elapsed_time.com (Program 1) improves on the original and also clearly demonstrates how to use f$fao formatting and multiple lexical functions. ******************* Kevin G. Barkes is an independent consultant who is seriously considering the purchase of one of those "The Internet Is Full; Go Away" t-shirts. Kevin lurks on the comp.os.vms newsgroup and can be reached at kgbarkes@gmail.com. **** PROGRAM 1: $ saved_verify = 'f$verify(0)' $!***************************************************************************** $! Name: ELAPSED_TIME.COM $! Author: Curtis O'Connell $! Date: 10/18/1994 $! $! Description: This routine will store the current time in the global symbol $! ELAPSED_TIME. If the symbol had a value previously, it will $! report the delta time since the last call to this routine. $! $! Notes: This routine was adapted from TIMER.COM by Dan Cranmer $! appearing in DEC Professional October 1994, Vol. 13, No. 10. $!***************************************************************************** $! $ if "''elapsed_time'" .eqs. "" $ then $ elapsed_time == f$cvtime("","absolute","time") $ else $ cur_timer = f$cvtime("","absolute","time") $ write sys$output f$fao("Elapsed time !AS", - f$cvtime("''cur_timer'-0-''elapsed_time'","absolute","time")) $ elapsed_time == cur_timer $ endif $ exit (%x10000001+(0*f$verify(saved_verify))) ! Restore verify