Citrix South Beach: aka the missing link from text to graphics

A long long time ago, in a distant continent I once interviewed at this small company called Citrix. It was some QA position, they didn’t need programmers. I’d passed the interviews easily as I’d been programming serial TSR’s so I was hip to the 8250/16450. Citrix was an interesting but troubled company. They had incredible contacts and more importantly a deal from Microsoft that gave them access to OS/2. Sadly OS/2 1.0 had been a dud, and by the time OS/2 2.00 saw even a limited release, Microsoft had pulled out of OS/2. Citrix was a company that had lost twice in what should be a big market. -Multi user commodity systems.

Citrix Multiuser 1.0 was based on OS/2 1.21, and was limited to 16bit protected mode apps. Citrix Multiuser 2.0 was based on the Limited Availability version which means that it cannot run “GA” or General Availability programs. So no 32bit programs here. Instead it can run the same 16bit protected mode applications, however it can also run MS-DOS based programs. DOS4/GW programs run so oddly enough the only real commercial stuff that can be run is MS-DOS.

So here we were 1994. Citrix had struck out twice, but this time it was going to be different, but the deal had to be re-struck again. I have no idea how they managed to secure this lucrative deal again, but Citrix was able to get access to the source access Windows NT, after the 3.1 release to 3rd parties (when they got DEC involved). By now the world had gone Windows, Office 4.2 was a thing, and on the high end side, NT had SQL & SNA, and there was most defiantly a market for multiuser systems as there had been from the old days of Unix, with the old mix of ASCII and network graphical terminals.

The CD looks like a normal-ish NT 3.5 Server CD although there is no MIPS or Alpha builds, as expected everyone at Citrix would be working and targeting the larger established i386 market.

As you can see this is Beta build 101.

In the text mode setup it looks like a normal setup program. No doubt they had better things to do than skins, wallpapers and themes. HOWEVER there is a silent IDE bug that many people will no doubt run into:

Although it works okay in short bursts, the IDE driver will send a command 28 zero byte and then shut down the controller. From this point it hangs. So that means we either need to generate all the floppy disk images (not going to happen!) or do the MS-DOS cross install. Yeah I’m doing that instead.

When setting up under Qemu, use the AMD PCNET card. It’s much easier. I set it to Twisted Pair, and PCI bus. I’m not sure if those matter all that much, but it works for me!

If you are going to use Hyper-V, you’ll need the GF100 NIC driver, but use the Windows NT 3.1 driver, as this is technically a beta of NT 3.5 and the production 3.5 driver will blue screen.

I set the driver to autosense.

I also had both Qemu and Hyper-V bluescreen when doing DHCP. I don’t know what the issue is, and I’m too old to care as I don’t have source code to South Beach, and even if I did I’d probably regret posting fixes. So static IP address it is!

Ready to login

Honestly again the air in the office when I was there is that everyone was running around like crazy to QA the product, and get ready to expand client support. While I was too much of an OS/2 fan boy, they certainly knew that from now on everything was going to be about Windows NT.

Logging into the Citrix the first fun thing to do is to define some remote terminals, using the WinStation app.

The first interesting thing is that async terminals are supported. Along with using either NetBIOS or Winsock protocols for connecting clients. Isn’t that great! TCP/IP built in!

Now for the crazy part. The only client that works is MS-DOS based. Yes there is no Win16, no Win32, no Java, no protected mode DOS, no Linux, SunOS, Solaris, DG/UX, AIX, HPUX, Xenix, UnixWare or SYSV i386ABI. ONLY Real Mode MS-DOS. Despite the connections being able to be ICA version 2 or 3, they are incompatible with newer Windows based clients from Win Frame.

This it the following list of supported protocols. Although I had Novell Lan WorkPlace and used it before for Desqview X, I can’t find it at the moment. good luck finding FTP TCP/IP, in retrospect it’s a terrible name, and for all intents and purposes it’s disappeared from the earth. So that leaves Microsoft TCP/IP. Now all the LANMAN clients have it, although this isn’t what it wants. It wants the MSCLIENT found in the “\CLIENTS\MSCLIENT\NETSETUP” path from a retail version of NT Server 3.5

The DOS client is.. very touchy. Deleting profiles can lead to a corrupted profile. Altering existing profiles well yeah can lead to a corrupted profile. I thought it was EMM386 causing issues but it locks up on it’s own.

Revenge of text mode UI

One interesting thing I found is that the text mode UI didn’t die. It’s still very much alive. As mentioned above you can connect async terminals, or even connect over the network!

Text mode does bring up a Program Manage analogue, but all my programs are graphical so it’s kind of moot. But rest assured text mode stuff works great.

PowerStation Oregon Trail

So 32bit Fortran stuff works great, what about MS-DOS?

Here is MS-DOS / Qbasic editor. Running on Citrix South Beach! Great, what about OS/2?

OS/2 F2C Dungeon

And here we go running the f2c translator through Dungeon to get an OS/2 text mode app. As you can see forcedos reveals that this isn’t a bound executable, instead it only runs on the OS/2 subsystem.

As you can see the os2.exe/os2srv components of the OS/2 subsystem

And of course it looks better on the graphical client to mix and match them all.

Win32/Win16/OS/2 all at once!

Indeed Word & Excel for NT work great alongside everything else.

Obviously somewhere post South Beach the text mode stuff dropped off. I’ll have have to dig for more, but it’s kind of neat the idea of a real text mode NT. Sadly South Beach doesn’t seem to like VMware. I haven’t dug too far, as I like WSLv2 so I’m stuck with Hyper-V. It may work fine on ESX I haven’t tested. Obviously you need the appropriate drivers, ill try to update links later, if anyone cares.

No doubt that finally Citrix was no positioned to realize the dream of multiuser commodity based hardware along with commodity applications. Of course it wouldn’t be all sunshine and rainbows, and no doubt there was a toll needing to be paid between Windows NT 4.0 and on the way to Windows 2000. But back in 1994, things were looking good!

16 thoughts on “Citrix South Beach: aka the missing link from text to graphics

  1. “Of course it wouldn’t be all sunshine and rainbows, and no doubt there was a toll needing to be paid between Windows NT 4.0 and on the way to Windows 2000.”

    Sure it did. MS basically requisitioned all their kernel code (Mm/Se/Ob), and their graphics foundation (Win32k, rdp, rdpss, core winstation drivers) in exchange for a more limited OAK (no more direct source access and license to build their own Windows “distro”, only precompiled libraries for some of the windows base modules as win32k) agreement to so they could survive… Compiling their ICA drivers and tools to sell them as Terminal Server “premium addons”.

    Multisession Support on Windows, and the NT multisession-aware Memory Manager (session space) aren’t MS, but Citrix.

    Metaframe deal died, along other “premium nt addon” offers from companies like Symantec/Veritas, when MS finally cancelled “special IP property access and usage” agreements to MVPs, besides to what is offered in the WDK, in Vista development time.

    • The only more bizarre deal I’ve seen is how DEC then Compaq folded support for NT on the Alpha for the exchange of Microsoft Fortran. From there it went from DEC to Compaq to HP then to Intel. A real hot potato. I can’t help but wonder if Fortran generated more revenue than NT licensing on Alpha.

      At any rate yeah the ‘renegotiation’ going past NT 4 was insane. That said I ran ‘hydra’ the NT 4 Terminal Server all over the place. It was far superior to PcAnywhere, along with multiple users etc. The bank I was at had a deal we could run basically anything we wanted so I made sure to put a Terminal server in every location. It made life soooo much easier! But in the boot modes it still had Citrix notices.

  2. Do you remember when Citrix used to have a demo system setup that anyone could connect to? I remember those days well. Download the client and bam, your own NT 3.51 desktop anywhere over the internets.

    It only had a bare minimum of software installed, but it worked pretty good for what it was. Like modern VDIs, all your changes were wiped on logoff. All that was short lived though as Microsoft formalized the whole thing with NT 4.0 Terminal Server Edition. I think a good portion of the Windows Remote Desktop Protocol came from Citrix too.

    • It was probably a favour to drive a wedge into IBM, as the leads for Citrix were IBM OS/2 guys.

      Think of it more as an independent research facility. And when Microsoft wanted that tech, they held the bigger license, so Citrix had no choice.

  3. How did I not know about forcedos?! It’s interesting to see that this is a Win32 executable and utilizes an undocumented process creation flag called “CREATE_FORCEDOS” for CreateProcess. I created basically the same thing as a DOS program just yesterday to prevent Windows 2000 from running the OS/2 portion of a bound family API executable directly (as part of the WinWord 1.0 build). Unfortunately, when I try to use forcedos in the makeopus build (on all invocations of im2obj), somehow the DOS-forcing mode becomes sticky for the entire session and affects invocations of the OS/2 csl compiler as well, which are completely unrelated.

Leave a Reply to Random Cancel reply