Бытовой ретро-компьютер своими руками http://forum.pk-fpga.ru/ |
|
БК-0011М - Руководство системного программиста http://forum.pk-fpga.ru/viewtopic.php?f=20&t=5383 |
Страница 1 из 1 |
Автор: | Voland [ 14 апр 2013, 20:41 ] | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Заголовок сообщения: | БК-0011М - Руководство системного программиста | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Набил 13.08.1992 В. Усович. Подготовил к печати и перевел из RT-11 в MKDOS 31.07.1993 Чурин Д.М. (Asfalt software). ПЕРСОНАЛЬНАЯ ЭВМ 'ЭЛЕКТРОНИКА МС 0513' Содержание
Аннотация
1. Краткое описание микроЭВМ БК-0011 1.1. Архитектура ЭВМ 1.1.1. Распределение адресного пространства ЭВМ 1.2. Регистры внешних устройств ЭВМ 1.2.1. Регистр состояния клавиатуры 1.2.2. Регистр данных клавиатуры 1.2.3. Регистр управления палитрами 1.2.4. Регистр смещения 1.2.5. Регистр параллельного программируемого интерфейса 1.2.6. Системный регистр 1.2.6.1. Регистр чтения 1.2.6.2. Регистр управления памятью 1.2.6.3. Регистр управления магнитофоном 1.3. Особенности выполнения команд 1.4. Вектора прерываний и зарезервированные ячейки БОС 2. Функции базовой операционной системы 2.1. Программа начального пуска 2.2. Клавиатурный монитор 2.2.1. Команды монитора 2.3. Таблица системных вызовов 2.4. Диспетчер EMT 2.5. Драйвер ОЗУ/ПЗУ 2.6. Драйвер клавиатуры 2.7. Драйвер экрана 2.8. Драйвер кассетного магнитофона 2.9. Драйвер принтера 2.10. Драйвер НГМД 3. Описание системных запросов БОС 3.1. Общесистемные запросы 3.1.1. Инициализация базовой операционной системы .BINIT 3.1.2. Выход в клавиатурный монитор .BEXIT 3.1.3. Перехват вектора 4 .BTRPS 3.1.4. Управление таймером .BTIM 3.1.5. Управление обработкой EMT .BEMT 3.2. Запросы драйвера ОЗУ/ПЗУ 3.2.1. Чтение состояния памяти .BMEM 3.2.2. Чтение статуса страницы ОЗУ/ПЗУ .BTEST 3.2.3. Подключение страницы ОЗУ/ПЗУ .BPAGE 3.2.4. Назначение рабочей страницы .BWORK 3.2.5. Чтение слова из рабочей страницы .BGETW 3.2.6. Чтение байта из рабочей страницы .BGETB 3.2.7. Запись слова в рабочую страницу .BPUTW 3.2.8. Запись байта в рабочую страницу .BPUTB 3.2.9. Пересылка массива слов .BMOVE 3.2.10. Пересылка массива байтов .BMOVB 3.2.11. Вызов подпрограммы из рабочей страницы .BJSR 3.2.12. Переход в рабочую страницу без возврата .BJMP 3.3. Запросы драйвера клавиатуры 3.3.1. Инициализация драйвера клавиатуры .BKINI 3.3.2. Установка режима драйвера клавиатуры .BKSET 3.3.3. Чтение режима работы клавиатуры .BKGET 3.3.4. Ввод символа с ожиданием .BTTIN 3.3.5. Ввод символа без ожидания .BINKEY 3.3.6. Ввод строки с редактированием .BGLIN 3.3.7. Редактирование существующей строки .BEDIT 3.3.8. Сброс буфера клавиатуры .BKRES 3.3.9. Установка функциональных клавиш .BSFUN 3.3.10. Чтение функциональных клавиш .BGFUN 3.4. Запросы драйвера экрана 3.4.1. Инициализация драйвера экрана .BTINI 3.4.2. Установка режима драйвера экрана .BTSET 3.4.3. Чтение режима драйвера экрана .BTGET 3.4.4. Установка цветов .BSCOL 3.4.5. Чтение цветов .BGCOL 3.4.6. Установка/чтение палитры .PAL 3.4.7. Переключение буферов экрана .BBUF 3.4.8. Установка координат алфавитно-цифрового курсора .BSPOS 3.4.9. Чтение координат Алфавитно-цифрового курсора .BGPOS 3.4.10. Сдвиг экрана .BSCRL 3.4.11. Очистка экрана .BCLS 3.4.12. Вывод символа .BTOUT 3.4.13. Вывод строки символов (формат RT-11) .BPRIN 3.4.14. Вывод строки символов .BSTR 3.4.15. Установка текущих графических координат .BSGRF 3.4.16. Чтение текущих графических координат .BGGRF 3.4.17. Установка графического цвета .BSCGR 3.4.18. Чтение графического цвета .BGCGR 3.4.19. Установка/чтение режима рисования .BSMOD 3.4.20. Вывод графической точки .BSPNT 3.4.21. Чтение цвета графической точки .BGPNT 3.4.22. Вывод графического вектора .BVECT 3.4.23. Вывод закрашенного прямоугольника .BRECT 3.4.24. Вывод дуги или окружности .BCIRC 3.4.25. Закраска гранично-определенной области .BFILL 3.4.26. Выдача звука .BSOUN 3.4.27. Установка графического окна .BSWIN 3.4.28. Чтение графического экрана .BGWIN 3.4.29. Установка типа вектора .BSTYP 3.4.30. Чтение типа вектора .BGTYP 3.4.31. Установка и чтение ориентации графических символов .BGOSET 3.4.32. Графический вывод символа .BGOUT 3.5. Запросы драйвера магнитофона 3.5.1. Управление двигателем .BMOT 3.5.2. Вызов формата БК-0010 .BMB10 3.6. Запросы драйвера принтера 3.6.1. Инициализация драйвера принтера .BPINI 3.6.2. Установка режима печати .BPSET 3.6.3. Чтение режима печати .BPGET 3.6.4. Вывод символа на печать .BPOUT 3.6.5. Определение готовности принтера .BPRDY 3.6.6. Чтение текущей позиции печати .BPPOS 3.7. Запросы драйвера НГМД 3.7.1. Автоматическая загрузка 3.7.2. Загрузка с выбранного привода 3.7.3. Чтение-запись логического блока 3.7.4. Чтение-запись по номеру сектора и дорожки 3.7.5. Инициализация рабочей области 3.7.6. Форматирование дорожки Приложения Приложение 1: кодировка клавиш БК-0011 Приложение 2: управление экраном Приложение 3: формат слова управления режимом экрана Аннотация
Настоящее руководство рассчитано на пользователей микроЭВМ ‘Электроника МС 0513’ (’Электроника БК-0011М’, далее ЭВМ), программирующих на уровне языка Ассемблера. В руководстве описаны состав и функции базовой операционной системы ЭВМ (далее БОС) и способы обращения к ним из пользовательских программ. Описаны также команды монитора БОС, позволяющие пользователю работать с ЭВМ в интерактивном режиме, вводить, отлаживать в кодах и запускать программы, считывать и записывать программы на магнитную ленту и т.д. 1. Краткое описание микроЭВМ БК-0011 1.1. Архитектура ЭВМ ЭВМ построена на основе микропроцессорного комплекта серии К1801 и включает в себя:
Отдельные функциональные узлы ЭВМ соединены с помощью межмодульного параллельного интерфейса МПИ ОСТ 11.305.903-80. Обслуживание перечисленных устройств, а также внешних дополнительных блоков контроллеров локальной сети и НГМД осуществляется соответствующими программами-драйверами, расположенными в системном ПЗУ ЭВМ и в дополнительных блоках. 1.1.1. Распределение адресного пространства ЭВМ Виртуальное адресное пространство ЭВМ определяется возможностями процессора К1801ВМ1 и составляет 64К байт. Распределение адресного пространства следующее: Переключаемые страницы ОЗУ и ПЗУ Переключение страниц ОЗУ/ПЗУ осуществляется программно с использованием системного регистра ЭВМ. Следует обратить внимание, что каждая страница ОЗУ может быть одновременно подключена к двум окнам виртуального адресного пространства, а статическая страница (адреса 0 - 40000) - даже к 3-м. Переключение страниц из пользовательской программы может осуществляться только с помощью запросов базовой операционной системы. Две страницы ОЗУ являются буферами экрана графического дисплея. Один из буферов постоянно отображается на экране телевизионного приемника. Управление отображением того или иного буфера экрана также возложено на базовую операционную систему, причем имеется возможность “скрытого” вывода на экран, т.е. формирование изображения из программы пользователя в одном буфере в то время,как на экран выводится другой. Одна из страниц ОЗУ является служебной страницей базовой операционной системы ЭВМ и недоступна пользователям. Однако часть ее, не используемая базовой операционной системой, доступна для чтения-записи с помощью запросов драйвера ОЗУ/ПЗУ. 1.2. Регистры внешних устройств ЭВМ Работа ЭВМ с периферийными (внешними) устройствами выполняется через регистры внешних устройств, для которых выделен диапазон 170000 - 177777 адресного пространства. Ниже описаны регистры стандартных периферийных устройств. 1.2.1. Регистр состояния клавиатуры Адрес регистра - 177660. Формат регистра: ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ Разряд 7 - ‘1’ в этом разряде означает, что в регистре данных клавиатуры находится код нажатой клавиши. Устанавливается при нажатии на клавишу, сбрасывается при чтении регистра данных клавиатуры. При нулевом состоянии 6-го разряда установка в ‘1’ вызывает прерывание. Доступен только по чтению. Разряд 6 - ‘0’ в этом разряде разрешает выработку сигнала требования прерывания по единичному значению разряда 7. Остальные разряды регистра не используются, читаются как 0. По сигналу сброса магистрали разряд 6 устанавливается в ‘1’, разряд 7 обнуляется. ПРИМЕЧАНИЕ. См.также информацию о бите 6 системного регистра ЭВМ. 1.2.2. Регистр данных клавиатуры Адрес регистра - 177662. Формат регистра: ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ Разряды 0 - 6 содержат код нажатой клавиши. Разряды 7 - 15 не используются, читаются нулями. Регистр доступен только по чтению. Данные сохраняются в регистре до нажатия следующей клавиши клавиатуры. При установленном в ‘1’ 7-м разряде регистра состояния запись в регистр данных блокируется и нажатия клавиш игнорируются. 1.2.3. Регистр управления палитрами Адрес регистра - 177662. Формат регистра: ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ Регистр доступен только по записи. Разряд 15 - управляет отображением буферов экрана. При значении 0 отображается буфер 0 (страница 5), при 1 - буфер 1 (страница 6). Разряд 14 - управляет включением системного таймера. При значении 0 таймер выключен, при 1 - включен. Разряды 11 - 8 - в эти разряды записывается код палитры, которая задает кодировку цветов на экране в режиме 256 точек/строка. Текущее состояние регистра можно определить с помощью запросов БОС. 1.2.4. Регистр смещения Регистр смещения предназначен для управления “рулонным” сдвигом информации на экране по вертикали путем задания адреса в буфере экрана, с которого должна начинаться регенерация изображения. Адрес регистра - 177664. Формат регистра: ┌──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┬──┐ Разряд 9 - при записи “1” в этот разряд на экране отображается весь буфер экрана (256 телевизионных строк). При нулевом значении в верхней части растра отображается 1/4 часть (старшие адреса) экранного ОЗУ, нижняя часть экрана не отображается. Данный режим не используется базовой операционной системой. Разряды 7 - 0 - в этом поле задается адрес строки экранного ОЗУ, с которой начинается отображение экрана. ОЗУ буфера экрана считается “замкнутым в кольцо”. Экран состоит из 256 строк по 64 байта в каждой. Строки начинаются с адресов, кратных 100 (восьмеричное). Первый байт строки расположен в левом конце строки, байты отображаются, начиная с младшего бита. Смещение задается в строках, т.е. изменение кода смещения на 1 приводит к кольцевому сдвигу информации на экране на одну строку растра. Исходному состоянию (первый байт буфера экрана отображается в самой верхней строке растра) соответствует значение смещения 330 восьмеричное. Увеличение значения соответствует сдвигу информации вверх, уменьшение - вниз. Остальные разряды не используются. Регистр доступен по записи и чтению. 1.2.5. Регистр параллельного программируемого интерфейса Этот 16-разрядный регистр предназначен для записи информации в выходной порт и чтения информации с входного порта. Адрес регистра - 177714. Возможность прочитать состояние выходного порта отсутствует. Фактически в ЭВМ реализованы два независимых регистра,имеющие один и тот же адрес:
1.2.6. Системный регистр Используется при начальном запуске процессора, для переключения страниц ОЗУ/ПЗУ, управления внешними устройствами ЭВМ. Адрес регистра - 177716. Фактически по указанному адресу расположены три регистра:
1.2.6.1. Регистр чтения Формат регистра: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 Разряды 15 - 8 - определяют адрес начального пуска ЭВМ по включению питания (140000); Разряд 7 - должен быть равен ‘1’; Разряд 6 - установлен в ‘0’, если нажата любая клавиша клавиатуры ЭВМ. Устанавливается в ‘1’ по отпускании клавиши; Разряд 5 - разряд данных контроллера магнитофона; Разряд 2 - этот разряд устанавливается в ‘1’ по любой операции записи в системный регистр. Сбрасывается в ‘0’ по окончанию операции чтения системного регистра. Об использовании этого разряда см. в разделе, посвященном особенностям выполнения некоторых команд ЭВМ. Остальные разряды не используются и читаются нулями. 1.2.6.2. Регистр управления памятью Формат регистра: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 Разряды 14 - 12 - определяют номер страницы ОЗУ, подключаемой на адреса 40000 - 100000 (см. ниже). Разряд 11 - должен содержать 1. Разряды 10 - 8 - определяют номер страницы ОЗУ, подключаемой на адреса 100000 - 140000. Разряд 4 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 3, отключает страницу ОЗУ с соответствующих адресов. Разряд 3 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 2, отключает страницу ОЗУ. Разряд 1 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 1, отключает страницу ОЗУ. Разряд 0 - разрешает подключение к адресному пространству 100000 - 140000 страницы ПЗУ номер 0, отключает страницу ОЗУ. Кодировка переключаемых страниц ОЗУ:
ПРИМЕЧАНИЕ. Запись в регистр возможна только при установленном 11-м бите, только по командам, работающим с регистром, как с целым словом. Страницы 0, 1 и 2 ПЗУ зарезервированы: страница 0 и адресное пространство 100000 - 117777 страницы 1 предназначены для ПЗУ языка программирования BASIC. В адресах 120000 - 137777 страницы 1 расположены программы БОС. Адреса 100000 - 117777 страницы 2 предназначены для ПЗУ драйвера локальной сети. Страница 3 ПЗУ предназначена для подключения внешних блоков ПЗУ к магистрали ЭВМ. 1.2.6.3. Регистр управления магнитофоном Формат регистра: 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 Регистр доступен только по записи при значении разряда 11 равном ‘0’. 1.3. Особенности выполнения команд Система команд микроЭВМ соответствует системе команд ЭВМ “ЭЛЕКТРОНИКА - 60” и определяется применяемым процессором 1801ВМ1. Однако в связи с рядом особенностей архитектуры существуют некоторые отличия от ЭВМ семейств СМ ЭВМ, ЭЛЕКТРОНИКА-60, ЭЛЕКТРОНИКА-85 и ДВК. Команда HALT (код 000000) вызывает прерывание выполнения программы и переход по вектору прерывания 4, причем при этом устанавливается бит - признак записи в системный регистр. БОС различает обычное прерывание по 4 вектору и останов. Программа пользователя имеет возможность перехватить только обычное прерывание по 4 вектору. При останове произойдет переход в монитор БОС с выводом на экран содержимого счетчика команд ЭВМ. Следует заметить, что правильная обработка клавиши ‘стоп’ возможна только при корректном значении указателя стека. Кроме этого, из-за особенностей аппаратуры может выдаваться неправильное значение счетчика команд. В некоторых случаях (нажатие ‘стоп’ во время выполнения запроса БОС) невозможно продолжение программы по команде “P”. Исходя из сказанного, клавишей ‘стоп’ следует пользоваться очень осторожно. 1.4. Вектора прерываний и зарезервированные ячейки БОС Обработка прерываний в ЭВМ производится по векторам, размещенным в области 0 - 376. Некоторые ячейки этой области используются БОС для внутренних целей.
2. Функции базовой операционной системы БОС состоит из следующих программ:
2.1. Программа начального пуска Программа начального пуска предназначена для инициализации БОС при включении ЭВМ, определения конфигурации ЭВМ и запуска других программ. При включении ЭВМ программа определяет наличие дополнительных блоков ПЗУ, устанавливая соответствующие флаги. Если в момент пуска нажата и удерживается какая-либо клавиша на клавиатуре, программа начального пуска передает управление клавиатурному монитору. Если ни одна клавиша не нажата,производятся следующие действия: если к ЭВМ подключен контроллер НГМД, программа начального пуска вызывает дисковый загрузчик,расположенный в контроллере НГМД по адресу 160000. Дисковый загрузчик поочередно пытается загрузить операционную систему (ОС) с 0, 1 привода. Если все попытки оказались неудачными (в дисковод не вставлена дискета с ОС, дискета запорчена и т.д.), загрузчик возвращает управление программе начального пуска. Затем программа поочередно пытается запустить блоки ПЗУ, начиная с блока с наибольшим номером. Первое слово программы в ПЗУ должно быть командой NOP (код 240). Вызов ПЗУ производится командой JSR PC, поэтому программа в ПЗУ может вернуть управление программе начального пуска командой RTS PC для продолжения загрузки. Если программ в ПЗУ нет или они вернули управление, производится переход в клавиатурный монитор. 2.2. Клавиатурный монитор Клавиатурный монитор является програмой,работающей в диалоге с пользователем ЭВМ,и позволяет ему загружать программы с магнитной ленты, запускать программы на выполнение, просматривать и корректировать содержимое ячеек ОЗУ, регистров процессора и внешних устройств, записывать участки ОЗУ на магнитную ленту, загружать операционную систему с диска и т.д. Все эти функции выполняются пользователем при помощи команд монитора. Язык команд монитора максимально приближен ко входному языку режима пультового терминала ЭВМ ‘ЭЛЕКТРОНИКА-60’ и ‘ДВК’. 2.2.1. Команды монитора Признаком готовности монитора к приему очередной команды оператора является символ ‘@’ в первой позиции строки экрана. Числа вводятся в восьмеричной системе счисления. Набирать незначащие нули необязательно. XXXXXX/ - открыть ячейку с восьмеричным адресом XXXXXX. По этой команде на экран выводится восьмеричное содержимое ячейки ОЗУ, ПЗУ или регистра внешнего устройства с адресом XXXXXX. Если такой регистр отсутствует или страница ОЗУ не подключена к заданному адресу, выводится сообщение об ошибке - символ ‘?’ и команда игнорируется. XXXXXX\ -открыть байт с адресом XXXXXX. Содержимое байта или слова можно изменить, введя восьмеричное число (новое содержимое) и подав одну из команд: ‘ВВОД’ (клавиша ‘<─┘’), ‘открыть следующую ячейку’, ‘открыть предыдущую ячейку’,’открыть косвенно’,’открыть по смещению’. RX/ - открыть регистр X, где X = 0...7 или ‘S’. Открывает регистр общего назначения процессора (R0 - R7) или регистр состояния процессора (RS). Команды ‘/’ и ‘\’ без аргумента открывают “текущую”, то есть последнюю открывавшуюся ячейку. ‘ВВОД’ (<─┘) - закрыть слово, байт или регистр. Если пользователем было введено новое содержимое, оно будет записано. ■ - закрыть слово, байт или регистр (если надо, модифицировать содержимое как по команде ‘ВВОД’) и открыть следующее слово, байт или регистр (при этом печатается адрес открываемой ячейки). После ячейки с адресом 177777 открывается ячейка 000000, после R7 - R0, после RS - команда работает, как команда ‘ВВОД’. ■ - закрыть (с модификацией) и открыть предыдущее слово, байт, регистр. ■ - закрыть (с модификацией) ячейку, вычислить адрес по формуле: АДРЕС = < АДРЕС ТЕКУЩЕЙ ЯЧЕЙКИ > + ее новое содержимое + 2 и открыть (как слово) ячейку с соответствующим адресом. Эта команда используется для открытия аргумента команды ЭВМ, использующей метод адресации “67”. ■ - закрыть (с модификацией) ячейку, вычислить адрес по формуле: АДРЕС = < АДРЕС ЯЧЕЙКИ > + < СОДЕРЖИМОЕ МЛАДШЕГО БАЙТА > * 2 + 2 и открыть (как слово) ячейку с соответствующим адресом. Содержимое байта рассматривается как число со знаком. Команда используется для открытия ячейки, на которую выполняется переход по команде типа “BR”. ‘@’ - закрыть (с модификацией) ячейку, открыть ячейку по адресу, равному (новому) содержимому закрытой ячейки. N;MC -отобразить страницу номер “N” с адреса, задаваемого аргументом “M”. Страницы с восьмеричными номерами 10, 11, 12, 13 относятся к страницам ПЗУ 0, 1, 2, и 3 соответственно. Значение “M”, равное нулю, означает адреса 40000-100000, равное “1” - адреса 100000-140000. XXXB - загрузить операционную систему с НГМД номер XXX и запустить ее. Если номер не задан, производится загрузка с автоматическим поиском системного диска. XXXXXXL - загрузить с адреса XXXXXX двоичный файл с магнитной ленты. Если адрес не задан, загрузка осуществляется с адреса, заданного в заголовке файла. Базовая операционная система поддерживает формат записи на магнитной ленте, совместимый с ЭВМ БК - 0010. После выдачи этой команды на экран выдается вопрос “имя файла?”. Оператор должен ввести имя файла на магнитной ленте длиной до 16 символов. Если необходимо просмотреть каталог ленты,необходимо ввести ‘?’ вместо имени файла. Если нажать клавишу ‘ВВОД’ без ввода имени, будет загружен первый встретившийся файл. <ОБЛАСТЬ>;U - вывести в файл информацию из ОЗУ. <ОБЛАСТЬ> - конструкция вида ‘XXXXXX-YYYYYY’, где XXXXXX и YYYYYY - начальный и конечный (включительно) адреса записываемой области ОЗУ, или вида ‘XXXXXX+YYYYYY’, где XXXXXX - начальный адрес записываемой области ОЗУ, а YYYYYY -длина в байтах. После выдачи команды задается вопрос “имя?”, на который оператор должен ввести имя файла, который он хочет записать на ленту. XXXXXXM - включить/выключить двигатель магнитофона (используется при перемотке). Если XXXXXX не равно 0, двигатель включается, иначе выключается. Отсутствие аргумента соответствует нулевому. XXXXXXG - запустить программу с адреса XXXXXX. При отсутствии аргумента запуск производится со стартового адреса прграммы, который должен содержаться в ячейке USERPC (адрес 000040). P - продолжить выполнение программы с адреса, на котором оно было прервано командой ‘HALT’ или клавишей ‘стоп’. ‘ШАГ’ - выполнить одну команду программы и вернуться в монитор. ‘■’ (забой) - аннулировать последнюю введенную цифру. Другие символы не аннулируются. Команда не выполняется, если вводимое число = 0. ‘СУ/E’ - переход в непосредственный режим. Используется для настройки драйвера экрана. В драйвер экрана передается символ ESC (код 33), после чего монитор все вводимые символы передает драйверу экрана. Монитор остается в непосредственном режиме до ввода комбинации ‘СУ/@’. ESC - последовательности, воспринимаемые драйвером экрана, см. в приложении 2. Пример:
2.3. Таблица системных вызовов Таблица системных вызовов распологается в ПЗУ, начиная с адреса 140010 и является массивом адресов программ - обработчиков системных вызовов. Вызов функции БОС производится командой: JSR PC , @ADDR где ADDR - адрес одного из слов таблицы, например JSR PC , @140010 Для передачи параметров используется R0 процессора, а в некоторых случаях и R1. При возврате из БОС содержимое регистров процессора сохраняется, за исключением особо оговоренных случаев.Содержимое таблицы рассматривается ниже. 2.4. Диспетчер EMT Диспетчер EMT позволяет наряду со способом вызова по JSR использовать команды EMT. Способ передачи параметров совпадает с вызовами JSR.При обработке команды EMT с номером, превышающим допустимый, диспетчер проверяет содержимое ячейки 166. Если оно не равно нулю, управление передается по адресу, находящемуся в этой ячейке. Регистр PS процессора устанавливается в соответствии с содержимым 32 ячейки. Возврат из пользовательского обработчика производится непосредственно в вызвавшую программу командой RTI. Достоинства использования EMT:
Недостатки:
2.5. Драйвер ОЗУ/ПЗУ Драйвер ОЗУ/ПЗУ позволяет подключать по запросу пользовательской программы заданные страницы ОЗУ/ПЗУ, определять состояние памяти и страниц, читать и записывать слова, байты и массивы слов в скрытые страницы, обращаться к подпрограммам, находящимся в скрытых страницах, а также обеспечивает защиту системной страницы. 2.6. Драйвер клавиатуры Драйвер клавиатуры обеспечивает прием символов с клавиатуры, перекодировку символов в соответствии с таблицами КОИ - 8, КОИ - 7Н0, КОИ - 7Н1, КОИ - 7Н2, запись символов во внутренний буфер, выдачу по запросу и по прерыванию символов в программу пользователя с ожиданием и без, программирование и подстановку функциональных клавиш, автоповтор последнего символа, редактирование вводимой и существующей строки, акустическую обратную связь при нажатии на клавиши. Драйвер может работать в двух режимах: прямом, когда коды функциональных клавиш передаются в программу без изменений, и режиме перекодировки, в котором некоторые функциональные клавиши выдают другие коды (см. приложение 1). 2.7. Драйвер экрана Драйвер экрана обеспечивает вывод на экран символьной, псевдографической и графической информации, стирание экрана, сдвиг вверх и вниз, управление цветами и палитрами, переключение буферов экрана, управление курсором. Вывод символьной и графической информации возможен в трех режимах:
Вывод алфавитно-цифровой информации производится в соответствии с одной из таблиц: КОИ-8,КОИ-7Н0, КОИ-7Н1, КОИ-7Н2. Знакогенератор символов располагается в системной странице ОЗУ, начиная со смещения 10000. Хотя системная страница не может быть подключена, область знакогенератора доступна по чтению и записи с помощью запросов драйвера ОЗУ/ПЗУ. Описание каждого символа состоит из 10 байт, соответствующих телевизионным строкам. Байт с младшим адресом соответствует верхней строке символа, младший бит байта -левой точке в строке. Таблица начинается с изображения символа с восьмеричным кодом 040.Далее подряд идут изображения символов с кодами от 041 до 377. При начальном пуске ЭВМ в ОЗУ переписывается стандартный знакогенератор из ПЗУ. Программа пользователя может заменить любую часть знакогенератора. В режиме 80 символов в строке на экран выводятся первые 6 бит каждого байта. На экране может быть отображен алфавитно-цифровой курсор, указывающий позицию текущего символьного вывода, возможны две формы курсора: в виде прямоугольника, инвертирующего изображение символа, на котором находится курсор и в виде подчеркивания символа. При выводе в последней строке символа ПС (код 12) или ПФ (код 14) сдвиг экрана вверх может производиться либо скачком либо плавно. Возможно задание атрибутов выводимых символов: двойная ширина, подчеркивание, инверсия, возможен также вывод символов двойной высоты в 2 приема: сначала выводится верхняя часть буквы, затем курсор позиционируется на строку ниже в той же позиции и выводится нижняя часть быквы. Двойная высота может сочетаться с любой шириной, подчеркивание символов двойной высоты не производится. При выводе на экран графической информации возможны два режима работы: с замещением текущим цветом или с инверсией существующег цвета, а также задание прямоугольного окна для отсечения его по границам. 2.8. Драйвер кассетного магнитофона Драйвер кассетного магнитофона обеспечивает поиск, запись и считывание файлов с бытового кассетного магнитофона в формате, совместимом с БК - 0010. 2.9. Драйвер принтера Драйвер принтера обеспечивает вывод на печатающее устройство алфавитно-цифровой информации с перекодировкой по таблицам КОИ - 8, КОИ - 7Н0, КОИ-7Н1, КОИ - 7Н2, определение готовности ПУ, отслеживание позиции печатающей головки. 2.10. Драйвер НГМД Драйвер НГМД обеспечивает запись и считывание информации с гибких магнитных дисков в формате, совместимом с контроллером КМД от ДВК-3, а также форматирование дискет. 3. Описание системных запросов БОС В этой главе содержится краткое и подробное описание запрсов БОС БК-0011М. Для облегчения программирования на языке Ассемблера под управлением операционной системы ОС БК-11, поставляется макробиблиотека, содержащая макроопределения системных вызов. При описании функций БОС приводится 2 формата вызовов: макрокоманда и макрорасширение, которое может использоваться при программировании без макробиблиотеки. По умолчанию используются команды JSR. Для использовакия EMT следует присвоить служебной переменной ...EMT значение, отличное от нуля. БОС поддерживаетследующие вызовы:
3.1. Общесистемные запросы 3.1.1. Инициализация базовой операционной системы .BINIT
Производится инициализация драйверов БОС. Драйвер клавиатуры:
Драйвер экрана:
Драйвер магнитофона:
Драйвер принтера:
Драйвер НГМД:
3.1.2. Выход в клавиатурный монитор .BEXIT
Производится выход из программы пользователя в клавиатурный монитор. Настраиваются вектора клавиатуры, при этом возможен возврат в программу пользователя по команде ‘P’. 3.1.3. Перехват вектора 4 .BTRPS
Устанавливается адрес пользовательской программы для обработки 4 вектора. Состояние останова (команда HALT и клавиша ‘СТОП’) не перехватывается, в этом случае всегда происходит выход в монитор. Программа обработки должна заканчиваться командой RTI. Вызов с нулевым значением аргумента ADDR отменяет обработку 4 вектора в пользовательской программе. В обоих случаях вектор 4 настраивается на обработчик БОС. 3.1.4. Управление таймером .BTIM
Если бит 15 ARG равен 1, то в R0 возвращается признак: 0 - таймер выключен, 1 - таймер включен, если бит 15 ARG равен 0, то при нулевом значении ARG происходит выключение таймера, при ненулевом - включение. Перед включением таймера следует подготовить вектор 100. 3.1.5. Управление обработкой EMT .BEMT Макрокоманда имеет две формы запроса. Первая:
Содержимое вектора EMT (если оно не равно адресу диспетчера EMT) помещается в ячейку 166 (настраивается пользовательский обработчик EMT). Макробиблиотека настраивается на использование команд EMT (ниже по тексту программы). Вторая:
Восстанавливается прямая обработка EMT пользовательской программой. Макробиблиотека настраивается на использование команд JSR (ниже по тексту программы). 3.2. Запросы драйвера ОЗУ/ПЗУ 3.2.1. Чтение состояния памяти .BMEM
В младший байт R0 помещается номер страницы, подключенной к адресу 40000, в старший - номер страницы, подключенной к адресу 100000. Номера страниц 0 - 7 относятся к ОЗУ, страницы 10 - 13 (восьмеричное) относится к страницам ПЗУ с номерами 0, 1, 2 и 3 соответственно. 3.2.2. Чтение статуса страницы ОЗУ/ПЗУ .BTEST
Выдается состояние страницы ОЗУ/ПЗУ. В R0 помещается код:
Примечание. Страница ПЗУ считается подключенной, если в ней присутствует хотя бы одна микросхема ПЗУ. 3.2.3. Подключение страницы ОЗУ/ПЗУ .BPAGE
В младший байт R0 помещается номер подключаемой страницы. Код адреса подключения страницы помещается в старший байт R0. Нулевое значение означает область адресов 40000 - 100000, любое ненулевое значение - область 100000 - 140000. Возможно нормальное завершение запроса и завершение запроса с ошибкой. В случае нормального завершения бит ‘C’ в слове состояния процессора сброшен, по ошибке - установлен в 1. В этом случае в байт с адресом 52 (восьмеричное) помещается код ошибки:
3.2.4. Назначение рабочей страницы .BWORK
Если бит 15 аргумента равен 0, то происходит назначение рабочей страницы: если бит 7 равен 0,то страница с номером в младшем байте аргумента назначается в качестве рабочей для записи/чтения. Если бит 7 равен 1, то страница назначается в качестве рабочей для макрокоманд .BJSR и .BJMP. Если бит 15 аргумента равен 1, то в R0 помещается код рабочих страниц: в младшем байте номер рабочей страницы чтения-записи, в старшем - номер страницы вызовов (со старшим битом, равным 0). 3.2.5. Чтение слова из рабочей страницы .BGETW
Из рабочей страницы по указанному адресу читается слово и помещается в R0. При попытке прочесть слово из несуществующей страницы R0 не изменяется, а бит ‘C’ слова состояния процессора устанавливается в 1. Старшие два бита адреса игнорируются. 3.2.6. Чтение байта из рабочей страницы .BGETB
Из рабочей страницы по указанному адресу читается байт и помещается в младший байт R0. Старший байт R0 обнуляется. При попытке прочесть байт из несуществующей страницы R0 не изменяется, а бит ‘C’ слова состояния процессора устанавливается в 1. 3.2.7. Запись слова в рабочую страницу .BPUTW
В рабочую страницу по указанному адресу записывается слово. При попытке записи в ПЗУ,несуществующую страницу или системную область ОЗУ устанавливается бит ‘C’. Системной областью считается область системной страницы с относительными адресами 0 - 7777. 3.2.8. Запись байта в рабочую страницу .BPUTB
В рабочую страницу по указанному адресу записывается байт. При попытке записи в ПЗУ, несуществующую страницу, системную область ОЗУ устанавливается бит ‘C’. 3.2.9. Пересылка массива слов .BMOVE
Производится пересылка массива слов между текущим адресным пространством пользователя и заданным скрытым пространством. В R0 помещается адрес области параметров. Формат области: .WORD MEMADR ; начальный адрес в памяти Начальные адреса в памяти должны лежать выше адреса 400, конечные адреса (начальный адрес + счетчик) в памяти не должны превышать 160000. Параметры LOW и HIGH задают номера страниц, подключаемых к адресам 40000 и 100000 соответственно. Выходной массив (в который осуществляется запись) не должен лежать в ПЗУ или системной области ОЗУ. Положительное значение счетчика слов задает пересылку из рабочей страницы в память (чтение),отрицательное (при этом используется абсолютное значение счетчика) - обратную операцию (запись). При правильно заданных параметрах и успешной пересылке бит ‘C’ слова состояния процессора и байт 52 обнуляются. Возможны следующие случаи неуспешного завершения (при этом бит ‘C’ устанавливается в 1 и в байт 52 помещается соответствующий код):
3.2.10. Пересылка массива байтов .BMOVB
Производится пересылка массива слов между текущим адресным пространством пользователя и заданным скрытым пространством. Параметры аналогичны пересылке слов (вместо “слов” читай “байтов”). 3.2.11. Вызов подпрограммы из рабочей страницы .BJSR
Рабочая страница подключается по адресу, определенному аргументом ADDR (если он находится в диапазоне 40000 - 47776, то к 40000, если в диапазоне 100000 - 140000, то к 100000) и производится вызов командой JSR PC,ADDR. Регистры общего назначения с слово состояния процессора (кроме бита ‘C’) при выполнении вызова не изменяются. Стек не должен находиться в переключаемой странице. В стек помещается следующя информация:
При выходе из подпрограммы регистры общего назначения и слово состояния программы сохраняются. При попытке обращения к подпрограмме в несуществующей странице или системной странице ОЗУ обращение к подпрограмме выполняться не будет и выполнится выход в монитор с соответствующей диагностикой. После выхода из подпрограммы восстанавливается старое подключение обеих страниц ОЗУ/ПЗУ, даже если подпрограмма переключала одну или обе страницы. Допускается вложенное использование макрокоманды ‘.BJSR’. Параметр вызова из стека удаляется. 3.2.12. Переход в рабочую страницу без возврата .BJMP
Макрокоманда выполняется аналогично макрокоманде .BJSR, но дополнительная информация в стек не помещается, адрес возврата не сохраняется. Если страница не существует или занята системой, параметры вызова из стека удаляются и происходит выход в монитор с соответствующей диагностикой. ПРИМЕЧАНИЯ:
3.3. Запросы драйвера клавиатуры 3.3.1. Инициализация драйвера клавиатуры .BKINI
Выполняется инициализация драйвера клавиатуры, описанная в макрокоманде .BINIT. 3.3.2. Установка режима драйвера клавиатуры .BKSET
Устанавливается режим драйвера клавиатуры в соответствии со словом MODE. Назначение разрядов слова:
Кроме этого, программа пользователя имеет возможность задать подпрограмму завершения при нажатии каждой клавиши. Программным вектором считаются ячейки 110 и 112. При нулевом содержимом 110 ячейки считается, что подпрограмма завершения отсутствует. В ячейку 112 записывается значение регистра управления памятью для подпрограммы завершения или 0 для текущего распределения. При вызове подпрограммы завершения в R0 передается код нажатой клавиши. Выход из подпрограммы выполняется командой ‘RTS PC’. В подпрограмме завершения можно использовать все регистры общего назначения. Если при выходе из подпрограммы завершения бит ‘C’ установлен в 1, драйвер считает, что символ с клавиатуры не обработан и передаст его программе пользователя по .BTTIN. Если при выходе из подпрограммы завершения бит ‘C’ установлен в 0, то символ считается обработанным и в буфер не записывается. 3.3.3. Чтение режима работы клавиатуры .BKGET
Текущий режим клавиатуры помещается в R0. Формат слова режима см. макро .BKSET. 3.3.4. Ввод символа с ожиданием .BTTIN
В младший байт R0 помещается очередной символ из буфера ввода клавиатуры, старший байт R0 обнуляется. 3.3.5. Ввод символа без ожидания .BINKEY
В случае отсутствия символов в буфере, R0 обнуляется, бит ‘C’ устанавливается в 1, в противном случае бит ‘C’сброшен,в R0 передается код очередного символа. 3.3.6. Ввод строки с редактированием .BGLIN
Осуществляется ввод с клавиатуры строки символов с редактированием. Ввод строки заканчивается при нажатии клавиши ‘ВВОД’, необязательно в конце строки. Код клавиши ‘ВВОД’ в буфер не помещается, в конце строки добавляется нулевой байт. Параметр ADDR задает адрес буфера, куда помещается строка, параметр LENGTH задает максимальную длину вводимой строки. При длине, равной 0, длина принимается равной максимально возможной длине - 128 символов. При вводе строки отрабатывается клавиша ‘забой’. После возврата из функции в R0 находится адрес байта, следующего за нулевым, а в R1 - длина введенной строки. 3.3.7. Редактирование существующей строки .BEDIT
Строка, находящаяся по адресу ADDR и заканчивающаяся нулевым байтом, выводится на экран, курсор помещается в конец выведенной строки, после чего осуществляется ее редактирование, аналогичное .BGLIN. Отредактированная строка помещается на место исходной. 3.3.8. Сброс буфера клавиатуры .BKRES
Осуществляется инициализация кольцевого буфера клавиатуры. 3.3.9. Установка функциональных клавиш .BSFUN
Макрокоманда позволяет присвоить 10 функциональным клавишам (аргумент KEY [1...10] - номер клавиши) текстовые строки, которые будут вводиться при нажатиях этих клавиш.Функциональные клавиши вводятся при одновременном нажатии клавиши АР2 и соответствующей цифровой клавиши(номеру 10 соответствует клавиша 0). Аргумент KEY, равный 0, вызывает сброс всех функциональных клавиш.Аргумент ADDR задает адрес строки, которая должна заканчиваться нулевым байтом. Максимальная длина присваемой строки - 64. 3.3.10. Чтение функциональных клавиш .BGFUN
Производится пересылка строки, соответствующей клавише с номером KEY, в пользовательскую область по адресу ADDR. 3.4. Запросы драйвера экрана 3.4.1. Инициализация драйвера экрана .BTINI
Производится инициализация драйвера экрана, описанная в макрокоманде .BINIT. 3.4.2. Установка режима драйвера экрана .BTSET
Устанавливается режим работы экрана, соответствующий слову MODE. Формат слова приведен в приложении 3. 3.4.3. Чтение режима драйвера экрана .BTGET
В R0 помещается слово управления режимом драйвера экрана. 3.4.4. Установка цветов .BSCOL
Задаются цвета для символьного вывода на экран. Аргумент FORE задает код цвета для символов и помещается в младший байт R0, аргумент BACK - код цветов фона и помещается в старший байт R0. Код, больший 200 (восьмеричное), означает сохранение текущего цвета. В зависимости от режима рассматриваются младшие 1 или 2 бита кода. 3.4.5. Чтение цветов .BGCOL
В R0 помещается код текущих цветов, как описано в макрокоманде .BSCOL. 3.4.6. Установка/чтение палитры .PAL
Устанавливается палитра, соответствующая аргументу PALET (0...15). Если PALET >200 (восьм.), то палитра не изменяется, а в R0 код текущей палитры. 3.4.7. Переключение буферов экрана .BBUF
Устанавливаются буфера экрана для отображения (VIDEO) и для записи (WRITE). Номер буфера (0 или 1) отображения помещается в младший байт R0, записи - в старший. Если бит 15 R0 установлен в’1’, в R0 возвращается текущий код буферов. 3.4.8. Установка координат алфавитно-цифрового курсора .BSPOS
Алфавитно-цифровой курсор устанавливается в заданной позиции POS заданной строки LINE. Если номер строки или позиции в строке превышает допустимый, то соответствующая координата не изменяется. 3.4.9. Чтение координат Алфавитно-цифрового курсора .BGPOS
В R0 помещается текущее положение курсора, причем в младшем байте содержится номер позиции, а в старшем - номер строки. 3.4.10. Сдвиг экрана .BSCRL
Производится сдвиг изображения на указанное число телевизионных строк, положительное число означает сдвиг вверх, отрицательное - вниз. 3.4.11. Очистка экрана .BCLS
Производится очистка экрана (заполнение цветом фона). Курсор устанавливается в левый верхний угол. 3.4.12. Вывод символа .BTOUT
Производится вывод символа на экран, если он печатаемый. Управляющие символы, интерпретируемые драйвером, описаны в приложении 2. Управляющие символы, отсутствующие в таблице, игнорируются. В режиме ‘БЛОКРЕД’ все управляющие символы не обрабатываются, а выводятся в виде инверсных изображений латинских букв. 3.4.13. Вывод строки символов (формат RT-11) .BPRIN
Производится вывод на экран строки символов. Строка должна начинаться с адреса ADDR и заканчиваться байтом 0 (курсор переводится в начало следующей строки) или 200 (курсор располагается за последним выведенным символом). После возврата в R0 находится адрес байта, следующего за конечным. 3.4.14. Вывод строки символов .BSTR
Производится вывод строки, заканчивающейся байтом 0. Курсор на новую строку не переводится. 3.4.15. Установка текущих графических координат .BSGRF
Устанавливаются текущие графические координаты, которые используются в других графических вызовах. Аргумент X - номер точки в строке. Y- задает номер строки растра, верхняя левая точка имеет координаты (0,0), правая нижняя - (255,255) или (511,255) в зависимости от режима. 3.4.16. Чтение текущих графических координат .BGGRF
В R0 и R1 помещаются текущие графические координаты в том же формате, что и в .BSGRF. 3.4.17. Установка графического цвета .BSCGR
Устанавливается цвет для графического вывода. COLOR может принимать значения 0...3:
3.4.18. Чтение графического цвета .BGCGR
В R0 помещается код текущего графического цвета. 3.4.19. Установка/чтение режима рисования .BSMOD
Устанавливается режим рисования для всех графических вызовов. При MODE=0 устанавливается режим замещения текущим цветом. MODE=1 - режим инверсии содержимого буфера, MODE=200 - режим не меняется, а в R0 помещается код текущего режима. 3.4.20. Вывод графической точки .BSPNT
На экран по заданным координатам выводится графическая точка текущего цвета. Текущие координаты перемещаются в заданную точку. 3.4.21. Чтение цвета графической точки .BGPNT
В точке с заданными координатами определяется цвет и помещается в R0. Текущие координаты не изменяются. 3.4.22. Вывод графического вектора .BVECT
Выводится графический вектор текущего цвета, начало которого находится в точке с текущими координатами, а конец - в точке с заданными. Текущая точка перемещается в конечную. Часть отрезка, выходящая за пределы экрана (или окна) не отображается. 3.4.23. Вывод закрашенного прямоугольника .BRECT
Выводится прямоугольник, закрашенный текущим цветом, со сторонами, параллельными сторонам экрана. Один угол прямоугольника располагается в текущей точке, противоположный - в заданной. Текущая точка перемещается в заданную. 3.4.24. Вывод дуги или окружности .BCIRC
Выводится окружность, дуга или сектор текущего цвета. Аргумент ADDR задает адрес блока параметров вызова.
Начальный и конечный углы задаются следующим образом:
Если задано отрицательное значение, используется его абсолютная величина, а соответствующая граничная точка дуги соединяется с центром дуги отрезком прямой. Аргументы “коэф. сжатия кодируются следующим образом:
3.4.25. Закраска гранично-определенной области .BFILL
Производится закраска гранично - определенной 4-связной области текущим цветом,начиная с текущей точки. Область должна быть ограничена одним заданным цветом (COLOR). 3.4.26. Выдача звука .BSOUN
Выдается звук периодом TONE и длиной LENGTH периодов. 3.4.27. Установка графического окна .BSWIN
Производится установка границ окна для графического вывода. Аргумент AREA задает адрес области параметров. Формат области:
Если какая - либо из границ задана вне экрана, вместо нее устанавливается граница экрана. 3.4.28. Чтение графического экрана .BGWIN
По адресу, заданным параметром AREA, помещается таблица, описанная в .BSWIN. 3.4.29. Установка типа вектора .BSTYP
Производится установка типа (шаблона) для рисования графических векторов. Используется для рисования прерывистых линий. Каждый бит аргумента задает признак рисования (пропуска) двух точек, лежащих на векторе. После инициализации драйвера экрана устанавливается тип 177777 (8), задающий рисование сплошных линий. Следует учитывать, что значение типа циклически сдвигается, и поэтому рисование следующего вектора начинается не с начала шаблона, а с текущего положения. 3.4.30. Чтение типа вектора .BGTYP
В R0 помещается текущий шаблон рисования векторов. Значение может быть циклически сдвинуто относительно заданного (см. .BSTYP). 3.4.31. Установка и чтение ориентации графических символов .BGOSET
Производится установка ориентации для графического вывода символов. ARG, равный 0 означает нормальный вывод, 1 - повернутый на 180 градусов, 2 - на 90 влево, 3 - на 90 вправо; 200 - чтение ориентации графических символов (в R0 помещается код ориентации). 3.4.32. Графический вывод символа .BGOUT
Производится графический вывод символа, начиная с текущих графических координат в текущих режиме и ориентации текущим графическим цветом. Текущие координаты смещаются в соответствии с режимом и ориентацией для рисования следующего символа. Обрабатывается двойная ширина символов. В отличие от Алфавитно-цифрового вывода графические символы могут быть нарисованы в любой точке экрана, однако рисование производится медленнее. 3.5. Запросы драйвера магнитофона 3.5.1. Управление двигателем .BMOT
При ARG=1 осуществляется включение двигателя магнитофона,при ARG=0-выключение. 3.5.2. Вызов формата БК-0010 .BMB10
Выполняется операция с магнитофоном, используется формат магнитной ленты, совместимый с БК - 0010. Параметр AREA - адрес области ОЗУ, через которую передаются параметры вызова. Формат таблицы параметров вызова:
Поле ‘CODE’ (байт заполняется пользователем и содержит код операции:
Аргумент “начальный адрес” задает начальный адрес области ОЗУ, из которой выводится информация в файл или начальный адрес области ОЗУ, куда производится ввод информации. Если в команде чтения указан адрес 0,информация записывается, начиная с адреса, указанного в метке файла. Аргумент “длина” используется только в операции “запись файла”и задает длину в байтах записываемой области ОЗУ. Аргумент “имя файла” содержит 16-байтное имя файла, с которым необходимо произвести операцию. Если в запросе чтение файла имя будет начинаться с нулевого байта, то будет загружен первый встретившийся файл. Аргументы “СТР0” и “СТР1” задают номера страниц ОЗУ (ПЗУ), подключаемых к окнам 40000 - 100000 и 100000 - 140000 при передаче данных (задают страницы памяти буфера ввода - вывода). Отрицательные значения соответствующих байтов означают текущее распределение памяти. Следующая 20-байтная область служит для возврата информации о текущем файле при операциях “чтение” и “фиктивное чтение” и содержит начальный адрес, длину и имя, прочитанные из метки текущего файла ленты. При ошибочном завершении операции запрос возвращает установленный бит ‘C’ и код ошибки в байте 52:
При ошибке типа 1 магнитофон останавливается после прочитанной метки файла. 3.6. Запросы драйвера принтера 3.6.1. Инициализация драйвера принтера .BPINI
Осуществляется инициализация драйвера принтера, описанная в макрокоманде .BINIT. 3.6.2. Установка режима печати .BPSET
Устанавливается режим печати в соответствии со словом MODE. Назначение разрядов:
Младший байт MODE содержит число квантов ожидания готовности принтера, один квант соответствуеь одному полному циклу (65536 раз) команды SOB.При равенстве нулю время ожидания бесконечно. 3.6.3. Чтение режима печати .BPGET
В R0 помещается слово режима печати. 3.6.4. Вывод символа на печать .BPOUT
Осуществляется вывод символа на печать. Если печать не выдает готовности больше установленного времени тайм - аута, возвращается управление с установленным битом ‘C’. 3.6.5. Определение готовности принтера .BPRDY
Если принтер готов, в R0 помещается 1$ бит ‘C’ сброшен, иначе R0 = 1, C = 1. 3.6.6. Чтение текущей позиции печати .BPPOS
В R0 помещается текущая позиция печатающей головки. Пересчет при выводе символов табуляции не производится. 3.7. Запросы драйвера НГМД Драйвер НГМД размещен в ПЗУ, находящемся в контроллере НГМД, и доступен при подключении контроллера к ЭВМ. Драйвер имеет несколько точек входа:
Для работы драйвера необходима область ОЗУ размером 66 байт для размещения параметров и рабочих ячеек. Формат рабочей области: ───────┬──────┬──────────────────────┬───────────────────────────────────────── Таблица FLGTAB содержит по одному байту на привод и используется для обработки нестандартных дисков. В каждом байте используется два бита для указания параметров операции:
3.7.1. Автоматическая загрузка
Можно также произвести загрузку непосредственно из монитора команд оператора командой ‘B’. Входные параметры отсутствуют. Действие: производится попытка загрузить операционную систему с привода 0. Если попытка загрузки была неудачной, то драйвер последовательно пытается загрузить систему с 1, 2 и 3 привода. Если все попытки оказались неудачными, драйвер возвращает управление с установленным битом ‘C’ оператора. Алгоритм загрузки:
Причины неудачной загрузки:
3.7.2. Загрузка с выбранного привода
Из монитора загрузка производится командой <N>B, где <N> — номер выбранного привода. Действие аналогично предыдущему пункту, однако чтение начинается сразу с выбранного привода и при неудаче попыток загрузиться с других приводов не производится. 3.7.3. Чтение-запись логического блока
Входные параметры:
Блок является логической единицей информации на внешних носителях и равен 512 байтам. В основном используемом формате записи на диск размер блока совпадает с размером сектора. Первый сектор нижней стороны нулевой дорожки соответствует блоку 0. Вычисление номера сектора и дорожки по номеру блока производится с учетом установленных признаков в таблице FLGTAB. Алгоритм этого вычисления совпадает с алгоритмом драйвера MY для микроЭВМ серии ДВК. Длина массива данных задает количество двухбайтных слов, подлежащих пересылке, а также тип операции: положительное число — чтение, отрицательное — запись. При записи пересылаемое количество слов равно абсолютному значению длины. Если заданное количество превышает размер сектора, осуществляется автоматический переход к следующему сектору, а если необходимо, то и на другую сторону, и дорожку. Если при записи число слов не кратно размеру сектора, то остаток последнего сектора заполняется нулями. Перед самым первым вызовом драйвера поля CSRW, TRKTAB, FLAGS в рабочей области должны быть заполнены значениями, указанными в таблице, и не должны изменяться программой пользователя. Поля TDOWN, TSTEP, TRKCOR, BRETRY, FLGTAB рекомендуется заполнять значениями, указанными в таблице, однако они могут быть изменены в зависимости от конкретных условий. Возврат из драйвера осуществляется командой RTS PC. Содержимое регистров процессора R0, R1, R2, R4, R5 не сохраняется. При возникновении ошибки бит ‘C’в слове состояния процессора устанавливается в 1 и в байт с абсолютным адресом 52 помещается код ошибки:
После завершения операции драйвер оставляет двигатель дисковода включенным. Для остановки двигателя программа пользователя должна записать 0P по адресу 177130, а также в ячейку CSRW р 3.7.4. Чтение-запись по номеру сектора и дорожки
Входные параметры: R3 - адрес рабочей области Поля рабочей области: ADDR начальный адрес массива данных WCNT длина массива данных SIDE номер стороны (0 - нижняя, 1 - верхняя) TRK номер дорожки UNIT номер привода (0..3) SECTOR номер сектора (1...12(8)) Действие аналогично предыдущему пункту. 3.7.5. Инициализация рабочей области Эта точка входа является вспомогательной и служит для облегчения написания программ, использующих драйвер НГМД.
Входной параметр: R3 - базовый адрес рабочей области. Действие: заполняются следующие поля рабочей области:
3.7.6. Форматирование дорожки
Входные параметры:
Действие: форматируется указанная дорожка с указанной стороны, поле данных всех секторов заполняется кодом FILLB. Приложения Приложение 1: кодировка клавиш БК-0011 Управляющие клавиши ┌───────────────────────────────┬───────────────────────┬───────────────────┐ Примечание. * - в режиме дополнительной клавиатуры код 33 77 Коды функциональных клавиш в режиме перекодировки и дополнительной клавиатуры
Приложение 2: управление экраном Управляющие символы драйвера экрана
Командные последовательности
Примечания.
Приложение 3: формат слова управления режимом экрана 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |