3. ВЫСОКО СИЖУ, ДАЛЕКО ГЛЯЖУ,
или
Исследование системы

 

... Анализ — единственный ключ к открытиям, но могут спросить, что является ключём к анализу? — СВЯЗЫВАНИЕ ИДЕЙ.

Кондильяк

ВМЕСТО ВВЕДЕНИЯ

       Наконец Алеша дождался счастливого дня, когда он сможет познакомиться с компьютерами лично. Лето — время отпусков, поэтому у нас в машинном зале тихо и немноголюдно, и я договорился с начальником машинного зала Александром Геннадьевичем, что Алеша поработает на ДВК, если они будут свободны.
       То, что будет делать на ДВК или на других машинах Алеша (я постараюсь, чтобы мое руководство было минимальным), отражает ситуацию, когда человек, купивший компьютер, и совершенно с ним не знакомый, достал его из коробки и начинает работать. Не все Алеша будет делать правильно, но это лишняя возможность поучиться на чужих ошибках.
       Не следует пытаться запомнить все команды и ключи — это практически невозможно. Мы специально не будем пользоваться документацией, чтобы было понятно, какие потребности пользователя привели к появлению тех или иных команд. Предлагаемый путь исследования не единственный, но достаточно эффективный. Пользуясь аналогией из математики, важно запоминать не готовые решения, а методы их получения. Единственное, что нам известно, то, что язык клавиатурного монитора близок к естественному английскому языку. Поэтому основной нашей документацией будут русско-английский и англо-русский словари.
       Кроме того, у нас будут встречаться термины ПОЛЬЗОВАТЕЛЬ (например, программа пользователя) и ОПЕРАТОР. Понятия эти весьма близкие. Оператор становится пользователем, используя систему для выполнения прикладных программ. Пользователь становится оператором, садясь за терминал. В тех случаях когда трудно будет разделить эти понятия, будем считать, что роль оператора будет выполнять Алеша.
       — Ну что, Алеша, пошли работать,— говорю я когда, мы пришли в наш вычислительный центр.
       Алеша, несколько притихший от обилия вычислительных машин и незнакомой обстановки, вступил в машинный зал.

 

ПЕРВЫЕ ШАГИ В СИСТЕМЕ

       Первое, что нам понадобится, — это машинное время. Продукт, несмотря на свое название, весьма ощутимый, осязаемый и имеющий свое качество. Под машинным временем понимается возможность работать в вычислительной системе. Если при попытке распечатать текст в две-три странички мы полчаса заправляем бумагу или меняем красящую ленту на печатающем устройстве, то качество машинного времени плохое. Но это самые легкие неприятности. Программное обеспечение, входящее в вычислительную систему, тоже влияет на качество машинного времени. Каким образом — это мы познаем на собственном опыте. Школы, которые получили комплекты учебной вычислительной техники на базе ДВК, имеют машинное время достаточное хотя бы для факультативных занятий. Некоторые школы имеют возможность привести своих учеников в вычислительные центры у шефов. Если при этом имеется возможность поработать в ОС RT-11 на машинах "Электроника-100/25", "Электроника-79" или СМ-4, то, как правило, количество машинного времени меньше, но качество его существенно выше. Если есть возможность поработать на ДВК-4 или "Электроника-85" да еще и в более спокойной обстановке, то это будет совсем прекрасно.
       Второе, что нам необходимо, — это машинные носители информации. В школы для ДВК поставляется некоторое количество дискет, но его, конечно, мало. У шефов бывает и хуже, и лучше. В комиссионных магазинах иногда можно купить импортные дискеты, но они дорогие. Есть надежда, что в дальнейшем положение с носителями улучшится. Начальник машинного зала нашего ВЦ — Александр Геннадьевич — человек запасливый, выдал Алеше две дискеты диаметром 203мм и сказал, что они подготовлены для работы.

Примечание. Для ДВК-2М, ДВК-3, ДВК-4 и "Электроники-85" используются дискеты диаметром 133мм. Конец примечания.

       И третье — нам необходима операционная система RT-11. Опять на помощь Алеше пришел Александр Геннадьевич. Сам он не программист, но знает у кого из программистов, работающих в зале, что есть. Алеша сбегал к машине, на которую показал Александр Геннадьевич, и через пять минут прибегает.
       — Вот, записали! RT-11 версия пять точка ноль,— уже переходя на программистский жаргон, сказал Алеша.
       Да, Алеше записали RT-11 V05.00, однозадачный монитор RT11SJ.SYS, базовый вариант, поставляемый фирмой DEC, и минимальный набор программ, необходимых для работы. Если Алеша будет так оперативно работать, то он будет иметь все необходимые программы.
       — Ну, а как ее запускать, ты спросил?— спрашиваю я Алешу.
       — А как же! Дима говорит,— кивнул Алеша в конец машинного зала,— садись за второй ДВК, сунь ее в левый карман, набери на клавиатуре "сто семьдесят три тысячи", "гоу" и вперед.
       Конечно, возбуждению Алеши не было предела. Но здесь необходимо сделать некоторые пояснения. Первые ДВК поставлялись только с накопителями ГМД-70 или ГМД-7012, и единственный способ загрузки системы состоял в том, что необходимо было набрать на клавиатуре терминала адрес программы аппаратной загрузки 173000 и команду "G" (от английского слова GO — идти). При этом загрузка будет происходить только с нулевого привода. Этот способ осуществим также на большинстве моделей ЭВМ PDP-11, LSI-11 фирмы DEC. В последних выпусках ДВК появился дополнительный сервис. Для загрузки системы необходимо набрать символ "D" для накопителей типа ГМД-70 или ГМД-7012, или "X" для накопителей НГМД-6022 и номер накопителя, в который вставлена системная дискета. Для СОТКИ дело еще проще. На клавишах пульта нужно набрать число 173000 (в двоичном виде), нажать клавиши "ЗАНЕСЕНИЕ АДРЕСА" и "ПУСК". На экране появится символ "$", после чего нужно набрать на терминале имя и номер накопителя, с которого будет загружаться система, и нажать клавишу <ВК>.

Примечание. В стандарте на код ASCII символ "$" называется "DOLLAR" и имеет соответствующее изображение, в отечественной документации — "знак денежной единицы", а программисты часто называют его "солнышко", "бычок", "жучок", "клоп" или "шкраколыжка" — слово столь же непонятное, сколь непонятно изображение самого символа. Конец примечания.

       Для ДВК-3 и ДВК-4 после включения нужно набрать символ "B" и после появления символа "$" набрать имя накопителя с системной дискетой.
       Для "Электроники-85" еще проще — нужно вставить дискету в любой накопитель, закрыть карман рычажком и включить питание. При этом загрузка будет выполняться в следующей последовательности:
       — с устройства DZ0:, если в нем есть системная дискета, ИНАЧЕ
       — с устройства DZ1:, если в нем есть системная дискета, ИНАЧЕ
       — с устройства DW0: ("Винчестер"), если на нем установлена операционная система.
       Если аппаратный загрузчик не найдет нигде операционную систему, то он нарисует на экране изображение дискеты.
       В случае ошибок при загрузке системы, вместо текстовых сообщений, на экране появляется изображение системного блока и два числа. Первое зависит от версии операционной системы (для версии 5.1В оно равно 51124), второе является кодом текстового сообщения. Ниже приведены соответствия между кодом и сообщением.
       — 7 — "NO KT11"
       — 11 — "SWAP.SYS NOT FOUND"
       — 3 — "HANDLER FILE NOT FOUND2
       — 10 — "SWAP FILE TOO SMALL"
       — 6 — "MONITOR FILE NOT FOUND"
       — 2 — "CONFLICTING SYSGEN OPTIONS"

       Но для того чтобы начать работу, нам необходимо познакомиться с нашими руками и глазами — ведь именно через них мы будем отдавать команды системе и получать от нее информацию. У терминала VDT-52130 практически нет средств управления (в нашем случае) — нужно только нажать клавишу "LINE" или "ON LINE", чтобы загорелся индикатор "ON LINE" и терминал оказался подключенным к ЭВМ.
       Для терминала 15ИЭ-00-013 есть целая управляющая строка. Для управления режимами дисплея курсор необходимо переместить в управляющую строку нажатием клавиши <СДВ>. Движение курсора по этой строке осуществляется клавишами "<==" и "==>". Каждую цифру, под которой может быть установлен курсор, можно изменить нажатием клавиши "!" ("стрелка вниз с точкой" на дополнительном поле клавиатуры — не путать с восклицательным знаком). После установки нужных режимов клавишу <СДВ> необходимо отжать. Мы пока не будем обсуждать все режимы дисплея. Покажем только, какая управляющая строка должна быть на экране.

  9600 0010 1110 0000 09 15 00
  ----   ^  ^^^       \ часы /
    ^    !  !!!
    !    !  !!+----------------------- система команд N2
    !    !  !!
    !    !  !+------------------------ отсутствие звукового сигнала
    !    !  !                                   при нажатии клавиши
    !    !  +------------------------- отсутствие звукового сигнала
    !    !                                     в 72 позиции курсора
    !    +---------------------------- код КОИ-7 Н0/1
    +------------------ Скорость обмена информацией терминала с ЭВМ

       Следует отметить, что часы на экране терминала только отображают текущее время работы терминала и не могут использоваться программами. Для удобства их можно установить также, как и режимы, управляющие работой терминала.
       В рабочем режиме должны быть нажаты клавиши "ЛИН", "РЕД", "ДУП", остальные фиксируемые клавиши должны быть отжаты.
       Пока мы с вами разговаривали, Алеша уже включил ДВК и все устройства, к нему подключенные, вставил дискету, на которую ему записали систему, в левый дисковод и набрал на клавиатуре.

  +---------------
  !  @173000G<ВК>
  !  -
  !

