В режиме 0. Других я не знаю.
Кажется понял в чем проблема. У меня чтение 16-ти битного слова оформлено в виде отдельной подпрограммы:
Код:
; на входе:
; A - номер порта, откуда читаем
; на выходе:
; HL - принятые данные
hdd_In:
push B
mov B, A
mvi A, 92h
out PORTCMD ; A, B - ввод, C - вывод
mov A, B
ani 00000111b ; оставляем только биты адреса порта
ori 01000000b ; set /RD /CS
out PORTC
in PORTA
mov L, A ; LO(data) = port[A]
in PORTB
mov H, A ; HI(data) = port[B]
mvi A, 11100111b ; отключаем устройство
out PORTC
pop B
ret
Судя по всему проблема возникает при групповом чтении. Наверное установку режима нужно вынести за цикл. Попробую, как только смогу.