PDA

Просмотр полной версии : "ZX-8080" - Даунгрейд компьютера "Ленинград"



Страницы : [1] 2 3 4

Mick
16.08.2020, 09:10
Сразу поставим точки над возможными вопросами, а что тема тут делает.
Речь пойдет о переделке теплого и лампового Спектрум -совместимого компьютера "Ленинград" под процессор КР580ВМ80А. То есть произойдет по сути даунгрейд с Z80 на ВМ80.
Ну и сами понимаете, что он автоматически перестанет быть уже Спектрум-совместимым. И даже если адаптировать Basic 48 под ВМ80, то первый же вопрос упрется о сканировании клавы.
И этот вопрос уже NEO SPECTRUMAN озвучил в личном письме, теперь может тут продублировать.

Итак, немного предыстории. После небольшой дискуссии в теме про турбирование Ориона на ВМ80 возникла безумная мысль, потренироваться на кошках, а именно извратиться и поставить ВМ80 в Ленинград с целью получения ответов, сможет ли обычный ВМ80 потянуть частоту 3,5МГц. Пока интересует именно копеешный ВМ80, потому как есть импортный P8080A-1, у которого заявленная максимальная частота 3МГц и скорее всего он будет работать без проблем на частоте 3,5МГц. Так вот, изучая форумы, некоторым вроде удалось разогнать процессор но при определенных условиях. В основном использовали комплект с КР580ГФ24 и КР580ВК28(38).

Цель эксперимента - чисто спортивная, если удастся получить стабильно работающую систему из Ленинграда, то следующим этапом будет создание клона Орион-128 с турбированным ВМ80А. А там как пойдет.

В роли пациента будет выступать плата от компьютера Веста ИК-30, клон Ленинграда.
Теперь для начала надо заменить Z80 на ВМ80, то есть получить те же сигналы процессора Z80- M1, MREQ, IORQ и частоту F1, так как в качестве F2 будет выступать клоки Z80.
Частоты F1 и F2 планируется пропустить через К170АП3 или его импортный аналог.

Тема, вдохновившая на эксперимент - https://zx-pk.ru/threads/27362-samodelnyj-komp-na-i8080.html?p=900113&viewfull=1#post900113

Короче, если интересно обсуждаемся.


Файлы проекта:
Предварительная схема zx8080 ver00 - https://yadi.sk/d/9-OXi4O4XO7RFw
Схема прототипа 4 редакции - https://yadi.sk/d/mD-WiHF-RBBAug
Схема прототипа 5 редакции - https://yadi.sk/d/NAzgMEjgyOp94A


Вариант разводки на основе платы Веста ИК-30

https://i.ibb.co/y5Qhcjp/ZX-8080-pcb.png (https://ibb.co/y5Qhcjp)

Габариты 250x140мм

Рабочий образец

https://i.ibb.co/8xmCSkb/DSCN0060.jpg (https://ibb.co/8xmCSkb)
https://i.ibb.co/qN423mR/DSCN0061.jpg (https://ibb.co/qN423mR)

krotan
16.08.2020, 11:54
Скорее всего придётся напряжение на процессоре повышать до 5,5...6 вольт. Переходную панельку надо делать, т.к. цоколёвка вроде не совпадает...
Но главный вопрос кто прошивку для него писать будет. В прошивке BASIC48 активно используются те команды и регистры, которых нет в ВМ80... Может быть отталкиваться от SE BASIC, на него хоть исходники есть...

Romych
16.08.2020, 13:34
Про питание +12 и -5 не нужно забывать. При разгоне, думаю без -5 точно работать не будет.

zx_
16.08.2020, 13:59
Mick, сама по себе задача портировать бейсик 48 под вм80 эпохальна и неподьемна наверное

ээ, монитор от специалиста ближе всего к архитектуре лениграда первого

nihirash
16.08.2020, 14:04
Может хотя бы 8085, чтобы еще 2 питания не тащить.

Mick
16.08.2020, 14:17
Про питание +12 и -5 не нужно забывать. При разгоне, думаю без -5 точно работать не будет.

Это сейчас не проблема. Можно поступить как freddy из этой темы - https://zx-pk.ru/threads/27362-samodelnyj-komp-na-i8080.html?p=900113&viewfull=1#post900113
То есть поставить два преобразователя на MC34063. А можно напрямую с блока питания ATX задействовать.



Скорее всего придётся напряжение на процессоре повышать до 5,5...6 вольт.

Ну судя из той же темы https://zx-pk.ru/threads/27362-samodelnyj-komp-na-i8080.html?p=900113&viewfull=1#post900113 напряжение не поднимали, но 3,5МГц получили.



Но главный вопрос кто прошивку для него писать будет. В прошивке BASIC48 активно используются те команды и регистры, которых нет в ВМ80...

По этому поводу у NEO SPECTRUMAN есть мысли. Но даже, если не получиться, то возьмем что попроще. :)

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


Может хотя бы 8085, чтобы еще 2 питания не тащить.

Пока это не спортивно :) Если уж извращаться, то с хардкора - ВМ80А.

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


Mick, сама по себе задача портировать бейсик 48 под вм80 эпохальна и неподьемна наверное

На самом деле ничего невозможного нет, вопрос только во времени и желании. Скажем так, если кто осилит, будет круто, нет - начнем с чего попроще.

NEO SPECTRUMAN
16.08.2020, 17:59
И этот вопрос уже NEO SPECTRUMAN озвучил в личном письме, теперь может тут продублировать.
суть такова что
z80 же может иметь 64К портов в отличии от 256 портов 8080
и в zx успешно используется старший адрес порта FE
который теперь не получится сделать

придется заводить дополнительный порт для выбора полурядов
а из FE читать уже полуряд

ну то есть бинарная совместимость программ теряется окончательно

но в отличии от Mick-а и прочик блеккетов я до последнего буду стоять на том что это поделие есть спектрум :)
пушо в компах проц вполне меняется а название обычно остается
и пока там ПЗУ в slot0 экран через жопу и порт FE хоть в каком то виде
это спецтрум :)


отталкиваться от SE BASIC
пару раз запускал этот се бейские
редкостное гафно

да и сорцов 48-го пзу с комментариями хватает


По этому поводу у NEO SPECTRUMAN есть мысли. Но даже, если не получиться, то возьмем что попроще.
мысли то есть
но там 20 дней непрерывной работы моими темпами...
$0367 байт прочесал
да и прикидываю в ПЗУ не хватит свободной памяти
там 1500 z80 команд
большая часть из них jr
для сохранения всех точек входа
нужно дополнительно по 4+ байта на каждый jr
...

нужно что то придумывать

или же нужно полностью забить на сохранение точек входа
а это еще большая потяре бинарной совместимости...

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

щас проверил
подвинул код на несколько байт
и загрузка с матафона успешно отвалилась...
ну и перехват в эмуляторе не сработал :)

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

вощем буду делать без сохранения точек входа
так больше вероятность что я оно доделаю
и так намного быстрей
не нужно считать каждый байт

за одно наверно придется что то выкинуть
пока выкинул обработчик nmi

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

кстате если кто шарит в 48-й ПЗУ-шке
нужно найти место очищалки памяти при старте
точнее раздуплить

найти можно тут
https://skoolkid.github.io/rom/maps/all.html

и нужно подкорректировать ее на пропуск нескольких адресов идущих подряд

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


Похоже надо создавать тему в Отечественных компьютерах
надо было создавать в зарубежных

в отечественных не бывает прерыания от КСИ :v2_lol:

Mick
16.08.2020, 18:02
пушо в компах проц вполне меняется а название обычно остается

Там как правило совместимость снизу вверх сохраняется. В нашем случае совместимость сверху вниз не получится. Только на уровне бейсик простейших программ.
И то если адаптировать Basic 48. Если применить другой бейсик, то совместимость вообще всякая теряется.
Так что пока оставим вопрос чем это поделие считать до конечного результата.

NEO SPECTRUMAN
16.08.2020, 18:06
Там как правило совместимость снизу вверх сохраняется. В нашем случае совместимость сверху вниз не получится.
ну мы же не апгрейдим
а на оборот

совместимость снизу вверх будет
если считать spectrum с z80 проапгрейтеным спектрумом с 8080


кстате предлагаю название для девайса zx8080
вроде и не спектрум и вроде zx

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

без сохранения точек входа прочесал по новой $039D байт
то есть быстрей на пару порядков

Mick
16.08.2020, 18:08
в отечественных не бывает прерыания от КСИ

Вот тут ты не прав. насколько помню ПК8000 как раз есть такое прерывание.

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


и в zx успешно используется старший адрес порта FE
который теперь не получится сделать

Да особо не проблема добавить регистр на адресные линии клавы.

zx_
16.08.2020, 18:18
NEO SPECTRUMAN, /*Пока очень пугают регистровые пары IX и IY, на которые в игре вся логика завязана. Бегло погуглил на предмет готовых рецептов переноса кода с Z80 на i8080, но вообще ничего не нашёл*/

а с этим как

NEO SPECTRUMAN
16.08.2020, 18:30
Да особо не проблема добавить регистр на адресные линии клавы.
то есть получится опрашивать через?
ld a,$BF
in a,($FE)

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


NEO SPECTRUMAN, /*Пока очень пугают регистровые пары IX и IY, на которые в игре вся логика завязана. Бегло погуглил на предмет готовых рецептов переноса кода с Z80 на i8080, но вообще ничего не нашёл*/

а с этим как


есть рекомпилятор z80 8080

зовется не то dao не то еще как то

им адаптированны штук 8 игр с msx для всяких векторов львовов пк100500 итд


с ходу я использую реализации z80 команд от туда
(когда то давно от туда откалупал)

потом полученное можно будет оптимизировать

но для них нужна дополнительная память
под полный набор альтернативных регистров
ix iy
ну и еще несколько временных

которые теперь поселятся в районе системных переменных :)


ну и сами команды достаточно тяжелые
(если не хватит памяти то будут еще тяжелее :))
так что прям летать не будет
но главная же задача ТУПО запустить 48-й бейсик на 8080 :)
а не...

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


пугают
пугает то что простая замена jr на jp отожрет сразу 800 байт
где брать память под остальные команды?

еще конечно можно будет немного похерить шрифты :)
выкинуть большую часть beep например :)
у него даже 60 байт таблица...

Mick
16.08.2020, 19:37
то есть получится опрашивать через?
ld a,$BF
in a,($FE)

Нет.
Как ты раньше писал.

ld a,b
out (key_port),a
in a,($FE)

NEO SPECTRUMAN
16.08.2020, 21:23
Нет.
Как ты раньше писал.
а не получится защелкивать последний\предпоследний считанный байт который не при m1?
чтоб делать спектрумовское
ld a,$BF
in a,($FE)

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

ну вощем $800 байт z80 кода соберается как $C00 байт 8080 кода :)
с учетом выкинутых nmi, загрузчика от zx80 и прочих пустот
конец немного предсказуем )))
(осталось еще 650 jr, 100 команд с IX, 200 команд с IY)

Mick
16.08.2020, 21:28
а не получится защелкивать последний\предпоследний считанный байт который не при m1?

По моему это уже изврат, достаточно одного регистра на адресные линии клавы. В ПЗУ обработчик клавы один единственный, его если что можно просто переписать исходя из реалий.

NEO SPECTRUMAN
16.08.2020, 21:36
По моему это уже изврат
ну сам по себе zx8080 уже изврат :)

и нужно сохранить максимальную железную совместимость
на случай ассемблерных вставок в бейсике

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


конец немного предсказуем )))
так что придется насиловать стек call-ами :)

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


насколько помню ПК8000 как раз есть такое прерывание.
ну я помню был и еще один комп

все остальные 50 видов машин без :v2_dizzy_facepalm:

Mick
16.08.2020, 21:36
на случай ассемблерных вставок в бейсике

Ну эти вставки один фиг уже будут под ВМ80, так как оригинальные Z80 вставки уже не переварятся.

NEO SPECTRUMAN
16.08.2020, 21:44
Ну эти вставки один фиг уже будут под ВМ80, так как оригинальные Z80 вставки уже не переварятся.
ну во первых под это чудо никто не будет писать
во вторых будем надеяться что все используют ассемблерные вставки не только для ldir-а :)

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

посмотрел
к сожалению софтварно перехватить ldir не получится
на 8080 ED это недокументированный call

в итоге ldir отработает как call $xxB0

если бы был вместо ED недокументированный rst
можно было бы вообще эмулировать ldir и команды с ED префиксом :)

Mick
16.08.2020, 21:47
ну во первых под это чудо никто не будет писать
во вторых будем надеяться что все используют ассемблерные вставки не только для ldir-а :)

Ты сам ответил на свой вопрос. Так зачем усложнять. Если кто и будет писать, то по любому будет исходить из возможности архитектуры.

Ну и допустим защелкнем предыдущие данные (хотя наверное это будет не совсем просто), но как ты отличишь эту комбинацию

ld a,$BF
in a,($FE)

и

in a,($FE)

Ведь в первом случае ты читаешь ряд BFFE, а во втором просто ждешь нажатие любой клавиши.

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


на 8080 ED это недокументированный call

Откуда такая информация. А как поведет наш ВМ80

NEO SPECTRUMAN
16.08.2020, 22:32
ld a,$BF
in a,($FE)

и

in a,($FE)

Ведь в первом случае ты читаешь ряд BFFE, а во втором просто ждешь нажатие любой клавиши.

на варианте с дополнительным портом
не работают оба варианта

в варианте с защелкой последнего байта
будет работать хотя бы первый вариант

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


Откуда такая информация. А как поведет наш ВМ80
из недостоверных источников
и как раз для вм80
ну и мой текстовичек с этой записью датируется 2012 годом :)

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

а вот нашел полней список
http://www.nedopc.org/nedopc/upload/Mnemo.pdf

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

а по ходу тот же список и у меня
только в виде текста
ну и оказалось у 8080 все недокументированные команды бестолковые...
...rst там нету...

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

Mick, кстате будет полезно в этом ZX-е иметь подключаемую RAM вместо 0000-3FFF с защитой от записи
в случае чего можно будет подгрузить другой rom

или мож кто например захочет адаптировать ПЗУ-шку от РK
и подключать раму

ну или вдруг захочется какое небудь мерзкое CP/эMы

будет не такой дубовый девайс

Mick
16.08.2020, 22:36
Mick, кстате будет полезно в этом ZX-е иметь подключаемую RAM вместо 0000-3FFF с защитой от записи
в случае чего можно будет подгрузить другой rom

Ой давай без безумства. У меня задача простая, адаптировать только ВМ80. А там видно будет.

Кстати, народ киньтесь схемой функционального аналога контроллера ВК28(ВК38). Недавно ведь видел, теперь найти не могу.

NEO SPECTRUMAN
16.08.2020, 22:41
Ой давай без безумства.
я те подкидываю идеи в процессе
а ты там сам думай :)

+ у ленинграда там и так 64К на борту ;)

krotan
16.08.2020, 23:16
...в отечественных не бывает прерыания от КСИ :v2_lol: Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?

NEO SPECTRUMAN
16.08.2020, 23:34
Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?
а не как не делается

у РК-шек можно читать порт вг75
чтоб узнать есть ли уже начало нового фрейма или еще нет
ито это уже современный трюк

за современные расширенные версии векторов орионов специалистов я не в курсе
тк прикручивание AY-ков вынуждает делать какой то источник синхронизации


в оригинальных версиях никаких синхронизаций нет

ну и по этому мигающие спрайты на очетественных компах
это обычное дело...

да и о фреймовости на многих железках можно не думать

тк экраны у наших компов не пропорционально большие к мощности проца...

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


Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?
а так на отечественных компьютерах все запущенно

эмуляция никакая
никакие времянки неизвестны
итд итп...


есть конечно некоторые машины которые могут
но произведенное их количество мизерное

у Быкашек есть таймер
и как бы не с прерываниями
но можно ли его синхронизировать с экраном яхз
судя по всегда мигающим спрайтам нет :v2_lol:

AlexG
17.08.2020, 00:25
сорри. а почему "сразу" не делать турбированным орион? зачем мучаться с "не родным компьютером" ?
по теме: разгон возможен в теории посредством
- напряжение
- охлаждение
- уменьшением ёмкостной нагрузки на выводы процессора (те качественная буферизация).
- выпонение времянок по предустановки и снятию сигналов.
других способов "науке" не известно.

NEO SPECTRUMAN
17.08.2020, 02:04
сорри. а почему "сразу" не делать
наверно патамушита за 40 лет ZX на 8080 до сих пор незапилен! :)

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


ld a,$BF
in a,($FE)

кстате ВНЕЗАПНО вижу некоторую сложность

например если придется чо нить адаптировать
где опрос по средствам in x,(c)

тк b может заносится в любое другое время за раннее
и может быть не очевидно что именно это

и одного способа выбора полуряда по типу
ld a,xx
in a,($FE)
не хватит

ld a,b
in a,($FE)
тут не прокатит

то есть отдельный порт для полурядов с
ld a,b
out (keyport),a
in a,($FE)
наверно будет надежней



конечно если пригородить и защелку последнего считанного байта
было бы и еще лучше
но она не очень хорошо сочетается с отдельным портом для выбора полурядов

CityAceE
17.08.2020, 05:23
есть рекомпилятор z80 8080

зовется не то dao не то еще как то

им адаптированны штук 8 игр с msx для всяких векторов львовов пк100500 итд
Вообще никакого упоминания об этом инструменте не могу найти! А то очень хотелось бы подсмотреть как там реализуется замена некоторых команд.

NEO SPECTRUMAN
17.08.2020, 05:59
Вообще никакого упоминания об этом инструменте не могу найти! А то очень хотелось бы подсмотреть как там реализуется замена некоторых команд.
сайтек я так понимаю или сдох или около того
вчера находил тут на форуме во вложениях
но щас не нашел

вот то что скачал вчера
https://anonfiles.com/3011t4N2oe/dao_08-10-30_rar
https://dropmefiles.com.ua/ru/faH5Zwz
запустил на вид это оно
потом еще гляну какая версия у меня (не под рукой)

НО
тут еще нужно переводить после перевода z80>8080 в читаемые z80 мнемоники обратно :)

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

...а так лучше бы это был не дизасм с рекомпилятором
а обработчик именно текстового сорца :v2_dizzy_facepalm:

тк сорец проще получить другими средствами
и часто уже есть готовый и с коментариями
а тут нужно все с нуля :v2_dizzy_facepalm:


3Ы тем временем я докатился до того что начал понимать 6502 асм
8080 гафномнемоники же как оставалось для меня не читаемыми так и остаются
хотя я работал с ним намного больше чем с 6502

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

нашел и тут
https://zx-pk.ru/threads/15302-korvet-igry.html?p=916878&viewfull=1#post916878

CityAceE
17.08.2020, 06:10
запустил на вид это оно
А у меня вот под Win10 запускаться отказывается, ругаясь на отсутствие доступа.


а имею текстовичек
где я прогнал почти все команды
а потом сконвертил оно обратно в людские мнемоники z80
А этим столь полезным текстовичком не поделишься? По сути мне сам по себе рекомпилятор и не нужен, а интересует как раз информация, которая у тебя этом файле. Кое-какие отсутствующие команды вполне понятно как преобразовывать, а некоторые (IX/IY) просто вгоняют в ступор. Не хочется заново изобретать велосипед, раз умные головы уже успешно прошли весь этот путь.

NEO SPECTRUMAN
17.08.2020, 06:13
А у меня вот под Win10 запускаться отказывается, ругаясь на отсутствие доступа.
ахаха

ну тогда dosbox в помощь
он то по идеи должен работать на вин15

на последнем запустилось (на ХРю)
только что проверил
запускать в виде DAO.EXE имяфайла

в dao.txt параметры командной строки зарасписаны

Mick
17.08.2020, 07:35
сорри. а почему "сразу" не делать турбированным орион? зачем мучаться с "не родным компьютером" ?
по теме: разгон возможен в теории посредством

С Орионом не все так просто. Там упирается все в видеоконтроллер. Оптимальным, как озвучили было бы частота проца как минимум 4МГц, чтобы из пиксельклока 8МГц нормальные 384x256 точек помещались на современные телеки.
При частоте 3,5МГц пиксельклок получается 7МГц, но уже 384x256 не вмещаются. А при стандартном 10МГц пиксельклоке - 5МГц в теории потянуть только может импортный 4МГц AM9080A-4, но он стоит просто не гуманно.
Поэтому и опыт лучше проводить с простым компом, у него всего 256x192 экран и 3,5МГц частота клока.

krotan
17.08.2020, 08:02
...разгон возможен в теории посредством
- напряжение
- охлаждение
- уменьшением ёмкостной нагрузки на выводы процессора (те качественная буферизация).
- выпонение времянок по предустановки и снятию сигналов.
других способов "науке" не известно. вроде ещё подтягивание клока...

zx_
17.08.2020, 08:31
/*

Набор макросов для перевода z80 (ограниченное подмножество команд) -> i8080
Если у Вас есть исходник на ассемблере z80 и Вы хотите скомпилировать его для i8080 (КР580ВМ80), то предлагаемый проект именно для Вас - z80trans.zip. Проект рассчитан как обычно на TASM. Недостаток - поддерживаются далеко не все команды z80. Если Вам нужна поддержка всех команд, то стоит попробовать рекомпилятор Александра Тимошенко, но т.к. в качестве исходного материала он использует машинный код, то нужно будет сначала оттранслировать Ваш исходник для z80, а потом дизассемлировать в рекомпиляторе
*/
http://sensi.org/~retrocomp/vector06c/z80trans.zip

Romych
17.08.2020, 08:35
Ну, кстати, да. В Орионе то буферизация есть. А это для 580 тоже важно.
И можно было бы на Орионе, забить на видео, а работать с компом через com-порт. Чтоб а принципе понять, гонится проц на нем, или нет.

zx_
17.08.2020, 08:38
рекомпилятор Александра Тимошенко
z80>i8080

https://zx-pk.ru/threads/15302-korvet-igry.html?p=916878&viewfull=1#post916878

Mick
17.08.2020, 08:39
И можно было бы на Орионе, забить на видео, а работать с компом через com-порт. Чтоб а принципе понять, гонится проц на нем, или нет.

Насколько я понял вопрос турбирования, то в Орионе нужно сразу же заменить К155ЛА7 на что то типа 170АП3 или другое. Надо умощить выходы клоков. Кроме того в Орионе разводка далеко не оптимальна, по идее надо укоротить линии клоков до минимума.

К тому же вроде barsik писал, что при той разводке ему не удалось его разогнать. Максимум получил около 2,75МГц.

zx_
17.08.2020, 08:56
с формированием клока да, задачка
для человека с осцилоскопом

там походу еще нужна ступенька , между полупериодами клока, чтобы избежать сквозных токов
и почемуто вход клок сильно нагружен

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

/*
На последнем надо остановиться поподробнее, так как это основная сложность при переходе z80-i8080 и обратно. Вот таблица соответствий.
ld r,r — mov r,r
ld r,i — mvi r,i
ld r,(hl) — mov r,m
ld a,(nnnn) — lda nnnn
ld (nnnn),a — sta nnnn
ld hl,(nnnn) — lhld nnnn
ld (nnnn),hl shld nnnn
ld a,(bc/de) — ldax b/d
ld (bc/de),a — stax b/d
ex de,hl — xchg
add a,r/(hl) — add r/m
add a,i — adi i
adc r — adc r
adc i — aci i
sub — sub,sui
sbc — sbb,sbi
inc r/(hl) — inr r/m
dec r/(hl) — dcr r/m
inc bc/de/hl — inx h
dec bc/de/hl — dcx h
add hl/de/bc dad b/d/h
daa — daa
and — ana,ani
or — ora,ori
xor — xra,xri
cp — cmp,cpi
neg — cma
инвертировать перенос (непомню мнемонику) -cmc
сдвиги — rlc,rrc,ral,rar
jp — jmp
jp… — j… (например jz,jnz,jc)
call — call
call… — c…
ret — ret
ret… — r…
rst — rst
push,pop — push,pop
ex hl, (sp) — xthl
ld sp,hl — sphl
in,out,hlt,di,ed — так же
Так же надо учесть что регистровые пары именуются старшим битом, то есть вместо BC надо писать B.
*/
от Kakos_nonos

ivagor
17.08.2020, 10:41
в отечественных не бывает прерыания от КСИ
На вскидку компы с ВМ80 и прерываниями, связанными с кадровой разверткой: Башкирия-2М, Вектор, Корвет, ПК8000, ПК8002. Скорее всего что-то пропустил, но 5 это уже намного больше, чем ничего.

zx_
17.08.2020, 12:23
Mick, про клок хороший срач вроде
http://www.nedopc.org/forum/viewtopic.php?f=90&t=11201&start=21

еще был спектрум на два мегагерца
вроде

NEO SPECTRUMAN
17.08.2020, 12:54
С Орионом не все так просто
можно было бы взять удвоить клок радио 86 рк до 3,56

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


Вектор
угу его я пропустил

и что сказать?
это единственный более менее приличный компутер

правда в нем кто то сэкономил на ПЗУ-шке :v2_dizzy_facepalm:

остальные малозначимы
корвет вообще не очень то домашний комп
что и объясняет его относительную напичканость

Mick
17.08.2020, 15:28
можно было бы взять удвоить клок радио 86 рк до 3,56

При всём уважении к этому компьютеру, но вот спасибо, не хочется

ivagor
17.08.2020, 16:46
Да особо не проблема добавить регистр на адресные линии клавы.
Если не планируется дальнейшее расширение (вроде это же промежуточный пробный проект), то еще проще не добавлять регистр, а использовать тот 8 битный адрес порта, который выдает 8080, считая при обращении к любому порту, что младшая половина всегда FE (тем более адрес порта у 8080 дублируется в младшей и старшей половине, это добавит удобства реализации). Можно будет опрашивать клавиатуру, читать с магнитофона, записывать на магнитофон, биперить и задавать цвет бордюра.

Mick
17.08.2020, 17:21
что младшая половина всегда FE (тем более адрес порта у 8080 дублируется в младшей и старшей половине, это добавит удобства реализации)
Ты не понял, там оно нужно только для чтения клавиатуры.
Без этого у тебя не получится считать нужный ряд. Такое выдавать ВМ80 не умеет:

#7FFE - полуряд Space...B
#BFFE - полуряд Enter...H
#DFFE - полуряд P...Y
#EFFE - полуряд 0...6
#F7FE - полуряд 1...5
#FBFE - полуряд Q...T
#FDFE - полуряд A...G
#FEFE - полуряд CS...V

При твоем подходе проц сможет прочитать только самый последний ряд.

ivagor
17.08.2020, 17:27
Ты не понял
Я все прекрасно понял. Еще раз: если никакое расширение не предполагается, то можно сделать так, чтобы обращение к любому порту трактовалось как обращение к порту XXFE. А бывшую старшую половину берем с 8080.

NEO SPECTRUMAN
17.08.2020, 17:36
Я все прекрасно понял. Еще раз: если никакое расширение не предполагается, то можно сделать так, чтобы обращение к любому порту трактовалось как обращение к порту XXFE. А бывшую старшую половину берем с 8080.

FE железно
5 бит на запись
6 бит на чтение

+8 бит на установку полуряда

а еще было бы не плохо 2 бита под ram0 + write protect

как перекрыть все одним портом не есно даже без хотелок...

ivagor
17.08.2020, 18:07
как перекрыть все одним портом не есно даже без хотелок
Что именно не ясно?


а еще было бы не плохо 2 бита под ram0 + write protect
2 бита как раз свободны. Можно и больше освободить (избавиться от отдельного бита выхода на магнитофон или наоборот от бипера, урезать цвет бордюра), совместимости со спеком все равно нет.

NEO SPECTRUMAN
17.08.2020, 18:31
совместимости со спеком все равно нет.
на уровне бейсика должна будет по идеи быть
по крайней мере мы работаем над этим :)

вон у РК-шек на уровне монитора тоже совместимость
и все зовется рк-шками
хотя ничего у них друг с другом вообще не совместимо
общих портов нет...

в придачу я так понел
Mick хочет навесить все поверх готового ленинграда
а не изобретать велосипед

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

тем временем мну прочесал $1391 байт

zx_
17.08.2020, 18:57
на уровне бейсика

тем временем мну прочесал $1391 байт

а всего 8192 ?
ну йо




ivagor, вдруг получится ? классный бейсик для вектора , кмк)

ivagor
17.08.2020, 19:02
Посмотрел схему (http://zxbyte.ru/doc/leningrad/leningrad_sch.zip). Мое предложение фактически сводится к тому, чтобы вместо A0 подать на вход 1 DD37 и DD38 постоянный 0.

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


вдруг получится ?
Будет очень здорово, желаю NEO SPECTRUMANу и Mickу успеха в адаптации бейсика.

NEO SPECTRUMAN
17.08.2020, 19:45
а всего 8192 ?
а всего 16384 же :v2_lol:

Mick
17.08.2020, 20:42
Мое предложение фактически сводится к тому, чтобы вместо A0 подать на вход 1 DD37 и DD38 постоянный 0.

То есть ты предлагаешь так.

#7F7F - полуряд Space...B
#BFBF - полуряд Enter...H
#DFDF - полуряд P...Y
#EFEF- полуряд 0...6
#F7F7 - полуряд 1...5
#FBFB - полуряд Q...T
#FDFD - полуряд A...G
#FEFE - полуряд CS...V

Иными словами, чтобы опросить клаву, то надо по сути иметь следующие порты, 7F, BF, DF, EF, F7, FB, FD, FE

Кстати, ты не учел, что у Ленинграда есть порт джойстика 1F и он сидит на тех же мультиплексорах.

ivagor
17.08.2020, 21:24
Кстати, ты не учел, что у Ленинграда есть порт джойстика 1F и он сидит на тех же мультиплексорах.
Чудес не бывает, тут (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1077137&viewfull=1#post1077137) я перечислил, какие устройства будут доступны. При очень большом желании можно добавить, по крайней мере на чтение, еще порт FF (и завести туда джойстик), но это потребует дополнительной микросхемы (а то и двух, если доверить реализацию кому-то вроде меня) и это уже сравнимо по сложности с дополнительным регистром, хотя выигрывает у регистра по простоте программирования.

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


это потребует дополнительной микросхемы (а то и двух, если доверить реализацию кому-то вроде меня)
Тупой вариант: на ЛА2 заводим 8 младших (можно и старших, но так, насколько я понимаю, равномернее нагрузка) линий адреса, выход инвертируем (может в ленинграде есть свободный инвертор или добавляем ЛН1), результат подаем все на тот же вход 1 DD37 и 38. Можно избавиться от инверсии, если поменять местами входы мультиплексоров.

Mick
17.08.2020, 21:28
Тупой вариант: на ЛА2 заводим 8 младших

Можно проще - один элемент ЛЛ1, заводим туда A7 и A6, выход на мультиплексоры вместо A0.
Вылавливаем когда оба бита будут равны нулю, тогда выбираем джойстик.

ivagor
17.08.2020, 21:38
Про один A5 я ступил (убрал), варианты с двумя битами скорее всего будут простейшими из "условно совместимых".

Mick
17.08.2020, 21:47
инвертировать A5 и подать на мультиплексоры

Нет, нельзя так делать - будет конфликт

#DFDF - полуряд P...Y

ivagor
17.08.2020, 22:03
Но все же вариант с FF будет самым совместимым, т.к. при опросе клавиатуры могут обнулить сразу несколько бит. Другое дело что это возможно не используется в пзу спека, и даже если используется, то можно такие моменты переделать, все равно бинарной совместимости нет.

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

В 23:47 я исправил и ты написал практически одновременно :)

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


это возможно не используется в пзу спека
Похоже действительно в пзу не используется, прокручивают 1 бит.

NEO SPECTRUMAN
17.08.2020, 22:20
какой нахер джойстик?

ни одна софтварь использующая кемстон работать не будет

турнуть нахрен оно

для бейсика кнопок и синклера хватит всем

Alex_LG
18.08.2020, 13:51
Раз совместимость по ПЗУ необязательна, то почему нельзя сделать так: ввести, например, порт 00 (или использовать FF на запись), в который будет писаться младшая часть адреса порта ВВ, т.е. тот же FE для клавиатуры, а старшую часть брать с процессора?

nihirash
18.08.2020, 14:26
allram и возможность прицепить CF-карточку - можно будет еще и CP/M запустить.

Контроллер CF можно сделать как в RC2014.

Ну и в барсик дописать чтение-сохранение можно будет.

NEO SPECTRUMAN
18.08.2020, 15:16
Ну и в барсик дописать чтение-сохранение можно будет
а свободное место там кто родит?
туда то что есть не влазит
нужно будет выкидывать всякие принтеры и прочую дичь...

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


Контроллер CF
втопку!

должно быть в стиле
"дядюшка синклер с экономил и на проце и поставил 8080"

из внешних устройств телевизор и матафон и все :v2_devil:


представте что на дворе 82 год и мерзкие cf карточки еще не изобрели :)

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

