RTC
®
5 PC Interface Board
Rev. 1.9 e
6 Developing User Applications
71
innovators for industry
6.4 List Handling
The two list areas (“List 1” and “List 2”) serve as inter-
mediate storage for the continuous loading and
processing of list commands. This chapter describes
the commands that control this data transfer.
6.4.1 Loading Lists
The commands
other control commands (see below) are used to
enable a list to be filled with list commands. An input
pointer is thereby defined for the selected list. This
input pointer specifies the memory position to which
the subsequent list commands will be transferred.
Lists are self-contained memory blocks for list
commands. Accordingly, if a list is loaded and the end
of the list is reached without setting the input pointer
to another list, then the input pointer will automati-
cally be reset to the start of the current list, where
loading will continue. An automatic change of the
input pointer to another list will never occur, particu-
larly not to the protected buffer area (“List 3”).
When list commands are loaded into list buffer posi-
tions, any commands previously stored there will
thereby be overwritten, even if they have not yet
been processed or are currently being executed. Be
sure not to overwrite commands still needed by your
application (see below).
PCI transfer of the list commands into list memory is
buffered to increase the speed for continuous down-
loads. The buffer’s capacity is 16 commands.
Whenever the buffer is full or when the commands
(and related commands),
issued, this automatically results in a flush, so that
the buffered list commands will be transferred to list
memory. Flushing of an incomplete buffer can also be
initiated at any time via
set_input_pointer(get_input_pointer())
. This is
only necessary in some circumstances when list
commands should be processed and list input is not
yet finished (e.g. for external starts).
“Unconditional” Loading
The command
_1 /_2
sets the input
pointer to the start of the selected list and the
command
sets the input pointer to the specified
address of the selected list. Regardless of the selected
list’s current status (see
next list command will be written to this address.
If needed, the current positions of the input and
output pointers can be queried via the commands
-
e.g. to ensure that
not-yet-processed list commands won’t be over-
written.