Nothing like a little vintage advertising to try to re-capture the feel.Â But don’t let the colorful lizard fool you, this certainly was a dark time for Citrix.Â Firs they had tooled a product around the future of the PC market, OS/2 to only have Microsoft pull out of active development just as they were launching Multiuser 1.0.Â And to be fair it wasn’t just Citrix, the whole industry including Microsoft was in turmoil as people were pulling away from IBM and selecting Windows on MS-DOS of all things!
Citrix, like a lot of vars were caught in this lurch between OS/2 and the forthcoming NT OS/2 3.0, which of course ended up becoming Windows NT.Â During this time even Microsoft had to keep selling it’s SQL server on OS/2, along with it’s LanManager file & print server.Â Although they had a solution for the end user in the form of Windows they didn’t have any server platform.Â That left Citrix chasing the tail end of the application wave again as although they could now finally use OS/2 2.0, with it’s 32bit/16bit hybrid kernel, there remote user solution was still terminal based.
As IBM & Microsoft had split up the direction of the OS/2 project, IBM was running with version 2 as a platform for running DOS & Windows applications.Â Which ultimately lead to the major problem that OS/2 ran Windows apps better than native Windows thanks to it’s ability to run isolated Windows VM’s using paravirutalized graphic drivers.Â It wasn’t until Windows NT 3.5 could Microsoft meet this feat with it’s new platform.Â Suddenly Citrix had access to tonnes of MS-DOS based applications, much to my surprise there is even a DPMI driver on the disks I have, meaning that Windows 3.0 standard mode can run, along with DooM!Â But for Citrix this would be another one of those ‘not good enough’ moments where PC Servers were just high end workstations that could easily be maxed by one user, commodity multiprocessor machines were years off, and of course everyone was jumping to Windows 3.0.
But this did at least you run MS-DOS applications remotely, over dialup.
Installing Citrix Multiuser 2.00 starts looking very much like one of the 1.x versions of OS/2 with a far more busier screen featuring the Citrix tree.Â However from this point onward it feels a LOT more like IBM OS/2 2.00.Â Citrix interestingly enough has two disk 1’s, one that features newer LADDR drivers, and another with the older 1.x drivers.Â Although under bochs, the older driver disk crashes out.Â The entire OS fits on 8 high density 5 1/4″ diskettes.Â As teased before this post, I saw this on eBay, ordered it immediately to only discover that I don’t have the needed drive, and had to order one fromÂ pc-rath_de, and I wanted to give a shout out, as he made sure that I had the proper floppy ribbon cable, so I could go ahead with this fun project.
Although I had been expecting this to be inline with the never released Microsoft OS/2 2.00, it clearly has a lot of IBM vestige, even though the OS/2 source code license agreement was between Citrix and Microsoft.
Indeed, even checking the OS level:
Compare this to the OS/2 2.00 GA:
IBM OS/2 Base Operating System
Version 2.00 Component ID 562107701
Current CSD level: XR02000
Prior CSD level: XR00000
So clearly this is not in sync with the General availability of OS/2.Â What this is closer to sync with is the OS/2 LA – Limited Availability release.
IBM OS/2 Base Operating System
Standard Edition 2.00 Component ID 560109001
Current CSD level: XR00000
Prior CSD level: XR00000
Well isn’t that interesting?
Having had the misfortune of crashing all three we can look at the internal revisions:
So this make the BOS (Base Operating System in IBM speak) newer than the OS/2 LA (Limited Availability) kernel, however quite a few revisions behind the GA (General Availability).Â This of course means that Citrix Multiuser 2.0 is basically incompatible with any 32bit OS/2 software.Â I was unable to run anything EMX based, nor could I run the vast majority of the 32bit TCP/IP stack for OS/2 2.00.Â The best I could do was have it load the drivers, to where I could setup and ping the loopback, but the route command crashes the system, and any of the commands simply refuse to run.Â Not being able to run 32bit OS/2 applications greatly reduces the usability of the system, and falls further to the OS/2 trap that it really just excels at running MS-DOS apps.
It was a bit of a surprise to find out that even though Citrix had their source license through Microsoft, the 2.0 components turned out to be the upstream components from IBM.Â Just as the included Qbasic is the IBM version, along with the other components.Â The terminal support is naturally more robust than version 1, although I think the larger problem I had trying to run OS/2 programs it that many terminals are hard coded for 24 lines, and I don’t think you can change that in Citrix.Â And it does mention that if you do try to run on a 24 line terminal that DOS won’t run.
Much like 1.0, all the administration is done via text tools.Â It feels weird at first as even on the console there doesn’t seem to be any mouse integration, although the installer does ask if you do have a mouse on the system.
And like 1.0 there is no Presentation Manager, so no graphics on the console.Â HOWEVER you can run MS-DOS graphical stuff on the console.Â Although today I have no real need for it, but I went ahead and setup the included Windows support.
What is interesting is that you are expected to supply your own retail version of Windows 3.00, and Citrix has some updated drivers, along with OS2K286.EXE, and updated program manager, control panel, and print manager.Â While IBM included a full copy of Windows 3.00 at this point, this feels like the beginning of OS/2 for Windows – AKA the Borg.
First I just setup a COM port on Bochs to Listen on port 8880.Â Unfortunately this isn’t resilient, as Bochs will wait for a connect before actually starting, and if you drop off, it won’t let you connect back in.
com1: enabled=1, mode=socket-server, dev=localhost:8880
And then it’s a matter of running CFGTERM, and adding in the Async module.
With the module added you then just have to assign a port.
I didnt’ do anything special other than telling Citrix that there is no modem, it’s a direct connect, and to use the ICA terminal profile.
Using the Citrix MultiLink program, and DOSBox I was able to add an ICA terminal.Â On DOSBox I had to specify a modem with an IRQ in the config like this:
serial2=modem irq3 listenport:5001
In the modem settings I had to set this to Forced connect, otherwise it’ll never see the server.
And here is how I ‘called’ the Bochs VM.Â And then after ‘dialing’ in Bochs will start up the Citrix VM, and then you’ll get the simple Login prompt.Â Login and you’ll get pselect.
Pselect the the text based UI tool to get around your OS/2 sessions.Â It’s a little cumbersome at first, but once you get used to it, it’s just like OS/2 1.0 … Or Multiuser 1.0 for that matter, nothing really changed, except you can start MS-DOS Sessions now.
And yes, you can run Qbasic.Â But you can’t do anything graphical. Not even DooM.Â Although after loading the VDPMI device driver, DooM v1.1 will run, but then it’ll give you this fun error:
And that is where I’m going to have to leave this adventure for now.Â If you are so inclined, you can pick it up on archive.org.
It’s on WW now: https://winworldpc.com/product/citrix-multiuser/20
Perhaps you could get some resiliency and maybe even better handling of connections using com0com and possibly com2tcp? com0com is a Windows driver that gives you one or more pairs of virtual serial ports that emulate null modem cables (or you can change the virtual wiring to connect up the control lines however you wish IIRC). Then if Bochs and DOSBox can both use a serial port on the host you can probably get real carrier detect, etc. Otherwise you can probably use com2tcp to glue the emulators to the virtual serial ports in a way that doesn’t tie their lifetimes together so much, because the serial ports will both remain even when nothing is connected to them.
You might need to use the configuration tool to rename the ports from their default names (CNCA0 and CNCB0 IIRC) to COMn if some tools are fussy about the device names they use.
Thanks, I’ll have to give that a shot, otherwise I was going to try to hack something into the source code. And of course this would let me get it online.