PDA

Просмотр полной версии : Что же предложил изобретатель



zx_
28.05.2014, 15:12
Л. Афанасьев?
Пакет ПО -"Специалист МХ-RAMFOS", избавляющий пользователей от проблем с совместимостью различных Мониторов.

и сейчас читать о несовместимости МХ и стандартного спеца -? неправильно
гдето закралась ошибка)

48153


М-К, 1991, номер 3, страница 42

PS тоесть, судя по этой единственной журнальной публикации, Специалист МХ является расширенным вариантом ПК Специалист, совместимым со всеми существующими вариантами стандартных спецов и Мониторов, плюс некая совместимость с Орион-128

HardWareMan
28.05.2014, 19:29
http://savepic.net/5570585.png

zx_
28.05.2014, 20:51
исходники рамфос есть ведь?

или можно попросить fifan обратиться к Афанасьеву , с просьбой продать, выложить исходники

fifan
12.06.2014, 21:34
исходники рамфос есть ведь?

или можно попросить fifan обратиться к Афанасьеву , с просьбой продать, выложить исходники

Есть на сайте (http://www.spetsialist-mx.ru/Soft/Specimx_asm.rar).

HardWareMan
13.06.2014, 07:45
Ну, это же не оригинал а реверс. От Винксру он хотя-бы с объяснением кусков кода.

zx_
16.06.2014, 21:35
HardWareMan, реверс понятно, а от автора уже ничего нет?

только один способ есть все это проверить, да

а слабо эмулятор спектрума 48 спецу сделать, как у вектора? софтово- железный

barsik
07.12.2017, 11:35
а можно эмулятор спектрума 48 спецу сделать, как у вектора? софтово- железный
Теоретически сделать эмулятор на NMI вполне возможно. Это реально и даже не так уж сложно.

Но получится довольно громоздко и в цвете, из-за особенности организации цвета в СПЕЦИАЛИСТЕ, - очень медленно. Гораздо проще и качественнее это делается для ОРИОНА на Z80 с окном в 16 кб.

Эмулятор делается только на доработанный СПЕЦИАЛИСТ. Доработка делается для того чтобы

- поставить Z80 вместо КР580, причём с портами (желательно на такте 4-5 МГЦ без WAIT)
- получить сплошное ОЗУ 64 кб (FULL RAM)
- получить 16 полноценных цветов как у ОРИОНА
- поставить ПЗУ содержащее ZX-ROM 16 кб с адрес 0
- ввести аппаратные порты ZX-клавиатуры и джойстика
- подключить любую клавиатуру с матрицей 5*8

Z80 без Турбо ставится без проблем за час труда. Сплошное ОЗУ 64К без проблем получается при введении второй банки РУ5-тых. Основной проблемой, как ни странно, является цвет.

Потому что цвет СПЕЦИАЛИСТА с программно недоступным ОЗУ цвета, неудобен для такой задачи. Даже не потому, что имеет не по 16 цветов для INK и PAPER. А из-за принципа его организации.

Цвет ОРИОНА подходит для этого гораздо лучше. При записи всего 1 байта в ОЗУ атрибутов в ZX раскрашивается целое знакоместо 8*8 точек. На ОРИОНЕ это эмулируется записью 8-ми байтов в плоскость цвета. А вот на СПЕЦИАЛИСТЕ придётся не только писать 8 байтов, но и предварительно читать их. Т.к СПЕЦИАЛИСТ не имеет программно доступного отдельного ОЗУ цвета. Цвет переписывается из регистра цвета автоматически при записи экранного байта в ОЗУ экранной графики. Т.е мы можем записывать цвет только одновременно с графикой. Для чего байт графики придётся сначала считать, затем занести нужный цвет в регистр цвета и снова записать байт графики в экранное ОЗУ. В итоге, там где ZX делает всего 1 команду Z80, на эмулирующем СПЕЦИАЛИСТЕ придётся сделать более полусотни команд.

А при записи байта графики в экранное ОЗУ ZX возникает та же проблема. Сначала придётся считать цветовой атрибут соответствующий позиции экранного байта ZX (для чего адрес атрибута придётся сначала рассчитать), затем занести его в регистр цвета СПЕЦИАЛИСТА и только затем записать байт графики в экран СПЕЦИАЛИСТА.

Ещё одной причиной для тормоза станет отсутствие диспетчера ОЗУ, как в Z80CARD-II, который позволяет в одном адресном пространстве находиться и экрану ZX и экрану ОРИОНА и программе визуализации. А на СПЕЦИАЛИСТЕ, не имеющем диспетчера ОЗУ, экран ZX находится в одной банке, экран СПЕЦИАЛИСТА в другой. Для визуализации каждого экранного байта из экрана ZX придётся переключать банки, что также существенно тормознёт. Из-за этого требования к быстродействию Z80 к эмулятору на СПЕЦИАЛИСТЕ будут вдвое выше, чем к эмулятору на ОРИОНЕ. И программа визуализации на СПЕЦИАЛИСТЕ будет намного сложнее.

Ставить ПЗУ Синклера требуется потому, что без ПЗУ не существует способа перенести программу в другую банку где вся память ОЗУ. Если есть способ иметь отключаемое ПЗУ в других адресах, то можно перегружать ZX-ROM в банку 1 на адрес 0, и тогда необходимости иметь ZX-ROM в ПЗУ нет.

Эмуляция без цвета делается намного проще и для неё хватит скорости Z80 всего в 4 МГЦ. Если в СПЕЦИАЛИСТЕ уже есть режим FULL RAM в банке 0, то чтобы гонять ROM-бейсик ZX и игры от ZX-16К, можно сделать доработку всего за пару часов. Тогда в системный разъём втыкается простая платка содержащая порт ZX-клавиатуры, ZX-порт магнитофона и элементы обеспечивающие прерывания INT и NMI. В такой системе можно использовать программы ZX, которые не портят ОЗУ выше 9000, т.е только игры для 16-ти килобайтовой версии.

Но, даже такой эмулятор на 16К имеет смысл, т.к даже 16-ти килобайтовых ZX-игр больше, чем имеется качественных игр СПЕЦИАЛИСТА. Чтобы сделать эмулятор на 48 кб, в СПЕЦИАЛИСТ надо поставить вторую банку ОЗУ, что тоже несложно делается (особенно, если это делать заменой РУ5 на РУ7).

Пост написан специально для разъяснения цвета СПЕЦИАЛИСТА

Error404
07.12.2017, 12:15
А если так:
- Z80 (понятно, без него никак)

- от цветного режима отказываемся (да, это печальное упущение, но кардинально упрощает - см. ниже, особенно учитывая что цвет "большими квадратиками" не совсем то, за что следует бороться "до последнего инженера" ИМХО, вон на Орионе были же ч/б адптации от Спека типа Jet-Set, Moonfox - и нормально выглядело, особенно в сравнении с примитивными играми, источником которых был оригинальный Специалист)

- добавляем ПЗУ 16кб с SOS спектрума в странице 0 (будем делить адресное пространство 16к-шными страницами), дополненой неким кодом (добавляется несколько Специалисто-специфических подпрограмм обработки NMI), диспетчер 16к в окне 8000..BFFF и full-RAM. Получаем 2 режима:
* стандартный Специалист, в котором имеем доступ сразу и к Спектрумовскому экрану (он "удачно" лежит в 16к-шной странице 1 и ничем не перекрыт) и к Специалистовскому (с 9000 в 16к-шной странице 2), т.е. основной NMI-процедуре (ее разместить в области 8000..8FFF, в режиме "Спек" спрятанной как и родной экран), перекодирующей экраны и клавиатуру, не надо щелкать страницами в процессе конвертации,
* режим 16кб ПЗУ + 64к ОЗУ когда по адресу 0..3FFF включено дополнительное ПЗУ, включен режим FullRAM (доступ к ОЗУ с С000), а подПЗУшечное ОЗУ коммутируем с 0000 на 8000 (чтобы накрыть им экран Спеца, так некстати размещенный автором в середине адресного пространства) - имеем ПЗУ + 48к сплошного ОЗУ в верхних адресах как и надо для Спека

- таки еще нужно ОЗУ не менее 256 байт, выбирающееся IN/OUT по A8..A15 порта FE (по NMI заполнять его аналогом актуального состояния матрицы клавиатуры Спека, чтобы ПО Спека читало из "клавиатуры" без правок Спековского кода)

Всё поместилось в штатные 64кб ОЗУ Спеца. Из доп оборудования - одна ПЗУ неменее 16кб объемом, одна статическая ОЗУ 256х8 или более, одна КП11 для диспетчера ОЗУ 16кб в окне 8000, и какой-то минимум логики для обвязки этих доработок. А вот если планировать какую-то нормальную ОС, а не огрызок живущий в 32кб, то тут уже нужна доп. страница ОЗУ, других путей получить 64к ОЗУ для ОС, сохранив штатный экран, я не вижу.

Кстати, поскольку доп. ПЗУ будет как минимум W27С512 (других сейчас не достать, да и смысла нет искать 27128), то в нем можно сделать переключаемые страницы (выбирать их тем же портом диспетчера что и страницы ОЗУ), и как результат - конфигурацию режима 2 (ПЗУ+64кб ОЗУ) можно использовать для разработки чего-то более интересного чем эмулятор Спектрума48 - всяко пользовательскому процессу тут отдается ОЗУ_48к+ОЗУ_4к+Экран_12к что куда как интереснее чем в оригинальном Специалисте с его ОЗУ_36к+Экран_12к. Да, ПЗУ в этом варианте оказывается на неудобном для CP/M адресе 0000, но на CP/M же свет клином не сошелся. Или можно ввести бит порта диспетчера, отключающий ПЗУ с 0000. Тогда экран 9000 можно закрывать 16к страницей 3 (которая под портами) и поиметь 48к сплошного ОЗУ начиная с 0000 (на Орионе столько хватало для версий CP/M 48к, работавших в странице 0 ниже экрана С000, а тут у нас есть же еще 4кб "ниже экрана 9000", куда можно вынести почти весь BDOS и получить TPA в 44кб)


Ну или уже обсуждавшийся вариант с двумя 64к-шными страницами ОЗУ. В этом случае SOS Спектрума будет в ОЗУ, а не ПЗУ (весь "эмулятор в дополнительной странице"), и на выходе мы имеем почти Орион-128. :) Делать ли в этом варианте диспетчер по 16кб - тут надо подумать, возможно для ч/б можно и обойтись. Этот вариант хорош тем, что кроме эмуляции Спектрума, во второй 64к странице еще можно и CP/M запускать с полноценного объема TPA.

