PreInternet01
a year ago
> The rest of the "Extended BIOS Parameter Block" looks like it isn't relevant data, like the volume label or the volume's serial number
No, that's the exact reason why OS/2 checks the OEM ID. The volume label was initially used to detect disk swaps (so that if an application has open files on disk 1, it does not destroy data on disk 2 by writes after the user replaces the floppy in the drive, which could not be detected in hardware until much later, and even then not unless you were using a Mac, basically).
Of course, the volume label is user-set (so duplicates are possible), and more often not set than meaningful in any case. So, DOS 3.3 added the (unique-at-format-time) volume serial number. Which was always all-zeroes (or garbage) on pre-3.3 disks, hence the need for the OEM ID check.
somat
a year ago
Does that mean it needs to seek to and from the volume label/volume info blocks for every single read or write?
It sounds like that would kill performance, at a time when you needed all the performance you could get. I suppose it could be amortized, something like only check the volume headers if it has been more than 10 seconds since the last read/write.
PreInternet01
a year ago
No, I'm pretty sure this check was only done when the (root) directory needed to be accessed, which was on the same track as the boot sector, so reading it (which was required for synchronization anyway) was free.
Glancing at https://github.com/microsoft/MS-DOS/blob/main/v4.0/src/BIOS/... seems to support this...
froh
a year ago
user name checks out ;-)
thanks for sharing this knowledge.