Speccy - наш выбор!

Speccy - наш выбор! (http://zx-pk.ru/index.php)
-   Эмуляторы отечественных компьютеров (http://zx-pk.ru/forumdisplay.php?f=61)
-   -   Эмуляторы отечественных компьютеров (http://zx-pk.ru/showthread.php?t=13908)

hobot 10th February 2012 19:21

Quote:

Originally Posted by Patron (Post 465297)
то нужно для начала хотя бы написать API потока видео :)))

Это означает - не спешите всё будет, работа кипит в нужной последовательности и (см. пост Patrona про тетрис) - там явно указано, что эмулятор "не доделан", однако
символьная ДВК уже есть, а значит и есть во что поиграть на ней )))

Titus 10th February 2012 19:30

Quote:

Originally Posted by hobot (Post 465311)
символьная ДВК уже есть, а значит и есть во что поиграть на ней )))

Меня символьные игрушки не впечатляют (
Видимо, сказалось RK-шное детство, когда всей душой тянулся к графике)

Patron 10th February 2012 19:41

Quote:

Originally Posted by Titus (Post 465304)
Не тормознуто ли получится?

Посмотрим.

Локально (если не через интернет) в потоке видео будут передаваться указатели на объект "кадр потока видео". Само-по-себе-изображение будет представлено массивом 8-битных значений RGB (для чёрно-белых кадров все три значения будут одинаковы).

Таким образом, типичный эмулятор "видеоустройства" будет несколько (до 60) раз в секунду получать ссылку на кадр, модифицировать изображение и передавать ссылку дальше в поток.

Сколько сложений матриц RGB в секунду сможет выполнять типичный сегодняшний комп для размерностей порядка 800х400..

Мне кажется, что где-то 1000 в секунду ( или 10'000 ? ).

Titus 10th February 2012 19:50

Quote:

Originally Posted by Patron (Post 465318)
Сколько умножений на константу (в типичном случае "равновесного" сложения двух кадров - на 0.5) и сложений матриц RGB в секунду сможет выполнять типичный сегодняшний комп для размерностей порядка 800х400..

Мне кажется, что где-то 1000 в секунду ( или 10'000 ? ).

Экран 800x400 - это милион байт примерно. Значит миллион байт КСМ сложить со сдвигом с миллионом байт КГД, 60 раз в секунду. Т.е. не менее 200мипсов одну математику, если влоб, побайтно. Но, учитывая, что написано будет на Си. В общем, на 2ГГц'овом проце больше, чем 250 фпс рассчитывать наверное не стоит. Но это если писать на Си, не на асме.

Кстати, мне кажется, что смешивать яркости пикселей КСМ и КГД 50/50 не стоит. Скорее лучше складывать их по OR'у. Т.к. в реальных программах текст не печатается поверх графики, а печатается на пустых от графики местах.

Patron 10th February 2012 20:02

Quote:

Originally Posted by Titus (Post 465322)
Экран 800x400 - это милион байт примерно. Значит миллион байт КСМ сложить со сдвигом с миллионом байт КГД

Хотя у КГД изображение 400x286, а у КСМ - 800х286, но поскольку они используют "общий" видеосигнал, то очевидно, что формат массива изображения у них одинаковый, но КГД "заполняет" только каждую вторую ячейку.

Quote:

учитывая, что написано будет на Си
Ограничения API распространяются только на интерфейсы. Все интерфейсные объекты должны быть написаны на С++ в Visual Studio. Но к интерфейсному коду на C++ авторы эмуляторов могут линковать в Visual Studio что угодно. Хотя, на мой взгляд - ассемблерные вставки и специализированные библиотеки - самое оно.

Quote:

Кстати, мне кажется, что смешивать яркости пикселей КСМ и КГД 50/50 не стоит. Скорее лучше складывать их по OR'у. Т.к. в реальных программах текст не печатается поверх графики, а печатается на пустых от графики местах.
Вообще-то, при сложении двух кадров умножение требуется только для моделирования "притухания" исходного кадра при прохождении через смеситель. Для простого объединения двух изображений (на мой взгляд) достаточно обычного сложения с ограничением максимального значения ( т.е. когда 100% + 100% = 100% ).

Titus 10th February 2012 20:09

Quote:

Originally Posted by Patron (Post 465326)
Для простого объединения двух изображений (на мой взгляд) достаточно обычного сложения с ограничением максимального значения ( т.е. когда 100% + 100% = 100% ).

Это и есть обычное сложение по OR для двухцветного изображения.

Patron 10th February 2012 20:57

Quote:

Originally Posted by Titus (Post 465331)
Это и есть обычное сложение по OR для двухцветного изображения.

Думаю, это справедливо и для более общего случая, когда суммируются видеосигналы не 100% яркости. Т.е. 25%+25% = 50% ; 50%+50% = 100% ; 70% + 70% = 100% и т.п.

---------- Post added at 18:57 ---------- Previous post was at 18:25 ----------

Хотя, не исключаю, что "видеосумматор" может быть сделан и так, чтобы в каждый момент (т.е. для каждой точки) пропускать на выход более сильный из сигналов. В результате - яркость "суммы" двух точек будет равна яркости более яркой из них.

Titus 10th February 2012 21:01

Quote:

Originally Posted by Patron (Post 465335)
Хотя, не исключаю, что "видеосумматор" может быть сделан и так, чтобы в каждый момент (т.е. для каждой точки) пропускать на выход более сильный из сигналов. В результате - яркость "суммы" двух точек будет равна яркости более яркой из них.

Да не, аналоговый сумматор конечно смешивает обычным сложением, если там именно аналоговый сумматор. Я схему не смотрел. Но в эмуляторе было бы наверное логичным смешивать с насыщением (100 + 100 = 100), чтобы не терять половину яркости.

Patron 10th February 2012 21:19

В принципе - в дальнейших версиях API (скорее всего) будет предусмотрена возможность интерактивной 3D симуляции любого из эмулируемых устройств. И, например, при симуляции мониторного зала - текстура поверхности каждого экрана в сцене будет изменяться до 60 раз в секунду :)

Поэтому, вряд ли быстродействие API абстрактной эмуляции потока видео - это то, о чём предстоит серьёзно беспокоиться :)))

hobot 11th February 2012 03:14

2 Attachment(s)
Любопытная вещь ))) Сталкер для бк0011 в эмуляторе ДВК )))

Скрытый текст



К слову, он и в UKNCBTL отлично работает )))

Alex_K 11th February 2012 10:59

Quote:

Originally Posted by hobot (Post 465472)
Любопытная вещь ))) Сталкер для бк0011 в эмуляторе ДВК )))

К слову, он и в UKNCBTL отлично работает )))

Естественно будет работать. Если он написан для RT-11 и не использует прямого доступа к аппаратуре, а пользуется для ввода/вывода только функциями RT-11, то и проблем не должно быть.

shattered 29th May 2012 21:35

1 Attachment(s)
Попробовал MESS (0.145), для начала ЕС1841 (драйвер ec1841).

Сразу после старта: сообщение MESS "Invalid MC6845 screen parameters - display disabled!!!" и "Mode Control 02 is not supported!!".

POST проходит с ошибкой:

Quote:

a0ff (1) 201
1701
ОШИБКА ( НАЖМИ КЛАВИШУ "Ф1" )
Диск "Знакомство" (с собственным загрузчиком) грузится и работает, можно записать видео, наверно.

Альфа-ДОС грузится, но клавиатура эмулируется неточно (нечем переклюать режим РУС, не работают кнопки shift ...).

Диск с тестами (ТПС) выдает обрывок сообщения "ПЭВМ НЕ Е..." (не ЕС?) и уходит в reset.

Сами диски выкладывал anasana здесь -- http://zx.pk.ru/showpost.php?p=278089&postcount=158 (но ссылки протухли). Выкладываю образы, которые снял сам (001 -- Знакомство, 005 -- Альфа-ДОС, 020 -- ТПС), формат -- CPCEMU DSK.

shattered 29th May 2012 21:58

Продолжение. Корвет (драйвер korvet).

Ни один из 4 дисков, выложенных на сайте Башкирии-2М (Korvet.rar), не грузится до конца (появляется баннер CP/M, далее в цикле сообщение "Can't read info sector").

Диск system1.kdi с сайта pk8020 (ссылка), грузится до подсказки "A>", но не работает ввод с клавиатуры (если вообще не подключать дискету, то клавиатура работает в Бейсике).

shattered 30th May 2012 21:11

ЕС1840 (драйвер ec1840, диск dosec.IMA не-помню-откуда)

Не проходит POST, F1 уводит в reset.

Quote:

a0aa 201K
ERROR (RESUME="F1" KEY)

shattered 31st May 2012 00:53

Драйвер ec1841 в MESS недоделанный, пробую допилить.

CRTC сделан, судя по ТО, на болгарском чипе CM607.

Ошибка 201 -- тест памяти, 1701 -- тест HDC (это потому, что HDC не включен в описание машины).

Rus 1st June 2012 00:50

"Пилю" драйвер Ассистента для MESS

shattered 1st June 2012 01:51

1 Attachment(s)
MESS vs. ec1841

Все же можно хитрым образом включить ЛАТ; для этого нужно запускать MESS с отладчником (-debug) и после загрузки ОС выполнить в нем команду "do b@418 = 2" (установить флаг ЛАТ в слове состояния клавиатуры).

Дискета с ТПС была от другой машины (ЕС1842); родная запускается, но тестам плохо:

- тест процессора не проходит ("неисправны микросхемы ПЗУ ...")
- тест памяти зависает после проверки 192K свободной области памяти на первой плате 2B0
- тест видео не проходит ("код завершения 501 Б")

Выкладываю новый архив с софтом для запуска в MESS -- две версии Альфа-ДОС (01.05 и 02.01), диски ТПС и Знакомство.

shattered 3rd June 2012 04:16

Слегка допилил драйвер 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

shattered 6th June 2012 00:15

Некоторые скриншоты с диска Знакомство от ЕС-1841 :-)

http://img-fotki.yandex.ru/get/6312/...0bdcf64_XL.jpg

NEO SPECTRUMAN 10th June 2012 21:07

Quote:

Некоторые скриншоты с диска Знакомство от ЕС-1841 :-)
Кашмар:)
Как можно так издеваться над компьютером.
Я б этот диск подверг инквизиции.:)

shattered 21st June 2012 01:06

Допилил клавиатуру МС1502, отошлю результат Micko.

http://img-fotki.yandex.ru/get/6/264...5ea9da0d_L.jpg

shattered 22nd June 2012 22:08

Выяснилось, что MAME/MESS не умеют эмулировать блокирующееся чтение из порта, а именно так BIOS МС1502 работает с ВГ93:

"Схема управления обменом синхронизирует прием/передачу данных между ЦП и накопителем с помощью сигналов RDY и DRQ. При обращении ЦП к порту состояния DRQ происходит снятие готовности [RDY] и процессор ожидает прихода сигнала DRQ. При появлении (запросе) очередного байта данных готовность подставляется и процессор продолжает выполнение команд. В случае отсутствия данных готовность будет подставлена сигналом INTRQ или MOTOR ON.

Анализ сигнала DRQ программой обслуживания устройства позволяет определить конец операции БИС КР1818ВГ93."

shattered 25th June 2012 21:23

Quote:

Originally Posted by shattered (Post 517636)
Допилил клавиатуру МС1502, отошлю результат Micko.

Результат в SVN, но между 0.145 (с которой я начинал) и HEAD что-то поменялось и вводится только 1 символ. Судя по всему, нужно в каком-то месте снимать запрос IRQ1.

shattered 30th June 2012 15:03

Нашелся скан ТО на терминал 15ИЭ-00-013, а значит, есть неплохие шансы сэмулировать его в MESS (в нем уже есть skeleton driver для DEC VTxxx и ВТА-2000). Прошивки пока нет, но в ТО есть рисунок знакогенератора:

Скрытый текст

-- вбил его, попробую подключить.

shattered 1st July 2012 03:20

Очень предварительный (без эмуляции родного процессора) драйвер заработал:

http://img-fotki.yandex.ru/get/5801/...3d719a2_XL.jpg

shattered 1st July 2012 19:14

ec1841: частично сэмулировал контроллер памяти (порты 2B0-2B3), теперь тест памяти в POST проходит без ошибки. Пока не эмулируются дополнительные платы памяти и драйвер VDISK.SYS бесполезен.

shattered 13th July 2012 00:12

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

Остальные скриншоты -- в альбоме по ссылке.

alt-x 13th July 2012 17:17

Крут! А не знаешь, что там с багом из-за которого в мс1502 ломался ввод с клавиатуры? А то у меня теперь аналогичная проблема с клавиатурой Поиска. Откатываться на более старую версию mess совсем не хочется.

shattered 13th July 2012 21:24

Заодно починил этот баг, потому что как раз он и мешал работе кассеты.

Баг в том, что нужно снимать IRQ1, я это сделал при записи в порт 60h (но есть более точный способ).

shattered 16th July 2012 21:06

... но в 0.146 и выше этот способ все равно не работает. чиню дальше

shattered 20th July 2012 02:02

Починил окончательно клавиатуру МС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

shattered 20th July 2012 22:10

http://mess.dorando.at/svn/?rev=15633 -- клавиатура и магнитофон мс1502, контроллер памяти ес1841.

Alex_B 20th July 2012 23:49

shattered и SoftCat большое человеческое спасибо!
Клавиатура работает, с магнитофона загружается :)

shattered 20th July 2012 23:50

На подходе флоппи :-) Они по крайней мере читаются:

http://img-fotki.yandex.ru/get/6405/...e86b2112_L.jpg

Скрытый текст


Alex_B 28th July 2012 05:01

Поскольку тема по МС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 проблемы.

shattered 28th July 2012 12:53

Про стрелки я в курсе, буду чинить (когда придумаю, как).

Про 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, которой нет в дампе.

Выложите полноценный дамп, кто-нибудь :-)

shattered 28th July 2012 22:30

http://mess.dorando.at/svn/?rev=15695 -- мс1502: начало эмуляции флоппи

окончание -- http://paste.lisp.org/display/130735 (ломает другие драйвера; например, korvet)

Alex_B 29th July 2012 01:09

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качал новый билд с Вашими исправлениями. За звук в Арканоиде спасибо :)

shattered 29th July 2012 12:09

Goody вообще плохо работает в MESS (зависает). SoftCat предположил, что из-за эмуляции pop cs, но это надо проверить.

LPT и COM, как обычно, сделаны не как у всех :v2_dizzy_facepalm:

shattered 1st August 2012 21:32

Немного продвинулся в эмуляции процессора 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


All times are GMT +4. The time now is 02:49.

Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd.