As you can read right now It’s running a simple OpenWatcom 16bit hello world based program. The 16bit OS/2 and 32bit OS/2 API’s ended up having different calling sizes, among other issues which had complicated the bridge program. However Ryan’s newer use of scripts to generate the required glue for the API’s at least mean that adding the 16bit/32bit calling conventions & required bridges/glue is at least now automated.
This is super cool, as this will eventually open the door to Watcom C/Fortran, Zortec C, Microsoft Basic/C/Cobol/Fortran and of course many other languages that burst out into the initial OS/2 scene before the eventual weight of the SDK & associated costs doomed OS/2 to failure.
Seriously, for those among us who love OS/2 and have like $5 to spare, send some encouragement to Ryan… 🙂
So this is really super cool! Ryan C. Gordon has written a Wine like program to run OS/2 programs!
Using 32bit Linux, and some native libraries, 2ine can load up an LX (32bit) executable and try to run it under Linux, much in the same way that Wine can run Windows programs. And yes it’ll run EMX built stuff. Although keep in mind the original Microsoft based languages, programs and tools is all 16bit. After the whole Windows 3.0 thing and the split of Microsoft from the OS/2 project all their tools are either 16 bit, or 32bit LE format, which IBM had dumped for the LX format once OS/2 2.0 had shipped.
You can read about his incredible progress, and all the trials and tribulations of running OS/2 programs, along with the craziness that is thunking back and forth to the 16bit space for the old VIO calls that had never were updated to 32bit in that transition phase where a good chunk of OS/2 never was updated from 16bit, over on his patreon page here.
Attempting to run anything 16bit or LE will give you:
At End Of Road Score: 36/0
Welcome to Adventure! Do you need instructions? (y/n) >n
A Modern Classic
Based on Adventure by Willie Crowther and Don Woods (1977)
And prior adaptations by David M. Baggett (1993), Graham Nelson (1994), and
Adapted once more by Jesse McGrew (2015)
Release 1 / Serial number 151001 / ZILF 0.7 lib J3
At End Of Road
You are standing at the end of a road before a small brick building. Around you
is a forest. A small stream flows out of the building and down a gully.
At End Of Road Score: 36/0
Again it’s works so well it’s amazing!
You can find the 2ine source over on icculus.org here. I had to tweek the heck out of the CmakeList.txt to get it to build, and since I was interested in the command line, I ended up disabling all the SDL / PM stuff, and make sure I had the ‘wide/unicode’ version of ncurses installed.
I don’t think there really was any killer 32 bit OS/2 applications, but with clean room versions of:
Not to mention being able to call into Linux DLL’s and using ‘clean’ OS/2 DLL’s would let you embrace and extend OS/2.. Or maybe even let you build the proverbial fantasy of both RISC & 64 bit OS/2. …..
I don’t know why I did it, as honestly I didn’t like it on CGA back when it was a thing. Also, thankfully the hard disk speed on PCem is way faster than the real thing. And I’m not complaining.
Text mode is all the same setup wise, but on reboot the installer goes forward in glorious CGA ‘high res’ mode. Which is pretty terrible.
Yuck. I guess at the time I just felt lucky that I could at least run it. Although once I got lucky enough to score an EGA card + monitor. Anyways let’s continue the horror!
Yep, there is the desktop! .. barely. The desktop constantly want’s to jump around which is annoying, just as command prompt’s cant decide if they should be black or white. And the font’s get truncated. It’s almost as if nobody cared about actually supporting CGA. Which honestly I’m more surprised that it even made the cut.
Sure, I could have changed the default font, but why should I? I know Word 1.1 is very primitive but wow.
To be fair, Windows in CGA is pretty terrible as well.
Not to mention solitaire on both is nearly impossible between the lack of colour, and the lack of any high resolution. I suppose the Wyse 700 display ought to be much nicer, if only they had gone through the hell of making OS/2 device drivers.
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:
IBM OS/2 Base Operating System
Standard Edition 2.00 Component ID 560109001
Current CSD level: XR00000
Prior CSD level: XR00000
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
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.
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.
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.
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
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
Word Perfect 5.0
As you can see, this isn’t a very large list.
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.
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
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.
I think this is the proverbial OS/2 holy grail, a shipped copy of Microsoft OS/2 2.0
From a press release:
Coral Springs, Florida based Citrix Systems Inc has a new release of its multiuser implementation of MS-DOS. Multiuser 2.0 is designed to run any combination of MS-DOS, Microsoft Windows and OS/2 applications concurrently, and to provide all key features of commercial-grade operating systems multiuser, multitasking operation with terminal support, security, resource management, remote access and administration utilities. It is claimed to be a 32-bit operating system for Intel Corp iAPX86 machines from the 80386SX up. It is claimed to be compatible with Novell Inc NetWare, Microsoft LAN Manager, IBM LAN Server, and Banyan Vines networks, enabling it to function as a low-cost network extender. The ability to run graphical applications at the console will be available next month, with support of graphics at the terminal level will be added in April as a no charge upgrade. Citrix Multiuser 2.0 is $1,000 for a five-user package; doubling the number of users is $500, regardless of how many there were originally. An unlimited user licence is $2,000 once you’ve bought the five user licence. Out next month.
Looking at the copy I have, it’s strictly for OS/2 and MS-DOS programs. There isn’t any hint of it supporting 32-bit OS/2 programs, so I have the suspicion that this is like the OS/2 FOOTBALL beta, which was the 1.0 kernel with 386 based paging (virtual memory) and v86 mode support for multitasking MS-DOS. The manuals also state that there is no support for Presentation Manager either at the console or remotely. So it appears that like Citrix Multiuser version 1.0 it is strictly text mode based.
I just found out about this. It’s running September 8th to the 10th. I won’t be going as I just found out, and I’m running errands in China.
For the 2-3 people in the GTA area:
Warpstock is the annual conference for OS/2, ArcaOS, and eComStation users, administrators, and developers. Warpstock 2017 will be held at the Holiday Inn Toronto Airport East, located at 600 Dixon Road Toronto, Ontario, Canada M9W 1J1., Friday, September 8 through Sunday, September 10, 2017.
The schedule is here, and as expected, ArcaOS is at the forefront. Unfortunately at $129.00 USD it’s a bit too much for me. And I still use OS/2 2.00 …
05/05/1992 09:46 AM 144,272 EMXDEV.ZOO
05/05/1992 09:44 AM 167,809 EMXINFO.ZOO
05/05/1992 09:46 AM 101,132 EMXLIB.ZOO
05/05/1992 09:46 AM 19,266 EMXTEST.ZOO
05/05/1992 09:46 AM 586,285 GNUDEV.ZOO
05/05/1992 09:40 AM 78,575 GNUPAT.ZOO
05/05/1992 09:41 AM 138,891 GNUSRC1.ZOO
05/05/1992 09:41 AM 184,671 GNUSRC2.ZOO
05/05/1992 09:45 AM 1,044,875 GNUSRC3.ZIP
05/05/1992 09:43 AM 1,015,692 GNUSRC3.ZOO
05/05/1992 09:42 AM 505,127 GNUSRC4.ZOO
05/05/1992 09:45 AM 3,178 README.DOC
And from the readme, the release is from Feburary of 1992. Keeping in mind the GA release of OS/2 2.0 was released in April of 1992.
EMX 0.8b INTRODUCTION 22-Feb-1992
Welcome to emx, a common environment for creating 32-bit programs for OS/2 2.0
and MS-DOS. You can use the GNU C compiler to compile programs for EMX.
Included in the emx package are:
emx.dll dynamic link library for OS/2 2.0
emx.exe DOS extender for running 32-bit programs under MS-DOS
emxbind.exe for creating .exe files which work both under OS/2 2.0 and
C header files and a nearly complete C library, including source
Additionally, the following GNU programs are available compiled and with
sources (note that these files are not part of EMX):
gcc, the GNU C compiler
gas, the GNU assembler
gdb, the GNU debugger
ld, the GNU linker
ar, nm, size, strip, objdump: some GNU utilities for dealing with binary
Patched source for gcc, gas, gdb, ld, ar, nm, size, strip, objdump. You can
compile all these programs with the files that come with emx (but you also
need a make utility, such as NMAKE)
So this pretty much sums it up. I went ahead and extracted the ZOOs and placed a copy on my site: emx08b_extracted.7z Although I don’t think anyone really cares about ancient versions of GCC on OS/2.
I know it’s utterly pointless… But yeah GCC 2.8.1 + EMX 0.9d, hosted (running) on Win32. The main reason is that I wanted to be able use use my substantially faster Win64 machines to build stuff for OS/2. And since I have a 4 core (+4 hyper thread), I want to be able to use make with the -j 16 flag, and say compile QuakeWorld/2 in under two seconds.
I was able to get the binutils 2.6 derived stuff to compile, along with the ‘ancient’ binutils which is notably the linker that EMX depends on. I would imagine this ought to be able to compile PDOS, although my own simple attempt at InfoTaskForce met with spectacular failure. While it does compile fine using an older EMX 0.8h based release.
Continuing in my quest of useless stuff, here is GCC 2.5.8 for EMX as a native Win32 executable set.
With some weirdness of inline not being recognized, I just commented that out. The GCC driver program does have some issues though, and Im just not in the mood to fully figure out why either the EMX or MS-DOS versions can’t correctly capture return codes, or if it was better to just use -pipe and _pipe with _O_TEXT mode set, but again how to figure out if the pipe closed cleanly or with errors? So for now it’ll always assume everything worked, but it will still print errors. Sigh.
With that said, the CC1, CC1OBJ, CC1PLUS drivers all built, so you can use C, ObjectiveC, and C++. yay.
The functional version of this is EMX 0.8H, with the gcc 2.5.8 update. Maybe I’ll put this all on sourceforge so people don’t have to deal with my crappy download system, but for now it’s on my site.