Кул!Сообщение от Shaos
Как насчет Z80 и ВГ93 ?
![]()
Кул!Сообщение от Shaos
Как насчет Z80 и ВГ93 ?
![]()
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Z80 появится когда я к своему эмулятору Спринтера добавлю опциональную эмуляцию Ориона с Z80Сообщение от Error404
![]()
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Ждемс...Сообщение от Shaos
А раз Спринтер, то и YM2149 оттуда может зацепить? Оно у меня на Орионе, помнится, было (по схеме, совместимой с ZX)
![]()
А софт есть под это дело?Сообщение от Error404
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Орионовский софт? Есть. Я в те времена делал клон CP/M 2.2 из ленинградской ACP/M, который поддерживал менеджер расширенной памяти в дополнительных страницах ОЗУ и механизм многостраничного "каскадирования" системных векторов, в т.ч. и 50Гц.Сообщение от Shaos
В числе моих резидентных СP/M-программ, работавших в дополнительном OЗУ, есть проигрыватель, который садился на вектора BDOS и 50 Гц и параллельно с любой стандартной CP/M задачей и в фоне проигрывал мелодии, по "горячим клавишам" выводил меню - можно не выходя их основной программы читать музыку из файлов с диска CP/M. Сама музыка - со Спектрума: форматы c AS* (редактор ASM), ST* (редактор STM).
Есть чужие программы - например, сам редактор ASM, адаптированный c ZX под Орион и под CP/M (файловый I/O).
А, чуть не забыл, - есть игры, адаптированные от ZX. Там тоже сопроцессор пищал, помнится...
--
Но все проги под ленинградскую Z80 Card II. В других вариантах Z80 не было прерываний 50Гц (Орион-ПРО не считаю, - по-моему, под него ничего так и и не напрограммировали - поздно вышел, хотя прерывания там были - не совместимые с Z80 Card II).
--
ЗЫ. Хотел прикрепить схему Z80 Card II , но картинка не пролезает - 118.0 Кбайт
Последний раз редактировалось Error404; 24.10.2006 в 19:01.
Ну кидай картинку мне на shaos@маилру - я прицеплю на http://forum.nedopc.org и там продолжимСообщение от Error404
![]()
Администратор сетевого сообщества nedoPC.org
Урал 8/64К, Sp2000, ZX48K+, ZX16K (спалил), TS1000 (американский ZX81), TS2068, Дельта-С, 20 лет собираю ATM Turbo 2+
Неспектрумы: Электроника МК-85 и МК-85М, ПК-01 Львов, БК-0011, Вектор-06Ц, Лик (спец), Апогеи, Radio-86RK SRAM 32K & 128K (всё ещё собираю)
Отправил. А текстик по инсталляции Z80Card, что я в письме отправил оказывается к варианту I, а не к варианту II. Недосмор... А от варианта II инструкцию что-то не нахожу. Они отличаются тем, что в первом варианте к стандартному диспетчеру ОЗУ Ориона (по 64к) добавлялся диспетчер по 32к (в окне 0..7FFF), а во втором варианте - диспетчер по 16к (в окне 0..3FFF). Соответственно, резать на плате для разных вариантов нужно чуть-чуть по разному. Впрочем, я не думаю, что кто-то по этому описанию в наши дни что-то будет резать/паять - по причине полного исчезновения реалов Ориона.Сообщение от Shaos
![]()
Выкладываю обновлённые версии ПЗУ М1, М2, М3 для КР580 для всех клавиатур с максимальным числом свободных ячеек. Они очень нуждаются в проверке (особенно версии для MS). Все выложенные ранее версии КР580 имеют недостатки и их следует удалить.
М2 для КР580 в данной выкладке имеет 297 свободных ячеек. Мне удалось достичь и 305 свободных ячеек. Однако при этом изображение самого символа оказывается центрованным, как в М3. А в М2 символ придвинут кверху знакоместа и на это ориентируется VC$, рисуя горизонтальные линии не по центру знакоместа. Поэтому, чтобы всё было как в оригинале М2 пришлось потратить ячейки.
Пока отлаживал MS-мониторы в эмуляторе, рассчитанном на РК-клавиатуру, придумал как с ПЗУ рассчитанном на MS-клавиатуру, пользоваться клавиатурой от РК. Для этого первоначально составил таблицу соответствия клавиш РК клавиатуры клавишам MS-клавиатуры. Эта же таблица позволяет играть в игры, где прямой программный опрос MS-матрицы (если такие игры есть). Но для владельцев MS полезно составить обратную программу, чтобы играть в игры для РК-клавиатуры на MS-клавиатуре.
А потом для удобства векторизовал F81B (как сделано в М3 для Z80) и написал драйвер EXT$, который подменяет одни коды другими и в ORDOS грузится автоматически. Таким образом кое-как получил возможность пользоваться программами при ПЗУ для MS. По крайней мере запускать программы можно. К сожалению, в матрице MS-7007 больше линий и число кнопок больше, чем 64. Поэтому коды некоторых клавиш никак не ввести (можно сделать, чтобы, по крайней мере, можно было вводить все буквы, заменив некоторые редко используемые символы, типа '% * / ^ ~' на недоступные буквы).
Привожу список соответствия клавиш. Слева - то, что хотелось бы ввести, а справа - на что надо нажать. Как видите, не все коды нужных клавиш можно ввести, имея ROM-BIOS для MS, а клавиатуру для РК. Но пользоваться всеми программами, кроме текстовых редакторов, этого хватает. Список, возможно, не полный и даже, возможно, неточный (т.к не из реала). Во вложении программка позволяющую узнать коды. Она ещё понадобится при подключении корветовской клавиатуры вместо MS-7007. Для выхода удерживайте 5 секунд любую клавишу.
Код:. Соответствие клавиш с ROM-BIOS для MS-клавиатуры при матрице РК86 A...D M Y...B F1...CTP,ВК !...2 B...@ N...- Z...Y F2...F2 =...F4 C..." O...F [...0 F3...влево "...3 D...9 P ]...1 F4...вверх :...F5 E...7 Q ^...I F5...вправо %...5 F R...E ПС...F2 вниз...F2,U $...вниз G...> S...K HOME..| вверх...] #...4 H...X T...M CTP...) вправ...W &...6 H..влево U...+,: забой..T влево..H )...CTP I...G V...Q 4...R пробел...O /...F3 K...< W 5...Z ВК...пробел >...W L...8 X...N 6...ESC R/L...R/L Символы, что не ввести: . , _ 0 1 2 3 7 8 9 + - * ? F M P Q W
Последний раз редактировалось barsik; 03.05.2017 в 16:45.
Имею вопрос к авторам эмуляторов отечественных 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.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)