не знаю как вы там в своих мерзенниших сях по три дня компилируйте
тут 10 секунд пока дождешься
уже не помнишь что и для чего компилируешь...

Mick
18.08.2020, 16:32
какой нахер джойстик?

Ты не уловил мою концепцию. Берем Ленинград и портируем туда ВМ80. Если у Ленинграда есть мультиплексоры на клаву и джойстик, то оно так и остается. Допускается изменение номеров портов для упрощения схемотехники и программирования. Если результат будет получен, тогда можно будет создать какой нибудь zx8080 с всякими пакостями. Пока минимум переделок.
Там и так нужно будет вставить формирователь F1 частоты проца, регистр защелку слова состояния, чтобы выловить M1, IORQ и MREQ. Так что там и так обвеса для ВМ80 хватит, уж порты курочить совсем не хочется.

NEO SPECTRUMAN
18.08.2020, 16:35
регистр защелку слова состояния
там же вроде есть спец микросхема декодер слова состояния?
может сразу оно?

Mick
18.08.2020, 16:48
там же вроде есть спец микросхема декодер слова состояния?
может сразу оно?

На выбор 580ВК28 или 580ВК38. Можно в принципе и ее поставить, но и упрощенный вариант надо тоже рассмотреть.

Нашел тему где рассматривают как раз замену ВК28 на мелочь пузатую. - http://www.nedopc.org/forum/viewtopic.php?f=91&t=10007

Вот картинки

http://sgu-wap.narod.ru/DIFF/SygStatus1.gif

http://www.nedopc.org/nedopc/upload/MakeSync.gif

http://www.nedopc.org/nedopc/upload/VG18-46.jpg

По сути нам не надо все сигналы. Только M1, IORQ (который получается с битов IN и OUT) и MREQ (вот он посложнее будет)

Alex_LG
18.08.2020, 17:15
Нашел тему где рассматривают как раз замену ВК28 на мелочь пузатую.
Слишком много соединений паять, тогда или РТ1\РТ2 (извратно, но кошерно) или проще ВК28\38... )))

NEO SPECTRUMAN
18.08.2020, 17:23
Как и ожидалось память успешно кончилась раньше чем...
так что теперь еще нужно оптимизировать по объему (еще больше)

осталось не доделано 4К строк сорца
сам адаптированный сорец дето 23К строк


реализации некоторых сдвигов в DAO не дает таких же флагов
поэтому в процедуре опроса клавиатуры пока оставил несколько z80 команд


добавил немного процедур с конца
чтоб можно было хотябы понажимать кнопочки :)

пока ничего не работает а только зависает
запускается только со второго раза
сначала нужно шо нить понажимать :)

https://anonfiles.com/J0Y1GdNbo7/zx8080_ROM_r0017_7z
https://dropmefiles.com.ua/ru/Zz3KfCwENW

https://jpegshare.net/images/76/37/763736cb379bfc9f0772099e13f34320.png https://jpegshare.net/images/00/50/005080c4cfc8848890d52677c5ea93c3.png

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

так же выдиралка процедур в унриале по ходу нормально не логает ПЗУ-шку...
так что жизненно важные компоненты найти не удалось...

zx_
18.08.2020, 17:51
а как ты пзу для 8080 в эмуляторе спектрум запускаешь?

NEO SPECTRUMAN
18.08.2020, 17:57
8080
он жо на 99,9% совместимый снизу вверх
в придачу еще несколько команд от z80 осталась
пока не решен вопрос с клавиатурой

zx_
18.08.2020, 18:01
ivagor, переделывал чтобы работало на z80
ну при переходе с 8080

NEO SPECTRUMAN
18.08.2020, 18:08
ivagor, переделывал чтобы работало на z80
ну при переходе с 8080
там слегка отличается влияние на флаги у некоторых одинаковых команд

кстате надо будет уточнить как отличается
и проверить

ну и у РКшек например звук сделан крайне извращенным образом
поэтому 8080 пищалки с РКшки тоже нужно адаптировать к z80
(тут даже не z80 виноват и пилятели РКшке : )

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


Там и так нужно будет вставить формирователь F1 частоты проца, регистр защелку слова состояния, чтобы выловить M1, IORQ и MREQ. Так что там и так обвеса для ВМ80 хватит
кстате там же еще по моему? внешняя разрешалка запрещалка int-а нужна
тк внутреней у 8080 нету (как мне помнитсо)

правда это пол детали

nihirash
18.08.2020, 18:43
А если макрософт барсик туда засунуть и допилить под графику чутка?

Или еще какой простой барсик)

NEO SPECTRUMAN
18.08.2020, 18:50
А если макрософт барсик туда засунуть и допилить под графику чутка?

Или еще какой простой барсик)

ну а смысл оно делать?
тут же задумка чтоб запускать бейсиковские программы от спектрума (по крайней мере у меня)
Mick-у вообще главное (сам факт) прикрутить 8080 к ленину а все остальное пофиг :)

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


А если макрософт барсик туда засунуть и допилить под графику чутка?

Или еще какой простой барсик)

я еще задумал "мумулятор" MSX-а как на векторе

для программок которые работают только через вызовы ПЗУ


ну и этот синкляр бейсик я еще хотел адаптировать под львов :) (шоб было)
правда а львове нет прерываний
и нужно как то выкручиватсо...
тк тут они используются

ну и это только 32К рамы вместо 48К
...ну я смотрю бейсику пофиг сколько рамы

Mick
18.08.2020, 19:31
кстате там же еще по моему? внешняя разрешалка запрещалка int-а нужна

А как же команды DI и EI, они разве не рулят прерываниями?

NEO SPECTRUMAN
18.08.2020, 21:56
А как же команды DI и EI, они разве не рулят прерываниями?
как я помню они только выдают 0\1 на выход ноги di ei
на чем и запилен бипер в РК

но я могу что то путать нужно уточнять

наверно рулят

rw6hrm
18.08.2020, 23:38
Кстати, народ киньтесь схемой функционального аналога контроллера ВК28(ВК38). Недавно ведь видел, теперь найти не могу.

http://rw6hrm.qrz.ru/8080.htm Неполный аналог, без прерываний.

NEO SPECTRUMAN
19.08.2020, 05:13
ZX8080 ROM r0022
https://anonfiles.com/B5vcNfNfo4/ZX8080_ROM_r0022_7z
https://dropmefiles.com.ua/ru/EWAzKkY


опять же ничего не работает :) (особенно доставляет бекспейс : )
тк много чего еще нужно умудрится запихнуть

но ужо print печатает строки
грузятсо картинке (по крайней мере я на это надеюсь)
E режим ввода работает только курсор чота не меняется

проверил пару бейсиковских? игрушек 82 года
зависают сразу после загрузки
(имена при загрузке ВНЕЗАПНО не выводятся !)

https://jpegshare.net/images/9f/62/9f628f77c8290abbe33691642d833955.png https://jpegshare.net/images/ee/a4/eea42ced6b825875609056887dafc6f6.png


за одно ВНЕЗАПНО узнал что калькулятор спектрума страдает полнотой по тюрингу...
и теперь и это приходится учитывать
все в этом бейсике против того чтобы оно хорошо трамбовалось при помощи adp

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

что примечательно в EightyOne оно стартует сразу

Mick
19.08.2020, 08:14
как я помню они только выдают 0\1 на выход ноги di ei
на чем и запилен бипер в РК

Бипер запилен на выход проца INTE, который как раз сигнализирует что прерывания запрещены или разрешены. В Апогее кстати на выход INTE прицеплен адрес ПЗУ знакогенератора.
В нашем случае, этот выход не нужен.

zx_
19.08.2020, 09:28
NEO SPECTRUMAN, а 2 плюс 2 уже умеет?

Mick
19.08.2020, 14:51
Получил сегодня ништяки

https://i.ibb.co/3YZxW6L/OLYMPUS-DIGITAL-CAMERA.jpg (https://ibb.co/3YZxW6L)

Это так сказать на подстраховать, если наш ВМ80 будет слишком несговорчивым.
Правда, что китайцы прислали тоже еще вопрос. Судя по ногам, то как минимум отресторены

ivagor
19.08.2020, 15:06
Процы -1 это хорошо и даже здорово, но в принципе для Ленинграда разработаны и опробованы рекомендации (http://zxbyte.ru/leningrad_upgrade.htm#2) по установке разных резонаторов. С 12 МГц (проц 3 МГц) заводится, тут должно быть не сложнее чем с вектором, в котором работали советские процы. Имхо формирование подменных сигналов z80 будет сложнее чем заставить работать на 3-3.5 МГц, с учетом того, что кое-где скорее всего важен не только факт наличия/отсутствия некоего сигнала, но и его временные характеристики.

NEO SPECTRUMAN
19.08.2020, 15:37
Это так сказать на подстраховать
чтоб подстраховать лучшо предусмотри возможность быстро перекинуть на 1,75МГц
на котором будет гарантированно стабильная работа

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


а 2 плюс 2 уже умеет?
нет
большая часть калькулятора еще не запилена
я только вчера раздуплил как оно работает
нужно было не те процедуры тянуть в первую очередь

Mick
19.08.2020, 15:42
быстро перекинуть на 1,75МГц

Ну это совсем тухляк будет

NEO SPECTRUMAN
19.08.2020, 16:10
Ну это совсем тухляк будет
ну за то в случае глюков
можно будет проверить глючит аппаратная часть или програмная

правда из за мерзкого двойного клока
наверно будет сделать быструю переделку 1,75 <> 3,5 несколько сложней

Mick
19.08.2020, 16:17
В общем, я схему Весты ИК-30 завел в P-CAD, осталось причесать. Но уже в принципе можно теоретически вкарячивать туда ВМ80
Вариант первый, пока обойтись без буферизации шины данных и адреса. Так сказать минимальные насколько это возможно переделки.
Далее уходит сигнал Z80 RFSH/, но для ВМ80 нужно инвертировать как минимум сигналы INT, RESET и RDY (WAIT). Конечно от WAIT бы отказаться, как показала практика без него наши спектрумы прекрасно работают.

ivagor
19.08.2020, 16:23
Конечно от WAIT бы отказаться, как показала практика без него наши спектрумы прекрасно работают.
Без wait и M1 (в ленинграде) не нужен

Mick
19.08.2020, 16:30
Без wait и M1 (в ленинграде) не нужен

Точно, тогда если его убрать, то нужны только MREQ и IORQ

ivagor
19.08.2020, 16:51
Кстати и смысла при 8080 в ленинградском wait нет, т.к. у 8080 в циклах выборки команды и "просто чтения" длительности сигналов обращения к памяти одинаковые, в отличие от z80.

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

Хотя возможна и противоположная ситуация, если для согласования 8080 с ленинградом придется тормозить все циклы обращения к памяти. Но и тут M1 не нужен.

NEO SPECTRUMAN
19.08.2020, 17:30
Блдж***кие чудеса!!

есть такая конструкция в опросе клавы (упрощено)



SRL H

jp NC,L02A1

jp NZ,L029F

DEC L ;меняет zero
rlca ;меняет carry
jp C,L0296
INC A ;меняет zero
RET Z
CP $28 ;меняет всёа
RET Z
...

но реализация SRL на командах 8080 не ставит zero флаг


получаю zero флаг таким образом сразу перед самим jp nz

inc h
dec h
jp NZ,L029F
за одно оно сохраняет carry
и дальше ВООБЩЕ трижды пофиг
тк флаги 7 раз перебиваются
и все условные ветвления уже зависят от других команд

НО ОНО НЕ РАБОТАЕТ!!


леплю такую городуху


ld (TMP),a
ld a,h
and a
ld a,(TMP)
jp NZ,L029F

и оно работает о_О

ЧЯДБЛДЖДНТ?

ivagor
20.08.2020, 16:43
хотя выигрывает у регистра по простоте программирования.
Уточню сейчас, чтобы потом меня не ловили на слове. Вариант без регистра проще аппаратно. Что касается программирования, то опрос клавиатуры с вращением бита, как в бейсике, проще сделать с регистром, а опрос отдельных рядов проще без регистра. Сразу все хорошо и просто не получится, тут надо опрдеделить, что в приоритете и сделать выбор.

Mick
20.08.2020, 16:49
что в приоритете и сделать выбор.

Пока в приоритете - как можно меньше доп микросхем.

NEO SPECTRUMAN
20.08.2020, 20:26
нет...
просто так в 16К не влезет

https://anonfiles.com/b97df4O8o9/ZX8080_ROM_r0045_7z
https://dropmefiles.com.ua/ru/VkXDPZ

нужно жестко все переписывать и оптимизировать...
а желание это делать 0

+шрифты и все тексты занимают много памяти
сейчас выкинута часть шрифта
сообщения об ошибках (хотя кроме ok почему то больше ничего не выводитсо)

https://jpegshare.net/images/18/3e/183edbca1f896d53f59c2fd5385905dd.png

https://memepedia.ru/wp-content/uploads/2017/08/потрачено-8.jpg

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

как вариант можно вынести часть процедур в озу за стек
туда где лежат альтернативные регистры z80
и не очищать эту область при сбросе

и подгружать с матафона в самом начале

вектор же тоже как кирпичь при старте :)

ivagor
20.08.2020, 21:23
NEO SPECTRUMAN, что именно не работало с inc h\ dec h? Один из вариантов, которым я раньше добивал эмуляцию srl был как раз с использованимем inc\ dec и проблем не было. Заменил в r0045 и тоже на первый взгляд работает. Что нужно нажать, чтобы не работало с inc\ dec?

