ZX-Spectrum & TR-DOS для пользователей и программистов 1994 г.

Системные переменные - для хранения и обработки служебной информации операционная система ZX Spectrum использует так называемые системные переменные.


СИСТЕМНЫЕ ПЕРЕМЕННЫЕ

Для хранения и обработки служебной информации (значений коор-
динат точек, адресов таблиц, текущих атрибутов и т. п.) операционная
система ZX Spectrum использует так называемые системные переменные, под
размещение которых отведена специальная область ОЗУ.

При описании системной переменной вслед за именем указывается
ее десятичный и шестнадцатеричный адрес. Адреса двух- и трехбайтовых
переменных записываются через косую черту, например: 23563/64
(#5С0В/§С) . В этих переменных младший байт числа, как принято в
микропроцессоре Z80, хранится в ячейке с меньшим адресом. Для блока
переменных указываются начальный и конечный адреса, разделенные мно-
готочием, например, 23552...23559 |#5СМ...#5С17) .

Во время работы интерпретатора Бейсика индексный регистр IY содер-
жит адрес переменной !3RR_NR 2361® (#5СЗА), и, следовательно, для обращения
к системным переменным удобно использовать индексный метод адресации.
Поэтому для каждой переменной приведена величина смещения адреса ее
первого байта относительно значения регистра IY, например, IY—$•.

Учитывая последнее, может возникнуть желание, изменив значение
IY, переместить область системных переменных. Однако авторы операцион-
ной системы, вероятно, не продумали этот вопрос и для обращения к
системным переменным использовали их физические адреса, привязав,
таким образом, область системных переменных к конкретному месту в
памяти.

Ниже следуют три раздела, первый из которых посвящен системным
переменным ZX Spectrum 128, второй освещает системные переменные
основного Бейсика, а в третьем разделе в таблице приведены сведения о
системных переменных TR-DOS.

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ ZX SPECTRUM 128
SWAP_23296..,23315 |#5В00...#5В13)

Эта и следующие 6 областей памяти используются для хранения небольших
подпрограмм, которыми пользуется расширение интерпретатора Бейсика;
подпрограмма SWAP преключает ROM-страницы в разделе микропроцессо-
ра CPUO.

YOUNGER_23316...23324 (#5В14...#5В1С)

Часть подпрограммы, используемой для связи расширения интерпретатора
с основным Бейсиком.

ОМВЧ 23325...23342 |#5B1P...#5B2E)

Подпрограмма ( бр<*ботки ошибок бейсик-интерпретатора,

PIN 23343...2334У |#5B2F...#SB33)

Подпрограмма ввода байта из RS-232 интерфейса.

POUT 23348...23369 (#5В34...#5В49)

Подпрограмма вывода байта по RS-232 интерфейсу.

POUT2_23370...23383 |#5B4A...#5BS7)

Подпрограмма, автоматически используемая при окончании ввода или вы-
вода байта по RS-232 интерфейсу.

TARGET 23384/85 (#SB58/59|

Содержит адрес подпрограммы, вызываемой 12,8-м расширением из основ-
ного Бейсика.

RETAPPR 23386/87 (#5В5А/5В)

Сохраняет адрес возврата в 128-е расширение при выполнении подпрограм-
мы из основного Бейсика.

BANKM_23388 t#5B5C)

Копия содержимого регистра конфигурации компьютера, при записи в порт
с адресом 32765 (#7FFD) система записывает в эту ячейку копию данных.

RAMHST _23389 |#SBSP)

Содержит число #CF — код команды RST 8, при возникновении ошибки в
расширенном интерпретаторе Бейсика сюда передается управление, таким
образом, эта и следующая ячейка памяти образуют вход в программу обра-
ботки ошибок.

BAMERB_ 23390 (#SBSE|

Содержит код ошибки расширенного интерпретатора Бейсика.

BAUP _23391/92 t#SBSF/60|

Значение этой переменной используется для расчета скорости передачи по
последовательному интерфейсу принтера RS-232.

SERFL__23393/94 |#SB6</62|

Младший байт используется как флаг, если при приеме символа по RS-
232 интерфейсу был принят второй байт данных, который при этом поме-
щается в старший байт переменной.

COl_23395 (#5В63)

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

WIDTH 23394 (#5В64)

Хранит номер максимальной печатной позиции при выводе на принтер, то
есть ширину строки символов.

TVPARS 23397 (#5В65)

Флаг-счетчик, используемый при выводе по RS-232 интерфейсу многобай-
товых управляющих символов, например, AT, TAB.

FLAGS3 23398 (#5В66)

Различные биты этой переменной управляют расширением интерпретатора
Бейсика 128:

Бит 0 сброшен, если работает экранный редактор бейсик-программы,
установлен в режиме калькулятора.

Бит 1 установлен, если для бейсик-программы задай номер строки авто-
запуска.

Бит 2 устанавливается при открытии файла на электронном диске;
Бит 3 сброшен, если используется магнитная лента, яри работе с элект-
ронным диском —• установлен;
Бит 4 установлен для команды Бейсика LOAD;
Бит 5 установлен для команды Бейсика SAVE;
Бит 6 установлен для команды Бейсика MERGE;
Бит 1 установлен для команды Бейсика VERIFY.

NSTR1 23399*..«23488 {#SB67...#SB70)

В этой переменной хранится десятисимволъыое имя файла при работе с
электронным диском, эта и следующие йять переменных образуют блок
управления файлом на электронном диске.

HPJTO__23489 j#5BJ1)

Тип файла:

0 — бейсик-программа,

1 — числовой массив,

2 — символьный массив,

3 — двоичный (кодовый) файл.

HPJ8B __23410/11 (#5872/73)

Длина блока данных.

НР„0Р__23412/13 (#5В74/75)

Адрес расположения блока данных в памяти.

HPJ)F 23414/11 t#5B76/77)

Длина бейсик-программы.

НР__11__23416/17 |#5В78/79)

Номер строки автозапуска для бейсик-программы.

SCJTO 23418 |#5В7А)

Тип файла (см. переменную HD__00 23409), эта и следующие три перемен-
ных образую второй (дополнительный) блок управления файлом на элект-
ронном диске.

SCJ№__23419/20 t#5B7B/7Cj

Длина блока данных.

SC„0Q_ 23421/22 (#5В7Р/7Е|

Адрес расположения блока данных в памяти.

SC_0F _23423/24 |#5B7F/80)

Длина бейсик-программы.

OLPSP_23425/26 (#5881/82}

Сохраняет значение указателя стека интерпретатора Бейсика на время
работы вспомогательных подпрограмм (экранного редактора, меню), при
этом используется временный стек TSTACK.

SFNEXT__ 23427/28 (#5В83/84)

Значение переменной указывает на первый свободный элемент в каталоге
электронного диска.

SFSPACE_ 23429/30/31 t#5B85/86/87)

Количество свободных байт на электронном диске.

ROWQ1_23432 (#5В88)

Образ первого ряда выносной клавиатуры*. Установленные биты соответст-
вуют нажатию на соответствующие клавиши.

ROW23_23433 t#5B89)

Образ второго и третьего рядов выносной клавиатуры.

ROW45__23434 С#5В8А|

Образ четвертого и пятого рядов выносной клавиатуры.

SYNRET_23435/36 (#5B8B/8Ct

Хранит адрес возврата из подпрограммы обработки ошибки бейснк-интер-
претатора.

LASTV_23437...23441 |#5В8Р...#5В91)

Хранит последнее напечатанное в калькуляторе значение.

RNL1NE__ 23442/43 |#5В92/93)

Номер текущей строки при перенумерации строк программы.

RNF1RST___23444/45 (#5В94/95|

Хранит номер начальной строки для перенумерации строк программы.

*) Клавиатура состоит из пяти рядов по четыре клавиши в каждом (из пятого
ряда используются только две клавиши).

RNSTEP_23446/47 {#5896/971

Хранит шаг перенумерации строк программы.

STRIP!_23448...23455 (#5В98...#5ВА5)

Восемь байт используются при выводе первой половины фирменного знака
(скошенные цветные полосы), кроме того, 32 байта начиная с этого адреса
используются при работе электронного диска.

STRIP!_23456-23463 t#5BA6...#5BA7)

Хранит вторую половину фирменного знака.

TSTACK_23464...23551 t#5BA8...#5BFF)

Область временного стека, используемого расширенным интерпретатором
Бейсика во время своей работы.

СИСТЕМНЫЕ ПЕРЕМЕННЫЕ ОСНОВНОГО БЕЙСИКА
KSTATE_23552...23559 (#5С00..#5С07)

Восемь байт составляют два блока, которые используются программой обслу-
живания клавиатуры (см. табл, 7). Для организации работы внешних про-
грамм эти переменные практически не применяются.

IASTJC__23568 1Y--50 (#5С88)

Код последней нажатой клавиши.

REPPEL_ 23561 IY-49 (#5С09)

Величина задержки (в 1/50 с) между нажатием клавиши и началом автома-
тического повторения нажатия (автоповтора).

REPPER_ 23562 8Y-48 (#5С0А)

Период автоповтора (в 1/50 с) при длительном нажатии на клавишу.
Изменяя системные переменные REPDEL и IREPP ЕЯ, можно настроить клавиа-
туру под конкретного пользователя.

PEFAPP_23563/64 1Y-47 (#5C0B/0C)

Адрес первого параметра пользовательской функции, определённой опера-
тором DEF FNi в процессе ее обработки. Например:

DEF FN n(a,b)~S!N a+COS b
[ DEF FN

DEF ADD

КАРАТА _ 23565 IY-45 l#5C0Pl

Код цвета, заданный дафровой клавишей в режиме курсора Е.

TVPATA _23566/67 IY-44 1#5C0E/0F)

Первый байт - код управления, заданный цифровой клавишей в режиме курсора Е.

Второй байт - первый параметр в AT или TAB.

STRMS, 23568...23605 1Y-42 |#5С10...#5С35|

Область хранения информации о потоках (более подробно см. «Архитектура
ZX Spectrum. Каналы и потоки»).

CHARS _23606/07 IY-4 (#5С36/37)

Адрес размещения текущего набора символов. После запуска компьютера —
адрес стандартного набора .15360.

Поскольку символы с кодами от 0 до 31 являются управляющими и в фонте
не определяются, то адрес действительного положения текущего набора на
256 (32x8) больше, чем указанный системной переменной CHARS. Напри-
мер, для назначения.текущим фонта, расположенного с адреса 64768, в
переменную CHARS необходимо записать число 64512 (64768-256).

RASP _23608 IV—2 t#5C38)

Число, пропорциональное длительности звукового сигнала, предупреждаю-
щего о заполнении буфера редактора,

Р8Р__23609 IY—1 (#5С39)

Число, пропорциональное длительности звучания сигнала при нажатии на
клавишу.

ERR_m 23610 IY+0 (#5СЗА)

Число, на единицу меньшее кода сообщения, выдаваемого при ошибке
(включая сообщение о нормальном завершении выполнения программы 0 ОК).

FLAGS _ 23611 IY+1 (#5СЗВ)

Отдельные биты этой переменной используются операционной системой
(см. также переменную FL AGS2):

Бит 0 установлен, если не нужно выводить пробел перед бейсик-оиератором
(при выводе на экран или печати большинства операторов Бейсика перед
ними выводится пробел.);

Бит i установлен, если для вывода используется поток #3 (обычно —
принтер);

Бит 2 установлен при вводе символа в режиме курсора L, сброшен при
вводе в режиме курсора К?

Бит 3 установлен при ожидании ввода символа в режиме курсора L,
сброшен при ожидании ввода в режиме К;

Бит.4 установлен, если работает расширенный интерпретатор Бейсика в
ZX Spectrum 128; при работе в стандартной конфигурации сброшен;
Бит 5 устанавливается при нажатии на любую символьную клавишу. Код
клавиши можно прочитать из переменной LAST_K;

Бит 6 установлен при обработке числового выражения, сброшен при
обработке символьного;

Бит 7 установлен при выполнении программы, сброшен при проверке
синтаксиса введенной строки.

TVJFIAG 23612 IY+2 (#5СЗС)

Отдельные биты этой переменной используются для управления выводом на
экран:

Бит 0 установлен при выводе на служебный экран, сброшен при выводе на
основной экран;

Бит 3 установлен, если режим вывода на экран мог измениться и требуется
проверка режима;

Бит 4 установлен при выводе листинга программы;

Бит 5 установлен при необходимости очистить служебный экран (напри-
мер, перед выводом сообщения).

ERR_SP_23613/14 IY+3 t#SC3P/3E)

Адрес, на который устанавливается указатель стека при запуске программы
обработки ошибок. Изменив значение переменной, можно подключить собствен-
ные процедуры обработки ошибок (см. «Использование подпрограмм ПЗУ»).

USTJ5P__23615/16 iY-fS t#SC3f/40)

Сохраняет адрес вершины стека в процессе вывода листинга программы.

МОРЕ _ 23617 8YH-7 (#5С41)

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

0 — очередной символ вводится в режимах курсора К, L или С;

1 — очередной символ вводится в режиме курсора Е;

2 и более — очередной и последующие символы вводятся в режиме кур-
сора G. При значении, превышающем 2, меняется внешний вид курсора.

NEWPPC 23618/19 8Y4-8 (#5С42/43)

Номер строки бейсик-программы, в которой расположен следующий выпол-
няемый оператор.

NSPPS 23626 iY i-10 (#$€44)

Номер следующего выполняемого оператора в строке бейсик-программы.
Переменные NEWPPC и NSPPS можно использовать для перехода к произволь-
ному оператору в бейсик-программе.

РРС 23621/22 IY+11 |#5С45/46)

Номер строки бейсик-программы, в которой расположен выполняемый оператор.
При выполнении оператора в непосредственном режиме в переменную
записано число 55534 (#FFFE).

SUBPPC 23623 IY-H3 t#5C47)

Номер выполняемого оператора в строке бейсик-программы.

BORPCR_ 23624 IY+14 (#5C48)

Атрибуты служебного экрана. Цветом фона служебного экрана определяется
цвет бордюра.

Е_РРС_23625/26 MY+1S |#5С49/4А)

Номер строки бейсик-программы, отмеченной курсором.

YAPS _23627/28 1Y-H7 t#5C4B/4C)

Адрес начала области переменных бейсик-программы.

PEST_23629/38 IY-H9 С#5С4Р/4Е)

Адрес первого символа имени обрабатываемой в данный момент перемен-
ной.

CHANS _23631/32 IY+21 (#5C4F/50)

Адрес начала области информации о каналах (см. «Архитектура
ZX Spectrum»).

CURCHL 23633/34 IY+23 (#5CS1/52)

Адрес первого байта описателя текущего канала в области информации о
каналах (см. «Архитектура ZX Spectrum»).

PROG 23635/36 IY4-2S (#5€S3/S4)

Адрес начала бейсик-программы. Вычитанием значения системной пере-
менной VARS из значения PROG вычисляется длина бейсик-программы.

NXTL8N 23637/38 IY+27 (#505/56}

Адрес начала следующей строки бейсик-программы.

РАТАРР _23639/40 BY+29 f#5CJ7/58j

Адрес последнего считанного оператором READ объекта данных в операторах
DATA.

E_JLINE 23641/42 IY+31 (#5С59/5А)

Адрес начала редактируемой строки.

K_CUR_ 23643/44 SY+33 (#5С5В/5С)

Адрес символа редактируемой строки, на который установлен курсор.

СН„АРР_23645/46 IY-F35 (#5С5Р/5Е)

Адрес следующего обрабатываемого символа в бейсик-программе.
Переменная может быть полезна при использовании внешних процедур
обработки синтаксиса.

X_P¥R_23647/48 IY+37 (#5C5F/6C?

Адрес символа бейсик-строки, вслед за которым установлен знак ? при
обнаружении синтаксической ошибки. В операциях, не связанных с провер-

кой синтаксиса, переменная может использоваться компьютером для времен-
ного хранения другой служебной информации.

WORKSP_23649/50 IY+39 (#5С61/62)

Адрес начала рабочей области бейсик-программы.

STKBOT_23651/52 IY+41 (#5С63/64)

Адрес начала стека калькулятора.

STKENP_23653/54 IY+43 t#5C65/66)

Адрес вершины стека калькулятора.

BREG_23655 IY+45 (#5С67)

Регистр В калькулятора.

MEM __23656/57 IY+46 (#5С68/69)

Адрес области памяти, используемой калькулятором. Как правило, для этих
целей используется системная область МЕМВОТ.

FLAGS2__23658 IY+48 (#5С6А)

Отдельные биты этой переменной используются операционной системой
(см. также переменную FLAGS):

Бит 0 установлен при необходимости очистить основной экран после
ввода строки;

Бит 1 установлен, если буфер принтера уже использовался;
Бит 2 установлен, если основной экран очищен;

Бит 3 установлен при использовании режима курсора С, сброшен при
использовании режима курсора L. Изменением состояния этого бита можно
программно устанавливать режимы регистров клавиатуры С или L;
Бит 4 установлен при использовании режима курсора К.

PF_SZ__23659 IY+49 (#5С6В)

Количество строк в служебном экране. Число строк в основном экране может
быть увеличено до максимума (24 строки) выполнением оператора РОКЕ
23659,0. Однако если количество строк в служебном экране меньше 2, то при
попытке вывода на него любого сообщения, например, ОК или BREAK — CONT
repeats, система будет вести себя самым неприличным образом. Запись в DF_SZ
нуля — один из способов защиты бейснк-программ от останова.

SJfOP _23660/61 IY+50 t#5C6C/6P)

Номер строки бейсик-программы, начиная с которой выводится автомати-
ческий листинг (по нажатию клавиши £nter).

QLPPPC 23662/63 IY+52 (#5C6E/6F)

Номер строки бейсик-программы, начиная с которой будет продолжено
выполнение программы после ввода оператора CONTINUE.

OSPCC___ 23664 IY+54 (#5С70)

Номер оператора в строке бейсик-программы, начиная с которого будет
продолжено выполнение программы после ввода оператора CONTINUE.

FLAGX_23661 IY+S5 (#5С7«1

Используется при обработке оператора INPUT:

Бит 1 установлен, если оператором INPUT вводится новая переменная;
Бит 5 установлен при работе в режиме ввода оператором INPUT, сброшен
в режиме редактирования бейсик-строки;

Бит Ь. установлен при обработке строки, введенной оператором INPUT;
Бит 7 установлен, если выполняется оператор INPUT LINE.

STRLEN_23666/67 IY+56 }#SC72/73)

Длинна обрабатываемой символьной переменной (ранее определенной) либо
идентификатор числовой или новой символьной переменной (младший
байт).

T_APPR_23668/69 IY+58 |#5С74/75)

Адрес следующего элемента в таблицах синтаксиса, расположенных в ПЗУ.

SEEP__23670/71 1Y+60 |#5С76/77)

Значение, используемое для вычисления псевдослучайного числа. После вы-
полнения оператора RANDOMIZE, переменная SEED изменяется в соответствии
со введенным параметром. Если RANDOMIZE использовался без иах^аметроз, то
в переменную SEED копируются два младших байта из переменной FRAMES.

FRAMES 23672/73/74 BY+62 t#5C78/79/7A|

Системный счетчик. После запуска (сброса) компьютера обнуляется. При
работе со стандартной процедурой обработки прерываний значение счетчи-
ка каждые 1/50 секунды увеличивается на единицу.

UPG 23675/76 IY+65 С#5С7В/7С|

Адрес начала области, используемой для размещения определяемых пользо-
вателем символов (см. «Русификация ZX Spectrum»).

COORPS 23677/78 IY+66 t#5C7P/7E)

Координаты X и Y последней изображенной на экране точки.

PJTOSN __23679 1Y4-69 (#5C7Fj

Содержит значение 33—п, где п -— номер следующей позиции печати в буфере
принтера.

PR_.CC__23688 IY4-79 (#5С80)

Младший байт адреса области, используемой в текущий момент под буфер
принтера.

NOTJJSEP _ 23681 IY+71 (#5С81)

В большинстве описаний эта переменная характеризуется как неиспользуемая
(о чем говорит ее название), но в действительности она содержит старший байт
адреса области, используемой в текущий момент под буфер принтера.
При выводе на ZX Printer операционная система подготавливает строку к
печати в буфере, расположенном по адресу, указанному переменными
WR_CC и NOT_U5B>.

ЕСНО Е__23682/83 IY+72 t#5C82/84)

Позиция (номер строки и колонка) следующего символа вводимой бейсик-строки.

DF_CC_ 23684/85 IY+74 (#5С34/35)

Адрес байта, соответствующего верхней линии точек знакоместа основного
экрана, в которое будет осуществлен вывод следующего символа.

PFCCL_23686/87 IY+76 (#5С86/87)

Адрес байта, соответствующего верхней линии точек знакоместа служебного
экрана, в которое будет осуществлен вывод следующего символа.

S_POSN_13688/89 IY+78 (#5С88/89)

Координаты следующей позиции вывода на основной экран. Координаты
хранятся в виде:
24—пг, 33—пс

где пг — номер строки, пс — номер столбца.

SPONSL_23690/91 IY+80 (#5С8А/8В)

Координаты следующей позиции вывода на служебный экран.

SCR_CT__23692 IY+82 (#5СЗС)

Число, на единицу большее количества строк, передвигаемых по экрану
вверх без запроса scroll?. Изменением содержимого этой ячейки можно
добиться безостановочного скроллинга экрана при выводе текста.

ATTRJ»__ 23693 1У+83 (#5С8Р)

Постоянные атрибуты экрана, задаваемые операторами PAPER, МК, FLASH и
BRIGHT*.

MASKP__23694 IY+84 t#5C8E)

Маска для разделения постоянных (ATTR__T) и текущих атрибутов при выводе
на экран. Если в MASK_P бит установлен, то соответствующий бит атрибута
при выводе на экран не изменяется.

ATTR„T__23695 IY+85 (#5C3Fj

Временные атрибуты, используемые при выводе на экран, например, опе-
ратором PRINT INK 7; PAPER 1;"../'.

MASK T 23696 IY+86 (#5C90)

——5ДЬи I IM—— —— ——■ —

Маска для разделения временных (ATTR_P) и текущих атрибутов при выводе на
экран.

P^FLAG_ 23697 1УЧ-87 (#5С91)

Параметры вывода на экран. Четные биты используются для постоянных
параметров, нечетные — для временных:

Бит 0/1 установлен при использовании OVER 1;

Формат хранения атрибутов соответствует формату их записи в области
атрибутов, см. «Архитектура ZX Spectrum»,

Бит 2/3 установлен при использовании INVERSE 1;
Бит 4/5 установлен при использовании INK 9;
Бит 6/7 установлен при использовании PAPER 9.

МЕМВОТ 23698...23727 (#5C92...#5CAF)

Область, используемая калькулятором для размещения значений, которые
неудобно обрабатывать через стек калькулятора.

NMIAPP__23728/29 IY+118 (#5СВ0/В1)

Не используется. Авторы системы, очевидно, предполагали задействовать эту
системную переменную для обслуживания немаскируемых прерываний, но
из-за допущенной неточности переменная действительно оказалась неис-
пользуемой*.

RAMTOP_ 23730/31 IY+120 (#5СВ2/В3)

Последний адрес в ОЗУ, разрешенный к использованию интерпретатором
Бейсика. Устанавливается оператором CLEAR.

PJtAMT 23732/33 IY+122 (#SCB4/B5)

Адрес последнего байта физического ОЗУ. Устанавливается при инициали-
зации компьютера после теста доступной памяти. В исправном компьютере
с объемом оперативной памяти 48К переменная должна содержать значение
65535 (#FFFF).




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Инструментарий - Статья о инструментальной системе для СПЕКТРУМА "THE GRAPHIC ADVENTURE CREATOR".
Смеходром - 9600 бод.
Ассмблер - Красивый эффект "Горение спрайта".
Наши новости - О переодичности выхода газеты.
Help for games - разбор игры "HIJACK" ("ЗАХВАТ ЗАЛОЖНИКОВ").

В этот день...   29 марта