Пятница, 15.12.2017, 07:14
Приветствую Вас Ополченец | RSS

Записки советского радиолюбителя

Каталог статей

Главная » Статьи » Эврика

Эмулятор 8086tiny на Ubuntu

Эмулятор 8086tiny на Ubuntu

8086tiny on Ubuntu

8086tiny - крошечный (8086tiny.c: 760 строк), бесплатный, с открытым исходным кодом, портативный ПК эмулятор Intel / VM, достаточно мощный, чтобы запустить DOS, Windows 3.0, Exel, MS Flight Simulator, AutoCAD, Lotus 1-2-3, и другие подобные приложения. Сайт проекта http://www.megalith.co.uk/8086tiny/
 8086tiny эмулирует машины типа PC/XT "конца эпохи 80-х" со следующими характеристиками:

CPU Intel 8086/186;
ОЗУ 1МБ;
контроллер флоппи дисковода 3.5 (1.44МБ/720кБ);
контроллер одного жесткого диска объемом до 528МБ);
графические карты CGA/Hercules с 720x348 2-цветной и 320x200 4-цветной графикой (64кБ видео ОЗУ), и CGA 80x25 16-цветный поддержки в текстовом режиме;
точный таймер прерываний (PIT);
контроллер клавиатуры с 83-клавишным набором (ПК типа XT);
часы реального времени;
спикер (speaker) PC.


Эмулятор использует графическую библиотеку SDL для портативности, и компилируется под целый ряд платформ (Windows, Mac OS X, Linux, Android, iOS, Raspberry Pi)

Сборка 8086tiny на Ubuntu 14.04 64-bit
Должны быть установлены обязательные библиотеки:
libsdl1.2debian, libsdl1.2-dev.
 a) Скачиваем с сайта проекта архив с исходниками для UNIX систем (Mac OS X/Linux/Android), последний 8086tiny_125.tar.bz2 (мартовское обновление 2014г);
 b) Распакуем архив в какую либо папку, в домашней директории, назовем ее 8086tiny (обзовите как хотите);
 c) Откроем терминал (Ctrl+Alt+T) и перейдем в директорию исходника

$ cd 8086tiny
и выполним команду
$ make
gcc, возможно обратит ваше внимание,

что игнорируется проверка возвращаемых значений 'read' и 'write', в строках 290 и 668 (в погоне за минимализмом похоже ее выкинули), можно проигнорировать (файл 8086tiny все равно будет создан), а можно допилить 8086tiny.c, добавив эту проверку
[как то так, я в этом не мастак :)]
в стр.290

read(disk[2], regs8 + (reg_ip = 0x100), 0xFF00);
добавляем проверку
if (read(disk[2], regs8 + (reg_ip = 0x100), 0xFF00) == 1) {
   // successfully read
 } else {
   // failed to read integer
}

, так же и в стр.668
write(1, regs8, 1)
с проверкой
if (write(1, regs8, 1) == 1) {
   // successfully read
} else {
   // failed to write integer
}

, предупреждения должны пропасть

В любом случае мы получили что хотели - бинарник 8086tiny.

 Обратите внимание, что в архиве, а то бишь уже в нашей папке, лежит собранный файлик bios, можете скомпилировать свой, взяв исходник из папочки bios_source (файлик bios.asm), для этого потребуется ассемблер NASM (в наличии "Центра приложений Ubuntu"), пока воспользуемся готовым. Так же найдете готовый образ дискеты с ОС FreeDOS - fd.img

Использование 8086tiny в Ubuntu
Командная строка:

$ ./8086tiny bios-image-file floppy-image-file [@][harddisk-image-file]
, если harddisk-image-file с префиксом @, то 8086tiny загрузится с образа жесткого диска. В противном случае 8086tiny загрузиться с образа дискеты - floppy-image-file.

Под UNIX системами, клавиатура должна быть установлена в нестандартный режим, для этого в архиве имеется скрипт для запуска runme (он должен лежать в одной папке с 8086tiny, bios, fd.img):
[runme]

#!/bin/sh
clear
stty cbreak raw -echo min 0
if [ -f hd.img ]
then
    ./8086tiny bios fd.img hd.img
else
    ./8086tiny bios fd.img
fi
stty cooked echo


, как видно из скрипта 8086tiny загружается с fd.img, а при наличии в этой же директории образа жесткого диска с именем hd.img подключит и его. Можете поправить скрипт для своих образов дисков.

Щелкните по runme мышкой, и выберем "Запустить в терминале",

 результат не заставит себя долго ждать

Странно, не правда ли? В терминале Ubuntu операционная система DOS :)

На образе fd.img имеется игрулина "Alley Cat"(год выхода 1984), так что можете проверить графические возможности 8086tiny, запустив из строки приглашения команду:
A:\>ALLEYCAT



Источник: http://airvikar.ru/publ/ehvrika/ehmuljator_8086tiny_na_ubuntu/6-1-0-10
Категория: Эврика | Добавил: Soliton (19.11.2014) | Автор: Airvikar W
Просмотров: 1508 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
...
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0