в унриле не слышу музыки почему?
Вид для печати
в унриле не слышу музыки почему?
С самого начала? Странно, только что прокрутил - всё отлично. В unrealfix.
Пак приложил. Только включи режим "Slow all" и для полного эффекта реального спека сними галочку быстрой загрузки. Хотя и быстрой загрузкой будет работать. Дема делалась на реальном Пентагон 1024.
вероятность попадания в мёртвую зону снижает (например начали играть музыку, а в это время пошли данные), сырые данные - это около 10-12 байт дорожки, стандартное проигрывания - от 30 до 100 байт дорожки; первое легко укладывается в межсекторный промежуток; второе - с большим трудом (если укладывается вообще).
вот я буквально неделю назад, кстати, проверял на реале турболоадер с им2, прерывание состояло только из jp #3d2f (в озу), анализировал я потом разрешенные ли прерывания и была ли ошибка. так вот, ошибка чтения гарантированно проявлялась! в среднем где-то 0.5-1 раз в секунду, не успевал прочитать байт, даже при таком сверхкоротком прерывании. нанотехнологии не прокатили:)
работает это, конечно, быстрее, чем когда музыка на прерываниях висит, но загрузку все же подтормаживает.
имхо, здесь играет вероятность, можешь попасть в промежуток, а можешь не попасть... текущий сектор так и так мимо. пытайся следующий читать, или через один. итог-то будет такой, что на 0.1% станет быстрее:)
Либо ты чего то не знаешь, либо у тебя глюки с ПЗУ.
У меня не было никаких ошибок, я там таймеры запускал и ещё чего то... около 70-80 тактов легко проходило в безошибочное чтение. Может ты криво регистр состояния опрашивал? Может быть ты где то основные регистры процессора терял?
---------- Post added at 11:16 ---------- Previous post was at 11:05 ----------
Фишка в том, что прерывания приходят 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 ----------
0,5-1 раз в секунду - это раз в 5 или 10 логических дорожек для турболоадера... В View у меня есть режим отключение музона... ха... смотрю код, там почему то Im1 стоит... видимо решил перестраховаться.... жаль что реал далеко... хочется проверить... Пока мне крыть нечем :-(
давай так. ты напишешь лоадер, который будет грузить дорожку за один оборот и при этом юзать им2. т.е. никаких ошибок быть не должно (при ошибке, например, мигай бордером). а я проверю это у себя на реале:) и тогда я признаю, что я чего-то не знал и не прав:)
ты описываешь один случай лоадера, а логика у них может быть очень даже разная: либо последовательно читает сектора, либо читает те, которые успеет, вразнобой. и время будет разное для разных случаев (где-то и получится тот самый 0.1%). а еще учти, на тех компах, где инт 50 гц, прерывание будет долгое время попадать на один и тот же сектор (ибо 300 об/м и 50 гц кратны). именно поэтому в среднем на пентагоне грузятся быстрее лоадеры с музыкой.
мне кажется или кто-то наврал?;)
Давайте вспомним Refresh. Там порядок следования секторов был свой, чтобы нормально получалась схема (прочитал-проиграл).
Также форматилки предлагают вроде порядок следования секторов 1-2-3-4..15-16 или 1-9-2-10-3-11..-8-16, а также смещение следующей дорожки на какоето число (если на 2, то 3-4-5-6..16-1-2 и для интерлива 3-11-4-12...1-9-2-10)
Интерлив как раз помогал читать сектора без пропуска оборота на "тормозных дисководах"(вроде), без интерлива ускоряло загрузку на "нормальных дисководах", а смещение помогало читать начинать следующую дорожку без пропуска оборота (подборка смещения обеспечивало необходимое время на перемещение головки)
честно говоря не помню что было принято за основу в trdos и что предлагали форматтеры (про интерлив).
Но если вы хотите чтобы ваша процедура точно грузила, реформат диска делать придется как ни крути.
2psb как раз в твоем случае сектора идут 1-2-3-4 и видимо не всегда успевают прочитаться и даже прерывания тут не при чем, а скорее завышенная скорость вращения диска (при чтении все норм, а вот подготовительные процедуры не всегда успевают).
Либо вариант2
Где то видел идею, что сначала определяем тип того как отформатирован диск, потом при чтении читаем сектора не подряд а так чтобы успевала схема читаем-играем музу. Вот только где не припомню...
И очень интересно - на эмуле я так понимаю все это нереально тестить?
вполне реально. особенно если добавить в эмуль небольшую неравномерность кручения диска и иногда возникающие ошибки чтения :)Цитата:
И очень интересно - на эмуле я так понимаю все это нереально тестить
жыл был кот... дискуссия не получилась...
Еще раз прочитай что ты написал и что я, я уточнил что многого не помню, и попытался факты сказать которые более менее в памяти остались.
Сказки это не факты, это народное творчество...
Если ты какую то аксиому высказал а я ее не понял, извини, тока я так и не понял что ты хотел сказать/спросить?