ZX PORTs LIST

A15  A14  A13 A12 A11 A10 A9 A8 : A7  A6  A5  A4  A3  A2  A1  A0
__________________________________________________________________
                                :
 X    X    X   X   X   X   X  X : X   X   X   X   X   X   X   X
 T    T    T                      T   T   T           T   T   T
 ¦    <--- #XXFE порт клавиатуры  ¦   ¦   ¦           ¦   ¦   ¦
 ¦    ¦    ¦                      ¦   ¦   ¦           ¦   ¦   ¦ #XXFE
 ¦    ¦    ¦                      0   0*  0*          ¦   ¦   0  порт
 1    0    ¦                      порт #1F            ¦   ¦клавиатуры
#FFFD  #BFFD                  KEMPSTON JOYSTIK        ¦   ¦
AY-3-8910(12)                     ¦                   ¦   0
музыкальный сопроцессор           L- X #7B,#FB 0 ------  порт #XXFD
 ¦    ¦    ¦                       порт принтера       AY-3-8910(12)
 0   0 *  0 *                (напр. ZX-LPRINT II-III)     ¦
порт #7FFD переключатель                                порт #7FFD
страниц RAM-DISK (128K)                              RAM-DISK (128K)

A3 & A4 используются в Interface1


http://zx.pk.ru/showthread.php?t=9585

В фирменном ZX Spectrum (48) предусмотрена возможность блокировки порта #FE (физически реализованного в ULA), с помощью сигнала IORQULA. Этот сигнал выведен на краевой (системный) разъем ZX Spectrum (PIN 13B). Используя IORQULA внешние устройства могут блокировать (отключать) встроенные порты компьютера.

В начале 80-х ZX Spectrum стал «обрастать» периферией, но порты внешних устройств, как правило, вписывались в схему упрощенной адресации и не требовали блокировки встроенного в ZX Spectrum порта #FE. Однако отсутствие стандарта адресации портов приводило к появлению устройств использующих одни и те же адреса портов ввода-вывода. Чтобы избежать конфликтов многие производители использовали особенность физического подключения внешних устройств к ZX Spectrum: последовательное подключение к краевому разъему. Например, ZX Interface 1 подключался непосредственно к ZX Spectrum, к ZX Interface 1 подключался ZX Interface 2, а к ZX Interface 2 подключался ZX Printer.

Аналогичное решение использовалось в Beta Disk Interface который подключенный ближе к компьютеру, мог отключать порты устройств подключенных далее. Для этого использовался сигнал IORQ, который деактивировался (для устройств подключенных далее) при переходе в ПЗУ с TR-DOS и подключении портов ВГ93. Во время клонирования отечественные разработчики повторили и эту особенность фирменной схемы.

Отключение порта #FE ZX Spectrum (через IORQULA) у фирменного контроллера Beta Disk Interface не использовалось. Что касается портов AY и #7FFD, они не отключаются в фирменных ZX Spectrum 128 вообще и контроллерами Beta Disk Interface в частности. Разумеется, наши разработчики могли применять собственные решения, но как это было реализовано в оригинале, я рассказал выше.


 

---T-----T--T--T--T--T--T--T--T--T--T--T--T--T--T-----T----¬
¦15¦14¦13¦12¦11¦10¦09¦08¦07¦06¦05¦04¦03¦02¦01¦00¦ PORT¦PROC¦
+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-----+----+
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ 1  1  1  1¦ #FF ¦ I/O¦-АТРИБУТЫ,ВГ.
¦           ¦           ¦ -  -  -  -¦ -  -  -  -¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ 1  1  1  0¦ #FE ¦ I/O¦- :))
¦           ¦           ¦           ¦          -¦     ¦    ¦
¦ X  X  X  X¦ X  X  X  X¦ 1  1  1  1¦ 1  1  1  0¦#XXFE¦ IN ¦-D0-D4-KEYBOARD
¦ -  -  -  -¦ -  -  -  -¦           ¦          -¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ 1  0  1  1¦ #FB ¦ I/O¦-PRINTER,RS-232,
¦           ¦           ¦ -         ¦    -      ¦     ¦    ¦LPT-COVOX,CHACHE
¦ 0  0  0  0¦ 0  0  0  0¦ 0  1  1  1¦ 1  0  1  1¦ #7B ¦ OUT¦-PRINTER,COVOX-D9,
¦           ¦           ¦ -         ¦    -      ¦     ¦    ¦CHACHE
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ 0  1  1  1¦ #F7 ¦ I/O¦
¦           ¦           ¦           ¦           ¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  0¦ 0  1  1  1¦ #E7 ¦ I/O¦
¦           ¦           ¦           ¦           ¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  0¦ 1  1  1  1¦ #EF ¦ I/O¦-CDOS MODEM
¦           ¦           ¦ -        -¦    -  -  -¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  0  0  1¦ 1  1  1  1¦ #1F ¦ I/O¦-KEMPSTON,
¦           ¦          -¦    -  -   ¦       -  -¦     ¦    ¦ ВГ
¦ 0  0  0  0¦ 0  0  0  0¦ 0  1  1  1¦ 1  1  1  1¦ #7F ¦ OUT¦-ВГ
¦           ¦           ¦           ¦           ¦     ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ #0F ¦ OUT¦ -¬
¦           ¦           ¦    -  -  -¦       -   ¦     ¦    ¦  ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  0  0  1¦ 1  1  1  1¦(#1F)¦ OUT¦ -+->SNDRIVE L.O
¦           ¦           ¦    -  -  -¦       -   ¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  1  0  0¦ 1  1  1  1¦ #4F ¦ OUT¦ -T->SNDRIVE R.O
¦           ¦           ¦    -  -  -¦       -   ¦     ¦    ¦  ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  1  0  1¦ 1  1  1  1¦ #5F ¦ I/O¦ --
¦           ¦           ¦    -  -  -¦       -   ¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 0  0  1  1¦ 1  1  1  1¦ #3F ¦ I/O¦-ВГ
¦           ¦           ¦           ¦           ¦     ¦    ¦
¦ 0  0  0  0¦ 0  0  0  0¦ 1  1  1  1¦ 1  1  0  1¦ #FD ¦ OUT¦-MEMORY 128
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 0  1  1  1¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦#7FFD¦ OUT¦- -"-^
¦ -  -      ¦           ¦           ¦       -   ¦     ¦    ¦ PENTAGON 512
¦ 0  0  0  1¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦#1FFD¦ OUT¦-SCORPION 256
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 1  1  1  1¦ 1  1  0  1¦ 1  1  1  1¦ 1  1  0  1¦#FDFD¦ OUT¦-ATM 512
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 1  1  0  1¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦#DFFD¦ OUT¦-PROFI 1024
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 1  0  1  1¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦#BFFD¦ OUT¦-AY-CHIP WR
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦#FFFD¦ I/O¦-AY-CHIP SEL,RD
¦ -  -  -   ¦       -   ¦           ¦       -   ¦     ¦    ¦
¦ 1  1  1  0¦ 1  1  1  1¦ 1  1  1  1¦ 0  1  1  1¦#EFF7¦ I/O¦-GLUCK PORT
¦ -  -  -  -¦ -  -  -  -¦           ¦ -         ¦     ¦    ¦
¦ 1  0  1  1¦ 1  1  1  1¦ 1  1  1  1¦ 0  1  1  1¦#BFF7¦ I/O¦-CMOS DATA
¦ -  -  -  -¦ -  -  -  -¦           ¦ -         ¦     ¦    ¦
¦ 1  1  0  1¦ 1  1  1  1¦ 1  1  1  1¦ 0  1  1  1¦#DFF7¦ I/O¦-CMOS REG SEL
¦ -  -  -  -¦ -  -  -  -¦           ¦ -         ¦     ¦    ¦
¦ 1  1  1  1¦ 1  0  1  0¦ 1  1  0  1¦ 1  1  1  1¦#FADF¦ IN ¦-K. MOUSE КHОПКИ
¦           ¦    -     -¦    -  -   ¦       -  -¦     ¦    ¦
¦ 1  1  1  1¦ 1  0  1  1¦ 1  1  0  1¦ 1  1  1  1¦#FBDF¦ IN ¦-"-КООРДИHАТА X
¦           ¦    -     -¦    -  -   ¦       -  -¦     ¦    ¦
¦ 1  1  1  1¦ 1  1  1  1¦ 1  1  0  1¦ 1  1  1  1¦#FFDF¦ IN ¦-"-КООРДИHАТА Y
¦           ¦    -     -¦    -  -   ¦       -  -¦     ¦    ¦
L-----------+-----------+-----------+-----------¦-----+-----

 


PORTs

Started - х.з. Last updete - 21 oct 2006

Время от времени буду расширять и дополнять...

Порт #FE

Обслуживание клавиатуры , магнитофона , динамика , бордюра .

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 254 #FE * * * * * * * * 1 1 1 1 1 1 1 0

Дешифруется по A0 .

Двунапрвленный порт , ввод и вывод реализован на раздельных микросхемах .

Значение битов при вводе данных -- D0-D4 - линии ответа клавиатуры (с.м. таблицу) , D6 - данные от магнитофона . D5 и D7 не используются .

Порты линий опроса

Линии опр.

Линии ответа DEC HEX Порты линий опроса BIN
KD4 KD3 KD2 KD1 KD0 A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
KA8 V C X Z CS 65278 #FEFE 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0
KA9 G F D S A 65022 #FDFE 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0
KA10 T R E W Q 64510 #FBFE 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0
KA11 5 4 3 2 1 63486 #F7FE 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0
KA12 6 7 8 9 0 61438 #EFFE 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1 0
KA13 Y U I O P 57342 #DFFE 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 0
KA14 H J K L EN 49150 #BFFE 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0
KA15 B N M SS SP 32766 #7FFE 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0

Управлением опроса клавиатуры занимается спец. подпрограмма ПЗУ (с.м. описание ПЗУ) , которая последовательно цеклически меняет старшие биты (A8-A15) порта #FE .

Значение битов при выводе данных -- D0-D2 - цвет бордюра (с.м. таблицу) , D3 - данные на магнитофон , D4 - динамик . D5 , D6 , D7 не используются .

Выбор цвета бордюра

Цвет
D2
D1
D0
BLACK
0
0
0
BLUE
0
0
1
RED
0
1
0
MAGENTA
0
1
1
GREEN
1
0
0
CYAN
1
0
1
YELLOW
1
1
0
WHITE
1
1
1

Порт #1F (#DF)

Kempston Joystick .

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 31 #1F X X X X X X X X 0 0 0 1 1 1 1 1

Дешифруется по A5 .

Значение битов - D0 LEFT , D1 RIGHT , D2 UP , D3 DOWN , D4 FIRE , D5 D6 D7 не используются , но по стандарту сних должны считываться нули .

http://zx.pk.ru/showpost.php?p=285589&postcount=152

http://zx.pk.ru/showpost.php?p=285646&postcount=154


Порт #FF

Чтение значения атрибутов .

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 255 #FF x x x x x x x x 1 1 1 1 1 1 1 1

Не дешифруется !

В фирменых компьютерах этот порт не дешифруется (его просто нет) , но из-за особенностей архитектуры (шина данных VRAM подключена к шине данных пpоцессоpа чеpез резисторы 470 Ом) при чтении из этого порта , на самом деле считываются данные с ш.д. VRAM которые считывались видео контроллером в последнюю очередь . Обычно это значение атрибута отображаемого в данный момент времени , или значение #FF если контроллер не занят выводом графики .

В наших клонах ш. д. VRAM и пpоцессоpа разделена буфеpным регистром , поэтому из пустого поpта считывается всегда #FF (т.к. шина данных пpоцессоpа подтянута pезистоpами к +5V и ни что на неё не влияет).

Несколько игровых прграмм используют этот порт для синхронизации вывода графики на экран , вследствии чего не работают на клонах . (скорее всего вы найдёте эти программы уже в пропатченном виде , работоспособные на любых клонах)


Порт #FD / #7FFD

Системный порт 128к.

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 253 #FD * * * * * * * * 1 1 1 1 1 1 0 1
Порт 32765 #7FFD 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 1

Дешифруется по A1 и A15 .

Значение битов .

D0 D1 D2 выбор страницы впечатываемой по адресу C000-FFFFh (с.м. таблицу ниже) . D3 выбор экранной области для видео контроллера (RAM-5/RAM-7). D4 выбор версии ПЗУ 0=128 , 1=48 . D5 блокировка системного порта 0=none , 1=blocking . D6 , D7 не используются .

Z80 7FFDh PAGE RAM Sel
  A15 A14 bit 2 bit 1 bit 0 A16M A15M A14M
  0 0 - - - ROM 0 0 0
  0 1 - - - RAM-5 1 0 1
  1 0 - - - RAM-2 0 1 0
0 1 1 0 0 0 RAM-0 0 0 0
1 1 1 0 0 1 RAM-1 0 0 1
2 1 1 0 1 0 RAM-2 0 1 0
3 1 1 0 1 1 RAM-3 0 1 1
4 1 1 1 0 0 RAM-4 1 0 0
5 1 1 1 0 1 RAM-5 1 0 1
6 1 1 1 1 0 RAM-6 1 1 0
7 1 1 1 1 1 RAM-7 1 1 1

Запись в страницу ROM заблокированна , поэтому попытка записи в ROM не изменит страницу RAM-0 .


Порт #EFF7 (Gluck)

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 61431 #EFF7 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1

Дешифруется по A3,A12,A13,A14,A15 .

bit 0 - Hardware Multicolor

(0- выключено, 1- включено)

Атрибут на байт (два цвета на каждые восемь точек по горизонтали). Экранная область в памяти - #4000-57FF (стандартный экран без атрибутов). Область атрибутов - #6000-77FF . Биты 6 и 7 в атрибутах отвечают за "яркость бумаги" и "яркость чернил" . Адреса второго экрана - #C000-C800 , адреса атрибутов второго экрана #E000-E800 .

bit1 - 512x192

(0- выключено, 1- включено)

Однобитный (без атрибутов) расширенный по горизонтали экран . Экранная область чётных (0-62) столбцов - #4000-57FF , не чётных (1-63) столбцов - #6000-77FF . Адреса второго экрана - #C000-C800 и #E000-E800 .

bit2 - Disable Memory Above 128k

(0- нет блокировки, 1- блокированна)

Блокирует память выше 128к .

bit3 - Read/Onli Cahe (старое назначение - TURBO CPU)

(0- запись разрешена, 1- запись запрещена)

Блокировка записи в кеш .

bit4 - GIGASCREEN

Аппаратное цеклическое переключение между экранными областями памяти (первой и второй). Можно использовать совместно с битами 0 или 1 .

bit5 - DMA Sound Blaster

Звуковая карта использующая возможности видео контроллера для аппаратного проигрывания сэмплов .

bit6 - 384x304

Без бордюрный видео режим .

bit7 - CMOC

Часы реального времени . Запись/чтение данных через порт #BFF7 . Выбор регистров через порт #DFF7 .

.

DEC HEX BIN
A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0
Порт 61431 #EFF7 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1
Порт 49143 #BFF7 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1
Порт 57335 #DFF7 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 1

 


 


НОМЕ