Nicron
#20
14 февраля 1997 |
|
Программирование - курс изучения ассемблера от Wlodek Black, продолжение. Организация памяти.
│ ▒▒▒▒░ ▒▒▒▒░ ▒▒▒▒░ ▒▒▒▒▒▒░▒▒░ ▒▒░▒▒▒▒▒▒░ ▒▒▒▒░▒▒▒▒▒▒░▒▒▒▒▒░│ │▒▒░ ▒▒░▒▒░ ▒▒░▒▒░ ▒▒░▒▒░ ▒▒▒▒▒▒░▒▒░ ▒▒░▒▒░▒▒░ ▒▒░ ▒▒│ │▒▒░ ▒▒░▒▒░ ▒▒░ ▒▒▒▒▒░ ▒▒░ ▒▒░▒▒▒▒▒▒░ ▒▒░▒▒░▒▒▒▒▒░ ▒▒░ ▒▒│ │▒▒▒▒▒▒░▒▒░ ▒▒░▒▒░ ▒▒░▒▒░ ▒▒░ ▒▒░▒▒░ ▒▒░▒▒░ ▒▒░▒▒░ ▒▒▒▒▒░│ │▒▒░ ▒▒░ ▒▒▒▒░ ▒▒▒▒░ ▒▒▒▒▒▒░▒▒░ ▒▒░▒▒▒▒▒▒░▒▒░ ▒▒░▒▒▒▒▒▒░▒▒░z80│ ╚──────────────────────────────────────────────────────────────╝ [ Продолжение ] (C) WLODEK BLACK Здравствуйте, друзья! Закончился основной "курс" по ассемблеру, включающий описание процессора и системы его команд, и... посы- пались вопросы и заявки. И это замечательно, потому что наличие откликов подтверждает нужность рубрики "Ассемблер"; значит, вы, друзья мои, находите в ней полезное для себя; значит, будет и продолжение. А потом, почему все я да я? Может, кто-либо из опытных программистов тоже готов поделиться свежими "секретами"? Тогда пишите или звоните. А пользователи - тоже пишите! Ваши вопросы - наши ответы. А для сегодняшнего занятия вы, друзья мои, выбрали тему: Организация памяти в компьютере "Спектрум-128К". С предложением рассмотреть эту тему поступило 4 заявки. (3 воп- роса пришло по устройству моноблочного загрузчика, когда вся программа внешне выглядит как один бейсик-файл немеренной длины, и по компрессии данных - как ужать цифровую дему, например). О монозагрузчике поговорим через неделю! ┌────────────────────────┐ ┌─┴──────────────────────┐ │ ┌─┴──────────────────────┐ │7│ ┌─┴──────────────────────┐ │6│$│ ┌─┴──────────────────────┐ │4│ ├─┘ --------┌─┴──────────────────────┐ │3│ ├─┘ 65535 FFFF │ │1│ ├─┘ │ ОЗУ 16К 0│ ├─┘ <- порт #7FFD 49152 C000 │ ├─┘ (биты 2..0) --------├────────────────────────┤ BFFF │ │ │ ОЗУ 16К 2│ 32768 8000 │ │ --------├────────────────────────┤ 7FFF │ │ │ ОЗУ 16К 5│ 16384 4000 │ $ ├─┐ --------├────────────────────────┤ │ 3FFF │ │0│ <- порт #7FFD │ ПЗУ 16К 1│*│ (бит 4) 0 0000 │ *├─┘ --------└────────────────────────┘ На этой схеме показано распределение адресного пространства 128К, или, что то же самое, изображена карта памяти 128-й маши- ны. Память компьютера поделена на фрагменты объемом по 16К, на- зываемыми страницами. Страницы 2 и 5 постоянно включены по ука- занным адресам, а в диапазоне адресов #C000..#FFFF может находи- ться одна из 6-ти страниц - 0,1,3,4,6 или 7.В диапазоне адресов #0000..#3FFF включено одно из двух ПЗУ - Бейсик-48 или Бейсик- 128. Управление переключением карты памяти осуществляется с по- мощью системного регистра конфигурации, включенного программно как порт вывода с адресом #7FFD (32765). Вот назначение его раз- рядов: ┌──────┬──────┬──────┬──────┬──────┬──────┬──────┬──────┐ Порт │ -- │ -- │Блок. │ ПЗУ │Экран │ Номер страницы ОЗУ │ #7FFD │ │ │ 48К │48/128│ │ в #C000...#FFFF │<----- └──────┴──────┴──────┴──────┴──────┴──────┴──────┴──────┘ D7 D6 D5 D4 D3 D2 D1 D0 D0..D2 - номер страницы ОЗУ, включаемой по адресам #C000..#FFFF; D3 - местонахождение экрана: 0 - с #4000 в странице 5, 1 - с #C000 в странице 7; D4 - которое ПЗУ включено с #0000 по #3FFF: 0 - Бейсик-128; 1 - Бейсик-48; D5 - бит блокировки 48К. Теперь пояснения: бит D4 задает отображаемую на экране область - при 0 отображается обычный экран, как в 48-й машине; при 1 ото- бражается страница 7, причем "верхний", как говорят, экран ото- бражается, даже когда 7-я страница не включена в карту памяти! Бит D5 - блокировка режима "48К". Стоит установить этот бит в 1, как компьютер превратится в 48-ю машину, и обратно уже не верну- ться (только RESET)! При вызове функции "USR" в порт #7FFD записано число 16 - пораз- рядно это %00010000, то есть включено ПЗУ 48К, 0-я страница и основной экран. Эта конфигурация и считается основной, и когда вам доведется услышать выражение "включить основную память",это будет означать именно это; говоря языком Бейсика, OUT 32765,16. Если активен Бейсик-128, переключать карту памяти через OUT не удастся, так как Бейсик-128 сам оперирует с ней. Для получения возможности свободно манипулировать страницами нужно отвязаться от 128-го Бейсика, что можно достичь, например, запуском компью- тера через сброс в режиме TR DOS, или подать команду USR 0 из 128-го Бейсика. Но лучше всего для этой цели подойдет специаль- ная процедура в машинных кодах, которая "на ходу" обезвредит 128-й Бейсик и переведет исполнение программы в 48-й режим, но без блокировки системного регистра конфигурации. Вот ее текст: DI LD SP,(23613) ; ERR_SP - стек возврата по ошибке POP HL ; снимаем старое значение LD HL,4867 ; адрес входа в основной цикл Бейсик-48 PUSH HL ; заносим в стек на прежнее место LD HL,7030 ; адрес возврата из USR в 48-м Бейсике PUSH HL LD HL,23611 ; FLAGS - системная переменная RES 4,(HL) LD HL,(23631) ; адрес информации о каналах LD BC,15 ; смещение до адреса каналов клав./экран ADD HL,BC LD DE,5556 ; адрес образца канальной информации в 48К EX DE,HL LD C,4 ; BC=4 - количество пересылаемых байт LDIR ; канал клавиатуры/экрана инициализируется на 48К EI RET ; здесь уже будет работать Бейсик-48. О том,для чего может понадобиться такая "отвязка", мы поговорим в следующий раз, когда вместе упакуем и озагрузчим дему из-под DIGITAL STUDIO. Пример будет яркий и характерный! Пишите письма! [ Продолжение следует ]. ╔═══════════════════════════════
Другие статьи номера:
Вступление - эпиграф и содержание номера. |
BBS - список станций BBS ZXNet. |
Железо - обзор микропроцессора Zilog Z380, продолжение. |
Программирование - курс изучения ассемблера от Wlodek Black, продолжение. Организация памяти. |
Юмор - анекдоты. |
Юмор - Малая Энциклопедия компьютерных существ, К.Антонов и Maverick, продолжение. |
Поиск - поиск игр, программ. |
Юмор - Государственный мужчина, история. |
Юмор - 1001 вопрос про ЭТО. |
Реклама - реклама и объявления. |
Обратная связь - контакты редакции. |
Похожие статьи:
В этот день... 21 ноября