[Z80] Memory Banks (SINCLAIR 128)

Hardware issues, electronic components, schemas, Arduino, STM32, Robots, Sensors
Post Reply
Administrator
Site Admin
Posts: 81
Joined: 26-Feb-2014, 17:54

[Z80] Memory Banks (SINCLAIR 128)

Post by Administrator » 18-Dec-2021, 20:22

Компьютер SINCLAIR 128 имеет ОЗУ объёмом 128КБ, которое разделено на 8 банков памяти по 16 килобайт и которые условно нумеруются от 0 до 7. В системе имеется регистр (или порт?) конфигурации, который доступен программисту и имеет адрес 7FFDH. С помощью записи в этот регистр мы можем менять конфигурацию системы т.е. переключать ПЗУ, банки ОЗУ и т.д. Регистр конфигурации имеет 6 разрядов.

Первые три (с 0-го по 2-й) разряда определяют один из восьми банков, подключенный в последний сектор адресного пространства процессора.
3-й определяет один из 2-х банков, который будет подключен в первый сектор адресного пространства и отображен на экран:
  • 0 - подключен 5-й банк,
  • 1 - подключен 7-й банк.
4-й разряд определяет ПЗУ:
  • 0 - подключена прошивка BASIC 128,
  • 1 - BASIC 48.
5-й разряд заведует блокировкой записи в регистр конфигурации:
  • 0 - запись разрешена,
  • 1 - запись блокирована.
Это необходимо для работы в режиме SINCLAIR 48.

Administrator
Site Admin
Posts: 81
Joined: 26-Feb-2014, 17:54

Re: [Z80] Memory Banks (SINCLAIR 128)

Post by Administrator » 18-Dec-2021, 20:24

Code: Select all

        АДРЕС Z-80         СЕКТОР                             ПЗУ 32К
                      ---------------¬                    --------------¬
        0000-3FFF     ¦     16K      ¦ ___¦0 в разряде 4--+BASIC 128 16K¦
                      ¦  0-й сектор  ¦    ¦1 в разряде 4--+BASIC 48  16K¦
                      +--------------+                    L--------------
        4000-7FFF     ¦     16K      ¦ ___                    ОЗУ 128К
                      ¦  1-й сектор  ¦    ¦1 в разряде 3--+7-й БАНК 16К ¦
                      +--------------+    ¦               ¦6-й БАНК 16К ¦
        8000-BFFF     ¦     16К      ¦    ¦0 в разряде 3--+5-й БАНК 16К ¦
                      ¦  2-й сектор  ¦                    ¦4-й БАНК 16К ¦
                      +--------------+                    ¦3-й БАНК 16К ¦
        C000-FFFF     ¦     16К      ¦--------------------¦2-й БАНК 16К ¦
                      ¦  3-й сектор  ¦     любой из       ¦1-й БАНК 16К ¦
                      L---------------     8-ми           ¦0-й БАНК 16К ¦
                                           БАНКОВ ОЗУ     L--------------
                                000 в разрядах 2 - 0 - 0-й БАНК
                                001 ------------------ 1-й БАНК
                                ...............................
                                111 ------------------ 7-й БАНК

Administrator
Site Admin
Posts: 81
Joined: 26-Feb-2014, 17:54

Re: [Z80] Memory Banks (SINCLAIR 128)

Post by Administrator » 18-Dec-2021, 22:13

Наличие большого количества оперативной памяти позволило несколько расширить возможности отображения информации: в
ZX Spectrum 128 есть две экранные области памяти (так называемые видеостраницы). Одна — стандартная, такая же, как и в обычном Speccy. Она расположена в адресах #4000...#5AFF, следовательно, в банке памяти RAM5. Вторая находится в начале банка оперативной памяти RAM7. Обратиться к этой памяти можно только тогда, когда этот банк установлен в разделе CPU3 микропроцессора. Строение экрана при этом осталось неизменным, таким образом, все элементы экрана оказываются расположенными в адресном пространстве #C000...#DAFF.
Spec128Banks.png
Spec128Banks.png (13.8 KiB) Viewed 8811 times

Administrator
Site Admin
Posts: 81
Joined: 26-Feb-2014, 17:54

Re: [Z80] Memory Banks (SINCLAIR 128)

Post by Administrator » 18-Dec-2021, 22:22

Начиная с адреса #c000 (49152) длинною #4000 (16384) находится область, в которую можно включить другую страницу. Этим заведует порт #7ffd, он стандартен для всех 128к машин.

Code: Select all

ld bc,#7ffd ; порт
ld a,1 ; 1й банк
or #10 ; пзу 48к
out (c),a ; переключить!
Механизм страничной адресации памяти, а также музыкальный процессор и иная организация принтера потребовал расширения стандартных внешних устройств, обрабатываемых «внутри» компьютера. Выше писалось, что выбор устройств в ZX Spectrum осуществляется сбросом в ноль какого-либо разряда шины адреса. Для ZX Spectrum 128 это верно только наполовину. Действительно, для обращения к дополнительным портам в младших восьми разрядах устанавливается в ноль адрес А1. Таким образом, общий адрес внешних устройств должен быть #FD. Выбор же конкретного устройства определяют адреса А14 и А15.

Порт 32765 l#7FFD, %1111111111111101)

Отдельными битами этого порта осуществляется управление конфигурацией компьютера. Отметим, что этот порт доступен только для записи, поэтому интерпретатор Бейсика в системных переменных по адресу 23388 (#5В5С) хранит копию этого регистра.
Read more

Administrator
Site Admin
Posts: 81
Joined: 26-Feb-2014, 17:54

Re: [Z80] Memory Banks (SINCLAIR 128)

Post by Administrator » 18-Dec-2021, 22:37

Порт 49149 (#BFFD, %1011111111111101)
Порт 65533 (#FFFD, %1111111111111101)

Через эти порты осуществляется адресация восьмиразрядных регистров музыкального процессора. Всего таких регистров шестнадцать, мы будем обозначать их R0...R15. Регистры двунаправленные, то есть информацию в них можно записывать и считывать. Для доступа к какому-либо регистру его номер (число в диапазоне от 0 до 15) необходимо записать по адресу 65533 (#FFFD).

После этого становится возможна передача данных между этим «установленным» или текущим регистром и микропроцессором. Для смены текущего регистра соответствующий номер нужно записать в порт 65533, и так далее.

Обратите внимание, что адреса для чтения и записи информации в текущий регистр музыкального процессора различны. Для записи байта
нужно выполнить команду вывода в порт с адресом 49149, а для чтения — команду ввода из порта с адресом 65533 (#FFFD).

Прежде, чем разобрать функции отдельных регистров музыкального процессора, остановимся на его особенностях. Микросхема музыкального
процессора имеет три независимых канала для формирования звука (обозначаются А, В и С) и два двунаправленных восьмиразрядных канала ввода/вывода — IRA и IRB, соответственно. Через канал IRA осуществляется связь с принтером, вывод сигналов для специального музыкального интерфейса MIDI и, кроме этого, связь со специальной выносной клавиатурой функциональных клавиш, используемых в расширенном интерпретаторе Бейсика.

Регистры R0/R1, R2/R3, R4/R5

Три спаренных регистра R0/R1, R2/R3, R4/R5 используются для выработки частоты тона соответственно каналов А, В и С. Необходимые двенадцатиразрядные значения образуются из восьми бит младшего по номеру регистра и четырех младших бит старшего по номеру регистра.

Регистр R6 - Младшие пять разрядов этого регистра задают частоту шума.

Регистр R7 - Через этот регистр осуществляется управление звуковыми каналами и регистрами ввода/вывода.

Регистры R8, R9 и R10 - Младшие пять разрядов регистров R8, R9 и R10 управляют соответственно амплитудой каналов А, В и С.

Регистры R11/R12 - Спаренные регистры R11/R12 образуют шестнадцатиразрядное значение огибающей выходного сигнала, регистр R11 несет младший байт, а R12 — старший.

Регистр R13 - Младшие четыре разряда этого регистра управляют формой и режимом огибающей выходного сигнала:
бит 0 — затухание;
бит 1 — чередование;
бит 2 — нарастание;
бит 3 — продолжение.

Регистры R14 и R15
Регистры R14 и R15 используются соответственно для связи с каналами ввода/вывода IRA и IRB. Содержимое этих регистров можно в любой момент считывать и записывать, на формировании звука это никак не отражается.

Post Reply