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

B21C-B22F  Копирование имени файла в поле описания файла в
           Каталоге. Продвинуть индекс к полю имени файла.
           Скопировать в него 30-и байтное имя файла.
           Перезагрузить индекс в Каталоге и выйти.

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

B23A-B243  Переключение на второй проход при сканировании
           Каталога. Если идет 1-й проход, то переключиться
           на 2-й и перейти на ¤B1D8. Если идет 2-й проход, то
           выйти из мененджера файлов с ошибкой DISK FULL.

B244-B2C2  Выделение сектора на диске.
           Есть свободный сектор на текущем треке ?
           Если нет, то перейти на ¤B26A для поиска нового 
           трека. 
  B249  Иначе выполнить декремент номера сектора для получения
        номера следующего сектора. Выполнить циклический сдвиг
        битовой маски трека на 1-у позицию и получить бит
        флажок занятости этого сектора. Если сектор занят, то
        вернуться на ¤B249 для следующего шага цикла.
        Иначе инкремент счетчика секторов в файле, вернуть
        номер сектора(номер трека в яч. ¤B5F1). Выйти в 
        вызывающую программу.
  B265  Сигнализировать об отсутствии в даннй момент трека,
        который может быть использован.
  B26A  Сбросить флажок выделения сектора, чтобы дать 
        возможность провести по меньшей мере один полный 
        просмотр всех треков в поисках свободного сектора.
        Прочитать сектор VTOC.
  B272  Получить из него номер последнего занятого трека и
        прибавить значение направления (+1 или -1), чтобы
        получить номер слежующего, подлежащего обследованию,
        трека. Вернулись ли мы к треку 0 ? Если да, то
        перейти на ¤B284. Иначе, миновали ли мы трек 34 ?
        Если да, то изменить направление на противоположное и
        перейти на ¤B28E.
  B284  К треку 0 мы подошли 2-й раз ? (проверить флажок 
        заполнения). Если да, то выйти с ошибкой DISK FULL.
        Иначе установить флажок заполнения, чтобы запомнить
        эту ситуацию. Установить направление "вперед"(+1).
  B28E  Начать с трека номер 17+ или -1. Вычислить индекс
        его битовой карты. Скопировать в рабочую область
        мененджера файлов эту битовую карту из VTOC, чтобы
        определить занятость трека. Если свободных секторов
        нет, то перейти на ¤B272 для проверки следующего трека.
        Иначе приравнять номер сектора номеру последнего 
        свободного сектора и перейти на ¤B249 для включения 
        в файл этого сектора.

B2C3-B2DC  Освобождение занятых секторов на текущем треке и
           контрольная запись VTOC. Был ли трек добавлен к
           файлу ? Если нет, то выйти в вызывающую программу.
           Иначе прочитать VTOC и получить номер сектора,
           который может быть использован(число сдвигов карты
           во время заполнения). Вызвать ¤B2DD для сдвига 
           битовой карты в обратном направлении и слияния ее
           с битовой картой VTOC. Сигнализировать о том, что
           трек не заполнялся. Выйти в вызывающую программу.

