(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║-------║
╚═══════╩═══╩═══════╩═══════╩═══╩═══════╝