Просмотр полной версии : Как в Z80 использовать регистр I в качестве порта вывода
У Z80 есть одно, практически неиспользуемое свойство, используя которое, можно без существенных затрат деталей (что важно для простейших контроллеров, где число корпусов менее 10), получить 8-ми разрядный порт на вывод.
Мало кто знает, что в тактах RFSH процессор Z80 выдаёт на старшую половину шины адреса содержимое регистра прерываний I. Так что, если сигналы шины адреса A8...A15 "защёлкивать" по стробу /MREQ в тактах регенерации, то получается 8-ми разрядный выходной порт. Это эквивалентно тому, как бы в процессор добавили 8 дополнительных выходных линий, адресуемых непосредственной адресацией, причём шина данных даже не нагружается входами доп.порта.
Аппаратно это выливается в один вентиль из 1533 ЛЛ1 и, естественно, регистр-защёлку типа 1533 ИР23 или ИР27 (или ИМС с меньшей разрядностью, например ТМ2, срабатывающие по прямому фронту). Программно, всё, что процессор запишет в регистр I, после ближайшего такта регенерации (а он будет уже в этой же или в следующей команде Z80) появится на выходе регистра ИР23. Для простого контроллера это то, что надо. Выигрыш тройной: по деталям, скорости прогона и расходу байтов на программу. Недостаток - потеря прерываний в MODE 2.
В простом контроллере это можно использовать для вывода звука или вывода в линию. Можно этим портом управлять режимом (например экрана) в компьютере. Но гораздо полезнее задействовать этот дополнительный порт, как бы встроенный в процессор, для управления диспетчером памяти (в простейшем случае, просто для переключения банок).
Я не встречал в литературе подобного использования регистра I. Может быть кто-нибудь знает почему это плохо или вообще невозможно.
Error404
20.08.2017, 20:43
Я не встречал в литературе подобного использования регистра I. Может быть кто-нибудь знает почему это плохо или вообще невозможно.
Наверное оттого, что не наблюдается существенного выигрыша: внешний регистр же все равно нужен для хранения выведенного, т.е. в сущности никакой разницы в сравнении с выводом по OUT (n),a. А прерывания при этом теряются (и самый удобный режим).
Выигрышь был у 8080 и его вывода EI/DI - там хоть и однобитный, но внутренний триггер процессора с готовой ножкой.
shurik-ua
20.08.2017, 20:54
плисоводы однозначно не восторге от этой затеи )
не наблюдается существенного выигрыша
Вы не учитываете того, что регистр I внутренний и потому доступен для чтения, что очень важно для диспетчера памяти (да и регистра режима экрана тоже). Если регистр диспетчера памяти сделан традиционно, то надо добавлять и порт ввода для считывания. С невозможностью считывать порт F9, все сталкивались в ОРИОНЕ, отчего п/п-ммы ПЗУ для вывода на экран можно вызывать только из банки 0. Прерывание в MODE 2 не важно, если в ЭВМ с адреса 0 стоИт ОЗУ, а не ПЗУ.
вывод по EI/DI в КР580 хоть и однобитный, но это внутренний триггер процессора с готовой ножкой на корпусе
ЛЛ1 можно заменить двумя диодами, а один триггер на звук - это немного. В простейшем контроллере в качестве чип-селектов ради экономии (дешифратора ИД7 для ОЗУ, ПЗУ и портов) используются сами адреса CPU. Отчего деталей - минимум, кроме БИС всего 2 корпуса логики. Если же использовать "electrically erasable and programmable ROM", что имеют программный интерфейс как обычное ОЗУ, но заменяют одновременно ОЗУ и ПЗУ, число деталей сокращается до - Z80, ОЗУ&ПЗУ, порт ввода и порт вывода (или ВВ55) и 2 корпуса логики для формирования упр.сигналов.
barsik, экономия это конечно здорово. Но вот для любого микроконтроллера, который управляет какой-то установкой, важно реальное время и прерывания. А терять режим IM2, который используется для программирования таблиц векторов прерываний, просто нерационально.
MacBuster
20.08.2017, 23:35
Мало кто знает, что в тактах RFSH процессор Z80 выдаёт на старшую половину шины адреса содержимое регистра прерываний I.
Ага, мало кто - какая-то жалкая пара сотен тысяч спектрумистов...
OrionExt
20.08.2017, 23:53
У Барсика, обострение. I регистр для IM2.
Так к слову. Я лично мечтаю, чтобы этот рефреш убрать в Z80 (Z180 - отключаемо).
Это какой прирост скорости на простых инструкциях сходу.
Так к слову. Я лично мечтаю, чтобы этот рефреш убрать в Z80 (Z180 - отключаемо).
Это какой прирост скорости на простых инструкциях сходу.
А что тут мечтать - берём софт-ядро Т80 и пилим, пилим... :)
OrionExt
21.08.2017, 00:08
Ну что тут сказать. Пилить софт ядро, этот как пилить гирю. Кому это нужно на реальном железе:)
Да и софт ядро Т80 хорошо для софт железок, в жизнь такое идеальное чудо не запустить. Хотя тцц!!! Есть попытки. Но разработчик ту не афиширует работу.
Мало кто знает, что в тактах RFSH процессор Z80 выдаёт на старшую половину шины адреса содержимое регистра прерываний I.
Ага, мало кто, - какая-то жалкая пара сотен тысяч спектрумистов...
Докажите.
Кстати, не уверен, что сейчас спектрумистов наберётся даже одна тысяча. А среди них тех, кто не игроман, а сам разбирается в программировании на порядок меньше.
У Барсика, обострение
Пожалуйста отвечайте в первом лице и вежливо. Я пишу серъёзно, зачем Вы хотите превратить тему в балаган?
I регистр для IM2
На что Вы отвечаете? Здесь все знают для чего служит регистр I.
MacBuster
21.08.2017, 00:14
Кому это нужно на реальном железе
Хм, ну если это даст возможность управляемого n-кратного разгона или «увеличения числа ядер» (одно для совместимости с остальной частью схемы работает на 100%, а второе на максимуме с собственным буфером обмена хоть в 256 байт), то почему-бы и нет?
Что-то вроде MultiComp на Z80 (https://jeelabs.org/article/1550b/).
OrionExt
21.08.2017, 00:19
Да и софт ядро Т80 хорошо для софт железок, в жизнь такое идеальное чудо не запустить. Хотя тцц!!! Есть попытки. Но разработчик ту не афиширует работу.
MacBuster, cори. Обновил свой пост.
А ядра, как и все остальное…. Мне по барабану. Сейчас мода делать аддоны к компам на ядре сопоставим с 10-ми такого компа. Это отлично. Но для меня это уже другая песня.
CodeMaster
21.08.2017, 06:54
Докажите.
Я не спектрумист, не железячник, не программист, но даже я читал тут уже про эту фишку. Причём, последний раз не так давно.
какое-то закостенелое у многих мышление.
от IM2 (регистраI) вполне можно отказаться используя IM1 и перехват (#0038)
дальше всё зависит от вашей фантазии
HardWareMan
21.08.2017, 10:58
goodboy, так то можно и в IM0 подсовывать JMP на лад ВН59. Только народ хочет делать это малой кровью, без лишнего обвеса.
NEO SPECTRUMAN
21.08.2017, 12:55
У Z80 есть одно, практически неиспользуемое свойство,
Миллионы zx80\81 и их клоны используютовали это практически неиспользуемое свойство
так же как и регистр R в качестве "таймера"
Миллионы zx80/81 и их клоны использовали это практически неиспользуемое свойство
А как и для чего это там используется? Как бесплатный и удобный порт вывода для экранного адреса?
Признаю не знал этого про ZX80. А ещё хоть кто-нибудь знал об этом?
Несмотря на ZX80, всё-равно утверждение, что "пара сотен тысяч спектрумистов" знали о том, что Z80 в тактах RFSH выдаёт регистр I, считаю очень большим преувеличением.
99 процентам спектрумистов, это "до лампочки", они пользователи, не разработчики железа. Спектрумистов особенности ZX80 вообще не интересовали. Про ZX80 никакой информации до конца 90-тых практически не было. В 80-90-тые я общался с несколькими опытными синклеристами, в т.числе и с разработчиками клонов. Никто об этом свойстве Z80 тогда не знал.
Так что мне просто любопытно, может ли кто-нибудь привести ссылку на пост в форуме, где это свойство Z80 обуждается (кроме этого поста (http://zx-pk.ru/threads/26455-chto-maksimum-mozhno-vyzhat-iz-kr580vg75-intel-8275-obsuzhdenie.html?p=888890&viewfull=1#post888890)) или ссылку на ZX-газету, где это упоминается, т.е любой источник информации откуда все спектрумисты смогли узнать эту "широко известную" информацию.
inozemcew
21.08.2017, 15:22
Все, кто писали софт под фирменные машины знали об этом. Кто не знал и пытался завести на фирменном аппарате таблицу прерываний в адреса $4000-$7fff, сразу узнавал об этом по знаменитому (не у нас) "snow effect".
NEO SPECTRUMAN
21.08.2017, 17:03
Как бесплатный и удобный порт вывода для экранного адреса?
Как указатель старшего адреса размещения шрифта в ПЗУ
MacBuster
21.08.2017, 17:51
99 процентам спектрумистов, это "до лампочки", они пользователи, не разработчики железа.
Вы можете это как-то подтвердить, кроме как "по-моему"?
В 80-90-тые я общался с несколькими опытными синклеристами, в т.числе и с разработчиками клонов. Никто об этом свойстве Z80 тогда не знал.
Ну, не повезло вам, что делать. Не стоит делать обобщающие выводы вселенских масштабов из своих личных неудач.
Powered by vBulletin® Version 4.2.5 Copyright © 2025 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot