ZXNet эхоконференция «code.zx»


тема: Система прерываний - есть вопросы.



от: SMT
кому: All
дата: 11 Oct 2005
Hello, TomCaT

Tom> LD A, R
Tom> LD I, R
флаги 3,5,7 копируются из A. CF не меняется, ZF=1 если A=0. PV ставится в
зависимости от того, разрешено ли прерывание
Tom> Hо, вот обнаружил вдруг, что я совсем не понимаю, чем отличается IM 0 от
Tom> IM 1 (для Спекки, а не для Z80)?
для этого надо понять, чем отличается именно для Z80 ;) если шина стабильна, то
для спекки ничем не отличается

от: TomCaT
кому: All
дата: 11 Oct 2005
Hello, All

Kir> DI
Kir> LD A,63
Kir> LD I,A
Kir> XOR A
Kir> LD (23613),A
Kir> LD HL,51697
Kir> LD (23746),HL
Kir> IM 1
Kir> EI
Kir>
Kir> Безусловно, переменные ВАСИКА должны быть установленны ... =) После
Kir> вше-указанных АСМ-строчек ни брейк ни игноры не будут действовать,
Kir> единственное, при ошибке чтения он будет пытаться читать вечно =)
Почитал код. Общий принцип понятен - в результате ошибки чтения вызывается
прерывание, а что будет потом - вот это уже на совести TR-DOS и/или
программиста... Hо, вот обнаружил вдруг, что я совсем не понимаю, чем
отличается IM 0 от IM 1 (для Спекки, а не для Z80)? IM 2 - я знаю, про него
можно не объяснять...

Также давно интересует вопрос, как вляют на флаги такие команды, как

LD A, R
LD I, R

Может, просто ссылку кинет кто на книгу, где это хорошо объясняется?
--
Can you help Robin in his quest for the Silver Arrow?

от: SfS
кому: All
дата: 12 Oct 2005
Hello, TomCaT

Tom> Hо, вот обнаружил вдруг, что я совсем не понимаю, чем отличается IM 0 от
Tom> IM 1 (для Спекки, а не для Z80)?
Откроем документ "User Manual Z80 Family CPU User Manual".

Страница 44.
Вольный перевод.
1. IM0. Этот режим совпадает с режимом прерываний 8080 (КР580). В этом режиме,
прерывающее устройство может выставить на шину ЛЮБУЮ инструкцию, которая будет
выполнена процессором. Обычно это инструкции RST nn или CALL nnnn. После
рестарта процессора, включен режим IM0.

Замечание 1 (мое, SfS): При ПУСТОЙ шине спектрума, подтянутой к +5В, будет
считываться код инструкции #FF. Это инструкция RST #38.

Замечание 2 (мое, SfS): Если разрабатывается собственная перефирия, то не грех
использовать режим IM0 для перехода на обработку прерывания от оной. Особо
удобно, что можно давать команду CALL #nnnn. Скажем, при инициализации
переферии в некоторые регистры ее прописывается адрес обработчика прерывания,
(причем произвольный, а не как в IM2), который потом подставляется на шину в
команде CALL #nnnn.

Страница 45.
Вольный перевод.
2. IM1. Когда этот режим задан программистом, то при возникновении прерывания,
происходит безусловный переход по адресу #38.

Замечание 1 (мое, SfS): Поскольку этот адрес совпадает с адресом перехода в
режиме IM0 при ПУСТОЙ шине спектрума, подтянутой к +5В, то в стандартной
конфигурации спектрума (без дополнительной переферии) режимы IM0 и IM1 - HЕ
ИМЕЮТ ОТЛИЧИЙ !

Про IM2 писать не буду - сам все знаешь :)
Документаця - оень полезная вещь :)

от: Ivan Roshin
кому: SMT
дата: 12 Oct 2005
Hello, SMT!

11 Oct 2005 you wrote:

Tom>> LD A, R
Tom>> LD I, R

Команды LD I,R нет - очевидно, имелась в виду LD A,I.

S> флаги 3,5,7 копируются из A. CF не меняется, ZF=1 если A=0.
S> PV ставится в зависимости от того, разрешено ли прерывание

Hо если прерывания разрешены и импульс прерывания пришёл
во время выполнения команды LD A,R (LD A,I), то флаг P/V будет
сброшен, как если бы прерывания были запрещены.
Подробнее об этом здесь:
http://ivr.webzone.ru/articles/ldar_new/

С уважением, Иван Рощин.

от: TomCaT
кому: All
дата: 13 Oct 2005
Hello, SfS

Да, про документацию знал, увы :( , а за всё остальное (и за общение) --
спасибо. Теперь я разобрался :)




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Авторы - список авторов журнала и адрес редакции.
Читы - читы и коды к играм.
CCLFSTM - Новости от Spark group
Игрушки - Скроллинг в Evo SDK.
Повествование - Хронический неудачник.

В этот день...   23 апреля