nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 28 Mar 2024 06:47



Reply to topic  [ 13 posts ] 
INT(RST N) в i8080 
Author Message
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
Меня одна интересная мысль тут давно посетила, и я к ней частенько возвращаюсь...
Но никак нет времени её проверить... (лето вот опять началось с ремонтов - замена электропроводки). :osad:

А мысль вот какая: довольно часто в простых конструкциях на i8080 aka K580BM80А в прерывании
используются nedo-вектора RST N, а уж RST 7 - самый популярный, поскольку код его 0FFH
и это легко реализуется аппаратно, резисторами к +5В.

Неудобно, что передача управления этих nedo-векторов идет на адреса 0000Н-0038Н,
а большинство популярных отечественных машин имеют на этих адресах ОЗУ.
RST N активно используют в Васиках, но хотелось бы, чтобы вызовы RST N приходили
в системную ПЗУ. А она у нас - вверху, с 0F800H по стандарту вызовов РК-86 ну и у
всех остальных популярных недо-компов Монитор вверху

Так вот идея у меня следующая: все такие недо-компы имеют аппаратный механизм,
который по RESET "прижимает" системную ПЗУ на адрес 0000Н.
По этому адресу записано: JMP [ADDR в ПЗУ] и по адресу JMP следующая операция
восстанавливает нормальную карту памяти, далее выполняя холодный старт Монитора.

А что если распространить этот механизм и на обработку INT по RST N ?

Ну, скажем так: приходит INT и если он разрешен (INTЕ) системная ПЗУ "прижимается" аппаратно
на адрес 0000Н.
Ну, скажем, сработало аппаратно RST 7 = CALL 0038H. По адресу 0038H (он же 0F838H)
в системной ПЗУ записано: JMP [в ПЗУ на адрес обработчика прерывания] .
По этому адресу восстанавливается нормальная карта памяти, и далее идет тело обработчика
с возвратом по RET.
Получается, что вектора RST N будут указывать в системную ПЗУ в старших адресах.

Как такая мысль?

_________________
iLavr


05 Jun 2016 18:25
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Уже реализовано похожее.
При помощи похожего "финта ушами" к вм80 "прикрутил" относительные переходы и вызовы :
PUSH D , PUSH H , потом в HL смещение , потом PUSH PSW сохраняет флаги, потом RST7 ( которое определяется сигналом M1 ->&-> кодом FF на ШД и "ремапит" нижний адресный блок на пзу ) и после нескольких несложных "вывертов" делаем R(не_условие)->выходит без смещения, а иначе DAD D сложит {"POP-нутое" в DE "до-вызывное" содержимое PC} c HL и тогда PCHL - то есть эта подпрограмма делает эквивалентно CALL(условие),{смещение} по сути.

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


05 Jun 2016 23:07
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
petrenko wrote:
Уже реализовано похожее.

И где, если не секрет?
petrenko wrote:
...потом RST7 ( которое определяется сигналом M1 ->&-> кодом FF на ШД ...

Ибо M1 по отношению к i8080 aka K580BM80А вызывает некоторые сомнения... :wink:
А сложить PC с некоторым смещением можно и безо всякого RST7...

И где в этой весьма запутанной истории из "нескольких несложных "вывертов", собственно, сам аппаратный INT ?

_________________
iLavr


05 Jun 2016 23:27
Profile
God
User avatar

Joined: 13 Nov 2010 04:06
Posts: 1345
Reply with quote
Если абстрагироваться от совместимости с существующим ПО, то мне кажется предпочтительным другой вариант. По сбросу в начальных ячейках ОЗУ просто разместить jmp на адреса в ПЗУ. Я так у себя в "Орионе" делал, был как-то интерес.


06 Jun 2016 11:05
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Аппаратный INT я пока не изпользовал - потому и "похожее" ,а не "такое же" .

пзу 556рт4 разрешается сигналом М1 и "следит" за ш.д. ,"отлавливая" команды RST и XTHL ,и обозначает их на выходах сигналами schnapp_rom_unteren и schloss , кроме того обозначает длину команд ( 1|2|3 ).

Именно для этого "финта ушами" я как раз на данном форуме и пытал точную разтактовку XTHL и особенности поведения сигнала М1 у вм80


06 Jun 2016 11:14
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
VituZz wrote:
Если абстрагироваться от совместимости с существующим ПО...

Вот и я попытался совместимость с существующим ПО соблюсти, чтобы не было:
petrenko wrote:
...ни с чем не совместимо и никто не будет писать код под таким образом аппаратно-завёрнутую систему - разве что для себя на досуге.


Всё остается полностью программно-совместимо (и я привел в пример Васик) поскольку программные RST N
остаются на местах, они не перехватываются и работают как есть.

А вот когда аппаратный INT обслуживается через механизм RST N, выставляемых на шине данных внешней
схемой, вот тут-то мы и "прижимаем" системное ПЗУ на адрес 0000Н, перехватывая эти "аппаратные" RST N.

Весь этот механизм аппаратно более прост, нежели отлов М1 через байт STATUS-а и прочие "выверты".

Для чего конкретно я хочу этот фокус использовать: «Galaksija» и «ZX80» удачно эксплуатируют особенности
микропроцессора Z80 и его системы прерываний для формирования видеосигнала програмно-аппаратным способом.
В i8080 aka K580BM80А подобного механизма нет.

То есть, если я даже поставлю "крючья" в младших адресах ОЗУ, я точно войду в конфликт с имеющимся
софтом, поскольку, скажем, RST 7 будет занят мной всегда.

А если хотя бы RST 7 по INT "вынести" в системное ПЗУ, то появится механизм для программно-
аппаратной генерации видеосигнала, уже "вписанный" в системное ПЗУ.

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

_________________
iLavr


06 Jun 2016 14:51
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
Вроде никаких "подводных" и не должно быть.
Просто будет "нищебродский суррогат" вн59 ,но с аппаратным RST7 вместо аппаратного CALL 0xxxxh и с временным "ремаппером" нижнего адресного блока.
90% что будет работать как надо.


06 Jun 2016 15:34
Profile
Supreme God
User avatar

Joined: 21 Oct 2009 08:08
Posts: 7777
Location: Россия
Reply with quote
petrenko wrote:
Просто будет "нищебродский суррогат" вн59 ...

Тогда уж "суррогат" 589ИК14...

_________________
iLavr


06 Jun 2016 16:10
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
А , ну да, об ик14 как то не вспомнил - а он сразу трёхбитный вектор делает - готовые RST0...RST7.

(Кстати, если есть 100% гарантия неизменности INT0...INT7 на время восприятия прерывания , то можно даже 155ив2 изпользовать. Ну это так - поизвращаться ..)

В общем идея по разной нужде по разному "ремапить" адресные блоки неплохая и, идя таким путём, можно "доапгрейдить" 8080 чуть ли не до 8086 ( без ES - екстру уж совсем никак не впихнуть , а вот код, данные и стек - запросто )


06 Jun 2016 16:45
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
А меня интересует контроллер прерываний на 555ив?.
Правда я не понял, что такое 555ив2 (в справочнике В.Л.Шило такого нет).
Есть ив1 и ив3.
Наверное лучше использовать ив1 - есть признак события. И придется ставить шинник
для передачи вектора.
Хочу применить в партнер 01.01.


06 Jun 2016 23:28
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
aav8 wrote:
.. ставить шинник ..
В смысле ? Мне известна спортивная команда "Шинник" .. :econfused:

ив2 отличается от ив1 Z-состоянием трёх линий выхода.
( Этот "шило" - сборник "косяков" и ошибок - карандашиком правил по мере обнаружения - в результате каждая третья, а то и каждая вторая страница с правками - это не считая грамматических и "очепаток"
Вот там посмотрите описание :
http://qrz.ru/reference/kozak/ttl/ttlh28.shtml ,"буржуинский" аналог==**74LS348 )

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

Схема временного "ремапа"~"прижимания_пзу_вниз" и по RES ,и по INT ,немножко сложнее схемы только по RES - надо будет продумать - по другому ли "вернётся наверх" в отличие от послестартового или так же.


07 Jun 2016 02:22
Profile
Maniac

Joined: 05 Nov 2008 19:47
Posts: 287
Location: 81.28.208.238
Reply with quote
Шинник имеется в виду шинный формирователь (555ап6, 589ап16/26 или что-то в этом роде). Потому-что внутренняя логика ив рассчитана на каскадирование. А шинник будет выдавать вектор прерывания.
Прерывания могут теряться в случае запроса в виде импульса. ВВ51 выдает запрос (готовность), пока данные не будут прочитаны/записаны.
Я для этого и планирую его (простейший контроллер прерываний) для этого использовать.


10 Jun 2016 00:20
Profile
Doomed

Joined: 10 Mar 2012 16:21
Posts: 598
Location: РФ
Reply with quote
А .. шинный формирователь .. Понятно.

В случае с ***ив2 ш.ф. не обязателен.

Вот в 1821вм85 есть линия прерывания RST7.5 - хорошо тем, что достаточно сей линии прерывания перейти из нижнего логического уровня в верхний и дальше оно уже точно не потерялось - там внутри оно по фронту защёлкивается.

Если применить 589ик14 - тоже не будут теряться. И тоже ш.ф. необязателен.
И купить её настолько же "сложно", как и *ив1 *ив2 ,и цена вроде была 4р.( мож повысилась, не искал сейчас )

А вообще идея по разному обрабатывать программные RST(N) и аппаратные( "подсунутые" которые ) может привести к полезным результатам.
Хотя мне пока ещё не требовались аппаратные прерывания, но пожалуй для интересу таки надо "прикрутить" INT попробовать.


10 Jun 2016 01:38
Profile
Display posts from previous:  Sort by  
Reply to topic   [ 13 posts ] 

Who is online

Users browsing this forum: No registered users and 11 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.