Как запустить программу через dosbox

Содержание

В данной статье разбирается способ установки интерпретатора и запуск файла EXE через DOSBox. Планировалось погрузить читателя в особенности программирования на TASM, но я согласился с комментаторами. Есть много учебников по Ассемблер и нет смысла перепечатывать эти знания вновь. Лично мне в изучении очень помог сайт av-assembler.ru. Рекомендую.

В комментариях также вы найдёте много другой литературы по Assembler. А теперь перейдём к основной теме статьи.

Для начала давайте установим наш старенький интерпретатор.
Ссылка

Почему именно vk.com?

Я прекрасно понимаю, что это ещё тот колхоз делиться файлами через обсуждения VK, но кто знает, во что может превратиться эта маленькая группа в будущем.

После распаковки файлов, советую сохранить их в папке Asm на диск C, чтобы иметь меньше расхождений с представленным тут материалом. Если вы разместите директорию в другое место, изменится лишь путь до файлов, когда вы будете использовать команду mount.

Для запуска интерпретатора нам так же потребуется эмулятор DOSBox. Он и оживит все наши компоненты. Скачаем и установим его!

Как запускать программы в dosbox.


Ссылка

В папке Asm я специально оставил файл code.asm. Именно на нём мы и потренируемся запускать нашу программу. Советую сохранить его копию, ибо там хранится весь код, который в 99% случаев будет присутствовать в каждом вашем проекте.

s_s segment s_s ends d_s segment d_s ends c_s segment assume ss:s_s, ds:d_s, cs:c_s begin: mov ax, d_s mov ds, ax mov ax, 0 ; Your code needs to be here mov ah, 4ch int 21h c_s ends end begin

Итак. Запускаем наш DOSBox и видим следующее:

Для простоты сопоставим имя пути, по которому лежит наша папка Asm. Чтобы это сделать, пропишем следующую команду:

mount d: c:asm

Здесь вместо d: мы можем использовать любую другую букву. Например назвать i или s. А C это наш реальный диск. Мы прописываем путь до наших файлов ассемблера.

Теперь, откроем смонтированный диск:

Прописав команду dir, мы сможем увидеть все файлы, которые там хранятся. Здесь можно заметить и наш файл CODE с расширением ASM, а также дату его создания.

И только теперь мы начинаем запускать наш файл! Бедные программисты 20 века, как они только терпели всё это? Пропишем следующую команду:

tasm code.asm

После мы увидим следующее сообщение, а наша директория пополнится новым файлом с расширением OBJ.

Теперь пропишем ещё одну команду:

tlink code.obj

В нашей папке появилась ещё пара файлов – CODE.MAP и CODE.EXE. Последний как раз и есть исполняемый файл нашего кода assembler.

Запуск старых игр на ПК через DOSBox

Если он появился, значит, мы можем запустить режим отладки нашей программы, введя последнюю команду. Обратите внимание, теперь мы не указываем расширение файла, который запускаем.

td code

Этот старинный интерфейс насквозь пропитан духом ушедшей эпохи старых операционных систем. Тем не менее…

Нажав F7 или fn + F7 вы сможете совершить 1 шаг по коду. Синяя строка начнёт движение вниз, изменяя значения регистров и флагов. Пока это всего лишь шаблон, на котором мы потренировались запускать нашу программу в режиме дебага. Реальное “волшебство” мы увидим лишь с полноценным кодом на asm.

Небольшой пример для запуска

Прога проверяет, было ли передано верное число открывающих и закрывающих скобок:

s_s segment dw 20 dup(‘$’) s_s ends d_s segment string db ‘()’,’$’; result db 0 d_s ends c_s segment assume ss:s_s,ds:d_s,cs:c_s begin: ; начало программы mov ax,d_s mov ds,ax xor ax,ax lea si, string ;Ищем в строке скобку search: lodsb ;Проверка, это конец строки? cmp al, ‘$’ je endString ;Это открывающая или закрывающая скобка? ;Это открывающие скобки? cmp al, ‘(‘ je inStack cmp al, » je outStack cmp al, ‘]’ je outStack jmp search ;Помещаем скобку в Stack, увеличиваем счётчик inStack: inc cx push ax jmp search ;Выниманием из Stack скобку, проверяем пару outStack: ;Была передана лишняя закрыв. скобка? cmp cx, 0 je error3 dec cx pop bx ;Вскрытая скобка закрыта верно? cmp bl, ‘(‘ jne close1 cmp al, ‘)’ jne error1 jmp search close1: cmp bl, ‘[‘ jne close2 cmp al, ‘]’ jne error1 jmp search close2: cmp bl, » jne error1 jmp search ;Остались ли незакрытые скобки? endString: cmp cx, 0 jne error2 jmp exit ;Скобки остались, это ошибка №2 error2: mov result, 2 jmp exit ;Лишняя скобка передана, ошибка №3 error3: mov result, 3 jmp exit ;Закрывающая скобка несоответствует открывающей, ош №1 error1: mov result, 1 jmp exit ;Пред-завершение. Каков результат программы? exit: cmp result, 1 jne enough ;Ищем нужную скобку для исправления ошибки №1 cmp bl, ‘(‘ jne next1 mov bl, ‘)’ jmp enough next1: cmp bl, » jmp enough next2: cmp bl, ‘[‘ mov bl, ‘]’ jmp enough enough: mov dl, result xor dx, dx mov dl, bl mov ah,4ch int 21h c_s ends end begin

Читайте также:
Программист составил программу нахождения площади и периметра треугольника однако при запуске

Давайте ознакомимся с имеющимися разделами.

CS

Code segment – место, где turbo debug отражает все найденные строки кода. Важное замечание – все данные отражаются в TD в виде 16-ричной системы. А значит какая-нибудь ‘12’ это на самом деле 18, а реальное 12 это ‘C’. CS аналогичен разделу “Begin end.” на Pascal или функции main.

DS

Data segment, отражает данные, которые TD обнаружил в d_s. Справа мы видим их символьную (char) интерпретацию. В будущем мы сможем увидеть здесь наш “Hello, world”, интерпретируемый компилятором в числа, по таблице ASCII. Хорошей аналогией DS является раздел VAR, как в Pascal. Для простоты можно сказать, что это одно и тоже.

SS

Stack segment – место хранения данных нашего стека.

Регистры

Все эти ax, bx, cx, si, di, ss, cs и т. д. – это наши регистры, которые используются как переменные для хранения данных. Да, это очень грубое упрощение. Переменные из Pascal и регистры Assembler это не одно и тоже, но надеюсь, такая аналогия даёт более чёткую картину. Здесь мы сможем хранить данные о циклах, арифметических операциях, системных прерываниях и т. д.

Флаги

Все эти c, z, s, o, p и т.д. это и есть наши флаги. В них хранится промежуточная информация о том, например, было ли полученное число чётным, произошло ранее переполнение или нет. Они могут хранить результат побитого сдвига. По опыту, могу сказать, на них обращаешь внимание лишь при отладке программы, а не во время штатного исполнения.

Ещё одно замечание. Если вы измените данные исходного файла с расширением .ASM, то вам придётся совершить все ранее описанные операции вновь, ибо обновив например code.asm вы не меняете code.obj или code.exe.

Маленькая шпаргалка для заметок:

  1. mount d: c:asm – создаём виртуальный диск, где корень –папка asm
  2. d: — открываем созданный диск
  3. tasm code.asm – компилируем исходный код
  4. tlink code.obj – создаём исполняемый файл
  5. td code – запускаем debug
  6. F7 – делаем шаг в программе

Буду ждать комментарии от всех, кому интересен Assembler. Чувствую, я где-то мог накосячить в терминологии или обозначении того или иного элемента. Но статья на Habr отличный повод всё повторить.

Источник: habr.com

DOSBox инструкция: как запустить игру!

DOSBox

Иногда старые игры не идут на современных компьютерах, поэтому их нужно запускать через эмулятор DOSBox, приведем небольшую инструкцию.

DOSBox: как пользоваться?

Чтобы запустить игру с помощью DOSBox для Windows 7, 8, 10 или XP:

  1. Скачать бесплатно DOSBox под свою операционную систему на официальном сайте;
  2. Установить DOSBox. Появится ярлык на рабочем столе;
  3. Скачать игру, если этого еще не сделали;
  4. Распаковать загруженный архив, получится много файлов. Важно: игры под DOS запускаются файлами с расширением *.bat, *.exe, или *.com, в каждой игре по разному, запускайте по очереди, советую начать с файла в имени которого присутствует название игры, например doom.exe;
  5. Зайти в папку с игрой и перетащить файл запуска игры прямо на ярлык DOSBox на рабочем столе Windows. Как это показано на рисунке.

DOSBox: как запустить игру

Все. Игра запустилась и работает без проблем.

Игра Doom запущена через эмулятор DOSBox

Если вдруг игра не запускается: проверьте файлы setup.exe или install.com — в играх под DOS звук настраивался вручную, в то время звуковые карты небыли совместимыми, нужно запустить один из этих файлов, выбрать звуковую карту, например «sound blaster», и сохранить настройки.

Список системных кнопок DOSBox:

ALT-ENTER — Переход dosbox на весь экран

Читайте также:
На какой программе готовить плов в скороварке мультиварке

CTRL-F1 — Переназначение кнопок

CTRL-F5 — Сделать скриншот

CTRL-F6 — Старт/стоп записи звука в wave файл

CTRL-ALT-F5 — Старт/Стоп создания ролика с экрана (захват видео и запись в avi)

CTRL-F9 — Закрыть DosBox

CTRL-F10 — Захватить/Отпустить мышь

CTRL-F11 — Замедлить скорость игры

CTRL-F12 — Увеличить скорость игры

При нажатии ALT-F12 (Убрать ограничение скорости (турбо кнопка)) игра ускоряется до предела. Ускорение идет пока комбинация нажата. Бывает очень полезно для промотки заставок, ускорения ожидания, даже если игрой это не предусмотрено. К сожалению комбинация не очень стабильна. Самый частый симптом при таком ускорении — исчезновение в дальнейшем звука.

Источник: dosgames.ru

DOSBox в вопросах и ответах

DOSBox — эмулятор DOS-машины. С помощью него вы сможете запустить на современных компьютерах свои любимые старые игры времен DOS’а.

Какую версию использовать?

Используйте последнюю версию программы с официального сайта или из раздела утилит на нашем сайте. На данный момент последняя официальная версия программы — 0.74. Если вы хотите воспользоваться неофициальными функциями — такими, как поддержка Glide-игр, — то качайте неофициальные сборки.

Как запустить игру в DOSBox’е?

Запустить интересующую вас игру с помощью программы DOSBox можно разными способами. Вот некоторые из них:

  • Запуск с помощью «перетаскивания исполняемого файла на DOSBox». Для того чтобы запустить таким образом игру, необходимо просто «перетащить» исполняемый файл игры (.exe или .com) на ярлык DOSBox.
  • Запуск непосредственно из DOSBox. Запустите DOSBox, далее подмонтируйте диск с игрой и с помощью команд DOSBox’а запустите ее исполняемый файл.

Важно: обязательно требуется переходить в саму директорию с игрой — нельзя запускать файл из корня виртуального диска подобным образом: GAMESORIONORION.EXE

Описания команд DOSBox’а смотрите ниже. Примеры запуска смотрите в отдельной статье.

  • Запуск с помощью *.bat-файла. Создайте *.bat-файл вида dosbox c:gamesorionorion.exe, поместите его в директорию с DOSBox, запускайте его.
  • Запуск с помощью прописанных в dosbox.conf командах autoexec. Команды DOSBox’а можно записать в самом конце конфигурационного файла в разделе autoexec — и они будут выполняться по порядку при запуске DOSBox’а.
  • Запуск с использованием сторонних фронт-эндов (графические оболочки). Наиболее известную такую оболочку — D-Fend — можно скачать у нас в разделе утилит.

Как запустить PC-booter игру (т.е. игру, запускающуюся напрямую с образа дискеты)?

Вы можете прочитать дополнительную информацию об образах дискет в статье Образ дискеты. Что это такое и как с ним работать.

Как запустить PCjr картридж?

Необходимо выбрать тип эмулируемого компьютера pcjr (machine=pcjr в настройках эмулятора) и затем загрузиться с образа картриджа с помощью команды boot.

Команды DOSBox’а

Я запустил DOSBox — получил чёрный экран и командную строку, что писать?

В DOSBox’е действуют команды, похожие на стандартные DOS-овские:

  • cd — команда для смены директории.
  • cd .. — перейти на один уровень вверх.
  • cd имя_папки перейти к подпапке данного каталога.
  • X: — смена диска на диск X:.
  • dir — команда для отображения содержимого директории, можно также использовать с ключами /w (вывод по столбцам), /р (пауза после каждого экрана).
  • mount — команда для подключения дисков в DOSBox.

