41h ¦ +---+ - ¦
+----------------------------------------------------------------------------¦
42h ¦ LASTKEY - переменная монитора. ¦
¦ Код последней нажатой клавиши. ¦
+----------------------------------------------------------------------------¦
43h ¦ RAMADR - переменная монитора. ¦
44h ¦ ¦
+----------------------------------------------------------------------------¦
45h ¦ RAMWORD - переменная монитора. ¦
46h +----------------------------------------------------------------------------+
+----------------------------------------------------------------------------+
47h ¦ RAMSIZE - объём ОЗУ контроллера в килобайтах. ¦
+----------------------------------------------------------------------------¦
48h ¦ Область РПД доступная пользователю. ¦
** ¦ ¦
5Fh ¦ ¦
+----------------------------------------------------------------------------¦
60h ¦ С Т Е К 32 байта. ¦
7Fh +----------------------------------------------------------------------------+
Рис. 5
Сервисные процедуры монитора
Пользователю доступны следующие сервисные процедуры монитора:
ConvHexToPos 0329h.
Подпрограмма преобразования кода из HEXIND в POSIND.
Преобразует неупакованные BCD-числа из HEXIND в abcdefgh-формат и записывает в массив POSIND.
Использует: dptr,r0,r1,r2.
WriteByte 034Eh.
Процедура передачи байта через UART с получением эхо-байта.
Вход : a=байт данных.
Выход : cf=признак ошибки : 0-ok, 1-error.
Использует : b,tc0.
ReadByte 0369h.
Процедура приема байта через UART с передчей эхо-байта.
Входных параметров нет.
Выход : a=байт данных,
cf=признак ошибки : 0-ok, 1-error.
Использует : tc0.
WaitRq 0376h.
Процедура ожидания запроса от ПЭВМ 65 мС. Вызывается из
WRITE_BYTE и READ_BYTE.
Входных параметров нет.
Выход : cf=признак наличия запроса : 1-запрос есть , 0-нет.
Использует : tc0.
InByte 0390h.
Процедура ввода байта через UART. Бесконечно ожидает приёма байта; перед её вызовом необходимо вызвать WAIT_RQ. Вызывается из
WRITE_BYTE и READ_BYTE.
Вход : нет.
Выход : a=байт данных,
cf=признак ошибки : 0-ok, 1-error.
OutByte 03A5h.
Процедура вывода байта через UART. Вызывается из WRITE_BYTE и READ_BYTE.
Вход : a=байт данных.
Выход : нет.
Для опроса клавиатуры в мониторе не предусмотрено специальной подпрограммы, пользовательская программа может использовать для этого следующий алгоритм, который, собственно, используется и самим монитором :
1) дождаться установки флага KEYPRESSED, то есть нажатия клавиши;
2) дождаться сброса флага KEYPRESSED (отпускание клавиши);
3) прочитать код нажатой клавиши из переменной LASTKEY;
4) обработать считанный код и перейти к пункту 1).
В том случае, если программе необходимо постоянно опрашивать клавиатуру, не привязываясь к моменту нажатия конкретной клавиши, то допустимо просто постоянно в цикле считывать содержимое переменной LASTKEY. Если она содержит код отличный от FFh, то это код нажатой клавиши, FFh же сигнализирует о том, что нажатых клавиш нет, либо нажато сразу несколько клавиш.
Клавиатура стенда имеет следующие коды клавиш:
0 - F (клавиши с шестнацатиричными цифрами) имеют означенные ниже коды;
kb STORE - 10h, Запись байта и инкремент адреса;
kb INCADR - 11h, Инкремент адреса;
kb DECADR - 12h, Декремент адреса;
kb SETADR - 13h, Установка адреса;
kb START - 14h, Запуск программы по текущему адресу.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.