ZXNet эхоконференция «code.zx»


тема: Переключение памяти.



от: 812/01.14
кому: Andrey Senichkin
дата: 29 Aug 1997
Огромный Вам дружеский привет, Andrey!!! Однажды, грохоча клавишами, числа где-то 27-08-97 ровно в 20:47 Andrey Senichkin писал(а) to All: AS> Приветствую тебя уважаемый , ALL !! AS> Так как у нас нету эхи для чайников AS> приходится писать сюда. Дык а куда же еще, раз по теме эхи??? AS> Может кто поможет мне : опишет порты AS> для переключения памяти на Скорпе и напи- AS> шет прогу для этого. ============ линия разгрыза =================== Значит, так. Верхняя память Scorpion'а распределена след. образом: восемь страниц размером по 16 кБ (16384 байт), подключае- мые в 3-й банк процессора (адресное прост- ранство 0c000h..0ffffh) через стандартный порт ZX Spectrum-128 07ffdh. Hазначение бит этого порта: D0..D2 - номер страницы ОЗУ; D3 - переключение адреса начала экранной области: 0 - 04000h, 1 - 0c000h; D4 - переключение ПЗУ: 0 - ZX128, 1 - ZX48; D5 - 0 - ничего не меняет, 1 - блокирует дальнейшую конфигурацию порта. Теперь подробнее. Hомера страниц изменяют- ся от 0 до 7, причем страница 2 всегда отображается во 2-м банке CPU (08000h..0bfffh), а страница 5 - в 1-м банке CPU (04000h..07fffh). Итого в наше распоряжение поступают такие страницы: 0, 1, 3, 4, 6, 7. В странице 7 в первых 6912 байтах может располагаться картинка, включить отображе- ние которой можно установив бит D3 порта 07ffdh. Бит D4 сбрасывается при работе расширенного интерпретатора Бейсика-128, поэтому при работе пользовательских программ этот бит должен быть установлен (иногда, правда, необходимо бывает воспользоваться некото- рыми подпрограммами расширенного интерпре- татора, тогда этот бит сбрасывают). Бит D5 устанавливают, если предполагается заблокировать вывод в порт 07ffdh для пре- дотвращения его реконфигурации. Это необходимо, например, для программ, использующих буфер принтера (как правило, интерпретатор Бейсика-128 использует буфер принтера как дополнительную область для процедуры обработки прерываний). Подключить какую-либо страницу памяти очень просто: LD BC,#7FFD ;заносим в BC адрес порта LD A,%00010000 ;подключаем ; страницу с номером ; 0 и включаем ; ПЗУ ZX-48 OUT (C),A ;собственно вывод в порт Перед выводом в порт 07ffdh необходимо запретить прерывания командой DI, а потом не забыть их разрешить - EI (если, разуме- ется, они до этого были разрешены). В шестнадцатиричной системе счисления вышеперечисленное действие еще более по- нятно реализуемо: LD BC,#7FFD LD A,#10 ;0-я страница OUT (C),A при этом остальные страницы подключаются выводом следующих чисел: #11 - 1-я #13 - 3-я #14 - 4-я #16 - 6-я #17 - 7-я А чтобы "железно" перейти в 48-й режим, необходимо записать в порт число %00110000 или 48 в десятичной - сразу ясно, что надо 48-й режим... Теперь - "скорпионовские" страницы. Они подключаются все в то же адресное прост- ранство 0c000h..0ffffh, их тоже восемь, но теперь они могут использоваться все. Пе- реключение страниц Scorpion'а делает порт 01ffdh: D0 - блокировка ПЗУ в области 0-го банка CPU; D1 - выбор ПЗУ Expansion; D2 - используется для вывода по RS-232C; D4 - расширение ОЗУ: 0 - страницы 0..7, 1 - страницы 8..15; D5 - строб CENTRONICS. Разряд D0 управляет подключением ПЗУ в ад- ресном пространстве 0-го банка CPU (00000h..03fffh). Установка - и вместо ПЗУ установлена одна из страниц ОЗУ (использу- ется системой iS-DOS Chic). D1 тоже упрадляет ПЗУ, подключая на место ранее находившегося "скорпионовское" ПЗУ. Используется, например, для определения версии Теневого Сервис-Монитора. D4. Вот мы и добрались до этого разряда. Он подключает на место 3-го банка CPU страницу с номером "pg+8", где pg - стра- ница, установленная ранее выводом в порт 07ffdh. Иначе говоря, чтобы установить, например, десятый банк ОЗУ, надо выполнить след. программу: LD BC,#7FFD LD A,#12 ;10 - 8 = 2 OUT (C),A LD B,#1F ;BC = #1FFD LD A,#10 OUT (C),A а чтобы вырнуть стандартную конфигурацию, надо выполнить: LD BC,#7FFD LD A,#10 OUT (C),A LD B,#1F XOR A ;A = 0 OUT (C),A И не забывайте о прерываниях! ============ линия разгрыза =================== AS> Заранее спасибо !!! Да не за что... ;-) С уважением, Юрий. -+- iS-DOS v4.5 с макросом

от: 812/03.08
кому: Andrey Senichkin
дата: 29 Aug 1997
Приветик тебе Andrey !!! Как-то жарким летним вечерком, числа эдак 27-08-97, ровно в 20:47 Andrey Se- nichkin написал(а) to All на тему 'Перек- лючение памяти.': AS> Может кто поможет мне : опишет порты AS> для переключения памяти на Скорпе и напи- AS> шет прогу для этого. Да, вобщем-то, тут и переключать нечего, просто берешь и устанавливаешь бит D4 в порте #1FFD, и у тебя получается странич- ка с номером на 8 большая, чем была. Hап- ример, была 0 страница, стала - 8; была - 2, стала - 10. Hапример, нужно установить страницу 10: PAGE LD A,#12 ; включается 2 стр. LD BC,#7FFD OUT (C),A LD B,#1F ; включается 10 стр. LD A,#10 OUT (C),A RET И все ;) AS> Заранее спасибо !!! Да, пожалуйста ;) With best wishes, Dmitry. -+- Доска длиной 4.5 метра




Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Наши новости - Поздравляем с днем рождения !
Kто они? - Skinhead Against Racial Prejudices.
Процессоры - Хитрые процессоры или программы , которые стабильно , в одном и том же месте "зависают".
Реклама - рекалама и обьявления...
Посмеемся - ярамарка-выставка-презентация PIII от intel.

В этот день...   8 мая