zx_
07.12.2017, 12:46
Всё поместилось в штатные 64кб ОЗУ Спеца. Из доп оборудования - одна ПЗУ неменее 16кб объемом, одна статическая ОЗУ 256х8 или более, одна КП11 для диспетчера ОЗУ 16кб в окне 8000, и какой-то минимум логики для обвязки этих доработок. А вот если планировать какую-то нормальную ОС, а не огрызок живущий в 32кб,

нене! минимум миниморе, всякие ОС это не к эму
как можно меньше деталей , все в духе того времени.

- - - Добавлено - - -


цвета в СПЕЦИАЛИСТЕ, - очень медленно

цвет в Специалисте как раз быстр, со скоростью чб

barsik
07.12.2017, 14:44
цвет в Специалисте как раз быстр, со скоростью ч/белого
Да, когда надо выводить много-чего в одном цвете, например, одноцветные символы, то скорость из-за цвета не страдает.

Но когда выводится многоцветная картинка, то приходится часто перезагружать регистр цвета и скорость упадёт (в зависимости от картинки) возможно на 20-50%. Но все-равно будет быстрее, чем полноценный цвет ОРИОНА.

Впрочем, у СПЕЦИАЛИСТА журнальный цвет такой убогий, что всё одноцветное, - например, по синему лабиринту на чёрном фоне бегают зеленые ксониксы и красные жорики. А одноцветные спрайты действительно тормозят очень мало.

Но в случае апп.эмулятора концепция А.Волкова неудачна. По отношению к ОРИОНУ, - видимо вдвое, а то и втрое тормознее.



таки еще нужно ОЗУ не менее 256 байт, выбирающееся IN/OUT по A8..A15 порта FE (по NMI заполнять его аналогом актуального состояния матрицы клавиатуры Спека, чтобы ПО Спека читало из "клавиатуры" без правок Спековского кода)
Ну да, идея эмулировать и ZX-клавиатуру, чтоб не ставить родную, - хороша для конечного пользователя, но слишком утомляет разработчика. По мне, если есть ZX-клавиатура, проще припаять две КП11 для неё и джойстика и не трахаться. Схема станет громоздкой если эмулировать.

Вы хотите вводить полноценный диспетчер с окном 16К в адресах 8000...BFFF, с целью закрыть экран СПЕЦИАЛИСТА. Вы не в курсе насколько ретроградный контингент на СПЕЦИАЛИСТЕ. У "старичков" уже руки трясутся, да и энергии нет, а у молодёжи у некоторых "руки крюки", а у остальных просто другое хобби (собирать только официальное, т.е журнальное).

Поэтому годится всё только самое простое, самый возможный минимум. По этой же причине клавиатура и джойстик д.быть реальные. Диспетчер не пойдет (это разрезы на плате).

Зато пойдёт замена ОЗУ 8000...FFFF куском из другой банки (можно 62256 с ИР23 для защёлки адресов по /RAS). Это одновременно решает проблему FULL RAM, т.к при этом из адр.пространства убирается ПЗУ C000 и В/У F800...FFFF. Для эмулятора такой вариант избавляет ZX-ROM в ПЗУ.

Потому что


добавляем ПЗУ 16 кб с SOS спектрума в странице 0 (будем делить адресное пространство 16К-шными страницами), дополненой неким кодом (добавляется несколько специалисто-специфических подпрограмм обработки NMI), диспетчер 16К в окне 8000...BFFF и FULL-RAM
ПЗУ с ZX-ROM не нужно, раз уж дело происходит в банке 0, какая проблема, находясь ещё в стандартной конфигурации загрузить его в ОЗУ? А программа визуализации прекрасно умещается в ZX-ROM. Оказывается в конце ZX-ROM до хрена свободного места, спасибо дяденьке сэру Клайву.


если планировать какую-то нормальную ОС
Это уже не по теме. Для эмуляции игры DOS не нужна.

Но надо быть реалистом. Реально, т.е не очень утомительно, сделать эмулятор на 16 кб. Но тут вопрос в том, можно ли в наши дни достать такие игры на 16К и желательно чёрно-белые? У меня как раз одна плата СПЕЦИАЛИСТА на Z80. Собирался заменить назад на КР580 (т.к Z80 на СПЕЦИАЛИСТЕ не приветствуется). Но возможно, из чисто спортивного интереса (попозже, когда закончу с RK-DOS для СПЕЦИАЛИСТА) сделаю эмулятор ZX-16К, чтобы погонять ZX-бейсик. Если скорости хватит и других проблем не будет, то возможно сделаю закрытие области 8000...FFFF памятью из второй банки, что даст ZX-48К.

Диспетчер сделать нельзя, а вот подменять половинки по 32К кусками из второй банки можно.


были же ч/б адаптации от Спека типа "MOONFOX"
Не, MOONFOX не конверсия от ZX, а написано с нуля А.Новгородовым для КР580. Об этом легко догадаться потому что там два экрана (в ZX всего 1 экран). Оттого панорамирование всего экрана без мельканий, - один экран отображается, на втором картинка модифицируется, потом меняются местами. Цвет планировался, но для панорамирования в цвете просто не хватило скорости. Мне кажется и у Синклера подобные игры чёрно-белые.