14.3. Доступ к портам ввода-вывода. Массивы Port и PortW

Массивы Port и PortW аналогичны массивам Mem, с той лишь разницей, что проиндексированы они не адресами, а номерами портов ввода-вывода. С помощью предопределенного массива Port можно обмениваться данными с 8-битовыми портами, а с помощью PortW — с 16-битовыми. Под поротом понимается нумерованный канал ввода-вывода, подсоединенный к процессору. Все взаимодействие с периферией ПЭВМ осуществляется через порты (в том числе работа дисплея, серийных портов, динамика, клавиатуры и т.п.). Если  ссылка на Port или PortW стоит справа в присваивании, например:

PostStatusVar := PortW[$61]; {чтение из порта}

то это означает чтение из порта с данным номером. Но если Port или PortW стоит слева, то это имеет смысл записи (посылки) в порт значения:

Num := $64;

Port[ Num ] := ByteVar {запись в порт}

Имена Port и PortW могут стоять только в операторах присваивания. Будет ошибкой обращение к Port или PortW без указания индекса. Не имеет смысла взятие адреса массивов Port или их отдельных элементов. Максимальное значение номера порта равно $3FFF.