Примечание: для упрощения навигации по файловой системе можно использовать один из файловых менеджеров под DOS.

Как мне получить содержимое папки с игрой в DOSBox’е?

Чтобы DOSBox видел вашу папку с игрой или играми, нужно специальной командой «смонтировать» виртуальный диск. В DOSBox нельзя просто без монтирования перейти в папку на вашем диске. Для некоторых игр необходимо также, чтобы виделся CD-ROM с игрой. Для этого необходимо так или иначе «смонтировать» и CD-ROM тоже.

Пример использования команды mount для монтирования папки D:GAMES на вашем компьютере в качестве диска C: DOSBox’а:

mount c d:games

Пример подключения CD-ROM в приводе E: на вашем компьютере в качестве виртуального CD-ROM’а D: DOSBox’а:

mount d e: -t cdrom

Для некоторых игр с CD-Audio треками может понадобиться параметр -ioctl.

Для того чтобы подключить floppy-дисковод A:, введите:

mount a a: -t floppy

Как мне смаунтить директорию, если путь содержит пробелы?

Заключайте путь в кавычки. Например:

mount C «C:Usersyour-user-nameDocumentsDOSBox stuffMyGame»

У меня есть образ диска/дискеты, и я не хочу его записывать на реальный носитель или загружать в виртуальный привод для игры, есть ли способ подключать образ в DOSBox’е напрямую?

Действительно, с версии 0.62 такая возможность есть. Для этого воспользуйтесь командой imgmount. Пример использования для подключения образа диска myiso.iso в качестве виртуального CD-ROM’а — диска D::

imgmount d c:myiso.iso -t cdrom

Добавлять параметры -fs iso, как правило, не нужно.

Если путь к образу диска/дискеты, либо его имя содержит пробелы, то нужно заключать его в кавычки:

imgmount d «H:NewScreamer Rally CDScreamer Rally.cue» -t cdrom

С помощью команды imgmount можно подгружать образы дискет (аналогично образу диска, но с ключом -t floppy), а также образ жесткого диска (аналогично, но с ключом -t hdd).

Также с помощью команды imgmount можно монтировать сразу несколько образов диска на один виртуальный привод, переключение между ними осуществляется по Ctrl-F4:

Читайте также:
Как пользоваться программой ваг

imgmount d f:imgCD1.cue f:imgCD2.cue f:imgCD3.cue -t cdrom
imgmount d «g:img7th Guest CD1.cue» «g:img7th Guest CD2.cue» -t cdrom

Важно: команда imgmount поддерживает образы дисков только в форматах ISO и BIN/CUE. Для проигрывания аудиотреков в игре монтировать нужно CUE-файл.

С помощью данной команды, а также команды boot можно запускать так называемые «booter»-игры, то есть игры, которые грузятся напрямую с дискеты, без запуска ОС. Для этого смонтируйте образ командой imgmount и загрузите его командой boot. Пример команд:

imgmount a «floppy.img» -t floppy boot -l a
boot «floppy.img»

Горячие клавиши DOSBox’а

Как перевести игру в полноэкранный режим?

Нажмите ALT + Enter. Чтобы перейти в оконный режим, нажмите эту комбинацию еще раз.

Если вы хотите, чтобы игра сразу запускалась на весь экран, отредактируйте dosbox.conf: исправьте fullscreen=false на fullscreen=true.

Как записать видео-ролик или сделать скриншот игры? Как записать музыку?

Видеоролик записывается комбинацией CTRL-ALT-F5 (включить запись или выключить). Скриншоты делаются комбинацией CTRL-F5 (сохраняются в формат *.PNG). Запись музыки возможна в трех режимах:

  • В Wav-файл. Делается комбинацией CTRL-F6.
  • Запись OPL команд. Делается комбинацией CTRL-ALT-F7.
  • Запись MIDI команд. Делается комбинацией CTRL-ALT-F8.

