Greetings Keith ...
the 'Allow Indexing Across Files' check does not affect indirect addressing on the SLC-5/05?
correct ...
the rest of this is written for relative beginners ...
there TWO addressing modes that are quite commonly confused with each other ...
(1) the INDIRECT addressing mode makes use of the square brackets characters and allows us to set up our own "home brew" pointers ...
here's an example ... suppose that location N7:0 contains the value 8 ... suppose that the Destination of an MOV (Move) instruction is entered as N10:[N7:0] ... here the address WITHIN the brackets is being used as a "pointer" ... when the MOV is executed, the processor will look into the "pointer" (N7:0) and see the value stored there ... in our example, this value is 8 ... the processor then SUBSTITUTES the pointer's value into the square bracket area of the address ... so in this example, the Destination of the MOV command would be N10:8 ... now suppose that somehow we change the value stored at N7:0 to 9 ... once again, when the MOV is executed, the processor will look into the "pointer" (N7:0) and see the value stored there ... but this time our example value is 9 ... so when the processor SUBSTITUTES the pointer's value into the square bracket area of the address this time around, the Destination of the MOV command would be N10:9 ... one major advantage to this type of addressing is that it lets us "re-aim" a single instruction in order to have it operate on multiple locations ...
a classic example of the use of this technique is included in the code that I wrote to help someone build a "home brew" FIFO arrangement that would handle the storage of Floating Point numbers ...
http://www.plctalk.net/qanda/showthread.php?p=350462&postcount=6
moving right along ... here's the second addressing mode ...
(2) the INDEXED addressing mode makes use of the pound sign character and relies on the processor's "built in" pointer (S:24) to act as an "offset" ...
here's an example ... suppose that location S:24 (in the processor's status file) contains the value 2 ... suppose that the File of an SQO (Sequencer Output) instruction is entered as #N10:0 ... here the value stored at S:24 will be used as an "offset" from the specified address N10:0 ... when the SQO is executed, the processor will look into S:24 and see the value stored there ... in our example, this value is 2 ... the processor then OFFSETS the original address by 2 locations ... so in this example, the address actually used by the SQO instruction would be N10:2 ... now suppose that somehow the value stored at S:24 gets changed to 3 ... the next time the SQO is executed, the processor will OFFSET the address by 3 ... so this time around, the address used by the SQO would be N10:3 ... one major advantage to this type of addressing is that it can be used on older processors that do not support INDIRECT ADDRESSING at all ... there are other advantages too, but this should be enough for now ... if not, read the three posts which start here:
http://www.plctalk.net/qanda/showthread.php?p=154105&postcount=8
so ... in summary ...
there are TWO types of addressing which are commonly confused with each other ...
(1) INDIRECT addressing ... think [ ] characters to set up a "home brew" pointer ...
(2) INDEXED addressing ... think # character to use the processor's "built in" offset function ...
just remember that in the context of our present thread, technically we've been discussing "INDIRECTING" across file boundaries – not "INDEXING" across file boundaries ... and that's why the "Allow Indexing Across Files" setting has no affect at all on the operation that Bernie brought up for discussion ...
and finally ... yes, I absolutely HATE the fact that the two addressing modes both begin with the letters "IND" ... seems like people go out of their way to make this stuff confusing ...