Стандартизация и развитие портов ZX Spectrum
|
|
Black_Cat | Дата: Среда, 11.11.2009, 03:11 | Сообщение # 1 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| Стандартизация и развитие портов ZX Spectrum
1.0 Порт #EFF7 и его развитие.
Исторически этот порт был предложен В.М.Г. для управления дополнительными видеорежимами и впоследствии развивался безсистемно, хаотически и нерационально. Свой окончательный вид этот порт получил в реализации компьютера Pentagon-1024SL v.2.2. В окончательной редакции четыре бита порта были отданы под управление видеорежимами, остальные - под системное управление. При этом дальнейшее развитие системы управления видеорежимами стало невозможным ввиду отсутствия свободных разрядов порта. Т.к. для переключение видеорежимов желательно единомоментное изменения вех параметров, самым оптимальным вариантом было бы осуществлять такое переключение записью одного байта в один порт. В качестве решения проблемы нехватки свободных разрядов, предлагается концепция изменения архитектуры портов управления "Tetraport", разработаная в рамках объединительной концепции развития системы портов "Xiмera".
1.1 "Tetraport" #ExF7.
Суть предлагаемого решения состоит в разделении разрядов порта #EFF7 на две группы и организации дешифрации выборки каждой группы так, чтобы она была доступна одновременно по двум адресам. По нативному #EFF7, и по другому, индивидуальному, адресу для каждой группы. Таким образом по вторым адресам каждая из групп получала бы дополнительные четыре бита для дальнейшего развития управления. При этом полностью сохраняется программная совместимость со старым софтом использующим только порт #EFF7, а для нового программного обеспечение появляется возможность использования новых режимов. Условно эти группы разрядов тетрапорта можно назвать "нижняя" (D0, D1, D5, D6) - "видеорежимная" (TVL - Tetra Video Low), и "верхняя" (D2, D3, D4, D7) - "системная" (TSH - Tetra System High). Метод достижения такого разделения дешифрации половинок порта #EFF7 основавывается на том, что этот порт никогда не имел полной дешифрации, поэтому организовав выборку по незадействованым в настоящее время разрядам можно получить требуемое количество дополнительных портов.
Существующая дешифрация порта #EFF7 в компьютере Pentagon-1024SL v.2.2 : %1110xxxxxxxx0xx1 Предлагаемая дешифрация порта #EFF7 в концепции "Tetraport" : 11101111xxxx0111
В предложенной дешифрации разряды А8-А9 служат для разделения выборки различных комбинаций половинок тетрапорта по четырём адресам следующим образом:
#EFF7 = TVL+TSH - доступ одновременно к нижней видео и верхней системной половинке тетрапорта; #EEF7 = TVL+TVH - доступ одновременно к нижней и верхней видео половинкам тетрапорта; #EDF7 = TSL+TSH - доступ одновременно к нижней и верхней системной половинкам тетрапорта; #ECF7 = TSL+TVH - доступ одновременно к нижней системной и верхней видео половинке тетрапорта;
Таким образом, дополнительно, у программиста появляется возможность оптимизации программ за счёт выбора в разных случаях одого из четырёх портов управления.
Такая система развития портов не имеет недостатков, т.к. программное обеспечение использующее только старые возможности может по прежнему обращаться для их реализации к порту #EFF7. Кроме обеспечения развития системы управления в рамках концепции "Tetraport", решено ряд локальных задач систематизации управления памятью компьютера, а так же придана осмысленность существованию и логике работы бита D7 #EFF7, имевшего ранее весьма сомнительную осмысленность своего существования.
1.2 Порты отображения: #EFF7(%11101111xxxx0111) и #ECF7(%11101100xxxx0111).
WR #EFF7 и #ECF7 - это порты, на которые отображаются разные половинки тетравидео и тетрасистемного порта, доступны для записи всегда.
RD #EFF7 - возвращает значение этого порта.
RD #ECF7 - возвращает значение этого порта.
1.3 TetraSystem port WR #EDF7.
WR #EDF7 - тетрасистемный порт физически состоит из двух четырёхбитных половинок-регистров:
TSL (D0, D1, D5, D6) - выбирается по адресам #EDF7 и #ECF7, доступен для записи всегда. TSH (D2, D3, D4, D7) - выбирается по адресам #EDF7 и #EFF7, доступен для записи всегда.
RD #EDF7 - возвращает значение этого порта.
RESET: все разряды обнуляются.
Назначение разрядов #EDF7:
D2 #EDF7 (#EFF7) - blkD5#7FFD - D2=0 - Extended Memory Managetment mode (EMM mode) - отменяет функцию защёлки режима 48к битом D5 #7FFD, открывает доступ к расширенному управлению памятью сверх 128k, D2=1 - Native Memory Managetment mode (NMM mode) - запрещает доступ к управлению памятью сверх 128k.
D3 #EDF7 (#EFF7) совместно с битом D0 #1FFD задаёт режим работы страниц ОЗУ и ПЗУ подставляемых в окно CPU0.
|D0#1FFD|D3 r/wCPU0 MANAGETMENT - биты определяют режим работы и тип памяти в окне CPU0 |_0 _____|_0 - rdROM - в окне CPU0 доступно ПЗУ только на чтение |_0 _____|_1 - rdROM & wrRAM - в окне CPU0 доступно одновременно ПЗУ на чтение и ОЗУ на запись |_1 _____|_0 - r/wRAM - в окне CPU0 доступно ОЗУ на чтение и запись |_1 _____|_1 - rdRAM - в окне CPU0 доступно ОЗУ только на чтение
D4 #EDF7 (#EFF7) - Turbo port: 0-on, 1-off - в Pentagon-1024SL v2.2 переключает тактовую частоту процессора 7/3,5MHz. D0, D1, D5, D6 #EDF7 (#ECF7), и D4 #EDF7 (#EFF7) задают коэффициент турбирования компьютера.
|D1|D0|D6|D5|D4| TURBO mode: | 0 | 0 | 0 | 0 | 0 | n=max | 0 | 0 | 0 | 0 | 1 | n=1 | 0 | 0 | 0 | 1 | 0 | n=2 - - - - - - - - - - - - - | 1 | 1 | 1 | 1 | 1 | n=31
D7 #EDF7 (#EFF7) - IODOS: 0-off, 1-on - D7=1 - инициирует теневой режим IODOS, открывает доступ ко всем портам доступным в режиме TR-DOS, а так же портам Gluk RTC, при этом ПЗУ TR-DOS не активируется, кроме того вырабатывает инверсный сигнал IODOS/, подаваемый на линию B20 шины NemoBus v.1.1, предназначенный для активации DOS портов внешних устройств.
1.4 TetraVideo port #EEF7.
Основу тетравидеопорта составляют разряды D0, D1, D5, D6 #EFF7, отвечавшие за видеорежимы в компьютере Pentagon-1024SL v.2.2. При разработке системы управления тетравидеопорта основным критерием была системность, максимальная прозрачность и простота логики управления, и вместе с тем возможность эволюционного развития и масштабируемости видеорежимов. В тетравидеопорте назначение всех разрядов строго детерминировано, и подобрано так, чтобы исключить пересечение логических функций управления, и тем самым максимально упростить структуру электронных цепей управления. В связи с этим, в некоторые видеорежимы не вписывавшиеся в логику управления, были внесены изменения. Биты D0, D1 #EFF7 сохранили своё функциональное назначение и логику работы, но получили зависимость от дополнительных разрядов тетрапорта. Бит D5 #EFF7 определён под Multicolor. Окончательно аннулирован использовавшийся ранее неудачный и принципиально не масштабируемый видеорежим 384х304, управлявшийся битом D6 #EFF7, вместо этого видеорежима определён режим-модификатор - аппаратный Gigascreen. Изменена логика формирования комбинаций видеорежимов. Управление разделено на выбор видеорежима и на задание параметров-модификаторов видеорежима. Всего базовых видеорежимов четыре: стандартный (ZX), Flashcolor (FC), Multicolor (MC) и безатрибутный режим. Подрежимы последнего, полученные с помощью параметров-модификаторов имеют индивидуальные названия: монохромный бинарный режим - Monochrome (M), 4-цветный режим – 4 color (4c), и 15-цветный режим - 16color (16с). В группу параметров - модификаторов видеорежимов входят следующие параметры: удвоения разрешения по горизонтали (2h) и вертикали (2v), параметр наложения экранов – Gigascreen+/Gigascreen (G+/G), параметр изменения базового разрешения – BiScreen (BS), параметр кратности двум количества байт считываемых видеопроцессором на строку стандартного знакоместа (1x, 2x, 4x, 8x). Новые видеорежимы синтезированы с учётом линейности масштабирования, т.е. так, чтобы не возникало повторов характеристик видеорежимов при использовании модификаторов видеорежимов. Исходя из этих предпосылок, логика генерирования видеорежимов базируется на следующих предпосылках: - имеются 4 базовых видеорежима, полученные методом модификации экранных атрибутов; - комбинационные видеорежимы группируются по критерию равного количества байт считываемых видеопроцессором за время отображения строки стандартного знакоместа; Исходя из заданных предпосылок, имеем следующую таблицу логики синтезирования видеорежимов:
1.4.1 Синтез режимов со стандартными атрибутами:
. . D0=0 D4=0 . . . . D0=1 D4=0 . . . . . . D0=0 D4=1 . . . . . . . D0=1 D4=1 . ZX <--> M2h .| 2xZX <--> ZX2h . | 4xZX <--> 2xZX2h . | 8xZX <--> 4xZX2h . ^ . . . . . . ^ .| . . ^ . . . . . .^ . . | . .^ . . . . . . . ^ . . | . . ^ . . . . . . . .^ . . . 0 . | . . . . . . .| . | . . | . . . . . . | . . | . . | . . . . . . . .| . . | . . | . . . . . . . . | . . . D6 . v . . . . . . .v .| . . v . . . . . . v . . |. . .v. . . . . . . . v . . | . . v . . . . . . . . v . . . 1 MG+ <--> M2hG| ZXG+ <--> M2hG+| 2xZXG+ <--> ZX2hG+| 4xZXG+ <--> 2xZX2hG+
1.4.2 Синтез Flashcolor режимов:
. FC <--> M2h . | 2xFC <--> FC2h. .| 4xFC <--> 2xFC2h . | 8xFC <--> 4xFC2h . ^ . . . . . . ^ .| . . ^ . . . . . .^ . . | . .^ . . . . . . . ^ . . | . . ^ . . . . . . . .^ . . . 0 . | . . . . . . .| . | . . | . . . . . . | . . | . . | . . . . . . . .| . . | . . | . . . . . . . . | . . . D6 . v . . . . . . .v .| . . v . . . . . . v . . |. . .v. . . . . . . . v . . | . . v . . . . . . . . v . . . 1 MG+ <--> M2hG| FCG+ <--> M2hG+| 2xFCG+ <--> FC2hG+| 4xFCG+ <--> 2xFC2hG+
1.4.3 Синтез Multicolor режимов:
. MC <--> M2h .| 2xMC <--> MC2h .| 4xMC <--> 2xMC2h . .| 8xMC <--> 4xMC2h . ^ . . . . . . ^ .| . . ^ . . . . . .^ . . | . .^ . . . . . . . ^ . . . | . . ^ . . . . . . . .^ . . . 0 . | . . . . . . .| . | . . | . . . . . . | . . | . . | . . . . . . . .| . . . | . . | . . . . . . . . | . . . D6 . v . . . . . . .v .| . . v . . . . . . v . . |. . .v. . . . . . . . v . . . | . . v . . . . . . . . v . . . 1 MG+ <--> M2hG| MCG+ <--> M2hG+| 2xMCG+ <--> MC2hG+| 4xMCG+ <--> 2xMC2hG+
1.4.4 Синтез безатрибутных режимов:
. 4c <--> M2h . | 16c <--> 4c2h . .| 2x16c <--> 16c2h . | 4x16c <--> 2x16c2h . ^ . . . . . . ^ .| . . ^ . . . . . .^ . .|. .^ . . . . . . . ^ . . | . . ^ . . . . . . . .^ . . . . . 0 . | . . . . . . .| . | . . | . . . . . . | . .|. . |. . . . . . . . |. . .| . . | . . . . . . . . | . . . . . D6 . v . . . . . . .v .| . . v . . . . . . v . .| . .v. . . . . . . . v . . | . . v . . . . . . . . v . . . . . 1 MG+ <--> M2hG| 4cG+ <--> M2hG+| 16cG+ <--> 4c2hG+| 2x16cG+ <--> 16c2hG+ . 0 . . D1 . . 1 . . . . 0 . . . D1 . . . 1 . . . . 0 . . . D1 . . . 1 . . . . . . 0 . . . D1 . . . 1
WR #EEF7 - тетравидеопорт физически состоит из двух четырёхбитных половинок-регистров и доступен для записи всегда кроме режима активации порта MSCP:
TVL (D0, D1, D5, D6) - выбирается по адресам #EEF7 и #EFF7 TVH (D2, D3, D4, D7) - выбирается по адресам #EEF7 и #ECF7
RD #EEF7 - возвращает значение этого порта.
RESET: все разряды обнуляются.
Назначение разрядов #EEF7:
D0, D4, D5, D7 - параметрически задают видеорежим в рамках базовой структуры растра: D0, D4 - параметр количества байт считываемых из ОЗУ видеопроцессором за время вывода на экран 8ми пикселей строки стандартного знакоместа:
|D4|D0| Количество байт на строку стандартного знакоместа: | 0 | 0 | 2 | 0 | 1 | 4 | 1 | 0 | 8 | 1 | 1 | 16
D5 - параметр количественного изменения атрибутов D7 - параметр качественного изменения атрибутов
|D7|D5| Базовые видеорежимы и их семейства: | 0 | 0 | ZX/BSZX(BiScreenZX) - 256/384 семейство режимов со стандартными атрибутами | 0 | 1 | Multicolor/BSMulticolor - 256/384 семейство режимов с атрибутом на строку | 1 | 0 | Flashcolor/BSFlashcolor - 256/384 семейство режимов с модифицированными атрибутами | 1 | 1 | 4color/BS4color - 256/384 семейство безатрибутных режимов
D6 - Gigascreen/Gigascreen+ - имеет назначение и определяет режим-модификатор позволяющий суммировать изображения основного и альтернативного экранов для текущего видеорежима: 0-off,1-on
D3 - задаёт базовую структуру растра - ZXScreen 256х192 или BiScreen 384х256
D1, D2 - имеют назначение и определяют режим-модификатор по видеоразрешению для текущего видеорежима, при этом каждый из битов определяет один из двух критериев модификации изображения: D1 - удвоение количества пикселов в строке D2 - удвоение количества строк
D1#EEF7 (#EFF7), D2 , D3 #EEF7 (#ECF7) - задают разрешение в текущем видеорежиме
|D3|D2|D1| Video resolution: | 0 | 0 | 0 | 256х192 - non interlaced mode | 0 | 0 | 1 | 512х192 - non interlaced mode | 0 | 1 | 0 | 256х384 - non interlaced(VGA)/interlaced(TV) mode | 0 | 1 | 1 | 512х384 - non interlaced(VGA)/interlaced(TV) mode | 1 | 0 | 0 | 384x256 - non interlaced mode | 1 | 0 | 1 | 768x256 - non interlaced mode | 1 | 1 | 0 | 384x512 - non interlaced(VGA)/interlaced(TV) mode | 1 | 1 | 1 | 768x512 - non interlaced(VGA)/interlaced(TV) mode
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Среда, 11.11.2009, 03:19 | Сообщение # 2 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 2.0 Порт #xxFE и его развитие. 2.1 WR #xxFE. WR #xxFE - первый системный порт ZX Spectrum WR D0 - D2 #xxFE(%xxxxxxxxxxxxxxx0), доступны для записи всегда. RESET: порт не сбрасывается. D0 - D2 #xxFE - задают цвет бордюра: D0=B, D1=R, D2=G, кроме того в текстовом видеорежиме задают цвет фона экрана и чернил: для paper=0-3, будет ink=7, для paper=4-7, будет ink=0, а в графическом Mono видеорежиме задают только цвет фона экрана, при этом в обоих видеорежимах цвет возможно задать только до активации видеорежима, при его активации биты D0 - D2 #FE становятся недоступны. WR D3 - D7 #xxFE(%xxxxxxxxxxxxxxx0), доступен для записи всегда. RESET: порт не сбрасывается. D3 #xxFE - TAPE OUT - сигнал записи на магнитофон, кроме того используется в качестве младшего разряда 2х битного ЦАПа звукового вывода, или правого канала при звуковом стереовыводе, в Mono видеорежимах также управляет яркостью бордюра для визуальной индикации работы с магнитофоном, так же в оригинальных моделях ZX Spectrum 48k управляет уровнем чувствительности схемы чтения с магнитофона - при D3=0 чувствительность ниже, при D3=1 - выше. D4 #xxFE - SPEAKER - старший разряд 2х битного ЦАПа сигнала звукового вывода, или левый канал при звуковом стереовыводе, кроме того в оригинальных моделях ZX Spectrum 48k блокирует магнитофонный вход - при D4=0 прохождение входного сигнала разрешено, при D4=1 - запрещено (из D6 #xxFE читается единица). D5-D7 #xxFE - доступны только в текстовых видеорежимах, задают номер отображаемой текстовой страницы из восьми возможных для каждого знакоместа, а в графическом Mono видеорежиме задают цвет чернил экрана: D5=B, D6=R, D7=G. 2.2 RD #xxFE(%xxxxxxxxxxxxxxx0) Основное назначение RD #xxFE - опрос клавиатуры. Т.к. как правило клавиатура используется в программах повсеместно и опрашивается регулярно, то старшие разряды D5-D7 этого порта наиболее рационально применить именно для опроса внешних устройств. Из этих разрядов только D6 имеет стандартизированное назначение - чтение магнитофонного сигнала, но может быть использован и для других целей. При этом биты WR D3,D4 #xxFE могут быть использованы например для коммутации сигналов считываемых через разряды D5-D7, либо другим способом. D0 - D4 #xxFE - чтение состояния клавиатуры D5 #xxFE - DSR - чтение данных программного интерфейса RS232 (не является общим стандартом, применялось только на компьютерах Scorpion) D6 #xxFE - TAPE IN - сигнал чтения с магнитофона D7 #xxFE - BUSY - чтение состояния сигнала готовности интерфейса принтера (не является общим стандартом, применялось на компьютерах Scorpion, KAY)
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Среда, 11.11.2009, 06:01 | Сообщение # 3 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 3.0 Порт #xxFF и его развитие.
3.1 RD #xxFF - порт атрибутов.
RESET: порт не сбрасывается.
RD #xxFF - порт - недоразумение, по своей сути портом не являлся и физически в оригинальных компьютерах никогда не существовал. Обязан своим возникновением аппаратной архитектуре оригинального компьютера ZX Spectrum 48/128k, который фактически состоял из двух блоков - процессорного и видеопроцессорного, шины данных которых электрически соединялись с помощью резисторов. Такое соединение позволяло развязать шины друг от друга, но при этом иметь возможность в любой момент читать с другой шины, или писать на неё в момент когда она свободна. Именно наличию возможности читать процессором данные с шины видеопроцессора и обязан своим возникновением этот виртуальный порт. В оригинальных моделях ZX Spectrum 48/128k эффект чтения осмысленных данных возникает при попытке чтения из любого несуществующего порта компьютера. Это получается в следствие того, что четвёртый такт машинного цикла, во время которого на шине данных должны выставляться валидные значения данных читаемого порта, совпадает по времени с тактом чтения видеопроцессором данных атрибутов знакоместа из видеопамяти. А т.к. в процессорном блоке в этот момент никакой порт на шину данных ничего не выдавал (ввиду отсутствия опрашиваемого порта), то через резисторы, которыми были соединены шины данных двух блоков, из блока видеопроцессора читались текущие данные атрибутов знакоместа. Условный выбор для этого порта адреса #xxFF из множества неиспользуемых адресов обусловлен тем, что из всех возможных портов, порт #xxFF был самым неудобным для производителей периферии, т.к. не позволял применять упрощённую дешифрацию, и требовал обязательной полной дешифрации. Т.е. дешифратор для порта #xxFF был более дорогим чем для других незанятых портов и как следствие этот порт никем не использовался. В последствии, этому "порту" нашлось применение в программах в качестве индикатора момента начала сканирования экранной области видеопроцессором. В этот момент считаемые из него данные становились отличными от значения #FF, что свидетельствовало о начале отображения экранной области. Это могло быть использовано в программах, синхронизирующих свои действия с началом воспроизведения экранной области, что и узаконило его существование по адресу #xxFF. В клонах ZX Spectrum +2a,b/+3 архитектура изменилась и как следствие исчез этот виртуальный порт. В отечественных компьютерах, отличавшихся по архитектуре от оригинального ZX Spectrum, порт RD #xxFF либо отсутствовал, либо эмулировался аппаратно, но ввиду малого количества программ его использующих, широкого применения не нашёл. В западных доработках порт эмулировался упрощённо - одним битом, что тем не менее позволяло корректно работать со всеми программами.
3.2 RD #xxFF(%xxxxxxx1xxx1111) - порт атрибутов / номера строки.
Предлагаемая реализация порта является функциональным аналогом порта атрибутов, но вместо значения атрибутов возвращает номер отображаемой строки экрана. В области бордюра возвращает значение #FF. Функцию чтения номера строки рекомендуется использовать при программировании только совместно с новыми видеорежимами, т.к. в оригинальных моделях 48/128k такая функция отсутствовала. В старых видеорежимах этот порт рекомендуется использовать только в качестве индикатора начала экранной области. Кроме того необходимо иметь ввиду, что для перспективных вертикальных разрешений кратных 256, последняя строка диапазона отсчёта не будет отличима от бордюра. D0 - D7 #xxFF - читается номер отображаемой строки экрана в диапазоне 0-191 или 0-255 в зависимости от текущего видеоразрешения, для удвоенного вертикального разрешения повторяет весь диапазон отсчёта дважды (сначала для верхней половины экрана, затем для нижней).
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Среда, 11.11.2009, 06:03 | Сообщение # 4 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 4.0 Порт #7FFD(%01xxxxxxxxxxxx01) и его развитие.
Исторически, порт #7FFD - это второй системный порт ZX Spectrum после #FE. Впервые появился на модели ZX Spectrum +128, и как стандарт определял назначение разрядов D0-D5. Изначально, из-за ошибки в ULA порт был доступен только на запись. При попытке чтения порта, ошибочно инициализировалась его запись, что приводило к потере данных. Поэтому в оригинальных моделях ZX Spectrum чтение из #7FFD недопустимо. В клонах такой проблемы не существовало, но для совместимости функция чтения порта #7FFD в них никогда не использовалась. Исключением являлся клон "Scorpion ZS 256 Turbo/+", где эта неиспользуемая функция нашла необычное и весьма неудачное применение для включения режима “турбо”, что приводило к потере обратной программной совместимости с моделями ZX Spectrum +128/+2. В отечественном клоностроении порт получил развитие, воплотившееся в три устоявшихся стандарта: KAY-1024, Pentagon-512, Pentagon-1024. Стандарт KAY-1024 предполагает обязательное наличие дополнительного управляющего порта #1FFD, необходимого для управления страницами памяти. Оба стандарта Pentagon предполагают обязательное наличие дополнительного управляющего порта #ExF7, необходимого для управления ограничением объёма памяти. Окончательное развитие порт #7FFD получил в концепции объединительного стандарта “Xiмera”, предполагающей обязательное наличие обоих дополнительных управляющих портов #1FFD и #ExF7.
4.1 WR #7FFD - CONFIGURATION PORT, доступен для записи всегда.
RESET: все разряды обнуляются.
D0, D1, D2 #7FFD – младшие разряды управления страницами ОЗУ в окне CPU3 (#C000-#FFFF).
D0 - CPU3 A14'RAM D1 - CPU3 A15'RAM D2 - CPU3 A16'RAM
D3 #7FFD - CPU1 A15'RAM Change Adress : 0 - основной экран, 1 - альтернативный экран. При D3=1 инвертирует соответствующий адресу A15' адресный разряд сканера видеопроцессора.
D4 #7FFD - A14"ROM Change Adress – адрес A14" управления страницами ПЗУ в окне CPU0 (#0000-#3FFF) в рамках текущего 64kb банка. В ZX Spectrum +128/+2 D4=0 - SOS128, D4=1 - SOS48. В клонах KAY и ZXM-Phoenix, а так же режимах SKAY, Pentagon, Profi концепции объединительного стандарта “Xiмera”, дополнительно используя разряд D3, а в ZX Spectrum +2a,b/+3 и режиме +3 концепции объединительного стандарта “Xiмera” используя разряд D2 #1FFD - адресует четыре страницы ПЗУ в рамках текущего 64kb банка.
D5 #7FFD - для всех клонов кроме Pentagon и для режима Profi концепции объединительного стандарта “Xiмera” при D5=1 блокируется запись в порт #7FFD, блокировка снимается по сигналу RESET. В Pentagon-1024 и концепции объединительного стандарта “Xiмera” D5 #7FFD дополнительно используется для адресации более 512k ОЗУ. В режиме ограничения размера ОЗУ до 128k - выполняет стандартное назначение блокировки записи в порт #7FFD.
D5, D6, D7 #7FFD – старшие разряды управления страницами памяти в окне CPU3 (#C000-#FFFF). Разряд D5 #7FFD для управления страницами памяти используется только в Pentagon-1024 и объединённом режиме Xiмera, когда не задано ограничение размера ОЗУ до 128k. В KAY-1024 для управления страницами ОЗУ в окне CPU3, дополнительно используются D4, D7 #1FFD, а в объединённом режиме Xiмera ещё и D0-D7 #DEFD. D7 #7FFD в режиме Profi концепции объединительного стандарта “Ximera” – A21'RAM – адрес A21' управления страницами ОЗУ в окне CPU3.
|S256|K1M |5-512|5-1M|P1M |_X5 |_XK_|_XP |_X_ | | _-_ | _-_ | _ - _ |A17’ | _-_ |A19’ |A21’ |_ - _ |A21’ |D5 #7FFD | _-_ | _-_ | A17’ |A18’ | _-_ |A18’ |A20’ |_ - _ |A20’ |D6 #7FFD | _-_ |A18’ | A18’ |A19’ | _-_ |A17’ |A17’ |A21’ |A17’ |D7 #7FFD |A17’ |A17’ | _ -_ | _-_ | _-_ |A20’ |A18’ |A20’ |A18’ |D4 #1FFD | _-_ |A19’ | _ - _ | _-_ | _-_ |A21’ |A19’ |_ - _ |A19’ |D7 #1FFD | _-_ | _-_ | _ - _ | _-_ |A17’ |_ -_ |_ -_ |A17’ |A22’ |D0 #DEFD | _-_ | _-_ | _ - _ | _-_ |A18’ |_ -_ |_ -_ |A18’ |A23’ |D1 #DEFD | _-_ | _-_ | _ - _ | _-_ |A19’ |_ -_ |_ -_ |A19’ |A24’ |D2 #DEFD | _-_ | _-_ | _ - _ | _-_ | _-_ |_ -_ |_ -_ |_ - _ |A25’ |D3 #DEFD | _-_ | _-_ | _ - _ | _-_ | _-_ |_ -_ |_ -_ |_ - _ |A26’ |D4 #DEFD | _-_ | _-_ | _ - _ | _-_ | _-_ |_ -_ |_ -_ |_ - _ |A27’ |D5 #DEFD | _-_ | _-_ | _ - _ | _-_ | _-_ |_ -_ |_ -_ |_ - _ |A28’ |D6 #DEFD | _-_ | _-_ | _ - _ | _-_ | _-_ |_ -_ |_ -_ |_ - _ |A29’ |D7 #DEFD
S256 - Scorpion ZS 256 K1M – KAY-1024SL3 5-512 - Pentagon-512* 5-1M - Pentagon-1024SL v2.2* P1M - Profi XK – режим SKAY (Scorpion&KAY) в концепции объединительного стандарта “Xiмera” X5 - режим Pentagon в концепции объединительного стандарта “Xiмera” XP - режим Profi в концепции объединительного стандарта “Xiмera” X - объединённый режим Xiмera * - устоявшегося соответствия разрядов портов адресным линиям не существует.
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Среда, 11.11.2009, 06:05 | Сообщение # 5 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 5.0 Порт #1FFD(%00xxxxxxxxxxxx01) - EXPANSION PORT и его развитие.
Впервые порт #1FFD появился на амстрадовских клонах ZX Spectrum +2a,b/+3. С точки зрения программной совместимости с оригинальным ZX Spectrum +128 это был не лучший выбор адреса порта, т.к. из-за упрощенной дешифрации на этот адрес откликался и порт #7FFD оригинальной модели, а значит, терялась совместимость программ сверху - вниз. Ещё более странным было решение использовать этот порт в отечественном клоне Scorpion ZS 256, т.к. кроме одинакового адреса, больше между портами этих клонов ничего общего не было. А использование функции чтения из #1FFD для выключения режима “турбо”, в модели "Scorpion ZS 256 Turbo/+" ещё более нарушило его совместимость с оригинальным ZX Spectrum +128. Впоследствии порт #1FFD был поддержан в клонах линейки KAY, что окончательно утвердило его как отечественный региональный стандарт. К сожалению, даже у отечественных клонов назначение разрядов этого порта не совпадало. Окончательное развитие порт #1FFD получил в концепции объединительного стандарта “Xiмera”, смыслом которой стало устранение существующих противоречий и приведение к единому стандарту управления портами.
RESET: все разряды обнуляются.
5.1 WR #1FFD для ZX Spectrum +2a,b/+3, а так же в режиме +3 концепции объединительного стандарта “Xiмera”.
ZX Spectrum +2a,b/+3 позволял работать в двух подрежимах: +3 SOS - это подрежим в определённой степени совместимый с SOS48, поддерживаемый несколько модифицированной ПЗУ. +3 DOS - это CP/M - подобный подрежим собственной DOS.
D0 #1FFD – задаёт подрежимы определяющие архитектуру компьютера и тип ОС: D0=0 – подрежим +3 SOS, D0=1 – подрежим +3 DOS.
D1 #1FFD – в подрежиме +3 DOS совместно с битом D2 #1FFD меняет организацию страниц ОЗУ, в подрежиме +3 SOS - не используется.
D2 #1FFD – в подрежиме +3 DOS совместно с битом D1 #1FFD меняет организацию страниц ОЗУ, в подрежиме +3 SOS отвечает за A15"ROM Change Adress – адрес A15" управления страницами ПЗУ в окне CPU0.
Управление конфигурацией страниц ОЗУ в подрежиме +3 DOS:
| D2| D1| CPU0 | CPU1 | CPU2 | CPU3 | |_0_|_0_| _ 0 _ | _ 1 _| _ 2 _ | _ 3 _ | |_0_|_1_| _ 4 _ | _ 5 _| _ 6 _ | _ 7 _ | |_1_|_0_| _ 4 _ | _ 5 _| _ 6 _ | _ 3 _ | |_1_|_1_| _ 4 _ | _ 7 _| _ 6 _ | _ 3 _ |
Управление конфигурацией страниц ПЗУ в подрежиме +3 SOS:
|ROM A15”|ROM A14”| |D2#1FFD |D4#7FFD| |_ 0 _____|_0 _____| +3 Editor |_ 0 _____|_1 _____| +3 Syntax |_ 1 _____|_0 _____| +3 DOS |_ 1 _____|_1 _____| +3 SOS
D3 #1FFD - сигнал +3 контроллера дисковода - MOTOR:0-off,1-on.
D4 #1FFD - сигнал интерфейса принтера STROBE.
D5 #1FFD в +3 не используется.
D6 #1FFD в +3 не используется.
D7 #1FFD в +3 не используется.
5.2 WR #1FFD для KAY, Scorpion, Pentagon, а так же в режимах SKAY (KAY&Scorpion), Pentagon и Profi концепции объединительного стандарта “Xiмera”.
D0 #1FFD в KAY и Scorpion – открывает доступ на чтение и запись в страницу RAM0 из окна CPU0 (#0000-#3FFF). D0 #1FFD во всех режимах кроме +3 концепции объединительного стандарта “Xiмera”, совместно с битом D3 #EFF7 задают режим работы страниц ОЗУ и ПЗУ подставляемых в окно CPU0. Номер подставляемой страницы ОЗУ задаётся портами страниц окна CPU0 #A8F7, #A9F7. По сбросу выбирается страница RAM0. Номер подставляемой страницы ПЗУ задаётся битами D4 #7FFD, D3 #1FFD. Выбор банка (64kb) ПЗУ в пространстве ROM диска, осуществляется: D2, D5, D6 #1FFD - коммутирует верхний полубанк (32kb), и DO, D1, D5, D6 #EDF7 - коммутирует нижний полубанк. Объём ROM диска задаётся D4, D5, D6, D7 #6AF7 - NMI SHADOW CONFIGURATION PORT 0 (NMI0). По аппаратному сбросу устанавливается конфигурационная страница ROM0 из сервисного 6-го банка ROM диска.
|D0#1FFD|D3#EFF7 r/wCPU0 MANAGETMENT - задают режим работы и тип памяти в окне CPU0 |_0 _____|_0 - rdROM - в окне CPU0 доступно ПЗУ только на чтение |_0 _____|_1 - rdROM & wrRAM - в окне CPU0 доступно одновременно ПЗУ на чтение и ОЗУ на запись |_1 _____|_0 - r/wRAM - в окне CPU0 доступно ОЗУ на чтение и запись |_1 _____|_1 - rdRAM - в окне CPU0 доступно ОЗУ только на чтение
D1 #1FFD в Scorpion, а так же а так же во всех режимах кроме +3 концепции объединительного стандарта “Xiмera” – при D1=1 подставляет в окно CPU0 сервисную страницу из текущего выбранного банка ПЗУ(ROM2 для Scorpion, ROM0 для всех конфигураций объединительного стандарта “Xiмera”).
D2 #1FFD в Scorpion не используется, в KAY - может использоваться факультативно: либо как переключатель турбо режима D2=0/1 - Turbo on/off, либо как сигнал интерфейса принтера SLCTIN. D2, D5, D6 #1FFD в концепции объединительного стандарта “Xiмera” используются в качестве адресов выборки банка загрузочного ПЗУ RESROM, активируемого сразу после сброса компьютера, что позволяет адресовать ПЗУ 512kb. D2 соответствует адресу A16" RESROM. Выход из режима работы с загрузочным ПЗУ осуществляется обращением к ОЗУ в любом из окон CPU.
D3 #1FFD в Scorpion используется как сигнал передачи данных TxD программного интерфейса RS232, в KAY, а так же во всех режимах кроме +3 концепции объединительного стандарта “Xiмera” используется в качестве модификатора адресной линии выборки ПЗУ в окне CPU0 - A15"ROM Change Adress - адрес A15" управления страницами ПЗУ в окне CPU0.
D4 #1FFD в KAY и Scorpion - A17'RAM, в режиме SKAY концепции объединительного стандарта “Xiмera”, и объединённом режиме Xiмera – A18'RAM – адрес управления страницами ОЗУ в окне CPU3. D4 #1FFD в режиме Pentagon концепции объединительного стандарта “Ximera” – A20'RAM – адрес A20' управления страницами ОЗУ в окне CPU3. D4 #1FFD в режиме Profi концепции объединительного стандарта “Ximera” – A20'RAM – адрес A20' управления страницами ОЗУ в окне CPU3.
D5 #1FFD в KAY и Scorpion используется как сигнал интерфейса принтера STROBE. В концепции объединительного стандарта “Xiмera” используется так же в качестве адреса A17" выборки банка загрузочного ПЗУ RESROM.
D6 #1FFD в KAY используется как сигнал /Q6 LPTBus, в Scorpion не используется. В концепции объединительного стандарта “Xiмera” используется так же в качестве адреса A18" выборки банка загрузочного ПЗУ RESROM.
D7 #1FFD в Scorpion – не используется, в KAY - A19'RAM, в режиме SKAY концепции объединительного стандарта “Xiмera”, и объединённом режиме Xiмera - A19'RAM – адрес A19' управления страницами ОЗУ в окне CPU3. D7 #1FFD в режиме Pentagon концепции объединительного стандарта “Ximera” – A21'RAM – адрес A21' управления страницами ОЗУ в окне CPU3.
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Среда, 11.11.2009, 06:06 | Сообщение # 6 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 6.0 Порты RD #BxFD - порты чтения состояния #xxFE, #1FFD, #7FFD.
Для дальнейшего развития ZX Spectrum крайне важно обеспечить возможность моментального сохранения состояния компьютера. Для этого необходимо чтобы была возможность считывания состояния всех системных портов. Если для новых портов такая возможность предусматривается сразу, то для #xxFE, #1FFD, #7FFD необходимы дополнительные порты чтения их состояния. Лучшим вариантом для этой цели является свободый порт RD #BxFD, присутствующий в дешифрации многих отечественных клонов имеющих AY. Использование этого порта позволяет минимизировать трудоёмкость модернизации старых компьютеров.
6.1 RD #BAFD(%10xxx0x0xxxxxx01) - порт чтения состояния #1FFD.
RESET: все разряды обнуляются.
Возвращает без изменений состояние порта #1FFD.
6.2 RD #BBFD(%10xxx0x1xxxxxx01) - порт чтения состояния #xxFE.
RESET: все разряды обнуляются.
Возвращает без изменений состояние порта #xxFE.
6.3 RD #BEFD(%10xxx1x0xxxxxx01) - порт чтения состояния #7FFD.
RESET: все разряды обнуляются.
Возвращает без изменений состояние порта #7FFD.
6.4 RD #BFFD(%10xxx1x1xxxxxx01) - порт статуса системных вызовов.
RESET: невозможен.
D0 #BFFD NMI Magic: 0-on, 1-off - индицирует вызов от кнопки Magic. D1 #BFFD NMI Key: 0-on, 1-off - индицирует вызов от кнопки NMI на клавиатуре. D2 #BFFD NMI Instruction eZ80 or non documented command: 0-on, 1-off - индицирует вызов при считывании КОПа расширенной инструции CPU eZ80 в стандартном режиме, или недокументированной команды. D3 #BFFD NMI I/O Adr eZ80: 0-on, 1-off - индицирует вызов при работе с CPU eZ80, возникающий при обращении к портам в диапазоне #80-#FF. D4 #BFFD NMI Error: 0-on, 1-off - индицирует вызов при ошибке контрольной суммы ОЗУ. D5 #BFFD DMMC ON/OFF: 0-on, 1-off - индицирует включение режима ДММЦ. D6 #BFFD LineNumberV8: 0-high, 1-low - индицирует отображение нижней или верхней половины экранной области в режиме удвоенного вертикального разрешения. D7 #BFFD Screen=1, Border=0 - индицирует прохождение луча по экранной области.
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Четверг, 12.11.2009, 08:35 | Сообщение # 7 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 7.0 Порты #A8F7, #A9F7, #AAF7, #ABF7, #ACF7, #ADF7, #DEFD - выбор страниц памяти в окнах CPU0 - CPU3.
В будущем развитии ZX Spectrum предполагается возможность работы в режиме многозадачности реального времени. Для этого необходимо будет держать все исполняемые задачи одновременно в ОЗУ, чтобы иметь возможность быстро переключаться между ними. Для адресации в предедах всего доступного ОЗУ служат порты выбора страниц памяти в окнах CPU0 - CPU3. Все порты доступны на чтение.
7.1 #A8F7(%10101000xxxx0111) CPU0(#0000-#3FFF) Low ADRESS (16kb-4Mb) WINDOW PORT - порт младших адресов выбора страниц памяти в окне CPU0.
RESET: все разряды обнуляются.
D0 - CPU0 A14'RAM D1 - CPU0 A15'RAM D2 - CPU0 A16'RAM D3 - CPU0 A17'RAM D4 - CPU0 A18'RAM D5 - CPU0 A19'RAM D6 - CPU0 A20'RAM D7 - CPU0 A21'RAM
7.2 #A9F7(%10101001xxxx0111) CPU0(#0000-#3FFF) High ADRESS (4Mb-1Gb) WINDOW PORT - порт старших адресов выбора страниц памяти в окне CPU0.
RESET: все разряды обнуляются.
D0 - CPU0 A22'RAM D1 - CPU0 A23'RAM D2 - CPU0 A24'RAM D3 - CPU0 A25'RAM D4 - CPU0 A26'RAM D5 - CPU0 A27'RAM D6 - CPU0 A28'RAM D7 - CPU0 A29'RAM
7.3 #AAF7(%10101010xxxx0111) CPU1(#4000-#7FFF) Low ADRESS (16kb-4Mb) WINDOW PORT - порт младших адресов выбора страниц памяти в окне CPU1.
RESET: все разряды обнуляются, кроме A14', A16', которые устанавливаются в единицу.
D0 - CPU1 A14'RAM D1 - CPU1 A15'RAM D2 - CPU1 A16'RAM D3 - CPU1 A17'RAM D4 - CPU1 A18'RAM D5 - CPU1 A19'RAM D6 - CPU1 A20'RAM D7 - CPU1 A21'RAM
7.4 #ABF7(%101011011xxxx0111) CPU1(#4000-#7FFF) High ADRESS (4Mb-1Gb) WINDOW PORT - порт старших адресов выбора страниц памяти в окне CPU1.
RESET: все разряды обнуляются.
D0 - CPU1 A22'RAM D1 - CPU1 A23'RAM D2 - CPU1 A24'RAM D3 - CPU1 A25'RAM D4 - CPU1 A26'RAM D5 - CPU1 A27'RAM D6 - CPU1 A28'RAM D7 - CPU1 A29'RAM
7.5 #ACF7(%10101100xxxx0111) CPU2(#8000-#BFFF) Low ADRESS (16kb-4Mb) WINDOW PORT - порт младших адресов выбора страниц памяти в окне CPU2.
RESET: все разряды обнуляются, кроме A15', который устанавливается в единицу.
D0 - CPU2 A14'RAM D1 - CPU2 A15'RAM D2 - CPU2 A16'RAM D3 - CPU2 A17'RAM D4 - CPU2 A18'RAM D5 - CPU2 A19'RAM D6 - CPU2 A20'RAM D7 - CPU2 A21'RAM
7.6 #ADF7(%10101101xxxx0111) CPU2(#8000-#BFFF) High ADRESS (4Mb-1Gb) WINDOW PORT - порт старших адресов выбора страниц памяти в окне CPU2.
RESET: все разряды обнуляются.
D0 - CPU2 A22'RAM D1 - CPU2 A23'RAM D2 - CPU2 A24'RAM D3 - CPU2 A25'RAM D4 - CPU2 A26'RAM D5 - CPU2 A27'RAM D6 - CPU2 A28'RAM D7 - CPU2 A29'RAM
7.7 #DEFD(%1101x1x0xxxx1101) CPU3(#C000-#FFFF) High ADRESS (4Mb-1Gb) WINDOW PORT - порт старших адресов выбора страниц памяти в окне CPU3.
Разряды D0, D1, D2 этого порта также доступны по адресу #DFFD, и используются в режиме Profi, объединиьельной концепции "Xiмera" как адреса A17', A18', A19'.
RESET: все разряды обнуляются.
D0 - CPU3 A22'RAM D1 - CPU3 A23'RAM D2 - CPU3 A24'RAM D3 - CPU3 A25'RAM D4 - CPU3 A26'RAM D5 - CPU3 A27'RAM D6 - CPU3 A28'RAM D7 - CPU3 A29'RAM
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Пятница, 13.11.2009, 03:07 | Сообщение # 8 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 8.0 VM KERNEL CONFIGURATION PORTS (write for KERNEL mode only)
8.1 #69F7(%01101001xxxx0111) - VM KERNEL CONFIGURATION PORT#1 (KCP1).
WR #69F7 - KCP1 - это перспективный порт с разделением доступа, реализуемый в рамках объединительной концепции "Xiмera", и предназначеный для предустановки конфигурации компьютера. Доступ к нему открывается после аппаратного сброса или генерации сигнала NMI, за исключением нажатия кнопки "MAGIC".
RD #69F7 - возвращает значение этого порта.
RESET: все разряды обнуляются.
D0, D1 ,D2, D3 #69F7 - задают объём процессорного ОЗУ виртуальной машины (VM):
|D3|D2|D1|D0|Virtual Mashine limited RAM | 0 | 0 | 0 | 0 | 0kb | 0 | 0 | 0 | 1 | 16kb | 0 | 0 | 1 | 0 | 32kb | 0 | 0 | 1 | 1 | 64kb | 0 | 1 | 0 | 0 | 128kb | 0 | 1 | 0 | 1 | 256kb | 0 | 1 | 1 | 0 | 512kb | 0 | 1 | 1 | 1 | 1Mb | 1 | 0 | 0 | 0 | 2Mb | 1 | 0 | 0 | 1 | 4Mb - - - - - - - - - - - - | 1 | 1 | 1 | 1 | 256Mb
D4, D5 ,D6 #69F7 - задают объём видео ОЗУ виртуальной машины (VM):
|D6|D5|D4|Virtual Mashine limited RAM | 0 | 0 | 0 | 0kb | 0 | 0 | 1 | 16kb | 0 | 1 | 0 | 64kb | 0 | 1 | 1 | 128kb | 1 | 0 | 0 | 256kb | 1 | 0 | 1 | 512kb | 1 | 1 | 0 | 1Mb | 1 | 1 | 1 | 2Mb
D7 #69F7 - разряд блокировки записи во все порты KCP, блокировка автоматически снимается активацией сигнала NMI или аппаратным сбросом:
0-blk wr Reg 1-NMI & RESET set enable wr Reg
8.2 #6AF7(%01101010xxxx0111) - VM KERNEL CONFIGURATION PORT#2 (KCP2).
WR #6AF7 - KCP2 - это перспективный порт с разделением доступа, реализуемый в рамках объединительной концепции "Xiмera", и предназначеный для предустановки конфигурации компьютера. Доступ к нему открывается после аппаратного сброса или генерации сигнала NMI, за исключением нажатия кнопки "MAGIC".
RD #6AF7 - возвращает значение этого порта.
RESET: все разряды обнуляются.
D0, D1, D2 #6AF7 - задают время непрерывной работы текущей виртуальной машины (VM):
|D2|D1|D0| NMI timer: | 0 | 0 | 0 | 20ms | 0 | 0 | 1 | 40ms | 0 | 1 | 0 | 80ms | 0 | 1 | 1 | 160ms | 1 | 0 | 0 | 320ms | 1 | 0 | 1 | 640ms | 1 | 1 | 0 | 1,28s | 1 | 1 | 1 | 2,56s
D3, D4 #6AF7 - задают режим многозадачности и управляют выбором источника вызова NMI
|D4|D3| Multi tasking(MT) mode config: | 0 | 0 | NMI key & timer switching MT mode - смешанный режим многозадачности, разрешён вызов NMI как с помощью кнопки "NMI" в ручном режиме, так и от таймера | 0 | 1 | NMI timer switching MT mode - автоматический режим многозадачности реального времени, разрешён вызов NMI только от таймера | 1 | 0 | NMI key switching MT mode - режим отложенной многозадачности, разрешён вызов NMI только с помощью кнопки "NMI" в ручном режиме | 1 | 1 | non MT mode - монопольный стандартный режим, разрешён вызов NMI с помощью кнопки "NMI" в ручном режиме D5, D6, D7 #6AF7 - задают базовый ROM для VM из набора загруженных в область vROM ОЗУ компьютера.
|D7|D6|D5| VM Firmware type: | 0 | 0 | 0 | ZX Spectrum +3 | 0 | 0 | 1 | Pentagon | 0 | 1 | 0 | Scorpion Low | 0 | 1 | 1 | KAY | 1 | 0 | 0 | User define 0 | 1 | 0 | 1 | User define 1 | 1 | 1 | 0 | Scorpion High | 1 | 1 | 1 | System
8.3 #6BF7(%01101011xxxx0111) - VM KERNEL CONFIGURATION PORT#3 (KCP3).
WR #6BF7 - KCP3 - это перспективный порт с разделением доступа, реализуемый в рамках объединительной концепции "Xiмera", и предназначеный для предустановки конфигурации компьютера. Доступ к нему открывается после аппаратного сброса или генерации сигнала NMI, за исключением нажатия кнопки "MAGIC".
RD #6BF7 - возвращает значение этого порта.
RESET: все разряды обнуляются.
D0, D1, D2 #6BF7 - задают конфигурацию и объём ZXROM/vROM-диска. Виртуальный vROM-диск размещается в верхней области ОЗУ, подставляемой в CPU0. При выходе из KERNEL режима, вся информация предварительно записанная в vROM область ОЗУ, становится доступной только на чтение. Управление ZXROM/vROM-диском осуществляется через D3 #1FFD и D4 #7FFD в стандартном режиме.
|D2|D1|D0| ZXROM/vROM configuration mode: | 0 | 0 | 0 | 512k vROM | 0 | 0 | 1 | 256k vROM | 0 | 1 | 0 | 128k vROM | 0 | 1 | 1 | 64k vROM | 1 | 0 | 0 | 64-256k ZXROM & 256k vROM | 1 | 0 | 1 | 64-128k ZXROM & 128k vROM | 1 | 1 | 0 | 64k ZXROM & 64k vROM | 1 | 1 | 1 | 64k ZXROM
D3 #6BF7 - в многозадачном режиме реального времени задаёт для активной VM возможность отображения на экране содержимого её видео ОЗУ, вне зависимости от того какая текущая VM в данный момент исполняется: 0-Scanner on, 1-Scanner off
D4,D5 #6BF7 - задают архитектуру компьютера в части стандартов на временные параметры видеоразвёртки.
|D5|D4| Timing architecture mode: | 0 | 0 | ZX Spectrum 48kb | 0 | 1 | ZX Spectrum +3 | 1 | 0 | ZX Spectrum +128kb | 1 | 1 | Pentagon
D6, D7 #6BF7 - задают базовую архитектуру портов компьютера.
|D7|D6| Clone configuration mode: | 0 | 0 | XK mode - SKAY1Gb(Scorpion & KAY) mode | 0 | 1 | X3 mode - ZX Spectrum +3 128kb mode | 1 | 0 | XP mode - Profi4Mb mode | 1 | 1 | X5 mode - Pentagon1Gb mode
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
Black_Cat | Дата: Пятница, 08.07.2011, 00:05 | Сообщение # 9 |
Координатор
Группа: Координаторы
Сообщений: 731
Статус: Offline
| 9.0 #6CF7, #6DF7, #6EF7, #6FF7 - ADRESS SYSTEM & VIDEO RAM VM KERNEL CONFIGURATION PORTS (access for KERNEL mode only).
В будущем развитии ZX Spectrum предполагается возможность работы в режиме многозадачности реального времени. Для этого необходимо будет держать все исполняемые задачи одновременно в ОЗУ, чтобы иметь возможность быстро переключаться между ними. Для задания местоположения ОЗУ исполняемой VM служат отдельные порты - два для задания адреса системного ОЗУ (т.е. для которого A16'=0) и два для задания адреса видео ОЗУ (т.е. для которого A16'=1). Все порты доступны только в KERNEL режиме, а так же после аппаратного сброса компьютера.
9.1 #6CF7(%01101100xxxx0111) VM KERNEL CONFIGURATION PORT#4 (KCP4) - Low ADRESS SYSTEM RAM PORT (A16'=0) - порт младших адресов задания местоположения системного ОЗУ исполняемой VM.
RESET: все разряды обнуляются.
D0 - A14'RAM D1 - A15'RAM D2 - D3 - A17'RAM D4 - A18'RAM D5 - A19'RAM D6 - A20'RAM D7 - A21'RAM
9.2 #6DF7(%01101101xxxx0111) VM KERNEL CONFIGURATION PORT#5 (KCP5) - High ADRESS SYSTEM RAM PORT (A16'=0) - порт старших адресов задания местоположения системного ОЗУ исполняемой VM.
RESET: все разряды обнуляются.
D0 - A22'RAM D1 - A23'RAM D2 - A24'RAM D3 - A25'RAM D4 - A26'RAM D5 - A27'RAM D6 - A28'RAM D7 - A29'RAM
9.3 #6EF7(%01101110xxxx0111) VM KERNEL CONFIGURATION PORT#6 (KCP6) - Low ADRESS VIDEO RAM PORT (A16'=1) - порт младших адресов задания местоположения видео ОЗУ исполняемой VM.
RESET: все разряды обнуляются.
D0 - A14'RAM D1 - A15'RAM D2 - D3 - A17'RAM D4 - A18'RAM D5 - A19'RAM D6 - A20'RAM D7 - A21'RAM
9.4 #6FF7(%01101111xxxx0111) VM KERNEL CONFIGURATION PORT#7 (KCP7) - High ADRESS VIDEO RAM PORT (A16'=1) - порт старших адресов задания местоположения видео ОЗУ исполняемой VM.
RESET: все разряды обнуляются.
D0 - A22'RAM D1 - A23'RAM D2 - A24'RAM D3 - A25'RAM D4 - A26'RAM D5 - A27'RAM D6 - A28'RAM D7 - A29'RAM
"Трудно найти чёрную кошку в тёмной комнате.. ...особенно, если её там нет", "Forever!". "Я никогда не причиняю им зла. Я говорю им правду, и они думают, что это - зло." Гарри Трумэн
|
|
| |
|