Закрыть окно         Список других документов библиотеки Серкова

ACEF-ACF5  Программа обработки функции LOCK.
           Сделать байт маски =¤80.
           Перейти к общей программе ¤ACFB.

ACF6-ACFA  Программа обработки функции UNLOCK.
           Сделать байт маски =¤00.
           Перейти к общей программе ¤ACFB.

ACFB-AD11  Общая программа LOCK/UNLOCK.
           Найти/открыть файл (¤AB28). Получить индекс поля
           описания данного файла в Каталоге. Модифицировать
           в поле байт типа файла. Записать текущий сектор
           Каталога на диск. Выйти из мененджера файлов.

AD12-AD17  Программа обработки функции POSITION.
           Вызвать программу позиционирования.
           Выйти из мененджера файлов.

AD18-AD2A  Программа обработки функции VERIFY.
           Найти/открыть файл (¤AB28).
  AD1B  Прочитать следующий сектор данных. Если достигнут 
        конец файла, то выйти из мененджера файлов. Иначе
        выполнить инкремент позиции сектора и вернуться на
        ¤AD1B для следующего шага цикла.

AD2B-AD88  Программа обработки функции DELETE.
           Найти/открыть файл (¤AB28). Используя индекс 
           Каталога, определить, защищен ли файл. Если да, то
           выйти с кодом ошибки FILE LOCKED. Иначе перенести  
           номер трека Т/С списка из первого байта поля
           описания файла в рабочей области в последний символ
           имени файла в этом поле, а на его место записать
           номер =¤FF, отмечая файл как удаленный. Записать
           текущий сектор Каталога на диск.
  AD54  Прочитать следующий сектор Т/С списка (¤AF5E).
        Если такого сектора больше нет, то записать буфер VTOC
        на диск и выйти из мененджера файлов. Иначе прочитать
        в буфер сектор Т/С списка (¤AF0C) и установить индекс
        на первую Т/С пару.
  AD5E  Если номер трека <=0, то пропустить его. Иначе 
        освободить сектор данных, модифицируя битовую карту 
        тома во VTOC (¤AD89). Установить индекс на следующую
        Т/С пару. Если она есть, то перейти на ¤AD5E.
        Освободить текущий сектор, занимаемый Т/С списком.
        Прочитать следующий сектор Т/С списка. Если он есть, то
        перейти на ¤AD54. Иначе записать модифицированный 
        VTOC на диск. Выйти из мененджера файлов.

AD89-AD97  Освобождение сектора.
           Вызвать ¤B2DD для освобождения сектора в битовой
           карте VTOC. Обнулить область заполнения сектора в
           рабочей области. Выйти в вызывающую программу.

AD98-AE2E  Программа обработки функции CATALOG.
           Инициализировать рабочую область мененджера файлов
           (¤ABDC). Установить величину V = 00 (обратный код
           ¤FF). Прочитать VTOC (¤AFF7). Установить счетчик
           выводимых строк =22. Пропустить 2 строки на экране.
           Вывести "DISK VOLUME", преобразовать номер тома и 
           вывести его (¤AE42). Пропустить на экране еще две 
           строки.
  ADCA  Прочитать следующий сектор Каталога. Если секторов
        больше нет, то выйти из мененджера файлов.
        Иначе установить индекс на первое поле описания файла.
  ADD1  Получить номер трека. Если он =0, то выйти из 
        мененджера файлов, если <0, то пропустить это поле
        (удаленный файл): инкремент индекса поля описания 
        файла в текущем секторе Каталога, если индекс <7, то
        переход на ¤ADD1. Иначе переход на ¤ADCA.]
        Иначе вывести "*", если файл защищен. Использовать тип
        файла как индекс в таблице имен типов файлов (¤B3A7)
        и вывести найденный там символ. Вывести пробел.
        Преобразовать и вывести число секторов в файле.
        Вывести пробел. Вывести имя файла. Перейти на следующую
        строку, продвинуть индекс к следующему полю в Каталоге.
        Если поля еще есть, то перейти на ¤ADD1, иначе перейти
        на ¤ADCA для чтения следующего сектора Каталога.

