ГЕРГЕЛЬ И.В. МОСКВА, МИФИ, Т.324-97-55. 12 ФЕВ 88.

              ОПИСАНИЕ НА
          НОВОЕ МОЩНОЕ СРЕДСТВО ОТЛАДКИ
        ***** СИМВОЛИЧЕСКИЙ ОТЛАДЧИК *****

        (РАБОТАЕТ ТОЛЬКО В RT-11 V05.04)

------------------------------------------------------------------------------

СИМВОЛИЧЕСКИЙ ОТЛАДЧИК СОДЕРЖИТ ДВА ДРАЙВЕРА: SDS.SYS (SOFT) И SDH.SYS (HARD),
А ТАКЖЕ УТИЛИТУ DBGSYM.SAV . ПО ЖЕЛАНИЮ ВЫ МОЖЕТЕ ИСПОЛЬЗОВАТЬ ЛИБО SOFT, ЛИБО
HARD, ПЕРЕИМЕНОВАВ ЕГО В SD (ИНАЧЕ ДРАЙВЕР НЕ РАБОТОСПОСОБЕН). У МЕНЯ SDS
ПЕРЕИМЕНОВАН В SD.

    ВНИМАНИЕ! КАКАЯ-ЛИБО ДОКУМЕНТАЦИЯ ПО SD У МЕНЯ ОТСУТСТВУЕТ, ПОЭТОМУ
СИЕ ОПИСАНИЕ ОСНОВАНО ЛИШЬ НА ИЗУЧЕНИИ SD МЕТОДОМ "ТЫКА" И ЯВЛЯЕТСЯ ЛИШЬ
РУКОВОДСТВОМ К ПОИСКУ. СОПОСТАВЛЯЙТЕ С ODT И ПРИКЛАДЫВАЙТЕ СВОЮ ГОЛОВУ!

    ***ДРАЙВЕРЫ SD ПРИНИМАЮТ ТАКИЕ КОМАНДЫ SET***

SET SD BREAK		- ПЕРЕДАЧА УПРАВЛЕНИЯ В ОТЛАДЧИК,
SET SD ESC		- ПОСЛЕ ЭТОГО НАЖАТИЕ НА КЛАВИШУ ESC (АР2) ПРИВОДИТ К
        ТОМУ ЖЕ ЭФФЕКТУ, ЧТО И ;S (ВЫПОЛНЕНИЕ ОДНОГО ШАГА ПРОГРАММЫ),
SET SD REG		- РАБОТАЕТ ТОЛЬКО НА ТЕРМИНАЛАХ КЛАССА VT100:
              ФИКСИРУЕТ ВЕРХНЮЮ ЧАСТЬ ЭКРАНА И ПОСТОЯННО ОБНОВЛЯЕТ
              В НЕЙ ИНФОРМАЦИЮ О СОДЕРЖИМОМ РЕГИСТРОВ И ДР.
SET SD SYSGEN		- ПРИСПОСОБИТЬ SD К КОНКРЕТНОЙ ОПЕРАЦИОННОЙ СИСТЕМЕ,
SET SD ADROFF=ВОСЬМ_ЧИСЛО - ЗАНЕСТИ В _ADROFF ЗНАЧЕНИЕ (СМ.НИЖЕ),
SET SD DATOFF=ВОСЬМ_ЧИСЛО - ЗАНЕСТИ В _DATOFF ЗНАЧЕНИЕ.

НЕПОНЯТНО, ЧЕМ СУЩЕСТВЕННО ОТЛИЧАЮТСЯ SDS И SDH. ИЗВЕСТНО ТОЛЬКО, ЧТО SOFT
ПОЗВОЛЯЕТ ПО МАКРО .PRINT ПОЛУЧИТЬ ВСЕ ВЫВОДИМЫЕ СИМВОЛЫ СРАЗУ, А HARD ВЫДАЕТ
ИХ ПО ОДНОМУ-ДВА (КАК ODT).

        ***ПРОСТЕЙШЕЕ ИСПОЛЬЗОВАНИЕ***

 LOAD SD
 GET ФАЙЛ_ПРОГРАММЫ
 SET SD BREAK
ИЛИ ЧЕРЕЗ UCL: DEBUG ФАЙЛ_ПРОГРАММЫ
ФАЙЛ_ПРОГРАММЫ - ПРОИЗВОЛЬНЫЙ ФАЙЛ ТИПА .SAV, КОТОРЫЙ ВЫ ХОТИТЕ ОТЛАДИТЬ.

ТАКИМ ОБРАЗОМ, ПЕРВОЕ ОТЛИЧИЕ ОТ ODT: НЕ НАДО ЛИНКОВАТЬ ОТЛАДЧИК СОВМЕСТНО С
ОТЛАЖИВАЕМОЙ ПРОГРАММОЙ (СЛ-НО, МОЖНО "ОТЛАДИТЬ" ПРОГРАММУ, НЕ ИМЕЯ ЕЕ
ИСХОДНОГО ТЕКСТА!). ХОТЯ, КОНЕЧНО, И ODT МОЖНО ЗАПУСТИТЬ ПОДОБНЫМ ОБРАЗОМ, НО
ВСЯ ПРЕЛЕСТЬ SD В ТОМ, ЧТО ЭТО ДАЛЕКО ЕЩЕ НЕ ВСЕ. ВТОРОЕ МОЩНОЕ ОТЛИЧИЕ: SD
СНАБЖЕН ДИЗАССЕМБЛЕРОМ. ПОЛУЧИВ ПОДСКАЗКУ DBG> ,ВЫ МОЖЕТЕ ВВОДИТЬ КОМАНДЫ В
ФОРМАТЕ, БЛИЗКОМ К ODT ИЛИ В ФОРМАТЕ ДИЗАССЕМБЛЕРА SD.

        ***ТЕПЕРЬ О ТОМ, ПОЧЕМУ ОТЛАДЧИК СИМВОЛИЧЕСКИЙ***

МОЖНО ПРИ ЛИНКОВКЕ СВОЕЙ ПРОГРАММЫ (НАЗОВЕМ ЕЕ D) СОЗДАТЬ ФАЙЛ ГЛОБАЛЬНЫХ
СИМВОЛОВ ТИПА .STB:
 LINK/SYMBOL:D D
ЗАТЕМ ЗАПУСТИТЬ DBGSYM:
 DBGSYM D
БУДЕТ СОЗДАН НА SY: ФАЙЛ ДРАЙВЕРА ST.SYS , В КОТОРОМ СОДЕРЖАТСЯ ВСЕ ГЛОБАЛЬНЫЕ
СИМВОЛЫ. ЗАТЕМ:
 UNL ST
 REM ST
 INS ST
 LOA ST
 LOA SD
 GET D
 SET SD BREAK
И ВЫ В ОТЛАДЧИКЕ. ТЕПЕРЬ УЖЕ АДРЕСА ПАМЯТИ ОТОБРАЖАЮТСЯ КАК СМЕЩЕНИЯ
ОТНОСИТЕЛЬНО ГЛОБАЛЬНЫХ СИМВОЛОВ. ЕСЛИ ВЫ ОТЛАЖИВАЕТЕ АССЕМБЛЕРНУЮ ПРОГРАММУ,
МОЖЕТЕ ОБЬЯВИТЬ ИНТЕРЕСНЫЕ ВАМ МЕТКИ КАК ГЛОБАЛЬНЫЕ И ОТЛАЖИВАТЬСЯ,
ПРАКТИЧЕСКИ ИМЕЯ НА ЭКРАНЕ ТЕКСТ ВАШЕЙ ПРОГРАММЫ. ПРИ РАБОТЕ С СИМВОЛАМИ,
ВЗЯТЫМИ ИЗ ST-ДРАЙВЕРА ИЛИ СОЗДАННЫМИ КОМАНДОЙ " МЕТКА: ", SD ОТОБРАЖАЕТ
АДРЕСА ПАМЯТИ, КАК ПОЛОЖИТЕЛЬНЫЕ СМЕЩЕНИЯ ОТ БЛИЖАЙШЕГО ГЛОБАЛЬНОГО СИМВОЛА
(НАПРИМЕР: START+2, START+144 И Т.П.). И ВООБЩЕ, ЕСЛИ ЕСТЬ СИМВОЛЫ, ТО ОНИ
МОГУТ ИСПОЛЬЗОВАТЬСЯ ВСЕГДА ВМЕСТО АДРЕСОВ И КОНСТАНТ. НАПРИМЕР, ЕСЛИ У ВАС
ОПРЕДЕЛЕН СИМВОЛ START, TO МОЖНО НАБРАТЬ:
 PC[ 					START
     ^ПОЛУЧИЛИ ТЕКУЩЕЕ ЗНАЧЕНИЕ		^ЗАНЕСЛИ В PC НАЧ. АДРЕС ПРОГРАММЫ.

        ***СПИСОК КОМАНД SD***

АДДР;G	ИЛИ ГЛ_СИМВ;G - ЗАПУСТИТЬ С УКАЗАННОГО АДРЕСА
;P - ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ
X;P - ПРОЙТИ X РАЗ БЕЗ ОСТАНОВКИ ТУ ТОЧКУ ОСТАНОВА, НА КОТОРОЙ СЕЙЧАС
 НАХОДИМСЯ
АДДР;B	ИЛИ ГЛ_СИМВ;B - ПОСТАВИТЬ ЕЩЕ ОДНУ ТОЧКУ ОСТАНОВА
 МОЖНО ПОСТАВИТЬ 8 ТОЧЕК ОСТАНОВА, НО КАК УДАЛИТЬ КОНКРЕТНО ОДНУ ИЗ НИХ,
 Я НЕ ЗНАЮ. МОЖНО УДАЛИТЬ ВСЕ СРАЗУ:
;B
;S - ВЫПОЛНИТЬ ОДНУ КОМАНДУ
X;S - ВЫПОЛНИТЬ X КОМАНД
;T - ОТМЕНИТЬ РЕЖИМ, УСТАНОВЛЕННЫЙ ПО SET SD ESC (ДЕЙСТВУЕТ ДО ПЕРЕЗАГРУЗКИ
 SD-ДРАЙВЕРА )
ГЛ_СИМВ;K - УДАЛИТЬ ГЛОБАЛЬНЫЙ СИМВОЛ (ДЕЙСТВУЕТ ДО ПЕРЕЗАГРУЗКИ ST-ДРАЙВЕРА,
ЕСЛИ УДАЛЕН СИМВОЛ, СОДЕРЖАЩИЙСЯ В ST) , НАПРИМЕР: START;K
;R - ОБНОВИТЬ ВЕРХНЮЮ ОБЛАСТЬ ЭКРАНА (ЕСЛИ УСТАНОВЛЕНО SET SD REG)

ЕСТЬ ЕЩЕ ОДНА КОМАНДА:    ;V    . НАЗНАЧЕНИЕ ЕЕ НЕИЗВЕСТНО.

        ***ПОДДЕРЖИВАЮТСЯ СЛЕДУЮЩИЕ ФУНКЦИИ ODT***

CR	(ВК)
LF	(ПС)
\
^
@

        ***СПИСОК ФУНКЦИЙ, ОТЛИЧАЮЩИХСЯ ОТ ODT***

МЕТ: - ПОСТАВИТЬ МЕТКУ "МЕТ" НА ТЕКУЩЕЙ ЯЧЕЙКЕ (СОЗДАТЬ СИМВОЛ)
/ - ДИЗАССЕМБЛИРОВАТЬ КОМАНДУ В ТЕКУЩЕЙ ЯЧЕЙКЕ
[ - ОТКРЫТЬ ТЕКУЩУЮ ЯЧЕЙКУ КАК СЛОВО
' - ОТКРЫТЬ БАЙТ КАК СИМВОЛ ASCII
" - ОТКРЫТЬ СЛОВО КАК 2 СИМВОЛА ASCII
% - ОТКРЫТЬ СЛОВО КАК 3 СИМВОЛА RADIX
_ (ПОДЧЕРКИВАНИЕ) - ПРИЗНАК НЕПОСРЕДСТВЕННОГО АРГУМЕНТА, НАПРИМЕР:
 1000%	_%XXX	- ОТКРЫТЬ ЯЧЕЙКУ 1000 И ЗАПИСАТЬ ТУДА XXX В RADIX (ИНАЧЕ XXX
 БУДЕТ ВОСПРИНЯТО КАК ГЛОБАЛЬНЫЙ СИМВОЛ
= - ВЫВЕСТИ ЗНАЧЕНИЕ ГЛОБАЛЬНОГО СИМВОЛА (АДРЕС, ИМ ОБОЗНАЧЕННЫЙ)
. (ТОЧКА) - ИСПОЛЬЗУЕТСЯ ПРИ ЗАПИСИ КОНСТАНТ ДЛЯ ОБОЗНАЧЕНИЯ ДЕСЯТИЧНОГО ЧИСЛА

    РЕГИСТРЫ ОТКРЫВАЮТСЯ ПО ИХ ИМЕНАМ, НАПРИМЕР: R0[    SP[    PC[    .
ЕСТЬ ЕЩЕ ТРИ ВНУТРЕННИХ РЕГИСТРА SD: PS - РЕГИСТР СОСТОЯНИЯ ПРОЦЕССОРА,
_DATOFF И _ADROFF. ПОСЛЕДНИЕ ДВА РЕГИСТРА ПРЕДНАЗНАЧЕНЫ ДЛЯ УПРАВЛЕНИЯ
ФОРМАТОМ ДИЗАССЕМБЛИРОВАНИЯ.
    РЕГИСТР _ADROFF
ЗАДАЕТ МАКСИМАЛЬНОЕ СМЕЩЕНИЕ ОТ ГЛОБАЛЬНОГО СИМВОЛА, КОТОРОЕ ОТОБРАЖАЕТСЯ
КАК СМЕЩЕНИЕ. НАПРИМЕР, ЕСЛИ У ВАС ОПРЕДЕЛЕН ВСЕГО 1 ГЛОБАЛЬНЫЙ СИМВОЛ
START=1000, А В _ADROFF ЗАНЕСЕНО ЧИСЛО 10, ТО АДРЕС 1002 БУДЕТ ПРЕДСТАВЛЕН КАК
START+2, А АДРЕС 1020 КАК 1020. КРОМЕ ТОГО, ЗНАЧЕНИЕ _ADROFF ВЛИЯЕТ НА
ПРЕДСТАВЛЕНИЕ АДРЕСА В ПОЛЕ ОПЕРАНДОВ ДИЗАССЕМБЛИРОВАННОЙ КОМАНДЫ. В
РАССМОТРЕННОМ СЛУЧАЕ КОМАНДЫ БУДУТ ДИЗАССЕМБЛИРОВАНЫ ТАК:
CLR @#1010		-->		CLR @#START+10
CLR @#1012		-->		CLR @#1012
MOV 1006,@1010		-->		MOV START+6,@START+10
MOV 1022,@1060		-->		MOV 1022,@1060

    _DATOFF
ЗАДАЕТ МАКСИМАЛЬНОЕ СМЕЩЕНИЕ ОТ ГЛОБАЛЬНОГО СИМВОЛА, КОТОРОЕ В ПОЛЕ ОПЕРАНДОВ
ПРИ НЕПОСРЕДСТВЕННОЙ, ИНДЕКСНОЙ И КОСВЕННО-ИНДЕКСНОЙ АДРЕСАЦИИ БУДЕТ
ПРЕДСТАВЛЕНО В ВИДЕ СМЕЩЕНИЯ. БОЛЬШЕЕ ЧИСЛО В ПОЛЕ ОПЕРАНДОВ
ДИЗАССЕМБЛИРОВАННОЙ КОМАНДЫ БУДЕТ ПРЕДСТАВЛЕНО УЖЕ КАК ВОСЬМЕРИЧНОЕ ЧИСЛО.
НАПРИМЕР: В _DATOFF ЧИСЛО 100.
ТОГДА КОМАНДЫ БУДЕТ ДИЗАССЕМБЛИРОВАНЫ ТАК:
 MOV #1102,R0		-->		MOV #1102,R0
 MOV #1030,R0		-->		MOV #START+30,R0
 MOV 1100(R0),@1200(R0) -->		MOV START+100(R0),@1200(R0)
 MOV 1200(R0),@1004(R0) -->		MOV 1200(R0),@START+4(R0)

СУММИРУЯ, МОЖНО СКАЗАТЬ, ЧТО _ADROFF УПРАВЛЯЕТ ПРЕДСТАВЛЕНИЕМ АДРЕСА КОМАНДЫ
И ФОРМАТОМ ДИЗАССЕМБЛИРОВАНИЯ СЛЕДУЮЩИХ ВИДОВ АДРЕСАЦИИ:
АБСОЛЮТНАЯ		@#A		КОД 37,
ОТНОСИТЕЛЬНАЯ		A		КОД 67,
КОСВЕННАЯ ОТНОСИТЕЛЬНАЯ @A		КОД 77,
А _DATOFF УПРАВЛЯЕТ ФОРМАТОМ ДИЗАССЕМБЛИРОВАНИЯ ТАКИХ ВИДОВ АДРЕСАЦИИ:
НЕПОСРЕДСТВЕННАЯ	#N		КОД 27,
ИНДЕКСНАЯ		X(R)		РЕЖИМ 6, РЕГИСТР - НЕ PC,
КОСВЕННАЯ ИНДЕКСНАЯ	@X(R)		РЕЖИМ 7, РЕГИСТР - НЕ PC.

ЧТОБЫ ЗАНЕСТИ В ЭТИ РЕГИСТРЫ ЗНАЧЕНИЕ, НАБЕРИТЕ:
_ADROFF[	ЗНАЧ
_DATOFF[	ЗНАЧ

ЕСЛИ, ПОЛУЧИВ ОПЕРАНД В СИМВОЛЬНОМ ВЫРАЖЕНИИ, ВЫ ХОТИТЕ УЗНАТЬ ЗНАЧЕНИЕ
ОПЕРАНДА, НАПРИМЕР, START+10, ТО НАЖМИТЕ КЛАВИШУ = .

ДОПУСТИМЫ ВЫРАЖЕНИЯ ТИПА
2+3*4/
START+3.*4.[
2+<3*4>= (НУ ЭТО УЖЕ ИСПОЛЬЗОВАНИЕ SD В КАЧЕСТВЕ ВОСЬМЕРИЧНОГО КАЛЬКУЛЯТОРА)
И Т.П.

МОЖНО ИСПРАВЛЯТЬ ВВЕДЕННОЕ, ПОЛЬЗУЯСЬ DEL (ЗБ).

        ***ИТАК, ПОЛУЧИВ ПОДСКАЗКУ DBG> ***

Я ОБЫЧНО ВВОЖУ СЛЕДУЮЩИЕ КОМАНДЫ (В ПРОСТЕЙШЕМ СЛУЧАЕ, БЕЗ ST):
40[		(УЗНАЮ СТАРТОВЫЙ АДРЕС СТАДР)
PC[	СТАДР	(ЗАНОШУ ЕГО В PC)
;S		(НАЧИНАЮ ОТЛАДКУ В ПОШАГОВОМ РЕЖИМЕ)
ИЛИ
АДДР;B		(СТАВЛЮ ТОЧКУ ОСТАНОВА)
СТАДР;G		(ЗАПУСКАЮ ПРОГРАММУ)

        ***ВЫХОД В СИСТЕМУ***
0;G

РЕКОМЕНДУЕТСЯ ПЕРЕД ЗАГРУЗКОЙ ИЗМЕНЕННОГО ФАЙЛА_ПРОГРАММЫ УДАЛИТЬ ВСЕ ТОЧКИ
ОСТАНОВА. СОВЕТ ИЗОЩРЕННЫМ ПРОГРАММИСТАМ: НЕ ПРОИЗВОДИТЕ В ОТЛАЖИВАЕМОЙ
ПРОГРАММЕ ЗАПИСЬ ПО КАНАЛУ #17 (ВОСЬМ). SD, ВИДИМО, ИСПОЛЬЗУЕТ ЭТОТ КАНАЛ, И
ВЫ ЗАПИШЕТЕ НЕ В ФАЙЛ СВОЕЙ ЗАДАЧИ, А ФАЙЛ SY:SD.SYS . ТАКИМ МЕТОДОМ Я УСПЕШНО
ПОРТИЛ ОТЛАДЧИК.

    ЖЕЛАЮ ПРИЯТНОЙ ОТЛАДКИ!

                БУДУ БЛАГОДАРЕН КАЖДОМУ,
                КТО СООБЩИТ МНЕ ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ ОБ SD.

