[net.micro.pc] DOS 2.1 Speedup Patch

hgm@lanl-a.UUCP (05/20/84)

I had posted a news article earlier requesting assistance from
anyone who knew the floppy disk driver well enough to design
an appropriate patch. I believe I have found the information
needed, at least it seems to do the job for me. For those who
wish to experiment with their systems (not recommended unless
you have an adventurous spirit and are willing to suffer the
consequences, or feel confident about what you are doing) here is
what I believe is the situation:

The diskette parameter table is pointed to by memory location 0:78 (hex).
(Hex 78 is interrupt 30 that is the pointer to the table.)

To find the table address use debug:

A> debug
-d 0:78

The first two bytes displayed are the low and high order bytes respectively
of the address of the disk parameter table (param_addr).
The next two bytes displayed are the low and high order bytes respectively
of the segment address of the disk parameter table (seg_addr).
You can continue with debug to see the table being sure you enter
the high order byte first, followed by the low order byte in each
address specification:

-d seg_addr:param_addr

(In my case the address is "-d 0:0522".)

The first eleven (decimal) bytes displayed are the disk parameter table.
The tenth (decimal) byte is the head settle time and is hex 0f on my system.
Writing a program to change that byte to 0 didn't help, because
every time I accessed the floppy drives, it got changed back to hex
0f.

The problem appears to be that ibmbio.com replaces the entry in the table
on each access of the floppies. I found where this was done by
"unhiding" ibmbio.com and unassembling it with debug.
There is code there that moves an immediate hex 0f into the table
each time. To find the hex 0f that way is a painful procedure, but IF every
current DOS 2.1 ibmbio.com is the same and is physically in the same
place on the boot floppy as my system, the following simple procedure
will replace that immediate hex 0f in ibmbios.com with 0.  Then
every time you access the floppies, 0 will get written into the
table instead of hex 0f. Once this patch is installed, you may verify
its operation with debug by looking at the disk parameter table.

The procedure: (assuming your boot floppy is in drive A)

A> debug
-l 0 0 f 1
-e 77
xxxx:0077  0F.

"xxxx" will be the local segment address in memory, its value is not important,
but the "0F." is. If "0F" is not shown, do not write to your
floppy, as the head settle constant in your ibmbio.com is in a different
place than mine.
After the above 0F. enter 0 and carriage return.
Then:

-w 0 0 f 1
-q

This WILL MODIFY your boot floppy.

Reboot and look at the disk parameter table to make sure the 10th
entry is now zero.

Any modifications you do to your floppies, you do at your own risk.
I am providing this information because it appears to work for me, and
because there have been only a few sketchy items about this on the net.
I would recommend that you make a duplicate of your boot floppy to do this
modification on to make sure it works for you before modifying your
working boot floppy.