; DISKPORT.ASM .MODEL SMALL include msystem.mac .CODE ;--- посылаем байт из AH FDC --- func out_fdc,,,,public mov DX, 3F4h ; адрес порта регистра статуса repeat in AL, DX ; получаем значение test AL, 128 ; бит 7 установлен? until ; если нет, то снова проверяем inc DX ; указываем на регистр данных mov AL, AH ; передаваемое значение в AH out DX, AL ; посылаем значение endf ;--- получаем байт от FDC в AL --- func in_fdc,,,,public mov DX, 3F4h ; адрес порта регистра статуса repeat in AL, DX ; получаем значение test AL, 128 ; бит 7 установлен? until ; если нет, то снова проверяем inc DX ; указываем на регистр данных in AL, DX ; читаем байт из регистра данных endf ;--- ожидание прерывания от НГМД --- func wait_interrupt,,,,public ; управление статусом прерывания 6 в байте статуса BIOS mov AX, 40h ; сегмент области данных BIOS mov ES, AX ; помещаем в ES mov BX, 3Eh ; смещение для байта статуса repeat mov DL, ES:[BX] ; получаем байт test DL, 80h ; проверяем бит 7 until ; до тех пор пока не установлен and DL, 01111111b ; сбрасываем бит 7 mov ES:[BX], DL ; заменяем байт статуса endf END