RTC6 boards
Doc. Rev. 1.0.21 en-US
6 Developing RTC6-User Programs
105
6.4 List Handling
The two RTC6 List Memory areas “List 1” and “List 2”
serve as intermediate storage for the continuous
loading and processing of list commands.
6.4.1 Loading Lists
“List 1” and “List 2” are enabled to be filled with
list commands by set_start_list_pos, load_list or
other control commands (see below). An
input pointer is thereby defined for the selected list.
This input pointer specifies the memory position to
which the subsequent list commands are transferred.
Lists are self-contained memory blocks for
list commands. When in the process of list loading
the list end is reached without setting the
input pointer to another list, then the input pointer is
automatically reset to the start of the current list,
where loading continues.
An automatic change of the input pointer to another
list never occurs, particularly not to the protected
RTC6 List Memory area “List 3”.
In general, when list commands are loaded into
storage positions, any list commands previously
stored there are overwritten. This occurs even if they
have not yet been processed or are currently being
executed. User should make sure not to overwrite
commands still needed by the user program (see
below).
PCI transfer of the list commands into RTC6 List
Memory is buffered to increase the speed for
continuous downloads. The buffer is 16 commands in
size.
Whenever the buffer is full or when the commands
set_end_of_list, list_return, set_input_pointer
(and related commands), execute_list_pos (and
related commands), auto_change,
auto_change_pos, start_loop or release_rtc are
called, this automatically results in a flush. Thereby,
the still buffered list commands are transferred to the
RTC6 List Memory.
A flush can be initiated at any time by
set_input_pointer(get_input_pointer())
, even if the
buffer is yet “incomplete”. This is only necessary in
some circumstances when list commands should be
processed and list input is not yet finished (for
example, with an External Start).
“Unconditional” Loading
The input pointer is set:
• to the beginning of the selected list by
– set_start_list
– set_start_list_1
– set_start_list_2
• to the specified address of the selected list by
– set_start_list_pos
– set_input_pointer
The next list command is written to this address
regardless of the current status of the specified list,
see Chapter 6.4.2 ”List Status”, page 107.
If needed, the current positions of the input and
output pointer can be queried by get_input_pointer
or get_list_
pointer and ge
t_status or
get_out_pointer
-
for example, to ensure that not-
yet-processed list commands are not overwritten.