Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.225.31.159] |
|
Страницы: (2) [1] 2 все ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
Пробовал писать программы на ASM в DosBox 0.74. Все устраивает, но не смог через фунции DOS(например:INT 21H AH=02 DL=07) и BIOS (например:INT 10H AX=0E07H) получить звуковой сигнал. Обращение напрямую к портам 42H, 43H, 61H решает проблему. Но я считаю это слишком коряво. Может подскажите как все таки обойтись стандартными функциями BIOS/DOS.
|
Сообщ.
#2
,
|
|
|
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 решает проблему. Но я считаю это слишком коряво. Для ДОСа это нормальное решение. |
Сообщ.
#3
,
|
|
|
Вообще, DOS вроде бы в звенеть не обещал. Обещал рулить курсором на LR, LF и BS. Звенеть обещает BIOS, и DOS вслед за ним тоже звенит по причине того, что CON: использует функции BIOS. Вероятно, в DosBox эта связь нарушена.
|
Сообщ.
#4
,
|
|
|
Цитата Qraizer @ Обещал рулить курсором на LR, LF и BS. И обещал команду BEL . В консоли ^G. |
Сообщ.
#5
,
|
|
|
Цитата Pavia @ VMware ты считаешь самым сильным, надо полагать?Расставил в порядке качества эмуляции. Цитата Pavia @ Да, DOSBox не умеет. И echo • тоже не пищит (в .bat).Должно работать. Видимо DosBox не умеет эмулировать данную команду. Да и через порты звук получается кривой (неустойчивый). Видимо, из-за неточной работы счётчиков. |
Сообщ.
#6
,
|
|
|
Я сделал драйверок, перехватывающий прерывние INT 10H, AX=0E07H. Он нормально работает через порты, но выход идет на динамики и очень громко.
Вопрос: как этот драйвер запихать в DosBox и как добратся до реального спикера. Добавлено Забыл сообщить, этот драйверок я установил в DosBox только вместе с DOS-7.10. А я бы хотел запихать его без "BOOT" (ну допустим в -conf). |
Сообщ.
#7
,
|
|
|
andr00, а "драйверок" как написан? В формате .COM-программы?
Тогда добавляешь его в dosbox-версия.conf в секцию [autoexec] и всё. |
Сообщ.
#8
,
|
|
|
Jin X, Драйвер написан в стандартном формате *.SYS. Но это хорошая идея, перепишу в виде *.COM.
|
Сообщ.
#9
,
|
|
|
andr00, SYS, боюсь, в DOSBox установить не получится.
|
Сообщ.
#10
,
|
|
|
Сделал драверок в виде *.COM (TSR программа). Отлично вставляется в *.-conf . Но все таки может исправить сам исходник DosBox 0.74 . Не подскажите где взять исходник DosBox 0.74 , говорят он открытый.
|
Сообщ.
#11
,
|
|
|
andr00, в гугле по любому есть инфа
Оф.сайт -> Download -> https://sourceforge.net/projects/dosbox/fil...tar.gz/download |
Сообщ.
#12
,
|
|
|
Еще вопрос. Можно ли записать что нибуть на диск Z: в DosBox.
|
Сообщ.
#13
,
|
|
|
andr00, зачем?
Можно забить в [autoexec] mount a: своя_любимая_папка и пользоваться диском A: Так не подойдёт? |
Сообщ.
#14
,
|
|
|
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). |
Сообщ.
#15
,
|
|
|
andr00, в DOSBox прерывания вообще по-своему реализованы, это просто мост между прогой и DOSBox'ом, который выполняет эти функции. Т.е. все функции прерываний приходят в конечном счёте к паре байт FEh,38h, после которых идёт код функции. И по этим 2 байтам с последующим кодом DOSBox понимает что за функция вызывается и реализует её. Можешь глянуть сегмент F000, он почти пуст.
Добавлено Такой интересный костыль. DOSBox - это не виртуальная машина или что-то подобное. Это софтверный эмулятор. Довольно примитивный. |