Вы ничего не упускаете.
Процессор 8088 (тот, который использовался в оригинальном IBM PC) определил только исключения 0, 1, 2, 3 и 4.
Таким образом, IBM использовала от 0x8 до 0xF для аппаратных обработчиков прерываний и от 0x10 и выше для подпрограмм BIOS. По какой-то причине IBM проигнорировала тот факт, что Intel очень четко зарезервировала числа от 0x5 до 0x1F для будущих исключений процессора.
С течением времени требовалось больше исключений, и Intel пошла дальше и назначила их. В большинстве случаев устаревшее программное обеспечение не вызывало эти исключения в любом случае, в то время как более новые операционные системы (работающие в защищенном режиме) могли назначать разные номера, чтобы не конфликтовать с исключениями процессора.
Было добавлено много хаков в старое программное обеспечение, чтобы получить возможность использовать новые функции процессора, не нарушая слишком большую совместимость. Хотя я не уверен, я подозреваю, что, возможно, более новые BIOS могли попытаться определить, был ли INT10 вызван программным прерыванием или сопроцессором в их обработчике INT10.
К вашему сведению, из руководства по программированию 386:
Вектор ошибок сопроцессора для прерывания 16. Любая система 80386 с сопроцессором должна использовать вектор прерывания 16 для исключения ошибки сопроцессора. Если система 8086/8088 использует другой вектор для прерывания 8087, оба вектора должны указывать на обработчик исключений ошибки сопроцессора.