%%
%%  (C) 2003 Chris Rathman
%%

%% reserve some space for a stack  (note: each stack entry takes two cells ~ value and a walk byte)
>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>
>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>

%%
%% Object Definition:
%%
%%                      <   object#                                                     >
%%                     <<   function#/step#                                             >>
%%                    <<<   class#                                                      >>>
%%                   <<<<   slot#1   (main!shape(0) | circle!x      | rectangle!x)      >>>>
%%                  <<<<<   slot#2   (main!shape(1) | circle!y      | rectangle!y)      >>>>>
%%                 <<<<<<   slot#3   (main!rect     | circle!radius | rectangle!width)  >>>>>>
%%                <<<<<<<   slot#4   (              |               | rectangle!height) >>>>>>>
%%               <<<<<<<<   slot#5                                                      >>>>>>>>
%%              <<<<<<<<<   reserved                                                    >>>>>>>>>
%%   <<<<<<<<<<<<<<<<<<<<   object length                                               >>>>>>>>>>>>>>>>>>>>
%%

%% auto-allocate main root object
>>>>>>>>>>>>   9~20  %% workspace (for previous object)
[-]>           8     %% slot#5
[-]>           7     %% slot#4
[-]>           6     %% slot#3
[-]>           5     %% slot#2
[-]>           4     %% slot#1
[-]>           3     %% class#
[-]>           2     %% function#/step#
[-]>           1     %% object#

%% stack push step#1 for main object
<<<<<<<<<<<<<<<<<<<< [<<]+<+>[>>]<< >>>>>>>>>>>>>>>>>>>>                            %% stack push step#
<<<<<<<<<<<<<<<<<<<< [<<]+<> [>>]<< >>>>>>>>>>>>>>>>>>>>                            %% stack push object#

<<<<<<<<<<<<<<<<<<<< <<[>> >>>>>>>>>>>>>>>>>>>>                                     %% while stack do

   <<<<<<<<<<<<<<<<<<<< [<<] >>                                                     %% stack pull next object#
      <[> [>>] << >>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
   [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>

   <<<<<<<<<<<<<<<<<<<< [<<] >>                                                     %% stack pull next function#/step#
      <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
   [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
   [                                                                                %% walk to next object#n
      >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
      [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
      >>>>>>>>>>>>>>>>>>>>
   -]

   <<[-]>> >[<< <+> >>-]<                                                           %% set function#/step# for the object


   ================================================================================================
   = main process                                                                                 =
   ================================================================================================
   [-]<<<[>>>+>+<<< <-]>>>  >[<<< <+> >>>-]<                                        %% get class#
   >[-] [<->-]< >[-]< [>[-]+<-] >- [[-]<                                            %% IF (class#0)

      %% set to return to the next step# after continue
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]< +                                          %% get step#
      <<<<<<<<<<<<<<<<<<<< [<<]+<++++>    [>>]<< >>>>>>>>>>>>>>>>>>>>               %% stack push step#
      <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>  [>>]<< >>>>>>>>>>>>>>>>>>>>                  %% stack mark spot for step#
      [<<<<<<<<<<<<<<<<<<<< [<<]>+>    [>>]<< >>>>>>>>>>>>>>>>>>>>-]                %% stack push step#
      <<<<<<<<<<<<<<<<<<<< [<<]+<[-]> [>>]<< >>>>>>>>>>>>>>>>>>>>                   %% stack push object#

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#1 new shape()                                                                        %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                        %% IF (function#1)

         %% allocate a new object in the heap
         <[<<<<<<<<<<<<<<<<<<<<]>                                                   %% walk back to root object
         >>>>>>>>>>>>>>>>>>>>                                                       %% skip over first object
         <[>                                                                        %% find free space in the heap
            [-]<[>+>+< <-]> >[< <+> >-]<                                            %% get object#
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<<-]
            >>>>>>>>>>>>>>>>>>>>
         <]>
         <[-]+ >[<+>-]<>                                                            %% object#n
         <<<[-]+>>>                                                                 %% class# rectangle
         [-]<[>+>+< <-]>  >[< <+> >-]<                                              %% get new object#
         <[                                                                         %% walk back to root object
           >[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]<
           <<<<<<<<<<<<<<<<<<<<
         ]>

         %% set local slot# for shape(0)
         [<<<< + >>>> -]                                                            %% set slot# shape(0)

         %% make a function call: shape(0) = new rectangle(x y width height)
         <<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                                %% get shape(0) from slot
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# height = 6
            <++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# width = 5
            <+++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# y = 20
            <++++++++++++++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# x = 10
            <++++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+<+>   [>>]<< >>>>>>>>>>>>>>>>>>>>                %% stack push function# rectangle
         <<<<<<<<<<<<<<<<<<<< [<<]+<[-]> [>>]<< >>>>>>>>>>>>>>>>>>>>                %% stack mark spot for object#
         [<<<<<<<<<<<<<<<<<<<< [<<]>+>   [>>]<< >>>>>>>>>>>>>>>>>>>>-]              %% stack push object# shape(0)

         %% allocate a new object in the heap
         <[<<<<<<<<<<<<<<<<<<<<]>                                                   %% walk back to root object
         >>>>>>>>>>>>>>>>>>>>                                                       %% skip over first object
         <[>                                                                        %% find free space in the heap
            [-]<[>+>+< <-]> >[< <+> >-]<                                            %% get object#
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<<-]
            >>>>>>>>>>>>>>>>>>>>
         <]>
         <[-]+ >[<+>-]<>                                                            %% object#n
         <<<[-]++>>>                                                                %% class#
         [-]<[>+>+< <-]>  >[< <+> >-]<                                              %% get new object#
         <[                                                                         %% walk back to root object
           >[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]<
           <<<<<<<<<<<<<<<<<<<<
         ]>

         %% set local slot# for shape(1)
         [<<<<< + >>>>> -]                                                          %% set slot# shape(1)

         %% make a function call: shape(1) = new circle(x y radius)
         <<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                          %% get shape(1) from slot
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# radius = 8
            <++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# y = 25
            <+++++++++++++++++++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# x = 15
            <+++++++++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+<+>   [>>]<< >>>>>>>>>>>>>>>>>>>>                %% stack push function# circle
         <<<<<<<<<<<<<<<<<<<< [<<]+<[-]> [>>]<< >>>>>>>>>>>>>>>>>>>>                %% stack mark spot for object#
         [<<<<<<<<<<<<<<<<<<<< [<<]>+>   [>>]<< >>>>>>>>>>>>>>>>>>>>-]              %% stack push object# shape(1)
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#2 shape!draw()                                                                       %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                       %% IF (function#2)
         %% get the two shapes to process
         <<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                                %% get shape(0) from slot
         [>>>>+<<<<-]                                                               %% push shape(0) in the workspace
         <<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                          %% get shape(1) from slot
         [>>>>>+<<<<<-]                                                             %% push shape(1) in the workspace

         %% make a function call: shape(i)!draw()
         >>>++[-<<<                                                                 %% for i = 1 downto 0
            >>>>[<<<<+>>>>-]<<<<                                                    %% get next shape to process
            <<<<<<<<<<<<<<<<<<<< [<<]+<++++> [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack push function# draw
            <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>  [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack mark spot for object#
            [<<<<<<<<<<<<<<<<<<<< [<<]>+>    [>>]<< >>>>>>>>>>>>>>>>>>>>-]          %% stack push object# shape(0)
            >>>>>[<+>-]<<<<<                                                        %% pull down next shape
         >>>]<<<
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#3 shape!rMoveTo()                                                                    %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                      %% IF (function#3)
         %% get the two shapes to process
         <<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                                %% get shape(0) from slot
         [>>>>+<<<<-]                                                               %% push shape(0) in the workspace
         <<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                          %% get shape(1) from slot
         [>>>>>+<<<<<-]                                                             %% push shape(1) in the workspace

         %% make a function call: shape(i)!rMoveTo(100)
         >>>++[-<<<                                                                 %% for i = 1 downto 0
            >>>>[<<<<+>>>>-]<<<<                                                    %% get next shape to process
            <<<<<<<<<<<<<<<<<<<< [<<]                                               %% stack push param# dy = 100
               <++++[>+++++<-]>[<+++++>-]<>+
            [>>]<< >>>>>>>>>>>>>>>>>>>>
            <<<<<<<<<<<<<<<<<<<< [<<]                                               %% stack push param# dx = 100
               <++++[>+++++<-]>[<+++++>-]<>+
            [>>]<< >>>>>>>>>>>>>>>>>>>>
            <<<<<<<<<<<<<<<<<<<< [<<]+<+++>  [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack push function# rmoveto
            <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>  [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack mark spot for object#
            [<<<<<<<<<<<<<<<<<<<< [<<]>+>    [>>]<< >>>>>>>>>>>>>>>>>>>>-]          %% stack push object# shape(0)
            >>>>>[<+>-]<<<<<                                                        %% pull down next shape
         >>>]<<<
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#4 shape!draw()                                                                       %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                     %% IF (function#4)
         %% get the two shapes to process
         <<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                                %% get shape(0) from slot
         [>>>>+<<<<-]                                                               %% push shape(0) in the workspace
         <<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                          %% get shape(1) from slot
         [>>>>>+<<<<<-]                                                             %% push shape(1) in the workspace

         %% make a function call: shape(i)!draw()
         >>>++[-<<<                                                                 %% for i = 1 downto 0
            >>>>[<<<<+>>>>-]<<<<                                                    %% get next shape to process
            <<<<<<<<<<<<<<<<<<<< [<<]+<++++> [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack push function# draw
            <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>  [>>]<< >>>>>>>>>>>>>>>>>>>>            %% stack mark spot for object#
            [<<<<<<<<<<<<<<<<<<<< [<<]>+>    [>>]<< >>>>>>>>>>>>>>>>>>>>-]          %% stack push object# shape(0)
            >>>>>[<+>-]<<<<<                                                        %% pull down next shape
         >>>]<<<
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#5 new rect()                                                                         %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (function#5)

         %% allocate a new object in the heap
         <[<<<<<<<<<<<<<<<<<<<<]>                                                   %% walk back to root object
         >>>>>>>>>>>>>>>>>>>>                                                       %% skip over first object
         <[>                                                                        %% find free space in the heap
            [-]<[>+>+< <-]> >[< <+> >-]<                                            %% get object#
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<<-]
            >>>>>>>>>>>>>>>>>>>>
         <]>
         <[-]+ >[<+>-]<>                                                            %% object#n
         <<<[-]+>>>                                                                 %% class# rectangle
         [-]<[>+>+< <-]>  >[< <+> >-]<                                              %% get new object#
         <[                                                                         %% walk back to root object
           >[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]<
           <<<<<<<<<<<<<<<<<<<<
         ]>

         %% set local slot# for rect
         [<<<<<< + >>>>>> -]                                                        %% set slot# rect

         %% make a function call: rect = new rectangle(x y width height)
         <<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> >[<<<<<< <+> >>>>>>-]<                    %% get rect from slot#
         <<<<<<<<<<<<<<<<<<<< [<<]+<+++++++++++++++>[>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack push param# height=15
         <<<<<<<<<<<<<<<<<<<< [<<]+<+++++++++++++++>[>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack push param# width=15
         <<<<<<<<<<<<<<<<<<<< [<<]+<>               [>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack push param# y=0
         <<<<<<<<<<<<<<<<<<<< [<<]+<>               [>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack push param# x=0
         <<<<<<<<<<<<<<<<<<<< [<<]+<+>              [>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack push function# circle
         <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>            [>>]<< >>>>>>>>>>>>>>>>>>>>     %% stack mark spot for object#
         [<<<<<<<<<<<<<<<<<<<< [<<]>+>              [>>]<< >>>>>>>>>>>>>>>>>>>>-]   %% stack push object# rect
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#6 rect!setWidth()                                                                    %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                   %% IF (function#6)
         %% make a function call: rect!setRadius(radius)
         <<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> >[<<<<<< <+> >>>>>>-]<                    %% get rect from slot#
         <<<<<<<<<<<<<<<<<<<< [<<]+                                                 %% stack push param# radius=30
            <++++++++++++++++++++++++++++++>
         [>>]<< >>>>>>>>>>>>>>>>>>>>
         <<<<<<<<<<<<<<<<<<<< [<<]+<+++++>    [>>]<< >>>>>>>>>>>>>>>>>>>>           %% stack push function# setRadius=30
         <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>      [>>]<< >>>>>>>>>>>>>>>>>>>>           %% stack mark spot for object#
         [<<<<<<<<<<<<<<<<<<<< [<<]>+>        [>>]<< >>>>>>>>>>>>>>>>>>>>-]         %% stack push object# rect
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#7 rect!draw()                                                                        %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                  %% IF (function#7)
         %% make a function call: rect!draw()
         <<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> >[<<<<<< <+> >>>>>>-]<                    %% get shape(0) from slot
         <<<<<<<<<<<<<<<<<<<< [<<]+<++++> [>>]<< >>>>>>>>>>>>>>>>>>>>               %% stack push function# draw
         <<<<<<<<<<<<<<<<<<<< [<<]+<[-]>  [>>]<< >>>>>>>>>>>>>>>>>>>>               %% stack mark spot for object#
         [<<<<<<<<<<<<<<<<<<<< [<<]>+>    [>>]<< >>>>>>>>>>>>>>>>>>>>-]             %% stack push object# rect
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % step#8 exit()                                                                             %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                 %% IF (function#8)
         <<<<<<<<<<<<<<<<<<<< <<[-]>> >>>>>>>>>>>>>>>>>>>>                          %% kill stack to exit
      >]<                                                                           %% END IF (function#99)

   >]<                                                                              %% END IF (class#0)



   ================================================================================================
   = rectangle class                                                                              =
   ================================================================================================
   [-]<<<[>>>+>+<<< <-]>>>  >[<<< <+> >>>-]<                                        %% get class#
   >[-]+  [<->-]< >[-]< [>[-]+<-] >- [[-]<                                          %% IF (class#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#1 rectangle(x y width height)                                                    %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                        %% IF (function#1)
         %% clear the slots
         <<<<[-]>>>>                                                                %% x=0
         <<<<<[-]>>>>>                                                              %% y=0
         <<<<<<[-]>>>>>>                                                            %% width=0
         <<<<<<<[-]>>>>>>>                                                          %% height=0

         %% grab the x value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y

         %% grab the width value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# width
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<+>>>>>> >-]<                                                     %% set slot# width

         %% grab the height value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# height
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<<+>>>>>>> >-]<                                                   %% set slot# height
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#2 moveTo(x y)                                                                    %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                       %% IF (function#2)
         %% grab the x value from the stack
         <<<<[-]>>>>                                                                %% x=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <<<<<[-]>>>>>                                                              %% y=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y
      >]<                                                                           %% END IF (function#2)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#3 rMoveTo(x y)                                                                   %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                      %% IF (function#3)
         %% grab the x value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y
      >]<                                                                           %% END IF (function#3)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#5 setWidth(width)                                                                %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (function#5)
         %% grab the width value from the stack
         <<<<<<[-]>>>>>>                                                            %% width=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# width
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<+>>>>>> >-]<                                                     %% set slot# width
      >]<                                                                           %% END IF (function#5)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#6 setHeight(height)                                                              %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                   %% IF (function#6)
         %% grab the height value from the stack
         <<<<<<[-]>>>>>>                                                            %% height=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# height
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<<+>>>>>>> >-]<                                                   %% set slot# height
      >]<                                                                           %% END IF (function#5)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#4 draw()                                                                         %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                     %% IF (function#4)
         [-]   #64# >++++++++[<++++++++>-]<  ++++.                                  %% D
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++.                    %% R
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++++++++++++++++.               %% W
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++.                        %% N
         [-]   #64# >++++++++[<++++++++>-]<  +++++++.                               %% G
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++.                    %% R
         [-]   #64# >++++++++[<++++++++>-]<  +++++.                                 %% E
         [-]   #64# >++++++++[<++++++++>-]<  +++.                                   %% C
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++++.                  %% T
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++.                        %% N
         [-]   #64# >++++++++[<++++++++>-]<  +++++++.                               %% G
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++.                          %% L
         [-]   #64# >++++++++[<++++++++>-]<  +++++.                                 %% E
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++++.                  %% T
         [-]   #30# >+++++++[<++++++++>-]<   ++.                                    %% :
         [-]   #42# >++++++[<+++++++>-]<     --.                                    %% (
         [-]   <<<<[>>>>+>+<<<< <-]>>>> [<<<< + >>>>-]                              %% x
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                          %% get slot# x
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (x=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (x=0)
         [-]   #42# >++++++[<+++++++>-]<     ++.                                    %% comma
         [-]   <<<<<[>>>>>+>+<<<<< <-]>>>>> [<<<<< + >>>>>-]                        %% y
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                    %% get slot# y
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (y=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (y=0)
         [-]   #42# >++++++[<+++++++>-]<     -.                                     %% )
         [-]   #42# >++++++[<+++++++>-]<     ++.                                    %% comma
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++++++++++++++++.               %% W
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  ++++.                                  %% D
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++++.                  %% T
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++.                              %% H
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   <<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> [<<<<<< + >>>>>>-]                  %% width
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> >[<<<<<< <+> >>>>>>-]<              %% get slot# width
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (width=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (width=0)
         [-]   #42# >++++++[<+++++++>-]<     ++.                                    %% comma
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++.                              %% H
         [-]   #64# >++++++++[<++++++++>-]<  +++++.                                 %% E
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  +++++++.                               %% G
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++.                              %% H
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++++.                  %% T
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   <<<<<<<[>>>>>>>+>+<<<<<<< <-]>>>>>>> [<<<<<<< + >>>>>>>-]            %% width
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<<<<[>>>>>>>+>+<<<<<<< <-]>>>>>>> >[<<<<<<< <+> >>>>>>>-]<        %% get slot# height
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (height=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (height=0)
         [-]   ++++++++++.[-]                                                       %% \n
      >]<                                                                           %% END IF (function#4)

   >]<                                                                              %% END IF (class#2)



   ================================================================================================
   = circle class                                                                                 =
   ================================================================================================
   [-]<<<[>>>+>+<<< <-]>>>  >[<<< <+> >>>-]<                                        %% get class#
   >[-]++  [<->-]< >[-]< [>[-]+<-] >- [[-]<                                         %% IF (class#2)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#1 circle(x y radius)                                                             %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                        %% IF (function#1)
         %% clear the slots
         <<<<[-]>>>>                                                                %% x=0
         <<<<<[-]>>>>>                                                              %% y=0
         <<<<<<[-]>>>>>>                                                            %% radius=0

         %% grab the x value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y

         %% grab the radius value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# radius
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<+>>>>>> >-]<                                                     %% set slot# radius
      >]<                                                                           %% END IF (function#1)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#2 moveTo(x y)                                                                    %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                       %% IF (function#2)
         %% grab the x value from the stack
         <<<<[-]>>>>                                                                %% x=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <<<<<[-]>>>>>                                                              %% y=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y
      >]<                                                                           %% END IF (function#2)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#3 rMoveTo(x y)                                                                   %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                      %% IF (function#3)
         %% grab the x value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# x
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<+>>>> >-]<                                                         %% set slot# x

         %% grab the y value from the stack
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# y
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<+>>>>> >-]<                                                       %% set slot# y
      >]<                                                                           %% END IF (function#3)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#5 setRadius(radius)                                                              %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]+++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (function#5)
         %% grab the radius value from the stack
         <<<<<<[-]>>>>>>                                                            %% radius=0
         <[>+>+< <-]> >[< <+> >-]<                                                  %% get object#
         <[>[<<<<<<<<<<<<<<<<<<<< + >>>>>>>>>>>>>>>>>>>>-]< <<<<<<<<<<<<<<<<<<<<]>  %% walk back to root object (drag object#)
         <<<<<<<<<<<<<<<<<<<< [<<] >>                                               %% stack pull param# radius
            <[> [>>] << >>>>>>>>>>>>>>>>>>>> >+< <<<<<<<<<<<<<<<<<<<< [<<] >> <-]>
         [-]>> [>>] << >>>>>>>>>>>>>>>>>>>>
         [                                                                          %% walk to object#n (drag param# & object index)
            >[>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]<
            [>>>>>>>>>>>>>>>>>>>> + <<<<<<<<<<<<<<<<<<<< -]
            >>>>>>>>>>>>>>>>>>>>
         -]
         >[< <<<<<<+>>>>>> >-]<                                                     %% set slot# radius
      >]<                                                                           %% END IF (function#5)

      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      % function#4 draw()                                                                         %
      %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
      [-]<<[>>+>+<< <-]>> >[<< <+> >>-]<                                            %% get function#
      >[-]++++ [<->-]< >[-]< [>[-]+<-] >- [[-]<                                     %% IF (function#4)
         [-]   #64# >++++++++[<++++++++>-]<  ++++.                                  %% D
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++.                    %% R
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++++++++++++++++.               %% W
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++.                        %% N
         [-]   #64# >++++++++[<++++++++>-]<  +++++++.                               %% G
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +++.                                   %% C
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++.                    %% R
         [-]   #64# >++++++++[<++++++++>-]<  +++.                                   %% C
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++.                          %% L
         [-]   #64# >++++++++[<++++++++>-]<  +++++.                                 %% E
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++++.                  %% T
         [-]   #30# >+++++++[<++++++++>-]<   ++.                                    %% :
         [-]   #42# >++++++[<+++++++>-]<     --.                                    %% (
         [-]   <<<<[>>>>+>+<<<< <-]>>>> [<<<< + >>>>-]                              %% x
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<[>>>>+>+<<<< <-]>>>> >[<<<< <+> >>>>-]<                          %% get slot# x
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (x=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (x=0)
         [-]   #42# >++++++[<+++++++>-]<     ++.                                    %% comma
         [-]   <<<<<[>>>>>+>+<<<<< <-]>>>>> [<<<<< + >>>>>-]                        %% y
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<<[>>>>>+>+<<<<< <-]>>>>> >[<<<<< <+> >>>>>-]<                    %% get slot# y
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (y=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (y=0)
         [-]   #42# >++++++[<+++++++>-]<     -.                                     %% )
         [-]   #42# >++++++[<+++++++>-]<     ++.                                    %% comma
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   #64# >++++++++[<++++++++>-]<  ++++++++++++++++++.                    %% R
         [-]   #64# >++++++++[<++++++++>-]<  +.                                     %% A
         [-]   #64# >++++++++[<++++++++>-]<  ++++.                                  %% D
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++.                             %% I
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++++++++++++++.                 %% U
         [-]   #64# >++++++++[<++++++++>-]<  +++++++++++++++++++.                   %% S
         [-]   #30# >+++++[<++++++>-]<       ++.                                    %%
         [-]   <<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> [<<<<<< + >>>>>>-]                  %% radius
            >[                                                                      %% output number
               [>+>+<<-]>>[<<+>>-]<                                                 %% dup
               >+++++++++<[>>>+<< [>+>[-]<<-] >[<+>-]                               %% mod10
                  >[<<++++++++++>>-] <<- <-] +++++++++ >[<->-]<
               [>+<-] < [>+<-] < [>+<-] >>>[<<<+>>>-] <                             %% rrot
               >+++++++++< [ >>>+<< [>+>[-]<<-] >[<+>-]                             %% div10
                  >[<<++++++++++>>>+<-] <<- <- ] >>>>[<<<<+>>>>-]<<<< >[-]<
               <+>                                                                  %% inc1
            ]
            <[
               [>+<-]                                                               %% mover
               +++++++[<+++++++>-]<->                                               %% add48
               <.[-]>                                                               %% putc
               >[<<+>>-]<                                                           %% movel2
            <-]
            [-]<<<<<<[>>>>>>+>+<<<<<< <-]>>>>>> >[<<<<<< <+> >>>>>>-]<              %% get slot# radius
            >[-][<->-]< >[-]< [>[-]+<-] >- [[-]<                                    %% IF (radius=0)
               [-]>[-]+++++++[<+++++++>-]<-.[-]                                     %% output 0 digit
            >]<                                                                     %% END IF (radius=0)
         [-]   ++++++++++.[-]                                                       %% \n
      >]<                                                                           %% END IF (function#4)

   >]<                                                                              %% END IF (class#2)


   <[<<<<<<<<<<<<<<<<<<<<]>                                                         %% walk back to root object
<<<<<<<<<<<<<<<<<<<< <<]

%%
%% [ http://www.angelfire.com/tx4/cus/shapes/ ]
%%