B2DD-B2FF  Освобождение одного или более секторов путем сдвига
           битовой маски в области заполнения мененджера файлов
           и введения ее в битовую карту VTOC.
           (если C=1, то освобождается также текущий сектор.
           Выполнить один раз сдвиг всей 4-х байтной битовой
           маски трека. Повторить столько раз, сколько было
           заполнено секторов.

B300-B35E  Сосчитать позицию файла. Устанавливает номер про-
           шедшей записи в списке параметров менеджера файлов
           в рабочей области и в смещениях секторов. Очищает
           верхнюю часть сещений секторов.
           Представляет в расширенном формате 16 бит как ука-
           зано ниже:
           3-х байтовый номер позиции файла = номер записи +
           длина записи. Прибавляет байт OFFSETS из списка
           параметров к содержимому трех байт позиции файла:
           ¤B5E4-¤B5E6. Возврат в вызвавшую программу.

B35F-B37D  Выходы по ошибке (RC-код возврата).
           
  B35F     RC=1 "язык недоступен системе"
  B363     RC=2 "ошибка в диапазоне (не тот тип операции FM)"
  B367     RC=3 "--//-- (не тот подтип операции для FM)"
  B36B     RC=4 "запись закрыта"
  B36F     RC=5 "конец данных"
  B373     RC=6 "файл не найден"
  B377     RC=9 "диск полон (все файлы закрыты)"
  B37B     RC=A "файл закрыт на запись)"

B37F-B396  Выход из менеджера файлов.
           
  B37F     Выход без ошибки. Взять код возврата 0. Очистить 
           флажок переноса (C=0) и перейти на ¤B386.
  B385     Установить флаг переноса (C=1) инициирующий ошибку
           Записать код возврата (RC, как в таблице) в список
           параметров менеджера файлов. Очистить регистр сос-
           тояния монитора (¤48) после возможной порчи RWTSом
           Переписать рабочую область менеджера файлов в бу-
           фер файла (¤AE7E). восстановить флаг состояния 
           процессора и регистр указателя стека (P и S). Вый-
           ти в программу, вызвавшую менеджер файлов (FM).

B397-B3A3  Многоцелевая область мененджера файлов.
  B397  Трек/сектор текущего сектора Каталога.
  B39B  Область сохранения регистра S.
  B39C  Индекс Каталога.
  B39D  Счетчик строк Каталога / Флажок просмотра Каталога.
  B39E  Маска LOCK/UNLOCK / Флажок заполнения.
  B3A0  4-х байтная маска, используемая в команде INIT для
        освобождения целого трека в битовой карте VTOC.

B3A4-B3A6  Таблица десятичного преобразования(1,10,100).

B3A7-B3AE  Таблица имен типов файлов, используемая в команде
           CATALOG. Типы файлов T,I,A,B,S,R,A,B относятся к
           16-ричным значениям: ¤00,¤01,¤02,¤04,¤08,¤10,¤20 и
           ¤40 соответственно.

B3AF-B3BA  Текст "DISK VOLUME" в кодах ASCII (задом наперед).
           Используется в команде CATALOG.

B3BB-B4BA  Буфер сектора VTOC.
  B3BC  Трек/сектор первого сектора Каталога.
  B3BE  Номер версии DOS.
  B3C1  Номер тома дискеты.
  B3E2  MAX. количество указателей в одном секторе Т/С списка.
  B3EB  Номер следующего заполняемого трека.
  B3EC  Направление заполнения (+1 - в сторону увеличения 
        номеров треков, -1 - в обратном направлении).
  B3EF  Количество треков на диске.
  B3F0  Количество секторов на одном треке.
  B3F1  Размер сектора в байтах.
  B3F3  Битовая карта треков (по 4 байта на каждый из 35-и 
        треков).

B4BB-B5BA  Буфер сектора Каталога.
  B4BC  Трек/сектор следующего сектора Каталога (цепочечный
        указатель).
  B4C6  Первое поле описания файла:
      B4C6  Трек Т/С списка;
      B4C7  Сектор Т/С списка;
      B4C8  Тип файла и бит защиты;
      B4C9  Поле имени файла (30 байт);
      B4E7  Размер файла в секторах, включая Т/С список файла.

B5BB-B5D0  Список параметров мененджера файлов.
  B5BB  Код операции.
  B5BC  Подтип операции.
  B5BD  8 байт различных параметров, в зависимости от кода
        операции.
  B5C5  Код возврата.
  B5C7  Адрес рабочей области мененджера файлов.
  B5C9  Адрес буфера сектора Т/С списка.
  B5CB  Адрес буфера сектора данных.
  B5CD  Адрес следующего буфера DOS из цепочки(не использован).

B5D1-B5FD  Рабочая область мененджера файлов.
  B5D1  Трек/сектор первого сектора Т/С списка файла.
  B5D3  Трек/сектор текущего сектора Т/С списка файла.
  B5D5  Флажки: ¤80=Т/С список нуждается в контрольной записи.
                ¤40=Сектор данных нуждается в контрольной 
                    записи.
                ¤20=Сектор VTOC нуждается в контрольной записи.
                ¤02=Последней операцией была запись.
  B5D6  Трек/сектор текущего сектора данных.
  B5D8  Индекс поля описания файла, выраженный в секторах
        Каталога.
  B5D9  Индекс поля описания файла внутри сектора Каталога.
  B5DA  Количество секторов, описанных в одном секторе 
        Т/С списка.
  B5DC  Относительный номер первого сектора в текущем секторе
        Т/С списка.
  B5DE  Относительный номер +1 последнего сектора в текущем
        секторе Т/С списка.
  B5E0  Относительный номер последнего прочитанного сектора.
  B5E2  Длина сектора в байтах.
  B5E4  Смещение сектора, содержащего позицию файла(3 байта).
  B5E7  Смещение байта в этом секторе.
  B5E8  Длина записи из команды OPEN.
  B5EA  Номер записи.
  B5EC  Смещение байта в записи.
  B5EE  Количество секторов в файле.
  B5F0  Область заполнения секторов (6 байт):
        - номер следующего заполняемого сектора(сч-ик сдвигов);
        - номер заполняемого трека;
        - 4-х байтная битовая карта трека, циклически 
        сдвигаемая для получения номера следующего свободного
        сектора.
  B5F6  Тип файла.
  B5F7  Номер разъема * 16.
  B5F8  Номер НГМД.
  B5F9  Номер тома (в обратном коде).
  B5FA  Номер трека.

B5FE-B5FF  Не использованы.

B600-B6FF  Начало копии Загрузчика 2/RWTS.
  B600  Копия Загрузчика 1.
  B65D  Область "заплат" DOS 3.3.:
      B65D  Флажок "заплаты" APPEND;
      B65E  "Заплата" APPEND. Обращение в эту точку происходит
            тогда, когда драйвер мененджера файлов получает 
            ошибку, отличную от ошибки END OF DATA.
            Найти и освободить буфер файла. Сбросить флажок
            APPEND. Получить номер ошибки и перейти к выводу
            сообщения (¤A6D2);
      B671  "Заплата" APPEND. Обращение в эту точку происходит 
            из программы обработки APPEND для инкремента номера
            записи, если флажок APPEND установлен, и для сброса
            флажка. Выйти через POSITION;
      B686  "Заплата" VERIFY. Обращение в эту точку происходит
            из программы ввода/вывода ряда байтов для выхода 
            через VERIFY после команд SAVE и BSAVE;
      B692  "Заплата" APPEND. Обращение в эту точку происходит
            из драйвера мененджера файлов, если код возврата
            соответствовал ошибке END OF DATA. Проверить, не
            равна ли 0 позиция файла. Если нет, то установить 
            флажок APPEND и вернуться в вызывающую программу.
            Если да (начало файла), то скопировать в списке
            параметров мененджера файлов номер записи и 
            смещение байта, вернуть в вызывающую программу
            нулевой байт даннйх.
  B6FE  Адрес первой страницы в Загрузчике 2.
  B6FF  Количество секторов(страниц) в Загрузчике 2.

B700-B749  Начальный Загрузчик DOS 2-й ступени.
           Заполнить список параметров RWTS для чтения DOS с
           диска. Вызвать Чтение/Запись группы страниц(¤B793).
           Создать новый стек. Вызвать SETVID(¤FE93) и 
           SETKBD(¤FE89). Выйти через "холодный" старт DOS
           (¤9D84).

B74A-B78C  Запись DOS на треки 0-2.
           Заполнить список параметров RWTS для записи DOS
           на диск. Вызвать Чтение/Запись группы страниц
           (¤B793). Выйти в вызывающую программу.

B78D-B792  Не использованы.

B793-B7B4  Чтение/запись группы страниц.
           Вызвать RWTS через внешнюю точку входа (¤B7B5).
           Выйти в вызывающую программу.

B7B5-B7C1  Запрещение прерываний и вызов RWTS.

B7C2-<7D5  Установка параметров для записи DOS.

B7D6-B7DE  Обнуление текущего буфера(256 байт), адрес которого
           содержится в яч. ¤42-43.

B7DF-B7E7  Список параметров начального Загрузчика DOS 
           2-й ступени. 
  B7DF  Не использован.
  B7E0  Число страниц в Загрузчике DOS 2-й ступени.
  B7E1  Число секторов для чтения/записи.
  B7E2  Число страниц в Загрузчике 1 DOS.
  B7E3  Счетчик страниц DOS для команды INIT.
  B7E4  Указатель списка параметров RWTS.
  B7E6  Начальный адрес Загрузчика 1-ой ступени.

B7E8-B7F8  Список параметров RWTS.
  B7E8  Тип таблицы. Должен быть равен ¤01.
  B7E9  Номер разъема * 16.
  B7EA  Номер НГМД.
  B7EB  Предполагаемый номер тома.
  B7EC  Номер трека.
  B7ED  Номер сектора.
  B7EE  Указатель таблицы характеристик устройства.
  B7F0  Указатель буфера данных пользователя для чтения/записи.
  B7F2  Не использован.
  B7F3  Счетчик байтов отдельного сектора (использовать ¤00 
        для 256).
  B7F4  Код команды: 0=SEEK(поиск),   1=READ(чтение),
                     2=WRITE(запись), 4=FORMAT(разметка).
  B7F5  Код ошибки: (действителен, если установлен перенос)
                    ¤10=WRITE PROTECT(защита от записи);
                    ¤20=VOLUME MISMATCH(несовпадение тома);
                    ¤40=DRIVE ERROR(ошибка накопителя);
                    ¤08=INIT ERROR(ошибка инициализации).
  B7F6  Найденный номер тома.
  B7F7  Найденный номер разъема.
  B7F8  Найденный номер накопителя.

B7F9-B7FA  Не использованы.

B7FB-B7FE  Таблица характеристик устройства.
  B7FB  Тип устройства. Должен быть равен ¤00.
  B7FC  Число фаз трека. Должно быть равно ¤01.
  B7FD  Счетчик времени включения двигателя. Должны быть
        равны ¤EF, ¤D8.
  B7FF  Не использован.

B800-B829  Программа PRENIBBLE("Предварительного" расщепления).
           Преобразует 256 8-ми разрядных слов в 
           342 6-и разрядных слова в форме 00хххххх. Указатель
           страницы, подлежащей преобразованию записан в
           яч.¤3E-3F. На выходе: A-регистр - не определен.
                                 X=¤FF, Y=¤FF, C=1.

B82A-B8B7  Программа WRITE. Записывает предварительно 
           "расщепленные" данные из первичного и вторичного 
           буферов на диск. Вызывает ПП записи байта.
           Записывает 5 байт автосинхронизации, адресное поле
           сектора и поле данных. Использует Таблицу трансляции
           записи (¤BA29).
           На входе: X-регистр - номер разъема * 16.
           На выходе: В случае ошибки C=1.
                      Если ошибки нет, то
                      A-регистр не определен;
                      X-регистр не изменяется;
                      Y=¤00, C=0.
           Используются яч. ¤26, ¤27, ¤678.

B8B8-B8C1  ПП записи байта.
           Машинная программа с критичным временем выполнения,
           предназначенная для записи байтов с интервалом 
           в 32 такта.

B8C2-B8DB  Программа POSTNIBBLE (Последующего декодирования).


B8DC-B943  Программа READ. Прочитать сектор с диска и сохранить
           его в первичном и вторичном буферах (сначала 
           используется вторичный буфер от старших адресов к 
           младшим, затем - первичный буфер от младших адресов
           до старших). Если нет ошибок, то C=0. Используются
           яч. ¤26.

B944-B99F  Программа RDADR - чтение адресного поля сектора.
           Используются ячейки: ¤2F- номер тома.
                                ¤2Е- номер трека.
                                ¤2D- номер сектора.
                                ¤2C- контрольная сумма поля.
                                ¤26-27.

B9A0-B9FF  Программа SEEKABS. Перемещение головки к требуемому
           треку. Вызывает программу задержки перемещения
           привода (¤BA00).
           На входе: X - номер разъема * 16;
                     A - номер требуемого трека("полутрека
                         для однофазного диска).
                     ¤478 - номер текущего трека.
           На выходе: A и Y не определены;
                      X не изменяется;
                      ¤2A и ¤478 - номер конечного трека
                      ¤27 - номер исходного трека (если
                            перемещение понадобилось).

BA00-BA10  Программа задержки перемещения привода головки.
           На входе: A - число 100-микросекундных интервалов;
                     ¤46-47 - значение счетчика времени
                              включения двигателя(¤EF,¤D8) из
                              Таблицы характеристик устроуства.
                     ¤478 - номер текущего трека.
           На выходе: A=0, X=0, C=1, Y не изменяется.

BA11-BA28  Таблица задержек перемещения привода головки.
           Используется при включении/выключении фаз
           шагового двигателя.

BA29-BA68  Таблица трансляции записи.

BA69-BA95  Не использованы.

BA96-BAFF  Таблица трансляции чтения.

BB00-BBFF  Первичный буфер.

BC00-BC55  Вторичный буфер.

BC56-BCC3  Запись адресного поля во время инициализации.
           Вызывает программу записи двойного байта.
           На входе: X- номер разъема * 16;
                     Y- число синхробайт;
                     ¤3E =¤AA;
                     ¤3F =номер сектора;
                     ¤41 =номер тома;
                     ¤44 =номер трека;
           На выходе: A не определен;
                      X не изменяется;
                      Y=¤00; перенос установлен (C=1).

BCC4-BCDE  Программа записи двойного байта.
           Машиннаф программа с критичным временем выполнения,
           которая кодирует адресную информацию в нечетных и
           четных битах и записывает их с интервалами в 32 
           такта.

BCDF-BCFF  Не использованы.

BD00-BD18  Главный вход в RWTS.
           Сохранить регистры A и Y в яч.¤48,49 в качестве
           указателя IOB. Установить max. число рекалибровок =1
           и число выходов на заданный трек =4. Проверить,
           изменился ли номер рзъема. Если нет, то перейти на
           SAMESLOT (¤BD34). 
  BD19  Модифицировать номер разъема в IOB и ожидать остановки 
        старого НГМД.
  BD34  ПП SAMESLOT("тот же разъем"). Включить режим чтения и
        читать с задержками, чтобы проверить, вращается ли 
        диск. Сохранить результаты теста и включить двигатель
        в любом случае.
  BD54  Перенести указатели из IOB на нулевую страницу для
        использования в будущем:
               - таблицы характеристик устройства в яч.¤3C-3D;
               - буфера данных в яч.¤3E-3F.
        Ввести в яч.¤47 время включения двигателя ¤D8.
        Проверить, изменился ли номер НГМД. Если нет, то 
        перейти на ¤BD74. Если да, то изменить результаты 
        теста, чтобы показать, что НГМД был выключен.
  BD74  Выбрать нужный НГМД и сохранить его номер в старшем
        бите яч.¤35(1- НГМД1, 0- НГМД2). Получить результаты 
        теста. Если НГМД был включен, то перейти на ¤BD90.
        Ожидать, пока разрядится конденсатор, используя 
        программу MSWAIT (¤BA00).
  BD90  Получить номер требуемого трека и перейти к этому 
        треку, используя программу MYSEEK (¤BE5A). Вновь
        проверить результаты теста и, если НГМД был включен,
        то перейти на TRYTRK (¤BDAB). Иначе включить задержку,
        чтобы дать возможность двигателю набрать скорость.

BDAB-BDBB  Программа TRYTRK. Получить код команды. Если код
           нулевой, то выйти через ALLDONE (BE46), выключая
           НГМД и возвращаясь в вызывающую программу.
           Если код =4, то перейти на FORMDSK (¤BE0D).
           Иначе выдвинуть младший бит в перенос и сохранить
           содержимое регистра состояния (C=1 - чтение,
           C=0 - запись). Если задана операция записи, то
           данные предварительно преобразуются путем вызова
           PRENIB16 (¤B800).
  BDBC  Установить максимальное число попыток =48 и прочитать
        адресное поле, используя RDADR16 (¤B944). Если чтение
        прошло успешно, то перейти на RDRIGHT (¤BDED). Если
        чтение с ошибкой, то выполнить декремент числа попыток
        и если попытки еще остались, то прочитать еще раз.
        Иначе подготовить рекалибровку, выполнить декремент 
        счетчика рекалибровок. Если результат =0, то 
        сигнализировать об ошибке НГМД через DRVERR (¤BE04).
        Иначе вновь приравнять 4 число повторных выходов на
        трек, рекалибровать привод головки и повторить чтение.

BDED-BE03  Программа RDRIGHT. Проверить, выполнено ли чтение
           с трека с верным номером. Если да, то перейти на
           RTTRK (¤BE10). Если нет, то установить верный номер 
           трека через SETTRK (¤BE95) и выполнить декремент
           счетчика числа выходов на трек. Если результат <>0,
           то повторно выйти на трек. Иначе выполнить 
           рекалибровку.

BE04-BE0A  Программа DRVERR. Очистить стек и регистр состояния.
           Загрузить в A ¤40 (ошибка НГМД). Перейти на 
           HNDLERR (¤BE48).

BE0B-BE0C  Использованы для ветвления на ALLDONE (¤BE46).

BE0D-BE0F  Программа FORMDSK.
           Безусловный переход на DSKFORM (¤BEAF).

BE10-BE25  Программа RTTRK. Сравнить найденный номер тома с
           требуемым. Если том не был указан, то ошибки нет.
           Если номер тома не соответствует, то загрузить
           в регистр A ¤20 (ошибка не совпадения тома) и
           выйти через HNDLERR (¤BE48).

BE26-BE45  Программа CRCTVOL. Проверить, найден ли сектор с 
           верным номером. Использовать таблицу чередования 
           секторов (¤BFB8) для программного чередования 
           секторов. Если номер сектора неверен, то попытаться
           еще раз через TRYADR (¤BDC1). Если номер верный, то
           выяснить, какая операция требуется. Если запись, то
           перейти на WRITE (¤BE51). Иначе прочитать данные,
           используя READ16 (¤B8DC). Если чтение прошло 
           успешно, то декодировать данные, используя POSTNB
           (¤B8C2) и вернуться в вызывающую программу без
           ошибок.

BE46-BE47  Программа ALLDONE. Миновать команду установки
           переноса в HNDLERR.

BE48-BE50  Программа HNDLERR. Установить перенос. Сохранить в
           IOB содержимое регистра A в качестве кода возврата.
           Выключить двигатель. Вернуться в вызывающую 
           программу.

BE51-BE59  Программа WRITE. Записать сектор, используя WRITE16
           (¤B82A). Если запись прошла успешно, то выйти через
           ALLDONE (¤BE46). Если при записи произошла ошибка,
           то загрузить в регистр A ¤10 (ошибка защиты от 
           записи) и выйти через HNDLERR (¤BE48).

BE5A-BE8D  Программа MYSEEK. Проводит необходимую подготовку
           для перехода на программу SEEKABS. Определяет число 
           фаз для трека и сохраняет информацию о треке в
           соответствующей ячейке, зависящей от номера разъема.

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

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