Примечание. Для того чтобы отличать то, что набирали мы, и то, что нам выдавала на экране система, в тех случаях, когда это необходимо, сообщения системы будут подчеркнуты, а экран будет условно изображаться в виде угла. В оригинале все сообщения системы начиная с версии V4.0 выводятся маленькими латинскими буквами, которые в кодировке КОИ-7_Н0/1 или КОИ-7Н2, принятой в отечественных терминалах, отображаются большими русскими. Кроме того, в первый раз при описании команды и в тех случаях, когда это может быть неясно, мы будем явно указывать, что ввод команды должен завершаться нажатием клавиши <ВК>, обозначая ее в угловых скобках. Курсор в таких случаях будем обозначать "^". Конец примечания.

       В накопителе что-то защелкало, и на экране появилось первое сообщение.

  +---------------
  !      RT11SJ  (S) V05.00
  !      ------------------
  !  ?MON-F-File not found SY:STARTS.COM
  !  -----------------------------------
  !  .^
  !  -
  !

       Мы не знаем, что система не поняла и что это за загадочный файл, который она не нашла. Так как машинное время дорого, то начинаем работать. Первое, что мы должны исследовать, — это внешние запоминающие устройства.

 

3.1. Дома, дома, дома ...
или
Внешние запоминающие устройства

       Внешняя память необходима, когда не хватает оперативной памяти процессора или необходимо долговременное хранение информации. Много есть способов хранения информации. Это и отверстия, пробитые в определенной комбинации в бумажной ленте или картонной карте, и тем или иным образом намагниченные частички железа в магнитных лентах или дисках. В любом из перечисленных случаев имеется носитель информации и устройство для ее чтения или записи.
       Перенесясь в мир наших обычных ощущений, в качестве носителя информации можно представить кинопленку. Каждый ее отрезок, идущий на экране около полутора часов, называют серией, дают ей номер и название. Или, например, книги. Произведение, которое не умещается в обычный (удобный для пользования) размер книги, делится на несколько томов, каждый из которых имеет свое название или номер или то и другое одновременно. Отсюда важный признак каждого носителя — идентификатор тома.

Примечание. Идентификатор — от английского "Identification" — отождествление, опознание, установление личности. В нашем случае это признак, по которому можно установить, какую информацию содержит том. Конец примечания.

       Подписывая книги, наклеивая экслибрис на обложку книги, мы определяем еще одну важную характеристику тома — имя владельца.
       И самая главная характеристика носителя информации, как и у книги, — это оглавление, или каталог, тома. Как и в оглавлении книги, так и в каталоге тома указаны названия глав (имена и типы файлов) и страницы, где они находятся (номера блоков).

Примечание. Мы говорили о том, что минимально адресуемый элемент данных в системе — блок. Для того чтобы найти нужный блок на устройстве, мы их пронумеруем. Конец примечания.

       И наконец, информацию с носителя мы можем прочитать с помощью особых устройств. Для того чтобы посмотреть фильм, мы вставляем пленку в кинопроектор. Гибкий магнитный диск (дискету) мы должны вставить в привод накопителя на гибких магнитных дисках, магнитную ленту мы должны поставить на магнитофон. Каждое устройство, на котором можно прочитать носитель определенного типа, имеет свое название и, соответственно, свое имя в системе, состоящее из двух букв. Если в системе есть несколько устройств одного типа, то каждому устройству присваивают номер от 0 до 7. По умолчанию используется устройство с нулевым номером.
       Итак, в системе существуют устройства для работы с носителями информации различных типов. Каждое устройство имеет свое физическое имя и номер в системе.

 

3.2. Домовая книга,
или
Каталог устройства файловой структуры

       На экране в начале строки стоит точка. Как мы уже знаем, это признак того, что KMON находится в памяти и готов к приему команд.
       — Ну, Алеша,— спрашиваю я его,— ты загрузил операционную систему, а что ты хочешь узнать в первую очередь?
       — Наверное, посмотреть, что у меня есть на дискете,— отвечает Алеша,— то есть нужно прочитать каталог устройства.
       — Тогда действуй.
       Алеша посмотрел в русско-английский словарь и узнал, что каталог по-английски — DIRECTORY, и, помня, что язык клавиатурного монитора очень близок к английскому, попробуем набрать это слово в качестве команды. Поразмыслив, мы добавляем через пробел (знак разделителя) имя устройства, каталог которого мы хотим прочитать (ведь система не может знать все наши желания). Итак:

  +---------------
  !  .DIRECTORY DX1:<ВК>
  !  -
  !

       Алеша нажал клавишу <ВК>, в накопителе что-то зашевелилось и мы получили в ответ на экране следующую надпись.

  +---------------
  !  ?DIR-F-Error reading directory
  !  ------------------------------
  !  .^
  !  -
  !

       Посмотрев в словарь, мы узнаем, что эта фраза означает "ошибка чтения каталога". Это неприятно, но один положительный результат все-таки есть. Мы узнали, что в нашем распоряжении есть программа DIR, ведь именно она выдала сообщение об ошибке.
       Мы не смогли прочитать каталог носителя, установленного на устройстве DX1:. А почему? Например, плохая дискета или она вообще не вставлена в дисковод. Дискета у нас одна, с нее загружалась система — значит она хорошая. А вот правый дисковод, который называется DX1:, действительно пустой. Системная дискета вставлена в левый дисковод, который именуется DX0:.
       — Тогда попробуем прочитать каталог устройства DX0:,— исправляет свою ошибку Алеша.

  +---------------
  !  .DIRECTORY DX0:<ВК>
  !  -

!

       И это удачно, потому что на экране появилась следующая таблица.

   SWAP  .SYS    26P 13-Jan-84        RT11SJ.SYS    73P 10-Mar-84
   TT    .SYS     2P 10-Mar-84        DX    .SYS     3P 10-Mar-84
   SL    .SYS    13P 10-Mar-84        LP    .SYS     2P 10-Mar-84
   MX    .SYS    10P 10-Mar-84        NL    .SYS     2P 10-Mar-84
   RK    .SYS     3P 10-Mar-84        MT    .SYS     9P 10-Mar-84
   DP    .SYS     3P 10-Mar-84        LD    .SYS     8P 10-Mar-84
   PIP   .SAV    29  06-Feb-84        DUP   .SAV    45  06-Feb-84
   DIR   .SAV    19  06-Feb-84        DUMP  .SAV     9  06-Feb-84
    16 Files,   256 Blocks
    230 Free blocks

       Это очень здорово. Мы увидели знакомые имена файлов. Но сразу возникают некоторые вопросы: во-первых, около каждого файла (точнее, напротив его спецификации) стоит какая-то дата. Что она означает? По здравому смыслу это может быть либо дата создания файла, либо дата его копирования. Но так как файлы нам копировали сегодня, а дата указывает на 1984 год, то единственное разумное объяснение, что это дата создания файла.

Примечание. По некоторым (техническим) причинам в каталоге устройств с последовательным доступом, например накопителей на магнитной ленте, указывается дата копирования файла. Конец примечания.

       Второй вопрос, который возникает, — можно ли найти соответствие между списком файлов, который мы получили, и порядком расположения файлов на устройстве. А именно: как читать этот каталог? По строчкам слева направо или по столбцам, сначала один потом другой. Может быть, те цифры, которые стоят рядом с именами файлов, нам помогут. Начнем анализ. Указанные в конце каталога итоговые цифры говорят нам, что наши 16 файлов занимают на устройстве 256 блоков. Если мы просуммируем цифры, стоящие рядом с именами файлов, то получим также 256 блоков. Это означает, что данные цифры указывают на размер файла в блоках. Отсюда можно сделать вывод, что данная форма справочника говорит только о наличии файлов на устройстве, но не об их расположении. А как же быть?
       — А наверное, у нас не полная форма каталога,— догадывается Алеша,— раз нет таких важных сведений, как расположение файлов на устройстве. Помня, что KMON любит разговаривать по-английски и система позволяет делать нам некоторые ошибки, я попробую применить ключ /FULL (полный).

  +---------------
  !  .DIRECTORY/FULL DX0:<ВК>
  !  -

!

Полученный результат:

   SWAP  .SYS    26P 13-Jan-84        RT11SJ.SYS    73P 10-Mar-84
   TT    .SYS     2P 10-Mar-84        DX    .SYS     3P 10-Mar-84
   SL    .SYS    13P 10-Mar-84        LP    .SYS     2P 10-Mar-84
   MX    .SYS    10P 10-Mar-84        NL    .SYS     2P 10-Mar-84
   RK    .SYS     3P 10-Mar-84        MT    .SYS     9P 10-Mar-84
   DP    .SYS     3P 10-Mar-84        LD    .SYS     8P 10-Mar-84
   PIP   .SAV    29  06-Feb-84        DUP   .SAV    45  06-Feb-84
   DIR   .SAV    19  06-Feb-84        DUMP  .SAV     9  06-Feb-84
   < UNUSED >   230
    16 Files,   256 Blocks
    230 Free blocks

       Информации добавилось немного. Используя как главную документацию англо-русский словарь, мы быстро определяем, что <UNUSED> означает неиспользуемый, т.е. не занятые пользователем для файлов зоны на устройстве. Более того, итоговые цифры, которые сопровождают распечатку каталога, всякий раз показывают, что из 486 имеющихся у нас блоков — 230 свободны.
       — Но мы не получили главное, что хотели,— говорит Алеша,— порядок расположения файлов на устройстве.
       Будем рассуждать. Что означает — знать порядок расположения файлов на устройстве? Какая информация в дополнение к существующей позволила бы нам точно сказать, в каком порядке расположены файлы на устройстве? По всей видимости, это должна быть какая-нибудь монотонно меняющаяся величина, либо монотонно возрастающая, либо монотонно убывающая. Это могут быть, например, порядковые номера файлов.

Примечание. В устройствах с последовательным доступом по техническим причинам используются именно последовательные номера файлов, которые называются позицией. Конец примечания.

       Или это могут быть номера блоков на устройстве, с которых начинаются файлы. Вот и попробуем в качестве ключа использовать слово "BLOCKS".

  +---------------
  !  .DIRECTORY/BLOCKS DX0:<ВК>
  !  -
  !

       Мы достигли, чего хотели.

   SWAP  .SYS   26P 13-Jan-84   8     RT11SJ.SYS   73P 10-Mar-84  34
   TT    .SYS    2P 10-Mar-84 107     DX    .SYS    3P 10-Mar-84 109
   SL    .SYS   13P 10-Mar-84 112     LP    .SYS    2P 10-Mar-84 125
   MX    .SYS   10P 10-Mar-84 127     NL    .SYS    2P 10-Mar-84 137
   RK    .SYS    3P 10-Mar-84 139     MT    .SYS    9P 10-Mar-84 142
   DP    .SYS    3P 10-Mar-84 151     LD    .SYS    8P 10-Mar-84 154
   PIP   .SAV   29  06-Feb-84 162     DUP   .SAV   45  06-Feb-84 191
   DIR   .SAV   19  06-Feb-84 236     DUMP  .SAV    9  06-Feb-84 255
    16 Files,   256 Blocks
    230 Free blocks

       В конце каждой записи о файле стоит номер начального блока файла. Несложными расчетами мы можем убедиться в этом.
       Однако мы говорили о таких важных характеристиках, как идентификатор тома и имя владельца. Поискав в словаре и найдя слово "VOLUME" — том, попытаемся использовать его в качестве ключа.

  +---------------
  !  .DIRECTORY/VOLUME DX0:<ВК>
  !  -
  !

       И опять мы оказались правы и можем посмотреть на экране следующую таблицу.

   Volume ID:  RT11SJ V5.00
   Owner    :  Ашарина И.В.
  SWAP  .SYS    26P 13-Jan-84          RT11SJ.SYS    73P 10-Mar-84
  TT    .SYS     2P 10-Mar-84          DX    .SYS     3P 10-Mar-84
  SL    .SYS    13P 10-Mar-84          LP    .SYS     2P 10-Mar-84
  MX    .SYS    10P 10-Mar-84          NL    .SYS     2P 10-Mar-84
  RK    .SYS     3P 10-Mar-84          MT    .SYS     9P 10-Mar-84
  DP    .SYS     3P 10-Mar-84          LD    .SYS     8P 10-Mar-84
  PIP   .SAV    29  06-Feb-84          DUP   .SAV    45  06-Feb-84
  DIR   .SAV    19  06-Feb-84          DUMP  .SAV     9  06-Feb-84
   16 Files,   256 Blocks
   230 Free blocks

       Мы убедились в том, что на данной дискете записана операционная система RT-11 V5.00 с однозадачным монитором SJ и принадлежит дискета Ашариной.
       Неугомонный Алеша не хочет ждать, пока на экран будет выведен полный каталог.
       — Мне ведь часто нужно посмотреть только идентификатор тома,— говорит он,— слово ТОЛЬКО по-английски будет ONLY, и я попробую ввести это слово в качестве параметра:

  +---------------
  !  .DIRECTORY/VOLUME:ONLY DX0:<ВК>
  !  -
  !

       — А меня она любит,— засмеялся Алеша, увидев на экране только идентификатор тома.

    Volume ID:  RT11SJ V5.00
    Owner    :  Ашарина И.В.

       Теперь вернемся назад, к простому. Мы смогли получить полный каталог. А что представляет собой минимальная информация о файлах на устройстве? В противоположность полному каталогу то, что мы хотим получить, можно назвать кратким каталогом. Вот и попробуем это слово — BRIEF (краткий) в качестве ключа команды.

  +---------------
  !  .DIRECTORY/BRIEF DX0:<ВК>
  !  -
  !

и получили:

   SWAP  .SYS   RT11SJ.SYS   TT    .SYS   DX    .SYS   SL    .SYS
   LP    .SYS   MX    .SYS   NL    .SYS   RK    .SYS   MT    .SYS
   DP    .SYS   LD    .SYS   PIP   .SAV   DUP   .SAV   DIR   .SAV
   DUMP  .SAV
    16 Files,   256 Blocks
    230 Free blocks

       Мы получили очень интересный результат. Оказывается, минимальная информация — это только имена и типы файлов и итоговые цифры. Второе, что мы должны отметить, — это то, что список расположился в пять колонок (или столбцов).

Примечание. Точно такой же результат можно получить, если использовать в качестве ключа слово FAST — скорый, быстрый. Конец примечания.

       Полученный результат наводит на мысль: мы смогли получить распечатку каталога в две и пять колонок. А можем ли мы получить распечатку каталога в любое число колонок? И если можем, то как и во сколько? Скорее всего, нужно использовать ключ, обозначающий колонки, и в качестве параметра указать необходимое число колонок. И опять нам поможет словарь.

  +---------------
  !  .DIRECTORY/BRIEF/COLUMNS:3 DX0:<ВК>
  !  -
  !

то, что мы получили

   SWAP  .SYS   RT11SJ.SYS   TT    .SYS
   DX    .SYS   SL    .SYS   LP    .SYS
   MX    .SYS   NL    .SYS   RK    .SYS
   MT    .SYS   DP    .SYS   LD    .SYS
   PIP   .SAV   DUP   .SAV   DIR   .SAV
   DUMP  .SAV
    16 Files,  256 Blocks
    230 Free blocks

       подтвердило нашу догадку. Ну, а сколько же колонок можно получить? Давайте подумаем и посчитаем. Если нам вдруг удастся получить распечатку каталога на бумаге, то максимальная длина строки будет примерно 140 символов (стандарт — 132 символа). В краткой форме имя и тип файла занимают 10 символов, расстояние между колонками 3-4 символа. Итого на бумаге может уместиться не более 10-11 колонок. Что мы и попробуем получить:

  +---------------
  !  .DIRECTORY/COLUMNS:11. DX0:<ВК>
  !  -
  !

и нам программа DIR ответила:

  +---------------
  !  ?DIR-F-Invalid parametr
  !  -----------------------
  !  .^
  !  -
  !

       Мы должны быть благодарны системе за подсказку. В качестве параметра используется количество колонок и раз он неправильный, то количество колонок задано больше допустимого. Проведя несколько таких проб, мы узнаем, что допустимо от одной до девяти колонок.
       — Вот здорово,— говорит Алеша,— теперь, когда мне надо, я буду делать распечатку в одну колонку, а если бумага широкая, то можно и в четыре. Как мне будет удобней для работы, так я и буду делать.
       Однако еще одним полем распечатки каталога мы не умеем управлять. При распечатке полного каталога (с ключем /FULL) мы видели запись <UNUSED>. Как мы тогда определили — это неиспользуемая область. Было бы очень интересно распечатывать каталог только неиспользуемых областей. Идя по проторенной дорожке, используем в качестве ключа это же слово:

  +---------------
  !  .DIRECTORY/UNUSED DX0:<ВК>
  !  -
  !

       Опять она ругается,— сказал Алеша, увидев появившуюся на экране строчку:

  +---------------
  !  ?KMON-F-Invalid option
  !  ----------------------
  !  .^
  !  -
  !

Примечание. В версии V05.10 вместо этого может появиться сообщение:

       ?KMON-F-Invalid option for program

что означает: "неверный ключ для программы". Конец примечания.

       И опять займемся анализом. Используя слово "UNUSED" мы следовали здравому смыслу. И раз нас постигла неудача, надо искать синоним к этому слову. Ведь синонимы бывают не только на русском языке.
       Итак, слово UNUSED буквально означает НЕИСПОЛЬЗУЕМЫЙ, т.е. свободный от полезной информации. Пустой эту область назвать, наверно, нельзя. Ведь какая-то информация в ней есть. Поэтому попробуем в качестве ключа слово FREE (свободный)

  +---------------
  !  .DIRECTORY/FREE DX0:<ВК>
  !  -
  !

и на этот раз получили:

   < UNUSED >  230
    16 Files,  256 Blocks
    230 Free blocks

       Мы научились распечатывать полный и краткий каталог, показывая свободные зоны и не показывая их. А теперь зададимся вопросом — всегда ли нам нужна десятичная система счисления. Многие программы используют восьмеричную систему счисления. А раз так, можно ли выводить информацию о размерах файлов в восьмеричной системе счисления? Наверное, для этого мы должны использовать ключ, включающий в свое имя ВОСЕМЬ в той или иной форме.
       Алеша быстро набрал слово EIGHT (ВОСЕМЬ).

  +---------------
  !  .DIRECTORY/EIGHT DX0:<ВК>
  !  -
  !

и в ответ получили:

  +---------------
  !  ?DIR-F-Invalid option
  !  ---------------------
  !  .^
  !  -
  !

то есть неправильный ключ.

       Попытка не удалась, но отчаиваться нельзя. Ищем аналогии в окружающем нас мире. Фигуру с тремя углами называют треугольник, тело с восемью вершинами называют ОКТАЭДР. Не в этом ли решение нашей загадки. Попробуем удостовериться в этом

  +---------------
  !  .DIRECTORY/OCTAL DX0:<ВК>
  !  -
  !

и так как мы получили результат

    Octal
  SWAP  .SYS   32P 13-Jan-84       RT11SJ.SYS  111P 10-Mar-84
  TT    .SYS    2P 10-Mar-84       DX    .SYS    3P 10-Mar-84
  SL    .SYS   15P 10-Mar-84       LP    .SYS    2P 10-Mar-84
  MX    .SYS   12P 10-Mar-84       NL    .SYS    2P 10-Mar-84
  RK    .SYS    3P 10-Mar-84       MT    .SYS   11P 10-Mar-84
  DP    .SYS    3P 10-Mar-84       LD    .SYS   10P 10-Mar-84
  PIP   .SAV   35  06-Feb-84       DUP   .SAV   55  06-Feb-84
  DIR   .SAV   19  06-Feb-84       DUMP  .SAV   11  06-Feb-84
   16 Files,  400 Blocks
   346 Free blocks

       то уже это показывает, что система нас поняла. Однако она для нас же сделала предупреждение, напечатав вверху слово "Octal". Несложными расчетами мы можем убедиться, что все числа в данной распечатке даны в восьмеричной системе счисления. Только число файлов по-прежнему осталось в десятичной. Это объясняется тем, что программа DIR показывает не общее число файлов на устройстве или на носителе, а только то, которое получилось в распечатке каталога. А это число нигде в других программах использовано быть не может.

 

3.2.1. А что можно сделать еще?

       — А что, мы так и будем смотреть каталог на экране?— сказал недовольно Алеша.— Ведь это неудобно. А если его вывести на бумагу? Должен же я дома показать, чем занимался целый день. Да и для памяти надо что-то оставить, вдруг пригодится.
       Недовольство Алеши можно понять. Да и система была бы плохая, если бы не позволяла фиксировать каким-нибудь образом такую важную информацию. Скорее всего, нужно найти соответствующий ключ. Как найти его, мы уже знаем: печатающее устройство по-английски называется PRINTER или LINEPRINTER. Поэтому используем это слово в качестве ключа.

  +---------------
  !  .DIRECTORY/PRINTER DX0:<ВК>
  !  -
  !

       Выведенный на бумагу каталог, знакомый нам по предыдущей работе, убедил нас в правильности наших действий.

Примечание. По аналогии вывод на терминал, установленный по умолчанию, указывается ключем /TERMINAL. Конец примечания.

       Ну, а более сложный вопрос, можем ли мы вывести каталог в текстовый файл на любое устройство для того, чтобы его потом можно было отредактировать и вставить в другой текст, например в эту книгу. Наверное, необходимо найти слово, означающее вывод куда-либо и, наверное, в качестве параметра указать спецификацию файла для вывода, как мы об этом говорили во второй главе.
       — Попробуем в качестве ключа слово OUTPUT (вывод наружу),— уверенно говорит Алеша, набирая командную строку:

  +---------------
  !  .DIRECTORY/OUTPUT:DX0:DX0FIL DX0:<ВК>
  !  -
  !

       Тип файла Алеша не указал, понадеявшись на саму программу DIR, точнее на соглашения об умолчаниях в системе. Система немного призадумалась, пожевала нашу команду и скушала. На экране появилась точка. С одной стороны, это указывает на то, что система нас поняла. Но с другой — нам бы хотелось в этом убедиться. Для этого посмотрим каталог на устройстве DX0: обычным образом, как мы это уже умеем.

  +---------------
  !  .DIRECTORY DX0:<ВК>
  !  -
  !

И увидев в каталоге новый файл, с указанным нами именем

   SWAP  .SYS    26P 13-Jan-84       RT11SJ.SYS    73P 10-Mar-84
   TT    .SYS     2P 10-Mar-84       DX    .SYS     3P 10-Mar-84
   SL    .SYS    13P 10-Mar-84       LP    .SYS     2P 10-Mar-84
   MX    .SYS    10P 10-Mar-84       NL    .SYS     2P 10-Mar-84
   RK    .SYS     3P 10-Mar-84       MT    .SYS     9P 10-Mar-84
   DP    .SYS     3P 10-Mar-84       LD    .SYS     8P 10-Mar-84
   PIP   .SAV    29  06-Feb-84       DUP   .SAV    45  06-Feb-84
   DIR   .SAV    19  06-Feb-84       DUMP  .SAV     9  06-Feb-84
   DX0FIL.DIR     2
    17 Files,  258 Blocks
    228 Free blocks

успокаиваемся, потому что больше мы пока ничего сделать не можем.

       — А почему у этого файла нет даты?— спрашивает Алеша,— Ведь все остальные файлы имеют, как мы сказали, дату создания. А мы создаем файл без даты.
       Скорее всего, даты нет. Она неизвестна системе, или, как говорят, дата не установлена.

 

3.2.1.1. Время бежит, время стоит

       Если мы не знаем, кто устанавливает дату, то хотелось хотя бы посмотреть, какая дата установлена. А как? Чтобы не быть многословными попробуем просто сказать системе:

  +---------------
  !  .DATE<ВК>
  !  -
  !

и система ответила:

  +---------------
  !  ?KMON-W-No date
  !  ---------------
  !  .^
  !  -
  !

       — Нет даты,— быстро перевел Алеша.
       И действительно, дата в системе не установлена (ее никто и не устанавливал). Но если сказать системе текущую дату следующим образом?

  +---------------
  !  .DATE 29-JUL-86<ВК>
  !  -
  !

       Система скушала нашу команду и поставила точку. И, как ни странно, ничего не сказала.
       — А если теперь спросить дату,— Алеша набрал команду:

  +---------------
  !  .DATE<ВК>
  !  -
  !  29-Jul-86
  !  ---------
  !  .^
  !  -
  !

и увидим, что все в порядке.
       — О, наверное, так и время можно установить,— радостно воскликнул Алеша и быстро набрал:

  +---------------
  !  .TIME 10:45:00<ВК>
  !  -
  !  .TIME<ВК>
  !  -
  !  10:45:03
  !  --------
  !  .^
  !  -
  !

       И все оказалось так просто. Мы чуть-чуть поуправляли системой. Однако при повторной загрузке системы дату и время необходимо устанавливать снова. Правда, в "Электронике-85" если для часов установлен аккумулятор или батарейка, то система сама будет спрашивать время у процессора службы времени.

 

3.2.2. Продолжим работу с каталогами

       Теперь, когда мы знаем про дату и сами ее установили, нам захотелось посмотреть список файлов с какой-нибудь датой. Попробуем ввести команду

  +---------------
  !  .DIRECTORY/DATE DX0:<ВК>
  !  -
  !

и ничего не получилось. На экране только размер свободной зоны.

        29-Jul-86
 
      0 Files,    0 Blocks
     228 Free blocks

       Правда, теперь при выводе каталога будет распечатываться дата — это хорошо. А как же быть с нашей командой?
       — Так ведь у нас нет ни одного файла с текущей системной датой,— сказал Алеша.
       Тогда нужно создать файл с текущей системной датой. А как? Пока мы умеем делать это только одним способом:

  +---------------
  !  .DIRECTORY/OUTPUT:DX0:DXFILE.DIR DX0:<ВК>
  !  -
  !

       Посмотрев каталог обычным образом, мы можем убедиться, что появившийся файл имеет дату, которую мы недавно установили. Вот теперь мы можем попробовать выделить его из каталога.

  +---------------
  !  .DIRECTORY/DATE DX0:<ВК>
  !  -
  !

       То, что мы увидели

        29-Jul-86
 
       DXFILE.DIR     2  29-Jul-86
       1 Files,   2 Blocks
       226 Free blocks

показывает, что мы были правы.

Примечание. Такой же эффект можно получить, используя ключ /NEWFILES, т.е. новые файлы, или файлы, созданные сегодня, с сегодняшней датой. Конец примечания.

       Вот теперь можно раскладывать каталог по полочкам. А именно: мы хотим увидеть файлы с указанной датой создания и попробуем это сделать так:

  +---------------
  !  .DIRECTORY/DATE:06:FEB:84 DX0:<ВК>
  !  -
  !

       Мы должны вспомнить, что несколько параметров для одного ключа разделяются двоеточием. А так как описание даты состоит из разнородных данных — чисел и текста, то для облегчения анализа и единства языка день, месяц и год считаются различными параметрами. А система молча выполнила наше желание.

   29-Jul-86

  PIP   .SAV   29  06-Feb-84       DUP   .SAV   45  06-Feb-84
  DIR   .SAV   19  06-Feb-84       DUMP  .SAV    9  06-Feb-84
    4 Files,  102 Blocks
    226 Free blocks

       Тогда, вооружившись русско-английским словарем, посмотрим каталог файлов, созданных до указанной даты, и используем для этого ключ /BEFORE (до того, в отношении времени).

  +---------------
  !  .DIRECTORY/BEFORE:06:FEB:84 DX0:<ВК>
  !  -
  !

       Мы опять попали в точку:

    29-Jul-86
 
   SWAP  .SYS   26P 13-Jan-84
    1 Files,  26 Blocks
    226 Free blocks

       А теперь, естественно, как капризные дети, мы хотим посмотреть список файлов после указанной даты. Найдя в словаре слово SINCE (после того, в отношении времени), используем его в качестве ключа

  +---------------
  !  .DIRECTORY/SINCE:10:MAR:84 DX0:<ВК>
  !  -
  !

и получим:

    29-Jul-86
 
  RT11SJ.SYS   73P 10-Mar-84       TT    .SYS    2P 10-Mar-84
  DX    .SYS    3P 10-Mar-84       SL    .SYS   13P 10-Mar-84
  LP    .SYS    2P 10-Mar-84       MX    .SYS   10P 10-Mar-84
  NL    .SYS    2P 10-Mar-84       RK    .SYS    3P 10-Mar-84
  MT    .SYS    9P 10-Mar-84       DP    .SYS    3P 10-Mar-84
  LD    .SYS    8P 10-Mar-84       DXFILE.DIR    2  29-Jul-86
   12 Files,  132 Blocks
   226 Free blocks

       Мы разложили каталог нашей единственной дискеты по полочкам, т.е. по датам. А как можно по-другому выбрать информацию о файлах из каталога? Например, мы хотим посмотреть каталог начиная с некоторого файла. Самое простое — записать команду следующим образом

  +---------------
  !  .DIRECTORY/BEGIN DX0:PIP.SAV<ВК>
  !  -
  !

       т.е. ключ /BEGIN — начало, и в качестве спецификации устройства, каталог которого мы хотим посмотреть, дать полную спецификацию файла, с которого начинать распечатку каталога.
       И вот результат:

    29-Jul-86
 
  PIP   .SAV   29  06-Feb-84       DUP   .SAV   45  06-Feb-84
  DIR   .SAV   19  06-Feb-84       DUMP  .SAV    9  06-Feb-84
  DX0FIL.DIR    2                  DXFILE.DIR    2  29-Jul-86
    6 Files,  106 Blocks
    226 Free blocks

       — А если я не хочу смотреть на весь каталог целиком,— говорит Алеша,— мы ведь в качестве спецификации указывали только имя устройства, а его объем может быть очень большим. Что будет, если мы укажем полную спецификацию файла?

  +---------------
  !  .DIRECTORY DX0:PIP.SAV<ВК>
  !  -
  !

       Ругаться система не стала, а выдала на экран следующее:

    29-Jul-86
 
  PIP   .SAV   29  06-Feb-84
   1 Files,  29 Blocks
   226 Free blocks

       Оказывается, таким образом мы без всякого поиска можем посмотреть, есть ли указанный файл на устройстве.
       Но тогда мы можем применить групповую спецификацию файла. А именно:

  +---------------
  !  .DIRECTORY DX0:.SYS<ВК>
  !  -
  !

