≡ Передовица » Макулатура » Штатная документация » Агат-7 Книга 6 » ДОС Руководство программиста 1989
ДОС Руководство программиста 1989УТВЕРЖДЕН Фг.00012-02 33 03-ЛУ МАШИНА ВЫЧИСЛИТЕЛЬНАЯ ЭЛЕКТРОННАЯПЕРСОНАЛЬНАЯ "АГАТ"Система программирования "Бейсик"Дисковая операционная системаРуководство программистаФг.00012-02 33 031989
* * *АННОТАЦИЯВ настоящем документе описывается назначение, условия применения, основные характеристики дисковой операционной системы (ДОС). Приводятся входные и выходные данные и основные сообщения об ошибках. СОДЕРЖАНИЕ1. Назначение и условия применения программы 4 2. Характеристики программы 4 3. Обращение к программе 5 3.1. Начальная загрузка ДОС 5 3.2. Диалог ДОС 6 3.2.1. Общие команды 6 3.3. Программные команды ДОС 9 3.3.1. Работа с файлами типа Т (текстовые) 10 3.3.1.1. Открытие файла 11 3.3.1.2. Закрытие файла 11 3.3.1.3. Запись в файл 11 3.3.1.4. Чтение из файла 11 3.3.1.5. Исполнение из файла 12 3.3.1.6. Позиционирование файла 12 3.3.1.7. Наращивание файла 12 3.3.2. Обращение по физическим адресам 13 4. Входные и выходные данные 14 5. Сообщения об ошибках 16 1. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫДОС ПЭВМ "АГАТ" предназначена для создания, сопровождения и уничтожения наборов данных (файлов) пользователя на накопителях на гибком магнитном диске (НГМД) ЕС5088.02 и ЕС5323.01. ДОС позволяет работать с файлами трех типов, при этом предусмотрена возможность расширения набора типов в соответствии с потребностями пользователя. Объем оперативной памяти, необходимый для работы ДОС, составляет минимум 10К байт и зависит от количества одновременно активных файлов, достигая в максимуме при 16 активных файлах 21К байт. ДОС позволяет одновременно обслуживать до 4 НГМД различных типов. ДОС совместима со всеми элементами базового программного обеспечения ПЭВМ "АГАТ". Необходимым для работы ДОС является наличие в постоянном запоминающем устройстве (ПЗУ) программы "Системный монитор" (см. Фг.00012-02 12 01). 2. ХАРАКТЕРИСТИКИ ПРОГРАММЫДОС обеспечивает обмен с накопителем со скоростью 250 Кбит/с (НГМД ЕС5088) или 250 Кбит/с (НГМД ЕС5323). Разброс временных характеристик НГМД компенсируется автоматически. При одновременном нажатии клавиши СБР и УПР на клавиатуре ПЭВМ "АГАТ" выполняется "теплый" перезапуск ДОС, при котором устанавливается исходное состояние всех признаков с сохранением всей информации, загруженной пользователем в ОЗУ. Контроль обмена выполняется за счет специального кодирования. Кроме того, проверяются поблочно (256 байт) контрольные суммы информации. 3. ОБРАЩЕНИЕ К ПРОГРАММЕ3.1. Начальная загрузка ДОС При начальной загрузке программа записывается с гибкого магнитного диска (ГМД) в ОЗУ. Пусть контроллер НГМД расположен в разъеме Х (от 2 до 6). Для выполнения загрузки достаточно передать управление на адрес $CX00, что осуществляется также командами PR#X языка "Бейсик" или "X УПР-И" программы "Системный монитор". Процесс загрузки занимает не более 10 секунд, при этом настройка и загрузка программ происходит автоматически и не требует вмешательства оператора. После загрузки ДОС происходит автоматическая загрузка системы программирования (например, интерпретатора языка "Бейсик"). После загрузки ДОС происходит автоматическая загрузка системы программирования "Бейсик". После загрузки и инициализации системы программирования выполняется загрузка и запуск стартовой программы, имя которой указывается при изготовлении загрузочного ГМД (см.3.2.1.2). 3.2. Диалог ДОС В настоящем подразделе описаны приказы с клавиатуры, исполняемые ДОС. При работе ДОС набор приказов добавляется к языку приказов используемой системы программирования. При этом каждая введенная строка вначале анализируется в ДОС. Если распознан приказ ДОС, он исполняется, в противном случае строка передается анализатору приказов системы программирования. В связи с этим, как правило, при ошибке в ключевом слове приказа ДОС, выдается диагностика ошибки диалога используемой системы программирования. В дальнейшем изложении: s - номер разъема, в котором установлен НГМД (2-6); d - номер привода под которым подключен НГМД (1-2); v - номер тома, сформированный при инициализации диска. В исполнении ПЭВМ с одним НГМД всегда d=1. Фрагменты приказа, заключенные в фигурные скобки { }, могут опускаться. При этом используются значения, установленные предыдущим приказом. При начальной загрузке s и d устанавливаются автоматически, при этом s равно номеру разъема, к которому подключен НГМД, с которого выполнена загрузка, и d=1. 3.2.1. Общие команды 3.2.1.1. CATALOG {,Ss}{,Dd}{,Vv} - чтение каталога с ГМД. По этой директиве на экран видеоконтрольного устройства (ВКУ) выводится каталог ГМД. В каталоге ГМД по каждому из записанных на нем файлов отображается: тип файла (А - Бейсик-программа, B - двоичный, T - текстовый, I - Бейсик-данные, К - командный файл ассемблера и "РАПИРЫ"); размер файла в секторах (1 сектор - 256 байт); имя файла. Имя файла должно начинаться с буквы и может содержать до 30 произвольных символов, исключая символ ",". При любой работе с файлом, уже имеющимся на ГМД можно в директиве вместо имени файла указать "?", при этом на экран выдается каталог диска в описанном формате и курсор ">", который можно перемещать стрелками вверх/вниз. Нажатие перевода строки выбирает имя файла, на которое указывает курсор, для использования в директиве. Нажатие любой другой клавиши при нижнем положении курсора позволяет продолжить выдачу каталога, приостановленную заполнением экрана. 3.2.1.2. Для инициализации (разметки) ГМД необходимо вставить его в НГМД и дать приказ: INIT{ имя файла } {,Ss}{,Dd}{,Vv} {,Aa,Ll} ГМД находится в работе около одной минуты. Если никаких сообщений не выдано, в каталоге ГМД можно увидеть единственный файл с указанным именем. При инициализиции ГМД следует учитывать возможный характер его использования и конфигурацию ПЭВМ "АГАТ", на которой ГМД будет эксплуатироваться. Если ГМД предназначается только для хранения файлов и требуется получить максимальный свободный объем, в директиве инициализации не следует указывать имени, адреса и длины стартовой программы. Размеченный ГМД имеет свободный объем 132 К байт (НГМД ЕС5088) или 829.5 К байт (НГМД ЕС5323) и не поддерживает "холодный" запуск ПЭВМ. Если ГМД должен обеспечивать "холодный" запуск ПЭВМ "АГАТ" с системой программирования "Бейсик", в директиве разметки указывается имя без адреса и длины, это имя присваивается файлу типа "А", в который записывается Бейсик-программа, находящаяся в памяти в момент разметки. Размеченный ГМД содержит ДОС, Бейсик-интерпретатор и стартовую Бейсик-программу под указанным именем. Холодный запуск ПЭВМ с таким ГМД заканчивается выполнением стартовой программы. ДОС и Бейсик-интерпретатор занимают на диске около 32 К байт. Если предполагается загружать с ГМД отличную от "Бейсика" систему программирования, следует разместить эту систему программирования в памяти и указать адрес и длину требуемой зоны в директиве INIT. При разметке записывается ДОС и стартовый файл типа "В", в который попадает требуемая кодовая программа. "Холодный" запуск завершается передачей управления на эту программу. ДОС занимает на ГМД около 12 Кбайт. Следует помнить, что вся информация, ранее записанная на ГМД, в процессе инициализации теряется. 3.2.1.3. Любой файл может быть переименован по директиве: RENAME ФАЙЛ1,ФАЙЛ2 {,Ss}{,Dd}{,Vv} Здесь ФАЙЛ1 - старое имя файла, ФАЙЛ2 - новое имя. 3.2.1.4. Любой файл может быть уничтожен по директиве: DELETE имя файла {,Ss}{,Dd}{,Vv} 3.2.1.5. Любой файл может быть защищен от записи следующей директивой: LOCK имя файла {,Ss}{,Dd}{,Vv} Файл, защищенный от записи, в каталоге маркируется звездочкой (*). Попытки записи, удаления или переименования защищенного файла приводят к останову с диагностикой "ФАЙЛ ЗАЩИЩЕН". 3.2.1.6. Защита от записи с любого файла может быть снята директивой: UNLOCK имя файла {,Ss}{,Dd}{,Vv} 3.2.1.7. MON {C,} {I,} {O} - подключает вывод на экран команд и информации, проходящих в программном режиме исполнения (см.п. 3.3). Указание C задает вывод команд, I - текста, вводимого с ГМД, О - текста, выводимого на ГМД. Хотя бы одно из указаний должно присутствовать. 3.2.1.8. NOMON {C} {,I} {,O} - отключает отображение, заданное командой MON. Запятые в командах MON и NOMON можно опускать. При начальной загрузке устанавливается NOMON C,I,O. 3.2.1.9. MAXFILES n - резервирует n буферов для активных файлов размером 554 байт каждый. При начальной загрузке n=3. 3.2.2. Работа с файлами типа A (программы на языке "Бейсик") 3.2.2.1. LOAD имя файла {,Ss}{,Dd}{,Vv} - загружает программу с ГМД. Программа и данные, находившиеся в памяти, теряются. 3.2.2.2. SAVE имя файла {,Ss}{,Dd}{,Vv} - записывает программу из памяти на ГМД, если на ГМД уже есть файл с такими координатами, он теряется и заменяется на новый. 3.2.2.3. RUN имя файла {,Ss}{,Dd}{,Vv} - загружает с ГМД и запускает программу. Программа и данные в памяти теряются. 3.2.2.4. CHAIN имя файла {,Ss}{,Dd}{,Vv} - загружает с ГМД и запускает программу. Программа в памяти теряется, данные передаются запускаемой программе. 3.2.3. Работа с файлами типа B (двоичные) Здесь a - начальный адрес, l - длина двоичного файла. Требуется указывать десятичное значение, либо шестнадцатеричное с признаком "$" (например, A$1000, L4096). 3.2.3.1. BLOAD имя файла {,Aa}{,Ss}{,Dd}{,Vv} - загружает файл с адресом A. Если адрес A не указан, загрузка выполняется с адреса, указанного при записи на ГМД. После загрузки адрес записан в рабочей ячейке $B81B, длина файла - в ячейке $B809 банка банка 9 дополнительного ОЗУ. Директива "BLOAD" может применяться для загрузки в память файлов типа "К" по тем же правилам, что файлов типа "В", и файлов типа "Т" с обязательным указанием начального адреса (в качестве длины файла используется умноженный на 256 его объем в секторах). 3.2.3.2. BSAVE имя файла{, Aa}{, Ll} {,Ss}{,Dd}{,Vv}- записывает указанную зону памяти на ГМД в виде файла типа "В". Если адрес и/или длина файла не указаны, используются текущие значения, образованные последней директивой "BLOAD" или "BSAVE". 3.2.3.3. BRUN имя файла {,Aa}{,Ss}{,Dd}{,Vv} - то же, что и в п.3.2.3.1 с последующей передачей управления на начальный адрес файла. 3.3. Программные команды ДОС Все команды диалога ДОС предоставляются для программных обращений в том же виде, как описано в п.3.2. Строка, содержащая текст приказа, для этого посимвольно передается на вывод подпрограммой COUT "Системного монитора" (см. Фг.00012-02 12 01), но перед ней выводится символ с кодом $84 (CHR$(4) в языке "Бейсик", УПР-D с клавиатуры). Программы на языке "Бейсик" передают команды ДОС оператором PRINT, реальный вывод этой строки на экран выполняется в зависимости от состояния по режиму C команд MON/NOMON (см.пп. 3.2.1.7, 3.2.1.8). Следует учитывать, что управляющий код должен выводиться в первой позиции строки, гарантией этого может служить вывод перед ним кода ПЕРЕВОД СТРОКИ или $8D (CHR$(13) или PRINT в языке "Бейсик"). Пример программного выполнения команды CATALOG в программе на языке "Бейсик": 110 PRINT:PRINT CHR$(4);"CATALOG" В программе на ассемблере: !LDX#0 !ЦИКЛ : LDA КОМАНДА, X !JSR COUT !INX !CPX#> КОНЕЦ - КОМАНДА + 1 !BNE ЦИКЛ !RTS !КОМАНДА : $8D84 !"CATALOG" !КОНЕЦ: $8D Кроме команд диалога, для программных обращений предоставляется еще набор команд работы с текстовыми файлами. Эти команды имеют аналогичный текстовый формат, но не разрешены в прямом диалоге. В настоящем подразделе описaны также программные обращения к ДОС, позволяющие проводить обмен с ГМД по физическим адресам. 3.3.1. Работа с файлами типа Т (текстовые) Предусмотрено два вида текстовых файлов: файлы с последовательным доступом, в которых хранится сплошная последовательность символов, и файлы с прямым доступом, содержащие записи фиксированной длины. В данном пунктe: b - номер байта в файле с последовательным доступом или в записи файла с прямым доступом, r - номер записи в файле с прямым доступом, j - размер записи файла с прямым доступом. 3.3.1.1. Открытие файла OPEN имя файла {,Ss}{,Dd}{,Vv} - для последовательного доступа, OPEN имя файла ,Lj {,Ss}{,Dd}{,Vv} - для прямого доступа (1<j<32767). Открытие отсутствующего файла приводит к созданию пустого файла, открытие файла с именем, имеющимся на ГМД, позиционирует файл на начало. 3.3.1.2. Закрытие файла CLOSE {имя файла} {,Ss}{,Dd}{,Vv} - для прямого и последовательного доступа, отсутствие имени в директиве означает закрытие всех открытых файлов. 3.3.1.3. Запись в файл WRITE имя файла {,Bb} - для последовательного доступа, WRITE имя файла {,Rr}{,Bb} - для прямого доступа. После выполнения команд OPEN и WRITE любой вывод из программы, выполняемый с помощью программы "Системный монитор" или PRINT "Бейсика", направляется в открытый текстовый файл. На экране результаты вывода появляются в зависимости от состояния "О" команд MON/NOMON (см.пп. 3.2.1.7, 3.2.1.8). При записи в ранее созданный файл старая запись замещается новой. Если требуется дополнить файл, следует вместо OPEN использовать APPEND (см.п. 3.3.1.7). 3.3.1.4. Чтение из файла READ имя файла {,Bb} - для последовательного доступа, READ имя файла {,Rr}{,Bb} - для прямого доступа. После выполнения OPEN и READ весь ввод с помощью программы "Системный монитор" или INPUT и GET "Бейсика", запрашиваемый при выполнении программы пользователя (но не ввод, запрашиваемый в диалоге "Бейсик"), выполняется из открытого текстового файла. Отображение данных на экране задается состоянием "I" команд MON/NOMON. 3.3.1.5. Исполнение из файла EXEC имя файла {,Rr}{,Ss}{,Dd}{,Vv} После выполнения этой команды весь ввод с помощью программы "Системный монитор" выполняется из текстового файла до тех пор, пока в нем не встретится команда CLOSE без предшествующей ей OPEN, либо до исчерпания файла. Вводимые команды диалогов различных подсистем исполняются по мере поступления, ввод запускаемых при этом программ также производится из исполняемого файла (кроме случая, когда запущенная программа открыла для себя другой файл на чтение). Команда EXEC может использоваться в прямом диалоге ДОС. 3.3.1.6. Позиционирование файла POSITION имя файла {,Rr} - пропускает r записей в файле (записей заданной длины для прямого доступа, символов "конец строки" для последовательного доступа). Выключает режим чтения и записи. 3.3.1.7. Наращивание файла с последовательным доступом APPEND имя файла {,Ss}{,Dd}{Vv} - открывает файл с последовательным доступом и позиционирует его на последний символ. Последующий WRITE будет наращивать файл. Защита по записи на открытый командой APPEND файл не распространяется. 3.3.2. Обращение по физическим адресам Для программных обращений предоставляется доступ к ГМД по физическим адресам. НГМД ЕС5088 (ЕС5323) размечает ГМД на 35(160) дорожек - треков, на каждом из которых размещается 16 (21) секторов. Нумерация треков ведется с 0 от внешней окружности к центральному отверстию. В стандартном варианте начальные треки заняты программами ДОС, на треке 17 хранится каталог ГМД. Служебной информацией заняты также 0 сектора 50 и 114 треков. Остальные треки предоставляются пользователю. Для обращения к ЧЗТС (подпрограмма чтения/записи трека и сектора) необходимо иметь в памяти таблицу, формат которой описан в разделе 4. Адрес табл.1 помещается в регистры А (старший байт) и Y (младший байт), после чего управление передается по адресу $3D9. Пример обращения к ЧЗТС (чтение 7 сектора 9 трека с НГМД1 на разъеме 3 без учета номера тома в буфер по адресу БУФЕР): *$1000: !LDA #< ТАБЛ1 !LDY #> ТАБЛ1 !JSR $3D9 !LDA ТАБЛ1+13 !STA ANSER !RTS !ТАБЛ1: $1300100; ТИП ТАБЛИЦЫ, РАЗ'ЕМ, ПРИВОД, ТОМ !$0907; ТРЕК, СЕКТОР !=0; ПРИЗНАК НЕМЕДЛЕННОГО ОБРАЩЕНИЯ !=БУФЕР !#2; НЕ ИСПОЛЬЗУЕТСЯ !$01 !#4; ОСТАЛИСЬ ОТ ПРЕДЫДУЩЕГО ОБРАЩЕНИЯ CALL $1000 IF PEEK(ANSER)>0 THEN PRINT "ОШИБКА": STOP В ДОС таблица 1 размещается по адресу $557. 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕВходными данными ДОС служат директивы диалога и параметры программных обращений, выходными данными - результаты обмена с ГМД и сообщения об ошибках обращения (см. разделы 3 и 5). Ниже приведена структура таблиц, используемых при обращениях к программе ЧЗТС (см. табл.1). Таблица 1 --------------------------------------------------- БАЙТ ! СОДЕРЖИМОЕ --------------------------------------------------- 1 ! тип таблицы = $01 2 ! номер разъема НГМД, умноженный на $10 3 ! номер привода НГМД на контроллере (1/2) 4 ! номер тома НГМД. Если $00 - игнорировать номер тома 5 ! номер трека ($00 - $9F) 6 ! номер сектора ($00 - $14) 7-8 ! 0: выполнить немедленно, >0: можно отложить 9-10 ! адрес буфера для чтения/записи 11-12 ! не используются 13 ! код работы: ! 0-включить НГМД, подвести головку ! 1-чтение 256 байт в буфер ! 2-запись 256 байт из буфера ! 4-разметка ГМД 14 ! код завершения обмена: ! 0-нормальное завершение ! $10-ГМД защищен от записи ! $20-не тот номер тома ! $40-сбой ГМД ! $80-сбой при чтении 15 ! номер тома ГМД (предыдущее обращение 16 !$10*S (номер разъема в старшеm полубайте) 17 ! d (номер ГМД-предыдущее обращение) 5. СООБЩЕНИЯ ОБ ОШИБКАХВсего ДОС индицирует 15 ошибок различного рода и на уровне языка "Бейсик" они распечатываются в развернутой форме, не требующей пояснений. На уровне монитора выводится код ошибки, при этом код ошибки имеет следующий смысл: 01 - язык не доступен системе (нет интерпретатора языка "Бейсик") 02,03 - ошибка в диапазоне 04 - ГМД защищен на запись 05 - чтение после конца данных 06 - файл не найден 07 - не тот том (неправильно указан параметр) 08 - ошибка ввода-вывода 09 - ГМД полностью ицпользован и дальнейшая запись на него невозможна 0А - файл защищен на запись 0В - синтаксическая ошибка 0C - нет свободных буферов ввода-вывода 0D - команда не для этого типа файла 0E - нет конца программы 0F - команда недоступна в прямом диалоге * * ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * |