Цитата Сообщение от psb Посмотреть сообщение
вот я буквально неделю назад, кстати, проверял на реале турболоадер с им2, прерывание состояло только из jp #3d2f (в озу), анализировал я потом разрешенные ли прерывания и была ли ошибка. так вот, ошибка чтения гарантированно проявлялась! в среднем где-то 0.5-1 раз в секунду, не успевал прочитать байт, даже при таком сверхкоротком прерывании. нанотехнологии не прокатили
работает это, конечно, быстрее, чем когда музыка на прерываниях висит, но загрузку все же подтормаживает.
Либо ты чего то не знаешь, либо у тебя глюки с ПЗУ.
У меня не было никаких ошибок, я там таймеры запускал и ещё чего то... около 70-80 тактов легко проходило в безошибочное чтение. Может ты криво регистр состояния опрашивал? Может быть ты где то основные регистры процессора терял?

---------- Post added at 11:16 ---------- Previous post was at 11:05 ----------

Цитата Сообщение от psb Посмотреть сообщение
имхо, здесь играет вероятность, можешь попасть в промежуток, а можешь не попасть... текущий сектор так и так мимо. пытайся следующий читать, или через один. итог-то будет такой, что на 0.1% станет быстрее
Фишка в том, что прерывания приходят 50 раз в секунду (может не 50, каждые раз одинаково так), а вот диск вращается чуть медленнее чем 5 раз в секунду или чуть быстрее - прерывание и вращение диска происходят несинхронно; однозначно придётся ждать следующего оборота диска если прерывание пришло на чтение сектора; но если смещение чтения дорожки на диске относительно прерывания составляет например 10 байт на прерывание, то через 1, максимум через 2 прерывания, используя быстрое проигрывание аука ты прочитаешь всю дорожку в 3 оборота (1й fault, 2й fault, 3й ok), а если у тебя процедура проигрывания занимает эквивалент процессорного времени в 60 байт чтения с диска, то ждать ты будешь минимум 6 оборотов на этот сектор, т.е. как хотя бы в 2 раза дольше, а то и больше. А есть ещё фактор попадания в центр сектора, с длинным прерывание придётся ждать долго пока сектор "вылезет" из мёртвой зоны; и редкая, но возможная ситуация, когда чтение сектора прервалось на последних байтах и длинная процедура проигрывания закрыла в т.ч. начало следующего сектора, а программа то задала его чтения и придётся ждать целый оборот, пока оно отработает.
Тут в соседней ветке TmK скрутил музон в 1000 тактов... вот ему респект и уважуха, думаю теперь как к себе прикрутить это...

---------- Post added at 11:53 ---------- Previous post was at 11:16 ----------

Цитата Сообщение от psb Посмотреть сообщение
в среднем где-то 0.5-1 раз в секунду, не успевал прочитать байт
0,5-1 раз в секунду - это раз в 5 или 10 логических дорожек для турболоадера... В View у меня есть режим отключение музона... ха... смотрю код, там почему то Im1 стоит... видимо решил перестраховаться.... жаль что реал далеко... хочется проверить... Пока мне крыть нечем :-(