• Please review our updated Terms and Rules here

MS-DOS 3.3 bootsector: patching for 1.44 MB drive on XT?

usotsuki

Experienced Member
Joined
Nov 30, 2010
Messages
86
It seems fairly well known DR DOS is able to boot off a 1.44 MB floppy drive installed in an XT.

I'm trying to find the logic to how DR DOS does it, so I can modify the MS-DOS 3.3 bootloader to do this - it looks like that should be the only place where this matters. (Mike Chambers and I made an attempt to get it to work by fudging some values in RAM. He has such a system to test on.) The goal would be, as I find MS-DOS 3.3 the most ideal for an 8088 box with no hard drive, to allow it to be booted directly from a 1.44 MB disk on such a computer.

ETA:

Code added before the first STI.
Code:
          push      ax
          push      cx
          push      si
          push      di
	     mov       ax, ttlsec          ; are we by chance...
	     cmp       ax, 2880            ; a 1.44 MB floppy?
	     jne       not144              ; no, don't worry about it.
	     
	     xor       ah, ah
          mov       al, patcon          ; how much to patch?
          push      ax
          pop       si
          mov       ax, 07C2Ah          ; location of patch
          push      ax
          pop       di
          xor       ch, ch
          mov       cl, patlen
          rep       movsb
          pop       di
          pop       si
          pop       cx
          pop       ax

not144:

Code added directly before the "Non-system disk" error (which I reduced in size):

Code:
patlen    db        23
patcon    db         01h, 0AFh,  02h,  25h,  02h,  12h,  1Bh, 0FFh
          db         6Ch, 0F6h,  01h,  08h, 0FAh,  21h,  00h,  00h
          db         00h,  02h,  00h,  7Ch,  16h,  13h, 0BBh
 
Last edited:
i know the part i wrote is right because i'm awesome like that it obv. must be patching the wrong data. which is mind-boggling to me. not sure what else it would want in there to work. maybe somebody smart here understands how DR-DOS pulls it off.

bit more info for the folks: the data usotsuki used to patch was determined by booting a proper 1.44 MB DOS 3.3 disk image in QEMU and checking out the data there in RAM after a successful boot.
 
Hmm.

I remember researching in Google around 2004 whether it was possible to merely _attach_ a 3.5" floppy drive to an IBM XT, and I had to desist as I found nothing conclusive, most people claimed the XT BIOS did not allow for such a hack.

However, I infer from this very thread that attaching a 3.5" floppy drive to an XT machine is possible, and that just booting DOS 3.3 from such drive is what does not work. Therefore, is the 3.5" floppy drive usable as B: once the system has booted up either from a 5.25" A: floppy drive or from a C: HD?

So, what's the state of the art regarding 3.5" floppy drives and XT machines?

Thanks.
 
I (and others) have said it before--you need a the proper controller if you're going to boot a DSHD floppy (either 3.5" or 5.25"). However, it's perfectly possible to boot a 3.5" DS2D (720K) on an XT using the native controller.
 
I (and others) have said it before--you need a the proper controller if you're going to boot a DSHD floppy (either 3.5" or 5.25"). However, it's perfectly possible to boot a 3.5" DS2D (720K) on an XT using the native controller.

It may be perfectly possible, but surely some black magic has to be part of the process, as I could not get my IBM XT to detect a 720 KB 3.5" floppy drive at all. Some special DIP switch combo? Some config.sys magic?
 
Does it at least detect enough to boot from it thinking it's 360K?

The CONFIG.SYS command "DRIVPARM=/D:0 /F:2" should tell DOS that the A: drive is 720K. (This is documented for DOS 4.00 and up; some OEM releases down to 3.20 have it, although IBM does not, nor does the stock MS-DOS 3.3 io.sys.)
 
The XT doesn't "detect" a drive per se. You set up a 3.5" drive as you would a 360K drive. Assuming that you've got your cabling right, it looks just like a 360K 5.25". And yes, after you're booted up, you can use DRIVPARM (or DRIVER.SYS if you don't mind a different drive letter) to say that it's a 720K drive.

I routinely do this on my XT (clones mostly) with no problem at all. You can perform a sector-by-sector copy of your 360K boot disk to a 720K to create a boot floppy.
 
Does it at least detect enough to boot from it thinking it's 360K?

The CONFIG.SYS command "DRIVPARM=/D:0 /F:2" should tell DOS that the A: drive is 720K. (This is documented for DOS 4.00 and up; some OEM releases down to 3.20 have it, although IBM does not, nor does the stock MS-DOS 3.3 io.sys.)

I'll have to try these tips you provide. I last tried in 2004 and I don't remember the details of exactly what I tried then, but surely I worked a couple of days to make it go and I could not.

The XT is at my parent's place, so I cannot relaunch the project right now, sadly. But I will bring that machine online, and with a 3.5" floppy, by all means.

By the way, my XT has a full-height 20 MB hard disk, and although it has worked always flawlessly, I'm going to research what are the possibilities or replacing it (someday it has to die) with an IDE hard disk or Compact Flash card, probably replacing also the hard-disk controller card, right?

Also, the power supply is big and noisy. What can be done to quite it?
 
i boot and run 1.44 MB disks with DR-DOS 7.03 in XT clones with nothing special other than a 16-bit multi-I/O card meant for an AT. they can access the entire disk. DR-DOS performs some voodoo by patching the int 1Eh vector, pointing it to it's own disk param table. an original XT floppy controller can't understand how to talk to one of those 1.44 MB drives, but the multi-I/O cards do.
 
It seems fairly well known DR DOS is able to boot off a 1.44 MB floppy drive installed in an XT.
(...)
The goal would be, as I find MS-DOS 3.3 the most ideal for an 8088 box with no hard drive, to allow it to be booted directly from a 1.44 MB disk on such a computer.

I can't quite get it: what's the goal and what's the problem ? ;)

Is the goal:
a. booting MS DOS 3.3 off a 1.44 MB disk on XT
b. booting MS DOS 3.3 off a 1.44 MB drive on XT

And the problem is:
a. XT doesn't recognize the drive (but it does - if it didn't, how could it boot DR DOS ?)
b. MS DOS 3.3 doesn't have a proper bootsector to boot off a 1,44MB disk (but it must since there are proper MS DOS 3.3 1,44MB disks, right ?)
c. DR DOS is able to boot off and use 1.44MB floppy disks on XT (and no other DOS can) so we'd like the 'most ideal' MS DOS 3.3 to become even 'more ideal' by becoming more like DR DOS ?
 
Last edited:
Michal, the issue here may be the controller. Note that Mike uses a later (AT-style) controller card that defaults to 500Kbps (1.44M) on reset and so manages to boot from 1.44M (DSHD) floppies.

My statement was that I use a stock XT controller and a 1.44M drive to boot DOS from 720K (DS2D) floppies (the controller does not have a variable data rate; it's hardwired at 250Kbps).

In fact, I can boot PC-DOS 1.1 from a 720K floppy (formatted to 160K) on an XT also. As far as an XT controller can see, there's no difference between a 360K 5.25" drive and a 720K or 1.44MB drive (set to media-sense of course).

There are a few late cost-reduced drives (Samsung?) that are not capable of 720K functioning, so that's another issue, as are "host sense" PS/2 style drives.
 
I almost get it.

It seems fairly well known DR DOS is able to boot off a 1.44 MB floppy drive installed in an XT.

I assume it's about DR DOS booting off a 1,44MB disk in an 1,44MB drive in an XT with an ISA FDD controller ?
And this controller doesn't have a ROM to tell the system how it should treat thee 1,44MB drive, so the system treats it like a 360K drive, but DR DOS 7 manages to boot anyway (and MS DOS 3.3 doesn't) ?

Am I close ?

EDIT: Oh and another thing: wasn't DR DOS 7 open sourced at a time (and become OpenDOS) ? So the magic could be somewhere in these sources...
 
Last edited:
If you don't have a BIOS ROM for the add-in controller, it depends what mode the controller is in after reset. On a number of chips, this is the 500Kbps data rate, so 1.44M floppies will read just fine at boot (and they're the only 3.5" ones that will--1.2MB 5.25" will also read okay, having the same data rate.

Often, that's just enough so that a device driver can be loaded.

Other chips reset to the 250Kbps data rate and so can read only 720K/360K floppies without BIOS assistance at bootup.
 
I almost get it.


I assume it's about DR DOS booting off a 1,44MB disk in an 1,44MB drive in an XT with an ISA FDD controller ?
And this controller doesn't have a ROM to tell the system how it should treat thee 1,44MB drive, so the system treats it like a 360K drive, but DR DOS 7 manages to boot anyway (and MS DOS 3.3 doesn't) ?

Am I close ?

EDIT: Oh and another thing: wasn't DR DOS 7 open sourced at a time (and become OpenDOS) ? So the magic could be somewhere in these sources...

As far as I can tell from talking with Mike, he's using a regular 16-bit multi-i/o card, with no firmware, in an XT-class machine, and it works for everything but hard drives.

As for DR DOS...yeah, I got the 7.01 kernel sources. I don't think the bootsector is included though...

ETA:

If you don't have a BIOS ROM for the add-in controller, it depends what mode the controller is in after reset. On a number of chips, this is the 500Kbps data rate, so 1.44M floppies will read just fine at boot (and they're the only 3.5" ones that will--1.2MB 5.25" will also read okay, having the same data rate.

Often, that's just enough so that a device driver can be loaded.

Other chips reset to the 250Kbps data rate and so can read only 720K/360K floppies without BIOS assistance at bootup.

Mike told me his XT managed to load the bootsector and showed my altered error message from the bootsector.
 
Last edited:
Mike told me his XT managed to load the bootsector and showed my altered error message from the bootsector.

Right :) as for the boot loaders, I'm looking at the commented source of MS DOS 3.3 boot loader this very moment.
As for DR DOS - I don't know if it's in the released sources (didn't bother to check), but it definately should be:

" Q: What parts will be available in source format? When?

A: The first parts to be released will be the basic OS, which is the boot loader, IBMBIO.COM, IBMDOS.COM, and COMMAND.COM
"

from http://www.delorie.com/opendos/faq/

But I guess you guys prefer hacking anyway ;)
 
Back
Top