Краткая история разработки эмулятора (по страницам прежних версий сайта):
------------------------------------------------------------------------

================================================
SPC/AT/XT/Korvet/BK etc. - Новые времена (2012+)
================================================

//TODO - в процессе дополнения

Цитата из какого-то сообщения (2012):
"Новый мультиплатформенный движок эмуляции, универсальное ядро JIT-рекомпиляции
(пока реализованы x86 и ARM-таргеты), универсальная библиотека GUI, полная
совместимость с любыми компиляторами C++, поддерживающими как минимум стандарт 
1998 года. Чтобы раз и навсегда решить проблемы с переносимостью на новые девайсы 
(по крайней мере, пока под них есть возможность компилировать C++-код)."

[---- осень 2009 - начало 2012 - перерыв ------------------------------------------------]
[---- Изредка велась доработка мультиплатформенного ядра эмуляции и других вещей.--------]

====================================
Script PC - Средние века (2008-2009)
====================================

Переделан движок эмуляции, избравившись от наследия ранне-корветовских времен.
Интегрирован самописный скриптовой движок (2001-, бейсик с объектами и JIT-компиляцией :)
Появилась возможность эмулировать любые конфигурации компьютеров
непосредственно в скриптах (и подключать функционал из внешних dll при желании).

(2012: На данный момент наверняка есть проблемы с интерфейсом на экранах с высоким DPI,
может как-нибудь дойдут руки поправить. Также Hardware BIOS (от Bochs) должен быть
версии тех лет - 2008-2009, более поздние, помнится, потребовали некоторых
изменений в эмуляции прерываний, которые я внес уже в SPC/AT, иначе висли).

Версия 0.006 (31.07.2009) 
 - добавлен простой редактор скриптов с подсветкой синтаксиса;
 - более заметное мерцание иконок приводов при доступе;
 - предварительная эмуляция PDP-11 совместимого 16-битного ЦПУ;
 - добавлены конфигурации советского компьютера БК-0010.xx ;
 - предварительная эмуляция Motorola 68000 32/16-битного ЦПУ;
 - добавлена конфигурация приставки Sega Genesis (пока нерабочая);
 - некоторые другие изменения и усовешенствования.

Версия 0.005 (03.07.2009) 
 - полностью переделана работа с эмулируемыми приводами различных
   типов (в ядре, интерфейсе и скриптах), а также усовершенствована
   индикация их состояния, в том числе и мерцанием при доступе.
 - добавлены более-менее работоспособные конфигурации трех 
   простых консолей (ColecoVision, Nintendo NES, Sega Master System) и
   компьютера "MSX-1" (пока только с поддержкой картриджей). Сами
   конфигурации (в том числе и маппинг) реализованы в скриптах.
   Видео пока реализовано только в коде ядра. Что-то уже работает,
   что-то еще нет, много глюков, багов и т.п. Но для начала сойдет.
 - некоторые небольшие изменения и поправки. 

[--- Январь 2009 - Июнь 2009 - перерыв, некоторые работы по эмуляции 8-битных консолей  ---]

Версия 0.004 (27.01.2009) 
 - некоторые версии известной ОС середины/конца 90х (Win9x) должны уже
   работать в данном релизе эмулятора. Для этого можно попробовать
   новые "TEST OS" конфиги. Лучше использовать "TEST H/W" конфиг
   с бинарным БИОС-ом, поскольку "TEST S/W" со скриптовым БИОС
   сильно тормозит в них;
 - сэмулирован UART/COM i8250 (Library\EmuLib\Chip\com_i8250);
 - сэмулирована MS Serial Mouse (Library\EmuLib\Input\ms_mouse);
 - опция удаления одинаковых строк в меню сообщений консоли;
 - БИОС и входной x86 CPU помещены в конце адресного пространства;
 - некоторые исправления и оптимизации (Q1 немного быстрее).

Версия 0.003 (02.01.2009) 
 - добавлена скриптовая VGA BIOS (Library\EmuLib\Bios\SPC_X86\Vga).
   Теперь VGA используется в скриптовых конфигах по умолчанию.
 - PC/486-AM теперь автоматически пишет параметры HDD в CMOS.
 - добавлена консольная команда "dumpcmos" для AT-конфигов.
 - исправлено несколько багов там и сям.

Версия 0.002 (29.12.2008) 
 - некоторые изменения в интерфейсе (для больших разрешений);
 - скрипты теперь используют новое скриптовое ядро;
 - добавлена эмуляция 8-битного m6502 (пока без конфигов на нем);
 - добавлена поддержка настройки банков памяти через скрипты
   (и поддержка ROM-а Spectrum-128 как примера этой возможности);
 - эксперимент. эмуляция IDE/ATA-контроллеров (EmuLib/Storage);
 - добавление некоторых полезных отладочных возможностей в ядро
   и консоль отладки (трассировка, точки останова на событиях и
   при условиях, статистика и т.п.);
 - добавлена эмуляци R/W/E TLB в x86-32 процы (быстрее Paging);
 - временно отключена поддержка Virtual Mode Extensions (VME) в
   P5/86 CPU (была неполная в WIP3, нужны некоторые поправки).
 - несколько исправлений в ядре CPU x86-32 и точности эмуляции;
 - первый релиз обычного SPC, в котором работоспособны загрузочные 
   флоппи с некоторыми модификациями Linux (по крайней мере TomsRtBt, 
   загрузочные диски Mandrake 7,8 и Mandriva 2007). 
 - некоторые другие ОС-и (типа Win3.x), несмотря на то, что они не 
   могут работать в расшир. 386 режиме (386 Enchanced Mode) вследствие 
   неполной аппаратной эмуляции некоторых устройств, должны нормально 
   работать в Стандартном режиме (Standard Mode).

[---- лето-осень 2008 - перерыв+начат постепенный и долговременный переход ----]
[------------ к мультиплатформенности, с переносом кода на C++ ----------------]

Версия 0.001 WIP3 (14.06.2008) 
 - добавлена поддержка расширений вирт. режима (VME) в ЦПУ P5/86;
 - более корректная эмуляция KBC i8042 (работает Terminal Velociy);
 - некоторые поправки в VGA (соотношение сторон и смещение буфера);
 - исправлено большое количество багов в эмуляции x86-32 ;
 - небольшое исправление в VGA (улучшено детектирование режимов);
 - ускорена скриптовая CASE-конструкция (табличная для чисел теперь);
 - добавлены два рекомендуемых ("Best") x86-конфига для упрощения
   использования эмулятора: быстрый реальный (с бинарными БИОС)
   и более медленный виртуальный (со скриптовыми БИОС - пока не
   полностью, поскольку скриптовой VGA BIOS еще не готов);
 - добавлена поддержка Z80-конфигов в консоль отладки (dasm и т.п.)
 - добавлены новые БИОС-конфиги (PC/5150, Phoenix-386);
 - пофикшен набор багов в ядре эмуляции (синхронизация и т.п.);
 - пофикшены некоторые "неполные" сообщ. об ошибках в скрипте;
 - некоторые исправления в скриптах различных устройств, БИОСе.

Версия 0.001 (15.05.2008):
 - поскольку решено сделать эмулятор скрипт-ориентированным и
   реализовать поддержку не только наших, но и зарубежных моделей
   компьютеров, имя эмулятора изменено на "Script PC" (т.е. SPC опять),
   изменена нумерация версий;
 - эмулятор почти полностью переписан, реализовано новое (скрипт-
   ориентированное) ядро и т.п.;
 - но многие вещи еще не завершены/протестированы/реализованы,
   поэтому эмулятор по возможностям, скорости и совместимости пока
   уступает последним версиям предыдущего поколения (0.18.x);
   особенно это относится к 386+ ЦПУ, поскольку они находятся в 
   состоянии доработки до более точной эмуляции исключений, 
   привилегий и прочих важных вещей, касающихся защищенного/виртуального 
   режима (для использования 32-битных ОС при реализации и/или
   тестирования эмулируемой аппаратуры);
 - но с точки зрения разработки он теперь существенно удобнее :)
 - при переключении в OpenGL режим отрисовки экранов лучше 
   перезапустить эмулятор (т.е. выйти и заново войти); также данный
   режим может глючить при активных Fraps, AtiTrayTools и т.п.;
 - в общем, первый публичный релиз SPC-эмулятора следующего поколения.
 - p.s. все конфиги рабочие - если есть файлы (кто сказал "mess" ? :)

=============================================
Soviet PC - Ранне-исторические времена (2007)
=============================================

Задумывался как эмулятор советских x86-клонов (до 386 включительно),
с реалистичной эмуляцией процессора, аппаратуры, запуском БИОС-ов.
Построен на основе ядра эмулятора Корвета (аппаратура очень схожа).
В качестве теста при написании кода эмуляции процессора i8086(88) 
на раннем этапе использовался БИОС от ПЭВМ "Поиск-1".

[-------- Ноябрь 2007 - Май 2008 - перерыв+постепенный переход на новую версию ядра эмуляции ------]

Версия 0.18.2 (14.11.2007) (так и не прорелиженная тогда версия, начало перехода к Script PC):
 - убран весь код, касающийся Корвета, осталась только x86-эмуляция;
 - улучшена обработка сбоев (CPU faults) (работает Terminal Velocity);
 - исправлена баги с клавиатурой (опять :)
 - добавлен Бейсик-подобный язык скриптов, который будет 
   использоваться для реализации открытой архитектуры эмуляции.
   Виртуальный БИОС уже частично переведен на скрипты (см. папку
   "BIOS"). Скрипт инициализации "BIOS\bios" исполняется всегда (при
   "сбросе" эмулируемого компьютера), в отличие от скриптов-
   обработчиков прерываний, которые можно отключить с помощью
   меню "Отключить скрипты прерываний" (по умолчанию). 
 - больше изменений нет, в октябре времени почти не было на эмуль.

Версия 0.18.1 (07.10.2007): 
 - пофикшены многочисленные баги (в основном с клавиатурой), появившиеся в версии 0.18.0; 
 - улучшена эмуляция контроллер AT-клавиатуры i8042;
 - повышена эффективность использования кэша рекомпиляции (максимум теперь 1024 Кб при реальных 64 Мб);
 - несколько небольших оптимизаций по скорости.

Версия 0.18.0 (02.10.2007) - 
 - предварительная поддержка защищенного режима x86 (многие DOS-приложения защищенного режима уже работают).
 - некоторые поправки в эмуляции контроллера прерыв. и клавиатуры;
 - несколько уточнена EGA/VGA-эмуляция (режим 640x480x16 и т.п.);
 - подправлен режим "Auto"-подстройки скорости CPU;
 - добавлен выбор размеров кэша рекомпиляции (иногда не хватает);
 - убрана поддержка прежних "статических" x86 ЦПУ (сильно устарели);
 - убрана BIOS-эмуляция XMS-памяти (работает "родная" поддержка);
   Внимание: Пытаясь загрузить ОС-ы (Linux и подобные), лучше пока 
   переключаться на CGA-адаптер, поскольку эмуляция VGA пока не
   завершена и возможны глюки с отображением. Загрузочные винты
   пока не поддерживаются, для загрузки используйте флоппики.

Версия 0.17 (08.09.2007) - .....
 - реализовано ядро динамической рекомпиляции инструкций CPU/FPU.
   Пока оно не очень быстрое, выдает скорость в районе 486DX2/DX4
   (т.е. 50-100Мгц) на AthlonXP 2Ггц. В основном скорость зависит от 
   степени кэшируемости (качества) кода программы. Т.е. чем меньше 
   самомодифицирующегося кода (антиотладка), дальних переходов и
   т.п., тем выше скорость работы динамическоого ядра.
 - добавлены динамические версии CPU 8086/286/386/486/P5 (только
   реальный режим, защищенный и виртуальный пока не готовы);
 - улучшена эмуляция таймера (плавающая арифметика для точности);
 - несколько поправок в EGA/VGA;
 - добавлены опции выбора подходящей частоты синхр. и скорости CPU;
 - (!) если какая программа глючит, попробуйте снизить скорость CPU;
 - (!) столице БССР, городу-герою Минску 940 лет! С Днем Рождения !

[-------- 18.07.2007 - 08.09.2007 -------] Разработка динамического рекомпилятора для X86 CPU (dynarec, JIT).

28.06.2007:
 - попытка переехать на sovietpc.old-games.ru (ни к чему не привела, 
поскольку домашний модем жутко тормозил при загрузке тамошнего блога,
а выделенки _дома_ у меня тогда еще не было). Сорри :);

Версия 0.16 (27.06.2007-15.07.2007) 
 - подправлен CPU i8086, добавлены CPU i286/ i386 (Real Mode);
 - добавлена предварительная поддержка FPU i387 (i287XL для i286);
 - существенно оптимизировано ядро (386 до 40-50Мгц на AXP 2Ггц);
 - добавлен экспериментальнай режим автоподстройки частоты CPU;
 - поддержка композитного режима CGA (160x200x16) (см. Frogger2 и т.п.);
 - поддержка 16-цветных Tandy/PCjr-режимов (были во многих старых играх);
 - добавлена предварительная эмуляция EGA/VGA 256Kb;
 - видеобиос отделен от видеокарт и детектирует их через порты;
 - добавлена BIOS-поддержка работы с образами HDD (пока 32Мб);
 - добавлена BIOS-поддержка EMS-памяти (expanded memory, 8086+);
 - добавлена BIOS-поддержка XMS-памяти (extended memory, 80286+);
 - при включении XMS активизируется HMA (high memory area), куда
   можно отправить DOS (DOS=HIGH в CONFIG.SYS) для получения
   максимального количества обычной (базовой) памяти.
 - добавлена предварительная BIOS-поддержка мыши (где-то работает,
   где-то не работает - потому как реализованы пока только 
   основные, т.е. часто используемые, функции);
 - добавлена возможность быстрой OpenGL-отрисовки экранов в окне;
 - уточнена и подправлена эмуляция таймера (т.е. сист. таймер и звук);
   Дубинушка и прочее звучат вполне себе нормально (особенно через WaveOut);
   у Диггера пропал свист и фоновый звук стал "реальным".
 - временно отключена эмуляция "Поиск-1" (до её модернизации).
 - некоторые поправки в 386, BIOS, таймере, видео, менеджере дисков.

Версия 0.15 (01.06.2007):
 - уточненен и подправлен CPU I8086, уточнены цвета CGA-адаптера, оптимизирована перерисовка;
 - добавлена поддержка портов палитры VGA (320x200x256) (временная замена полного VGA);
 - доработана поддержка звука (теперь Speaker не глючит в играх);
 - добавлено детектирование формата образа диска по его размеру (для поддержки дисков ранних ДОС-ов);
 - уточнена XT-клавиатура в виртуальном PC/XT-совместимом БИОС;
 - добавлена эмуляция аппаратного курсора тектовых режимов CGA;
 - активизирована конфигурация бытовой ПЭВМ "Поиск-1".

Версия 0.14 (22.05.2007):
 - добавлена предварительная эмуляция PC/XT (I8086/CGA); 
 - добавлена предварительная поддержка FAT в менеджер дисков; 
 - поддержка изменения скорости ЦПУ (разгон/замедление).
 - переименование в Soviet PC;


============================================================
Virtual Korvet - Доисторические времена (2004 - начало 2007)
============================================================

Эмуляция советского школьного ПК "Корвет".
Разработано с нуля, без всякого опыта в эмуляции.
В качестве тестов на раннем этапе эмуляции
использовалось сравнение с результатами прогона
БИОС в отладчике эмулятора Корвета Сергея Ерохина 
(тогда еще с закрытыми исходниками) - спасибо ему
и Korvet Community за эталонный эмулятор и документацию!

Версия 0.12(9) (22.04.2007):
 - реализован полноценный CPU Z80 в официальном варианте (т.е. документированные команды);
 - импортируемые через менеджер дисков файлы получают имена в верхнем регистре (совместимость с CP/M);

Версия 0.12 (15.04.2007):
 - добавлена начальная версия менеджера дисков (просмотр и изменение содержимого образов дисков);
 - запрашивается необходимость сохранения изменений на дисках;
 - добавлена возможность подключения вместо CPU i8080 процессора Z80 (сэмулированного пока частично); 

Версия 0.11 (09.04.2007):
 - полностью сэмулирован трехканальный системный таймер i8253 (i8254);
 - переписана и уточнена поддержка звука;
 - добавлена поддержка прерываний от НГМД и системного таймера.

Версия 0.10 (20.03.2007):
 - полностью сэмулирован контроллер прерываний (на нем пока висит только прерывание от видео). 
   Popcorn больше не дергается, Xyzon не подвисает;
 - на системном таймере временно поставлены счетчики-заглушки (чтобы заработали некоторые игры).

Версия 0.09 (18.03.2007):
 - добавлена возможность изменять размера окна эмулятора (в том числе разворачивать на весь десктоп);

Версия 0.08 (15.03.2007):
 - прямой доступ к PC Speaker реализован через драйвер UserPort вместо GiveIO (совместимость с WinXP);

Версия 0.07 (25.12.2005) (лучше поздно, чем никогда :) 
 - исправлен белый фон кнопки "Старт" на WinXP;
 - снова нормально работает сохранение/загрузка состояния эмулятора.

(-------- 2005 - 2006  - перерыв --------)

Версия 0.06a (01.10.2004):
 - поддержка операций записи данных на флоппи-диски;
 - добавлена возможность выбора ПЗУ компьютера;
 - поддержка переключения  между 32/64 символами в строке;
 - поддержка 4х страниц ГЗУ (192 Кб видеопамяти);
 - косвенное изменение атрибута инверсии через регистры ППА;
 - уточнена продолжительность интервала VBLANK;
 - подправлены некоторые клавиши на картинке клавиатуры.

Версия 0.06 (22.09.2004): 
 - добавлен экспериментальный режим вывода звука через WaveOut (т.е. с помощью звуковой карты);
 - добавлена экспериментальная поддержка сохранения и загрузки текущего состояния эмулятора;
 - снято ограничение на размер образа диска, чтобы загружался games1.zip.

Версия 0.05 (15.09.2004): 
 - переработано и оптимизировано ядро эмуляции, синхронизация (оптимизированы почти все узкие места);
 - добавлена возможность отключения синхронизации (для получения макс. FPS);
 - исправлен баг эмуляции контроллера дисков (пресловутый баг перехода с нулевой дорожки);
 - добавлена поддержка всех 32 конфигураций памяти Корвета;
 - сэмулированы все регистры клавиатуры (заработала клавиатура в TREAS и т.п.);
 - исправлено некоторое количество мелких багов эмуляции;
 - итого, эмулятором теперь можно пользоваться с ещё большим успехом :)

Версия 0.04 (10.09.2004): 
 - исправлено "зависание" звука (RALLY,ANTON,MAFIA и т.п.);
 - добавлена предварительная версия синхронизации звука (с реальным временем);
 - в итоге, эмулятором наконец-то можно нормально пользоваться.

Версия 0.03 (09.09.2004): 
 - исправлены баги вывода АЦЗУ на экран (текст теперь правильного цвета в XART, ANTON, TROLL и т.п.);
 - добавлена обработка изменения адреса таблицы прерываний (заработали BOMBER, PACMAN);
 - добавлена поддержка блокирования заданных прерываний (заработал TETRIS);
 - итого, большинство имеющихся игр корректно работают под этой версией эмулятора.

Версия 0.02 (08.09.2004)
 - добавлена поддержка чтения из ГЗУ (в обоих режимах);
 - подправлена эмуляции CPU (был баг в команде DAA, из-за которого не работал тест OLD.COM);
 - подправлена эмуляция клавиатуры (ESC и прочих упр. клавиш, раньше иногда не работали);
 - добавлена поддержка чтения-записи атрибутов АЦЗУ (на основе тех.описания);
 - добавлена поддержка альтернативного набора символов АЦЗУ (забыл включить в прошлой версии);
 - добавлено переключение флага VBLANK (заработали Kаратэ, кое-как XART, Антошка);
 - добавлена временная остановка эмуляции при входе в меню (чтобы таймер не убегал никуда); 
 - связывание "стрелки вниз/доп2" с "доп5" по умолчанию отключено;
 - итого, эмулятор корректно проходит основные тесты из OLD.COM;

Версия 0.01 (30.08.2004)
 - полностью переделан интерфейс программы, нарисована клавиатура;
 - внутренняя синхронизация с использованием CPU-таймера;
 - добавлен предварительный вывод звука (через PC Speaker);
 - немного оптимизирована тормозная эмуляция вывода графики;
 - первая общественно-доступная версия :)

Версия 0.00 (10.08.2004)
 - начало разработки эмулятора, версия для собственного пользования;
 - практически никакого интерфейса, кроме пары кнопок без подписей;
 - видеопамять сбрасывается по нажатию кнопки в битмап на диске;
 - в общем, всё очень криво и тормозно, суррогат для отладки.

--------------------------------------------------------------------------------



Web Hosting