Порты vs память, слово состояния и т.д.

Обсуждение советского компьютера Фахiвець / Специалист и его развитие

Moderator: Lavr

User avatar
MC68k
Retired
Posts: 1328
Joined: 25 Jul 2011 00:14
Location: WWW

Порты vs память, слово состояния и т.д.

Post by MC68k »

возник вопрос - почему практически во всех конструкциях того времени на ВМ80 не использовалось обращение к портам ввода/вывода?
пара логических элементов за кучу адресного пространства вроде бы не большая цена, плюс код быстрее и компактнее

IN #C0h vs LDA #C000h
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

А что, в какой-то из тех конструкций были ВК28? А проц - он только сигналы чтения и записи выводит, без разделения к чему - к памяти или вводу-выводу. Экономили пару микросхем, а вот адресного пространства казалось слишком много. А может, ВК28 были тогда зверским дефицитом? Я не помню.
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:А что, в какой-то из тех конструкций были ВК28? А проц - он только сигналы чтения и записи выводит, без разделения к чему - к памяти или вводу-выводу.
В Векторе не было ВК28, но порты были. Не сэкономили пару микросхем :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

HardWareMan wrote:ЕМНИП, помимо разделения портов и останова, в этом слове есть флаг работы со стеком, чего нет ни в одном другом проце. Да-да, можно физически отделить стек. :)
И это тоже использовалось в Векторе :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

HardWareMan wrote:помимо разделения портов и останова, в этом слове есть флаг работы со стеком, чего нет ни в одном другом проце. Да-да, можно физически отделить стек. :)
Мне всегда было интересно, каким образом формирует свои выходные сигналы ВК28 - на основе слова состояния, или используя DBIN и /WR процессора. Похоже, что ВК28 использует второй вариант, а ВК38 - первый. И как формируется у ВК28/38 сигнал (вернее, даже три) /INTA - на основе слова состояния или как-то самостоятельно? При получении запроса на прерывание формирует ли процессор три слова состояния, подтверждающих прерывание, или это забота контроллера? Подробностей я нигде не встречал. Похоже, что особой необходимости в ВК28 нет, и бОльшие возможности мог бы обеспечить простой 8-разрядный регистр с тремя состояниями и мощными выходами, данные в который защёлкивались бы сигналом /STSTB. Так, действительно, можно получить ещё 64к стека, отдельного от ОЗУ.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Мне всегда было интересно, каким образом формирует свои выходные сигналы ВК28 - на основе слова состояния, или используя DBIN и /WR процессора. Похоже, что ВК28 использует второй вариант, а ВК38 - первый. И как формируется у ВК28/38 сигнал (вернее, даже три) /INTA - на основе слова состояния или как-то самостоятельно? При получении запроса на прерывание формирует ли процессор три слова состояния, подтверждающих прерывание, или это забота контроллера? Подробностей я нигде не встречал.
Несколько удивил твой такой вопрос...
Уж извини, что я вроде как потыкаю этим справочником Шахнова, но просто я им пользуюсь в работе.

Так согласно ему ВК28/38 практически идентичны по схеме, с небольшой разницей в сигналах, но формируют дополнительные сигналы управления сугубо на основе обработки слова состояния STATUS.

Извини, что конкретно не привожу цитату, в чем разница, но если это принципиально интересно - на Шахнова я многократно давал здесь ссылку.

Подробностей как раз в Шахнове достаточно.

/INTA - это практически строб /RD но для операций получения вектора прерывания.
Количество /INTA зависит от первого байта "команды" прерывания.

Если этот байт 0CDH = (CALL) - это выдаёт обычно контроллер прерывания, то ЦПУ обязан сделать 2 запроса-строба /INTA - что бы получить адрес прерывания - (CALL AD1AD2).

Если этот байт 0FFH = (RST7) - это "хитрая" обработка прерывания без контроллера прерывания, когда шина данных подтянута резисторами к +5В. И тогда на адресе 038H должна быть подпрогамма обработки перывания. Естественно, 2 штуки /INTA после RST7 процессор не выдаёт.

То есть 1-й байт прерывания - дожен быть однозначно КОП. А дальше проц обработает этот КОП как положено, только стробом будет этот самый /INTA вместо /RD .

Внутренняя требуха ВК28/38 приводится во многих источниках и можно рассмотреть, как контроллер формирует сигналы управления из сигналов процессора и зафиксированного слова-состояния.

Следует помнить ещё, что сигналы управления ВК28/38 переходят в высокоимпедансное состояние в циклах ПДП.

В "РК-86" ВК28/38 не использовали и пришлось разрешать конфликт стробов /RD, /WR резисторами, как мне помнится.
Last edited by Lavr on 23 Oct 2011 04:28, edited 1 time in total.
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Lavr wrote: Уж извини, что я вроде как потыкаю этим справочником Шахнова, но просто я им пользуюсь в работе.
Я редко пользуюсь справочниками в электронном виде, а в бумажном у меня Шахнова, к сожалению, нет. А в каком-то из тех, что есть, писалось, что /INTA формируется контроллером, что и ввело меня в заблуждение.
Непонятно только, почему в контроллере не сделали выходов работы со стеком. С отслеживанием того, куда наползает его вершина, только лишние проблемы. Хотя в те годы, конечно, ОЗУ стоило дорого, и наверное разработчики решили, что оно никогда не подешевеет.
User avatar
HardWareMan
Banned
Posts: 2139
Joined: 20 Mar 2005 13:41
Location: От туда

Post by HardWareMan »

Вот слово состояние процессора ВМ80:
Image
А вот скрины из Шахнова:
Image
Image
Image
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:Я редко пользуюсь справочниками в электронном виде, а в бумажном у меня Шахнова, к сожалению, нет. А в каком-то из тех, что есть, писалось, что /INTA формируется контроллером, что и ввело меня в заблуждение.
Да вроде так оно и есть: /INTA формируется контроллером ВК28/38 - это фактически /RD от процессора, пропущенный через вентиль, управляемый битом "Подтверждение прерывания" из STATUS.
Так что заблуждения я тут особого не вижу...
User avatar
VituZz
God
Posts: 1343
Joined: 13 Nov 2010 04:06

Post by VituZz »

Может, я непонятно выразился. У меня были сомнения: будут ли формироваться три сигнала /INTA, если вместо ВК28 применить регистр. В Шахнове тоже написано, что /INTA формирует контроллер, вот я и засомневался, не сам ли он его формирует (т.е. не на основании слова состояния процессора). В описаниях ВМ80 этот момент подробно не описывается.
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

VituZz wrote:У меня были сомнения: будут ли формироваться три сигнала /INTA, если вместо ВК28 применить регистр. В Шахнове тоже написано, что /INTA формирует контроллер, вот я и засомневался, не сам ли он его формирует (т.е. не на основании слова состояния процессора).
Понял тебя. :wink: Нет, количество /INTA определяется КОП-ом, выставленным процессору прерыванием. А /INTA только дублирует количество обращений процессора.

Аппаратно нечем проверить - может только b2m сможет, да и то - это будет абстракция...
Если первый код по прерыванию подсунуть процессору (чисто экспериментально) скажем, MVI A, то процессор захочет получить второй байт и по идее - запросит второй байт такой глупой команды прерывания... :D
Впрочем - ему должно быть всё-равно. Он ожидает КОП, либо КОП и данные, что ему и подсовывают. :lol:
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

VituZz wrote:У меня были сомнения: будут ли формироваться три сигнала /INTA, если вместо ВК28 применить регистр.
Будут. Подтверждение прерывания формирует процессор в бите D0 шины данных при активном сигнале SYNC. ВК28 лишь запоминает его, выдаёт в качестве отдельного сигнала и рулит шиной данных, выступая в роли буферного формирователя шины.

А картинки из Шахнова, которые тебе дал HardWareMan, посмотри внимательнее. :)
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:
VituZz wrote:У меня были сомнения: будут ли формироваться три сигнала /INTA, если вместо ВК28 применить регистр.
Будут. Подтверждение прерывания формирует процессор в бите D0 при активном сигнале SYNC. ВК28 лишь запоминает его, выдаёт в качестве отдельного сигнала и рулит шиной данных, выступая в роли буферного формирователя шины.

А картинки из Шахнова, которые тебе дал HardWareMan, посмотри внимательнее. :)
С чего бы это однозначно будут? А что в этом случае с регистром дают процессору в качестве первого КОП-а при прерывании?
Если первый КОП не 0CDH, то три сигнала /INTA никто не обещал.
b2m
Devil
Posts: 905
Joined: 26 May 2003 06:57

Post by b2m »

В каждом цикле в первом такте выдаётся слово состояния. При обработке прерывания будет столько циклов, сколько требуется для выполнения команды, и в каждом цикле в слове состояния будет стоять подтверждение прерывания. И только лишь в следующем цикле M1 его не будет.
Страничка эмулятора наших компьютеров
http://bashkiria-2m.narod.ru/
User avatar
Lavr
Supreme God
Posts: 16676
Joined: 21 Oct 2009 08:08
Location: Россия

Post by Lavr »

b2m wrote:В каждом цикле в первом такте выдаётся слово состояния. При обработке прерывания будет столько циклов, сколько требуется для выполнения команды, и в каждом цикле в слове состояния будет стоять подтверждение прерывания. И только лишь в следующем цикле M1 его не будет.
Вот я и говорю, что /INTA будет не обязательно три.