Дешифрация адреса порта

Материал из SpeccyWiki
Версия от 23:36, 21 ноября 2009; Zxdn (обсуждение | вклад)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

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

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

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

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