• Please review our updated Terms and Rules here

PC DOS 1.00 on modern PCs

Marrr

Experienced Member
Joined
Jan 1, 2009
Messages
198
Location
Poland
So I wondered what would happen if I tried to run the oldest PC operating system on modern machines...
...and guess what: The IBM Personal Computer DOS Version 1.00 does indeed work on stuff like Athlon, Core 2 Duo, or 2 x Quad Core Xeon.

Getting it to work was actually pretty easy: the only problem is that DOS 1.00 only supports 160 KB floppies, and modern comps usually lack FDDs at all. Yes, they have CD/DVD/BD, but the El Torito Bootable CD Specification doesn't support 160 KB images. Solution: use M.B.Brutman's DskImage to convert the image to 1440 KB, and the rest is obvious...

A few interesting things/questions:
- DOS 1.00 at boot asks for date, but it doesn't ask for time, instead it somehow gets it from the RTC, so "time" command displays it correctly. How it's possible that a system from 1981 knows how to use AT-style RTC?
- chkdsk works, but also displays some diskette write error. I wonder why it tries to write something...
- basic/basica of course don't work. I know they require IBM's ROM, and I wonder if they would work on modern IBMs? Too bad I have no such a machine around to check...

Oh, I've also found some very good use for that DOS 1.00 CD - to tease those Macintosh fetishists who still play that "Mac vs. PC" thing and have problems getting the fact that modern Macs are actually PCs, and have more in common with IBM 5150 than with 68k or ppc Macs... :mrgreen:
 
If you 'cold boot' the machine, will DOS 1.00 see the correct time? My bet is that it had the correct time because the correct time was left in memory after you did a warm boot. If the machine is turned off and then back on that should not happen.


Mike
 
lol wow Marrr. That's actually pretty damn impressive lol. I wonder sometimes about the compatibility of newer processors removing the 8086 generic code but that's pretty neat. You should take a video of setting it up :)

basica should work I think because it dumps the basic rom to some file doesn't it? Maybe I'm just thinking gw-basic. Are there any other apps you can run under 1.x? Some game or something neat to demo it off?
 
Yup, I've booted DOS 1.1 by simply copying (without reformatting) the image onto a 3.5" 720K diskette.

I don't know why it should surprise anyone, as all access to the hardware on PC DOS 1.x is done through BIOS calls--and the support for the basic functionality has been the same since the 5150 first came out. Even booting CP/M 86 on a modern system is possible. If anything, PC-DOS 1.x is more tolerant of non-strictly conforming hardware than later versions.

The time is obtained from calling the INT 1AH time-of-day service. If the BIOS gets it right, then so will PC-DOS.

But if you want to use BASICA, you'd better have the BASIC ROMs installed in your system.
 
If you 'cold boot' the machine, will DOS 1.00 see the correct time? My bet is that it had the correct time because the correct time was left in memory after you did a warm boot. If the machine is turned off and then back on that should not happen.
Yes, just tried it, from total power off, and it still displays correct time.
BTW: there's no more cooperation between this DOS and RTC, setting date and time with appropriate commands doesn't affect the RTC.
Uhm, perhaps this DOS is somehow modified? I can't be sure if it's the original unmodified PC DOS 1.00 from 1981, but it looks like one: all files are dated July or August 1981...
 
Yes, just tried it, from total power off, and it still displays correct time.
BTW: there's no more cooperation between this DOS and RTC, setting date and time with appropriate commands doesn't affect the RTC.
Uhm, perhaps this DOS is somehow modified? I can't be sure if it's the original unmodified PC DOS 1.00 from 1981, but it looks like one: all files are dated July or August 1981...

Strange... Try to run the "TIME" command and see if it comes up. Maybe if you try to boot the CD in an older computer.
 
The time is obtained from calling the INT 1AH time-of-day service. If the BIOS gets it right, then so will PC-DOS.
OK, thanks. But it's still interesting this BIOS function was used before it was actually useful. I guess they already planned including RTC back then...
But if you want to use BASICA, you'd better have the BASIC ROMs installed in your system.
OK, but what was the last PC with ROM BASIC?
If I remember correctly, PS/2 model 30 runs some version of BASICA that a generic XT clone can't...
 
Are there any other apps you can run under 1.x? Some game or something neat to demo it off?
Well, I tried VisiCalc from 1981, and it of course worked.
PC-Man from 1982 worked as well, but I think it's just a booter game ripped to .com file, so it doesn't actually use any DOS calls.
I tried to run some newer version of BASICA, one which doesn't require ROM BASIC, but no luck - "Incorrect DOS version".
Edit: Turbo Pascal 1.00A (1983) works fine.
 
Last edited:
Well, I tried VisiCalc from 1981, and it of course worked.
PC-Man from 1982 worked as well, but I think it's just a booter game ripped to .com file, so it doesn't actually use any DOS calls.

Actually, PC-Man (at least the copy I have) saves a high score file, so I would assume that uses the file control block functions to do so. Try 3-Demon. That's a DOS game and it definitely uses FCBs to save high score files.

I tried to run some newer version of BASICA, one which doesn't require ROM BASIC, but no luck - "Incorrect DOS version".

That was probably a DOS 2.x version that wouldn't work on 1.x anyway.

BASICA 1.x has some differences from later versions. Aside from using FCBs to save files, certain statements (particularly LINE and PAINT) work a bit differently.

All IBM machines made up to 1991 have the ROM BASIC. It was dropped when QBASIC was introduced with DOS 5.0.
 
OK, thanks. But it's still interesting this BIOS function was used before it was actually useful. I guess they already planned including RTC back then.

Actually, RTC was available for the 5150 from third sources. Look at any multifunction board, such as a Quadram Quadboard--there's an RTC on it. It simply hooks the INT 1A service.

OK, but what was the last PC with ROM BASIC?
If I remember correctly, PS/2 model 30 runs some version of BASICA that a generic XT clone can't...

I'm not certain how far it permeated, but ROM BASIC was definitely part of the PS/2 line. Clones usually used the OEM version of MS-DOS which came with GWBASIC, rather than IBM PC-DOS. Some clone vendors even created a duplicate BASICA.COM file that brought up GWBASIC.

A funny thing is that the inability of Compaq PCs to run GWBASIC persisted well into the P3 generation (and perhaps beyond--I haven't checked). If you want to run GWBASIC on a Compaq system (even one running Windows XP or 2K), you need to get Softpaq SP2517. Does anyone know if this was a deliberate trap on the part of Microsoft for Compaq machines?
 
Actually, RTC was available for the 5150 from third sources. Look at any multifunction board, such as a Quadram Quadboard--there's an RTC on it. It simply hooks the INT 1A service.

It was pretty obvious that IBM always intended for RTCs in the PC, as a clock was necessary for any serious machine.

I'm not certain how far it permeated, but ROM BASIC was definitely part of the PS/2 line. Clones usually used the OEM version of MS-DOS which came with GWBASIC, rather than IBM PC-DOS. Some clone vendors even created a duplicate BASICA.COM file that brought up GWBASIC.

As I said, all IBMs made through 1991 have the ROM BASIC. Some OEM DOSes have GWBASIC.EXE, and others have BASICA.EXE.

A funny thing is that the inability of Compaq PCs to run GWBASIC persisted well into the P3 generation (and perhaps beyond--I haven't checked).

So what you're saying is that it would only run the BASICA.EXE that came with Compaq versions of DOS?
 
So what you're saying is that it would only run the BASICA.EXE that came with Compaq versions of DOS?

I can't say without more investigating. But Compaq Deskpros of any vintage don't run GWBASIC without a Compaq-supplied patch. The interesting thing is that it doesn't patch GWBASIC, but must be run immediately before GWBASIC is run. Even more strange, it makes no difference if you're running MS-DOS or Windows XP.

I'll have to do a little more digging
 
A funny thing is that the inability of Compaq PCs to run GWBASIC persisted well into the P3 generation (and perhaps beyond--I haven't checked).
I just tried GW-BASIC 3.23 and QBasic 1.1 on a HP Compaq nc6320 (Core 2 Duo), and both worked fine, without that patch.
So it seems the problem is finally over...
 
I suspect that the problem is limited to Compaq Deskpros--but that's quite a range of systems.

I'll bet your BIOS has an HP, rather than a Compaq signature. I've used GWBASIC just fine on every HP machine that I've owned (which has been at least a half-dozen).
 
I can't say without more investigating. But Compaq Deskpros of any vintage don't run GWBASIC without a Compaq-supplied patch. The interesting thing is that it doesn't patch GWBASIC, but must be run immediately before GWBASIC is run. Even more strange, it makes no difference if you're running MS-DOS or Windows XP.

This is a wild guess, but my theory is that when the original Compaq Portable was developed, they made the BIOS check for BASICA.EXE and refuse to run anything else so that the user couldn't start IBM BASICA and lock the machine up (as there was no cassette BASIC on the Compaq). They probably left the check in the BIOS until recently.

I do in fact have a copy of Compaq BASICA 1.13 (the version that would have been included with the first Portables) somewhere in my hundreds of floppy disks. It's mostly equivalent to IBM BASICA 1.10, but the PAINT statement behaves like in later versions of BASIC (eg. not using the stack for area fills).
 
Just looked at the code for FIX50F and after checking for the "COMPAQ" BIOS signature, it tinkers with the area at 0050:0000. There's a byte there at 50:000F that indicates if BASIC was called from a shell to prevent nested invocation of BASIC. I think it's this byte that's the key. Odd that Compaq never did anything about it, unless that would have broken their own version of BASIC.
 
I'll bet your BIOS has an HP, rather than a Compaq signature.
You mean that string like twenty bytes before FFFFF? It's definitely "COMPAQ". Good old CheckIt 3.0 also recognizes this ROM BIOS as Compaq.
 
Yup, I've booted DOS 1.1 by simply copying (without reformatting) the image onto a 3.5" 720K diskette.

I didn't think you could do that. I assumed that you would have to format a 5.25" disk to 160k and then copy the image with a utility like Demonlord's IMG2DSK. WinImage won't work unless the disk has a parameter block, which excludes disks formatted with DOS 1.x and most booter games.

The time is obtained from calling the INT 1AH time-of-day service. If the BIOS gets it right, then so will PC-DOS.

DOS 1.00 is unique in that DATE and TIME are both separate files and not part of COMMAND.COM like in all later versions.

But if you want to use BASICA, you'd better have the BASIC ROMs installed in your system.

Reminds me, today I extracted BASICA from a DOS 1.10 image, since I was curious about the different behavior of some BASIC statements in version 1.x (didn't want to bother copying the whole image to a disk for one file). I did it all manually with DEBUG because as I said, WinImage can't read images without a parameter block.
 
Getting it to work was actually pretty easy: the only problem is that DOS 1.00 only supports 160 KB floppies, and modern comps usually lack FDDs at all. Yes, they have CD/DVD/BD, but the El Torito Bootable CD Specification doesn't support 160 KB images. Solution: use M.B.Brutman's DskImage to convert the image to 1440 KB, and the rest is obvious...

I know this is an old thread but I'm new to the board. How exactly did you accomplish this? I'm having difficulty trying this.
 
I didn't think you could do that. I assumed that you would have to format a 5.25" disk to 160k and then copy the image with a utility like Demonlord's IMG2DSK. WinImage won't work unless the disk has a parameter block, which excludes disks formatted with DOS 1.x and most booter games.

Reminds me that I never posted a followup. To do this, suppose that you have a vintage DOS system with A: as a 1.44MB and B: as a 5.25". Get a 720K (DS2D) blank floppy and COPYQM and run:

COPYQM SOURCE=B: A: BLIND SIDES=1

If you have Copy@M Plus, you can even create a self-extracting 720K image file.

Just tried it with my DOS 1.1 floppy. Boots up fine on an AM2 CPU system.
 
Back
Top