Среда, 18.10.2017, 19:30
БК-0010.01. Повесть о настоящем компьютере
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Категории каталога
Введение в руководство [2]
Введение [0]
Организация БК-0010 [1]
Раздел 1. Организация БК-0010
Работа с МСД [1]
Раздел 2. Работа с МСД
Системные регистры [1]
Раздел 3. Системные регистры
Системное ПО [1]
Раздел 4. Системное программное обеспечение БК-0010
Прерывания. Приоритет ЦП [1]
Раздел 5. Система прерываний БК-0010. Приоритет процессора
Командные прерывания [1]
Раздел 6. Командные прерывания
ЕМТ БК-0010 [1]
Раздел 7. командные прерывания ЕМТ БК-0010
Коды и ассемблер. Мнемокод. [1]
Раздел 8. Коды и ассемблер. Мнемокод. Формат команды
Способы адресации [1]
Раздел 9. Способы адресации
Команды процессора БК-0010 [1]
Раздел 10. Система команд процессора БК-0010
Псевдокоманды. Метки. Комментарии [1]
Раздел 11. Псевдокоманды ассемблера. Метки. Комментарии
Программирование на ассемблере [1]
Раздел 12. Программирование на ассемблере. Начало. Трансляция программ. Ошибки
Отладка программ [1]
Раздел 13. Отладка программ. Позиционно-независимое программирование. Компановка
Подпрограммы ПЗУ БК-0010 [1]
Раздел 14. Подпрограммы ПЗУ БК-0010
Системная область ОЗУ БК-0010 [1]
Раздел 15. Системная область ОЗУ БК-0010. Некоторые секретные сведения об авторе и МП-клубе
Повышение быстродействия БК-0010 [1]
Раздел 16. Вопросы повышения быстродействия БК-0010
Об использовании ПЗУ [1]
Раздел 17. Полезная подпрограмма. Об использовании ПЗУ
Загадочные регистры [1]
Раздел 18. Загадочные регистры
Штурм системной области [1]
Раздел 19. Продолжаем штурм системной области
Об автозапуске программ [1]
Раздел 20. Об автозапуске программ
Коварные программы [1]
Раздел 21. Коварные программы
Еще о системной области [1]
Раздел 22. О пользе плагиата, или еще о системной области
О псевдокомандах и компановке [1]
Раздел 23. Еще раз о псевдокомандах, метках и компановке
Тук-тук, кто в стеке живет? [1]
Раздел 24. Тук-тук, кто в стеке живет?
Фокал с позиций ассемблера [1]
Раздел 25. Взгляд на фокал с позиций ассемблера
Наш опрос
Оцените мой сайт
Всего ответов: 47
 Каталог статей
Главная » Статьи » Работа с МСД

Работа в МСД

Мониторная система драйверов представляет собой основную часть резидентного ПО БК-0010. Все функции микро-ЭВМ - работу с файлами, связь со всеми внешними и внутренними устройствами, отображение информации, ввод с клавиатуры, тесты, звуковую сигнализацию, и все остальное центральный процессор выполняет с помощью драйверов МСД. МСД в БК представляет собой весьма полное подобие, но в миниатюре, операционной системы (ОС) больших ЭВМ. В отличие от последней, функции МСД проще.
Помимо служебных функций, как и всякая нормальная ОС, МСД предоставляет пользователю возможность работы в диалоговом режиме: просмотр памяти, запись туда информации, проверка и пересылка информации, работа с магнитофоном и т.д.

Пусковой монитор.
Часть МСД, называемая пусковым монитором (ПМ), обеспечивает ряд простых функций МСД БК-0010. Важнейшей функцией ПМ является начальный запуск системы. Он производится автоматически при включении питания, или после системного сброса. Адрес входа в ПМ - 100000. При обращении по этому адресу (или после включения ЭВМ) производится инициализация системы, состоящая в занесении необходимой начальной информации в системную область ОЗУ и передаче управления по адресу 120000, т.е. интерпретатору языка фокал.
чтобы из фокала выйти в ПМ, следует подать команду Р М ввод, после чего произойдет передача управления ПМ, о чем говорит очистка экрана и появление знака диалога ПМ - ?. При этом ПМ находится в диалоговом режиме, и, аналогично фокалу, ожидает команды.

Команды ПМ.
Продолжая аналогию с фокалом, можно сказать, что ПМ работает только в непосредственном режиме, роль же программного режима в нем выполняет программа пользователя, загружаемая с магнитной ленты (МЛ). Команды могут подаваться как и в фокале либо словом, либо одной буквой. Мы укажем последнюю форму представления команд, приведя также пример диалога ПМ. Все числа в составе команд как ПМ, так и МСД - только восьмеричные.

1.Загрузка с МЛ.
м <адрес загрузки> ввод имя? <имя файла> ввод
Начинается загрузка файла по указанному адресу, после успешной загрузки выдается ?, в случае ошибки контрольной суммы - сообщение ОШИБКА.
Если адрес не указан или указан равным 0, загрузка производится по естественному адресу, записанному на мл в оглавлении файла. В остальном загрузка не отличается от загрузки файлов в фокале.
Некоторые программы обладают свойством автозапуска. В этом случае после успешной загрузки программа сразу запускается, не ожидая команды запуска.

 2.Загрузка с телеграфной (ТЛГ) линии.
Л <адрес загрузки> ввод
Учитывая, что этой командой пользуются достаточно подготовленные лица, обычно имеющие в своем распоряжении несколько микро-ЭВМ, мы ее подробно не рассматриваем.

3.Запуск программы.
С <стартовый адрес> ввод
После чего программа пользователя, загруженная с мл, запускается на выполнение с указанного адреса. Если адрес не указан, происходит запуск с адреса загрузки (чаще всего это и нужно).

4.Передача управления на ПЗУ пользователя.
П ввод
ПЗУ пользователя при этом должно быть установлено в свободную розетку в отсеке ПЗУ БК, и рассчитано на работу в области адресов 140000...157777.

5.Запуск тестов.
Т ввод
при этом происходит выход в тесты МСД, точно так же, как из фокала.
Можно также передать управление тест-программам по адресу: с160100 ввод.

 6.Передача управления в фокал.
F ввод
Вместо f можно использовать любую букву от А... F.
По данной команде происходит перезапуск системы, как после включения питания, включая очистку ОЗУ.

Как видно из данного раздела, функции ПМ в основном ограничены загрузкой и запуском программ. Более полно все функции монитора реализуются в режиме МСД.

МСД.
Выход в МСД осуществляется через Т-ПЗУ.
Для выхода из фокала подаются команды:
P T ввод рус ТС.
Для выхода из ПМ - T ввод рус ТС.
Признаком выхода в МСД является появление знака диалога МСД - ¤.
Очистка экрана и ОЗУ не производится. Как и ПМ, МСД в диалоговом режиме ожидает команды.
Команды МСД будем называть директивами, и опишем их так же, как команды ПМ.
Все директивы подаются 1 или 2 буквами только в русском регистре, за одним исключением - директивa G.

Директивы МСД.

<адрес>А - установить текущий адрес.
А - контроль текущего адреса.
ответ: а=<адрес>.

<длина>Д - установить длину массива в байтах. Д - контроль длины. Ответ: д=<длина>.

<число>Р - размножить число в диапазоне адресов, начиная с ранее заданного значения а, до а+д.
пример: 40000А20000Д177777Р - число 177777 ("все единицы") записывается в область экранного ОЗУ, ровно на половину экрана (адреса 40000...57777).
число повторено 10000 раз (не забудьте, что каждое слово, а 177777 - это слово, занимает 2 байта).

<адрес>С - сравнить проверяемый массив, заключенный в границах <адрес> ... <адрес>+Д, с эталонным, заключенным в границах А...А+Д. Если массивы совпадают, то после сверки, которая длится не более 2-3 сек, выдается знак диалога МСД ¤. Если имеются расхождения, то они выводятся на экран в форме:
адрес : значение адрес : значение
где первые данные соответствуют проверяемому массиву, вторые - эталонному. Под значением понимается слово, записанное в ячейку ОЗУ по данному адресу. Пример будет приведен ниже.

Х - подсчитать контрольную суммы массива, заключенного в границах А...А+Д. Пример: 120000А20000ДХ. Ответ:х=177777.
получена контрольная сумма ПЗУ интерпретатора фокала.

адрес>П - переслать массив, заключенный в границах А...А+Д, по заданному адресу. При этом исходный массив сохраняется.
пример: 120000А20000Д40000П.
мы сделали копию ПЗУ фокала, разместив ее в экранном ОЗУ. Это довольно занимательная картинка. Информация "запорчена" появившимся на ней знаком диалога МСД ¤.
перешлем ее по адресу 1000 (следя, чтобы не произошел сдвиг экрана!): 40000А20000Д1000П. Этой командой картинка еще более запорчена.
сравним полученный массив с эталонным: 1000А20000Д120000С.
будут выдана на экран информация о запорченных адресах массива. Пересылка массива возможна и с "перекрытием",когда копия массива частично занимает место оригинала, например: 1752А12000Д1000П. При этом сверка, естественно, невозможна.

<число>Л - "листать" массив, начиная с адреса а, выведя на экран заданное число байт. Массив при этом представляется в виде слов, по 2 байта каждое.
пример: 264А4П. Ответ: 001000 010000.
получены 2 слова (или 4 байта). 1-е слово по адресу 264, 2-е - по адресу 266.
после выполнения директивы Л, текущий адрес А принимает значение (А+число). Значит, в нашем примере а=270.
если теперь дать директиву 100Л, будут распечатаны еще 100 байт
(не забывать - система восьмеричная!), А=370.

И - индикация слова по адресу А. Пример: 264АИ. Ответ: 001000.
<число>И - запись слова по адресу А.
пример: 60000А177777И - в "центр" экрана записать слово 177777.

Б - индикация байта по адресу А.
пример:
0АИ; ответ: 000137 - прочитано слово по адресу 0;
0АБ; ответ: 000137 - прочитан младший байт этого слова;
1АБ; ответ: 000000 - прочитан старший байт того же слова.
<число>Б - запись байта по адресу А.
пример: 50000А377Б - записать в экранное ОЗУ байт 377.

Ц - циклическое чтение по адресу А.
пример: 177662АЦ.
после чего попробуйте нажимать клавиши.
выход из цикла - стоп.
попробуйте теперь записать: 264А732И. Ответ: ЗЩ.
это - защита системной области от случайной записи. Но бывает необходимость занести информацию в системную область. Что делать?

Щ - снять защиту системной области.
теперь попробуйте: 732А100000И.
что произошло? Вот пример того, что нельзя бездумно "трогать" системную область. А мы коснулись всего лишь стека! Есть гораздо более "опасные" адреса системной области. Выйдите вновь в МСД.
 восстановить защиту - стоп.

, - чтение слова с инкрементом.
инкремент - это автоувеличение адреса. Каждый раз, перед выводом на экран слова по адресу а, а увеличивается на 2.
пример: 100000А, 000254, 100742 - мы вывели слова по адресам 100002 (а+2) и 100004.
<число>, - запись слова с инкрементом.
пример: 1000а, 000000 177777, 000000 - мы вывели содержимое по адресу 1002 (000000) и на его место записали 177777, после чего получено содержимое по адресу 1004 (тоже 000000), а=1004.

-- чтение слова с декрементом.
декремент - это автоуменьшение адреса. Оно происходит п о с л е вывода слова. Таким образом, при этом мы "читаем назад".
<число>-- запись слова с декрементом.
данные директивы по применению аналогичны предыдущим. Проверьте это сами, записывая слова в ОЗУ и читая их.

. - чтение байта с инкрементом.
аналогична чтению слова, но читается байт, и перед этим а увеличивается на 1.
<число>. - запись байта с инкрементом.

: - чтение байта с декрементом.
<число>: - запись байта с декрементом.
эти директивы после подробного рассмотрения предыдущих должны быть быть понятны.

МП - пуск мотора магнитофона, останов - любая клавиша, или специальная команда: МС, или стоп.
МЗ - запись информации на мл
МЧ - чтение информации с мл
МФ - фиктивное чтение с мл
работа с этими директивами происходит в диалоговом режиме, так что БК сама запрашивает необходимые данные.
как и в ПМ, указание в качестве адреса 0 (опустить адрес нельзя!), Приводит к загрузке по директиве МЧ файла по естественному адресу.
этот адрес и длину файла можно узнать после загрузки: адрес записан в ячейке 264, длина в ячейке 266, так что нужно дать директиву: 264А4Л;
ответ: <адрес> <длина>.
Это равным образом относится и к директиве МФ, но загрузки файла не происходит.

Некоторые программы имеют автозапуск после загрузки в МСД, признаком чего является их естественный адрес (его можно прочитать директивой МФ), равный 732, или меньше.
Как копировать такие файлы, ведь после запуска часть файла с адресами меньше 1000 будет разрушена? Опять-таки, довольно просто: загрузить их по адресу 1000, скопировать, а в документации к файлу указать на необходимость его загрузки с иного адреса.

Некоторые файлы имеют длину, превышающую емкость ОЗУ пользователя в обычном режиме (37000 байт). Узнать это легко по сумме <адрес загрузки>+<длина>. Если эта сумма больше 40000, необходимо копировать такие файлы в режиме расширенной памяти, с экраном 4 строки.

 Внимание!  Не путайте А и Д МСД с А и Д файла, это совершенно разные вещи!

<адрес>G - пуск на программу пользователя.
это единственная директива МСД в лат. регистре. Указание адреса обязательно.

забой - удаление последнего введенного символа.
иные клавиши редактирования в МСД не действуют.

ТК - выход в тесты, появляется знак диалога +.
эти программы пользователю должны быть хорошо известны из фокала,
выход - P T ввод.

ТМ - эта директива на БК автора не задействована,
 ответ: ЗВ (защита от входа, т.е. Обращение по некорректному адресу).
возможно, что она предназначалась для выхода в ПМ.

Т0...Т5 - тесты МСД.
Они заметно отличаются от тестов т-ПЗУ. Пользователь может самостоятельно в этом убедиться, проведя эти тесты. Особенно полезен тест Т2.
Теста Т0 в т-ПЗУ нет вообще.

К - выход в фокал.

Для того, чтобы работать в области системного программирования, необходимо совершенно свободно владеть всеми директивами МСД. Для этого необходима постоянная тренировка. Пользователь должен очень ясно представлять, что происходит в ответ на ту или иную директиву, и какая директива нужна для выполнения тех или иных действий.

Возникает вопрос, можно ли перейти из МСД в ПМ (иное дело, что это редко нужно)? Такая возможность имеется: для этого в любую свободную ячейку памяти, например, 1000, запишите код 104014: 1000А104014И, и запустите эту "программу" из 1 слова: 1000G.
Вы окажетесь в ПМ, признак чего - знак ?. Если до этого в МСД были загружены какие-либо программы, то в зависимости от их характера возможен самопроизвольный выход в фокал. О том, что за код мы использовали, вы узнаете дальше.

Content-Disposition: form-data; name="sort" 50
Категория: Работа с МСД | Автор: ЗАЛЬЦМАН Ю.А., МП-КЛУБ, г.АЛМА-АТА
Просмотров: 680 | Рейтинг: 5.0/1 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Используются технологии uCoz
Форма входа

Поиск
Друзья сайта
Статистика