Все труды пользователя отправляются в папку Capture в папке с DOSBox (можно переназначить в dosbox.conf). Начиная с версии 0.73 папка Capture находится в рабочей папке DOSBox:

  • %USERPROFILE%Local SettingsApplication DataDOSBox (Windows XP)
  • :Users\AppDataLocalDOSBox (Windows Vista Main->Load/Save state».

    Как переназначить клавиши в DOSBox’е?

    В DOSBox’е есть встроенная функция «mapper». Вызывается она по комбинации Ctrl+F1.

    Экран настроек mapper’а

    С помощью этой функции можно переназначить клавиши клавиатуры или джойстика на другие клавиши клавиатуры или джойстика (то есть можно назначить управление джойстиком с помощью клавиатуры или же наоборот — клавиатуры на джойстик). Для каждой перенаправляемой клавиши проделайте следующую процедуру:

    • Выберите клавишу на экране,
    • Нажмите Add,
    • Нажмите клавишу на своей клавиатуре или на джойстике, которую вы хотите сопоставить выбранной на экране

    После окончания процедуры можно сохранить файл с настройками переназначения (если вы хотите пользоваться этими настройками в следующий раз) и нажмите Exit.

    Частые проблемы при запуске игр

    На моем ноутбуке при переходе в полноэкранный режим изображение глючит или игра вообще вылетает.

    Попробуйте изменить параметр output в dosbox.conf. По умолчанию стоит surface, надо заменить на ddraw или opengl.

    Картинка сжата, или, наоборот, хочется, чтобы пропали пустые полосы по бокам экрана в полноэкранном режиме

    Измените параметр aspect (true | false) в dosbox.conf.

    Где мне искать файл настроек dosbox.conf?

    В зависимости от ОС и версии DOSBox’а файл настроек лежит либо вместе с dosbox.exe (в ранних версиях), либо в User profile (например, в версиях 0.73-0.74 или на Маке). В последнем случае вы можете его найти в:

    • %USERPROFILE%Local SettingsApplication DataDOSBoxdosbox-.conf (Windows XP)
    • :Users\AppDataLocalDOSBoxdosbox-.conf (Windows Vista All Programs > Dosbox-0.73 > Configuration в пункте Edit Configuration.

      Для версии 0.74: Пуск > Все программы > Dosbox-0.74 > Options в пункте DOSBox 0.74 Options.

      В игре нет звука или музыки, хотя они должны быть.

      Проверьте настройки звука и музыки в игре. Практически все DOS-игры 90-х годов имеют поддержку Sound Blaster, так что в программе настройки звука в игре (обычно это setup.exe) стоит выбирать именно его. Параметры Sound Blaster в DOSBox по умолчанию стоят такие:

      IO (Port) — 220 IRQ (Interrupt Request) – 7 DMA Channel (Direct memory access) — 1 DMA 16-bit – 5. (для Sound Blaster 16 и выше)

      В качестве альтернативы можно использовать карту Gravis Ultrasound — ее настройка описана в руководстве для «экспертов». В качестве музыкального устройства можно использовать General Midi – MPU-401, значение ввода-вывода (IO) для него по умолчанию — 330.

      Я монтирую диск с игрой как написано, перехожу на него и запускаю игру с помощью команды GAMESGAMEGAME.EXE (пример), но ничего не работает.

      Так делать нельзя. После перехода на виртуальный диск переходите в директорию с игрой и запускайте исполняемый файл оттуда. Если что-то непонятно, еще раз посмотрите Примеры запуска игр в DOSBox.

      Все ли игры работают под DOSBox’ом? Что делать, если какая-то одна игра не запускается или глючит, хотя с остальными всё нормально?

      У команды DOSBox’а есть список совместимости игр, в нем указаны тестировавшиеся игры; если с их работой есть какие-то проблемы, об этом указывается. В последней версии программы проблемных игр совсем немного, но они есть. С другой стороны, на нашем сайте многие игры, которые считаются неработающими или проблемными, уже починены. Поэтому с проблемой по конкретной игре обращайтесь на форум в тему по DOSBox’у.

      См. также

      • DOSBox для пользователей (описание настроек программы и развернутая информация по работе с ней)
      • DOSBox для знатоков (дополнительные руководства)
      • Dosbox.conf (описание файла настроек программы)

      Ссылки

      • DOSBox Wiki
      • Еще одно руководство по пользованию DOSBox на русском языке от автора GamesHistory — Arik’а. Руководство снабжено скриншотами!

      Источник: www.old-games.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru