ZX-Ревю 1995 №4 1995 г.

Секреты TR-DOS - о системных переменных TR-DOS #5CC2-#5CC4.


О системных переменных #5CC2-#5CC4 © Макарычев В.П., г. Москва, 1995.

В составе системных переменных TR-DOS есть область, занимающая 3 байта, которая достаточно часто используется в программах (например, в процедурах TR-DOS, или в программах Н.Родионова). Это ячейки #5CC2-#5CC4 (23746-23748). В литературе упоминается, что #5CC2 должна содержать #C9 (команду RET), что заключается в следующем. Управление одним из способов перебрасывается на #5CC2 (типа CALL #5CC2 или #5CC2 помещается на стек и затем следует RET). А вот содержимое #5CC2 некоторыми программами меняется: вместо #C9 туда записывают #C3. После перехода счетчика адреса на эту ячейку, процессор считывает вместо RET команду JP nm, а адрес перехода nm заблаговременно заносится в ячейки #5CC3/4. Таким образом получается программный переключатель какой-либо процедуры: #C9 - она отключена, #C3 - подключена. Сама процедура может располагаться в ОЗУ или ПЗУ-SOS (для DOS такой вызов неудобен).

Именно так сделано в процедуре DOS RST#20. Здесь не следует путать процедуры DOS с их тезками из SOS. Выглядят они одинаково, но содержание их разное - зависит от подключенного ПЗУ: основного или теневого. В DOS RST#20 предназначена для вызова подпрограмм SOS или ОЗУ с последующим возвратом в DOS. Адрес вызываемой подпрограммы следует в виде двух байтов сразу же за RST#20. Но перед выходом на подпрограмму управление передается на #5CC2 и только по RET в ней, или в конце другой подпрограммы, адрес которой содержится в #5CC3/4, переходит на адрес, указанный в RST#20. Таким образом, RST#20 вызывает последовательно две подпрограммы, первая из которых может быть "пустой".

Еще пара замечаний о процедурах RST-DOS. Интересно, что в DOS RST#10 тоже осуществляет печать символа, код которого содержится в аккумуляторе, как и в SOS. А RST#18 выводит строку символов с адреса, заданного в регистре HL, до первого символа с кодом больше 127, который будет напечатан со сброшенным старшим битом, или до символа с кодом 0.

AAA




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Di:Halt`99 - Правда о Di:Halt.
Комикс - Комикс про медвежонка Пластида и лисенка Мюзо.
Черный ящик - разбор игр "BARD'S TALE", "ELITE" и "STRANGER".
Авторы - список авторов журнала и адрес редакции.
Тайны Micro Windows - и нюанcы програmmирования.

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