RTC6 boards
Doc. Rev. 1.0.21 en-US
10 RTC6 Commands
475
Undelayed
Short List
Command
list_call
Function Causes an unconditional jump to a subroutine that starts at the specified absolute address
(in any desired location within RTC6 List Memory).
Call
list_call( Pos )
Parameters
Pos
Absolute jump address [0…(2
23
–1)].
As an unsigned 32-bit value.
Comments • The first command of a subroutine called by list_call is executed (possibly after a
list_continue) immediately and without delay. Nested or recursive calls are also
possible, up to a depth of 63, see also Chapter 6.5.1 ”Subroutines”, page 112.
• Each subroutine must be terminated by list_return so that after the subroutine
(including the terminating list_return) has been processed, execution continues with
the command that follows the subroutine-call command. This, too, executes (after a
possible list_continue) immediately and without delay.
If set_end_of_list is encountered instead of the expected list_return, then list
execution terminates or – if previously activated – an automatic list change takes place
(for the latter, the current list status is a decisive factor as described below). Under no
circumstances does program flow then return again to the calling location, even in the
case of nested subroutine calls. Any not-yet-completed mark_text does not execute to
completion.
If the end of a RTC6 List Memory area (“List 1” or “List 2”) is reached without having
encountered a list_return or set_end_of_list, then execution continues at the start of
the current list. If such a situation occurs in the protected RTC6 List Memory area “List
3”, then a compulsory list_return command is inserted and executed.
• The list_call command is replaced by a list_nop if
Pos
> (2
23
–1) or if
Pos
is also the
current address (get_last_error return code
RTC6_PARAM_ERROR
).
• If a called subroutine executes a further list_call to the address of the calling list_call
command (recursive call), then the resulting endless loop is terminated as soon as the
63-nested-call upper limit is reached. Further list_call commands are then ignored and
the next command is instead executed.
• If the subroutine starts directly at the address which follows list_call, then the
subroutine is executed once again after list_return (see also comments on a missing
corresponding function call in the list_return command description).
The next processed command is the one which follows after list_return (see also
list_repeat…list_until). This bypasses the possibly unwanted list processing.