SPC/AT Эмулятор ЧАВО


Рекомендуемые системные требования хоста:
- 2x-ядерный ЦПУ по крайней мере (быстрее ядра - выше скорость);
- 2 Гб ОЗУ по крайней мере (для большего размера эмулируемой ОЗУ);
- OpenGL-совместимая видеокарта (для быстрой отрисовки экранов);
- Дисплей с частотой обновления 70Гц для плавной VGA-эмуляции (или можно отключить верт.синхронизацию в драйвере).
- WinXP/32 по крайней мере (но референсной платформой для Win-версий эмулятора является Win7/64 на данный момент).

Текущее эмулируемое аппаратное обеспечение:
- x86 и x64 модели процессоров (от P5/K5 до Sandy Bridge/Bulldozer микроархитектур):
    * поддерживаются Legacy (16/32-битный) и Long Mode (compatibility и 64-битный режим);
    * реализованы расширения набора инструкций до SSE 4.2 включительно, AVX в процессе реализации;
    * эмуляция расширений виртуализации (VMX и SVM) в процессе добавления (частично реализованы);
    * Примечание: не все возможности реальных моделей пока реализованы, только основные, которые требуются для работы ПО.
- VGA/SVGA с поддержкой 8/16/32-битного цвета (в настоящее время только VGABios-совместимая PCI SVGA-карта включена в релизные версии);
- до 512Мб ОЗУ и 16Мб видеопамяти (больше - в 64-битной версии);
- дисковые интерфейсы HDD (ATA/IDE) и CD/DVD (ATAPI);
- звуковая карта SoundBlaster 2.01 (8-bit/44Khz моно) с OPL2;
- прочие стандартные устройства и интерфейсы (PCI, RTC/CMOS, PIT, PIC, DMAC, PS/2 мышь и клавиатура, и т.п.);
* поддержка гостевых ОС: MS-DOS/FreeDOS, Win3.x/9x/NT/2k/XP (и некоторых других).
* мультиплатформенное ядро эмуляции, включая GUI и динамический рекомпилятор (в x86, x64, ARM32; и ARM64 в процессе добавления);
* поддержка сохранения/загрузки состояний.

Настройка эмулятора на максимальную производительность:
1) ВСЕ: Выбрать "OpenGL renderer" в меню "Видео" (он значительно быстрее чем WinGDI);
2) ВСЕ: Выставить частоту процессора "Авто" в меню "Компьютер" (режим плавающей частоты, зависящей от скорости хоста);
3) ВСЕ: Установить частоту обновления дисплея на хосте в 70Гц (и/или отключить вертикальную синхронизацию в настройках видео-драйвера);
4) DOS: Включить "РЕЖИМ ДОС" в меню "Компьютер" для более быстрого исполнения приложений под MS-DOS/FreeDOS (но лучше не использовать данный режим при эмуляции других ОС - вследствие ограничения памяти 64Мб, и эмуляция EMS конфликтует по крайней мере с менеджером памяти Win9x);
5) WIN: Для некоторых игр конфигурация "совместимость" (P/Pro) может быть несколько быстрее, чем конфигурации с современными процессорами - вследствии быстрой эмуляции FPU (хорошо оптимизирована за годы) и не очень быстрой (пока) эмуляции мультимедийных инструкций (MMX/SSE) (еще не оптимизировались для максимальной производительности, поскольку находятся пока в состоянии проверки и улучшения совместимости).
Какую конфигурацию использовать, должно определяться по реальной производительности игры (а не по скорости ЦПУ в заголовке окна - мультимедийные инструкции делают больше работы за меньшее количество тактов процессора, поэтому счетчик Мгц при их активном использовании может показывать меньшие значения, даже если они работают быстрее чем FPU).
6) ОПЦИОНАЛЬНО: Для максимизации производительности лучше закрыть все открытые приложения гостевой ОС. Даже если они в основном находятся в режиме ожидания, они могут отбирать некоторое количество производительности (совсем небольшое) у эмулятора (наблюдается в бенчмарках) вследствие чувствительности скорости эмуляции к любым задержкам в системе.

Что можно сделать, если какая-то ОС не хочет запускаться в эмуляторе:
1) проверить, отключен ли "Режим ДОС" в меню "Компьютер" (он должен использоваться только для DOS из-за малого размера ОЗУ и эмулируемой EMS);
2) выбрать референсную БИОС (SeaBIOS 1.6.3);
3) смонтировать по крайней мере один HDD в слот (не все ОС-и толерантны к остутствию хотя одного HDD в эмуляторе);
4) выбрать стабильную частоту ЦПУ (некоторые ОС могут быть чувствительны к стабильности таймингов, особенно при старте);
5) некоторые ОС имеют известные на реале баги (например, NT4 не любит слишком глубоких CPUID, поэтому её нужно запускать на старых моделях ЦПУ - в реале для новых моделей это решалось исскуственным ограничением глубины через настройку в БИОС).
Если все вышеперечисленные шаги не помогли, возможно, данная ОС пока просто не поддерживается эмулятором.

Как управлять FDD, HDD и DVD/CD дисками в эмуляторе:
- Для вставки образа диска в слот надо сделать двойной щелчек мышью по иконке диска (или использовать меню "Дисководы");
- Чтобы отключить некоторый образ диска (без его извлечения) надо сделать нажатие правой кнопкой мыши на иконке диска;
- Для извлечения образа диска из слота можно использовать меню "Дисководы" (но обычно не нужно - проще отключить, как в предыдущем пункте);
- Чтобы проверить, какой файл вставлен в слот диска, надо навести курсор мыши на иконку диска (чтобы всплыла подсказка);
- Порядок, в котором диски используются для загрузки систем, по умолчанию следующий: FDD, затем DVD/CD, затем HDD. Для принудительного задания загрузочного устройства можно использовать меню "Дисководы" (если это необходимо).
- Чистые образы дисков могут быть загружены с сайта эмулятора:
    * 32Мб-2Гб, для все систем (4.8Мб, zip) (совместимы почти со всеми гостевыми ОС, включая MS-DOS и Win9x);
    * 4-8Гб, для WinXP и более поздних ОС (1.7Mb, 7zip) (только для более современных гостевых ОС типа WinXP; слишком большие для MS-DOS).
- ОБНОВЛЕНИЕ-2014: Теперь можно монтировать папки хост-системы как виртуальные жесткие диски в режиме Чтения/Исполнения (используя меню "Дисководы", или удерживая клавишу Ctrl + двойной щелчек мышь на иконке диска).
  * После монтирования, когда эмуляция стартует, иконка диска отображает статус смонтированной папки:
      - Зеленый цвет иконки - все файлы из папки смонтированы;
      - Красный цвет иконки - не все файлы смонтированы (папка слишком большая, лучше смонтировать одну из её меньших размерами подпапок);
  * Лучше рестартовать эмуляцию после каждого монтирования папок (чтобы сбросить дисковые кэши гостевой ОС);
  * Сохранение состояний полностью совместимо с данной возможностью (изменения на папке-диске сохраняются в .sav-файл);
  * Чтобы посмотреть, какая папка смонтирована в слоте диска, надо навести курсор мыши на иконку диска (чтобы всплыла подсказка).
  * ПРИМЕЧАНИЕ: Смонтированные как диски папки имеют очень небольшое место для записи файлов (временный буфер - достаточный для того, чтобы позволить исполнение софта, который хочет записать что-то небольшое на свой диск во время работы). Все изменения, сделанные на диске-папке, записываются в данный буфер, и теряются после закрытия эмулятора (но сохраняются между перезапусками эмуляции по Старт/Стоп, и в случае сохранения/загрузки состояний эмулятора).
  * ПРИМЕЧАНИЕ: Лучше всего не использовать подключение папок при инсталляции GUI-осей. Поскольку некоторые такие ОС могут попытаться сохранить большие (например, распакованные) файлы на данный диск, и не смогут этого сделать в силу небольших размеров буфера записи - в результате выдав ошибку или просто подвиснув. Поэтому для совместимости лучше отключать папки-диски перед инсталляцией ОС и использовать только образы дисков для этого. После инсталляции папки-диски можно опять свободно использовать.

Когда какое-то там устройство/возможность появятся в эмуляторе?:
Когда будет готово к релизу - примерно 40% кодовой базы эмулятора активируется пока только в версии разработчика, поскольку пока не полностью готово для релизов (или просто отложено для релиза в определенное время - когда какие-то сопутствующие возможности будут готовы тоже).
Основной принцип: ориентированные на игры вещи имеют более низкий приоритет по сравнению с системно-ориентированными (направленными на обеспечение работоспособности современных ОС и фирмваре типа UEFI). Это ответ на вопросы из прошлого типа "почему эмуляция Sound Blaster была добавлена только в 2013, если проект стартовал в 2007, и даже динарек был реализован в том году". И ответ на схожие вопросы в настоящем (теперь о 3D-ускорении).

Если ли какой-то определенный график релизов?:
Проект разрабатывается, используя часть от свободного времени, которая зависит от различных вещей в реальной жизни. Поэтому довольно трудно планировать релизы, зная, что в некоторые годы может быть совсем мало времени на что-то, даже если в некоторые периоды его и хватает (в зависимости от реала). Поэтому релизы появляются в основном "по готовности", и в процессе разработки часто бывают паузы различной длины. Это помогает не потерять интерес и не забросить проект в течение долгих лет разработки, которые требуются для проектов такой сложности. Поэтому рано или поздно - но новый релиз всегда обычно случается (не говоря уже об мелких обновлениях) :)

Какие тайминги используются при эмуляции ЦПУ (в настоящее время)?:
Все модели процессоров пока используют тайминги Пентиума (почти те же, что и в версии эмулятора 2007 года - это полезно для сравнения роста производительности эмуляции с течением времени). Зависящие от моделей тайминги были реализованы для 8086-80486 процессорах в предыдущих версиях, и могут быть приблизительно подобраны для всех современных моделей в будущем (они всегда были реализованы в виде таблиц, а не встроены в инструкции). Но учитывая суперскалярную/конвейрную архитектуру современных ЦПУ это довольно бесполезное занятие - тайминги никогда не будут особо реалистичными для современных процессоров.
К тому же никогда не существовало референсной реализации x86 машины (исключая возможно оригинальные модели IBM 8086/286 ). Все более поздние x86 машины имели различные ЦПУ, кэши, чипсеты, шины, скорости ОЗУ и видеопамяти, и т.п., с различным влиянием на итоговую производительность (от относительно медленной до довольно быстрой даже с тем же самым процессором). Поэтому полная функциональная модель (с точки зрения программиста - реализованная со всеми проверками и особенностями, для запуска реальных ОС и фирмваре), которая позволяет достичь относительно юзабельного уровня производительности, является наиболее практичным подходом к эмуляции более-менее современных компьтерных x86 систем.
Примечание: эмулятор использует только тайминги ЦПУ для расчета скорости эмуляции. Не используются пенальти на промахи кэша/шину/VGA и т.п., которые не имеют отношения к производительности эмуляции, а только увеличивают счетчик Мгц (и весьма сомнительны даже с точки зрения реалистичности, без тщательных исследований на реальной аппаратуре некоторой выбранной для эмуляции машины). Поэтому их не планируется добавлять даже в виде опции.

Как можно сообщить о баге?:
Только через e-mail (хотя оно не проверяется слишком уж часто, так что терпение). Я не особо интересуюсь зависанием на форумах в настоящее время (свободное время - ценный ресурс :). Наиболее приветствуются отчеты о багах, относящихся к работе эмулятора на разных хостах, с разной аппаратурой и ОС. В случае гостевых приложений: баги в играх имеют меньший приоритет, в сравнении с багами в системном ПО (область первоочередных интересов эмулятора).

