Простейшая программа с графическим интерфейсом |
Пример простейшей программы, использующей графический интерфейс пользователя ЭКВМ.
Простая программа выводит строку символов на экран с помощью графического интерфейса пользователя.
0000 0Dh CX ;
0001 01h 1 ;
0002 F4h PP M 9200 ;Разрешаем работу
0003 92h ;интерфейса
0004 00h ;
0005 0Dh CX ;
0006 03h 3 ;Адрес главной
0007 07h 7 ;таблицы меню
0008 F4h PP M 9201 ;
0009 92h ;
0010 01h ;
0011 0Dh CX ;
0012 F4h PP M 9202 ;нулевая форма
0013 92h ;
0014 02h ;
0015 F4h PP M 9203 ;нулевой
0016 92h ;элемент
0017 03h ;
0018 06h 6 ;
0019 04h 4 ;
0020 F4h PP M 9208 ;перерисовка
0021 92h ;экрана
0022 08h ;
0023 F6h PP RM 9028 ;проверка
0024 90h ;нажатия
0025 28h ;клавиш
0026 3Ah K NOT ;если клавиша
0027 57h F X!=0 23 ;нажата, остановка
0028 23h ;программы
0029 0Dh CX ;
0030 07h 7 ;
0031 05h 5 ;
0032 F4h PP M 9026 ;прощаемся :)
0033 90h ;
0034 26h ;
0035 50h R/S ;останов
0036 51h GOTO 00 ;возврат к
0037 00h ;началу
0038 00h 0 ;главная
0039 41h M 1 ;таблица
0040 FFh .DB 0FFh ;меню
0041 00h 0 ;заголовок
0042 08h 8 ;формы
0043 09h 9 ;
0044 09h 9 ;
0045 09h 9 ;
0046 09h 9 ;
0047 0Ch EE ;
0048 0Bh +/- ;
0049 00h 0 ;таблица флагов
0050 00h 0 ;таблица
0051 00h 0 ;переходов
0052 15h F 10^X ;
0053 65h RM 5 ;основная программа
0054 01h 1 ;выбор шрифта
0055 60h RM 0 ;позиция вывода
0056 14h <-> ;координаты
0057 18h F LN ;
0058 53h GSB 00 ;вывод
0059 00h ;строки
0060 00h 0 ;символов
0061 63h RM 3 ;c
0062 FFh .DB 0FFh ;конец, заглушка
0063 87h K GOTO 7 ;З
0064 A4h K GSB 4 ;д
0065 E0h K X=0 0 ;р
0066 A0h K GSB 0 ;а
0067 A2h K GSB 2 ;в
0068 E1h K X=0 1 ;с
0069 E2h K X=0 2 ;т
0070 A2h K GSB 2 ;в
0071 E3h K X=0 3 ;у
0072 A9h K GSB 9 ;й
0073 21h F SQRT ;!
0074 FFh .DB 0FFh ;
0075 84h K GOTO 4 ;Д
0076 AEh K GSB E ;о
0077 20h F PI ;
0078 E1h K X=0 1 ;с
0079 A2h K GSB 2 ;в
0080 A8h K GSB 8 ;и
0081 A4h K GSB 4 ;д
0082 A0h K GSB 0 ;а
0083 ADh K GSB D ;н
0084 A8h K GSB 8 ;и
0085 EFh PK X=0 21 ;я
0086 21h ;!
0087 FFh .DB 0FFh ;
0088 FFh .DB 0FFh ;
0089 FFh .DB 0FFh ;
0090 FFh .DB 0FFh ;
0091 FFh .DB 0FFh ;
0092 FFh .DB 0FFh ;
0093 FFh .DB 0FFh ;
0094 FFh .DB 0FFh ;
0095 FFh .DB 0FFh ;
0096 FFh .DB 0FFh ;
0097 FFh .DB 0FFh ;
0098 FFh .DB 0FFh ;
0099 FFh .DB 0FFh ;
; Контрольная сумма ADD 11620
; Контрольная сумма XOR 110
Для начала нужно разрешить работу графического интерфейса ( пишем 1 в регистр Р9200 ), задать адрес главной таблицы меню ( регистр Р9201 ), задать номера экранной формы ( пишем 0 в регистр Р9202 ) и активного элемента ( пишем 0 в регистр Р9203 ), и дать команду перерисовки экрана ( пишем 64 в регистр Р9208 ). Программа запуска графического интерфейса расположена по адресам 0000 - 0022. Кстати, графический интерфейс работает только во время работы программы!
Далее, нужно циклически считывать код клавиши ( регистр Р9029 ) и записывать в регистр команд Р9208, правда в программе, для упрощения, обработка команд заменена остановкой программы при нажатии клавиш.
Главная таблица меню находится в памяти программ и состоит из трёхбайтовых записей, первый байт - номер экранной формы, остальные два - адрес начала таблицы экранной формы. В программе главная таблица меню располагается по адресу 0037. Всего в программе может быть до 253 пользовательских экранных форм. Оканчивается таблица кодом 0FFh.
Экранная форма всего одна с единственным активным элементом. Нумерация форм и элементов начинается с нуля. Экранная форма состоит из восьмибайтового заголовка, таблицы переходов, таблицы адресов программы элементов и основной программы экранной формы и программ элементов. Адрес программы считается с начала заголовка! Максимальный номер элемента ( адрес 0041 ) равен нулю. Таблица флагов действий состоит из одного байта ( адрес 49, смещение от начала заголовка 08h ). Переходы по командам "Ввод", "Выход", "Выбор влево" и Выбор вправо" согласно общей двухбайтовой таблице ( адрес 0050, смещение от начала заголовка 09h ) ссылаются на одну и ту же единственную экранную форму с единственным активным элементом. Основная программа экранной формы расположена по адресу 0053 ( смещение от начала заголовка 0Ch ), а программа активного элемента по адресу 0062 ( смещение от начала заголовка 15h ), при этом, однобайтовая таблица адреса программы элементов находится по адресу 0052 ( смещение от начала заголовка 0Bh ).
Программа экранной формы задаёт шрифт №1, начальную позицию вывода с координатами 14, 18, выводит строку символов из памяти программ, начинающуюся с адреса 0063 и заканчивается кодом 0FFh. Программа активного элемента представляет собой "заглушку" - код останова 0FFh.
По адресам 0023 - 0036 находится программа останова по нажатию клавиш. По адресам 0063 - 0087 располагаются тексты сообщений.
Простейшая программа, использующая графический интерфейс пользователя занимает всего одну страницу памяти программ!
Запуск программы: В/О, С/П:
Останов программы происходит при нажатии любой клавиши:
Программа была написана после тщательного разбора программы "Счётчик нажатий" с сайта НПП "Семико" :)
На сайте производителя имеется ряд статей с примерами программ, использующих графический интерфейс пользователя.
Сайт работает на микрокомпьютере