-
Эмулятор МС-0515 - Back to Life!
-
nzeemin, А Электронику 85 не хотите заэмулировать?
-
Цитата:
Сообщение от
MiX
nzeemin, А Электронику 85 не хотите заэмулировать?
Не знаю пока ;-)
Причина по которой я стал эмулировать МС-0515 -- игрушки, портированные с ZX Spectrum.
https://img-fotki.yandex.ru/get/1047...50f0f_orig.png
https://img-fotki.yandex.ru/get/6270...c8b3e_orig.png
-
Цитата:
Сообщение от
nzeemin
Причина по которой я стал эмулировать МС-0515 -- игрушки, портированные с ZX Spectrum.
В Эл.85 игрушки тоже есть.
Например в Хhomer.
http://xhomer.isani.org/xhomer/screen5.gif
-
Цитата:
Сообщение от
nzeemin
Причина по которой я стал эмулировать МС-0515 -- игрушки, портированные с ZX Spectrum.
а не проще ли играть в такие игры именно на спектруме ?
помоему гораздо интересней игры и программы - оригинальные (то-есть написанные для конкретной машинки).
-
зачем "проще", когда можно с толком потратить время и чему-то по ходу пьесы научиться?
а поиграть можно и на ps4 :-)
-
Цитата:
Сообщение от
ZEman
а не проще ли играть в такие игры именно на спектруме ?
помоему гораздо интересней игры и программы - оригинальные (то-есть написанные для конкретной машинки).
Ну вот смотри. В начале 1990-х во Львове жил советский инженер, видимо причастный к созданию этой машинки, или активно её пользующийся. Он потратил месяца два-три своей жизни, а скорее всего и больше, на портирование минимум трёх игрушек плюс редактора Art Studio на эту машину. Плюс наверняка какие-то ещё инструменты для портирования написал. В общем это на самом деле тонна работы, довольно сложной и трудной. И я уважаю его за это.
И это определённо стоит того чтобы дать его творениям вторую жизнь в эмуляторе. Плюс меня тоже интересует портирование, и мне интересно поработать с результатом его работы. Не поиграть -- верно замечено что это и на Спектруме можно сделать -- а разобраться с тем что получилось, может и дальше портировать, если будут силы и желание.
-
Расскажу вам как внутри устроена игрушка "Stop the ITA Express", я тут просто хлопаю в ладошки.
Игровой экран имеет размер 32x24 тайла, тайлы 8x8 пикселей плюс атрибут. Т.е. экран 256x192 = экран Спектрума.
В памяти мы храним экран в виде индексов тайлов два раза, я их назвал "экран план" и "экран факт".
Если мы хотим что-то вывести на экран -- меняем всегда только экран план. Допустим хотим вывести строку -- просто копируем символы этой строки на экран план.
Регулярно выполняется процедура актуализации экрана. Она бежит по экрану план, для каждого тайла сравнивает есть ли различие с тайлом экран факт. Только если различие есть, то делаем изменение на экране, и обновляем номер тайла в экране факт.
Сами тайлы это 9 байт -- 8 байт на пиксели плюс один байт на атрубут, всего 256 тайлов.
Если обратите внимание, большинство строк на экране в горизонтальном направлении почти одинаковы. Поэтому даже когда выполняется вроде бы большое скроллирование (поезд уезжает), реально изменений на экране не так уж и много.
Так что, на мой взгляд, игрушка в техническом плане просто прекрасна.
- - - Updated - - -
В версии для Электроника МС-0515 есть отличие -- фактически не реализован демо-режим.
В демо-режиме должна идти бегущая строка, плюс человечек должен бегать сам.
UPD: Демо-режим реализован, это в эмуляторе неправильно отвечал порт клавиатуры.
-
Игру переписывали или как-то бинарно транслировали?
-
Цитата:
Сообщение от
shattered
Игру переписывали или как-то бинарно транслировали?
Сложно сказать наверняка, но больше похоже что полуавтоматом транслировали, т.е. что-то среднее.
Код читается хорошо, при полной трансляции было бы наверное хуже.
А вообще посмотрите сами, тут в аттаче.
https://github.com/nzeemin/uknc-stop...nal/expres.lst
-
Разобрался с клавиатурой в EXPRES.SAV.
Порты 177542/177544 должны возвращать 177777 -- наличие ноля в одном из битов показывает что клавиша нажата.
Теперь при запуске игры работает демо-режим, при нажатии ВВОД запускается сама игра. Но управление реально дубовое.
-
26
Версия 26 эмулятора.
По сравнению с версией 18:
* Добавлен режим 800x600
* Улучшения в отладчике
* Таймер КР580ВИ53 и звук -- не закончено, но уже играет стартовую мелодию, в Stop the Express есть звук поезда "тыдык-тыдык"
* Поправлены IRQ2 и IRQ11 -- в тесте 187103 появилось количество прерываний
https://img-fotki.yandex.ru/get/2058...224d7_orig.png
-
Бейсик BASICO.SAV с дискеты 059.dsk -- работает:
(точность плавающих ужасна, всего 6 значащих цифр)
https://img-fotki.yandex.ru/get/4671...f3b11_orig.png
- - - Updated - - -
В BASICO есть оператор SOUND.
Можно с того же диска загрузить программу: LOAD<ВВОД>LAMBAD<ВВОД> и запустить -- играет!
-
nzeemin, Пишет что не является приложением Win32.
-
у меня нормально запускается и работает, никаких ошибок.
использую windows 7 x64 ultimate.
-
Теперь пишет "Приложению не удалось запустится, поскольку MSVCR120.dll не был найден. Повторная установка приложения может исправить эту проблему."
-
Вложений: 1
Цитата:
Сообщение от
MiX
Теперь пишет "Приложению не удалось запустится, поскольку MSVCR120.dll не был найден. Повторная установка приложения может исправить эту проблему."
Посыпаю голову пеплом. Ещё одна сбитая настройка.
Во вложении версия 27.
Зато я успел исправить одну багу, чтобы звук был в обоих каналах.
-
Теперь нормально.
- - - Добавлено - - -
nzeemin, Можно попросить прокрутку сделать на экран? Кстати почему адреса и векторы по нулям?
http://s013.radikal.ru/i324/1707/71/56bc8982eec8.png
-
Цитата:
Сообщение от
MiX
nzeemin, Можно попросить прокрутку сделать на экран? Кстати почему адреса и векторы по нулям?
Прокрутку -- как я понимаю, хочется видеть то что отскроллировалось вверх? Слабо себе представляю как это реализовать.
Про адреса и вектора -- не знаю почему.
-
Цитата:
Сообщение от
nzeemin
хочется видеть то что отскроллировалось вверх?
Да.
Цитата:
Сообщение от
nzeemin
Слабо себе представляю как это реализовать.
Думаю поможет.
Справка по скроллу.
-
Цитата:
Сообщение от
MiX
Думаю поможет.
Цитата:
Сообщение от
nzeemin
Слабо себе представляю как это реализовать.
Надо что бы как на реале вывод на дисплей работал )
-
-
Цитата:
Сообщение от
MiX
Что с командами?
Да, спасибо что напомнили. Убрал команды EIS.
Цитата:
Сообщение от
MiX
Еще одна особенность процессора, команда MFPT.
Это уже было реализовано.
-
По дисководу.
По описанию загрузка происходит за 12 сек.
На эмуляторе 48 сек.
На эмуляторе с пульта 31 сек.
-
MiX, да, я уже тоже подозреваю что процессор работает почти с той скоростью что нужно (судя по LAMBAD.BAS например), а вот дисковые операции тормозят.
Возможно, дело в том что в эмуляторе дисковода не реализован интерливинг секторов.
shattered, у тебя с этим как?
-
Цитата:
Сообщение от
nzeemin
я уже тоже подозреваю что процессор работает почти с той скоростью что нужно
Если организовать электронный диск и переписать на него систему, то загрузка должна произойти 1,1 сек. Это и будет косвенным подтверждением.
Цитата:
Сообщение от
nzeemin
Возможно, дело в том что в эмуляторе дисковода не реализован интерливинг секторов.
Да в эмуляторе не нужна реальная скорость дисковода, нужна максимальная. Эмулятор то работает с образом а не с дискетой.
Насчет интерливинга.
А есть ли он на настоящем контроллере?
-
На частоте 7.5 Мгц и с диском System.dsk - за 12 секунд успевает появиться баннер "ОСА 1.0", а за 15 -- prompt. interleave не используется.
кстати, из посекторного образа сначала формируется MFM-поток, который затем декодируется эмулятором ВГ93 (при записи -- наоборот)
-
Цитата:
Сообщение от
MiX
Да в эмуляторе не нужна реальная скорость дисковода, нужна максимальная. Эмулятор то работает с образом а не с дискетой.
Ну как сказать. Тут же речь о точности эмуляции. У меня реально дискета "вертится" (300 RPM = 5 оборотов в секунду), если процессор после чтения блока что-то ещё делает (считает контрольную сумму?) то к следующему блоку может не успеть перейти -- диск за это время провернётся, интерливинга нет -- значит будет лишний оборот. Возможно, в этом и причина. А возможно, в плохой реализации эмуляции ВГ93.
Цитата:
Сообщение от
MiX
Насчет интерливинга.
А есть ли он на настоящем контроллере?
Есть. Но только в драйвера, а не в контроллере:
Цитата:
Сообщение от
Alex_K
Вроде бы привел файлы образов в удобочитаемый вид для эмуляторов. Теперь можно нормально посмотреть и в UKNCBTL.
Собственно таблица интерлива:
0 1 2 3 4 5 6 7 8 9
==============
0 5 1 6 2 7 3 8 4 9
4 9 0 5 1 6 2 7 3 8
3 8 4 9 0 5 1 6 2 7
2 7 3 8 4 9 0 5 1 6
1 6 2 7 3 8 4 9 0 5
- - - Updated - - -
И вот ещё: http://zx-pk.ru/threads/15146-ms-051...l=1#post431962
- - - Updated - - -
Цитата:
Сообщение от
shattered
На частоте 7.5 Мгц и с диском System.dsk - за 12 секунд успевает появиться баннер "ОСА 1.0", а за 15 -- prompt. interleave не используется.
А это вот как? -- это и базовые тесты так быстро проходят и мелодия играется? У меня почти 20 секунд уходит ещё ДО начала загрузки.
-
Цитата:
Сообщение от
nzeemin
Ну как сказать. Тут же речь о точности эмуляции. У меня реально дискета "вертится" (300 RPM = 5 оборотов в секунду)
А зачем образ вообще крутить? Если нужны импульсы индекса то сам эмулятор его делает, и образу всё равно с какой скорость его крутят.
Цитата:
Сообщение от
nzeemin
если процессор после чтения блока что-то ещё делает (считает контрольную сумму?) то к следующему блоку может не успеть перейти -- диск за это время провернётся, интерливинга нет -- значит будет лишний оборот.
А нелинейный доступ? Зачем ждать лишний оборот когда эмулятор может прочесть любую область образа.
Цитата:
Сообщение от
nzeemin
интерливинга нет
Интерливинг для эмулятора нужен лишь для того чтобы понимать настоящие образы, только и всего. Сейчас эмулятор понимает конвертируемые образы.
-
Цитата:
Сообщение от
nzeemin
А это вот как? -- это и базовые тесты так быстро проходят и мелодия играется? У меня почти 20 секунд уходит ещё ДО начала загрузки.
Да, время от холодного старта -- и тесты проходят и мелодия играется :)
-
nzeemin, Есть некоторые неточности.
В режиме пульта нет перехода на следующую ячейку (команда ПС). На ПСшной клавиатуре использовал кнопку "+" в цифровой клавиатуре.
На виртуальной клавиатуре работает (кнопка 13).
И ещё вопрос, пульт в адресном пространстве находится с 172000?
- - - Добавлено - - -
Что за команда пульта "D" ? После неё эм. зависает.
- - - Добавлено - - -
UPD. нашёл, это команда загрузки с НМГД. Зависает если нет образа диска.
-
MiX, так там вообще мало что размаплено, никак не доберусь.
Технические сведения о машинке тут: http://www.emuverse.ru/wiki/%D0%AD%D...0%9C%D0%A10515
-
Цитата:
Сообщение от
nzeemin
Технические сведения о машинке тут
Там машинка слабо описывается.
Код:
Регистр режима в битах 13-15 имеет 1 1 1, что задаёт адрес старта — 172000 и адрес рестарта 172004.
Что за регистр?
При 172000G выходит на стартовое меню, а при 172004G показывает 000000. Если после этого сделать опять 172000G то показывает 000002.
-
Вложений: 1
Цитата:
Сообщение от
MiX
Код:
Регистр режима в битах 13-15 имеет 1 1 1, что задаёт адрес старта — 172000 и адрес рестарта 172004.
Что за регистр?
КР1807ВМ1 это DEC T11, на который есть подробное описание -- вложил скрин в аттаче.
-
Цитата:
Сообщение от
nzeemin
вложил скрин в аттаче.
Ну так там mode register. Из восьми регистров такого нет. Как его прочитать/записать, какой адрес регистра?
По эмулятору.
При установки галочки "Autostart" эм. долго думает.
-
Цитата:
Сообщение от
nzeemin
КР1807ВМ1 это DEC T11, на который есть подробное описание -- вложил скрин в аттаче.
Разумеется, скрин нечитабельный, т.к. форумские аттачи портят его.
-
Цитата:
Сообщение от
MiX
Ну так там mode register. Из восьми регистров такого нет. Как его прочитать/записать, какой адрес регистра?
он безадресный, как в ВМ1 и ВМ2. читается при сбросе.
http://www.textfiles.com/bitsavers/p...1_UsersMan.pdf -- раздел 4.
-
Цитата:
Сообщение от
shattered
он безадресный, как в ВМ1 и ВМ2. читается при сбросе.
Так как читается? Нажал сброс, дальше что?
-
Цитата:
Сообщение от
shattered
он безадресный, как в ВМ1 и ВМ2.
А вот эти безадресные регистры в PDP они родом откуда? Что явилось причиной их появления именно в этой архитектуре?
-
MS0515BTL 1.0.65
Релиз эмулятора версия 65.
Что нового:
- Процессор: удалены EIS команды и HALT-режим.
- Процессор: улучшены тайминги.
- Улучшена скорость эмуляции со включенным звуком.
- Окно отладчика Disassemble: улучшены хинты для текущей инструкции.
- Сохранение скриншота переключено на 256-цветную палитру.
- Опции командной строки.
- Disassemble: исправлен порядок аргументов MUL/DIV/ASH/ASHC; устранены две утечки GDI ресурсов.
- Добавлен режим экрана 1120 x 800 Interlaced.
- Панель инструментов отладчика: добавлена кнопка для закрытия отладчика; окошко ввода адреса теперь позволяет воодить 16-разрядные значения.
- На панели статуса показывается индикатор "Sound".
- Точки останова в отладчике.
- Окно Settings Fonts and Colors.
- Использование в отладочных окнах цветов из настроек.
- Отладочное окно Debug: показ списка точек останова.
- Черновая версия "точек просмотра" - watchpoints.
- Добалено окно просмотра спрайтов Sprite View.
- Файлы ПЗУ помещены в ресурсы; добавлена возможность выбрать текущее ПЗУ - ROM A либо ROM B.
И другие мелкие изменения и исправления.
Скачать: https://github.com/nzeemin/ms0515btl...btl-65-exe.zip