Everyone mentioned this yesterday…

275,000 transistors of awesomeness!
275,000 transistors of awesomeness!

Kind of interesting is that Linux has finally dropped support for the 80386 microprocessor.

The 386 is perhaps one of the top ten things that has changed our world, along with 4.3BSD .

No, really!

The 386 microprocessor was the first CPU by Intel that was single sourced.  This means that Intel, and only Intel would fabricate the 386 processor.  Before this time, Intel had licensed their processors to other companies (Siemens, AMD, Harris, IBM etc) So that if there was some kind of production issue at Intel other companies could manufacture 8086,80186s and 80286s.  However this all changed with the 386, as Intel stopped renewing these agreements with other companies (IBM had a license that included the 386, although they were slow in making their own), so now Intel was in charge of its destiny.

The 386 brought three major changes onto the then champion processor the 286.  The first being a 32bit processor where it could handle larger data sizes than the 16bit 286 & 8086.  The 386 also included a larger memory model, the so called “flat mode” where it could directly address 4GB of combined code+data, while the 286 could address 1GB it was limited to 64kb segments.  Lastly the 386 introduced hardware virtualization, the “v86” mode where the 386 could emulate multiple 8086 processors, allowing people to have multiple ‘virtual machines’ on the desktop.

At the time the only consumer grade 32bit processor was the hybrid 32/16 68000 from Motorola.  The 68000 could work with 32bit data, but it was restricted to a 16bit data bus, and only could address 24bits of RAM (16 megabytes).  The 68000 however did not include any kind of memory management unit (MMU) making things like porting UNIX improbable (The SUN-1 workstation included a custom MMU).  Because of the open nature of the IBM PC, clone manufacturers were able to leapfrog IBM, and release 386 based machines before IBM got around to releasing the PS/2 model 80.  It was this that effectively brought 32bit computing to the masses with the Compaq Deskpro.

Compaq's 386 Deskpro
Compaq’s 386 Deskpro

The 8086 processor could address 1MB of RAM, with its 20bit address bus.  However to preserve some compatibility with the 8080 processor it was decided that the 8086 (and 8088) CPUs would work with 64kb segments.  This became a massive headache for years as you could not easily contain more than 64kb of data at a time as you would exceed a segment.  Compiler vendors made some workarounds via the large & huge memory models, but porting a program from a 32bit minicomputer (VAX) would prove difficult if it addressed large amounts of memory, and would require a rewrite.  The 286 increased the addressable memory to 16MB, and included a limited MMU, which enabled an address space of 1GB.  However the 286 was flawed in that again the 286 could only work in 64kb segments, and in order to work with large amounts of memory, the processor had to be shifted to protected mode.  However in protected mode, you couldn’t (easily) switch back to real mode.  This needlessly delayed the adoption of protected mode environments, as you would then lose access to the sizable, and growing, library of MS-DOS programs.  Although workarounds were in place for things like OS/2 and DOS Extenders, they were hacks and couldn’t fix the fundamental 64kb issue.  The 386 built upon the 286’s foundation and included a flat memory model where it could address all 4GB of addressable memory in a single segment.  This meant that you could now use massive amounts of data on a consumer grade machine.

For a while the only 32bit environments were Xenix and MS-DOS via DOS Extenders this proved to be a huge liability and effectively stagnated the industry for a long while.  The 286 was a massive determent.  Making things worse was IBMs insistence that the new OS/2 be able to run on the 286, while Microsoft wanted to create OS/2 to run on the 386, and ignore the IBM AT all together. Basically the 286 was created with the assumption that the 8086 wouldn’t be anywhere near as popular as it was.

With the ability to address large amounts of RAM programs only seen on minicomputers and mainframes were finding their way to the microcomputer such as AutoCAD, Oracle, Links 386 Pro, and of course many in house programs where departments now wouldn’t have to pay to run on then ‘big’ minicomputers.  Combined with the 386’s MMU it was also possible to use more memory than was available in the computer, also known as virtual memory.  The 386 made this transparent to the program, only the 32bit environment needed to handle the swapping.

Finally the last big feature of the 386 was v86 mode.  V86 mode in short is a hardware virtualization platform where the 386 can emulate multiple 8086 processors in hardware.  Each virtual machine can get its own isolated memory space, virtual hardware.  Effectively 8086 programs (such as MS-DOS) can run unaltered inside of v86 mode, with the added benefit of being able to run more than one at a time. Windows/386 lead the charge into this new world of virtual machines for the end user.  Before this point, the only wide scale virtual machine environment was the IBM 370 mainframe which could also create virtual mainframes within itself allowing groups to share a single mainframe, but run incompatible software platforms all at the same time.

Thanks to its capabilities the 386 also brought UNIX to the end user.  First with Xenix, then Microport SYSV, and with the removal of AT&T code BSD was able to be released on the 386 via 386 BSD (and later BSDi’s BSD/OS).  During this timeframe the research OS, Minix was extended by Bruce Evans to be able to use some of the 386’s features which then gave rise to Linux.

Thanks to cheap commodity based 32bit computers, and the GNU projects development tools (binutils, gcc, bash) people could then finally realize GNU’s dream of bringing a free and open UNIX like operating system to the masses.

Needless to say, a lot has changed since 1991, and Linux now moving beyond the 386 processor is no surprise.  The rapid adoption of 64bit computing via AMDs extensions, and the new forthcoming 64bit ARM processors do signal the eventuality that one day Linux will even drop support for 32bit processors… Although I wouldn’t expect that for another 20 years.  Even Intel has ceased manufacturing the 386 processor in 2007.

So it is now time to say good bye to the 386 processor.  At the same time thanks to full software emulation, you will never truly be dead. And as always you can check out Linux’s early versions.

Running OS/2 1.x on VirtualBOX Intel vs AMD

Well I know this is a limited topic, and my testing is anything but .. thorough.

But for some strange reason I’ve been trying to run OS/2 1.1 under VirtualBOX on Windows, and OS/2 crashes in under a minute all the freaking time.  It really is quite annoying.  Now I wonder if it is because my Windows PC has an 8 core AMD Processor?

Now when I run VirtualBOX (all the same latest version) under OS X, Intel it works fine!

OS/2 1.1 under VirtalBOX Mono EGA mode

Now what I don’t get is that under OS X with Intel Xeon CPUs I’ve been running for over an hour now, without issue!

As for settings, remember to add a floppy controller, remove the IDE CDROM, and remove the sound & networking!  I’m using 8MB of ram, but the glorious 80286 could go up to 16MB of RAM… Even though its virtual address space was 1GB!

I don’t know if anyone has any real insight into this whole AMD vs Intel thing, but from this super minimal testing it seems to me the Intel CPU is the way to go.

Also I don’t know why OS/2 decided to go with some greenscreen EGA.. It is kind of neat in a throwback kind of way, but nonetheless very odd.  I’d have preferred colour EGA but I guess you can’t win them all.

Upgrading through OS/2; Version 1.1

Continuing from the previous post, let’s get started with Microsoft OS/2 1.1

I added a 500MB hard disk to VirtualBOX, booted up an OS/2 1.1 boot diskette I had created that allows me to fdisk/format and do basic backup/restores, esp since OS/2 1.0 cannot install on a large (lol) 500MB disk.

So with the restore done, I’m booting up the Microsoft OS/2 1.1c Nokia OEM release.

Nokia OS/2 1.1c splash screenAnd..

The dates for this release is 2/20/1989.  I would have imagined that the original version of OS/2 1.1 shipped in 1988, as mentioned by the copyright. Apparently the Microsoft versions of OS/2 1.0 & 1.1 included support for the 386 method of switching from protected mode to real mode, while the IBM versions only included the 286 triple fault method.  I’d imagine the Microsoft ones would include both, but the only way to verify is to install on a 286.  Something that I simply do not have.

This style of the OS/2 installer will be with us for quite some time.  it’s not until Warp did the look and feel start to change.

It’s a little worrisome that OS/2 is always looking for a way to format your drive.  OS/2 1.1 only supports the FAT filesystem at this point, and formatting defeats the point of the upgrade.

The setup program renames my config.sys , autoexec.bat and startup.cmd files.  Obviously things are now different from OS/2 1.0

And at this point it’s just an install disk to prepare the disk, then we reboot off the hard disk to continue the install, in text mode.

We just feed some disks to the OS, then we get to select a mouse.

Thankfully the PS/2 option is in here! Very exciting stuff.

For some reason things like serial ports are optional, so after letting it load the serial driver, we are all set to go!

Ok, let’s experience some real OS/2 power!

What is cool is that my printer choice has been preserved.

And the C drive has been cleaned up… some.  Although most of this stuff is backups of my OS/2 1.0 stuff, along with some portion of the OS/2 1.0 install in os2.000 .. I just deleted all of this crap.

Now to see OS/2 1.1 in action…

OS/2 1.1 stress testSo again you are limited to 12 sessions in OS/2, along with the single DOS Box.  However notice that the windowed icons (the black ones) and the full screen are independent.  This was also another annoyance in OS/2, that you cannot switch an application from full to windowed at will, and some text mode stuff is compiled as full screen so launching it from a window will jump you fullscreen.  OS/2 also finally included a game, a breakout clone, with various neat pictures.  I like the Seattle one myself.

And a text editor! A nice one too.  Also I don’t know if it’s VirtualBOX but the UI is VERY sluggish, the worst thing you can do is open a command window and have it scroll.

But all in all, OS/2 1.1 was certainly a step in the right direction, and really what people would start to expect in an OS.  The GUI really is needed to get a feel for multitasking.  It’s a shame that ‘paging’ the real mode box out to disk and going between multiple sessions could have been done…. But I imagine they tried it, and it failed badly.  Or the paging got out of hand.. Hard to say.

As a slight detour I’ve also setup IBM OS/2 1.1 Extended Edition, which you can see my quick review here.

And for the few people who care, here is what 1.1 in Mono EGA mode looked like:

The other things that Microsoft OS/2 is really lacking is online documentation, and a way to shut down the OS from the desktop. It’s still control-alt-delete.

