You can limit the scope of your variables and labels by defining a user defined scope. This is done by {..}. Everything between the brackets is defined in a local scope and can't be seen from the outside.
Function1: { .var length = 10 ldx #0 lda #0 loop: sta table1,x inx cpx #length bne loop } Function2: { .var length = 20 // doesn’t collide with the previous ‘length’ ldx #0 lda #0 loop: sta table2,x // the label doesn’t collide with the previous ‘loop’ inx cpx #length bne loop }
Scopes can be nested as many times as you wish as demonstrated by the following program:
.var x = 10 { .var x=20 { .print "X in 2nd level scope read from 3rd level scope is " + x .var x=30 .print "X in 3rd level scope is " + x } .print "X in 2nd level scope is " + x } .print "X in first level scope is " + x
The output of this is:
X in 2nd level scope read from 3rd level scope is 20.0 X in 3rd level scope is 30.0 X in 2nd level scope is 20.0 X in first level scope is 10.0