Закрыть окно Список других документов библиотеки Серкова
9F78-9F82 Завершение команды RUN, прерванной загрузкой ОЗУ-версии Бейсика. Сбросить флажок "прерывания" RUN. Вызвать ¤A851 для восстановления системных программ перехвата CSWL/KSWL. Перейти на ¤A4DC для завершения команды RUN. 9F83-9F94 Сканирование команд DOS при выходе в Бейсик. Если первый символ командной строки - УПР-D, то выйти с отображением(¤9F95). В противном случае установить параметры так, что Бейсик не обнаружит команду DOS(передать ему строку нулевой длины). Пройти на выход с отображением. 9F95-9FB0 Отображение символа на экране (при определенных условиях) и выход из DOS: 9F95 Отобразить символ, только если включен MON C, иначе перейти на ¤9FB3; 9F99 Отобразить символ, только если включен MON O, иначе перейти на ¤9FB3; 9F9D Отобразить символ, только если включен MON I, иначе перейти на ¤9FB3; 9FA4 Отобразить символ в любом случае. Вызвать ¤9FBA для восстановления регистров при входе в DOS. Вызвать ¤9FC5 для отображения символа на экране. Сохранить содержимое регистров после отображения. Пройти в программу выхода из DOS и восстановления регистров. 9FB3 Подпрограмма выхода из DOS и восстановления регтстра S. Обратиться к ¤A851, чтобы восстановить KSWL/CSWL (клавиатурный и видеоперехват USERа), восстановить регистр S, чтобы после RTS не выходить в DOS 9FBA Подпрограмма "восстановить регистры DOS". Восстано- вить регистры от первого входа в DOS и вернуться. 9FC5-9FC7 Прыжок JMP к подпрограмме записанной в CSWL 9FC8-9FCC Пропустить одну строку на экране. Загрузить ¤8D и вывести его через 9FC5. 9FCD-A179 Общие подпрограммы анализа команды поступившей в DOS. Установить индекс команды -1. Переустановить командный флаг соответственно с индексом ожидаемой команды 9FD6 Прибавить 1 к индексу команды. Если первый символ упр-D, то его пропустить. Обратиться к ¤A1A4, что- вы пробежать по командной строке пока не будет найден символ отличный от пробела. Сравнить коман- ду с именем команды в таблице команд расположенной по адресу ¤A884 для текущего командного индекса. Если сравнение не дает положительного результата, но если остались другие входы для проверки, то вернуться ¤9FD6 для получения следующего символа команды. Если проверка прошла успешно до конца, то перейти на ¤A01B для дальнейшей проверки. Если же команда не найдена в таблице и других вхо- дов для проверки нет, то проверить является ли первый символ упр-D. Если да, то пойти на ¤A6C4 для печати "SYNTAX ERROR". Иначе, обратиться по адресу ¤A75B для переустановки флага теплого ста- рта DOS и перейти на ¤9F95, чтобы сделать команду эхом и выйти (должно быть это команда для BASICа, а не для DOS. A01B Поместить сосчитанный индекс в таблицу для тех команд, которые были введены. Обратиться к ¤A65E, чтобы убедиться, что программа BASICа исполняется Если нет, и если команда не является прямой ко- мандой с клавиатуры (в соответстви с таблицей операндов), то перейти на ¤A602 для печати ошибки "NOT DIRECT COMMAND" ("НЕ ПРЯМАЯ КОМАНДА").В противном случае, если введенная команда - RUN, то сделать символ-подсказку(яч.¤33) непечатаемым. Проверить по таблице операндов, является ли первое имя файла разрешенным операндом для этой команды. Если нет, то перейти на ¤A0A0. Если да, то очистить буфер имени файла (вызвать ¤A095). Продвинуться по строке до следующего отличного от пробела символа (вызвать ¤A1A4) и скопировать операнд имени файла в буфер первого имени файла. Пропустить все остальные символы до запятой, если она еще не найдена. Если для данной команды разрешено имя второго файла, использовать программу, описанную выше, для копирования этого имени в буфер второго имени файла. Проверить, не являются ли пустыми оба имени файла. Если имя требуется для команды, а оно не задано, то выдать синтаксическую ошибку или передать ее Бейсику (как, например, в случае применения команды LOAD без операндов). Если все было правильно, то перейти на ¤A0D1. A095 Подпрограмма очистки обоих буферов имен файлов; A0A0 Сигнализировать о том, что имя файла не анализировалось и проверить по таблице операндов, ожидается ли наличие позиционного операнда. Если нет, то перейти на ¤A0D1 для продолжения. В противном случае вызвать ¤A1B9 для преобразования числового операнда. Если число пропущено, то выдать SYNTAX ERROR. Если преобразованное число >16, то выдать RANGE ERROR. Если предполагается, что число должно быть номером разъема, то выдать RANGE ERROR, когда число >7 или =0; A0D1 Установить значения по умолчанию для операндов ключевых слов(V=0,L=0,B=0); A0E8 Получить индекс смещения в строке и продвинуться до следующего отличного от пробела символа, пропуская встречающиеся запятые. Если конец строки еще не достигнут, то перейти на ¤A10C. Проверить, не заданы ли ключевые слова, не разрешенные для этой команды. Если нет, то перейти на ¤A17A для исполнения команды. A10C Отыскать ключевое слово из командной строки в таблице действительных ключевых слов(¤A941). Если не найдено, то выдать SYNTAX ERROR. Получить номер битовой позиции флажка, соответствующего данному ключевому слову. Если ключевое слово не имеет числового операнда, то перейти на ¤A164. В противном случае сигнализировать флажком, какое ключевое слово найдено. Преобразовать числовое значение, ассоциированное с этим ключевым словом. Если значение задано неверно, то выдать SYNTAX ERROR. Проверить, лежит ли число в допустимых пределах согласно таблицы диапазонов значений ключевых слов(¤A955). Сохранить значение ключевого слова в таблице значений ключевых слов(¤AA66). Перейти к анализу следующего ключевого слова, вернуться на ¤A0E8. A164 Сигнализировать о том, что были получены ключевые C, I или O. Модифицировать соответствующим образом значение MON в таблице значений ключевых слов. Перейти к анализу следующего ключевого слова, вернуться на ¤A0E8. A17A-A17F Вызвать ¤A180 для исполнения команды, затем выйти с отображением через ¤9F83. A180-A192 Выполнить команду. Сбросить сотояние видеоперехвата в 0. Очистить список параметров мененджера файлов. Используя индекс команды, получить адрес программы обслуживания команды из таблицы программ обработки команд (¤9D1E) и перейти к этой программе, которая по завершению выполнит возврат в вызывающую программу. A193-A1A3 Получить следующий символ из командной строки и проверить, является ли он возвратом каретки или запятой. A1A4-A1AD "Пробежать" по командной строке, пока не будет найден символ, отличный от пробела. A1AE-A1B8 Заполнить список параметров менеджера файлов по адресу ¤B5BB нулями. A1B9-A1D5 Преобразование числового операнда из командной строки. Вызвать либо ¤A1D6(десятичное преобразование), либо ¤A203(шестнадцатиричное преобразование), в зависимости от того, есть ли в операнде знак "¤". A1D6-A202 ПП десятичного преобразования. A203-A228 ПП шестнадцатиричного преобразования. A229-A22D Программа обработки команды PR#n. Загрузить введенное число и выйти через ¤FE95 в ПЗУ Монитора. A22E-A232 Программа обработки команды IN#n. Загрузить введенное число и выйти через ¤FE88 в ПЗУ Монитора. A233-A23C Программа обработки команды MON. Добавить новые флажки MON к старым в яч.¤AA5E и выйти. A23D-A250 Программа обработки команды NOMON. Если было задано C, то вывести возврат каретки, поскольку данная строка была отбражена, а ее возврат каретки - нет. Сбросить необходимые биты в яч.¤AA5E и выйти. A251-A262 Программа обработки команды MAXFILES=n. "Отключить" любой активный исполняемый файл, закрыть все открытае файлы, вызвав ¤A316. Установить новое число для MAXFILES в яч.¤AA57. Перейти на ¤A7D4 для перестроения буферов файлов и выйти. A263-A270 Программа обработки команды DELETE. Загрузить код операции удаления файла мененджера файлов, вызвать открывающий драйвер (¤A2AA) мененджера файлов для выполнения удаления. Найти буфер файла, использованный при удалении, и освободить его(вызвать ¤A764). Выйти в вызывающую программу. A271-A274 Программа обработки команды LOCK. Загрузить код операции защиты файла мененджера файлов и перейти на ¤A277. A275-A27C Программа обработки команды UNLOCK. Загрузить код операции снятия защиты файла; A277 Вызвать открывающий драйвер (¤A2AA) мененджера файлов для выполнения соответствующей функции. Вернуться в вызывающую программу через закрытие файла (¤A2EA). A27D-A280 Программа обработки команды VERIFY. Загрузить код операции и перейти на ¤A277 для выполнения функции. A281-A297 Программа обработки команды RENAME. Загрузить код операции и адрес второго имени файла в список параметров мененджера файлов. Вызвать драйвер мененджера файлов по адресу ¤A2C8 и выйти через закрытие файла (¤A2EA). A298-A2A2 Программа обработки команды APPEND. Вызвать ¤A2A3 для открытия файла. Считывать файл байт за байтом, пока не встретится ¤00. Если флажок команды APPEND установлен, то прибавить еденицу к номеру записи и сбросить флажок. Выйти через вызов POSITION. A2A3-A2A7 Программа обработки команды OPEN. Установить тип файла T и перейти на ¤A3D5 для открытия файла. A2A8-A2E9 Обобщенная программа управления файлами при обработке команд. Установить код операции OPEN. A2AA Если значение L не было задано в команде, использовать 0001 и сохранить длину записи в списке параметров мененджера файлов; A2C8 Закрыть файл, если он уже открыт. Есть свободный буфер файла? Если нет, то вывести NO FILE BUFFERS AVAILABLE. Ввести в яч.¤40-41 указатель свободного буфера. Скопировать имя файла в буфер(занять буфер) ¤A743. Скопировать указатели буфера в списке параметров мененджера файлов (¤A74E) и завершить заполнение списка параметров (¤A71A). Установить код операции и выйти через драйвер мененджера файлов. A2EA-A2FB Программа обработки команды CLOSE. Если имя файла не было задано как часть команды, то перейти на ¤A316, чтобы закрыть все файлы. В противном случае найти буфер открытого файла с данным именем(¤A764). Если такого открытого файла нет, то выйти в вызывающую программу. В противном случае закрыть файл и освободить буфер (¤A2FC). Вернуться назад через программу обработки команды CLOSE, чтобы удостовериться в том, что для данного файла нет больше открытых буферов. A2FC-A315 Закрыть файл и освободить его буфер. Выяснить, не принадлежит ли этот буфер исполняемому файлу (¤A7AF). Если да, то сбросить флажок команды EXEC. Освободить буфер записав ¤00 в первый байт поля имени файла. Скопировать указатели буфера файла в списке параметров мененджера файлов. Установить код операции и выйти через программу драйвера мененджера файлов. A316-A330 Закрыть все открытые файлы. Установить указатели первого буфера файла(¤A792). Перейти на ¤A320; A31B Установить указатели следующего буфера файла в цепочке (¤A79A). Если достигнут конец цепочки, то выйти в вызывающую программу; A320 Этот буфер принадлежит исполняемому файлу ? Если да, то пропустить его и вернуться на ¤A13B. В противном случае закрыть и освободить его (¤A2FC). Перейти на ¤A316, чтобы начать все сначала. A331-A35C Программа обработки программы BSAVE. Проверить заданы ли в команде ключевые слова A и L. Если нет, то вывести SYNTAX ERROR. Иначе открыть и проверить файл типа B (¤A3D5). Записать значения ключевых слов A и L первые четыре байта файла. Использовать значение A для выхода с записью ряда байтов в файл. A35D-A38D Программа обработки команды BLOAD. Открыть файл, игнорируя его тип. Убедиться, что тип файла - B. Если нет, то вывести FILE TYPE MISMATCH. Иначе открыть файл типа B и проверить тип файла (¤A3D5). Прочитать величины A и L. Если они не были заданы в команде, то использовать только что прочитанную величину. Перейти на ¤A471 для считывания ряда байтов из файла в память. А38Е-А396 Программа обработки команды BRUN. Вызвать программу обработки команды BLOAD для загрузки файла в память. Восстановить системные программы перехвата. Выйти из DOS, совершая безусловный переход по адресу, равному величине A, для начала выполнения загруженной программы. A397-A3D4 Программа обработки команды SAVE. Получить тип активного Бейсика (¤AAB6). Если Бейсик целочисленный, то перейти на ¤A3BC. Если Бейсик типа APPLESOFT, то проверить флажок в яч.¤D6, чтобы выяснить, защищена ли программа в памяти. Если да, то вывести PROGRAM TOO LARGE. Иначе открыть и проанализировать файл типа A(¤A3D5). Вычислить длину программы (PGMEND-LOMEM), записать эту двухбайтную величину в файл. Выйти через запись, начиная с LOMEM, копии программы как ряда байт (¤A3FF); A3BC Открыть и проанализировать файл типа I (¤A3D5). Вычислить длину программы (HIMEM-PGMSTART), записать эту двухбайтную величину в файл. Выйти через запись, начиная с PGMSTART, копии программы как ряда байт (¤A3FF). A3D5-A3DF Открыть файл и проверить его тип. Установить требуемый тип файла в списке параметров мененджера файлов. Вызвать ¤A2A8 для открытия файла и перейти на ¤A7C4 для проверки типа файла. A3E0-A3FE Запись двухбайтовой величины в открытый файл. Сохранить величину в списке параметров мененджера файлов, установить код операции записи одного байта. Вызвать драйвер мененджера файлов. Вызвать его вновь для записи второго байта и выйти в вызывающую программу. A3FF-A40F Чтение/запись ряда байтов. Установить адрес ряда, подтип операции чтения/записи ряда байтов в списке параметров мененджера файлов. Вызвать драйвер мененджера файлов, закрыть файл. Выйти через программу обработки команды VERIFY, чтобы убедиться в верности записи. A410-A412 Вывод сообщения FILE TYPE MISMATCH. A413-A479 Программа обработки команды LOAD. Закрыть все файлы (¤A316). Открыть файл, названный в запросе. Это файл типов A или I ? Если нет, то вывести FILE TYPE MISMATCH. Какой Бейсик активен ? Если целочисленный, то перейти на ¤A450. Иначе выбрать APPLESOFT BASIC (¤A4B1). В результате этого вызова DOS может передать управление, если должна запускаться ОЗУ-версия. Прочитать первые два байта файла как длину. Вычислить адрес конца программы. Он > HIMEM ? Если да, то закрыть файл и вывести PROGRAM TOO LARGE. Установить указатели конца программы и начала области переменных. Считать программу в память по адресу начала программы как ряд байтов. Восстановить системные программы перехвата (¤A851). Перейти к перемещающей программе Бейсика для преобразования ОЗУ-версии APPLESOFT-программы в формат ПЗУ-версии, если это необходимо; A450 Выбрать целочисленный Бейсик (¤A4B1). Прочитать длину программы из первых двух байт файла, вычислить адрес начала программы (HIMEM-LENGTH). Если результат нулевой или < LOMEM, вывести PROGRAM TOO LARGE и закрыть файл. Иначе установить указатели начала программы и считать программу в память как ряд байтов. A47A-A4AA Прочитать два байта из файла (адрес или длину). Установить величины в списке параметров для считывания двух байтов в поле длины ряда (¤AA60) и вызвать драйвер мененджера файлов. Сохранить прочитанную величину в списке параметров мененджера файлов в качестве длины ряда только в том случае, если это была длина. A4AB-A4B0 Закрыть файл и вывести сообщение PROGRAM TOO LARGE. A4B1-A4D0 Выбрать Бейсик требуемого типа. Если требуемый Бейсик уже активен, то выйти в вызывающую программу. Иначе сохранить текущий индекс команды в случае, если требуется запустить APPLESOFT BASIC. Если же нужен целочисленный Бейсик, то перейти на ¤A59E для его выбора. В противном случае скопировать первое имя файла во втором буфере, чтобы сохранить имя в том случае, если понадобится ОЗУ-версия Бейсика. Перейти на ¤A57A для его подключения. .ст DOS (логика)3