Суббота, 19.08.2017, 17:55

..



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

       [][]     []    []   [][][]       [][]       [][]
     []    []   []    []   []    []   []    []   []    []
     []    []   [][]  []   []    []   []    []   [][]
     [][][][]   []  [][]   []    []   []    []       [][]
     []    []   []    []   []    []   []    []   []    []
     []    []   []    []   [][][]       [][]       [][]

                          Версия 3.1

                    Техническое руководство

=====================© 1994 А.М.Надежин =====================

                           Введение

     В этом документе описывается структура операционной систе-
мы ANDOS V3.1,  ее программный интерфейс, формат диска, а также
программный интерфейс контроллера дисководов.
     Автор предоставляет эту информацию, прекрасно понимая, ка-
кую она может представлять опасность,  и подчеркивает,  что эта
информация может использоваться для разработки программ,  рабо-
тающих в среде ANDOS (за исключением вирусов и программ, назна-
чение которых - причинять какой-либо вред кому-либо) и не долж-
на использоваться в других целях.
     Использование в  программах пользователя фрагментов ANDOS,
ее утилит и оболочки возможно только по согласованию с авторoм.

                       1. Загрузка ANDOS

     Первоначальная загрузка производится программой  начальной
загрузки, размещенной в ПЗУ контроллера дисковода, и вызываемой
обращением по адресу 160000.  На БК0010 вызов осуществляется из
монитора  вводом команды S160000; на БК0011М монитор обращается
к этому адресу автоматически;  на БК0011 из монитора дается ко-
манда 160000G или команда B, при которой монитор читает с диска
нулевой блок, не пользуясь драйвером дисковода.
     В программе начальной загрузки ПЗУ 1801РЕ2-253, использую-
щейся в контроллере от БК0011 (БЛОК КНГМД 3.059.001)  применена
команда  EMT112,  поэтому  для запуска начального загрузчика на
БК0010 необходимо предварительно поместить код команды возврата
из  подпрограммы  207  по  адресу 10546 (по случайному стечению
обстоятельств команда EMT112 на БК0010 приводит к обращению  по
этому адресу).
     Программа начальной загрузки считывает нулевой блок  нуле-
вого диска с адреса 1000,  после  чего  проверяет  соответствие
первого слова считанного блока коду 240 (команда NOP),  несоот-
ветствие второго слова коду 5 (команда RESET) и запускает прог-
рамму загрузки с адреса 1000. Если по каким-либо причинам  счи-
тать 0 блок с нулевого привода не удалось, первое слово в  счи-
танном блоке отличается от 240 или второе слово равно 5, -  на-
чальный загрузчик пытается считать 0  блок  с  первого  привода
(загрузчик в ПЗУ 1801РЕ2-253 производит также чтение со 2  и  3
привода). Если и в этом случае  загрузка  оказалась  неудачной,
начальный загрузчик возвращает управление в вызвавшую его прог-
рамму (монитор БК). Загрузчик из ПЗУ 1801РЕ2-253  при  возврате
дает команду EMT0, приводящую на БК0010 и БК0011М к зависанию.
     В нулевом  блоке  системного  диска  размещается  програм-
ма-загрузчик,  позволяющая  производить загрузку на компьютерах
БК0011, БК0011М и БК0010 с дополнительным ОЗУ 4-16Кбайт.
     Первые 100  байт  загрузчика  занимает  таблица параметров
диска,  описанная в разделе "Таблица параметров диска" приложе-
ния  "Структура  диска ANDOS".  С сотого байта начинается собс-
твенно загрузчик.
     Загрузчик ANDOS работает  следующим  образом:  проверяется
тип компьютера (на БК0011 и БК0011М устанавливается 4  страница
ОЗУ в нижнее окно и 6 страница в верхнее  окно,  выключается  и
сбрасывается таймер, устанавливается пятая палитра),  очищается
экран и выводится сообщение "Идет загрузка ANDOS". Далее проис-
ходит определение области, читаемой из файла ANDOS.SYS  (чтение
происходит по физическим номерам блоков, при этом предполагает-
ся, что файл ANDOS.SYS последователен, и записан в начале  дис-
ка). На БК0011 и БК0011М файл ANDOS.SYS читается целиком с  са-
мого начала (первые 16. блоков файла  ANDOS.SYS  -  стандартный
монитор БК), на БК0010 начиная с шестнадцатого блока, при  этом
размер читаемой области определяется доступным ОЗУ: при  отсут-
ствии ОЗУ по адресу 120000 в основное ОЗУ загружаются последние
16. блоков файла ANDOS.SYS, содержащие модуль  заставки,  после
чего ему передается управление. При наличии ОЗУ 4Кбайт читается
ядро ANDOS (10000 байт) по адресу 120000 и заставка в  основное
ОЗУ. При наличии ОЗУ 8Кбайт читается ядро ANDOS, файлер, эмуля-
тор MicroDOS (20000 байт) и заставка. При ОЗУ 16Кбайт (только с
таким ОЗУ возможна полноценная работа на БК0010) читается ядро,
файлер, эмулятор, оболочка Disk MASTER (40000 байт) и заставка.
     При ошибке чтения на  экран  выводится  сообщение  "Ошибка
загрузки #n, повторить" (n - номер ошибки контроллера) и разда-
ется звуковой сигнал. При нажатии любой клавиши происходит пов-
торная попытка чтения.
     Когда чтение успешно завершено: на БК0010 управление сразу
передается заставке;  на БК0011 и БК0011М оверлейная часть обо-
лочки из первой половины шестой страницы пересылается во вторую
половину  седьмой  страницы,  а заставка из второй части шестой
страницы пересылается в основное ОЗУ; кроме того на БК0011 про-
исходит модификация монитора для обеспечения работы звука нажа-
той клавиши, затем управление передается заставке.
     Модуль заставки, находящийся в основном ОЗУ определяет на-
личие ДОЗУ, и если его нет, блокирует клавиатуру и выводит зас-
тавку  с бегущей строкой,  содержащей сообщение о невозможности
работы ANDOS на БК0010 без дополнительного ОЗУ.  Если  дополни-
тельное ОЗУ обнаружено, происходит обращение к модулю начальной
инициализации, находящемуся в буфере ANDOS по адресу 125000.
     Модуль начальной инициализации подключает файлер, эмулятор
MicroDOS,  и оболочку Disk MASTER при наличии ОЗУ, необходимого
для работы каждого из них.  На БК0011(М) подключается виртуаль-
ный  диск (если ячейка VD$ON содержит не 0) и анализируется его
содержимое: если таблица параметров в нулевом блоке виртуально-
го  диска не отвечает требованиям ANDOS происходит форматирова-
ние и инициализация виртуального диска.
     Затем управление возвращается в модуль заставки и на экран
выводится динамическая заставка ANDOS,  при этом модуль началь-
ной инициализации ожидает нажатия управляющих клавиш для  изме-
нения даты, выхода в ANDOS или запуска ключа.
     При нажатии клавиши ПРОБЕЛ  устанавливается  нулевая  дата
(00.00.80),  которая в оболочке индицируется,  как пустая.  При
выходе в монитор по клавише КТ,  запуске ключей по клавишам 0-9
или  вызове стартовой функции по алфавитным клавишам вызов обо-
лочки отключается (очищается ячейка  MASTER).  Вызов  стартовой
функции представляет собой запуск программы,  размещенной с ад-
реса 137000 (первой командой подпрограммы должен быть NOP). Эта
возможность  предусмотрена для реализации стартового командного
файла.
     Если дата была изменена (за исключением  сброса  даты  по
ПРОБЕЛу)  при  любом  выходе из заставки происходит сохранение
даты на диске, при этом анализируется диск, и, если он был за-
менен, дата не сохраняется. При сохранении даты дисковые ошиб-
ки не анализируются.  Это позволяет отказаться  от  сохранения
даты,  открыв дисковод,  а также решает проблемы с заклеенными
дисками.

           2. Распределение памяти, структура ANDOS

     ANDOS практически   не   использует  память  пользователя
(0-77777),  и все свои переменные,  буфер и стек хранит в ОЗУ,
расположенном по адресу 120000. Это позволяет повысить качест-
во перехвата EMT36 и соответственно повысить процент  магнито-
фонных программ, нормально работающих с диском (именно поэтому
невозможна работа ANDOS в ПЗУ).  Единственные ячейки ОЗУ поль-
зователя,  изменяемые  ANDOS - это стандартные ячейки драйвера
магнитофона 264 ,  266, 301 и ячейки блока параметров магнито-
фона  (обычно  320-371).  Кроме  того  ANDOS использует ячейки
126-151 для установки ключей при инициализации или EMT14, байт
105  для  сброса  клавиатуры после нажатия клавиш,  вектора 30
(только на БК0010) и 4.  Кроме того драйвер дисковода  заносит
код ошибки в байт с адресом 52.
     Функционально ANDOS состоит из модуля инициализации, дис-
петчера  EMT,  модуля дисковой эмуляции EMT36 и модуля связи с
программой   пользователя.   Эти   модули   занимают    адреса
120000-124777. Далее в адресах 125000-126177 располагается бу-
фер. Адреса 126200-126352 занимают тексты программируемых клю-
чей.  Адреса 126352-126477 занимает внутренний стек ANDOS. Ад-
реса 126500-136777  занимает  резидентный модуль оболочки Disk
MASTER,  и входящие в него файлер, эмулятор MicroDOS и драйвер
принтера. Адреса  140000-147777  на  БК0010  и вторую половину
седьмой страницы на БК0011(М) занимает вторая часть оболочки.
     Система и  оболочка  (а также файлер,  эмулятор MicroDOS и
драйвер принтера) полностью независимы, поэтому наличие оболоч-
ки  и остальных модулей необязательно (вместо них на этих адре-
сах может, к примеру, находиться ассемблер).

      3. Назначение и содержание модулей и областей ANDOS

                   3.1. Модуль инициализации

     Модуль инициализации запускается при обращении  по  адресу
120000  (например  при  перезапуске  БК)  и выполняет следующие
функции: сбрасывает  регистр  состояния  контроллера  дисковода
(останавливает дисководы); очищает ячейки SCREEN и USRERR (опи-
сание этих ячеек см. далее); проверяет контрольную сумму ANDOS,
и если она не совпадает с эталоном выходит в монитор БК; прове-
ряет ячейку монитора 100036 - если ее содержимое отличается  от
120002 (монитор в ПЗУ) происходит перехват вектора 30; проверя-
ет ячейку CONFIG,  и, если значение в ней положительно, (компь-
ютер  БК0011(М)  устанавливается  палитра,  указанная  в ячейке
PALET.  Затем происходит установка ячеек пользователя (см.  да-
лее) и  ключей  клавиатуры,  после  чего  анализируется  ячейка
MASTER: если в ней не 0,  ее содержимое воспринимается, как ад-
рес оболочки Disk MASTER, запускаемой со следующего адреса, ес-
ли первым ее словом идет 104130.  Если оболочка отключена (0  в
ячейке MASTER) или испорчена (первое слово оболочки не 104130),
происходит вывод на экран приглашения "ANDOS V3.1"  и  выход  в
монитор БК0010 по команде HALT.

                      3.2. Диспетчер EMT

     Диспетчер EMT обрабатывает EMT-прерывания. При возникнове-
нии прерывания происходит сохранение значения 30 вектора.  Если
возникло прерывание EMT36,  диспетчер запускает модуль дисковой
эмуляции EMT36,  при любом другом EMT происходит вызов из мони-
тора БК0010 подпрограммы,  выполняющей соответствующее EMT (при
этом после каждого EMT14 происходит установка ячеек пользовате-
ля (см. далее) и ключей клавиатуры), после чего в 30 вектор за-
писывается сохраненное значение.

              3.3. Модуль дисковой эмуляции EMT36

     Модуль эмулирует работу  EMT-прерывания  чтения/записи  на
магнитофон для работы с диском и позволяет: считывать и записы-
вать файлы на диске и магнитофоне,  удалять файлы и  просматри-
вать  на экране каталог диска,  переходить с устройства на уст-
ройство.  Основной стек при работе  эмулятора  не  используется
(эмулятор использует стековую область ANDOS).

     Обращение к  эмулятору  осуществляется  командой EMT36 или
CALL @#120002 (в последнем случае работа с диском возможна даже
в  том случае,  когда вектор 30 испорчен программой пользовате-
ля). При любом обращении эмулятор выполняет следующие действия:

                    3.3.1. Обработка имени.

     При обработке  имени происходит отслеживание команд в име-
ни,  а также преобразование шестнадцатисимвольного имени  БК  в
восьмисимвольное  имя  с трехсимвольным расширением в стандарте
MS-DOS (IBM).
     Перепаковка имени осуществляется по  следующим  принципам:
первая точка имени является границей между именем и расширением
(если точки в имени  нет,  расширение  отсутствует),  остальные
точки являются обычными символами расширения. Если имя превыша-
ет 8 символов берутся первые семь символов и последний,  то  же
происходит,  когда расширение превышает 3 символа (берутся пер-
вые 2 и последний). Такой механизм упаковки позволяет в автома-
тическом режиме копировать на диски ANDOS файлы с магнитофона и
из других дисковых систем,  не заботясь о переименовании файлов
с длинными именами. Необходимо понимать, что все преобразования
имени осуществляются внутри ANDOS,  имя-же в  блоке  параметров
магнитофона  остается  без изменений.  Таким образом программа,
пытающаяся считать файл с длинным именем получает после  считы-
вания  в  блоке  параметров то имя,  которое сама там и указала
(хотя на диске имя перепаковано).

                 3.3.2. Настройка на тип диска

     После перепаковки имени осуществляется инициализация драй-
вера дисковода и считывание таблицы параметров диска из его ну-
левого блока.
     В случае, если формат используемого диска не соответствует
формату ANDOS, происходит определение наличия в памяти эмулято-
ра формата "MicroDOS" и передача ему управления. Для этого про-
веряется ячейка MDOSEM, содержащая адрес эмулятора (определение
наличия и целостности эмулятора происходит также, как и при за-
пуске оболочки).  Если эмулятор неработоспособен выдается сооб-
щение "ANDOS - Non-DOS disk".  Это же сообщение  выводится  при
выходе из эмулятора "MicroDOS" по команде "RET" (RTS PC).
     Если диск соответствует формату ANDOS происходит установка
размера диска, количества сторон, и определение состояния режи-
ма пропуска дорожек. Более подробно настройка параметров описа-
на далее (см. описание функции INIDRV).

                  3.3.3. Выполнение операции

     Основной входной информацией для эмулятора является  стан-
дартный блок параметров магнитофона,  адрес которого помещается
программой пользователя или монитором БК в R1.

                   Формат блока параметров:
            ┌──────┬────────────────────────────┐
            │ Смещ.│         Параметр.          │
            ├──────┼────────────────────────────┤
            │  0   │.BYTE Команда               │
            │  1   │.BYTE Ответ                 │
            │  2   │.WORD Адрес                 │
            │  4   │.WORD Длина                 │
            │  6   │.ASCII /Имя (16. символов)/ │
            │  26  │.WORD Адрес текущего файла  │
            │  30  │.WORD Длина текущего файла  │
            │  32  │.ASCII /Имя текущего файла/ │
            └──────┴────────────────────────────┘

     В байт команды помещается один из кодов команд:

                         Коды команд
┌───────────┬───────────────────────┬─────────────────────────┐
│Код команды│ Стандартное назначение│    Назначение в ANDOS   │
├───────────┼───────────────────────┼─────────────────────────┤
│     0     │ Выкл. двигателя магн. │┐Перепаковка имени,  вы- │
│     1     │ Вкл. двигателя магн.  │┘кл. двигателя дисковода │
│     2     │ Запись файла          │ Запись файла            │
│     3     │ Чтение файла          │ Чтение файла            │
│     4     │ Фиктивное чтение      │ Не отрабатывается       │
│    200    │         -             │ Удаление файла          │
│    202    │         -             │ Запись по другому адресу│
│    203    │         -             │ Быстрое чтение файла    │
│    204    │         -             │ Вывод каталога на экран │
└───────────┴───────────────────────┴─────────────────────────┘


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

-=RUS=-
ICQ: 320867225