Порт FF — различия между версиями

Материал из SpeccyWiki
Перейти к: навигация, поиск
 
(не показано 5 промежуточных версии 2 участников)
Строка 1: Строка 1:
'''Порт #FF (255)''' - "порт атрибутов" - в оригинальном [[ZX Spectrum]] - несуществующий физически порт. Выбор этого адреса являлся исторически сложившимся общепринятым соглашением и не содержал для этого никаких схемотехнических предпосылок, т.е. для тех же целей можно было использовать любой другой незанятый нечётный адрес в адресном пространстве портов.
+
'''Порт #FF (255)''' — незапланированный порт, также известный как '''порт атрибутов'''. В оригинальном [[ZX Spectrum]] порт с таким номером физически отсутстовал. Однако, из-за особенностей схемотехники чтение из любого несуществующего порта с нечётным адресом возвращало байт атрибута отображаемого в данный момент [[знакоместо|знакоместа]]. Эта особенность использовалась в некоторых программах, что приводило к их некорректной работе на отечественных [[Клоны ZX Spectrum|клонах]] ZX Spectrum.
  
Порт обязан своим возникновением аппаратной архитектуре оригинального компьютера [[ZX Spectrum]], который фактически состоял из двух блоков - процессорного блока и блока видеопроцессора, шины данных которых были соединены с помощью резисторов, что удешевляло схему компьютера. Такое соединение позволяло развязать шины от влияния друг друга, но при этом иметь возможность в любой момент читать с другой шины, или писать на неё в момент когда она свободна. Именно наличием возможности читать процессором данные с шины видеопроцессора и обязан своим возникновением этот виртуальный порт. Эффект чтения осмысленных данных возникает при попытке чтения из любого несуществующего порта компьютера, вследствие того, что четвёртый такт, во время которого на шине данных должны выставляться валидные значения с читаемого порта совпадает по времени с тактом чтения видеопроцессором данных атрибутов знакоместа из видеопамяти. А т.к. в процессорном блоке никакой порт в этот момент на шину данных ничего не выдаёт (ввиду отсутствия такого порта), то через резисторы, которыми объединены шины данных двух блоков, из блока видеопроцессора читались текущие данные атрибутов знакоместа. Условный выбор адреса #FF для этого несуществующего порта обусловлен тем, что ввиду упрощённой дешифрации адресов портов, на все чётные адреса откликался порт #xxFE, а порты с меньшими нечётными адресами использовались различным периферийным оборудованием имевшим так же упрощённую дешифрацию. Из всех возможных портов, порт #FF был единственным, который требовал обязательной полной дешифрации и по этой причине был не выгоден для производителей, старавшихся сэкономить на логике дешифрации портов выпускаемых ими устройств. Впоследствии, этому "порту" нашлось применение для определения момента начала сканирования экранной области видеопроцессором. В этот момент считываемые из него данные становились отличными от значения #FF, что свидетельствовало о начале сканирования экранной области и могло быть использовано в программах, синхронизирующих свои действия с началом воспроизведения экранной области. В отечественных клонах, как правило не имевших раздельной памяти, этот порт сам по себе возникнуть не мог, и для полной совместимости с оригинальным [[ZX Spectrum]] специально эмулировался аппаратно.
+
Аналогичный эффект присутствует на компьютерах [[ZX Spectrum 128K]] и [[ZX Spectrum +2]]. В компьютерах [[ZX Spectrum +2A]] и [[ZX Spectrum +3]] чтение из несуществующих портов всегда возвращает #FF.
 +
 
 +
<!--Порт обязан своим возникновением аппаратной архитектуре оригинального компьютера [[ZX Spectrum]], который фактически состоял из двух блоков - процессорного блока и блока [[Видеопроцессор|видеопроцессора]], шины данных которых были соединены с помощью резисторов, что удешевляло схему компьютера. Такое соединение позволяло развязать шины от влияния друг друга, но при этом иметь возможность в любой момент читать с другой шины, или писать на неё в момент когда она свободна. Именно наличием возможности читать процессором данные с шины [[Видеопроцессор|видеопроцессора]] и обязан своим возникновением этот виртуальный порт. Эффект чтения осмысленных данных возникает при попытке чтения из любого несуществующего порта компьютера, вследствие того, что четвёртый такт, во время которого на шине данных должны выставляться валидные значения с читаемого порта совпадает по времени с тактом чтения [[Видеопроцессор|видеопроцессором]] данных атрибутов знакоместа из видеопамяти. А т.к. в процессорном блоке никакой порт в этот момент на шину данных ничего не выдаёт (ввиду отсутствия такого порта), то через резисторы, которыми объединены шины данных двух блоков, из блока [[Видеопроцессор|видеопроцессора]] читались текущие данные атрибутов знакоместа. Условный выбор адреса #FF для этого несуществующего порта обусловлен тем, что ввиду упрощённой дешифрации адресов портов, на все чётные адреса откликался порт #xxFE, а порты с меньшими нечётными адресами использовались различным периферийным оборудованием имевшим так же упрощённую дешифрацию. Из всех возможных нечётных портов, порт #FF был единственным, который требовал обязательной полной дешифрации и по этой причине был не выгоден для производителей, старавшихся сэкономить на логике дешифрации портов выпускаемых ими устройств. Впоследствии, этому "порту" нашлось применение для определения момента начала сканирования экранной области [[Видеопроцессор|видеопроцессором]]. В этот момент считываемые из него данные становились отличными от значения #FF, что свидетельствовало о начале сканирования экранной области и могло быть использовано в программах, синхронизирующих свои действия с началом воспроизведения экранной области. В отечественных клонах, как правило не имевших раздельной памяти, этот порт сам по себе возникнуть не мог, и для полной совместимости с оригинальным [[ZX Spectrum]] специально эмулировался аппаратно.-->
  
 
== Timex Computer 2048 ==
 
== Timex Computer 2048 ==
Компьютер [[Timex Computer 2048]] имеет реальный порт с адресом #FF, управляющий выбором видеорежима.
+
В компьютере [[Timex Computer 2048]] порт #FF используется на запись как порт управления выбором видеорежима.
 +
 
 +
== TR-DOS ==
 +
В [[TR-DOS]] теневой порт #FF используется для доступа к системному регистру контроллера.
 +
 
 +
== Публикации ==
 +
*Радиолюбитель 1/94, ""Секретный" порт Спектрума"
  
 
[[Категория:Порты]]
 
[[Категория:Порты]]

Текущая версия на 23:41, 21 ноября 2009

Порт #FF (255) — незапланированный порт, также известный как порт атрибутов. В оригинальном ZX Spectrum порт с таким номером физически отсутстовал. Однако, из-за особенностей схемотехники чтение из любого несуществующего порта с нечётным адресом возвращало байт атрибута отображаемого в данный момент знакоместа. Эта особенность использовалась в некоторых программах, что приводило к их некорректной работе на отечественных клонах ZX Spectrum.

Аналогичный эффект присутствует на компьютерах ZX Spectrum 128K и ZX Spectrum +2. В компьютерах ZX Spectrum +2A и ZX Spectrum +3 чтение из несуществующих портов всегда возвращает #FF.


Timex Computer 2048

В компьютере Timex Computer 2048 порт #FF используется на запись как порт управления выбором видеорежима.

TR-DOS

В TR-DOS теневой порт #FF используется для доступа к системному регистру контроллера.

Публикации

  • Радиолюбитель 1/94, ""Секретный" порт Спектрума"