Драйвер видеокарты для гостевой Windows:
Видеокартой по умолчанию для эмулятора является VGABios-совместимая SVGA карта (подобная той, что используется в Bochs и QEMU проектах, поэтому своего рода индустриальный стандарт).Windows 9x/NT не включали SVGA-драйвера для неё в стандартную поставку, естественно, поэтому не могут установить их автоматически.
Для того, чтобы получить Hi/TrueColor SVGA-режимы в Windows, необходимо установить драйвер видеокарты вручную:
1) Windows должна быть проинсталлирована на конфигурацию с шиной PCI (чтобы PCI видеокарта могла быть обнаружена системой);
2) после этого для устройства "Standard (generic) PCI VGA adapter" (в "Мой компьютер/Управление устройствами" - или как там в локализованной ОС) нужно обновить драйвер на "VBE miniport driver", загруженный с:
  - [Win9x]: http://navozhdeniye.narod.ru/vbe9x.htm;
  - [WinNT]: http://navozhdeniye.narod.ru/vbemp.htm;
  (лучше использовать универсальные версии драйвера (\UNI) в обоих случаях);
  - [WinXP]: не нужно никаких драйверов, режимы VESA поддерживаются как стандартные.
3) затем можно выбрать любую поддерживаемую VESA глубину цвета (8/16/24/32) и разрешение экрана через панель "Настроек экрана" (как обычно).
ПРИМЕЧАНИЕ: SeaVGABIOS имеет некоторые недоделки и ограничения, но в основном нормально работает с системным ПО, поэтому теперь она используется по умолчанию в эмуляторе (вместо устаревшей VGABIOS).
ПРИМЕЧАНИЕ: Более продвинутые модели видеокарт в настоящее время доступны только в версии разработчика (один были вообще убраны из релизов, другие планируется перерелизить в какой-то момент в будущем - типа 2D/3D-акселераторов).

Звук:
- Эмулятор в настоящее время эмулирует Sound Blaster 2.01 со следующими настройками: Port 220, IRQ 7 (5), DMA 1.
- IRQ 7 (по умолчанию - нужно для некоторых DOS-игр, например от Sierra) или IRQ 5 конфигурируется через меню "Звук/Sound Blaster" в эмуляторе.
- Если Windows конфигурирует данные настройки некорректно (после инсталляции - например, IRQ), нужно зайти в настройки драйвера Sound Blaster в гостевой системе (в "Мой компьютер/Управление устройствами"), отключить автоматическую конфигурацию и задать правильные значения вручную.
- Некоторые более новые версии Windows (XP) не имеют драйверов для оригинальных SB (только для SB16). В этом случае лучше просто отключить "неизвестное устройство" в настройках драйвера, чтобы драйвер для SB больше не запрашивался при каждом старте системы. Эмуляция SB16 будет доступна в одном из обновлений в будущем (не является особого приоритетной).

DVD/CD в гостевой Windows:
Если при инсталляции гостевой Windows в DVD/CD-слот был вставлен образ диска (т.е. привод был не пустой), тогда Windows детектирует DVD/CD-привод автоматически во время инсталляции. В других случаях (если Windows не видит DVD/CD-привод, даже если в нем присутствует образ диска), в "Мой компьютер/Управление устройствами" гостевой ОС надо кликнуть на кнопке "Обновить", чтобы Windows могла найти соответствующее устройство (только раз - после свежей инсталляции).

MS-DOS (гостевая):
Загрузочные диски FreeDOS доступны на: http://www.freedos.org/download.
ПРИМЕЧАНИЕ: Перед запуском ДОС-игры настройте правильные установки звука для неё, иначе некоторые игры могут виснуть при запуске (из-за звука).
Рекомендуемое содержимое CONFIG.SYS для MS-DOS (или просто можно использовать загрузочную дискету от Win9x):
device=himem.sys   - для подключения поддержки Extended Memory (выше 1Мб)
dos=high   - переместить DOS в High Memory (для высвобождения памяти для приложений)
files=40
buffers=30
stack=10,256
lastdrive=z
rem devicehigh=oakcdrom.sys /D:mscd001
   - поддержка CD-ROM (удалить "rem" когда она нужна, вернуть назад чтобы освободить больше памяти)
rem devicehigh=emm386.exe 4096
    - для подключения поддержки Expanded Memory (удалить "rem" когда она нужна);
    - но этого делать не рекомендуется, поскольку процессор при этом переключается в медленный Virtual86 режим;
    - лучше использовать "Меню->Компьютер->Режим ДОС" для эмуляции EMM (очень быстрой!).
Рекомендуемое содержимое AUTOEXEC.BAT для MS-DOS (или просто можно использовать загрузочную дискету от Win9x):
@SET BLASTER=A220 I7 D1 T2
   - конфигурация Sound Blaster (порт, IRQ, DMA, тип). При конфигурировании вручную (в играх): Port 220, IRQ 7, DMA 1.
    Примечание: IRQ 7 (по умолчанию - нужно для некоторых DOS-игр, например от Sierra) или IRQ 5 конфигурируется через меню "Звук/Sound Blaster" в эмуляторе.
@SET PATH=D:\QUAKE1   - путь к папке Quake1 (если это необходимо), для избежания сообщения "OMPT=" от DPMI-extender-а.
rem lh mscdex.exe /D:mscd001 /L:F
   - поддержка CD-ROM (удалить "rem" когда она нужна, вернуть назад чтобы освободить больше памяти)
lh ctmouse.exe   - драйвер мыши (маленький по размерам Cute Mouse из http://cutemouse.sourceforge.net или другой подходящий - типа "mouse.com" от Microsoft)
lh vc.com   - Volkov Commander (http://vc.kiev.ua/download) или DOS Navigator (http://www.dnosp.com/) - менеджеры файлов.

Linux (гостевая):
- В настоящее время тестируются в основном только LiveDVD от различных дистрибутивов;
- Установленные на диск системы загружаются в эмуляторе намного быстрее, чем LiveDVD (нет необходимости ничего распаковывать, загружаются только нужные драйверы и т.п.);
- Лучше сделать процесс загрузки Linux более информативным (чтобы на экране был видимый прогресс в случае медленной загрузки):
  * нажать Tab или F6 (для Ubuntu) и удалить из загрузочных настроек "quiet" и "splash";
  * добавить "debug" - опционально (если это необходимо).

OS/2 Warp 4 (гостевая):
Для загрузки с eComStation Demo DVD (http://www.ecomstation.com/democd/) необходимо:
  - выбрать "Boot with menu for own values" в стартовом меню диска (а не значения по умолчанию!);
  - изменить "Target Hardware" с "Modern Hardware" на "Legacy Hardware";
  - нажать F10 и затем Enter для продолжения;
  - дождаться появления десктопа системы. Если панель задач уже видима, но иконки десктопа еще нет - тогда перезагрузиться и попробовать опять (объяснение ниже).
Примечание: Эмуляция системного таймера (или может RTC) в SPC/AT не полностью совместима с eComStation. Поэтому не работают системные часы (хотя всё остальное, похоже, работает нормально). Также это может вызывать некоторые другие баги (только при запуске системы):
  - десктоп иногда не загружается полностью (панель задач видима, но иконки на десктопе отсутствуют). Только перезагрузка гостевой системы может помочь;
  - всё загружается нормально, но начальное окно "Help/Welcom" может быть запущено несколько раз (а не только один раз, как положено). Тогда нужно просто закрыть эти окна, и продолжать работу как обычно.
Примечание: Оригинальные (и модернизированные) демо-CD с IBM OS/2 также существуют, более совместимые с эмулятором.




All trademarks mentioned above are property of their respective owners.

Belarus 2014-2017
w.a.d.i.m.s.p.c.@.g.m.a.i.l.,.c.o.m