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.