Было такое)
Но тут, с обернутым файлом ZX или MSX, пользователь и не подозревал что это эмулятор. Все выглядело как будто это PC игрушка.
Было такое)
Но тут, с обернутым файлом ZX или MSX, пользователь и не подозревал что это эмулятор. Все выглядело как будто это PC игрушка.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Тут речь о двух разных задачах. Первая это сделать MSDOS версию игры ОРИОНА, причём так, чтобы по выходу из игры (нажатием какой-либо клавиши, например F10), происходил бы не рестарт эмулятора, а сразу выход в MSDOS.Сообщение от error404
А вторая задача, которая намного сложнее, это использование программ CP/M, что используют некоторые свойства CP/M, не позволяющие их использовать с обычным эмулятором CP/M, наподобие 'CP/M program executor'. Кстати, по первому впечатлению, DOS-версия этой японской программы 1999 года вряд-ли лучше, чем 22NICE 30-ти летней давности. Но вот Windows версия очень полезна тем, кто имеет Windows не XP, отчего не может прогонять MSDOS-программы напрямую, а вынужден трахаться с DOS-BOX-ом.
Любой эмулятор ОРИОНА может делать автозапуск игры. Что собственно и делается, когда при запуске эмулятора мы оказываемся в VC$ ORDOS. Достаточно разместить в квазидиске 'B' ORDOS-файл с именем EXT$ и сам файл с кодом подлежащий автозапуску.
Но это совсем не то. Особенно, если речь о новомодном эмуляторе написанном на ЯВУ с объёмом кода почти в мегабайт. Тратить мегабайт для каждой игры ОРИОНА размером в 10-20 кб, не смешно. Удачно, что у меня код эмулятора КР580 это ~70 кб, а Z80 это ~90 кб. Более половины кода это встроенный монитор-отладчик и кусок для работы с файлами, написанный на СИ. Если это выкинуть и убрать реакцию на все клавиши (кроме F10 для аборта), то к каждой игре будет добавляться всего ~20...40 кб кода (это блок эмуляции CPU и визуализатор).
Неудобную оверлейную версию, в которой при старте будет искаться файл с кодом игры под именем GAME.ORD я могу сделать за час (это надо, чтобы кучу всего поудалять в исходнике). Это конечно малоудобно, т.к каждый раз для запуска очередной игры надо переименовывать файл (впрочем, если у Вас Win XP, где есть поддержка BAT-файлов MSDOS, то это автоматизируется).
С очень небольшими хлопотами (для каждой игры) можно делать однофайловую версию для каждой игры. Имея IDA это тоже очень просто (с помощью IDA достаточно получить исходник игры, причём даже не полноценный исходник, а просто длиннющий блок DEFB операторов, чтобы при линковке код игры встроился в программу).
Но в идеале хотелось бы сделать компилятор игр. Его запускаем, в панели прокрутки выбираем игру, нажимаем <Enter> и на винт записывается один EXE-файл, содержащий готовый код программы для запуска в MSDOS или Windows. В ближайшие дни попробую сделать EXE-файлы некоторых КР580 игр ОРИОНА, что у меня сохранились (Z80 игры не сохранились).
Интересно, где можно найти переделанные подобным образом игры от ZX-Spectrum? Т.к возиться с эмуляторами, образами дисков и т.п. - утомительно и лениво. И не всякий разбирается в TR-DOS или умеет набрать LOAD "", - удобнее просто запустить игру кликнув мышкой.
PS. Конечно все игры ОРИОНА делать EXE-файлами не стоит. Зачем отвращать людей некрасивыми или неинтересными играми (т.е с низким игровым аспектом).
Последний раз редактировалось barsik; 18.05.2017 в 22:36.
Вот тут идея появилась. Есть такой проект The ZX Basic Compiler, написан он на Python. В нем используется парсер PLY. Я думаю, кто с программированием знаком по не наслышке, будет не сложно сделать перекодировщик с ассемблера Микрон в ассемблер М80. Python очень простой язык, почти как Бейсик.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
Интересные игры на Орионе? Это что-то мне неизвестное. Серьезно, если задача поиграть в неудобных DOS-видеорежимах, то есть миллион играбельных (в отличие от орионовских убогих) игр времен ХТ, 286, 386. Уже в EXE.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
Вредный Error404, играли все и радио любители и залетные товарищи, это было интересно. Целые вечера просиживали)
Даже дедушка в шахматы рубился)
Последний раз редактировалось OrionExt; 19.05.2017 в 19:41.
Электроника КР-02, MSX YIS-503IIR, Орион-128, Ленинград-2, Pentagon-128k, MSX2 YIS-503IIIR, MSX-EXT, ...
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Имею вопрос к авторам эмуляторов отечественных 8-ми разрядок на Z80.
В процессоре Z80 есть регистр R, служащий для регенерации памяти. К сожалению, эта регенерация памяти ни программно, ни аппаратно не отключается, что возможно ускорило бы Z80. Поэтому при написании эмулятора встаёт вопрос его эмуляции.
В эмуляторах ZX-Spectrum этот регистр безусловно приходится эмулировать, т.к его используют некоторые программы, чтобы защититься от прогона в отладчике. А также некоторые программы используют регистр R как однобитовый флаг, пользуясь тем, что вектор регенерации в динамических ОЗУ (РУ3 и РУ5) семибитовый, отчего бит D7 в регистре R не меняется со временем.
Однако в программах всех отечественных 8-ми разрядок, что изначально построены на базе КР580 и в которые с целью турбирования был установлен процессор Z80 (т.к КР580 не турбируется в силу отсутствия его скоростных вариантов), регистр R не используется, отчего его полная эмуляция необязательна (но бит D7 в регистре R надо эмулировать, это используется).
Неточная эмуляция Z80 в эмуляторах позволяет программно определить прогоняется ли программа в эмуляторе (программном или аппаратном) или же на реальном Z80. Например, в эмуляторе точно не будет соответствия с реалом, если используется схема турбирования с WAIT, есть WAIT для отдельных портов или в системе работает ПДП. Достаточно, по прерываниям 50 Гц установить скорость Z80, например понять, что Z80 работает в режиме Турбо-142%, а затем пользуясь этой информацией проконтроллировать корректность работы регистра R. Так что не составляет труда программно вычислить эмулятор. Кстати, в эмуляторах также обычно несинхронный и неточный период прерываний 50 ГЦ, что также позволяет вычислить эмулятор. Это позволяет защитить ценную программу изначально защищённую форматом МГ-записи от взлома и прогона в эмуляторе.
К сожалению, я не имею инфо о работе регистра R. Когда вводится дополнительный такт /RFSH и инкрементируется R? Вводится ли он вообще в каждой команде Z80 (например IN/OUT), как и сколько их вводится в командах типа LDIR? Зависит ли число вводимых тактов RFSH (после каждого из которых инкрементируется R), от того происходит ли в команде одно обращение к памяти или два (в командах работы со словами).
Как видите, по существу эмуляция регистра R в эмуляторе просто бессмысленна, т.к полного соответствия с реалом всё-равно не достичь и в программах регистр R не используется. Эмуляция регистра R, только бесполезно тормозит эмулятор, не позволяя ему работать на медленной 386-той (не говоря уже о 286). В моём эмуляторе есть ключ 'NO_R', позволяющий странслировать версию, как с эмуляцией регистра R (инкремент R на 1 после прогона любой команды), так и более скоростную версию без R.
Таким образом сам регистр R совершенно бесполезен, а вот сигнал /RFSH можно использовать аппаратно.
Простейший вариант использовать /RFSH - как такт равный примерно десятой части клока Z80. Удобство в том, что этот сигнал пропорционален такту Z80.
Удобно использовать этот сигнал для восстановления режима Турбо. В турбированных ОРИОН-ах при обращении к КНГМД делают аппаратное переключение на НЕТУРБО. В качестве управления используют сигнал HLD (Head Load) из ВГ93. Этот сигнал взводится по первому же обращению к ВГ93 и длится ещё 5 секунд после последнего обращения к ВГ93. Если /RFSH подать на счётчик (на 256), то мы сможем вернуть режим Турбо сразу-же по окончании работы с НГМД, что позволит существенно ускорить обмен с НГМД. Потому что сейчас в CP/M после считывания физ.сектора в дискетный буфер, выполняется пересылка блока в 128 байт на адрес DMA на скорости НЕТУРБО, отчего скорость работы с НГМД 10-ти мегегерцового ОРИОНА такая же, как на базовом ОРИОНЕ. Тогда взвод триггера НЕТУРБО происходит по каждому обращению к ВГ93, а его сброс спустя определённое число команд Z80, отчего пересылка на адрес DMA происходит уже на максимальной скорости.
Ещё полезнее /RFSH, когда нам требуется выдавать короткие импульсы жёстко определённой длины. Например, для программного обмена по линии, короткий нулевой импульс кодирует 0, а длинный 1. Обычно ставят два аналоговых одновибратора АГ3 и взводят их стробами портов. Но это нестабильно и ненадёжно. Проще и более гибко поставить ИЕ7, заведя на его входы предустановки 4 бита от ППА клавиатуры. Тогда для выдачи импульса в линию, записываем его нужную длину в 4 бита ППА и даём строб на какой-то порт. По стробу взводится триггер выдающий 0 в линию, в ИЕ7 происходит загрузка с параллельных входов и взвод триггера одновременно переводит Z80 в WAIT. После чего Z80 стоит, но выдаёт такт /RFSH с стабильным периодом (4 маш.такта), который поступает на вход вычитания ИЕ7. Когда ИЕ7 досчитает до 0, сигнал с его выхода "перенос" сбросит триггер, что окончит импульс в линию и освободит Z80. Т.к предустановку стартового веса счётчика можно программно менять, то получается программно управляемый генератор импульсов, что существенно упрощает аппаратуру скоростной передачи по линии.
Да, большинство игр ОРИОНА имеют низкий игровой аспект. Но всё же есть часть игр, что не уступают в качестве играм ZX-Spectrum. Вот неполный список вполне приличных игр КР580: ALMAZ-3, BATTY, MOON FOX, LODE RUNNER, BUDI, TUTANHAMON, SILENT SERVICE, DTE, MANIC-MINER, JET-SET, THRUSTA, CHRONOS, PSST, XONIX от RK86Сообщение от error404
Последний раз редактировалось barsik; 20.05.2017 в 11:27.
Лучше сделать и жалеть, чем не сделать и жалеть.
Некоторые из моих поделок тут: https://github.com/serge-404
ага) только я, как автор этого контроллера и системы, получил тут только одобрительные отзывы. Поклонники даже дезассемблировали её как образец.
Контроллер был с самого начала сделан по уму (читай спецификациям) без колхозанства. Я как увидел резюки на шине "ленинградских" версий, чтобы ВГ93 работали устойчивее, которые толкали на тушинском радиорынке, так сразу мне всё ясно стало))
А система SPDOS была самодостаточна, и цель сделать её СП\м совместимой никто не ставил. Ну да ладно, дела дано минувших дней))
- - - Добавлено - - -
o!? вот оно оказывается как))) еще и гимор можно поиметь.
з.ы.Еще раз спасибо за теплые слова к моей разработке.
- - - Добавлено - - -
На всякий случай напомню, что расстояние от знакомства до подготовки материалов и публикации занимало до полугода.
Т.е. в журнале в конце 92 года опубликовали то, что у меня уже год как работало, вернее кормило меня, т.к. орион у меня был не сам по себе, а мозгом продвинутого программатора. А на момент публикации SPDOS 3.6 у мнея уже крутилась 4.3 с "нортоновским" интерфейсом.
улыбнуло.У меня есть ответ на этот вопрос.
Можно взять дамп CP/M из иностранных журналов (напр. Funkamateuer 04.1989), как сделал я. Удобнее всего попросить владельца КОРВЕТА считать системные дорожки и скинуть их на ленту в МГ-формате ОРИОНА. Иначе надо достать любую дискету с CP/M, например, от СИНКЛЕРА или КОРВЕТА и написать программку считывающую в ОЗУ 3 (или 2) системные дорожки. Дизассемблером МИКРОН дизассемблируете CCP, BDOS и BIOS. Затем изменяете в BIOS адреса В/У, модифицируете CONIN, CONOUT и забиваете в WBOOT подкачку кода BDOS с дискеты. Затем всё снова транслируете уже для адресов ОРИОНА. Грузите в ОЗУ с ленты CP/M на рабочие адреса и стартуете на WBOOT. Вы оказываетесь в CP/M и можете читать чужую дискету с программами CP/M. Первым делом в ОЗУ считываете форматёр и выводите его на МГ-ленту. Затем дизассемблируете и адаптируете форматёр для адресов ОРИОНА. После этого форматируете дискету и записываете на неё CP/M ОРИОНА уже с полноценной подкачкой кода BDOS, делаете программку загрузчика и загружаетесь в CP/M ОРИОНА. Далее с помощью POWER-а командами LOAD и SAVE копируете на дискету ОРИОНА все нужные Вам программы CP/M. Но ещё проще это сделать, если Вы имеете свой КОРВЕТ. Это несложная работёнка доступная даже малоопытному программисту.
Разработчик КНГМД для Специалиста и Ориона128, автор SPDOS (журнал "Радио" 12/1992, 1-2/1993). Манускрипт, датированный 1993-94гг: Отладка контроллера SPDOS SPDOS v4.3
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)