AE2F-AE41  Пропуск строки при выводе Каталога.
           Вывести возврат каретки. Выполнить декремент 
           счетчика строк. Если <>0, то выйти. Иначе ожидать
           нажатия любой клавиши. Установить счетчик на 21
           строку и выйти.

AE42-AE69  Преобразовать номер, записанный в яч.¤44, в трех-
           символьный печатаемый десятичный номер, вывести его.

AE6A-AE7D  Восстановление рабочей области мененджера файлов из
           буфера файла. Выбрать буфер рабочей области.
           Сделать код возврата в списке параметров =0.
           Продублировать в действительной рабочей области
           45-и байтную копию рабочей области мененджера
           файлов, сохраненную в буфере файла.
           Выйти в вызывающую программу.

AE7E-AE8D  Сохранение рабочей области мененджера файлов в 
           буфере файла. Выбрать буфер действительной рабочей
           области мененджера файлов. Скопировать его в буфер
           файла и выйти.

AE8E-AF07  Программа обработки функции INIT.
           Инициализировать рабочую область мененджера файлов
           (¤ABDC). Вызвать RWTS для разметки диска (¤B058).
           Скопировать значение V в буфере VTOC. Установить
           номер трека =¤11, направление заполнения =¤01.
           Обнулить битовую карту VTOC. Пропуская первые три
           трека и трек ¤11, заполнить битовую карту VTOC
           копированием 4-х байтной маски ¤B3A0 в поле каждого
           трека в этой карте. Обнулить буфер сектора Каталога.
           Сформировать в этом буфере форму пустого сектора
           Каталога с заполнением цепочечного указателя на
           следующий сектор Каталога. Вызвать RWTS для записи
           сектора Каталога. Записать таким образом все 
           сектора Каталога. Ввести для RWTS параметры точки
           загрузки DOS (¤B7C2). Записать копию DOS.
           Выйти из мененджера файлов.

AF08-AF1C  Выбрать буфер, оставляя в яч.¤42-43 его указатель.
  AF08  Выбрать в буфере файла буфер рабочей области мененджера
        файлов.
  AF0C  Выбрать в буфере файла буфер сектора Т/С списка.
  AF10  Выбрать в буфере файла буфер сектора данных.
        Выйти в вызывающую программу, когда указатель в ячейках ¤42-43 установлен.

AF1D-AF33   Проверить был ли записан буфер сектора данных на
            диск. Сначала проверить "флаг изменения". То есть
            проверить был ли изменен буфер после последней 
            операции чтения/записи. Если не был то выйти. 
            Иначе - установить указатель RWTS (¤AFE4). Выз-
            вать RWTS для записи сектора. Сбросить флаг, по-
            казывая, что сектор более не нуждается в проверке
            Вернуться к пользователю.

AF34-AF4A   Аналогичная подпрограмма для проверки буфера TSL-
            списка. (Указатель для RWTS - ¤AF4B).

AF4B        Подготавливает работу RWTS с сектором T/S списка.
            Переносит адрес буфера T/S списка в таблицу RWTS.
            Устанавливает трек/сектор данного сектора. Воз-
            вращается к пользователю.

