Просмотр полной версии : "ZX-8080" - Даунгрейд компьютера "Ленинград"
Сразу поставим точки над возможными вопросами, а что тема тут делает.
Речь пойдет о переделке теплого и лампового Спектрум -совместимого компьютера "Ленинград" под процессор КР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)
Скорее всего придётся напряжение на процессоре повышать до 5,5...6 вольт. Переходную панельку надо делать, т.к. цоколёвка вроде не совпадает...
Но главный вопрос кто прошивку для него писать будет. В прошивке BASIC48 активно используются те команды и регистры, которых нет в ВМ80... Может быть отталкиваться от SE BASIC, на него хоть исходники есть...
Про питание +12 и -5 не нужно забывать. При разгоне, думаю без -5 точно работать не будет.
Mick, сама по себе задача портировать бейсик 48 под вм80 эпохальна и неподьемна наверное
ээ, монитор от специалиста ближе всего к архитектуре лениграда первого
nihirash
16.08.2020, 14:04
Может хотя бы 8085, чтобы еще 2 питания не тащить.
Про питание +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:
пушо в компах проц вполне меняется а название обычно остается
Там как правило совместимость снизу вверх сохраняется. В нашем случае совместимость сверху вниз не получится. Только на уровне бейсик простейших программ.
И то если адаптировать Basic 48. Если применить другой бейсик, то совместимость вообще всякая теряется.
Так что пока оставим вопрос чем это поделие считать до конечного результата.
NEO SPECTRUMAN
16.08.2020, 18:06
Там как правило совместимость снизу вверх сохраняется. В нашем случае совместимость сверху вниз не получится.
ну мы же не апгрейдим
а на оборот
совместимость снизу вверх будет
если считать spectrum с z80 проапгрейтеным спектрумом с 8080
кстате предлагаю название для девайса zx8080
вроде и не спектрум и вроде zx
- - - Добавлено - - -
без сохранения точек входа прочесал по новой $039D байт
то есть быстрей на пару порядков
в отечественных не бывает прерыания от КСИ
Вот тут ты не прав. насколько помню ПК8000 как раз есть такое прерывание.
- - - Добавлено - - -
и в zx успешно используется старший адрес порта FE
который теперь не получится сделать
Да особо не проблема добавить регистр на адресные линии клавы.
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 байт таблица...
то есть получится опрашивать через?
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)
а не получится защелкивать последний\предпоследний считанный байт который не при m1?
По моему это уже изврат, достаточно одного регистра на адресные линии клавы. В ПЗУ обработчик клавы один единственный, его если что можно просто переписать исходя из реалий.
NEO SPECTRUMAN
16.08.2020, 21:36
По моему это уже изврат
ну сам по себе zx8080 уже изврат :)
и нужно сохранить максимальную железную совместимость
на случай ассемблерных вставок в бейсике
- - - Добавлено - - -
конец немного предсказуем )))
так что придется насиловать стек call-ами :)
- - - Добавлено - - -
насколько помню ПК8000 как раз есть такое прерывание.
ну я помню был и еще один комп
все остальные 50 видов машин без :v2_dizzy_facepalm:
на случай ассемблерных вставок в бейсике
Ну эти вставки один фиг уже будут под ВМ80, так как оригинальные Z80 вставки уже не переварятся.
NEO SPECTRUMAN
16.08.2020, 21:44
Ну эти вставки один фиг уже будут под ВМ80, так как оригинальные Z80 вставки уже не переварятся.
ну во первых под это чудо никто не будет писать
во вторых будем надеяться что все используют ассемблерные вставки не только для ldir-а :)
- - - Добавлено - - -
посмотрел
к сожалению софтварно перехватить ldir не получится
на 8080 ED это недокументированный call
в итоге ldir отработает как call $xxB0
если бы был вместо ED недокументированный rst
можно было бы вообще эмулировать ldir и команды с ED префиксом :)
ну во первых под это чудо никто не будет писать
во вторых будем надеяться что все используют ассемблерные вставки не только для 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, кстате будет полезно в этом ZX-е иметь подключаемую RAM вместо 0000-3FFF с защитой от записи
в случае чего можно будет подгрузить другой rom
Ой давай без безумства. У меня задача простая, адаптировать только ВМ80. А там видно будет.
Кстати, народ киньтесь схемой функционального аналога контроллера ВК28(ВК38). Недавно ведь видел, теперь найти не могу.
NEO SPECTRUMAN
16.08.2020, 22:41
Ой давай без безумства.
я те подкидываю идеи в процессе
а ты там сам думай :)
+ у ленинграда там и так 64К на борту ;)
...в отечественных не бывает прерыания от КСИ :v2_lol: Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?
NEO SPECTRUMAN
16.08.2020, 23:34
Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?
а не как не делается
у РК-шек можно читать порт вг75
чтоб узнать есть ли уже начало нового фрейма или еще нет
ито это уже современный трюк
за современные расширенные версии векторов орионов специалистов я не в курсе
тк прикручивание AY-ков вынуждает делать какой то источник синхронизации
в оригинальных версиях никаких синхронизаций нет
ну и по этому мигающие спрайты на очетественных компах
это обычное дело...
да и о фреймовости на многих железках можно не думать
тк экраны у наших компов не пропорционально большие к мощности проца...
- - - Добавлено - - -
Извиняюсь за оффтоп, а как же в наших делается синхронизация вывода на экран?
а так на отечественных компьютерах все запущенно
эмуляция никакая
никакие времянки неизвестны
итд итп...
есть конечно некоторые машины которые могут
но произведенное их количество мизерное
у Быкашек есть таймер
и как бы не с прерываниями
но можно ли его синхронизировать с экраном яхз
судя по всегда мигающим спрайтам нет :v2_lol:
сорри. а почему "сразу" не делать турбированным орион? зачем мучаться с "не родным компьютером" ?
по теме: разгон возможен в теории посредством
- напряжение
- охлаждение
- уменьшением ёмкостной нагрузки на выводы процессора (те качественная буферизация).
- выпонение времянок по предустановки и снятию сигналов.
других способов "науке" не известно.
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 параметры командной строки зарасписаны
сорри. а почему "сразу" не делать турбированным орион? зачем мучаться с "не родным компьютером" ?
по теме: разгон возможен в теории посредством
С Орионом не все так просто. Там упирается все в видеоконтроллер. Оптимальным, как озвучили было бы частота проца как минимум 4МГц, чтобы из пиксельклока 8МГц нормальные 384x256 точек помещались на современные телеки.
При частоте 3,5МГц пиксельклок получается 7МГц, но уже 384x256 не вмещаются. А при стандартном 10МГц пиксельклоке - 5МГц в теории потянуть только может импортный 4МГц AM9080A-4, но он стоит просто не гуманно.
Поэтому и опыт лучше проводить с простым компом, у него всего 256x192 экран и 3,5МГц частота клока.
...разгон возможен в теории посредством
- напряжение
- охлаждение
- уменьшением ёмкостной нагрузки на выводы процессора (те качественная буферизация).
- выпонение времянок по предустановки и снятию сигналов.
других способов "науке" не известно. вроде ещё подтягивание клока...
/*
Набор макросов для перевода z80 (ограниченное подмножество команд) -> i8080
Если у Вас есть исходник на ассемблере z80 и Вы хотите скомпилировать его для i8080 (КР580ВМ80), то предлагаемый проект именно для Вас - z80trans.zip. Проект рассчитан как обычно на TASM. Недостаток - поддерживаются далеко не все команды z80. Если Вам нужна поддержка всех команд, то стоит попробовать рекомпилятор Александра Тимошенко, но т.к. в качестве исходного материала он использует машинный код, то нужно будет сначала оттранслировать Ваш исходник для z80, а потом дизассемлировать в рекомпиляторе
*/
http://sensi.org/~retrocomp/vector06c/z80trans.zip
Ну, кстати, да. В Орионе то буферизация есть. А это для 580 тоже важно.
И можно было бы на Орионе, забить на видео, а работать с компом через com-порт. Чтоб а принципе понять, гонится проц на нем, или нет.
рекомпилятор Александра Тимошенко
z80>i8080
https://zx-pk.ru/threads/15302-korvet-igry.html?p=916878&viewfull=1#post916878
И можно было бы на Орионе, забить на видео, а работать с компом через com-порт. Чтоб а принципе понять, гонится проц на нем, или нет.
Насколько я понял вопрос турбирования, то в Орионе нужно сразу же заменить К155ЛА7 на что то типа 170АП3 или другое. Надо умощить выходы клоков. Кроме того в Орионе разводка далеко не оптимальна, по идее надо укоротить линии клоков до минимума.
К тому же вроде barsik писал, что при той разводке ему не удалось его разогнать. Максимум получил около 2,75МГц.
с формированием клока да, задачка
для человека с осцилоскопом
там походу еще нужна ступенька , между полупериодами клока, чтобы избежать сквозных токов
и почемуто вход клок сильно нагружен
- - - Добавлено - - -
/*
На последнем надо остановиться поподробнее, так как это основная сложность при переходе 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
в отечественных не бывает прерыания от КСИ
На вскидку компы с ВМ80 и прерываниями, связанными с кадровой разверткой: Башкирия-2М, Вектор, Корвет, ПК8000, ПК8002. Скорее всего что-то пропустил, но 5 это уже намного больше, чем ничего.
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:
остальные малозначимы
корвет вообще не очень то домашний комп
что и объясняет его относительную напичканость
можно было бы взять удвоить клок радио 86 рк до 3,56
При всём уважении к этому компьютеру, но вот спасибо, не хочется
Да особо не проблема добавить регистр на адресные линии клавы.
Если не планируется дальнейшее расширение (вроде это же промежуточный пробный проект), то еще проще не добавлять регистр, а использовать тот 8 битный адрес порта, который выдает 8080, считая при обращении к любому порту, что младшая половина всегда FE (тем более адрес порта у 8080 дублируется в младшей и старшей половине, это добавит удобства реализации). Можно будет опрашивать клавиатуру, читать с магнитофона, записывать на магнитофон, биперить и задавать цвет бордюра.
что младшая половина всегда 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
При твоем подходе проц сможет прочитать только самый последний ряд.
Ты не понял
Я все прекрасно понял. Еще раз: если никакое расширение не предполагается, то можно сделать так, чтобы обращение к любому порту трактовалось как обращение к порту XXFE. А бывшую старшую половину берем с 8080.
NEO SPECTRUMAN
17.08.2020, 17:36
Я все прекрасно понял. Еще раз: если никакое расширение не предполагается, то можно сделать так, чтобы обращение к любому порту трактовалось как обращение к порту XXFE. А бывшую старшую половину берем с 8080.
FE железно
5 бит на запись
6 бит на чтение
+8 бит на установку полуряда
а еще было бы не плохо 2 бита под ram0 + write protect
как перекрыть все одним портом не есно даже без хотелок...
как перекрыть все одним портом не есно даже без хотелок
Что именно не ясно?
а еще было бы не плохо 2 бита под ram0 + write protect
2 бита как раз свободны. Можно и больше освободить (избавиться от отдельного бита выхода на магнитофон или наоборот от бипера, урезать цвет бордюра), совместимости со спеком все равно нет.
NEO SPECTRUMAN
17.08.2020, 18:31
совместимости со спеком все равно нет.
на уровне бейсика должна будет по идеи быть
по крайней мере мы работаем над этим :)
вон у РК-шек на уровне монитора тоже совместимость
и все зовется рк-шками
хотя ничего у них друг с другом вообще не совместимо
общих портов нет...
в придачу я так понел
Mick хочет навесить все поверх готового ленинграда
а не изобретать велосипед
- - - Добавлено - - -
тем временем мну прочесал $1391 байт
на уровне бейсика
тем временем мну прочесал $1391 байт
а всего 8192 ?
ну йо
ivagor, вдруг получится ? классный бейсик для вектора , кмк)
Посмотрел схему (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:
Мое предложение фактически сводится к тому, чтобы вместо 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 и он сидит на тех же мультиплексорах.
Кстати, ты не учел, что у Ленинграда есть порт джойстика 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. Можно избавиться от инверсии, если поменять местами входы мультиплексоров.
Тупой вариант: на ЛА2 заводим 8 младших
Можно проще - один элемент ЛЛ1, заводим туда A7 и A6, выход на мультиплексоры вместо A0.
Вылавливаем когда оба бита будут равны нулю, тогда выбираем джойстик.
Про один A5 я ступил (убрал), варианты с двумя битами скорее всего будут простейшими из "условно совместимых".
инвертировать A5 и подать на мультиплексоры
Нет, нельзя так делать - будет конфликт
#DFDF - полуряд P...Y
Но все же вариант с FF будет самым совместимым, т.к. при опросе клавиатуры могут обнулить сразу несколько бит. Другое дело что это возможно не используется в пзу спека, и даже если используется, то можно такие моменты переделать, все равно бинарной совместимости нет.
- - - Добавлено - - -
В 23:47 я исправил и ты написал практически одновременно :)
- - - Добавлено - - -
это возможно не используется в пзу спека
Похоже действительно в пзу не используется, прокручивают 1 бит.
NEO SPECTRUMAN
17.08.2020, 22:20
какой нахер джойстик?
ни одна софтварь использующая кемстон работать не будет
турнуть нахрен оно
для бейсика кнопок и синклера хватит всем
Раз совместимость по ПЗУ необязательна, то почему нельзя сделать так: ввести, например, порт 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 секунд пока дождешься
уже не помнишь что и для чего компилируешь...
какой нахер джойстик?
Ты не уловил мою концепцию. Берем Ленинград и портируем туда ВМ80. Если у Ленинграда есть мультиплексоры на клаву и джойстик, то оно так и остается. Допускается изменение номеров портов для упрощения схемотехники и программирования. Если результат будет получен, тогда можно будет создать какой нибудь zx8080 с всякими пакостями. Пока минимум переделок.
Там и так нужно будет вставить формирователь F1 частоты проца, регистр защелку слова состояния, чтобы выловить M1, IORQ и MREQ. Так что там и так обвеса для ВМ80 хватит, уж порты курочить совсем не хочется.
NEO SPECTRUMAN
18.08.2020, 16:35
регистр защелку слова состояния
там же вроде есть спец микросхема декодер слова состояния?
может сразу оно?
там же вроде есть спец микросхема декодер слова состояния?
может сразу оно?
На выбор 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 (вот он посложнее будет)
Нашел тему где рассматривают как раз замену ВК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
- - - Добавлено - - -
так же выдиралка процедур в унриале по ходу нормально не логает ПЗУ-шку...
так что жизненно важные компоненты найти не удалось...
а как ты пзу для 8080 в эмуляторе спектрум запускаешь?
NEO SPECTRUMAN
18.08.2020, 17:57
8080
он жо на 99,9% совместимый снизу вверх
в придачу еще несколько команд от z80 осталась
пока не решен вопрос с клавиатурой
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К
...ну я смотрю бейсику пофиг сколько рамы
кстате там же еще по моему? внешняя разрешалка запрещалка int-а нужна
А как же команды DI и EI, они разве не рулят прерываниями?
NEO SPECTRUMAN
18.08.2020, 21:56
А как же команды DI и EI, они разве не рулят прерываниями?
как я помню они только выдают 0\1 на выход ноги di ei
на чем и запилен бипер в РК
но я могу что то путать нужно уточнять
наверно рулят
Кстати, народ киньтесь схемой функционального аналога контроллера ВК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 оно стартует сразу
как я помню они только выдают 0\1 на выход ноги di ei
на чем и запилен бипер в РК
Бипер запилен на выход проца INTE, который как раз сигнализирует что прерывания запрещены или разрешены. В Апогее кстати на выход INTE прицеплен адрес ПЗУ знакогенератора.
В нашем случае, этот выход не нужен.
NEO SPECTRUMAN, а 2 плюс 2 уже умеет?
Получил сегодня ништяки
https://i.ibb.co/3YZxW6L/OLYMPUS-DIGITAL-CAMERA.jpg (https://ibb.co/3YZxW6L)
Это так сказать на подстраховать, если наш ВМ80 будет слишком несговорчивым.
Правда, что китайцы прислали тоже еще вопрос. Судя по ногам, то как минимум отресторены
Процы -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 уже умеет?
нет
большая часть калькулятора еще не запилена
я только вчера раздуплил как оно работает
нужно было не те процедуры тянуть в первую очередь
быстро перекинуть на 1,75МГц
Ну это совсем тухляк будет
NEO SPECTRUMAN
19.08.2020, 16:10
Ну это совсем тухляк будет
ну за то в случае глюков
можно будет проверить глючит аппаратная часть или програмная
правда из за мерзкого двойного клока
наверно будет сделать быструю переделку 1,75 <> 3,5 несколько сложней
В общем, я схему Весты ИК-30 завел в P-CAD, осталось причесать. Но уже в принципе можно теоретически вкарячивать туда ВМ80
Вариант первый, пока обойтись без буферизации шины данных и адреса. Так сказать минимальные насколько это возможно переделки.
Далее уходит сигнал Z80 RFSH/, но для ВМ80 нужно инвертировать как минимум сигналы INT, RESET и RDY (WAIT). Конечно от WAIT бы отказаться, как показала практика без него наши спектрумы прекрасно работают.
Конечно от WAIT бы отказаться, как показала практика без него наши спектрумы прекрасно работают.
Без wait и M1 (в ленинграде) не нужен
Без wait и M1 (в ленинграде) не нужен
Точно, тогда если его убрать, то нужны только MREQ и IORQ
Кстати и смысла при 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
и оно работает о_О
ЧЯДБЛДЖДНТ?
хотя выигрывает у регистра по простоте программирования.
Уточню сейчас, чтобы потом меня не ловили на слове. Вариант без регистра проще аппаратно. Что касается программирования, то опрос клавиатуры с вращением бита, как в бейсике, проще сделать с регистром, а опрос отдельных рядов проще без регистра. Сразу все хорошо и просто не получится, тут надо опрдеделить, что в приоритете и сделать выбор.
что в приоритете и сделать выбор.
Пока в приоритете - как можно меньше доп микросхем.
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
и не очищать эту область при сбросе
и подгружать с матафона в самом начале
вектор же тоже как кирпичь при старте :)
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К в самой ПЗУ-шке будет тяжело...
+нашкребсти 2К в самой ПЗУ-шке будет тяжело...
То есть ты уже заменил все инструкции Z80 на ВМ80. Данные не убирал (фонт), иными словами из 16384 байт Z80, получилось 18597 байт ВМ80?
Тогда великая оптимизация должна помочь:
- оптимизировать код, самый трудоемкий наверное процесс ибо нужно анализировать код.
- убрать какие то процедуры бейсика, то есть чем то пожертвовать, но не шрифтом.
Не знаю, кто (NEO SPECTRUMAN или Mick) будет заниматься доводкой пзу для реала с 8080, но очень рекомендую сделать для отладки соответствующий конфиг в emu, на первый взгляд это возможно. Принципиальных изменения два
1. Процессор
2. Адресация портов
Итак попробовал я набросать схемку - вариант минимум без буферизации. Пока сигнал 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
В D38 джойстик выбирается по A0, в D39 по A6 и A7 - ошибка?
В D38 джойстик выбирается по A0, в D39 по A6 и A7 - ошибка?
Да, ошибка, должны были оба мультиплексора выбираться по A6 и A7.
так же забыл сигнал RD/ из DBIN получить.
Схему обновил.
NEO SPECTRUMAN
21.08.2020, 16:06
иными словами из 16384 байт Z80, получилось 18597 байт ВМ80?
+убраны все оригинальные пустоты и пару левых процедур
при этом всё текстовое вернул на место
можно выиграть много места сократив токены и сообщения
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
которые работают по одному принципу
Насчет WRM/ понял когда посмотрел дальше. На мой взгляд обозначение сбивает, это скорее не WRM/, а "признак незаписи в порт", т.е. должен выходить из прямого напарника OUTP/. У D42.2 можно поменять (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1077758&viewfull=1#post1077758) не выходы, а входы D4 и D6, тогда выходы будут правильно.
Насчет WRM/ понял когда посмотрел дальше. На мой взгляд обозначение сбивает, это скорее не WRM/, а "признак незаписи в порт", т.е. должен выходить из прямого напарника OUTP/. У D42.2 можно поменять не выходы, а входы D4 и D6, тогда выходы будут правильно.
Да, ты прав надо поменять D4 и D6 местами.
Обновил схему и вставил ссылку в первый пост, так проще будет ее обсуждать.
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. Адресация портов
и как в оно притулить выбор полурядов клавиатуры на отдельный порт?
методом научного тыка попытался сделать
нифига не получилось
с таким же успехом оно зависает при попытке грузить снапшоты...
в принципе оно и не должно их грузить тк другой проц...
и как в оно притулить выбор полурядов клавиатуры на отдельный порт?
В текущей схеме Micka выбор рядов клавиатуры не на отдельном порту.
Сам я не справился с emu, опция kbd.mask работает не так, как я ожидал. Увы, вопрос с эмуляцией zx8080 остается открытым.
В текущей схеме Micka выбор рядов клавиатуры не на отдельном порту.
Если будут сложности с программной реализацией, то можно вернуться к дополнительному регистру.
В программе для zx8080 сложностей нет, проблема с эмуляцией. А вариант с заданием "бывшей старшей половины" через дополнительный порт (я пробовал FF) в emu нормально работает.
В программе для zx8080 сложностей нет,
Понятно, кстати насколько сильно возрастет обработчик клавы в варианте как есть по сравнению с оригиналом. Ну и сколько он будет занимать в варианте с доп регистром.
Вариант чтения порта клавиатуры, соответствующий текущей схеме, проще всего реализуется фрагментом с модифицируемой командой in (маска клавиатуры, она же старшая половина порта z80, в A)
sta SetIn+1
SetIn: in 0
Причем очевидно этот фрагмент должен располагаться в озу и его удобно оформить в виде процедуры.
Вариант с заданием маски через отдельный порт
out 0FFh
in 0FEh
Это короче, но если оформить в виде процедуры, то каждый вызов в обоих случаях будет по 3 байта.
Попробовал понять, как в ленинграде реализован арбитраж проц/видео. На данный момент создалось впечатление, что видео-байты читаются через 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)
есть только ввод\вывод в\из конкретный порт и что дело происходит в ПЗУ
и этот конкретный порт не перепишешь
ато чую железятники щас как всегда начудят
а как щас?
Сейчас без регистра кучка портов
Клавиатура
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:
В M1 mreq и rd короче двух тактов, поэтому тут добавлен тормоз для удлиннения.
На самом деле в наших клонах Спектрума вполне работает без WAIT/. У меня на Фениксе тоже память не WAITится.
Так что хотелось в идеале и на ВМ80 получить, раз ты говоришь длительность сигналов одинкова.
Тогда надо WR/ убрать из цикла записи.
- - - Добавлено - - -
для оно нужно будет ложить в раме
Короче ставить надо регистр на адресные линии клавы и не парить мозг.
И пользоваться такой процедурой
ld a,b
out ($FF),a - порт адресных линий
in a,($FE)
для оно нужно будет ложить в раме
Претензии с твоей стороны по этому поводу звучат странно, т.к. сейчас в твоей прошивке в озу временные регистры z80 (которые по размеру больше процедуры опроса, которую я приводил), не говоря уже о килобайтах кода, который не поместился в пзу.
В принципе можно сделать вариант и без модифицируемой команды, но он будет заметно более громоздким.
в придачу как через оно опрашивать ANY KEY кто нить подумал?
или больше чем 1 полоуряд одновременно
Очевидно через опрос нескольких портов.
- - - Добавлено - - -
На самом деле в наших клонах Спектрума вполне работает без WAIT/.
В разных клонах арбитраж может быть сделан по разному, в ленинграде, как я понимаю, отказ от wait потребует очень быстрой памяти.
- - - Добавлено - - -
Короче ставить надо регистр на адресные линии клавы
Состряпал "типатестик", если FF устраивает в качестве порта регистра маски клавиатуры, то могу выложить конфиг emu с прошивкой.
NEO SPECTRUMAN
22.08.2020, 16:49
Очевидно через опрос нескольких портов.
...
ато чую железятники щас как всегда начудят
- - - Добавлено - - -
Состряпал "типатестик", если FF устраивает в качестве порта регистра маски клавиатуры, то могу выложить конфиг emu с прошивкой.
давай я сразу проверю на своей прошивке
точнее попробую проверить
давай я сразу проверю на своей прошивке
Ты уже передал под опрос с 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
было бы интересно сохранить работоспособность прошивки на настоящем спектруме
Пользуйся условной компиляцией. Сделай два варианта один под ВМ80 и zx8080, а второй для обычного спектрума с Z80
NEO SPECTRUMAN
22.08.2020, 17:01
Претензии с твоей стороны по этому поводу звучат странно, т.к. сейчас в твоей прошивке в озу временные регистры z80 (которые по размеру больше процедуры опроса, которую я приводил), не говоря уже о килобайтах кода, который не поместился в пзу.
я за максимальную совместимость со спектрумом
а ты предлагаешь велосипеды
а так в раме придется держать такие процедуры
пушо бейсик ВНЕЗАПНО тоже умеет in out в произвольный порт...
а ты предлагаешь велосипеды
Я исхожу из того, что этот комп чисто эксперимент и дальше опытов вряд ли имеет будущее. Максимум маленькая серия для коллекционеров. :)
- - - Добавлено - - -
отказ от wait потребует очень быстрой памяти
Насколько помню 100 нс вполне работает без проблем.
На али есть микрухи D4164-15 (150 нс), я думаю они тоже должны без WAIT работать. Про наши РУ5 вот не скажу.
NEO SPECTRUMAN
22.08.2020, 19:23
Один из вариантов, которым я раньше добивал эмуляцию srl был как раз с использованимем inc\ dec и проблем не был
а какие еще известны не точности?
RR-подобные в z80 влияют на zero
bit не трогает carry (когда применяемый для bit and его успешно сбрасывает)
то в этом *****м бейсике сильно усердно любят перекидывать что либо через флаги на дальние расстояния
пользуясь тем фактом что некоторые команды эти флаги не трогают...
а какие еще известны не точности?
Все не помню, разве что srl и djnz. Для djnz есть встроенная опция переключающая быстрый и корректный вариант. Такая ситуация со многими командами, можно сделать или точно или медленно и длинно. Это касается даже простейших арифметических команд (add, sub) - вместо флага четности для соответствия z80 должен быть флаг переполнения, да и флаг вычитания в sub не устанавливается а в daa не учитывается. Идеальная эмуляция с приемлемой скоростью и размером невозможна, но на практике dao обеспечивает довольно хорошие результаты, если речь не идет о математике.
/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"
Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN.
На мой взгляд для чтения это невозможно. Вот для записи можно начать сразу после sync и закончить вместе с окончанием /wr.
Текущий вариант может и будет выполнять код из пзу, но с записью и чтением озу скорее всего будут проблемы.
- - - Добавлено - - -
Теоретически можно попробовать очень своеобразный вариант упреждающей установки управляющих сигналов. С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти. Если я правильно понимаю, то на шине адреса в это время уже правильная информация. К концу sync будет понятно, какой сейчас цикл, и если это не цикл чтения из памяти, то меняем управляющие сигналы в соответствии со словом состояния. Запись в память можно, как уже писал, начать и с окончанием sync. Чтение из памяти завершается по заднему фронту dbin, а запись в память - по заднему фронту wr (хотя тут при желании возможны варианты).
Детали стоит еще продумать, но все же некий свет в конце туннеля вроде виднеется.
С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти.
По сути то что я написал Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN в некотором роде равно твоему утверждению.
То есть у нас процессы начинаться должны с началом SYNC.
- - - Добавлено - - -
Запись в память можно, как уже писал, начать и с окончанием sync.
Ну да на основании битов статуса WO = 0 и OUT = 0. Заканчивать запись можно либо по окончанию WR/
По сути то что я написал Иными словами нам надо получить что подобное, начало которого начинается с SYNC, а заканчивается DBIN в некотором роде равно твоему утверждению.
Так я всего лишь привел один из конкретных вариантов, как можно попробовать стать здоровым и богатым, ну или хотя бы прочитать данные из озу ленинграда.
С началом каждого sync можно устанавливать /mreq и /rd и пробовать начинать читать из памяти. Если я правильно понимаю, то на шине адреса в это время уже правильная информация.
По даташиту допуск на запаздывание адреса относительно клока все же больше, чем на запаздывание sync, т.е. на момент переднего фронта sync нужного адреса на ША может еще и не будет, тут тонкий момент.
тут тонкий момент.
Можно при активном SYNC стартовать по началу следующего F1 или спаду F2, т.е. ставить триггер и сбрасывать его если пришли операции IN или OUT
и сбрасывать его если пришли операции IN или OUT
или запись
или запись
Ну да. У нас получается два вида MREQ/ - на запись и чтение.
Начало у них одинаковое, допустим по стробу F1 при активном SYNC
Окончание
чтение - комбинация OUT =1 или IN=1 или DBIN =0
запись - комбинация OUT =1 или IN=1 или WR/ = 1
То есть микросхема TМ2 в плюсе
чтение - комбинация OUT =1 или IN=1 или DBIN =0
При активном synce dbin=0, а читать там надо пытаться, поэтому вместо последнего условия лучше "по заднему фронту dbin".
Уточню, что там где "или запись" я имел ввиду сброс сигнала чтения из памяти, не mreq.
или WR/ = 1
Тут пожалуй тоже лучше "или по заднему фронту wr"
Т.е. mreq может длится от примерно 2 (в случае чтения) до примерно 3 (в случае записи) тактов. Причем в случае записи 1й такт будет попытка чтения.
Сигнал чтения из памяти можно начать одновременно с mreq. Сигнал записи в память скорее всего надо начинать где то в районе заднего фронта sync.
Но это не все, надо еще учесть циклы связанные с прерываниями.
не, шедевр жешь
https://jpegshare.net/images/6a/93/6a93adb52f407256396be2b8be2a5bf9.png
Mick, не стоит забывать и про более простой вариант - тормозить весь доступ к озу.
не стоит забывать и про более простой вариант - тормозить весь доступ к озу.
Это самый крайний случай, надо постараться обойтись без тормозов, ибо тогда не получим максимальной отдачи от ВМ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...
КТО?! сказал что это не circle 100,100,50 :v2_lol:
Прямо напрашивается на логотип :D :
https://c.radikal.ru/c17/2008/ad/60486b831b85.png
за одно включил запись в 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
кстате последний чем то похож
совпадение?
Вставил в схему регистр ИР23 (D47) и ЛЛ1 (D46). Схему в первом посте обновил.
NEO SPECTRUMAN
23.08.2020, 22:26
а как там поживает конфиг для emu?
или придется клянчить у b2m-а?
Т.е. mreq может длится от примерно 2 (в случае чтения) до примерно 3 (в случае записи) тактов.
Если считать от заднего фронта ф2 при активном sync, то от 1.5 до 2.5 тактов, т.е. проблему чтения озу в оригинальном ленинграде это не решает.
- - - Добавлено - - -
как там поживает конфиг для emu?
Все осталось на другом компе, если к следующей субботе необходимость еще будет, то выложу.
NEO SPECTRUMAN
24.08.2020, 05:48
Все осталось на другом компе, если к следующей субботе необходимость еще будет, то выложу.
ну или с головы как замапить на этот ~mask
или с какого конфига можно подобное подсмотреть
Без работающего примера я конфиг выкладывать не хочу. Подобных конфигов вроде нет.
Если считать от заднего фронта ф2 при активном sync, то от 1.5 до 2.5 тактов, т.е. проблему чтения озу в оригинальном ленинграде это не решает.
Я склоняюсь к тому, что для начала надо разрисовать эпюры, может там не все так кисло.
С другой стороны, для чтения должно хватать одного цикла обращения к ОЗУ, только вот вопрос - попадания таков процессора в этот цикл.
Ну и совсем трешак, применить подход Феникса, память ускорить и заставить работать на 7МГЦ, а частоту процессора оставить прежней. Но в этом случае стопудово нужна быстрая память, впрочем, как писал выше я уже заказал KM4164-15 (150нс) память. Если не успеет, то тогда 100нс надо брать.
Ну и совсем трешак, применить подход Феникса, память ускорить и заставить работать на 7МГЦ, а частоту процессора оставить прежней. Но в этом случае стопудово нужна быстрая память, впрочем, как писал выше я уже заказал KM4164-15 (150нс) память. Если не успеет, то тогда 100нс надо брать.
По даташитам полный цикл памяти -10 (у которой /RAS access 100 ns) 190-200 ns. Для полного цикла 140 ns при строгом выполнении требований даташитов нужна память -7 (/RAS access 70 ns). Но, конечно, на практике dram успешно насилуется, может и -10 прокатит при разгоне памяти вдвое.
может и -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
т.е. проблему чтения озу в оригинальном ленинграде это не решает.
Вот попытался нарисовать эпюры идеального случая.
И если поглядеть на операцию чтения, то в случае 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
Очень похоже на лежащего обожравшегося пакмана...
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 расчеты еще жестко косячат
Тоже отчитаюсь.
Весту починил и вроде работает.
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
Тут во время испытаний компьютера ZX-777 в режиме без WAIT с установленным буфером К555ИР22 120нс работает но периодически возникают сбои. Возможно что если будет стоять КР1533ИР22 то сбои исчезнут. А можно просто попробовать установить 100нс память.
Так и в нашем случае, при коротком сигнале чтения из памяти, возможно этот вариант тоже подойдет. Как раз если что пришли из Китая микрухи KM4164B-10 и TMS4164-10NL на пробу. Также не удалось по быстрому найти К170АП3, но нашел в том же Китае их аналог DS0026CN.
Кстати, кто напомнит, какая из 565РУ5 у нас самая шустрая?
РУ5Д - -25
РУ5Г - -20
РУ5В - -15
РУ5Б - -12
РУ5А - в справочниках нет, предположительно -10
РУ5Б - -12
То есть теоретически совместно с буферным регистром КР1533ИР22 они без WAIT должны взлететь.
А маркировка Б-шек тебе известна?
В общем надо с платы выпаивать память и буферный регистр и ставить панельки.
А маркировка Б-шек тебе известна?
Если речь про маркировку точками, то согласно этикетке КР565РУ5
В - одна точка
Г - две точки
Д - три точки
Вместо Д1 и Д2 - арабские цифры 1 и 2 с лицевой стороны корпуса
Е (никогда таких не видел) - четыре точки
Б - точками не выделяется
Видел и лично и на фото КР565РУ5Б т.е. с буквой Б. РУ5 без буквы (и с буквой А) видел только на фото. В итоге как я понимаю 565РУ5Б - это или без точек или с буквой Б
Спасибо за информацию. Если найду, попробую. А пока на всякий пожарный есть импортные с 100нс.
на всякий пожарный есть импортные с 100нс
Теоретически они лучше любых РУ5 (если только не перемаркированы). Если паять, то жалко, а если на панельки, то вроде и проблем нет.
NEO SPECTRUMAN
14.09.2020, 20:06
а в чем собственно проблема?
из за мерзкого пуляния 8080-м мерзких "кодовых" слов нужна более шустрая память чем для спека чтоб уложиться в более узкие промежутки времени?
из за мерзкого пуляния 8080-м мерзких "кодовых" слов нужна более шустрая память чем для спека чтоб уложиться в более узкие промежутки времени?
Сразу видно что чистый кодер. Нет для программ не нужна такая шустрая память, она нужна чтобы обойтись без сигнала WAIT при чтении данных из ОЗУ. Дело в том что в рамках схемотехники отечественных Спектрумов, сигнал чтения ВМ80 достаточно короткий, по сути сопоставим с сигналом чтения Z80 при чтении инструкции. Но если у Z80 такое случается только при активном M1, то у ВМ80 это навсегда везде и всем.
NEO SPECTRUMAN
15.09.2020, 06:12
Сразу видно что чистый кодер.
по моему даже чисто спектрум железятник
не обязан знать как там фурычит вм80 :)
хотя до по обоим у меня знания поверхностные...
Насчет памяти. Если я правильно понимаю, то видео по /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 это быстрее даташита, но ненамного).
Но вроде 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
100нс микрух для Z80 хватает для чтения без WAIT при использовании 555ИР22 (по крайней мере так у меня в компьютере ZX-777)
При проце 7 МГц?
Оказалось, что в Балтике доступ к озу весьма щадящий. Даже на 4 МГц там почти соблюдаются паспортные данные РУ5Г, а в книжке-описании допускают и РУ5Д. Не предлагаю искать Балтик и тем более думать над его переделкой на 8080, но радует факт, что кто-то заботился о нормальных таймингах озу. Хотя там свои проблемы, пзушки ре и рт работают в запредельном режиме да и тайминги, которые формирует ре3 для озу не окончательные, потом сигналы еще задерживают, причем задержки разные для разных сигналов, все же без асинхронщины не обошлось.
Вот бы еще тест, который бы максимально нагрузил проц и память, чтобы точно оценить работу памяти.
Попозже выложу прикидку теста. Там тест памяти очень простенький, для галочки, но есть.
При проце 7 МГц?
Нет, штатные 3,5МГц. Вот сам комп - https://zx-pk.ru/threads/30053-zx-777-remont-i-poleznaya-informatsiya.html?p=1074906&viewfull=1#post1074906
Там только стоят 120нс, но уже заменены на 100нс. И комп замечательно работает. Два дня гонял его по 8 часов - сбоев не было.
Попробовал ткнуть в пару ссылок на схемы этого компа на твоем сайте - ошибка (наверняка там есть и работающие ссылки, я не все попробовал). Да и вряд ли я смог бы только по схемам правильно нарисовать временные диаграммы работы проца и памяти. А без них непонятно, почему такая требовательность к озу в клоне спека 93 года, рассчитанного на РУ5. Если быстрые озушки понадобились после замены на 64x4 и добавления буфера тогда примерно понятно, но без диаграмм все равно только примерно.
Попробовал ткнуть в пару ссылок на схемы этого компа на твоем сайте - ошибка
Вот тыкнул на эту - 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нс проходила в течении всего дня.
Посему нужен такой тест, который вылавливает обращение к памяти по сути по циклам.
Изначально схема была на РУ5, но сигналом WAIT на чтение команд - цикл M1. После убирания WAIT цикл чтения команд стал коротким.
Понятно, т.е. примерно аналогично тому, как ты сделал в ленине8080 + там еще буфер, но зато там z80 и при удачном сочетании сигналов это может помогать. В целом хороший знак для zx8080.
- - - Добавлено - - -
То что я написал справедливо если в zx777 выборка видео как в ленинграде, а это я не знаю.
То что я написал справедливо если в zx777 выборка видео как в ленинграде, а это я не знаю.
Она в принципе по той же схеме, как и в большинстве клонов Спектрума.
Смысл такой что при сигнале H1 (1,75МГц) происходит обращение к памяти либо процессором, либо видеоконтроллером.
А именно H1 =0 - обращение процессора, H1 =1 - обращение видеоконтроллера. То есть процессор не может безраздельно пользоваться памятью даже при всем его желании, он всегда делит время с видеоконтроллером.
Запись в буфер чтения - WRBUF всегда происходит при активном H1 = 0 и CAS/ =0. Либо если быть точным, как в Спектруме при H1 =0 и Н0 = 1.
Если что H0 = 3,5МГц. По сути на условных диаграммах, которые я приводил, там это показано.
Т.е. zx777 по выборке видео аналогичен ленинграду. Тогда результаты избавления от wait воодушевляют.
Вот попробовал еще раз отрисовать идеализированную эпюру касательно ВМ80. Конечно могу и ошибаться.
Как видим чтение захватывает маленький кусочек WRBUF. А вот запись WE в память в текущем варианте, которая стробируется началом сигнала RAS/ не всегда попадает на сигнал WR. Его как минимум надо начинать с окончанием сигнала SYNC
https://i.ibb.co/rpq0NbY/ZX8080-1.jpg (https://ibb.co/rpq0NbY)
Проблема, как я понимаю, со второй (правой) записью. Если при слове состояния "запись в память" (запись и не в порт) активизировать сигнал записи по заднему фронту sync и снять его по заднему фронту /wr проца, то может и запишет в озу.
- - - Добавлено - - -
На диаграмме оба чтения одинаковые, не хватает варианта со смещением на такт относительно H1. В таком случае похоже и не прочитает.
В протеусе есть очень удобный инструмент построения графиков (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?
Тест, ориентирован не на проверку стабильности (до этого имхо еще далеко), а на проверку базовой функциональности. Для emu
1. При старте проверяет озу и если нормально, то переходит к п.2
2.1. При нормальной работе прерываний справа вверху будут идти часы
2.2. Цифры в середине слева соответствуют клавиатуре
2.3. При нажатии клавиш бипает и по бордюру немного идут цветные полосы
а в протеусе уже есть 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:
к сожалению мой львов сдох раньше чем купил логанализатор...
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 в одном корпусе...
На диаграмме оба чтения одинаковые, не хватает варианта со смещением на такт относительно H1. В таком случае похоже и не прочитает.
Я пока нарисовал так сказать в варианте, когда команда совпала с окном CPU
Чуть сдвинул - вроде чтение везде проходит. Но везде короткое.
https://i.ibb.co/cFrzb7R/ZX8080-2.jpg (https://ibb.co/cFrzb7R)
Если взять для примера третью снизу линейку сигналов 8080, то меня смущает в ней первое чтение. Сомнение такое - будет ли к переднему фронту (спаду) cas в слоте CPU правильный адрес на ША? Но гадать тут нет смысла, железка покажет, возможно действительно все на грани, но работоспособно.
будет ли к переднему фронту (спаду) cas в слоте CPU правильный адрес на ША?
Насколько я понял адрес уже устанавливается в T1 по сути вместе с SYNC.
По даташиту адрес выставляется на ША с задержкой относительно переднего фронта ф2 и эта задержка разная для разных градаций скорости проца. Для A-1 - 150 нс, т.е. на частоте 3.5 МГц это полтакта. Я в предыдущем посте ошибся - к cas то успеет, вопрос - успеет ли к ras.
- - - Добавлено - - -
Положительный момент тут такой, что упомянутая задержка 150 нс - это максимальное значение, т.е. больше не будет, а вполне может быть меньше и тогда все успеет.
Попробовал прикинуть некоторые сигналы из последних временных диаграмм со схемой из первого поста. От READY ты отказался, но есть вопросы и по другим сигналам
1. Для формирования F1TTL как на диаграммах надо заменить элемент И на ИЛИ-НЕ
2. Сигнал WE/ не будет формироваться в случаях, когда WR/ от проца начинается во временном слоте CPU
вопросы и по другим сигналам
Та схема немного устарела. Надо обновить на новую.
Mick, в данном проекте у тебя довольно значительные технические риски сразу по нескольким направлениям (замена проца, 8080 на сверхвысокой частоте, отказ от wait требующий быстрой памяти, +неизбежные ошибки проектирования и изготовления/модификации). Эти риски можно снизить, по крайней мере частично, если ты подумаешь о поэтапной модификации. В "ленине8080 первого этапа" можно не менять озу за счет торможения.
1. F2=CAS/; F1(как сейчас в схеме)=TI И RAS/.
2. READY в самом простом случае=H1/. Более нормальный вариант - убирать торможение при A14=A15=0.
Если еще и тактовую понизить, то вероятность всяких неприятностей связанных с памятью резко уменьшается.
1. F2=CAS/; F1(как сейчас в схеме)=TI И RAS/.
2. READY в самом простом случае=H1/. Более нормальный вариант - убирать торможение при A14=A15=0.
Если еще и тактовую понизить, то вероятность всяких неприятностей связанных с памятью резко уменьшается.
Сейчас у меня
F1 = TI # RAS/
F2 = RAS/
Вечером скину новую схему.
А так, вся затея именно в том чтобы разогнать проц, тактовую понижать это совсем если не пойдет.
Схему обновил, ссылка в первом посте.
Нарисовал картинку про F1 и F2. Где я там ошибаюсь?
- - - Добавлено - - -
На рисунке F1TTL и F2TTL
- - - Добавлено - - -
Если фишка в том, что D44 инвертирует, и в схеме F1TTL и F2TTL на самом деле F1TTL/ и F2TTL/, тогда надо поменять F2TTL/=RAS. Т.е. надо поменять или F1 или F2, они в текущем варианте схемы не могут быть правильными одновременно.
Нарисовал картинку про F1 и F2. Где я там ошибаюсь?
Ты прав, надо ИЛИ-НЕ ставить, я ошибся.
Mick, скорее ты и я были правы (и не правы) пополам. Учитывая, что D44 (только сегодня вспомнил, что это 170АП3. Хорошо бы к схеме еще список микросхем) инвертирует, я бы так написал
F1TTL/=TI OR RAS/
F2TTL/=RAS
F1=NOT(TI OR RAS/)
F2=RAS/
Учитывая, что D44 (только сегодня вспомнил, что это 170АП3. Хорошо бы к схеме еще список микросхем) инвертирует,
Ну микросхемы там тебе практически все известны, кроме D44, но ты уже сам догадался что это 170АП3. Еще возможно непонятно, хотя вряд ли, так это D42 - 555ТМ7.
Поправил (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1081914&viewfull=1#post1081914) F1TTL и F2TTL на инвернсные, чтобы не путаться, желательно на схеме тоже изменить.
желательно на схеме тоже изменить.
Вечером обновлю схему.
Насчет прерываний. 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К
Просто для коллекции еще один вариант, как можно было сделать обращение к портам. Их можно было отобразить на память, например в районе 3E00-3FFF. 3Fxx - джойстик; 3Exx - клавиатура, младший байт адреса - выбор линейки.
Пока я думаю не стоит, тем более выборка порта в Ленинграде самая примитивная. Скажем это меньшее на чем стоит заострять внимание. У нас первоочередная задача - запустить ВМ80 на 3,5МГц
Схему обновил.
Посмотрел схему пентагона и похоже с ним было бы проще получить (вернее сохранить) прозрачный доступ проца к памяти с 8080 (думаю не потребовалось бы менять микросхемы озу, если они работали нормально в оригинале с z80). Возможно там возникли бы другие проблемы, но это и с ленинградом еще не вполне ясно.
Нет все проще, бралось то что проще всего раскурочить. Пентагон сам по себе еще тот фрукт, там запросто можно уйти в такие дебри.
И что может быть проще компа с 4 десятков микросхем - ну явно не пятногон. :)
В пентагоне только один момент проще (для прозрачного доступа к озу) - есть "промежуточные" регистры для выборки видеоданных. А в остальном, да, сложнее, по крайней мере микросхем больше - КНГМД, в 128 дополнительная память. Тем более эти дополнительные возможности не будут использованы.
Mick, если планируешь использовать адресацию клавиатуры
Вариант с заданием маски через отдельный порт
то на D47 "слева" должна придти шина данных (D0-D7), а не старшая половина шины адреса.
- - - Добавлено - - -
В целом несколько смущает отсутствие буферизации ША и ШД
то на D47 "слева" должна придти шина данных (D0-D7), а не старшая половина шины адреса.
Да, ты правильно заметил. Схему перезалил.
В целом несколько смущает отсутствие буферизации ША и ШД
Пока надежда на небольшое количество нагружаемых микросхем. Будет плохо, значит будем добавлять.
Еще мне кажется не совсем корректной фиксация данных в D40 и D47. Пусть IOWR/ неактивный (высокий) и
1. A0 0->1 - произойдет фиксация данных в D40
2. A0 1->0 - произойдет фиксация данных в D47
Можно заменить D46.3 и D46.1 на ИЛИ-НЕ, тогда фиксация будет по переднему фронту (спаду) IOWR/
На тот случай, если реализация в железе еще не началась вброшу еще вариант. Можно часть нововведений заменить на ВК38. В наличии они вроде есть и недорого. Бонусом пойдет буферизация ШД
Можно часть нововведений заменить на ВК38
Мы тогда не отловим начало цикла записи в память. Не забывай, мы в паямть пишем не по WR/, а по комбинации битов статуса. Это сбрасываем его по концу WR/
Так что пока выглядит сомнительно эта затея.
На тот случай, если реализация в железе еще не началась
Пока раздумываю, либо на проводках делать, что может не дать ожидаемого эффекта, ввиду хаоса проводов, либо рискнуть и развести Ленина уже с нововведениями (правда я бы от одной ПЗУ избавился). Тогда можно предусмотреть сразу места для буферов. Либо нововведения сделать на отдельной платке, которая будет вставляться в панельку процессора.
мы в паямть пишем не по WR/, а по комбинации битов статуса. Это сбрасываем его по концу WR/
Поэтому я и предложил ВК38, а не ВК28. Он (38) начинает /MEMW и /(I/OW) по битам статуса и заканчивает с концом WR/
А задержка самого буфера сколько у него?
Ведь любая буферизация вносит задержки на прохождение сигнала. Вот допустим мы ставим АП6 и если не хватит скорости КР1533АП6, то можно поставить например КР1531АП6. А как обстоят дела с ВК38
Цитата из Щелкунова, Дианова (надеюсь в даташите аналогично) "Задержка, вносимая формирователем в шину данных, не превышает 40 нс."
не превышает 40 нс."
Значит максимум 40нс - это на мой взгляд много и к сожалению эту микруху нельзя поменять на что то быстрое.
Работа над ошибками. Здесь (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1082439&viewfull=1#post1082439) я ошибся, в текущем варианте схемы с D40 и D47 все нормально, запись по заднему фронту IOWR/
Озвучу еще один не особо оригинальный вариант, как можно при сохранении старых микросхем озу обойтись без торможения. Проблему конкуренции видео и проца при записи долгий we/ скорее всего решит. Для решения конфликта по чтению можно поставить sramину на >=64 Кб. Проц должен писать параллельно в старое озу (чтобы видео отображалось) и в новое, а читает только из нового (и из пзу). Изящности в таком решении нет, да и вопрос буферизации шин оно обостряет.
Если вернуться к варианту замены основного озу, то раз уж менять, то тоже можно подумать об отказе от быстрых dram в пользу еще более быстрой sram.
Если вернуться к варианту замены основного озу, то раз уж менять, то тоже можно подумать об отказе от быстрых dram в пользу еще более быстрой sram.
Что же вы все бросаетесь из одной крайности в другую. Скажем так импортные драмины на 100нс на али хоть мешками покупай и если она прокатит, то пусть стоит. Напомню, этот комп чисто эксперимент и по сути на нем будет основан клон Ориона. Но так как я изначально ориентировался на драмины, то пока со статикой повременим. Возможно и на ней что нибудь учудим. :)
этот комп чисто эксперимент и по сути на нем будет основан клон Ориона.
На мой непросвещенный взгляд для ориона или специалиста этот проект вряд ли даст что-то полезное. Разве что ты сможешь лично оценить разгонябельность конкретных экземпляров процессоров. А с орионом и специалистом имхо все проще. Если плюнуть на нормальные размеры экрана можно просто шагами увеличивать частоту резонатора с параллельной коррекцией параметров развертки до тех пор пока будет работать. Основными ограничивающими факторами буду проц и память. Ну и эстетическое чувство, т.к. если проц заработает на 3.5 МГц, то ширина экрана будет в районе 27.4 мкс, т.е. примерно половина видимой области. Кстати, для специалиста фактически уже есть готовая платформа - Сябр SYR-ALEXа. Там достаточно сменить резонатор и изменить прошивку контроллера для коррекции параметров видео.
На мой непросвещенный взгляд для ориона или специалиста этот проект вряд ли даст что-то полезное. Разве что ты сможешь лично оценить разгонябельность конкретных экземпляров процессоров.
А что дает полезное в клепании клонов спектрума или специалиста - кроме спортивного интереса ничего. По сути это же хобби.
В отличии от Спектрума, где очень много программ заточено под определенные времянки (сколько там тактов в прерывании), Специалист и Орион этим не страдает. А значит если Орион будет работать на 3,5МГц или 4МГц от этого он Орионом не перестанет быть (пока не берем в расчет экран).
Никто не мешает например сделать клон Ориона на ВМ80 с тактовой 4МГц, допустим на ВМ85 на 5МГц или условно каком нибудь Z180 на 33МГц. Он все равно останется Орионом.
Так вот для меня на сей момент спортивный интерес в создании клона Ориона разбит на два этапа.
1. Это даунгрейд схемотехники Ленинграда на ВМ80, т.е. запуск процессора на 3,5МГц.
2. На основе схемотехники (диспечер памяти) Ленинграда сделать клон Ориона.
Если это прокатит, то можно будет тоже самое повторить и на ВМ85 :)
А вообще тебе спасибо, за то что есть интерес и принимаешь активное участие.
Должен признать, что концепцию модификации по пути ленинград->ленинград с 8080->орион я более-менее понимаю только в первой части. Там есть интересная задача замены z80->8080, возможно ее даже никто и не решал до сих пор в связи с отсутствием практической необходимости, что не делает задачу менее интересной.
А вот второй этап в моем восприятии похож на операцию по нетрадиционному удалению гланд. Но это только мое субъективное восприятие, все же для меня это виртуальный проект, а для тебя вполне железный. Если веста ик-30, которая стоит у тебя на столе, в итоге сможет выполнять орионовские программы это же круто.
Орион и специалист к частоте особо не привязаны, есть буквально пара моментов. При использовании магнитофона для загрузки обязательно придется подправить константы. Звуки сильно изменятся, но это не критично. Изменится реакция на клавиатуру, но тут ограничивающим фактором будет разгоноспособность 8080, разогнать до полного неудобства просто не получится.
В целом желаю тебе успеха с этим проектом, постараюсь ограничить неконструктивную составляющую своего участия, чтобы не отвлекать.
Если веста ик-30, которая стоит у тебя на столе, в итоге сможет выполнять орионовские программы это же круто.
Нет ты немного не понял. По сути от Весты или Ленинграда или Спектрума берется только диспечер памяти. Все остальное будет в итоге Орионовским.
Но на данном этапе при создании компьютера ZX8080 проверяется возможность работы с таким диспечером ВМ80, но в конечном результате они с Орионом мало будут похожи и вряд ли этот комп сможет выполнять Орионовские программы.
Конкретно по железу, что я склоняюсь все таки чутка переразвести Весту под ВМ80 и скорее всего поставить один большой разъем СНП58 для того чтобы было проще цепляться к плате расширения на которой уже есть разъемы под клаву, видео, аудио, майфун. Так сказать одни фиг это новый комп, так пусть будет немного унифицированный. :)
Нет ты немного не понял.
Это сильное преуменьшение, на данный момент я совсем не понимаю, что будет после zx8080, что там будет от спека и что от ориона. Главное чтобы ты сам четко понимал, что там откуда и зачем. Интересен (по крайней мере мне) также вопрос с эмуляцией.
Обновил схему (ссылка в первом посте)
Так как я выбрал вариант с частичной переразводкой платы Веста, то немного оптимизировал цепи.
- кроме того вместо кучи разъемов будет один большой СНП58, с выходами совместимыми с платой расширения ZX-777 Extboard (ну чтобы не делать кабели).
- вместо двух микросхем РФ4 будет только одна 27128 (16кб)
- добавил транзисторы в видео
- добавил буфер на данные АП6 (вначале будут перемычки, а потом уже будем смотреть)
Вот пока думаю, ставить буферы на адреса (пока не хочется)
Ну как бы так :) Вот что происходит с платой Весты(Ленинграда), когда в нее плюшевый медведь пытается вкарячить ВМ80 :)
Как результат разводка не оптимальна, но длину дорожек клоков от АП3 до ВМ80 сделал как можно короче.
https://i.ibb.co/y5Qhcjp/ZX-8080-pcb.png (https://ibb.co/y5Qhcjp)
Добавил преобразователи напряжения. Плата правда стала размером 250мм x 140мм.
Вечером скину последнюю версию схемы.
Глянул последнюю версию схемы и меня смутило управление входом 1 D30 (АП6).
1. Когда читаем DBIN=1, а АП6 при этом будет работать в сторону записи.
2. Имхо лучше использовать WE (вывод 9 D9.2) для управления D30.
Когда читаем DBIN=1, а АП6 при этом будет работать в сторону записи.
Я уже это поправил, вечером последнюю ревизию схемы скину, там АП6 входы с выходами поменял местами.
2. Имхо лучше использовать WE (вывод 9 D9.2) для управления D30.
А как же запись в порты
А как же запись в порты
А в порты писать не будет, это я прошляпил. Получается надо как ты написал поменять местами входы и выходы АП6 или инвертировать DBIN для управляющего входа.
- - - Добавлено - - -
"Мой" вариант можно попробовать "спасти", если вместо WE взять сигнал WO с вывода 1 D42.1. Не предлагаю так делать, просто еще вариант.
"Мой" вариант можно попробовать "спасти",
А что там спасать, то что есть на схеме. Так я уже их перевернул и оставил DBIN.
В общем обновил схему, ссылка в первом посте. И попробую заказать пару плат - посмотреть что же там вышло :)
вот блин , печатка нра
вот еслиб так Весту с ‘ апгрейдить —
/*один большой СНП58, с выходами совместимыми с платой расширения ZX-777 Extboard (ну чтобы не делать кабели).
- вместо двух микросхем РФ4 будет только одна 27128 (16кб)
- добавил транзисторы в видео
- добавил буфер на данные АП6 (вначале будут перемычки*/
хотя, если в итоге выйдет специалист - тоже супер
-)
Еще вопрос по D33. Если это ИР22, то вопрос снимается. Если ИР23, то не представляю, как может работать, т.к. передний фронт WRBUF совпадает с передним фронтом (спадом) cas/ и никак не успеет прочитать из памяти. Нарисовано так, что вроде запись в регистр по спаду WRBUF, но в этом случае проц не успеет прочитать.
Если это ИР22
Именно, это штатное спековское решение.
HardWareMan
08.10.2020, 08:43
:v2_dizzy_facepalm::v2_dizzy_facepalm::v2_dizzy_fa cepalm::v2_dizzy_facepalm:
Господа "спектрумисты", вы вообще в курсе, откуда появился этот самый ИР22 в схеме спектрума на россыпи (а конкретно - в Ленинграде)? Фундаментальная причина.
Господа "спектрумисты", вы вообще в курсе, откуда появился этот самый ИР22 в схеме спектрума на россыпи (а конкретно - в Ленинграде)? Фундаментальная причина.
Так просвяти, только без сарказма.
Надо больше смайликов, а то недостаточно эмоционально. В 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 вполне подходят).
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, задержав на такт который мы и получаем арбитраж. А чтобы синхрогенератор не показывал снег перед регистрами графики и атрибутов ставятся защёлки, которые сохранят предыдущие данные, если процессор вклинился.
// Здесь был видос с матом, был не прав и слишком груб, удалил. Оставлю только текстовый эквивалент:
Всё фигня, давай по новой.
Взял временные диаграммы Micka и некрасиво обвел красным те DBINы, которые не прочитают нормально без ИР22
HardWareMan
09.10.2020, 06:53
ivagor, ты обвёл ровно те обращения, которые конфликтуют с синхрогенератором. И длина DBIN, как ты там писал выше, никакой роли тут не играет. А всё потому, что в этой схеме нет ни арбитража, ни синхронизации.
Не помню, где писал про длину 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а свое видение и свои приоритеты (из которых я четко понимаю только один - он хочет максимально быстрый 8080. Еще возможно он хочет сохранить ленинградскую выборку видео). На данный момент только он серьезно занимается данной темой, и т.к. мне интересна замена z80->8080 я стараюсь не сильно мешать и иногда даже немного помогать. Если бы железячники активнее учавствовали, то я бы в hard не стал лезть. Не сомневаюсь, что Mick обнаружил бы ошибки, которые я заметил, просто это потребовало бы времени и сил. Если кто-то задумает альтернативный проект, спроектирует схему, разведет плату, закажет плату и детали, соберет и похвастается рабочим компом - это тоже будет очень интересно. Ну или можно попробовать повлиять на Mickа, желательно поконструктивнее.
Ты все верно отметил - я четко понимаю только один - он хочет максимально быстрый 8080. Еще возможно он хочет сохранить ленинградскую выборку видео
Иными словами - название темы уже как бы говорит, что просто интересно вкарячить ВМ80 в схемотехнику Ленинграда, с минимальными переделками. На плате я специально дырок понаделал, если придется что то проводами паять.
Другие варианты мне не особо пока интересны. А получится или нет другой вопрос :)
HardWareMan
09.10.2020, 09:32
Ты всегда можешь поступить как с Z80: тормозить по М1 (ты и так вытягиваешь слово состояния из проца), а М2+ должны получиться автоматом.
Ты всегда можешь поступить как с Z80: тормозить по М1 (ты и так вытягиваешь слово состояния из проца)
Безусловно этот вариант не отбрасывается, но как я уже писал, что хочется попробовать пока по максимуму заюзать ВМ80. Поэтому для этого возможно надо будет применить 100нс импортную память и буфер 1533 или 1531. Не взлетит, то есть поле с дырками.
Раз возможность торможения полностью не отбрасывается, напомню и про свой вариант (https://zx-pk.ru/threads/32131-daungrejd-kompyutera-quot-leningrad-quot.html?p=1081812&viewfull=1#post1081812)
торможения полностью не отбрасывается
Торможение это как самый последний вариант что вроде как работает. Но при этом задача будет считаться не выполненной :(
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.
просто интересно вкарячить ВМ80 в схемотехнику Ленинграда, с минимальными переделками.
Как на счет NEC V20 с его режимом эмуляции 8080 (на али D70108 по 100р/шт), планы есть?
Как на счет NEC V20 с его режимом эмуляции 8080 (на али D70108 по 100р/шт), планы есть?
Пока никаких планов. Мне бы для начала с ВМ80 разобраться бы.
NEO SPECTRUMAN
09.10.2020, 12:54
Как на счет NEC V20
а как с его раздобываемостью?
по моему это не самый распространенный и доставаемый зверь
на али D70108 по 100р/шт
перемаркировка?
Mick, мне кажется тебе больше не нравится само слово "торможение", чем его реальное влияние.
К торможению может еще и вернемся, но пока ориентируемся без оного. ;)
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot