Installing and using Citrix Multiuser v1.0 on BOCHS

Print Ad

Back in the late 80’s when OS/2 was starting to get some traction Ed Iacobucci took a team and split off from the mainline Microsoft / IBM alliance, and with Microsoft’s blessing (and source code) took OS/2 and took up the challenge that both IBM & Microsoft dropped that was the ultimate challenge to UNIX, the ability to host multiple users on the same machine.  Citrix had it’s start some time in 1989 (Don’t forget that NT OS/2 had it’s start in 1988), and back then LANs were still seen as super expensive, just as TCP/IP was a university / military protocol that even enterprise to small businesses were hooked on either NetBEUI or IPX/SPX, if they had any LAN at all.

Sneakernet was king in this era, just as the BBS was our connected world.

As this ancient promotional video shows, the product they were chasing was low end Unix market, oddly enough their larger competition being SCO Xenix, which itself was separated out from Microsoft.

While I’m waiting for a 5 1/4″ disk, I thought I’d take a crack at installing Citrix Multiuser version 1.0 that had surfaced a while back.

I’m using this as a template for a config.  Naturally to boot floppy image it’ll need a change.

megs: 16
romimage: file=bios/BIOS-bochs-latest
vgaromimage: file=bios/VGABIOS-elpin-2.40
floppya: type=1_2
floppyb: type=1_44
ata0: enabled=1, ioaddr1=0x1f0, ioaddr2=0x3f0, irq=14
ata0-master: type=disk, path=”citrix500.img”, cylinders=1023, heads=16, spt=63
ata1: enabled=0
ata2: enabled=0
ata3: enabled=0
boot: c
log: bochsout.txt
mouse: enabled=0
debug: action=ignore
mouse: enabled=0
private_colormap: enabled=0
floppy_bootsig_check: disabled=0
com1: enabled=1, mode=socket-server, dev=localhost:8880
com2: enabled=0, mode=socket-server, dev=localhost:8881
com3: enabled=0, mode=socket-server, dev=localhost:8882
com4: enabled=0, mode=socket-server, dev=localhost:8883
parport1: enabled=1 , file=”print.txt”
parport2: enabled=0
ne2k: ioaddr=0x320,irq=10, mac=fe:fd:00:00:00:01, ethmod=null
sb16: enabled=0
usb_uhci: enabled=0
port_e9_hack: enabled=0
clock: sync=none,time0=691148400

But that’ll do it.

Citrix has many 386 hooks in place.  After applying the CSD MU01091 I saw this in the readme:

MULTIUSER is designed to take advantage of the 386/486 instruction set where possible. Because of this Citrix MULTIUSER runs only on 386 compatible processors. You can take advantage of this fact to boost performance of your application while running on MULTIUSER.

The compilers available for MS OS/2 generally supply library functions which will execute on both 286 and 386 processors because MS OS/2 will run on these. Unfortunately, this prevents natural optimization for the 386 32-bit environment. However, we have found that it is a simple matter to boost performance by replacing some of your compiler runtime library routines. For example, if your application makes heavy use of long arithmetic, you can modify the multiply and divide runtime functions to use the explicit 32-bit multiply and divide instructions available on the 386 and 486 processors, thereby avoiding the 32-bit arithmetic emulation.

Many compilers such as Microsoft C 6.0 make available the source to the runtime library. Microsoft C 6.0, as an example, also provides instructions and make-files for rebuilding the libraries.

The Citrix Support Bulletin Board has further information on these techniques, along with specific code examples that you can tailor to your specific needs.

I’ll have to ask people smarter than me about finding any of this information.

Anyways Citrix requires that you install it onto a HPFS partition.  Citrix uses the Microsoft OS/2 1.21 kernel + base level for the OS.  After installing and running syslevel on both they report the same level.

MS OS/2 Base Operating System
Standard Edition 1.21 Component ID
Current CSD level: XR04072
Prior CSD level: XR00000

However the kernel naturally is different as this does support multiple users.  By default Citrix is setup for async terminals, and as far as I can find there was no actual LAN connection product available.  This is just simply the most common setup of the era, where UNIX was typically deployed with async terminals, and with remote users on dialup.  The Citrix media I have is dated from January 25th, 1991.  Although according to the ‘official timeline (pdf)‘  version 1.0 was released in 1990.  This was just after the protected mode version of Windows was demo’d to Bill Gates & Steve Balmer, which incentivized  Microsoft to dump OS/2 for Windows.  This put Citrix in a bad position as they had setup their product strategy around the next generation OS from Microsoft which had for all intents and purposes had been made obsolete overnight.  And as the Windows 3.0 juggernaut picked up steam selling over 4 million copies, while all previous versions of Windows combined were only in the neighborhood of 2 million copies.  As far as I’m aware, none of the OS/2 1.x sales numbers were ever released.

Citrix 1.0 is limited to OS/2 1.2 character mode executables.  And there simply isn’t that many.  And with the industry moving to the aforementioned graphical Windows 3.0 applications Citrix hit the market with a thud.  Citrix provides support for the following applications:

  • Borland Paradox 2.0
  • California Software Products BABY/4XX
  • DataEase SQL
  • Data Access DataFlex
  • IBM DisplayWrite 4/2
  • IBM Platinum Series 2.0
  • Irwin EzTape OS/2 Tape Backup Software
  • Lotus 1-2-3 Release 3.0
  • Maynard MaynStream OS/2 Tape Backup Software
  • Micro Focus Cobol/2 Workbench
  • Microrim R:Base 3.1
  • Microsoft BASIC Version 7.0
  • Microsoft C Version 6.0
  • Microsoft LAN Manager 2.0
  • Microsoft Word 5.0
  • Microsoft SQL Server
  • Novell NetWare Requester for OS/2 V1.3
  • Oracle 6.0
  • Word Perfect 5.0

As you can see, this isn’t a very large list.

Citrix multiuser 1.0 config program

There is a text panel/menu driven config program.  This greatly simplifies tasks.  I setup a simple system with a single com port, although Bochs doesn’t do anything sophisticated like modem emulation but rather you can connect ONCE to the VM, and that is is.  But it’s enough to launch HyperTerminal to get a serial connection.

Serial Terminal

The serial support on Citrix is pretty good as long as you have updated to CSD MU01091 which adds support for VT100/VT220 terminals.  With a tiny cheat sheet it’s not too hard to get used to the multitasking capabilities of Citrix/MS-OS/2

Hotkeys:
Login switch . . . . . . . . [{ctrl}{u} ]
Session switch . . . . . . . [{ctrl}{n} ]
Session direct . . . . . . . [{ctrl}{f} ]
Session create . . . . . . . [{ctrl}{o} ]
Reset terminal . . . . . . . [{ctrl}{y} ]
Print screen . . . . . . . . [{ctrl}{]} ]
Print screen toggle . . . . [{ctrl}{\} ]
Ctrl+Break . . . . . . . . . [{ctrl}{c} ]
Ctrl+C . . . . . . . . . . . [{ctrl}{c} ]

I can really see the value at the time of Citrix, although again it really arrived just too late to the market.  I’ll have to track down more of these ‘approved’ programs, and give them a shot.

It’s funny how the market can pivot where something that was seen as a defining feature of midrange OS’s in this case being multiuser became irrelevant as CPU prices dropped to the point where not only can individual users cheaply obtain their own processor, let alone own multiple which is typical today.  While Citrix was chasing the ‘killer feature’ of UNIX being able to host multiple users on a single ‘larger’ machine, the industry rather prefered to host server applications on cheaper ‘large’ PC’s, ala MS SQL Server, SNA Server, and Exchange Server.  With absolutely no data to back anything up, I suspect that SQL Server 4.21a may have moved more copies than Citrix 1.0.  If not I can gaurentee that SQL Server 6.0 sure did.

That said once, Citrix re-tooled their ICA offering onto Windows NT 3.51 they could reach their niche market of hosted applications in a data center.  And obviously taking over Xen, and jumping onto the virtualization market was a good move to keep relevant, especially how Microsoft had twisted their arm during the Windows NT 4.0 transition.

Author: neozeed

I live in SE Asia, doing generic work, enjoying my life & family

6 thoughts on “Installing and using Citrix Multiuser v1.0 on BOCHS”

  1. I think you missed a year in the development of Windows. Windows 3 was released in mid-1990 which is considerably ahead of early 1991 when Citrix got its first version out. That was long enough for it to become clear that GUIs would move from about 25% of software sales to nearly complete domination of major application markets.

    Serial port terminals connected to a PC seems to have been a siren song that lured many a company to its fall. Citrix was fortunate that their sales goals were more modest than the competition.

    1. I meant to add more stuff, and re-work it before publishing it, but that’s me editing late.

      I’m not sure what is with the timeline though as Citrix has Multiuser 1.0 being a 1990 product, but the disk images I have say otherwise. The manuals for 2.0 are dated 1991 although despite it being clear that they had launched after a market that basically ceased to exist overnight I don’t think they really had much choice but to push forward.

      The curse of Citrix is to be chasing Microsoft from the outside. First they latch onto OS/2 1.21, then OS/2 2.0. WinView is apparently OS/2 based + Windows. The only review I could find complained that it can take upwards of 3+ minutes to start Windows on WinView. But slow disks, low memory 386’s don’t seem all that surprising. By not having their own software stack they really were along for the ride. And that ride turned upside down when Microsoft renegotiated for NT 4.0 and was able to bring their tech inhouse in the form of Terminal Server.

      I would imagine that PC-MOS, VM/386 and other multi-taskers/multi-user DOS solutions flourished for a while although they got in on the ground so to speak in 1987/1988 with the introduction of the 80386. It’s funny in retrospect 2-3 years later may not seem like a long time, but in this industry it can easily be the space between entire generations.

  2. I think DisplayWrite and Word Perfect probably had the majority of the word processing market between them (if WP didn’t have it by itself), and 1-2-3 was THE spreadsheet, so they probably had many of the most important apps that you might want to run on a central server and have people doing work on serial terminals.

    There have been plenty of times that I wished I had a dumb terminal, and it was someone else’s job to make sure my word processor was working properly, rather than them giving me some crappy version of Windows which keeps crashing. I suppose like most things the reality probably wasn’t quite as nice as you’d hope, though!

    1. I used to think that, then I got Microsoft Word for Xenix. I never did like Wordperfect, and although Word was way easier to use, it still felt terrible. And I ran back to Word 2 for Windows.

      Word 1 for OS/2 feels like a tech demo. Too bad IBM had to be IBM, but GDI on OS/2 would have had aps.

  3. Multimate was the second most popular DOS wordprocessor in 1987, though at least some of that was from channel stuffing. But before 1990, the market was WordPerfect climbing to just under 50%, MS Word about 15%, Display Write, Multimate, and Wordstar all fading but still about 10% each.

    The problem for Citrix was that even DOS applications were being forced into spending more time in graphical modes. WordPerfect added page preview before creating a dedicated GUI; Lotus 2.2 and R3 improved graphing functions to compete with Excel. MS Word for DOS ran best in graphical modes and starting with Word 5 tried to match WordPerfect with page preview and then graphical editing after the panicky release of Windows Pageview to give DOS Word 4 a page preview and graphics insertion program. Even stodgy Displaywrite got a page preview mode and a graphical editing add-on by 1990. A text only multiuser solution was running into a strong headwind.

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.