PDA

Просмотр полной версии : Корвет & КР580ВМ1



ivagor
01.07.2022, 20:23
Sancho45, если я правильно понял, у тебя получилось достать ВМ1 и установить в корвет. Сможешь прогнать 2 теста флагов (долгие, примерно по полчаса) и сфотографировать результат с экрана?

Sancho45
01.07.2022, 20:42
Всё верно. Запустил в расширеном режиме. Смогу, желательно под cp/m, а не просто бинарь, что бы меньше кнопок жмакать)))

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

https://i.ibb.co/56DbL66/580BM1.jpg (https://ibb.co/56DbL66)

Использовал макетку, на которой делал z80, что бы ничего не резать и не отгибать.

ivagor
01.07.2022, 21:07
Круто, надеюсь тесты нормально отработают на реале (ну или я доработаю). Для сравнения скриншоты из Emu, он поддерживает ВМ1, но желательно уточнить некоторые флаги.
Тесты печатают CRC32 по флагам или группам флагов для арифметических и логических команд.
Тест 1 - старые команды. F4 - это S Z P CY вместе, надеюсь в них отличий не будет.
77513
Тест 2 - новые команды
77514
Тесты запускаются из доса, но вывод на экран весь свой. По окончанию зацикливаются (на клавиши не реагируют, надо рестартовать).

Sancho45
01.07.2022, 21:53
https://i.ibb.co/qMZF061/20220702-004824.jpg (https://ibb.co/qMZF061)

20 мин выполнялся. 1ый тест в процессе...

ivagor
01.07.2022, 22:11
Интересно, про возможные неточности в эмуляции флагов переполнения и полупереноса я думал (был практически уверен), а вот флаг четности стал неожиданностью.

Sancho45
01.07.2022, 22:13
1-ый тест

https://i.ibb.co/vjmJY1b/20220702-011247.jpg (https://ibb.co/vjmJY1b)

ivagor
01.07.2022, 23:02
Sancho45, большое спасибо! Положительный момент в результатах первого теста - основная группа флагов S Z P CY эмулируется правильно. А вот с переполнением и полупереносом ожидаемые расхождения.
Отмечу, что в эмуляторе вектора Virtual Vector (VV) некоторые команды эмулируются точнее, но там только вектор. Интересно, что для некоторых флагов в Emu получился один вариант, в VV - другой, а на реале - третий.

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

Дополнение про первый тест. Для тех команд флаг полупереноса ВМ1 полностью совпадает с 8080 и для 8080 в Emu этот флаг реализован идеально, т.е. тут достаточно перенести реализацию этого флага в ВМ1.

