Sancho45, если я правильно понял, у тебя получилось достать ВМ1 и установить в корвет. Сможешь прогнать 2 теста флагов (долгие, примерно по полчаса) и сфотографировать результат с экрана?
Вид для печати
Sancho45, если я правильно понял, у тебя получилось достать ВМ1 и установить в корвет. Сможешь прогнать 2 теста флагов (долгие, примерно по полчаса) и сфотографировать результат с экрана?
Всё верно. Запустил в расширеном режиме. Смогу, желательно под cp/m, а не просто бинарь, что бы меньше кнопок жмакать)))
- - - Добавлено - - -
https://i.ibb.co/56DbL66/580BM1.jpg
Использовал макетку, на которой делал z80, что бы ничего не резать и не отгибать.
Круто, надеюсь тесты нормально отработают на реале (ну или я доработаю). Для сравнения скриншоты из Emu, он поддерживает ВМ1, но желательно уточнить некоторые флаги.
Тесты печатают CRC32 по флагам или группам флагов для арифметических и логических команд.
Тест 1 - старые команды. F4 - это S Z P CY вместе, надеюсь в них отличий не будет.
Вложение 77513
Тест 2 - новые команды
Вложение 77514
Тесты запускаются из доса, но вывод на экран весь свой. По окончанию зацикливаются (на клавиши не реагируют, надо рестартовать).
https://i.ibb.co/qMZF061/20220702-004824.jpg
20 мин выполнялся. 1ый тест в процессе...
Интересно, про возможные неточности в эмуляции флагов переполнения и полупереноса я думал (был практически уверен), а вот флаг четности стал неожиданностью.
Sancho45, большое спасибо! Положительный момент в результатах первого теста - основная группа флагов S Z P CY эмулируется правильно. А вот с переполнением и полупереносом ожидаемые расхождения.
Отмечу, что в эмуляторе вектора Virtual Vector (VV) некоторые команды эмулируются точнее, но там только вектор. Интересно, что для некоторых флагов в Emu получился один вариант, в VV - другой, а на реале - третий.
- - - Добавлено - - -
Дополнение про первый тест. Для тех команд флаг полупереноса ВМ1 полностью совпадает с 8080 и для 8080 в Emu этот флаг реализован идеально, т.е. тут достаточно перенести реализацию этого флага в ВМ1.
Было бы все же здорово проверить насчет /RD, это чтение "вообще" или только памяти. Пусть в корвете нет отдельного адресного пространства портов, но генерация сигналов в IN от этого не зависит и если заменить /DEN на IO/M, то сразу станет понятно. Для большей наглядности я бы взял фрагмент типа
В цикле будет 3 чтения памяти и одно чтение порта.Код:lxi h,loop
loop:
in 0
pchl
Еще бы конечно понять, к переднему фронту /RD на шине адреса уже есть правильный адрес или он выдается позже. Т.е. можно ли сразу начинать чтение памяти с приходом /RD.
Вопросы насчет творческих планов
1. Будешь ли пробовать 5 МГц?
2. Есть ли идеи по задействованию EXM (например для доступа к ГЗУ или еще для чего-то)?
Но если /rd будет только для памяти, как же система распознает IN? Сигнал /DEN работает и на запись и на чтение.
По сигналу /RD нельзя сразу читать память, проц так же выдает машинное слово на ШД и строб CSA(быв. Sync), после выдается /DEN, который совпадает по времени с бывшим DBIN, теперь можно читать.
Позже(на днях) сделаю снимок анализатором.
5МГц уверен на 99,9%,что все будет работать, но надо будет опять городить схему вэйтов для озу. Поэтому воздержусь. За EXM еще не думал.
- - - Добавлено - - -
Точнее момент передачи данных.
15й вывод (бывший F2), который в расширенном режиме IO / /M. В таблице написано, что это вход, но уверен, что это одна из многочисленных ошибок.
Если на ША правильный адрес, то можно. Просто в первом такте нельзя сразу дать эти данные процу (т.к. ШД занята словом состояния). Т.е. читаем в первом или втором такте из памяти в регистр, а процу выдаем только во втором такте.
- - - Добавлено - - -
Когда активны и /RD и /DEN
IO/ _M это выход, проверил сразу.
Про память- не понятен смысл, читать, где то хранить, потом выдавать?! Зачем? В корвете/орионе и так сделано прозрачное озу за счет sync, теперь csa
- - - Добавлено - - -
Но все перепроверю анализатором. Не сегодня, работа...
Например это позволило бы (повторюсь, если на ША правильный адрес), в отличие от ориона/специалиста и компании немного упростить арбитраж доступа процессора и видеоконтроллера к памяти. Это фактически как ленинград, но с прозрачным доступом, видео читает строго через такт, а чтение проца длится два такта и позволяет "обходить" видео. То что хотел сделать Mick в zx8080. Понятно, что есть опробованное решение (упомянутые компы), а это был бы альтернативный вариант.
Последовательность NOP NOP IN(0h) NOP NOP OUT(0H) NOP NOP MVI M,00
Залил в пзу полностью, что бы не вылавливать момент и сделал снимок
- - - Добавлено - - -
ША и машинное слово делать? Думаю будет все как и в вм80
Спасибо, про IO/_M понятно. Машинное слово не надо, тоже думаю, что будет как в вм80, а вот ША все же хотелось бы увидеть относительно начала /RD
Я всю ША не стал подключать, думаю А0 и А1 достаточно. Перебираются NOPы.
Спасибо, насколько вижу - запаздывание до 20 нс, в принципе с этим можно жить.
В целом респект, найти ВМ1, установить, да еще в расширенном режиме - здорово.
Спасибо. Цель как раз и была, подключить данный проц в расширеном режиме и прояснить все непонятные моменты его работы.
И еще немного инфы, освободившееся выводы EXM и IO/_M действительно в 3ем состоянии в совместимом режиме (0-ой), но во время сброса притягиваются на землю, так что просто поменять вм80 на вм1 даже с 5в клоками - не получится.
Есть конечно еще пара вопросов, которые надеюсь так или иначе прояснятся в будущем.
1. Насчет скважности F1. Судя по статье с описанием официально разработчики ориентировались на тактирование аналогичное ВМ88/86, т.е. вероятно на скважность 3 (коэффициент заполнения 33%). При 2.5-3 МГц без проблем работает со "старым" F1 (но конечно 5 В), интересно, какой F1 переварит на 5 МГц. Ну и вообще конечно интересно, до скольки он гонится. Если Mick получил невероятные результаты даже с ВМ80 и 8080, то ВМ1 явно должен быть круче. Очевидная проблема в том, что ВМ80 и 8080 можно купить сколько угодно, а ВМ1 жалко, они редкие и дорогие.
2. Недокументированные команды. Не надеюсь на что-то интересное или полезное, тем не менее недокументированные команды с префиксами наверняка есть.
тестил на 5 МГц, работа стабильная, коэффициент заполнения 25%, правда на макетке Ориона-512))). На 6 МГц уже нестабильная работа, НО для 6 МГц кварц менял, на 24МГц ставил(генератор на 1533лн1, делитель 155ие5). А для 5 МГц кварц был на 10 МГц, просто переключил контакты счетчика/делителя на ие5.
- - - Добавлено - - -
Есть у меня, специально для экспериментов. Вот со свободным временем для этого тяжелее...
Хорошо, что "официальные" 5 работают, а 6 МГц мне интересны применительно к гипотетическому "турбовектору". Вероятно все же у ВМ1 разгонный потенциал не такой, как у поздних 8080 и ВМ80, но штатные 5 для корвета, ориона и еще нескольких компов хорошо бы подошли.
Наверно стоит еще попробовать недокументированные команды. У меня пока 3 кандидата:
1. rs\ xchg
2. mb\ push psw
3. mb\ pop psw
Может у кого-нибудь есть еще подозрительные команды на примете?
пишите софт, проверю на корвете в свободное время(монитор даже для этого начал писать, по подобию 86рк), но у меня и в правду дефицит свободного времени ...
- - - Добавлено - - -
Думаю на 6 МГц срыв клока идет на ие5 (вход 24МГц), завтра осликом попробую, возможно успею другую серию(1533 или 555), импорта нет
Сделал тест трех вышеупомянутых команд. В отличие от тестов флагов он быстрый и простой для восприятия. Регистры до, регистры после и сравниваем.
В emu
Вложение 77658
rs\ xchg - просто xchg
mb\ push psw и mb\ pop psw - не влияют на флаг MF
В процессе написания теста у меня появились еще кандидаты на недокументированные команды, для них надо еще подумать как лучше тестировать.
https://i.ibb.co/0ZPZyNw/20220807-132359.jpg
- - - Добавлено - - -
Для меня результат ожидаемый, все таки, думаю, префиксы не к самим командам относятся, а как триггер/условие к любой, имеющей отношение, команде.
Думаю более продуктивным будет другой подход - широко, но не глубоко. Сначала ищем недокументированные команды, а потом уже разбираемся, что там конкретно. undoc2 сравнивает команды без префиксов и с префиксами в диапазоне 40-BF (кроме HLT) и если нашлись отличия - печатает код таких команд. В emu
Вложение 77663
нашлись все документированные команды в этом диапазоне. На RS у меня надежд тут нет, но с MB должны бы найтись синонимы SMF.
Для упрощения разделил "уточняющие" тесты на две части.
undoc3 - тестирует перечисленные в тесте команды с замаскированным флагом MF. Цель - убедится, что основное действие команды не меняется с префиксом.
Результат теста добавляется в виде суффикса к коду команды:
+ - префикс MB не повлиял на основное действие команды
- - префикс MB повлиял на основное действие команды
undoc3mf - тестирует только влияние на флаг MF. Результат теста добавляется в виде суффикса к коду команды:
R - сброс MF
I - инверсия MF
N - не влияет на MF
S - установка MF
Что я ожидаю от тестов и почему выбраны эти команды. По совокупности впечатлений от документации, undoc1 и undoc2 считаю, что mb не дает постэффекта (для mf) для команд из диапазона 80-FF. По undoc2 видно, что mb дает постэффект для команд 40-7F без обращения к памяти. Поэтому я добавил к выявленным в undoc2 команды из диапазона 00-3F. inx sp и dcx sp не добавил только для упрощения теста, на них mb должен влиять аналогично другим inx/dcx. Исключил из теста команды, на которые mb влияет как cs, это отдельная история. Предполагаю, что из диапазона 00-3F должны быть вариантами SMF0, 40-7F - SMF1.
Ну и традиционно скриншот из emu
Вложение 77674
Спасибо, получается я частично угадал. В этих недокументированных командах был бы некоторый смысл для компа с реализованным дополнительным адресным пространством по EXM. Если нужно сделать MF=1 и еще и переслать данные, то официально SMF1 + MOV R,R; а неофициально можно MB MOV R,R что на байт короче и на 4 такта быстрее. Не то чтобы особо полезно, но с академической точки зрения интересно.
Мне представляется, что утверждение о том, что команды z80 богаче ВМ1, очень спорно. И, главный вопрос, а делали ли тесты на проверку таймингов инструкций? Точно ли все унаследованные от 8080 команды имеют точно такие же тайминги? И, конечно, особенно интересно, как быстры новые команды ВМ1.
Upd 01.08.2023: Здесь был доработанный тест флагов
У меня в данный момент переезд. Так что обещать не буду, но постараюсь проверить в ближайшее время.
Sancho45, я тут подумал и решил закруглиться с темой ВМ1. Спасибо за ранее проведенные тесты, "новые" не стоит прогонять. В принципе вся информация по флагам уже есть, просто неудобно обрабатывать.