NEO SPECTRUMAN
20.08.2020, 22:44
Что нужно нажать, чтобы не работало с inc\ dec?
с ним не жалось ничего вообще

кстате в этом dao
и sbc hl,hl не правильно реализован
это совсем не ld hl,$0000

его альтернатива
;sbc hl,hl
ld (tmp),a
sbc a
ld h,a
ld l,a
ld a,(tmp)

правда именно в 48-м бейсике они вроде для зануления
тк перед ними сбрасывется carry


Заменил в r0045 и тоже на первый взгляд работает
там скорей всего явно осталась часть не перемещаемого кода
хотя я сейчас двигал все и вдоль и поперек в поисках такого кода
и клавиатура ни разу не отвалилась

еще это гафно зачем то меняет стек
а тк большая часть z80 команд с дерганием стека
возможно как раз от этого куча графических глюков...

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

ну вощем чтоб не бросать поделие
отправлю пока часть кода в оперативку

за одно будет видно сколько именно не влазит
и что с этим делать...

NEO SPECTRUMAN
21.08.2020, 02:41
вощем сейчас под все нужно ~18597 байт

запихнул все что осталось
и чудо не произошло...

все как не работало так и не работает

+нашкребсти 2К в самой ПЗУ-шке будет тяжело...

Mick
21.08.2020, 13:36
+нашкребсти 2К в самой ПЗУ-шке будет тяжело...

То есть ты уже заменил все инструкции Z80 на ВМ80. Данные не убирал (фонт), иными словами из 16384 байт Z80, получилось 18597 байт ВМ80?

Тогда великая оптимизация должна помочь:
- оптимизировать код, самый трудоемкий наверное процесс ибо нужно анализировать код.
- убрать какие то процедуры бейсика, то есть чем то пожертвовать, но не шрифтом.

ivagor
21.08.2020, 14:20
Не знаю, кто (NEO SPECTRUMAN или Mick) будет заниматься доводкой пзу для реала с 8080, но очень рекомендую сделать для отладки соответствующий конфиг в emu, на первый взгляд это возможно. Принципиальных изменения два
1. Процессор
2. Адресация портов

Mick
21.08.2020, 15:10
Итак попробовал я набросать схемку - вариант минимум без буферизации. Пока сигнал WAIT/ (READY) оставил. Дополнительно добавились 4 микросхемы:
К555ТМ7
К555ЛЕ1
К555ЛИ1
К170АП3

Возможно я ошибаюсь, поэтому просьба внимательно поглядеть схему.

https://yadi.sk/d/9-OXi4O4XO7RFw

Касательно портов, сделано из расчета
На вывод один единственный и неповторимый 0FEh - он без изменений
На ввод 1Fh - джойстик

Клавиатура
7Fh - полуряд Space...B
0BFh - полуряд Enter...H
0DFh - полуряд P...Y
0EFh - полуряд 0...6
0F7h - полуряд 1...5
0FBh - полуряд Q...T
0FDh - полуряд A...G
0FEh - полуряд CS...V

ivagor
21.08.2020, 15:33
В D38 джойстик выбирается по A0, в D39 по A6 и A7 - ошибка?

Mick
21.08.2020, 15:45
В D38 джойстик выбирается по A0, в D39 по A6 и A7 - ошибка?

Да, ошибка, должны были оба мультиплексора выбираться по A6 и A7.
так же забыл сигнал RD/ из DBIN получить.
Схему обновил.

NEO SPECTRUMAN
21.08.2020, 16:06
иными словами из 16384 байт Z80, получилось 18597 байт ВМ80?
+убраны все оригинальные пустоты и пару левых процедур
при этом всё текстовое вернул на место

можно выиграть много места сократив токены и сообщения

ivagor
21.08.2020, 16:47
D42.2
Вывод 11 вроде как OUTP/, соответственно вывод 8 - INP/.
Вывод 9 - WRM/ ?

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

WRM/ если я правильно понял обозначает запись в память. Тогда он должен быть активен при D1=0 и D4=0.

NEO SPECTRUMAN
21.08.2020, 17:27
Тогда великая оптимизация должна помочь:
- оптимизировать код, самый трудоемкий наверное процесс ибо нужно анализировать код.
ну мораль гласит что любую процедуру можно уменьшить на 1 байт или ускорить на 1 такт
все процедуры уменьшены на 1 байт еще в 82 году :)

тут поможет только переписать нахрен по новой :)


- убрать какие то процедуры бейсика, то есть чем то пожертвовать, но не шрифтом.
ну шрифт и так будет в ПЗУ (правда сейчас в отладочных целях он лежит в раме)


заглянул в se basic там ~ столько же jr ix iy-ков
в придачу там наверно уже заюзано свободное место

так что не думаю что его адаптировать будет проще...

ну а например circle можно держать в раме
вот только сами команды не занимают много места
тк они написаны на байткодом калькулятора...
а сам калькулятор занимает видимо достаточно места

и он походу щас и не работает
вместе с выводом ошибок и прочими RST
которые работают по одному принципу

ivagor
21.08.2020, 18:11
Насчет WRM/ понял когда посмотрел дальше. На мой взгляд обозначение сбивает, это скорее не WRM/, а "признак незаписи в порт", т.е. должен выходить из прямого напарника OUTP/. У D42.2 можно поменять (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1077758&viewfull=1#post1077758) не выходы, а входы D4 и D6, тогда выходы будут правильно.

Mick
21.08.2020, 18:35
Насчет WRM/ понял когда посмотрел дальше. На мой взгляд обозначение сбивает, это скорее не WRM/, а "признак незаписи в порт", т.е. должен выходить из прямого напарника OUTP/. У D42.2 можно поменять не выходы, а входы D4 и D6, тогда выходы будут правильно.

Да, ты прав надо поменять D4 и D6 местами.

Обновил схему и вставил ссылку в первый пост, так проще будет ее обсуждать.

zx_
21.08.2020, 18:42
NEO SPECTRUMAN, про калькулятор читал ?
http://hype.retroscene.org/blog/1007.html

одна из супер задрочек

NEO SPECTRUMAN
21.08.2020, 21:34
про калькулятор читал ?
http://hype.retroscene.org/blog/1007.html
ничего нового и полезного
все это и так очевидно из сорца бейсика


нужно описание принципа работы самого интерпретатора
тк там какая то не логичная для меня дичь творится (со стеком)

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

https://jpegshare.net/images/d3/8f/d38fd4038ca5e193b4bbffa0b482ff90.png


охренеть загрузился галаксианс
правда на 8080 он явно не пойдет...

https://jpegshare.net/images/ea/cc/eacc459281e9c7283dd9ab407519e64f.png
https://jpegshare.net/images/6b/14/6b14811c367ec2bb2908c2641c2f4101.png

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


сделать для отладки соответствующий конфиг в emu, на первый взгляд это возможно. Принципиальных изменения два
1. Процессор
2. Адресация портов

и как в оно притулить выбор полурядов клавиатуры на отдельный порт?

методом научного тыка попытался сделать
нифига не получилось

с таким же успехом оно зависает при попытке грузить снапшоты...
в принципе оно и не должно их грузить тк другой проц...

ivagor
22.08.2020, 07:20
и как в оно притулить выбор полурядов клавиатуры на отдельный порт?
В текущей схеме Micka выбор рядов клавиатуры не на отдельном порту.
Сам я не справился с emu, опция kbd.mask работает не так, как я ожидал. Увы, вопрос с эмуляцией zx8080 остается открытым.

Mick
22.08.2020, 07:51
В текущей схеме Micka выбор рядов клавиатуры не на отдельном порту.

Если будут сложности с программной реализацией, то можно вернуться к дополнительному регистру.

ivagor
22.08.2020, 08:06
В программе для zx8080 сложностей нет, проблема с эмуляцией. А вариант с заданием "бывшей старшей половины" через дополнительный порт (я пробовал FF) в emu нормально работает.

Mick
22.08.2020, 08:13
В программе для zx8080 сложностей нет,

Понятно, кстати насколько сильно возрастет обработчик клавы в варианте как есть по сравнению с оригиналом. Ну и сколько он будет занимать в варианте с доп регистром.

ivagor
22.08.2020, 08:30
Вариант чтения порта клавиатуры, соответствующий текущей схеме, проще всего реализуется фрагментом с модифицируемой командой in (маска клавиатуры, она же старшая половина порта z80, в A)


sta SetIn+1
SetIn: in 0
Причем очевидно этот фрагмент должен располагаться в озу и его удобно оформить в виде процедуры.
Вариант с заданием маски через отдельный порт

out 0FFh
in 0FEh
Это короче, но если оформить в виде процедуры, то каждый вызов в обоих случаях будет по 3 байта.

ivagor
22.08.2020, 14:58
Попробовал понять, как в ленинграде реализован арбитраж проц/видео. На данный момент создалось впечатление, что видео-байты читаются через 1 такт, а проц, за счет того, что у z80 /rd и /mreq в "обычных" циклах доступа к памяти длинные (2 такта) в этот интервал успевает получить хотя бы одно окно доступа. В M1 mreq и rd короче двух тактов, поэтому тут добавлен тормоз для удлиннения.
В текущей схеме сигналы формируются так, что они будут короче, чем в варианте с z80. Стоит или
1. Простой вариант - распостранить тормоз на все обращения к памяти, не только M1
2. Сложный - попробовать сформировать длинные сигналы на основе слова состояния без использования dbin и wr проца.

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

Дополню. /wr у z80 короткий (практически как у 8080), вероятно поэтому в ленинграде формируют /we из mreq, rd и rfsh.

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


2. Сложный - попробовать сформировать длинные сигналы на основе слова состояния без использования dbin и wr проца.
После некоторого размышления склоняюсь к мысли, что это возможно только для записи, а чтение в любом случае придется тормозить.

NEO SPECTRUMAN
22.08.2020, 15:06
Если будут сложности с программной реализацией, то можно вернуться к дополнительному регистру.
а как щас?

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

КСТАТЕ я на помню что у 8080 НЕТ КОМАНД inc\out (C)
есть только ввод\вывод в\из конкретный порт и что дело происходит в ПЗУ
и этот конкретный порт не перепишешь
ато чую железятники щас как всегда начудят

Mick
22.08.2020, 16:33
а как щас?

Сейчас без регистра кучка портов

Клавиатура
7Fh - полуряд Space...B
0BFh - полуряд Enter...H
0DFh - полуряд P...Y
0EFh - полуряд 0...6
0F7h - полуряд 1...5
0FBh - полуряд Q...T
0FDh - полуряд A...G
0FEh - полуряд CS...V

Я так понимаю, этот вариант самый ресурсоемкий в программном смысле. Наверное надо поставить регистр.

NEO SPECTRUMAN
22.08.2020, 16:37
Я так понимаю, этот вариант самый ресурсоемкий в программном смысле. Наверное надо поставить регистр.
для оно нужно будет ложить в раме

port = $+1 : out (xx),a
ret

в придачу как через оно опрашивать ANY KEY кто нить подумал?
или больше чем 1 полоуряд одновременно

или под опрос клавиатуры отдавать все 256 портов на вывод\ввод? :v2_dizzy_facepalm:

Mick
22.08.2020, 16:44
В M1 mreq и rd короче двух тактов, поэтому тут добавлен тормоз для удлиннения.

На самом деле в наших клонах Спектрума вполне работает без WAIT/. У меня на Фениксе тоже память не WAITится.
Так что хотелось в идеале и на ВМ80 получить, раз ты говоришь длительность сигналов одинкова.
Тогда надо WR/ убрать из цикла записи.

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


для оно нужно будет ложить в раме

Короче ставить надо регистр на адресные линии клавы и не парить мозг.
И пользоваться такой процедурой

ld a,b
out ($FF),a - порт адресных линий
in a,($FE)

ivagor
22.08.2020, 16:47
для оно нужно будет ложить в раме
Претензии с твоей стороны по этому поводу звучат странно, т.к. сейчас в твоей прошивке в озу временные регистры z80 (которые по размеру больше процедуры опроса, которую я приводил), не говоря уже о килобайтах кода, который не поместился в пзу.
В принципе можно сделать вариант и без модифицируемой команды, но он будет заметно более громоздким.


в придачу как через оно опрашивать ANY KEY кто нить подумал?
или больше чем 1 полоуряд одновременно
Очевидно через опрос нескольких портов.

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


На самом деле в наших клонах Спектрума вполне работает без WAIT/.
В разных клонах арбитраж может быть сделан по разному, в ленинграде, как я понимаю, отказ от wait потребует очень быстрой памяти.

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


Короче ставить надо регистр на адресные линии клавы
Состряпал "типатестик", если FF устраивает в качестве порта регистра маски клавиатуры, то могу выложить конфиг emu с прошивкой.

NEO SPECTRUMAN
22.08.2020, 16:49
Очевидно через опрос нескольких портов.
...

ато чую железятники щас как всегда начудят

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



Состряпал "типатестик", если FF устраивает в качестве порта регистра маски клавиатуры, то могу выложить конфиг emu с прошивкой.

давай я сразу проверю на своей прошивке
точнее попробую проверить

ivagor
22.08.2020, 16:52
давай я сразу проверю на своей прошивке
Ты уже передал под опрос с out FF?

NEO SPECTRUMAN
22.08.2020, 16:56
ld a,b
out ($FF),a - порт адресных линий
in a,($FE)

а как такой вариант будет работать на обычном спектруме
отправленный на вывод A попадет в старший адрес порта?

в эмуляторе внезапно по моему такое работало
правда я брал порт F0 и у меня в бипере стоял треск :)


было бы интересно сохранить работоспособность прошивки на настоящем спектруме

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


Ты уже передал под опрос с out FF?
там 3 секунды переделывать

я ужо и клацалки поставил в начале сорца

key_type = 1 ;1
;2

io_type = 1 ;1
;2

Mick
22.08.2020, 16:57
было бы интересно сохранить работоспособность прошивки на настоящем спектруме

Пользуйся условной компиляцией. Сделай два варианта один под ВМ80 и zx8080, а второй для обычного спектрума с Z80

NEO SPECTRUMAN
22.08.2020, 17:01
Претензии с твоей стороны по этому поводу звучат странно, т.к. сейчас в твоей прошивке в озу временные регистры z80 (которые по размеру больше процедуры опроса, которую я приводил), не говоря уже о килобайтах кода, который не поместился в пзу.
я за максимальную совместимость со спектрумом
а ты предлагаешь велосипеды

а так в раме придется держать такие процедуры
пушо бейсик ВНЕЗАПНО тоже умеет in out в произвольный порт...

Mick
22.08.2020, 18:19
а ты предлагаешь велосипеды

Я исхожу из того, что этот комп чисто эксперимент и дальше опытов вряд ли имеет будущее. Максимум маленькая серия для коллекционеров. :)

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


отказ от wait потребует очень быстрой памяти

Насколько помню 100 нс вполне работает без проблем.
На али есть микрухи D4164-15 (150 нс), я думаю они тоже должны без WAIT работать. Про наши РУ5 вот не скажу.

NEO SPECTRUMAN
22.08.2020, 19:23
Один из вариантов, которым я раньше добивал эмуляцию srl был как раз с использованимем inc\ dec и проблем не был

а какие еще известны не точности?

RR-подобные в z80 влияют на zero
bit не трогает carry (когда применяемый для bit and его успешно сбрасывает)

то в этом *****м бейсике сильно усердно любят перекидывать что либо через флаги на дальние расстояния
пользуясь тем фактом что некоторые команды эти флаги не трогают...

