Инструменты пользователя

Инструменты сайта


msx:xdbg:xdbg

Это старая версия документа!


Расширенный экранный отладчик XDBG

FIXME

Автор: Леонид Бараз

Руководство пользователя

Версия 1 MSX/MSX2

Программа XDBG представляет собой экранный отладчик программ, написанных на ассемблере Z80.Этот отладчик может использоваться на ПЭВМ MSX 2 и MSX , оснащенных Yamaha V9938 (VDP) ( Yamaha YIS-503IIR), под управлением операционной системы dos (в том числе в варианте Ю.В.Галутина).

Команда вызова отладчика:

A>XDbg[/p[/s]][/M] [имя-программы]

После XDbg в команде запуска можно указать от одного до трех флажков, которые определяют, в каком слоте памяти должен располагаться собственно отладчик. Первые два флажка определяют номера первичного и вторичного слота соответственно XDbg/3/0 — слот 3-0, XDbg/1 — слот 1 нерасширенный). Флажок /M предписывает использование маппера (отладчик располагается в страницах FF, FE и FD). При переносе отладчика максимально возможный размер загружаемой и отлаживаемой программы может достигать 48Kбайт.

При отсутствии флажков отладчик размещается в основной оперативной памяти, оставляя для программы пользователя вместе с таблицей символических имен только 32КБайт. Однако перенести отладчик в параллельную память можно и в процессе работы посредством команды ESC U (см. ниже).

Примеры отображения на экране:

Режим листинга ассемблера

                        окно заголовка
        ┌──────────────────────────────────────────────────┐

┌02000┬───────────────────────────────────────────────────────┬────────────────┐
│List │ X-DEBUGGER Version 1.0      Help:<Esc>?  Visual:Trace │ EI PC=D827 I=00│
├─────┼──────────────────────────────────────────────────┬────┤8B/02/8B/8B R=58│
│     │       7FF8:60           LD    H,B                │    │--/--/--/--     │
│     │       7FF9:4B           LD    C,E                │    │T=838B:CE6B/89C3│
│00~00│       7FFA:03           INC   BC                 │    ├────────────────┤
│     │       7FFB:1A           LD    A,(DE)             │    │ A=00 . sZxHxpNC│
│     │       7FFC:FE 38        CP    38                 │    │ BC=0240: 00  . │
│     │       7FFE:FF           RST   38                 │    │ DE=0000: C3 "ц"│
│     │       7FFF:FF           RST   38                 │    │ HL=7FFD: 38 "8"│
│     │MEM80@:8000:00           NOP                      │0078│ IX=1377: 2A "*"│
│C0-C0│       8001:00           NOP                      │    │ IY=0A00: 53 "S"│
│     │       8002:00           NOP                      │    ├────────────────┤
│20+1A│       8003:20 FB        JR    NZ,MEM80@:8000     │    │A'=00 . szxhxpnc│
│     │       8005:DD 2A 08 80  LD    IX,(PRED:8008)     │    │BC'=0120: E1 "А"│
│00+00│       8009:C1           POP   BC                 │    │DE'=0A00: 53 "S"│
│     │       800A:CD CD D9     CALL  D9CD               │    │HL'=1100: 0E  . │
├─┬───┴──────────────────────────────────────────────────┴────┼────────────────┤
│ │       3FC0:E7 38 EB 2A E9 38 7D 93 6F 7C 9A 67 22 EB 38 2A│Г8К*И8}.o|.g"К8*│
│-│       3FD0:E7 38 EB 21 18 39 C3 0A 1F CD 36 11 22 E9 38 EB│Г8К!.9ц..м6."И8К│
│ │       3FE0:2A E7 38 7B 95 6F 7A 9C 67 22 EB 38 2A E9 38 EB│*Г8{.oz.g"К8*И8К│
│+│       3FF0:21 1E 39 C3 0A 1F 0E 07 25 3D 20 03 E9 3C 32 03│!.9ц....%= .И<2.│
│ │DRIVER:4000:41 42 6F 57 76 65 00 00 00 00 00 00 00 00 00 00│ABoWve..........│
│ │       4010:C3 F5 74 C3 86 78 C3 09 79 C3 23 79 C3 50 79 C3│цУtц.xц.yц#yцPyц│
│~│       4020:82 78 C3 35 5B 37 C3 AC 60 C3 14 62 00 C3 AE 5F│.xц5[7ц∞`ц.b.ц∈_│
│ │       4030:2A 4B F3 C9 DD E5 DD 21 B7 00 CD AB 40 DD E1 30│*KСищЕщ!≈.мδ@щА0│
└─┴───────────────────────────────────────────────────────────┴────────────────┘

Режим загрузки программы

                           окно запроса
                    (дополнительное окно файлов)
        ┌──────────────────────────────────────────────────┐

┌1F000┬───────────────────────────────────────────────────────┬────────────────┐
│Input│ File:B:prog    .COM  Area:07F0-BEFC  Reloc:0100->07F0 │ EI PC=0100 I=00│
├─────┼──────────────────────────────────────────────────┬────┤8B/8B/8B/8B R=7B│
│     │       012F:CB 16        RL    (HL)               │    │FB/FA/F9/F8     │
│     │       0131:30 0F        JR    NC,0142            │    │T=BEFB:CE6B/89C3│
│     │       0133:E5           PUSH  HL                 │    ├────────────────┤
│     │       0134:DD 66 00     LD    H,(IX+00)          │    │ A=00 . szxhxpnc│
│     │       0137:DD 6E FF     LD    L,(IX-01)          │    │ BC=0000: C3 "ц"│
│     │       013A:19           ADD   HL,DE              │    │ DE=0000: C3 "ц"│
│     │       013B:DD 74 00     LD    (IX+00),H          │    │ HL=0000: C3 "ц"│
│     │       013E:DD 75 FF     LD    (IX-01),L          │    │ IX=0000: C3 "ц"│
│     │       0141:E1           POP   HL                 │    │ IY=0000: C3 "ц"│
│     │       0142:DD 23        INC   IX                 │    ├────────────────┤
│     │       0144:0B           DEC   BC                 │    │A'=00 . szxhxpnc│
│     │       0145:78           LD    A,B                │    │BC'=0000: C3 "ц"│
│     │       0146:B1           OR    C                  │    │DE'=0000: C3 "ц"│
│     │       0147:20 DF        JR    NZ,0128            │    │HL'=0000: C3 "ц"│
├─┬───┴──────────────────────────────────────────────────┴────┼────────────────┤
│V│      1F020:17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17│................│
│V│      1F030:17 17 17 17 17 17 17 17 17 17 17 17 17 17 12 17│................│
│V│      1F040:17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 19│................│
│V│      1F050:16 49 6E 70 75 74 16 20 46 69 6C 65 3A 20 70 72│.Input. File:B:P│
│V│      1F060:6F 67 20 20 20 20 20 20 20 20 41 72 65 61 3A 20│ROG    .COM  Are│
│V│      1F070:30 37 46 30 2D 38 41 31 42 20 20 52 65 6C 6F 63│a:07F0-8A1B  Rel│
│V│      1F080:3A 20 30 31 30 30 2D 3E 30 37 46 30 20 20 16 20│oc:0100->07F0 . │
│V│      1F090:45 49 20 50 43 3D 30 31 30 30 20 52 3D 37 42 16│EI PC=0100     .│
└─┴───────────────────────────────────────────────────────────┴────────────────┘

Отладчик обеспечивает:

  • загрузку в память и запись на диск программ и таблиц символов (файлов <имя>.<тип> и <имя>.SYM);
  • просмотр и корректировку содержимого оперативной памяти в символьном и шестнадцатиричном формате, а также в виде команд ассемблера;
  • просмотр и корректировку содержимого видеопамяти в символьном и шестнадцатиричном формате;
  • просмотр и изменение содержимого регистров отлаживаемой программы;
  • использование имен, введенных вместе с программой, а также добавление новых имен и удаление имеющихся (имена используются и в командах ассемблера); имена можно настроить на начальный адрес программы;
  • выдачу на печать содержимого текущего окна отладчика;
  • установку и снятие точек приостанова (со счетчиками);
  • установку и снятие контроля изменения байтов памяти;
  • покомандное и непрерывное выполнение программы (в том числе и в режиме мультипликации, с обходом и без обхода команд CALL);
  • возврат управления отладчику: при достижении точки приостанова с нулевым счетчиком, при изменении одного из контролируемых байтов памяти, при нормальном завершении программы, при нажатии клавиши STOP;
  • пересылку и заполнение областей памяти, поиск символьного или шестнадцатиричного образца.
  • выполнение арифметических действий над шестнадцатиричными числами;
  • получение на экране краткой информации о средствах, имеющихся в отладчике.

При запуске отладчик переводит систему в 80-символьный режим и загружает в оперативную память программу, если ее имя указано в команде (имя указывается без уточнения; загружаются файлы <имя>.<тип> и <имя>.SYM).

В процессе работы на экране выделяются поля разметки и поля данных. Курсор всегда находится в одном из полей данных, и только в такие поля можно вносить изменения. При выходе курсора из текущего поля его новое содержимое проверяется и заносится в память машины; все остальные поля экрана при этом приводятся (по возможности) в соответствие с содержимым изменённого поля. Например, для изменения байта или слова данных в любом поле достаточно просто набрать его новое значение и выйти из поля. Аналогично, для того, чтобы передвинуть окно листинга или дампа на другие адреса памяти, достаточно в любой строке набрать нужное имя в поле имени или нужный адрес в поле адреса. Для создания нового имени достаточно набрать его в соответствующем поле, а для удаления существующего — заменить его на новое или заполнить поле имени пробелами.

     Все поля данных,  имеющиеся на экране,  сгруппированы  в
окна: три основных ("дампа", "листинга" и "регистров") и одно
дополнительное  ("заголовка", "файлов" или "памяти").  Курсор
перемещается в пределах одного окна с помощью стрелок, клавиш
<перевод строки>, <tab> и <ctrl>+F.  Листание  осуществляется
по клавишам <ctrl>+J (вверх) и <ctrl>+Q (вниз).  Редактирова-
ние информации  выполняется  символьными  клавишами,  а также
клавишами <ins>, <del> и <bs>. Переход в другое окно (и уста-
новка дополнительного окна) выполняются по одной из следующих
команд:

1. <esc> L    Работа в окне листинга ассемблера.
     Левая колонка содержит точки приостанова (для них указы-
     вается максимальный счетчик, признак активности (+ - ак-
     тивна, ~ - активна в параллельном  банке памяти, - - не-
     активна) и текущее значение счетчика).  В основной части
     каждой строки окна  располагаются  поля  имени,  адреса,
     байтов, образующих команду,  и  самого  текста  команды.
     Правая колонка окна содержит значения счетчиков профилей
     выполнения программы  (в строках команд с символическими
     именами).
     Имена  во всех полях  (в том числе  и  в текстах команд)
     должны заканчиваться двоеточием. Например, команды могут
     записываться в следующем виде:
         LD    A,(name:3000)
         LD    A,(name:)
         LD    A,(3000)
     Команда RST 30 (Inter-Slot Call)  дополняется в качестве
     операндов номером слота и адресом вызова.

2. <esc> D    Работа в окне дампа.
     Левая колонка содержит признаки контроля изменения байта
     памяти с указанием активности контроля (+/-/~). В основ-
     ной части каждой строки окна имеются поля имени, адреса,
     16 полей байтов в шестнадцатиричном виде и  16 полей тех
     же байтов в символьном виде.

3. <esc> V    Работа в окне дампа видеопамяти.
    Содержимое видеопамяти отображается так же, как и в режи-
    ме <esc> D,  однако  левая  колонка  заполняется  буквами
    V (для VRAM)  или  E (для ERAM).  При просмотре VRAM поле
    адреса дополняется слева еще одним разрядом,  чтобы охва-
    тить все 128Kбайт.

4. <esc> R    Работа в окне регистров.
     Окно  содержит  поля  значений  всех регистров,  а также
     байтов или слов,  на которые указывают шестнадцатибитные
     регистры.  Одновременно  с шестнадцатиричными значениями
     байтов выдается их символьное представление.
     Кроме того, имеются поля счетчика команд (PC), состояния
     обработки прерывания (EI/DI)  и  выбранного банка памяти
     (с указанием слота и страницы маппера)  для всех четырех
     16Kбайтных страниц. Наличие или отсутствие маппера
     распознается автоматически.

5. <esc> Y    Показ символических имен.
     Окно листинга ассемблера заполняется строками,  соответ-
     ствующими символическим именам.

6. <esc> B    Показ точек приостанова.
     Окно листинга ассемблера заполняется строками,  соответ-
     ствующими точкам приостанова.

7. <esc> H    Показ контролируемых байтов.
     Окно дампа заполняется строками,  соответствующими адре-
     сам байтов, изменение которых контролируется.

8. <esc> I    Чтение файлов.
     В дополнительном окне  располагаются поля имени файла  и
     интервала адресов для размещения программы.  После нажа-
     тия клавиши перевода  строки файл  с именем  <имя>.<тип>
     считывается  в  память  (конфигурация  слотов  и маппера
     определяется  соответствующими полями в окне регистров).
     Кроме того, к таблице имен присоединяются имена из файла
     <имя>.SYM,  если  он  есть. С помощью полей Reloc: можно
     указать  настройку  символических  имен на нестандартный
     начальный адрес программы.

9. <esc> O    Запись файлов.
     В дополнительном окне  располагаются поля имени файла  и
     интервала адресов. После нажатия клавиши перевода строки
     указанная область памяти записывается в файл <имя>.<тип>,
     а все символические имена - в файл <имя>.SYM (конфигура-
     ция слотов и маппера определяется соответствующими поля-
     ми в окне регистров).

10.<esc> P    Выдача на печать  содержимого текущего окна от-
     ладчика (печать прерывается при нажатии <ctrl>+<stop>).

11.<esc> M    Пересылка информации.
     В дополнительном окне  располагаются  поля запроса  двух
     интервалов адресов:  откуда и куда  требуется  переслать
     информацию. При изменении начального адреса  в  одном из
     интервалов  соответствующий конечный адрес автоматически
     изменяется так, чтобы длины интервалов совпали.  При из-
     менении конечного адреса  таким же образом  меняется ко-
     нечный адрес другого интервала.

12.<esc> F    Заполнение области памяти.
     В дополнительном окне располагаются  поля запроса интер-
     вала адресов  и образца для заполнения.  Образец для за-
     полнения может быть набран в символьном или шестнадцати-
     ричном виде  (вид определяется полем, содержащим букву C
     или X соответственно). Размер образца определяется поло-
     жением курсора  в момент нажатия клавиши  <перевод стро-
     ки>.

13.<esc> S    Поиск образца.
     В дополнительном окне располагаются  поля запроса интер-
     вала адресов  и  образца для поиска.  Образец для поиска
     может быть набран в символьном или шестнадцатиричном ви-
     де (вид определяется полем, содержащим букву C или X со-
     ответственно).  Размер образца  определяется  положением
     курсора в момент нажатия клавиши <перевод строки>. Поиск
     можно прервать нажатием <ctrl>+<stop>.

14.<esc> E    Начальная установка регистров.
     Все регистры  устанавливаются  в 0,  счетчик  команд  PC
     устанавливается на 100h, состояние прерываний - разреше-
     ны (EI),  всем  страницам памяти  сопоставлены  основные
     банки памяти (установленные при запуске отладчика).

15.<esc> Z    Начальная  установка  текущих  счетчиков  точек
     приостанова (они  устанавливаются  равными  максимальным
     счетчикам).

16.<esc> C    Шестнадцатиричный калькулятор.
     В дополнительном окне  располагаются  два поля операндов
     (четырехзначные  шестнадцатиричные  числа),  поле  знака
     операции (+, -, *, /, %) и поле показа результата.  Поле
     результата  заполняется  при смене  любого операнда  или
     знака операции.

17.<esc> T    Установка базового адреса PNT и PGT отладчика.
     Поле  базового адреса располагается в левом верхнем углу
     рамки.  При  вводе нового значения в этом поле PNT и PGT
     переносятся на указанный адрес и автоматически инициали-
     зируются.  Таблицы  PNT  и PGT занимают 1000h байт VRAM,
     начиная с указанного адреса.

18.<esc> U    Перенос отладчика в параллельную память.
     Программы и данные самого  отладчика  переносятся  в  ту
     память, которая задана полями слотов и  маппера  в  окне
     регистров. При этом  для  загрузки  и  отладки  программ
     пользователя становится доступным около 48Кбайт  памяти.
     Перенос в параллельную память не  может  быть  выполнен,
     если хотя бы одна из трех страниц  (0000-3FFF,4000-7FFF,
     8000-BFFF)  совпадает  с  первоначальной  по   слотовому
     адресу. Кроме того, если при  запуске  отладчика  или  в
     процессе  работы  перенос  выполнен,   его   нельзя   ни
     отменить, ни изменить; можно только выйти из отладчика и
     загрузить его снова.

19.<esc> Q    Завершение работы отладчика  и  выход  в  среду
     операционной системы  с восстановлением исходного режима
     экрана (40/80 символов).

20.<esc> ?    Показ страницы с подсказкой.

21.<ctrl>+G   Запуск программы.
     Программа начинает выполняться с адреса,  находящегося в
     счетчике команд PC. Устанавливается заданное пользовате-
     лем распределение банков памяти.
     Если режим мультипликации выключен (Visual:No), на время
     работы программы экран переключается на обычную страницу
     системы (0000h).  Если же  режим мультипликации  включен
     (Visual:Exec или Trace), системная страница не включает-
     ся,  зато  после каждой исполненной команды  обновляется
     содержимое экрана отладчика. В режиме Visual:Exec испол-
     няется отдельно каждая команда, а в режиме  Visual:Trace
     взамен  одной команды  Call  исполняется  вся вызываемая
     подпрограмма.
     Все точки приостанова  устанавливаются в основных банках
     памяти  (которые были  включены  при запуске отладчика).
     При достижении  одной  из активных точек приостанова  (с
     признаком "+" или "~") либо выполняется уменьшение счет-
     чика (если он ненулевой), либо приостанавливается выпол-
     нение программы и управление передается отладчику.  Ана-
     логично выполнение программы приостанавливается  при из-
     менении содержимого  одного  из  активных контролируемых
     байтов.  Следует иметь в виду,  что выполнение программы
     значительно замедляется при установке контроля изменения
     байтов.
     Выполнение программы можно приостановить нажатием клави-
     ши <stop> (если прерывания в этот момент разрешены). При
     выполнении  команды RET с начальным состоянием стека или
     команды RST 0  управление  также  передается  отладчику;
     при этом считается, что программа успешно завершена.
     Обработка  точек  приостанова   организуется  с  помощью
     RST 0, поэтому все остальные команды RST могут использо-
     ваться в отлаживаемой программе  без ограничений.  После
     возврата управления отладчику в окне листинга ассемблера
     первая строка устанавливается на команду,  с которой на-
     чиналось выполнение, а вторая  -  на ту, которая вызвала
     приостанов (в ней устанавливается курсор).
     Передача управления отладчику  при достижении точки при-
     останова  или  при завершении программы  возможна только
     при условии,  что странице 0000h-3FFFh в этот момент со-
     поставлен  основной банк памяти  (тот же,  что и при за-
     пуске отладчика).
     При выполнении программы  ведется  подсчет  профилей  по
     всем символическим именам  (при каждом прерывании и  при
     трассировке отдельной команды  увеличивается  на единицу
     счетчик профиля ближайшего символического имени  с адре-
     сом, меньшим текущего PC).  Значения  счетчиков  профиля
     отображаются в правой колонке окна листинга ассемблера.

22.<ctrl>+X   (<SELECT>) Выполнение одной команды.
     Выполняются те же действия,  что и по указанию <ctrl>+G,
     но  исполняется  только  одна команда  (расположенная по
     адресу из счетчика команд PC). Можно исполнять также ко-
     манды, находящиеся в ПЗУ (однако точки приостанова в ПЗУ
     устанавливать нельзя).

23.<ctrl>+T   Выполнение команды с обходом подпрограммы.
     Выполняется аналогично  <ctrl>+X,  но  для команды  CALL
     управление возвращается отладчику  только после выполне-
     ния вызываемой подпрограммы. При выполнении подпрограммы
     выполняется  обычная обработка  точек приостанова (как в
     <ctrl>+G).

24.<ctrl>+P   Установка  счетчика команд PC  на  ту  команду,
     против которой находится курсор.

25.<ctrl>+V   Выбор режима мультипликации.
     Устанавливается один  из  режимов  Visual:No,  Exec  или
     Trace.


     Распределение видеопамяти:

0000h - PNT системы и программы.
1000h - PGT системы и программы.
2000h - PNT отладчика.
2800h - PGT отладчика.
3000h - PNT подсказки.

dbgrdv.zip, оригинал

Ссылки

msx/xdbg/xdbg.1593415010.txt.gz · Последние изменения: 2020-06-29 10:16 — GreyWolf