Компьютер «Специалист»

МОНИТОР ОТКРЫВАЕТ «ОКНА»

Вниманию читателей предлагается новая версия Монитора для компьютера «Специалист». Данная управляющая программа была разработана с целью поднять уровень микроЭВМ, создать более дружественный и наглядный в общении интерфейс пользователя. Теперь компьютер станет более удобным партнером и выводимая на экране дисплея информация будет доступной для вашего восприятия. И все это благодаря возможности Монитора работать в режиме так называемых «окон», хорошо себя зарекомендовавшем в профессиональных ПЭВМ типа IBM, «Атари», «Макинтош» и др.

Первая версия такого Монитора была разработана автором в 1988 году. С тех пор программа претерпела ряд существенных изменений и дополнений, улучшающих ее характеристики. Сейчас Монитор размещается в двух ППЗУ К573РФ2 плюс одно аналогичное ППЗУ — знакогенератор — и имеет номер версии V5.7.

В основу структуры Монитора был положен принцип разделения его функций на независимые модули и драйверы (управляющие программы) внешних устройств. Знакогенератор занимает 2 Кбайта, структура его полностью сохранена. Он содержит 256 изображений символов, на каждое из которых отводится 8 байт. Изображение символов знакогенератора сформировано таким образом, чтобы как можно большее число элементов символа имели две сдвоенные точки по горизонтали. Это улучшает разборчивость символа текста на малом экране цветного телевизора.

Драйвер дисплея в новом варианте позволяет организовать работу с «окнами», размер которых задается программно с помощью набора соответствующих команд. Возможно прямое задание размеров и установка окна фиксированного размера. Например, команда ESC L устанавливает окно в полный экран. Процедуры очистки экрана и «роликов» выполняются в пределах заданного окна, без изменения информации в остальной части экрана.

Драйвер дисплея позволяет формировать на экране различное количество строк текста, зависящее от размеров «окна» и строки текста по вертикали. Программно, с помощью набора команд, можно задать 8 и 10 точек по вертикали на одну строку текста.

Драйвер дисплея позволяет настраиваться на любой другой знакогенератор в ОЗУ или ПЗУ.

Рис. 1. Расположение клавиш.
Рис. 1. Расположение клавиш.

Драйвер клавиатуры приближен к стандартному набору клавиш, включая: <SHIFT> — совместное нажатие вызывает набор спецсимволов: и т. д.; <CONTROL> — совместное нажатие вызывает набор управляющих кодов: ООН — 1FH; <LOCK> — переключение регистра ВЕРХНИЙ/НИЖНИЙ (в частном случае РУС/ЛАТ), работает в триггерном режиме. Расположение этих клавиш в матрице клавиатуры приведено на рисунке 1.

Драйвер клавиатуры генерирует повтор кода нажатой клавиши после удержания ее более 0,5 с, поскольку клавиша <ПОВТОР> исключена. Таблица кодов клавиатуры находится в ПЗУ, но есть возможность непосредственно изменить адрес таблицы в файле управления на таблицу в ОЗУ, загружаемую пользователем, что дает возможность программировать клавиатуру.

Драйвер клавиатуры позволяет работать с клавиатурой, генерирующей код КОИ-7 или КОИ-8 по параллельному каналу в прямом коде. При инициализации драйвер сам настраивается на ту клавиатуру, которая подключена в данный момент к порту клавиатуры. Схема подсоединения клавиатуры «КОИ» показана на рисунке 2.

Рис. 2. Схема подключения клавиатуры типа «КОИ-7/8» к ПЭВМ «Специалист».
Рис. 2. Схема подключения клавиатуры типа «КОИ-7/8» к ПЭВМ «Специалист».

Кроме тех режимов работы, которые обеспечивают новые драйверы клавиатуры и дисплея, Монитор позволяет работать в старом режиме отображения, то есть с первоначальным знакогенератором и клавиатурой. Для этого сохранено первое ППЗУ с адреса С000Н, но оно несколько изменено. Сделано это потому, что уже существует много наработанного матобеспечения для «Специалиста», которое ориентируется на адреса первой ПЗУ.

Монитор, если он готов к вводу команд, печатает PROMPT-строку (подсказку), приглашение ввести команду (<CLI> — COMMAND LINE INTERPRETATION — интерпретация командных строк). Кроме непосредственного ввода команд с клавиатуры, Монитор может обрабатывать командные строки, передаваемые ему из программ пользователя. Данным свойством можно воспользоваться при создании своего интерфейса с компьютером (режимы «меню», пакетный и пр.).

Теперь подробнее о составных частях Монитора. Монитор и драйверы внешних устройств используют ряд ячеек оперативной памяти, начиная с адреса 8F50H по 8FFFH, объединенных в общий файл управления. При выполнении программы начальной инициализации в него переносится информация из ПЗУ, определяющая основной режим работы дисплея и клавиатуры («окно» в центре экрана, 40 символов в строке и 20 строк в «окне»). В дальнейшем содержимое файла может изменяться в соответствии с изменяемым режимом.

В первых двух ячейках файла управления хранится адрес верхней границы оперативной памяти, до которой возможно использовать ОЗУ, не портя файл управления (табл. 1). Начиная с адреса 8F52H по 8F81H расположены рабочие ячейки Монитора, включая буфер командной строки.

С адреса 8F82H расположен файл управления драйвером дисплея. По этому адресу хранится горизонтальная позиция курсора (0—47). В следующей ячейке — вертикальная позиция курсора (0—255). Далее в двух ячейках памяти записан адрес курсора. Содержимое этих ячеек устанавливает драйвер дисплея после очередной операции вывода символа или управления курсором. За адресом курсора расположены 4 ячейки, содержащие границы текущего «окна», соответственно левая (0—45), верхняя (0— 244), правая (2—47) и нижняя (8— 254). Содержимое этих ячеек загружается по команде ESC W <Л. Г.> <В. Г.> <П. Г.> <Н. Г.>.

В ячейке по адресу 8F8AH находится байт управления режимом драйвера дисплея (см. табл. 2), который загружается по команде ESC X <Б. У.>. В следующей ячейке записан размер строки текста по вертикали. Он может быть изменен, как непосредственно, так и по команде ESC U или ESC R, соответственно 8 и 10 точек.

В следующей ячейке хранится маска цвета. Этот байт определяет текущий цвет отображения, если используется модуль цветности. Перед любой операцией вывода на экран содержимое этой ячейки записывается по адресу, хранящемуся в файле управления в ячейке 8FA0H, то есть в регистр цвета заносится текущий цвет. Содержимое ячейки с маской цвета может быть изменено по команде ESC V <МАСКА> либо непосредственно.

Коды символов знакогенератора разбиты на 8 групп по 32 символа в группе (см. табл. 4). Адреса этих групп хранятся в файле управления по адресу 8F8DH — 8F9EH. Изменяя содержимое этих ячеек, можно менять знакогенератор или переставлять местами группы символов. Содержимое ячеек при необходимости изменяют по команде ESC [, ESC\, ESC] или ESC^. Можно загружать все 8 адресов групп знакогенератора по команде ESC_ (16 байт), либо изменять адреса непосредственно. Варианты настройки групп — в таблице 3.

МОНИТОР ОТКРЫВАЕТ «ОКНА»

В следующих трех ячейках хранится переключатель (JMP, АДРЕС), он используется драйвером дисплея. По адресу 8FA0H записан адрес регистра модуля цветности (первоначально там хранится адрес F000H). Далее в трех ячейках — еще один переключатель (JMP, АДРЕС), устанавливаемый драйвером дисплея при генерировании звуков нот и шумовых эффектов.

Для удобства организации перехвата запросов вывода на дисплей и ввода с клавиатуры в файл управления были введены две команды-переключатели (JMP, АДРЕС), дублирующие точки входа С803Н и С809Н. Переход на эти команды происходит всякий раз, как только будет вызвана программа ввода с клавиатуры, либо вывода на дисплей. Адрес первой команды-переключателя 8FA5H для точки входа С803Н; адрес второй команды 8FA8H для точки входа С809Н.

По адресу 8FABH расположена ячейка-счетчик ESC-последовательностей. Она используется при обработке ESC-команд.

С адреса 8FACH начинается область сохранения текущего режима дисплея. При инициализации в эту область заносится основная часть файла управления дисплеем, и в дальнейшем изменить ее можно, подав команду сохранения текущего состояния драйвера дисплея ESC N. Восстановить сохраненное состояние дисплея можно, подав команду ESC О. По команде сохранения копируются ячейки с адреса 8F82H по 8F9FH включительно.

Файл управления драйвером клавиатуры начинается с адреса 8FD0H. В трех ячейках хранится переключатель (JMP, АДРЕС), который настраивает клавиатуру на соответствующий тип. Следующие три ячейки являются рабочими для драйвера. После них располагаются ячейки временных задержек. 8FD6 — задержка перед началом повтора кода, 8FD7, 8FD8 — константа защиты от дребезга. Изменяя эти константы, вы можете настроить динамику ввода с клавиатуры по своему вкусу.

В двух байтах по адресу 8FD9H хранится адрес таблицы клавиатуры. Изменяя их содержимое на адрес новой таблицы, можно программировать клавиши своей клавиатуры. Следующие за адресом таблицы клавиатуры две ячейки являются служебными и несут информацию об отображении маркера и предыдущей нажатой клавише. Файл управления клавиатурой заканчивается ячейкой, хранящей код последней нажатой клавиши.

С адреса 8FDFH начинается файл управления, используемый управляющей программой, находящейся в первом ППЗУ (старый вариант). Указатель стека после инициализации устанавливается на адрес 8F50H.

Обращение из программы пользователя к драйверам и Монитору осуществляется через таблицу переходов, которая расположена с адреса С800Н (табл. 5).

Директивы Монитора выбраны, исходя из практики работы на компьютере и рекомендаций пользователей. В основном сохранены команды улучшенной версии Монитора (см. «М-К», 1988, № 9, «Монитор для «Специалиста»), но немного изменены и добавлены другие функции.

1. D (адрес 1), (адрес 2) — дамп (распечатка) памяти.

По этой директиве на экран выводится информация о содержимом указанной области памяти в следующем виде.

АдресСодержимое восьми последовательных ячеек памяти в НЕХ-форматеСодержимое тех же ячеек в символьном формате
0020FF 01 03 54 57 4F 08 FE…TWO…

2. С (адрес 1), (адрес 2), (адрес 3) — сравнение блоков памяти.

МОНИТОР ОТКРЫВАЕТ «ОКНА»

МОНИТОР ОТКРЫВАЕТ «ОКНА»

МОНИТОР ОТКРЫВАЕТ «ОКНА»

МОНИТОР ОТКРЫВАЕТ «ОКНА»

По этой директиве производится сравнение содержимого блока 1 (с адреса 1 по адрес 2) с блоком 2 (с адреса 3). Сравнение выполняется до тех пор, пока не закончится блок 1. Информация о несовпадении выводится на экран в следующем виде:

АдресСодержимое ячейки блока 1Содержимое ячейки блока 2
01355406
024634Е5

3. F (адрес 1), (адрес 2), (константа) — заполнение ОЗУ константой.

По этой директиве блок ОЗУ с адреса 1 по адрес 2 заполняется константой.

4. G (адрес) [,(DE), (ВС)] —запуск программы по CALL.

По этой директиве Монитор переносит управление на программу с адреса и передает ей аргументы через регистровые пары DE и ВС; HL — содержит адрес программы. Если аргументы отсутствуют, ВС и DE очищаются. Когда программа не изменяет указатель стека, возврат в Монитор можно осуществить по команде RET (С9Н).

5. Н (НЕХ-число 1), (НЕХ-число 2) — сумма и разность.

По этой директиве вычисляются сумма и разность двух шестнадцатеричных чисел. Результат выводится в виде двух чисел: сумма, разность.

6. I — ввод файла с магнитофона по имени.

По этой директиве на экран выводится сообщение-запрос: «FILE:», на что нужно ответить вводом имени файла и/или <ВК>. Если вы ответили <ВК> без имени, то будет введен первый встретившийся на ленте поименованный файл. Иначе будет введен файл с указанным именем. Все встречающиеся именованные файлы будут фиксироваться на экране в виде: «FILE: ИГРА 1». Экстренный выход из программы ввода по команде ESC.

После ввода файла по команде I производится подсчет контрольной суммы и сравнение ее с введенной. Если нет ошибок, на экран выводится сообщение:

CS = 032F — контрольная сумма блока,

BEG=0000— адрес начала загрузки,

END=03FF — адрес конца загрузки.

При обнаружении ошибки в контрольной сумме на экран выводится сообщение: «CLI — ERROR» и звуковой сигнал.

7. К (адрес 1), (адрес 2) —вычисление контрольной суммы.

По этой директиве вычисляется контрольная сумма блока памяти. Результат выводится в следующем виде: CS = 0324.

Примечание редакции. За время подготовки данного материала к печати автор- внес изменения в названия отдельных кнопок клавиатуры, изображенной на рисунке 1 (см. «М-К», 1991, № 5). В новом варианте следует читать в верхнем ряду, слева направо — Fl, F2, F3, F4, F5, F6, F7, F8, F9, F10, LOCK, CLEAR; в нижнем ряду три средние клавиши ПРО, — -, БЕЛ получили названия — ТАБ, ESC, ПРОБЕЛ.

8. М (адрес) — изменение содержимого ОЗУ.

По данной директиве производится модификация ячеек ОЗУ, начиная с адреса. После <ВК> на экран выводится содержимое ячейки: адрес 0F34, содержимое 5Е. Необходимо ввести новое значение или одну из команд управления: <ВК> — конец модификаций, <стрелка влево> — открыть предыдущую ячейку, <стрелка вниз> — открыть следующую ячейку.

После ввода нового содержимого ячейка закрывается и открывается следующая ячейка памяти. Коды символов, не принадлежащие ряду цифр и НЕХ-символов, игнорируются при вводе.

9. О (адрес 1), (адрес 2) [, (КЗ) ] — вывод файла с именем.

По указанной директиве будет выведен на магнитофон именованный файл, содержащий блок памяти с адреса 1 по адрес 2 включительно. Если присутствует и не равен 0 третий аргумент команды, то будет установлена новая константа записи. После <ВК> на экран выводится строка-запрос «FILE:», на что надо ответить вводом имени файла и/или <ВК>. Если введен только <ВК>, то файл будет содержать пустое имя. После ввода имени начинается вывод файла.

МОНИТОР ОТКРЫВАЕТ «ОКНА»

10. R [(адрес 1), (адрес 2)] — ввод неименованного файла.

Эта директива запускается во время звучания «ракорда» перед файлом и загружает неименованный файл в ОЗУ по адресу, записанному на магнитной ленте (если отсутствуют адрес 1 и адрес 2), иначе файл загружается по адресам, указанным в команде, причем в данном случае первые 4 байта содержат адреса начала и конца загрузки, записанные на ленте. Команда удобна для отладки ввода: R9000 <ВК> — ввод с магнитофона на экран.

После ввода файла по команде R (без аргументов) производится подсчет контрольной суммы и сравнение ее с введенной. Если ошибок нет, на экран выводится такое же сообщение, как по команде I.

11. S (адрес 1), (адрес 2), (байт 1) [, (байт 2) [, (байт 3)]].

По этой директиве производится поиск в блоке памяти с адреса 1 по адрес 2 байта [байтов] и вывода их адреса на экран:

поиск в блоке памяти

12. Т (адрес 1), (адрес 2), (адрес 3) — пересылка блока памяти.

По этой директиве производится перемещение (трансляция, копирование) блока памяти с адреса 1 по адрес 2 в область памяти с адреса 3.

13. V — определение константы чтения с магнитофона.

Перед выполнением этой директивы необходимо включить магнитофон на месте звучания «ракорда» перед началом файла и тогда ввести команду по <ВК>. После чего в файл управления будет введена новая константа чтения, а на экран для контроля выведено сообщение: КЧ=3С — константа чтения.

14. W (адрес 1), (адрес 2) [, (константа записи)].

Эта директива выводит блок памяти с адреса 1 по адрес 2 в файл на магнитофон без имени, с контрольной суммой в конце файла. Вывод начинается сразу после <ВК>. Если не пропущен третий аргумент, перед выводом в файл управления магнитофоном заносится новая константа записи.

15. AI, AR — команды, аналогичные I и R, но после их выполнения происходит автоматическая передача управления на загруженную программу по адресу загрузки. Эта директива выполнится до конца, если только совпадет контрольная сумма загруженного файла, иначе будет выведено сообщение об ошибке: «CLI — ERROR» и управление передается Монитору (CLI).

МОНИТОР ОТКРЫВАЕТ «ОКНА»

МОНИТОР ОТКРЫВАЕТ «ОКНА»

Общее примечание.

а. Ввод всех команд Монитора заканчивается нажатием клавиши <ВК>.

б. Команды Монитора (кроме AI и AR) и адреса распознаются на любом регистре клавиатуры.

в. Квадратные скобки означают, что аргумент может быть опущен.

г. Незначащие нули в строке команды можно опускать.

д. Интерпретатор командных строк (CLI) может быть вызван через точку входа Монитора: 0С839Н. При этом в регистровой паре HL должен быть адрес строки команды к Монитору, а в конце строки команды три байта двоичных нулей.

Пример:

Пример

Благодаря автозапуску программ и передаче команд Монитору появилась возможность загружать игры с заставками по аналогии с английским компьютером «ZX-SPECTRUM». Причем в имени файла (длиной до 19 символов) можно использовать любые команды драйвера дисплея (кроме двоичного нуля), включая музыкальные вставки и команды установки режима дисплея и создания «окон».

Шестнадцатеричные коды знакогенератора приведены в таблице 11.

В заключение отметим, что под новый Монитор легко переделывается матобеспечение с любого компьютера, совместимого по системе команд, в том числе с «Радио-86РК».

В. ДОМОЖИРОВ, г. Ташкент

Рекомендуем почитать

  • Раскладчик поддоновРаскладчик поддонов
    Поддон – одна их самых полезных вещей на любом складе, они мало изменились с момента своего изобретения в начале XX века, но они тяжелые и громоздкие, поэтому было просто необходимо...
  • СВЕРЛО-ЭКСПРОМТСВЕРЛО-ЭКСПРОМТ
    Если возникла срочная необходимость пробить отверстие в дереве, а под рукой нет подходящего сверла, его можно изготовить... из гвоздя. Розклепайте его на конце, как показано на рисунке,...
Тут можете оценить работу автора: