Новые функции:
- Qmpot: добавлена система обозначения строк в программе типа "имястроки:"
- Qmpot: добавлена команда "CALL имястроки" для вызова процедуры по имени строки
- Qmpot: добавлена команда "RET" для возврата из процедуры, вызванной по команде CALL
Подробности:
1) в любом месте программы можно обозначить строку как "имястроки:"
2) таким образом можно писать процедуры, для этого в конец основной программы пишем команду X ("закончить выполнение"), а после этого ниже добавляем процедуры, например:
PROC1:
//тут всякие команды
RET
(это похоже на старый basic, в котором не было SUB и FUNCTION и процедуры писали только через вызовы и возвраты кода, лежащего в строках после END основной программы)
3) затем в основной код программы добавляем команду CALL PROC1, в ходе выполнения будет произведен переход в процедуру, выполнение всех ее команд и переход обратно по команде RET
Пример простого кода на скриншоте:
![Изображение](http://blackstrip.ru/tmp/pcw140/call1.png)
Также готовый образец процедуры добавлен в шаблон для команды CALL.
![Изображение](http://blackstrip.ru/tmp/pcw140/call2.png)
4) можно также пользоваться командой CALL как безусловным переходом на именованную строку, просто обозначить кусок кода где-нибудь внизу как MOYCOD: и с самого старта программы перепрыгнуть туда по CALL MOYCOD и обратно уже по RET не возвращаться. Теперь не нужно следить за номерами строк программы как было в старой команде безусловного перехода G.
5) переходы по CALL и возвраты по RET используют эмулированный внутренний стек прямо как в ассемблерном коде, поэтому можно строить процедуры, из которых вызывать другие процедуры, из которых вызывать третьи процедуры, и все это должно работать (по идее) если возвращаться из каждой процедуры по RET.