User Tag List

Страница 31 из 38 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя
Показано с 301 по 310 из 371

Тема: Апогей-БК01 и Апогей-БК01Ц: Обсуждение

  1. #301

    Регистрация
    29.05.2010
    Адрес
    Москва
    Сообщений
    218
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    uart, я знаю, что в эмуляторе РК (там же и Апогей) под DOS, при эмуляции таймера ВИ53 используется прерывание от таймера INT 8. При этом частота вызовов INT 8 устанавливается равной по-моему 44100 Гц. Я не помню точное значение, но помню, что значительно меньше 1 МГц (иначе под DOS и быть не может). Вот и получается, что разрешение меньше. Как это делается под Windows, я не знаю.

  2. #301
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #302

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    403
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SoftCat, в эмуляторе таймер в любом случае должен работать на нужной частоте, а уж с какой частотой и какие выдавать моментальные значения на звуковое устройство - определяется логикой работы эмулятора. А логика эта для поддержки таких вещей, как ШИМ, может быть далеко не тривиальной.
    Что же касается Boulder Dash, так, если мне память не изменяет, я этот последний уровень когда-то не смог и на реале пройти. Может быть, там хитрость какая-то есть - не знаю...

  4. #303

    Регистрация
    29.05.2010
    Адрес
    Москва
    Сообщений
    218
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Pyk, в эмуляторе РК под DOS, при генерации меандра (прямоугольных импульсов со скважностью 2), счетчики пересчитываются для тактирующей частоты 44100 Гц, то есть разрешающая способность эмулируемого таймера уменьшается (по сравнению с оригиналом). Естественно, для ШИМ так не пойдёт.
    Я как-то давно видел, как проходили этот уровень J в Boulder Dash на Апогее. Там надо рисовать "расчёску" с зубцами, проходящими мимо мин. При этом надо начинать идти мимо мины сразу после того, как робот топнет ножкой. Но, к сожалению, в эмуляторе мне это воспроизвести не удалось. Либо я что-то не то делал, либо эмулятор не достаточно точно эмулирует временные интервалы.
    Последний раз редактировалось SoftCat; 03.05.2016 в 22:31.

  5. #304

    Регистрация
    14.05.2013
    Адрес
    г. Москва
    Сообщений
    264
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SoftCat, так это, наверное, не счетчики ВИ53 пересчитываются, а звук генерируется в соответствии с видением автора эмулятора.

  6. #305

    Регистрация
    29.05.2010
    Адрес
    Москва
    Сообщений
    218
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    uart, в том то и дело, что счётчик (делитель) там делится на 40, а прерывание INT 8 настраивается на частоту 44100 Гц. Но ведь 1777777/44100 = 40,31..... как раз.
    Если мы хотим генерировать 440 Гц (ноту ля 1-ой октавы), то в счётчик надо занести число 1777777/440 ~= 4040. А в эмуляторе под DOS это число ещё дополнительно разделится на 40: 4040/40 = 101. То есть для частоты 44100 Гц в счётчик будет занесено число 101. Хотя более точное значение 44100/440 = 100,2(27). А если быть ещё точнее, то эти 44100 Гц для INT 8 получаются из частоты 1193181 Гц (это таймер ВИ54 на IBM PC тактируется такой частотой).
    Последний раз редактировалось SoftCat; 04.05.2016 в 00:29.

  7. #306

    Регистрация
    05.04.2013
    Адрес
    Починки, Нижегородская обл.
    Сообщений
    1,371
    Спасибо Благодарностей отдано 
    403
    Спасибо Благодарностей получено 
    647
    Поблагодарили
    255 сообщений
    Mentioned
    26 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftCat Посмотреть сообщение
    после того, как робот топнет ножкой
    Хм, эти слова вызвали у меня какие-то смутные воспоминания: где-то я это уже слышал это применительно к Boulder Dash много лет назад.
    Надо будет попробовать запустить как-нибудь на реале

  8. #307

    Регистрация
    14.05.2013
    Адрес
    г. Москва
    Сообщений
    264
    Спасибо Благодарностей отдано 
    3
    Спасибо Благодарностей получено 
    14
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    SoftCat, причем тут вообще прерывание PC? Если мы записали в счетчик число, а через N тактов центрального процессора оттуда число считали, то оно должно отличаться от исходного числа на эти N тактов, по правилам установленного режима счета. А уж как генерировать звуки это совсем другой вопрос.
    Забыл я уже, что тогда в ДОС было, но сомневаюсь, что IRQ0 вызывался с частотой 44100Гц. Стандартно в счетчик забивали нуль и получали ~18,2Гц. Для некоторых целей делали чуть быстрее, но только чуть, иначе бы все процессорное время было бы занято обработкой этого прерывания, зачем вообще его так часто вызывать? А вот пересчитать значение счетчика ВВ53 Апогея в значение счетчика ВВ54 PC вполне можно и вполне разумно для того времени.

  9. #308

    Регистрация
    29.05.2010
    Адрес
    Москва
    Сообщений
    218
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от uart Посмотреть сообщение
    Стандартно в счетчик забивали нуль и получали ~18,2Гц.
    Это верно.

    Цитата Сообщение от uart Посмотреть сообщение
    Для некоторых целей делали чуть быстрее, но только чуть, иначе бы все процессорное время было бы занято обработкой этого прерывания, зачем вообще его так часто вызывать?
    А вот тут Вы совсем не правы. Для некоторых целей IRQ0 вызывался с достаточно высокой частотой. Во времена DOS (как впрочем и сейчас) разные компы IBM PC (XT, AT и т. д.) значительно отличались по тактовой частоте процессора и по быстродействию вообще. Для написания процессорно независимой программы было бы довольно проблематично замерять время тактов центрального процессора. А также постоянно считывать значение счётчика встроенного таймера не всегда получится. В некоторых случаях гораздо удобнее настроить вызовы IRQ0 на высокую частоту. Есть, например, много программ, проигрывающих WAV-файлы через PC-Speaker с помощью того же ШИМ. Так вот в большинстве из них 0-й канал таймера (с которым соединен IRQ0) настраивается на частоту дискретизации 11025 Гц (иногда бывает и 22050 Гц и 44100 Гц), а 2-й канал таймера (выход которого соединён с PC-Speaker'ом) переводится в режим 0 для генерации импульса с заданной шириной. В обработчике INT 8 просто для каждой выборки передаётся значение уровня (которое становится шириной импульса) во 2-й канал таймера.
    Последний раз редактировалось SoftCat; 04.05.2016 в 13:15.

  10. #309

    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от SoftCat Посмотреть сообщение
    В обработчике INT 8 просто для каждой выборки передаётся значение уровня (которое становится шириной импульса) во 2-й канал таймера.
    я не в курсе, честно. А почему тогда COVOX быстро работал на моей 486, а PC Speaker съедал весь процессор?
    Последний раз редактировалось vinxru; 05.05.2016 в 11:31.

  11. #310

    Регистрация
    29.05.2010
    Адрес
    Москва
    Сообщений
    218
    Спасибо Благодарностей отдано 
    77
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    я не в курсе, честно. А почему тогда COVOX быстро работал на моей 486, а PC Speaker сьедал весь процессор?
    PC Speaker съедал весь процессор именно потому, что INT 8 вызывалось с частотой дискретизации. А COVOX был на LPT или на COM? На COM, кстати, тоже возможно. Если COVOX был на COM, то возможно было настроить DMA и почти исключить участие процессора в передаче данных. Может быть у 486-го было ещё и DMA для LPT, но это я уже только могу предполагать.
    Последний раз редактировалось SoftCat; 04.05.2016 в 15:30.

Страница 31 из 38 ПерваяПервая ... 272829303132333435 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ЮТ-88: Обсуждение
    от Zoidberg в разделе ЮТ-88
    Ответов: 317
    Последнее: 20.12.2025, 07:54
  2. ПК-6128Ц: Обсуждение
    от falanger в разделе Вектор
    Ответов: 318
    Последнее: 20.10.2025, 16:44
  3. Альфа-БК: Обсуждение
    от Def191 в разделе Радио-86РК
    Ответов: 22
    Последнее: 14.12.2021, 18:42
  4. Обсуждение музыки от
    от Mike в разделе Музыка
    Ответов: 51
    Последнее: 20.02.2008, 22:57
  5. Корпус от Апогей БК01Ц
    от Mick в разделе Барахолка (архив)
    Ответов: 26
    Последнее: 13.12.2007, 12:16

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •