ID Number: Q36314
3.x 4.00
MS-DOS
Question:
When switching the disk drive from a 1.2-megabtye disk in a
1.2-megabyte drive to a 360K disk in a 1.2-megabyte drive and back
again, we are running into problems. After the media change,
subsequent disk I/O results in a MS-DOS "General Failure" error. Is
this a problem with MS-DOS? Under what conditions will this occur? Is
there a known fix?
Response:
MS-DOS file control block (FCB) or file-handle based I/O does not have
this problem. A program that uses handle or FCB-based I/O does not
need to be concerned with the disk media type.
However, an application that uses ROM BIOS interrupt 13H disk I/O
services needs to be concerned with the disk media type. If you use
these low-level disk I/O services, you should retry your I/O
operations. Normally, retrying enables your code to allow the ROM BIOS
to reset the media type. If the last access of a disk was as a 360K
disk, and then a 1.2-megabyte disk is inserted, your code will need to
retry the next low-level I/O operation while the ROM BIOS adjusts the
media type to a 1.2-megabyte disk in a 1.2-megabyte drive. (On some
systems, such as Compaq systems, this change is noticeable, since the
drive light changes from green to red when different media is inserted
in the drive.)
According to some OEM ROM BIOS technical reference manuals, when using
interrupt 13H, if you receive a disk error, you should reset the disk
controller and retry the operation. A specified number of retries
should be required on most I/O operations.
For more IBM (and 100-percent compatible) ROM BIOS information, refer
to the "IBM PS/2 and PC BIOS Interface Technical Reference," part
number 68X2260, available from IBM by calling (800) IBM-PCTB. Another
reference that contains similar material is the Microsoft Press book,
"Programmer's Quick Reference Series: IBM ROM BIOS," by Ray Duncan,
ISBN 1-55615-135-7. For OEM ROM BIOS extensions, refer to your OEM's
hardware and technical reference manuals.