Re: PaintCAD для Windows - журнал разработки
Добавлено: Пн апр 01, 2019 1:22 am
Бета 1.4.0.1166 доступна по ссылке http://blackstrip.ru/paintcad.exe
Новые функции:
- Qmpot: добавлена система обозначения строк в программе типа "имястроки:"
- Qmpot: добавлена команда "CALL имястроки" для вызова процедуры по имени строки
- Qmpot: добавлена команда "RET" для возврата из процедуры, вызванной по команде CALL
Подробности:
1) в любом месте программы можно обозначить строку как "имястроки:"
2) таким образом можно писать процедуры, для этого в конец основной программы пишем команду X ("закончить выполнение"), а после этого ниже добавляем процедуры, например:
PROC1:
//тут всякие команды
RET
(это похоже на старый basic, в котором не было SUB и FUNCTION и процедуры писали только через вызовы и возвраты кода, лежащего в строках после END основной программы)
3) затем в основной код программы добавляем команду CALL PROC1, в ходе выполнения будет произведен переход в процедуру, выполнение всех ее команд и переход обратно по команде RET
Пример простого кода на скриншоте:
Также готовый образец процедуры добавлен в шаблон для команды CALL.
4) можно также пользоваться командой CALL как безусловным переходом на именованную строку, просто обозначить кусок кода где-нибудь внизу как MOYCOD: и с самого старта программы перепрыгнуть туда по CALL MOYCOD и обратно уже по RET не возвращаться. Теперь не нужно следить за номерами строк программы как было в старой команде безусловного перехода G.
5) переходы по CALL и возвраты по RET используют эмулированный внутренний стек прямо как в ассемблерном коде, поэтому можно строить процедуры, из которых вызывать другие процедуры, из которых вызывать третьи процедуры, и все это должно работать (по идее) если возвращаться из каждой процедуры по RET.
Новые функции:
- Qmpot: добавлена система обозначения строк в программе типа "имястроки:"
- Qmpot: добавлена команда "CALL имястроки" для вызова процедуры по имени строки
- Qmpot: добавлена команда "RET" для возврата из процедуры, вызванной по команде CALL
Подробности:
1) в любом месте программы можно обозначить строку как "имястроки:"
2) таким образом можно писать процедуры, для этого в конец основной программы пишем команду X ("закончить выполнение"), а после этого ниже добавляем процедуры, например:
PROC1:
//тут всякие команды
RET
(это похоже на старый basic, в котором не было SUB и FUNCTION и процедуры писали только через вызовы и возвраты кода, лежащего в строках после END основной программы)
3) затем в основной код программы добавляем команду CALL PROC1, в ходе выполнения будет произведен переход в процедуру, выполнение всех ее команд и переход обратно по команде RET
Пример простого кода на скриншоте:
Также готовый образец процедуры добавлен в шаблон для команды CALL.
4) можно также пользоваться командой CALL как безусловным переходом на именованную строку, просто обозначить кусок кода где-нибудь внизу как MOYCOD: и с самого старта программы перепрыгнуть туда по CALL MOYCOD и обратно уже по RET не возвращаться. Теперь не нужно следить за номерами строк программы как было в старой команде безусловного перехода G.
5) переходы по CALL и возвраты по RET используют эмулированный внутренний стек прямо как в ассемблерном коде, поэтому можно строить процедуры, из которых вызывать другие процедуры, из которых вызывать третьи процедуры, и все это должно работать (по идее) если возвращаться из каждой процедуры по RET.