Функция 42 - работа с данными, полученными по IRQ.
При возникновении IRQ система может считывать данные из указанных
ранее функцией 44 портов и записывать эти данные в буфер.
Подфункция 0 - чтение данных
Параметры:
- eax = 42 - номер функции
- bl = номер IRQ, 0..15
- bh = 0 - номер подфункции
- остальная часть регистра ebx должна быть обнулена
- ecx = указатель на буфер размером не менее 4000 байт
Возвращаемое значение: (ситуацию можно различить по значению eax)
- если поток не является владельцем IRQ
(или номер IRQ задан неверно): eax = -1
- если данных нет: eax = 0
- если всё в порядке и данные были:
eax = размер данных, прочитанных из буфера (в байтах)
Подфункция 1 - узнать размер данных в буфере
Параметры:
- eax = 42 - номер функции
- bl = номер IRQ, 0..15
- bh = 1 - номер подфункции
- остальная часть регистра ebx должна быть обнулена
Возвращаемое значение:
- если поток не является владельцем IRQ
(или номер IRQ задан неверно): eax = -1
- иначе eax = размер данных в буфере
Замечания:
- Предварительно поток должен зарезервировать для себя указанный IRQ
функцией 45.
- Размер буфера для данных - 4000 байт, при переполнении
"свежие" данные перестают записываться в буфер.