На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
> DosBox, Функции BIOS/DOS
    Пробовал писать программы на ASM в DosBox 0.74. Все устраивает, но не смог через фунции DOS(например:INT 21H AH=02 DL=07) и BIOS (например:INT 10H AX=0E07H) получить звуковой сигнал. Обращение напрямую к портам 42H, 43H, 61H решает проблему. Но я считаю это слишком коряво. Может подскажите как все таки обойтись стандартными функциями BIOS/DOS.
      andr00
      Цитата andr00 @
      Пробовал писать программы на ASM в DosBox 0.74.

      Это эмулятор очень слабый. Лучше полноценную виртуальную машину QEMU, Bochs, VirtualBox, VMWare Player. Расставил в порядке качества эмуляции.

      Цитата andr00 @
      но не смог через фунции DOS(например:INT 21H AH=02 DL=07)

      Эта недокументированная возможность.

      Цитата andr00 @
      BIOS (например:INT 10H AX=0E07H)

      Должно работать. Видимо DosBox не умеет эмулировать данную команду.

      Цитата andr00 @
      Обращение напрямую к портам 42H, 43H, 61H решает проблему. Но я считаю это слишком коряво.

      Для ДОСа это нормальное решение.
      Правильный обед должен состоять из 5 блюд приготовленных из 33 ингредиентов.
        Вообще, DOS вроде бы в звенеть не обещал. Обещал рулить курсором на LR, LF и BS. Звенеть обещает BIOS, и DOS вслед за ним тоже звенит по причине того, что CON: использует функции BIOS. Вероятно, в DosBox эта связь нарушена.
        Одни с годами умнеют, другие становятся старше.
          Цитата Qraizer @
          Обещал рулить курсором на LR, LF и BS.

          И обещал команду BEL :) . В консоли ^G.
          Мои программные ништякиhttps://majestio.info
            Цитата Pavia @
            Расставил в порядке качества эмуляции.
            VMware ты считаешь самым сильным, надо полагать?

            Цитата Pavia @
            Должно работать. Видимо DosBox не умеет эмулировать данную команду.
            Да, DOSBox не умеет. И echo • тоже не пищит (в .bat).
            Да и через порты звук получается кривой (неустойчивый). Видимо, из-за неточной работы счётчиков.
            aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
              Я сделал драйверок, перехватывающий прерывние INT 10H, AX=0E07H. Он нормально работает через порты, но выход идет на динамики и очень громко.
              Вопрос: как этот драйвер запихать в DosBox и как добратся до реального спикера.

              Добавлено
              Забыл сообщить, этот драйверок я установил в DosBox только вместе с DOS-7.10. А я бы хотел запихать его без "BOOT" (ну допустим в -conf).
                andr00, а "драйверок" как написан? В формате .COM-программы?
                Тогда добавляешь его в dosbox-версия.conf в секцию [autoexec] и всё.
                aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
                  Jin X, Драйвер написан в стандартном формате *.SYS. Но это хорошая идея, перепишу в виде *.COM.
                    andr00, SYS, боюсь, в DOSBox установить не получится.
                    aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
                      Сделал драверок в виде *.COM (TSR программа). Отлично вставляется в *.-conf . Но все таки может исправить сам исходник DosBox 0.74 . Не подскажите где взять исходник DosBox 0.74 , говорят он открытый.
                        andr00, в гугле по любому есть инфа :)
                        Оф.сайт -> Download -> https://sourceforge.net/projects/dosbox/fil...tar.gz/download
                        aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
                          Еще вопрос. Можно ли записать что нибуть на диск Z: в DosBox.
                            andr00, зачем?
                            Можно забить в [autoexec] mount a: своя_любимая_папка и пользоваться диском A:
                            Так не подойдёт?
                            aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
                              Jin X Я уже это делал. Все в норме, но считаю это коряво. К стати заметил, что в (чистой) DosBox, функции вывода (INT 21H) на консоль, не обращаются к функциям BIOS.
                              Установил драйверок (TSR)) на INT 10H AX=0E07H, BEEP работает. Но функция INT 21H AH=02H DL=07 (или 09H), молчат. При загрузке своей DOS (через BOOT + драйверок), все работает (INT 21H и INT 10H).
                              В своем DOS сделал трассировку и обнаружил, что функции INT 21H (вывода на консоль) обращаются в итоге к фунциям BIOS (INT 10H AH=EH).
                                andr00, в DOSBox прерывания вообще по-своему реализованы, это просто мост между прогой и DOSBox'ом, который выполняет эти функции. Т.е. все функции прерываний приходят в конечном счёте к паре байт FEh,38h, после которых идёт код функции. И по этим 2 байтам с последующим кодом DOSBox понимает что за функция вызывается и реализует её. Можешь глянуть сегмент F000, он почти пуст.

                                Добавлено
                                Такой интересный костыль. DOSBox - это не виртуальная машина или что-то подобное. Это софтверный эмулятор. Довольно примитивный.
                                aeskeygenassist bndstx cmpxchg16b dpps endbr64 f2xm1 gf2p8affineinvqb haddps incsspq jrcxz kxnorw ldmxcsr mpsadbw nop orpd pclmulhqlqdq qword rdpmc sha256rnds2 tzcnt unpcklpd vp4dpwssds wrfsbase xgetbv yword zword
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1320 ]   [ 16 queries used ]   [ Generated: 24.09.20, 20:10 GMT ]