Their is an example at http://www.parrotcode.org/examples/ that returns a list
of integers that span two integers. The return types appear to be set wrong
in the SPAN bsr. It seems the return values should be
set I0, I7 # number of items on the stack
set I1, 0 # no integer return values
The current example is listed below. I am very much a novice at reading PASM
so hopefully I didn't interpret the program wrong.
Paul Seamons
PS - By the way the new examples (I think they are new - they are new to me)
are very nice and descriptive of PASM.
--------------------------------------------------------------
set I0, 1 # prototyped
set I1, 0 # no items on the stack
set I5, 42
set I6, 56
bsr SPAN
ne I0, 0, RETURNERROR # item on stack
# we don't know the number of integers values returned
ne I2, 0, RETURNERROR # string return values
ne I3, 0, RETURNERROR # PMC return values
ne I4, 0, RETURNERROR # numeric return values
MORE: restore I2
print I2
print " "
dec I1
if I1, MORE
print "\n"
end
RETURNERROR:
print "Error with return values from SPAN!\n"
end
SPAN: ne I0, 1, CALLERROR # not prototyped
ne I1, 0, CALLERROR # items on stack
set I7, 0 # count of integers
REDO: save I6
dec I6
inc I7
le I5, I6, REDO
set I0, 0 # no items on the stack
set I1, I7 # one integer return value
set I2, 0 # no string return values
set I3, 0 # no PMC return values
set I4, 0 # no numeric return values
ret
CALLERROR:
print "Error calling SPAN!\n"
end
--------------------------------------------------------------