Это означает - не спешите всё будет, работа кипит в нужной последовательности и (см. пост Patrona про тетрис) - там явно указано, что эмулятор "не доделан", однако
символьная ДВК уже есть, а значит и есть во что поиграть на ней )))
Вид для печати
Посмотрим.
Локально (если не через интернет) в потоке видео будут передаваться указатели на объект "кадр потока видео". Само-по-себе-изображение будет представлено массивом 8-битных значений RGB (для чёрно-белых кадров все три значения будут одинаковы).
Таким образом, типичный эмулятор "видеоустройства" будет несколько (до 60) раз в секунду получать ссылку на кадр, модифицировать изображение и передавать ссылку дальше в поток.
Сколько сложений матриц RGB в секунду сможет выполнять типичный сегодняшний комп для размерностей порядка 800х400..
Мне кажется, что где-то 1000 в секунду ( или 10'000 ? ).
Экран 800x400 - это милион байт примерно. Значит миллион байт КСМ сложить со сдвигом с миллионом байт КГД, 60 раз в секунду. Т.е. не менее 200мипсов одну математику, если влоб, побайтно. Но, учитывая, что написано будет на Си. В общем, на 2ГГц'овом проце больше, чем 250 фпс рассчитывать наверное не стоит. Но это если писать на Си, не на асме.
Кстати, мне кажется, что смешивать яркости пикселей КСМ и КГД 50/50 не стоит. Скорее лучше складывать их по OR'у. Т.к. в реальных программах текст не печатается поверх графики, а печатается на пустых от графики местах.
Хотя у КГД изображение 400x286, а у КСМ - 800х286, но поскольку они используют "общий" видеосигнал, то очевидно, что формат массива изображения у них одинаковый, но КГД "заполняет" только каждую вторую ячейку.
Ограничения API распространяются только на интерфейсы. Все интерфейсные объекты должны быть написаны на С++ в Visual Studio. Но к интерфейсному коду на C++ авторы эмуляторов могут линковать в Visual Studio что угодно. Хотя, на мой взгляд - ассемблерные вставки и специализированные библиотеки - самое оно.Цитата:
учитывая, что написано будет на Си
Вообще-то, при сложении двух кадров умножение требуется только для моделирования "притухания" исходного кадра при прохождении через смеситель. Для простого объединения двух изображений (на мой взгляд) достаточно обычного сложения с ограничением максимального значения ( т.е. когда 100% + 100% = 100% ).Цитата:
Кстати, мне кажется, что смешивать яркости пикселей КСМ и КГД 50/50 не стоит. Скорее лучше складывать их по OR'у. Т.к. в реальных программах текст не печатается поверх графики, а печатается на пустых от графики местах.
Думаю, это справедливо и для более общего случая, когда суммируются видеосигналы не 100% яркости. Т.е. 25%+25% = 50% ; 50%+50% = 100% ; 70% + 70% = 100% и т.п.
---------- Post added at 18:57 ---------- Previous post was at 18:25 ----------
Хотя, не исключаю, что "видеосумматор" может быть сделан и так, чтобы в каждый момент (т.е. для каждой точки) пропускать на выход более сильный из сигналов. В результате - яркость "суммы" двух точек будет равна яркости более яркой из них.
В принципе - в дальнейших версиях API (скорее всего) будет предусмотрена возможность интерактивной 3D симуляции любого из эмулируемых устройств. И, например, при симуляции мониторного зала - текстура поверхности каждого экрана в сцене будет изменяться до 60 раз в секунду :)
Поэтому, вряд ли быстродействие API абстрактной эмуляции потока видео - это то, о чём предстоит серьёзно беспокоиться :)))
Любопытная вещь ))) Сталкер для бк0011 в эмуляторе ДВК )))
Скрытый текст
К слову, он и в UKNCBTL отлично работает )))
Попробовал MESS (0.145), для начала ЕС1841 (драйвер ec1841).
Сразу после старта: сообщение MESS "Invalid MC6845 screen parameters - display disabled!!!" и "Mode Control 02 is not supported!!".
POST проходит с ошибкой:
Диск "Знакомство" (с собственным загрузчиком) грузится и работает, можно записать видео, наверно.Цитата:
a0ff (1) 201
1701
ОШИБКА ( НАЖМИ КЛАВИШУ "Ф1" )
Альфа-ДОС грузится, но клавиатура эмулируется неточно (нечем переклюать режим РУС, не работают кнопки shift ...).
Диск с тестами (ТПС) выдает обрывок сообщения "ПЭВМ НЕ Е..." (не ЕС?) и уходит в reset.
Сами диски выкладывал anasana здесь -- http://zx.pk.ru/showpost.php?p=278089&postcount=158 (но ссылки протухли). Выкладываю образы, которые снял сам (001 -- Знакомство, 005 -- Альфа-ДОС, 020 -- ТПС), формат -- CPCEMU DSK.
Продолжение. Корвет (драйвер korvet).
Ни один из 4 дисков, выложенных на сайте Башкирии-2М (Korvet.rar), не грузится до конца (появляется баннер CP/M, далее в цикле сообщение "Can't read info sector").
Диск system1.kdi с сайта pk8020 (ссылка), грузится до подсказки "A>", но не работает ввод с клавиатуры (если вообще не подключать дискету, то клавиатура работает в Бейсике).
ЕС1840 (драйвер ec1840, диск dosec.IMA не-помню-откуда)
Не проходит POST, F1 уводит в reset.
Цитата:
a0aa 201K
ERROR (RESUME="F1" KEY)
Драйвер ec1841 в MESS недоделанный, пробую допилить.
CRTC сделан, судя по ТО, на болгарском чипе CM607.
Ошибка 201 -- тест памяти, 1701 -- тест HDC (это потому, что HDC не включен в описание машины).
"Пилю" драйвер Ассистента для MESS
MESS vs. ec1841
Все же можно хитрым образом включить ЛАТ; для этого нужно запускать MESS с отладчником (-debug) и после загрузки ОС выполнить в нем команду "do b@418 = 2" (установить флаг ЛАТ в слове состояния клавиатуры).
Дискета с ТПС была от другой машины (ЕС1842); родная запускается, но тестам плохо:
- тест процессора не проходит ("неисправны микросхемы ПЗУ ...")
- тест памяти зависает после проверки 192K свободной области памяти на первой плате 2B0
- тест видео не проходит ("код завершения 501 Б")
Выкладываю новый архив с софтом для запуска в MESS -- две версии Альфа-ДОС (01.05 и 02.01), диски ТПС и Знакомство.
Слегка допилил драйвер mc1502. Опрос клавиатуры не реализован, но все же можно добиться выхода в монитор и пр.
Заставка
http://img-fotki.yandex.ru/get/6307/...81_b78921_orig
Монитор 5.0
http://img-fotki.yandex.ru/get/6210/..._1fa95e57_orig
Бейсик-К 1.1
http://img-fotki.yandex.ru/get/6211/..._43f6388e_orig
Некоторые скриншоты с диска Знакомство от ЕС-1841 :-)
http://img-fotki.yandex.ru/get/6312/...0bdcf64_XL.jpg
Кашмар:)Цитата:
Некоторые скриншоты с диска Знакомство от ЕС-1841 :-)
Как можно так издеваться над компьютером.
Я б этот диск подверг инквизиции.:)
Допилил клавиатуру МС1502, отошлю результат Micko.
http://img-fotki.yandex.ru/get/6/264...5ea9da0d_L.jpg
Выяснилось, что MAME/MESS не умеют эмулировать блокирующееся чтение из порта, а именно так BIOS МС1502 работает с ВГ93:
"Схема управления обменом синхронизирует прием/передачу данных между ЦП и накопителем с помощью сигналов RDY и DRQ. При обращении ЦП к порту состояния DRQ происходит снятие готовности [RDY] и процессор ожидает прихода сигнала DRQ. При появлении (запросе) очередного байта данных готовность подставляется и процессор продолжает выполнение команд. В случае отсутствия данных готовность будет подставлена сигналом INTRQ или MOTOR ON.
Анализ сигнала DRQ программой обслуживания устройства позволяет определить конец операции БИС КР1818ВГ93."
Нашелся скан ТО на терминал 15ИЭ-00-013, а значит, есть неплохие шансы сэмулировать его в MESS (в нем уже есть skeleton driver для DEC VTxxx и ВТА-2000). Прошивки пока нет, но в ТО есть рисунок знакогенератора:-- вбил его, попробую подключить.Скрытый текст
Очень предварительный (без эмуляции родного процессора) драйвер заработал:
http://img-fotki.yandex.ru/get/5801/...3d719a2_XL.jpg
ec1841: частично сэмулировал контроллер памяти (порты 2B0-2B3), теперь тест памяти в POST проходит без ошибки. Пока не эмулируются дополнительные платы памяти и драйвер VDISK.SYS бесполезен.
mc1502 -- заработал ввод с кассеты. Патчи отошлю Micko.
Начал проверять:
- IBM_PC_Diagnostics_Cassette.wav -- из Бейсик-К грузится загрузчик ldcass.b, но при запуске зависает (неудивительно).
- MK60-6_SideA.flac ("Tape13" на pk-info.ru) -- ни одна игра не грузится до конца.
- ms1502_original_cassete2_sidea_fft_mono.flac -- первые две игры грузятся и работают, остальные пока не проверял.
http://img-fotki.yandex.ru/get/6404/...4be3a885_L.jpg
Остальные скриншоты -- в альбоме по ссылке.
Крут! А не знаешь, что там с багом из-за которого в мс1502 ломался ввод с клавиатуры? А то у меня теперь аналогичная проблема с клавиатурой Поиска. Откатываться на более старую версию mess совсем не хочется.
Заодно починил этот баг, потому что как раз он и мешал работе кассеты.
Баг в том, что нужно снимать IRQ1, я это сделал при записи в порт 60h (но есть более точный способ).
... но в 0.146 и выше этот способ все равно не работает. чиню дальше
Починил окончательно клавиатуру МС1502, патчи ушли Micko, ждем коммита.
Тем временем заработало чтение дискет. SF-DOS по крайней мере грузится и реагирует на команды, OTS показывает заставку и все.
http://img-fotki.yandex.ru/get/6502/...169ffedd_L.jpg
http://img-fotki.yandex.ru/get/6602/...c74db2e_XL.jpg
http://mess.dorando.at/svn/?rev=15633 -- клавиатура и магнитофон мс1502, контроллер памяти ес1841.
shattered и SoftCat большое человеческое спасибо!
Клавиатура работает, с магнитофона загружается :)
На подходе флоппи :-) Они по крайней мере читаются:
http://img-fotki.yandex.ru/get/6405/...e86b2112_L.jpg
Скрытый текст
Поскольку тема по МС1502 - http://zx.pk.ru/showthread.php?t=11591&page=5 закрыта, напишу здесь.
Кому интересны кассеты для МС1502, лично мне интересен только оригинальный софт для МС1502, который не с PC, то начал потихоньку выкладывать обработанные кассеты здесь http://pk-info.ru/ms1502.html (всё что раньше было взято с этого сайта, можно смело удалять). Повторно обработаю и выложу всю свалку, что у меня есть на кассетах, она более обширна, чем сейчас на сайте.
Не откажусь и от дискетного софта для МС1502, выложу на сайт для долгого сохранения и доступности, всё лучше чем хранить на файлообменниках. До кучи можно и для Поиска закинуть файлы на сайт.
---------- Post added at 04:01 ---------- Previous post was at 03:58 ----------
shattered,
В MESS -> mc1502. "Криво" эмулируются клавиши курсора (курсор перескакивает на строчку вниз/вверх), но на цифровой дополнительной клавиатуре все отлично. Ещё запустил frogger, так там управление работает на половину и с эмуляцией CGA проблемы.
Про стрелки я в курсе, буду чинить (когда придумаю, как).
Про frogger интересно -- что за проблемы с CGA? Можете его выложить?
В моем патче про работу с флоппи затронут общий код эмуляции wd17xx, поэтому потребуется review со стороны MESSdevs; если хотите пробовать, выложу то, что есть.
---------- Post added at 11:53 ---------- Previous post was at 09:56 ----------
Я запустил http://poisk-pc.narod.ru/ots.rar (741888 Jan 1 2006 OTS1.DDI) в MESS и выяснил, что он усеченный -- сразу после вывода заставки идет чтение секторов с дорожки 81, которой нет в дампе.
Выложите полноценный дамп, кто-нибудь :-)
http://mess.dorando.at/svn/?rev=15695 -- мс1502: начало эмуляции флоппи
окончание -- http://paste.lisp.org/display/130735 (ломает другие драйвера; например, korvet)
shattered,
http://pk-info.ru/ms1502/files/games/frogger.zip -- не работает управление (могу только вверх вниз двигать лягушку, через A, Z; влево-вправо никак), проблемы с эмуляцией CGA
http://pk-info.ru/ms1502/files/games/goody.zip -- зависает при нажатии нескольких клавиш (?). Демка работает нормально, проблема не в видео.
Ещё бы поддержку LPT не помешало, как будет время :)
p.s.: Cкачал новый билд с Вашими исправлениями. За звук в Арканоиде спасибо :)
Goody вообще плохо работает в MESS (зависает). SoftCat предположил, что из-за эмуляции pop cs, но это надо проверить.
LPT и COM, как обычно, сделаны не как у всех :v2_dizzy_facepalm:
Немного продвинулся в эмуляции процессора 15ИЭ -- написал модуль дизассемблера в MESS. Проверять пока не на чем, кроме случайных данных :-)
Скрытый текст
00000000: 2E 60 ldc r14, #$60
00000002: 5E lla #$0e
00000003: 5A lla #$0a
00000004: DF lda r15
00000005: 18 7C jmp $087c
00000007: 6D lla #$0d
00000008: C1 cfl #$01
00000009: B9 cs r9
0000000A: 9C and r12
0000000B: 0C add r12
0000000C: 8E and r14
0000000D: 43 dsr r3
0000000E: F0 ota #$00
0000000F: 63 lla #$03
[свернуть]
---------- Post added at 20:32 ---------- Previous post was at 20:29 ----------
Мнемоники взяты из ТО, возможно, стоит их переделать по образу Z80