Эмуляция компьютера под управлением MS-DOS - PullRequest
1 голос
/ 03 января 2011

Написание эмуляторов всегда очаровывало меня. Теперь я хочу написать эмулятор для IBM PC и запустить на нем MS-DOS (у меня есть файлы образов дискет).

У меня хороший опыт в C ++ и C, а также базовые знания ассемблера и архитектуры процессора. Я также знаю, что тысячи эмуляторов делают именно то, что я хочу делать, но я буду делать это только ради радости.

  • Сколько работы мне ожидать? (Если моя цель - загрузить DOS и создать с ним текстовый файл, все эмулируется)

  • Какой процессор я должен эмулировать? Где я могу найти документацию о том, как организован машинный код и какие коды операций означают что, так что я могу распаковать и выполнить их правильно с помощью моего эмулятора?

  • Работает ли MS-DOS на процессорах новейшего поколения? Сможет ли он теоретически работать на 64-битном процессоре AMD Phenom 2 с современной материнской платой, жестким диском, оперативной памятью и т. Д .?

  • Что еще, кроме эмуляции процессора, может быть важным фактором (с точки зрения сложности)? Я хотел бы только выводить / вводить текст в систему через консоль хост-системы, без звука или других более сложных операций ввода-вывода и т. Д.

  • Вы уже написали эмулятор? Для чего был ваш первый? Насколько это было сложно? У вас есть особые советы для меня?

Заранее спасибо

Ответы [ 2 ]

1 голос
/ 03 января 2011

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

Относительно кода операции вы можете обратиться к Справочнику по кодам операций X86 и инструкции или документации Intel.Вам также следует рассмотреть возможность использования новейших возможностей процессора для виртуализации.

DOS по-прежнему сможет загружать современный ПК, но, вероятно, не сможет использовать большую часть аппаратного обеспечения (из-за отсутствия драйверов или из-за встроенногоограничение «ОС»).

Если вы хотите полностью эмулировать ПК, чтобы иметь возможность запускать MS-DOS (или клон), я думаю, вам придется:

  • декодировать и интерпретировать код операции
  • эмулировать контроллер памяти
  • эмулировать BIOS и VGA BIOS
  • реализовывать необходимый системный вызов BIOS

Отказ от ответственности: я не сделалпиши эмулятор.

0 голосов
/ 03 января 2011

Поскольку MSDOS - это чистый 16-битный код, он не может работать на 64-битном процессоре.

...