Страницы, распределение памяти
Здесь так же приведено описание схемы распределения памяти Sprinter-97. (Для Sp2000 в данный момент она такая же.)
Структура схемы распределения основной памяти Спринтера является двухуровневой.
Основная память компьютера – 4Mb – разделена на блоки по 16kb, задаваемые однобайтовым номе- ром. Эти блоки подключаются к логическим блокам Спектрумовской схемы распределения памяти. Что бы не путать понятия я буду называть блоки основной памяти физическими и писать их номера шестна- дцатеричными цифрами – #00..#FF. Блоки спектрумовской схемы распределения памяти я буду называть логическими блоками и писать их номера в десятичной системе – 0..15.
Адресное пространство процессора Z80 разделено на 4 окна с адресами #0000..#3FFF, #4000..#7FFF, #8000..#BFFF и #C000..#FFFF, которые для краткости я буду называть окнами с номерами 0, 1, 2 и 3. В каждом окне процессора располагается логический блок памяти согласно Спектрумовскому распределению. В окно 0 подключено ПЗУ, в окно 1 – страница 5, в окно 2 – страница 2, в окно 3 любая из страниц 0..7 для режима Spectrum-128, 0..15 для режима Scorpion-256 и 0..31 для режима Pentagon-512. Кроме этого, в режиме Scorpion-256 вместо ПЗУ может быть подключена логическая страница с номером 0.
Каждый логический блок имеет свой собственный физический номер подключаемой в него страницы ОЗУ. Логические страницы с номерами 0, 2 и 5 имеют дублированные номера, один для жесткого подклю- чения в окна 0, 1, 2 процессора, второй для подключения в окно 3. В режиме Спектрума номера физических страниц, выставленные в этих блоках, совпадают.
Аналогичным образом на 16kb блоки разделено ПЗУ и КЭШ-ОЗУ. Физический номер страницы ПЗУ имеет значения #E0..#EF, а КЭШ – #F0..#FF. Реально на данный момент для адресации КЭШ ОЗУ используются только 2..1 биты из этого номера.
Каждая страница ПЗУ или ОЗУ имеет свой порт, в котором указывается физический номер страницы. Всего таких портов страниц памяти 32 (в режиме Pentagon-512 добавляются еще 16 портов). 16 портов отвечают за номера страниц ОЗУ, подключаемые в третье окно процессора. Еще три порта отвечают за подключение страниц ОЗУ в окна 0..2 Восемь портов используются для подключения различных страниц ПЗУ. Один порт – для подключения страницы КЭШ-а вместо ПЗУ. И один порт – это порт системной страницы, подключаемой на место ПЗУ сразу после сброса машины по клавишам Ctrl+Alt+Del.
Оставшиеся 3 порта страниц памяти остаются на данный момент в резерве. Схема распределения памяти позволяет подключить в адресное пространство процессора не только ОЗУ или ПЗУ, но и порты и память ISA карт, вставляемых в слот.
При подключении в адреса #C000..#FFFF скорпионовских расширенных страниц ОЗУ, на их место можно переадресовать слоты. Для этого надо просто записать в порт одной из этих страниц значение, соответствующее ISA-слоту, к которому необходимо произвести обращение. Это значение так же указывает к чему ведется обращение, к портам или памяти слота (конкретные номера будут расписаны ниже).
В некоторых конфигурациях схема распределения памяти упрощается для освобождения ресурсов ППЛМ. Могут отсутствовать порты #1FFD и #7FFD, а так же упрощается схема работы с устройствами, отображаемыми на память.