ivagor
22.08.2020, 20:12
а какие еще известны не точности?
Все не помню, разве что srl и djnz. Для djnz есть встроенная опция переключающая быстрый и корректный вариант. Такая ситуация со многими командами, можно сделать или точно или медленно и длинно. Это касается даже простейших арифметических команд (add, sub) - вместо флага четности для соответствия z80 должен быть флаг переполнения, да и флаг вычитания в sub не устанавливается а в daa не учитывается. Идеальная эмуляция с приемлемой скоростью и размером невозможна, но на практике dao обеспечивает довольно хорошие результаты, если речь не идет о математике.

Mick
22.08.2020, 21:37
/wr у z80 короткий (практически как у 8080), вероятно поэтому в ленинграде формируют /we из mreq, rd и rfsh.

Да у z80 сигнал wr/ короткий длительностью один такт, начинается половины T2 и заканчивается на половине T3.
У ВМ80 сигнал wr/ тоже длительностью один такт и занимает весь T3
Действительно в текущем варианте схемы можно и пролететь.

Кстати сигнал DBIN тоже короткий и тоже в один такт начинается в половине T2 и заканчивается в половине T3, по сути следует после SYNC.
В Z80 сигнал rd/ длинный и одинаков по длительности с MREQ/ начинается с половины T1 и заканчивается в половине T3

Если сопоставить с Ленинградом, где по сути длительность записи равна длительности сигнала MREQ/ при условии что RD/ и RFSH/ не активны то есть равны 1.
Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN.

NEO SPECTRUMAN
22.08.2020, 23:09
заработал 2+2 ! :v2_dizzy_roll:

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

ну и за одно draw beep итд

но не вывод ошибок
на все ОК :v2_dizzy_facepalm:
какой то бейсик пофигист

да и переменные и циклы тоже не особо фурычат

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

ZX8080 ROM r0057
https://anonfiles.com/bdu25dO6o8/ZX8080_ROM_r0057_7z
https://dropmefiles.com.ua/ru/vAXswhPLV

КТО?! сказал что это не circle 100,100,50 :v2_lol:
https://jpegshare.net/images/6a/93/6a93adb52f407256396be2b8be2a5bf9.png

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

после запуска нужно дрангдропнуть сверху снапшот
в котором щас шрифты и дополнительные процедуры

тапка тоже уже есть
но тк есть какаято трабла с загрузкой
грузит оно не на те адреса которые нужно (+-n байт от нужно адреса)
так что пока только снапшот

да и как по мне
при адаптации с z80 на 8080
скорость не очень сильно просела



это Г* пытаитсо работать но зависает
https://jpegshare.net/images/2a/e6/2ae61d0046760280c5e3e005c70d75c7.png https://jpegshare.net/images/f8/87/f887cabf70caea3cf07348d9d6cf0ad8.png


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

может нужно переименовать тему в "spectrum на i8080"?
а то под даунгрейдом не очевидно о чем идет речь
можно подумать что кто то снимает криво напаянные 256К например
ну или добавить в конце "... ставим i8080"
или
"ставим i8080 в spectrum"

ivagor
23.08.2020, 06:56
Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN.
На мой взгляд для чтения это невозможно. Вот для записи можно начать сразу после sync и закончить вместе с окончанием /wr.
Текущий вариант может и будет выполнять код из пзу, но с записью и чтением озу скорее всего будут проблемы.

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

Теоретически можно попробовать очень своеобразный вариант упреждающей установки управляющих сигналов. С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти. Если я правильно понимаю, то на шине адреса в это время уже правильная информация. К концу sync будет понятно, какой сейчас цикл, и если это не цикл чтения из памяти, то меняем управляющие сигналы в соответствии со словом состояния. Запись в память можно, как уже писал, начать и с окончанием sync. Чтение из памяти завершается по заднему фронту dbin, а запись в память - по заднему фронту wr (хотя тут при желании возможны варианты).
Детали стоит еще продумать, но все же некий свет в конце туннеля вроде виднеется.

Mick
23.08.2020, 07:21
С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти.

По сути то что я написал Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN в некотором роде равно твоему утверждению.
То есть у нас процессы начинаться должны с началом SYNC.

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


Запись в память можно, как уже писал, начать и с окончанием sync.

Ну да на основании битов статуса WO = 0 и OUT = 0. Заканчивать запись можно либо по окончанию WR/

ivagor
23.08.2020, 07:31
По сути то что я написал Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN в некотором роде равно твоему утверждению.
Так я всего лишь привел один из конкретных вариантов, как можно попробовать стать здоровым и богатым, ну или хотя бы прочитать данные из озу ленинграда.


С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти. Если я правильно понимаю, то на шине адреса в это время уже правильная информация.
По даташиту допуск на запаздывание адреса относительно клока все же больше, чем на запаздывание sync, т.е. на момент переднего фронта sync нужного адреса на ША может еще и не будет, тут тонкий момент.

Mick
23.08.2020, 07:36
тут тонкий момент.

Можно при активном SYNC стартовать по началу следующего F1 или спаду F2, т.е. ставить триггер и сбрасывать его если пришли операции IN или OUT

ivagor
23.08.2020, 07:46
и сбрасывать его если пришли операции IN или OUT
или запись

Mick
23.08.2020, 08:34
или запись

Ну да. У нас получается два вида MREQ/ - на запись и чтение.
Начало у них одинаковое, допустим по стробу F1 при активном SYNC
Окончание
чтение - комбинация OUT =1 или IN=1 или DBIN =0
запись - комбинация OUT =1 или IN=1 или WR/ = 1

То есть микросхема TМ2 в плюсе

ivagor
23.08.2020, 08:53
чтение - комбинация OUT =1 или IN=1 или DBIN =0
При активном synce dbin=0, а читать там надо пытаться, поэтому вместо последнего условия лучше "по заднему фронту dbin".
Уточню, что там где "или запись" я имел ввиду сброс сигнала чтения из памяти, не mreq.

или WR/ = 1
Тут пожалуй тоже лучше "или по заднему фронту wr"
Т.е. mreq может длится от примерно 2 (в случае чтения) до примерно 3 (в случае записи) тактов. Причем в случае записи 1й такт будет попытка чтения.
Сигнал чтения из памяти можно начать одновременно с mreq. Сигнал записи в память скорее всего надо начинать где то в районе заднего фронта sync.
Но это не все, надо еще учесть циклы связанные с прерываниями.

zx_
23.08.2020, 08:54
не, шедевр жешь
https://jpegshare.net/images/6a/93/6a93adb52f407256396be2b8be2a5bf9.png

ivagor
23.08.2020, 09:22
Mick, не стоит забывать и про более простой вариант - тормозить весь доступ к озу.

Mick
23.08.2020, 14:15
не стоит забывать и про более простой вариант - тормозить весь доступ к озу.

Это самый крайний случай, надо постараться обойтись без тормозов, ибо тогда не получим максимальной отдачи от ВМ80.
Если что на али куплю память с 100...150нс доступом (вернее уже заказал KM4164B-10). Потому как, если взлетит, то потом по этому подобию хочу клон Ориона сварганить.

NEO SPECTRUMAN
23.08.2020, 15:33
ZX8080 ROM r0058
https://anonfiles.com/j5AaDcO4o2/zx8080_ROM_r0058_7z
https://dropmefiles.com.ua/ru/4hNPUZz7


пофиксил загрузку tap-ки

за одно включил запись в half row port висячий на FF
и оно на вид работает на спектруме
проверил на eightyone и спкт№";Кку*ляторе

так что такое уже можно прошивать в железку

правда наверно еще придется допиливать до работоспособности на самом 8080...

Eltaron
23.08.2020, 15:58
КТО?! сказал что это не circle 100,100,50 :v2_lol:
Прямо напрашивается на логотип :D :

https://c.radikal.ru/c17/2008/ad/60486b831b85.png

Mick
23.08.2020, 16:02
за одно включил запись в half row port висячий на FF

То есть остановились на регистре для адресных линий клавы.
Значит вставляю регистр в схему.

NEO SPECTRUMAN
23.08.2020, 16:21
То есть остановились на регистре для адресных линий клавы.
Значит вставляю регистр в схему.
так не нужно будет думать о переделки опроса клавиатуры ну совсем никак
и можно опрашивать anykey

так же потом впилю костыль для бейсиковского IN
чтоб он опрашивал FE засылая данные в key half row port

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


Прямо напрашивается на логотип :
да как то не
рззве что сам "кружок" по отдельносте
как логотип
https://jpegshare.net/images/a3/f3/a3f3784d9f6b6e107e75e024da448557.jpg https://jpegshare.net/images/7b/f7/7bf792385b6c13c1946d7c103b62d8b4.png
кстате последний чем то похож
совпадение?

Mick
23.08.2020, 22:18
Вставил в схему регистр ИР23 (D47) и ЛЛ1 (D46). Схему в первом посте обновил.

NEO SPECTRUMAN
23.08.2020, 22:26
а как там поживает конфиг для emu?
или придется клянчить у b2m-а?

ivagor
24.08.2020, 05:46
Т.е. mreq может длится от примерно 2 (в случае чтения) до примерно 3 (в случае записи) тактов.
Если считать от заднего фронта ф2 при активном sync, то от 1.5 до 2.5 тактов, т.е. проблему чтения озу в оригинальном ленинграде это не решает.

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


как там поживает конфиг для emu?
Все осталось на другом компе, если к следующей субботе необходимость еще будет, то выложу.

NEO SPECTRUMAN
24.08.2020, 05:48
Все осталось на другом компе, если к следующей субботе необходимость еще будет, то выложу.
ну или с головы как замапить на этот ~mask
или с какого конфига можно подобное подсмотреть

ivagor
24.08.2020, 06:40
Без работающего примера я конфиг выкладывать не хочу. Подобных конфигов вроде нет.

Mick
24.08.2020, 06:49
Если считать от заднего фронта ф2 при активном sync, то от 1.5 до 2.5 тактов, т.е. проблему чтения озу в оригинальном ленинграде это не решает.

Я склоняюсь к тому, что для начала надо разрисовать эпюры, может там не все так кисло.
С другой стороны, для чтения должно хватать одного цикла обращения к ОЗУ, только вот вопрос - попадания таков процессора в этот цикл.
Ну и совсем трешак, применить подход Феникса, память ускорить и заставить работать на 7МГЦ, а частоту процессора оставить прежней. Но в этом случае стопудово нужна быстрая память, впрочем, как писал выше я уже заказал KM4164-15 (150нс) память. Если не успеет, то тогда 100нс надо брать.

ivagor
24.08.2020, 06:58
Ну и совсем трешак, применить подход Феникса, память ускорить и заставить работать на 7МГЦ, а частоту процессора оставить прежней. Но в этом случае стопудово нужна быстрая память, впрочем, как писал выше я уже заказал KM4164-15 (150нс) память. Если не успеет, то тогда 100нс надо брать.
По даташитам полный цикл памяти -10 (у которой /RAS access 100 ns) 190-200 ns. Для полного цикла 140 ns при строгом выполнении требований даташитов нужна память -7 (/RAS access 70 ns). Но, конечно, на практике dram успешно насилуется, может и -10 прокатит при разгоне памяти вдвое.

Mick
24.08.2020, 09:12
может и -10 прокатит при разгоне памяти вдвое.

Хорошо, закажем и их. :)

NEO SPECTRUMAN
24.08.2020, 16:36
Без работающего
ну и хрен с тобой

методом научного тыка
ВНЕЗАПНО запилил свой конфиг с блек джеком и шлюхами
щас потестю выложу

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

собственно вот

zx8080 конфиг в emu
https://anonfiles.com/Bd03P2O2o7/zx8080emu_7z
https://dropmefiles.com.ua/ru/XSUPC

вавка с которой грузить в комплекте
нужно в слепую набрать load""
кавычки набирать ВНЕЗАПНО через правый щифт :v2_dizzy_facepalm:

звук почамуто не работает

...галаксианс как и ожидалось не работает...

circle по моему рисует еще хуже чем на z80...

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

ну и скриншот на фоне каких то мерзких пиктограм
https://jpegshare.net/images/0c/34/0c34075154142e69e648a05dae6d0d5c.png

Mick
24.08.2020, 19:55
т.е. проблему чтения озу в оригинальном ленинграде это не решает.

Вот попытался нарисовать эпюры идеального случая.
И если поглядеть на операцию чтения, то в случае Z80 так и ВМ80 есть ситуации когда сигнал записи в буферный регистр попадает на чтение так сказать на излете. Но при быстрой памяти в Фениксе это прокатывает даже при частоте памяти 3,5МГц

https://yadi.sk/i/gZ2U4FQOU9FoSQ

Сигнал CAS/ я планирую упростить, инверсия сигнала H0

NEO SPECTRUMAN
25.08.2020, 04:04
на все ОК
какой то бейсик пофигист
надо наверно заменить на "GO SLEEP, STUPID USER!!!" и оставить как есть :v2_lol:

LeoN65816
25.08.2020, 14:51
не, шедевр жешь
https://jpegshare.net/images/6a/93/6a93adb52f407256396be2b8be2a5bf9.png
Очень похоже на лежащего обожравшегося пакмана...

zx_
25.08.2020, 15:23
Кольцо Спектрумана

NEO SPECTRUMAN
25.08.2020, 15:24
Очень похоже на лежащего обожравшегося пакмана...
с вм80 в emu там вообще не особо похожее на круг рисуется
и каждый раз разного размера...

NEO SPECTRUMAN
28.08.2020, 22:53
Кольцо Спектрумана
тут получилось еще лучше
это просто идеальный circle 100,100,30
и это не фотошоп :)
https://jpegshare.net/images/73/5d/735d05eeb0797a9a22aa636878663319.png


ну и один и тот же circle зацикленно :v2_lol:
https://jpegshare.net/images/d2/e8/d2e84627adaff27f76938fb354ec04e4.png https://jpegshare.net/images/77/82/778242080dee11e9a8f1edafd421d2c3.png
https://jpegshare.net/images/64/8b/648b95e0d570869a28cb746cc1640e61.png https://jpegshare.net/images/a2/ab/a2ab2b0747d7f58103c62b27cf2cf455.png

так что дето FP расчеты еще жестко косячат

Mick
30.08.2020, 14:34
Тоже отчитаюсь.

Весту починил и вроде работает.

https://i.ibb.co/M2NczmD/IMG-20200827-112206.jpg (https://ibb.co/M2NczmD)

https://i.ibb.co/9ZDDFzW/IMG-20200827-112157.jpg (https://ibb.co/9ZDDFzW)

На текущий момент - Выпаял процессор, поставил вместо него панельку на всякий случай.

Теперь морально надо подготовиться к хирургическому вмешательству. :)

NEO SPECTRUMAN
04.09.2020, 14:21
ПЗУ-шка теперь своей темой
https://zx-pk.ru/threads/32195-zx8080-rom.html

Mick
14.09.2020, 10:39
Тут во время испытаний компьютера ZX-777 в режиме без WAIT с установленным буфером К555ИР22 120нс работает но периодически возникают сбои. Возможно что если будет стоять КР1533ИР22 то сбои исчезнут. А можно просто попробовать установить 100нс память.
Так и в нашем случае, при коротком сигнале чтения из памяти, возможно этот вариант тоже подойдет. Как раз если что пришли из Китая микрухи KM4164B-10 и TMS4164-10NL на пробу. Также не удалось по быстрому найти К170АП3, но нашел в том же Китае их аналог DS0026CN.

