[comp.sys.handhelds] Exploring my explorations exploratatively

CW%APG.PH.UCL.AC.UK@pucc.PRINCETON.EDU (04/04/91)

    Hi,

      I don't think I was very lucid yesterday and so here are some
      concise explanations of the routines at #371Dh and #3685h.

       i) Given an n-dimensional array of any type in level one of
          the stack and a system binary in level 2 of the stack thus-

               1:        <Nh>
               2:  Array of whatever

            Then #371Dh SYSEVAL will extract the N'th object of the
            array. (arrays are stored linearly as one object after another
            and N represents the position in that line). For one dimensional
            arrays this number is simply the position in the array eg

                Array of whatever = [ 11 22 ]

              then N=1 produces 11

                   N=2 produces 22

                   N=3 produces garbage!

             (I've just noticed I got the array levels wrong in my stack
             diagram, BEWARE) (I can't go back and edit it now)

          For two dimensional array you just need to ignore the extra []'s

                 Array of whatever = [ [ 11 22 ]
                                       [ 33 44 ] ]

                    N=1 produces 11

                    N=2 produces 22

                    N=3 produces 33

                    N=4 produces 44

               You see its quit logical Captain!

          ii) The routine at #3685h actually calculates N for you
              given the position of the element of the array you
              want to look at.

              Given a list of ndims integers on level 2 of the stack
              ( sorry I meant system binaries ), where ndims is the
              number of dimensions of the array, and the array of
              any sort on level on the stack, thus-

                      2:    { <N1h> <N2h> ... <Nndimsh> }
                      1:      Array of any sort

              then #3685h SYSEVAL will tell you the position of the
              element at (N1,N2,...,Nndims) along the line as it were

               Example:

                   with array of any type = [[ 1 2 3 ]
                                             [ 4 5 6 ]]

                    { <1h> <3h> } produces <3h>

                    { <2h> <2h> } produces <5h>

                    and so on.....

               The shorts produced by this routine can then be used
               by the routine at #371Dh to extract the number at that
               position.

              NOTES: Both routines leave the answer in level 2 of the stack
               and an External on level 1. The External is a True or False
               depending on whether the routine was successful or not. If the
               routine was unsuccessful then there is no answer on level 2
               Most of the time all you have to do is DROP the external.

               The beauty of these routines is that they work on any
               arrays of any type of any dimension.

             Conrad