Научно-технический кооператив "Спрайт" г. Новосибирск 1992 ОПЕРАЦИОННАЯ СИСТЕМА "С П Р А Й Т" (версия 1.3) РУКОВОДСТВО ПРОГРАММИСТА III. СИСТЕМНОЕ ПРОГРАММНОЕ НАПОЛНЕНИЕ III.2. Диалоговый отладочный комплекс В данном документе описывается порядок работы в Диалого- вом отладочном комплексе (программа DOK), включающем в себя Редактор, Ассемблер и Отладчик. СОДЕРЖАНИЕ 1. РЕДАКТОР ТЕКСТОВ 1.1. Общие сведения 1.2. Запуск Редактора и выход из него 1.3. Режим редактирования 1.3.1. Поле редактирования 1.3.2. Курсор текущей позиции 1.3.3. Поле маркировки фрагмента 1.3.4. Информационные строки 1.4. Управляюшие команды режима редактирования 1.4.1. Управление набором и отображением текста 1.4.2. Перемещение по тексту 1.4.3. Редактирование строки 1.4.4. Редактирование строк 1.4.5. Действия с фрагментом (группой строк) 1.4.6. Контекстные поиск и замена 1.4.7. Копирование подстроки 1.4.8. Переключение экрана 1.5. Режим меню 1.5.1. Выход в меню и работа в нем 1.5.2. Работа с файлами 1.5.3. Меню подсистем 1.6. Использование памяти Редактором 2. АССЕМБЛЕР 3. ОТЛАДЧИК ПРИЛОЖЕНИЕ. КРАТКИЙ СПРАВОЧНИК ПО ОТЛАДОЧНОМУ КОМПЛЕКСУ 1. РЕДАКТОР ТЕКСТОВ 1.1. Общие сведения Редактор текстов предназначен для ввода и редактирования произвольных текстов на ПЭВМ АГАТ. Редактор работает в среде ОС "Спрайт" и существует в двух исполнениях: как автономная программа и в составе Диа- логового Отладочного Комплекса (ДОК). Возможна интеграция Редактора в состав других программных комплексов. В комплект данной версии автономный Редактор не включен. Работа с Редактором осуществляется в режиме полноэкран- ного редактирования; для управления используются управляю- щие и функциональные клавиши клавиатуры ПЭВМ. Сохраняется поддерживаемое ОС стандартное управление регистрами, по возможности сохранена преемственность по управлению с вер- сиями Редактора в системе "Школьница", добавлены новые воз- можности. Редактор поддерживает следующие функции редактирования текстов: - организация текста в виде строк длиной до 255 символов; - ввод строчных и заглавных букв русского и латинского ал- фавитов, графических и управляющих символов, отображе- ние их в различных режимах; - ввод, замена и уничтожение символов в строке, постоянный переключаемый режим вставки/замены; - вставка, уничтожение, склейка и разбиение строк; - перемещение по тексту, в т.ч. быстрое: к началу/концу текущей строки, текста, страничное листание; - контекстные поиск и замена по образцу; - работа с фрагментом (группой строк): отметка, перемеще- ние, копирование, уничтожение, сохранение; - запоминание фрагмента строки и восстановление его в про- извольном месте; - восстановление (откатка) текущей строки; - работа в двух текстовых режимах: 32 и 64 символа в стро- ке, на черно-белом и бело-черном экранах; - поддержка информационных строк с указанием параметров текста, позиции текущего редактирования, свободной па- мяти и текущего файла; - меню дополнительных возможностей: сохранение и чтение текста или фрагмента, вывод текста на печать, просмотр и удаление файлов; - меню сопряжения с другими частями объемлющих программных комплексов; - два интерфейса для работы с каталогами и файлами: обще- системный интерфейс указания пути доступа в виде цепоч- ки имен файлов и интерфейс выбора по списку файлов в подкаталогах, изображаемых в окнах на экране. 1.2. Запуск Редактора и выход из него Редактор находится в файле с именем DOK.PRG, содержащем, кроме того и другие части Отладочного Комплекса, и запуска- ется как обычный программный файл: из командного режима ОС, по имени, с необязательным указанием во входной строке име- ни файла с текстом для редактирования. Например: A> DOK ПРИМЕР.ТXТ Если имя файла в командной строке отсутствует, или задан только каталог, или задан шаблон имен, то при входе в Ре- дактор файл для редактирования будет запрошен из меню под- ходящих файлов. Последовательные нажатия РЕД приводят поо- чередно к запросу имени файла с клавиатуры, выходу в меню Редактора и выходу в режим редактирования с пустым текстом. Выход из Редактора осуществляется выбором команды 'ВЫХОД В СИСТЕМУ' в меню подсистем Редактора. Порядок вызова меню и выбора в нем команд описан в 1.5. 1.3. Режим редактирования Практически вся работа с Редактором ведется в режиме ре- дактирования текста, находящегося в памяти программы. При этом на экране обозначены поле редактирования, курсор теку- щей позиции, поле маркировки фрагмента и две информационные строки. 1.3.1. Поле редактирования Занимает основную часть экранного пространства за исклю- чением двух строк сверху, двух снизу и, как правило, самой левой колонки. Поле редактирования может рассматриваться как прямоу- гольное окно, через которое виден ограниченный участок ре- дактируемого текста. Управляющие клавиши перемещения позво- воляют двигать это окно по тексту. При этом: - каждая строка текста занимает только одну строку экрана; - длинная строка может быть не видна целиком; - все перемещения на одну позицию на экране соответствуют перемещению на одну позицию (строку или символ) по тек- сту. Ограничителями движения окна-поля по горизонтали являют- ся минимальная и максимальначя позиции (1 и 255), по вер- тикали - начало и конец текста. 1.3.2. Курсор текущей позиции Представляет собой мерцающий символ в той позиции поля редактирования (и соответственно, текста), в которой будут производиться очередные изменения. Перемещения курсора внутри поля редактирования соответ- ствуют перемещению позиции редактирования в тексте; при по- пытке выхода за пределы поля, поле по возможности сдвигает- тся, открывая для обозрения нужную часть текста: при вер- тикальном перемещении - на 1 строку, при горизонтальном - на 8 позиций. На экране это выглядит, как перемещение тек- ста. Вид курсора зависит от позиции и режима редактирования: - знак '.' означает, что курсор находится вне текста, т.е. данной позиции на экране не отвечает никакой символ в тексте; - знак '_' означает, что курсор в тексте и включен режим замены текущего символа вводимым; - знак '^' означает, что курсор в тексте и включен режим вставки вводимого символа перед текущим с раздвижкой строки; - знак 'v' означает, что нажат префикс ввода управляющего символа: следующее нажатие управляющей или функциональ- ной клавиши не вызовет управляющих действий, а введет в текст символ с соответствующим кодом; знаковая же кла- виша не будет перекодирована по встроенным регистрам; - знак '?' означает, что нажата клавиша РЕД - префикс аль- тернативного набора управляющих клавиш; - знак '*' маркирует текущую позицию при контекстной заме- не. Изображения курсора зависят от версии знакогенератора: например, для Агата-7 системная утилита ZGEN настраивает систему на работу с полной таблицей символов; предусмотрена (но не включена в данную версию) инсталляция Редактора, позволяющая изменять изображения куросора и рамок меню про- извольным образом. 1.3.3. Поле маркировки фрагмента Занимает позицию недоступной для редактирования 0-й ко- лонки текста (а не экрана!). Строки, входящие в выделенную группу строк (фрагмент), отмечаются в этой позиции верти- кальной чертой для визуализации фрагмента, прочие строки текста - точкой для визуализации левого края текста. Если поле редактирования сдвинуто по горизонтали и начала строк не видны, то 0-я колонка экрана доступна для курсора. 1.3.4. Информационные строки Занимают верхнюю и нижнюю строки экрана и отделены от поля редактирования горизонтальными чертами. В верхней информационной строке выдаются: - число строк в тексте / номер текущей строки, - длина текущей строки / номер текущей позиции, - [ шестн.код текущего символа или 0 в пустой позиции ], - размер свободной памяти в символах. В нижней информационной строке выдается имя файла редак- тируемого текста. Здесь же выводятся запросы при выполнении некоторых функций (поиск, замена, подтверждение). Информационные строки обновляются по мере того, как Ре- дактор отрабатывает вводимые клавиши. Поэтому, например, после выполнения ряда "медленных" команд на регистре повто- ра возможно несоответствие информационных строк текущей по- зиции. Точная позиция будет выдана при нажатии следующей клавиши. 1.4. Управляюшие команды режима редактирования 1.4.1. Управление набором и отображением текста Ввод и отображение символов в редактируемом тексте зави- сят от состояния регистров клавиатуры. Управление ими в Ре- дакторе производится теми же клавишами: - РУС-РЕГ / LAT-РЕГ - пеpеключение алфавита; - РЕГ - переключение строчных/заглавных или русских/латин- ских букв, в зависимости от состояния регистра F1; - F1 - смена набора букв, вводимых без регистра РЕГ; - F2+F1 - переключение режима работы регистра РЕГ: строч- ные/заглавные или русские/латинские; - F2+символ - ввод графического символа; - F2+F2 - вкл/выкл. графический регистр; - F2+ф0 - вкл/выкл. выдачу строчных букв, как заглавных; - F2+ф. - вкл/выкл. выделение строчных букв цветом; - F2+ф= - вкл/выкл. выдачу упр.символов, как графических; - Упр-V - ввод управляющего символа или знаковой клавиаши без преобразования по регистрам (сопровождается курсо- ром 'v'). Дополнительно в Редакторе реализован регистр альтерна- тивных функциональных клавиш с префиксной клавишей РЕД. 1.4.2. Перемещение по тексту При перемещении по тексту он не редактируетя, а лишь ме- няется текущая позиция курсора в тексте и его вид. При этом возможно также перемещение окна по тексту. В дальнейшем все это подразумевается под "перемещением курсора". Клавиши-стрелки сдвигают курсор к предыдущей/следующей строке или позиции в текущей строке. При выходе за реальный текст курсор становится точкой. При попытке выхода за гра- ницы поля редактирования происходит подвижка окна так, что- бы сделать видимой новую позицию. Перемещение окна по вер- тикали происходит непрерывно по строкам, по горизонтали - скачками по 8 позиций. Перемещение за физические границы поля текста (начало/конец текста и 1/255 позиция в строке) здесь и далее нигде не происходит. Клавиша ф3 переводит курсор к 1-й позиции следующей строки текста. Клавиши ф4 и ф5 постранично листают текст (передвигают курсор вперед/назад на 28 строк с сохранением его позиции на экране. Клавиша ф6 центрирует на экране текущую строку. Клавиши ф0 и ф. сдвигают курсор в начало и конец текущей строки. Клавиши альтернативного набора Ред+ф4 и Ред+ф5 сдвигают курсор на первую и последнюю строки текста, не меняя пози- ции в строке. 1.4.3. Редактирование строки При редактировании строка не изменяет своего вертикаль- ного положения на экране. Горизонтальные подвижки окна воз- можны при выходе курсора в невидимую позицию. Клавиша ф2 переключает режимы замены и вставки (виды курсора '_' и '^'). В режиме вставки набираемые символы вставляются в текущую позицию с раздвижкой строки, в режиме замены - пишутся поверх текущего символа. Изменение режима при выполнении любых других действий в Редакторе не просхо- дит. Клавиша ф1 уничтожает текущий символ и сдвигает остаток строки на 1 позицию влево. Клавиша ф8 уничтожает все символы строки начиная с теку- щего. Клавиша Упр-J вставляет ранее сохраненную подстроку (см. 3.6) в текущую позицию с раздвижкой строки. Клавиша РЕД+: восстанавливает состояние текущей строки до ее редактирования, сохраненное при переходе к ней курсо- ра. Старая строка вставляется перед текущей. Исполнение любой из этих функций устанавливает признак измененности текста. 1.4.4. Редактирование строк Клавиша ф9 уничтожает текущую строку и переводит курсор в ту же позицию следующей строки. Клавиша 'перевод строки' вставляет пустую строку после текущей и устанавливает курсор в ее начало. Клавиша ф7 склеивает текущую строку со следующей (вплот- ную) и ставит курсор в позицию склейки. Вставка в строку символа 'перевод строки' (Упр-V+ПС) рассекает ее на две в текущей позиции. Курсор ставится в начало второй строки. Все перечисленные команды устанавливают признак изменен- ности текста. 1.4.5. Действия с фрагментом (группой строк) Непрерывная группа строк текста может быть отмечена, как фрагмент, над которым предусмотрены дополнительные функции. Клавиши РЕД+ф1 и РЕД+ф2 отмечают текущую строку как на- чало и конец фрагмента, соответственно. Фрагмент считается заданным, если его конечная строка не предшествует началь- ной. Строки заданного фрагмента маркируются в 0-й позиции текста вертикальной чертой для визуализации. Вставка и уничтожение строк внутри фрагмента, соответ- ственно, расширяет и сжимает его. Клавиша РЕД+ф7 копирует фрагмент в позицию перед текущей строкой и устанавливает курсор в ту же горизонтальную пози- цию первой строки копии. Фрагмент и его маркировка на ста- ром месте при копировании сохраняются. Допускается копиро- вать фрагмент в себя самого: он при этом расширяется. Клавиша РЕД+ф8 переставляет фрагмент в позицию перед те- кущей строкой. Курсор устанавливается так же. Перестановка фрагмента внутрь себя самого к зримым изменениям не приво- дит. Клавиша РЕД+ф9 уничтожает фрагмент. Перед уничтожением в нижней информационной строке выдается запрос подтверждения "Удалить фрагмент? (д/н)". Помимо перечисленных действий, существует возможность (в меню) записать фрагмент в файл, считать фрагмент из файла, выдать на печать. 1.4.6. Контекстные поиск и замена Контекстные поиск и замена означают, соответственно, по- иск в тексте участка, совпадающего с заданным образцом, и замену его другим заданным образцом. Задание образца для контекстного поиска и поиск первого вхождения осуществляет клавиша Рег+F1. Образец запрашивает- ся в нижней информационной строке и не должен содержать бо- лее 24 символов. При вводе строковых данных в запросах здесь и ниже можно пользоваться всеми стандартными систем- ными функциями редактирования строки; в частности, восста- навливать предыдущий введенный образец. Символ Упр-@ в образце для поиска означает, что на дан- ном месте может стоять один произвольный символ. Символ F2+ @ в образце поиска и замены обозначает перевод строки: т.о. возможно искать образец, находящийся в начале и в конце строки, а также разбивать и склеивать строки при замене. Поиск по образцу выполняется циклически по тексту, начи- ная с текущей позиции курсора до обнаружения первого вхож- дения или возврата к текущей позиции. При нахождении образ- ца содержащая его строка центрируется, а курсор устанавли- вается на начало образца. По клавише F3 поиск продолжается. Задание образцов для контекстной замены и ее начало вы- полняет клавиша РЕД+F2. Сначала описанным выше образом за- прашивается образец для поиска, затем - для замены. Контек- стная замена выполняется по всем вхождениям с запросом под- тверждения или без. При замене с подтверждением также выда- ется контекст каждого обнаруженного образца, образец отме- чается курсором вида '*', а в нижней информационной строке выдается запрос "Заменять?". По 'Д' замена производится, по 'Н' - нет, после чего ищется следующее вхождение. Ответ 'В' означает продолжение замен без подтверждения, нажатие РЕД здесь и во время поиска приводит к окончанию замен. Замены производятся циклически по тексту и прекращаются при возврате к позиции начала замены с выдачей числа сде- ланных замен. Выполнение замены устанавливает признак измененности ре- дактируемого текста. 1.4.7. Копирование подстроки Клавиша Упр-J вставляет в текущую позицию текущей строки ранее запомненную подстроку символов. Запоминание текста осуществляет клавиша РЕД+ф0 . Подстрока вводится в ответ на запрос "Текст:" в нижней информационной строке, причем "предыдущим" значением, кото- рое можно восстановить и редактировать, являются первые 24 символа текущей строки, начиная с позиции курсора. Всю те- кущую строку (до 255 символов), но без редактирования, мож- но запомнить, дав в ответ на запрос пустую строку. 1.4.8. Переключение экрана Клавиша РЕД+F3 переключает экран в режим цветного изо- бражения 32х32 и обратно, в ржим 64х32. В цветном режиме возможно цветовое выделение строчных букв и управляющих символов (F2+ф. и F2+ф= ). 1.5. Режим меню 1.5.1. Выход в меню и работа в нем Выход в главное меню Редактора для выполнения файловых и интерфейсных функций осуществляется клавишами РЕД+РЕД. Выход в меню подсистем для вызова Отладчика, Ассемблера и возврата в систему осуществляется клавишами РЕД+вверх. Клавиша РЕД везде в меню используется для отказа, воз- врата на предыдущий уровень меню или выхода в режим редак- тирования. В главном меню, меню подсистем и подменю файлов, вызыва- емом из главного меню, перечислены названия доступных функ- ций (систем, файлов). Для выбора используются стрелки вверх- вниз, исполнение функции (вызов подсистемы, выбор файла) происходит по нажатию ПС. При необходимости дополнительных запросов выдаются вспо- могательные меню. Для ввода имени файла выводится меню с запросом "Файл:". В нем с клавиатуры вводится путь доступа к файлу. Формат пути, а также правила ввода и редактирования строки совпа- дают с общесистемными соглашениями. При входе в меню запро- са, как правило, выдается некоторая ранее введенная строка, которую можно ввести в качестве нового имени, изменить или отменить. Если этим путем задан шаблон или подкаталог без целевого файла, то выдается подменю файлов, содержащее все файлы за- данного подкаталога, удовлетворяющие шаблону. В начале меню собраны все подкаталоги: выбор одного из них приводит к по- явлению нового подменю файлов. Особая альтернатива позволя- ет выйти в надкаталог. Окно диагностик появляется при возникновении ошибки об- ращения к ДОС и содержит текст сообщения об ошибке, который остается на экране до нажатия любой клавиши. 1.5.2. Работа с файлами В главном меню собраны функции, позволяющие записать весь текст или отмеченный фрагмент в файл, считать новый текст или вставить фрагмент из файла, стереть файл, выбрать текущий каталог и установить имя текста, очистить буфер. Доступны все подкаталоги на любом устройстве: по записи пу- ти доступа, непосредственному выбору из меню или комбиниро- ванным способом. При чтении нового файла или вызове подсистемы, если те- кущий текст был изменен после предыдущего чтения или записи, выдается запрос записи его в файл. Отказ от записи - 'Н', подтверждение - 'Д' (на любом регистре); в последнем случае требуется подтвердить текущее или установить новое имя фай- ла для записи. Отказ от исполнения функции при запросе - РЕД. 1.5.3. Меню подсистем Меню подсистем содержит вызовы Ассемблера и Отладчика, а также возврат в командный режим ОС. Описание этих систем и их вызова приводится в 2 и 3. В автономном исполнении Редактора меню подсистем отсут- ствует, а выход в систему включен в главное меню. 1.6. Использование памяти Редактором Информация об использовании памяти Редактором может быть полезной при работе в ДОК (например, при поиске места для размещения отлаживаемых программ): 8000-93FF - рабочий модуль Редактора; 7D00-7FFF ** - рабочая область; 1800-7CFF ** - буфер редактируемого текста; 0200-02E7 * - рабочая область; 00C0-00FF * - рабочие ячейки. *) можно использовать без ущерба для текста в буфере; **) можно использовать, но возможна порча текста в буфере или имени текущего файла.