Заставить CS4281 работать в Dos
Заставить CS4281 работать в Dos
Подскажите кто знает, есть звуковая карта с чипом CS4281, в 98 винде работает нормально, но в чистом Dos работать отказывается. Например при запуске setblast.exe из фразы "Testing one two free", успевает произнести лишь "Test" и затем выскакивает ошибка, проверьте DMA, IRQ и т.д., как обычно бывает например в случае конфликтов.
Нашел мануал для программирования? для этой карты. Непонятно, а чем ее собственно программировать, какими утилитами?
Пытаюсь использовать утилиту PCISET:
http://www.uwe-sieber.de/files/pciset.zip
Но там написано, что программа работает только с 8 битами данных, тогда как в мануале используется 32, если я не ошибаюсь. А кроме того при попытке обращения к адресам? более 99h, выдает ошибку 201. Например в некоторых местах мануала встречаются адреса 608h и подобные, как с ними работать с помощью этой утилиты?
Иными словами мой вопрос - могу ли я управлять настройками аудиокарты с помощью этой утилиты? И с какими командами есть смысл поиграться, чтобы достичь желаемого?
Команды которые пробую успешно работают (меняют регистры, в какой-то момент замена регистров делает карту невидимой для драйвера), вроде:
PCISET.EXE 6005 1013 0F0 00000001 00000000
До этого инициализирую карту драйвером cwrdos.exe (пробывал разные версии), никаких ошибок не выдает:
Кроме того раньше удавалось использовать какие-то команды, которые проводили продвинутую инициализацию карты, но я их потерял, остался только лог.
Наибольший интерес представляет 147 страница мануала, возможно отсюда начинать копать?
Нашел мануал для программирования? для этой карты. Непонятно, а чем ее собственно программировать, какими утилитами?
Пытаюсь использовать утилиту PCISET:
http://www.uwe-sieber.de/files/pciset.zip
Но там написано, что программа работает только с 8 битами данных, тогда как в мануале используется 32, если я не ошибаюсь. А кроме того при попытке обращения к адресам? более 99h, выдает ошибку 201. Например в некоторых местах мануала встречаются адреса 608h и подобные, как с ними работать с помощью этой утилиты?
Иными словами мой вопрос - могу ли я управлять настройками аудиокарты с помощью этой утилиты? И с какими командами есть смысл поиграться, чтобы достичь желаемого?
Команды которые пробую успешно работают (меняют регистры, в какой-то момент замена регистров делает карту невидимой для драйвера), вроде:
PCISET.EXE 6005 1013 0F0 00000001 00000000
До этого инициализирую карту драйвером cwrdos.exe (пробывал разные версии), никаких ошибок не выдает:
Кроме того раньше удавалось использовать какие-то команды, которые проводили продвинутую инициализацию карты, но я их потерял, остался только лог.
Наибольший интерес представляет 147 страница мануала, возможно отсюда начинать копать?
Последний раз редактировалось MAZter 26.11.2020,02:05, всего редактировалось 2 раза.
-
- Advanced Member
- Сообщения: 9537
- Зарегистрирован: 16.08.2007,11:42
- Откуда: СПб
-
Вклад в сообщество
Заставить CS4281 работать в Dos
статья про нее была
http://sannata.org/konkurs/2017/kt1708.shtml
http://sannata.org/konkurs/2017/kt1708.shtml
Xeon E5-2670v2/32 Gb, Amiga А4000Т
Заставить CS4281 работать в Dos
Спасибо, но эту статью еще пол года назад видел, она не помогает в данном случае.
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Заставить CS4281 работать в Dos
MAZter, у меня, кажется, такой карты нет, что несколько усложняет дело, но какую-то утилиту для её программирования я могу попробовать состряпать.
По поводу записи в регистры - здесь PCISET не очень-то подходит, она пишет только в регистры PCI какого-то определённого устройства, а тут скорее проще воспользоваться обычным Debug. По поводу адресов - берём Base Address Register 0 (BA0) и прибавляем к нему значение из таблицы регистров. Посмотреть BA0 можно, к примеру, в "Диспетчере устройств", хотя в DOS и Windows они могут отличаться. Этот самый BA0 будет разным на разных машинах. Скажем, если BA0 = 6000h, тогда адрес Sound System Control Register будет 6000h+74Ch=674Ch.
Тут ещё проблема в том, что в этом draft-мануале не указан бит включения эмуляции SB (стр. 169). Вот тут вроде бы что-то есть:
https://www.spinics.net/lists/mm-commits/msg05831.html
Вероятно, этот бит - третий, т.е. номер 2, если считать с нуля.
Соответственно, чтобы туда что-то записать, можно воспользоваться Debug, дав команду:
o674c 4
(Но это если у Вас базовый адрес 6000h - это просто для примера.)
Ну а дальше следовать инструкциям со страницы 161 того draft, т.е. установить DMA, IRQ и т.п. Там довольно много этапов, проще, наверное, попытаться разобраться, почему не работает cwrdos.exe - он, по идее, должен всё это сам сделать. На Vogons писали, что у кого-то работало:
https://www.vogons.org/viewtopic.php?t=74549
У Вас после запуска cwrdos.exe нет ни PCM, ни FM? На других машинах пробовали?
По поводу записи в регистры - здесь PCISET не очень-то подходит, она пишет только в регистры PCI какого-то определённого устройства, а тут скорее проще воспользоваться обычным Debug. По поводу адресов - берём Base Address Register 0 (BA0) и прибавляем к нему значение из таблицы регистров. Посмотреть BA0 можно, к примеру, в "Диспетчере устройств", хотя в DOS и Windows они могут отличаться. Этот самый BA0 будет разным на разных машинах. Скажем, если BA0 = 6000h, тогда адрес Sound System Control Register будет 6000h+74Ch=674Ch.
Тут ещё проблема в том, что в этом draft-мануале не указан бит включения эмуляции SB (стр. 169). Вот тут вроде бы что-то есть:
https://www.spinics.net/lists/mm-commits/msg05831.html
Вероятно, этот бит - третий, т.е. номер 2, если считать с нуля.
Соответственно, чтобы туда что-то записать, можно воспользоваться Debug, дав команду:
o674c 4
(Но это если у Вас базовый адрес 6000h - это просто для примера.)
Ну а дальше следовать инструкциям со страницы 161 того draft, т.е. установить DMA, IRQ и т.п. Там довольно много этапов, проще, наверное, попытаться разобраться, почему не работает cwrdos.exe - он, по идее, должен всё это сам сделать. На Vogons писали, что у кого-то работало:
https://www.vogons.org/viewtopic.php?t=74549
У Вас после запуска cwrdos.exe нет ни PCM, ни FM? На других машинах пробовали?
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Заставить CS4281 работать в Dos
А что за материнка у Вас? Вообще, на PCI-ных звуковых всё время те или иные проблемы с эмуляцией SB в DOS, и про эту карту такое пишут тоже.
- serenitatis
- Full Member
- Сообщения: 270
- Зарегистрирован: 23.10.2020,16:33
- Откуда: Москва
- Контактная информация:
Заставить CS4281 работать в Dos
Вот с этим драйвером у меня получилось кое-как завести звук на аналогичном чипе. Но все равно CS 4281 с точки зрения совместимости с ДОСом очень плохой вариант и на что-то такое рассчитывать смысла нет. FM у меня с этим драйвером эмулируется очень странно. Где-то он есть, а где-то его нет. Например, в Prince of Persia у меня весь звук идет через FM, а в Duke Nukem 3D FM не виден, но PCM есть. Это если говорить про сеанс DOS в Windows 98. Если перезагрузиться в просто DOS, то там вообще полный трэш. Но указанный драйвер самый лучший, я перепробовал несколько и с этим удалось хоть что-то получить в чистом DOS.
Выложу еще WDM драйвер, но там на что-то можно расчитывать только в сеансе DOS запущенном в Windows 98. В чистом DOS c ним вообще ничего работать не будет. Но в Дюке, например, у меня была с ним и музыка, и PCM.
Выложу еще WDM драйвер, но там на что-то можно расчитывать только в сеансе DOS запущенном в Windows 98. В чистом DOS c ним вообще ничего работать не будет. Но в Дюке, например, у меня была с ним и музыка, и PCM.
- uav1606
- Advanced Member
- Сообщения: 5969
- Зарегистрирован: 16.01.2008,22:04
- Откуда: Енакиево
- Контактная информация:
-
Вклад в сообщество
Заставить CS4281 работать в Dos
На ноутбуках обычно ещё больше проблем со звуком PCI, так что вряд ли тут получится что-то существенно улучшить...Материнка в составе лэптопа ThinkPad i1124 2609-51J (240x)
В стационарнике хотя бы можно плату по слотам попереставлять, меняя таким образом IRQ, ну и т.п.