Дешифрация адреса порта — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
(Новая страница: «'''Дешифрация адреса порта''' выполняется внешним, относительно процессора, устройством дл…»)
 
Строка 11: Строка 11:
 
[[Категория:Железо]]
 
[[Категория:Железо]]
 
[[Категория:Термины]]
 
[[Категория:Термины]]
 +
[[Категория:Порты]]

Версия 23:36, 21 ноября 2009

Дешифрация адреса порта выполняется внешним, относительно процессора, устройством для определения факта обращения к нему. При этом схема определяет состояние отдельных линий шины адреса, и если оно совпадает с заданным в схеме, происходит выбор устройства.

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

Однако, для упрощения и удешевления схемы большинство устройств для ZX Spectrum, включая штатные устройства в оригинальных моделях, периферийные устройства и различные отечественные доработки, используют упрощённую дешифрацию. При этом проверяется состояние только нескольких линий шины адреса. В этом случае выборка устройства может происходить при обращении к разным адресам, а также возникает больше возможностей для конфликтов портов различных устройств.

Наиболее типичным примером неполной дешифрации являются порты внутренних устройств в компьютере Ленинград, в котором все чётные адреса работают как порт #FE, а все нечётные как Kempston joystick.

Примером проблем, которые возникают при использовании неполной дешифрации, является порт #7FFD в компьютере Пентагон, в котором не учитывается старший байт адреса. Это привело к широкому распространению в отечественных программах обращения к этому порту по короткому адресу #FD, что создало проблему совместимости этих программ с другими клонами.