Данная страничка посвящена поддержке эмулятора "Soviet PC". Эмулятор является развитием эмулятора ПЭВМ Корвет, созданного
в августе-сентябре 2004 года и несколько улучшенного в 2007. В настоящее время
кроме Корвета сэмулирован PC/XT-совместимый компьютер, реальные и защищенные
режимы PC/AT и PC/386. На создание нормального сайта времени и интереса пока не появилось, поэтому пока пусть
будет такой - традиционный. Данный сайт поддерживается как авторский (в мае 2007 с появлением Soviet PC
пришел на смену старому сайту Virtual Korvet). Основной блог/сайт проекта с июня
2007 sovietpc.old-games.ru (просто с привычного
narod-а перебираться трудновато)...
Don't forget to activate fast OpenGL-rendering in "Video" menu after first start
При возможности включите быструю OpenGL-отрисовку в меню "Видео"
Внимание, лицензионное соглашение! Эмулятор является полностью бесплатным,
предназначен для частного некоммерческого использования и используется
Вами на свой страх и риск. Автор не обязуется поддерживать и развивать
программу, не несет ответственности за любой ущерб и недополученную прибыль, которую повлекло
за собой использование данной программы. Все права на программу остаются
за автором. Если Вы не согласны со всем вышеизложенным - не скачивайте и
не используйте программу (т.е. эмулятор), а если скачали - удалите.
11.10.2007 Всё-таки решил начать полную зачистку исходников от всего устаревшего
кода доPCшных времен, поскольку его поддержка мешает нормально развивать
мультиэмулятор (баги с клавиатурой и т.п.). Т.е. временно удаляется поддержка
Корвета и код зачищается от остатков исходной Корвет-ориентированности.
Остается универсальное ядро эмуляции и построенная на нем эмуляция x86-машин,
которую я постепенно перенесу на скрипты (в процессе развития). Прочие платформы
(в том числе и обновленная реализация Корвета) будут появляться уже изначально
на скриптовом движке и с динамическими CPU-ядрами. Так что
подверсии 0.18.2 возможно придется подождать до след. недели и там пока останутся только x86-машины. Зато развивать эмулятор станет
значительно проще и удобнее (и быстрее)...
07.10.2007 Выложена альфа-версия 0.18.1. Пофикшены многочисленные
баги (в основном с клавиатурой), появившиеся в версии 0.18.0 :) Кроме того,
исправлена и улучшена поддержка AT-клавиатуры, а также повышена эффективность
использования кэша рекомпиляции (максимум теперь 1024 Кб при реальных 64 Мб).
Теперь "Cached %" не должен проседать даже на самых требовательных
приложениях (при нормальном размере кэша). Ну и несколько небольших оптимизаций по скорости. В общем, данная
подверсия является багфиксом к предыдущей, которая была очень сырой. Новый
функционал и дальнейшие доработки CPU пойдут со следующей подверсии.
English: Fixed all real-mode bugs, introduced in 0.18 version, improved emulation of
AT-kbd controller i8042, substantially improved recompilation cache usage,
some small optimizations and speedups (i.e. this is bugfixing to previous
version).
02.10.2007 Выложена первая альфа-версия из серии 0.18.x. Главное добавление -
предварительная поддержка защищенного режима, так что многие DOS-приложения защищенного
режима запускаются и даже зачастую работают (в частности использующие DOS-экстендер
dos4gw - например, shareware Doom и т.п.). Но, естественно, много чего еще не работает
по разным причинам (не только из-за процессора - причины могут быть и в эмуляции
БИОС, и в клавиатуре, и в видео, и т.п.). Да и скорость пока что не очень (особенно
в плане FPU-сопроцессора, который может серьезно просаживать производительность,
особенно на трехмерных играх второй половины 90х). Ну да главное, что защищенку
вообще удалось запустить - слишком много в ней моментов, когда малейшее отклонение
от правильной реализации срывает исполнение не непосредственно в месте ошибки,
а где-то дальше, и и обнаружить, в чем причина, бывает довольно трудно. Особенно
когда пока ещё вообще ничего не работает и неизвестно, что правильно реализовано,
а что нет... В общем, кому интересно - смотрите (багов пока много - я знаю :).
Более подробный текст, как обычно, в окне "Что нового?" эмулятора (в том числе
и на вроде-как английском).
08.09.2007 Совсем немного времени на эмулятор теперь удается выделять, соответственно
данная версия делалась довольно долго (новое ядро всё-таки, а не мелкие дополнения).
Тем не менее уже можно ознакомиться с базовой версией 0.17 (после которой, как обычно, последует серия небольших
дополнений/багфиксов под номерами 0.17.x). Изменения прописаны в окне "Что нового?"
программы (есть русский и английский варианты текста). Главное изменение - новое (динамическое) x86-ядро, хотя прежнее
пока тоже доступно. Пока доступен только реальный режим, прочие не успел полностью
активизировать - ньюансов много, времени не очень...
09.08.2007 В принципе уже стабильно тянет что-то типа 486DX2/66-70Mhz
(на 2Ггц AthlonXP), будем изыскивать дальнейшие резервы несложного подъема
производительности путем оптимизиции узких мест. Сложный останется на осень,
видимо, поскольку он заключается в создании интеллектуального оптимизатора
генерируемого кода, позволяющего поднять производительность еще не менее
чем в два раза - но и возиться с ним надо будет больше времени.
06.08.2007 Релизов пока нет (рановато еще), просто некоротенькое сообщение
для интересующихся. После нескольких попыток (в поисках компромисса между
простотой/понятностью/краткостью кода и производительностью ядра) было успешно
создано x86-ядро 2-го поколения, или динамический рекомпилятор кода (1-ым поколением было
прежнее ядро-интерпретатор, 3-им поколением было бы ядро-виртуализатор - если бы до него руки когда-нибудь дошли).
Рекомпилятор пока не сильно интеллектуальный, код генерирует довольно
"грязный", поэтому производительность на данный момент всего лишь в 2-2.5 раза
больше прежнего ядра (т.е. сравнима с производительностью ядра normal досбокса).
Соответственно есть серьезный потенциал для её роста еще в
несколько раз (повышением качества генерируемого кода и оптимизацией его
взаимодействия с виртуальной аппаратурой), хотя возможно и не сразу. Пока
основные работы ведутся в данном направлении (дополнительном выжимании из
нового ядра того, что можно выжать по-быстрому - более тонкий тюнинг будет
происходить далее со временем). Соответственно нормально протестирован пока
только реальный режим (как минимально необходимый для работы над производительностью).
Поддержка остальных режимов вроде реализована, но запускать и проверять их пока
руки не дошли (поскольку для этого надо исправлять виртуальный биос или подключать
реальные от 386+, т.е. отвлекаться от процессора). По завершению
процесса "быстрого" выжимания производительности (видимо в течении ближайших пары недель)
будет выложен апдейт 0.17 с новым ядром и пока только реальным режимом (возможно
в виде отдельного CPU 486 (RM) + FPU, а может успею и 8086-80386 процессоры на него
перевести). Далее уже в online-режиме будут вводиться-тестироваться остальные
режимы 386/486 процессоров (Protected и Virtual86), а также более тонко
тюнинговаться производительнось, ну и прочее обещанное будет делаться.
Новое x86-ядро станет основным и переписываться больше не будет (разве что в
плане портирования на другие языки), т.е. будет развиваться исключительно
эволюционно до полной точности и максимально возможной для него скорости.
Cтарое x86-ядро к концу сентября скорее всего полностью уйдет в историю, выполнив свои задачи.
18.07.2007 Ухожу в продожительный offline, дабы ничто не отвлекало
от создания полноценного ядра с защищенным режимом (будет делаться с нуля
по техописанию 486 процессора). Хочется всё-таки запустить Doom и прочие
подобные бенчмарки. Скорее всего в районе середины-конца августа
будет готово в виде интерпретатора (т.е. процедурное), затем (уже в online-
режиме) начнется мутация его в форму компилятора (т.е. в динамическое), под
что оно будет проектироваться изначально. Соответственно до тех пор эмулятор
останется реально-режимным, скорость текущего ядра особо подниматься не будет,
новые устройства добавляться тоже. Буду только потихоньку исправлятся всяческие баги и недоделки в
существующем функционале (чтобы все программы реального режима нормально
работали). А также нарабатываться возможности для внешнего расширения и кое-какие
мелочи, касающиеся подготовки к эмуляции отечественных x86-ПЭВМ. Апдейты никак
комментироваться не будут, будет менятся только их дата на сайте ввеху (на днях будет очередной). Если
надо - можно качать, если не надо - лучше не качать :) Гостевую отключил пока,
чтобы не отвлекаться на её поддержку. Если какие вопросы почему-то возникнут -
то можно пользовать или форум, или мыло. Скорее всего не реже раза в неделю буду заглядывать-отвечать.
(Started development of new protected mode 486 kernel. First release presumably be
ready in late August. So on-going releases will be mainly bugfixes in nearest future).
Текущее состояние эмуляции x86-платформы:
1) процессор I8086 - сэмулирован полностью, I80286 и I80386 - пока
только реальный режим. Растактовка команд приближена
к реальной. Сопроцессор тоже в основном сэмулирован (разве что некоторые
исплючения по ошибкам еще не активизированы). Растактовка команд
пока нереальная (забита константа).
2) БИОС виртуальный - т.е. обращения к нему перехватываются и исполняются
в коде эмулятора, а не в эмулируемой машине - для простоты реализации.
Пока он реализован/отлажен не полностью и некоторые функции не работают
(или работают не совсем корректно) - врочем, в основном маловажные.
На софт виртуальность БИОСа никакого влияния не оказывает - всё прозрачно.
3) видеопроцессор CGA - сэмулирован на уровне основных портов, пока есть
некоторые недоделки в текстовых режимах (с мерцанием, например), в основном
маловажные. EGA/VGA сэмулированы на уровне основных портов и основные
графические режимы работают нормально. Не поддерживается пока несколько
редко используемых графических режимов и расширенные текстовые (т.е. с размерами
символов 8x14, 8x16) - вместо них используются текстовые режимы 8x8 (т.е.
CGA-подобные).
4) звук - PC Speaker-ный (спикер), вроде в большинстве случаев работает нормально.
5) НГМД и НМД тоже эмулируются через БИОС, хотя для НГМД есть и железная эмуляция
контроллеров - проверялась на биосе "Поиске-1", но она будет подключаться
только для реальных биосов. Активны дисководы A и B, можно пользоваться
образами дискет стандартных емкостей. В дисководы C: и D: можно вставлять
образы жестких дисков. Образы понимаются только несжатые и без лишних заголовков пока
(т.е. .ima, .img и т.п., всякие ddi и td0 пока не понимаются). Загрузочными
пока могут быть только дискеты, загрузка системы с жестких дисков не понимается
эмулятором. Записывать софт на диски можно через менеджер диска - он в основном
поддерживает FAT12/FAT16 - через импорт/экспорт файлов. Если же нужна
передача папок - то лучше использовать импорт архивов, которые затем
распаковывать в эмуляторе (хотя поддержка папок будет введена со временем).
6) Встроенную виртуальную DOS делать пока не предполагается - поскольку
есть нормальная бесплатная FreeDOS, которая
хорошо себя чувствует в эмуляторе. Ну и любимая некогда оболочка -
Volkov Commander - тоже живет.
А образы всяких-разных загрузочных дисков можно в интернете много где
найти.
7) Клавиатура XT-ная, через BIOS частично поддерживается работа с ней
как с AT-шной.
Основные цели и задача программы - эмуляция советских ПЭВМ. Хотя пока их
реализовано мало - собственно, только Корвет, ибо PC/XT пока реализован
в неспециализированном варианте, т.е. не относится ни к одной из реальных
советских моделей. Но это только начало - к тому же на подходе эмуляция
Поиска-1 (собственно, она рабочая, я её делал параллельно с обобщенным
PC/XT, просто пока в эмулятор не включил - сначала надо PC/XT нормально
доделать).
Поскольку большинство советских персоналок в той или
иной степени являлось клонами западных оригиналов, эталонные
машины (типа PC/XT и тп.) также присутствуют (будут присутствовать)
в эмуляторе. Приоритетом является эмуляция 16/32-битных систем,
поскольку 8-битки (особенно бытовые) чаще всего слишком просты и
имеют массу эмуляторов (хотя и их добавлю со временем). А из этих
систем основной упор пока будет делаться на x86-платформу -
поскольку там много с чем есть повозиться, было достаточно много
советских моделей, да и вообще практически полезно - это основная
рабочая платформа и в настоящее время. Ближайшая "эталонная"
цель - реализовать полноценный эквивалент PC/AT 386+сопр.+
защищенный режим+VGA/SVGA - поскольку советская гражданская серия
ПЭВМ ЕС закончилась вроде как на подобной модели. Из "реальных" моделей
пока основная цель - бытовой ПК "Поиск-1" и профессиональная
ПЭВМ EC1841 (по ним есть информация и БИОСы). Для остальных
x86-моделей (ЕС18xx, Истра 4816, Искра 1030М, Ассистент и т.п.) всё
это пока в розыске.
Основной упор при эмуляции "реальных" машин будет делаться
на как можно более полную бинарную совместимость с их
железными вариантами - чтобы были работоспособны оригинальные
БИОСы и софт, написанный специально для данных машин
(пользующийся их особенностями). Эмуляция машин-"эталонов" будет
придерживаться тех же принципов, за исключением того, что они будут
работать с виртуальным биосом (реализованным в коде программы) -
для простоты и удобства отладки, внесения изменений и т.п. - но
чтобы опять же работали системные тесты/утилиты, созданные для
данных машин.