Windows/386 v2.0(3)

Unknown disk on Ebay…

I stumbled onto these three disks, seemingly out of place in history.  Windows/386 version 2.0 is a strange one in that it shipped to OEM’s in late 1987, making it & Xenix part of the initial 386 wave of Operating Systems/Environments and beating out not only the OS/2 launch in 1988, but taking advantage of the 80386’s v86 mode, something that OS/2 wouldn’t be able to do in a shipping product until 1992. 

This version itself appears to be a retail version of Windows/386 lacking any clear OEM identification that was so prevalent for the era.  Indeed setting it up it offers a few interesting platforms:

Getting this to run was a little bit of a challenge as much as I prefer Qemu, these older 2.0x versions of Windows/386 have a BIOS/disk incompatibility with the hypervisor resulting in errors reading the hard disk.  Although PCem/86Box have no such issues.  I think it’ll run off floppy/CD-ROM/Network without any issue though.

Windows/386 v2.03

Once installed it reveals itself to be version 2.03 of all things.  While I was hoping for some kind of retail version of 2.00/2.01 this appears as close as it may get as it has more in common with the PCjs version of 2.01 (which you can try live on his site!)

The PCjs version of 2.03 has 138 setup files (not counting the PIFs), compared to the eBay’s 141, while the PCjs 2.01 has 59 files.

That said, well it’s Windows/386 mostly from 1987 with slightly updated EGA/CGA VMM drivers from early 1988 that just didn’t quite make the cut.  To me what is confusing, is that it identifies as 2.03 while it’s closer to 2.01 in file count and functionality, unlike 2.03 it really ought to have been a 2.02, if there even was such a thing.

Windows/386 2.03 in CGA

Otherwise it’s really not all that interesting short of the timestamp.  It’ll run on CGA/EGA *IF* you have the proper adapter in place, although VGA is compatible, the environment will detect that it’s not actually the proper card and refuse to run.  I tried to put in the 2.01 CGA/EGA drivers, but that resulted in an OS version mismatch (I didn’t check if 2.01 was locked to the Compaq OEM of MS-DOS)

No mixing drivers!

I installed the infamous pair Word & Excel.  Despite Word 1.1a demanding at least Windows 2.11, it appears to run okay.  Excel 2.1d loaded without complaining.  There isn’t very much convential memory for either, but they both can use expanded memory, which the hypervisor can create and share out without any emm386 or any equivalent driver.  I can only imagine the incompatibles of trying to balance these drivers at the time, and how much the coming DPMI specification was needed.

Memory trouble in Windows 2.x

 And as the old saying goes the three top problems in Windows version 2 is memory, memory and memory.  Trying to run anything graphical will exhaust convential ram, forcing you to single task anything graphical which kind of defeats the whole point of Windows.  You go from this:

BattleTech CGA in a Window

To this:

Windows is out of memory!

Oh well it’s 1987, and users were kind of used to being disappointed as such.  It’s really no wonder why Windows 3.0 became the smash it it was.

And of course you can't talk about Windows/386 without this gem. (Video in MPEG-1/Audio MPEG-2 care of JSMpeg).

WinFile comes back from the dead.


Yes, this WinFile.  So Microsoft apparently went through their Windows NT 4.0 source code tree from 2007, and decided to pull this tool out, and send it out into the world.  It’s available in a ‘original’ version, and a ‘v10’ version which includes the following enhancements:

  1. OLE drag/drop support
  2. control characters (e.g., ctrl+C) map to current short cut (e.g., ctrl+c -> copy) instead of changing drives
  3. cut (ctrl+X) followed by paste (ctrl+V) translates into a file move as one would expect
  4. left and right arrows in the tree view expand and collapse folders like in the Explorer
  5. added context menus in both panes
  6. improved the means by which icons are displayed for files
  7. F12 runs notepad or notepad++ on the selected file
  8. moved the ini file location to %AppData%\Roaming\Microsoft\WinFile
  9. File.Search can include a date which limits the files returned to those after the date provided; the output is also sorted by the date instead of by the name
  10. File.Search includes an option as to whether to include sub-directories
  11. ctrl+K starts a command shell (ConEmu if installed) in the current directory; shfit+ctrl+K starts an elevated command shell (cmd.exe only)
  12. File.Goto (ctrl+G) enables one to type a few words of a path and get a list of directories; selecting one changes to that directory. Only drive c: is indexed.
  13. UI shows reparse points (e.g., Junction points) as such
  14. added simple forward / back navigation (probably needs to be improved)
  15. View command has a new option to sort by date forward (oldest on top); normal date sorting is newest on top

Which is quite the list of things to add to the old WinFile.

You can find the source & binaries on github.

Windows 10 ARM64 on QEMU

(This is a guest post by Antoni Sawicki aka Tenox)

Microsoft is releasing Windows 10 for ARM64 CPUs and this time, unlike Windows RT fiasco, there will be a full desktop app support including a dynamic binary translator to allow running existing x86 apps on ARM CPU, much like FX!32 on Alpha NT or Rosetta on Mac OS X.

Latest Visual Studio updates now bring official ARM/ARM64 support for Desktop Apps, little hidden, but here is how to enable it.

Being able to compile Windows ARM apps, I wanted to try to actually run them, but … on what exactly? There are some developer evaluation boards. Apparently someone managed to run it on Raspberry PI. Most importantly however you can run Windows 10 ARM64 on QEMU. This is some serious Fun With Virtualization!

Windows 10 ARM64 running on QEMU

I’m not claiming to be the first. Clever people have already done it. I just wanted to make it little easier for the lazier of us. Here is how.

Follow the link above but skip the shady UUP business in step #3 and download ready made iso instead. You can google the iso image from windows.cmd and it will take you to this link. You need the rest of the files like UEFI firmware and virtio drivers.

For the even more impatient here is a ready to run image with Windows pre-installed. Because QEMU now comes with DLL HELL I’m not including it in the archive. You will have to install it separately.

Go have fun and port some apps to ARM64 with free community edition of Visual Studio. I’m going to start with Aclock 🙂

Building the Original Commodore 64 KERNAL Source

I just found this post over, the source code to a bunch of old Commodore 8 bit products have been located and recovered, and place online over on github.  Even better there is detailed instructions on cross assembling from a suitable PET machine for building your own KERNAL ROM.

Other sources include:

  • BASIC_C64 reindented BASIC_C64, KERNAL_C64 and DOS_1540 to approximate the LST
  • BASIC_CBM2_A reindented BASIC_CBM2_[AB], KERNAL_CBM2_[AB] and EDITOR_CBM2 to appro
  • BASIC_CBM2_B reindented BASIC_CBM2_[AB], KERNAL_CBM2_[AB] and EDITOR_CBM2 to appro
  • BASIC_PET2001 added BASIC_PET2001
  • DOS_1540 reindented BASIC_C64, KERNAL_C64 and DOS_1540 to approximate the LST
  • DOS_1571 added DOS_1571
  • DOS_1581 added DOS_1581
  • DOS_4040 reindented DOS_4040 to approximate the LST output of the assembler
  • DOS_8070 reindented DOS_8070 to approximate the LST output of the assembler
  • DOS_8250 reindented DOS_8250 to approximate the LST output of the assembler
  • DOS_D9065 reindented DOS_D9065 to approximate the LST output of the assembler
  • EDITOR_CBM2 reindented BASIC_CBM2_[AB], KERNAL_CBM2_[AB] and EDITOR_CBM2 to appro
  • KERNAL_C64_01 added KERNAL_C64_03 and renamed the existing KERNAL_C64 to KERNAL_C64_01
  • KERNAL_C64_03 fix disclaimer of C64 KERNAL -03 to reflect the LST printout
  • KERNAL_CBM2_A reindented BASIC_CBM2_[AB], KERNAL_CBM2_[AB] and EDITOR_CBM2 to appro
  • KERNAL_CBM2_B reindented BASIC_CBM2_[AB], KERNAL_CBM2_[AB] and EDITOR_CBM2 to appro

Super late, but pretty cool too!

Of interest is the PET2001 Basic sources.  While there have been reversed efforts dating back for years, this is the actual source code.  Namely the header.




Which is pretty damned interesting. The infamous “WAIT6502,1” feature is also included!

SimCity under Windows 3.0

In this case, I’m looking at the ultra popular Sim series, and their Windows releases.  While I was a big fan of SimCity, especially having played it on an Amiga, when I found out that there was a Commodore 64 version I had bought it immediately as I wanted to play it at home.  And let me tell you, it was a severely underwhelming experience.

SimCIty C64

From the logo it’s all down hill.  I know that SimCity is actually from 1985, and as the first version, the Commodore 64 version is basically the prototype.

SimCity C64

Which was just graphically underwhelming, but I still played the hell out of it.  And then I saw the Spectrum 48k version.  Yes the blocks are ‘buildings’ as the units fill up they will turn into black with only the letter remaining.  Despite the ultra minimal graphics, the game play is there.  And once you get used to the bizarre combination keyboard+joystick controls it is addictive.  I mean it is SimCity!

SimCity Spectrum 48k

But going to the PC, I kind of grew out of SimCity.  DooM was the hot game, and the whole immersive 3d thing.  And of course during that era being on the PC I only knew of the MS-DOS version.  While there was a version for OS/2 Warp released much much later, and by then if I felt the urge there was SimCity 2000 for Windows.

But after getting the kick for SimEarth, and finding the Windows 3.0 version, I was much surprised to find out that there was a version of SimCity of Windows 3.0 as well!

And I can see why I never had seen this for retail, or knew anyone who had it.

Maxis Order Form

That’s right in the included form, the price was $59.95.  And SimEarth was $69.95!  To put that in perspective that would be now $107.17, and $125.04  respectively.  And people think $60 for a game today is expensive!

To get the full experience I went ahead and loaded up PCem, with a 386 and EGA graphics to get that original feel.

Since this requires Windows 3.0, with either EGA or VGA graphics, and 2MB of RAM, I figured I would go with a ‘top of the line’ souped up 386DX.  I tried to load it up with the Wyse700 driver, and the game fails to load resources.  I don’t know if its even possible to make black and white or four colour resources, as I live in the future, and I have millions of colours!

That said, I tested and it has no issues with 8bit depths either.

Installation is pretty smooth, the game is shipped on either two 360k 5 1/4″ diskettes, or a single 720kb diskette. While modern games have so much more, there is many things this game is lacking.  But Maxine isn’t one of them.

Maxine the cow

No really, she is listed as a feature.

The music is through the PC speaker.  Just like the sound effects.  Multimedia integration with Windows that we take for granted today just wasn’t a thing back then.  The version I have is 1.0, Although a pirated version 1.1 that was sent in actually includes WAV sound effects, and a single midi track. However it doesn’t run on Windows 3.0.  So lucky me!

Unrecoverable Application Error

Ah the UAE, the bane of Windows 3.0.  They were so unpopular that Microsoft had to rename the dialog.

SimCity on EGA

Living in the constraints of EGA feel absolutely claustrophobic in today’s world.  640×350 just isn’t enough screen rel estate.  Even 640×480 is far far too small.  And that lead to one issue I found

SimCity SVGA

While using a SVGA driver so I can get that impossible to afford experience of 1280×1024 in 256 colours, but the application was never meant to run in something that wide.  You can easily put child windows ‘behind’ the dead space, and you can never recover them.  You have to save and re-launch. bummer.

Which leads me to perhaps the most famous reputation of SimCity for Windows.  As mentioned on Joe’s site, there was a massive struggle to get games like SimCity running on Windows 95. As Raymond Chen says:

If any application failed to run on Windows 95, I took it as a personal failure. I spent many sleepless nights fixing bugs in third-party programs just so they could keep running on Windows 95. (Games were the worst. Often the game vendor didn’t even care that their program didn’t run on Windows 95!)

Yes, they basically knew it had problems.  In the box they even had this cute flyer:

I sure hope Raymond got something for his efforts!

And yes, rest assured it actually does work.  It even works on Windows 3.00a under Citrix MULTIUSER 2.0.  Pointless as there is no way to have remote graphical displays but nice to see it work.

So what went wrong?  Where was all the follow up games for Windows?  Obviously the hardware needed was incredibly expensive.  A 386 or even a 286 with a few megabytes of RAM was expensive.  VGA or EGA monitors were also very expensive.  Even mice were expensive!  Putting together a low end PC basically barred you from this high end premier experience.  I can’t imagine that Maxis sold many copies of this.  As mentioned above I’m pretty sure there is a reason why I never saw this in the wild.

Awesome Windows 386/486 machine prices February 1992

Spending $3000 in early 1992, which is $5197.95 in today’s money. I can’t even begin to imagine spending over $5,000 to play a game.  It’s no wonder when older machines show up on eBay people want far too much for them.

In a strange way I like to watch SimCity animate in the background.  It’s like a fish tank, or staring out into a busy street.  With the advantage that I can summon a giant lizard to destroy it at my whim.

Microsoft Game Shop

This one showed up on eBay of all places.  The original MSRP was $49.95 USD.

Microsoft Game Shop

Well it seems that back in the early 90’s Microsoft was transitioning their Basic offering from the QuickBASIC to Qbasic.  And one of the launch products was the Microsoft Game Shop, back from 1990.  This was a specialized version apparently without any compiler, but included a tutorial based around games to teach basic.

Microsoft Game Shop (back)

Which back in the day it looks like it would have been a good way to inspire kids, although I have never heard of it.  There is even a glowing review in Compute, issue 130.


From the packing list it contains:

QuickBasic went on to become the cut down QBasic that was later included in MS-DOS 5.0, Windows NT 3.1, and of course OS/2 2.00.


There may be updates later in the year as these are waiting for me on the other side of the planet.  So I have to urge patience.

Microsoft Game Shop disks

Who knows, maybe they will even read!  The Windows/386 v2.03 I had recently ordered circa early 1988 read fine, so let’s hope these will too.

Citrix Multiuser 2.0

Back before selling auto insurance

Citrix Multuser 2.0

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.

IBM OS/2 ad

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.

Citrix multiuser 2.0 boot

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
Type 0
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:

Citrix Internal revision 2.053 6.177H base

LA Internal revision 6.167 91-10-08

GA Internal revision 6.307 92-03-01

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.

Windows for OS/2

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.

Going Multiuser

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.

Citrix add in Async

With the module added you then just have to assign a port.

ICA profile

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

CML modem settings

In the modem settings I had to set this to Forced connect, otherwise it’ll never see the server.

CML dialup profile

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.

Logging in to 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.

MS-DOS over the serial port

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:

No graphics over the serial line

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