Работа с ZX-Spectrum 1993 г.

Глава 25 - память.


ГЛАВА 24

ПАМЯТЬ

Краткое содержание: CLEAR.

Вся память компьютера разбита на байты, каждый из которых пред-
ставим числом от 0. до 255. Каждый байт может быть записан в память по
определённому адресу от 0 до FFFFH (Н - здесь и далее означает шестнад-
цатиричное представление числа). Сам адрес может быть записан в память
как два байта. На диаграмме показано распределение памяти компьютера ZX
Spectrum:

Для получения содержимого области любой из памятей используется
функция РЕЕК с адресом в качестве аргумента. Функция возвращает зна-
чение байта по этому адресу.

Рассматриваемая ниже программа выводит содержимое первых 21 бай-
тов из ROM с их адресами:

10 PRINT "Address"; TAB 8;"Byte"
20 FOR аЮ TO 20
30 PRINT a; TAB 8; PEEK a
40 NEXT a

Для изменения содержимого памяти (только для RAM (ОЗУ)), использу-
ется оператор РОКЕ в форме:

POKE "'address", "new contents"
где "address" и "new contents" - числовые выражения. Например:

РОКЕ 31000, 57
"new contents" может принимать значения от -255 до 255.
Вся память подразделяется на области, предназначенные для хранения
информации различного назначения, что показано на диаграмме:

Область телевизионного экрана содержит образ текущего кадра. Она
доступна для операторов РЕЕК и РОК. Каждая позиция экрана представима

матрицей 8x8 точек (один байт на каждый ряд из 8-ми точек). Однако эти во-
семь байт хранятся в памяти не вместе.

Полный экран представляет собой 24 строки по 32 символа. Каждая
строка экрана прописывается 8-ю строками развёртки телевизионного экра-
на. Итого для записи одного экрана выполняется 192 сканирования, и в
памяти рядом хранятся байты одноимённых рядов матриц соседних позиций
экрана.

Область атрибутов содержит данные о цвете и Других параметрах каж-
дой позиции экрана.

Буфер принтера содержит символы, передаваемые на печать.

Область системных переменных содержит данные управления
вычислениями. Они полностью описаны в следующей главе. Некоторые из
них (CHANS, PROG, VARS, E_LINE и т.д.) содержат адреса границ между
системными областями памяти. Но это не переменные BASIC'a и их имена
не распознаются компьютером.

Область планов дополнительной памяти используется только с
MICRODRIVE.

В области канальной информации содержатся данные об устройствах
ввода-вывода (УВВ), а именно: клавиатуре (с нижней половиной экрана),
верхней половине экрана и принтере.

Каждая строка области BASIC-программы имеет формат:

Числовые константы в программе представлены в двоичной форме,
используя CHRS 14 и следующие за ним 5 байт самого числа.

Переменные имеют различные форматы представления в памяти. Ниже
представлен формат записи числа, имя которого состоит из одной буквы:

Числовые константы в программе представлены в двоичной форме,
используя CHRS 14 и следующие за ним 5 байт самого числа.

Переменные имеют различные форматы представления в памяти. Ниже
представлен формат записи числа, имя которого состоит из одной буквы:

Формат размещения числа, если имя имеет более, чем одну букву

Формат размещения числа, если имя имеет более, чем одну букву

Формат размещения числового массива

Формат размещения числового массива

Порядок элементов следующий:

1. элементы, для которых первая размерность равна 1;

Порядок элементов следующий:

1. элементы, для которых первая размерность равна 1;

2. элементы, для которых первая размерность равна 2;

3. элементы, для которых первая размерность равна 3 и т.д;
Затем в том же порядке по следующей размерности и т.д.
Например: Элементы массива С размерностью (3,6) расположатся в

памяти в следующем порядке:

В (1,1), В (1,2), В (1,3), В (1,4), В (1,5), В (1,6),

В (2,1)......В (3,6)

Формат размещения управляющих переменных для- FOR - NEXT опера-
торов:

Формат размещения строкового массива:

Формат размещения строкового массива:

Программируемый стек есть часть интерпретатора BASIC'a. Аппаратный
стек используется микропроцессором Z80 для запоминания адресов возвра-
та.

Резерв в данной версии не используется.

Назначение стека переходов к подпрограммам описано в главе 5.

Байт, адресуемый по RAMTOP, содержит верхний адрес, используемый
BASIC'om.

Даже оператор NEW, который очищает ПЗУ, не изменяет содержимого
области определяемых пользователем символов.

Вы можете изменить адрес RAMTOP в операторе CLEAR:

CLEAR "new ramtop" , по которому:

а) очищаются все области йеременных ;

б) очищается область экрана (подобно CLS);

в) переустанавливается позиция PLOT в левый нижний угол
экрана;

г) выполняется функция RESTORE ;

д) очищается стек переходов и устанавливается новое значение
RAMTOP

Функция RUN также выполняет действия CLEAR, хотя и не изменяет
значение RAMTOP.

Используя функцию CLEAR, Вы можете смещать RAMTOP, увеличивая
область определяемых пользователем символов. Можно несколько
увеличить доступную часть RAM (ОЗУ), используя функцию NEW. Например,

выполнение NEW, затем CLEAR 23800 помогает компьютеру при перепол-
нении ОЗУ.

Все указанные действия могут приводить к двум сообщениям об
ошибке и выдаче звукового сигнала:

"4 Out of memory ... "(переполнение памяти);

"G No room for line ..." (нет места для строки программы)

Можно изменить длительность подачи звукового сигнала, изменив
число по адресу 23608. По умолчанию предпологается 64.

Числа (за исключением 0) могут записываться в показательной форме
как например:

+М*2**Е

где М - мантисса в интервале 0.5 ... 1 (не может быть 1);

Е - экспонента, положительное или отрицательное число.

Допустим, Вы записали "М" в двоичной системе счисления, ИМИ - дроб-
ное и имеет двойную точку (подобно десятичной точке), то тогда будет:

1/2 — .1

1/4 — .01

3/4 — .11 и т.д.

Наше число "М" меньше, чем 1, значит,, у него нет битов перед
двоичной точкой. А поскольку оно больше 0.5, то левый бит следующий за
точкой - - это 1.

Для записи числа в память используем 5 байтов в следующем порядке:

а) записываем первые 8 битов мантиссы во второй байт ( мы помним,
что первый бит это 1), вторые 8 битов в третий байт и т.д. до пятого байта;

б) заменяем первый бит второго байта, в котором записана 1, на зна-
ковый бит (0 для " + и 1 для " -");

в) записываем в первый байт экспоненту + 128.

Например: мы хотим записать число 1/10

-3

1/10в4/5 * 2

мантисса будет .11001100110011001100110011001100В (поскольку 33-й
бит равен 1, мы должны округлить 32-й бит, записав 1 вместо 0), а экспонента
равна-3.

Теперь, применив наших три правила, запишем 5 байт:

Имеется альтернативный способ записи целого числа в интервале
65535 ... 65535:

а) первый байт равен 0;

б) второй байт равен 0 для положительного числа и FFH для отрицатель-»
ного числа;

в) 3 и 4 байты содержат младшие и старшие значащие биты числа (или
число +131072, если оно отрицательное);

г) 5 байт равен 0.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
IZHnews #0C - Рулезники.
Введемся - вступление к новому номеру газеты.
PC и Spectrum - сравнение эмуляторов спектрума: Unreal Speccy VS Z80 Stealth Emulator
Scene 0fF! - optical brothers news.
Мозаика - Размышления о рубрике "Видеообзор". Cheat в игре "НЛО - враг неизвестен". О подключении видеопроцессора Dendy к Speccy.

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