Операционная система и программное обеспечение
(часть 2)
Пользователям о "Корвете". Журнал "Радио" №12/1989г., стр.33-36
Мы уже рассмотрели команды управляющих символов, а также встроенные команды, входящие в операционную систему СР/М. На очереди - транзитные.
Транзитных команд может быть очень много. Они хранятся постоянно на диске в виде командных файлов. По существу, любая программа в машинных кодах может являться транзитной, а все файлы, содержащие их, имеют расширение своего имени COM. Приведем примеры таких стандартных программ:
STAT |
предоставляет пользователю информацию о состоянии диска (от англ. status - состояние); |
PIP |
осуществляет обмен данными с периферийными устройствами. Она необходима также при копировании системного диска; |
ED |
команда позволяет пользователю запустить текстовый редактор (от англ. editor - редактор); |
SUBMIT |
предоставляет возможность запустить последовательность команд, указанных в заранее подготовленном файле; |
ASM |
позволяет произвести перевод программы, написанной на языке Ассемблер при помощи редактора ED или какого-нибудь другого, в шестнадцатиричный файл с расширением HEX. Его, в свою очередь, можно преобразовать в командный файл при помощи программы LOAD; |
LOAD |
команда используется для преобразования шестнадцатиричного файла в файл, содержащий машинные коды; |
DDT |
позволяет проследить процесс работы различных программ в машинных кодах и, таким образом, выявить имеющиеся в них ошибки (от англ. dinamic debugging tool - динамическая отладка программ); |
DUMP |
используется для вывода на экран дисплея или на принтер в шестнадцатиричном формате содержимого командных файлов; |
FORMAT |
форматирует диски (от англ. format - форматировать); |
SYSGEN |
копирует ОС с диска на диск (от англ. system generation - создание системы). |
Перечислим функции команды STAT.
- Прежде всего, она может выводить на экран объем свободного пространства на всех используемых в настоящее время дисках и режим доступа к дискам. Напомним, что режим доступа бывает двух типов: R/O (от англ. read only - только чтение) и R/W (от англ. read write - чтение и запись). На диск с доступом R/O нельзя ничего записывать. Это значит, что вы не можете ни дополнить содержимое этого диска, ни удалить какие-либо файлы. С такого диска информацию можно только читать. Доступ R/W означает, что с диска можно читать и можно записывать на него информацию.
- STAT может выводить на экран характеристики как отдельных файлов, так и их групп. Для этого в качестве операнда нужно использовать соответствующее имя или, применяя глобальные символы, обозначить группу файлов.
- Эта команда используется для защиты отдельных файлов и целых их каталогов (присваивая им статус R/O).
- Она позволяет создавать скрытые файлы. С помощью команды STAT им присваивается специальный атрибут, и имя файла не будет выводиться на экран по команде DIR из соображений секретности.
- Команда STAT позволяет посмотреть номер активной области, определенный командой USER.
- Обычно стандартным периферийным устройствам присвоены некоторые логические имена. Например, консоль - CON: принтер (цифропечать) - LPT: или PRT: и т. д. По команде STAT вы можете узнать, какие логические имена присвоены, а также изменить их, если есть желание, или завести новые из списка разрешенных имен, который также выводится по команде STAT.
Разберем эти функции по порядку. Файл STAT.СОМ должен находиться в директории вашей активной области. Попробуем набрать команду STAT без операндов. На экране тут же появятся cледующие строки:
A>STAT
A:R/W SPACE: 140K
А>
Программа STAT вывела на экран сообщение о статусе диска R/W (или R/O) и размере свободного пространства. Если во все дисководы вставлены диски, то подобная информация появится обо всех дисках. Отметим, что по команде STAT будут просмотрены остальные диски, только если к ним уже обращались с какой-либо командой или был выполнен "теплый" старт системы. Другими словами, ОС должна знать, что мы вставили диски в дисководы.
Если в качестве операнда у команды STAT используется имя какого-либо файла, то мы можем получить информацию о его размерах и статусе. Например, если вы интересуетесь размером файла ТЕХТ.ТХТ, то по команде STAT TEXT.TXT вы получите следующую информацию:
A>STAT ТЕХТ.ТХТ
RECS BYTES ЕХТ АСС
110 14К 1 R/W А:ТЕХТ.ТХТ
BYTES REMAINING ON A:476K
A>
Первая строка этого сообщения - названия столбцов. Вторая - содержание соответствующих столбцов. На третьей строке указывается свободное пространство на диске. В этом сообщении содержится информация о количестве записей в данном файле, его размере и уровне защиты.
Разберемся в том, какой смысл имеют выводимые на экран характеристики.
Запись является единицей объема информации, хранимой на диске. В СР/М длина записи равна 128 байтам. Число, указанное в графе RECS, равно количеству 128-байтных записей в файле, а указанное в графе BYTES представляет собой округленный размер файла в килобайтах.
Еще одной единицей измерения объема файлов в СР/М является экстент. Он равен 16К. Графа ЕХТ содержит размер файла в экстентах. Приращение в этой графе может быть только целым. Как правило, эту цифру можно не принимать во внимание.
Код, напечатанный в столбце АСС, представляет собой статус защиты файла: R/W или R/O.
В команде STAT можно использовать глобальные символы * и ?.
Мы многократно упоминали, что файлы можно защищать. Но пока непонятно, как это сделать. Сейчас пришло время овладеть этой премудростью. Для установки статуса защиты необходимо в качестве второго операнда команды STAT использовать $ R/W или $ R/O.
В качестве примера сделаем какой-либо файл защищенным от записи. Пусть этот файл называется ТЕХТ.ТХТ. Тогда ваши действия должны быть следующими:
A>STAT ТЕХТ.ТХТ $ R/O
ТЕХТ.ТХТ SET TO R/O
А>
Разумеется, все эти операции нужно произвести с файлом, имеющимся на диске. В противном случае появится сообщение об ошибке.
Команда STAT позволяет временно защитить от записи весь диск. Эта защита сохраняется только пока диск вставлен в дисковод, например:
A>STAT A:-R/O
А>
Для снятия защиты необходимо провести "теплый" или "холодный" старт системы.
Разберемся еще с одной интересной функцией команды STAT. Предположим, что вы не хотите, чтобы кто-либо видел некоторые ваши файлы в директории. Команда STAT поможет вам спрятать их и сделать невидимыми. Это также бывает полезно, чтобы не выводить каждый раз в оглавлении имена системных файлов. Для того чтобы это сделать, используют операнд $ SYS.
A>STAT STAT.СОМ $ SYS
STAT.COM SET TO SYS
А>
Теперь по команде DIR вы не увидите в оглавлении файл STAT.COM. Атрибут $ SYS может быть назначен произвольному числу файлов при использовании глобальных символов * и ?. Для отмены статуса "скрытый" используется атрибут $ DIR, например:
A>STAT STAT.COM $ DIR
STAT.COM SET TO DIR
A>
Команда STAT может выдавать информацию о характеристиках дисков. Например, сообщение о двустороннем диске с двойной плотностью записи при емкости 1024К на сектор имеет вид:
A>STAT DSK:
A: DRIVE CHARACTERISTICS
9600: 128BYTE RECORD CAPACITY
1200: KILOBYTE RECORD CAPACITY
256: 32BYTE DIRECTORY ENTRIES
256: CHECKED DIRECTORY ENTRIES
128: RECORDS/EXTENT
16: RECORDS/BLOCK
4: SECTORS/TRACK
4: RESERVED TRACKS
A>
Поясним смысл каждого сообщения.
- 128 BYTE RECORD CAPACITY указывает число 128-байтных записей, которое может храниться на диске. Запись является единицей измерения объема данных. Сделано это для повышения эффективности обработки файлов.
- KILOBYTE RECORD CAPACITY указывает максимальную емкость диска в килобайтах.
- 32 BYTE DIRECTORY ENTRIES показывает максимальное количество файлов, которые можно хранить на диске. Информация об одном файле, хранящемся на диске, занимает в каталоге пространство, равное 32 байтам.
- CHECKED DIRECTORY ENTRIES - это значение, как правило, совпадает с предыдущим. Его назначение - отслеживание системой смены дисков.
- RECORDS/EXTENT определяет максимальное число записей на один экстент, которому соответствует один вход в каталог. Один экстент, как вы помните, занимает 16 К, т. е. 128 записей. Отдельные файлы могут занимать несколько экстентов.
- RECORDS/BLOCK указывает минимальный объем дисковой памяти, который можно предоставить для одного файла. Для определения размера блока нужно умножить этот параметр на длину записи, т. е. на 128байт. В нашем примере легко получить, что блок имеет длину 128байт X 16 = 2048байт = 2К.
- SECTORS/TRACK показывает количество секторов на одной дорожке.
- RESERVED TRACKS обозначает количество дорожек, зарезервированных для системных нужд. Обычно их две - нулевая и первая. На них хранятся BIOS, BDOS и ССР.
Теперь подробней рассмотрим команду PIP, предназначенную для обмена информацией с периферийными устройствами.
Для того чтобы пользоваться командой PIP, необходимо иметь на вашем диске в активной областа файл PIP.COM. Мы исходим из того, что файл PIP.COM на вашем диске имеется.
Перечислим функции команды PIP: создание копии файла на текущем диске; копирование одного файла или группы файлов на другие диски; объединение нескольких файлов в один файл; обмен данными между дисками и другими устройствами.
Команда PIP имеет еще много дополнительных возможностей, но здесь мы не будем их рассматривать. Интересующихся отошлем к книге "Операционная система СР/М", написанной М. Уэйтом и Дж. Ангермейером. Перевод ее вышел в издательстве "Радио и связь" в 1986 г.
Попробуем работать с командой PIP. Сначала наберите PIP и нажмите клавишу ВК, после чего на экране появится:
А>РIР
*
Вы видите, что вместо системного промпта А> появился новый промпт *. Это так называемый промпт команды PIP. Его появление означает, что команда загружена и готова к работе. Вспомним теперь, как копировать файлы. Сначала мы должны указать имя копии "приемника" (от англ. destination), затем имя "источника" (от англ. source). Если мы объединяем много файлов в один, их имена перечисляются одно за другим через запятую. В этом случае на экране должна быть набрана следующая строка:
* D:FILENAME=S:FILENAME1,FILENAME2,...
Здесь D: - выходное устройство - может быть не только диском, но и логическим устройством. То же можно сказать и про входное устройство S:. Имена файлов могут быть опущены, однако если идет работа с дисками, хотя бы одно имя файла должно присутствовать. Эту малопонятную фразу не следует рассматривать как нечто непостижимое для понимания. Обычно, следуя простой логике, нетрудно сообразить, когда имя файла необходимо указывать, а когда нет.
Исследуем теперь по порядку упомянутые функции команды PIP.
Начнем с копирования файлов на одном и том же диске и с диска на диск. Для этого нужно сообщить программе имя копируемого файла. Допустим, что у вас имеется файл PROG.TXT. Если вы хотите создать его копию под именем PROG1.TXT, то в этом случае в ответ на промпт команды PIP вы можете ответить:
* A:PROG1.TXT=A:PROG.TXT
В этом случае необходимо указать имена двух файлов источника (A:PROG.TXT) и копии (A:PROG1.TXT). Если диск A: - текущий, его имя можно не указывать.
Для пользователей, имеющих достаточное количество дисков, возможно копирование с одного диска на другой, формат записи команды тот же, только нужно указать, с какого диска на какой идет копирование. Если ваш файл находится на диске A:, и этот диск текущий, вы должны набрать команду:
* B:PROG.TXT=PROG.TXT
Для изменения имени файла равноправными командами являются:
* B:PROG.TXT=PROG.TXT
* В:=PROG.TXT
* B:PROG.TXT=A:
Вас, наверное, волнует вопрос, как выйти из команды PIP и вернуть на экран промпт СР/М? Очень просто. Нажмите клавишу ВК.
Для копирования нескольких файлов можно использовать глобальные символы ? и *.
Возможно, у вас возник вопрос: что будет, если файл, который вы указали как выходной, уже существует на диске? PIP просто запишет на то же место новую информацию. А как быть с защитой? Если файл имел статус R/W, то он просто перепишется. Если же статус был R/O, в этом случае PIP сообщит, что файл уже существует и предназначен только для чтения. После этого вам нужно будет ответить на вопрос, стирать его или нет. Если вы ответите N, то копирования не произойдет и все останется, как было. Ответив Y, вы сотрете старый файл и запишите на его место новый. Вообще, полезно внимательно читать то, что сообщается вам на экране дисплея.
Отметим еще одну важную особенность команды PIP. Она копирует только те файлы, которые можно увидеть в каталоге при помощи команды DIR. Поэтому, если вы присвоили файлу статус SYS, своевременно измените его на DIR при помощи команды STAT.
Пользоваться командой PIP можно двумя способами. Вы либо сразу указываете в командной строке всю последовательность действий, либо, набрав PIP и нажав клавишу ВК, последовательно вводите их. В первом случае после самой команды через пробел вводятся ваши требования, например, копирования трех файлов в один:
A>PIP B:PROG.TXT=A:PROG1.TXT,PROG2.TXT,PROG3.TXT
А>
Обратите внимание, что в этом случае сразу появляется промпт СР/М, а не PIP.
Команда PIP позволяет также выводить содержимое файлов на стандартные устройства. Например, если вы хотите ввести какие-либо данные с консоли в файл TEST.TXT, необходимо ввести команду:
A>PIP TEST.TXT=CON:
После этого программа переходит к процессу обмена консоли с диском: все, что вы набираете на клавиатуре, записывается на диск. Для окончания этого процесса необходимо ввести символ CTRL-Z.
Мы не рассматривали здесь такие программы, как DDT, ASM, LOAD, SAVE и т. д. Эти программы обычно нужны системным программистам, работающим на языке Ассемблер.
Перейдем теперь к другим программам. Начнем с Бейсика.
Бейсик - это язык, который должен обязательно входить в состав программного обеспечения любого персонального компьютера. Для нашего компьютера был специально написан интерпретатор языка Бейсик, который с точки зрения пользователя не отличается от языков Бейсик фирмы "Microsoft", являющихся стандартными. Бейсик, написанный для ПК"Корвет", является подмножеством языков Бейсик фирмы "Microsoft" и существует в двух версиях объемами 16 и 24 Кбайт, что оставляет еще большой запас в пределах возможных 96 Кбайт для дальнейшего расширения. Интерпретатор языка находится в машине резидентно, не требуя никаких устройств внешней памяти, и пользователь получает его в свое распоряжение при включении компьютера в сеть.
Теперь остановимся на программных средствах, имеющихся в распоряжении пользователя "Корвета", на возможностях, предоставляемых операционной системой СР/М-80. Если начать с программ, необходимых массовому пользователю, то можно выделить три типа. Это редактор текста, а также и средство для обработки архивов и табличной информации. В качестве редактора текста в "Корвете" используется отечественный редактор "Супертекст", являющийся аналогом одного из наиболее мощных редакторов "Final Word". Настоящая статья была подготовлена с помощью редактора "Супертекст" на "Корвете".
Для обработки архивов можно использовать широко известную базу данных dBase II, а для работы с таблицами также очень популярную программу Multiplan фирмы "Microsoft". Что касается системных программных средств, выбор их чрезвычайно широк. Существуют различные ассемблеры, перемещающие загрузчики, отладчики, пакеты утилит. Имеются компиляторы с таких языков высокого уровня, как фортран, Паскаль, Си, Ада, форт, Лисп, ПЛ/М и других. Основным языком для разработки прикладных программ для "Корвета" является "Си". В настоящее время разработана библиотека графических процедур для языка "Си", которая делает в полной мере доступными программисту преимущества аппаратных средств "Корвета". Например, одна из функций библиотеки реализует так называемые спрайты (это маленькие объекты типа стрелок или игровых персонажей), получение которых без специальных заказных БИС считается невозможным. В нашем компьютере реализованы спрайты со скоростью перемещения до 1 - 2 мс на один шаг.
В заключение скажем несколько слов о том, кто занимается производством нашего компьютера. Основным производителем является Бакинское производственное объединение "Радиостроение". В Москве производством "Корвета" заняты опытно-экспериментальное производство Московского экспериментально-вычислительного центра ГКВТИ "ЭЛЕКС" и кооператив "ЭЛИН".
C. Ахманов, Н. Рой, К. Скурихин