Простейшая программа с графическим интерфейсом





Пример простейшей программы, использующей графический интерфейс пользователя ЭКВМ.


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


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 располагаются тексты сообщений.

Простейшая программа, использующая графический интерфейс пользователя занимает всего одну страницу памяти программ!


Запуск программы: В/О, С/П:



Останов программы происходит при нажатии любой клавиши:



Программа была написана после тщательного разбора программы "Счётчик нажатий" с сайта НПП "Семико" :)

На сайте производителя имеется ряд статей с примерами программ, использующих графический интерфейс пользователя.

Сайт работает на микрокомпьютере