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

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


msx:dbg:dbg

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
msx:dbg:dbg [2021-11-12 13:46]
GreyWolf [Руководство пользователя]
msx:dbg:dbg [2024-04-13 10:24] (текущий)
GreyWolf [DBG — экранный отладчик для MSX/MSX2]
Строка 1: Строка 1:
-====== DBG экранный отладчик для MSX/MSX2 ====== +====== DBG — экранный отладчик для MSX/MSX2 ======
-FIXME+
  
 Автор: Леонид Бараз Автор: Леонид Бараз
Строка 8: Строка 7:
   * XDBG — Расширенный экранный отладчик,​ версия 1   * XDBG — Расширенный экранный отладчик,​ версия 1
 отличия DBG/XDBG указаны в тексте. отличия DBG/XDBG указаны в тексте.
 +
 +{{dbg.zip|}} \\ 2024-04-12 английская версия ''​DBGE52.COM''​ получена от **Максима Власова** ​
  
 ====== Руководство пользователя ====== ====== Руководство пользователя ======
  
-В тексте данного документа применяются следующие обозначения: FIXME в уголковые скобки < и > берутся  ​названия ​ специальных  ​клавишпробелом ​ разделяются клавиши,​ которые нужно нажимать последовательно,​ а плюсом ​одновременно.+В тексте данного документа применяются следующие обозначения ​для клавишпробелом разделяются клавиши,​ которые нужно нажимать последовательно,​ а плюсом ​— одновременно.
  
-Программа ​DBG  ​представляет собой экранный отладчик программ,​ написанных на ассемблере Z80.  Этот отладчик может использоваться на ПЭВМ MSX2 и MSX, оснащенных VDP 9938 ("​YAMAHA"​ YIS503II), под управлением ​ операционной системы ​ ​MSX-DOS  ​(в том числе в варианте Ю.В.Галутина).+Программа представляет собой экранный отладчик программ,​ написанных на ассемблере ​[[zilog_z80:​zilog_z80|Z80]]. Этот отладчик может использоваться на ПЭВМ ​[[msx:​msx_2|MSX2]] и [[msx:​msx_1|MSX]], оснащенных ​[[msx:​yamaha_v9938:​yamaha_v9938|VDP 9938]] ([[msx:​yamaha_yis-503iir:​yamaha_yis-503iir|]]), под управлением операционной системы ​[[msx:​dos:​|]] ​(в том числе в варианте Ю.В.Галутина).
  
 Команда вызова отладчика **DBG**: Команда вызова отладчика **DBG**:
Строка 24: Строка 25:
 A>​XDbg[/​p[/​s]][/​M] [имя-программы] A>​XDbg[/​p[/​s]][/​M] [имя-программы]
 </​code>​ </​code>​
-После ''​XDbg''​ в команде запуска можно указать от одного до трех флажков, ​ которые ​ определяют, ​ в  каком ​ слоте ​ памяти должен располагаться собственно отладчик. Первые два ​ флажка определяют номера первичного и вторичного слота соответственно:​+После ''​XDbg''​ в команде запуска можно указать от одного до трёх флажков,​ которые определяют,​ в каком слоте памяти должен располагаться собственно отладчик. Первые два флажка определяют номера первичного и вторичного слота соответственно:​
 |''​XDbg/​3/​0''​|слот 3-0| |''​XDbg/​3/​0''​|слот 3-0|
 |''​XDbg/​1''​|слот 1 (нерасширенный)| |''​XDbg/​1''​|слот 1 (нерасширенный)|
  
-Флажок /M предписывает использование маппера (отладчик располагается ​ в  страницах ​ FF,  FE  и  FD).  При переносе отладчика максимально возможный размер ​ загружаемой и отлаживаемой программы может достигать 48 Kбайт+Флажок /M предписывает использование маппера (отладчик располагается в страницах FF, FE и FD). При переносе отладчика максимально возможный размер загружаемой и отлаживаемой программы может достигать 48 Kбайт.
- +
-При отсутствии флажков отладчик размещается в  основной оперативной ​ памяти, ​ оставляя ​ для ​ программы ​ пользователя вместе с таблицей символических имен только 32 КБайт. ​ Однако +
-перенести отладчик в параллельную память можно и в  процессе работы посредством команды <​key>​esc</​key>​ <​key>​U</​key>​ ([[#​esc_u|см. ниже]]).+
  
 +При отсутствии флажков отладчик размещается в основной оперативной памяти,​ оставляя для программы пользователя вместе с таблицей символических имён только 32 Кбайт. Однако
 +перенести отладчик в параллельную память можно и в процессе работы посредством команды <​key>​esc</​key>​ <​key>​U</​key>​ ([[#​esc_u|см. ниже]]).
  
 Примеры отображения на экране:​ Примеры отображения на экране:​
  
- +Режим листинга ассемблера
-Примеры отображения на экране:+
 <​code>​ <​code>​
-Режим листинга ассемблера 
- 
                         окно заголовка                         окно заголовка
         ┌──────────────────────────────────────────────────┐         ┌──────────────────────────────────────────────────┐
Строка 181: Строка 178:
  
 Отладчик обеспечивает:​ Отладчик обеспечивает:​
-  * загрузку в память и запись на диск программ и таблиц символов (файлов <​имя>​.<​тип>​ и <​имя>​.SYM);​ +  * загрузку в память и запись на диск программ и таблиц символов (файлов ​''​<​имя>​.<​тип>​'' ​и ''​<​имя>​.SYM''​); 
-  * просмотр и корректировку ​ содержимого ​ оперативной памяти в символьном и шестнадцатиричном формате,​ а также в виде команд ассемблера;​+  * просмотр и корректировку содержимого оперативной памяти в символьном и шестнадцатиричном формате,​ а также в виде команд ассемблера;​
   * просмотр и корректировку содержимого видеопамяти в символьном и шестнадцатиричном формате;​   * просмотр и корректировку содержимого видеопамяти в символьном и шестнадцатиричном формате;​
-  * просмотр ​ и  изменение ​ содержимого регистров ​ отлаживаемой программы;​ +  * просмотр и изменение содержимого регистров отлаживаемой программы;​ 
-  * использование имен, введенных вместе с программой,​ а также добавление новых имен и удаление имеющихся (имена используются и в командах ассемблера);​ имена можно настроить на начальный адрес программы;​+  * использование имён, введённых вместе с программой,​ а также добавление новых имён и удаление имеющихся (имена используются и в командах ассемблера);​ имена можно настроить на начальный адрес программы;​
   * выдачу на печать содержимого текущего окна отладчика;​   * выдачу на печать содержимого текущего окна отладчика;​
-  * установку и снятие точек приостанова (со счетчиками);​+  * установку и снятие точек приостанова (со счётчиками);​
   * установку и снятие контроля изменения байтов памяти;​   * установку и снятие контроля изменения байтов памяти;​
-  * покомандное и непрерывное выполнение программы (в том числе и в режиме мультипликации, ​ с обходом и без обхода ​ команд CALL); +  * покомандное и непрерывное выполнение программы (в том числе и в режиме мультипликации,​ с обходом и без обхода команд ​''​CALL''​); 
-  * возврат управления отладчику:​ при достижении точки приостанова с нулевым счетчиком,​ при изменении одного из контролируемых байтов памяти, ​ при нормальном завершении программы,​ при нажатии клавиши <​key>​stop</​key>;​ +  * возврат управления отладчику:​ при достижении точки приостанова с нулевым счётчиком,​ при изменении одного из контролируемых байтов памяти,​ при нормальном завершении программы,​ при нажатии клавиши <​key>​stop</​key>;​ 
-  * пересылку и заполнение областей памяти, ​ поиск ​ символьного ​ или шестнадцатиричного образца. +  * пересылку и заполнение областей памяти,​ поиск символьного или шестнадцатиричного образца. 
-  * выполнение ​ арифметических действий ​ над шестнадцатиричными числами;​ +  * выполнение арифметических действий над шестнадцатиричными числами;​ 
-  * получение на экране ​ краткой информации ​ о средствах, ​ имеющихся в отладчике.+  * получение на экране краткой информации о средствах,​ имеющихся в отладчике.
  
-При запуске ​ отладчик переводит систему ​ в 80-символьный режим и загружает в оперативную память программу,​ если ее имя указано в команде (имя указывается без уточнения;​ загружаются файлы ''<​имя>​.<​тип>''​ и ''<​имя>​.SYM''​).+При запуске отладчик переводит систему в 80символьный режим и загружает в оперативную память программу,​ если ее имя указано в команде (имя указывается без уточнения;​ загружаются файлы ''<​имя>​.<​тип>''​ и ''<​имя>​.SYM''​).
  
-В процессе работы ​ на экране выделяются ​ поля разметки и поля данных. Курсор всегда находится в одном из полей данных,​ и  только ​ в такие поля ​ можно вносить изменения. ​ При выходе курсора ​ из текущего поля ​ его новое содержимое проверяется и заносится в память машины;​ все остальные поля экрана при этом приводятся ​ (по возможности) ​ в соответствие с содержимым измененного поля. ​ Например,​ для изменения байта или слова данных в любом поле достаточно просто набрать его новое значение и выйти из поля. Аналогично,​ для того, чтобы передвинуть окно листинга или дампа на другие адреса памяти,​ достаточно в любой строке набрать нужное имя в поле имени или нужный адрес в поле адреса. ​ Для создания нового имени ​ достаточно набрать его ​ в соответствующем поле, ​ а  для удаления существующего ​заменить его на новое или заполнить поле имени пробелами.+В процессе работы на экране выделяются поля разметки и поля данных. Курсор всегда находится в одном из полей данных,​ и только в такие поля можно вносить изменения. При выходе курсора из текущего поля его новое содержимое проверяется и заносится в память машины;​ все остальные поля экрана при этом приводятся (по возможности) в соответствие с содержимым изменённого поля. Например,​ для изменения байта или слова данных в любом поле достаточно просто набрать его новое значение и выйти из поля. Аналогично,​ для того, чтобы передвинуть окно листинга или дампа на другие адреса памяти,​ достаточно в любой строке набрать нужное имя в поле имени или нужный адрес в поле адреса. Для создания нового имени достаточно набрать его в соответствующем поле, а для удаления существующего ​— заменить его на новое или заполнить поле имени пробелами.
  
-Все поля данных, ​ имеющиеся на экране, ​ сгруппированы в окна: три основных ("​дампа",​ "​листинга"​ и "​регистров"​) и одно дополнительное ​ ("​заголовка", ​ "​файлов" ​ или ​ "​памяти"​).+Все поля данных,​ имеющиеся на экране,​ сгруппированы в окна: три основных ("​дампа",​ "​листинга"​ и "​регистров"​) и одно дополнительное ("​заголовка",​ "​файлов"​ или "​памяти"​).
  
-Курсор перемещается в пределах одного окна с помощью стрелок,​ клавиш <​key>'​Ввод '​⏎</​key>,​ <​key>​tab</​key>​ и <​key>​ctrl+F</​key>​. Листание осуществляется ​ по клавишам <​key>​ctrl+J</​key>​ (вверх) и <​key>​ctrl+Q</​key> ​ (вниз). ​ Редактирование информации выполняется символьными клавишами, ​ а также клавишами <​key>​ins</​key>,​ <​key>​del</​key>​ и <​key>​bs</​key>​. Переход в другое окно (и установка дополнительного окна) выполняются по одной из  следующих команд:​+Курсор перемещается в пределах одного окна с помощью стрелок,​ клавиш <​key>'​Ввод '​⏎</​key>,​ <​key>​tab</​key>​ и <​key>​ctrl+F</​key>​. Листание осуществляется по клавишам <​key>​ctrl+J</​key>​ (вверх) и <​key>​ctrl+Q</​key>​ (вниз). Редактирование информации выполняется символьными клавишами,​ а также клавишами <​key>​ins</​key>,​ <​key>​del</​key>​ и <​key>​bs</​key>​. Переход в другое окно (и установка дополнительного окна) выполняются по одной из следующих команд:​
 |<100% 10% 90%>| |<100% 10% 90%>|
-|<​key>​esc</​key>​ <​key>​L</​key>​|Работа в окне листинга. \\ \\ Левая колонка содержит точки приостанова (для них указывается максимальный счетчик, признак активности (+ - активна,​ ~ - активна в параллельном ​ банке памяти,​ - - неактивна) и текущее значение счетчика). ​ В основной части каждой строки окна ​ располагаются ​ поля ​ имени, ​ адреса,​ байтов,​ образующих команду, ​ и  самого ​ текста ​ команды. \\ Правая колонка окна содержит значения счетчиков профилей выполнения программы ​ (в строках команд с символическими именами). \\ Имена ​ во всех полях ​ (в том числе ​ и  в текстах команд) должны заканчиваться двоеточием. Например,​ команды могут записываться в следующем виде: <​code ​asm>+|<​key>​esc</​key>​ <​key>​L</​key>​|Работа в окне листинга. \\ \\ Левая колонка содержит точки приостанова (для них указывается максимальный счётчик, признак активности (''​+ -'' ​активна, ​''​~ -'' ​активна в параллельном банке памяти, ​''​- -'' ​неактивна) и текущее значение счётчика). В основной части каждой строки окна располагаются поля имени, адреса,​ байтов,​ образующих команду,​ и самого текста команды. \\ Правая колонка окна содержит значения счётчиков профилей выполнения программы (в строках команд с символическими именами). \\ Имена во всех полях (в том числе и в текстах команд) должны заканчиваться двоеточием. Например,​ команды могут записываться в следующем виде: <​code>​
 LD    A,​(name:​3000) LD    A,​(name:​3000)
 LD    A,(name:) LD    A,(name:)
 LD    A,(3000) LD    A,(3000)
-</​code>​ Команда RST 30 (Inter-Slot Call)  дополняется в качестве операндов номером слота и адресом вызова.| +</​code>​ Команда ​''​RST 30'' ​(Inter-Slot Call) дополняется в качестве операндов номером слота и адресом вызова.| 
-|<​key>​esc</​key>​ <​key>​D</​key>​|Работа в окне дампа. \\ \\ Левая колонка содержит признаки контроля изменения байта памяти с указанием активности контроля (+/-/~). В основной части каждой строки окна имеются поля имени, адреса,​ 6 полей байтов в шестнадцатиричном виде и  16 полей тех же байтов в символьном виде.| +|<​key>​esc</​key>​ <​key>​D</​key>​|Работа в окне дампа. \\ \\ Левая колонка содержит признаки контроля изменения байта памяти с указанием активности контроля (+/-/~). В основной части каждой строки окна имеются поля имени, адреса,​ 6 полей байтов в шестнадцатиричном виде и 16 полей тех же байтов в символьном виде.| 
-|<​key>​esc</​key>​ <​key>​V</​key>​|Работа в окне дампа видеопамяти. \\ \\ Содержимое видеопамяти отображается так же, как и в режиме <​key>​esc</​key>​ <​key>​D</​key>, ​ однако ​ левая ​ колонка ​ заполняется ​ буквами V (для VRAM)  или ​ E (для ERAM). ​ При просмотре VRAM поле адреса дополняется слева еще одним разрядом, ​ чтобы охватить все 128Kбайт.| +|<​key>​esc</​key>​ <​key>​V</​key>​|Работа в окне дампа видеопамяти. \\ \\ Содержимое видеопамяти отображается так же, как и в режиме <​key>​esc</​key>​ <​key>​D</​key>,​ однако левая колонка заполняется буквами V (для VRAM) или E (для ERAM). При просмотре VRAM поле адреса дополняется слева еще одним разрядом,​ чтобы охватить все 128Kбайт.| 
-|<​key>​esc</​key>​ <​key>​R</​key>​|Работа в окне регистров. \\ \\ Окно ​ содержит ​ поля ​ значений ​ всех регистров, ​ а также байтов или слов, ​ на которые указывают шестнадцатибитные регистры. ​ Одновременно ​ с шестнадцатиричными значениями байтов выдается их символьное представление. \\ Кроме того, имеются поля счетчика команд (PC), состояния обработки прерывания (EI/​DI) ​ и  выбранного банка памяти (с указанием слота и страницы маппера) ​ для всех четырех 16 Kбайтных страниц. \\ **DBG**: Установка конфигурации маппера может быть отключена. \\ **XDBG**: Наличие или отсутствие маппера распознается автоматически.| +|<​key>​esc</​key>​ <​key>​R</​key>​|Работа в окне регистров. \\ \\ Окно содержит поля значений всех регистров,​ а также байтов или слов, на которые указывают шестнадцатибитные регистры. Одновременно с шестнадцатиричными значениями байтов выдаётся их символьное представление. \\ Кроме того, имеются поля счётчика команд (''​PC''​), состояния обработки прерывания (EI/DI) и выбранного банка памяти (с указанием слота и страницы маппера) для всех четырех 16 Kбайтных страниц. \\ **DBG**: Установка конфигурации маппера может быть отключена. \\ **XDBG**: Наличие или отсутствие маппера распознаётся автоматически.| 
-|<​key>​esc</​key>​ <​key>​Y</​key>​|Показ символических имен. \\ \\ Окно листинга заполняется строками,​ соответствующими символическим именам.|+|<​key>​esc</​key>​ <​key>​Y</​key>​|Показ символических имён. \\ \\ Окно листинга заполняется строками,​ соответствующими символическим именам.|
 |<​key>​esc</​key>​ <​key>​B</​key>​|Показ точек приостанова. \\ \\ Окно листинга заполняется строками,​ соответствующими точкам приостанова.| |<​key>​esc</​key>​ <​key>​B</​key>​|Показ точек приостанова. \\ \\ Окно листинга заполняется строками,​ соответствующими точкам приостанова.|
-|<​key>​esc</​key>​ <​key>​H</​key>​|Показ контролируемых байтов. \\ \\ Окно дампа заполняется строками, ​ соответствующими адресам байтов,​ изменение которых контролируется.| +|<​key>​esc</​key>​ <​key>​H</​key>​|Показ контролируемых байтов. \\ \\ Окно дампа заполняется строками,​ соответствующими адресам байтов,​ изменение которых контролируется.| 
-|<​key>​esc</​key>​ <​key>​I</​key>​|Чтение файлов. \\ \\ В дополнительном окне ​ располагаются поля имени файла ​ и интервала адресов для размещения программы. ​ После нажатия клавиши перевода ​ строки файл ​ с именем ​ ''<​имя>​.<​тип>''​ считывается ​ в  память ​ (конфигурация ​ слотов ​ и маппера определяется ​ соответствующими полями в окне регистров). \\ Кроме того, к таблице имен присоединяются имена из файла ''<​имя>​.SYM'', ​ если ​ он  есть. С помощью полей ''​Reloc:''​ можно указать ​ настройку ​ символических ​ имен на нестандартный начальный адрес программы.| +|<​key>​esc</​key>​ <​key>​I</​key>​|Чтение файлов. \\ \\ В дополнительном окне располагаются поля имени файла и интервала адресов для размещения программы. После нажатия клавиши перевода строки файл с именем ''<​имя>​.<​тип>''​ считывается в память (конфигурация слотов и маппера определяется соответствующими полями в окне регистров). \\ Кроме того, к таблице имён присоединяются имена из файла ''<​имя>​.SYM'',​ если он есть. С помощью полей ''​Reloc:''​ можно указать настройку символических имён на нестандартный начальный адрес программы.| 
-|<​key>​esc</​key>​ <​key>​O</​key>​|Запись файлов. \\ \\ В дополнительном окне ​ располагаются поля имени файла ​ и интервала адресов. После нажатия клавиши перевода строки указанная область памяти записывается в файл ''<​имя>​.<​тип>'',​ а все символические имена ​в файл ''<​имя>​.SYM''​ (конфигурация слотов и маппера определяется соответствующими полями в окне регистров).| +|<​key>​esc</​key>​ <​key>​O</​key>​|Запись файлов. \\ \\ В дополнительном окне располагаются поля имени файла и интервала адресов. После нажатия клавиши перевода строки указанная область памяти записывается в файл ''<​имя>​.<​тип>'',​ а все символические имена ​— в файл ''<​имя>​.SYM''​ (конфигурация слотов и маппера определяется соответствующими полями в окне регистров).| 
-|<​key>​esc</​key>​ <​key>​P</​key>​|Выдача на печать ​ содержимого текущего окна отладчика (печать прерывается при нажатии <​key>​ctrl+stop</​key>​).| +|<​key>​esc</​key>​ <​key>​P</​key>​|Выдача на печать содержимого текущего окна отладчика (печать прерывается при нажатии <​key>​ctrl+stop</​key>​).| 
-|<​key>​esc</​key>​ <​key>​M</​key>​|Пересылка информации. \\ \\ В дополнительном окне располагаются ​ поля запроса ​ двух интервалов адресов: ​ откуда и куда ​ требуется ​ переслать информацию. При изменении начального адреса ​ в  одном из интервалов ​ соответствующий конечный адрес автоматически изменяется так, чтобы длины интервалов совпали. ​ При изменении конечного адреса ​ таким же образом ​ меняется конечный адрес другого интервала.| +|<​key>​esc</​key>​ <​key>​M</​key>​|Пересылка информации. \\ \\ В дополнительном окне располагаются поля запроса двух интервалов адресов:​ откуда и куда требуется переслать информацию. При изменении начального адреса в одном из интервалов соответствующий конечный адрес автоматически изменяется так, чтобы длины интервалов совпали. При изменении конечного адреса таким же образом меняется конечный адрес другого интервала.| 
-|<​key>​esc</​key>​ <​key>​F</​key>​|Заполнение области памяти. \\ \\ В дополнительном окне располагаются ​ поля запроса интервала адресов ​ и образца для заполнения. ​ Образец для за     ​полнения может быть набран в символьном или шестнадцатиричном виде ​ (вид определяется полем, содержащим букву C или X соответственно). Размер образца определяется положением курсора ​ в момент нажатия клавиши <​key>'​Ввод '​⏎</​key>​.| +|<​key>​esc</​key>​ <​key>​F</​key>​|Заполнение области памяти. \\ \\ В дополнительном окне располагаются поля запроса интервала адресов и образца для заполнения. Образец для заполнения может быть набран в символьном или шестнадцатиричном виде (вид определяется полем, содержащим букву C или X соответственно). Размер образца определяется положением курсора в момент нажатия клавиши <​key>'​Ввод '​⏎</​key>​.| 
-|<​key>​esc</​key>​ <​key>'​S'</​key>​|Поиск образца. \\ \\ В дополнительном окне располагаются ​ поля запроса интервала адресов ​ и  образца для поиска. ​ Образец для поиска может быть набран в символьном или шестнадцатиричном виде (вид определяется полем, содержащим букву C или X соответственно). ​ Размер образца ​ определяется ​ положением курсора в момент нажатия клавиши <​перевод строки>​. Поиск можно прервать нажатием <​key>​ctrl+stop</​key>​.| +|<​key>​esc</​key>​ <​key>'​S'</​key>​|Поиск образца. \\ \\ В дополнительном окне располагаются поля запроса интервала адресов и образца для поиска. Образец для поиска может быть набран в символьном или шестнадцатиричном виде (вид определяется полем, содержащим букву C или X соответственно). Размер образца определяется положением курсора в момент нажатия клавиши <​перевод строки>​. Поиск можно прервать нажатием <​key>​ctrl+stop</​key>​.| 
-|<​key>​esc</​key>​ <​key>​E</​key>​|Начальная установка регистров. \\ \\ Все регистры ​ устанавливаются ​ в 0,  счетчик ​ команд ​ PC устанавливается на 100h, состояние прерываний ​разрешены (EI),  всем ​ страницам памяти ​ сопоставлены ​ основные банки памяти (установленные при запуске отладчика).| +|<​key>​esc</​key>​ <​key>​E</​key>​|Начальная установка регистров. \\ \\ Все регистры устанавливаются в 0, счётчик команд ​''​PC'' ​устанавливается на 100h, состояние прерываний ​— разрешены (EI), всем страницам памяти сопоставлены основные банки памяти (установленные при запуске отладчика).| 
-|<​key>​esc</​key>​ <​key>​Z</​key>​|Начальная ​ установка ​ текущих ​ счетчиков ​ точек приостанова (они ​ устанавливаются ​ равными ​ максимальным счетчикам).| +|<​key>​esc</​key>​ <​key>​Z</​key>​|Начальная установка текущих счётчиков точек приостанова (они устанавливаются равными максимальным счётчикам).| 
-|<​key>​esc</​key>​ <​key>'​C'</​key>​|Шестнадцатиричный калькулятор. \\ \\ В дополнительном окне ​ располагаются ​ два поля операндов (четырехзначные ​ шестнадцатиричные ​ числа), ​ поле ​ знака операции (+, -, *, /, %) и поле показа результата. ​ Поле результата ​ заполняется ​ при смене ​ любого операнда ​ или знака операции.| +|<​key>​esc</​key>​ <​key>'​C'</​key>​|Шестнадцатиричный калькулятор. \\ \\ В дополнительном окне располагаются два поля операндов (четырёхзначные шестнадцатиричные числа),​ поле знака операции (+, -, *, /, %) и поле показа результата. Поле результата заполняется при смене любого операнда или знака операции.| 
-|<​key>​esc</​key>​ <​key>​T</​key>​|Установка базового адреса PNT и PGT отладчика. \\ \\ Поле ​ базового адреса располагается в левом верхнем углу рамки. ​ При ​ вводе нового значения в этом поле PNT и PGT переносятся на указанный адрес и автоматически инициализируются. ​ \\ Таблицы ​ PNT  и PGT занимают 1000h байт VRAM, начиная с указанного адреса.| +|<​key>​esc</​key>​ <​key>​T</​key>​|Установка базового адреса PNT и PGT отладчика. \\ \\ Поле базового адреса располагается в левом верхнем углу рамки. При вводе нового значения в этом поле PNT и PGT переносятся на указанный адрес и автоматически инициализируются. \\ Таблицы PNT и PGT занимают 1000h байт VRAM, начиная с указанного адреса.| 
-|<​key>​esc</​key>​ <​key>​Q</​key>​|Завершение работы отладчика ​ и  выход ​ в  среду операционной системы ​ с восстановлением исходного режима экрана (40/80 символов).| +|<​key>​esc</​key>​ <​key>​Q</​key>​|Завершение работы отладчика и выход в среду операционной системы с восстановлением исходного режима экрана (40/80 символов).| 
-|{{anchor:​esc_u}} <​key>​esc</​key>​ <​key>​U</​key>​|**Только в XDBG** \\ Перенос отладчика в параллельную память. \\ Программы и данные самого ​ отладчика ​ переносятся ​ в  ту память,​ которая задана полями слотов и  маппера в окне регистров. При этом ​ для ​ загрузки ​ и  отладки ​ программ пользователя становится доступным около 48Кбайт ​ памяти. \\ Перенос в параллельную память не  может ​ быть ​ выполнен,​ если хотя бы одна из трех страниц ​ (0000-3FFF,4000-7FFF, 8000-BFFF)  совпадает ​ с  первоначальной ​ по   ​слотовому адресу. Кроме того, если при ​ запуске ​ отладчика ​ или ​ в процессе ​ работы ​ перенос ​ выполнен, ​  ​его ​  ​нельзя ​  ​ни отменить,​ ни изменить;​ можно только выйти из отладчика и загрузить его снова.|+|{{anchor:​esc_u}} <​key>​esc</​key>​ <​key>​U</​key>​|**Только в XDBG** \\ Перенос отладчика в параллельную память. \\ Программы и данные самого отладчика переносятся в ту память,​ которая задана полями слотов и маппера в окне регистров. При этом для загрузки и отладки программ пользователя становится доступным около 48 Кбайт памяти. \\ Перенос в параллельную память не может быть выполнен,​ если хотя бы одна из трех страниц (0000...3FFF,4000...7FFF, 8000...BFFF) совпадает с первоначальной по слотовому адресу. Кроме того, если при запуске отладчика или в процессе работы перенос выполнен,​ его нельзя ни отменить,​ ни изменить;​ можно только выйти из отладчика и загрузить его снова.|
 |<​key>​esc</​key>​ <​key>?</​key>​|Показ страницы с подсказкой.| |<​key>​esc</​key>​ <​key>?</​key>​|Показ страницы с подсказкой.|
-|<​key>​ctrl+G</​key>​|Запуск программы. \\ Программа начинает выполняться с адреса, ​ находящегося в счетчике команд PC. Устанавливается заданное пользователем распределение банков памяти. \\ Если режим мультипликации выключен (''​Visual:​No''​),​ на время работы программы экран переключается на обычную страницу системы (0000h). ​ Если же  режим мультипликации ​ включен (''​Visual:​Exec''​ или ''​Trace''​),​ системная страница не включается, ​ зато ​ после каждой исполненной команды ​ обновляется содержимое экрана отладчика. В режиме ''​Visual:​Exec''​ исполняется отдельно каждая команда,​ а в режиме ​ ''​Visual:​Trace''​ взамен ​ одной команды ​ Call  исполняется ​ вся вызываемая подпрограмма. \\ Все точки приостанова ​ устанавливаются в основных банках памяти ​ (которые были ​ включены ​ при запуске отладчика). \\ При достижении ​ одной ​ из активных точек приостанова ​ (с признаком "​+"​ или "​~"​) либо выполняется уменьшение счетчика (если он ненулевой),​ либо приостанавливается выполнение программы и управление передается отладчику. ​ Аналогично выполнение программы приостанавливается ​ при изменении содержимого ​ одного ​ из  активных контролируемых байтов. ​ Следует иметь в виду, ​ что выполнение программы значительно замедляется при установке контроля изменения байтов. \\ Выполнение программы можно приостановить нажатием клавиши <​key>​stop</​key>​ (если прерывания в этот момент разрешены). При выполнении ​ команды ''​RET''​ с начальным состоянием стека или команды ''​RST 0'' ​ управление ​ также ​ передается ​ отладчику;​ при этом считается,​ что программа успешно завершена. \\ Обработка ​ точек ​ приостанова ​  ​организуется ​ с  помощью ''​RST 0'',​ поэтому все остальные команды ''​RST''​ могут использоваться в отлаживаемой программе ​ без ограничений. ​ После возврата ​ управления ​ отладчику ​ в  окне ​  ​листинга первая строка устанавливается на команду, ​ с которой начиналось выполнение,​ а вторая ​ ​-  ​на ту, которая вызвала приостанов (в ней устанавливается курсор). \\ Передача управления отладчику ​ при достижении точки приостанова ​ или ​ при завершении программы ​ возможна только при условии, ​ что странице 0000h-3FFFh в этот момент сопоставлен ​ основной банк памяти ​ (тот же,  что и при запуске отладчика). \\ При выполнении программы ​ ведется ​ подсчет  профилей ​ по всем символическим именам ​ (при каждом прерывании и  при трассировке отдельной команды ​ увеличивается ​ на единицу счетчик профиля ближайшего символического имени ​ с адресом,​ меньшим текущего ''​PC''​). ​ Значения ​ счетчиков ​ профиля отображаются в правой колонке окна листинга.| +|<​key>​ctrl+G</​key>​|Запуск программы. \\ Программа начинает выполняться с адреса,​ находящегося в счётчике команд ​''​PC''​. Устанавливается заданное пользователем распределение банков памяти. \\ Если режим мультипликации выключен (''​Visual:​No''​),​ на время работы программы экран переключается на обычную страницу системы (0000h). Если же режим мультипликации включён (''​Visual:​Exec''​ или ''​Trace''​),​ системная страница не включается,​ зато после каждой исполненной команды обновляется содержимое экрана отладчика. В режиме ''​Visual:​Exec''​ исполняется отдельно каждая команда,​ а в режиме ''​Visual:​Trace''​ взамен одной команды ​''​Call'' ​исполняется вся вызываемая подпрограмма. \\ Все точки приостанова устанавливаются в основных банках памяти (которые были включены при запуске отладчика). \\ При достижении одной из активных точек приостанова (с признаком "​+"​ или "​~"​) либо выполняется уменьшение счётчика (если он ненулевой),​ либо приостанавливается выполнение программы и управление передаётся отладчику. Аналогично выполнение программы приостанавливается при изменении содержимого одного из активных контролируемых байтов. Следует иметь в виду, что выполнение программы значительно замедляется при установке контроля изменения байтов. \\ Выполнение программы можно приостановить нажатием клавиши <​key>​stop</​key>​ (если прерывания в этот момент разрешены). При выполнении команды ''​RET''​ с начальным состоянием стека или команды ''​RST 0''​ управление также передаётся отладчику;​ при этом считается,​ что программа успешно завершена. \\ Обработка точек приостанова организуется с помощью ''​RST 0'',​ поэтому все остальные команды ''​RST''​ могут использоваться в отлаживаемой программе без ограничений. После возврата управления отладчику в окне листинга первая строка устанавливается на команду,​ с которой начиналось выполнение,​ а вторая ​— на ту, которая вызвала приостанов (в ней устанавливается курсор). \\ Передача управления отладчику при достижении точки приостанова или при завершении программы возможна только при условии,​ что странице 0000h...3FFFh в этот момент сопоставлен основной банк памяти (тот же, что и при запуске отладчика). \\ При выполнении программы ведётся подсчёт профилей по всем символическим именам (при каждом прерывании и при трассировке отдельной команды увеличивается на единицу счётчик профиля ближайшего символического имени с адресом,​ меньшим текущего ''​PC''​). Значения счётчиков профиля отображаются в правой колонке окна листинга.| 
-|<​key>​ctrl+X</​key>​ (<​key>​SELECT</​key>​)|Выполнение одной команды. \\ \\ Выполняются те же действия, ​ что и по указанию <​key>​ctrl+G</​key>,​ но  исполняется ​ только ​ одна команда ​ (расположенная по адресу из счетчика команд ''​PC''​). Можно исполнять также команды,​ находящиеся в ПЗУ (однако точки приостанова в ПЗУ устанавливать нельзя).| +|<​key>​ctrl+X</​key>​ (<​key>​SELECT</​key>​)|Выполнение одной команды. \\ \\ Выполняются те же действия,​ что и по указанию <​key>​ctrl+G</​key>,​ но исполняется только одна команда (расположенная по адресу из счётчика команд ''​PC''​). Можно исполнять также команды,​ находящиеся в ПЗУ (однако точки приостанова в ПЗУ устанавливать нельзя).| 
-|<​key>​ctrl+T</​key>​| Выполнение команды с обходом подпрограммы. \\ Выполняется аналогично ​ <​key>​ctrl+X</​key>,​ но для команды ​ ''​CALL''​ управление возвращается отладчику ​ только после выполнения вызываемой подпрограммы. При выполнении подпрограммы выполняется ​ обычная обработка ​ точек приостанова (как в <​key>​ctrl+G</​key>​).| +|<​key>​ctrl+T</​key>​| Выполнение команды с обходом подпрограммы. \\ Выполняется аналогично <​key>​ctrl+X</​key>,​ но для команды ''​CALL''​ управление возвращается отладчику только после выполнения вызываемой подпрограммы. При выполнении подпрограммы выполняется обычная обработка точек приостанова (как в <​key>​ctrl+G</​key>​).| 
-|<​key>​ctrl+P</​key>​|Установка ​ счетчика команд ''​PC'' ​ на  ту  команду,​ против которой находится курсор.| +|<​key>​ctrl+P</​key>​|Установка счётчика команд ''​PC''​ на ту команду,​ против которой находится курсор.| 
-|<​key>​ctrl+V</​key>​|Выбор режима мультипликации. \\ Устанавливается один ​ из  режимов ​ ''​Visual:​No'', ​ ''​Exec'' ​ или ''​Trace''​.|+|<​key>​ctrl+V</​key>​|Выбор режима мультипликации. \\ Устанавливается один из режимов ''​Visual:​No'',​ ''​Exec''​ или ''​Trace''​.|
  
 Распределение видеопамяти:​ Распределение видеопамяти:​
Строка 239: Строка 236:
 |2800h|PGT отладчика.| |2800h|PGT отладчика.|
 |3000h|PNT подсказки.| |3000h|PNT подсказки.|
- 
-{{dbg.zip |}} 
  
 ====== Ссылки ====== ====== Ссылки ======
Строка 247: Строка 242:
  
 {{tag>​MSX Application Baraz_L_S}} {{tag>​MSX Application Baraz_L_S}}
- 
msx/dbg/dbg.1636714001.txt.gz · Последние изменения: 2021-11-12 13:46 — GreyWolf