и система показала нам только файлы с типом .SYS:

    29-Jul-86

  SWAP  .SYS   26P 13-Jan-84       RT11SJ.SYS   73P 10-Mar-84
  TT    .SYS    2P 10-Mar-84       DX    .SYS    3P 10-Mar-84
  SL    .SYS   13P 10-Mar-84       LP    .SYS    2P 10-Mar-84
  MX    .SYS   10P 10-Mar-84       NL    .SYS    2P 10-Mar-84
  RK    .SYS    3P 10-Mar-84       MT    .SYS    9P 10-Mar-84
  DP    .SYS    3P 10-Mar-84       LD    .SYS    8P 10-Mar-84
    12 Files,  154 Blocks
    226 Free blocks

или, например

  +---------------
  !  .DIRECTORY DX0:%%<ВК>
  !  -
  !

т.е. показать только файлы, у которых имя состоит из двух букв.

    29-Jul-86
 
  TT    .SYS    2P 10-Mar-84       DX    .SYS    3P 10-Mar-84
  SL    .SYS   13P 10-Mar-84       LP    .SYS    2P 10-Mar-84
  MX    .SYS   10P 10-Mar-84       NL    .SYS    2P 10-Mar-84
  RK    .SYS    3P 10-Mar-84       MT    .SYS    9P 10-Mar-84
  DP    .SYS    3P 10-Mar-84       LD    .SYS    8P 10-Mar-84
    10 Files,  60 Blocks
    226 Free blocks

       Но если нам легче сказать, какие файлы не нужно включать в распечатку каталога, чем нужные спецификации файлов собирать в группы, то будем искать в словаре слово для ключа, позволяющего исключить указанные файлы из распечатки каталога. По-русски мы уже это слово сказали. Поэтому скажем его более точно по-русски, а на клавиатуре наберем по-английски — "Показать на экране каталог, исключая", — а далее групповую спецификацию файлов.

  +---------------
  !  .DIRECTORY/EXCLUDE DX0:.SAV<ВК>
  !  -
  !

       Мы увидим на экране:

    29-Jul-86

SWAP .SYS 26P 13-Jan-84 RT11SJ.SYS 73P 10-Mar-84 TT .SYS 2P 10-Mar-84 DX .SYS 3P 10-Mar-84 SL .SYS 13P 10-Mar-84 LP .SYS 2P 10-Mar-84 MX .SYS 10P 10-Mar-84 NL .SYS 2P 10-Mar-84 RK .SYS 3P 10-Mar-84 MT .SYS 9P 10-Mar-84 DP .SYS 3P 10-Mar-84 LD .SYS 8P 10-Mar-84 DX0FIL.DIR 2 DXFILE.DIR 2 29-Jul-86 14 Files, 158 Blocks 226 Free blocks

       Остался необясненный только символ "P" после размера файла. Скорее всего, это какой-нибудь признак состояния файла, причем слово в английском языке, обозначающее это состояние, начинается с буквы "P". Какие признаки могут быть у файла? Постоянный? Временный? Неиспользуемый? Но мы можем работать только с постоянными файлами, и это состояние не нужно специально выделять для какой-то группы файлов. Из всех слов, которые мы смогли найти в англо- русском словаре — а это около полутора десятков, — с достаточной степенью вероятности можно предположить, что это слово PROTECT — защитное приспособление. Т.е. имеется, видимо, какая-то возможность защищать файл от чего-то. Для проверки попробуем использовать это слово в качестве ключа и посмотрим, что из этого выйдет. После набора строки:

  +---------------
  !  .DIRECTORY/PROTECT DX0:<ВК>
  !  -
  !

мы увидим на экране следующий список файлов:

    29-Jul-86
 
  SWAP  .SYS   26P 13-Jan-84       RT11SJ.SYS   73P 10-Mar-84
  TT    .SYS    2P 10-Mar-84       DX    .SYS    3P 10-Mar-84
  SL    .SYS   13P 10-Mar-84       LP    .SYS    2P 10-Mar-84
  MX    .SYS   10P 10-Mar-84       NL    .SYS    2P 10-Mar-84
  RK    .SYS    3P 10-Mar-84       MT    .SYS    9P 10-Mar-84
  DP    .SYS    3P 10-Mar-84       LD    .SYS    8P 10-Mar-84
    12 Files,  154 Blocks
    226 Free blocks

       В нем указаны только те файлы, которые имеют признак "P". Мы убедились, что слово угадали правильно, но что означает это состояние, пока узнать не можем.
       — А если попробовать обратную операцию,— говорит Алеша,— прочитать каталог незащищенных файлов.
       Здесь подсказку надо искать в английском языке. Например, в виде приставки, обозначающей обратное или противоположное действие. А именно — PROTECT ==> NOPROTECT, и попробуем это слово в качестве ключа:

  +---------------
  !  .DIRECTORY/NOPROTECT DX0:<ВК>
  !  -
  !

       Полученный каталог

    29-Jul-86

  PIP   .SAV   29  06-Feb-84       DUP   .SAV   45  06-Feb-84
  DIR   .SAV   19  06-Feb-84       DUMP  .SAV    9  06-Feb-84
  DX0FIL.DIR    2                  DXFILE.DIR    2  29-Jul-86
    6 Files,  104 Blocks
    226 Free blocks

показывает, что мы часто стали угадывать нужные нам слова.

 

3.2.3. По порядку номеров рассчитайсь,
или
Сортировка каталога

       — Ну, больше с каталогами, наверное, ничего не сделаешь,— устало сказал Алеша,— по крайней мере такое разнообразие распечаток каталогов начинает утомлять.
       — Да, конечно, ни одна из однопользовательских систем не предоставляет так много возможностей пользователю. Но ведь это еще не все.
       — Как не все? — удивился Алеша.
       — Ну, если ты устал, то давай поиграем в кубики.
       — В какие кубики?— Алеша недоуменно закрутил головой.— Ведь мы работаем в системе, да и нас, наверное, скоро попросят освободить ДВК.
       — Ну, а если представить себе, что вместо файлов у нас кубики. Большие и маленькие, разных цветов и, наверное, разного веса. Что мы с такими кубиками сможем сделать? Мы сможем их расставить на столе в некотором порядке, в соответствии с каким-нибудь признаком — размером, цветом и т.п. Этот процесс часто называют сортировкой. Итак, начнем сортировку?
       Не сочтем за особую привередливость желание, чтобы записи о файлах, в показываемом нам каталоге, были расположены в удобном для нас виде. Например, в алфавитном порядке. Но алфавит — это по-русски, а как будет по-английски? Вспомним, что алфавит — это русифицированное произношение первых греческих букв АЛЬФА и БЕТА (слово АЗБУКА имеет то же происхождение), и запишем его по-английски — ALPHABET. Тогда команда будет выглядеть следующим образом:

  +---------------
  !  .DIRECTORY/COLUMNS:1/ALPHABET DX0:<ВК>
  !  -
  !

посмотрев полученный каталог

              29-Jul-86

            DIR   .SAV    19  06-Feb-84
            DP    .SYS     3P 10-Mar-84
            DUMP  .SAV     9  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            DX    .SYS     3P 10-Mar-84
            DXFILE.DIR     2  29-Jul-86
            DX0FIL.DIR     2
            LD    .SYS     8P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            PIP   .SAV    29  06-Feb-84
            RK    .SYS     3P 10-Mar-84
            RT11SJ.SYS    73P 10-Mar-84
            SWAP  .SYS    26P 13-Jan-84
            SL    .SYS    13P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
             18 Files, 260 Blocks
             226 Free blocks

мы убедились, что файлы расположились в алфавитном порядке.

Примечание. Для удобства и наглядности процесса сортировки мы будем выводить распечатку каталога в одну колонку. При выводе распечатки в несколько колонок порядок расположения файлов (по сравнению с распечаткой без сорти ровки) иной. Каталог теперь читается по столбцам — сначала первый столбец сверху вниз, затем второй и т.д. Конец примечания.

       А если мы хотим рассортировать файлы по датам или по размерам или по типам — тогда как? Сомнительно, чтобы для каждого такого случая был свой ключ. Скорее всего, ключ будет один, но с различными параметрами, соответствующими тем признакам, по которым сортируется каталог. Название этого ключа мы упоминали уже несколько раз: сортировка — /SORT. Попробуем:

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT DX0:<ВК>
  !  -
  !

получив знакомую картинку:

              29-Jul-86

            SWAP  .SYS    26P 13-Jan-84
            RT11SJ.SYS    73P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            DP    .SYS     3P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            PIP   .SAV    29  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            DIR   .SAV    19  06-Feb-84
            DUMP  .SAV     9  06-Feb-84
            DX0FIL.DIR     2
            DXFILE.DIR     2  29-Jul-86
             18 Files, 260 Blocks
             226 Free blocks

       мы понимаем, что по умолчанию файлы сортируются по порядку их расположения на устройстве (а точнее, не сортируются никак). Но с другой стороны, этот ключ должен иметь параметр, а мы его опустили. Откуда система узнает по какому признаку сортировать файлы.

Примечание. Такие же результаты можно получить, используя ключ "/ORDER" с такими же параметрами. Конец примечания.

       Будем искать параметры для этого ключа. Начали мы разговор с даты, как слово ДАТА пишется по-английски мы знаем и, не задумываясь, вводим команду:

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:DATE DX0:<ВК>
  !  -
  !

и, получив:

              29-Jul-86

            DX0FIL.DIR     2
            SWAP  .SYS    26P 13-Jan-84
            DIR   .SAV    19  06-Feb-84
            DUMP  .SAV     9  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            PIP   .SAV    29  06-Feb-84
            DP    .SYS     3P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            RT11SJ.SYS    73P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
            DXFILE.DIR     2  29-Jul-86
             18 Files, 260 Blocks
             226 Free blocks

       убеждаемся в том, что параметр подобран правильно, и сразу отмечаем, что если дата не указана, то считается, что файл создан в доисторические времена, и запись о нем попадает в начало распечатки каталога.
       Следующий элемент спецификации файла, по которому можно сортировать каталог, — это имя файла. Наиболее подходящее английское слово для параметра ключа — NAME — даже переводить не надо.

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:NAME DX0:<ВК>
  !  -
  !

       В результате мы получили уже знакомую нам картинку:

              29-Jul-86

            DIR   .SAV    19  06-Feb-84
            DP    .SYS     3P 10-Mar-84
            DUMP  .SAV     9  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            DX    .SYS     3P 10-Mar-84
            DXFILE.DIR     2  29-Jul-86
            DX0FIL.DIR     2
            LD    .SYS     8P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            PIP   .SAV    29  06-Feb-84
            RK    .SYS     3P 10-Mar-84
            RT11SJ.SYS    73P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            SWAP  .SYS    26P 13-Jan-84
            TT    .SYS     2P 10-Mar-84
             18 Files, 260 Blocks
             226 Free blocks

       Но если мы хотим, чтобы типы файлов располагались в алфавитном порядке, то можно сделать и это. Естественно, что параметр ключа будет TYPE.

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:TYPE DX0:<ВК>
  !  -
  !

       Убедившись в этом

              29-Jul-86
 
            DXFILE.DIR     2  29-Jul-86
            DX0FIL.DIR     2
            DIR   .SAV    19  06-Feb-84
            DUMP  .SAV     9  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            PIP   .SAV    29  06-Feb-84
            DP    .SYS     3P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            RT11SJ.SYS    73P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            SWAP  .SYS    26P 13-Jan-84
            TT    .SYS     2P 10-Mar-84
             18 Files, 260 Blocks
             226 Free blocks

продолжаем играть дальше.
       Каждый файл занимает на устройстве какое-то место и имеет некоторый размер, выраженный в блоках. Свободные зоны (а часто нас интересуют именно они) рассматриваются системой также, как файлы, но пустые. Поэтому интересно расставить файлы в распечатке каталога в порядке увеличения их размеров. Скорее всего, английское слово SIZE — размер, объем — и будет необходимым параметром ключа

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:SIZE DX0:<ВК>
  !  -
  !

И здесь мы угадали:

              29-Jul-86
 
            DXFILE.DIR     2  29-Jul-86
            DX0FIL.DIR     2
            LP    .SYS     2P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
            DP    .SYS     3P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            DUMP  .SAV     9  06-Feb-84
            MT    .SYS     9P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            DIR   .SAV    19  06-Feb-84
            SWAP  .SYS    26P 13-Jan-84
            PIP   .SAV    29  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            RT11SJ.SYS    73P 10-Mar-84
             18 Files, 260 Blocks
             226 Free blocks

       Но кроме размера, файлы располагаются на устройстве в некотором порядке (это тот вопрос, над которым мы так долго бились в начале), и мы хотим указать системе, чтобы файлы в распечатке каталога располагались в том же порядке, что и на устройстве. Так как здесь мы не говорим о начальных номерах блоков, а только о позициях файлов, то и параметр назовем POSITION

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:POSITION DX0:<ВК>
  !  -
  !

и получили опять знакомую картинку.

              29-Jul-86
 
            SWAP  .SYS    26P 13-Jan-84
            RT11SJ.SYS    73P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            SL    .SYS    13P 10-Mar-84
            LP    .SYS     2P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            MT    .SYS     9P 10-Mar-84
            DP    .SYS     3P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            PIP   .SAV    29  06-Feb-84
            DUP   .SAV    45  06-Feb-84
            DIR   .SAV    19  06-Feb-84
            DUMP  .SAV     9  06-Feb-84
            DX0FIL.DIR     2
            DXFILE.DIR     2  29-Jul-86
             18 Files, 260 Blocks
             226 Free blocks

       Вот мы и перепробовали все возможности сортировки. Просто нет больше признаков, по которым можно сортировать каталог. А так ли это? Все, что мы делали, можно назвать прямой сортировкой. А если все, что мы делали с каталогом, сделать наоборот? Например, чтобы файлы в распечатке каталога располагались не в порядке увеличения размеров, а в порядке уменьшения. Английское слово REVERSE — поворот назад, обратно — наверняка нам подойдет, но использовать его нужно не как параметр, а как ключ, так как он влияет на любой параметр ключа /SORT.

  +---------------
  !  .DIRECTORY/COLUMNS:1/SORT:SIZE/REVERSE DX0:<ВК>
  !  -
  !

       Теперь мы быстро найдем самый большой файл.

              29-Jul-86

            RT11SJ.SYS    73P 10-Mar-84
            DUP   .SAV    45  06-Feb-84
            PIP   .SAV    29  06-Feb-84
            SWAP  .SYS    26P 13-Jan-84
            DIR   .SAV    19  06-Feb-84
            SL    .SYS    13P 10-Mar-84
            MX    .SYS    10P 10-Mar-84
            DUMP  .SAV     9  06-Feb-84
            MT    .SYS     9P 10-Mar-84
            LD    .SYS     8P 10-Mar-84
            DP    .SYS     3P 10-Mar-84
            DX    .SYS     3P 10-Mar-84
            RK    .SYS     3P 10-Mar-84
            DX0FIL.DIR     2
            DXFILE.DIR     2  29-Jul-86
            LP    .SYS     2P 10-Mar-84
            NL    .SYS     2P 10-Mar-84
            TT    .SYS     2P 10-Mar-84
             18 Files, 260 Blocks
             226 Free blocks

 

3.2.4. Как веревочке не виться...
или
Все ли мы попробовали

       Даже при самой богатой фантазии трудно придумать, что еще можно сделать с каталогом. Но это только потому, что мы еще не имеем опыта работы с системой. У нас только одна дискета и то наполовину пустая, да и работаем мы только первый день. Поэтому дальше приводятся дополнительные возможности программы DIR, о которых мы не могли догадаться сами.
       Во-первых, мы можем посмотреть суммарную структуру каталога. Правда, мы пока в ней не сможем разобраться, но, имея эту информацию, мы сможем в дальнейшем разобраться в некоторых особенностях файловой системы. Итак, ключ /SUMMARY.

  +---------------
  !  .DIRECTORY/SUMMARY DX0:<ВК>
  !  -
  !

       То, что мы увидели

             29-Jul-86
 
               18 Files in segment 1
               1 Available segments, 1 in use
 
             18 Files, 260 Blocks
             226 Free blocks

нам действительно непонятно. Оказывается, как переводит нам Алеша, в нашем распоряжении один сегмент, он используется и в нем 18 файлов. Знакомые итоговые цифры подтверждают количество файлов. Информации мало, но это пока у нас маленькая система. Намотаем себе это на ус, чтобы скоро об этом вспомнить.
       Мы не могли этого ожидать, но в некоторых случаях мы можем посмотреть каталог удаленных файлов. В некоторых, потому что не всегда удается увидеть достоверную информацию об удаленных файлах. Когда и что мы видим, как в этом разобраться, мы поймем после изучения файловой системы. А пока сделаем для памяти распечатку на бумаге каталога удаленных файлов, используя ключ /DELETED — удалить.

  +---------------
  !  .DIRECTORY/COLUMNS:1/OCTAL/PRINT/DELETED DX0:<ВК>
  !  -
  !

       То, что мы увидели, действительно выглядит странно:

              29-Jul-86
 
             BOOCK.DPR    342  03-Mar-86    414
              0 Files, 0 Blocks
              342 Free blocks

оказывается на дискете был еще какой-то файл.
       — Я эту распечатку отнесу домой,— говорит Алеша,— для памяти. И еще одну очень хитрую распечатку каталога надо вывести. Все может понадобиться,— и Алеша набрал следующую команду:

  +---------------
  !  .DIRECTORY/FULL/BLOCKS/OCTAL/COLUMNS:1/PRINT/VOLUMEID DX0:<ВК>
  !  -
  !

       распечатка получилась хорошая, и ее действительно нужно сохранить, так как по ней мы будем изучать файловую систему.

              29-Jul-86 Octal
 
             Volume ID: RT11SJ V5.00
             Owner    : Ашарина И.В.
            SWAP  .SYS    32P 13-Jan-84     10
            RT11SJ.SYS   111P 10-Mar-84     42
            TT    .SYS     2P 10-Mar-84    153
            DX    .SYS     3P 10-Mar-84    155
            SL    .SYS    15P 10-Mar-84    160
            LP    .SYS     2P 10-Mar-84    175
            MX    .SYS    12P 10-Mar-84    177
            NL    .SYS     2P 10-Mar-84    211
            RK    .SYS     3P 10-Mar-84    213
            MT    .SYS    11P 10-Mar-84    216
            DP    .SYS     3P 10-Mar-84    227
            LD    .SYS    10P 10-Mar-84    232
            PIP   .SAV    35  06-Feb-84    242
            DUP   .SAV    55  06-Feb-84    277
            DIR   .SAV    23  06-Feb-84    354
            DUMP  .SAV    11  06-Feb-84    377
            DX0FIL.DIR     2               410
            DXFILE.DIR     2  29-Jul-86    412
            < UNUSED >   342               414
             18 Files, 404 Blocks
             342 Free blocks

       В последствии, когда мы познакомимся с дисциплиной распределения памяти на носителе, мы узнаем, что часто система предоставляет для выходного файла только половину наибольшей области. А если ее не хватает для файла каталога, и нужно чуть больше? Для этого существует ключ /ALLOCATE — зарезервировать.
       Например:

  +---------------
  !  .DIRECTORY/OUTPUT:DX0:DFILE/ALLOCATE:6 DX0:<ВК>
  !  -
  !

       Для выходного файла будет зарезервировано 6 блоков, но при закрытии файла его размер будет определяться по действительному наличию информации.

 

3.2.5. Некоторые подробности
или
Ключи и сокращения для интерпретатора командной строки

       Вот и все, что мы можем сделать с помощью программы DIR. Именно программы, а не команды. К команде DIRECTORY мы еще вернемся, когда будем изучать другие программы. Именно в этом и состоит главная обязанность клавиатурного монитора — вызвать нужную программу для выполнения заданной команды и рассказать ей, что нужно сделать. Однако мы обещали рассказать, как можно выполнить работу клавиатурного монитора самим. Когда это может понадобиться? Например, когда на системном устройстве нет места, допустим, для программы DIR.
       В таком случае необходимо в первую очередь запустить программу DIR с того устройства, где она имеется. Для этого придумаем смешную команду RUN — бежать. Так пусть наша программа DIR побежит.

  +---------------
  !  .RUN DX0:DIR.SAV<ВК>
  !  -
  !  *^
  !  -
  !

       И в ответ мы увидели звездочку, а неугомонный Алеша сразу нажал клавишу <ВК>. Программа DIR подумала, что мы не знакомы, и представилась:

  +---------------
  !  *<ВК>
  !  -
  !  DIR   V05.00
  !  ------------
  !  *^
  !  -
  !

       А дальше надо подумать. Мы знаем, что если в начале строки стоит звездочка, то программа вызвала интерпретатор командной строки (CSI) и требуется ввести командную строку в формате CSI. И так как по умолчанию вывод каталога происходит на терминал, то мы можем просто указать имя устройства, каталог которого мы хотим посмотреть.

  +---------------
  !  *DX0:<ВК>
  !  -
  !

       Тот же эффект мы получим, если введем командную строку полностью:

  +---------------
  !  *TT:=DX0:<ВК>
  !  -
  !

где вместо имени устройства для вывода информации "TT:" может стоять любое другое, например "LP:", или полностью спецификация выходного файла.
       Таким образом, то, что мы делали с помощью команды

  +---------------
  !  .DIRECTORY/PRINT DX0:<ВК>
  !  -
  !

можно сделать следующим образом:

  +---------------
  !  *LP:=DX0:<ВК>
  !  -
  !

       А то, что мы делали с помощью команды

  +---------------
  !  .DIRECTORY/OUTPUT:DX0:DX0FIL DX0:<ВК>
  !  -
  !

можно сделать следующим образом:

  +---------------
  !  *DX0:DX0FIL=DX0:<ВК>
  !  -
  !

       Однако ключ /ALLOCATE мы не сможем явно передать в командной строке CSI. Для резервирования места на устройстве для выходного файла нужно сопроводить спецификацию выходного файла числом, указывающим необходимое количество блоков, заключенным в квадратные скобки, как это показано ниже.

  +---------------
  !  *DX0:DFILE[6]=DX0:<ВК>
  !  -
  !

       Будьте внимательны — здесь квадратные скобки являются частью спецификации выходного файла, а не означают необязательность элемента спецификации файла.
       А как же быть с остальными ключами? Совсем просто, если обладаешь хорошей памятью или имеешь специальную табличку, которую мы приведем ниже. Ключ для CSI состоит из одного символа с теми же аргументами, которые были в командах KMON, но сокращенными до трех символов. Например, вывод распечатки каталога с ключем /SORT:NAME можно осуществить так:

  +---------------
  !  *DX0:/S:NAM<ВК>
  !  -
  !

       Так же, как название команды DIRECTORY можно сократить до трех символов, название каждого ключа программы DIR может быть существенно меньше тех, которые мы использовали при работе с KMON. Ниже мы приводим таблицу ключей программы DIR, используемых в KMON с командой DIRECTORY, их сокращений и значений этих ключей в CSI.

Ключ Сокращение для KMON Значение ключа для CSI
PROTECTION PRO T
BLOCKS BL B
POSITION PO B
BRIEF BR F
FAST FA F
FULL FU E
PRINTER PRI  
TERMINAL TE  
OUTPUT OU  
SUMMARY SU N
COLUMNS C C:DVAL
ORDER OR S:VAL
SORT SO S:VAL
EXLUDE EX P
ALPHABETIZE ALP A
OCTAL OC O
NEWFILES NE D
DATE DA D:DVAL
SINCE SI J:DVAL
BEFORE BEF K:DVAL
FREE FR M
VOLUMEID VO V:VAL
DELETED DEL Q
REVERSE REV R
BEGIN BEGIN G
NOPROTECRION NOPRO U

 

       Следует только отметить, что несколько ключей можно применять одновременно, если они по смыслу не противоречат друг другу. Порядок ключей в командной строке как для KMON, так и для CSI не имеет значения.
       Ну вот и все. Осталось только вспомнить, как прервать работу программы DIR и вернуться опять в KMON.
       — Я помню,— сказал Алеша,— нужно одновременно нажать клавиши "CTRL" и "C" большое латинское.
       И действительно, на экране появилась точка. Для завершения работы в RT-11 никаких специальных действий не требуется. Нужно вынуть дискету, выключить накопители, затем выключить все остальные устройства.

(c) 1992г Архангельский Андрей Германович




Поддержите культуру
ЯндексЯндекс. ДеньгиХочу такую же кнопку

Google
 
Web azdesign.ru az-libr.ru


Дата последнего изменения:
Wednesday, 06-Nov-2013 08:33:56 UTC