(C) 1997 С.Ляпин Music by Shov IS_DOS : ПРОБЛЕМЫ И РЕШЕНИЯ. ──────────────────────────────── Вместо предисловия. Прежде чем начать статью я хочу при- нести извинения более искушенным пользо- вателям этой системы за слишком уж под- робное рассмотрение вроде бы очевидных вещей, но по собственному опыту зная от- сутствие в наличии подробных, доходчивых, для неискушенного пользователя, инструк- ций и руководств ( как тут не вспомнить серию книг для пользователей и програм- мистов РС-совместимых компьютеров "для чайников" ) я рискуя навлечь недовольство все-таки "разжевываю" материал. Кроме этого советую при чтении иметь под рукой руководство пользователя IS_DOS, т.к. это поможет и дополнит то, что я буду опус- кать в своей статье в связи с явной оче- видностью оного. *************************************** В предыдущей статье я показал вам как можно эффективно использовать RAM-диск в системе IS_DOS.Дополнительную и весьма интересную информацию о нем вы так же мо- жете почерпнуть из компьютерного журнала "ZX-FORMAT", в котором работа с ним осве- щена очень грамотно, повторятся не имеет смысла.Сегодня мы поговорим о редакторе IS-EDITOR, a конкретно рассмотрим работу одного из его интересных оверлеев - овер- лея макросов. Но прежде надо сказать нес- колько слов о самом редакторе. IS-EDITOR - полноценный, корректный, эффективный и удобный редактор, имеющий много необходи- мых для нормальной работы функций. Он располагается в каталоге EDIT и состоит из следующих файлов : editor.com - предварительный настройщик edit.com - собственно редактор ed0.ovr - оверлей блочных функций ed1.ovr - оверлей поиска и замены ed2.ovr - оверлей параметров ред. ed3.ovr - оверлей формат. текста ed4.ovr - оверлей макросов ed5.ovr - оверлей калькулятора ed6.ovr - оверлей доп. функций ed7.ovr - оверлей псевдографики. Это, конечно, не все файлы редактора, но самые необходимые для нашего разгово- ра.С первыми двумя файлами списка я наде- юсь все вам ясно, а вот мощная оверлейная система требует более подробного рассмот- рения.Я не буду пересказывать содержимое описания редактора из инструкции, все кто ее не читал советую изучить, а кто забыл - повторить, поэтому сразу же перейду к оверлею ed4.ovr, и по ходу дела рассмотрю другие оверлеи в свете макросного. Итак, что же такое макросы, применительно к вы- ше названному редактору. Макросы - это возможность программировать слова и це- лые, часто используемые в работе словосо- четания и даже предложения, (избавляя вас от необходимости, тратя время, десятки раз набирать одно и тоже) возможность программировать последовательности овер- лейных функции, причем из различных овер- леев, возможность создания мощных поиско- вых, счетных и копировочных функций в ре- дактируемом файле и многое, многое дру- гое. Что бы не утомлять уважаемых читате- лей и пользователей возьмем как гово- риться быка за рога и рассмотрим на конкретных примерах огромные возможности макросов. 1.Программирование текста. Как я уже упоминал макрос программирует определенную последовательность действий и делает он это весьма простым способом.В каталоге EDIT, создается файл ed_mac txt, который содержит список необходимых мак- росных последовательностей, набранных все в том же редакторе, строку открывает сим- вол, который вызывает последовательность, и таким образом первый символ в такой строке является управляющим или ко- мандным. Предположим вы создали текстовый файл ed_mac.txt в каталоге EDIT, записали в него следующие строки: A ПРИВЕТ ! B HELLO ! Теперь загрузив любой свой рабочий текстовый файл в редактор нажмем комбина- цию клавиш "CS/SS". В правом верхнем углу экрана, перед названием вашего файла, по- явится индикация включения оверлея макро- сов, слово "MAC". Если сейчас нажать кла- вишу "A" мы получим на экране, с позиции курсора редактора слово "ПРИВЕТ!", а если нажать "B" - то увидим слово "HELLO!", но уже не с позиции курсора, а со следующего знакоместа. Если вы хотите, чтобы появи- лось словосочетание или предложение смело пишите его за управляющим символом, только помните, что в одной строке должно быть не более 32 символов, т.к. это раз- мер буфера клавиатуры. Если же вы хотите вывести более длинный текст тогда замы- кайте макросные строки друг с другом.Де- лается это следующим образом. Например, нам надо что бы при нажатии клавишы "D" появлялось 40 символов "*" для этого мы производим следующие действия : 1.Загружаем в редактор файл ed_mac.txt 2.Пишем, с начала строки,символ " D ", затем набиваем 28 символoв " * " 3.За последним набранным символом , без отступа , набираем еще один управляющий символ макросного оверлея , " #0E " и за ним любой другой символ , например , " G " далее открываем новую строку этим сим- волом и дописываем недостающие звездочки. D****************************#0EG G************ Таким образом можно вывести техт практи- чески любой разумной и необходимой длины. 2.Программирование оверлейных функций. Кроме рассмотренной возможности макрос- ный оверлей избавит вас и от других моно- тонных и утомительных операций.Каждый из оверлеев редактора выполняет свою весьма важную и нужную функцию, помогая в работе и расширяя возможности редактирования, копирования, форматирования текстов. Час- то приходится какую-либо операцию повто- рять несколько раз, выполняя одну и ту же работу.Вот тут и приходит на выручку оверлей макросов, беря ее на себя. Рассмотрим несколько простых примеров. Возьмем оверлей дополнительных функций. Он вызывается одновременным нажатием кла- виш Simbol Shift + Space, и предоставляет 22 функций, весьма нужных в работе, по нажатию соответствующих клавиш, при этом оверлей индуцируется в нижней строке ре- дактора. Этот оверлей можно зафиксировать нажав на Space вторично, при этом в верхней строке редактора, рядом с именем файла появится индикация :FIX. Ну вот по- жалуй и все, что нам необходимо для при- мера (более подробное описание оверлея смотри в руководстве пользователя или в help'е ), и теперь будем создавать макрос базирующийся на этом оверлее. Допустим мы имеем определенный текстовый файл, доста- точно большого объема. Это может быть ка- талог, база данных, список, рассказ и т.п. И нам надо его разбить на страницы, к примеру, по 80 строк. Для этого загру- жаем в редактор ed_mac.txt и создаем в нем макрос.Первым делом сначала строки ставим управляющий символ, вызываюший данный макрос, пусть это будет "A", затем пишем управляющий символ для вызова овер- лея дополнительных функций.Тут надо ого- вориться, что для вызова управляющих кла- виш используется символ "#", после кото- рого пишется шестнадцатиричный код симво- ла ( "0" для десятков писать обяза- тельно). Символ для вызова этого оверлея - #12.Коды для вызова других оверлеев вы найдете в конце данной статьи. Теперь, на всякий случай, подстраховываясь ( вдруг у нас wet-файл и курсор стоит не в начале файла) пишем управляющий символ для выхо- да в начало файла, как мы знаем это - "t" ( именно маленькая латинская t, a нe большая, далее я объясню почему ), его код - # 74, далее, перемещаем курсор вниз на 80 строк.Это делается вызовом еще од- ного служебного символа оверлея макросов ( кстати, полный список этих символов вы так же найдете в конце статьи ).Это - уп- равляющий символ - #R, после которой должны стоять две шестнадцатиричные циф- ры. Первая цифра - число повторов, вторая - длина повторяемого участка. Например : #R21#, что значит переместить курсор на 2 знакоместа вправо ; #R38SPECTRUM, что значит напечатать три раза слово SPECTRUM, а цифра "8" - количество букв, которые необходимо пов- торить. Теперь мы из описания редактора берем информацию, что комбинация Simbol Shift + A перемещает курсор на 20 символов вниз, а это значит необходимо повторить эту операцию 4 раза, то есть получится: #R41#10, где #10 - это код SS + A, 4 - кол-во повторов, 1 - длина повторяемого участка. Далее необходимо вызвать размет- чик, т.е. символ " l ", его код - # 6C. Посмотрим, что же у нас получилось: A#12#74#R41#10#12#6C Надеюсь всем понятно, как мы получилось эту строку макроса ( если непонятно читай выше ). При запуске строки мы имеем следующее : 1.Курсор выходит в начало файла ; 2.Курсор опускается на 80 символов вниз, при этом оверлей доп. функций снимается ; 3.Вызываем повторно оверлей и ставим от- метку страницы. Давайте немного усовершенствуем эту процедуру, используя уже известный нам управляющий символ макроса - #0E.Что бы разметка файла продолжалась до конца, не- обходимо создать две строки макроса, ис- пользуя символ #0E. При этом первая стро- ка будет выводить курсор на начало файла и вызывать вторую строку которая собственно и будет размечать файл.Для вы- зова второй строки используем, не долго думая, второй символ латинского алфавита -"B". Вот что у нас получится: 1. A#12#74#0EB 2. B#R41#10#12#6C#0EB Как видно из написанного вторая строка зацикливается сама на себя. Tеперь мы мо- жем смело запускать этот макрос и он доб- росовестно разобъет файл на страницы по 80 строк.Но вот только останавливать раз- метку придется в ручную, нажатием и удер- живанием клавиши Space, до тех пор пока индикатор : MAC, в верхней строке редак- тора не изменится на : mac, что означает оверлей макросов понял вашу просьбу прер- вать выполнение макросной команды и ра- зорвет зацикленную команду. А можно ли как-то определить, когда закончить работу макросу ? Оверлей макросов имеет такую возможность. Это еще один служебный, уп- равляющий символ, который прервет выпол- нение зацикленной строки или строк макро- са, встретив в файле пустую строку.Конеч- но определенные проблемы это создает, ведь тогда в вашем файле нигде не должно быть пустых строк кроме как в конце.Это символ "T" на префексе #12, т.е. - #12T. Изменим строку вставив в нее этот код и теперь после вызова оверлея стоит нажать клавишу " 1 " и начнется разметка файла : 1. A#12T#12#74#0EB 2. B#R41#10#12#6C Вот мы и написали макрос разметчик файла с шагом в 80 строк, полностью автономный, и не нуждающийся в нашем участии и ис- пользующий для своей работы оверлей до- полнительных функций. Осталось только сказать несколько слов. Ну во-первых, мой пример может быть и не имеет крутизны и особой необходимости и изящности, но это всего лишь пример создания оверлейного макроса и базируясь на нем вы сможете создать очень удобный и эффективный мак- рос для ваших собственных нужд. Во-вто- рых, вместо шестнадцатиричных кодов сим- вола вы можете использовать и сам символ, тогда рассмотренные нами строки будут выглядеть таким образом : 1. A#12T#12t#0EB 2. B#R41#10#12l#0EB Tак кажется даже понятней для понимания макроса, но я умышленно рассмотрел более сложный и громоздский способ для более четкого, глубокого объяснения структуры макроса, ибо в руководстве пользователя примеры использования, вызова и конструи- рования макроса рассмотрены, мягко говоря убого, невнятно и они рассчитаны на чело- века с достаточно глубоким познанием компьютера, цель же моей статьи детальное ознакомление начинающего пользователя с очень малым опытом работы. В третьих, оценить выгоду от макросов можно лишь тогда, когда попробуешь их в деле и после этого вам уже от них, я уверен, не отка- заться. *************************************** Вот и подошла к концу наша 2 встреча, я надеюсь, она была полезной и поучи- тельной, и вы не зря провели время за чтением этой статьи. В предыдущей статье я обещал рассказать вам еще кой о чем, но это оказалось сложно описать не дав вам полной картины обо всех неоходимых сос- тавляющих системы, и макросы в ней зани- мают очень важное место. Поэтому я слегка подкорректировал планы. Следующий раз я продолжу тему макросов. Мы рассмотрим са- мые мощные и необходимые макросы - межо- верлейные макросы, примерный вариант соз- дания системы управления каталогом и ба- зой данных с помощью макросных комбинаций и еще много много интересного, так что, как говорится оставайтесь с нами и вы не проиграете. Если у вас возникли вопросы обращайтесь по телефону 4-07-26. *************************************** ПРИЛОЖЕНИЕ N 1. ═════════════════ 1.Таблица управляющих символов оверлея дополнительных функций. ╔═══════════╦══════════════════════════╗ ║ Клавиша ║ Функция ║ ╠═══════════╬══════════════════════════╣ ║ D DelLN ║Удалить строку. ║ ║ U UnDL ║Вставить строку. ║ ║ L LF ║Вставить перевод страницы ║ ║ ║LF, под курсором. ║ ║ P Param ║Вызвать меню параметров. ║ ║ T Top ║Курсор в начало файла. ║ ║ B Bot ║Курсор в конец файла. ║ ║ S Save ║Сохранить на диске wet-ф-л║ ║ F Find ║Вызвать оверлей поиска. ║ ║ E Exit ║Вызвать меню выхода. ║ ╟───────────╫──────────────────────────╢ ║ Клавиши ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║ ║меню выхода║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║ ╟───────────╫──────────────────────────╢ ║ D Dry exit║ "Сухой" выход ║ ║ W Wet exit║ "Мокрый" выход ║ ║ L Leave ║ Выход без записи на диск ║ ╟───────────╫──────────────────────────╢ ║ A ║ Переход на строку вниз. ║ ║ Q ║ Переход на строку вверх. ║ ║ W ║ Удаление до конца строки.║ ║ C ║ Выход в калькулятор. ║ ║ 0 ║ Удалить от курсора до ║ ║ ║ конца строки. ║ ║ 1 ║ Драйвер печати (41/61сим-║ ║ ║ вол ). ║ ║ 2 ║ Смена режима нумерации ║ ║ ║ строк. ║ ║ 9 ║ Включение псевдографики. ║ ╟───────────╫──────────────────────────╢ ║ Комбинации║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║ ║ клавиш ║▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒║ ╟───────────╫──────────────────────────╢ ║ CS+4 ║ Курсор в начало строки. ║ ║ CS+9 ║ Курсор в конец строки. ║ ║ CS+Q ║ На страницу вниз. ║ ║ CS+A ║ На страницу вверх. ║ ║ SS+F ║ Выход в режим форматиро- ║ ║ ║ вания текста. ║ ╚═══════════╩══════════════════════════╝ ПРИЛОЖЕНИЕ N 2. ══════════════ 1.Tаблица управляющих (служебных) символов оверлея макросов. ╔═══════════╦══════════════════════════╗ ║ Символ ║ Действие ║ ╠═══════════╬══════════════════════════╣ ║ ║1.Выполняет замыкание ║ ║ #0E ║ строки макроса на себя ║ ║ ║2.Выполняет замыкание стр.║ ║ ║ макросов друг на друга. ║ ╟───────────╫──────────────────────────╢ ║ ║.Выполняет функцию повтори║ ║ ║ теля в которой : ║ ║ #Rx,y ║ x - количество повторов ;║ ║ ║ y - величина повторяемого║ ║ ║ участка. ║ ╟───────────╫──────────────────────────╢ ║ ║Выполняет проверку на пус-║ ║ #12T ║тую строку для прерывания ║ ║ ║макроса при ее обнаружении║ ╚═══════════╩══════════════════════════╝ 2.Tаблица кодов основных клавиш. ╔═══════╦═══╦═══════╦═══════╦═══╦═══════╗ ║Клавиша║Код║Функция║Клавиша║Код║Функция║ ╠═══════╬═══╬═══════╬═══════╬═══╬═══════╣ ║ CS+1 ║#07║ Р./ЛАТ║ ENTER ║#0D║ ВВОД ║ ║ CS+2 ║#06║ Б./МАЛ║ SPACE ║#20║ ПРОБЕЛ║ ║ CS+3 ║#04║ I./OVR║ CS+SS ║#0E║ОВЕРЛЕЙ║ ║ CS+4 ║#05║ HOME ║ SS+Q ║#15║ PgUp ║ ║ CS+5 ║#08║ LEFT ║ SS+A ║#10║ PgDn ║ ║ CS+6 ║#0A║ DOWN ║ SS+W ║#13║ ERASE ║ ║ CS+7 ║#0B║ UP ║ SS+E ║#14║ INSERT║ ║ CS+8 ║#09║ RIGHT ║ SS+ENT║#11║ОВЕРЛЕЙ║ ║ CS+9 ║#0F║ END ║ SS+SP ║#12║ОВЕРЛЕЙ║ ║ CS+0 ║#0C║ DELETE║ CS+ENT║#17║-------║ ╚═══════╩═══╩═══════╩═══════╩═══╩═══════╝