IS DOS - Проблемы и решения

Odyssey Magazine #01
(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║-------║
╚═══════╩═══╩═══════╩═══════╩═══╩═══════╝