AF5E-AFDB  Подпрограмма читает сектор T/S списка в буфер 
           файла (флажок переноса установлен на входе, чтобы
           показать первый сектор TSL файла нужен (C=0) или
           следующий (C=1). Запоминает флаг переноса (код
           работы). Проверяет текущий сектор T/S списка, ес-
           ли это необходимо.
           Делает установки для RWTS (¤AF4B), выбирает буфер
           под TSL (¤AF0C).
           Если нужен первый T/S сектор, то перейти на ¤AFB5
           для продолжения. Иначе берет ссылку на следующий
           сектор TSL из данного. Если ссылка не нулевая, то
           RWTS ищет этот сектор и идет на ¤AFB5. Иначе - 
           больше нет T/S списков для этого файла. Если мы
           читали файл, то выйти с признаком ошибки.
           В противном случае, занять новый сектор (¤B244).
           Установить в старом секторе Т/С Списка указатель
           трека/сектора нового Т/С Списка. Записать старый 
           сектор Т/С Списка обратно на диск. Обнулить буфер 
           для формирования нового сектора Т/С Списка.
           Вычислить и записать со смещением +5, +6 в данном 
           буфере относительный номер первого сектора из списка
           в данном секторе. Установить код операции RWTS 
           для записи нового Т/С списка на диск.
  AFB5  Установить код операции RWTS для чтения старого Т/С 
        списка (если только мы не формировали его перед этим).
        Установить номера трека и сектора и вызвать RWTS для 
        чтения старого списка или записи нового.
        Вычислить относительный номер (плюс единица) последнего
        сектора в этом списке и сохранить его в рабочей 
        области. Выйти в вызывающую программу с нормальным 
        кодом возврата.

AFDC-AFE3  Чтение сектора данных.
           Установить параметры для RWTS(¤AFE4). Установить для
           RWTS код операции READ (ЧТЕНИЕ) и перейти к драйверу
           RWTS для ее выполнения.

AFE4-AFF6  Подготовка к вызову RWTS для обслуживания сектора 
           данных. Скопировать в списке параметров RWTS адрес 
           буфера сектора данных. Получить номер его трека и 
           сектора. И выйти в вызывающую программу.

AFF7-B010  Чтение/запись буфера VTOC.
  AFF7  Чтение Оглавления Тома -- перейти на ¤AFFD.
  AFFB  Запись Оглавления Тома -- пройти дальше.
  AFFD  Общая программа.
        Скопировать в списке параметров RWTS адрес буфера 
        сектора VTOC. Получит номер его трека и 
        использовать сектор ¤00. Выйти через драйвер RWTS.

B011-B036  Чтение сектора каталога. (Если на входе флажок 
           переноса C=0, то считывается первый сектор каталога.
           Если C=1, то считывается следующий сектор). 
           Запомнить входной код. Установить указатель буфера 
           (¤B045). Первый или следующий ? Если первый, то
           получить номера трека и сектора для сектора Каталога
           из VTOC, смещения +1, +2. Иначе получить номера 
           трека/сектора из сектора Kаталога, смещение +1, +2. 
           Если номер трека - ноль, выйти с кодом ошибки (конец
           Каталога). Вызвать RWTS для чтения сектора. Выйти с 
           нормальным кодом возврата.

B037-B044  Запись сектора Каталога. Установить указатели 
           буфера. Найти номера трека/сектора в рабочей области
           Выйти через RWTS для записи буфера.

B045-B051  Подготовка к вызову RWTS для обслуживания буфера
           Каталога. Скопировать в списке параметров RWTS адрес
           буфера Каталога. Выйти в вызывающую программу.

B052-B0B5  Драйвер Чтения/Записи Трека/Сектора (RWTS) (Read/
           Write Track/Sector driver). Установить трек/сектор в
           списке параметров RWTS.
  B058  Установить код команды (чтение, запись и т.д.). Если 
        запись, то установить флажок (¤B5D5). Установить в 
        списке параметров ожидаемый номер тома, номер 
        разъема * 16, номер накопителя, номер сектора и тип
        IOB (блок ввода/вывода) - (¤01). Вызвать RWTS, 
        передавая указатель списка параметров. Скопировать в 
        списке параметров менеджера файлов найденный номер 
        тома. Сбросить в списке параметров RWTS поле ожидаемого
        номера тома. Если не было ошибок, выйти в вызывающую 
        программу. В противном случае, получить код возврата.
        Поставить в соответствие несовпадение тома коду RC=7,
        защиту от записи -- RC=4 и все остальные ошибки -- RC=8
        (I/O error -- ошибка ввода/вывода). После этого выйти
        из мененджера файлов.

B0B6-B133  Чтение следующего сектора данных(если нужно).
           Находится ли в данный момент в памяти текущая
           позиция файла в текущем секторе данных ?
           Если да, то перейти на ¤B12C.
           Иначе выполнить контрольную запись буфера сектора
           данных. Текущая позиция файла лежит вне "сферы
           влияния" данного Т/С списка ? Если нет, то перейти
           на ¤B0F3. Иначе читать все Т/С списки файла, начиная
           с первого, до тех пор, пока не будет найден нужный.
           Если он не найден вообще, то выйти с ошибкой 
           (чтение с выходом за окончание файла).
  B0F3  Данные описаны в этом секторе Т/С списка. Вычислить 
        смещение нужного поля в данном секторе Т/С списка.
        Выбрать буфер Т/С списка. Получить номер трека 
        необходимого сектора данных. Если номер <>0, то перейти
        на ¤B114. Иначе, если не идет запись, выйти с ошибкой
        (нет данных для чтения). Если идет запись, то занять
        новый сектор и сохранить его номера трека/сектора в
        в текущей точке Т/С списка (¤B134). Перейти на ¤B120.
  B114  Прочитать старый сектор, используя трек/сектор,
        найденный в поле Т/С списка.
  B120  Сохранить в рабочей области номер последнего 
        прочитанного сектора.
  B12C  Выбрать буфер данных, получить смещение байта и выйти
        обычным путем в вызывающую программу.

B134-B15A  Добавление к файлу нового сектора данных.
           Занять сектор (¤B244). Поместить номер трек/сетора
           в Т/С список. Выбрать буфер данных и обнулить его.
           Установить флажки, сигнализирующие о том, что буфер
           сектора Т/С списка и сектора данных требуют
           контрольной записи. Выйти в вызывающую программу.

B15B-B193  Инкремент номера записи и смещение байта в файле.
           Скопировать в списке параметров мененджера файлов
           текущие номер записи и смаещение байта для передачи
           в вызывающую программу. Выполнить в рабочей области
           инкремент смещения байта. Если смещение байта равно
           длине записи, то сделать смещение байта =0 и 
           выполнить инкремент номера записи. Выйти в
           вызывающую программу.

B194-B1A1  Инкремент смещения позиции файла.
           Инкремент смещения позиции файла в текущем секторе.
           Если достигнут конец сектора, то инкремент номера
           сектора и выход в вызывающую программу.

B1A2-B1B4  Копирование и продвижение адреса ряда.
           Скопировать в яч.¤42-43 адрес ряда из списка
           параметров мененджера файлов. Выполнить в списке
           параметров инкремент адреса ряда для следующего
           раза и выйти в вызывающую программу.

B1B5-B1C8  Декремент длины ряда в списке параметров мененджера
           файлов. Если результат =0, то выйти из мененджера
           файлов. Иначе выйти в вызывающую программу.

B1C9-B21B  Поиск/создание поля описания файла в Каталоге.
           Прочитать сектор VTOC (¤AFF7). Ввести в яч.¤42-43
           указатель имени файла, который мы разыскиваем.
           Приравнять номер прохода 1 (найти файл).
  B1D8  Инициализировать смещение сектора Каталога(1-й сектор).
  B1E1  Выполнить инкремент смещения сектора. Прочитать сектор
        Каталога. Если достигнут конец Каталога, то перейти
        на ¤B23A. Иначе установить входной индекс для поля
        описания 1-го файла.
  B1EB  Получить номер трека. Если файл удален, то пропустить
        поле описания файла и перейти на ¤B217. Если поле
        пустое(конец Каталога), то перейти на ¤B212.
        Иначе продвинуть индекс в Каталоге к имени файла.
        Сравнить имя с требуемым. Если они совпадают, то 
        вернуть индекс поля описания файла и выйти.
  B20B  Если нет, то продвинуть индекс к следующему полю
        описания и перейти на ¤B1EB для следующего шага цикла.
        Если достигнут конец сектора, то перейти на ¤B1E1 для
        получения следующего сектора.
  B212  Если номер прохода =1, то перейти на ¤B1D8 для начала
        2-го прохода.
  B217  Если номер прохода =1, то перейти на ¤B20B, чтобы
        пропустить поле описания файла. Если проход второй,
        то пройти дальше для создания поля описания файла.

.ст DOS (логика)6 

Закрыть окно         Список других документов библиотеки Серкова