Закрыть окно Список других документов библиотеки Серкова
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