[an error occurred while processing this directive]

.цв

4. ВЫВОД НА БУМАГУ.

.ов

Система располагает довольно мощными средствами вывода на бумагу. Прежде всего, можно вывести на бумагу все, что в данный момент находится на экране, для чего достаточно нажать клавишу 'УПР O'. Можно подключить к потоку экранного вывода одновременно и вывод на бумагу, нажав клавишу 'УПР И'. При этом вся выводимая на экран информация будет передаваться и на печатающее устройство. Это можно использовать, например, для печати файлов и каталогов. Для того чтобы переключить вывод только на экран, нужно нажать клавишу 'УПР В'.

У команд вывода на бумагу есть модификации. Например, при подаче любой из команд включения вывода на бумагу происходит инициализация принтера, завершающаяся передачей на него кодов, заданных пользователем. Они могут использоваться, например, для задания шрифта печати. Для ввода этих кодов существует команда '#'. Ввод просто '#' приводит к печати текущих кодов инициализации. Для их изменения надо скомандовать '#n1 n2...', n1 и n2 - коды, состоящие из двух шестнадцатеричных цифр и разделенные пробелами. Их может быть до 32 штук.

Команда 'УПР И' может выводить как на рулонную бумагу (обычный вывод), так и по страницам с остановкой в конце каждой страницы, причем в этом режиме дополнительно задается число строк на странице, число колонок, ширина колонки и т.д.

Для задания формата выводимой страницы служит команда '"'. Ввод ее без операндов приводит к выводу на экран текущего формата печати. Ввод операндов осуществляется так же, как и в команде '#'. Рулонный режим задается буквой 'R' ('"R') и более не требует параметров, страничный обозначается буквой 'S' (например, '"S 2 20 40 2 0 0') и содержит шесть байт параметров:

======================================================
1 - Число колонок в странице.
2 - Ширина колонки.
3 - Число строк на странице.
4 - Число пробелов между колонками до разделителя.
5 - Символ, используемый в качестве разделителя.
6 - Число пробелов между колонками после разделителя.
======================================================

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

Параметры обеих команд сохраняются на диске при исполнении команды '[STATUS'.

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

.сс

.цв

5. ПОЛНОЕ ОПИСАНИЕ ФАЙЛОВОЙ СИСТЕМЫ.

.ов

5.1. Общие положения.

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

Файловая система содержит в себе команды, служащие для работы с файлами, каталогами, а также команды, выполняющие специальные функции. Все команды файловой системы, кроме 'Q', начинаются с символа '['.

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

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

5.2. Имя файла и шаблон. Выбор и конвейерная обработка.

В этом разделе рассмотривается формат параметра имя файла.

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

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

Имя файла может быть заменено на символ '@', означающий 'имя последнего обработанного файла'.

Конвейерная обработка позволяет задать в одной команде обработку сразу нескольких файлов, объединенных по какому-либо признаку. Для задания конвейерной обработки имя файла превращается в шаблон путем включения в него специальных символов. При конвейерной обработке последовательно просматриваются все файлы текущего каталога. Если имя данного файла удовлетворяет шаблону, то оно печатается на стандартный вывод и этот файл обрабатывается. Если не найдено ни одного файла, то будет выдано сообщение об ошибке.

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

Шаблон имени - это имя файла, содержащее символ '=' (их может быть и несколько). Он означает, что в данном месте имени файла допустимо любое количество любых символов. Отсутствие шаблона имени означает обработку любых файлов.

