PC-01 Lviv

It is currently 08 May 2024, 00:43

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00




Post new topic  Reply to topic  [ 5 posts ] 
Author Message
PostPosted: 27 Nov 2019, 17:14 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Как-то однажды на просторах форума (или еще где-то), я прочитал что
команды процессора RST0...RST7, DI, EI - во "ЛЬВОВ"-е не реализованы!
Я не заострил тогда внимания на том, что "не реализованы", это ж не значит что они не работают?!
Можна ли их реализовать в программах? т.е. имеется ввиду будут ли они работать на реальном ПК-01 если их задействовать.
Реализовывали ли их в играх (если да каких именно, если нет, то почему) ?

(тонкости работы данных команд их я еще не рассматривал, но насколько я понял, то каждая RST "привязана" к конкретному адресу начала памяти = ( (RST0...RST7) *8 ) и при применении их в программе, они ведут себя подобно CALL с разницей, что адрес фиксированный)
EI - Разрешение прерываний.
DI - Запрет прерываний.
Т.е. насколько я понял при применении DI, EI, будет включаться или выключаться (игнорироваться) команды RST0...RST7 ?


Top
   
PostPosted: 28 Nov 2019, 13:08 
Offline
Site Admin
User avatar

Joined: 24 Jul 2008, 12:05
Posts: 1070
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% не уверен).


Top
   
PostPosted: 28 Nov 2019, 13:22 
Offline

Joined: 18 May 2016, 19:55
Posts: 426
Спасибо за разъяснения.
В общем, проще выражаясь - выкинуть их из внимания и никогда не возвращаться к ним!


Top
   
PostPosted: 26 Jul 2020, 10:41 
Offline

Joined: 07 Dec 2010, 16:54
Posts: 227
Quote:
Их можно вызвать програмно. Хотя, обычно их редко используют. Единственный известный мне пример, это перекомпиляции с Z80.
микрософтовский бейсик в ПЗУ их использует для парсинга (там 2 байта получается вместе с данными: RST не_помню_номер 'ожидаемый_символ')
Quote:
EI и DI в 8080 не реализированы (только в 8085), стало быть в ПК-01 Львов они не работают. Но, если мне не изменяет память, они блокируют только аппаратные прерывания. Софтверные RST будут работать, как и прежде (но на 100% не уверен).
всё так, но в ПЗУ они почему-то используются и, кстати, по прерыванию процессору на шину выставляется команда, так что фактически по прерываниям процессор мог бы выполнять любую однобайтовую команду (например INR B) без захода в подпрограммы.


Top
   
PostPosted: 07 May 2024, 15:20 
Offline
User avatar

Joined: 01 Feb 2021, 15:49
Posts: 13
Действительно, команды 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 "Львов", их функциональность вполне можно было бы реализовать на уровне программного обеспечения, если это было бы необходимо для конкретного приложения или игры.

_________________
https://radiowave.com.ua/ 8)


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 5 posts ] 

Forum Games WEB Tape Loader Twitter RSS

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 6 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:
Powered by phpBB® Forum Software © phpBB Limited