liam_on_linux: (Default)
Interested in running DOS programs on 64-bit Windows (or x86 macOS or Linux)? Would you like to run classic DOS applications such as WordPerfect, natively and without emulation on a modern OS? Would you like to get an MS-DOS prompt back under Windows 10 on AMD64?

I found a copy of the IBM PC DOS 2000 VM from Connectix VirtualPC for Mac, and converted it into a format that VirtualBox can open and run.


This was bundled for free with Connectix VirtualPC. VirtualPC is now owned by Microsoft and is a free download.

Old versions are out there for free download, e.g. the Mac version 4.

Just the PC DOS 2000 disk image, converted to VirtualBox VDI format, compressed in Zip format, is here. It's about 10MB.

Note: this is the complete, unmodified Connectix VirtualPC DOS image. It contains DOS integration tools for VirtualPC which do not work with VirtualBox. Unfortunately, VirtualBox does not offer guest additions for DOS. You will see some minor errors as it boots due to this. How to fix them is below.

If you actually want to try this, here are a few things you will need to know.

This is PC DOS 2000, AKA PC DOS 7.01. It's PC-DOS 7 plus bugfixes and
Y2K compatibility. It is not FAT32-capable: for that, you need PC DOS 7.1. Here is how to get and install that – it too is a free download. This VHD is the ideal basis for building a PC DOS 7.1 VM and that is why I created it.

PC DOS 7 is from the same code-base as MS-DOS 6.22, but with updates. It has IBM's E editor instead of the Microsoft full-screen editor, and IBM's Rexx programming language instead of QBASIC. It does not support DoubleSpace or DriveSpace disk compression. It does include IBM's licensed-in antivirus and backup tools, but to be honest I have not investigated these. It is installed on a 2GB FAT16 partition which is the single primary active partition on the virtual hard disk, just as Connectix shipped it.

PC DOS 2000 does support power-management, but it is not enabled by default. Without it, this means that the VM will take (and waste) 100% CPU. (Unlike MS-DOS 6.22, PC DOS also has native PCMCIA card
support, but that is no use in a VM – however, it may be helpful if you want an OS for a very old laptop.) To enable power management, you should add a line to the CONFIG.SYS file that says:

device=c:\dos\power.exe

That should be enough – afterwards, your DOS VM will only take the tiny amount of CPU that it needs.
DOS needs only 32MB of RAM and will run fine in 1MB. Yes, one megabyte, not one gigabyte.

You might also want to remove the AUTOEXEC.BAT line that references a FSHARE program in the CNTX directory, as that won't work under VirtualBox. Type the following:

e autoexec.bat

Look for the line that says:

C:\CNTX\FSHARE.EXE

Insert the word REM at the beginning of the line, so it says:

REM C:\CNTX\FSHARE.EXE

Press F2 to save the file. Press F3 to exit. Reboot the VM with [Host]+[R].

PC DOS 2000 was the bundled demo virtual machine with Connectix's VirtualPC. VirtualPC is, for now, obsolete – it does not work correctly under any version of Windows after Win7. Its last hurrah was as the basis for the XP Mode feature in Win7, which did not work on Windows 8 (although there is an easy fix to run it under Win8 or 8.1) or at all under Windows 10.

(I say "obsolete for now" as the original purpose of VirtualPC was as a way to run x86 DOS and Windows on PowerMacs, which did not have x86 processors and could not natively run x86 binaries. Now that Apple is transitioning to processors with the ARM instruction set, newer Macs can again not natively run x86 binaries. Yes, there is a built-in emulator, but Rosetta 2 will not work well on a hypervisor. So, there is once again an opening in the market
for a PC emulator for Macs, if Microsoft chose to resurrect the application. I personally would like to see that – VirtualPC was a good tool and the easiest, least-complicated way to run guest OSes on top of those it ran on, simpler to use than VMware or VirtualBox.)

Yes, this does mean that there is a legal, activated copy of Windows XP Professional for free download that you can run under Win7/8/8.1. And yes, you can extract it and run it under VirtualBox if you wish. I wrote an article for the Register describing how to do that. The snag is that the activation only works for a VirtualPC VM and it will fail on any other hypervisor. You will need a license key or to crack this ancient, obsolete version of Windows. Obviously I cannot help you with that. None of this is needed for PC DOS: it has no activation, copy protection or anything like it.

Microsoft acquired Connectix in 2003 and VirtualPC provided the basis for Microsoft Hyper-V (just as QEMU provides the basis for KVM on Linux) – file formats, management tools and so on. In theory, VirtualBox can attach a Hyper-V virtual hard disk to a VirtualBox VM and boot from it, but in my testing, this did not work with this ~20-year-old Apple VirtualPC file. I had to use command-line tools to convert it to VMware format, and then from VMware format to native VirtualBox format. Apart from testing, that is all I have done.

For my own use, I have of course slightly tweaked and updated the VM. I have configured memory management, added a few useful tools from from a WinME boot diskette:

  • the MS IDE CD device driver

  • the MS mouse driver

  • the MS full-screen editor

  • the MS SCANDISK disk-checking tool

... and a few more, simply because I'm more familiar with them. I've disabled the Connectix guest additions but I have not replaced them – I run it under Linux, where I can just mount the disk image to get files on or off it. I also have a modernized version with the FAT32-capable PC DOS 7.1.

If you are interested in these changes, please leave a comment on the blog and I will help you reproduce them for yourself. Please also let me know of any errors, corrections, additional info or any help you want with getting this working.

You can log in to LiveJournal to comment with any OpenID, including Facebook, Twitter or Google accounts.


I emphasize that this is an unmodified disk image. I have not in any way altered the contents of the VM image, just converted it from one format to another. These files remain the property of their original copyright holders.
liam_on_linux: (Default)
Commodore's Jack Tramiel got a very sweet deal from Microsoft for MS BASIC, as used in CBM's PET, once of the first integrated microcomputers. The company didn't even pay royalties. The result is that CBM used pretty much the same BASIC in the PET, VIC-20 and C64. It got trivial adjustments for the hardware, but bear in mind: the PET had no graphics, no colour, and only a beep; the VIC-20 had (poor) graphics and sound, and the C64 had quite decent graphics and sound.

So the BASIC was poor for the VIC-20 and positively lousy on the C64. There were no commands to set colours, draw or load or save graphics, play music, assemble sound effects, nothing.

I.e. in effect the same BASIC interpreter got worse and worse with each successive generation of machines, ending up positively terrible on the C64. You had to use PEEKs and POKEs to use any of the machine's facilities.

AIUI, CBM didn't want to pay MS for a newer, improved BASIC interpreter. It thought, with some justice, that the main uses of the VIC-20 and C-64 were games machines, using 3rd party games written in assembly language for speed, and so the BASIC was a reasonable saving: a corner it could afford to cut.

The C64 also had a very expensive floppy disk drive (with its own onboard 6502 derivative, ROM & RAM) but a serial interface to the computer, so it was both dog-slow and very pricey.

This opened up opportunities for competition, at least outside the US home market. It led to machines like (to pick 2 extremes):
• the Sinclair ZX Spectrum, which was cheaper & had a crappy keyboard, no joystick ports, etc., but whose BASIC included graphics and sound commands.
• the Acorn BBC Micro, which was expensive (like the C64 at launch), but included a superb basic (named procedures with local variables, allowing recursion; if/then/else, while...wend, repeat/until etc., and inline assembly code), multiple interfaces (printer, floppy drive, analogue joysticks, 1nd CPU, programmable parallel expansion bus, etc.)

All because CBM cheaped out and used a late-1970s MS BASIC in an early-1980s machine with, for the time, quite high-end graphics and sound.

The C64 sold some 17 million units, so a lot of '80s kids knew nothing else and thought the crappy BASIC was normal. Although it was one of the worst BASICs of its day, it's even been reimplemented as FOSS now! The worst BASIC ever lives on, while far finer versions such as Beta BASIC or QL SuperBASIC languish in obscurity.

It is also largely responsible, all on its own, for a lot of the bad reputation that BASIC has to this day, which in turn was in part responsible for the industry's move away from minis programmed in BASIC (DEC, Alpha Micro, etc.) and towards *nix programmed in C, and *nix rivals such as OS/2 and Windows, also programmed in C.

Which is what has now landed us with an industry centred around huge, unmaintainable, insecure OSes composed of tens of millions of lines of unsafe C (& C derivatives), daily and weekly mandatory updates in the order of hundreds of megabytes, and a thriving industry centred around keeping obsolete versions of these vast monolithic OSes (which nobody fully understands any more) maintained and patched for 5, 10, even 15 or so years after release.

Which is the business I work in.

Yay.

It sounds ridiculous but I seriously propose that much of this is because the #1 home computer vendor in the Western world kept using a cheap and nasty BASIC for nearly a decade after its sell-by date.

CBM had no real idea what it was doing. It sold lots of PETs, then lots more VIC-20s, then literally millions of C64s, without ever improving the onboard software to match the hardware.

So what did it do next? A very expensive portable version, for all the businesspeople who needed a luggable home gaming computer.

Then it tried to sell incompatible successor machines, which failed -- the Commodore 16 and Plus 4.

Better BASIC, bundled ROM business apps -- why?! -- but not superior replacements for its best-selling line. Both flopped horribly.

This showed that CBM apparently still had no real clue why the C64 was a massive hit, or who was buying it, or why.

Later it offered the C128, which had multiple operating modes, including a much better BASIC and an 80-column display, but also an entire incompatible 2nd processor -- a Z80 so it could run CP/M. This being the successor model to the early-'80s home computer used by millions of children to play video games. They really did not want, need or care about CP/M of all things.

This sold a decent 5 million units, showing how desperate C64 owners were for a compatible successor.

(Commodore people often call this the last new 8-bit home computer -- e.g. its lead designer Bil Herd -- which of course it wasn't. The Apple ][GS was in some ways more radical -- its 16-bit enhanced 6502, the 64C816, was more use than the C128's 2 incompatible 8-bit chips, for a start -- and came out the following year. Arguably a 16-bit machine, though, even if it was designed to run 8-bit software .

But then there was the UK SAM Coupé, a much-enhanced ZX Spectrum clone with a Z80, released 4 years later in 1989. Amstrad's PcW 16, again a Z80 machine with an SSD and a GUI OS, came out in 1995.)

There was nearly another, incompatible of course, successor model later still, the C65.

That would have been a worthy successor, but by then, CBM had bought the Amiga and wasn't interested any more -- and wisely, I think, didn't want to compete with itself.

To be fair, it's not entirely obvious what CBM should have done to enhance the C64 without encroaching too much into the Amiga's market. A better CPU, such as the SuperCPU, a small graphics upgrade as in the C128, and an optional 3.5" disk drive would have been enough, really. The GEOS OS was available and well-liked.

GEOS was later ported to the x86, as used in the HP OmniGo 100 -- I have one somewhere -- and later became GeoWorks Ensemble, which tried to compete with MS Windows. PC GEOS is still alive and is now, remarkably, FOSS. I hope it gets a bit of a renaissance -- I am planning to try it on my test Open DR-DOS and IBM PC-DOS 7.1 systems. I might even get round to building a live USB image for people to try out. 
liam_on_linux: (Default)
PC DOS 7.1 is the last version of the original Microsoft product line that started with MS-DOS 1 (itself now open source.)

I mentioned this in my post about DR-DOS.

PC DOS 7.1 is often confused with 7.01, also known as PC DOS 2000. PC DOS 7.01 is a modest bug-fix for MS-DOS 6.22, but with a bunch of Microsoft tools removed and replaced with IBM equivalents – so it has IBM's E editor instead of EDIT.EXE, Rexx instead of QBASIC, IBM antivirus and so on.

PC DOS version 7.1 is a different beast. It's based off the same core as the embedded DOS in Windows 95B (OSR2) and Windows 98. It supports FAT32, including the ability to boot from them. It supports LBA hard disks, meaning it can handle volumes of over 8GB. It fixes a lot of bugs in the DOS codebase.

Here's some more information (in Spanish but Google translates it fine.)

The primary author, Vernon Brooks, has a site which details the development history and itemises his fixes.

Here is how to get PC DOS 7.1, which IBM makes available as a free download. You may have to hunt -- the ServerGuide toolkit is quite old now.

Here is at least one method to install it in VirtualBox.

Note, PC DOS 7.1 is not a complete OS. Unfortunately, in this way it resembles DR's versions of DR-DOS 7.04 and later, which consists only of boot files embedded into the startup diskettes for products such as Seagate Disk Manager and Powerquest PartitionMagic. For 7.1, IBM only updated the kernel and some core tools.

To make a complete OS from this, you need a full copy of PC DOS 2000, then replace some of its files with the updated ones from the SGTK, as detailed above. I am reluctant to link to sources for this, as it is still copyright code. If you can't find it, ask me.

I have done this and can confirm that it works and works well. I have it running inside VirtualBox, and booting natively on the bare metal of a Lenovo Thinkpad X200. It is somehow aesthetically pleasing to have IBM PC DOS running natively on modern hardware that still has IBM branding. I can also say that classic DOS word-processors such as MS Word 6 and WordPerfect 6 run both very well and very quickly on it.
liam_on_linux: (Default)
While I was off work with a dislocated shoulder, I spent some time dabbling with DR-DOS. It's an OS I've long been fond of. What I was aiming to create were images that could make a bootable DR-DOS USB key and VM image.

The OS that made the PC great was MS-DOS, an adaptation of SCP QDOS, which broadly speaking was reverse-engineered from Digital Research's CP/M (itself now FOSS). Much later, DR responded with DR-DOS -- a cut-down version of Concurrent CP/M-86, without the multitasking but with near-perfect MS-DOS compatibility.

The first version was 3.41, basically a response to MS-DOS 3.3. DR-DOS added large disk support -- i.e. multiple FAT16 partitions of >32MB. MS-DOS 4 added little more except a graphical shell, DOSShell. DR-DOS 5 added support for mapping upper memory blocks and loading TSRs into them, and a graphical shell, ViewMax, a cut-down version of PC GEM. MS responded with much the same in MS-DOS 5. DR responded with DR-DOS 6, which bundled disk compression, and ViewMax 2. MS DOS 6 bundled disk compression too. Novell bought DR and responded with Novell DOS 7, which added peer-to-peer networking via Netware Lite -- but ViewMax 3 wasn't ready and was dropped. Most people were using Windows 3 on top of it by then anyway.

Microsoft's response was Windows for Workgroups, with peer-to-peer networking built into Windows, and then Windows 95, which built-in MS-DOS 7 too. And that was about it for DR-DOS. Novell spun its DOS and Linux division off as Caldera, which released DR-DOS 7.01 as open source. It then changed its mind and closed-sourced DR DOS 7.02 and the handful of later versions. The DOS business was spun off again as Lineo, which made subsequent releases, went broke and sold off DR-DOS again. It made it to DR DOS 8, but that was partly built from FreeDOS source code and was later withdrawn when this was demonstrated.

The history of DR-DOS after 7.02 is confused and confusing. Most of the Novell sources were lost, along with updates and fixes Novell made. Backups of some were later rediscovered  and the fixes incorporated, and it gained FAT32 and LBA support, but it's not freeware.

So DR-DOS 7.01 remained the latest free version. The OSS licence only covered the kernel and some core files. To build the FOSS version, you need the rest of Novell OpenDOS 7.

A heroic programmer called Udo Kuhnt picked up development of the FOSS DR-DOS 7.01 as the DR-DOS Enhancement Project. Its site is long gone now, although there are plenty of mentions of it. He released versions through to 7.01-08. Unfortunately, that is an incomplete work-in-progress version. But both it and the previous releases, which can be found for download in various places, don't work.

So I fixed it!

I started with the floppy disk image from ArchiveOS.org. First, it's the wrong size. VirtualBox can't mount it. VMware can.

I truncated it to exactly 2880 sectors using the advice from ``jleg094'' here. VBox mounts that. But it won't boot, nor in VMware -- it just displays 2 dots and freezes. Embarrassingly late in the troubleshooting process, I found why.

Foolishly, I didn't think to check what was on the image. I tried mounting it on a pre-booted VM and looked, and it's totally blank. There's nothing in the image at all.

So, I mounted the empty image file as a loop device under Linux, copied the boot files in there, followed by the rest of the files in the distro archive. Lo, it worked! It booted my VM just fine, and I had a DR DOS VM running 7.01-08. However, the older DR-DOS SYS command couldn't make a bootable hard disk from this. After further fiddling, I found how to fix that, too.

But I've decided for now to focus on the actual complete version 7.01-07.

I took the downloads for Enhanced DR-DOS 7.01-6 and 7.01-7, trimmed the boot disk image to work with Virtualbox, added the actual files to make the boot images bootable, and also added in the other updated commands -- SYS.COM, XCOPY, TASKMGR, SHARE, and their README files etc.

I have re-zipped them and put them on Dropbox.

Here are the links:
Please mirror these elsewhere.

To use them, the easiest way is to get a copy of DR-DOS 7.01, e.g. from BTTR Software or WinWorldPC. Install it in a VM. Reboot and check it all works.

Then, boot from one of my boot floppy images, SYS the hard disk, and copy the other files into C:\DOS or whatever you called the DOS directory.

Reboot and you should be in business.

To forestall some FAQs... A few people have asked me why I am bothering, since FreeDOS is out there and works fine. (I have contributed a few fixes to FreeDOS and my name was in the credits of at least one version that I have seen, which came as a surprise.) That's true and I do not mean to decry or lessen the work of the FreeDOS Project. However, for me, it's just a bit too different from old-style MS- or DR-DOS. Commands don't do what I expect, or the output is weirdly different. Config files are not named as they usually are. I'm told it's pretty compatible, all the same.

I just happen to prefer DR-DOS. Caldera is dead, Lineo is dead, and oddly, I now work for Novell. DeviceLogics owns the later versions of DR-DOS but it is no longer trading and as far as I know the project is no longer available for purchase -- although the rights to the entire line were up for sale.

Thus I am very much hoping not to be prosecuted for this. I have not added anything to the code, merely made the existing code usable.

My future plans include directly-downloadable VM and USB images. I have 7.01-07 working, complete with ViewMax 2, TaskManager multitasking in both text and GUI modes, mouse support, FAT32 and LBA support. I am hoping to add NTFS and USB support as well, if there seems to be any interest.

The reason I got interested in this was trying to get actual IBM PC DOS 7.1 working on my Thinkpad. This is not the same thing as the widely-available PC-DOS 7.01! IBM continued development of DOS after Microsoft lost interest. PC-DOS 7.01 included Y2K fixes. PC-DOS 7.1 also includes FAT32 and LBA support, many long-standing bugs in MS-DOS were fixed, and IBM offers it for free download as part of the Server Guide Scripting Toolkit. However, IBM does not permit re-distribution, and therefore I can't share the complete, fully-working version that I have built for my own use.

July 2025

S M T W T F S
  1234 5
6789101112
13141516171819
20212223242526
2728293031  

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 27th, 2025 04:11 am
Powered by Dreamwidth Studios