I'm suffering from TL;DR disease this morning, so I didn't have the inclination to follow all of the links cited in the discussion, so my apology is presented in advance.
However, there *was* another way to handle large drives in earlier DOS before 4.0. It was far from satisfactory, because it broke a lot of utilities. The basic scheme was to insert a "layer" in-between the PC Int 13H services and DOS and block I/O transactions up into larger virtual sectors. There was nothing sacred about a hard drive sector being 512 bytes; indeed, the PC98 versions of MS-DOS use 1024 byte sectors on their floppies. So, for example, if you were limited by 16-bit relative sector addresses to 33MB (calling 1MB = 1,000,000 bytes), you could block 2 512-byte physical sectors up into a single "virtual" sector of 1024 bytes and extend the reach of DOS to 65 MB. Make it larger, say, 2048 bytes and you get 134MB. As I said, this came at a cost of memory (you need buffers for these bigger sectors) and a lot of utilities that assumed a 512 byte sector, but as a desperate dodge, it worked surprisingly well. There was also a slight performance penalty, as most MFM hard drives there used 17 sectors per track--or 25 if they were RLL, so there was the awkward problem of a write possibly crossing a cylinder boundary. --Chuck