Среда, 23.08.2017, 01:39

..



Главная Регистрация Вход
Приветствую Вас, Гость · Браузер: « v»
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Всё об «Электроника БК0010(-01), БК0011(М)»! » Программы | Утилиты | ДОСы » Дисковые Операционные Системы (DOS) » «ANDOS v3.1» » Техническое руководство (Часть 2) («ANDOS v3.1» [ANTECH2.EDP])
Техническое руководство (Часть 2)
-=RUS=-Дата: Вторник, 22.04.2014, 22:04 | Сообщение # 1
Генералиссимус
Группа: Администраторы
Сообщений: 350
Репутация: 1
Статус: Offline

     Коды операций 0 или 1 могут использоваться для перепаковки
имени. При выполнении этих операций происходит перепаковка име-
ни в буфер NAMBUF с логической  обработкой.  При  этом  команды
смены устройства и режима записи будут отрабатываться сразу,  а
при командах удаления файла и вывода каталога их коды будут по-
мещены в ячейку COMAND. Эти  операции  могут  использоваться  в
программах,  читающих  или  записывающих  файлы,  не  пользуясь
EMT36.

     Как видно из таблицы,  ANDOS имеет  четыре  дополнительных
кода  команд.
     По коду  200  происходит  удаление файла с запросом (как и
при использовании команды ANDOS "-").
     По коду  202 происходит запись по другому адресу,  т.е.  в
блоке параметров магнитофона указывается реальный адрес  файла,
а в ячейку ADRDIR (120152), описанную в разделе "Модуль связи с
программой пользователя",  помещается адрес для занесения в ка-
талог.
     Код 203 используется  оболочкой  (и  может  использоваться
другими программами) для быстрого чтения файла в случаях:  если
драйвер дисковода настроен, дисковод включен, нужный блок ката-
лога загружен в память,  и уже известно, где находится запись о
нужном файле (ее адрес должен быть помещен в R2). Если при этом
блок  каталога  находится вне буфера ANDOS,  а в буфер загружен
FAT,  и номер блока FAT на диске (1) помещен в  ячейку  TEKBLK,
чтение FAT также не будет производиться.
     По коду 204 на экран выводится каталог (как и при  исполь-
зовании команды ANDOS ":"). Кроме того,  каталог  выводится  по
всем резервным кодам (в том числе и по коду 4), однако  исполь-
зовать это недопустимо, так как в следующих версиях ANDOS  воз-
можно появление новых кодов команд.

     В поля адреса,  длины и имени  помещаются  соответствующие
величины, причем при чтении длина не указывается, а адрес может
быть нулевым, в этом случае файл читается по адресу, записанно-
му в каталоге.

     При выполнении большинства операций происходит поиск файла
в каталоге,  при этом по пустому имени вызывается файлер (вызов
файлера происходит по ячейке FILER аналогично вызову оболочки и
эмулятора MicroDOS  по  ячейкам MASTER и MDOSEM).  После выбора
файла с помощью файлера имя выбранного файла заносится в  буфер
имени NAMBUF и в поле имени блока параметров EMT36.

                  3.3.4. Завершение операции

     После выполнения  операции в байт ответа (а также в ячейку
301) помещается код ошибки.  При работе с  диском  используются
только два кода: "0" - операция завершена без ошибок, и "4" при
любых ошибках и выполнении нестандартных операций (например та-
ких как удаление или вывод каталога на экран). Именно из-за ко-
да ошибки "4" после просмотра каталога и других дисковых опера-
ций, вызываемых из монитора БК0010, выдается сообщение "ОШИБКА"
(выход из нестандартных операций  без  ошибки  недопустим,  так
как,  например,  в  этом  случае во многих текстовых редакторах
после чтения каталога терялся-бы текст, находящийся в памяти).
     После чтения файла в поле имени текущего массива переписы-
вается имя из поля имени,  в поля адреса и длины  текущего мас-
сива помещаются соответствующие данные, взятые из каталога дис-
ка (т.е.  даже, когда явно указан адрес, в поле адреса текущего
массива помещается адрес из каталога),  в ячейку 264 помещается
реальный  адрес  загрузки  файла,  а  в ячейку 266 - его длина.

          3.4. Модуль связи с программой пользователя

     Модуль состоит из рабочих ячеек ANDOS и ячеек,  содержащих