Кстати, кто напомнит, какая из 565РУ5 у нас самая шустрая?

ivagor
14.09.2020, 16:32
РУ5Д - -25
РУ5Г - -20
РУ5В - -15
РУ5Б - -12
РУ5А - в справочниках нет, предположительно -10

Mick
14.09.2020, 19:25
РУ5Б - -12

То есть теоретически совместно с буферным регистром КР1533ИР22 они без WAIT должны взлететь.
А маркировка Б-шек тебе известна?

В общем надо с платы выпаивать память и буферный регистр и ставить панельки.

ivagor
14.09.2020, 19:38
А маркировка Б-шек тебе известна?
Если речь про маркировку точками, то согласно этикетке КР565РУ5
В - одна точка
Г - две точки
Д - три точки
Вместо Д1 и Д2 - арабские цифры 1 и 2 с лицевой стороны корпуса
Е (никогда таких не видел) - четыре точки
Б - точками не выделяется

Видел и лично и на фото КР565РУ5Б т.е. с буквой Б. РУ5 без буквы (и с буквой А) видел только на фото. В итоге как я понимаю 565РУ5Б - это или без точек или с буквой Б

Mick
14.09.2020, 19:49
Спасибо за информацию. Если найду, попробую. А пока на всякий пожарный есть импортные с 100нс.

ivagor
14.09.2020, 20:03
на всякий пожарный есть импортные с 100нс
Теоретически они лучше любых РУ5 (если только не перемаркированы). Если паять, то жалко, а если на панельки, то вроде и проблем нет.

NEO SPECTRUMAN
14.09.2020, 20:06
а в чем собственно проблема?
из за мерзкого пуляния 8080-м мерзких "кодовых" слов нужна более шустрая память чем для спека чтоб уложиться в более узкие промежутки времени?

Mick
14.09.2020, 21:31
из за мерзкого пуляния 8080-м мерзких "кодовых" слов нужна более шустрая память чем для спека чтоб уложиться в более узкие промежутки времени?

Сразу видно что чистый кодер. Нет для программ не нужна такая шустрая память, она нужна чтобы обойтись без сигнала WAIT при чтении данных из ОЗУ. Дело в том что в рамках схемотехники отечественных Спектрумов, сигнал чтения ВМ80 достаточно короткий, по сути сопоставим с сигналом чтения Z80 при чтении инструкции. Но если у Z80 такое случается только при активном M1, то у ВМ80 это навсегда везде и всем.

NEO SPECTRUMAN
15.09.2020, 06:12
Сразу видно что чистый кодер.
по моему даже чисто спектрум железятник
не обязан знать как там фурычит вм80 :)
хотя до по обоим у меня знания поверхностные...

ivagor
16.09.2020, 09:22
Насчет памяти. Если я правильно понимаю, то видео по /RAS за 64 строки (4.096 мс) перебирает 256 адресов. Т.е. можно использовать 41256, правда потеряется 3/4 объема. Но вроде 41256-80 даже проще найти, чем 4164-10. А учитывая временные диаграммы (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1078259&viewfull=1#post1078259), где предполагается чтение процом через 36 нс после спада CAS это может быть востребовано (и даже для -80 это быстрее даташита, но ненамного).

Mick
18.09.2020, 09:56
Но вроде 41256-80 даже проще найти, чем 4164-10.

На али и те и другие есть в избытке. :)
Но этот вариант тоже не стоит исключать, как и применение 41464-80 (64Kx4). С другой стороны их проще запихивать вместо старой памяти.
Однако учитывая то, что 100нс микрух для Z80 хватает для чтения без WAIT при использовании 555ИР22 (по крайней мере так у меня в компьютере ZX-777), то возможно это же прокатит и на ВМ80. В любом случае это удастся установить только опытным путем.
Вот бы еще тест, который бы максимально нагрузил проц и память, чтобы точно оценить работу памяти.

А пока я выпаял старую память и буфер. Установил их в панельки, чтобы было потом что на что менять.

https://i.ibb.co/5LKBJ7H/IMG-20200918-095719.jpg (https://ibb.co/5LKBJ7H)

https://i.ibb.co/jvsmMRn/IMG-20200918-095836.jpg (https://ibb.co/jvsmMRn)

NEO SPECTRUMAN
18.09.2020, 10:34
ну а разработка ПЗУ-шки давно остановилась
жалающие помочь в адаптации
могли бы например по проверять работоспособность команд
(сбрасывая эмулятор перед проверкой каждой команды)
имея список работоспособных и не работоспособных команд
можно было бы вычислить какие процедуры работают глючно
пушо дебагать это ***** не реально
на параллельную пошаговую сверку оригинального кода и нового уходят часы
там на каждый пчих по 15 рекурсивных вызовов калькулятора и еще кучи других процедур

соответствующая тема
с последней версией пзушке
https://zx-pk.ru/threads/32195-zx8080-rom.html

ivagor
18.09.2020, 10:56
100нс микрух для Z80 хватает для чтения без WAIT при использовании 555ИР22 (по крайней мере так у меня в компьютере ZX-777)
При проце 7 МГц?
Оказалось, что в Балтике доступ к озу весьма щадящий. Даже на 4 МГц там почти соблюдаются паспортные данные РУ5Г, а в книжке-описании допускают и РУ5Д. Не предлагаю искать Балтик и тем более думать над его переделкой на 8080, но радует факт, что кто-то заботился о нормальных таймингах озу. Хотя там свои проблемы, пзушки ре и рт работают в запредельном режиме да и тайминги, которые формирует ре3 для озу не окончательные, потом сигналы еще задерживают, причем задержки разные для разных сигналов, все же без асинхронщины не обошлось.


Вот бы еще тест, который бы максимально нагрузил проц и память, чтобы точно оценить работу памяти.
Попозже выложу прикидку теста. Там тест памяти очень простенький, для галочки, но есть.

Mick
18.09.2020, 11:16
При проце 7 МГц?

Нет, штатные 3,5МГц. Вот сам комп - https://zx-pk.ru/threads/30053-zx-777-remont-i-poleznaya-informatsiya.html?p=1074906&viewfull=1#post1074906
Там только стоят 120нс, но уже заменены на 100нс. И комп замечательно работает. Два дня гонял его по 8 часов - сбоев не было.

ivagor
18.09.2020, 11:32
Попробовал ткнуть в пару ссылок на схемы этого компа на твоем сайте - ошибка (наверняка там есть и работающие ссылки, я не все попробовал). Да и вряд ли я смог бы только по схемам правильно нарисовать временные диаграммы работы проца и памяти. А без них непонятно, почему такая требовательность к озу в клоне спека 93 года, рассчитанного на РУ5. Если быстрые озушки понадобились после замены на 64x4 и добавления буфера тогда примерно понятно, но без диаграмм все равно только примерно.

Mick
18.09.2020, 11:55
Попробовал ткнуть в пару ссылок на схемы этого компа на твоем сайте - ошибка

Вот тыкнул на эту - http://micklab.ru/file/zx_777/zx_777_03mick20.pdf



А без них непонятно, почему такая требовательность к озу в клоне спека 93 года, рассчитанного на РУ5. Если быстрые озушки понадобились после замены на 64x4 и добавления буфера тогда примерно понятно, но без диаграмм все равно только примерно.

Изначально схема была на РУ5, но сигналом WAIT на чтение команд - цикл M1. После убирания WAIT цикл чтения команд стал коротким. По сути там на чтение получается коротки импульс, что РУ5 могут не успеть подготовить данные. Плюс еще задержки буфера КР1533ИР22 или 555ИР22. Возможно при 1533ИР22 там все успевает, но вот при 555ИР22 бывают сбои уже при 120нс. Они не так часты, но бывают. Лучшим методом проверки являются демы.
Я например вот на 7Th Reality отловил, место в котором 120нс зависала всегда, а вот 100нс проходила в течении всего дня.

Посему нужен такой тест, который вылавливает обращение к памяти по сути по циклам.

ivagor
18.09.2020, 12:06
Изначально схема была на РУ5, но сигналом WAIT на чтение команд - цикл M1. После убирания WAIT цикл чтения команд стал коротким.
Понятно, т.е. примерно аналогично тому, как ты сделал в ленине8080 + там еще буфер, но зато там z80 и при удачном сочетании сигналов это может помогать. В целом хороший знак для zx8080.

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

То что я написал справедливо если в zx777 выборка видео как в ленинграде, а это я не знаю.

Mick
18.09.2020, 12:16
То что я написал справедливо если в zx777 выборка видео как в ленинграде, а это я не знаю.

Она в принципе по той же схеме, как и в большинстве клонов Спектрума.
Смысл такой что при сигнале H1 (1,75МГц) происходит обращение к памяти либо процессором, либо видеоконтроллером.
А именно H1 =0 - обращение процессора, H1 =1 - обращение видеоконтроллера. То есть процессор не может безраздельно пользоваться памятью даже при всем его желании, он всегда делит время с видеоконтроллером.
Запись в буфер чтения - WRBUF всегда происходит при активном H1 = 0 и CAS/ =0. Либо если быть точным, как в Спектруме при H1 =0 и Н0 = 1.
Если что H0 = 3,5МГц. По сути на условных диаграммах, которые я приводил, там это показано.

ivagor
18.09.2020, 12:25
Т.е. zx777 по выборке видео аналогичен ленинграду. Тогда результаты избавления от wait воодушевляют.

Mick
18.09.2020, 16:10
Вот попробовал еще раз отрисовать идеализированную эпюру касательно ВМ80. Конечно могу и ошибаться.
Как видим чтение захватывает маленький кусочек WRBUF. А вот запись WE в память в текущем варианте, которая стробируется началом сигнала RAS/ не всегда попадает на сигнал WR. Его как минимум надо начинать с окончанием сигнала SYNC

https://i.ibb.co/rpq0NbY/ZX8080-1.jpg (https://ibb.co/rpq0NbY)

ivagor
18.09.2020, 17:01
Проблема, как я понимаю, со второй (правой) записью. Если при слове состояния "запись в память" (запись и не в порт) активизировать сигнал записи по заднему фронту sync и снять его по заднему фронту /wr проца, то может и запишет в озу.

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

На диаграмме оба чтения одинаковые, не хватает варианта со смещением на такт относительно H1. В таком случае похоже и не прочитает.

PVV
18.09.2020, 18:02
В протеусе есть очень удобный инструмент построения графиков (http://https://zx-pk.ru/threads/32000-vremennye-diagrammy-(rastaktovki)-quot-leningrad-48-quot-v-isis-proteus.html), почему бы им не воспользоваться? Вся задача этого топика прямо проситься быть решенной в протеусе. Для этого все есть.

NEO SPECTRUMAN
18.09.2020, 18:03
В протеусе
а в протеусе уже есть 8080?

ivagor
18.09.2020, 18:14
Тест, ориентирован не на проверку стабильности (до этого имхо еще далеко), а на проверку базовой функциональности. Для emu
1. При старте проверяет озу и если нормально, то переходит к п.2
2.1. При нормальной работе прерываний справа вверху будут идти часы
2.2. Цифры в середине слева соответствуют клавиатуре
2.3. При нажатии клавиш бипает и по бордюру немного идут цветные полосы

PVV
18.09.2020, 18:24
а в протеусе уже есть 8080?
Да, уже достаточно давно (http://www.nedopc.org/forum/viewtopic.php?f=81&t=19632&p=152830#p152819), x80.dll поддерживает i8080, i8085 и z80.

NEO SPECTRUMAN
18.09.2020, 18:47
Да, уже достаточно давно,
достаточно недавно было один только z80...

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

наконецто можно будет нарисовать какой нибудь мерзкий львов
и наконец узнать его временки :)
чтоб пилить мультиколоры :v2_devil:
к сожалению мой львов сдох раньше чем купил логанализатор...

PVV
18.09.2020, 19:22
offtop:


достаточно недавно было один только z80...

не совсем так
первой, еще в конце 2015 года, появилась модель недоZ80 (http://www.nedopc.org/forum/viewtopic.php?f=81&t=10110&start=180#p119988)
и месяцем позже (http://www.nedopc.org/forum/viewtopic.php?f=81&t=10110&start=195#p121096), в 2016 году, появился i8080. Затем его немного 'допилили' и этой моделькой можно было полноценно пользоваться.
А еще, через какое то время появилась x80.dll три в одном, о которой сказано выше.

В модели 8080 есть ограничение, выходные сигналы не используют тактовый сигнал Ф2, все отрабатывает относительно Ф1, но эта особенность еще ни в одной симуляции не мешала.
Модель DRAM времянки RAS-CAS не учитывает(соответственно, при отсутствии регенерации по нужному диапазону адресов информация не пропадет), за этим нужно следить самостоятельно, а в остальном ведет себя как 8 микросхем 565РУ5 в одном корпусе...

Mick
18.09.2020, 19:59
На диаграмме оба чтения одинаковые, не хватает варианта со смещением на такт относительно H1. В таком случае похоже и не прочитает.

Я пока нарисовал так сказать в варианте, когда команда совпала с окном CPU

Чуть сдвинул - вроде чтение везде проходит. Но везде короткое.

https://i.ibb.co/cFrzb7R/ZX8080-2.jpg (https://ibb.co/cFrzb7R)

ivagor
18.09.2020, 20:53
Если взять для примера третью снизу линейку сигналов 8080, то меня смущает в ней первое чтение. Сомнение такое - будет ли к переднему фронту (спаду) cas в слоте CPU правильный адрес на ША? Но гадать тут нет смысла, железка покажет, возможно действительно все на грани, но работоспособно.

Mick
18.09.2020, 20:56
будет ли к переднему фронту (спаду) cas в слоте CPU правильный адрес на ША?
Насколько я понял адрес уже устанавливается в T1 по сути вместе с SYNC.

ivagor
18.09.2020, 21:24
По даташиту адрес выставляется на ША с задержкой относительно переднего фронта ф2 и эта задержка разная для разных градаций скорости проца. Для A-1 - 150 нс, т.е. на частоте 3.5 МГц это полтакта. Я в предыдущем посте ошибся - к cas то успеет, вопрос - успеет ли к ras.

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

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

ivagor
21.09.2020, 16:34
Попробовал прикинуть некоторые сигналы из последних временных диаграмм со схемой из первого поста. От READY ты отказался, но есть вопросы и по другим сигналам
1. Для формирования F1TTL как на диаграммах надо заменить элемент И на ИЛИ-НЕ
2. Сигнал WE/ не будет формироваться в случаях, когда WR/ от проца начинается во временном слоте CPU

Mick
22.09.2020, 09:16
вопросы и по другим сигналам

Та схема немного устарела. Надо обновить на новую.

ivagor
22.09.2020, 10:25
Mick, в данном проекте у тебя довольно значительные технические риски сразу по нескольким направлениям (замена проца, 8080 на сверхвысокой частоте, отказ от wait требующий быстрой памяти, +неизбежные ошибки проектирования и изготовления/модификации). Эти риски можно снизить, по крайней мере частично, если ты подумаешь о поэтапной модификации. В "ленине8080 первого этапа" можно не менять озу за счет торможения.
1. F2=CAS/; F1(как сейчас в схеме)=TI И RAS/.
2. READY в самом простом случае=H1/. Более нормальный вариант - убирать торможение при A14=A15=0.
Если еще и тактовую понизить, то вероятность всяких неприятностей связанных с памятью резко уменьшается.

Mick
22.09.2020, 10:37
1. F2=CAS/; F1(как сейчас в схеме)=TI И RAS/.
2. READY в самом простом случае=H1/. Более нормальный вариант - убирать торможение при A14=A15=0.
Если еще и тактовую понизить, то вероятность всяких неприятностей связанных с памятью резко уменьшается.

Сейчас у меня
F1 = TI # RAS/
F2 = RAS/

Вечером скину новую схему.
А так, вся затея именно в том чтобы разогнать проц, тактовую понижать это совсем если не пойдет.

Mick
22.09.2020, 19:00
Схему обновил, ссылка в первом посте.

ivagor
22.09.2020, 19:38
Нарисовал картинку про F1 и F2. Где я там ошибаюсь?

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

На рисунке F1TTL и F2TTL

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

Если фишка в том, что D44 инвертирует, и в схеме F1TTL и F2TTL на самом деле F1TTL/ и F2TTL/, тогда надо поменять F2TTL/=RAS. Т.е. надо поменять или F1 или F2, они в текущем варианте схемы не могут быть правильными одновременно.

Mick
23.09.2020, 08:50
Нарисовал картинку про F1 и F2. Где я там ошибаюсь?

Ты прав, надо ИЛИ-НЕ ставить, я ошибся.

ivagor
23.09.2020, 09:15
Mick, скорее ты и я были правы (и не правы) пополам. Учитывая, что D44 (только сегодня вспомнил, что это 170АП3. Хорошо бы к схеме еще список микросхем) инвертирует, я бы так написал
F1TTL/=TI OR RAS/
F2TTL/=RAS
F1=NOT(TI OR RAS/)
F2=RAS/

Mick
23.09.2020, 09:20
Учитывая, что D44 (только сегодня вспомнил, что это 170АП3. Хорошо бы к схеме еще список микросхем) инвертирует,

Ну микросхемы там тебе практически все известны, кроме D44, но ты уже сам догадался что это 170АП3. Еще возможно непонятно, хотя вряд ли, так это D42 - 555ТМ7.

ivagor
23.09.2020, 09:32
Поправил (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1081914&viewfull=1#post1081914) F1TTL и F2TTL на инвернсные, чтобы не путаться, желательно на схеме тоже изменить.

Mick
23.09.2020, 10:57
желательно на схеме тоже изменить.

Вечером обновлю схему.

ivagor
23.09.2020, 18:27
Насчет прерываний. Mick, рекомендую посмотреть схему какого-нибудь компа на 8080 с прерываниями. В векторе INT сбрасывают при INTE=0. Надо еще читать даташит, но вроде это связано с тем, что при INT=1 не будет перехода к следующим циклам. В случае RST 7 (rst 38h) после выборки кода команды надо еще и поместить в стек адрес возврата.
Возможно ничего дорабатывать не надо и это решится само собой (без принудительного сброса INT) - будет долбить выборку rst пока INT не закончится "естественным путем" а потом уже запишет в стек. При этом только потеряется некоторое время на бег на месте.

Просто для коллекции еще один вариант, как можно было сделать обращение к портам. Их можно было отобразить на память, например в районе 3E00-3FFF. 3Fxx - джойстик; 3Exx - клавиатура, младший байт адреса - выбор линейки.
Предполагаемый плюс такого варианта - упрощение схемы, не нужно разбирать слово состояния и отлавливать обращение к портам. Правда в этом случае надо еще думать над реализацией "досрочной" записи, скорее всего по аналогии со специалистом и орионом. Программирование сравнительно компактное и удобное.
Минус - уменьшение объема пзу на 512 байт.

NEO SPECTRUMAN
23.09.2020, 18:34
Минус - уменьшение объема пзу на 512 байт.
выглядит очень интересно на фоне не хватки места в пзу в количестве 2К

Mick
23.09.2020, 19:51
Просто для коллекции еще один вариант, как можно было сделать обращение к портам. Их можно было отобразить на память, например в районе 3E00-3FFF. 3Fxx - джойстик; 3Exx - клавиатура, младший байт адреса - выбор линейки.

Пока я думаю не стоит, тем более выборка порта в Ленинграде самая примитивная. Скажем это меньшее на чем стоит заострять внимание. У нас первоочередная задача - запустить ВМ80 на 3,5МГц

Схему обновил.

ivagor
26.09.2020, 06:52
Посмотрел схему пентагона и похоже с ним было бы проще получить (вернее сохранить) прозрачный доступ проца к памяти с 8080 (думаю не потребовалось бы менять микросхемы озу, если они работали нормально в оригинале с z80). Возможно там возникли бы другие проблемы, но это и с ленинградом еще не вполне ясно.

Mick
26.09.2020, 13:13
Нет все проще, бралось то что проще всего раскурочить. Пентагон сам по себе еще тот фрукт, там запросто можно уйти в такие дебри.
И что может быть проще компа с 4 десятков микросхем - ну явно не пятногон. :)

ivagor
26.09.2020, 13:21
В пентагоне только один момент проще (для прозрачного доступа к озу) - есть "промежуточные" регистры для выборки видеоданных. А в остальном, да, сложнее, по крайней мере микросхем больше - КНГМД, в 128 дополнительная память. Тем более эти дополнительные возможности не будут использованы.

ivagor
27.09.2020, 08:45
Mick, если планируешь использовать адресацию клавиатуры

Вариант с заданием маски через отдельный порт
то на D47 "слева" должна придти шина данных (D0-D7), а не старшая половина шины адреса.

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

В целом несколько смущает отсутствие буферизации ША и ШД

Mick
27.09.2020, 08:56
то на D47 "слева" должна придти шина данных (D0-D7), а не старшая половина шины адреса.

Да, ты правильно заметил. Схему перезалил.



В целом несколько смущает отсутствие буферизации ША и ШД

Пока надежда на небольшое количество нагружаемых микросхем. Будет плохо, значит будем добавлять.

ivagor
27.09.2020, 09:28
Еще мне кажется не совсем корректной фиксация данных в D40 и D47. Пусть IOWR/ неактивный (высокий) и
1. A0 0->1 - произойдет фиксация данных в D40
2. A0 1->0 - произойдет фиксация данных в D47
Можно заменить D46.3 и D46.1 на ИЛИ-НЕ, тогда фиксация будет по переднему фронту (спаду) IOWR/

ivagor
30.09.2020, 10:17
На тот случай, если реализация в железе еще не началась вброшу еще вариант. Можно часть нововведений заменить на ВК38. В наличии они вроде есть и недорого. Бонусом пойдет буферизация ШД

Mick
30.09.2020, 10:28
Можно часть нововведений заменить на ВК38

Мы тогда не отловим начало цикла записи в память. Не забывай, мы в паямть пишем не по WR/, а по комбинации битов статуса. Это сбрасываем его по концу WR/
Так что пока выглядит сомнительно эта затея.


На тот случай, если реализация в железе еще не началась

Пока раздумываю, либо на проводках делать, что может не дать ожидаемого эффекта, ввиду хаоса проводов, либо рискнуть и развести Ленина уже с нововведениями (правда я бы от одной ПЗУ избавился). Тогда можно предусмотреть сразу места для буферов. Либо нововведения сделать на отдельной платке, которая будет вставляться в панельку процессора.

ivagor
30.09.2020, 10:38
мы в паямть пишем не по WR/, а по комбинации битов статуса. Это сбрасываем его по концу WR/
Поэтому я и предложил ВК38, а не ВК28. Он (38) начинает /MEMW и /(I/OW) по битам статуса и заканчивает с концом WR/

Mick
30.09.2020, 10:55
А задержка самого буфера сколько у него?

Ведь любая буферизация вносит задержки на прохождение сигнала. Вот допустим мы ставим АП6 и если не хватит скорости КР1533АП6, то можно поставить например КР1531АП6. А как обстоят дела с ВК38

ivagor
30.09.2020, 11:10
Цитата из Щелкунова, Дианова (надеюсь в даташите аналогично) "Задержка, вносимая формирователем в шину данных, не превышает 40 нс."

Mick
30.09.2020, 11:20
не превышает 40 нс."

Значит максимум 40нс - это на мой взгляд много и к сожалению эту микруху нельзя поменять на что то быстрое.

ivagor
30.09.2020, 14:59
Работа над ошибками. Здесь (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1082439&viewfull=1#post1082439) я ошибся, в текущем варианте схемы с D40 и D47 все нормально, запись по заднему фронту IOWR/

ivagor
01.10.2020, 07:23
Озвучу еще один не особо оригинальный вариант, как можно при сохранении старых микросхем озу обойтись без торможения. Проблему конкуренции видео и проца при записи долгий we/ скорее всего решит. Для решения конфликта по чтению можно поставить sramину на >=64 Кб. Проц должен писать параллельно в старое озу (чтобы видео отображалось) и в новое, а читает только из нового (и из пзу). Изящности в таком решении нет, да и вопрос буферизации шин оно обостряет.
Если вернуться к варианту замены основного озу, то раз уж менять, то тоже можно подумать об отказе от быстрых dram в пользу еще более быстрой sram.

Mick
01.10.2020, 07:55
Если вернуться к варианту замены основного озу, то раз уж менять, то тоже можно подумать об отказе от быстрых dram в пользу еще более быстрой sram.
Что же вы все бросаетесь из одной крайности в другую. Скажем так импортные драмины на 100нс на али хоть мешками покупай и если она прокатит, то пусть стоит. Напомню, этот комп чисто эксперимент и по сути на нем будет основан клон Ориона. Но так как я изначально ориентировался на драмины, то пока со статикой повременим. Возможно и на ней что нибудь учудим. :)

ivagor
01.10.2020, 08:30
этот комп чисто эксперимент и по сути на нем будет основан клон Ориона.
На мой непросвещенный взгляд для ориона или специалиста этот проект вряд ли даст что-то полезное. Разве что ты сможешь лично оценить разгонябельность конкретных экземпляров процессоров. А с орионом и специалистом имхо все проще. Если плюнуть на нормальные размеры экрана можно просто шагами увеличивать частоту резонатора с параллельной коррекцией параметров развертки до тех пор пока будет работать. Основными ограничивающими факторами буду проц и память. Ну и эстетическое чувство, т.к. если проц заработает на 3.5 МГц, то ширина экрана будет в районе 27.4 мкс, т.е. примерно половина видимой области. Кстати, для специалиста фактически уже есть готовая платформа - Сябр SYR-ALEXа. Там достаточно сменить резонатор и изменить прошивку контроллера для коррекции параметров видео.

Mick
01.10.2020, 09:48
На мой непросвещенный взгляд для ориона или специалиста этот проект вряд ли даст что-то полезное. Разве что ты сможешь лично оценить разгонябельность конкретных экземпляров процессоров.

А что дает полезное в клепании клонов спектрума или специалиста - кроме спортивного интереса ничего. По сути это же хобби.
В отличии от Спектрума, где очень много программ заточено под определенные времянки (сколько там тактов в прерывании), Специалист и Орион этим не страдает. А значит если Орион будет работать на 3,5МГц или 4МГц от этого он Орионом не перестанет быть (пока не берем в расчет экран).
Никто не мешает например сделать клон Ориона на ВМ80 с тактовой 4МГц, допустим на ВМ85 на 5МГц или условно каком нибудь Z180 на 33МГц. Он все равно останется Орионом.

Так вот для меня на сей момент спортивный интерес в создании клона Ориона разбит на два этапа.
1. Это даунгрейд схемотехники Ленинграда на ВМ80, т.е. запуск процессора на 3,5МГц.
2. На основе схемотехники (диспечер памяти) Ленинграда сделать клон Ориона.

Если это прокатит, то можно будет тоже самое повторить и на ВМ85 :)

А вообще тебе спасибо, за то что есть интерес и принимаешь активное участие.

ivagor
01.10.2020, 10:32
Должен признать, что концепцию модификации по пути ленинград->ленинград с 8080->орион я более-менее понимаю только в первой части. Там есть интересная задача замены z80->8080, возможно ее даже никто и не решал до сих пор в связи с отсутствием практической необходимости, что не делает задачу менее интересной.
А вот второй этап в моем восприятии похож на операцию по нетрадиционному удалению гланд. Но это только мое субъективное восприятие, все же для меня это виртуальный проект, а для тебя вполне железный. Если веста ик-30, которая стоит у тебя на столе, в итоге сможет выполнять орионовские программы это же круто.

Орион и специалист к частоте особо не привязаны, есть буквально пара моментов. При использовании магнитофона для загрузки обязательно придется подправить константы. Звуки сильно изменятся, но это не критично. Изменится реакция на клавиатуру, но тут ограничивающим фактором будет разгоноспособность 8080, разогнать до полного неудобства просто не получится.

В целом желаю тебе успеха с этим проектом, постараюсь ограничить неконструктивную составляющую своего участия, чтобы не отвлекать.

Mick
01.10.2020, 11:09
Если веста ик-30, которая стоит у тебя на столе, в итоге сможет выполнять орионовские программы это же круто.

Нет ты немного не понял. По сути от Весты или Ленинграда или Спектрума берется только диспечер памяти. Все остальное будет в итоге Орионовским.
Но на данном этапе при создании компьютера ZX8080 проверяется возможность работы с таким диспечером ВМ80, но в конечном результате они с Орионом мало будут похожи и вряд ли этот комп сможет выполнять Орионовские программы.

Конкретно по железу, что я склоняюсь все таки чутка переразвести Весту под ВМ80 и скорее всего поставить один большой разъем СНП58 для того чтобы было проще цепляться к плате расширения на которой уже есть разъемы под клаву, видео, аудио, майфун. Так сказать одни фиг это новый комп, так пусть будет немного унифицированный. :)

ivagor
01.10.2020, 11:49
Нет ты немного не понял.
Это сильное преуменьшение, на данный момент я совсем не понимаю, что будет после zx8080, что там будет от спека и что от ориона. Главное чтобы ты сам четко понимал, что там откуда и зачем. Интересен (по крайней мере мне) также вопрос с эмуляцией.

Mick
01.10.2020, 19:37
Обновил схему (ссылка в первом посте)

Так как я выбрал вариант с частичной переразводкой платы Веста, то немного оптимизировал цепи.
- кроме того вместо кучи разъемов будет один большой СНП58, с выходами совместимыми с платой расширения ZX-777 Extboard (ну чтобы не делать кабели).
- вместо двух микросхем РФ4 будет только одна 27128 (16кб)
- добавил транзисторы в видео
- добавил буфер на данные АП6 (вначале будут перемычки, а потом уже будем смотреть)

Вот пока думаю, ставить буферы на адреса (пока не хочется)

Mick
07.10.2020, 13:35
Ну как бы так :) Вот что происходит с платой Весты(Ленинграда), когда в нее плюшевый медведь пытается вкарячить ВМ80 :)
Как результат разводка не оптимальна, но длину дорожек клоков от АП3 до ВМ80 сделал как можно короче.

https://i.ibb.co/y5Qhcjp/ZX-8080-pcb.png (https://ibb.co/y5Qhcjp)

Добавил преобразователи напряжения. Плата правда стала размером 250мм x 140мм.
Вечером скину последнюю версию схемы.

ivagor
07.10.2020, 14:23
Глянул последнюю версию схемы и меня смутило управление входом 1 D30 (АП6).
1. Когда читаем DBIN=1, а АП6 при этом будет работать в сторону записи.
2. Имхо лучше использовать WE (вывод 9 D9.2) для управления D30.

Mick
07.10.2020, 14:35
Когда читаем DBIN=1, а АП6 при этом будет работать в сторону записи.

Я уже это поправил, вечером последнюю ревизию схемы скину, там АП6 входы с выходами поменял местами.


2. Имхо лучше использовать WE (вывод 9 D9.2) для управления D30.

А как же запись в порты

ivagor
07.10.2020, 16:39
А как же запись в порты
А в порты писать не будет, это я прошляпил. Получается надо как ты написал поменять местами входы и выходы АП6 или инвертировать DBIN для управляющего входа.

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

"Мой" вариант можно попробовать "спасти", если вместо WE взять сигнал WO с вывода 1 D42.1. Не предлагаю так делать, просто еще вариант.

Mick
07.10.2020, 20:50
"Мой" вариант можно попробовать "спасти",

А что там спасать, то что есть на схеме. Так я уже их перевернул и оставил DBIN.

В общем обновил схему, ссылка в первом посте. И попробую заказать пару плат - посмотреть что же там вышло :)

zx_
07.10.2020, 21:17
вот блин , печатка нра
вот еслиб так Весту с ‘ апгрейдить —
/*один большой СНП58, с выходами совместимыми с платой расширения ZX-777 Extboard (ну чтобы не делать кабели).
- вместо двух микросхем РФ4 будет только одна 27128 (16кб)
- добавил транзисторы в видео
- добавил буфер на данные АП6 (вначале будут перемычки*/


хотя, если в итоге выйдет специалист - тоже супер
-)

ivagor
07.10.2020, 21:52
Еще вопрос по D33. Если это ИР22, то вопрос снимается. Если ИР23, то не представляю, как может работать, т.к. передний фронт WRBUF совпадает с передним фронтом (спадом) cas/ и никак не успеет прочитать из памяти. Нарисовано так, что вроде запись в регистр по спаду WRBUF, но в этом случае проц не успеет прочитать.

Mick
08.10.2020, 08:00
Если это ИР22

Именно, это штатное спековское решение.

HardWareMan
08.10.2020, 08:43
:v2_dizzy_facepalm::v2_dizzy_facepalm::v2_dizzy_fa cepalm::v2_dizzy_facepalm:
Господа "спектрумисты", вы вообще в курсе, откуда появился этот самый ИР22 в схеме спектрума на россыпи (а конкретно - в Ленинграде)? Фундаментальная причина.

Mick
08.10.2020, 08:51
Господа "спектрумисты", вы вообще в курсе, откуда появился этот самый ИР22 в схеме спектрума на россыпи (а конкретно - в Ленинграде)? Фундаментальная причина.

Так просвяти, только без сарказма.

ivagor
08.10.2020, 09:02
Надо больше смайликов, а то недостаточно эмоционально. В zx8080 без ИР22 не получится прочитать данные из озу если DBIN начинается в конце временного слота CPU и заканчивается во временном слоте VPU. А тонкое место - чтение когда DBIN начинается в конце временного слота VPU и заканчивается во временном слоте CPU, вот тут все очень напряженно по времени.

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


без ИР22 не получится прочитать данные из озу если DBIN начинается в конце временного слота CPU и заканчивается во временном слоте VPU
Уточню для полной однозначности - не получится прочитать из озу в проц

HardWareMan
08.10.2020, 11:53
Так просвяти, только без сарказма.
Уже тыщу раз сказано: M1 у него на 0->1, а M2/M3/Mn на 1->0. Проц синхронизирован к RAS что автоматом даёт правильное окно доступа к M2+, а во время M1 данные щёлкаем в регистр, всё равно M1 это всегда только чтение. i8080 же (он же ВМ80) в любом цикле работает по 0->1 в F2, что делает синхронизацию к ОЗУ идеальной а наличие данного регистра бессмысленным.


Надо больше смайликов, а то недостаточно эмоционально. В zx8080 без ИР22 не получится прочитать данные из озу если DBIN начинается в конце временного слота CPU и заканчивается во временном слоте VPU. А тонкое место - чтение когда DBIN начинается в конце временного слота VPU и заканчивается во временном слоте CPU, вот тут все очень напряженно по времени.

Уточню для полной однозначности - не получится прочитать из озу в проц
https://jpegshare.net/images/57/dc/57dcb92d1d4de761469dcd69a2ff9fc2.jpg
Только ответь мне, насколько напряжнее по сравнению с использованием Z80 (оригинальная схема) или, например, того же Ориона с Z80 Card? Я молчу про свой MX2 потому что там SRAM, но она легко может быть заменена на DRAM необходимой производительности (SIMM72 вполне подходят).

ivagor
08.10.2020, 12:07
i8080 же (он же ВМ80) в любом цикле работает по 0->1 в F2, что делает синхронизацию к ОЗУ идеальной а наличие данного регистра бессмысленным.
Как насчет

В zx8080 без ИР22 не получится прочитать данные из озу если DBIN начинается в конце временного слота CPU и заканчивается во временном слоте VPU
?
Вопрос не о том, как можно сделать в принципе, а конкретно по схеме Micka

HardWareMan
08.10.2020, 18:30
Вопрос не о том, как можно сделать в принципе, а конкретно по схеме Micka
Я смотрю схему и вижу, что F2 формируется из RAS, что даёт полную автоматическую синхронизацию процессора к DRAM (как и в оригинале на Z80 для машинных циклов 2+), при этом торможение через READY (это инверси от nWAIT у Z80 по названию, но не по логическому уровню сигнала) не задействовано. А значит процессор маслает как есть и его запись заведомо попадает в ОЗУ без конфликта с синхрогенератором. При этом сигнал WR позаботились маскировать до положенный DRAM величин (режим Late WE, кстати), а вот чтение внезапно нет (но тут и не надо, ибо если процессор читает из ОЗУ то шина данных занята именно процессором и только самим ОЗУ). И почему это не должно сработать, если чтение нигде не маскируется, а вот запись маскируется именно по спаду?

Повторюсь ещё раз: в оригинальном Ленинграде входы DI у DRAM висели на шине данных процессора потому, что запись была засинхронизирована строго с ОЗУ в определённой фазе тактового сигнала Z80. Бонусом получали такую же синхронизацию на чтение в машинных циклах М2+ (это чтение дополнительных байт опкода и/или данных, которые идут в той же фазе что и запись). А вот чтение опкода в цикле M1 данные требовались уже в следующей фазе тактового сигнала и поэтому данные надо задержать на полтакта, чем ИР22 и занималась. И работать там могла только ИР22 как прозрачная защёлка, чтобы не нарушить чтение в М2+. Этот регистр работает как EDO у DRAM на SIMM72. И торможение в Ленинграде именно из-за этого висит на M1 процессора. Блин, ну вы первоисточник то разложите уже в том же Протеусе или на миллиметровке. i8080 вам подарок преподносит своей правильной синхронизацией.

А что касается этого вашего:

В zx8080 без ИР22 не получится прочитать данные из озу если DBIN начинается в конце временного слота CPU и заканчивается во временном слоте VPU
Что я могу сказать? Могу только показать правильные эпюры работы i8080:
https://jpegshare.net/images/b4/3a/b43aaa615448875d44c18fd8685ef1f9.png


PS Я понял, схема ТСа не взлетит без синхронизации. В общем, упоминая тот факт, что оригинальная схема Ленинграда делает 4 обращения на каждые 8 точек, из них сами обращения идут вот так: GCAC (G - графика, A - атрибуты, C - CPU). Очевидно, что память доступна процессору только в каждый чётный (или нечётный - смотря как посмотреть) цикл обращения, а команды не всегда чётны в своих циклах. И казалось бы, должна сбиваться синхронизация, верно? Нет, не верно. Требуемая синхронизация сделана за счёт торможения на M1. Из-за особенности Z80, для получения данных в М1 его надо остановить. А вот М2 и далее циклы строго определённой длины и поэтому запись и чтение в M2+ получается автоматически. Синхронизация повторится на следующей команде. А вот i8080 не имеет такой особенности в цикле M1. Поэтому в компьютерах, основанных на ВМ80 главный приоритет отдан самому процессору, который изъявляет своё желание в обращении через установку SYNC, задержав на такт который мы и получаем арбитраж. А чтобы синхрогенератор не показывал снег перед регистрами графики и атрибутов ставятся защёлки, которые сохранят предыдущие данные, если процессор вклинился.
// Здесь был видос с матом, был не прав и слишком груб, удалил. Оставлю только текстовый эквивалент:
Всё фигня, давай по новой.

ivagor
08.10.2020, 19:13
Взял временные диаграммы Micka и некрасиво обвел красным те DBINы, которые не прочитают нормально без ИР22

HardWareMan
09.10.2020, 06:53
ivagor, ты обвёл ровно те обращения, которые конфликтуют с синхрогенератором. И длина DBIN, как ты там писал выше, никакой роли тут не играет. А всё потому, что в этой схеме нет ни арбитража, ни синхронизации.

ivagor
09.10.2020, 09:14
Не помню, где писал про длину DBIN, я писал про то где начинается и (что важнее) заканчивается, и писал в основном для идентификации.
Мне видятся две разные возможные проблемы в этих двух группах чтений:
1. Для "обведенных" критично чтобы проц успел выставить адрес и он дошел до озу к началу /ras. Тогда прочитает в ИР22, а уж прочитать из ИР22 проблем нет.
2. Оставшиеся чтения очень критичны к скорости озу и всем задержкам на пути. Но может повезет, Mick соберет с использованием быстрой памяти и 1531 в качестве D33 (и D30, если поставит) и чтение процом будет работать в полном объеме.

HardWareMan, если ты агитируешь за то, чтобы быть здоровым и богатым, то вряд ли кто-то против. Думаю никто из интересующихся темой не сомневается, что можно спроектировать вариант с прозрачным доступом к памяти при проце 3.5 МГц и при использовании сравнительно умеренных по сегодняшним меркам микросхем озу. Осталось начать и закончить. Сам я сначала думал, что Mick хочет минимальной ценой заменить в ленинграде z80 на 8080, в этом случае проще всего было бы ввести торможение проца. Ну или снизить частоту проца вдвое, как предлагал NEO SPECTRUMAN.
Но у Mickа свое видение и свои приоритеты (из которых я четко понимаю только один - он хочет максимально быстрый 8080. Еще возможно он хочет сохранить ленинградскую выборку видео). На данный момент только он серьезно занимается данной темой, и т.к. мне интересна замена z80->8080 я стараюсь не сильно мешать и иногда даже немного помогать. Если бы железячники активнее учавствовали, то я бы в hard не стал лезть. Не сомневаюсь, что Mick обнаружил бы ошибки, которые я заметил, просто это потребовало бы времени и сил. Если кто-то задумает альтернативный проект, спроектирует схему, разведет плату, закажет плату и детали, соберет и похвастается рабочим компом - это тоже будет очень интересно. Ну или можно попробовать повлиять на Mickа, желательно поконструктивнее.

Mick
09.10.2020, 09:24
Но у Mickа свое видение и свои приоритеты (из которых я четко понимаю только один - он хочет максимально быстрый 8080. Еще возможно он хочет сохранить ленинградскую выборку видео). На данный момент только он серьезно занимается данной темой, и т.к. мне интересна замена z80->8080 я стараюсь не сильно мешать и иногда даже немного помогать. Если бы железячники активнее учавствовали, то я бы в hard не стал лезть. Не сомневаюсь, что Mick обнаружил бы ошибки, которые я заметил, просто это потребовало бы времени и сил. Если кто-то задумает альтернативный проект, спроектирует схему, разведет плату, закажет плату и детали, соберет и похвастается рабочим компом - это тоже будет очень интересно. Ну или можно попробовать повлиять на Mickа, желательно поконструктивнее.

Ты все верно отметил - я четко понимаю только один - он хочет максимально быстрый 8080. Еще возможно он хочет сохранить ленинградскую выборку видео
Иными словами - название темы уже как бы говорит, что просто интересно вкарячить ВМ80 в схемотехнику Ленинграда, с минимальными переделками. На плате я специально дырок понаделал, если придется что то проводами паять.
Другие варианты мне не особо пока интересны. А получится или нет другой вопрос :)

HardWareMan
09.10.2020, 09:32
Ты всегда можешь поступить как с Z80: тормозить по М1 (ты и так вытягиваешь слово состояния из проца), а М2+ должны получиться автоматом.

Mick
09.10.2020, 09:36
Ты всегда можешь поступить как с Z80: тормозить по М1 (ты и так вытягиваешь слово состояния из проца)

Безусловно этот вариант не отбрасывается, но как я уже писал, что хочется попробовать пока по максимуму заюзать ВМ80. Поэтому для этого возможно надо будет применить 100нс импортную память и буфер 1533 или 1531. Не взлетит, то есть поле с дырками.

ivagor
09.10.2020, 09:43
Раз возможность торможения полностью не отбрасывается, напомню и про свой вариант (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1081812&viewfull=1#post1081812)

Mick
09.10.2020, 11:08
торможения полностью не отбрасывается
Торможение это как самый последний вариант что вроде как работает. Но при этом задача будет считаться не выполненной :(

ivagor
09.10.2020, 11:55
Mick, мне кажется тебе больше не нравится само слово "торможение", чем его реальное влияние. Точные цифры по своему варианту не могу привести, только оценку. При разрешении доступа проца 1 раз в 4 такта (amstrad cpc, балтик, вектор, клоны на БМК, эрик) достаточно общепринятая оценка снижения скорости 17.5-20%. Т.е. при 3.5 МГц скорость была бы примерно как при 2.8-2.9 МГц. "Мой" тормоз - доступ проца 1 раз в 2 такта заметно более щадящий и вряд ли там потери скорости больше 10%. Кстати, максимальное быстродействие (при выполнении последовательности 4 тактных команд) два упомянутых варианта торможения не снижают и при 3.5 МГц будет 875 тыс. команд/секунду.
Можно организовать и более "интеллектуальное" торможение. В идеале достаточно тормозить только чтение из озу, т.к. чтение из пзу и запись в озу (да и обращение к портам) можно сделать прозрачными.
Минус торможения - затруднение отладки критичных фрагментов кода, работающих в реальном времени (т.к. соответствующего эмулятора с 8080 нет, а вот для оригинального ленина есть, например unreal, где скорпионовский тормоз соответствует ленинградскому). На практике опять же это не проблема. Фактически единственная критичная real-time задача для zx8080 - общение с лентой. Если хотя бы убрать торможение при чтении из пзу - это полностью решит проблему, т.к. очень редкие обращения к озу при этом не критичны.
Но даже если оставить простейший тормоз, то все равно скорее всего будет успешно грузить, т.к. спековский формат очень терпим к отклонениям скорости проца. На эту тему есть успешные эксперименты на реале и в эмуляторе. В эмуляторе грузит при понижении частоты примерно до 2.9 МГц. Ну и в крайнем случае константы можно подкорректировать, в качестве успешного примера могу привести векторовские утилиты для обмена со спеком, наверняка есть и для других компов на 8080.

troosh
09.10.2020, 11:59
просто интересно вкарячить ВМ80 в схемотехнику Ленинграда, с минимальными переделками.

Как на счет NEC V20 с его режимом эмуляции 8080 (на али D70108 по 100р/шт), планы есть?

Mick
09.10.2020, 12:50
Как на счет NEC V20 с его режимом эмуляции 8080 (на али D70108 по 100р/шт), планы есть?

Пока никаких планов. Мне бы для начала с ВМ80 разобраться бы.

NEO SPECTRUMAN
09.10.2020, 12:54
Как на счет NEC V20
а как с его раздобываемостью?
по моему это не самый распространенный и доставаемый зверь


на али D70108 по 100р/шт
перемаркировка?

Mick
09.10.2020, 12:56
Mick, мне кажется тебе больше не нравится само слово "торможение", чем его реальное влияние.

К торможению может еще и вернемся, но пока ориентируемся без оного. ;)