
Сообщение от
b2m
Вот, например, чтение сектора:
Код:
L1: LDAX B ; читаем статус
RAR
RNC ; если контроллер больше не занят
RAR
JNC L1 ; если данных пока нет
LDAX D ; читаем байт
MOV M,A
INX H
JMP L1
Минимум 59 тактов плюс по 30 тактов, если данных ещё нет. У нас будет 62(+33), думаю, должно успеть.
Я на Орионе делал так:
Код:
LXI H,BUF
LXI D,0F700H
LXI B,0082H
IN0:LDAX D
ANA C
JZ IN0
LDA 0F703H
MOV M,A
INX H
DCR B
JNZ IN0
LDA 0F700H
И все отлично работало. Если нужно было читать более 256 байт (512 и 1024 байт), то приходилось повторять куски циклов по 256 байт, иначе не успевало уже. Последний LDA брал статус ВГ93, данные процедуры не висли при ошибках ВГ93, но, правда, заполняли область загрузки каким-нибудь байтом (в случае ошибки). Код 82Н - это готовность диска и готовность данных. в случае ошибки прога вываливала при отсутствии готовности диска.
Это если вдруг кому интересно.