Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Эмуляция загрузочной дискеты Bochs (помогите разобраться плз)

5.9K
12 февраля 2013 года
qwerpoi
17 / / 31.05.2010
Здравствуйте!
Изучаю, как работает компьютер, с этой целью хочу сделать образ загрузочной дискеты (для эмулятора Bochs).
Никакой дискеты, естественно, не существует.


Зато существует файл, созданный в hex редакторе:




Превратить это в img-образ я решил с помощью программы UltraISO следующим образом:




Потом я попробовал сделать так:




В итоге, как и следовало ожидать, bios виртуального компьютера не нашёл загрузочного устройства )

Так же пробовал менять цифры 55h и AAh местами, пытался загрузить исходный не-img файл с тем же результатом.

В википедии написано, что bios проверяет только 55AAh в конце загрузочного сектора, а на остальное содержимое ему плевать (мне, в общем, тоже) ).

Я бы хотел, имея 16-ричное содержимое уже написанной программы, сделать так, чтобы оно каким-либо образом оказалось в загрузочном секторе виртуальной дискеты, но не знаю каким. Не могли бы вы помочь советом?

P.S. В интернете уже искал, честно)
5.9K
13 февраля 2013 года
qwerpoi
17 / / 31.05.2010
А вот как эмулировать дискету в Bochs:



В качестве образа можно взять тот же файл, что использовался для эмуляции винта в примере выше.
Размер файла может быть любой, запустится даже 24-байтный кусочек, если отключить проверку сигнатуры в Boot Options (надо поставить галочку напротив Skip Floppy Boot Signature Check).

Похоже, что выделенные на рисунке красным выпадающие списки можно устанавливать в любые значения, кроме указанных исключений (в случае установки Type of floppy media как none "bios" сообщит, что не обнаружил загрузочного устройства).

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

Спасибо всем за советы.
277
12 февраля 2013 года
arrjj
1.7K / / 26.01.2011
Не уверен что COM подойдет для этих целей
360
12 февраля 2013 года
P*t*
474 / / 15.02.2007
Загрузочный сектор - это первый сектор дискеты. Созданный в hex редактор файл уже является образом дискеты. Этап с UltraISO можно пропустить. Разве что желательно дополнить файл нулями до нужного размера - некоторые эмуляторы не верят, что файл размером в 512 байт может быть образом. И я бы использовал дискету не 360K, а 1.44М - многие компьютеры еще умеют с ними работать.
5.9K
13 февраля 2013 года
qwerpoi
17 / / 31.05.2010
Ура!
Вопрос решён, хотя и не тем методом, что я ожидал.

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

Вот как это делается:
  • Создаётся файл, содержащий в самом начале код начального загрузчика.
    Следующий код является немного модифицированным примером из чудесной статьи "Введение в машинный код", там его можно найти в пункте 1.6:




    Получившийся файл должен быть размером в 512 байт (что соответствует сектору жёсткого диска) и заканчиваться на 55AAh (bios загружает только сектор с такой сигнатурой в конце, хотя я не проверял, если чесно, т.к. уже час ночи) ).
    Редактировать его можно с помощью встроенного в PSPad hex-редактора:






  • Теперь запускаем Bochs:
    Тут легче показать, чем рассказать:
    1. Говорим воображаемой bios, что загружать надо с винта:



    2. Теперь настраиваем воображаемый винчестер. Его размер - всего один сектор, что видно из трех полей, выделенных красным и заполненных еденицами.



    3. Нажав Start, можно наблюдать результат:





Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог