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

A846       Установить HIMEM целочисленного BASICа и указатели
           старта программы, чтобы указать конец последнего 
           буфера DOS. Выйти к пользователю.

A851-A883  Программа переустаонвки векторов клавиатурного и 
           видеоперехвата.
   A851    Является ли клавиатурный перехват установленным?
           То есть равны ли значения KSWL значениям адреса
           клав. перехв. DOSа? Если да, то перейти к ¤A86A
           Иначе сохранить текущий вектор KSWL в ячейках 
           ¤AA55 и ¤AA56 и заменить адресом клавиатурного пе-
           рехвата DOS.
   A86A    Является ли вектор видеоперехвата DOS еще установ-
           ленным? Если да то выйти. Иначе сохранить значения
           CSWL в ячейках ¤AA53 и ¤AA54 и заменить их на со-
           ответствующий адрес видеоперехвата DOS и выйти к
           пользователю.
           
A884-A908  Текстовая таблица имен команд DOS.
           Эта таблица содержит имена команд, записанные в 
           ASCILL для каждой команды в порядке возрастания 
           индекса команды.

A909-A940  Таблица действительных ключевых слов команд.
           
           Каждая команда имеет двухбайтовый код с 16 флагами
           показывающие, какие ключевые слова для нее разре-
           шены. Битовые установки флагов следующие: 
           
       БИТ  ЗНАЧЕНИЕ                                         
            
         0  Имя файла обязательно.
         1  Команда не имеет позиционного операнда.
         2  Имя 1-го файла ожидается.
         3  Имя 2-го файла ожидается.
         4  Ожидается номаер разъема (SLOT) в качестве пози-
            ционного операнда.
         5  Значение MAXFILES ожидается в качестве позицион-
            ного операнда.
         6  Команду можно ввести только в программе.
         7  Команда может создать новый файл, если файл не 
            найден.
         8  Разрешены ключевые слова C, I, O.
         9  Разрешено ключевое слово V (том).
        10  Разрешено ключевое слово D (привод).
        11  Разрешено ключевое слово S (слота).
        12  Разрешено ключевое слово L (длина).
        13  Разрешено ключевое слово R (номер записи).
        14  Разрешено ключевое слово B (байт).
        15  Разрешено ключевое слово A (адрес).

        Так, например, для команды OPEN, которой соответствует 
        значение ¤2378, биты 2,6,7,9,10,11,12 установлены, 
        обозначая тем самым, что команда имеет один операнд 
        имени файла, может быть введена только в программе, 
        может создать новый файл и для нее разрешены ключевые 
        слова V,D,S,L.
        Командам соответствуют следующие величины:
        INIT     ¤2170       LOAD     ¤A070       SAVE    ¤A170
        RUN      ¤A070       CHAIN    ¤2070       DELETE  ¤2070
        LOCK     ¤2070       UNLOCK   ¤2070       CLOSE   ¤6000
        READ     ¤2206       EXEC     ¤2074       WRITE   ¤2206
        POSITION ¤2204       OPEN     ¤2378       APPEND  ¤2270
        RENAME   ¤3070       CATALOG  ¤4070       MON     ¤4080
        NOMON    ¤4080       PR#n     ¤0800       IN#n    ¤0800
        MAXFILES ¤0400       FP       ¤4070       INT     ¤4000
        BSAVE    ¤2179       BLOAD    ¤2071       BRUN    ¤2071
        VERIFI   ¤2070

A941-A94A  Таблица имен ключевых слов.
           Этa таблица задает для каждого ключевого слова номер
           позиции соответствующего бита во втором байте поля
           из таблицы действительных ключевых слов команд,
           приведенной выше, и во флажковой ячейке ¤AA65,
           указывающей, какиеЮключевые слова были заданы в
           командной строке. Этим битам соответствуют
           следующие позиции:
      V - 40      D - 20      S - 10      L - 08    
      R - 04      B - 02      A - 01.
  Не использованы в таблице действительных ключевыхЮслов:
      C - C0...   I - A0...   O - 90...

A955-A970  Таблица диапазонов значений ключевых слов.
           Для каждого ключевого слова имеется 4-х байтное
           поле - по два байта на минимальное и максимальное
           значения. Эти значения равны:

           КЛЮЧЕВОЕ СЛОВО        MIN.        MAX.
                 V                0           254
                 D                1             2
                 S                1             7
                 L                1         32767
                 R                0         32767
                 B                0         32767
                 A                0         65535

           Ключевые слова C, I и O не встречаются в этой
           таблице, поскольку они не имеют числовых значений.

A971-AA3E  Таблица текстов сообщений об ошибках.
           Тексты расположены в порядке возростания кодов 
           ошибок:
  Номер    Текст/действие  (комментарий)
    0    RETURN, BELL, RETURN 
    1    "LANGUAGE NOT AVAILABLE" ("Язык не доступен").
  2 и 3  "RANGE ERROR"            ("Ошибка диапазона")
                                  (Неверный подтип операции
                                   мененджера файлов).
    4    "WRITE PROTECTED"        ("Защита от записи").
    5    "END OF DATA"            ("Конец данных").
    6    "FILE NOT FOUND"         ("Файл не найден").
    7    "VOLUME MISMATCH"        ("Несовпадение тома").
    8    "I/O ERROR"              ("Ошибка ввода/вывода").
    9    "DISK FULL"              ("Диск заполнен").
   10    "FILE LOCKED"            ("Файл защищен").
   11    "SYNTAX ERROR"           ("Синтаксическая ошибка").
   12    "NO BUFFERS AVAILABLE"   ("Нет доступных буферов").
   13    "FILE TYPE MISMATCH"     ("Несовпадение типа файла").
   14    "PROGRAMM TOO LARGE"     ("Программа слишком велика").
   15    "NOT DIRECT COMMAND"     ("Команда не для диалога").

AA3F-AA4E  Индексная таблица смещений текстов сообщений об
           ошибках.
           Каждому коду ошибки соответствует один байт 
           смещения.

AA4F-AA65  Переменные основных программ DOS.
  AA4F  Адрес текущего буфера файла (2 байта).
  AA51  Флажки состояния:¤00="теплый" старт;
                         ¤01=состояние ЧТЕНИЯ;
  AA52  Номер состояния системной программы перехвαта CSWL;
  AA53  Адрес действительной программы обработки CSWL(2 байта).
  AA55  Адрес действительной программы обработки KSWL(2 байта).
  AA57  Величина MAXFILES(2 байта).
  AA59  Область сохранения регистров S,X,Y,A при входе в DOS.
                                           (4 байта).
  AA5D  Значение индекса командной строки(смещение в строке).
  AA5E  Флажки MON (C=¤40, I=¤20, O=¤10).
  AA5F  Индекс последней команды, умноженный на два.
  AA60  Длина ряда для команд LOAD и BLOAD(2 байта).
  AA62  Индекс отсроченной команды, если она есть.
  AA63  Различные переменные (счеичик, индекс сообщения и др.).
  AA64  Индекс текущего ключевого слова.
  AA65  Флажки заданных в командной строке ключевых слов.

AA66-AA74  Значения ключевых слов, извлеченные из команды и
           принятые по умолчанию.
  AA66  Том (2 байта).
  AA68  Накопитель (2 байта).
  AA6A  Разъем (2 байта).
  AA6C  Длина (2 байта).
  AA6E  Запись (2 байта).
  AA70  Байт (2 байта).
  AA72  Адрес (2 байта).
  AA74  Значение MON (1 байт).

AA75-AA92  Буфер первого имени файла.

AA93-AAB0  Буфер второго имени файла.

AAB1-AAC0  Константы и переменные основных программ DOS.
  AAB1  Величина MAXFILES по умолчанию (¤03).
  AAB2  УПР-D (¤84).
  AAB3  Флажок активности исполняемого файла(¤00-активен).
  AAB4  Адрес буфера исполняемого файла (2 байта).
  AAB6  Флажок активности Бейсика:¤00-INTEGER(целочисленный);
                                  ¤40-APPLESOFT-ПЗУ-версия;
                                  ¤80-APPLESOFT-ОЗУ-версия;
  AA87  Флажок прерывания RUN.M  AAB8  Имя APPLESOFT в кодах ASCII.

AAC1-AAC8  Константы мененджера файлов.
  AAC1  Адрес списка параметров RWTS (¤B7E8).
  AAC3  Адрес буфера сектора Оглавления Тома (¤B388).
  AAC5  Адрес буфера сектора Каталога Тома (¤B4B8).
  AAC7  Адрес последнего байта DOS, увеличенный на 1 (¤C000).

AAC9-AAE4  Таблица точек входа в функциональные программы
           мененджера файлов. Содержит 2-х байтные адреса
           программ обслуживания функций каждого из 14 кодов
           операций мененджера файлов, расположенные в порядке
           возростания кодов.

