Сообщение от
Hunta
ну или не точно, но что бы было понятней - порядка 0.3 с.
Наверное, здесь я всё таки просчитался. Когда проверял быстродействие, код ожидания был примерно такой
Код:
; выдать команду чтения
CLR R2
CLR R3
32$:
34$: SOB R2,34$
SOB R3,32$
HALT
WQINT:
HALT
Соответственно, после останова можно было посмотреть, что в R2 R3. Сейчас точно не вспомню, но в R3 было значение порядка 17777?, то есть внешниё цикл успел выполнится и выполнится не один раз. Внутренний - повторяется 65536 раз. Вот и можно прикинуть, какова задержка между выдачей команды чтения (запись не проверял) и готовностью устройства отдать сектор.
Цикл чтения после этого делался в драйвере WQ так:
Код:
MOV #256.,R3
60$: TST R1
BEQ 70$
MOV @#WQDBUF,(R2)+
DEC R1
BR 80$
70$: TST @#WQDBUF
80$: SOB R3,60$
то есть тут фактически на полной скорости.
Драйвер WQ для RT я так и не доделал на работу по прерываниям, только драйвер для RSX, драйвер ZF все варианты работают по прерываниям.
Теоретически, для SJ (SB) работа по прерываниям как бы не нужна, но вполне можно налететь на программу, которая будет что то читать с диска и параллельно что то ещё делать и тогда получить замедление.
А практически, если сделать работу без прерываний в принципе, область нормального применение контроллера будет резко сужена.
Ну или писатель драйвера должен будет разобраться, как заставить работать PIO4 или PIO5, предположительно (!!) там будут гораздо меньшие задержки между выдачей команды чтения (записи) и прилётом готовности от устройства.