Nicron #20
14 февраля 1997

Программирование - курс изучения ассемблера от Wlodek Black, продолжение. Организация памяти.

<b>Программирование</b> - курс изучения ассемблера от 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 вопрос про ЭТО.

Реклама - реклама и объявления.

Обратная связь - контакты редакции.


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

Похожие статьи:
Вступление - Выход этого номера задержался, но на то были объективные причины...
Авторы - от авторов: содержание номера.
Система - Описание программ : ZX-ASM3.0, Universal XAS Converter v2.1, Format Utility v2.01, Commander DOS v1.9, Super Catalog v1.12, Text Designer v1.0, The Dizzy Editor v1.0, Digital Studio for Covox, Alfasoft Music Crasher v2.13. Драйвер печати шрифтов , созданных в Mach v2.4.
Pot-Pourri - "Открытое обращение" к Cпектрумистам, прошедшее в конференции ZX.
Юмор - Стих "OA программистов".

В этот день...   25 апреля