PC-01 Lviv http://pc01.lviv.ua/forum/ |
|
Команды процессора RST0...RST7, DI,EI http://pc01.lviv.ua/forum/viewtopic.php?f=4&t=364 |
Page 1 of 1 |
Author: | als [ 27 Nov 2019, 17:14 ] |
Post subject: | Команды процессора RST0...RST7, DI,EI |
Как-то однажды на просторах форума (или еще где-то), я прочитал что команды процессора RST0...RST7, DI, EI - во "ЛЬВОВ"-е не реализованы! Я не заострил тогда внимания на том, что "не реализованы", это ж не значит что они не работают?! Можна ли их реализовать в программах? т.е. имеется ввиду будут ли они работать на реальном ПК-01 если их задействовать. Реализовывали ли их в играх (если да каких именно, если нет, то почему) ? (тонкости работы данных команд их я еще не рассматривал, но насколько я понял, то каждая RST "привязана" к конкретному адресу начала памяти = ( (RST0...RST7) *8 ) и при применении их в программе, они ведут себя подобно CALL с разницей, что адрес фиксированный) EI - Разрешение прерываний. DI - Запрет прерываний. Т.е. насколько я понял при применении DI, EI, будет включаться или выключаться (игнорироваться) команды RST0...RST7 ? |
Author: | Zelya [ 28 Nov 2019, 13:08 ] |
Post subject: | Re: Команды процессора RST0...RST7, DI,EI |
RST0...RST7 - это команды прерываний. Их вызов будет аналогичен CALL 0 CALL 8 CALL 16 и т.д. Основная идея заключается в том, что к процессору можно подключить какую-нибудь аппаратную приблуду, которая будет вызывать их сама. Чаще всего, это - таймер. Например, если подключить аппаратный таймер, скажем 50Гц, к прерыванию №2, то каждые 20 мс у нас автоматически будет вызываться код расположенный по адресу 16. Увы, в ПК-01 это все не реализировано. Т.е. нет ни одной приблуды, которая бы вызывала прерывания аппаратно. Их можно вызвать програмно. Хотя, обычно их редко используют. Единственный известный мне пример, это перекомпиляции с Z80. CALL c адресом занимает 3 байта, а RST - один байт, что позволяет экономить место в макросах, которые заменяют расширенные команды Z80. EI и DI в 8080 не реализированы (только в 8085), стало быть в ПК-01 Львов они не работают. Но, если мне не изменяет память, они блокируют только аппаратные прерывания. Софтверные RST будут работать, как и прежде (но на 100% не уверен). |
Author: | als [ 28 Nov 2019, 13:22 ] |
Post subject: | Re: Команды процессора RST0...RST7, DI,EI |
Спасибо за разъяснения. В общем, проще выражаясь - выкинуть их из внимания и никогда не возвращаться к ним! |
Author: | sadfsdfsdaf [ 26 Jul 2020, 10:41 ] |
Post subject: | Re: Команды процессора RST0...RST7, DI,EI |
Quote: Их можно вызвать програмно. Хотя, обычно их редко используют. Единственный известный мне пример, это перекомпиляции с Z80.
микрософтовский бейсик в ПЗУ их использует для парсинга (там 2 байта получается вместе с данными: RST не_помню_номер 'ожидаемый_символ')Quote: EI и DI в 8080 не реализированы (только в 8085), стало быть в ПК-01 Львов они не работают. Но, если мне не изменяет память, они блокируют только аппаратные прерывания. Софтверные RST будут работать, как и прежде (но на 100% не уверен).
всё так, но в ПЗУ они почему-то используются и, кстати, по прерыванию процессору на шину выставляется команда, так что фактически по прерываниям процессор мог бы выполнять любую однобайтовую команду (например INR B) без захода в подпрограммы.
|
Author: | DenVW [ 07 May 2024, 15:20 ] |
Post subject: | Re: Команды процессора RST0...RST7, DI,EI |
Действительно, команды RST0...RST7, DI и EI имеют свою специфику работы и важны для управления прерываниями в процессоре. Команды RST0...RST7 используются для вызова прерываний в процессоре Intel 8080, на котором базируется архитектура ПК-01 "Львов". Каждая из этих команд вызывает прерывание на определенный адрес вектора прерывания, который зависит от номера RST-команды. Так, RST0 вызывает прерывание на адрес 0000h, RST1 на 0008h и т.д. до RST7, который вызывает прерывание на адрес 0038h. DI и EI, как вы правильно отметили, служат для разрешения (Enable) и запрещения (Disable) маскируемых прерываний соответственно. По поводу реализации этих команд в ПК-01 "Львов" и их влияния на работу программ, необходимо учитывать следующее: 1. Не реализовано может означать, что данные команды не были реализованы на уровне микрокода или железа, поэтому они могли бы игнорироваться процессором. 2. Однако, в большинстве случаев, программное обеспечение могло бы реализовать их функциональность на уровне программы. Например, для имитации этих команд можно использовать другие инструкции или процедуры вызова прерываний. 3. Разрешение (EI) и запрещение (DI) прерываний влияют на обработку внешних прерываний (маскируемых). Если прерывания запрещены (DI), то инструкции RST0...RST7 не будут вызывать прерывания, даже если их адреса в памяти программы используются. Если прерывания разрешены (EI), то они могут быть обработаны. 4. Однако, стоит отметить, что в контексте применения ПК-01 "Львов" и написания игр для него, использование прерываний и соответственно команд RST0...RST7 не было широко распространено из-за специфики архитектуры и низкого уровня аппаратного взаимодействия. Таким образом, хотя некоторые команды и могли быть не реализованы на уровне аппаратуры ПК-01 "Львов", их функциональность вполне можно было бы реализовать на уровне программного обеспечения, если это было бы необходимо для конкретного приложения или игры. |
Page 1 of 1 | All times are UTC+03:00 |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |