Формат данных в "Спектруме"
Комментарий к стр. 43
Данные в "Спектруме" хранятся в виде переменных и массивов в специально выделенной для этого области памяти. Эта область начинается непосредственно за областью, в которой размешается текст БЕЙСИК-программы.
На начало области программных переменных указывает двухбайтная системная переменная VARS. Она расположена по адресу 23267 (5АЕ3Н).
Конец области программных переменных задан специальным маркером - это байт, значение которого равно 80H (128),
"Спектрум" различает несколько разных типов переменных. Это:
- обычная числовая переменная, имя которой состоит из одной буквы, например x;
- числовая переменная, имя которой состоит из более, чем одной буквы, например
row;
- числовой массив, например а(5) или b (3,3,40);
- переменные, управляющие циклами FOR. .. NEXT, например i;
- строковые переменные, например a$;
- строковые массивы, например b$(10,40);
Числовая переменная с именем из одной буквы.
Занимает 6 байтов. В первом байте хранится ее имя. В последующих пяти - ее значение в интегральной форме. Об интегральном представлений действительных чисел см. "Первые шаги в машинном коде". Первый байт имеет следующую раскладку:
На то, что это простая переменная указывает специфическое расположение первых трех битов.
Числовая переменная с именем более чем из одной буквы.
Ее первый байт имеет следующий формат:
1 |
0 |
1 |
б |
у |
к |
в |
а |
|
Прочие байты имени (кроме последнего) имеют следующий формат |
0 |
б |
у |
к |
в |
а |
|
|
|
Последний байт имени: |
1 |
б |
у |
к |
в |
а |
|
|
|
За именем следуют 5 байтов для выражения самого числа в интегральной форме.
Числовой массив.
Первый байт:
Байты 2, 3 содержат полную длину всех элементов (по 5 байтов на каждый элемент массива) плюс по 2 байта на каждую размерность массива плюс один байт на указание количества размерностей, т. е. здесь содержится указание на конец массива. Байт 4 содержит размерность массива.
Байты 5,6 содержат количество элементов в первой измерении. Если размерность массива более чем 1, то:
Байты 7, 8 содержат количество элементов во втором измерении; и т. д.
После этого идут сами элементы массива по пять байтов на каждый элемент. Для многомерных массивов порядок следования данных следующий: b(1,1), b( 1,2), b( 1,3), b(2,1).....b(3,3)
Переменные цикла.
Первый байт:
Далее:
5 байтов - текущее значение; 5 байтов - конечное значение; 5 байтов - шаг;
2 байта - номер строки возврата;
1 байт - номер оператора в строке, к которому выполняется возврат.
Символьная переменная.
Первый байт:
Далее:
2 байта - длина строки. х байтов - текст строки.
Символьный массив.
Первый байт:
Далее:
2 байта - указание на конец массива;
1 байт - размерность;
2 байта - длина в первом измерении:
2 байта - длина в последнем измерении; Далее:
по одному байту на каждый элемент.
(С) ИНФОРКОМ, 1992