SysFn63/ru

From KolibriOS wiki
Jump to: navigation, search

Функция 63 - работа с доской отладки.

Доска отладки представляет собой системный буфер (на 4096 байт), в который любая программа может записать (вообще говоря, произвольные) данные и из которого другая программа может эти данные прочитать. Есть соглашение, в соответствии с которым записываемые данные - текстовые строки, интерпретируемые как отладочные сообщения о ходе выполнения программы. Ядро в определённых ситуациях также записывает на доску отладки сведения о выполнении некоторых функций; по соглашению сообщения ядра начинаются с префикса "K : ". Для просмотра доски отладки создано приложение board, которое считывает данные из буфера и отображает их в своём окне. board понимает последовательность кодов 13,10 как переход на новую строку. Символ с нулевым кодом в конце строки не обязателен, но и не мешает. В связи с появлением отладчика ценность доски отладки несколько снизилась, поскольку отладчик позволяет полностью контролировать ход выполнения программы, причём для этого не требуется никаких усилий со стороны самой программы. Тем не менее во многих случаях доска отладки продолжает оставаться полезной.

Подфункция 1 - запись байта

Параметры:

  • eax = 63 - номер функции
  • ebx = 1 - номер подфункции
  • cl = байт данных

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Байт записывается в буфер. Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
  • Для вывода на доску отладки более сложных объектов (строк, чисел) достаточно этой функции, вызываемой в цикле. Можно не писать вручную соответствующий код, а воспользоваться файлом debug.inc, входящим в дистрибутив.

Константы для регистров:

eax - SF_BOARD (63)
ebx - SSF_DEBUG_WRITE (1)

Подфункция 2 - чтение байта

Забирает байт из буфера.

Параметры:

  • eax = 63 - номер функции
  • ebx = 2 - номер подфункции

Возвращаемое значение:

  • eax = ebx = 0 - буфер пуст
  • eax = байт, ebx = 1 - байт успешно прочитан

Константы для регистров:

eax - SF_BOARD (63)
ebx - SSF_DEBUG_READ (2)