> I've tried changing the fifth case to 2 heads, 80 tracks and 72 sectors... But it resulted in an I/O Error.
This happens because the BIOS (int 13) CHS read function encodes the sector number as a 6-bit value. (IIRC it's also 1-indexed, just to add insult to injury.) If you change the geometry to 2head/80[+]track/60sector, it works on everything I had on hand for testing half a decade ago.
+: Or more; it should work with up to 1024 tracks.