AAE5-AAF0  Таблица точек входа в программы обслуживания каждого
           из 6-и подтипов чтения мененджера файлов.

AAF1-AAFC  Таблица точек входа в программы обслуживания каждого
           из 6-и под4ипов записи мененджера файлов.

AAFD-AB05  Внешняя точка входа в мененджер файлов (через 
           вектор ¤03D6).
           В регистре X ноль ? Если да, то разрешить создание 
           новых файлов, воспроизводя индекс команды INIT.
           Иначе запрсить старый файл, воспроизводя индекс
           команды LOAD. Пройти к главной точке входа в 
           мененджер файлов.

AB06-AB1E  Главный вход в мененджер файлов.
           Сохранить регистр S в яч. ¤B39B. Восстановить 
           рабочую область мененджера файлов из буфера файла
           (¤AE6A). Код операции >13 ? Если да, то выйти с 
           кодом возврата = ¤02(неверный код операции).
           Использовать код операции как индекс в таблице точек
           входа в функциональные программы мененджера файлов 
           и перейти к соответствующей программе обработки
           через команду RTS.

AB1F-AB21  Выход с кодом возврата =¤02 (неверный тип операции).

AB22-AB27  Программа обработки функции OPEN.
           Вызвать обобщенную открывающую программу (¤AB28).
           Выйти из мененджера файлов.

AB28-ABDB  Обобщенная открывающая программа.
           Инициализировать рабочую область мененджера файлов,
           присваивая переменным значения, принятые по 
           умолчанию (¤ABDC). Установить длину сектора = 256.
           Длина записи = 0 ? Если да, то использовать 1.
           Сохранить длину записи в рабочей области мененджера
           файлов. Найти или создать новое поле описания файла
           в Каталоге (¤B1C9). Если файл уже существует, то
           перейти на ¤ABA6. Иначе сохранить индекс свободного
           поля Каталога. Используя индекс последней команды,
           и таблицу действительных ключевых слов, определить,
           может ли текущая команда создать новый файл. 
           Если да, то перейти на ¤AB64. Иначе, если активен
           APPLESOFT, то установить код возврата для ошибки
           "LANGUAGE NOT AVAILABLE"("Язык не доступен") и
           выйти. Иначе установить код возврата для ошибки
           "FILE NOT FOUND"("Файл не найден") и выйти.
  AB64  Установить в 1 счетчик секторов в поле описания файла
        в Каталоге. Занять сектор для Т/С списка (¤B244).
        Сохранить номер этого сектора в поле Каталога и
        (в качестве номера первого и текущего сектора 
        Т/С списка) в рабочей области мененджера файлов.
        Поместить в оба эти места номер трека. Перенести 
        требуемый тип файла в поле Каталога. Записать сектор 
        Каталога обратно в Каталог (¤B037). Выбрать буфер
        Т/С списка (¤AF0C), обнулить его (¤B7D6) и записать
        обратно (¤AF3A). Установить код возврата =¤06 ("Файл
        не найден").
  ABA6  Переместить трек/сектор Т/С списка из поля описания
        файла в Каталоге в первую переменную Т/С списка в
        рабочей области мененджера файлов. Скопировать в 
        списке параметров тип файла из Каталога, чтобы вернуть
        его в вызывающую программу и в рабочую область
        мененджера файлов. Скопировать в рабочей области число
        секторов в файле. Сохранить в рабочей области смещение
        поля описания файла в Каталоге. Установить указатель
        окончания данных на "бесконечность". Приравнять в
        рабочей области количество байтов данных, описываемых
        одним сектором Т/С списка, величине 122*256 (30,5К).
        Перейти к чтению первого сектора Т/С списка (¤AF5E).

ABDC-AC05  Инициализация рабочей области мененджера файлов.
           Обнулить все 45 байт рабочей области. 
           Сохранить в рабочей области: номер тома в обратном
           коде, номер НГМД, номер разъема *16. Установить
           номер трека =¤11. Выйти в вызывающую программу.

AC06-AC39  Программа обработки функции CLOSE.
           Если нужно, то выполнить контрольную запись на диск
           буфера данных (¤AF1D). Если нужно, то выполнить
           контрольную запись на диск буфера Т/С списка(¤AF34).
           Освободить все сектора, которые ранее были заняты,
           но не были использованы (¤B2C3). Если нужно, то
           повторно прочитать VTOC и выйти. Иначе повторно
           прочитать сектор VTOC (¤AFF7). "Пробежать" по 
           секторам Каталога до тех пор, пока не будет найден
           сектор, содержащий поле описания данного файла.
           Получить индекс этого поля. Модифицировать счетчик 
           секторов в данном поле, чтобы отразить новую длину 
           файла. Сохранить на диске состояние сектора 
           Каталога. Выйти из мененджера файлов.

AC3A-AC57  Программа обработки функции RENAME.
           Вызвать обобщенную программу для поиска/открытия
           файла. Если файл защищен, то выйти с кодом возврата
           "FILE LOCKED". Ввести в яч.¤42-43 указатель нового
           имени файла. Скопировать в поле описания файла 
           новое имя. Записать сектор Каталога обратно на диск.
           Выйти из мененджера файлов.

AC58-AC69  Программа обработки функции READ.
           Подтип >5 ? Если да, то выйти с кодом возврата =3.
           Иначе использовать подтип в качестве индекса в
           таблице точек входа в программы обслуживания 
           подтипов Чтения. Перейти к нужной программе.

AC6A-AC6C  Код возврата =3, неверный подтип.

AC6D-AC6F  Возврат с ошибкой "FILE LOCKED".

AC70-AC86  Программа обработки функции WRITE.
           Если файл защищен, то выйти с ошибкой "FILE LOCKED".
           Иначе проверить условие: подтип >5 ? Если да, то
           выйти с кодом возврата =3. Иначе использовать 
           подтип в качестве индекса в таблице точек входа
           в программы обслуживания подтипов Записи.
           Перейти к нужной программе.

AC87-AC89  Программа обслуживания подтипа POSITION AND READ
           ONE BYTE (Позиционирование и чтение одного байта).
           Вызвать программу позиционирования и перейти к
           обслуживанию следующего подтипа.

AC8A-AC92  Программа обслуживания подтипа READ ONE BYTE.
           Прочитать следующий байт файла (¤ACA8). Сохранить
           его в списке параметров для передачи в вызывающую
           программу. Выйти из мененджера файлов.

AC93-AC95  Программа обслуживания подтипа POSITION AND READ A
           RANGE OF BYTES (Позиционирование и чтение ряда 
           байтов). Вызвать программу позиционирования.
           Перейти к обслуживанию следующего подтипа.

AC96-ACA7  Программа обслуживания подтипа READ A RANGE BYTES.
           Выполнить декремент и проверить длину (¤B1B5).
           Прочитать байт (¤ACA8). Ввести в яч.¤42-43 адрес
           ряда и прибавить к адресу 1. Сохранить прочитанный
           байт по этому адресу. Вернуться на ¤AC96 для 
           следующего шага цикла. (Выход из цикла по нулевой
           длине).

ACA8-ACBA  Чтение байта данных.
           Прочитать, если нужно, следующий сектор данных
           (¤B0B6). Если достигнут конец файла, то выйти с
           ошибкой END OF DATA. Иначе загрузить байт данных
           из буфера сектора данных. Выполнить инкремент 
           номера записи/смещения байта в файле (¤B15B).
           Выполнить инкремент смещения позиции файла (¤B194).
           Выйти с прочитанным байтом данных.

ACBB-ACBD  Программа обслуживания подтипа POSITION AND WRITE
           ONE BYTE. Вызвать программу позиционирования.
           Перейти к обслуживанию следующего подтипа.

ACBE-ACC6  Программа обслуживания подтипа WRITE ONE BYTE.
           Найти байт данных, который должен быть записан.
           Записать его в файл (¤ACDA). Выйти из мененджера 
           файлов.

ACC7-ACC9  Программа обслуживания подтипа POSITION AND WRITE A
           RANGE OF BYTES. Вызвать программу позиционирования.
           Перейти к обслуживанию следующего подтипа.

ACCA-ACD9  Программа обслуживания подтипа WRITE A RANGE OF 
           BYTES. Скопировать и продвинуть адресный указатель
           ряда. Получить следующий байт для записи. Записать
           его в файл (¤ACDA). Проверить и уменьшить на 1 
           длину (¤B1B5). Вернуться на ¤ACCA для следующего
           шага цикла. (Выход из цикла по нулевой длине).

ACDA-ACEE  Запись байта данных.
           Если нужно, то прочитать требуемый сектор данных
           (¤B0B6). Сохранить байт данных, предназначенный для 
           записи, в буфере сектора данных. Отметить флажком,
           что буфер сектора данных требует перезаписи.
           Инкремент номера записи/смещения байта в файле
           (¤B15B). Выйти через программу инкремента смещения
           позиции файла (¤B194).

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

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