Дешифрация адреса порта — различия между версиями
Zxdn (обсуждение | вклад) |
Zxdn (обсуждение | вклад) |
||
Строка 11: | Строка 11: | ||
[[Категория:Железо]] | [[Категория:Железо]] | ||
[[Категория:Термины]] | [[Категория:Термины]] | ||
− | [[Категория:Порты]] | + | [[Категория:Порты|*]] |
Текущая версия на 23:36, 21 ноября 2009
Дешифрация адреса порта выполняется внешним, относительно процессора, устройством для определения факта обращения к нему. При этом схема определяет состояние отдельных линий шины адреса, и если оно совпадает с заданным в схеме, происходит выбор устройства.
В идеальном случае дешифрация адреса должна выполняться полностью, с проверкой каждой линии шины адреса. Тогда такой порт будет доступен в системе только по одному адресу и не будет конфликтовать с портами на других адресах, при условии, что для них тоже используется полная дешифрация.
Однако, для упрощения и удешевления схемы большинство устройств для ZX Spectrum, включая штатные устройства в оригинальных моделях, периферийные устройства и различные отечественные доработки, используют упрощённую дешифрацию. При этом проверяется состояние только нескольких линий шины адреса. В этом случае выборка устройства может происходить при обращении к разным адресам, а также возникает больше возможностей для конфликтов портов различных устройств.
Наиболее типичным примером неполной дешифрации являются порты внутренних устройств в компьютере Ленинград, в котором все чётные адреса работают как порт #FE, а все нечётные как Kempston joystick.
Примером проблем, которые возникают при использовании неполной дешифрации, является порт #7FFD в компьютере Пентагон, в котором не учитывается старший байт адреса. Это привело к широкому распространению в отечественных программах обращения к этому порту по короткому адресу #FD, что создало проблему совместимости этих программ с другими клонами.