адреса подпрограмм,  используемых самой ANDOS, ее утилитами, и,
возможно, программами пользователя. Гарантируется неизменение в
последующих версиях ANDOS адресов в модуле связи.

                  3.4.1. Рабочие ячейки ANDOS

┌──────┬──┬──────┬─┬──────────────────────────────────────────┐
│Адрес │Дл│Метка │Т│       Назначение ячейки или массива      │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120004│6 │DRV$A │S│Таблица параметров дисковода A:           │
│      │  │      │ │ .WORD Задержка опускания головки         │
│      │  │      │ │ .WORD Задержка шага                      │
│      │  │      │ │ .BYTE Дорожка прекоррекции               │
│      │  │      │ │ .BYTE Тип дисковода.  Единица  в  старшем│
│      │  │      │ │ бите - 80 дорожек, в 7 бите - 1 сторона).│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120012│6 │DRV$B │S│Таблица параметров остальных дисководов.  │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120020│66│DRVTAB│S│Рабочая  область  драйвера  НГМД (описание│
│      │  │      │ │см. в приложении "Контроллер дисковода"). │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120106│ 2│DRIVER│S│Адрес входа "чтение/запись блока " драйве-│
│      │  │      │ │ра НГМД (160004). Может использоваться для│
│      │  │      │ │обслуживания нестандартных  устройств, на-│
│      │  │      │ │пример виртуального диска).               │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120110│ 2│IOBUFF│S│Адрес буфера ANDOS (125000).              │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120112│ 2│E36STK│S│Адрес вершины стека ANDOS  (126476).      │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120114│11│NAMBUF│B│Буфер имени.                              │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120150│ 2│SCREEN│I│Ячейка перехвата вывода на экран сообщений│
│      │  │      │ │ANDOS (Значение по умолчанию 0). При нену-│
│      │  │      │ │левом значении  этой ячейки при выводе со-│
│      │  │      │ │общений вместо  EMT 16  выполняется  вызов│
│      │  │      │ │подпрограммы, адрес  которой  находится  в│
│      │  │      │ │этой ячейке. Для запрета вывода  на  экран│
│      │  │      │ │достаточно поместить в SCREEN адрес любого│
│      │  │      │ │кода 207, например 100256 . При перезапус-│
│      │  │      │ │ке ANDOS ячейка SCREEN очищается.         │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120152│ 2│ADRDIR│I│Адрес, помещаемый в каталог.  Используется│
│      │  │      │ │при исполнении EMT36 с кодом операции 202 │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120154│ 1│DEVICE│P│Текущее устройство (0-@:, 1-32 - A:-Z:).  │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120155│ 1│DEVTEK│P│Временное текущее устройство. Совпадает  с│
│      │  │      │ │DEVICE при  запуске  операции,  изменяется│
│      │  │      │ │при явном указании устройства в имени.    │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120162│ 2│SIZE  │O│Общее количество кластеров на диске. Опре-│
│      │  │      │ │деляется подпрограммой INIDRV после считы-│
│      │  │      │ │вания таблицы параметров из загрузчика.   │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120166│ 2│TEKBLK│O│Номер блока диска, находящегося в буфере. │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120170│ 2│VERS  │K│Версия ANDOS (для V3.1 - 100466)          │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120127│ 1│ATTRIB│I│Аттрибут файла, присваиваемый при записи. │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120130│ 1│SUBDIR│I│Номер катал., в котор. будет помещен файл.│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120132│ 2│DATE  │S│Системная дата (присв. файлу при записи). │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120134│ 2│PALET │S│Палитра, уст. на БК11(М) при перезапуске. │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120140│ 1│WREGIM│P│Режим записи (код буквы "П" на любом реги-│
│      │  │      │ │стре (120) - перезапись, "Д" (104) -дубль,│
│      │  │      │ │другой код - вывод запроса).              │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120141│ 1│TEKREG│P│Текущий режим записи. Эти две ячейки очень│
│      │  │      │ │похожи по своей работе на DEVICE и DEVTEK.│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120142│ 2│CONFIG│K│Конфигурация ЭВМ (60000 - БК11(М), 140000-│
│      │  │      │ │БК10+16, 140002 - БК10+8, 0 - БК10+4).    │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120146│ 2│USRERR│I│Ячейка перехвата сообщений об ошибках. См.│
│      │  │      │ │раздел "Обработка ошибок".                │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120155│ 1│VD$ON │S│Ненулевое значение в этой ячейке разрешает│
│      │  │      │ │подключение виртуального диска при загруз-│
│      │  │      │ │ке на БК11(М). Адрес VD$ON совп. с DEVTEK.│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120164│ 1│COMAND│P│Команда EMT36. В эту ячейку заносится  код│
│      │  │      │ │команды из первого байта блока пар. EMT36,│
│      │  │      │ │он может изменятся командами ANDOS.       │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120172│ 2│MASTER│K│Признак включения/адрес оболочки.         │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120174│ 2│FILER │K│Признак включения/адрес файлера.          │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120176│ 2│MDOSEM│K│Признак включения/адрес эмулятора MicroDOS│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120244│12│USER  │I│Ячейки, восстанавливаемые при  перезапуске│
│      │  │      │ │или EMT14. Значение первой ячейки  записы-│
│      │  │      │ │вается по адресу из второй, 3->@4, 5->@6. │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120314│ 2│INIPRN│K│Адрес подп. инициализации принтера. Вызов:│
│      │  │      │ │CALL @120312 .WORD 120314 . Бит C означает│
│      │  │      │ │отсутствие драйвера принтера. Рег.не сохр.│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120316│ 2│OUTPRN│K│Адрес п/п вывода на принтер байта из R0  с│
│      │  │      │ │перекодировкой в соотв. с тек. кодовой та-│
│      │  │      │ │блицей. Перед LF (12) авт. вывод. CR (15).│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120320│ 2│GRFPRN│K│Адрес п/п выв. на принтер байта из R0  без│
│      │  │      │ │перекодировки (напр. для печати графики). │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120322│ 1│XY$FIL│S│(Кол-во столбцов)X(кол-во строк в файлере)│
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120323│ 1│ST$FIL│S│Количество текстовых строк файлера.       │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120324│ 1│W$FIL │S│Ширина окна файлера в байтах.             │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120325│ 1│H$FIL │S│Высота окна файлера в строках.            │
├──────┼──┼──────┼─┼──────────────────────────────────────────┤
│120326│ 2│AD$FIL│S│Смещение левого верхнего угла файлера, от │
│      │  │      │ │начала экрана (в байтах).                 │
└──────┴──┴──────┴─┴──────────────────────────────────────────┘
     Типы ячеек,  указанные в графе "Т": S - параметр, устанав-
ливаемый пользователем или утилитой ANSETUP, и неизменяемый AN-
DOS, B - буфер, К - неизменяемая константа, P - переменная, I -
входной параметр, О - выходные данные (и переменная).

     Обращаем Ваше внимание на  изменения  назначения  битов  в
ячейках типа дисковода таблиц параметров DRV$A и DRV$B.

               3.4.2. Ячейки адресов подпрограмм

     В ячейках 120200-120236 и 120260-120312 расположены адреса
подпрограмм ANDOS, которые используются утилитами ANDOS и могут
быть  использованы  программами  пользователя.  Самой ANDOS эти
ячейки не используются.  В следующих версиях ANDOS список ячеек
будет расширен,  однако адреса ячеек, приведенных в этом описа-
нии, останутся без изменений.

┌────────┬────────┬───────────────────────────────────────────┐
│ INIDRV │ 120204 │ Инициализация работы с диском             │
│ INIT1  │ 120206 │ Инициализ. рабочей области драйвера КНГМД │
│ RWBLOK │ 120226 │ Чтение/запись                             │
│ RWBUF  │ 120222 │ Чтение/запись в буфер ANDOS с кэшированием│
│ RWBUF1 │ 120224 │ Чтение в буфер без кэширования            │
│ DIRENT │ 120212 │ Поиск элементов каталога                  │
│ DIREN2 │ 120214 │ Поиск заполненных элементов каталога      │
│ DIRFIN │ 120216 │ Поиск файла в каталоге                    │
│ DIRFRE │ 120220 │ Поиск свободного элемента каталога        │
│ RDFAT  │ 120230 │ Чтение FAT с диска                        │
│ WRFAT  │ 120232 │ Запись FAT на диск                        │
│ GETFAT │ 120234 │ Распаковка ячейки FAT                     │
│ SETFAT │ 120236 │ Запись в ячейку FAT                       │
│ ERASE1 │ 120210 │ Удаление файла                            │
│ FRCLAS │ 120202 │ Поиск пустого кластера                    │
│ RWCLAS │ 120200 │ Чтение/запись кластера                    │
├────────┼────────┼───────────────────────────────────────────┤
│ RUNNER │ 120312 │ Вызов подпрограммы с проверкой целостности│
│ EXIST  │ 120270 │ Открытие файла для записи (Перезап./Дубль)│
│ DOUBLE │ 120264 │ Переименование файла в .BAK               │
│ ENDWRT │ 120266 │ Закрытие файла                            │
│ ERASE2 │ 120310 │ Удаление цепочки из FAT.                  │
│ DIRFI1 │ 120302 │ Поиск файла в каталоге (с файлером)       │
│ DIRFI2 │ 120260 │ Поиск файла в каталоге по имени из NAMBUF │
│ FIND   │ 120300 │ Поиск файла в каталоге с выдачей сообщения│
│ CONNAM │ 120274 │ Перепаковка и логическая обработка имени  │
│ DONAME │ 120272 │ Поиск команд и перепаковка имени          │
│ ENAME  │ 120262 │ Поиск конца строки и точки                │
│ FRCLA1 │ 120276 │ Поиск пустого кластера, нач. от указанного│
│ RDBLOK │ 120304 │ Чтение блока в буфер                      │
│ WRBLOK │ 120306 │ Запись блока из буфера                    │
│ PRT1   │ 120330 │ Вывод строки символов на экран            │
└────────┴────────┴───────────────────────────────────────────┘

            INIDRV - инициализация работы с диском

 Вызов:     CALL @120204
 Результат: Кол-во кластеров -> SIZE,
            бит "C" - диск не в формате ANDOS.

     Процедура используется  в начале любой дисковой операции и
выполняет следующие действия:  инициализирует  рабочую  область
драйвера КНГМД, устанавливает, в соответствии с ячейкой DEVTEK,
параметры дисковода по одной из  таблиц:  DRV$A  (для  A:)  или
DRV$B  (для остальных устройств),  считывает таблицу параметров
диска из загрузчика,  проверяет  соответствие  некоторых  ячеек
этой таблицы эталону,  и если его нет (диск не в формате ANDOS)
выходит с установленным битом "C",  устанавливает  режимы  "1/2
стороны" и "вкл/выкл пропуска дорожек" (пропуск дорожек включа-
ется только в случае если на 80-дорожечном  дисководе  читается
диск,  размер которого не превышает 860.  блоков на двухсторон-
нем,  и 430.  на одностороннем диске). Необходимо отметить, что
некоторые параметры (количество повторов при ошибке, количество
секторов на дорожке, размер сектора) в DRVTAB являются констан-
тами и не изменяются ANDOS, поэтому и программа пользователя не
должна изменять их (а в случае изменения должна потом их  восс-
танавливать). После выполнения операции в буфере находится  ну-
левой блок диска, при этом ячейка количества сторон (IOBUFF+32)
уменьшена в два раза.

     INIT1 - Инициализация рабочей области драйвера НГМД.

 Вызов:     CALL @120206
 Портит:    R2

     Функция вызывается из INIDRV и выполняет действия,  анало-
гичные  функции  "Инициализация  рабочей области" драйвера НГМД
(очищаются регистр 177130 и поля CSRW, TRKTAB, FLAGS). Назначе-
ние полей рабочей области см. в приложении "Контроллер дисково-
да".


 
Всё об «Электроника БК0010(-01), БК0011(М)»! » Программы | Утилиты | ДОСы » Дисковые Операционные Системы (DOS) » «ANDOS v3.1» » Техническое руководство (Часть 2) («ANDOS v3.1» [ANTECH2.EDP])
Страница 1 из 11
Поиск:

-=RUS=-
ICQ: 320867225