ZX-Spectrum изнутри 1969 г.

Глава 1 - распределение памяти.


I. РАСПРЕДЕЛЕНИЕ ПАМЯТИ

В принципе память поделена на две основные части: RUM и RAM. ROM
занимает адреса 0..16383, RAM - адреса 16384..65535. Содержимым ROM
мы сейчас заниматься не будем, но зато внимательно присмотримся к па-
мяти RAM. Она поделена на блоки, выполняющие различные функции в сис-
теме БЕЙСИКа (рис.1).

DISPLAY FILE - Область, в которой хранится информация о том,

/

включены иаи погашены последовательный точки экрана. Это занимает
6144 байта.

ATTR - Эти 768 байт ( адреса 22S28) определяют цвета последова-
тельных полей экрана (8*6 точек),

БУ1ЕР ПРИНТЕРА - Эта область (от 23296 до 23551) используется
лишь во время работы компьютера с принтером. Если не используются
инструкции, касающиеся принтера (LUST, LPRINT, COPY), то его содер-
жимое не меняется и его можно использовать для других целей. Помните
только, что использование какой-либо из этих инструкций даже без
подключения принтера произведет в этой области изменения.

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ - Эти ячейки памяти используются системой
для запоминания необходимых для ее безошибочной работы данных. Таких
как, например, адреса так называемых подвижных блоков памяти, инфор-
мации о выполнении программы в БЕЙСИКе (т.е. какая строка выполня-
ется, к какой должен осуществляться переход, появились ли какие-ни-
будь ошибки и т.п.). В этой области находятся также переменные, со-
держащие код последней нажатой клавиши, продолжительность "ВЕЕР" кла~

виатуры и еще много других. Подробнее мы займемся этим позднее.

Непосредственно за системными переменными, которые кончаются ад-
ресом 23773, начинаются так называемые подвижные области памяти. Это
означает, что адреса их начал и концов (а также длина) могут изме-
няться в зависимости от того, подключены ли какие-нибудь внешние уст-
ройства, какова длина программы на БЕЙСИКе, сколько образуется пере*
менных и т.д. Адреса подвижных блоков находятся в системных
переменных.

Ма рис.1 и рис.2 число за стрелкой означает адрес начала указыва-
емого блока. Если адрес этот перемещается, то вместо адреса записано
имя системной переменной, содержащей этот адрес, а в скобках - адрес
этой переменной. В квадратных скобках находится значение этой пере-
менной, которое устанавливается после включения компьютера (или вы-
полнения RESET) , но без подключения внешних устройств.

КАРТА МИКРОДРАЙВА - Если к Вашему компьютеру подключен ZX интер-
фейс-! , то с адреса 23734 до адреса, на 1 меньшего, чем содержимое
CHANS, находится карта микродрайва - область, используемая как буфер
для трансляции данных, как набор добавочных системных переменных и
т.п. Если интерфейс не подключен, то эта область попросту не сущеет-
вуpi - переменная CHANS содержит адрес 23734. Она определяет начало
блока памяти, в котором содержатся данные о существующих каналах.

ИНФОРМАЦИЯ О КАНАЛАХ - Необходима для безошибочного выполнения
инструкций PRINT, LIST, INPUT и подобных им. В последней ячейке этой
области находится #80 (128), определяющая конец этого блока (это -
т.н. указатель конца).

ОБЛАСТЬ БЕЙСИКА - Область памяти содержит текст введенной прог-
раммы. Адрес ее начала хранится в переменной PROG. Сразу за текстом
программы (с адреса, указываемого переменной VARS) находится область,
в которой интерпретатор размещает переменные, создаваемые программой.
Она заканчивается указателем конца. Затем, начиная с адреса, содержа-
щегося в переменной Е_ LINE, находится область, используемая во время
редактирования строки БЕЙСИКа, а также ввода директив с клавиатуры
(т.е. когда в нижней части экрана мигает курсор и мывводим инструкцию
на БЕЙСИКе). В конце этой области находятся 2 байта с содержимым 13
(ENTER) и 128 (конец этой области). Сразу после, начиная с адреса,
указываемого переменной WQRKSP, находится подобная область, но пред-
назначенная для ввода данных во время выполнения интерпретатором
инструкций INPUT (завершенной знаком ENTER). За буфером INPUT (кото-
рый автоматически удаляется после выполнения этой инструкции) нахо-
дится "текущее рабочее пространство" - место памяти, используемое для
самых различных целей. Туда, между прочим, загружаются заголовки счи-
танных с ленты программ. Туда считывается программа, размещаемая в
памяти с помощью MERGE, прежде :ем она будет присоединена к уже су-
ществующей программе. Зта область используется тогда, когда на опре-
деленное время требуется немного свободной памяти, но только во вре-
менное пользование. Однако, системе БЕЙСИКа принадлежит область памя-
ти до ячейки, указываемой системной переменяой RAMT0P. По этому ад-
ресу находится число #3 (62), Kotopoe устанавливает конец используе-
мой БЕЙСИКОМ области с Двигаясь по.памяти вниз, мы сталкиваемся с од-
ним неиспользуемым байтом. Этот байт составляет совместно с байтом,
указываемым с помощью RAMT0P, единое двухбайтное число (являясь его
младшим байтом), необходимое для верной работы инструкции RETURN,
Если во время ее выполнения стек G0SU8 будет уже пуст, то это число
сыграет роль его продолжения. Но поскольку оно больше чем 15872 (82*
256), а строки БЕЙСИК* не имеют такой высокой нумерации, то это будет
восприниматься как ошибка и сигнализироваться сообщением "RETURN без
60SUB". Сразу после этого байта (двигаясь все время вниз по памяти)
начинается "стек G0SU8". В него заносятся номера программных строк,
из которых были выполнены инструкции перехода к подпрограмме, чтобы
интерпретатор знал точно, куда должна вернуть управление инструкция
RETURN. Если интерпретатор не находится в подпрограмме (вызванной с
помощью 60SUB), то зтог стек просто не существует - в нем не записано
ни одного значения. Ниже находится "машинный стек", непосредственно
используемый микропроцессором. Оба этих стека откладываются в сторону
уменьшения адресов памяти. Специальную роль играет системная перемен**
ная ERRSP. Процедура, обрабатывающая ошибку БЕЙСИКа (вызывается ко*
мандой микропроцессора RST 8), помещает значение этой переменной в
регистр SP, после чего выполняет RET, считывая таким путем последний
записанный в стеке адрес (во время выполнения программы он равен
обычно 4867). По этому адресу в ROM находится процедура, выводящая
сообщение об ошибке.

ГРАФИКА, ОПРЕДЕЛЕННАЯ ПОЛЬЗОВАТЕЛЕМ - 168 байт, зарезервирован-
ных для определения знаков UDG (их.можно ликвидировать, например, с
помощью CLEAR 65535). Адрес последней ячейки памяти (равный 65535,
если Ваш компьютер полностью исправен) запоминается в переменной
P_RAHT, Если часть памяти RAM повреждена, то эта переменная содержит
адрес последней исправной ячейки.




  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



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

Похожие статьи:
От авторов - задача нашeго жyрнала - донeсти пользоватeлям SРECCY как можно большe информации, как для программиста, так и для начинающeго "чайника".
Злоба дня - CC'999: мы же Вас предупреждали...
КлинМозгов - Жертвоприношение.
О журнале - Платформобесие - многоплатформенная оболочка для журнала.
Scene - GALZA exhibition 2004.

В этот день...   21 ноября