Onward to OS/2 1.2

Installing Xenix 286 on Qemu 0.14.0

For all the 286 fans, which… I never understand, good news, it turns out that using the same method for installing Xenix 386 works on Qemu 0.14.0!

Booting up a kernel on a 1.2MB floppy disk image I get this:

Notice that the device is fd096ds15, which then corresponds to 2,52 for the major minor. Armed with this information you can install happily. And enjoy your segmentation, and SMLH memory models. Ugh.

I still say the 80286 was the worst thing to mainstream IT.

So I’ll leave you with this gem, from tenox..
MICROSOFT STRIKES GOLD.

SoftPC 3.1 for MacOS

SoftPC 3.1 for MacOS
SoftPC 3.1 for MacOS

I had purchased this a while back on ebay for $15, and used it occasionally but ever anything that involved. Mostly because it’s dreadfully slow on an 030, and ever since the intel cpu has won out, it’s not all that needed in this day in age. But at the same time, its interesting to check out various emulators through the ages.

Installing it was way easier under Basillisk II, then running it is more smooth under mini vmac. Mostly because of it’s 68881 emulation, and also it just seems faster.

An 80286 in every box!

Running MSD shows that it does in fact emulate a 80286 processor!

So doing the only natural thing, I installed Microsoft C 5.1 but configured it only for OS/2 development, then used a old 286 dos extender I found, and blamo, it works!

Hello from protected mode!

The sad thing, is that it seems the 80386 & 80486 stuff was RISC (MIPS/Alpha/PowerPC) or 80486 based only. I’m pretty sure the version of SoftPC for NeXTSTEP did a 80386… I’d love a real copy of that, but I know there was a demo out there somewhere.

Anyways for it’s age, SoftPC seems to be about as annoying as any 286 computer was at the time. And as a bonus running emulators under emulators makes it about as slow as a 286..

Xenix 286 on Qemu

I nearly forgot to mention this… But a friend had some issues with an ancient 486 box running Xenix 286 and made a disk image of it. The box finally died, and he lost his copy with some disk accident (double trouble!) but he did send me a copy to see if it’d work under Qemu… At the time it didn’t.

So while I was transferring his disk image back to him, and looking around on ebay for a 286 board, I figured I’d try Qemu 0.14 to see how badly it failed…

xenix 2.3.2 286 on Qemu 0.14

And…

xenix 2.3.2 286 on Qemu 0.14 pt2

It worked!

I can’t say I’ve thoughtfully tested it, but it seems pretty workable.. I have no idea about what editions work, and which do not… I have no idea if this version knows it’s on a 386 and uses a 386 friendly method to switch to protected mode, or what.. Then again it being Xenix, it won’t need to constantly pop between real & protected modes, unlike, say Windows 3.0 / windows 3.1 or OS/2 1.x ..

PCEm

So looking around for other IBM PC emulators, I came across this one, PCEm. Now what’s really cool about this one is the old models it can emulate, including the IBM XT, the IBM AT, and it can even run the AMI BIOS for a 286, 386 and 486!

PCem 486
PCem 486

So not only can it run the BIOS but some ‘fun’ stuff like Windows 3.0 & 3.1 in standard mode, (386 enhanced is busted.. )

Setting up Windows 3.1 on EGA
Setting up Windows 3.1 on EGA

I find the 486SX mode works the best… And naturally fastest as it’s cycle accurate emulation. An interesting mode is the IBM 386, which appears to be the IBM AT’s BIOS patched to run on a 386 CPU.

PCem MSD report
PCem MSD report

What is cool though, is the 386 protected mode is complete enough for DOS4G/W executables to run…

Loading DooM!
Loading DooM!

And yes if your CPU is set to low enough Mhz it will take a minute or two to load as it did back in the day…

PCem running DooM
PCem running DooM

And away we go! I should add this is Doom 1.1 shareware, which I did manage to get the sound working on OS/2 2.1, and it’s great to hear that PCEm’s soundblaster emulation works great!

For DOS games, this emulator really has a wide range of machines, and with the actual BIOS it sure gives the original ‘experience’.

*NOTE you’ll need disk images, and lots of them… or some scheme to mount the raw disk image. Also the UI is touchy I’ve already lost one disk to it….

MS-DOS Player

Since the last time I reviewed it, the MS-DOS Player, by Takeda Toshiya has come a long way!. He’s fleshed out more of the MS-DOS emulation, and updated the CPU core.

I’ve now been able to run the Microsoft C 5.1 compiler under Windows 7:

MS-DOS Player running Microsoft C 5.1
MS-DOS Player running Microsoft C 5.1

Check it out!

The MS-DOS Player is similar in nature to DOSBox, except that it’s not interactive, but rather built for CLI batch based operation. The MS-DOS Player seems to have some 80286 capabilities, but it’s BIOS/DOS emulation doesn’t seem to have the protected mode interface to allow dos extenders to work.

It’s certainly great for people that still have ANCIENT cli based programs that you’d want to call & capture their output. This is a life saver for some of us that still rely on dbaseIII & some ancient i8085 micro controller.