Тип задается символом апострофа ('), сразу за которым следует его буквенное обозначение. При этом будут обрабатываться файлы только данного типа. Отсутствие данного элемента снимает соответствующее условие.

Инвертирование задается просто символом '\'. При этом все файлы, не удовлетворяющие шаблону имени и типу, будут обработаны, а удовлетворяющие - нет.

Ограничение позволяет Вам задать начало либо конец поиска файлов в каталоге. Для этого имеются два символа '<' и '>', первый из них устанавливает конец, второй начало просмотра каталога. Этот символ ставится после шаблона имени файла. За ним требуется указать имя файла (не содержащее '='), который собственно и будет последним либо первым сравниваемым с шаблоном соответственно. Использование '<' и '>' одновременно недопустимо.

Отметим, что конвейерная обработка возможна не во всех командах. Кроме того, не производится конвейерная обработка подкаталогов.

Выбор - третий вариант исполнения команды. Для этого перед шаблоном поставьте символ '/'. Отсутствие шаблона означает выбор из всех файлов.

При выборе на экран выдаются имена всех файлов, удовлетворяющих шаблону и перемещая курсор стрелками Вы можете выбрать ("ВВОДом") один из них для обработки. Если список файлов не помещается на экране, то вывод приостанавливается. Следует нажать "ПРОБЕЛ" (нужного файла среди выданных нет) или "F1" (это же клавиша позволяет отказаться от выбора файла).

Выбор работает даже в командах, не работающих в конвейерном режиме, и с файлами, и с подкаталогами. Для выбора только из каталогов можно использовать тип 'C'.

5.3. Команды файловой системы.

Ниже приводится полное описание команд файловой системы.

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

Список всех имеющихся команд файловой системы приведен в Приложении.

5.3.1. Смена устройства.

Формат: '[d'

Действие: у-во d=1,..5 сделать текущим.

Пример: '[1'.

5.3.2. Выдача каталога диска: [CAT.

Формат: '[CAT {name}'.

Действие: выдать на стандартный вывод постранично удовлетворяющие шаблону name файлы и каталоги текущего каталога, объем свободного места и имя диска. Отсутствие name приводит к выводу всех файлов.

Пример: '[CAT \SY='.

5.3.3. Смена текущего каталога: [CD.

Формат: '[CD name'.

Действие: сделать каталог name текущим, либо (name='\') выйти в корневой, либо (name='.') выйти на один уровень к корневому.

Пример: '[CD .'.

5.3.4. Создание каталога: [MD.

Формат: '[MD name{,l}'.

Действие: создать каталог name длины l секторов. Отсутствие l приводит к созданию каталога длиной 5 секторов.

Пример: '[MD GAMES,3'.

Примечание: в один сектор каталога помещаются заголовки семи файлов, недопустимо использование '@' и '/' в name.

5.3.5. Смена имени диска: [SIGN.

Формат: '[SIGN{name}'.

Действие: присвоить текущему диску имя name (до дес. 29 символов). При отсутствии параметра устанавливается имя, выданное при последнем просмотре каталога.

Пример: '[SIGN Диск с системой'.

Примечание: в name входят все пробелы, идущие сразу после '[SIGN', используя клавишу 'УПР Ж', можно вводить в name управляющие символы.

5.3.6. Переименование файла или каталога: [REN.

Формат: '[REN name1,name2'.

Действие: сменить имя файла или каталога name1 на name2.

Пример: '[REN MAG,GAM'.

5.3.7. Удаление файла или каталога: [DEL.

Формат: '[DEL name'.

Действие: удалить файл или каталог name, команда работает в конвейере.

Пример: '[DEL FILE.DAT'.

5.3.8. Печать текстового файла: [TYPE.

Формат: '[TYPE name'.

Действие: вывести на стандартный вывод содержимое Т-файла name, работает в конвейере.

Пример: '[TYPE SYSTEM.H'.

Примечание: прервать вывод файла можно нажатием "F1".

5.3.9. Копирование файла: [COPY.

Формат: '[COPY name{,s,d}'.

Действие: скопировать файл name с устройства s на устройство d. Если не указан ни s, ни d, то копирование будет произведено на текущем дисководе, если указан только s, то копирование будет произведено на нем, если указан только d, то копирование производится с текущего на d. Работает в конвейере.

Пример: '[COPY =,,5'.

Примечание: при совпадении устройств оригинала и дубликата производятся паузы для смены диска.

5.3.10. Проверка файла: [VER.

Формат: '[VER name'.

Действие: проверить на чтение файл name, возможна работа в конвейере.

Пример: '[VER ='.

5.3.11. Просмотр состояния ДОС: Q.

Формат: 'Q'.

Действие: выдает на стандартный вывод номер текущего устройства (U), его слот (S) и привод (D), а также Q-параметры умолчания В-файла M, A, L (второй столбик) и Q-параметры умолчания M, L, T (третий столбик).

Пример: 'Q'.

Примечание: при чтении/записи произвольного файла четырьмя следующими командами его параметры сохраняются в Q-параметрах умолчания: адрес в памяти (M, при загрузке системы устанавливается равным 2000), длина в блоках (L), тип файла (T). При работе с В-файлом командами '[SAVE'/'[LOAD' сохраняются адрес В-файла в памяти (A), длина В-файла в байтах (L), адрес загрузки (M, не путать M, L с параметрами произвольного файла) - Q-параметры В-файла.

Возможно изменение этих параметров с помощью команды ':' Отладчика.

5.3.12. Чтение файла: [READ.

Формат: '[READ name{,m}'.

Действие: считать в адресное пространство с адреса m файл name, установить соответствующие (M, L, T) Q-параметры умолчания. Минимальное значение m=F00. Если m не указан, то он берется из Q-параметра умолчания M. Возможно использование в конвейере.

Пример: '[READ MAPL+,2000'.

Примечание: при чтении не учитывается ни тип файла, ни его структура, за одним исключением: при чтении К-файла не в конвейере его адрес загрузки и длина в байтах копируются в Q-параметры В-файла A, L.

5.3.13. Запись файла: [WRITE.

Формат: '[WRITE name{,m,l,t}'.

Действие: записать из адресного простраства с адреса m на диск в файл name типа t (указывается буквой) l секторов, устанавливаются Q-параметры M, L, T. Опущенные параметры берутся из соответствующих Q-параметров.

Пример: '[WRITE @'.

Примечание: при записи К-файла его адрес загрузки и длина в байтах устанавливаются равными Q-параметрам умолчания В=файла A, L.

5.3.14. Чтение фрагмента из файла: [GET.

Формат: '[GET name{,m,p,l}'.

Действие: прочитать из файла name в память начиная с адреса m фрагмент длины l, начинающийся в файле с позиции p (в секторах, начиная с 1, т.е. p=1 - сначала, p=2 - пропустив один сектор и т.д.). Устанавливаются Q-параметры M, L, T. Если m пропущен, то адрес берется из Q-параметра M, при отсутствии l система пытается считать файл до конца, а при отсутствии p - с начала.

Пример: '[GET FILE,,10,10'.

Примечание: чрезмерная длина заказанного фрагмента не вызывает ошибки. Выяснить длину реально считанного куска можно по команде 'Q' (параметр L файла произвольного типа). При работе с К-файлом его адрес и длина помещаются в Q-параметры В-файла A, L.

5.3.15. Запись фрагмента в файл: [PUT.

Формат: '[PUT name{,m,l,t,p}.

Действие: записать в существующий файл name типа t (указывается буквой) область памяти с адреса m длиной l секторов так, чтобы записываемый фрагмент располагался в файле с позиции (в секторах, аналогично '[GET') p, причем p=0 значит, что нужно дописать фрагмент к концу файла. Соответствующим образом устанавливаются Q-параметры M, L, T. Если p не указан, то p считается равным 0. Если не указан один из остальных параметров, то он будет взят из Q-параметров умолчания M, L, T.

Пример: '[PUT FILE,,20,,2F'.

5.3.16. Чтение В-файла: [LOAD.

Формат: '[LOAD name,{m}'.

Действие: считать В-файл name в память на адрес m и установить Q-параметры В-файла (M=m, A=адрес, записанный в файле, L=длина в байтах). Если m не указан, то берется адрес из файла. Минимальное значение m=1000. Параметр m может быть также относительным, для чего перед ним нужно указать знак '+' или '-' по смыслу. В этом случае к старшему байту адреса, записанному в файле, будет прибавлено (вычтено) число, указанное в параметре. Команда работает в конвейере.

Пример: '[LOAD DIF+,-3'.

Примечание: при работе в конвейере не устанавливается Q-параметр В-файла A.

15.3.17. Запись В-файла: [SAVE.

Формат: '[SAVE name{,m,l,a}'.

Действие: записать в В-файл name область памяти длиной l байт, расположенную в памяти по адресу m, установив адрес загрузки равным a. Устанавливаются Q-параметры В-файла. Если н указать m, l, a, то используются Q-параметры В-файла, еслиуказать только m, l, то адрес загрузки будет равен m.

Пример: '[SAVE FILE.BIN'.

5.3.18. Исполнение бинарной программы: [RUN.

Формат: '[RUN name'.

Действие: загрузить и исполнить программу, содержащуюся в В-файле name, установив Q-параметры умолчания В-файла.

Пример: '[RUN TETRIS'.

5.3.19. Исполнение командного файла: [EXEC.

Формат: '[EXEC name'.

Действие: исполнить командный Т-файл name.

Пример: '[EXEC CPYRES'.

5.3.20. Загрузка и запуск резидентной программы: [BOOT.

Формат: '[BOOT name'.

Действие: загрузить и исполнить резидентную программу, записанную в S-файле name.

Пример: '[BOOT NORES.SYS.

5.3.21. Сохранение резидентной программы: [STORE.

Формат: '[STORE'.

Действие: сохранить в тело системы текущую резидентную программу.

Пример: '[STORE'.

5.3.22. Сохранение состояния системы: [STATUS.

Формат: '[STATUS'.

Действие: сохранить на системном диске информацию о состоянии системы: переопределяемые клавиши, режим и шрифт печати, состояние Секторного Редактора и Редактора Памяти.

Пример: '[STATUS'.

5.3.23. Разметка диска: [FORMAT.

Формат: '[FORMAT{n}'.

Действие: разметить и инициализировать диск, установленный в текущий дисковод, объявив на нем n треков занятыми под систему. Отсутствие n аналогично параметру 0.

Пример: '[FORMAT 8'.

Примечание: при работе с виртуальным диском происходит только его инициализация.

5.3.24. Установка размера виртуального диска: [RAM.

Формат: '[RAM{n}'.

Действие: установить размер виртуального диска согласно параметру n (может принимать значение 0, 1, 2, по умолчанию 0). В зависимости от n и наличия доп-памяти размер диска будет следующим:

=================
 0 - 48 / 176 кб
 1 - 32 / 160 кб
 2 -  0 / 128 кб
=================

Пример: '[RAM'.

Примечание: команда служит для использования колоночной печати (следует подать команду '[RAM1') и программ, требующих особенно много памяти (команда [RAM2), без разрушения информации, записанной на виртуальный диск. Особенностью системы является то, что при отсутствии доп-памяти команда '[RAM2' приводит к выводу незначащей ошибки.

Система не производит проверку того, что при уменьшении размера диска информация на нем не разрушится.

При загрузке системы создается электронный диск максимального размера. Если электронный диск на момент загрузки уже существовал, то его инициализации не происходит.

5.3.25. Восстановление файла: [UNDEL.

Формат: '[UNDEL name'.

Действие: восстановить стертый файл name, работает в конвейере.

Пример: '[UNDEL OLDFILE'.

Примечание: проверка возможности восстановления не производится, команда не работает с подкаталогами.

.сс

5.4. Ошибки файловой системы.

Если при исполнении команды файловой системы произойдет какая-либо ошибка, то на стандартный вывод будет выдан звуковой сигнал и текстовое сообщение. Ошибка обмена, кроме того, указывает и на адрес сектора, на котором произошел сбой (трек и сектор указаны через точку). Особенностью системы является то, что эти цифры при работе с Teac'ом могут указывать не на реально ошибочный сектор. Эта неточность, в общем случае, не приводит к неудобствам, потому что ошибки на Teac'е - вещь редкая, и их появление наверняка указывает на физические дефекты диска или повреждение дисковода.

Файловая система различает 13 ошибок. Ниже приводится их текст с краткими пояснениями, где это необходимо.

===========================
 1 - Ошибка обмена.
 2 - Диск защищен.
 3 - Файл не найден.
 4 - Нет места на диске.
 5 - Неверный тип файла.
 6 - Не системный диск.
 7 - Каталог не пуст.
 8 - Слишком большой файл.
 9 - Нет места в каталоге.
10 - Недопустимый адрес.
11 - Уже есть.
12 - Ошибка ввода.
13 - Не команда.
===========================

'Неверный тип файла' - выдается также при другой ошибке: логическом разрушении таблиц свободного места (BITMAP).

'Не системный диск' - выдается при попытке '[STORE' или '[STATUS' на диск, не содержащий "The Best" данной версии.

'Каталог не пуст' - нельзя удалять непустой каталог.

'Слишком большой файл' - не помещается в память при попытке его загрузить (текущий адрес больше BFFF).

'Нет места в каталоге' - при создании файла или каталога система при необходимости расширяет каталог путем добавления к нему сектора, однако не свыше дес. 20 секторов (140 файлов).

'Недопустимый адрес' - попытка загрузить файл в память на слишком маленький адрес.

'Уже есть' - Вы попытались создать каталог с уже существующим именем.

'Ошибка ввода' - возникает при ошибочном значении цифровых параметров, входящих в команду, например позиции в командах '[PUT'/'[GET'.

'Не команда' - команда не известна системе.

.сс

.стSYSTEM.DOC.4

[an error occurred while processing this directive]