Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
msx:assembler_programming_guide-fakhrutdinov_bocharov:14 [2020-05-16 18:21] GreyWolf [Приложение 4. Пример организации связей с языком MSX BASIC. "Универсальное меню"] |
msx:assembler_programming_guide-fakhrutdinov_bocharov:14 [2020-11-25 09:55] (текущий) GreyWolf |
||
---|---|---|---|
Строка 6: | Строка 6: | ||
Приведенная ниже программа на языке [[msx:basic:]] вызывает подпрограмму на языке ассемблера и передает ей адрес строкового массива, используя функцию ''VARPTR''. Массив представляет собой меню. | Приведенная ниже программа на языке [[msx:basic:]] вызывает подпрограмму на языке ассемблера и передает ей адрес строкового массива, используя функцию ''VARPTR''. Массив представляет собой меню. | ||
Строка массива, начинающаяся с символа пробел, считается комментарием. Пустая строка (%% "" %%) является признаком конца меню. | Строка массива, начинающаяся с символа пробел, считается комментарием. Пустая строка (%% "" %%) является признаком конца меню. | ||
+ | |||
+ | Ассемблирование в системе [[msx:duad:duad|]] описано [[01#n121|здесь]]. | ||
Подпрограмма на ассемблере рисует на экране (параметры ''SCREEN 0:WIDTH 80'' — устанавливаются заранее) окно, размеры которого определяются программно, исходя из параметров переданного массива (Y — по количеству элементов массива, т.е. до пустой строки, X — по наиболее длинной строке). Координаты окна программа на языке [[msx:basic:]] передаёт функцией ''LOCATE X,Y'', используя тот факт, что интерпретатор записывает значения X и Y в системные ячейки. | Подпрограмма на ассемблере рисует на экране (параметры ''SCREEN 0:WIDTH 80'' — устанавливаются заранее) окно, размеры которого определяются программно, исходя из параметров переданного массива (Y — по количеству элементов массива, т.е. до пустой строки, X — по наиболее длинной строке). Координаты окна программа на языке [[msx:basic:]] передаёт функцией ''LOCATE X,Y'', используя тот факт, что интерпретатор записывает значения X и Y в системные ячейки. | ||
+ | |||
+ | Запуск программы: <code>run"wnd.bas"</code> | ||
Строка-курсор устанавливается на первый возможный вариант выбора меню (комментарии пропускаются). Эту строку можно перемещать в пределах окна с помощью клавиш вверх/вниз. Выбор осуществляется нажатием клавиши ввод. | Строка-курсор устанавливается на первый возможный вариант выбора меню (комментарии пропускаются). Эту строку можно перемещать в пределах окна с помощью клавиш вверх/вниз. Выбор осуществляется нажатием клавиши ввод. | ||
Строка 15: | Строка 19: | ||
- В меню должен быть хотя бы один возможный выбор. | - В меню должен быть хотя бы один возможный выбор. | ||
- | + | {{wnd.zip|Архив с готовыми файлами}} | |
- | + | ||
- | {{wnd.zip|}} | + | |
* ''wnd.asm'' — исходный код программы на ассемблере | * ''wnd.asm'' — исходный код программы на ассемблере | ||
* ''wnd.lst'' — листинг программы на ассемблере | * ''wnd.lst'' — листинг программы на ассемблере | ||
* ''wnd.bas'' — программа на [[msx:basic:]] | * ''wnd.bas'' — программа на [[msx:basic:]] | ||
* ''wnd.obj'' — оттранслированная программа на ассемблере | * ''wnd.obj'' — оттранслированная программа на ассемблере | ||
- | |||
- | - Ассемблирование в системе [[msx:duad:duad|]] описано [[01#n121|здесь]]. | ||
- | - Запуск программы: <code>run"wnd.bas"</code> | ||
- | |||
===== 1. BASIC-программа ===== | ===== 1. BASIC-программа ===== | ||
Строка 393: | Строка 391: | ||
END | END | ||
</code> | </code> | ||
+ | |||
---- | ---- | ||
Строка 399: | Строка 398: | ||
- | {{tag>MSX assembler Programming Book_apguidefb on_github}} | + | {{tag>MSX Book_apguidefb on_github}} |