ivagor
02.07.2022, 07:16
Было бы все же здорово проверить насчет /RD (https://zx-pk.ru/threads/14229-vektor-06ts-amp-kr580vm1.html?p=1157203&viewfull=1#post1157203), это чтение "вообще" или только памяти. Пусть в корвете нет отдельного адресного пространства портов, но генерация сигналов в IN от этого не зависит и если заменить /DEN на IO/M, то сразу станет понятно. Для большей наглядности я бы взял фрагмент типа

lxi h,loop
loop:
in 0
pchl
В цикле будет 3 чтения памяти и одно чтение порта.
Еще бы конечно понять, к переднему фронту /RD на шине адреса уже есть правильный адрес или он выдается позже. Т.е. можно ли сразу начинать чтение памяти с приходом /RD.
Вопросы насчет творческих планов
1. Будешь ли пробовать 5 МГц?
2. Есть ли идеи по задействованию EXM (например для доступа к ГЗУ или еще для чего-то)?

Sancho45
02.07.2022, 14:12
Но если /rd будет только для памяти, как же система распознает IN? Сигнал /DEN работает и на запись и на чтение.
По сигналу /RD нельзя сразу читать память, проц так же выдает машинное слово на ШД и строб CSA(быв. Sync), после выдается /DEN, который совпадает по времени с бывшим DBIN, теперь можно читать.
Позже(на днях) сделаю снимок анализатором.
5МГц уверен на 99,9%,что все будет работать, но надо будет опять городить схему вэйтов для озу. Поэтому воздержусь. За EXM еще не думал.

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


Но если /rd будет только для памяти, как же система распознает IN?
Точнее момент передачи данных.

ivagor
02.07.2022, 14:19
как же система распознает IN?
15й вывод (бывший F2), который в расширенном режиме IO / /M. В таблице написано, что это вход, но уверен, что это одна из многочисленных ошибок.

По сигналу /RD нельзя сразу читать память, проц так же выдает машинное слово на ШД и строб CSA(быв. Sync)
Если на ША правильный адрес, то можно. Просто в первом такте нельзя сразу дать эти данные процу (т.к. ШД занята словом состояния). Т.е. читаем в первом или втором такте из памяти в регистр, а процу выдаем только во втором такте.

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


а процу выдаем только во втором такте.
Когда активны и /RD и /DEN

Sancho45
02.07.2022, 14:23
IO/ _M это выход, проверил сразу.
Про память- не понятен смысл, читать, где то хранить, потом выдавать?! Зачем? В корвете/орионе и так сделано прозрачное озу за счет sync, теперь csa

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

Но все перепроверю анализатором. Не сегодня, работа...

ivagor
02.07.2022, 14:29
Например это позволило бы (повторюсь, если на ША правильный адрес), в отличие от ориона/специалиста и компании немного упростить арбитраж доступа процессора и видеоконтроллера к памяти. Это фактически как ленинград, но с прозрачным доступом, видео читает строго через такт, а чтение проца длится два такта и позволяет "обходить" видео. То что хотел сделать Mick в zx8080. Понятно, что есть опробованное решение (упомянутые компы), а это был бы альтернативный вариант.

Sancho45
03.07.2022, 20:12
Последовательность NOP NOP IN(0h) NOP NOP OUT(0H) NOP NOP MVI M,00
Залил в пзу полностью, что бы не вылавливать момент и сделал снимок

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

ША и машинное слово делать? Думаю будет все как и в вм80

ivagor
03.07.2022, 21:17
Спасибо, про IO/_M понятно. Машинное слово не надо, тоже думаю, что будет как в вм80, а вот ША все же хотелось бы увидеть относительно начала /RD

Sancho45
03.07.2022, 21:54
Я всю ША не стал подключать, думаю А0 и А1 достаточно. Перебираются NOPы.

ivagor
04.07.2022, 06:33
Спасибо, насколько вижу - запаздывание до 20 нс, в принципе с этим можно жить.
В целом респект, найти ВМ1, установить, да еще в расширенном режиме - здорово.

Sancho45
04.07.2022, 12:28
Спасибо. Цель как раз и была, подключить данный проц в расширеном режиме и прояснить все непонятные моменты его работы.
И еще немного инфы, освободившееся выводы EXM и IO/_M действительно в 3ем состоянии в совместимом режиме (0-ой), но во время сброса притягиваются на землю, так что просто поменять вм80 на вм1 даже с 5в клоками - не получится.

ivagor
04.07.2022, 13:15
Есть конечно еще пара вопросов, которые надеюсь так или иначе прояснятся в будущем.
1. Насчет скважности F1. Судя по статье с описанием официально разработчики ориентировались на тактирование аналогичное ВМ88/86, т.е. вероятно на скважность 3 (коэффициент заполнения 33%). При 2.5-3 МГц без проблем работает со "старым" F1 (но конечно 5 В), интересно, какой F1 переварит на 5 МГц. Ну и вообще конечно интересно, до скольки он гонится. Если Mick получил невероятные результаты даже с ВМ80 и 8080, то ВМ1 явно должен быть круче. Очевидная проблема в том, что ВМ80 и 8080 можно купить сколько угодно, а ВМ1 жалко, они редкие и дорогие.
2. Недокументированные команды. Не надеюсь на что-то интересное или полезное, тем не менее недокументированные команды с префиксами наверняка есть.

Sancho45
03.08.2022, 20:07
интересно, какой F1 переварит на 5 МГц.
тестил на 5 МГц, работа стабильная, коэффициент заполнения 25%, правда на макетке Ориона-512))). На 6 МГц уже нестабильная работа, НО для 6 МГц кварц менял, на 24МГц ставил(генератор на 1533лн1, делитель 155ие5). А для 5 МГц кварц был на 10 МГц, просто переключил контакты счетчика/делителя на ие5.

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


а ВМ1 жалко, они редкие и дорогие.
Есть у меня, специально для экспериментов. Вот со свободным временем для этого тяжелее...

ivagor
03.08.2022, 20:17
Хорошо, что "официальные" 5 работают, а 6 МГц мне интересны применительно к гипотетическому "турбовектору". Вероятно все же у ВМ1 разгонный потенциал не такой, как у поздних 8080 и ВМ80, но штатные 5 для корвета, ориона и еще нескольких компов хорошо бы подошли.
Наверно стоит еще попробовать недокументированные команды. У меня пока 3 кандидата:
1. rs\ xchg
2. mb\ push psw
3. mb\ pop psw
Может у кого-нибудь есть еще подозрительные команды на примете?

Sancho45
03.08.2022, 21:15
Наверно стоит еще попробовать недокументированные команды. У меня пока 3 кандидата:
1. rs\ xchg
2. mb\ push psw
3. mb\ pop psw
Может у кого-нибудь есть еще подозрительные команды на примете?


пишите софт, проверю на корвете в свободное время(монитор даже для этого начал писать, по подобию 86рк), но у меня и в правду дефицит свободного времени ...

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

Думаю на 6 МГц срыв клока идет на ие5 (вход 24МГц), завтра осликом попробую, возможно успею другую серию(1533 или 555), импорта нет

ivagor
04.08.2022, 17:10
Сделал тест трех вышеупомянутых команд. В отличие от тестов флагов он быстрый и простой для восприятия. Регистры до, регистры после и сравниваем.
В emu
77658
rs\ xchg - просто xchg
mb\ push psw и mb\ pop psw - не влияют на флаг MF
В процессе написания теста у меня появились еще кандидаты на недокументированные команды, для них надо еще подумать как лучше тестировать.

Sancho45
07.08.2022, 10:48
https://i.ibb.co/0ZPZyNw/20220807-132359.jpg (https://ibb.co/0ZPZyNw)

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

Для меня результат ожидаемый, все таки, думаю, префиксы не к самим командам относятся, а как триггер/условие к любой, имеющей отношение, команде.

ivagor
08.08.2022, 17:09
Думаю более продуктивным будет другой подход - широко, но не глубоко. Сначала ищем недокументированные команды, а потом уже разбираемся, что там конкретно. undoc2 сравнивает команды без префиксов и с префиксами в диапазоне 40-BF (кроме HLT) и если нашлись отличия - печатает код таких команд. В emu
77663
нашлись все документированные команды в этом диапазоне. На RS у меня надежд тут нет, но с MB должны бы найтись синонимы SMF.

Sancho45
08.08.2022, 19:36
https://i.ibb.co/5FWZdfg/20220808-222605.jpg (https://ibb.co/5FWZdfg)

ivagor
10.08.2022, 17:10
Для упрощения разделил "уточняющие" тесты на две части.

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

Sancho45
11.08.2022, 12:08
https://i.ibb.co/Tr9Sc3W/20220811-150452.jpg (https://ibb.co/Tr9Sc3W)

ivagor
11.08.2022, 12:20
Спасибо, получается я частично угадал. В этих недокументированных командах был бы некоторый смысл для компа с реализованным дополнительным адресным пространством по EXM. Если нужно сделать MF=1 и еще и переслать данные, то официально SMF1 + MOV R,R; а неофициально можно MB MOV R,R что на байт короче и на 4 такта быстрее. Не то чтобы особо полезно, но с академической точки зрения интересно.

Sancho45
11.08.2022, 12:26
В этих недокументированных командах был бы некоторый смысл для компа с реализованным дополнительным адресным пространством по EXM.
У меня есть корвет с 256кб на Z80 с непереключаемой областью, можно конечно туда вм1, но мне там Z80 интереснее )))
Можно разработать какой нибудь мод компа именно под вм1(есть немного компов разнообразных), кто туда новый софт писать будет ?))))

ivagor
11.08.2022, 13:05
Можно разработать какой нибудь мод компа именно под вм1(есть немного компов разнообразных), кто туда новый софт писать будет ?
Да, в этом основная проблема. Для малосерийных доработок z80 несомненно интереснее, и команды богаче и проще портировать программы откуда-нибудь.

litwr
01.05.2023, 14:21
Да, в этом основная проблема. Для малосерийных доработок z80 несомненно интереснее, и команды богаче и проще портировать программы откуда-нибудь.

Мне представляется, что утверждение о том, что команды z80 богаче ВМ1, очень спорно. И, главный вопрос, а делали ли тесты на проверку таймингов инструкций? Точно ли все унаследованные от 8080 команды имеют точно такие же тайминги? И, конечно, особенно интересно, как быстры новые команды ВМ1.

ivagor
26.06.2023, 17:26
Upd 01.08.2023: Здесь был доработанный тест флагов

Sancho45
29.06.2023, 08:25
У меня в данный момент переезд. Так что обещать не буду, но постараюсь проверить в ближайшее время.

ivagor
01.08.2023, 17:01
Sancho45, я тут подумал и решил закруглиться с темой ВМ1. Спасибо за ранее проведенные тесты, "новые" не стоит прогонять. В принципе вся информация по флагам уже есть, просто неудобно обрабатывать.