РУКОВОДСТВО ПРОГРАММИСТА II. ДИАЛОГОВЫЙ КОМАНДНЫЙ РЕЖИМ (продолжение) 4. ОПИСАНИЕ ВСТРОЕННЫХ ДИРЕКТИВ Все встроенные директивы имеют английские названия. Для каждой директивы приводятся полные списки возможных ключей и параметров, формат требуемых параметров во входной строке. Установка во вспомогательных целях других ключей, парамет- ров и переменных не оговаривается. 4.1. Универсальные ключи поиска Ряд ключей имеет единый смысл для различных директив и служит для управления режимом поиска файлов по подкаталогам при разборе путей доступа. Ключ X - поиск в глубину. Обычно поиск целевых файлов проводится по целевому каталогу (см. 3.5) без спуска в его подкаталоги. По ключу X поиск целевых файлов идет по всем подкаталогам целевого каталога. Ключ D - поиск подкаталогов. При поиске находятся только целевые файлы, являющиеся каталогами. Одновременное указание ключей X и D означает поиск всех каталогов в глубину по целевому каталогу. Шаблон при этом игнорируется. Ключ N - без подтверждения. Отменяет пофайловый запрос подтверждений на обработку, если в качестве целевого файла указана группа файлов (шаблон). Ключ P - с приостановом. Организует выдачу информации на экран порциями с запросом продолжения. Размер порции равен размеру окна. Продолжение выдачи - нажатие любой клавиши на запрос (кроме РЕД - конец выдачи). Приостановить выдачу можно в любой момент нажатием пробела. Ключ H - с обработкой скрытых файлов. При поиске по ка- талогу будут находиться все файлы, в т.ч. с установленными атрибутами H (спрятан), S (системный), B (копия). Для про- грамм ключ H имеет смысл "выдать подсказку". 4.2. Универсальные параметры фрагмента файла Ряд параметров имеет единый смысл для различных дирек- тив и служит для определения вырезки фрагмента файла для обработки и адреса его размещения в памяти. Параметр P - начальная позиция. Определяет байтовое сме- щение начала фрагмента относительно начала файла. По умол- чанию равен 0. Параметр L - длина фрагмента. Определяет байтовую длину фрагмента файла. По умолчанию равен разности длины файла и начальной позиции фрагмента. Параметр A - адрес фрагмента. Задает адрес в памяти, ку- да загружается или откуда записывается фрагмент файла. По умолчанию (где оно допустимо) равен стартовому адресу файла (в основном, для двоичных программ и данных), если таковой не определен - стандартному адресу загрузки 1800. Параметр S - стартовый адрес файла. Задает стартовый ад- рес файла (обычно для двоичных данных, записываемых из Ко- мандера), или подменяет при загрузке стартовый адрес из файла новым значением. По умолчанию совпадает с адресом, заданным параметром A. Если директива обрабатывает несколько файлов по шабло- ну, параметры фрагмента относятся к каждому файлу. 4.3. Вывод каталога DIR путь-шаблон ключи: D X L W P H Вывод списка файлов из указанного подкаталога, удовлет- воряющих шаблону. Для каждого файла выдаются: защита, тип, имя, число за- нимаемых блоков памяти и дата записи каждого файла. В конце выводятся общее число выданных файлов и размер свободной памяти тома. Неопределенная дата (00.00.80) не выводится. Ключ L - вывод байтовых длин файлов вместо дат. Ключ W - вывод только имен файлов. Ключ H - показ "спрятанных" файлов, т.е. файлов с уста- новленным атрибутом скрытия. Ключ X - вывод содержимого всех подкаталогов. При этом в поле типа файла выводится относительный уровень вложенно- сти, а поле имени сдвигается вправо на величину этого уров- ня. При указании этого ключа файлы и подкаталоги внутри каждого каталога группируются отдельно. Ключ D здесь означает выдачу всех подкаталогов. При запросе подтверждения обработки в других директивах для каждого файла выдается соответствующая ему строка ката- лога в описанном выше формате; этот формат можно менять,как сказано выше, ключами L и W. 4.4. Вывод и установка даты DATE [ дата ] Дата задается в виде ЧЧ.ММ.ГГ . Осмысленные значения да- ют десятичные значения ЧЧ от 1 до 31, ММ от 1 до 12 и ГГ от 81 до 99; контроль корректности даты не проводится, задание других значений вырабатывает некоторую бессмысленную дату. Если дата указана, то она записывается на диск в поле даты корневого каталога. При загрузке системы эта дата бу- дет автоматически установлена текущей. Текущей датой поме- чаются все создаваемые и изменяемые файлы. Если дата не указана, выводится текущая дата. Неустановленной датой считается 00.00.80; при выводе ка- талога у помеченных ею файлов дата не выдается. 4.5. Установка и снятие защиты файлов по записи LOCK путь-шаблон ключи: D X L W N H UNLOCK -""- Установка и сброс атрибута защиты от записи, переимено- вания и уничтожения указанного файла или группы файлов, в т.ч. каталогов. При выводе каталога файлы, закрытые на запись, отмечают- ся '*' в позиции защиты. Закрытие на запись каталога предохраняет от изменения файлы во всех его подкаталогах. 4.6. Уничтожение файлов DEL путь-шаблон ключи: X L W N H Этой директивой уничтожаются только файлы данных, но не каталоги; они и все их надкаталоги должны быть открыты на запись, иначе будет выдана ошибка. 4.7. Уничтожение каталогов RD путь-шаблон ключи: D X L W N H Этой директивой уничтожаются и файлы, и каталоги. Унич- тожение выполняется с погружением во все подкаталоги с по- файловым запросом (если нет ключа N). Каталоги, в которых остались файлы, не уничтожаются и выдается ошибка. Атрибут X здесь, как и везде, относится только к поиску целевого каталога. На полное уничтожение подкаталогов его отсутствие не влияет. Атрибут D здесь позволяет уничтожить только каталоги, оставив файлы данных, соответствующие шаблону. 4.8. Переименование файлов REN путь-шаблон шаблон ключи: D X L W N H Переименовывает в каталоге файлы, подходящие под первый шаблон, в соответствии со вторым. Правила переименования таковы: - имя файла подгоняется под шаблон поиска (первое имя), при этом каждой '*' сопоставляется некоторая подстрока; - в шаблоне замены i-й по порядку знак '*' или '?' заменя- ется, соответственно: '*' - на подстроку, сопоставлен- ную i-й '*' в шаблоне поиска; '?' - на пустую подстро- ку; лишние '*' в обоих шаблонах сопоставляются пустым подстрокам. Примеры: имя шаблон поиска шаблон замены результат EDITOR.PRG *.* *1.*X EDITOR1.PRGX COM.MAIN.ASM *.*.* *.?* COM.ASM CROCODILE *O*O* *AB*DE CRABCDE 4.9. Запись фрагмента памяти в файл SAVE путь-файл,адрес,длина параметры: A L P S H Адрес и длина фрагмента (обязательные параметры A и L), а также позиция фрагмента P и стартовый адрес S определяют- ся по правилам 4.2. Имя файла не должно быть шаблоном. Файл всегда перезаписывается, т.е. старое содержимое пе- ред записью уничтожается. Ключ S позволяет при необходимости записать стартовый адрес, отличный от начального адреса фрагмента. Замечание. Если при записи в "спрятанный" файл не ука- зать ключ H, то будет создан другой файл с тем же именем, но не спрятанный! 4.10. Загрузка файлов в память LOAD путь-шаблон ключи: X L W N H параметры: A L P Загрузка фрагментов (или целиком) указанных файлов по стартовым адресам в памяти или по адресу A-параметра, если он указан (один для всех файлов, если их несколько!). При загрузке данных в память ведется контроль невыхода за верхнюю границу пользовательской памяти: запись в об- ласть адресов больших ее адреса (включительно) игнорируется. 4.11. Текстовый вывод файлов TYPE путь-шаблон ключи: X L W N H параметры: A L P Выдача содержимого фрагмента файла(ов) в текстовом виде. Все символы файла выводятся через драйвер текущего уст- ройства вывода с отработкой, если надо, управляющих симво- лов. Специальные символы, например, конец текста, выводятся на общем основании. Прерывание вывода - клавиша РЕД. Фрагмент (файл) загружается в память обычным образом (см.директиву LOAD). 4.12. Байтовый дамп файлов DUMP путь-шаблон ключи: X L W N S H параметры: A L P S Выдача содержимого фрагмента файла(ов) в шестнадцатерич- ном байтовом виде. Вывод идет строками по 8 байтов с указанием адреса каж- дой восьмерки. Базовый адрес равен A-параметру (см. 4.2 про умолчания), т.е. адресу загрузки фрагмента в память. Если указаны ключ или параметр S, выводится еще и вторая, параллельная адресация, показывающая расположение данных в файле, как если бы он был загружен с некоторого адреса. Этот адрес совпадает со стартовым адресом файла, если нет S-параметра, но есть S-ключ, и с S-параметром, если он есть (S-ключ в этом случае не важен). В начале вывода к этому адресу прибавляется начальная позиция фрагмента (P-пара- метр). Например, если стартовый адрес файла - 3000, то вызовы: DUMP FILE,A=5555,S=0,P=20,L=10 DUMP/S FILE,A=5555,P=37,L=10 выдадут, соответственно: 0020/5555: XX XX .. 3037/5555: XX XX .. 0028/555D: XX XX .. 303F/555D: XX XX .. что соответствует относительному смещению данных в файле и их "родному" местоположению. 4.13. Текстовый вывод фрагмента памяти : нач_адрес,кон_адрес Выдача в текстовом виде фрагмента памяти между указанны- ми адресами, аналогично директиве ТYPE. Здесь адреса задаются не параметрами в обычном виде, а числовыми выражениями, и могут разделяться запятой, точкой или пробелом. 4.14. Байтовый дамп фрагмента памяти - нач_адрес,кон_адрес ключи: S Выдача в шестнадцатеричном байтовом виде фрагмента памя- ти между указанными адресами, аналогично директиве DUМР. Параметр S вводит вторую, виртуальную, адресацию фраг- мента. Два основных адреса задаются числовыми выражениями, как в директиве ':'. Все параметры могут разделяться запятыми, точками или пробелами. 4.15. Установка текущего каталога CD путь-каталог Действия директивы эквивалентны выполнению команды уста- новки текущего каталога по пути доступа. 4.16. Копирование файлов COPY путь-шаблон_ист,путь-файл/каталог_адр ключи: D X T L W N H параметры: A L Р S Копирование файлов и каталогов из целевого каталога-ис- точника (1 путь) в целевой каталог-адресат (2 путь). Режим поиска копируемых файлов задается ключами D,X и N по общим правилам и шаблоном поиска. Режим их чтения зада- ется параметрами или их отсутствием по общим правилам. Режим записи найденных файлов в каталог-адресат опреде- ляется правилами: - файл копируется в файл, каталог - целиком в каталог той же структуры и состава; - если указан ключ T, все файлы копируются в целевой ката- лог-адресат непосредственно, без учета уровня их вло- женности, в каталог-источник (содержимое каталогов ко- пируется в них самих по предыдущему правилу); - ключ X автоматически включает ключ T, т.е. файлы, най- денные на разных уровнях, копируются в целевой каталог; - файлы копируются под своими именами, если адресатом ука- зан каталог; если адресат - файл, первый файл копирует- ся под указанным именем, последующие - под своими; ад- ресат-шаблон недопустим; - контроль существования в каталоге-адресате файлов с име- нами копируемых файлов не ведется (кроме копирования файла на место каталога и наоборот). Копирование группы файлов происходит через пользователь- скую память, порциями, с записью по мере ее заполнения. 4.17. Переключение экрана SCRN [экран] [режим] параметры: A M Переключение экрана и режима вывода. Номер начальной страницы экрана задается параметром A, а код режима - пара- метром M во входной строке. Номер страницы приводится к ближайшему кратному 8 снизу, нулевой номер или отсутствие параметра A не меняют адрес экрана. Код режима соответствует значению системной ячейки режи- ма отображения INVFLG ($32): 7 бит = 0/1 - режим 32/64 символа в строке; 5,3 биты = 00,01,10 - инверсный,мерцающий, нормальный фон для цветного экрана; 2-0 биты - цвет изображения для цветного экрана. Нулевой код или отсутствие параметра M не меняют текущий режим. Если сменился либо код режима, либо адрес экрана, экран очищается; в других случаях (например, при вызове директивы без параметров) просто включается его отображение: так мож- но восстановить показ экрана, если в результате выполнения программы или сбоя изображение сбилось. Текущие адрес начальной страницы экрана и режим сохраня- ются в переменной #D среды диалога: соответственно, в стар- шем и младшем байтах. Допускается записывать туда новые значения непосредственно (в любом списке параметров): при этом экран переустанавливается, однако проверка нулевых значений и приведение экрана не производя ?????????????